// Column balancing script
// Seb Frost
function colBalance()
{
	if(document.getElementById('jobseekers') && document.getElementById('homeMain') && document.getElementById('employers')){

		col1 = parseInt(document.getElementById('jobseekers').offsetHeight);
		col2 = parseInt(document.getElementById('homeMain').offsetHeight);
		col3 = parseInt(document.getElementById('employers').offsetHeight); 

		colmax = col1;
		if (col2 > colmax) colmax = col2;
		if (col3 > colmax) colmax = col3;

		d1 = colmax - col1;
		d2 = colmax - col2;
		d3 = colmax - col3;

		if (d1 > 0) document.getElementById('jobseekers').style.height = parseInt(document.getElementById('jobseekers').offsetHeight) +
	d1 - 1 + "px";
		if (d2 > 0) document.getElementById('homeMain').style.height = parseInt(document.getElementById('homeMain').offsetHeight) +
	d2 - 0 + "px";
		if (d3 > 0) document.getElementById('employers').style.height = parseInt(document.getElementById('employers').offsetHeight) +
	d3 - 11 + "px";
	}
}


// Menu Script
function getMenus(elementItem, root) {
	var selectedItem;
	var menuStarter;
	var menuItem;
	//alert("in getmenus");
	//alert(elementItem.childNodes.length);
	for (var x=0;x<elementItem.childNodes.length;x++) {
		//alert(elementItem.childNodes[x].nodeName);
		if (elementItem.childNodes[x].nodeName=="LI") {

			//alert("Yes!");
			if (elementItem.childNodes[x].getElementsByTagName("UL").length>0) {
				//alert("Set up");
				menuStarter = elementItem.childNodes[x].getElementsByTagName("A").item(0);
				menuItem = elementItem.childNodes[x].getElementsByTagName("UL").item(0);
				getMenus(menuItem, root);
				initialiseMenu(menuItem, menuStarter, root);

			}
		}
	}
	//return true;
}





var currentMenu = null;
	var mytimer = null;
	var timerOn = false;
	var opera = window.opera ? true : false;

	if (!document.getElementById)
		document.getElementById = function() { return null; }

	function initialiseMenu(menu, starter, root) {
		var leftstarter = false;
	
		if (menu == null || starter == null) return;
			currentMenu = menu;
			correctMenuDrift(menu);

		starter.onmouseover = function() {
			if (currentMenu) {
				if (this.parentNode.parentNode!=currentMenu) {
					currentMenu.style.visibility = "hidden";
				}

				if (this.parentNode.parentNode==root) {
					tempCurrentMenu = currentMenu
					while (tempCurrentMenu.parentNode.parentNode!=root) {
						tempCurrentMenu.parentNode.parentNode.style.visibility = "hidden";
						tempCurrentMenu = tempCurrentMenu.parentNode.parentNode;
					}
				}
				currentMenu = null;
				this.showMenu();
	        	}
		}
	
		menu.onmouseover = function() {
			if (starter.className != "starter")	
				starter.className = "menuselect";
//				starter.style.backgroundColor = "#B8C7CC";
			if (currentMenu) {
				currentMenu = null;
				this.showMenu();
	        }
		}	
	
		starter.showMenu = function() {
			if (!opera) {
				if (this.parentNode.parentNode==root) {						
					menu.style.left = this.offsetLeft + "px";
					menu.style.top = this.offsetTop + this.offsetHeight + "px";
				}
				else {
				 	if ((findPosX(this) + this.offsetWidth + 
				 		menu.offsetWidth) > 
				 		document.body.offsetWidth) {
						menu.style.left = (this.offsetLeft - menu.offsetWidth)
				 			+ "px";
				 	}
					else {
						menu.style.left = this.offsetLeft + this.offsetWidth 
							+ "px";
					}
				 	menu.style.top = this.offsetTop + "px";
				}
			}
			else {
				if (this.parentNode.parentNode==root) {
					menu.style.left = this.offsetLeft + "px";
					menu.style.top = this.offsetHeight + "px";
				}
				else {
				 	if ((findPosX(this) + this.offsetWidth + 
				 		menu.offsetWidth) > 
				 		document.body.offsetWidth) {
						menu.style.left = (-menu.offsetWidth)
				 			+ "px";
				 	}
					else {
						menu.style.left = this.offsetWidth + "px";
					}
				 	menu.style.top = this.offsetTop + "px";
				}

			}
			menu.style.visibility = "visible";
			currentMenu = menu;
		}
		function correctMenuDrift(objMenu){
			if ((findPosX(objMenu) + 
				objMenu.offsetWidth) > 
				document.body.offsetWidth) {
				objMenu.style.left = (objMenu.offsetLeft - objMenu.offsetWidth)
				+ "px";
			}
		}

		function findPosX(obj) {
			var curleft = 0;
			if (obj.offsetParent) {
				while (obj.offsetParent) {
					curleft += obj.offsetLeft
					obj = obj.offsetParent;
				}
			}
			else if (obj.x)
				curleft += obj.x;
			return curleft;
		}

		starter.onfocus	 = function() {
			starter.onmouseover();
		}

		menu.showMenu = function() {
			menu.style.visibility = "visible";
			currentMenu = menu;
			stopTime();
		}

		menu.hideMenu = function()  {
			if (!timerOn) {
//				alert(this.id);
				mytimer = setInterval("killMenu('" + this.id + "', '" + root.id + "');", 200); //Set time before inactive menu is closed - 2000=2secs 3000=3secs, etc //
				timerOn = true;
				for (var x=0;x<menu.childNodes.length;x++) {
					if (menu.childNodes[x].nodeName=="LI") {
						if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
							menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
							menuItem.style.visibility = "hidden";
						}
					}
				}
			}
		}

		menu.onmouseout = function(event) {
// 			starter.style.backgroundColor = "";
			if (starter.className != "starter")
				starter.className = "";
			this.hideMenu();
		}

		starter.onmouseout = function() {
			for (var x=0;x<menu.childNodes.length;x++) {
				if (menu.childNodes[x].nodeName=="LI") {
					if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
						menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
						menuItem.style.visibility = "hidden";
					}
				}
			}
			
			menu.style.visibility = "hidden";
			//menu.hideMenu();
		}
}
	// hide entire menu block
	function killMenu(menu, root) {
		var menu = document.getElementById(menu);
		var root = document.getElementById(root);
		menu.style.visibility = "hidden";
		for (var x=0;x<menu.childNodes.length;x++) {
			if (menu.childNodes[x].nodeName=="LI") {
				if (menu.childNodes[x].getElementsByTagName("UL").length>0) {
					menuItem = menu.childNodes[x].getElementsByTagName("UL").item(0);
					menuItem.style.visibility = "hidden";
				}
			}
		}
		while (menu.parentNode.parentNode!=root) {
			menu.parentNode.parentNode.style.visibility = "hidden";
			menu = menu.parentNode.parentNode;
		}
		stopTime();
	}
	function stopTime() {
		if (mytimer) {
		 	 clearInterval(mytimer);
			 mytimer = null;
			 timerOn = false;
		}
	} 

	

