var zXml={useActiveX:(typeof ActiveXObject!="undefined"),useDom:document.implementation&&document.implementation.createDocument,useXmlHttp:(typeof XMLHttpRequest!="undefined")};zXml.ARR_XMLHTTP_VERS=["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];zXml.ARR_DOM_VERS=["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0"];function zXmlHttp(){}zXmlHttp.createRequest=function(){if(zXml.useXmlHttp){return new XMLHttpRequest();}else if(zXml.useActiveX){if(!zXml.XMLHTTP_VER){for(var i=0;i<zXml.ARR_XMLHTTP_VERS.length;i++){try{new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]);zXml.XMLHTTP_VER=zXml.ARR_XMLHTTP_VERS[i];break;}catch(oError){;}}}if(zXml.XMLHTTP_VER){return new ActiveXObject(zXml.XMLHTTP_VER);}else{throw new Error("Could not create XML HTTP Request.");}}else{throw new Error("Your browser doesn't support an XML HTTP Request.");}};zXmlHttp.isSupported=function(){return zXml.useXmlHttp||zXml.useActiveX;};function zXmlDom(){}zXmlDom.createDocument=function(){if(zXml.useDom){var oXmlDom=document.implementation.createDocument("","",null);oXmlDom.parseError={valueOf:function(){return this.errorCode;},toString:function(){return this.errorCode.toString()}};oXmlDom.__initError__();oXmlDom.addEventListener("load",function(){this.__checkForErrors__();this.__changeReadyState__(4);},false);return oXmlDom;;}else if(zXml.useActiveX){if(!zXml.DOM_VER){for(var i=0;i<zXml.ARR_DOM_VERS.length;i++){try{new ActiveXObject(zXml.ARR_DOM_VERS[i]);zXml.DOM_VER=zXml.ARR_DOM_VERS[i];break;}catch(oError){;}}}if(zXml.DOM_VER){return new ActiveXObject(zXml.DOM_VER);}else{throw new Error("Could not create XML DOM document.");}}else{throw new Error("Your browser doesn't support an XML DOM document.");}};zXmlDom.isSupported=function(){return zXml.useDom||zXml.useActiveX;};var oMozDocument=null;if(typeof XMLDocument!="undefined"){oMozDocument=XMLDocument;}else if(typeof Document!="undefined"){oMozDocument=Document;}if(oMozDocument&&!window.opera){oMozDocument.prototype.readyState=0;oMozDocument.prototype.onreadystatechange=null;oMozDocument.prototype.__changeReadyState__=function(iReadyState){this.readyState=iReadyState;if(typeof this.onreadystatechange=="function"){this.onreadystatechange();}};oMozDocument.prototype.__initError__=function(){this.parseError.errorCode=0;this.parseError.filepos=-1;this.parseError.line=-1;this.parseError.linepos=-1;this.parseError.reason=null;this.parseError.srcText=null;this.parseError.url=null;};oMozDocument.prototype.__checkForErrors__=function(){if(this.documentElement.tagName=="parsererror"){var reError=/>([\s\S]*?)Location:([\s\S]*?)Line Number(\d+),Column(\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/;reError.test(this.xml);this.parseError.errorCode=-999999;this.parseError.reason=RegExp.$1;this.parseError.url=RegExp.$2;this.parseError.line=parseInt(RegExp.$3);this.parseError.linepos=parseInt(RegExp.$4);this.parseError.srcText=RegExp.$5;}};oMozDocument.prototype.loadXML=function(sXml){this.__initError__();this.__changeReadyState__(1);var oParser=new DOMParser();var oXmlDom=oParser.parseFromString(sXml,"text/xml");while(this.firstChild){this.removeChild(this.firstChild);}for(var i=0;i<oXmlDom.childNodes.length;i++){var oNewNode=this.importNode(oXmlDom.childNodes[i],true);this.appendChild(oNewNode);}this.__checkForErrors__();this.__changeReadyState__(4);};oMozDocument.prototype.__load__=oMozDocument.prototype.load;oMozDocument.prototype.load=function(sURL){this.__initError__();this.__changeReadyState__(1);this.__load__(sURL);};Node.prototype.__defineGetter__("xml",function(){var oSerializer=new XMLSerializer();return oSerializer.serializeToString(this,"text/xml");});Node.prototype.__defineGetter__("text",function(){var sText="";for(var i=0;i<this.childNodes.length;i++){if(this.childNodes[i].hasChildNodes()){sText+=this.childNodes[i].text;}else{sText+=this.childNodes[i].nodeValue;}}return sText;});}function zXslt(){}zXslt.transformToText=function(oXml,oXslt){if(typeof XSLTProcessor!="undefined"){var oProcessor=new XSLTProcessor();oProcessor.importStylesheet(oXslt);var oResultDom=oProcessor.transformToDocument(oXml);var sResult=oResultDom.xml;if(sResult.indexOf("<transformiix:result")>-1){sResult=sResult.substring(sResult.indexOf(">")+1,sResult.lastIndexOf("<"));}return sResult;;}else if(zXml.useActiveX){return oXml.transformNode(oXslt);}else{throw new Error("No XSLT engine found.");}};function zXPath(){}zXPath.selectNodes=function(oRefNode,sXPath,oXmlNs){if(typeof XPathEvaluator!="undefined"){oXmlNs=oXmlNs||{};var nsResolver=function(sPrefix){return oXmlNs[sPrefix];};var oEvaluator=new XPathEvaluator();var oResult=oEvaluator.evaluate(sXPath,oRefNode,nsResolver,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);var aNodes=new Array;if(oResult!=null){var oElement=oResult.iterateNext();while(oElement){aNodes.push(oElement);oElement=oResult.iterateNext();}}return aNodes;}else if(zXml.useActiveX){if(oXmlNs){var sXmlNs="";for(var sProp in oXmlNs){sXmlNs+="xmlns:"+sProp+"=\'"+oXmlNs[sProp]+"\' ";}oRefNode.ownerDocument.setProperty("SelectionNamespaces",sXmlNs);};return oRefNode.selectNodes(sXPath);}else{throw new Error("No XPath engine found.");}};zXPath.selectSingleNode=function(oRefNode,sXPath,oXmlNs){if(typeof XPathEvaluator!="undefined"){;oXmlNs=oXmlNs||{};var nsResolver=function(sPrefix){return oXmlNs[sPrefix];};var oEvaluator=new XPathEvaluator();var oResult=oEvaluator.evaluate(sXPath,oRefNode,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null);if(oResult!=null){return oResult.singleNodeValue;}else{return null;};}else if(zXml.useActiveX){if(oXmlNs){var sXmlNs="";for(var sProp in oXmlNs){sXmlNs+="xmlns:\'"+sProp+"="+oXmlNs[sProp]+"\' ";}oRefNode.ownerDocument.setProperty("SelectionNamespaces",sXmlNs);};return oRefNode.selectSingleNode(sXPath);}else{throw new Error("No XPath engine found.");}};function zXMLSerializer(){}zXMLSerializer.prototype.serializeToString=function(oNode){var sXml="";switch(oNode.nodeType){case 1:sXml="<"+oNode.tagName;for(var i=0;i<oNode.attributes.length;i++){sXml+=" "+oNode.attributes[i].name+"=\""+oNode.attributes[i].value+"\"";}sXml+=">";for(var i=0;i<oNode.childNodes.length;i++){sXml+=this.serializeToString(oNode.childNodes[i]);}sXml+="</"+oNode.tagName+">";break;case 3:sXml=oNode.nodeValue;break;case 4:sXml="<![CDATA["+oNode.nodeValue+"]]>";break;case 7:sXml="<?"+oNode.nodevalue+"?>";break;case 8:sXml="<!--"+oNode.nodevalue+"-->";break;case 9:for(var i=0;i<oNode.childNodes.length;i++){sXml+=this.serializeToString(oNode.childNodes[i]);}break;};return sXml;};

function showhide(id){if (geteleref(id)){obj = geteleref(id);if (obj.style.display == "none"){obj.style.display = "";} else {obj.style.display = "none";}}}
function showhide_button(id,button){if (geteleref(id)){obj = geteleref(id);if (obj.style.display == "none"){obj.style.display = ""; changetext(button,"^");} else {obj.style.display = "none";changetext(button,">");}}}
function changetext(id,text){if (geteleref(id)){obj = geteleref(id);obj.innerHTML=text;}}

var xmlhttp;
var replacediv;
var results=[];
var iresultcount;
var iResultsPerPage=10;
var sSortType="sortlowhighprice";
var iPage;
var iLightBoxInit=0;
var oResultObj;
var bDebugCon;
var PostURI;
var DestDiv;

bDebugCon = 0;

//Setup Results per page
// This allows the program to remember a user's preference and keep it each time they come back
var cResultsPerPage
cResultsPerPage = getCookie("ResultsPerPage");
if (cResultsPerPage!=null && cResultsPerPage!="") {
	setTimeout("setresults(" + cResultsPerPage + ");",1000);
} else {
	setTimeout("setresults(" + iResultsPerPage + ");",1000);
}

var cSortType
cSortType = getCookie("SortType");
if (cSortType!=null && cSortType!="") {
	//alert("Found sort type " + cSortType);
	setTimeout("setsort('" + cSortType + "');",1000);
} else {
	setTimeout("setsort('" + sSortType + "');",1000);
}

function setresults(newnum) {
	var newOResultObject;
	
	setCookie("ResultsPerPage","",-1);
	setCookie("ResultsPerPage",newnum,20);
	
	oResultObj=geteleref("resultschk" + iResultsPerPage);
	newOResultObject=geteleref("resultschk" + newnum);
	
	try {
		oResultObj.style.fontWeight="normal";
		oResultObj.style.color="black";

	}
	catch(e) {	}
	try {
		newOResultObject.style.fontWeight="bold";
		newOResultObject.style.color="#9C0000";
	}
	catch(e) {	}
	
	iResultsPerPage=newnum;
	if (iresultcount > 1) {
		disp_page(1);
	}
	
}
function setsort(sorttype) {
	var newOSortType;
	var oOldSort;
	
	//reset the cookie
	//alert("Setting sorttype to " + sorttype);
	setCookie("SortType","",-1);
	setCookie("SortType",sorttype,20);
	
	//grab the page refs
	oOldSort=geteleref(sSortType);
	newOSortType=geteleref(sorttype);
	
	//change the fonts
	try {
		oOldSort.style.fontWeight="normal";
		oOldSort.style.color="black";
	}
	catch(e) {}
	try {
		newOSortType.style.color="#9C0000";
		newOSortType.style.fontWeight="bold";
	}
	catch(e) {	}
	
	sSortType=sorttype;
	if (iresultcount > 1) {
		autosearch(); 
	}
	
}

function loadurl(type,dest,div,data) {
	xmlhttp=zXmlHttp.createRequest();
	replacediv=div;
	//xmlhttp = new XMLHttpRequest();
	
	//really need a progress system here...
	if (geteleref(div)) {
		geteleref(div).innerHTML = geteleref("progressbox").innerHTML;
	}
	//xmlhttp.open("GET","http://192.168.2.6/Tree-Finder2.asp?action=search",true);
	xmlhttp.open(type,dest,true);
	xmlhttp.onreadystatechange = checkData;
	//alert(data);
	if (data.length > 0) {
		//set this for form
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.send(data);
	} else {
		xmlhttp.send(null);
	}
}
function checkData()
{
	//alert(xmlhttp.readyState);
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {	
	//	if (iLightBoxInit == 0) {
			initLightbox();
			iLightBoxInit=1;
	//	}
		//break results into an array so we can handle pages
		//results=xmlhttp.responseText.split("<!--Break-->");
		results=xmlhttp.responseText.split("<!--Item-->");
		//get the number of results
		iresultcount=(xmlhttp.responseText.split("<!--Item-->").length-1);
		//alert("Found " + iresultcount + " results ");
		disp_page(1);
		//document.getElementById(replacediv).innerHTML = xmlhttp.responseText	
		//enable search button
		searchbut = document.getElementById("searchbut");
		searchbut.disabled=false;
		searchbut = document.getElementById("searchbut2");
		searchbut.disabled=false;
		//alert(xmlhttp.responseText);
	} else {
		//Uncomment below to enable debugging from the server...
	//document.getElementById(replacediv).innerHTML = xmlhttp.responseText;
	}
}
function disp_page(pagenum) {
	var i;
	var divdoc;
	var resultHTML;
	var start;
	iPage=pagenum;
	//alert(iresultcount);
	divdoc=geteleref(replacediv);
	if (iresultcount > 0) {
		//clear innerhtml
		resultHTML=get_tracker("header");
		for (i=(iResultsPerPage*(iPage-1));i<(iResultsPerPage*iPage);i++) {
			if(iresultcount > (i)) {
				resultHTML=resultHTML + results[i];
			}
		}
		resultHTML=resultHTML+get_tracker("footer");
	} else {
		//if (results[0] == "0") {
			resultHTML=geteleref("noresultsbox").innerHTML;
		//} else {
		//	resultHTML=results[0];
		//}
	}
	//Display friendly notification ot user if we have a ton of results
	if (iresultcount > 60) { 
		resultHTML = "<div class='resultsnotice'>Your search returned more than 60 results.  You can use the search bar to the left to narrow your search.</div>" + resultHTML
	}
	divdoc.innerHTML=resultHTML;
	initLightbox();
} //end disp_page

function get_tracker(place) {
	var resultHTML;
	var iHaveDisplayed;
	var DisplayedDots;
	var total;
	
	//alert(iPage);
	if (iresultcount > iResultsPerPage) {
		if ((iResultsPerPage*iPage) > iresultcount) {
			resultHTML="<table style=\"width: 100%;\"><tr><td style=\"width:50%\">Displaying results " 
			+ (iResultsPerPage*(iPage-1)+1) + "-" +  iresultcount + " of " + iresultcount + " results </td>";
		} else {
			resultHTML="<table style=\"width: 100%;\"><tr><td style=\"width:50%\">Displaying results " 
			+ (iResultsPerPage*(iPage-1)+1) + "-" +  (iResultsPerPage*iPage) + " of " + iresultcount + " results </td>";
		}	
	} else {
		resultHTML="<table style=\"width: 100%;\"><tr><td style=\"width:50%\">Displaying " 
		+ iresultcount + " of " + iresultcount + " results </td>";		
	}
	resultHTML=resultHTML + "<td style=\"width: 50%; text-align: right\"> "; 
	if (iPage > 1) {
		if (place == "footer") {
			//use onclick so the browser will go back to top of page
			resultHTML = resultHTML + "<a href=\"#\" onclick=\"javascript:disp_page(" + (iPage-1) + ") \" Title=\"Previous Page\" alt=\"Previous Page\" >< Prev</a>";
		} else {
			resultHTML = resultHTML + "<a href=\"javascript:disp_page(" + (iPage-1) + ") \" Title=\"Previous Page\" alt=\"Previous Page\" >< Prev</a>";
		}
	} else {
		resultHTML = resultHTML + "< Prev";
	}
	
	//Figure out where to start i
	total=Math.ceil(iresultcount/iResultsPerPage);
	if (total > 10) {
		if ((iPage+9) > total) {
			start=total-9;
			
		} else {
			start=iPage-5;
		}
		if (start < 1) {
			start=1;
		}
	} else {
		start=1;
	}
	iHaveDisplayed=0;
	for (i=start;i<=total;i++) {
		if (iHaveDisplayed <= 10) {
			iHaveDisplayed = iHaveDisplayed + 1;
			if (i == iPage ) {
				resultHTML = resultHTML + " <span class=\"cpage\">" + i + "</span>";
			} else {
				if (place == "footer") {
					resultHTML = resultHTML + " " + "<a href=\"#\" Title=\"Page " + i + "\" alt=\"Page " + i + "\" onclick=\"javascript:disp_page(" + i + ")\">" + i + "</a>";
				} else {
					resultHTML = resultHTML + " " + "<a href=\"javascript:disp_page(" + i + ")\" Title=\"Page " + i + "\" alt=\"Page " + i + "\" >" + i + "</a>";
				}
			}
		} else {
			if (DisplayedDots!=1) {
				DisplayedDots=1;
				resultHTML = resultHTML + " " + "<a href=\"#\" Title=\"Page " + i + "\" alt=\"Page " + i + "\" onclick=\"javascript:disp_page(" + i + ")\">...</a>";
			}
		}
	} //end for
	
	if (iPage < Math.ceil(iresultcount/iResultsPerPage) ) {
		if (place == "footer") {
			resultHTML=resultHTML + " <a href=\"#\" onclick=\"javascript:disp_page(" + (iPage+1) + ") \" Title=\"Next Page\" alt=\"Next Page\" >Next ></a>";
		} else {
			resultHTML=resultHTML + " <a href=\"javascript:disp_page(" + (iPage+1) + ") \" Title=\"Next Page\" alt=\"Next Page\" >Next ></a>";
		}
	} else {
		resultHTML=resultHTML + " Next >";
	}
	//alert(iPage);
	resultHTML=resultHTML + "</td></tr>";
	if (place=="header") {
		resultHTML=resultHTML + "<tr><td colspan=\"2\">";
		if (sSortType == "sorthighlowprice") {
			resultHTML = resultHTML + "Results sorted by price high to low (<a href=\"javascript:setsort('sortlowhighprice')\">Sort low to high</a>)"
		} else {
			resultHTML = resultHTML + "Results sorted by price low to high (<a href=\"javascript:setsort('sorthighlowprice')\">Sort high to low</a>)"
		}
		resultHTML = resultHTML + "</td></tr>";
	}
	resultHTML = resultHTML + "</table>"
	return resultHTML;
} //end get_tracker
function searchsimilar(searchstring,dest,div) {
	if (searchstring.length > 1) {
		loadurl("POST",dest,div,"isajax=1&searchstring=" + searchstring);
	} else {
		alert("System error!");
	}
}

function buildsearch() {
	var searchstring="";
	//alert("Sort type " + sSortType);
	if (document.getElementById){
		searchstring="isajax=1";
		form = geteleref("treesearchform");
		searchbut = geteleref("searchbut");
		searchbut.disabled=true;
		searchbut = geteleref("searchbut2");
		searchbut.disabled=true;
		
		for (i=0;i<form.elements.length;i++) {
			if (form.elements[i].type == 'checkbox') {
				searchstring=searchstring + "&" + form.elements[i].name + "=" + ((form.elements[i].checked)? "1" : "0");
			}
		}
		searchstring = searchstring + "&sort=" + sSortType;
		return searchstring;
	}
		
	return searchstring;
}
function dosearch(dest,div) {
	var searchstring=buildsearch();
	if (searchstring.length > 1) {
		PostURI=dest
		DestDiv=div
		loadurl("POST",dest,div,searchstring);
		geteleref("searchbut").value="Search again";
		geteleref("searchbut2").value="Search again";
	} else {
		alert("System error!");
	}
}
function autosearch() {
	dosearch(PostURI,DestDiv);
}

function checkallboxes(allid,strstart) {
	if (geteleref("treesearchform")){	
		form = geteleref("treesearchform");
		for (i=0;i<form.elements.length;i++) {
			if (form.elements[i].type == 'checkbox') {
				if (form.elements[i].name.substring(0,(strstart.length)) == strstart) {
					form.elements[i].disabled=(allid.checked)? true : false;
					form.elements[i].checked = (allid.checked)? true : false;			
				}
			}
		}
	}
}

function geteleref(id) {
	if (document.getElementById){	
		return document.getElementById(id);
	} else {
		return false;
	}
}

function checkhider(db) {
	if (geteleref(db)){	
		var divbox=geteleref(db);
		if (divbox.innerHTML=='&lt;') { divbox.innerHTML=="bob"; } else { divbox.innerHTML=="bob"; }
	}
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=")
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1 
    c_end=document.cookie.indexOf(";",c_start)
    if (c_end==-1) c_end=document.cookie.length
    return unescape(document.cookie.substring(c_start,c_end))
    } 
  }
return ""
}
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}

function showhidebar() {
	var boxleft = geteleref("boxleft");
	var contentbox = geteleref("treeBoxContent");
	var hider=geteleref("hidebar");
	if (boxleft.style.display !="none") {
		boxleft.style.display="none";
		hider.style.width="45px";
		hider.innerHTML="Click to Search"
		contentbox.style.width="93%";
	} else {
		contentbox.style.width="64%";
		boxleft.style.display="block";
		hider.innerHTML="&lt;"
		hider.style.width="10px";
	}
	
}

