/*

	/global/menu.js
	===================================
	Window_load
	Menu_load
	Window_resize
	Button_mouseover
	Menu_position
	Menu_mouseover
	Menu_mouseout
	Menu_on
	Menu_off
	Menu_close
	Menu_open
	GetChildren
	Signup_config
	Field_focus
	Field_blur
	Field_keydown
	TabControl
	Form_position
	Form_submit
	Form_close
	
*/

var m_activeMenu;
var m_activeButton;
var m_topNav;
var m_firstButton;
var m_blnInMenu;
var m_intMenuOpenId;
var m_intMenuCloseId;
var MENU_TIMEOUT = 500;
var MENU_CLOSE = 5;
var MENU_OPEN = 5;
var MENU_RATE = 12;
var m_blnSignupActive = false;
var FORM_TIMEOUT = 500;
var m_intFormCloseId;
var keyTab = 9;
var keyEnter = 13;
var m_divForm;
var m_divOptFields;
var m_intMenuHeight;

window.onload = Window_load;
window.onresize = Window_resize;

function Window_load() {
	Menu_load();
	Signup_config();
	Request_config();
}


function Menu_load() {
	m_topNav = document.getElementById("TopNav");

	var i;
	var colButtons = GetChildren(m_topNav, "A");
	var colMenus = GetChildren(document.getElementById("Menus"), "DIV");
	m_firstButton = colButtons[0];

	for (i = 0; i < colButtons.length; i++) {
		colButtons[i].setAttribute("menu", colMenus[i].id);
		colButtons[i].onmouseover = Button_mouseover;
	}
}


function Window_resize() {
	document.getElementById("txtRemoveFocus").focus();
	Menu_close();
	Form_close();
}


function Button_mouseover() {
	if (m_intMenuCloseId) {
		window.clearTimeout(m_intMenuCloseId);
		m_intMenuCloseId = null;
	}
	if (m_activeMenu) {
		m_activeMenu.style.display = "none";
		m_activeMenu.childNodes[0].style.height = "";
	}
	if (m_activeButton) {
		m_activeButton.className = m_activeButton.className.split(" ")[0];
		//m_activeButton.style.backgroundImage = "";
	}
	if (m_intMenuOpenId) {
		window.clearTimeout(m_intMenuOpenId);
		m_intMenuOpenId = null;
	}
	m_activeButton = this;
	m_blnInMenu = true;

	m_activeMenu = document.getElementById(m_activeButton.getAttribute("menu"));
	m_activeButton.className += " " + m_activeButton.className.split("_")[0] + "_On";
	//m_activeButton.style.backgroundImage = "url(/global/images/topnav/" + m_activeButton.getAttribute("root") + "-on.gif)";
	m_activeButton.onmouseout = Menu_mouseout;

	if (m_divOptFields.style.display != "block") {
		m_intMenuOpenId = window.setTimeout("Menu_on()", MENU_TIMEOUT / 2);
	}
}


function Menu_position() {
	// fixes rendering glitch in IE8
	var intTopOffsetLeft = Math.floor((document.getElementById("Layout").offsetWidth - m_topNav.offsetWidth) / 2);
	
	var intOffsetLeft = (m_firstButton.offsetLeft > 0) ? m_activeButton.offsetLeft : intTopOffsetLeft + m_activeButton.offsetLeft;
	m_activeMenu.style.top = (m_topNav.offsetTop + m_topNav.offsetHeight) + "px";

	if (intOffsetLeft + m_activeMenu.offsetWidth > intTopOffsetLeft + m_topNav.offsetWidth) {
		var intPageRight = intTopOffsetLeft + m_topNav.offsetWidth;
		var intMenuRight = intOffsetLeft + m_activeMenu.offsetWidth;
		m_activeMenu.style.left = (intOffsetLeft - (intMenuRight - intPageRight)) + "px";
	} else {
		m_activeMenu.style.left = intOffsetLeft + "px";
	}
}


function Menu_mouseover() {
	if (m_intMenuOpenId) {
		window.clearTimeout(m_intMenuOpenId);
		m_intMenuOpenId = null;
	}
	if (m_intMenuCloseId) {
		window.clearTimeout(m_intMenuCloseId);
		m_intMenuCloseId = null;
		m_intMenuOpenId = window.setTimeout("Menu_open()", MENU_OPEN);
	}
	m_blnInMenu = true;
}


function Menu_mouseout() {
	m_blnInMenu = false;
	if (m_activeMenu.childNodes[0].childNodes.length == 0) {
		m_intMenuCloseId = window.setTimeout("Menu_off()", MENU_TIMEOUT / 2);
	} else {
		m_intMenuCloseId = window.setTimeout("Menu_off()", MENU_TIMEOUT);
	}
}


