/* EVENTHANDLER FOR DOMONLOAD
/* ADD FUNCTIONS THAT SHOULD RUN ON DOM LOAD
----------------------------------------------------*/
$(document).ready(function() {
//##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##

	$('div#nav').siteNavigation();
	$('div#related ul.sitemap').subNavigation();
	$('.box').contentSlider();
	$('fieldset').TextfieldPlaceholders();
	$('div#footer').FooterUserInteractions();
	$('ul.lang').InitLangDrop();

	$('div#content').not('div#content.first-page').append('<div id="content-footer">&nbsp;</div>');

	$('th a.sort').parent().addClass('sort');
	$('.joblist tbody tr:odd').addClass('odd');

//##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##
});


/* INIT LANGDROP
----------------------------------------------------*/
(function($) {
	$.fn.InitLangDrop = function() {
		$(this).find('li:not(":first")').hide();
		$(this).bind('mouseenter',function(){
			$(this).addClass('open');
		});
		$(this).bind('mouseleave',function(){
			$(this).removeClass('open');
		});
	};
})(jQuery);


(function($) {
	$.fn.FooterUserInteractions = function() {
		var $footer = $(this);
		$footer.find('li div').hide();
		$('div#footer li a').click(function(){
			$(this).blur();
			$(this).parents('li').siblings().removeClass('active');
			$(this).parents('li').siblings().find('div').hide('fast');
			$(this).parents('li').toggleClass('active');
			$(this).parents('li').find('div:first').toggle('fast');
		});
	};
})(jQuery);


/* Textfield Placeholders - jQuery Plugin
 * Copyright (c) 2009 Palle Zingmark
 * Author: Palle Zingmark, www.palleman.nu
 * Released with the MIT License: http://www.opensource.org/licenses/mit-license.php
 */
(function($){
	$.fn.TextfieldPlaceholders = function(){
		return this.each(function() {
			var $parent = $(this);
			$parent.find('input:text[value=""],input:password[value=""]').each(function(i){
				var $input = $(this);
				var $placeholder = $($input).attr('placeholder');
				var $basecolors = ['#000000','rgb(0, 0, 0)'];
				var $color = $($input).css('color');
				var $hascolor = jQuery.inArray($color,$basecolors);
				if(typeof $placeholder == 'undefined' || $placeholder == ''){
					$placeholder = $parent.find('label[for="'+ $($input).attr('id') +'"]').text();
				}
				if(typeof $placeholder == 'string' || $placeholder != ''){//## OR ABORT
					if ($input.attr('type') == 'password'){
						var $proxy = $('<input type="text" />');
						var $original_input = $input;
						$proxy.attr('class', $input.attr('class'));
						$proxy.attr('style', $input.attr('style'));
						$proxy.insertAfter($input);
						$input.hide();
						$input = $proxy;
					}
					$input.attr('value', $placeholder);
					$input.attr('title', $placeholder);
					if($hascolor || $hascolor != -1){
						$input.css('color','#aeaeae');
					}
					$input.bind('focus', function(){
						if($input.attr('value') == $placeholder){
							if ($original_input){
								$input.hide();
								$original_input.show();
								$input = $original_input;
								$input.focus();
							}
							$input.attr('value','');
							$input.css('color',$color);
						}
					});
					($original_input || $input).bind('blur', function(){
						if($input.attr('value') == $placeholder || $input.attr('value') == ''){
							if ($original_input){
								$original_input.hide();
								$proxy.show();
								$input = $proxy;
							}
							$input.attr('value',$placeholder);
							if($hascolor || $hascolor != -1){
								$input.css('color','#aeaeae');
							}
						}
					});
				}
			});
		});
	};
})(jQuery);


/* CONTENT SLIDER
----------------------------------------------------*/
(function($) {
	$.fn.contentSlider = function(options){
		var defaults = {
			AreaClassName:	'slide',
			PagingPosition:	'foot'
		}; 
		var options = $.extend(defaults, options);
		return this.each(function() { 
			var $parent = $(this);
			var $areas = $parent.find('.'+ options.AreaClassName).get();
			var $pager = $parent.find('.'+ options.PagingPosition);
			if($areas.length > 1){
				if($pager.length == 0){
					$pager = $('<div class="foot">&nbsp;</div>');
					$($areas).eq(1).parent().append($pager);
				}
				$parent.find('.'+ options.AreaClassName).remove();
				var $slider = $('<div class="slider"></div>');
				$slider.append($areas);
				$slider.parent().css('overflow','hidden');
				$pager.before($slider);
				var paging = '';
				paging += '<li><a href="javascript:;" class="prev">prev</a></li>';
				for(var i=0,n=$areas.length; i<n; i++){
					paging += '<li><a href="javascript:;">&bull;</a></li>';	
				}
				paging += '<li><a href="javascript:;" class="next">next</a></li>';
				$pager.html('');
				$pager.append('<ul class="slider-paging">'+ paging +'</ul>');
				$pager.find('a:not(:first,:last):first').addClass('active');
				var slideWidth = $('.slide').width();
				var sliderWidth = parseInt(slideWidth * $areas.length);
				$pager.find('.slider-paging').css('padding-left', parseInt($pager.width())/2 - parseInt($pager.find('.slider-paging').width())/2 );
				$('.slider').width(sliderWidth);
				var $currIndex = 0;
				var $steps = parseInt($pager.find('a').size()-3);
				$pager.find('a').click(function(){
					$pager.find('a').removeClass('active');
					if($(this).hasClass('prev')){
						if($currIndex > 0){
							$currIndex--;
							$parent.find('.slider').animate({ 
								marginLeft: '-'+ parseInt(slideWidth * $currIndex)
							}, 500 );
						}
					}else if($(this).hasClass('next')){
						if($currIndex < $steps){
							$currIndex++;
							$parent.find('.slider').animate({ 
								marginLeft: '-'+ parseInt(slideWidth * $currIndex)
							}, 500 );
						}
					}else{
						$currIndex = $pager.find('a:not(:first,:last)').index(this);
						$parent.find('.slider').animate({
							marginLeft: '-'+ parseInt(slideWidth * $currIndex)
						}, 500 );
					}
					$pager.find('a:not(:first,:last):eq('+ $currIndex +')').addClass('active');
				});
			}
		});
	};
})(jQuery);


