// Written by Ahmad Azarinurazie (aien@pixl8.co.uk).
// Created on October 17th. 2008

switcher_mouseover_obj = null;
switcher_mouseover_id = null;

initSwitcher = function() {
	var obj = null;
	var obj_selected = null;
	var sCookieValue = "";
	
	// Loop through all arguments
	for (i=0; i<arguments.length; i++) {
		if (arguments[i] && document.getElementById(arguments[i])) {
			obj = document.getElementById(arguments[i]);
			
			if (obj) {
				if (obj.nodeName == "UL" || obj.nodeName == "OL") {
					
					for (var i=0; i<obj.childNodes.length; i++) {
						if (obj.childNodes[i].nodeName == "LI") {
							for (var j=0; j<obj.childNodes[i].childNodes.length; j++) {
								if (obj.childNodes[i].childNodes[j].nodeName == "A") {
									obj.childNodes[i].childNodes[j].onclick = switchGroup;
								}
							}
						}
					}
				}
				
				if (obj.nodeName == "DL") {
					
					for (var i=0; i<obj.childNodes.length; i++) {
						if (obj.childNodes[i].nodeName == "DT") {
							for (var j=0; j<obj.childNodes[i].childNodes.length; j++) {
								if (obj.childNodes[i].childNodes[j].nodeName == "A") {
									obj.childNodes[i].childNodes[j].onclick = switchSingle;
								}
							}
						}
					}
				}
				
				else if (obj.nodeName == "A") {
					obj.onclick = switchSingle;
					
					obj_target = obj.href;
					obj_target = obj_target.substr(obj_target.indexOf("#")+1);
					
					obj_target = document.getElementById(obj_target);
					
					sCookieValue = readCookie(obj.id);
					if (sCookieValue == "true") switchSingle(obj.id);
					else {
						if (obj_target.className == "") obj.className = "selected";
						else obj.className = "";
					}
					
					
				}
			}
		}
	}
}

initSwitcher2 = function(obj_id) {
	var obj = document.getElementById(obj_id);
	var obj_selected = null;
	var sCookieValue = "";
	
	if (obj.nodeName == "UL" || obj.nodeName == "OL") {
		
		for (var i=0; i<obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeName == "LI") {
				for (var j=0; j<obj.childNodes[i].childNodes.length; j++) {
					if (obj.childNodes[i].childNodes[j].nodeName == "A") {
						obj.childNodes[i].childNodes[j].onclick = switchSingle;
					}
				}
			}
		}
	}
	
	if (obj.nodeName == "A") {
		obj.onclick = switchSingle;
		
		sCookieValue = readCookie(obj.id);
		
		if (sCookieValue == "true") switchSingle(obj.id);
	}
}

// This switcher works with mouseover (switch after 2 seconds mouseover)
initSwitcher3 = function(obj_id) {
	var obj = document.getElementById(obj_id);
	var obj_selected = null;
	var sCookieValue = "";
	
	if (obj.nodeName == "UL" || obj.nodeName == "OL") {
		
		for (var i=0; i<obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeName == "LI") {
				for (var j=0; j<obj.childNodes[i].childNodes.length; j++) {
					if (obj.childNodes[i].childNodes[j].nodeName == "A") {
						obj.childNodes[i].childNodes[j].onmouseover = function() {
							switcher_mouseover_obj = this;
							switcher_mouseover_id = setTimeout("switchSingle()", 500);
						}
						obj.childNodes[i].childNodes[j].onmouseout = function() {
							if (switcher_mouseover_id) {
								this.className = "";
								
								obj_target = switcher_mouseover_obj.href;
								obj_target = document.getElementById(obj_target.substr(obj_target.indexOf("#")+1));
								obj_target.className = "hide";
							}
							
							clearTimeout(switcher_mouseover_id);
							switcher_mouseover_id = null;
						}
					}
				}
			}
		}
	}
	
	if (obj.nodeName == "A") {
		obj.onmouseover = function() {
			switcher_mouseover_obj = this;
			switcher_mouseover_id = setTimeout("switchSingle()", 500);
		}
		obj.onmouseout = function() {
			if (switcher_mouseover_id) {
				this.className = "";
				
				obj_target = switcher_mouseover_obj.href;
				obj_target = document.getElementById(obj_target.substr(obj_target.indexOf("#")+1));
				obj_target.className = "hide";
			}
			
			clearTimeout(switcher_mouseover_id);
			switcher_mouseover_id = null;
		}
		
		sCookieValue = readCookie(obj.id);
		
		if (sCookieValue == "true") switchSingle(obj.id);
	}
}


