if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

function AjaxCall(callPage, qstring, setDivID, aCallBack,closeMe){
	var xmlHttp;
	xmlHttp=GetXmlHttpObject();

	if (xmlHttp==null){
		alert ("Your browser does not support AJAX!");
		return;
	} 
  	// prep calling page with sid to prevent caching
	callPage=callPage+"?sid="+Math.random();
	// open call to posting page
	xmlHttp.open("POST",callPage,true);
	
	// attach callback function to xmlhttprequest object 
	xmlHttp.onreadystatechange=function(){ 
		if (xmlHttp.readyState==4){
			// set container div with contents
			if(setDivID){
				setThis = document.getElementById(setDivID);
				setReturn = xmlHttp.responseText;
				setThis.innerHTML = setReturn.replace(/^\s*|\s*$/g,'');
				if(closeMe==1){
					setThis.innerHTML = "<a href='javascript:closeGrey(0);' style='float:right;font-family:Arial;font-weight:normal;font-size:11px;color:#333399;'>[ X ] Close</a>" + setThis.innerHTML;
				}
			}
			// user defined call back on success
			if(aCallBack){
				eval(aCallBack);
			}
		}
	}
	
	if(qstring.indexOf("=")==-1&&qstring!=''){
		
		// qstring is a form - no equal sign for variables, parse it into a URL string of variables
		var frm = document[qstring];
		frmL = frm.elements.length;
		frmE = frm.elements;
		postFile = "";
		for(i=0;i<frmL;i++){
			
			if(frmE[i].options){
				allVals = "";
				for(z=0;z<frmE[i].options.length;z++){
					if(frmE[i].options[z].selected&&frmE[i].options[z].value!=''){
						allVals = allVals + frmE[i].options[z].value + ',';
					}
				}
				if(allVals.charAt(allVals.length-1)==','){
					allVals = allVals.substring(0, allVals.length - 1);
				}
				postFile = postFile + "&" + frmE[i].name + "=" + escape(allVals);
			}
			else{
				if(frmE[i].type=="radio"||frmE[i].type=="checkbox"){
				//alert("radio!");
					if(frmE[i].checked==true){
						postFile = postFile + "&" + frmE[i].name + "=" + escape(frmE[i].value);
					}
				}
				else{
					postFile = postFile + "&" + frmE[i].name + "=" + escape(frmE[i].value);
				}
			}
		
		}
		qstring = postFile;
	}
	// replace difficult characters here:
	//****************************
	// 1. Need to replace %A0 with fully encoded &nbsp; - JavaScript URL is NOT being decoded properly on backend.
	qstring = qstring.replace(/%A0/g, "%26nbsp%3B");  // double (and more) spaces
	
	qstring = "&" + qstring;
	xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp.send(qstring);
	
}
<!--- END - AJAX SCRIPT FOR POSTING TO  --->

