// add multiple events after page loads (by Simon Willison)
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		};
	}
}


// dynamic form display scripts
function getStyleObject(objectId) {
	if (document.getElementById && document.getElementById(objectId)) {
		return document.getElementById(objectId).style;
	} else if (document.all && document.all(objectId)) {
		return document.all(objectId).style;
	} else {
		return false;
	}
}

function changeDiv(the_div,the_change) {
	var the_style = getStyleObject(the_div);
	if (the_style !== false) {
		the_style.display = the_change;
	}
}

function hideAll(divList) {
	for(var i=0; i < divList.length; i++) {
		changeDiv(divList[i],"none");
	}
}

// hides empty optional divs (notices, requirements and warnings) in IE browsers
function hideOptionalDivs() {
	var x = document.getElementsByTagName('div');
	for (var i=0;i<x.length;i++) {
		if (((x[i].id == 'notices') || (x[i].id == 'requirements') || (x[i].id == 'warnings') || (x[i].id == 'overview') || (x[i].id == 'toc')) && (x[i].innerText === '')) {
			x[i].style.display = 'none';
		}
	}
}

// set visibility of Global Notice
function globalNoticeShowHide() {
  var inText = document.getElementById("notices").innerHTML;
  var trimText = inText.replace(/^\s+|\s+$/g, "");
  if (trimText == "") {
    document.getElementById("notices").className = "nodisplay";
  } else {
    document.getElementById("notices").className = "blockdisplay";
  }
}

// style sheet switcher for preferences panel
function setActiveStyleSheet(title) {
	var i,a;
	for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
			a.disabled = true;
			if(a.getAttribute("title") == title) {
				a.disabled = false;
			}
		}
	}
}


// add 'keyword search...' or other blurb to text input box
function createInputBlurb(queryId,blurb) {
	if (!document.getElementById || !document.createElement) { return; }
	// get text input box and add the blurb
	var qryEl = document.getElementById(queryId);
	qryEl.value = blurb;
	// clear the blurb if user clicks inside box
	qryEl.onfocus = function() {
		if (this.value == blurb) { this.value = ''; }
	};	
	// make sure submitted query isn't our blurb or blank
	qryEl.form.onsubmit = function() {
		if (qryEl.value == blurb || qryEl.value === '') { return false; }
	};
}
function createHiddenInput(frmEl,inpName,inpValue) {
	var hid = document.createElement('input');
	hid.setAttribute('type','hidden');
	hid.setAttribute('name',inpName);
	hid.setAttribute('value',inpValue);
	frmEl.appendChild(hid);
}		
function createButton(btnValue,btnTitle,frmEl,frmAction,frmMethod,qryEl,qryName) {
	var el;
	// try to build button the IE way (IE doesn't setAttributes properly); if fails then use the standard way
	// adapted from http://www.easy-reader.net/archives/2005/09/02/death-to-bad-dom-implementations/
	// note: need to use try/catch instead of if(document.all) so Opera doesn't error
	try {
		el = document.createElement('<button type="submit" name="s" value="' + btnValue + '" title="' + btnTitle +'" />');
	} 
	catch(e) {
		el = document.createElement('button');
		el.setAttribute('type','submit');
		el.setAttribute('name','s');
		el.setAttribute('value',btnValue);
		el.setAttribute('title',btnTitle);
	}
	// change form processing if this button clicked
	el.onclick = function() {
		// clear default hidden inputs
		var inputs = frmEl.getElementsByTagName('input');
		for (var i=inputs.length-1; i>-1; i--) {
			var inputParent = inputs[i].parentNode;
			if (inputs[i].getAttribute('type') == 'hidden') {
				inputParent.removeChild(inputs[i]);
			}
		}
		// then assign new attributes
		frmEl.action = frmAction;
		frmEl.method = frmMethod;
		qryEl.name = qryName;
		// temporary hack to get Google hidden values in:
		if (btnValue == 'ITC') {
			createHiddenInput(frmEl,'cx','002560749109050476393:oxtnmc7b1y8');
			createHiddenInput(frmEl,'cof','FORID:11');
			createHiddenInput(frmEl,'sa','search');
		} else if (btnValue == 'UVa') {
			createHiddenInput(frmEl,'cx','017593750330628318309:lgfaqmeyqba');
			createHiddenInput(frmEl,'cof','FORID:11');
		}
		// track outgoing links
		urchinTracker('/search/' + btnValue + '/');
	};
	el.appendChild(document.createTextNode(btnValue));
	// find parent fieldset and add button to it
	frmEl.getElementsByTagName('fieldset')[0].appendChild(el);
}
// multi-search buttons
function itcSearch() {
	if (!document.getElementById || !document.createElement) { return; }
	var frmEl = document.getElementById('searchform');
	var qryEl = document.getElementById('q');
	// add text field blurb
	createInputBlurb('q','keyword search...');
	// clear original search button
	var oldBtn = document.getElementById('itc-s');
	oldBtn.parentNode.removeChild(oldBtn);
	// create new search buttons
	createButton('ITC','search ITC',frmEl,'http://itc.virginia.edu/search/','get',qryEl,'q');
	createButton('UVa','search UVa',frmEl,'http://www.virginia.edu/search/results.html','get',qryEl,'q');
	createButton('people','search UVa Directory',frmEl,'http://www.virginia.edu/cgi-local/ldapweb/','post',qryEl,'whitepages');
}