function getMenus(elementItem, root) {
	var selectedItem;
	var menuStarter;
	var menuItem;
	//alert("in getmenus");
	//alert(elementItem.childNodes.length);
	for (var x=0;x<elementItem.childNodes.length;x++) {
		//alert(elementItem.childNodes[x].nodeName);
		if (elementItem.childNodes[x].nodeName=="LI") {

			//alert("Yes!");
			if (elementItem.childNodes[x].getElementsByTagName("UL").length>0) {
				//alert("Set up");
				menuStarter = elementItem.childNodes[x].getElementsByTagName("A").item(0);
				menuItem = elementItem.childNodes[x].getElementsByTagName("UL").item(0);
				getMenus(menuItem, root);
				initialiseMenu(menuItem, menuStarter, root);

			}
		}
	}
	//return true;
}

	function multiSelSpecial() {
		var s = 0, select, selects = document.getElementsByTagName('select');
		while (select = selects.item(s++))
			if (/multiple/.test(select.getAttribute('type'))) {
				select.oSelected = [];
				select.nSelected_before = 0;
				select.nSelected_after = 0;
				select.onclick = function()	{
					this.oSelected.length = 0;
					this.nSelected_before = 0;	
					for (var i = 0; i < this.options.length; ++i)
						if (this.options[i].selected)
							this.oSelected[this.oSelected.length] = this.options[i];
					this.nSelected_before = this.oSelected.length;
					if (1 == this.nSelected_before && 1 == this.nSelected_after)
						this.onchange();
				}
				select.onchange = function() {			
					if (this.options[this.selectedIndex].value == '') {
					}
					else {
						this.nSelected_after = 0;
						for (var i = 0; i < this.oSelected.length; ++i)
							this.oSelected[i].selected = !this.oSelected[i].selected;
						for (var i = 0; i < this.options.length; ++i)
							if (this.options[i].selected)
								++this.nSelected_after;							
						if (this.options[0].value == '') {
							this.options[0].selected = false;
						}							
					}				
				}
			}
	}

	window.onload = function() {
		//alert("loaded");
		var root = document.getElementById("menuList");
		//alert("About to execute getmenus");
		getMenus(root, root);
		//enable multi select by click alone
		//multiSelSpecial();
		
		// apply column balancing script
		colBalance();
	}