function GetXmlHttpObject(){
	var xmlHttp=null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e){
 		// Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e){
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function addOver(justOne){
	if(document.all){
		var myElements = document.all;
	}
	else{
		var myElements = document.getElementsByTagName("body")[0].getElementsByTagName("*");
	}
	
	if(justOne){
		myElements = justOne;
	}
	
	for(i=0;i<myElements.length;i++){
		var newA = myElements[i];
		
		// 	IE uses the proprietary 'attachEvent' for event handlers.  Set attribute works with other tag properties in IE, but not event handlers.  Using this method
		// 		of the anonymous function for the onlick handler, we can still define the target function and pass it variables, unlike when using attachEvent.
		//	Check performance on pages with a large number of elements.  This may slow down loading time due to each element receiving a copy of this function.
		if( newA.tagName == 'IMG' && newA.className == 'navImage' ){
		
			if( newA.attachEvent ){
				//newA.attachEvent('onmouseover', mOver());
				//alert("attaching..." + newA.className);
				newA.onmouseover = function(){
					mOver(this);
				}
				newA.onmouseout = function(){
					mOut(this);
				}
			}
			else {

				newA.setAttribute('onmouseover', 'mOver(this)');
				newA.setAttribute('onmouseout', 'mOut(this)');
			}
						
		}
	}
}

function mOver(obj){
		
	if(!obj){
		var obj = this;
	}
	
	var x = obj.src;

	//alert(x);
	var s = x.substring(x.indexOf("images"),x.length);
	
	var firstPart = s.substring(0,11);
	var middlePart = s.substring(11,s.length-6);
	var lastPart = s.substring(s.length-4,s.length);
				
	//alert("first: " + firstPart + " :: second: " + middlePart + " :: last: " + lastPart);
	
	var newSource = firstPart + middlePart + "-h" + lastPart;
	
	obj.src = newSource;

}
function mOut(obj){
	
	if(!obj){
		obj = this
	}
	
	var x = obj.src;
	
	var s = x.substring(x.indexOf("images"),x.length);
	
	var firstPart = s.substring(0,11);
	var middlePart = s.substring(11,s.length-6);
	var lastPart = s.substring(s.length-4,s.length);
				
	//alert("first: " + firstPart + " :: second: " + middlePart + " :: last: " + lastPart);
	
	var newSource = firstPart + middlePart + "-n" + lastPart;
	
	obj.src = newSource;

}

function nextPage(obj, pageType){
	id = obj.options[obj.options.selectedIndex].value;
	qstring = "resource-center.cfm?" + pageType + "id=" + id;
	
	window.location = qstring;
}

function iTool(id){
	blackscreen();
	var greyb = new GreyBox();
	var q = "id=" + id;
	myDiv = greyb.id;
	var new1 = new AjaxCall("itool.cfm",q,myDiv,'',1);
	scrollTo(0,0);
	setTimeout("resizeBlackscreen();",2000);
}

function resizeBlackscreen(){
	grey = document.getElementById("greybox");
	black = document.getElementById("blackscreen");
	//alert("checking..." + grey.scrollHeight + " > " + black.style.height);
	var tempblack = parseInt(black.style.height);
	if(grey.scrollHeight > tempblack){
		//alert("changing...");
		black.style.height = (grey.scrollHeight + 50) + "px";
	}
}

function GreyBox(){
	var screenx = document.createElement("div");
	screenx.id = "greybox";
	
	/*
	var closeDiv = document.createElement("div");
	closeDiv.id = "closeDiv";
	closeDiv.innerHTML = "<a href='javascript:closeGrey();'>[ X ] Close</a>";
	*/
	
	var body = document.getElementsByTagName("body")[0];
	screenx.style.left = document.body.scrollWidth/2 - 400 + "px";
	
	if(window.pageYOffset){
		newY = window.pageYOffset + 35;
	}
	else{
		newY = document.body.scrollTop + 35;
	}
	newY = 35;
	screenx.style.top = newY + "px";
	
	body.appendChild(screenx);
	//screenx.appendChild(closeDiv);
	//var cal = document.getElementById("cal");
	//body.removeChild(cal);
	
	//body.appendChild(cal);
	
	var wscreen = document.getElementById("greybox");
	
	return wscreen;
}

/*
function reblackScreen(){
	var myDiv = document.getElementById("blackscreen");
	
	var newH = document.height;
	
	myDiv.style.height = newH + "px";
	alert(newH);
}
*/
function blackscreen(){
	
	var screen = document.createElement("div");
	screen.id = "blackscreen";
	var body = document.getElementsByTagName("body")[0];
    body.appendChild(screen);
	
	//var cal = document.getElementById("cal");
	//body.removeChild(cal);
	//body.appendChild(cal);
	
	var wscreen = document.getElementById("blackscreen");
	
	wscreen.style.visibility = 'visible';
	myBody = document.getElementsByTagName("body")[0];
	var newH = document.body.scrollHeight + 200;
	//var newH = 2000;
	var newW = document.body.scrollWidth;
	wscreen.style.height = newH + 'px';
	wscreen.style.width = newW + 'px';
	wscreen.style.top = '0';
	wscreen.style.left = '0';
	
	boxes = body.getElementsByTagName("select");
	
	for(i=0;i<boxes.length;i++){
		boxes[i].style.visibility = 'hidden';
	}
	
	/*
	wscreen.onclick = function(){
		blackscreenoff();		
	}
	*/
	
}

function blackscreenoff(){

	var body = document.getElementsByTagName("body")[0];
	boxes = body.getElementsByTagName("select");
	
	var olddiv = document.getElementById("blackscreen");
	body.removeChild(olddiv);
	
	for(i=0;i<boxes.length;i++){
		boxes[i].style.visibility = 'visible';
	}
}

function contactUs(){
	var formName = "contactForm";
	
	//var requiredList = new Array("emails");
	
	
	if(checkRequired(formName,false,false,1)==false){	
		return false;
	}
	else{
		AjaxCall("contact.cfm",formName,"greybox");
	}
}

function createLogin(){
	closeGrey(0);
	
	setTimeout("iTool(382784);",1000);
}

function closeGrey(closeTime){
	if(closeTime===0){
		myTime = closeTime*1000;
	}
	else{
		myTime = 2000;
	}
	//alert(closeTime);
	body = document.getElementsByTagName("body")[0];
	div = document.getElementById("greybox");
	setTimeout("body.removeChild(div);blackscreenoff();", myTime);
}

function findPosX(obj)
{
  var curleft = 0;
  if(obj.offsetParent)
      while(1) 
      {
        curleft += obj.offsetLeft;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.x)
      curleft += obj.x;
  return curleft;
}

function findPosY(obj)
{
  var curtop = 0;
  if(obj.offsetParent)
      while(1)
      {
        curtop += obj.offsetTop;
        if(!obj.offsetParent)
          break;
        obj = obj.offsetParent;
      }
  else if(obj.y)
      curtop += obj.y;
  return curtop;
}
function tempHideSelect(){
	if(document.all){
		var myElements = document.all;
	}
	else{
		var myElements = document.getElementsByTagName("body")[0].getElementsByTagName("*");
	}
	
	for(i=0;i<myElements.length;i++){
		var newA = myElements[i];
	
		if( ((newA.tagName == 'SELECT')||(newA.tagName == 'TEXTAREA'))&&newA.className.indexOf("tempHide")==-1 ){
			newA.style.visibility = 'hidden';
			if(newA.className==''){
				newA.className = "tempHide";
			}
			else{
				newA.className = newA.className + " tempHide";
			}
		}
	}
	
}
function tempShowSelect(){
	if(document.all){
		var myElements = document.all;
	}
	else{
		var myElements = document.getElementsByTagName("body")[0].getElementsByTagName("*");
	}
	
	for(i=0;i<myElements.length;i++){
		var newA = myElements[i];
	
		if( ((newA.tagName == 'SELECT')||(newA.tagName == 'TEXTAREA'))&&newA.className.indexOf("tempHide")!=-1 ){
			newA.style.visibility = 'visible';
			if(newA.className=='tempHide'){
				newA.className = "";
			}
			else{
				newA.className = newA.className.replace(/ tempHide/,"");
			}
		}
	}
}


function checkRequired(formName,requiredList,excludeList,showHighlight){

	var frm = document[formName];

	if(!requiredList&&!excludeList){			
		for(z=0;z<frm.elements.length;z++){
			if(frm.elements[z].value==""){
				alert("A required field is not filled out.");
				if(showHighlight){
					frm.elements[z].className+=frm.elements[z].className?' fieldError':'fieldError';
				}
				return false;
			}
			else{
				if(frm.elements[z].type=="radio"){
					for(j=0;j<frm.elements.length;j++){
						
						var allunset = false;
						if(frm.elements[j].name==frm.elements[z].name&&frm.elements[j].checked){
							
							allunset = true;
							break;
						}
					}
					if(allunset==false){
						alert("A required field is not filled out.");
						if(showHighlight){
							frm.elements[z].className+=frm.elements[z].className?' fieldError':'fieldError';
						}
						return false;
					}
				}
				if(showHighlight){
					str = frm.elements[z].className;
					frm.elements[z].className=str.replace("fieldError","");
					str = frm.elements[z].className;
					frm.elements[z].className=str.replace(" fieldError","");
				}
			}
		}
	}
	else if(!requiredList){			
		var fieldList = excludeList;
		for(z=0;z<frm.elements.length;z++){

			var checkName = frm.elements[z].name;
			//alert(frm.elements[z].name + " " + checkName);
			if(excludeList.indexOf(checkName)==-1){
				var currentField = eval("frm.elements[" + z + "].value");
				if(currentField==""){
					alert("A required field is not filled out. ");
					if(showHighlight){
						frm.elements[z].className+=frm.elements[z].className?' fieldError':'fieldError';
					}
					return false;
				}
				else{
					if(showHighlight){
						str = frm.elements[z].className;
						frm.elements[z].className=str.replace("fieldError","");
						str = frm.elements[z].className;
						frm.elements[z].className=str.replace(" fieldError","");
					}
				}
			}
		}
	}
	else{
		var fieldList = requiredList;
		for(z=0;z<fieldList.length;z++){
			var currentField = eval("frm." + fieldList[z] + ".value");
			if(currentField==""){
				alert("A required field is not filled out. " + fieldList[z]);
				if(showHighlight){
					frm[fieldList[z]].className+=frm[fieldList[z]].className?' fieldError':'fieldError';
				}
				return false;
			}
			else{
				if(showHighlight){
					str = frm[fieldList[z]].className;
					frm[fieldList[z]].className=str.replace("fieldError","");
					str = frm[fieldList[z]].className;
					frm[fieldList[z]].className=str.replace(" fieldError","");
				}
			}
		}
	}
	
	return true;
}

function checkCustom(){
	frm = document.alldates;
	
	if(frm.classid.value=="1"){
		frm.customName.value = "";
		frm.customName.style.display = "block";
		frm.customName.focus();
	}
	else{
		frm.customName.value = " ";
		frm.customName.style.display = "none";
	}
}

function changeImage(obj){
	var currfile = obj.src;
	var firstpart = currfile.substring(0,currfile.length-5);
	var secondpart = currfile.substring(currfile.length-5,currfile.length-4);
	var thirdpart = currfile.substring(currfile.length-4,currfile.length);
	
	if(secondpart=="h"){
		var secondpartnew = "n";
	}
	else{
		var secondpartnew = "h";
	}
	obj.src = firstpart + secondpartnew + thirdpart;
	//alert("first: " + firstpart + " - second: " + secondpart + " - third: " + thirdpart);
}

function loadPage(section,swf){
			
			// Main content (text) load
			if(section){
				AjaxCall(section,'','contentholder');
				if(!swf){
					swf = "none";
				}
			}
			if(swf){
				q = 'swf=' + swf + '&section=' + section;
				AjaxCall('swf.cfm',q,'flash');
			}
			
			if(section=='contact.cfm'){
				document.getElementById('flash').innerHTML = '';
				document.getElementById('flash').style.background="url('images/Screen-contact.jpg') top left no-repeat";
			}
			else{
				document.getElementById('flash').innerHTML = '';
				document.getElementById('flash').style.background="url('images/Screen400x300.jpg') top left no-repeat";
			}
			
		}
		function loadSWFPage(section){
			//alert(section);
			newSection = section + '.cfm';
			loadPage(newSection,'none');
		}
		function loadSite(site){
			window.open(site,"newWin");
			
		}
		function contactSubmit(){
			AjaxCall('contactSubmit.cfm','contactSubmit','flash');
		}
		
function validateForm() {
	frm = document.contactSubmit;
	msg = '';
	if (frm.fName.value == '') 
	{
		msg += "Name \n\r"
	}
	
	if (frm.phone.value == '') {
		msg += "Phone Number \n\r"
	}	
	if (frm.email.value == '') {
		msg += "Email Address \n\r"
	}		
	
	if (msg == '') {
		AjaxCall("contact-process.cfm","contactSubmit","flash");
	} else {
		alert("The following fields must be filled out to submit this request. \n\r"+msg)
	}
	
	
}