/**
 *  Most of the scripts below were found at
 *  www.alistapart.com and related sites.  They are used
 *  here because they are web standards compliant.  These
 *  scripts are all free to reuse and are not licensed as
 *  part of the Kryptronic Hybrid X Core (KHXC).
 *
 *  All onload() events go at the bottom of this file.
 */

/**
 *  Function DisableSubmit() used to disable submit buttons
 *  after then have been depressed.  This is implemented to
 *  stop multiple click submissions of forms.
 */


 function validateNewnetLinks(flag) {
	//var finalhref2 = "";
	//for (var i=0; i < 2; i++) {
//	for (var i=0; i < document.links.length; i++) {
//	  var li = document.links[i];
//	  //alert(li.href);
//	  var hrefStr1 = li.href;
//	  var finalhref1 = validateFormatLink(hrefStr1);
//	  var pattern1 = new RegExp("\.html$");
//  	if(pattern1.test(hrefStr1)) {
//  		li.href = finalhref1;
//  	}
//	}
	if(flag) {
		hrefStr1 = window.location.href;
	  var pattern1 = new RegExp("\.html$");
  	if(pattern1.test(hrefStr1)) {
			var finalhref1 = validateFormatLink(hrefStr1);
			window.location.href = finalhref1;
		} else {
			var finalhref1 = validateFormatLink(hrefStr1);
			window.location.href = finalhref1;
		}
	}
	return false;
}


function validateFormatLink(hrefStr) {
  var pattern1 = new RegExp("\.html$");
  if(pattern1.test(hrefStr)) {
  	//alert("seo");
  	var pattern2 = new RegExp("(https{0,1}://[^/]*/)([^/]*/)?([^/]*/)?([^/]*\.html)");
  	//var pattern2 = new RegExp("(http://)(.*\.html)");
  	var matchedArr = pattern2.exec(hrefStr);
  	
		var pattern3 = new RegExp("filter:");
  	var finalhref = "";
  	finalhref += (matchedArr[1])?matchedArr[1]:"";
  	finalhref += (matchedArr[2] && !pattern3.test(matchedArr[2]))?matchedArr[2]:"";
  	finalhref += (document.getElementById("prodFlag").value > "0")?"filter:"+document.getElementById("prodFlag").value+"/":"filter:1/";
  	finalhref += (matchedArr[4])?matchedArr[4]:"";
  	//alert(finalhref);
  	return finalhref;
  } else {
  	//alert("no seo");
  	var pattern2 = new RegExp("^(https{0,1}://.*)(filter=)([123])(.*)$");
  	var finalhref = "";
  	if(pattern2.test(hrefStr)) {
  		matchedArr = pattern2.exec(hrefStr);
	  	finalhref += (matchedArr[1])?matchedArr[1]:"";
	  	//finalhref += (matchedArr[2] && !pattern3.test(matchedArr[2]))?matchedArr[2]:"";
	  	finalhref += (document.getElementById("prodFlag").value > "0")?"filter="+document.getElementById("prodFlag").value+"":"filter=1";
	  	finalhref += (matchedArr[4])?matchedArr[4]:"";
	  } else {
	  	finalhref += hrefStr;
	  	finalhref += "&";
	  	finalhref += (document.getElementById("prodFlag").value > "0")?"filter="+document.getElementById("prodFlag").value+"":"filter=1";
	  }
  	//alert(finalhref);
  	return finalhref;
  }
}


 function validateSelectSearch_layout() {
	
	
	
	if(document.frmSearch1.sel_field_1.value=="" || document.frmSearch1.sel_field_2.value=="" || document.frmSearch1.sel_field_3.value=="")
	{
		document.getElementById("newnetTest1").disabled = true;	
		document.getElementById("newnetTest1").src="images/BTNSearch2.gif";
	}
	else
	{
		document.getElementById("newnetTest1").disabled = false;			
		document.getElementById("newnetTest1").src="images/BTNSearchActive2.gif";		
	}
 }
 
 
var submitted = false;

var xmlHttp;

function validateProdSearchNewnet(g) {

	if(g) {
		if(g.sel_field_1.value != "" && g.sel_field_2.value != "" && g.sel_field_3.value != "") {
			
			var urlVal = "return_search_ajax_new.php";
			
			xmlHttp = GetXmlHttpObject();

			xmlHttp.open("POST", urlVal, true);

			xmlHttp.onreadystatechange = showResultNew

			xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

			xmlHttp.send("mode=rec&selVal1="+escape(g.sel_field_1.value)+"&selVal2="+escape(g.sel_field_2.value)+"&selVal3="+escape(g.sel_field_3.value)+"&selVal4="+escape(g.sel_field_4.value));

		} else {
			return false;
		}
	} else {
		return false;
	}
	return false;
}

function showResultNew() {
	if(xmlHttp.readyState == 4) {
		//alert(xmlHttp.responseText);

		var resStr = xmlHttp.responseText;
		resStr = resStr * 1;
		if(resStr > 0) {
			
			//document.frmSearch1.submit();
			return true;
			
		} else {
			
			//alert("There is no search result found with this combination. Please try again.");
			return false;
			
		}
		
	}
		return false;
}


function returnFieldArray() {
	var retArr = new Array();
	retArr[1] = "Select Make";
	retArr[2] = "Select Model";
	retArr[3] = "Select Year";
	retArr[4] = "Select Size";
	return retArr;
}

var maxDrop = 5;
function validateSelectSearch(callMode, mode, defaultVal, extMode) {
	/*if(mode < 4){

		document.getElementById("newnetTest"+extMode).disabled = true;

	}else{

		document.getElementById("newnetTest"+extMode).disabled = false;

	}

	if(mode == 4){
		if(extMode == 1) {
			document.getElementById("newnetTest"+extMode).src="images/BTNSearchActive2.gif";
		} else {
			document.getElementById("newnetTest"+extMode).src="images/BTNSearchActive.jpg";
		}

	} else if( (document.getElementById("newnetTest"+extMode).src.search("images/BTNSearchActive.jpg")) && (mode == 1 || mode == 2 || mode == 3)) {

		document.getElementById("newnetTest"+extMode).src="images/BTNSearch2.gif"

	} else if( (document.getElementById("newnetTest"+extMode).src.search("images/BTNSearchActive2.gif")) && (mode == 1 || mode == 2 || mode == 3)) {

		document.getElementById("newnetTest"+extMode).src="images/BTNSearch2.gif"

	}*/
	if(callMode == -1) {
		//var fieldObject = eval("document.frmSearch"+extMode+".sel_field_"+mode+";");
		var element_id='sel_field_'+mode;
	} else {
		//var fieldObject = eval("document.frmSearch"+extMode+".sel_field_"+(mode - 1)+";");
	//	var fieldObject = eval("document.ccp0--contact"+extMode+".sel_field_"+(mode - 1)+";");
		var element_id='sel_field_'+(mode - 1);
	}
	//alert(element_id);
	var fieldObject = document.getElementById(element_id);
	if(fieldObject==null)
	{
		var fieldObject = eval("document.forms['ccp0--contact']."+element_id+";");
	}
	eval("setToDefaultSearch"+extMode+"("+mode+");");
	if(fieldObject.value != -1 || 1) {
		var url = "return_search_ajax.php";

		eval("xmlHttp"+extMode+" = GetXmlHttpObject();");
		eval("xmlHttp"+extMode+".open(\"POST\", '"+url+"', true);");
		if(extMode == 1) {
			eval("xmlHttp"+extMode+".onreadystatechange = showResultSelectSearch1");
		} else {
			eval("xmlHttp.onreadystatechange = showResultSelectSearch");
		}
		eval("xmlHttp"+extMode+".setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\");");
		//alert(fieldObject.value);
		//alert("mode="+mode+"&defaultVal="+defaultVal+"&chooseVal="+fieldObject.value);
		eval("xmlHttp"+extMode+".send(\"mode="+mode+"&defaultVal="+defaultVal+"&chooseVal="+fieldObject.value+"\");");

	}

}

/*Here code from garry*/

function validateSelectSearch_garry(callMode, mode, defaultVal, extMode,nextfield_num,first) {
	var extension=extMode;
	if(callMode == -1) {
		var fieldObject = eval("document.getElementById('ccp0--coform').selw_field_"+nextfield_num+";");
	} else {

		var fieldObject = eval("document.getElementById('ccp0--coform').selw_field_"+(nextfield_num)+";");
	}
	//eval("setToDefaultSearch_garry("+mode+");");
	if(fieldObject.value != -1 || 1) {
		var url = "return_search_ajax.php";
		eval("xmlHttp"+extMode+" = GetXmlHttpObject();");
		eval("xmlHttp"+extMode+".open(\"POST\", '"+url+"', true);");
		
		
		if(extMode >= 5) {
			if(first=='')
				nextfield_num++;
			eval("xmlHttp"+extMode+".onreadystatechange = function(){showResultSelectSearch_garry('"+extMode+"','"+nextfield_num+"');}");
		} else {
			eval("xmlHttp.onreadystatechange = showResultSelectSearch");
		}
		eval("xmlHttp"+extMode+".setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\");");
		eval("xmlHttp"+extMode+".send(\"mode="+mode+"&defaultVal="+defaultVal+"&chooseVal="+fieldObject.value+"&extMode="+extMode+"\");");

	}

}

/*End here*/

function showContactFormNewNet(objId){
	document.getElementById(objId+"_1").style.display = "none";
	document.getElementById(objId+"_2").style.display = "block";
}

function sendComment1(objId1){


	document.getElementById(objId1+"_2").style.display = "none";
	document.getElementById(objId1+"_1").style.display = "block";
	document.getElementById(objId1+"_3").style.display = "none";

}

function sendComment2(objId1){


	document.getElementById(objId1+"_2").style.display = "none";
	document.getElementById(objId1+"_1").style.display = "block";
	document.getElementById(objId1+"_3").style.display = "none";

}


function validate_email(email) { var rxp =/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/; if(rxp.test(email)!=true) { return false; } else { return true; } }


function sendComment(getId){


	var url = "send_mail_ajax.php";

	var name = document.getElementById(getId+"_txtName").value;

	var phone = document.getElementById(getId+"_txtContactNo").value;

	var email = document.getElementById(getId+"_txtEmail").value;
	
	var carmake = document.getElementById(getId+"_txtCarMake").value;
	var carmodel = document.getElementById(getId+"_txtCarModel").value;
	var caryear = document.getElementById(getId+"_txtCarYear").value;
	var wheelsize = document.getElementById(getId+"_txtWheelSize").value;

	var comment = document.getElementById(getId+"_textComment").value;

	var pName = document.getElementById(getId+"_hdnProductNme").value;

	var pId = document.getElementById(getId+"_hdnProduct").value;

	if(email==""){

		alert("Please fill the form completely.");
		return false;
	}

	if(!validate_email(email))
	{
		alert("Please enter valid email address.");
		return false;
	}

	xmlHttp = GetXmlHttpObject();

	xmlHttp.open("POST", url, true);

	xmlHttp.onreadystatechange = showResultSendMail

	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		//alert(fieldObject.value);
	xmlHttp.send("name="+escape(name)+"&phone="+escape(phone)+"&email="+escape(email)+"&carmake="+escape(carmake)+"&carmodel="+escape(carmodel)+"&caryear="+escape(caryear)+"&wheelsize="+escape(wheelsize)+"&comment="+escape(comment)+"&pId="+escape(pId)+"&pName="+escape(pName));

	return false;
}

function showResultSendMail(){


	if(xmlHttp.readyState == 4) {
		//alert(xmlHttp.responseText);

		var resMailStr = xmlHttp.responseText;

		document.getElementById(resMailStr+"_2").style.display = "none";
		document.getElementById(resMailStr+"_1").style.display = "none";
		document.getElementById(resMailStr+"_3").style.display = "block";
	}


}

function showResultSelectSearch1() {
	if(xmlHttp1.readyState == 4) {
		//alert(xmlHttp1.responseText);

		var resStr = xmlHttp1.responseText;
		var resArr = resStr.split("##9##");
		//var fieldObjectLoop = eval("document.frmSearch1.sel_field_"+resArr[0]+";");
		var element_id='sel_field_'+resArr[0];
		var fieldObjectLoop = document.getElementById(element_id);
		var fieldObject = document.getElementById(element_id);
		if(fieldObjectLoop==null)
		{
			var fieldObjectLoop = eval("document.forms['ccp0--contact']."+element_id+";");
		}		
		var defaultVal = resArr[1];
		var dropdownStr = resArr[2];
		if(dropdownStr != "") {
			var resArr1 = dropdownStr.split("##8##");
			for(var i=0; i<resArr1.length; i++) {
				var fieldCnt = i + 1;
				var resArr2 = resArr1[i].split("##7##");
				if(defaultVal == resArr2[0]) {
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, true);
				} else {
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, false);
				}
			}
		}

	}
}

function setToDefaultSearch1(mode) {
//	alert(mode);
//	alert(maxDrop);
	var ArrDefaultVal = returnFieldArray();
	for(var i=((mode*1)); i<maxDrop; i++) {
		//var fieldObjectLoop = eval("document.frmSearch1.sel_field_"+i+";");
		var fieldObjectLoop = document.getElementById('sel_field_'+i);
//		alert(fieldObjectLoop);
		if(fieldObjectLoop) {
			fieldObjectLoop.options.length = 0;
			fieldObjectLoop.options[0] = new Option(ArrDefaultVal[i], -1, false, true);
		}
	}
}


function showResultSelectSearch() {
	//alert(xmlHttp.readyState);
	if(xmlHttp.readyState == 4) {
		//alert(xmlHttp.responseText);

		var resStr = xmlHttp.responseText;
		var resArr = resStr.split("##9##");
		//var fieldObjectLoop = eval("document.frmSearch.sel_field_"+resArr[0]+";");
	//	var fieldObjectLoop = eval("document.ccp0--contact.sel_field_"+resArr[0]+";");
		var element_id='sel_field_'+resArr[0];
		var fieldObjectLoop = document.getElementById(element_id);
		var defaultVal = resArr[1];
		var dropdownStr = resArr[2];
		if(dropdownStr != "") {
			var resArr1 = dropdownStr.split("##8##");
			for(var i=0; i<resArr1.length; i++) {
				var fieldCnt = i + 1;
				var resArr2 = resArr1[i].split("##7##");
				if(defaultVal == resArr2[0]) {
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, true);
				} else {
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, false);
				}
			}
		}

	}
}

/*This from garry*/

