/*
	* Filename:         main.js
	* Type:             JavaScript Scripting
	* Site:             suchideas.com
	* Title:            JavaScript Sitewide Scripting
	* Author:           Carl Turner
	* Date Created:     20/10/2006
	* Date Last Edited: 23/05/2007
	* Copyright:        (c) Carl Turner 2006-2007
*/
var _DOM_var = document.getElementById?true:false;
var _searchform,_size = 0,_default;
//var _styles = new Array("/_static/_themes/1/main.css","/_static/_themes/3/main.css");
var _styles = new Array("/_static/_themes/3/main.css","/_static/_themes/1/main.css");
var _stylesnames = new Array("Traffic","Clean");
var side_content_id = "side_content_right";

$(document).ready(function(){
   _initpage();
});

function _initpage() {
	if(!_DOM_var) {
		alert("Sorry, your browser does not support the DOM - Document Object Model - so this site's scripting will fail.");
		return;
	}
	_setupNavbar();
	_setupSideContent();
	_fixPNGs();
	_stripeStuff();
	userPanel = $("#user-panel");
	/*if(document.all) {
		var navRoot = $("#navbar");
		if(navRoot)
			for (i=0;i<navRoot.childNodes.length;i++) {
				node = navRoot.childNodes[i];
				if (node.nodeName=="LI") {
					node.onmouseover=function() {
						this.className+=" over";
					}
					node.onmouseout=function() {
						this.className=this.className.replace(" over", "");
					}
				}
			}
		if(userPanel) {
			userPanel.onmouseover=function() {
				this.className+=" over";
			}
			userPanel.onmouseout=function() {
				this.className=this.className.replace(" over", "");
			}
		}
	}*/
	_setupFonts();
	_setupEffects();
	/*var span = $("#side_content_left").prepend("<a class=\"side_content_js_expand\" href=\"\">&larr; Hide</a>").children().eq(0);
	span.click(function () {
		_toggleSidebar(this, 500);
		return false;
	});
	if(_getCookie("left_hidden") == "true")
		_toggleSidebar(span, 0);*/
}
/*
function _toggleSidebar(link, durationTime) {
	var pars = {queue:false, duration:durationTime};
	if($("#side_content_left").css("width") == 0) {
		_setCookie("left_hidden", true);
		$("#side_content_left").animate({width:"100px"}, pars);
		$("#side_content_left *").animate({opacity:1, width:0}, pars);
		$("#main_body").animate({marginLeft:0}, pars);
		$(link).text("&larr; Hide");
	} else {
		_setCookie("left_hidden", false);
		$("#content").before($("#side_content_left .side_content_js_expand"));
		$("#side_content_left").animate({width:0}, pars);
		$("#side_content_left *").animate({opacity:0, width:0}, pars);
		$("#main_body").animate({marginLeft:0}, pars);
		$(link).text("Show &rarr;");
	}
}*/

$.fn.menuify = function(opt) {
	opt = $.extend({speed: 100, delay: 700}, opt || {});
	var menu = this;
	$("ul", menu).css({display: "block"}).slideUp(0);
	
	this.each(function() {
		// Initialize display
		
		function getUL(li) {
			var sub = $("ul", li);
			if(sub.length == 0) return null;
			else return sub[0];
		}
		
		function show() {
			$(this).addClass('over');
			var sub = getUL(this);
			if(!sub) return;
			
			// Make everything else vanish instantly
			$("ul", menu).not(sub).stop(true, true).slideUp(0);
			
			if($(sub).css("opacity") < 1)
				$(sub).stop(true, true);
			$(sub).css({opacity: 1});
			
			$.data(sub, 'stopHide', true);
			$(sub).slideDown(opt.speed);
		}
		
		function hide() {
			$(this).removeClass('over');
			var sub = getUL(this);
			if(!sub) return;
			
			$.data(sub, 'stopHide', false);
			
			// Gradually begin to fade
			$(sub).animate({opacity: 0.5}, {queue:false, duration:opt.speed + opt.delay});
			
			setTimeout(function() {
				
				if(!$.data(sub, 'stopHide')) {
					// Vanish
					$(sub).slideUp(opt.speed);
				}
			}, opt.delay);
		}
		
		$(menu).hover(show, hide);
	});
}

function _setupNavbar() {
	$("#navbar > li").menuify();
}

