// <![CDATA[


/*
** universal print function
*/
function printThisPage() {
	window.open("/info/print_template.html", "mywindow","location=0,status=0,scrollbars=1, width=650,height=800");
	return false;
}



/*
** Cookie management
*/
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return "";
}


/*
** Find Position of element
** takes an object and returns an array where arr[0] = left, arr[1] = top
** borders will skew this result badly
*/
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}



/*
** Find the rendered style of an element
** Mozilla height:auto; will still return px value, while IE will return 'auto'
*/
function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		try{
			strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
				return p1.toUpperCase();
			});
			strValue = oElm.currentStyle[strCssRule];
		}
		catch(e){
			// Used to prevent an error in IE 5.0
		}
	}
	return strValue;
}


/*
** Browser detection
*/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ string: navigator.userAgent, subString: "OmniWeb", versionSearch: "OmniWeb/", identity: "OmniWeb" },
		{ string: navigator.vendor, subString: "Apple", identity: "Safari" },
		{ prop: window.opera, identity: "Opera" },
		{ string: navigator.vendor, subString: "iCab", identity: "iCab" },
		{ string: navigator.vendor, subString: "KDE", identity: "Konqueror" },
		{ string: navigator.userAgent, subString: "Firefox", identity: "Firefox" },
		{ string: navigator.vendor, subString: "Camino", identity: "Camino" },
		{ string: navigator.userAgent, subString: "Netscape", identity: "Netscape" },
		{ string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE" },
		{ string: navigator.userAgent, subString: "Gecko", identity: "Mozilla", versionSearch: "rv" },
		{ string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla" }
	],
	dataOS : [
		{ string: navigator.platform, subString: "Win", identity: "Windows" },
		{ string: navigator.platform, subString: "Mac", identity: "Mac" },
		{ string: navigator.platform, subString: "Linux", identity: "Linux" }
	]

};
BrowserDetect.init();


/*
** Current URL information
*/
var currentUrl = {
	getQueryString: function() {
		if(window.location.href.match(/\?/)) {
			handler = window.location.href.split("?");
			return handler[handler.length - 1];
		} else {
			return null
		}
	},
	domainName: function() {
		if(window.location.href.match(/http(s)?:\/\//) ) {
			handler = window.location.href.split("/");
			return handler[2];
		}
	},
	pathToRoot: function() {
		
		
	},
	workingPath: function() {
		
		
	}
}



/*
** Unobtrusive form validation
*/
var validateForm = {
	prep: function() {
		for(var x=0; x<document.forms.length; x++) {
			// alert("found a form, "+ document.forms[x].getAttribute("name"));	
			// document.forms[x].onSubmit = function() { return validateForm.init(this); };
		}
	},
	init: function(formObj) {
		// Start with inputs
		var inputs = formObj.getElementsByTagName("input");
		var retval = true;
		var errMsg = new Array();
		
		errMsg[0] = document.createElement("div");
		
		errMsg[1] = document.createElement("p");
		errMsg[1].className = "errorText";
		errMsg[1].innerHTML = 'All fields marked with an <span class="asterisk"> * </span> are required.';
		
		errMsg[2] = document.createElement("p");
		errMsg[2].className = "errorText";
		errMsg[2].innerHTML = 'Please indicate that you agree to the terms.';
		
		for(var x=0; x<inputs.length; x++) {
			if(inputs[x].getAttribute("type") == "text") {
				if(inputs[x].className.match(/requiredEmail/)) {
					if(!validateForm.validateEmail(inputs[x].value)) {
						retval = false;
					}
				}
				if(inputs[x].className.match(/requiredZip/)) {
					if(!validateForm.validateZipCode(inputs[x].value)) {
						retval = false;
					}
				}
				if(inputs[x].className.match(/requiredPhone/)) {
					if(!validateForm.validatePhone(inputs[x].value)) {
						retval = false;
					}
				}
				if(inputs[x].className.match(/required/)) {
					if(inputs[x].value == "") {
						retval = false;
					}
				}
			} else if(inputs[x].getAttribute("type") == "checkbox") {
				if(inputs[x].className.match(/required/)) {
					if(!inputs[x].checked) {
						if(retval) {
							errMsg[0].appendChild(errMsg[2]);
						} else {
							errMsg[0].appendChild(errMsg[1]);
							errMsg[0].appendChild(errMsg[2]);
						}
						retval = false;
					}
				}
			}
		}
		// Display error container
		if(retval == false || !retval) {
			if(document.getElementById('formErrorContentArea')) {
				var obj = document.getElementById('formErrorContentArea');
				handler = obj.getElementsByTagName("p");
				handler[0].innerHTML = "";
				handler[0].appendChild(errMsg[0]);
				layerMaker.activate('Form Error Layer', this);
			}
		}
		return retval;
	},
	initEmail: function(formObj) {
		// Start with inputs
		var inputs = formObj.getElementsByTagName("input");
		var retval = true;
		var reqerr = false;		

		for(var x=0; x<inputs.length; x++) {
			if(inputs[x].getAttribute("type") == "text") {
				if(inputs[x].className.match(/requiredEmail/)) {
					if(!validateForm.validateEmail(inputs[x].value)) {
						retval = false;
					}
				}
				if(inputs[x].className.match(/required/)) {
					if(inputs[x].value == "") {
		                reqerr = true;						
						retval = false;
					}
				}
			}
		}
		// Display error container
		if(retval == false) {
			if(document.getElementById('emailThisPageErrorContent')) {
/*
** //alert('Please make sure to fill out all the fields.');
*/			
			    if(reqerr) {	
				    document.getElementById('err').style.display = "block";
				    document.getElementById('err2').style.display = "none";				    
    			}
			    else {	
				    document.getElementById('err').style.display = "none";			    
				    document.getElementById('err2').style.display = "block";
    			}
			}
		} else {
			document.cookie = "sentThisPage=yes";
			return true;
		}
		return retval;
	},
	
	// Specific validation checks
	validateZipCode: function(str) { if(str.match(/^\d{5}([\-]\d{4})?$/)) { return true; } else { return false; } },
	validateEmail: function(str) { if(str.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) { return true; } else { return false; } },
	validatePhone: function(str) { if(str.match(/^((\()?(\d{3})?(\))?(\ |.)?)?\d{3}(\-|\ |.)?\d{4}$/)) { return true; } else { return false; } }
}




/*
** Toggles the visibility of form select boxes
*/
function toggleSelect(action) {
	switch(action) {
		case "show":
			var status = "visible"
			break;
		case "hide":
			var status = "hidden";
			break;
		default:
			var status = "visible";
			break;
	}
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = status;
	}
}


/*
** Toggles the visibility of flash objects and embeds
*/
function toggleFlash(action) {
	switch(action) {
		case "show":
			var status = "visible"
			break;
		case "hide":
			var status = "hidden";
			break;
		default:
			var status = "visible";
			break;
	}
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = status;
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = status;
	}
}




/*
** Finds the dimensions of the current page
*/
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height and/or width less then height of the viewport
	if(yScroll < windowHeight){ pageHeight = windowHeight; } else { pageHeight = yScroll; }
	if(xScroll < windowWidth){ pageWidth = xScroll; } else { pageWidth = windowWidth; }

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

// ]]>