function showResultSelectSearch_garry(param,fieldnum) {
	
	eval("var newhttp=xmlHttp"+param);
	//alert(newhttp.readyState);
	//alert(param);
	if(newhttp.readyState == 4) {
		var resStr = newhttp.responseText;
		var resArr = resStr.split("##9##");
		
		var fieldObjectLoop = eval("document.forms['ccp0--coform'].selw_field_"+(fieldnum)+";");
		
		var defaultVal = resArr[1];
		var dropdownStr = resArr[2];
		if(dropdownStr != "") {
			var resArr1 = dropdownStr.split("##8##");
			for(var i=0; i<resArr1.length; i++) {
				var fieldCnt = i + 1;
				var resArr2 = resArr1[i].split("##7##");
				if(defaultVal == resArr2[0]) {
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, true);
				} else {
					//alert("text="+resArr2[1]+" value="+resArr2[0]);
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, false);
					
				}
			}
		}

	}
}
/*
function setToDefaultSearch5(mode) {
//	alert(mode);
//	alert(maxDrop);
	var ArrDefaultVal = returnFieldArray();
	for(var i=((mode*1)); i<maxDrop; i++) {
		
		var fieldObjectLoop = eval("document.getElementById('ccp0--coform').selw_field_"+i+";");
//		alert(fieldObjectLoop);
		if(fieldObjectLoop) {
			fieldObjectLoop.options.length = 0;
			fieldObjectLoop.options[0] = new Option(ArrDefaultVal[i], -1, false, true);
		}
	}
}
*/
function setToDefaultSearch_garry(mode) {
	//alert(mode);
	alert("event Fire");
	//alert(maxDrop);
	if(mode<5)
	{
		maxDrop=maxDrop;	
	}
	else
	{
		maxDrop=maxDrop+5;	
	}	
	
	var ArrDefaultVal = returnFieldArray();
	var j=1;
	for(var i=((mode*1)); i<maxDrop; i++) {
		
		var fieldObjectLoop = eval("document.getElementById('ccp0--coform').selw_field_"+i+";");
//		alert(fieldObjectLoop);
		if(fieldObjectLoop) {
			fieldObjectLoop.options.length = 0;
			//fieldObjectLoop.options[0] = new Option(ArrDefaultVal[i], -1, false, true);
			fieldObjectLoop.options[0] = new Option(ArrDefaultVal[j], -1, false, true);
			
			j++;
		}
	}
}
/*End here*/
function setToDefaultSearch(mode) {
//	alert(mode);
//	alert(maxDrop);
	var ArrDefaultVal = returnFieldArray();
	for(var i=((mode*1)); i<maxDrop; i++) {
		//var fieldObjectLoop = eval("document.frmSearch.sel_field_"+i+";");
		var fieldObjectLoop = eval("document.getElementById('ccp0--contact').sel_field_"+i+";");
		
//		alert(fieldObjectLoop);
		if(fieldObjectLoop) {
			fieldObjectLoop.options.length = 0;
			fieldObjectLoop.options[0] = new Option(ArrDefaultVal[i], -1, false, true);
		}
	}
}

function GetXmlHttpObject() {
	var objXMLHttp=null
	if (window.XMLHttpRequest) {
		objXMLHttp=new XMLHttpRequest()
	} else if (window.ActiveXObject) {
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
	return objXMLHttp
}


function DisableSubmitWT(formname,idf) {

	if(idf==0)
	{
		alert("Selected Wheel does not have matching tires")
		return false;
	}
	else
	{

	var thy = "move_to_tire-"+formname;
	document.getElementById(thy).value="1";	
	if(document.forms[formname].boltpattern)
	{
		if(document.forms[formname].boltpattern.value=="")
		{
			alert('Please Select Bolt Pattern');
			document.forms[formname].boltpattern.focus();
			return false;
		}
		if(document.forms[formname].boltpattern.value=="Not Sure")
		{
			if(!confirm('You have selected "Not Sure" as your Bolt Pattern and a sales representative will contact you shortly after you checkout to varify your product fit to your vehicle'))		
			{
				return false;
			}
		}
		
	}
     if(submitted == true) { return; }
	 document.forms[formname].method='get';
     document.forms[formname].submit();
     document.forms[formname].SUBMIT.value = 'Please Wait...';
     document.forms[formname].SUBMIT.disabled = true;
     submitted = true;

	}

}


function DisableSubmit(formname) {

	/*
	if(document.forms[formname].boltpattern)
	{
		if(document.forms[formname].boltpattern.value=="")
		{
			alert('Please Select Bolt Pattern');
			document.forms[formname].boltpattern.focus();
			return false;
		}
		if(document.forms[formname].boltpattern.value=="Not Sure")
		{
			if(!confirm('You have selected "Not Sure" as your Bolt Pattern and a sales representative will contact you shortly after you checkout to varify your product fit to your vehicle'))		
			{
				return false;
			}
		}
		
	}
	*/
     if(submitted == true) { return; }
     document.forms[formname].submit();
     document.forms[formname].SUBMIT.value = 'Please Wait...';
     document.forms[formname].SUBMIT.disabled = true;
     submitted = true;

}

/**
 *  Function externalLinks() used to provide a standards
 *  compliant way of producing a pop-up link to another
 *  page.
 */

function externalLinks() {

     if (!document.getElementsByTagName) return;
     var anchors = document.getElementsByTagName("a");
     for (var i=0; i<anchors.length; i++) {
     var anchor = anchors[i];
     if (anchor.getAttribute("href") &&
     anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
     }

}

/**
 *  Function to add multiple onload() events to a page.
 *  Authored by Scott Andrew.  Visit www.scottandrew.com
 *  for info.
 */

function addEvent(elm, evType, fn, useCapture) {

     if (elm.addEventListener) {
     elm.addEventListener(evType, fn, useCapture);
     return true;
     } else if (elm.attachEvent) {
     var r = elm.attachEvent('on' + evType, fn);
     return r;
     } else {
     elm['on' + evType] = fn;
     }

}

/**
 *	Whatever:hover - V1.42.060206 - hover & active
 *	------------------------------------------------------------
 *	(c) 2005 - Peter Nederlof
 *	Peterned - http://www.xs4all.nl/~peterned/
 *	License  - http://creativecommons.org/licenses/LGPL/2.1/
 *
 *	Whatever:hover is free software; you can redistribute it and/or
 *	modify it under the terms of the GNU Lesser General Public
 *	License as published by the Free Software Foundation; either
 *	version 2.1 of the License, or (at your option) any later version.
 *
 *	Whatever:hover is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 *	Lesser General Public License for more details.
 *
 *	Credits and thanks to:
 *	Arnoud Berendsen, Martin Reurings, Robert Hanson
 *
 *	howto: body { behavior:url("csshover.htc"); }
 *	------------------------------------------------------------
 */

var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,

currentSheet, doc = window.document, hoverEvents = [], activators = {
onhover:{on:'onmouseover', off:'onmouseout'},
onactive:{on:'onmousedown', off:'onmouseup'}
}

function parseStylesheets() {

     if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
     window.attachEvent('onunload', unhookHoverEvents);
     var sheets = doc.styleSheets, l = sheets.length;
     for(var i=0; i<l; i++)
     parseStylesheet(sheets[i]);

}

function parseStylesheet(sheet) {

     if(sheet.imports) {
     try {
     var imports = sheet.imports, l = imports.length;
     for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
     } catch(securityException){}
     }
     try {
     var rules = (currentSheet = sheet).rules, l = rules.length;
     for(var j=0; j<l; j++) parseCSSRule(rules[j]);
     } catch(securityException){}

}

function parseCSSRule(rule) {

     var select = rule.selectorText, style = rule.style.cssText;
     if(!csshoverReg.test(select) || !style) return;
     var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
     var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
     var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
     var affected = select.replace(/:(hover|active).*$/, '');
     var elements = getElementsBySelect(affected);
     if(elements.length == 0) return;
     currentSheet.addRule(newSelect, style);
     for(var i=0; i<elements.length; i++)
     new HoverElement(elements[i], className, activators[pseudo]);

}

function HoverElement(node, className, events) {

     if(!node.hovers) node.hovers = {};
     if(node.hovers[className]) return;
     node.hovers[className] = true;
     hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
     hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });

}

function hookHoverEvent(node, type, handler) {

     node.attachEvent(type, handler);
     hoverEvents[hoverEvents.length] = {
     node:node, type:type, handler:handler
     };

}

function unhookHoverEvents() {

     for(var e,i=0; i<hoverEvents.length; i++) {
     e = hoverEvents[i];
     e.node.detachEvent(e.type, e.handler);
     }
}

function getElementsBySelect(rule) {

     var parts, nodes = [doc];
     parts = rule.split(' ');
     for(var i=0; i<parts.length; i++) {
     nodes = getSelectedNodes(parts[i], nodes);
     }
     return nodes;

}

