/*
	CUSTOM
	CUSTOM_DESCRIPTION whole file is custom
	
	Hide form elements
	When drop-down menus appear:
	Beautiful design!
*/

// Create an object to stick all our functions in
HideElems = {
	// Elements we're interested in
	menus: [
		/*'nav-about',
		'nav-living',
		'nav-help',
		'nav-involved' */
		'top_nav'
	],
	formsToIgnore: [
		'searchForm'
	],
	tagsToHide: [
		'form'
	]
};

HideElems.init = function() {
	for (var i=0; i < HideElems.menus.length; i++) {
		var elem = $(HideElems.menus[i]);
		elem.oldOMOver = elem.onmouseover;
		elem.onmouseover = function() { HideElems.hideForms(this.id); if(this.oldOMOver) this.oldOMOver(); };

		elem.oldOMOut = elem.onmouseout;
		elem.onmouseout = function() { HideElems.showForms(this.id); if(this.oldOMOver) this.oldOMOut(); };
	}
}

HideElems.hideForms = function(thisID) {
	if(typeof window.timeOut != undefined) { window.clearTimeout(window.timeOut); }
	window.timeOut = window.setTimeout("HideElems.doForms('" + thisID + "', function(elem) {elem.style.visibility = 'hidden';},'hide');", 100);
}


HideElems.doForms = function(thisID, fn, showHide) {

	// Want to see if elements overlap

	Position.prepare();
	menuXY = Position.cumulativeOffset($(thisID));

	var forms = document.getElementsByTagName("form");
	for (var i = 0; i < forms.length; i++) {
		for (var k = 0; k < forms[i].elements.length; k++) {
			if (forms[i]) {
				if (HideElems.elemIsBelow(menuXY,Position.cumulativeOffset(forms[i].elements[k]))) {
					fn(forms[i].elements[k], showHide);
				}
			}
		}
	}
	// Submit buttons can get lost
	var inputs = document.getElementsByTagName("input");
	for (var k = 0; k < inputs.length; k++) {
		if (HideElems.elemIsBelow(menuXY,Position.cumulativeOffset(inputs[k]))) {
			fn(inputs[k], showHide);
		}
	}
}

HideElems.elemIsBelow = function(mXY,eXY) {
	return(eXY[1] > mXY[1])
}

HideElems.showForms = function(thisID) {
	if(typeof window.timeOut != "undefined") { window.clearTimeout(window.timeOut); }
	window.timeOut = window.setTimeout("HideElems.doForms('" + thisID + "', function(elem) {elem.style.visibility = '';},'show');", 100);
}

// adds to the current onload events
addEvent(window, 'load', function() {HideElems.init();});
