$(function(){
	var imagedir = '/images/site/';

	/* Load Thickbox css via javascript, to hide from CSS validator. */
	$("head").append('<link type="text/css" href="/templates/default/css/system/thickbox.css" rel="stylesheet" media="screen" />');

	/* Unfortunately require the use of JavaScript to format Immediacy user poll plug-in. */
	$(".contentThreeCol .col > table[id*=userpoll], .contentFourCol .col > table[id*=userpoll]").attr("style", "").each(function(){
		$(this).find("td:last").attr("align", "left").addClass("submit");
		$(this).removeAttr("style").wrap("<div class=\"border\"><div class=\"panel userpoll\"></div></div>");
	});

	/* Make site logo clickable */
	$("h1").click(function(){
		location = "/";
	});
	
	/* Initiate font resize controls */
	$("#header a[class^=resizeA]").click(function(){
		var fontsize = $(this).attr("href").substr($(this).attr("href").indexOf("=") + 1) + "em";

		//$("#feature").css("fontSize", fontsize);
		$(".colMain").css("fontSize", fontsize);
	
		$.cookie("fontsize", fontsize);
	
		return false;
	});
	
	/* Set content font size from cookie */
	if ($.cookie("fontsize")){
		//$("#feature, .colMain").css("fontSize", $.cookie("fontsize"));
		$(".colMain").css("fontSize", $.cookie("fontsize"));
	}
	
	/* Initiate carousel */
	$(".carousel").each(function(){
		var tallest = 0;
		
		var $listitems = $(this).find("li");
		
		if ($listitems.length > 1){
			var tallest = 0;
		
			for (i = 0; i < $listitems.length; i++){
				var $listitem = $($listitems.get(i));
				
				if (i > 0) $listitem.hide();
				
				tallest = $listitem.height() > tallest ? $listitem.height() : tallest;
			}
		
			$(this).find("li").height(tallest + 40);
		}
		
		// If an autoplay class is applied, press the next button at the set interval.
		$controls = $(this).find('span[class*=autoplay-]');
		
		if ($controls.length){
			var delay = $controls.attr('class').match(/[\d\.]+/g) * 1000;

			if (delay){
				$nextbutton = $controls.find('.next');

				window.setInterval(
					function () {        
						$nextbutton.trigger('click');
					},
					delay
				);
			}
		}
	})
	
	$(".carousel input:not(.prev,.next)").click(function(){
		changeCarousel($(this), $(this).val(), null);
		this.blur();
	});

	$(".carousel input.prev").click(function(){
		changeCarousel($(this), null, -1);
		this.blur();
	});

	$(".carousel input.next").click(function(){
		changeCarousel($(this), null, 1);
		this.blur();
	});

	
	/* Initiate all button links */
	$("a.button").click(function(){
		this.blur();
	});

	/* Initiate beauty tips */
	$("#feature a.bt").each(function(){
		var id = $(this).attr('title').replace(/\W|[0-9]/g, '');

		$(this).bt({
			cssClass: 'bubble',
			fill: '#fff',
			cornerRadius: 10,
			strokeWidth: 0,
			shadow: true,
			shadowOffsetX: 3,
			shadowOffsetY: 3,
			shadowBlur: 8,
			shadowColor: 'rgba(0,0,0,.9)',
			shadowOverlap: false,
			noShadowOpts: {
				strokeStyle: '#666',
				strokeWidth: 2
			},
			//trigger: ['mouseover', 'click'],
			closeWhenOthersOpen: 'true',
			ajaxPath: location + ' div#' + id
			//ajaxPath: ["$(this).attr('href')", 'div#preview']
		});
	});
	
	/* Initiate accordions */
	$(".accordion").accordion({autoHeight: true});

	/* Initiate ticker */
	if ($("#ticker").length) {
		$("#ticker ul ul").ticker({
			cursorList:  "_",
			rate:        10,
			delay:       4000
		}).trigger("play");

		$("#ticker .pause").toggle(
			function(){
				$("#ticker ul ul").trigger("stop");
				return false;
			},
			function(){
				$("#ticker ul ul").trigger("play");
				return false;
			}
		);

		$("#ticker .prev").click(function(){
			$("#ticker ul ul").trigger("previous");
			return false;
		});

		$("#ticker .next").click(function(){
			$("#ticker ul ul").trigger("play");
			return false;
		});

		$("#ticker ul").show();
	}

	// Reset non-selected filters.
	$(".filter input:not(:checked),.filterGlobal input:not(:checked)").parent().find("select").each(function(){
		this.selectedIndex = 0;
	});

	/* Initiate select */
	$('.dropdown').sSelect();
	
	/* Show selected filter */
	$(".filter input:checked,.filterGlobal input:checked").parent().find(".newListSelected").css("visibility", "visible");
	
	/* Initiate filters */
	$(".filter input:radio,.filterGlobal input:radio").click(function(){
		$(".filter .newListSelected,.filterGlobal .newListSelected").css("visibility", "hidden");
		$(this).parent().find(".newListSelected").css("visibility", "visible");
	});

	/* Initiate country selector */
	$('.cs ul ul').each(function(){
		var $menu = $(this);
		var $parent = $(this).parent();

		$menu.css({'left': '-' + $menu.width() + 'px', 'top': $parent.position().top + 'px'});
	});

	$('.cs').hover(
		function(){$(this).find('span:first').addClass('on');},
		function(){$(this).find('span:first').removeClass('on');}
	);

	$('.cs a, .cs span:gt(0)').hover(
		function(){$(this).addClass('over');},
		function(){$(this).removeClass('over');}
	);

	$('.cs ul ul').hover(
		function(){$(this).siblings('span').addClass('on');},
		function(){$(this).siblings('span').removeClass('on');}
	);

	$('.cs, .cs li').hover(
		function(){$(this).find('ul:first').css({'visibility': 'visible'});},
		function(){$(this).find('ul:first').css({'visibility': 'hidden'});}
	);

	/* Initiate drop down navigation */
	setMenus();
	
	$("#primaryNav tr").hover(
		function () {
			$(this).addClass("hover");
		},
		function () {
			$(this).removeClass("hover");
		}
	);
	
	$("#primaryNav tr").each(function(){
		var $navlink = $(this).find("th a");

		if ($navlink.attr("onclick") == undefined){
			$(this).click(function(){
				location = $navlink.attr("href");
			});
		} else {
			$(this).click(function(){
				window.open($navlink.attr("href"), "_blank");
			});

			$navlink.removeAttr("onclick");
			
			$navlink.click(function(){
				window.open($navlink.attr("href"), "_blank");
				return false;
			});
		}
	});

	$("#primaryNav li").hover(
		function(){
			$elem = $(this);
			hover_intent = setTimeout(function(){$elem.addClass("hover");}, 300);
		},
		function(){
			clearTimeout(hover_intent);
			$elem = $(this);
			$elem.removeClass("hover");
		}
	);

	/* Search box upon focus */
	$("#searchtext").focus(function(){
		if ($(this).val() == "Enter Text")
			$(this).val("");
	});

	/* Search return key press */
	$("#searchtext").keydown(function(e){
		if (e.keyCode == 13){
			$("#search input:submit").trigger("click");
			return false;
		}
	});
	
	/* Main search return key press */
	$("#searchpage .terms").keydown(function(e){
		if (e.keyCode == 13){
			$("#searchpage .button").trigger("click");
			return false;
		}
	});

	/* Search rollover */
	$("#search input:submit").hover(
		function () {
			$("#search").css("background-image", "url('" + imagedir + "bg_searchbox_hover.gif')");
		}, 
		function () {
			$("#search").css("background-image", "url('" + imagedir + "bg_searchbox.gif')");
		}
	);

	/* Assign URL when search submitted */
	$("#search input:submit").click(function(){
		window.location = $("#search input:hidden").val() + $("#search input:text").val();
		return false;
	});

	/* Initiate tag list display all items */
	$(".resultSection").each(function(){
		$(this).find("tr:gt(1), div.testimonial:gt(1)").hide();
	});

	$(".resultSection .border .title a").click(function(){
		$(".resultSection").each(function(){
			$(this).find("tr:gt(1), div.testimonial:gt(1)").hide();
		});
		
		var resultSection = $(this).parents(".resultSection");

		$("html, body").animate({scrollTop: resultSection.offset().top}, 500);
		
		resultSection.find("tr:gt(1), div.testimonial:gt(1)").show();

		$("#footer").css("position", "relative", "top", $(".resultSection:last").offset().top + $(".resultSection:last").height() + "px");
		
		return false;
	});
	
	/* Cache rollover images (old school!) */
	var images = ['bg_tag_a_hover.gif', 'bg_tag_span_hover.gif', 'bg_searchbox_hover.gif', 'bg_button_prev_over.gif', 'bg_button_next_over.gif', 'bg_button_pause_over.gif'];

	$.each(images, function(i) {
		images[i] = new Image();
		images[i].src = imagedir + this;
	});

	/* Equalise columns */
	//var footerOffset = ($.browser.msie && $.browser.version == "6.0")? $("#footer").offset().top : $("#footer").offset().top - 26;
	var footerOffset = $("#footer").offset().top;

	$(".contentThreeCol .col, .contentFourCol .col").find(".border:last").each(function(){
		$(this).height(footerOffset - $(this).offset().top);
		$(this).find("div:first").height($(this).height() - 4);

		$(this).find(".accordion").each(function(){
			var panels = $(this).find("> div");
			var panelheight = $(panels[0]).outerHeight();
			var titleheight = $(this).find("h3:first").outerHeight();
			var adj = $(this).height() - (titleheight * panels.length + panelheight) + 1;		

			panels.each(function(){
				$(this).height($(this).height() + adj);
			});
		});
	});
	
	/* Set opacity via JavaScript as it does not validate with CSS 2.1 */
	$("#primaryNav li div").css({"opacity":"0.95","filter:":"alpha(opacity=95)"});
	$("#feature #map div").css({"opacity":"0.95","filter:":"alpha(opacity=95)"});
	//$("#filter .newListSelected ul").css({"opacity":"0.95","filter:":"alpha(opacity=95)"});

	/* Set target to _blank for any links prepended with http://. */
	$("a").each(function(){
		var href = $(this).attr("href");
		var rel = $(this).attr("rel");

		if (href != undefined){
			if (href.indexOf("http://") == 0 || href.indexOf("/pdf.aspx") == 0 || href.indexOf("theme=print") != -1 || href.indexOf("/rss.aspx") != -1){
				$(this).attr("target", "_blank");
			}
		}
		
		if (rel != undefined && rel == "external"){
			$(this).attr("target", "_blank");
		}
	});
	
	/* Equalise child section items */
	equalHeight($("ul.sections li"));

	// Show page.
	$("body").css("visibility", "visible");
});