function getSelectedNodes(select, elements) {

     var result, node, nodes = [];
     var identify = (/\#([a-z0-9_-]+)/i).exec(select);
     if(identify) {
     var element = doc.getElementById(identify[1]);
     return element? [element]:nodes;
     }
     var classname = (/\.([a-z0-9_-]+)/i).exec(select);
     var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
     var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
     for(var i=0; i<elements.length; i++) {
     result = tagName? elements[i].all.tags(tagName):elements[i].all;
     for(var j=0; j<result.length; j++) {
     node = result[j];
     if(classReg && !classReg.test(node.className)) continue;
     nodes[nodes.length] = node;
     }
     }
     return nodes;

}

/**
 *  Function to show or hide an id within an XHTML page.
 */

function idShowHide(obj) {

     var el = document.getElementById(obj);
     if ( el.style.display != "none" ) {
     el.style.display = 'none';
     } else {
     el.style.display = 'block';
     }
}

/**Here code from Garry*/
function showhiddendetailhide(obj) 
{
	var showdetail="detail_"+obj;
	if(document.getElementById(showdetail).style.display=="none")
	{
		document.getElementById("increaseId_"+obj).style.height="150px";
		document.getElementById(showdetail).style.display="block";
	}
	else
	{
		document.getElementById("increaseId_"+obj).style.height="80px";
		document.getElementById(showdetail).style.display="none";	
	}	
}

function checkCarmodel()
{
	if(document.getElementById("totavaluedrop"))
	{
		var totval=document.getElementById("totavaluedrop").value;
		if(totval!=0)
		{
			for(rt=1;rt<=totval;rt++)
			{
				if(document.getElementById('Span1').style.display == ''){
					
					if(document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value == "Make" || document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value == "")
					{
						alert("Please enter car Make.");
						return false;	
					}	
					if(document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value == "Model" || document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value == "")
					{
						alert("Please enter car Model.");
						return false;	
					}	
					if(document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value == "Year" || document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value == "")
					{
						alert("Please enter car Year.");
						return false;	
					}
					
		
				}else{					
					if(document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value=="Make")
					{
						alert("Please select car Make.");
						return false;	
					}	
					if(document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value=="Model")
					{
						alert("Please select car Model.");
						return false;	
					}	
					if(document.getElementById("ccp0--prodsearch_newnetp--selw_field_"+rt).value=="Year")
					{
						alert("Please select car Year.");
						return false;	
					}
				}	
			}
		}	
	}
	return(true);	
}


/**End Here*/





/**
 *  All onload() events here.
 */

addEvent(window,'load',externalLinks,false);
addEvent(window,'load',parseStylesheets,false);



/*Here code from garry*/
/* HTTP OBJECT to Call Server Script*/
function getHTTPObject() 
{
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try 
	{
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } 
	catch (e) 
	{
      try 
	  {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  catch (E) 
	  {
        xmlhttp = false;
	  }
    }
  @else
  	xmlhttp = false;
  @end @*/

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') 
  {
    try
	{ 
      xmlhttp = new XMLHttpRequest();
	}
	catch (e) 
	{
      xmlhttp = false;
	}
  }
  return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
var xmlHttp115 = getHTTPObject(); // We create the HTTP Object

function shipvalue()
{
	document.getElementById("showresulthere").innerHTML="";
	document.getElementById("showrebutton").style.display="none";
	document.getElementById("showresulthere").style.display="block";
	
	str=document.getElementById('send_selctwheel').value;
	splitval=str.split("||");
	var shiplength=splitval[0];
	var shipwidth=splitval[1];
	var shipheight=splitval[2];
	var shipweight=splitval[3];
	var shipnumbox=document.getElementById('noofprod').value;
	
	//var shipnumbox=splitval[4];
	var zipcodesend=document.getElementById('sendzipcode').value;
	var url1 = "/testzipcode.php?shiplength="; 	

	url1 = url1 + shiplength + "&shipwidth=" + shipwidth + "&shipheight="+shipheight+ "&shipweight="+shipweight+"&shipnumbox="+shipnumbox+"&zipcodesend="+zipcodesend;
//alert(url1);
	http.open("GET", url1, true);
  	http.onreadystatechange = handleHttpResponse;
  	http.send(null);
return false;
	
	
}

function number_format( number, decimals, dec_point, thousands_sep ) {

    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}


function handleHttpResponse() 
{
	document.getElementById("showresulthere").innerHTML="<div class='heading'></div><div class='mid_bg'><div class='spacer'></div><div class='result'><span class='blacktxt1'>Loading... Please Wait </span><span class='bluetxt'></span></div><div class='result'><span class='orangetxt'></span></div><div class='spacer'></div><div class='midcontent'><div align='center'></div></div></div><div class='bottom'></div>";
  if (http.readyState == 4)
  {
	result="";  
	zipcodev="";
	var result1 = http.responseText;
	resultnew=result1.split("|||");
	result=resultnew[0];
	number_format(result, 2, '.', '');
	zipcodev=resultnew[1];

	document.getElementById("showresulthere").innerHTML="<div class='heading'></div><div class='mid_bg'><div class='spacer'></div><div class='result'><span class='blacktxt1'>Total Shipping for </span><span class='bluetxt'>" +zipcodev+ ":</span></div><div class='result'><span class='orangetxt'>$" +result+ "</span></div><div class='spacer'></div><div class='midcontent'><div align='center'><a href='javascript:void(0);' onclick='return aginship()'><img src='/images/back_bt.jpg' alt='getitnow' width='115' height='31' border='0' /></a></div></div></div><div class='bottom'></div>";
		
  }
}

var http1 = getHTTPObject(); // We create the HTTP Object

function shipvalue_new(str)
{
	document.getElementById("showresulthere").innerHTML="";
	document.getElementById("showrebutton").style.display="none";
	document.getElementById("showresulthere").style.display="block";
	var zipcodesend=document.getElementById('sendzipcode').value;
	var url1 = "/testzipcode_cart.php?totstr="; 	

	url1 = url1 + str+"&zipcodesend="+zipcodesend;
	http1.open("GET", url1, true);
  	http1.onreadystatechange = handleHttpResponse1;
  	http1.send(null);
	
	
}
function handleHttpResponse1() 
{
  document.getElementById("showresulthere").innerHTML="<div class='heading'></div><div class='mid_bg'><div class='spacer'></div><div class='result'><span class='blacktxt1'>Loading... Please Wait </span><span class='bluetxt'></span></div><div class='result'><span class='orangetxt'></span></div><div class='spacer'></div><div class='midcontent'><div align='center'></div></div></div><div class='bottom'></div>";
  if (http1.readyState == 4)
  {
	result="";  
	zipcodev="";
	var result1 = http1.responseText;
	resultnew=result1.split("|||");
	result=resultnew[0];
	number_format(result, 2, '.', '');
	zipcodev=resultnew[1];
	document.getElementById("showresulthere").innerHTML="<div class='heading'></div><div class='mid_bg'><div class='spacer'></div><div class='result'><span class='blacktxt1'>Total Shipping for </span><span class='bluetxt'>" +zipcodev+ ":</span></div><div class='result'><span class='orangetxt'>$" +result+ "</span></div><div class='spacer'></div><div class='midcontent'><div align='center'><a href='javascript:void(0);' onclick='return aginship()'><img src='/images/back_bt.jpg' alt='getitnow' width='115' height='31' border='0' /></a></div></div></div><div class='bottom'></div>";
		
  }
}

function aginship()
{
	document.getElementById("showrebutton").style.display="block";
	document.getElementById("showresulthere").style.display="none";
}



/*******************Here code from new Garry show deatils **************/
/************************************************************************/
/***********************************************************************/
/************************************************************************/

function validateSelectSearch_garry_again(callMode, mode, defaultVal, extMode,nextfield_num,first,formid) {
	var extension=extMode;
	
	/*document.forms[formid].elements['"+formid+"_"+nextfield_num+"'];
	
	if(callMode == -1) {
		var fieldObject = eval("document.getElementById('"+formid+"').elements['"+formid+"_"+nextfield_num+"'];");
	} else {

		var fieldObject = eval("document.getElementById('"+formid+"').elements['"+formid+"_"+nextfield_num+"'];");
	}*/
	//alert(formid+"_"+nextfield_num);
	
	fieldObject ='';
	fieldObject = document.getElementById(formid+"_"+nextfield_num);
//alert(fieldObject);
	//eval("setToDefaultSearch_garry("+mode+");");
	
	if(fieldObject.value != -1 || 1) {
		var url = "return_search_ajax.php";
		eval("xmlHttp"+extMode+" = GetXmlHttpObject();");
		eval("xmlHttp"+extMode+".open(\"POST\", '"+url+"', true);");
		
		if(extMode >= 5) {
			if(first=='')
				nextfield_num++;
		
			eval("xmlHttp"+extMode+".onreadystatechange = function(){showResultSelectSearch_garry_again('"+extMode+"','"+nextfield_num+"','"+formid+"');}");
		} else {
			eval("xmlHttp.onreadystatechange = showResultSelectSearch");
		}
		eval("xmlHttp"+extMode+".setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\");");
		//alert("mode="+mode+"&defaultVal="+defaultVal+"&chooseVal="+fieldObject.value+"&extMode="+extMode);
		eval("xmlHttp"+extMode+".send(\"mode="+mode+"&defaultVal="+defaultVal+"&chooseVal="+fieldObject.value+"&extMode="+extMode+"\");");

	}

}

function showResultSelectSearch_garry_again(param,fieldnum,formid) {
	eval("var newhttp=xmlHttp"+param);
	//alert(newhttp.readyState);	
	
	
	
	if(newhttp.readyState == 4) {
		var resStr = newhttp.responseText;
		var resArr = resStr.split("##9##");
		
		//var fieldObjectLoop = eval("document.forms['"+formid+"'].elements['"+formid+"_"+(fieldnum)+"'];");
		var fieldObjectLoop = document.getElementById(formid+"_"+fieldnum);
		if(fieldnum==3 || fieldnum==2)
		{
			fieldObjectLoop.options.length = 1;
		}
		var defaultVal = resArr[1];
		var dropdownStr = resArr[2];
		if(dropdownStr != "") {
			var resArr1 = dropdownStr.split("##8##");
			for(var i=0; i<resArr1.length; i++) {
				var fieldCnt = i + 1;
				var resArr2 = resArr1[i].split("##7##");
				if(defaultVal == resArr2[0]) {
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, true);
				} else {
					//alert("text="+resArr2[1]+" value="+resArr2[0]);
					fieldObjectLoop.options[fieldCnt] = new Option(resArr2[1], resArr2[0], false, false);
					
				}
			}
		}

	}
}

/*
function showAllrelatdProd(formid,id,sid,wheelsize)
{
	var makecom=document.getElementById(formid+"_1").value;
	var modelcom=document.getElementById(formid+"_2").value;
	var yearcom=document.getElementById(formid+"_3").value;
	var sid=sid;
	var url = "return_allrelated_product.php";
	eval("xmlHttp115 = GetXmlHttpObject();");
	eval("xmlHttp115.open(\"POST\", '"+url+"', true);");
	
	eval("xmlHttp115.onreadystatechange = function(){showrelatedProd('"+id+"');}");
	eval("xmlHttp115.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\");");
	//alert("makecom="+makecom+"&modelcom="+modelcom+"&yearcom="+yearcom+"&id="+id+"&wheelsize="+wheelsize+"&sid="+sid);
	eval("xmlHttp115.send(\"makecom="+makecom+"&modelcom="+modelcom+"&yearcom="+yearcom+"&id="+id+"&wheelsize="+wheelsize+"&sid="+sid+"\");");
	
}





var XMLHttpRequestObject = false;
if(window.XMLHttpRequest) {
	XMLHttpRequestObject = new XMLHttpRequest();
} else if(window.ActiveXObject) {
	XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

/*function showrelatedProd(id) {
	//alert("This is the id: " + id);
	var id;
	if(XMLHttpRequestObject) {
		var obj = document.getElementById("showrelatedprodId_"+id);
		//alert("this is the object: " + obj);
		alert(XMLHttpRequestObject.readyState);
			if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
				
				obj.innerHTML = XMLHttpRequestObject.responseText;
			}
	}
}


function showrelatedProd(id)
{
	if(xmlHttp115.readyState == 4) 
	{
		var resStr = xmlHttp115.responseText;
		document.getElementById("showrelatedprodId_"+id).innerHTML=resStr;
	}
}
*/

function showAllrelatdProd(formid,id,sid,wheelsize)
{
	var makecom=document.getElementById(formid+"_1").value;
	var modelcom=document.getElementById(formid+"_2").value;
	var yearcom=document.getElementById(formid+"_3").value;
	var sid=sid;
	var url1 = "/return_allrelated_product.php?makecom="; 	
	url1 = url1 + makecom + "&modelcom=" + modelcom + "&yearcom="+yearcom+ "&id="+id+"&wheelsize="+wheelsize+"&sid="+sid;

	xmlHttp115.open("GET", url1, true);
  	xmlHttp115.onreadystatechange = showrelatedProd;
  	xmlHttp115.send(null);
	
	
}
function showrelatedProd() 
{
  if (xmlHttp115.readyState == 4)
  {
	var result1 = xmlHttp115.responseText;
	resultnew=result1.split("|||||");
	id=resultnew[0];
	resStr=resultnew[1];

	//var resStr = xmlHttp115.responseText;
	
	document.getElementById("showrelatedprodId_"+id).innerHTML=resStr;
  }
}






function openhidedive(id)
{
	if(document.getElementById("showwhillsize_val_"+id).style.display=='block')
	{
		document.getElementById("showwhillsize_val_"+id).style.display='none';
	}
	else
	{
		document.getElementById("showwhillsize_val_"+id).style.display='block';
	}
}
/*******************End Here****************************** **************/
/************************************************************************/
/***********************************************************************/
/************************************************************************/
/**
 *  End.
 */




/**
***	Wheels By Brand
*** by Frank Perez
**/

var ByBrandObject = false;
if(window.XMLHttpRequest) {
	ByBrandObject = new XMLHttpRequest();
} else if(window.ActiveXObject) {
	ByBrandObject = new ActiveXObject('Microsoft.XMLHTTP');
}

function navigateWheelsByName() {
	if(document.getElementById('wheelsByNameOptions').value != '') {
		window.location.href = document.getElementById('wheelsByNameOptions').value;
	}
}

function navigateWheelsBySize() {
	if(document.getElementById('wheelsBySizeOptions').value != '') {
		window.location.href = document.getElementById('wheelsBySizeOptions').value;
	}
}

function navigateWheelsByPrice() {
	if(document.getElementById('wheelsByPriceOptions').value != '') {
		window.location.href = document.getElementById('wheelsByPriceOptions').value;
	}
}
function navigateWheelsByFinish() {
	if(document.getElementById('wheelsByFinishOptions').value != '') {
		window.location.href = document.getElementById('wheelsByFinishOptions').value;
	}
}
function navigateWheelsBySpoke() {
	if(document.getElementById('wheelsBySpokeOptions').value != '') {
		window.location.href = document.getElementById('wheelsBySpokeOptions').value;
	}
}
/**
 *  End.
 */

var state = 'none';

function showhide(layer_ref) {

if (state == 'block') {
state = 'none';
}
else {
state = 'block';
}
if (document.all) { //IS IE 4 or 5 (or 6 beta)
	
//eval("document.all." + layer_ref + ".style.display = state");
//eval(document.getElementById(layer_ref).style.display=state);
	hza11 = document.getElementById(layer_ref);
	hza11.style.display = state;

}
if (document.layers) { //IS NETSCAPE 4 or below
document.layers[layer_ref].display = state;
}
if (document.getElementById &&!document.all) {
hza = document.getElementById(layer_ref);
hza.style.display = state;
}
}





//\/////
//\  overLIB 4.21 - You may not remove or change this notice.
//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
//\
//\  Contributors are listed on the homepage.
//\  This file might be old, always check for the latest version at:
//\  http://www.bosrup.com/web/overlib/
//\
//\  Please read the license agreement (available through the link above)
//\  before using overLIB. Direct any licensing questions to erik@bosrup.com.
//\
//\  Do not sell this as your own work or remove this copyright notice. 
//\  For full details on copying or changing this script please read the
//\  license agreement at the link above. Please give credit on sites that
//\  use overLIB and submit changes of the script so other people can use
//\  them as well.
//   $Revision: 1.119 $                $Date: 2005/07/02 23:41:44 $
//\/////
//\mini

////////
// PRE-INIT
// Ignore these lines, configuration is below.
////////
var olLoaded = 0;var pmStart = 10000000; var pmUpper = 10001000; var pmCount = pmStart+1; var pmt=''; var pms = new Array(); var olInfo = new Info('4.21', 1);
var FREPLACE = 0; var FBEFORE = 1; var FAFTER = 2; var FALTERNATE = 3; var FCHAIN=4;
var olHideForm=0;  // parameter for hiding SELECT and ActiveX elements in IE5.5+ 
var olHautoFlag = 0;  // flags for over-riding VAUTO and HAUTO if corresponding
var olVautoFlag = 0;  // positioning commands are used on the command line
var hookPts = new Array(), postParse = new Array(), cmdLine = new Array(), runTime = new Array();
// for plugins
registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass');

////////
// DEFAULT CONFIGURATION
// Settings you want everywhere are set here. All of this can also be
// changed on your html page or through an overLIB call.
////////
if (typeof ol_fgcolor=='undefined') var ol_fgcolor="#CCCCFF";
if (typeof ol_bgcolor=='undefined') var ol_bgcolor="#333399";
if (typeof ol_textcolor=='undefined') var ol_textcolor="#000000";
if (typeof ol_capcolor=='undefined') var ol_capcolor="#FFFFFF";
if (typeof ol_closecolor=='undefined') var ol_closecolor="#9999FF";
if (typeof ol_textfont=='undefined') var ol_textfont="Verdana,Arial,Helvetica";
if (typeof ol_captionfont=='undefined') var ol_captionfont="Verdana,Arial,Helvetica";
if (typeof ol_closefont=='undefined') var ol_closefont="Verdana,Arial,Helvetica";
if (typeof ol_textsize=='undefined') var ol_textsize="1";
if (typeof ol_captionsize=='undefined') var ol_captionsize="1";
if (typeof ol_closesize=='undefined') var ol_closesize="1";
if (typeof ol_width=='undefined') var ol_width="200";
if (typeof ol_border=='undefined') var ol_border="1";
if (typeof ol_cellpad=='undefined') var ol_cellpad=2;
if (typeof ol_offsetx=='undefined') var ol_offsetx=10;
if (typeof ol_offsety=='undefined') var ol_offsety=10;
if (typeof ol_text=='undefined') var ol_text="Default Text";
if (typeof ol_cap=='undefined') var ol_cap="";
if (typeof ol_sticky=='undefined') var ol_sticky=0;
if (typeof ol_background=='undefined') var ol_background="";
if (typeof ol_close=='undefined') var ol_close="Close";
if (typeof ol_hpos=='undefined') var ol_hpos=RIGHT;
if (typeof ol_status=='undefined') var ol_status="";
if (typeof ol_autostatus=='undefined') var ol_autostatus=0;
if (typeof ol_height=='undefined') var ol_height=-1;
if (typeof ol_snapx=='undefined') var ol_snapx=0;
if (typeof ol_snapy=='undefined') var ol_snapy=0;
if (typeof ol_fixx=='undefined') var ol_fixx=-1;
if (typeof ol_fixy=='undefined') var ol_fixy=-1;
if (typeof ol_relx=='undefined') var ol_relx=null;
if (typeof ol_rely=='undefined') var ol_rely=null;
if (typeof ol_fgbackground=='undefined') var ol_fgbackground="";
if (typeof ol_bgbackground=='undefined') var ol_bgbackground="";
if (typeof ol_padxl=='undefined') var ol_padxl=1;
if (typeof ol_padxr=='undefined') var ol_padxr=1;
if (typeof ol_padyt=='undefined') var ol_padyt=1;
if (typeof ol_padyb=='undefined') var ol_padyb=1;
if (typeof ol_fullhtml=='undefined') var ol_fullhtml=0;
if (typeof ol_vpos=='undefined') var ol_vpos=BELOW;
if (typeof ol_aboveheight=='undefined') var ol_aboveheight=0;
if (typeof ol_capicon=='undefined') var ol_capicon="";
if (typeof ol_frame=='undefined') var ol_frame=self;
if (typeof ol_timeout=='undefined') var ol_timeout=0;
if (typeof ol_function=='undefined') var ol_function=null;
if (typeof ol_delay=='undefined') var ol_delay=0;
if (typeof ol_hauto=='undefined') var ol_hauto=0;
if (typeof ol_vauto=='undefined') var ol_vauto=0;
if (typeof ol_closeclick=='undefined') var ol_closeclick=0;
if (typeof ol_wrap=='undefined') var ol_wrap=0;
if (typeof ol_followmouse=='undefined') var ol_followmouse=1;
if (typeof ol_mouseoff=='undefined') var ol_mouseoff=0;
if (typeof ol_closetitle=='undefined') var ol_closetitle='Close';
if (typeof ol_compatmode=='undefined') var ol_compatmode=0;
if (typeof ol_css=='undefined') var ol_css=CSSOFF;
if (typeof ol_fgclass=='undefined') var ol_fgclass="";
if (typeof ol_bgclass=='undefined') var ol_bgclass="";
if (typeof ol_textfontclass=='undefined') var ol_textfontclass="";
if (typeof ol_captionfontclass=='undefined') var ol_captionfontclass="";
if (typeof ol_closefontclass=='undefined') var ol_closefontclass="";

////////
// ARRAY CONFIGURATION
////////

// You can use these arrays to store popup text here instead of in the html.
if (typeof ol_texts=='undefined') var ol_texts = new Array("Text 0", "Text 1");
if (typeof ol_caps=='undefined') var ol_caps = new Array("Caption 0", "Caption 1");

////////
// END OF CONFIGURATION
// Don't change anything below this line, all configuration is above.
////////





////////
// INIT
////////
// Runtime variables init. Don't change for config!
var o3_text="";
var o3_cap="";
var o3_sticky=0;
var o3_background="";
var o3_close="Close";
var o3_hpos=RIGHT;
var o3_offsetx=2;
var o3_offsety=2;
var o3_fgcolor="";
var o3_bgcolor="";
var o3_textcolor="";
var o3_capcolor="";
var o3_closecolor="";
var o3_width=100;
var o3_border=1;
var o3_cellpad=2;
var o3_status="";
var o3_autostatus=0;
var o3_height=-1;
var o3_snapx=0;
var o3_snapy=0;
var o3_fixx=-1;
var o3_fixy=-1;
var o3_relx=null;
var o3_rely=null;
var o3_fgbackground="";
var o3_bgbackground="";
var o3_padxl=0;
var o3_padxr=0;
var o3_padyt=0;
var o3_padyb=0;
var o3_fullhtml=0;
var o3_vpos=BELOW;
var o3_aboveheight=0;
var o3_capicon="";
var o3_textfont="Verdana,Arial,Helvetica";
var o3_captionfont="Verdana,Arial,Helvetica";
var o3_closefont="Verdana,Arial,Helvetica";
var o3_textsize="1";
var o3_captionsize="1";
var o3_closesize="1";
var o3_frame=self;
var o3_timeout=0;
var o3_timerid=0;
var o3_allowmove=0;
var o3_function=null; 
var o3_delay=0;
var o3_delayid=0;
var o3_hauto=0;
var o3_vauto=0;
var o3_closeclick=0;
var o3_wrap=0;
var o3_followmouse=1;
var o3_mouseoff=0;
var o3_closetitle='';
var o3_compatmode=0;
var o3_css=CSSOFF;
var o3_fgclass="";
var o3_bgclass="";
var o3_textfontclass="";
var o3_captionfontclass="";
var o3_closefontclass="";

// Display state variables
var o3_x = 0;
var o3_y = 0;
var o3_showingsticky = 0;
var o3_removecounter = 0;

// Our layer
var over = null;
var fnRef, hoveringSwitch = false;
var olHideDelay;

// Decide browser version
var isMac = (navigator.userAgent.indexOf("Mac") != -1);
var olOp = (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && document.createTextNode);  // Opera 7
var olNs4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4);
var olNs6 = (document.getElementById) ? true : false;
var olKq = (olNs6 && /konqueror/i.test(navigator.userAgent));
var olIe4 = (document.all) ? true : false;
var olIe5 = false; 
var olIe55 = false; // Added additional variable to identify IE5.5+
var docRoot = 'document.body';

// Resize fix for NS4.x to keep track of layer
if (olNs4) {
	var oW = window.innerWidth;
	var oH = window.innerHeight;	
	window.onresize = function() { if (oW != window.innerWidth || oH != window.innerHeight) location.reload(); }
}

// Microsoft Stupidity Check(tm).
if (olIe4) {
	var agent = navigator.userAgent;
	if (/MSIE/.test(agent)) {
		var versNum = parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);
		if (versNum >= 5){
			olIe5=true;
			olIe55=(versNum>=5.5&&!olOp) ? true : false;
			if (olNs6) olNs6=false;
		}
	}
	if (olNs6) olIe4 = false;
}