function Menu_on(strCaller) {
	if (m_activeMenu.childNodes[0].childNodes.length > 0 && m_blnInMenu) {
		// if a section has no children, do not display the menu

		m_activeMenu.childNodes[0].style.height = "";
		m_activeMenu.style.visibility = "hidden";
		m_activeMenu.style.display = "block";
		m_intMenuHeight = m_activeMenu.offsetHeight;  //m_activeMenu.offsetHeight;
		m_activeMenu.childNodes[0].style.height = "1px";
		
		m_activeMenu.onmouseover = Menu_mouseover;
		m_activeMenu.onmouseout = Menu_mouseout;

		Menu_position();
		
		m_activeMenu.style.visibility = "visible";
		document.getElementById("txtRemoveFocus").focus();
		
		m_intMenuOpenId = window.setTimeout("Menu_open()", MENU_OPEN);
	}
}


function Menu_off(strCaller) {
	if (!m_blnInMenu) {
		if (m_activeMenu) {
			m_intMenuCloseId = window.setTimeout("Menu_close()", MENU_CLOSE);
		}
	}
}


function Menu_close() {
	if (m_activeMenu.childNodes[0].offsetHeight < ((MENU_RATE / 2) + 1)) {
		m_activeMenu.style.display = "none";
		m_activeMenu.childNodes[0].style.height = "";
		m_intMenuCloseId = null;
		if (m_activeButton) {
			//m_activeButton.style.backgroundImage = "";
			m_activeButton.className = m_activeButton.className.split(" ")[0];
		}
	} else if (m_activeMenu.childNodes[0].offsetHeight < 50) {
		m_activeMenu.childNodes[0].style.height = Math.round(m_activeMenu.childNodes[0].offsetHeight - (MENU_RATE / 2)) + "px";
		m_intMenuCloseId = window.setTimeout("Menu_close()", MENU_CLOSE * 3);
	} else {
		m_activeMenu.childNodes[0].style.height = Math.round(m_activeMenu.childNodes[0].offsetHeight - MENU_RATE) + "px";
		m_intMenuCloseId = window.setTimeout("Menu_close()", MENU_CLOSE);
	}
}


function Menu_open() {
	if (m_activeMenu.childNodes[0].offsetHeight >= (m_intMenuHeight - (MENU_RATE * 3))) {
		m_activeMenu.childNodes[0].style.height = "";
		m_intMenuOpenId = null;
	} else if (m_activeMenu.childNodes[0].offsetHeight < (MENU_RATE * 8)) {
		m_activeMenu.childNodes[0].style.height = Math.round(m_activeMenu.childNodes[0].offsetHeight + (MENU_RATE)) + "px";
		m_intMenuOpenId = window.setTimeout("Menu_open()", MENU_CLOSE);
	} else if (m_activeMenu.childNodes[0].offsetHeight < (MENU_RATE * 25)) {
		m_activeMenu.childNodes[0].style.height = Math.round(m_activeMenu.childNodes[0].offsetHeight + (MENU_RATE * 2)) + "px";
		m_intMenuOpenId = window.setTimeout("Menu_open()", MENU_CLOSE / 2);
	} else {
		m_activeMenu.childNodes[0].style.height = Math.round(m_activeMenu.childNodes[0].offsetHeight + (MENU_RATE * 3)) + "px";
		m_intMenuOpenId = window.setTimeout("Menu_open()", MENU_CLOSE / 3);
	}
}


function GetChildren(objParent, strTag) {
	// for Firefox, Safari compatibility
	var colNodes = objParent.childNodes;
	var colChildren = new Array();
	var i;
	var j = 0;
	for (i = 0; i < colNodes.length; i++) {
		if (colNodes[i].tagName == strTag) {
			colChildren[j++] = colNodes[i];
		}
	}
	return colChildren;
}


function Signup_config() {
	var arrForm = new Array("txtEmail", "txtName", "txtPhone", "txtCompany", "txtTitle");
	var i;
	for (i = 0; i < arrForm.length; i++) {
		document.getElementById(arrForm[i]).onfocus = Field_focus;
		document.getElementById(arrForm[i]).onblur = Field_blur;
		document.getElementById(arrForm[i]).onkeydown = Field_keydown;
	}
	m_divForm = document.getElementById("frmTopFields");
	m_divOptFields = document.getElementById("frmBottomFields");
}


