/* EVENTHANDLER FOR DOMONLOAD
/* ADD FUNCTIONS THAT SHOULD RUN WHEN DOCUMENT IS READY
----------------------------------------------------*/
$(document).ready(function () {
//##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##

	$('div#nav').siteNavigation();
	$('div#related ul.sitemap').subNavigation();
	$('.box').contentSlider();
	$('fieldset').TextfieldPlaceholders();
	$('div#footer').FooterUserInteractions();
	$('div.lang ul').InitLangDrop();
	$('#rotator').InitRotator();
	$('div.listitemwrapper').InitListItemAccordion();
    $('input[type=submit]').InitFormSubmitClass();

//##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##
});


/* INIT LISTITEM ACCORDION
----------------------------------------------------*/
(function ($) {
	$.fn.InitListItemAccordion = function(){
		var Language = $('meta[http-equiv="Content-Language"]').attr('content');
		var altTxt = (Language === 'sv') ? 'Visa eller dölj alla underliggande poster' : 'Show or hide all posts';
		$(this).each(function(){
			var ListItem = $(this);
			var ListContent = ListItem.children('.listcontent');
			var areas = ListContent.size();
			if(areas > 1){
				ListContent.not(':first').hide();
				ListItem.append($('<img src="/gfx/btn-arrow-down.png" class="toggler shut" alt="" title="'+ altTxt +'" />').bind('click', function(){
					if($(this).hasClass('shut')){
						ListContent.fadeIn();
						$(this).attr('src','/gfx/btn-arrow-up.png').removeClass('shut').addClass('open');
					}else{
						ListContent.not(':first').fadeOut(0);
						$(this).attr('src','/gfx/btn-arrow-down.png').removeClass('open').addClass('shut');
					}
				}));
			}
		});
	};
})(jQuery);


/* 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);


/* FOOTER - USER INTERACTIONS
----------------------------------------------------*/
(function($) {
	$.fn.FooterUserInteractions = function() {
		$(this).find('li div').hide();
		$('div#footer li a').click(function(){
			$(this).blur();
			var parents = $(this).parents('li');
			parents.siblings().removeClass('active').end().siblings().find('div').hide('fast');
			parents.toggleClass('active').find('div:first').toggle('fast');
		});
	};
})(jQuery);


/* INIT ROTATOR
----------------------------------------------------*/
(function ($) {
	$.fn.InitRotator = function(){
		var count = $(this).find('ul.main li').length;
		if(count < 3){
			$(this).hide();
		}
		var nav = $('<ul class="nav"></ul>');
		$(this).find('ul.main li').each(function(i){
			nav.append($('<li></li>'));
		});
		$(this).prepend(nav);
		$(this).append('<div class="rotshade shade-left"></div><div class="rotshade shade-right"></div>')
		.append(
			$('<a href="javascript:;" class="prev"></a>').bind('click', function(){
				$(this).blur();
				$('div.rotshade').hide(0);
				var parent = $(this).parent();
				if(parent.find('ul.main li.next').next().length){
					parent.find('ul.main li.next').next().css({
						left:'440px',
						top:'33px',
						display:'block'
					});
				}else if(count == 3){
					parent.find('ul.main li.previous').css({
						left:'440px',
						top:'33px',
						opacity:'0',
						display:'block'
					});
				}else{
					parent.find('ul.main li.previous').prev().css({
						left:'440px',
						top:'33px',
						display:'block'
					});
				}
				parent.find('ul.main li.previous').animate({
					opacity:'0'
				},function(){
					if(count == 3){
						$(this).attr('class','next').removeAttr('style');
					}else{
						$(this).attr('class','hidden').removeAttr('style');
						$(this).parent().append($(this).prev().clone());
						$(this).prev().remove();
					}
				});
				parent.find('ul.main li.active').css('z-index','1').animate({
					top:'33px',
					left:'10px',
					height:'160px',
					width:'260px'
				},function(){
					$(this).attr('class','previous').removeAttr('style');
				});
				parent.find('ul.main li.next').css('z-index','11').animate({
					top:'0',
					right:'160px',
					height:'240px',
					width:'390px'
				},function(){
					$(this).attr('class','active').removeAttr('style').css('overflow','visible');
					$(this).next().attr('class','next').removeAttr('style');
					$('div.rotshade').fadeIn(0);
				});
				$('ul.nav').append($('ul.nav li:first').clone());
				$('ul.nav li:first').remove();
				return false;
			})
		).append(
			$('<a href="javascript:;" class="next"></a>').bind('click', function(){
				$(this).blur();
				$('div.rotshade').hide(0);
				var parent = $(this).parent();
				if(parent.find('ul.main li.previous').prev().length){				
					parent.find('ul.main li.previous').prev().css({
						left:'10px',
						top:'33px',
						display:'block'
					});
				}else{
					parent.find('ul.main li.next').next().css({
						left:'10px',
						top:'33px',
						display:'block'
					});
				}
				parent.find('ul.main li.next').animate({
					opacity:'0',
				},function(){
					$(this).attr('class','hidden').removeAttr('style');
					$(this).parent().prepend($(this).parent().find('li:last').clone());
					$(this).parent().find('li:last').remove();
				});
				parent.find('ul.main li.active').animate({
					top:'33px',
					left:'440px',
					height:'160px',
					width:'260px'
				},function(){
					$(this).removeAttr('style').attr('class','next');
					$(this).next().hide();
				})
				parent.find('ul.main li.previous').css('z-index','11').animate({
					top:'0',
					left:'160px',
					height:'240px',
					width:'390px'
				},function(){
					$(this).attr('class','active').removeAttr('style').css('overflow','visible');
					$(this).prev().attr('class','previous').removeAttr('style');
					$('div.rotshade').fadeIn(0);
				});
				$('ul.nav').prepend($('ul.nav li:last').clone());
				$('ul.nav li:last').remove();
				return false;
			})
		);	
		$(this).find('ul.nav').css('padding-left', parseInt($(this).width())/2 - parseInt($(this).find('ul.nav').width())/2);
		$(this).find('ul.main li.active').css('overflow','visible').prev().addClass('previous').prevAll().addClass('hidden');
		$(this).find('ul.main li.active').next().addClass('next').nextAll().addClass('hidden');
		if($(this).find('ul.main li.hidden').length > 1){
			$(this).find('ul.main').prepend($(this).find('ul.main li.hidden:last').clone());
			$(this).find('ul.main li.hidden:last').remove();
		}
		$('ul.nav li:eq(1)').addClass('active');

	};
})(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().replace(':','');
				}
				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();
		if(thisHeight > tallest) {
			tallest = thisHeight;
		}
	});
	return tallest;
};


/* BUILD SUB NAVIGATION
----------------------------------------------------*/
(function($) {
	$.fn.subNavigation = function() {
		var tree = $(this);
		var parents = tree.find('.active').parents().children('.parent').addClass('activeparent');
	};
})(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','hidden').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, function() {
						$('#nav-wrapper').remove();
					});
					$(this).removeClass('selected');
					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
					}, 500, function() {
						$('#nav-wrapper').remove();
					});
					return false;
				}
				$(this).toggleClass('selected');
				if(foo[0]){
					if($('#nav-wrapper').length == 0){
						$('#container').append($('<div id="nav-wrapper" style="display:none">&nbsp;</div>'));
					}
					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).css('visibility','visible');
					$(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').css('visibility','visible');
					$(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) {}
	return false;
}

/* ADD TO FORM SUBMIT BUTTON
----------------------------------------------------*/
(function($) {
	$.fn.InitFormSubmitClass = function() {
		$(this).parent().addClass('button');
	};
})(jQuery);
