// call functions on page load  See [http://www.sitepoint.com/blog-post-view.php?id=171578]
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}


// Derived from 'Zebra Tables' by David F. Miller (http://www.alistapart.com/articles/zebratables/)Modified by Jop de Klein
// function needed to work around a bug in IE related to element attributes
function hasClass(obj) {
     var result = false;
     if (obj.getAttributeNode("class") != null) {
         result = obj.getAttributeNode("class").value;
     }
     return result;
}   

function stripe() {
	var even = true;
	var tables = document.getElementsByTagName("table");	
	
	for(x=0;x!=tables.length;x++){
		table = tables[x];
		if (! table) { return; }
		
		var tbodies = table.getElementsByTagName("tbody");
		
		for (var h = 0; h < tbodies.length; h++) {
			var trs = tbodies[h].getElementsByTagName("tr");
			
			for (var i = 0; i < trs.length; i++) {
				
				if (! hasClass(trs[i]) && ! trs[i].style.backgroundColor) {
					trs[i].className = even ? "even" : "";
				}
				// flip from odd to even, or vice-versa
				even =  ! even;
			}
		}
	}
}

//Make placeholder text in <input type="text"> disappear when user brings the element into focus. 
//(http://adactio.com/articles/display.php/this_year's_document_object_model/11)
function clearInputs() {
	if (!document.getElementsByTagName) return false;
	var all_inputs = document.getElementsByTagName('input');
	for (i=0;i<all_inputs.length;i++) {
		var current_input = all_inputs[i];
		if (current_input.getAttribute('type') == 'text' && current_input.getAttribute('value') != '') {
			current_input.default_text = current_input.getAttribute('value');
			current_input.onfocus = function() {
				if (this.getAttribute('value') == this.default_text) {
					this.setAttribute('value','');
				}
			}
		}
	}
}

//Dynamically underlining accesskeys
//http://www.clagnut.com/sandbox/dynamic-accesskeys/
function underlineAccess() {
	var nav = document.getElementById('nav-contents');
	var navlinks = nav.getElementsByTagName('A');
	for (var i = 0; i < navlinks.length; i++) {
		var accesskey = navlinks[i].getAttribute('accesskey');
		if (accesskey) {
			var link = navlinks[i];
			var linktext = link.childNodes[0].nodeValue;
			var keypos = linktext.indexOf(accesskey);
			var firstportion = linktext.substring(0,keypos);
			var keyportion = linktext.substring(keypos,keypos+1);
			var lastportion = linktext.substring(keypos+1,linktext.length);
			
			link.childNodes[0].nodeValue = firstportion;
			var s = document.createElement("span");
			var span = link.appendChild(s);
			var keyt = document.createTextNode(keyportion);
			span.appendChild(keyt);
			var lastt = document.createTextNode(lastportion);
			link.appendChild(lastt);
		}
	}
}


function checkSearch()
{
	 if (document.forms.searchform.sp-q.value == ""){
		alert("Please enter a search term.");
		document.forms.searchform.sp-q.focus();
		return (false);
  }
  // If the script makes it to here, everything is OK,
  // so you can submit the form
   return true;
}

/*Check Search Field
function checkSearch(form) {
	if( form.sp-q.value == "Enter search phrase.." ||  form.sp-q.value == "") {
		alert( "You have not entered any keywords!")
		form.sp-q.value.focus();
		return false;
	} else {
		return true;
	}
}
*/

/*==========================================================
START SEARCH HILITE FUNCTIONS
============================================================/*
/* http://www.kryogenix.org/code/browser/searchhi/ */
/* Modified 20021006 to fix query string parsing and add case insensitivity */

function highlightWord(node,word) {
	// Iterate into this nodes childNodes
	if (node.hasChildNodes) {
		var hi_cn;
		for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) {
			highlightWord(node.childNodes[hi_cn],word);
		}
	}
	
	// And do this node itself
	if (node.nodeType == 3) { // text node
		tempNodeVal = node.nodeValue.toLowerCase();
		tempWordVal = word.toLowerCase();
		if (tempNodeVal.indexOf(tempWordVal) != -1) {
			pn = node.parentNode;
			if (pn.className != "searchword") {
				// word has not already been highlighted!
				nv = node.nodeValue;
				ni = tempNodeVal.indexOf(tempWordVal);
				// Create a load of replacement nodes
				before = document.createTextNode(nv.substr(0,ni));
				docWordVal = nv.substr(ni,word.length);
				after = document.createTextNode(nv.substr(ni+word.length));
				hiwordtext = document.createTextNode(docWordVal);
				hiword = document.createElement("span");
				hiword.className = "searchword";
				hiword.appendChild(hiwordtext);
				pn.insertBefore(before,node);
				pn.insertBefore(hiword,node);
				pn.insertBefore(after,node);
				pn.removeChild(node);
			}
		}
	}
}

function googleSearchHighlight() {
	if (!document.createElement) return;
	ref = document.referrer;
	if (ref.indexOf('?') == -1) return;
	qs = ref.substr(ref.indexOf('?')+1);
	qsa = qs.split('&');
	for (i=0;i<qsa.length;i++) {
		qsip = qsa[i].split('=');
	        if (qsip.length == 1) continue;
        	if (qsip[0] == 'sp-q' || qsip[0] == 'p') { // q= for Google, p= for Yahoo sp-q = for Atomz
			words = unescape(qsip[1].replace(/\+/g,' ')).split(/\s+/);
	                for (w=0;w<words.length;w++) {
				highlightWord(document.getElementsByTagName("body")[0],words[w]);
                	}
	        }
	}
}


//====================================================================================

//Call Global Functions onload

addLoadEvent(googleSearchHighlight);

addLoadEvent(stripe);
addLoadEvent(underlineAccess);
addLoadEvent(clearInputs);