function _setupSideContent() {
	if(document.getElementById(side_content_id)) {
		var sidepart2 = document.createElement("ul");
		sidepart2.setAttribute("id", "side-part2");
		document.getElementById(side_content_id).appendChild(sidepart2);
		var accessfontsizes = document.createElement("div");
		accessfontsizes.setAttribute("id", "access-fontsizes");
		$("#header").append(accessfontsizes);
		if($("#side-part2")) {
			$("#side-part2").html(
"					<li style=\"padding-left:20px;color:#444444;\">Click to expand:</li> \
					<li><a href=\"#\" onclick=\"_expand(1); return false;\"><img src=\"/_static/icons/preferences-system.png\" alt=\"Page Tools\" width=\"22\" height=\"22\" /> Page Tools</a> \
						<ul id=\"side_sub_1\" style=\"display:none\"> \
							<li><a href=\"#\" class=\"r-1\" onclick=\"print(); return false;\">Format &amp; Print</a></li> \
							<li><a href=\"#\" class=\"r-2\" onclick=\"_changeStyle(); return false;\">Change stylesheet</a></li> \
							<li><a href=\"#\" class=\"r-3\" onclick=\"_forgetPreferences(); return false;\">Forget Preferences</a></li> \
						</ul> \
					</li> \
					<li><a href=\"#\" onclick=\"_expand(2); return false;\"><img src=\"/_static/icons/preferences-desktop-accessibility.png\" alt=\"Accessibility\" width=\"22\" height=\"22\"/> Accessibility</a> \
						<ul id=\"side_sub_2\" style=\"display:none\"> \
							<li><a href=\"#\" class=\"r-1\" onclick=\"_changeFont(1); return false;\">Increase font size</a></li> \
							<li><a href=\"#\" class=\"r-2\" onclick=\"_changeFont(-1); return false;\">Decrease font size</a></li> \
							<li><a href=\"/special/sitemap/\" class=\"r-3\">Sitemap</a></li> \
						</ul> \
					</li> \
");
		}
		if($("#access-fontsizes")) {
			$("#access-fontsizes").attr("title", "Change font size");
			$("#access-fontsizes").html("<a href=\"#\" onclick=\"return _changeFont(1);\" title=\"Increase font size\"><span class=\"access-fontsizes-mini\">a+</span><span class=\"access-fontsizes-large\">Increase font size</span></a> <span>/</span> <a href=\"#\" onclick=\"return _changeFont(-1);\" title=\"Decrease font size\"><span class=\"access-fontsizes-mini\">A-</span><span class=\"access-fontsizes-large\">Decrease font size</span></a>");
		}
		$("#toplogo").attr("onclick", "window.location='/';");
		/*if(document.getElementById("toplogo").onclick!="")
			document.getElementById("toplogo").style.cursor="pointer";*/
	}
}

// Use alpha loader 'filter's to make transparent PNGs display in IE
function _fixPNGs() {
	var arVersion = navigator.appVersion.split("MSIE");
	var version = parseFloat(arVersion[1]);
	
	if ((version >= 5.5) && (version < 7) && (document.body.filters)) {
		document.body.innerHTML += "<style type=\"text/css\">.png-fix{display:inline-block;}</style>";
		for(var i = 0; i < document.images.length; i++) {
			var img = document.images[i];
			var imgName = img.src.toUpperCase();
			if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
				var imgID = (img.id) ? "id='" + img.id + "' " : "";
				var imgClass = "class='" + ((img.className) ? img.className + " " : "") + "png-fix' ";
				var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
				var imgStyle = img.style.cssText; // display:inline-block should be added.
				var imgSize = "";
				if (img.width != 0)
					imgSize += "width:"+img.width+"px;";
				if (img.height != 0)
					imgSize += "height:"+img.height+"px;";
				if (img.align == "left") imgStyle = "float:left;" + imgStyle;
				if (img.align == "right") imgStyle = "float:right;" + imgStyle;
				if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
				img.outerHTML = "<span " + imgID + imgClass + imgTitle + " alt=\""+img.alt+"\" style=\"" + imgSize + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>";
				i = i-1;
			}
		}
	}
}