// Check for compatability mode.
if (document.compatMode && document.compatMode == 'CSS1Compat') {
	docRoot= ((olIe4 && !olOp) ? 'document.documentElement' : docRoot);
}

// Add window onload handlers to indicate when all modules have been loaded
// For Netscape 6+ and Mozilla, uses addEventListener method on the window object
// For IE it uses the attachEvent method of the window object and for Netscape 4.x
// it sets the window.onload handler to the OLonload_handler function for Bubbling
if(window.addEventListener) window.addEventListener("load",OLonLoad_handler,false);
else if (window.attachEvent) window.attachEvent("onload",OLonLoad_handler);

var capExtent;

////////
// PUBLIC FUNCTIONS
////////

// overlib(arg0,...,argN)
// Loads parameters into global runtime variables.
function overlib() {
	if (!olLoaded || isExclusive(overlib.arguments)) return true;
	if (olCheckMouseCapture) olMouseCapture();
	if (over) {
		over = (typeof over.id != 'string') ? o3_frame.document.all['overDiv'] : over;
		cClick();
	}

/*	
if (parseInt(navigator.appVersion)>3) {
 if (navigator.appName=="Netscape") {
	 alert("1");
  winW = window.innerWidth;
  winH = window.innerHeight;
 }
 if (navigator.appName.indexOf("Microsoft")!=-1) {
	 alert("2");
  winW = document.body.offsetWidth;
  winH = document.body.offsetHeight;
 }
}

alert(
 "Window width = "+winW+"\n"
+"Window height = "+winH
);
*/

	// Load defaults to runtime.
  olHideDelay=0;
	o3_text=ol_text;
	o3_cap=ol_cap;
	o3_sticky=ol_sticky;
	o3_background=ol_background;
	o3_close=ol_close;
	o3_hpos=ol_hpos;
	o3_offsetx=ol_offsetx;
	o3_offsety=ol_offsety;
	o3_fgcolor=ol_fgcolor;
	o3_bgcolor=ol_bgcolor;
	o3_textcolor=ol_textcolor;
	o3_capcolor=ol_capcolor;
	o3_closecolor=ol_closecolor;
	o3_width=ol_width;
	o3_border=ol_border;
	o3_cellpad=ol_cellpad;
	o3_status=ol_status;
	o3_autostatus=ol_autostatus;
	o3_height=ol_height;
	o3_snapx=ol_snapx;
	o3_snapy=ol_snapy;
	o3_fixx=ol_fixx;
	o3_fixy=ol_fixy;
	o3_relx=ol_relx;
	o3_rely=ol_rely;
	o3_fgbackground=ol_fgbackground;
	o3_bgbackground=ol_bgbackground;
	o3_padxl=ol_padxl;
	o3_padxr=ol_padxr;
	o3_padyt=ol_padyt;
	o3_padyb=ol_padyb;
	o3_fullhtml=ol_fullhtml;
	o3_vpos=ol_vpos;
	o3_aboveheight=ol_aboveheight;
	o3_capicon=ol_capicon;
	o3_textfont=ol_textfont;
	o3_captionfont=ol_captionfont;
	o3_closefont=ol_closefont;
	o3_textsize=ol_textsize;
	o3_captionsize=ol_captionsize;
	o3_closesize=ol_closesize;
	o3_timeout=ol_timeout;
	o3_function=ol_function;
	o3_delay=ol_delay;
	o3_hauto=ol_hauto;
	o3_vauto=ol_vauto;
	o3_closeclick=ol_closeclick;
	o3_wrap=ol_wrap;	
	o3_followmouse=ol_followmouse;
	o3_mouseoff=ol_mouseoff;
	o3_closetitle=ol_closetitle;
	o3_css=ol_css;
	o3_compatmode=ol_compatmode;
	o3_fgclass=ol_fgclass;
	o3_bgclass=ol_bgclass;
	o3_textfontclass=ol_textfontclass;
	o3_captionfontclass=ol_captionfontclass;
	o3_closefontclass=ol_closefontclass;
	
	setRunTimeVariables();
	
	fnRef = '';
	
	// Special for frame support, over must be reset...
	o3_frame = ol_frame;
	
	if(!(over=createDivContainer())) return false;

	parseTokens('o3_', overlib.arguments);
	if (!postParseChecks()) return false;

	if (o3_delay == 0) {
		return runHook("olMain", FREPLACE);
 	} else {
		o3_delayid = setTimeout("runHook('olMain', FREPLACE)", o3_delay);
		return false;
	}
}

// Clears popups if appropriate
function nd(time) {
	if (olLoaded && !isExclusive()) {
		hideDelay(time);  // delay popup close if time specified

		if (o3_removecounter >= 1) { o3_showingsticky = 0 };
		
		if (o3_showingsticky == 0) {
			o3_allowmove = 0;
			if (over != null && o3_timerid == 0) runHook("hideObject", FREPLACE, over);
		} else {
			o3_removecounter++;
		}
	}
	
	return true;
}

// The Close onMouseOver function for stickies
function cClick() {
	if (olLoaded) {
		runHook("hideObject", FREPLACE, over);
		o3_showingsticky = 0;	
	}	
	return false;
}

// Method for setting page specific defaults.
function overlib_pagedefaults() {
	parseTokens('ol_', overlib_pagedefaults.arguments);
}


////////
// OVERLIB MAIN FUNCTION
////////

// This function decides what it is we want to display and how we want it done.
function olMain() {
	var layerhtml, styleType;
 	runHook("olMain", FBEFORE);
 	
	if (o3_background!="" || o3_fullhtml) {
		// Use background instead of box.
		layerhtml = runHook('ol_content_background', FALTERNATE, o3_css, o3_text, o3_background, o3_fullhtml);
	} else {
		// They want a popup box.
		styleType = (pms[o3_css-1-pmStart] == "cssoff" || pms[o3_css-1-pmStart] == "cssclass");

		// Prepare popup background
		if (o3_fgbackground != "") o3_fgbackground = "background=\""+o3_fgbackground+"\"";
		if (o3_bgbackground != "") o3_bgbackground = (styleType ? "background=\""+o3_bgbackground+"\"" : o3_bgbackground);

		// Prepare popup colors
		if (o3_fgcolor != "") o3_fgcolor = (styleType ? "bgcolor=\""+o3_fgcolor+"\"" : o3_fgcolor);
		if (o3_bgcolor != "") o3_bgcolor = (styleType ? "bgcolor=\""+o3_bgcolor+"\"" : o3_bgcolor);

		// Prepare popup height
		if (o3_height > 0) o3_height = (styleType ? "height=\""+o3_height+"\"" : o3_height);
		else o3_height = "";

		// Decide which kinda box.
		if (o3_cap=="") {
			// Plain
			layerhtml = runHook('ol_content_simple', FALTERNATE, o3_css, o3_text);
		} else {
			// With caption
			if (o3_sticky) {
				// Show close text
				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, o3_close);
			} else {
				// No close text
				layerhtml = runHook('ol_content_caption', FALTERNATE, o3_css, o3_text, o3_cap, "");
			}
		}
	}	

	// We want it to stick!
	if (o3_sticky) {
		if (o3_timerid > 0) {
			clearTimeout(o3_timerid);
			o3_timerid = 0;
		}
		o3_showingsticky = 1;
		o3_removecounter = 0;
	}

	// Created a separate routine to generate the popup to make it easier
	// to implement a plugin capability
	if (!runHook("createPopup", FREPLACE, layerhtml)) return false;

	// Prepare status bar
	if (o3_autostatus > 0) {
		o3_status = o3_text;
		if (o3_autostatus > 1) o3_status = o3_cap;
	}

	// When placing the layer the first time, even stickies may be moved.
	o3_allowmove = 0;

	// Initiate a timer for timeout
	if (o3_timeout > 0) {          
		if (o3_timerid > 0) clearTimeout(o3_timerid);
		o3_timerid = setTimeout("cClick()", o3_timeout);
	}

	// Show layer
	runHook("disp", FREPLACE, o3_status);
	runHook("olMain", FAFTER);

	return (olOp && event && event.type == 'mouseover' && !o3_status) ? '' : (o3_status != '');
}

////////
// LAYER GENERATION FUNCTIONS
////////
// These functions just handle popup content with tags that should adhere to the W3C standards specification.

// Makes simple table without caption
function ol_content_simple(text) {
	var cpIsMultiple = /,/.test(o3_cellpad);
	var txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';

	set_background("");
	return txt;
}

// Makes table with caption and optional close link
function ol_content_caption(text,title,close) {
	var nameId, txt, cpIsMultiple = /,/.test(o3_cellpad);
	var closing, closeevent;

	closing = "";
	closeevent = "onmouseover";
	if (o3_closeclick == 1) closeevent = (o3_closetitle ? "title='" + o3_closetitle +"'" : "") + " onclick";
	if (o3_capicon != "") {
	  nameId = ' hspace = \"5\"'+' align = \"middle\" alt = \"\"';
	  if (typeof o3_dragimg != 'undefined' && o3_dragimg) nameId =' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';
	  o3_capicon = '<img src=\"'+o3_capicon+'\"'+nameId+' />';
	}

	if (close != "")
		closing = '<td '+(!o3_compatmode && o3_closefontclass ? 'class="'+o3_closefontclass : 'align="RIGHT')+'"><a href="javascript:return '+fnRef+'cClick();"'+((o3_compatmode && o3_closefontclass) ? ' class="' + o3_closefontclass + '" ' : ' ')+closeevent+'="return '+fnRef+'cClick();">'+(o3_closefontclass ? '' : wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : wrapStr(1,o3_closesize,'close'))+'</a></td>';
	txt = '<table width="'+o3_width+ '" border="0" cellpadding="'+o3_border+'" cellspacing="0" '+(o3_bgclass ? 'class="'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' '+o3_height)+'><tr><td><table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td'+(o3_captionfontclass ? ' class="'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : '<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass ? '' : wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table width="100%" border="0" '+((olNs4||!cpIsMultiple) ? 'cellpadding="'+o3_cellpad+'" ' : '')+'cellspacing="0" '+(o3_fgclass ? 'class="'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' '+o3_height)+'><tr><td valign="TOP"'+(o3_textfontclass ? ' class="'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' style="'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>';

	set_background("");
	return txt;
}

// Sets the background picture,padding and lots more. :)
function ol_content_background(text,picture,hasfullhtml) {
	if (hasfullhtml) {
		txt=text;
	} else {
		txt='<table width="'+o3_width+'" border="0" cellpadding="0" cellspacing="0" height="'+o3_height+'"><tr><td colspan="3" height="'+o3_padyt+'"></td></tr><tr><td width="'+o3_padxl+'"></td><td valign="TOP" width="'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" class="'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : wrapStr(1,o3_textsize))+'</td><td width="'+o3_padxr+'"></td></tr><tr><td colspan="3" height="'+o3_padyb+'"></td></tr></table>';
	}

	set_background(picture);
	return txt;
}

// Loads a picture into the div.
function set_background(pic) {
	if (pic == "") {
		if (olNs4) {
			over.background.src = null; 
		} else if (over.style) {
			over.style.backgroundImage = "none";
		}
	} else {
		if (olNs4) {
			over.background.src = pic;
		} else if (over.style) {
			over.style.width=o3_width + 'px';
			over.style.backgroundImage = "url("+pic+")";
		}
	}
}

////////
// HANDLING FUNCTIONS
////////
var olShowId=-1;

// Displays the popup
function disp(statustext) {
	runHook("disp", FBEFORE);
	
	if (o3_allowmove == 0) {
		runHook("placeLayer", FREPLACE);
		(olNs6&&olShowId<0) ? olShowId=setTimeout("runHook('showObject', FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over);
		o3_allowmove = (o3_sticky || o3_followmouse==0) ? 0 : 1;
	}
	
	runHook("disp", FAFTER);

	if (statustext != "") self.status = statustext;
}

// Creates the actual popup structure
function createPopup(lyrContent){
	runHook("createPopup", FBEFORE);
	
	if (o3_wrap) {
		var wd,ww,theObj = (olNs4 ? over : over.style);
		theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);
		layerWrite(lyrContent);
		wd = (olNs4 ? over.clip.width : over.offsetWidth);
		if (wd > (ww=windowWidth())) {
			lyrContent=lyrContent.replace(/\&nbsp;/g, ' ');
			o3_width=ww;
			o3_wrap=0;
		} 
	}

	layerWrite(lyrContent);
	
	// Have to set o3_width for placeLayer() routine if o3_wrap is turned on
	if (o3_wrap) o3_width=(olNs4 ? over.clip.width : over.offsetWidth);
	
	runHook("createPopup", FAFTER, lyrContent);

	return true;
}

// Decides where we want the popup.
function placeLayer() {
	var placeX, placeY, widthFix = 0;
	
	// HORIZONTAL PLACEMENT, re-arranged to work in Safari
	if (o3_frame.innerWidth) widthFix=18; 
	iwidth = windowWidth();

	// Horizontal scroll offset
	winoffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : o3_frame.pageXOffset;

	placeX = runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);

	// VERTICAL PLACEMENT, re-arranged to work in Safari
	if (o3_frame.innerHeight) {
		iheight=o3_frame.innerHeight;
	} else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) { 
		iheight=eval('o3_frame.'+docRoot+'.clientHeight');
	}			

	// Vertical scroll offset
	scrolloffset=(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : o3_frame.pageYOffset;
	placeY = runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);

	// Actually move the object.
	repositionTo(over, placeX, placeY);
}

// Moves the layer
function olMouseMove(e) {
	var e = (e) ? e : event;

	if (e.pageX) {
		o3_x = e.pageX;
		o3_y = e.pageY;
	} else if (e.clientX) {
		o3_x = eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');
		o3_y = eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');
	}
	
	if (o3_allowmove == 1) runHook("placeLayer", FREPLACE);

	// MouseOut handler
	if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) {
		(olHideDelay ? hideDelay(olHideDelay) : cClick());
		hoveringSwitch = !hoveringSwitch;
	}
}

// Fake function for 3.0 users.
function no_overlib() { return ver3fix; }

