// Common JavaScripts


// Dom Scripting book - qued function loader; example used like: addLoadEvent(functionname);
function addLoadEvent(func) {
	var oldOnLoad = window.onload;
	if(typeof window.onload != "function") {
		window.onload = func;
	} else {
		window.onload = function() {
			oldOnLoad();
			func();
		}
	}
}

// Dom Scripting book - addClass function
function addClass(element, value) {
	if(!element.className){
		element.className = value;
	} else {
		element.ClassName += " "+value;
	}
}

// Rollover Div's functions
function setItemMouseOver(obj, currentClass, addClass){
	var contentDiv = document.getElementById(obj);
	if(contentDiv){
		items = contentDiv.getElementsByTagName('div');
		for(var i = 0; i < items.length; i++){
			var itm = items[i];
			if(itm.className.indexOf(currentClass) > -1){
				itm.onmouseover = function(){
					appendClass('add', this, this.className, addClass);
					this.onmouseout = function(){
						appendClass('remove', this, this.className, addClass);
						this.onmouseout = null;
					}
				}
			}
		}
	}
}

// Append a class
function appendClass(append, obj, currentClass, addClass){
	switch (append){
		case 'add':
		  if(!appendClass('check',obj,addClass)){obj.className+=obj.className?' '+addClass:addClass;}
		break;
		case 'remove':
		  var rep=obj.className.match(' '+addClass)?' '+addClass:addClass;
		  obj.className=obj.className.replace(rep,'');
		break;
		case 'check':
		  return new RegExp('\\b'+addClass+'\\b').test(obj.className);
		break;
 	}
}

// alternating row colors
function stripeTable() {
	if(!document.getElementsByTagName) return false;
	var tables = document.getElementsByTagName("table");
	for(var i=0; i<tables.length; i++) {
		var odd = false;
		if(tables[i].className.match("stripe")){
			var tbodies = tables[i].getElementsByTagName("tbody");
			for(var j=0; j<tbodies.length; j++) {
				var rows = tbodies[j].getElementsByTagName("tr");
				for(var k=0; k<rows.length; k++) {
				
					if(odd == true) {
						addClass(rows[k], "even");
						odd = false;
					} else {
						addClass(rows[k], "odd");
						odd = true;	
					}
					
					rows[k].onmouseover= function(){
						this.className += " rowHover";
						return false;
					}
					
					rows[k].onmouseout= function(){
						this.className = this.className.replace("rowHover", "");
						return false;
					}					
					
				}				
			}
		}
	}
}
addLoadEvent(stripeTable);

// css attribute type selector fix for Win/IE6 via extra css classes
function ie6FixAttributeType(){
	var inputElements = document.getElementsByTagName('input');
	for (var i=0; i < inputElements.length; i++){
		if(inputElements[i].type == "submit" || inputElements[i].type == "button" || inputElements[i].type == "reset"){
			inputElements[i].className =  inputElements[i].className + " button";
		} else if (inputElements[i].type == "checkbox"){
			inputElements[i].className =  inputElements[i].className + " checkbox";		
		} else if (inputElements[i].type == "radio"){
			inputElements[i].className =  inputElements[i].className + " radio";
		} else if (inputElements[i].type == "text"){
			inputElements[i].className = inputElements[i].className + " text";
		} else if (inputElements[i].type == "password"){
			inputElements[i].className = inputElements[i].className + " password";
		} else if (inputElements[i].type == "file"){
			inputElements[i].className = inputElements[i].className + " file";
		}	
	}
}

function submitForm(form, useGoogleAnalytics) {
	if (useGoogleAnalytics)
	{
		try { pageTracker._linkByPost(form, false); }
		catch (e) { } 
	}
	return form.submit();
}
	