function _stripeStuff() { // Note: assumes only one <tbody> per table
	var stuff = Array(
		Array("table","tr"),
		Array("ul","li"),
		Array("ol","li")
	);
	
	for(var type = 0; type < stuff.length; type++) {
		$(stuff[type][0] + ".js_striped " + stuff[type][1] + ":even").addClass("js_striped_even");
		$(stuff[type][0] + ".js_striped " + stuff[type][1] + ":odd").addClass("js_striped_odd");
		/*var lists = $(stuff[type][0]);
		for(var i = 0; i < lists.length; i++) {
			if($(lists[i]).is(".js_striped")) {
				var rows = lists[i].getElementsByTagName(stuff[type][1]);
				for(var j = 0; j < rows.length; j++) {
					if(!rows[j].style.backgroundColor) {
						rows[j].className += (j % 2 == 0) ? "js_striped_even" : "js_striped_odd";
					}
				}
			}
		}*/
	}
}

function _setupFonts() {
	_default = 100;
	_size = 0;
	var temp;
	if ((temp = _getCookie("stylesheet")) != null) {
		temp = (Number)(temp);
		if(temp == 1 || temp == 0)
			_setStyle(temp);
		else
			_changeStyle();
	} else _setCookie("stylesheet",_getStyle());
	if ((temp = _getCookie("fontsize")) != null) {
		_size = (Number)(temp);
		if((_size>6) || (_size<0))_size = 0;
		_setFont();
	} else _changeFont(0);
}

function _setupEffects() {
	$("fieldset.collapsible legend").each(function() {
		var fieldset = $(this).parent();
		var f = $(fieldset);
		f.append(
			$('<div></div>')
			.append(fieldset.children(':not(legend)'))
		);
		if(f.is('.collapsed'))
			$("> div", fieldset).hide();
		$(this).click(function(event) {
			var fieldset = $(this).parent();
			if(fieldset.is('.collapsed')) {
				$("> div", fieldset).show("fast");
				fieldset.removeClass('collapsed');
			} else {
				$("> div", fieldset).hide("fast");
				fieldset.addClass('collapsed');
			}
		});
	});
}

function _expand(n) {
	$("#side-part2 li a").blur();
	$("#side_sub_"+n).toggle("fast");
	return false;
}
function _changeFont(a) {
	if(((_size+a)<6 && a>=0) || ((_size+a)>=0 && a<=0)) {
		_size += a;
		_setFont();
		_setCookie("fontsize",_size);
	}
	return false;
}
function _setFont() {
	$("body").css("font-size", (_default+_size*10)+"%");
}
function _changeStyle() {
	var testvar = $("#stylesheet").attr("href");
	var style = _getStyle();
	style = (style + 1) % _styles.length;
	_setStyle(style);
	if ($("#stylesheet").attr("href")==testvar) {
		return;
	}
	setTimeout("_setFont()",200);
	_setCookie("stylesheet",_getStyle());
	return false;
}
function _setStyle(no) {
	$("#stylesheet").attr("href", _styles[no]);
}
function _getStyle() {
	for (var i = 0; i < _styles.length; i++)
		if ($("#stylesheet").attr("href").indexOf(_styles[i]) != -1) return i;
	return -1;
}
function _forgetPreferences() {
	var s1 = "",s2 = "";
	if (_getCookie("stylesheet") != null)
		s1 = " (\""+_stylesnames[_getCookie("stylesheet")]+"\")";
	if (_getCookie("fontsize") != null) {
		s2 = _getCookie("fontsize")+")";
		s2 = " ("+ (((Number)(_getCookie("fontsize")) >= 0)?"+":"") +s2;
	}
	if (confirm("Do you want to forget both your preferred style"+s1+" AND your chosen font size"+s2+"?")) {
		var success = (s1!="")?_eraseCookie("stylesheet"):true;
		var success2 = (s2!="")?_eraseCookie("fontsize"):true;
		if (success && success2) {
			location.reload(true);
		} else alert("Sorry, but the script could not delete the cookies.\nStylesheet preference deleted: "+success+"\nFont size preference deleted: "+success2);
	}
	return false;
}

function _printEmail(id, domain, tld, maintoken) {
	var email = maintoken + "@" + domain + "." + tld;
	// USING INNERHTML
	$("#"+id).append("<a href=\"mailto:" + email + "\">" + email + "</a>");
}

// Cookie management

function _setCookie(name,value) {
	var date = new Date();
	date.setTime(date.getTime()+(365*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = name+"="+value+expires+"; path=/";
}
function _getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return (c.substring(nameEQ.length,c.length)=="")?null:c.substring(nameEQ.length,c.length);
	}
	return null;
}
function _eraseCookie(name) {
	var temp = _getCookie(name);
	_setCookie(name,"");
	return temp != _getCookie(name);
}