/* TALLEST COLUMN
----------------------------------------------------*/
var tallestColumn = function (group) {
	var tallest = 0;
	group.each(function() {
		var thisHeight = $(this).height();
		Console.Info($(this),thisHeight);
		if(thisHeight > tallest) {
			tallest = thisHeight;
		}
	});
	return tallest;
};


/* BUILD SITE NAVIGATION
----------------------------------------------------*/
(function($) {
	$.fn.subNavigation = function() {
		var tree = $(this);
		var parents = tree.find('.active').parents().children('.parent').addClass('activeparent');
		Console.Info(parents,parents.size());
	};
})(jQuery);


/* BUILD SITE NAVIGATION
----------------------------------------------------*/
(function($) {
	$.fn.siteNavigation = function() {
		var tree = $(this);
		var fooHeight = 0;
		var ulHeight = 0;
		var maxHeight = tallestColumn(tree.find('ul li ul'));
		tree.find('ul li ul').css('visibility','visible');
		tree.find('ul li ul').hide();
		tree.find('ul li a').not('ul ul li a').not('li.home a').each(function(){
			$(this).bind('click', function(e){
				$(this).blur();
				var foo = $(this).parent().find('ul').eq(0);
				if(this.className == 'selected'){
					tree.find('ul li ul').slideUp('normal');
					$('#nav-wrapper').animate({
						height: 0
					}, 500 );
					$(this).removeClass('selected');
					$('#nav-wrapper').delay(500).hide('fast');
					return false;
				}
				tree.find('ul li ul').slideUp('slow');
				tree.find('a').removeClass('selected');
				tree.find('div').removeClass('active');
				if(foo.size() < 1){
					$('#nav-wrapper').animate({
						height: 0
					}, 700 );
					return false;
				}
				$(this).toggleClass('selected');
				if($('#nav-wrapper').length == 0){
					$('#container').append($('<div id="nav-wrapper" style="display:none">&nbsp;</div>'));
				}
				if(foo[0]){
					fooHeight = maxHeight+111;
					tree.find('ul li ul').css('height',maxHeight);
					foo[0].style.left = $(this).parent().eq(0).position().left +'px';
					$(this).parent().find('ul').eq(0).slideDown('slow');
					$('#nav-wrapper').css('display','block');
					$('#nav-wrapper').animate({
						height: fooHeight
					}, 500 );
					return false;
				}
				return false;
				CancelEvent(e);
			})
		});
		tree.find('li div + ul').parent().addClass('parent');
		tree.find('li.parent div + ul').prev().prepend('<span class="trigger">&nbsp;</span>');
		tree.find('span.trigger').each(function(){
			$(this).bind('click', function(e){
				if(!$(this).parent().hasClass('active')){
					$(this).parent().parent().parent().find('.active').removeClass('active');
					$(this).parent().parent().parent().find('ul').slideUp('slow');
					$(this).parent().parent().find('ul:first').slideDown('slow');
					$(this).parent().toggleClass('active');
					return false;
				}else{
					$(this).parent().parent().find('ul:first').slideUp('slow');					
					$(this).parent().toggleClass('active');
					return false;
				}
				return false;
			});
		});
	};
})(jQuery);


/* WRITE TO FIREBUG CONSOLE
----------------------------------------------------*/
var Console = function() {
	return {
		Log: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.log(msg, args) },
		Info: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.info(msg, args) },
		Warn: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.warn(msg, args) },
		Error: function(msg, args) { if (typeof console == 'undefined') return false; if (!args) args = ''; console.error(msg, args) }
	}
} ();


/* CANCEL EVENT
----------------------------------------------------*/
function CancelEvent(e) {
	try {
		if (e) {
			e.returnValue = false;
			e.cancelBubble = true;
			if (e.stopPropagation) {
				e.stopPropagation();
			}
			if (e.preventDefault) {
				e.preventDefault();
			}
		}
	} catch (c) {alert(c); }
	return false;
}
