// TODO
// 1	fix attachEvent/event.srcElement code for firefox

utils = {
	dates: {
		dtCh:"/",
		minYear:1900,
		maxYear:2100,
		DaysArray:function(n) {
			for (var i = 1; i <= n; i++) {
				this[i] = 31
				if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
				if (i==2) {this[i] = 29}
			} 
			return this
		},
		daysInFebruary:function(year){
			// February has 29 days in any year evenly divisible by four,
			// EXCEPT for centurial years which are not also divisible by 400.
			return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
		},
		stripCharsInBag:function(s, bag){
			var i;
			var returnString = "";
			// Search through string's characters one by one.
			// If character is not in bag, append to returnString.
			for (i = 0; i < s.length; i++) {
				var c = s.charAt(i);
				if (bag.indexOf(c) == -1) returnString += c;
			}
			return returnString;
		},
		isDate:function(dtStr) {
			var daysInMonth = utils.dates.DaysArray(12)
			var pos1=dtStr.indexOf(utils.dates.dtCh)
			var pos2=dtStr.indexOf(utils.dates.dtCh,pos1+1)
			var strDay=dtStr.substring(0,pos1)
			var strMonth=dtStr.substring(pos1+1,pos2)
			var strYear=dtStr.substring(pos2+1)
			strYr=strYear
			if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
			if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
			for (var i = 1; i <= 3; i++) {
				if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
			}
			month=parseInt(strMonth)
			day=parseInt(strDay)
			year=parseInt(strYr)
			if (pos1==-1 || pos2==-1){
				alert("The date format should be : dd/mm/yyyy")
				return false
			}
			if (strMonth.length<1 || month<1 || month>12){
				alert("Please enter a valid month")
				return false
			}
			if (strDay.length<1 || day<1 || day>31 || (month==2 && day>utils.dates.daysInFebruary(year)) || day > daysInMonth[month]){
				alert("Please enter a valid day")
				return false
			}
			if (strYear.length != 4 || year==0 || year<utils.dates.minYear || year>utils.dates.maxYear){
				alert("Please enter a valid 4 digit year between "+utils.dates.minYear+" and "+utils.dates.maxYear)
				return false
			}
			if (dtStr.indexOf(utils.dates.dtCh,pos2+1)!=-1 || utils.isInteger(utils.dates.stripCharsInBag(dtStr, utils.dates.dtCh))==false){
				alert("Please enter a valid date")
				return false
			}
		return true
		}
	},
	ensureNumeric:function(objIn) {
		if (isNaN(objIn.value)) {
			objIn.value = "";
			window.alert("Please fill this field numerically only");
			flashBorder(objIn);
			return false;
		}
		return true;
	},
	isValidUKMobile:function(uMobile) {
		var bRet = false
		if (uMobile && uMobile.length > 4) {
			var re = /^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/i
			if (re.test(uMobile)) { bRet = true }
		}
		return bRet
	},
	isValidUKPhone:function(uPhone) {
		var bRet = false
		if (uPhone && uPhone.length > 4) {
			var re = /^((\(?0\d{4}\)?\s?\d{3}\s?\d{3})|(\(?0\d{3}\)?\s?\d{3}\s?\d{4})|(\(?0\d{2}\)?\s?\d{4}\s?\d{4}))(\s?\#(\d{4}|\d{3}))?$/i
			if (re.test(uPhone)) { bRet = true }
		}
		return bRet
	},
	isValidEmail:function(sEmail) {
		var bRet = false
		if (sEmail && sEmail.length > 4) {
			var re = /^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/i
			if (re.test(sEmail)) { bRet = true }
		}
		return bRet
	},
	isValidPostcode:function(sPostcode) {
		var bRet = false
		if (sPostcode && sPostcode.length > 4) {
			var re = /[a-zA-Z][a-zA-Z]?[0-9][0-9]? ?[0-9][a-zA-Z][a-zA-Z]/i
			if (re.test(sPostcode)) { bRet = true }
		}
		return bRet
	},
	isInteger:function(s) {
		var i;
		for (i = 0; i < s.length; i++){   
			// Check that current character is number.
			var c = s.charAt(i);
			if (((c < "0") || (c > "9"))) return false;
		}
		// All characters are numbers.
		return true;
	},
	popSelect:function(o,a) {
		if (a && o) {
			var el = document.createElement("OPTION")
			el.value = a[0]
			el.innerHTML = a[1]
			o.appendChild(el)
		}
	},
	stripeTable:function(id) {
		var bOdd = true
		var a = $A($(id).childNodes)
		a.each(
			function(oTR) {
				if (bOdd) {				
					Element.addClassName(oTR,"stripedOdd")
				} else {
					Element.addClassName(oTR,"stripedEven")
				}
				bOdd = !bOdd
			}
		)
	},
	formatCurrency:function(num) {
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num))
			num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if(cents<10)
			cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
		return (((sign)?'':'-') + '&pound;' + num + '.' + cents);
	},
	roll:function() {
		if (this.src) {
			var o = this
		} else {
			var o = event.srcElement
		}
		if (o.src.indexOf("-a.") == -1) {
			o.src = o.src.replace(".gif","-a.gif")
			o.src = o.src.replace(".jpg","-a.jpg")
		}
	},
	unroll:function() {
		if (this.src) {
			var o = this			
		} else {
			var o = event.srcElement
		}
		if (o.src.indexOf("-a.") != -1) {
			o.src = o.src.replace("-a.gif",".gif")
			o.src = o.src.replace("-a.jpg",".jpg")
		}
	},
	clearSelect:function(o) {
		if ($(o)) {
			var z = o.childNodes.length
			for (var i=0;i<z;i++) {
				if (!Element.hasClassName(o[0],"permanent")) { o.removeChild(o[0]) }
			}
		}
	},
	attachEvent:function(o,sEventType,oEventFunc) {
		if (window.addEventListener) {
			o.addEventListener(sEventType, oEventFunc, false)
		} else {
			o.attachEvent("on" + sEventType, oEventFunc)
		}
	},
	showResponse:function(oReq) { alert(oReq.responseText) }
}