function Field_focus() {
	if (m_intFormCloseId) {
		window.clearTimeout(m_intFormCloseId);
		m_intFormCloseId = null;
	}
	if (this.value == this.title) {
		this.value = "";
		this.style.color = "black";
	}
	if (this.id == "txtEmail") {
		Form_position();
	}
}


function Field_blur() {
	if (this.value == "") {
		this.value = this.title;
		this.style.color = "silver";
	}
	m_intFormCloseId = window.setTimeout("Form_close()", FORM_TIMEOUT);
}


function Field_keydown(e) {
	var strKeyCode = (window.event) ? window.event.keyCode : e.which;
	var blnShiftKey = (window.event) ? window.event.shiftKey : e.shiftKey;
	switch (strKeyCode) {
		case keyTab:
			return TabControl(this.id, blnShiftKey, "txtEmail", "txtName", "txtCompany");
			break;
		case keyEnter:
			if (m_divForm.className == "tmpTopFieldsOn" && this.tagName == "INPUT") {
				if (Form_submit()) document.getElementById("frmSignup").submit();
			}
			break;
		default:
	}
	return true;
}


function TabControl(strElem, blnShiftKey, strFirst, strJoin, strLast) {
	switch (strElem) {
		case strFirst:
			if (blnShiftKey) {
				document.getElementById(strLast).focus();
				return false;
			} else {
				document.getElementById(strJoin).focus();
				return false;
			}
			break;
		case strJoin:
			if (blnShiftKey) {
				document.getElementById(strFirst).focus();
				return false;
			}
			break;
		case strLast:
			if (!blnShiftKey) {
				document.getElementById(strFirst).focus();
				return false;
			}
			break;
		default:
	}
	return true;
}


function Form_position() {
	var divSiteBanner = document.getElementById("SiteBanner");
	var divTopNav = document.getElementById("TopNav");

	var intTop = (m_divForm.offsetTop == 0) ? m_divForm.offsetTop + m_divForm.offsetHeight + divTopNav.offsetTop + divTopNav.offsetHeight : m_divForm.offsetTop + m_divForm.offsetHeight;
	var intWidth = m_divForm.offsetWidth;

	// fixes rendering glitch in IE8
	var intOffsetLeft = Math.floor((document.getElementById("Layout").offsetWidth - divSiteBanner.offsetWidth) / 2);

	m_divOptFields.style.width = intWidth + "px";
	m_divOptFields.style.top = intTop + "px";
	m_divOptFields.style.left = (divSiteBanner.offsetWidth - m_divForm.offsetWidth + intOffsetLeft) + "px";
	m_divOptFields.style.display = "block";

	m_divForm.className = "tmpTopFieldsOn";
}


function Form_submit() {
	// Validate form
	Form_close();
	var txtEmail = document.getElementById("txtEmail");

	if (txtEmail.value.length == 0 || txtEmail.value.indexOf("@") < 0 || txtEmail.value.indexOf(".") < 0) {
		alert("Invalid email address.");
		return false;
	}
	document.getElementById("frmSignup").appendChild(m_divOptFields);
	return true;
}


function Form_close() {
	m_divOptFields.style.display = "none";
	m_divForm.className = "tmpTopFieldsOff";
}


function Request_config() {
	//var arrForm = ["txtRequestName", "txtRequestEmail", "txtRequestOrg", "txtRequestAddress"];
	var arrForm = ["Name", "Email", "Org", "Street", "City", "Zip"];
	var i;
	var obj;
	for (i = 0; i < arrForm.length; i++) {
		obj = document.getElementById("txtRequest" + arrForm[i]);
		if (obj) {
			obj.onfocus = Request_focus;
			obj.onblur = Request_blur;
		}
	}
}


function Request_focus() {
	if (this.value == this.title) {
		this.value = "";
		this.style.color = "black";
	}
}


function Request_blur() {
	if (this.value == "") {
		this.value = this.title;
		this.style.color = "silver";
	}
}


function DocumentRequest_submit() {
	var arrReq = ["Name", "Email", "Street", "City", "Zip"];
	var obj;
	for (var i = 0; i < arrReq.length; i++) {
		obj = document.getElementById("txtRequest" + arrReq[i]);
		if (obj && (obj.value.length < 1 || obj.value == obj.title)) {
			alert("Please enter your contact information.");
			obj.focus();
			return false;
		}
	}
	var lstState = document.getElementById("lstRequestState");
	if (lstState.options[lstState.selectedIndex].value.length == 0) {
		alert("Please enter your contact information.");
		lstState.focus();
		return false;
	}
	return true;
}