// Capture the mouse and chain other scripts.
function olMouseCapture() {
	capExtent = document;
	var fN, str = '', l, k, f, wMv, sS, mseHandler = olMouseMove;
	var re = /function[ ]*(\w*)\(/;
	
	wMv = (!olIe4 && window.onmousemove);
	if (document.onmousemove || wMv) {
		if (wMv) capExtent = window;
		f = capExtent.onmousemove.toString();
		fN = f.match(re);
		if (fN == null) {
			str = f+'(e); ';
		} else if (fN[1] == 'anonymous' || fN[1] == 'olMouseMove' || (wMv && fN[1] == 'onmousemove')) {
			if (!olOp && wMv) {
				l = f.indexOf('{')+1;
				k = f.lastIndexOf('}');
				sS = f.substring(l,k);
				if ((l = sS.indexOf('(')) != -1) {
					sS = sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');
					if (eval("typeof " + sS + " == 'undefined'")) window.onmousemove = null;
					else str = sS + '(e);';
				}
			}
			if (!str) {
				olCheckMouseCapture = false;
				return;
			}
		} else {
			if (fN[1]) str = fN[1]+'(e); ';
			else {
				l = f.indexOf('{')+1;
				k = f.lastIndexOf('}');
				str = f.substring(l,k) + '\n';
			}
		}
		str += 'olMouseMove(e); ';
		mseHandler = new Function('e', str);
	}

	capExtent.onmousemove = mseHandler;
	if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE);
}

////////
// PARSING FUNCTIONS
////////

// Does the actual command parsing.
function parseTokens(pf, ar) {
	// What the next argument is expected to be.
	var v, i, mode=-1, par = (pf != 'ol_');	
	var fnMark = (par && !ar.length ? 1 : 0);

	for (i = 0; i < ar.length; i++) {
		if (mode < 0) {
			// Arg is maintext,unless its a number between pmStart and pmUpper
			// then its a command.
			if (typeof ar[i] == 'number' && ar[i] > pmStart && ar[i] < pmUpper) {
				fnMark = (par ? 1 : 0);
				i--;   // backup one so that the next block can parse it
			} else {
				switch(pf) {
					case 'ol_':
						ol_text = ar[i].toString();
						break;
					default:
						o3_text=ar[i].toString();  
				}
			}
			mode = 0;
		} else {
			// Note: NS4 doesn't like switch cases with vars.
			if (ar[i] >= pmCount || ar[i]==DONOTHING) { continue; }
			if (ar[i]==INARRAY) { fnMark = 0; eval(pf+'text=ol_texts['+ar[++i]+'].toString()'); continue; }
			if (ar[i]==CAPARRAY) { eval(pf+'cap=ol_caps['+ar[++i]+'].toString()'); continue; }
			if (ar[i]==STICKY) { if (pf!='ol_') eval(pf+'sticky=1'); continue; }
			if (ar[i]==BACKGROUND) { eval(pf+'background="'+ar[++i]+'"'); continue; }
			if (ar[i]==NOCLOSE) { if (pf!='ol_') opt_NOCLOSE(); continue; }
			if (ar[i]==CAPTION) { eval(pf+"cap='"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]==CENTER || ar[i]==LEFT || ar[i]==RIGHT) { eval(pf+'hpos='+ar[i]); if(pf!='ol_') olHautoFlag=1; continue; }
			if (ar[i]==OFFSETX) { eval(pf+'offsetx='+ar[++i]); continue; }
			if (ar[i]==OFFSETY) { eval(pf+'offsety='+ar[++i]); continue; }
			if (ar[i]==FGCOLOR) { eval(pf+'fgcolor="'+ar[++i]+'"'); continue; }
			if (ar[i]==BGCOLOR) { eval(pf+'bgcolor="'+ar[++i]+'"'); continue; }
			if (ar[i]==TEXTCOLOR) { eval(pf+'textcolor="'+ar[++i]+'"'); continue; }
			if (ar[i]==CAPCOLOR) { eval(pf+'capcolor="'+ar[++i]+'"'); continue; }
			if (ar[i]==CLOSECOLOR) { eval(pf+'closecolor="'+ar[++i]+'"'); continue; }
			if (ar[i]==WIDTH) { eval(pf+'width='+ar[++i]); continue; }
			if (ar[i]==BORDER) { eval(pf+'border='+ar[++i]); continue; }
			if (ar[i]==CELLPAD) { i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; }
			if (ar[i]==STATUS) { eval(pf+"status='"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]==AUTOSTATUS) { eval(pf +'autostatus=('+pf+'autostatus == 1) ? 0 : 1'); continue; }
			if (ar[i]==AUTOSTATUSCAP) { eval(pf +'autostatus=('+pf+'autostatus == 2) ? 0 : 2'); continue; }
			if (ar[i]==HEIGHT) { eval(pf+'height='+pf+'aboveheight='+ar[++i]); continue; } // Same param again.
			if (ar[i]==CLOSETEXT) { eval(pf+"close='"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]==SNAPX) { eval(pf+'snapx='+ar[++i]); continue; }
			if (ar[i]==SNAPY) { eval(pf+'snapy='+ar[++i]); continue; }
			if (ar[i]==FIXX) { eval(pf+'fixx='+ar[++i]); continue; }
			if (ar[i]==FIXY) { eval(pf+'fixy='+ar[++i]); continue; }
			if (ar[i]==RELX) { eval(pf+'relx='+ar[++i]); continue; }
			if (ar[i]==RELY) { eval(pf+'rely='+ar[++i]); continue; }
			if (ar[i]==FGBACKGROUND) { eval(pf+'fgbackground="'+ar[++i]+'"'); continue; }
			if (ar[i]==BGBACKGROUND) { eval(pf+'bgbackground="'+ar[++i]+'"'); continue; }
			if (ar[i]==PADX) { eval(pf+'padxl='+ar[++i]); eval(pf+'padxr='+ar[++i]); continue; }
			if (ar[i]==PADY) { eval(pf+'padyt='+ar[++i]); eval(pf+'padyb='+ar[++i]); continue; }
			if (ar[i]==FULLHTML) { if (pf!='ol_') eval(pf+'fullhtml=1'); continue; }
			if (ar[i]==BELOW || ar[i]==ABOVE) { eval(pf+'vpos='+ar[i]); if (pf!='ol_') olVautoFlag=1; continue; }
			if (ar[i]==CAPICON) { eval(pf+'capicon="'+ar[++i]+'"'); continue; }
			if (ar[i]==TEXTFONT) { eval(pf+"textfont='"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]==CAPTIONFONT) { eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]==CLOSEFONT) { eval(pf+"closefont='"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]==TEXTSIZE) { eval(pf+'textsize="'+ar[++i]+'"'); continue; }
			if (ar[i]==CAPTIONSIZE) { eval(pf+'captionsize="'+ar[++i]+'"'); continue; }
			if (ar[i]==CLOSESIZE) { eval(pf+'closesize="'+ar[++i]+'"'); continue; }
			if (ar[i]==TIMEOUT) { eval(pf+'timeout='+ar[++i]); continue; }
			if (ar[i]==FUNCTION) { if (pf=='ol_') { if (typeof ar[i+1]!='number') { v=ar[++i]; ol_function=(typeof v=='function' ? v : null); }} else {fnMark = 0; v = null; if (typeof ar[i+1]!='number') v = ar[++i];  opt_FUNCTION(v); } continue; }
			if (ar[i]==DELAY) { eval(pf+'delay='+ar[++i]); continue; }
			if (ar[i]==HAUTO) { eval(pf+'hauto=('+pf+'hauto == 0) ? 1 : 0'); continue; }
			if (ar[i]==VAUTO) { eval(pf+'vauto=('+pf+'vauto == 0) ? 1 : 0'); continue; }
			if (ar[i]==CLOSECLICK) { eval(pf +'closeclick=('+pf+'closeclick == 0) ? 1 : 0'); continue; }
			if (ar[i]==WRAP) { eval(pf +'wrap=('+pf+'wrap == 0) ? 1 : 0'); continue; }
			if (ar[i]==FOLLOWMOUSE) { eval(pf +'followmouse=('+pf+'followmouse == 1) ? 0 : 1'); continue; }
			if (ar[i]==MOUSEOFF) { eval(pf +'mouseoff=('+pf+'mouseoff==0) ? 1 : 0'); v=ar[i+1]; if (pf != 'ol_' && eval(pf+'mouseoff') && typeof v == 'number' && (v < pmStart || v > pmUpper)) olHideDelay=ar[++i]; continue; }
			if (ar[i]==CLOSETITLE) { eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]==CSSOFF||ar[i]==CSSCLASS) { eval(pf+'css='+ar[i]); continue; }
			if (ar[i]==COMPATMODE) { eval(pf+'compatmode=('+pf+'compatmode==0) ? 1 : 0'); continue; }
			if (ar[i]==FGCLASS) { eval(pf+'fgclass="'+ar[++i]+'"'); continue; }
			if (ar[i]==BGCLASS) { eval(pf+'bgclass="'+ar[++i]+'"'); continue; }
			if (ar[i]==TEXTFONTCLASS) { eval(pf+'textfontclass="'+ar[++i]+'"'); continue; }
			if (ar[i]==CAPTIONFONTCLASS) { eval(pf+'captionfontclass="'+ar[++i]+'"'); continue; }
			if (ar[i]==CLOSEFONTCLASS) { eval(pf+'closefontclass="'+ar[++i]+'"'); continue; }
			i = parseCmdLine(pf, i, ar);
		}
	}

	if (fnMark && o3_function) o3_text = o3_function();
	
	if ((pf == 'o3_') && o3_wrap) {
		o3_width = 0;
		
		var tReg=/<.*\n*>/ig;
		if (!tReg.test(o3_text)) o3_text = o3_text.replace(/[ ]+/g, '&nbsp;');
		if (!tReg.test(o3_cap))o3_cap = o3_cap.replace(/[ ]+/g, '&nbsp;');
	}
	if ((pf == 'o3_') && o3_sticky) {
		if (!o3_close && (o3_frame != ol_frame)) o3_close = ol_close;
		if (o3_mouseoff && (o3_frame == ol_frame)) opt_NOCLOSE(' ');
	}
}


////////
// LAYER FUNCTIONS
////////

// Writes to a layer
function layerWrite(txt) {
	txt += "\n";
	if (olNs4) {
		var lyr = o3_frame.document.layers['overDiv'].document
		lyr.write(txt)
		lyr.close()
	} else if (typeof over.innerHTML != 'undefined') {
		if (olIe5 && isMac) over.innerHTML = '';
		over.innerHTML = txt;
	} else {
		range = o3_frame.document.createRange();
		range.setStartAfter(over);
		domfrag = range.createContextualFragment(txt);
		
		while (over.hasChildNodes()) {
			over.removeChild(over.lastChild);
		}
		
		over.appendChild(domfrag);
	}
}

// Make an object visible
function showObject(obj) {
	runHook("showObject", FBEFORE);

	var theObj=(olNs4 ? obj : obj.style);
	theObj.visibility = 'visible';

	runHook("showObject", FAFTER);
}

// Hides an object
function hideObject(obj) {
	runHook("hideObject", FBEFORE);

	var theObj=(olNs4 ? obj : obj.style);
	if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=0; }
	theObj.visibility = 'hidden';
	theObj.top = theObj.left = ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 ? 'px' : 0);

	if (o3_timerid > 0) clearTimeout(o3_timerid);
	if (o3_delayid > 0) clearTimeout(o3_delayid);

	o3_timerid = 0;
	o3_delayid = 0;
	self.status = "";

	if (obj.onmouseout||obj.onmouseover) {
		if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER);
		obj.onmouseout = obj.onmouseover = null;
	}

	runHook("hideObject", FAFTER);
}

// Move a layer
function repositionTo(obj, xL, yL) {
	var theObj=(olNs4 ? obj : obj.style);
	theObj.left = xL + (!olNs4 ? 'px' : 0);
	theObj.top = yL + (!olNs4 ? 'px' : 0);
}

// Check position of cursor relative to overDiv DIVision; mouseOut function
function cursorOff() {
	var left = parseInt(over.style.left);
	var top = parseInt(over.style.top);
	var right = left + (over.offsetWidth >= parseInt(o3_width) ? over.offsetWidth : parseInt(o3_width));
	var bottom = top + (over.offsetHeight >= o3_aboveheight ? over.offsetHeight : o3_aboveheight);

	if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return true;

	return false;
}


////////
// COMMAND FUNCTIONS
////////

// Calls callme or the default function.
function opt_FUNCTION(callme) {
	o3_text = (callme ? (typeof callme=='string' ? (/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : (o3_function ? o3_function() : 'No Function'));

	return 0;
}

// Handle hovering
function opt_NOCLOSE(unused) {
	if (!unused) o3_close = "";

	if (olNs4) {
		over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER);
		over.onmouseover = function () { if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid = 0; } }
		over.onmouseout = function (e) { if (olHideDelay) hideDelay(olHideDelay); else cClick(e); }
	} else {
		over.onmouseover = function () {hoveringSwitch = true; if (o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =0; } }
	}

	return 0;
}