// creditplus vans object literal - encapsulates all sg client script
cpVans = {
	searchLinkTimer:undefined,
	init:function() {
		cpVans.makeManuSearch()
		cpVans.makeTypeSearch()
		cpVans.makeRollovers()
	},
	preload:function(sURL) { var o = new Image; o.src = sURL },
	makeManuSearch:function() {
		var a = document.getElementsByClassName("searchlink")
		for (i=0;i<a.length;i++) {
			if (!Element.hasClassName(a[i],"typelink")) {
				a[i].eTextLabel = a[i].innerHTML
				a[i].onmouseover = function(event) { cpVans.showLogo(event) }
				a[i].onclick = cpVans.goManu
			}
		}
	},
	makeTypeSearch:function() {
		var a = document.getElementsByClassName("typelink")
		for (i=0;i<a.length;i++) {
			a[i].onmouseover = cpVans.typeRoll
			a[i].onmouseout = cpVans.typeUnroll
		}
	},
	goManu:function() {
		document.location = this.eTextLabel + ".html"	
	},
	typeRoll:function() {
		var o = this.previousSibling
		if (o.childNodes.length > 0) {
			var i = o.childNodes[0]
			if (i.nodeName == "IMG") {
				if (i.src.indexOf("-a.") == -1) {
					i.src = i.src.replace(".gif","-a.gif")
					i.src = i.src.replace(".jpg","-a.jpg")
				}
			}
		}
	},
	typeUnroll:function() {
		var o = this.previousSibling
		if (o.childNodes.length > 0) {
			var i = o.childNodes[0]
			if (i.nodeName == "IMG") {
				if (i.src.indexOf("-a.") != -1) {
					i.src = i.src.replace("-a.gif",".gif")
					i.src = i.src.replace("-a.jpg",".jpg")
				}
			}
		}
	},
	showLogo:function(evt) {
		var e = (window.event) ? window.event : evt
		if (!e) {
			var a = cpVans.showLogo.eLastObject.parentNode
			if (a.eTextLabel) {
				a.innerHTML = a.eTextLabel
				a.style.paddingRight = 5
			}
			return false
		}
		var o = e.srcElement
		if (o) {
			if (o.nodeName == "TD") {
				var i = document.createElement("IMG")
				i.src = "images/" + o.eTextLabel + "_button-a.jpg"
				i.width = 78
				i.height = 33
				o.appendChild(i)
				if (cpVans.searchLinkTimer) { window.clearTimeout(cpVans.searchLinkTimer) }
				cpVans.searchLinkTimer = window.setTimeout(cpVans.showLogo,1000)
				cpVans.showLogo.eLastObject = i
				if (o.childNodes && o.childNodes.length > 0) { o.removeChild(o.childNodes[0]) }
				o.style.paddingRight = 0
				var a = document.getElementsByClassName("searchlink")
				for (z=0;z<a.length;z++) {
					if (a[z].eTextLabel && !e.srcElement.contains(a[z])) {
						a[z].innerHTML = a[z].eTextLabel
						a[z].style.paddingRight = 5
					}
				}
			}
		}
	},
	makeRollovers:function() {
		var a = document.getElementsByClassName("rollover")
		for (i=0;i<a.length;i++) {
			var o = a[i]
			if (o.src.indexOf(".gif") != -1) { cpVans.preload(o.src.replace(".gif","-a.gif")) }
			if (o.src.indexOf(".jpg") != -1) { cpVans.preload(o.src.replace(".jpg","-a.jpg")) }
			utils.attachEvent(o,"mouseover",utils.roll)
			utils.attachEvent(o,"mouseout",utils.unroll)
		}
	},
	usedVanSearch: {
		bInitQS:false,
		init:function() {
			var a = $A(document.getElementsByClassName("vansearchcriteria"))
			a.each(
				function(oNode) {
					if (oNode.nodeName == "SELECT") { utils.attachEvent(oNode, "change", cpVans.usedVanSearch.doSearch) }
					if (oNode.nodeName == "INPUT") { utils.attachEvent(oNode, "keyup", cpVans.usedVanSearch.doSearch) }
				}
			)
			var sURL = "vanmethods.asp"
			var sVals = "method=usedvansearch.getmakes"
			var oAJAX = new Ajax.Request(
				sURL,
				{
					method: "get",
					parameters: sVals,
					onComplete: cpVans.usedVanSearch.popMakes
				}
			)
			if ($("vsMake")) { utils.attachEvent($("vsMake"), "change", cpVans.usedVanSearch.getModels) }
			if ($("tdVanClose")) { utils.attachEvent($("tdVanClose"), "click", cpVans.usedVanSearch.hideDetail) }
			
			cpVans.usedVanSearch.bInitQS = true
			cpVans.usedVanSearch.doSearch()
		},
		doSearch:function(iPageNum) {
			cpVans.usedVanSearch.hideDetail()
			if ($("vansearchresultscontainer")) {
				$("vansearchresultscontainer").style.filter = "alpha(opacity=40)"
			}
			var iResultsPerPage = 10
			var sURL = "vanmethods.asp"
			var sVals = "method=usedvansearch.search&"
			
			if (isNaN(iPageNum)) { iPageNum = 0 }
			
			// prep values
			var aCriteria = $A(document.getElementsByClassName("vansearchcriteria"))
			aCriteria.each(
				function(oNode) {
					if (parseQS()["make"] && cpVans.usedVanSearch.bInitQS && oNode.name == "vsMake" | oNode.name == "vsModel") {
						if (oNode.name == "vsMake") { sVals = sVals + "vsMake=" + parseQS()["make"] + "&" + "" }
						if (oNode.name == "vsModel") { sVals = sVals + "vsModel=" + parseQS()["Model"] + "&" + ""}
					} else {
						sVals = sVals + oNode.name + "=" + $F(oNode) + "&"
					}
				}
			)
			if (sVals.length > 0) { sVals = sVals.substring(0, sVals.length-1) + "&pagenum=" + iPageNum + "&resperpage=" + iResultsPerPage}

			// call ajax method
			var oAJAX = new Ajax.Request(
				sURL,
				{
					method: "get",
					parameters: sVals,
					onComplete: cpVans.usedVanSearch.showResults
				}
			)
			if (cpVans.usedVanSearch.bInitQS) { cpVans.usedVanSearch.bInitQS = false }
		},
		makePageLinks:function(id,PageInfo) {
			var iResults = PageInfo.split("|")[0]
			var iDisplayed = PageInfo.split("|")[1]
			var iCurrentPage = PageInfo.split("|")[2]
			var iPageCount = PageInfo.split("|")[3]
			if ($(id)) {
				var e = $(id)
				var iPagesTotal = iResults/iDisplayed + " "
				if (iPagesTotal.indexOf(".") != -1) {
					iPagesTotal = Math.floor(parseInt(iPagesTotal)) + 1
				}
				e.innerHTML = ""
				if (iPageCount > 10) {
					if (iCurrentPage >= 6) {
						var x = iCurrentPage -5
						if (parseInt(iCurrentPage)+4 > iPageCount) {
							var iShowPages = iPageCount
						} else {
							var iShowPages = parseInt(iCurrentPage) + 4
						}
					} else {
						var x = 1
						var iShowPages = 10
					}
				} else {
					var x = 1
					var iShowPages = iPageCount
				}

				for (i=x;i<=iShowPages;i++) {
					var o = document.createElement("SPAN")
					o.innerHTML = parseInt(i)
					//o.onclick = "cpVans.usedVanSearch.doSearch(" + parseInt(i-1) + ")"  !!
					o.onclick = function() { cpVans.usedVanSearch.doSearch(this.innerHTML-1) }
					Element.addClassName(o,"pagelink")
					if (i == iCurrentPage) {
						Element.addClassName(o,"pagelinkcurrent")
						o.onclick = ""
					}
					e.appendChild(o)
					//e.innerHTML = e.innerHTML
				}
			}
		},
		hideDetail:function(id) {
			if ($("vansearchdetail")) { $("vansearchdetail").style.display = "none" }			
			if ($("vansearchresultscontainer")) { $("vansearchresultscontainer").style.display = "block" }
			if ($("pagelinks")) { $("pagelinks").style.display = "block" }
		},
		showDetail:function(id) {
			if ($("vansearchresultscontainer")) { $("vansearchresultscontainer").style.display = "none" }
			if ($("pagelinks")) { $("pagelinks").style.display = "none" }
			if ($("vansearchdetail")) { $("vansearchdetail").style.display = "block" }

			//var e = event
			//if (e.srcElement.nodeName != "TD") {
			//	var r = e.srcElement.parentNode.parentNode
			//} else {
			//		var r = e.srcElement.parentNode
			//}
			var r = document.getElementById("van" + id)
		
			if (r.vanInfo.indexOf("|") > -1) {
				var a = r.vanInfo.split("|")
				
				$("tdVanImg").innerHTML = ""
				var oImg = document.createElement("IMG")
				if (a[8] != "NONE") {
					oImg.src = a[8]
				} else {
					oImg.src = "images/trans.gif"
				}
				oImg.width = 490
				oImg.height = 324
				oImg.alt = id
				$("tdVanImg").appendChild(oImg)

				$("tdVanTitle").innerHTML = ""
				$("tdVanTitle").innerHTML = a[1] + " " + a[2]

				$("tdVanLogo").innerHTML = ""
				var i = document.createElement("IMG")
				i.src = "images/" + a[1] + "_button-a.jpg"
				i.width = 78
				i.height = 33
				i.alt = a[0]
				$("tdVanLogo").appendChild(i)
				
				$("tdVanDesc").innerHTML = a[6]
				
				var iPrice = "CALL"			
				if (a[5] > 0) { iPrice = utils.formatCurrency(a[5].substr(0,a[5].length-2)) }
				$("spnVanPrice").innerHTML = iPrice
				
				var iMiles = "CALL"
				if (a[3]) {
					if (a[3] > 0 ) { iMiles = a[3] }
				}
				$("tdVanMileage").innerHTML = "Mileage: <strong>" + iMiles + "</strong>"
								
				$("tdVanClose").noWrap = true
			}
		},
		showResults:function(oReq) {
			var el = $("vansearchresults")
			while (el.firstChild) {
				if (el.firstChild) {
					el.removeChild(el.firstChild)
				}
			}
			if (oReq.responseText.length > 0) {
				var aRes = oReq.responseText.split("#!#")
				if (aRes.length > 2) {
					var sPageInfo = aRes.shift()
					aRes.each(
						function(sVan) {
							if (sVan.length > 0) {
								var aVals = sVan.split("|")
								//remove id
								var id = aVals.shift()
								
								var oTR = document.createElement("TR")

								var oTD = document.createElement("TD")
								var oImg = document.createElement("IMG")
								if (aVals[6] != "NONE") {
									oImg.src = aVals[6]
								} else {
									oImg.src = "images/trans.gif"
								}
								oImg.style.border = "dashed 1px silver"
								oImg.width = 85
								oImg.height = 56
								oTD.width = 1
								oTD.appendChild(oImg)
								oTR.appendChild(oTD)

								var oTD = document.createElement("TD")
								oTD.innerHTML = aVals[1]
								oTD.style.paddingLeft = "10px"
								oTR.appendChild(oTD)

								var oTD = document.createElement("TD")
								var vYr = "CALL"
								if (aVals[3] > 1990) { vYr = aVals[3] }
								oTD.innerHTML = vYr
								oTR.appendChild(oTD)

								var oTD = document.createElement("TD")
								var iMiles = "CALL"
								if (aVals[2] > 0) { iMiles = aVals[2] }
								oTD.innerHTML = iMiles
								oTR.appendChild(oTD)

								var oTD = document.createElement("TD")
								var iPrice = "CALL"
								if (aVals[4] > 0) { iPrice = utils.formatCurrency(aVals[4].substr(0,aVals[4].length-2)) }
								oTD.innerHTML = iPrice
								oTD.style.textAlign = "center"
								oTD.style.color = "green"
								oTD.style.fontWeight = "bold"
								oTR.appendChild(oTD)

								var i = document.createElement("IMG")
								i.src = "images/" + aVals[0] + "_button-a.jpg"
								i.width = 78
								i.height = 33
								i.alt = aVals[0]
								i.onclick = "document.location = '" + aVals[0] + ".html'"
								var oTD = document.createElement("TD")
								oTD.appendChild(i)
								oTD.innerHTML = oTD.innerHTML + "<br /><span style='font-size: 10px'>" + aVals[0] + "</span>"
								oTD.style.backgroundColor = "white"
								oTD.style.textAlign = "center"
								oTD.width = 78
								oTR.appendChild(oTD)
								
								$("vansearchresults").appendChild(oTR)
								oTR.id = "van" + id
								oTR.vanID = id
								oTR.vanInfo = sVan
								oTR.onclick = function() { cpVans.usedVanSearch.showDetail(id) }
							}
						}
					)
					utils.stripeTable($("vansearchresults"))
					cpVans.usedVanSearch.makePageLinks(document.getElementById("pagelinks"),sPageInfo)
				} else {
					var oTR = document.createElement("TR")
					var oTD = document.createElement("TD")
					oTD.colSpan = 10
					oTD.innerHTML = "Sorry we can't find any results that match your search. Try loosening your search criteria."
					oTR.appendChild(oTD)
					$("vansearchresults").appendChild(oTR)
					var sPageInfo = aRes.shift()
					cpVans.usedVanSearch.makePageLinks(document.getElementById("pagelinks"),sPageInfo)
				}
			}
			if ($("vansearchresultscontainer")) {
				$("vansearchresultscontainer").style.filter = ""
			}
		},
		getModels:function() {
			if ($("vsModel")) { $("vsModel").value = "" }
			if ($("vsMake") && $("vsModel") && $("vsMake").value.length > 0) {
				var sURL = "vanmethods.asp"
				var sVals = "method=usedvansearch.getmodels&make=" + $("vsMake").value
				var oAJAX = new Ajax.Request(
					sURL,
					{
						method: "get",
						parameters: sVals,
						onComplete: cpVans.usedVanSearch.popModels
					}
				)
			}
		},
		popModels:function(oReq) {
			if (oReq.responseText.length > 0 && $("vsModel")) {
				var a = oReq.responseText.split("#!#")
				$("vsModel").innerHTML = ""
				utils.popSelect($("vsModel"),["","any"])
				for (var i=0;i<a.length;i++) {
					if (a[i].length > 0) {
						utils.popSelect($("vsModel"),[a[i],a[i]])
					}
				}
			}
		},
		popMakes:function(oReq) {
			if (oReq.responseText.length > 0 && $("vsMake")) {
				var a = oReq.responseText.split("#!#")
				for (var i=0;i<a.length;i++) {
					if (a[i].length > 0) {
						utils.popSelect($("vsMake"),[a[i],a[i]])
					}
				}
			}
		}
	},
	vanSearch: {
		init:function() {
			var a = $A(document.getElementsByClassName("vansearchcriteria"))
			a.each(
				function(oNode) {
					if (oNode.nodeName == "SELECT") { utils.attachEvent(oNode, "change", cpVans.vanSearch.doSearch) }
					if (oNode.nodeName == "INPUT") { utils.attachEvent(oNode, "keyup", cpVans.vanSearch.doSearch) }
				}
			)
			var a = $A(document.getElementsByClassName("tablabel"))
			a.each(
				function(oNode) {
					utils.attachEvent(
						oNode, "click", function() {
							cpVans.vanSearch.changePanel(oNode)
						}
					)
				}
			)
			if ($("tdVanClose")) { utils.attachEvent($("tdVanClose"), "click", cpVans.vanSearch.hideDetail) }
			cpVans.vanSearch.doSearch()
		},
		changePanel:function(o,aVan) {
			if (aVan) {
				document.getElementById('tabpanel').vanObject = aVan
			} else {
				aVan = document.getElementById('tabpanel').vanObject
			}
			var a = $A(document.getElementsByClassName("tablabel"))
			a.each(
				function(oNode) {
					if (document.getElementById('tabpanel')) {
						if (oNode == o) {
							Element.addClassName(oNode,"current")
							var sHTML = ""
							if (oNode.innerHTML == "Summary") {
								var sHTML = "<table id='techdata'>"
								sHTML = sHTML + "<tr><th>Warranty</th><td>" + aVan.WarrantyMonths + " months / " + aVan.WarrantyMiles + ",000 miles / " + aVan.WarrantyCorrosion + " years anti-perforation</td></tr>"
								sHTML = sHTML + "<th>Servicing</th><td>" + aVan.Servicing + ",000 miles</td></tr>"
								sHTML = sHTML + "<th>Insurance Group</th><td>" + aVan.InsGroup + "</td></tr>"
								sHTML = sHTML + "</table>"
							}
							if (oNode.innerHTML == "Features") {
								var sSideLoad = "No"
								if (aVan.SideDoorSliding > 0 || aVan.SideDoorHinged > 0 || aVan.SideDoorDropside > 0) { sSideLoad = "Yes" }
								var aSafety = new Array()
								if (aVan.Airbag == "True") { aSafety[aSafety.length] = "Airbag"; }
								if (aVan.CentralLocking == "True") { aSafety[aSafety.length] = "Central Locking" }
								if (aVan.Deadlocks == "True") { aSafety[aSafety.length] = "Deadlocks" }
								if (aVan.SideImpactBars == "True") { aSafety[aSafety.length] = "Side Impact Bars" }
								if (aVan.SeatBeltGrabbers == "True") { aSafety[aSafety.length] = "Seat Belt Grabbers" }
								if (aVan.Immobiliser == "True") { aSafety[aSafety.length] = "Immobiliser" }
								var sSafety = ""
								for (i=0;i<aSafety.length;i++) {
									sSafety = sSafety + aSafety[i] + ", "
								}
								if (sSafety.length > 0) {
									sSafety = sSafety.substr(0,sSafety.length-2)
								} else { sSafety = "None" }
								var sLiddedGB = "No"
								if (aVan.LiddedGloveBox == "True") { sLiddedGB = "Yes" }

								var sHTML = "<table id='techdata'>"
								sHTML = sHTML + "<tr><th>Rear Doors</th><td>" + aVan.RearDoors + "</td></tr>"
								sHTML = sHTML + "<th>Side Load Door</th><td>" + sSideLoad + "</td></tr>"
								sHTML = sHTML + "<th>Safety & Security</th><td>" + sSafety + "</td></tr>"
								sHTML = sHTML + "<th>Lidded Glovebox</th><td>" + sLiddedGB + "</td></tr>"
								sHTML = sHTML + "<th>Wiper Speeds</th><td>" + aVan.WiperSpeeds + "</td></tr>"
								sHTML = sHTML + "</table>"
							}
							if (oNode.innerHTML == "Technical") {
								var sEng = aVan.EngineCyl + " / " + aVan.EngineCC
								var sEngType = ""
								if (aVan.EngineType == 1) { sEngType = "Indirect-injection diesel" }
								if (aVan.EngineType == 2) { sEngType = "Direct-injection diesel" }
								if (aVan.EngineType == 3) { sEngType = "Indirect-injection turbodiesel" }
								if (aVan.EngineType == 4) { sEngType = "Direct-injection turbodiesel" }
								if (aVan.EngineType == 5) { sEngType = "Common-rail turbodiesel" }
								if (aVan.EngineType == 6) { sEngType = "Petrol" }
								var sMaxPower = aVan.BHP + " bhp @ " + aVan.BHPRPM + " rpm"
								var sMaxTorque = aVan.LbPerFt + " lb @ " + aVan.LbPerFtRPM + " rpm"
								var sEngDrive = ""
								if (aVan.EngineDrive == 1) { sEngDrive = "Front engine, front-wheel drive" }
								if (aVan.EngineDrive == 2) { sEngDrive = "Mid engine, rear-wheel drive" }								
								if (aVan.EngineDrive == 3) { sEngDrive = "Front engine front wheel drive with selectable four wheel drive" }
								if (aVan.EngineDrive == 4) { sEngDrive = "Front engine, with permanent four wheel drive" }
								var sGearBox = ""
								if (aVan.GearBox == 5) { sGearBox = "Four speed gearbox with five speed available as option" }
								if (aVan.GearBox == 6) { sGearBox = "Five speed gearbox with two-ratio four-wheel drive transfer gearbox" }
								if (aVan.GearBox == 7) { sGearBox = "Manually operated free-wheeling hubs" }
								if (aVan.GearBox == 8) { sGearBox = "Automatically engaged" }
								var sAntiLock = "No"
								if (aVan.AntiLock == "True") { sAntiLock = "Yes" }
								var sPowerSteering = "No"
								if (aVan.PowerSteering == "True") { sPowerSteering = "Yes" }
								
								var sHTML = "<table id='techdata'>"
								sHTML = sHTML + "<tr><th>Engine cyl / cc</th><td>" + sEng + "</td></tr>"
								sHTML = sHTML + "<tr><th>Engine Type</th><td>" + sEngType + "</td></tr>"
								sHTML = sHTML + "<tr><th>Maximum Power</th><td>" + sMaxPower + "</td></tr>"
								sHTML = sHTML + "<tr><th>Maximum Torque</th><td>" + sMaxTorque + "</td></tr>"
								sHTML = sHTML + "<tr><th>Engine / Drive</th><td>" + sEngDrive + "</td></tr>"
								sHTML = sHTML + "<tr><th>Gearbox</th><td>" + sGearBox + "</td></tr>"
								sHTML = sHTML + "<tr><th>Anti-lock</th><td>" + sAntiLock + "</td></tr>"
								sHTML = sHTML + "<tr><th>Power Steering</th><td>" + sPowerSteering + "</td></tr>"
								sHTML = sHTML + "</table>"
							}
							if (oNode.innerHTML == "Dimensions") {
								if (aVan.TurningCircleK.length == 0) { aVan.TurningCircleK = "??" }
								if (aVan.TurningCircleW.length == 0) { aVan.TurningCircleW = "??" }
								if (aVan.LoadHeight.length == 0) { aVan.LoadHeight = "??" }
								if (aVan.LoadLength.length == 0) { aVan.LoadLength = "??" }
								if (aVan.LoadWidth.length == 0) { aVan.LoadWidth = "??" }
								if (aVan.LoadVol.length == 0) { aVan.LoadVol = "??" }
								
								var sHTML = "<table id='techdata'>"
								sHTML = sHTML + "<tr><th>Overall Length</th><td>" + aVan.Length + "mm</td><td>&nbsp;</td>"
								sHTML = sHTML + "<th>Overall Width</th><td>" + aVan.Width + "mm</td></tr>"
								sHTML = sHTML + "<tr><th>Overall Height</th><td>" + aVan.Height + "mm</td><td>&nbsp;</td>"
								sHTML = sHTML + "<th>Wheelbase</th><td>" + aVan.Wheelbase + "mm</td></tr>"
								sHTML = sHTML + "<tr><th>Turning Circle (Kerbs)</th><td>" + aVan.TurningCircleK + "m</td><td>&nbsp;</td>"
								sHTML = sHTML + "<th>Turning Circle (Walls)</th><td>" + aVan.TurningCircleW + "m</td></tr>"
								sHTML = sHTML + "<tr><th>Loading Height</th><td>" + aVan.LoadHeight + "mm</td><td>&nbsp;</td>"
								sHTML = sHTML + "<th>Loading Length</th><td>" + aVan.LoadLength + "mm</td></tr>"
								sHTML = sHTML + "<tr><th>Loading Width</th><td>" + aVan.LoadWidth + "mm</td><td>&nbsp;</td>"
								sHTML = sHTML + "<th>Loading Vol</th><td>" + aVan.LoadVol + "m&sup3;</td></tr>"
								sHTML = sHTML + "<tr><th>Gross Payload</th><td>" + aVan.GrossPayload + "kg</td><td>&nbsp;</td>"
								sHTML = sHTML + "<th>Gross Vehicle Weight</th><td>" + aVan.GrossVehicleWeight + "kg</td></tr>"
								sHTML = sHTML + "<tr><th>Kerb Weight</th><td>" + aVan.KerbWeight + "kg</td><td>&nbsp;</td>"
								sHTML = sHTML + "<th>Towing Limit</th><td>" + aVan.TowingLimit + "kg</td></tr>"
								sHTML = sHTML + "<tr><th>Tank Litres</th><td>" + aVan.TankL + "l</td></tr>"
								sHTML = sHTML + "</table>"
							}
							document.getElementById('tabpanel').innerHTML = sHTML
						} else {
							Element.removeClassName(oNode,"current")
						}
					}
				}
			)
		},
		makePageLinks:function(id,PageInfo) {
			var iResults = PageInfo.split("|")[0]
			var iDisplayed = PageInfo.split("|")[1]
			var iCurrentPage = PageInfo.split("|")[2]
			if ($(id)) {
				var e = $(id)
				var iPagesTotal = iResults/iDisplayed + " "
				if (iPagesTotal.indexOf(".") != -1) {
					iPagesTotal = Math.floor(parseInt(iPagesTotal)) + 1
				}
				e.innerHTML = ""
				for (i=0;i<iPagesTotal;i++) {
					var o = document.createElement("SPAN")
					o.innerHTML = (parseInt(i)+1)
					o.onclick = function() { cpVans.vanSearch.doSearch(this.innerHTML-1) }
					if (i+1 == iCurrentPage) { Element.addClassName(o,"pagelinkcurrent") }
					e.appendChild(o)
				}
			}
		},
		showDetailContent:function(oReq) {
			if (oReq.length) {		// is cached
				var a = oReq
			} else {				// cache now
				if ($("vansearchdetail")) {
					var a = oReq.responseText.split("#!#")
					if (a.length > 0) {
						var id = a[0].split("|")[1]
						$("vansearchdetail")["vanInfo" + id] = a
					}
				}
			}
			var b = ""
			for (i=0;i<a.length;i++) {
				b = b + a[i] + "<br>"
			}
			var aVan = new Object()
			for (i=0;i<a.length;i++) {
				var x = a[i].split("|")
				aVan[x[0]] = x[1]
			}
			// !! - populate detail with van object
			$("tdVanImg").innerHTML = ""
			var oImg = document.createElement("IMG")
			oImg.src = "images/models/" + aVan.Make.replace(" ","_") + "_" + aVan.Model.replace(" ","_") + "_large.jpg"
			oImg.width = 300
			oImg.height = 200
			$("tdVanImg").appendChild(oImg)

			$("tdVanTitle").innerHTML = ""
			$("tdVanTitle").innerHTML = aVan.Make + " " + aVan.Model + " " + aVan.Varient

			$("tdVanLogo").innerHTML = ""
			var i = document.createElement("IMG")
			i.src = "images/" + aVan.Make.replace(" ","_") + "_button-a.jpg"
			i.width = 78
			i.height = 33
			i.alt = aVan.Make
			$("tdVanLogo").appendChild(i)

			$("spnVanPrice").innerHTML = ""
			var iPrice = "CALL"			
			if (aVan.Price > 0) { iPrice = utils.formatCurrency(aVan.Price) }
			$("spnVanPrice").innerHTML = iPrice
			
			var o = document.getElementsByClassName("tablabel current")
			if (o.length > 0) { cpVans.vanSearch.changePanel(o[0],aVan) }
			if ($("vansearchdetail")) { $("vansearchdetail").style.filter = ""}
		},
		showDetail:function(id) {
			if ($("vansearchdetail")) { $("vansearchdetail").style.filter = "alpha(opacity=30)"}
			if ($("vansearchoptionssep")) { $("vansearchoptionssep").style.display = "none" }
			if ($("vansearchoptions")) { $("vansearchoptions").style.display = "none" }
			if ($("vansearchresultscontainer")) { $("vansearchresultscontainer").style.display = "none" }
			if ($("pagelinks")) { $("pagelinks").style.display = "none" }
			if ($("vansearchdetail")) { $("vansearchdetail").style.display = "block" }
			
			if ($("vansearchdetail")["vanInfo" + id]) {
				cpVans.vanSearch.showDetailContent($("vansearchdetail")["vanInfo" + id])
			} else {
				var sURL = "vanmethods.asp"
				var sVals = "method=vansearch.getvanbyid&vanid=" + id
				var oAJAX = new Ajax.Request(
					sURL,
					{
						method: "get",
						parameters: sVals,
						onComplete: cpVans.vanSearch.showDetailContent
					}
				)
			}
		},
		hideDetail:function(id) {
			if ($("vansearchoptionssep")) { $("vansearchoptionssep").style.display = "block" }
			if ($("vansearchoptions")) { $("vansearchoptions").style.display = "block" }
			if ($("vansearchdetail")) { $("vansearchdetail").style.display = "none" }			
			if ($("vansearchresultscontainer")) { $("vansearchresultscontainer").style.display = "block" }
			if ($("pagelinks")) { $("pagelinks").style.display = "block" }
		},
		doSearch:function(iPageNum) {
			cpVans.vanSearch.hideDetail()
			if ($("vansearchresultscontainer")) {
				$("vansearchresultscontainer").style.filter = "alpha(opacity=40)"
			}
			var iResultsPerPage = 14
			var sURL = "vanmethods.asp"
			var sVals = "method=vansearch.search&"
			
			if (isNaN(iPageNum)) { iPageNum = 0 }
			
			// prep values
			var aCriteria = $A(document.getElementsByClassName("vansearchcriteria"))
			aCriteria.each(
				function(oNode) {
					sVals = sVals + oNode.name + "=" + $F(oNode) + "&"
				}
			)
			if (sVals.length > 0) { sVals = sVals.substring(0, sVals.length-1) + "&pagenum=" + iPageNum + "&resperpage=" + iResultsPerPage}

			// call ajax method
			var oAJAX = new Ajax.Request(
				sURL,
				{
					method: "get",
					parameters: sVals,
					onComplete: cpVans.vanSearch.showResults
				}
			)
		},
		showResults:function(oReq) {
			var el = $("vansearchresults")
			while (el.firstChild) {
				if (el.firstChild) {
					el.removeChild(el.firstChild)
				}
			}
			if (oReq.responseText.length > 0) {
				var aRes = oReq.responseText.split("#!#")
				if (aRes.length > 2) {
					var sPageInfo = aRes.shift()
					aRes.each(
						function(sVan) {
							if (sVan.length > 0) {
								var aVals = sVan.split("|")
								//remove id
								var id = aVals.shift()
								// add manu logo
								aVals.splice(4,0,"")
								//var i = document.createElement("IMG")
								//i.src = "images/" + aVals[0] + "_button-a.jpg"
								//i.width = 78
								//i.height = 33
								//i.alt = aVals[0]
								//i.align = "right"
								//i.onclick = "document.location = '" + aVals[0] + ".html'"
								//aVals[4] = i.outerHTML
								aVals[4] = "<img src='images/" + aVals[0] + "_button-a.jpg' align='right'>"
								
								// add picture
								//var i = document.createElement("IMG")
								//i.src = "images/models/" + aVals[0].replace(" ","_") + "_" + aVals[1].replace(" ","_") + ".jpg"
								//i.width = 78
								//i.height = 33
								//i.alt = aVals[0] + " " + aVals[1]
								aVals[1] = aVals[0].replace(" ","_") + " " + aVals[1].replace(" ","_")
								aVals[0] = "<img src='images/models/" + aVals[1].replace(" ","_") + ".jpg' width=78 height=33>"
								//aVals[0] = i.outerHTML
								// format currencies
								aVals[3] = utils.formatCurrency(aVals[3])
								var oTR = document.createElement("TR")
								aVals.each(
									function(val,i) {
										if (val.length > 0) {
											var oTD = document.createElement("TD")
											oTD.innerHTML = val
											switch(i) {
												case 0:
													oTD.style.width = "78px"
													oTD.style.backgroundColor = "transparent"
													oTD.style.textAlign = "center"
													oTD.style.fontSize = "75%"
													break
												case 1:
													oTD.style.paddingLeft = "10px"
													break
												case 3:
													oTD.style.color = "green"
													oTD.style.textAlign = "center"
													oTD.style.fontWeight = "bold"
											}
											oTR.onclick = cpVans.vanSearch.showDetail
											oTR.appendChild(oTD)
										}
									}
								)
								$("vansearchresults").appendChild(oTR)
								oTR.id = "van" + id
								oTR.vanID = id
								oTR.onclick = function() { cpVans.vanSearch.showDetail(id) }
							}
						}
					)
					utils.stripeTable($("vansearchresults"))
					cpVans.vanSearch.makePageLinks(document.getElementById("pagelinks"),sPageInfo)
				} else {
					var oTR = document.createElement("TR")
					var oTD = document.createElement("TD")
					oTD.innerHTML = "Sorry we can't find any results that match your search. Try loosening your search criteria."
					oTR.appendChild(oTD)
					$("vansearchresults").appendChild(oTR)
					var sPageInfo = aRes.shift()
					cpVans.vanSearch.makePageLinks(document.getElementById("pagelinks"),sPageInfo)
				}
			}
			if ($("vansearchresultscontainer")) {
				$("vansearchresultscontainer").style.filter = ""
			}
		}
	}
}

function parseQS() {
	var FORM_DATA = new Object();
	var separator = ',';
	var query = '' + this.location;
	var qu = query
	query = query.substring((query.indexOf('?')) + 1);
	if (query.length < 1) { return false; }  // Perhaps we got some bad data?
	var keypairs = new Object();
	var numKP = 1;
	while (query.indexOf('&') > -1) {
		keypairs[numKP] = query.substring(0,query.indexOf('&'));
		query = query.substring((query.indexOf('&')) + 1);
		numKP++;
	}
	keypairs[numKP] = query;
	for (i in keypairs) {
		var keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
		var keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
		while (keyValue.indexOf('+') > -1) {
			keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
		}
		keyValue = unescape(keyValue);
		if (FORM_DATA[keyName]) {
			FORM_DATA[keyName] = FORM_DATA[keyName] + separator + keyValue;
		} else {
			FORM_DATA[keyName] = keyValue;
		}
	}
	return FORM_DATA;
}

function tester() { alert("ok test ok") }