function switchSingle(obj) {
	if (obj && obj.length > -1) {
		obj = document.getElementById(obj);
	}
	else {
		if (switcher_mouseover_id) obj = switcher_mouseover_obj;
		else obj = this;
	}
	
	var bCache = false;
	var bSwap = false;
	var sTarget = "";
	var sCommand = "";
	
	var iIndex = -1;
	if (obj.rel) iIndex = obj.rel.indexOf("cache");

	obj_target_id = obj.href;
	obj_target_id = obj_target_id.substr(obj_target_id.indexOf("#")+1);
	
	obj_target = document.getElementById(obj_target_id);
	
	if (iIndex > -1 && obj.rel.substr(iIndex+6, iIndex+10) == "true") {
		bCache = true;
	}
	
	switchClass(obj);
	
	sCommand = "switch:";
	iIndex = obj.rel.indexOf(sCommand);
	if (iIndex > -1) {
		iIndex += sCommand.length;
		sTarget = obj.rel.substr(iIndex);
		bClose = sTarget.indexOf(";");
		
		if (bClose > -1) sTarget = sTarget.substr(0, bClose);
		
		if (obj.className.indexOf("selected") > -1) switchClass(document.getElementById(sTarget), false, "hide");
		else switchClass(document.getElementById(sTarget), false, "show");
	}
	
	sCommand = "samestate:";
	iIndex = obj.rel.indexOf(sCommand);
	if (iIndex > -1) {
		iIndex += sCommand.length;
		sTarget = obj.rel.substr(iIndex);
		
		bClose = sTarget.indexOf(";");
		if (bClose > -1) sTarget = sTarget.substr(0, bClose);
		
		if (obj.className.indexOf("selected") == -1) switchClass(document.getElementById(sTarget), false, "hide");
		else switchClass(document.getElementById(sTarget), false, "show");
	}
	
	iIndex = obj.rel.indexOf("differentstate");
	if (iIndex > -1) {
		iIndex += 15;
		sTarget = obj.rel.substr(iIndex);
		bClose = sTarget.indexOf(";");
		
		if (bClose > -1) sTarget = sTarget.substr(0, bClose);
		
		document.getElementById(sTarget).className = obj.className;
	}
	
	return false;
}

function switchClass(obj, bCache, state) {
	obj_target_id = obj.href;
	obj_target_id = obj_target_id.substr(obj_target_id.indexOf("#")+1);
	
	obj_target = document.getElementById(obj_target_id);
	
	// Change text
	sCommand = "switchtext1:";
	iIndex = obj.rel.indexOf(sCommand);
	if (iIndex > -1) {
		iIndex += sCommand.length;
		sTarget = obj.rel.substr(iIndex);
		bClose = sTarget.indexOf(";");
		
		if (bClose > -1) sTarget = sTarget.substr(0, bClose);
		
		sCommand = "switchtext2:";
		iIndex = obj.rel.indexOf(sCommand);
		if (iIndex > -1) {
			iIndex += sCommand.length;
			var sTarget2 = obj.rel.substr(iIndex);
			bClose = sTarget2.indexOf(";");
			
			if (bClose > -1) sTarget2 = sTarget2.substr(0, bClose);
			
			if (obj.innerHTML == sTarget) obj.innerHTML = sTarget2;
			else obj.innerHTML = sTarget;
		}
	}
	
	if (state == "hide") {
		obj.className = obj.className.replace(/selected/g, "");
		obj_target.className = obj_target.className + " hide";
		if (bCache) {
			createCookie(obj.id, "false", 30);
		}
	}
	else if (state == "show") {
		obj.className = obj.className + " selected";
		obj_target.className = obj_target.className.replace(/hide/g, "");
		if (bCache) {
			createCookie(obj.id, "true", 30);
		}
	}	
	else {
	
		if (obj.className.indexOf("selected") == -1) {
			obj.className = obj.className + " selected";
			obj_target.className = obj_target.className.replace(/hide/g, "");
			if (bCache) {
				createCookie(obj.id, "true", 30);
			}
		}
		else {
			obj.className = obj.className.replace(/selected/g, "");
			obj_target.className = obj_target.className + " hide";
			if (bCache) {
				createCookie(obj.id, "false", 30);
			}
		}
	}
}

function getValue(text, var_name) {
	var iIndex = text.indexOf(var_name);
	var iIndex2 = text.indexOf(iIndex, ";");
}

function switchGroup() {
	var obj_target = "";
	var obj_target_id = "";
	
	var obj_list = this.parentNode.parentNode;
	
	if (obj_list.nodeName == "UL" || obj_list.nodeName == "OL") {
		for (i=0; i<obj_list.childNodes.length; i++) {
			if (obj_list.childNodes[i].nodeName == "LI") {
				
				for (j=0; j<obj_list.childNodes[i].childNodes.length; j++) {
					if (obj_list.childNodes[i].childNodes[j].nodeName == "A") {
						
						obj_target_id = obj_list.childNodes[i].childNodes[j].href;
						obj_target_id = obj_target_id.substr(obj_target_id.indexOf("#")+1);
						
						obj_target = document.getElementById(obj_target_id);
						
						if (obj_list.childNodes[i].childNodes[j] == this) {
							obj_list.childNodes[i].childNodes[j].className = "selected";
							obj_target.className = "";
						}
						else {
							obj_list.childNodes[i].childNodes[j].className = "";
							obj_target.className = "hide";
						}
					}
				}
			}
		}
	}
	
	return false;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(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);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