// Function to scan command line arguments for multiples
function opt_MULTIPLEARGS(i, args, parameter) {
  var k=i, re, pV, str='';

  for(k=i; k<args.length; k++) {
		if(typeof args[k] == 'number' && args[k]>pmStart) break;
		str += args[k] + ',';
	}
	if (str) str = str.substring(0,--str.length);

	k--;  // reduce by one so the for loop this is in works correctly
	pV=(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str;
	eval(parameter + '="' + pV + '"');

	return k;
}

// Remove &nbsp; in texts when done.
function nbspCleanup() {
	if (o3_wrap) {
		o3_text = o3_text.replace(/\&nbsp;/g, ' ');
		o3_cap = o3_cap.replace(/\&nbsp;/g, ' ');
	}
}

// Escape embedded single quotes in text strings
function escSglQuote(str) {
  return str.toString().replace(/'/g,"\\'");
}

// Onload handler for window onload event
function OLonLoad_handler(e) {
	var re = /\w+\(.*\)[;\s]+/g, olre = /overlib\(|nd\(|cClick\(/, fn, l, i;

	if(!olLoaded) olLoaded=1;

  // Remove it for Gecko based browsers
	if(window.removeEventListener && e.eventPhase == 3) window.removeEventListener("load",OLonLoad_handler,false);
	else if(window.detachEvent) { // and for IE and Opera 4.x but execute calls to overlib, nd, or cClick()
		window.detachEvent("onload",OLonLoad_handler);
		var fN = document.body.getAttribute('onload');
		if (fN) {
			fN=fN.toString().match(re);
			if (fN && fN.length) {
				for (i=0; i<fN.length; i++) {
					if (/anonymous/.test(fN[i])) continue;
					while((l=fN[i].search(/\)[;\s]+/)) != -1) {
						fn=fN[i].substring(0,l+1);
						fN[i] = fN[i].substring(l+2);
						if (olre.test(fn)) eval(fn);
					}
				}
			}
		}
	}
}

// Wraps strings in Layer Generation Functions with the correct tags
//    endWrap true(if end tag) or false if start tag
//    fontSizeStr - font size string such as '1' or '10px'
//    whichString is being wrapped -- 'text', 'caption', or 'close'
function wrapStr(endWrap,fontSizeStr,whichString) {
	var fontStr, fontColor, isClose=((whichString=='close') ? 1 : 0), hasDims=/[%\-a-z]+$/.test(fontSizeStr);
	fontSizeStr = (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr;
	if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : '</div>') : '</font>';
	else {
		fontStr='o3_'+whichString+'font';
		fontColor='o3_'+((whichString=='caption')? 'cap' : whichString)+'color';
		return (hasDims&&!olNs4) ? (isClose ? '<span style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">' : '<div style="font-family: '+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; font-size: '+fontSizeStr+';">') : '<font face="'+eval(fontStr)+'" color="'+eval(fontColor)+'" size="'+(parseInt(fontSizeStr)>7 ? '7' : fontSizeStr)+'">';
	}
}

// Quotes Multi word font names; needed for CSS Standards adherence in font-family
function quoteMultiNameFonts(theFont) {
	var v, pM=theFont.split(',');
	for (var i=0; i<pM.length; i++) {
		v=pM[i];
		v=v.replace(/^\s+/,'').replace(/\s+$/,'');
		if(/\s/.test(v) && !/['"]/.test(v)) {
			v="\'"+v+"\'";
			pM[i]=v;
		}
	}
	return pM.join();
}

// dummy function which will be overridden 
function isExclusive(args) {
	return false;
}

// Sets cellpadding style string value
function setCellPadStr(parameter) {
	var Str='', j=0, ary = new Array(), top, bottom, left, right;

	Str+='padding: ';
	ary=parameter.replace(/\s+/g,'').split(',');

	switch(ary.length) {
		case 2:
			top=bottom=ary[j];
			left=right=ary[++j];
			break;
		case 3:
			top=ary[j];
			left=right=ary[++j];
			bottom=ary[++j];
			break;
		case 4:
			top=ary[j];
			right=ary[++j];
			bottom=ary[++j];
			left=ary[++j];
			break;
	}

	Str+= ((ary.length==1) ? ary[0] + 'px;' : top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px;');

	return Str;
}

// function will delay close by time milliseconds
function hideDelay(time) {
	if (time&&!o3_delay) {
		if (o3_timerid > 0) clearTimeout(o3_timerid);

		o3_timerid=setTimeout("cClick()",(o3_timeout=time));
	}
}

// Was originally in the placeLayer() routine; separated out for future ease
function horizontalPlacement(browserWidth, horizontalScrollAmount, widthFix) {
	var placeX, iwidth=browserWidth, winoffset=horizontalScrollAmount;
	var parsedWidth = parseInt(o3_width);

	if (o3_fixx > -1 || o3_relx != null) {
		// Fixed position
		placeX=(o3_relx != null ? ( o3_relx < 0 ? winoffset +o3_relx+ iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx);
	} else {  
		// If HAUTO, decide what to use.
		if (o3_hauto == 1) {
			if ((o3_x - winoffset) > (iwidth / 2)) {
				o3_hpos = LEFT;
			} else {
				o3_hpos = RIGHT;
			}
		}  		

		// From mouse
		if (o3_hpos == CENTER) { // Center
			placeX = o3_x+o3_offsetx-(parsedWidth/2);

			if (placeX < winoffset) placeX = winoffset;
		}

		if (o3_hpos == RIGHT) { // Right
			placeX = o3_x+o3_offsetx;
			
			if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) {
				placeX = iwidth+winoffset - parsedWidth - widthFix;
				if (placeX < 0) placeX = 0;
			}		
			
		}
		if (o3_hpos == LEFT) { // Left
			placeX = o3_x-o3_offsetx-parsedWidth;
			if (placeX < winoffset) placeX = winoffset;
		}  	
			
		// Snapping!
		if (o3_snapx > 1) {
			var snapping = placeX % o3_snapx;

			if (o3_hpos == LEFT) {
				placeX = placeX - (o3_snapx+snapping);
			} else {
				// CENTER and RIGHT
				placeX = placeX+(o3_snapx - snapping);
			}

			if (placeX < winoffset) placeX = winoffset;
		}
	}		

	/*
	if(placeX-winoffset>(browserWidth/2)+150)
	{		
		alert(browserWidth);
		alert(placeX);
		placeX =  browserWidth-400;			
	}
	*/

	if((placeX+400)>browserWidth)
	{			
		placeX =  placeX-400;			
	}


	return placeX;
}

// was originally in the placeLayer() routine; separated out for future ease
function verticalPlacement(browserHeight,verticalScrollAmount) {
	var placeY, iheight=browserHeight, scrolloffset=verticalScrollAmount;
	var parsedHeight=(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 ? over.clip.height : over.offsetHeight));

	if (o3_fixy > -1 || o3_rely != null) {
		// Fixed position
		placeY=(o3_rely != null ? (o3_rely < 0 ? scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : o3_fixy);
	} else {
		// If VAUTO, decide what to use.
		if (o3_vauto == 1) {
			if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos == BELOW && (o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) {
				o3_vpos = ABOVE;
			} else if (o3_vpos == ABOVE && (o3_y - (parsedHeight + o3_offsety) - scrolloffset < 0)) {
				o3_vpos = BELOW;
			}
		}

		// From mouse
		if (o3_vpos == ABOVE) {
			if (o3_aboveheight == 0) o3_aboveheight = parsedHeight; 

			placeY = o3_y - (o3_aboveheight+o3_offsety);
			if (placeY < scrolloffset) placeY = scrolloffset;
		} else {
			// BELOW
			placeY = o3_y+o3_offsety;
		} 

		// Snapping!
		if (o3_snapy > 1) {
			var snapping = placeY % o3_snapy;  			

			if (o3_aboveheight > 0 && o3_vpos == ABOVE) {
				placeY = placeY - (o3_snapy+snapping);
			} else {
				placeY = placeY+(o3_snapy - snapping);
			} 			

			if (placeY < scrolloffset) placeY = scrolloffset;
		}
	}
	
	if(placeY-scrolloffset >= 170)
	{	
		//alert(scrolloffset);
		//alert(placeY);
		Newnum = placeY-scrolloffset;
		placeY =  scrolloffset+60;			
	}
	
	
	return placeY;
}

// checks positioning flags
function checkPositionFlags() {
	if (olHautoFlag) olHautoFlag = o3_hauto=0;
	if (olVautoFlag) olVautoFlag = o3_vauto=0;
	return true;
}

// get Browser window width
function windowWidth() {
	var w;
	if (o3_frame.innerWidth) w=o3_frame.innerWidth;
	else if (eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) 
		w=eval('o3_frame.'+docRoot+'.clientWidth');
	return w;			
}

// create the div container for popup content if it doesn't exist
function createDivContainer(id,frm,zValue) {
	id = (id || 'overDiv'), frm = (frm || o3_frame), zValue = (zValue || 1000);
	var objRef, divContainer = layerReference(id);

	if (divContainer == null) {
		if (olNs4) {
			divContainer = frm.document.layers[id] = new Layer(window.innerWidth, frm);
			objRef = divContainer;
		} else {
			var body = (olIe4 ? frm.document.all.tags('BODY')[0] : frm.document.getElementsByTagName("BODY")[0]);
			if (olIe4&&!document.getElementById) {
				body.insertAdjacentHTML("beforeEnd",'<div id="'+id+'"></div>');
				divContainer=layerReference(id);
			} else {
				divContainer = frm.document.createElement("DIV");
				divContainer.id = id;
				body.appendChild(divContainer);
			}
			objRef = divContainer.style;
		}

		objRef.position = 'absolute';
		objRef.visibility = 'hidden';
		objRef.zIndex = zValue;
		if (olIe4&&!olOp) objRef.left = objRef.top = '0px';
		else objRef.left = objRef.top =  -10000 + (!olNs4 ? 'px' : 0);
	}

	return divContainer;
}

// get reference to a layer with ID=id
function layerReference(id) {
	return (olNs4 ? o3_frame.document.layers[id] : (document.all ? o3_frame.document.all[id] : o3_frame.document.getElementById(id)));
}
////////
//  UTILITY FUNCTIONS
////////

// Checks if something is a function.
function isFunction(fnRef) {
	var rtn = true;

	if (typeof fnRef == 'object') {
		for (var i = 0; i < fnRef.length; i++) {
			if (typeof fnRef[i]=='function') continue;
			rtn = false;
			break;
		}
	} else if (typeof fnRef != 'function') {
		rtn = false;
	}
	
	return rtn;
}

// Converts an array into an argument string for use in eval.
function argToString(array, strtInd, argName) {
	var jS = strtInd, aS = '', ar = array;
	argName=(argName ? argName : 'ar');
	
	if (ar.length > jS) {
		for (var k = jS; k < ar.length; k++) aS += argName+'['+k+'], ';
		aS = aS.substring(0, aS.length-2);
	}
	
	return aS;
}

// Places a hook in the correct position in a hook point.
function reOrder(hookPt, fnRef, order) {
	var newPt = new Array(), match, i, j;

	if (!order || typeof order == 'undefined' || typeof order == 'number') return hookPt;
	
	if (typeof order=='function') {
		if (typeof fnRef=='object') {
			newPt = newPt.concat(fnRef);
		} else {
			newPt[newPt.length++]=fnRef;
		}
		
		for (i = 0; i < hookPt.length; i++) {
			match = false;
			if (typeof fnRef == 'function' && hookPt[i] == fnRef) {
				continue;
			} else {
				for(j = 0; j < fnRef.length; j++) if (hookPt[i] == fnRef[j]) {
					match = true;
					break;
				}
			}
			if (!match) newPt[newPt.length++] = hookPt[i];
		}

		newPt[newPt.length++] = order;

	} else if (typeof order == 'object') {
		if (typeof fnRef == 'object') {
			newPt = newPt.concat(fnRef);
		} else {
			newPt[newPt.length++] = fnRef;
		}
		
		for (j = 0; j < hookPt.length; j++) {
			match = false;
			if (typeof fnRef == 'function' && hookPt[j] == fnRef) {
				continue;
			} else {
				for (i = 0; i < fnRef.length; i++) if (hookPt[j] == fnRef[i]) {
					match = true;
					break;
				}
			}
			if (!match) newPt[newPt.length++]=hookPt[j];
		}

		for (i = 0; i < newPt.length; i++) hookPt[i] = newPt[i];
		newPt.length = 0;
		
		for (j = 0; j < hookPt.length; j++) {
			match = false;
			for (i = 0; i < order.length; i++) {
				if (hookPt[j] == order[i]) {
					match = true;
					break;
				}
			}
			if (!match) newPt[newPt.length++] = hookPt[j];
		}
		newPt = newPt.concat(order);
	}

	hookPt = newPt;

	return hookPt;
}

////////
//  PLUGIN ACTIVATION FUNCTIONS
////////

// Runs plugin functions to set runtime variables.
function setRunTimeVariables(){
	if (typeof runTime != 'undefined' && runTime.length) {
		for (var k = 0; k < runTime.length; k++) {
			runTime[k]();
		}
	}
}

// Runs plugin functions to parse commands.
function parseCmdLine(pf, i, args) {
	if (typeof cmdLine != 'undefined' && cmdLine.length) { 
		for (var k = 0; k < cmdLine.length; k++) { 
			var j = cmdLine[k](pf, i, args);
			if (j >- 1) {
				i = j;
				break;
			}
		}
	}

	return i;
}

// Runs plugin functions to do things after parse.
function postParseChecks(pf,args){
	if (typeof postParse != 'undefined' && postParse.length) {
		for (var k = 0; k < postParse.length; k++) {
			if (postParse[k](pf,args)) continue;
			return false;  // end now since have an error
		}
	}
	return true;
}


////////
//  PLUGIN REGISTRATION FUNCTIONS
////////

// Registers commands and creates constants.
function registerCommands(cmdStr) {
	if (typeof cmdStr!='string') return;

	var pM = cmdStr.split(',');
	pms = pms.concat(pM);

	for (var i = 0; i< pM.length; i++) {
		eval(pM[i].toUpperCase()+'='+pmCount++);
	}
}

// Registers no-parameter commands
function registerNoParameterCommands(cmdStr) {
	if (!cmdStr && typeof cmdStr != 'string') return;
	pmt=(!pmt) ? cmdStr : pmt + ',' + cmdStr;
}

// Register a function to hook at a certain point.
function registerHook(fnHookTo, fnRef, hookType, optPm) {
	var hookPt, last = typeof optPm;
	
	if (fnHookTo == 'plgIn'||fnHookTo == 'postParse') return;
	if (typeof hookPts[fnHookTo] == 'undefined') hookPts[fnHookTo] = new FunctionReference();

	hookPt = hookPts[fnHookTo];

	if (hookType != null) {
		if (hookType == FREPLACE) {
			hookPt.ovload = fnRef;  // replace normal overlib routine
			if (fnHookTo.indexOf('ol_content_') > -1) hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; 

		} else if (hookType == FBEFORE || hookType == FAFTER) {
			var hookPt=(hookType == 1 ? hookPt.before : hookPt.after);

			if (typeof fnRef == 'object') {
				hookPt = hookPt.concat(fnRef);
			} else {
				hookPt[hookPt.length++] = fnRef;
			}

			if (optPm) hookPt = reOrder(hookPt, fnRef, optPm);

		} else if (hookType == FALTERNATE) {
			if (last=='number') hookPt.alt[pms[optPm-1-pmStart]] = fnRef;
		} else if (hookType == FCHAIN) {
			hookPt = hookPt.chain; 
			if (typeof fnRef=='object') hookPt=hookPt.concat(fnRef); // add other functions 
			else hookPt[hookPt.length++]=fnRef;
		}

		return;
	}
}

// Register a function that will set runtime variables.
function registerRunTimeFunction(fn) {
	if (isFunction(fn)) {
		if (typeof fn == 'object') {
			runTime = runTime.concat(fn);
		} else {
			runTime[runTime.length++] = fn;
		}
	}
}

// Register a function that will handle command parsing.
function registerCmdLineFunction(fn){
	if (isFunction(fn)) {
		if (typeof fn == 'object') {
			cmdLine = cmdLine.concat(fn);
		} else {
			cmdLine[cmdLine.length++] = fn;
		}
	}
}

// Register a function that does things after command parsing. 
function registerPostParseFunction(fn){
	if (isFunction(fn)) {
		if (typeof fn == 'object') {
			postParse = postParse.concat(fn);
		} else {
			postParse[postParse.length++] = fn;
		}
	}
}

////////
//  PLUGIN REGISTRATION FUNCTIONS
////////

// Runs any hooks registered.
function runHook(fnHookTo, hookType) {
	var l = hookPts[fnHookTo], k, rtnVal = null, optPm, arS, ar = runHook.arguments;

	if (hookType == FREPLACE) {
		arS = argToString(ar, 2);

		if (typeof l == 'undefined' || !(l = l.ovload)) rtnVal = eval(fnHookTo+'('+arS+')');
		else rtnVal = eval('l('+arS+')');

	} else if (hookType == FBEFORE || hookType == FAFTER) {
		if (typeof l != 'undefined') {
			l=(hookType == 1 ? l.before : l.after);
	
			if (l.length) {
				arS = argToString(ar, 2);
				for (var k = 0; k < l.length; k++) eval('l[k]('+arS+')');
			}
		}
	} else if (hookType == FALTERNATE) {
		optPm = ar[2];
		arS = argToString(ar, 3);

		if (typeof l == 'undefined' || (l = l.alt[pms[optPm-1-pmStart]]) == 'undefined') {
			rtnVal = eval(fnHookTo+'('+arS+')');
		} else {
			rtnVal = eval('l('+arS+')');
		}
	} else if (hookType == FCHAIN) {
		arS=argToString(ar,2);
		l=l.chain;

		for (k=l.length; k > 0; k--) if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0)) break;
	}

	return rtnVal;
}

////////
// OBJECT CONSTRUCTORS
////////

// Object for handling hooks.
function FunctionReference() {
	this.ovload = null;
	this.before = new Array();
	this.after = new Array();
	this.alt = new Array();
	this.chain = new Array();
}

// Object for simple access to the overLIB version used.
// Examples: simpleversion:351 major:3 minor:5 revision:1
function Info(version, prerelease) {
	this.version = version;
	this.prerelease = prerelease;

	this.simpleversion = Math.round(this.version*100);
	this.major = parseInt(this.simpleversion / 100);
	this.minor = parseInt(this.simpleversion / 10) - this.major * 10;
	this.revision = parseInt(this.simpleversion) - this.major * 100 - this.minor * 10;
	this.meets = meets;
}

// checks for Core Version required
function meets(reqdVersion) {
	return (!reqdVersion) ? false : this.simpleversion >= Math.round(100*parseFloat(reqdVersion));
}


////////
// STANDARD REGISTRATIONS
////////
registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSOFF);
registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSOFF);
registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSOFF);
registerHook("ol_content_simple", ol_content_simple, FALTERNATE, CSSCLASS);
registerHook("ol_content_caption", ol_content_caption, FALTERNATE, CSSCLASS);
registerHook("ol_content_background", ol_content_background, FALTERNATE, CSSCLASS);
registerPostParseFunction(checkPositionFlags);
registerHook("hideObject", nbspCleanup, FAFTER);
registerHook("horizontalPlacement", horizontalPlacement, FCHAIN);
registerHook("verticalPlacement", verticalPlacement, FCHAIN);
if (olNs4||(olIe5&&isMac)||olKq) olLoaded=1;
registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
///////
// ESTABLISH MOUSECAPTURING
///////

// Capture events, alt. diffuses the overlib function.
var olCheckMouseCapture=true;
if ((olNs4 || olNs6 || olIe4)) {
	olMouseCapture();
} else {
	overlib = no_overlib;
	nd = no_overlib;
	ver3fix = true;
}




/*
  -------------------------------------------------------------------------
		      JavaScript Form Validator
              Version 5.0
              Part of Simfatic Forms software
					
	Copyright (C) 2003-2007 Simfatic Solutions. All rights reserved.
    This javascript code is installed as part of Simfatic Forms software.
	You may adapt this script for your own needs, provided these opening credit
    lines (down to the lower dividing line) are kept intact.
    You may not reprint or redistribute this code without permission from 
    Simfatic Solutions.
	http://www.simfatic.com/
    -------------------------------------------------------------------------  
*/

function Validator(frmname)
{
	this.validate_on_killfocus=false;
    this.formobj=document.forms[frmname];
	if(!this.formobj)
	{
	  alert("Error: couldnot get Form object "+frmname);
		return;
	}
	if(this.formobj.onsubmit)
	{
	 this.formobj.old_onsubmit = this.formobj.onsubmit;
	 this.formobj.onsubmit=null;
	}
	else
	{
	 this.formobj.old_onsubmit = null;
	}
	this.formobj._sfm_form_name=frmname;

	this.formobj.onsubmit=form_submit_handler;
	this.addValidation = add_validation;
	this.setAddnlValidationFunction=set_addnl_vfunction;
	this.clearAllValidations = clear_all_validations;
    this.disable_validations = false;
    
    document.error_disp_handler = new sfm_ErrorDisplayHandler();
    
    this.EnableOnPageErrorDisplay=validator_enable_OPED;
    this.show_errors_together=false;
    this.EnableMsgsTogether=sfm_enable_show_msgs_together;
}

function set_addnl_vfunction(functionname)
{
  this.formobj.addnlvalidation = functionname;
}
function sfm_enable_show_msgs_together()
{
    this.show_errors_together=true;
    this.formobj.show_errors_together=true;
}
function clear_all_validations()
{
	for(var itr=0;itr < this.formobj.elements.length;itr++)
	{
		this.formobj.elements[itr].validationset = null;
	}
}
function form_submit_handler()
{
   var bRet = true;
    document.error_disp_handler.clear_msgs();
	for(var itr=0;itr < this.elements.length;itr++)
	{
		if(this.elements[itr].validationset &&
	   !this.elements[itr].validationset.validate())
		{
		  bRet = false;
		}
        if(!bRet && !this.show_errors_together)
        {
          break;
        }
	}
    if(!bRet)
    {
      document.error_disp_handler.FinalShowMsg();
      return false;
    }

	if(this.addnlvalidation)
	{
	  str =" var ret = "+this.addnlvalidation+"()";
	  eval(str);
    if(!ret) return ret;
	}
	return true;
}

function add_validation(itemname,descriptor,errstr)
{
	var condition = null;
	if(arguments.length > 3)
	{
	 condition = arguments[3]; 
	}
	if(!this.formobj)
	{
		alert("Error: The form object is not set properly");
		return;
	}//if
	var itemobj = this.formobj[itemname];

    if(itemobj.length && isNaN(itemobj.selectedIndex) )
    //for radio button; don't do for 'select' item
	{
		itemobj = itemobj[0];
	}	
	if(!itemobj)
	{
		alert("Error: Could not get the input object named: "+itemname);
		return;
	}
	if(true == this.validate_on_killfocus)
	{
	  itemobj.onblur=handle_item_on_killfocus;
	}
	if(!itemobj.validationset)
	{
		itemobj.validationset = new ValidationSet(itemobj,this.show_errors_together);
	}
	itemobj.validationset.add(descriptor,errstr,condition);
    itemobj.validatorobj=this;
}

function handle_item_on_killfocus()
{
    if(this.validatorobj.disable_validations == true)
    {
        /*
            To avoid repeated looping message boxes
        */
        this.validatorobj.disable_validations = false;
        return false;
    }
    
	if(null != this.validationset)
	{
        document.error_disp_handler.clear_msgs();
		if(false == this.validationset.validate())
		{
            document.error_disp_handler.FinalShowMsg();
			return false;
		}
	}
}

function validator_enable_OPED()
{
    document.error_disp_handler.EnableOnPageDisplay();
}

function sfm_ErrorDisplayHandler()
{
  this.msgdisplay = new AlertMsgDisplayer();
  this.EnableOnPageDisplay= edh_EnableOnPageDisplay;
  this.ShowMsg=edh_ShowMsg;
  this.FinalShowMsg=edh_FinalShowMsg;
  this.all_msgs=new Array();
  this.clear_msgs=edh_clear_msgs;
}

function edh_clear_msgs()
{
    this.msgdisplay.clearmsg(this.all_msgs);
    this.all_msgs = new Array();
}

function edh_FinalShowMsg()
{
    this.msgdisplay.showmsg(this.all_msgs);
}

function edh_EnableOnPageDisplay()
{
    this.msgdisplay = new DivMsgDisplayer();
}

function edh_ShowMsg(msg,input_element)
{
   var objmsg = new Array();
   objmsg["input_element"] = input_element;
   objmsg["msg"] =  msg;
   this.all_msgs.push(objmsg);
}

function AlertMsgDisplayer()
{
  this.showmsg = alert_showmsg;
  this.clearmsg=alert_clearmsg;
}

function alert_clearmsg(msgs)
{

}

function alert_showmsg(msgs)
{
    var whole_msg="";
    var first_elmnt=null;
    for(var m in msgs)
    {
        if(null == first_elmnt)
        {
            first_elmnt = msgs[m]["input_element"];
        }
        whole_msg += msgs[m]["msg"] + "\n";
    }
	
    alert(whole_msg);

    if(null != first_elmnt)
    {
        first_elmnt.focus();
    }
}

function sfm_show_error_msg(msg,input_elmt)
{
    document.error_disp_handler.ShowMsg(msg,input_elmt);
}

function DivMsgDisplayer()
{
 this.showmsg=div_showmsg;
 this.clearmsg=div_clearmsg;
}

function div_clearmsg(msgs)
{
    for(var m in msgs)
    {
        var divname = element_div_name(msgs[m]["input_element"]);
        show_div_msg(divname,"");
    }
}

function element_div_name(input_element)
{
  var divname = input_element.form._sfm_form_name + "_" + 
                   input_element.name + "_errorloc";

  divname = divname.replace(/[\[\]]/gi,"");

  return divname;
}

function div_showmsg(msgs)
{
    var whole_msg;
    var first_elmnt=null;
    for(var m in msgs)
    {
        if(null == first_elmnt)
        {
            first_elmnt = msgs[m]["input_element"];
        }
        var divname = element_div_name(msgs[m]["input_element"]);
        show_div_msg(divname,msgs[m]["msg"]);
    }
    if(null != first_elmnt)
    {
        first_elmnt.focus();
    }
}

function show_div_msg(divname,msgstring)
{
	if(document.layers)
	{
		divlayer = document.layers[divname];
        if(!divlayer){return;}
		divlayer.document.open();
		divlayer.document.write(msgstring);
		divlayer.document.close();
	}
	else
	if(document.all)
	{
		divlayer = document.all[divname];
        if(!divlayer){return;}
		divlayer.innerHTML=msgstring;
	}
	else
	if(document.getElementById)
	{
		divlayer = document.getElementById(divname);
        if(!divlayer){return;}
		divlayer.innerHTML =msgstring;
	}
	
	return false;
}

function ValidationDesc(inputitem,desc,error,condition)
{
    this.desc=desc;
	this.error=error;
	this.itemobj = inputitem;
	this.condition = condition;
	this.validate=vdesc_validate;
}
function vdesc_validate()
{
	if(this.condition != null )
	{
		if(!eval(this.condition))
		{
			return true;
		}
	}
	if(!validateInput(this.desc,this.itemobj,this.error))
	{
       this.itemobj.validatorobj.disable_validations=true;
	   this.itemobj.focus();
	   return false;
	}
	
	return true;
}

function ValidationSet(inputitem,msgs_together)
{
    this.vSet=new Array();
	this.add= add_validationdesc;
	this.validate= vset_validate;
	this.itemobj = inputitem;
    this.msgs_together = msgs_together;
}

function add_validationdesc(desc,error,condition)
{
  this.vSet[this.vSet.length]= 
  new ValidationDesc(this.itemobj,desc,error,condition);
}

function vset_validate()
{
    var bRet = true;
    for(var itr=0;itr<this.vSet.length;itr++)
    {
        bRet = bRet && this.vSet[itr].validate();
        if(!bRet && !this.msgs_together)
        {
            break;
        }
    }
    return bRet;
}
/*  checks the validity of an email address entered 
*   returns true or false 
*/ 
function validateEmail(email)
{
    var splitted = email.match("^(.+)@(.+)$");
    if(splitted == null) return false;
    if(splitted[1] != null )
    {
      var regexp_user=/^\"?[\w-_\.]*\"?$/;
      if(splitted[1].match(regexp_user) == null) return false;
    }
    if(splitted[2] != null)
    {
      var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
      if(splitted[2].match(regexp_domain) == null) 
      {
	    var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
	    if(splitted[2].match(regexp_ip) == null) return false;
      }// if
      return true;
    }
return false;
}

function TestComparison(objValue,strCompareElement,strvalidator,strError)
{
   var bRet=true;
   var objCompare=null;
   if(!objValue.form)
   {
      sfm_show_error_msg("Error: No Form object!",objValue);
	  return false
   }
   objCompare = objValue.form.elements[strCompareElement];
   if(!objCompare)
   {
     sfm_show_error_msg("Error: Element with name"+strCompareElement+" not found !",objValue);
     return false;
   }
   if(strvalidator != "eqelmnt" &&
   	  strvalidator != "neelmnt")
   {
      if(isNaN(objValue.value)) 
      { 
        sfm_show_error_msg(objValue.name+": Should be a number ",objValue); 
        return false; 
      }//if 
      if(isNaN(objCompare.value)) 
      { 
        sfm_show_error_msg(objCompare.name+": Should be a number ",objCompare); 
        return false; 
      }//if 	  
   }//if
   var cmpstr="";
   switch(strvalidator)
   {
       case "eqelmnt": 
			{
			   if(objValue.value != objCompare.value)
			   {
 	 		      cmpstr = " should be equal to ";
			      bRet = false;
			   }//if
			   break;
			}//case
		case "ltelmnt":
			{
			if(eval(objValue.value) >= eval(objCompare.value)) 
				{
			       cmpstr =  " should be less than "; 
			       bRet = false;					
				}
			  break;
			}//case
		case "leelmnt":
			{
				if(eval(objValue.value) >  eval(objCompare.value)) 
				{
			       cmpstr =  " should be less than or equal to"; 
			       bRet = false;					
				}
			  break;
			}//case		
		case "gtelmnt":
			{
				if(eval(objValue.value) <=  eval(objCompare.value)) 
				{
			       cmpstr =  " should be greater than"; 
			       bRet = false;					
				}
			  break;
			}//case
		case "geelmnt":
			{
				if(eval(objValue.value) < eval(objCompare.value)) 
				{
			       cmpstr =  " should be greater than or equal to"; 
			       bRet = false;					
				}
			  break;
			}//case
		case "neelmnt":
			{
			   if(objValue.value.length > 0 &&
			     objCompare.value.length > 0 &&
			     objValue.value == objCompare.value)
			   {
 	 		      cmpstr = " should be different from ";
			      bRet = false;
			   }//if
			   break;			
			}			
   }//switch
   if(bRet==false)
   {
      if(!strError || strError.length==0)
	  {
	    strError = objValue.name + cmpstr + objCompare.value; 
	  }//if
	  sfm_show_error_msg(strError,objValue);
   }//if
   return bRet;
}
function TestSelMin(objValue,strMinSel,strError)
{
    var bret = true;
	var objcheck = objValue.form.elements[objValue.name];
	var chkcount =0;
	if(objcheck.length)
	{
		for(var c=0;c < objcheck.length;c++)
		{
		   if(objcheck[c].checked == "1")
		   {
		     chkcount++;
		   }//if
		}//for
	}
	else
	{
	  chkcount = (objcheck.checked == "1")?1:0;
	}
	var minsel = eval(strMinSel);
	if(chkcount < minsel)
	{
		if(!strError || strError.length ==0) 
		{ 
			strError = "Please Select atleast"+minsel+" check boxes for"+objValue.name;  
		}//if                                                               
		sfm_show_error_msg(strError,objValue); 
		bret = false;
	}
	return bret;
}

function IsCheckSelected(objValue,chkValue)
{
    var selected=false;
	var objcheck = objValue.form.elements[objValue.name];
    if(objcheck.length)
	{
		var idxchk=-1;
		for(var c=0;c < objcheck.length;c++)
		{
		   if(objcheck[c].value == chkValue)
		   {
		     idxchk=c;
			 break;
		   }//if
		}//for
		if(idxchk>= 0)
		{
		  if(objcheck[idxchk].checked=="1")
		  {
		    selected=true;
		  }
		}//if
	}
	else
	{
		if(objValue.checked == "1")
		{
			selected=true;
		}//if
	}//else	

	return selected;
}

function TestDontSelectChk(objValue,chkValue,strError)
{
	var pass = true;
	pass = IsCheckSelected(objValue,chkValue)?false:true;

	if(pass==false)
	{
     if(!strError || strError.length ==0) 
        { 
        	strError = "Can't Proceed as you selected "+objValue.name;  
        }//if			  
	  sfm_show_error_msg(strError,objValue);
	  
	}
    return pass;
}

function TestShouldSelectChk(objValue,chkValue,strError)
{
	var pass = true;

	pass = IsCheckSelected(objValue,chkValue)?true:false;

	if(pass==false)
	{
     if(!strError || strError.length ==0) 
        { 
        	strError = "You should select"+objValue.name;  
        }//if			  
	  sfm_show_error_msg(strError,objValue);
	  
	}
    return pass;
}

function TestRequiredInput(objValue,strError)
{
 var ret = true;
    if(eval(objValue.value.length) == 0) 
    { 
       if(!strError || strError.length ==0) 
       { 
         strError = objValue.name + " : Required Field"; 
       }//if 
       sfm_show_error_msg(strError,objValue); 
       ret=false; 
    }//if 
return ret;
}
function TestFileExtension(objValue,cmdvalue,strError)
{
    var ret=false;
    var found=false;

    if(objValue.value.length <= 0)
    {//The 'required' validation is not done here
        return true;
    }

    var extns = cmdvalue.split(";");
    for(var i=0;i < extns.length;i++)
    {
        ext = objValue.value.substr(objValue.value.length - extns[i].length,extns[i].length);
        ext = ext.toLowerCase();
        if(ext == extns[i])
        {
            found=true;break;
        }
    }
    if(!found)
    {
       if(!strError || strError.length ==0) 
       { 
         strError = objValue.name + " allowed file extensions are: "+cmdvalue; 
       }//if 
       sfm_show_error_msg(strError,objValue); 
       ret=false;        
    }
    else
    {
        ret=true;
    }
    return ret;
}
function TestMaxLen(objValue,strMaxLen,strError)
{
 var ret = true;
    if(eval(objValue.value.length) > eval(strMaxLen)) 
    { 
      if(!strError || strError.length ==0) 
      { 
        strError = objValue.name + " : "+ strMaxLen +" characters maximum "; 
      }//if 
      sfm_show_error_msg(strError,objValue); 
      ret = false; 
    }//if 
return ret;
}

function TestMinLen(objValue,strMinLen,strError)
{
 var ret = true;
    if(eval(objValue.value.length) <  eval(strMinLen)) 
    { 
      if(!strError || strError.length ==0) 
      { 
        strError = objValue.name + " : " + strMinLen + " characters minimum  "; 
      }//if               
      sfm_show_error_msg(strError,objValue); 
      ret = false;   
    }//if 
return ret;
}

function TestInputType(objValue,strRegExp,strError,strDefaultError)
{
   var ret = true;

    var charpos = objValue.value.search(strRegExp); 
    if(objValue.value.length > 0 &&  charpos >= 0) 
    { 
     if(!strError || strError.length ==0) 
      { 
        strError = strDefaultError;
      }//if 
      sfm_show_error_msg(strError,objValue); 
      ret = false; 
    }//if 
 return ret;
}

function TestEmail(objValue,strError)
{
var ret = true;
     if(objValue.value.length > 0 && !validateEmail(objValue.value)	 ) 
     { 
       if(!strError || strError.length ==0) 
       { 
          strError = objValue.name+": Enter a valid Email address "; 
       }//if                                               
       sfm_show_error_msg(strError,objValue); 
       ret = false; 
     }//if 
return ret;
}

function TestLessThan(objValue,strLessThan,strError)
{
var ret = true;
	  if(isNaN(objValue.value)) 
	  { 
	    sfm_show_error_msg(objValue.name +": Should be a number ",objValue); 
	    ret = false; 
	  }//if 
	  else
	  if(eval(objValue.value) >=  eval(strLessThan)) 
	  { 
	    if(!strError || strError.length ==0) 
	    { 
	      strError = objValue.name + " : value should be less than "+ strLessThan; 
	    }//if               
	    sfm_show_error_msg(strError,objValue); 
	    ret = false;                 
	   }//if   
return ret;          
}

function TestGreaterThan(objValue,strGreaterThan,strError)
{
var ret = true;
     if(isNaN(objValue.value)) 
     { 
       sfm_show_error_msg(objValue.name+": Should be a number ",objValue); 
       ret = false; 
     }//if 
	 else
     if(eval(objValue.value) <=  eval(strGreaterThan)) 
      { 
        if(!strError || strError.length ==0) 
        { 
          strError = objValue.name + " : value should be greater than "+ strGreaterThan; 
        }//if               
        sfm_show_error_msg(strError,objValue);  
        ret = false;
      }//if  
return ret;           
}

function TestRegExp(objValue,strRegExp,strError)
{
var ret = true;
    if( objValue.value.length > 0 && 
        !objValue.value.match(strRegExp) ) 
    { 
      if(!strError || strError.length ==0) 
      { 
        strError = objValue.name+": Invalid characters found "; 
      }//if                                                               
      sfm_show_error_msg(strError,objValue); 
      ret = false;                   
    }//if 
return ret;
}
function TestDontSelect(objValue,dont_sel_value,strError)
{
var ret = true;
     if(objValue.value == null) 
     { 
       sfm_show_error_msg("Error: dontselect command for non-select Item",objValue); 
       ret = false; 
     } 
	 else
     if(objValue.value == dont_sel_value) 
     { 
      if(!strError || strError.length ==0) 
       { 
        strError = objValue.name+": Please Select one option "; 
       }//if                                                               
       sfm_show_error_msg(strError,objValue); 
       ret =  false;                                   
      } 
return ret;
}

function TestSelectOneRadio(objValue,strError)
{
	var objradio = objValue.form.elements[objValue.name];
	var one_selected=false;
	for(var r=0;r < objradio.length;r++)
	{
	  if(objradio[r].checked == "1")
	  {
	  	one_selected=true;
		break;
	  }
	}
	if(false == one_selected)
	{
      if(!strError || strError.length ==0) 
       {
	    strError = "Please select one option from "+objValue.name;
	   }	
	  sfm_show_error_msg(strError,objValue);
	}
return one_selected;
}

function TestSelectRadio(objValue,cmdvalue,strError,testselect)
{
	var objradio = objValue.form.elements[objValue.name];
	var selected=false;
    
	for(var r=0;r < objradio.length;r++)
	{
	  if(objradio[r].value == cmdvalue && objradio[r].checked == "1")
	  {
	  	selected=true;
		break;
	  }
	}
	if(testselect==true && false == selected || 
       testselect==false && true == selected)
	{
	    sfm_show_error_msg(strError,objValue);
        return false;
	}
return true;
}

//*  Checks each field in a form 
function validateInput(strValidateStr,objValue,strError) 
{ 

    var ret = true;
    var epos = strValidateStr.search("="); 
    var  command  = ""; 
    var  cmdvalue = ""; 
    if(epos >= 0) 
    { 
     command  = strValidateStr.substring(0,epos); 
     cmdvalue = strValidateStr.substr(epos+1); 
    } 
    else 
    { 
     command = strValidateStr; 
    } 
	
    switch(command) 
    { 
        case "req": 
        case "required": 
         { 
		   ret = TestRequiredInput(objValue,strError)
           break;             
         }
        case "maxlength": 
        case "maxlen": 
          { 
			 ret = TestMaxLen(objValue,cmdvalue,strError)
             break; 
          }
        case "minlength": 
        case "minlen": 
           { 
			 ret = TestMinLen(objValue,cmdvalue,strError)
             break; 
           }
        case "alnum": 
        case "alphanumeric": 
           { 
				ret = TestInputType(objValue,"[^A-Za-z0-9]",strError, 
						objValue.name+": Only alpha-numeric characters allowed ");
				break; 
           }
        case "alnum_s": 
        case "alphanumeric_space": 
           { 
				ret = TestInputType(objValue,"[^A-Za-z0-9\\s]",strError, 
						objValue.name+": Only alpha-numeric characters and space allowed ");
				break; 
           }		   
        case "num": 
        case "numeric": 
           { 
                ret = TestInputType(objValue,"[^0-9]",strError, 
						objValue.name+": Only digits allowed ");
                break;               
           }
        case "alphabetic": 
        case "alpha": 
           { 
                ret = TestInputType(objValue,"[^A-Za-z]",strError, 
						objValue.name+": Only alphabetic characters allowed ");
                break; 
           }
        case "alphabetic_space": 
        case "alpha_s": 
           { 
                ret = TestInputType(objValue,"[^A-Za-z\\s]",strError, 
						objValue.name+": Only alphabetic characters and space allowed ");
                break; 
           }
        case "email": 
          { 
			   ret = TestEmail(objValue,strError);
               break; 
          }
        case "lt": 
        case "lessthan": 
         { 
    	      ret = TestLessThan(objValue,cmdvalue,strError);
              break; 
         }
        case "gt": 
        case "greaterthan": 
         { 
			ret = TestGreaterThan(objValue,cmdvalue,strError);
            break; 
         }
        case "regexp": 
         { 
			ret = TestRegExp(objValue,cmdvalue,strError);
           break; 
         }
        case "dontselect": 
         { 
			 ret = TestDontSelect(objValue,cmdvalue,strError)
             break; 
         }
		case "dontselectchk":
		{
			ret = TestDontSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "shouldselchk":
		{
			ret = TestShouldSelectChk(objValue,cmdvalue,strError)
			break;
		}
		case "selmin":
		{
			ret = TestSelMin(objValue,cmdvalue,strError);
			break;
		}
		case "selone":
		{
			ret = TestSelectOneRadio(objValue,strError);
		    break;
		}		 
        case "dontselectradio":
        {
            ret = TestSelectRadio(objValue,cmdvalue,strError,false);
            break;
        }
        case "selectradio":
        {
            ret = TestSelectRadio(objValue,cmdvalue,strError,true);
            break;
        }
		//Comparisons
		case "eqelmnt": 
		case "ltelmnt":
		case "leelmnt":
		case "gtelmnt":
		case "geelmnt":
		case "neelmnt":
		{
		    return TestComparison(objValue,cmdvalue,command,strError);
    		break;
		}
        case "req_file":
        {
           ret = TestRequiredInput(objValue,strError);
           break;
        }
        case "file_extn":
        {
            ret = TestFileExtension(objValue,cmdvalue,strError);
            break;
        }

    }//switch 
    return ret; 
}
function VWZ_IsListItemSelected(listname,value)
{
 for(var i=0;i < listname.options.length;i++)
 {
  if(listname.options[i].selected == true &&
   listname.options[i].value == value) 
   {
     return true;
   }
 }
 return false;
}

function VWZ_IsChecked(objcheck,value)
{
 if(objcheck.length)
 {
     for(var c=0;c < objcheck.length;c++)
     {
       if(objcheck[c].checked == "1" && 
	     objcheck[c].value == value)
       {
        return true; 
       }
     }
 }
 else
 {
  if(objcheck.checked == "1" )
   {
    return true; 
   }    
 }
 return false;
}
/*
	Copyright (C) 2003-2007 Simfatic Solutions . All rights reserved.
*/ 


function lookup(inputString) {
	if(inputString.length == 0) {
		// Hide the suggestion box.
		$('#suggestions').hide();
	} else {
		$.post("/ajaxsearch.php", {queryString: ""+inputString+""}, function(data){
			if(data.length >0) {
				$('#suggestions').show();
				$('#autoSuggestionsList').html(data);
			}
		});
	}
} // lookup

function fill(thisValue) {
	$('#ccp0--minisearch--ccp0--prodsearch--string').val(thisValue);
	setTimeout("$('#suggestions').hide();", 200);
} 

function changeProductSpecification(checkedType){
	if(checkedType == 'select'){
		document.getElementById('Span1').style.display = '';
		document.getElementById('Span2').style.display = '';
		document.getElementById('Span3').style.display = '';		
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1').disabled = true;
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2').disabled = true;
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3').disabled = true;
		document.getElementById('textcheckbox').style.display = '';		
		document.getElementById('selectcheckbox').style.display = 'none';
		document.getElementById('CarFound').checked = false;	
		
		
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1').name = 'selw_field_1_select';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2').name = 'selw_field_2_select';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3').name = 'selw_field_3_select';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1').id = 'ccp0--prodsearch_newnetp--selw_field_1_select';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2').id = 'ccp0--prodsearch_newnetp--selw_field_2_select';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3').id = 'ccp0--prodsearch_newnetp--selw_field_3_select';
		
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1_text').name = 'selw_field_1';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2_text').name = 'selw_field_2';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3_text').name = 'selw_field_3';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1_text').id = 'ccp0--prodsearch_newnetp--selw_field_1';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2_text').id = 'ccp0--prodsearch_newnetp--selw_field_2';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3_text').id = 'ccp0--prodsearch_newnetp--selw_field_3';
		
		
		
		
	}else{
		document.getElementById('Span1').style.display = 'none';
		document.getElementById('Span2').style.display = 'none';
		document.getElementById('Span3').style.display = 'none';
		
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1_select').disabled = false;
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2_select').disabled = false;
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3_select').disabled = false;
		document.getElementById('selectcheckbox').style.display = '';
		document.getElementById('textcheckbox').style.display = 'none';	
		document.getElementById('NoCarFound').checked = false;
		
		
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1').name = 'selw_field_1_text';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2').name = 'selw_field_2_text';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3').name = 'selw_field_3_text';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1').id = 'ccp0--prodsearch_newnetp--selw_field_1_text';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2').id = 'ccp0--prodsearch_newnetp--selw_field_2_text';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3').id = 'ccp0--prodsearch_newnetp--selw_field_3_text';
		
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1_select').name = 'selw_field_1';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2_select').name = 'selw_field_2';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3_select').name = 'selw_field_3';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_1_select').id = 'ccp0--prodsearch_newnetp--selw_field_1';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_2_select').id = 'ccp0--prodsearch_newnetp--selw_field_2';
		document.getElementById('ccp0--prodsearch_newnetp--selw_field_3_select').id = 'ccp0--prodsearch_newnetp--selw_field_3';
		
	}
}