$(window).resize(setMenus);

function setMenus(){
	var $nav = $("#primaryNav");
	var nav_top = $nav.offset().top + $nav.height() + 1;
	var nav_left = $nav.offset().left;
	var nav_width = $nav.width();
	
	$("#primaryNav div").each(function(){
		var $item = $(this);
		var item_left = $item.parent().offset().left;
		var item_width = $item.width();
		
		if (item_left + item_width > nav_left + nav_width)
			item_left = nav_left + nav_width - item_width;
		
		$item.css({"left": item_left, "top": nav_top});
	});
}

function changeCarousel($obj, idx, inc) {
	var $elements = $obj.parent().siblings("ul").children("li");
	var idx = idx != null ? idx - 1 : $elements.index($elements.filter(":visible"));

	$elements.each(function(){
		$(this).hide();
	});

	if (inc) {
		idx += inc;

		if (idx == $elements.size()) idx = 0;
		else if (idx == -1) idx = $elements.size() - 1;
	}

	$elements.eq(idx).fadeIn();

	$controls = $obj.parent().children().not(".prev,.next");
	$controls.removeClass("on");
	$controls.eq(idx).addClass("on");

	return false;
}

function equalHeight(group) {
	var tallest = 0;
	group.each(function() {
		var thisHeight = $(this).height();
		if(thisHeight > tallest) {
			tallest = thisHeight;
		}
	});
	group.height(tallest);
}