var tooltip=function(){
	var id = 'tt';
	var top = 3;
	var left = 3;
	var maxw = 300;
	var speed = 10;
	var timer = 20;
	var endalpha = 95;
	var alpha = 0;
	var tt,t,c,b,h;
	var ie = document.all ? true : false;
	return{
		show:function(v,w){
			if(tt == null){
				tt = document.createElement('div');
				tt.setAttribute('id',id);
				t = document.createElement('div');
				t.setAttribute('id',id + 'top');
				c = document.createElement('div');
				c.setAttribute('id',id + 'cont');
				b = document.createElement('div');
				b.setAttribute('id',id + 'bot');
				tt.appendChild(t);
				tt.appendChild(c);
				tt.appendChild(b);
				document.body.appendChild(tt);
				tt.style.opacity = 0;
				tt.style.filter = 'alpha(opacity=0)';
				document.onmousemove = this.pos;
			}
			tt.style.display = 'block';
			c.innerHTML = v;
			tt.style.width = w ? w + 'px' : 'auto';
			if(!w && ie){
				t.style.display = 'none';
				b.style.display = 'none';
				tt.style.width = tt.offsetWidth;
				t.style.display = 'block';
				b.style.display = 'block';
			}
			if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
			h = parseInt(tt.offsetHeight) + top;
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(1)},timer);
		},
		pos:function(e){
			var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
			var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
			tt.style.top = (u - h) + 'px';
			tt.style.left = (l + left) + 'px';
		},
		fade:function(d){
			var a = alpha;
			if((a != endalpha && d == 1) || (a != 0 && d == -1)){
				var i = speed;
				if(endalpha - a < speed && d == 1){
					i = endalpha - a;
				}else if(alpha < speed && d == -1){
					i = a;
				}
				alpha = a + (i * d);
				tt.style.opacity = alpha * .01;
				tt.style.filter = 'alpha(opacity=' + alpha + ')';
			}else{
				clearInterval(tt.timer);
				if(d == -1){tt.style.display = 'none'}
			}
		},
		hide:function(){
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
		}
	};
}();


function toggle_visibility(id) {
   var e = document.getElementById(id);
   if(e.style.display == 'block')
      e.style.display = 'none';
   else
      e.style.display = 'block';
}



jQuery(document).ready(function(){

	jQuery(".suggestionsBox").mouseleave(function(){
		omg = setTimeout("jQuery('.suggestionsBox').fadeOut()",1500);
	});
	
	jQuery(".suggestionsBox").mouseenter(function(){
		omg = setTimeout("jQuery('.suggestionsBox').fadeOut()",1500);
		clearTimeout(omg);
	});

});
