function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

// Special Jumper for Finders only that allows for additional URL parameters
function MM_jumpMenuFinder(targ,selObj,restore,params){ //v3.0
  // targ = target window for the url
  // selObj = the select box
  // restore = unknown
  // params = additional parameters for the url
  
  // Checking to see if there are already params in the URL
  var strUrl = selObj.options[selObj.selectedIndex].value;
  if(strUrl.indexOf("?") > 0)
    strUrl = strUrl + "&";
  else
    strUrl = strUrl + "?";
  strUrl = strUrl + params;
  eval(targ+".location='"+strUrl+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_jumpMenu_blank(selObj){
  window.open(selObj.options[selObj.selectedIndex].value, '_blank');
}

function nameSort(a,b) {if (a.name<b.name) return -1;if (a.name>b.name) return 1;return 0}
function movieSort(a,b) {if (a.moviename<b.moviename) return -1;if (a.moviename>b.moviename) return 1;return 0}			
function yearSort(a,b) {if (a.name<b.name) return 1;if (a.name>b.name) return -1;return 0}	

function provinceSort(a,b) {
  var aval = parseInt(a.value);
  var bval = parseInt(b.value); 
if (aval<bval) return 1;if (aval>bval) return -1;return 0}			

var isFirefox = false;
if(navigator.userAgent.indexOf("Firefox")!=-1){
  isFirefox = true;
}

xmlhttp=null
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest()
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  }

if (typeof topsFinder == "undefined") {
	var topsFinder = function() { // apply a topsFinder namespace
		var maxRetryCount = 5

		function createMethodReference_(obj, methodName) {
			return function() { obj[methodName]() }
		}

		selectorjsonresp_ = function(jsondata) {
			//replace first entry with ALL
			this.options[0].text = "ALL";
			this.options[0].value = "ALL";

			//remove highlite from first option
			if (this.idx < this.options.length && this.options[this.idx].className == "hilite") {
				this.options[this.idx].className = "";
				this.options[this.idx].text = this.title;
				this.options[this.idx].selected = true;
			}

			try {
				items = jsondata.results
				this.jsonerrorcount = 0
			}
			catch (ex) {
				if ((!this.jsonerrorcount) || (isNaN(this.jsonerrorcount))) this.jsonerrorcount = 0
				this.jsonerrorcount++
				if (this.jsonerrorcount < maxRetryCount) {
					window.setTimeout(createMethodReference_(this, 'fillme'), 1000)
				}
				else {
					// too many errors. bail.
				}
				this.disabled = false;
				return
			}

			origOpt = (this.selectedIndex >= 0) ? this.options[this.selectedIndex] : false
			origOptValue = '' + origOpt.value
			origOptText = '' + origOpt.text

			try {
				origOptValue = $(this.finder.id + '_Current_' + this.facet).value
			} catch (ex) { }

			if (this.filter) {
				var filtereditems = new Array();
				j = 0;
				for (i = 0; i < items.length; i++) {
					if (items[i].name.match(this.filter)) {
						filtereditems[j++] = items[i];
					}
				}
				items = filtereditems;
			}

			numitems = items.length;
			if (this.className.indexOf("yearsort") != -1) { items.sort(yearSort); }
			else if (this.className.indexOf("provincesort") != -1) { items.sort(provinceSort); }
			else { items.sort(nameSort); }

			//always save unfiltered names just incase we filter it below
			for (i = 0; i < numitems; i++) {
				items[i].unfiltered = items[i].name;
			}

			//if it has an id, then we have to strip it out (so it wont be displayed and so the categories can collapse)
			//(and it has to have collapse if it has hasid...)
			if (this.className.indexOf("hasid") != -1) {
				for (i = 0; i < numitems; i++) {
					items[i].name = items[i].name.substring(items[i].name.indexOf("/"));
				}
				if (this.className.indexOf("yearsort") != -1) { items.sort(yearSort); }
				else if (this.className.indexOf("provincesort") != -1) { items.sort(provinceSort); }
				else { items.sort(nameSort); }
			}

			if (this.className.indexOf("collapse") != -1) {
				var key = "";
				for (i = 0; i < numitems; i++) {
					key = items[i].name;
					while (key.indexOf("..") == 0) {
						key = key.substring(2, key.length);
					}
					for (j = i + 1; j < numitems; j++) {
						if (items[j].name.indexOf(key + "/") > -1) {
							items[j].name = items[j].name.replace(key, "..");
							items[i].heading = 1;
						} else {
							break;
						}
					}
				}
			}

			this.options.length = 1;
			for (i = 0; i < numitems; i++) {
				if (this.className.indexOf("collapse") != -1) {
					optText = items[i].name.replace(/(?=\.*)\//, ''); //remove / from text
					optValue = items[i].unfiltered;
				} else {
					optText = (this.strip) ? items[i].name.replace(this.strip, '') : items[i].name
					optValue = items[i].name
				}
				if (optText.match(/^\s*$/) != null || optText == "Unknown") {
					continue;
				}
				if (this.className.indexOf("hidecount") == -1) {
					optText += " ( " + items[i].value + " ) ";
				}
				this.options[this.length] = new Option(optText, optValue);
				if (items[i].heading == 1) {
					this.options[this.length - 1].className = "heading";
				}
			}

			for (i = 0; i < this.length; i++) {
				if (origOptValue == this.options[i].value) this.options[i].selected = true
			}
			try { $(this.finder.id + '_Spinner').style.visibility = "hidden" } catch (ex) { }
			this.loaded = 1;
			this.disabled = false;
		}

		selectedvalue_ = function(skip) {
			var index = this.selectedIndex
			if (index < 1 && skip) return ''
			var opt = this.options[index]
			return opt.value || opt.text
		}

		selectedtext_ = function() {
			var index = this.selectedIndex
			if (index < 0) return ''
			var opt = this.options[index]
			return opt.text
		}

		doselect_ = function() {
			try {
				$(this.finder.id + '_Current_' + this.facet).value = this.selectedvalue(1)
			} catch (ex) { }
			var count = 0;
			for (var k in this.finder.selectors) {
				var aselector = this.finder.selectors[k];
				if (this != aselector) {
					if (aselector.className.indexOf("dontupdate") == -1) {
						aselector.fillme();
					}
					count++;
				}
			}

			//check if only one and they didnt tell us to wait for the user to click go
			if (count == 0 && this.className.indexOf("wait4click") == -1) {
				this.dosearch();
			}
		}

		fillme_ = function() {
			if (this.facet.indexOf("Param:") == -1) { //if it starts with param then dont bother filling it
				var queryurl = this.finder.counturl();
				try { $(this.finder.id + '_Spinner').style.visibility = "visible" } catch (ex) { }
				queryurl += this.finder.refinements(1)
				jsonreq.call(queryurl + '&groupby=' + escape(this.facet.replace(/__/, ':/')), this)
			}
		}

		prefill_ = function() {
			if (!this.loaded || this.options.length == 1) {
				if (!isFirefox) {
					this.disabled = true;
					if (!this.title) {
						this.title = this.options[this.idx].text;
					}
				}
				this.options[this.idx] = new Option("LOADING...", "");
				this.options[this.idx].className = "hilite";
				this.fillme();
			}
		}

		jumpfill_ = function() {
			if (!this.loaded) {
				if (!isFirefox) {
					this.disabled = true;
					if (!this.title) {
						this.title = this.options[this.idx].text;
					}
				}
				this.options[this.idx] = new Option("LOADING...", "");
				this.options[this.idx].className = "hilite";
				xmlhttp.open("GET", this.fillurl, true);
				var control = this;
				xmlhttp.onreadystatechange = function() {
					if (xmlhttp.readyState == 4) {
						var items = eval('(' + xmlhttp.responseText + ')').results;
						control.length = 1;

						if (control.className.indexOf("moviesort") != -1) {
							var name;
							for (i = 0; i < items.length; i++) {
								name = items[i].name;
								name = name.replace(/^The\s/i, "");
								name = name.replace(/^A\s/i, "");
								name = name.replace(/^An\s/i, "");
								items[i].moviename = name;
							}
							items.sort(movieSort);
						} else if (this.className.indexOf("yearsort") != -1) { items.sort(yearSort); }
						else if (this.className.indexOf("provincesort") != -1) { items.sort(provinceSort); }
						else { items.sort(nameSort); }

						for (var i = 0; i < items.length; i++) {
							items[i].name = items[i].name.replace(/&amp;/, '&');
							control.options[control.length] = new Option(items[i].name, items[i].value);
						}
						if (!isFirefox) {
							control.options[control.idx].text = control.title;
							control.disabled = false;
						}
						control.options[control.idx].className = "";
						control.loaded = 1;
					}
				}
				xmlhttp.send(null);
			}
		}

		refinements_ = function(skip) {
			var refinements = []
			var params = []
			var paramname
			refinements.push(escape(this.baserefinement))
			var selectorVal
			var fakequery = "";

			for (var i in this.selectors) {
				if (arguments[0]) { // optionally pass an element to skip
					if (this.selectors[i] == arguments[0]) {
						continue
					}
				}
				selectorVal = this.selectors[i].selectedvalue(skip)
				var temp = this.selectors[i].selectedtext();
				temp = temp.replace(/\(.*?\)/, '');
				temp = temp.replace(/&/, 'and');
				if (fakequery.length != 0) {
					fakequery += ", ";
				}
				fakequery += temp;

				var currentVal = ''
				try {
					currentVal = $(this.id + '_Current_' + this.selectors[i].facet).value
				} catch (ex) { }
				if (((selectorVal == "ALL") || (selectorVal == "")) && (currentVal)) selectorVal = currentVal
				if ((selectorVal != "ALL") && (selectorVal != "")) {
					if (this.selectors[i].facet.indexOf("Param:") == 0) {
						//starts with Param: so this should be added as a parameter not a refinement
						paramname = this.selectors[i].facet.substring(6)
						params.push(paramname + "=" + selectorVal);
					} else {
						temp = selectorVal.replace(/,/, '');
						refinements.push(escape(this.selectors[i].facet.replace(/:\/.+$/, '')) + ":" + escape('"' + temp + '"'))
					}
				}
			}
			if (params.length > 0) {
				return '&' + params.join('&') + '&r=' + refinements.join('%20AND%20') + '&fq=' + fakequery;
			} else {
				return '&r=' + refinements.join('%20AND%20') + '&fq=' + fakequery;
			}
		}

		searchurl_ = function() {
			var currentVal = ''
			try {
				currentVal = $(this.id + '_SearchUrl').value
			} catch (ex) {
				currentVal = '/searchResults?q='
			}
			return currentVal
		}

		counturl_ = function() {
			var currentVal = ''
			try {
				currentVal = $(this.id + '_CountUrl').value
			} catch (ex) {
				currentVal = '/finders/getcounts?searchtype=Listing&q='
			}
			return currentVal
		}

		docheckbox_ = function() {
			if (this.checked) {
				this.finder.baserefinement = this.value;
			} else {
				this.finder.baserefinement = this.baserefinement;
			}
			for (var k in this.finder.selectors) {
				var aselector = this.finder.selectors[k]
				if (this != aselector) aselector.fillme()
			}
		}

		dosearch_ = function() {
			var executesearchurl = this.finder.searchurl()
			executesearchurl += this.finder.refinements(0)
			if (this.finder.target) {
				window.open(executesearchurl, this.finder.target);
			} else {
				window.location = executesearchurl;
			}
		}

		function activateFinders() {
			var formelements = new Array();
			formEls = document.getElementsByTagName('form');
			for (var i = 0; i < formEls.length; i++) {
				formelements.push(formEls[i]);
			}
			formEls = document.getElementsByTagName('span');
			for (var i = 0; i < formEls.length; i++) {
				formelements.push(formEls[i]);
			}

			for (var i = 0; i < formelements.length; i++) {
				var curform = formelements[i];
				if (curform.id.substr(0, 7) == 'Jumper_') {
					curform.selector = document.getElementById(curform.id + '_Select');
					curform.selector.fillurl = document.getElementById(curform.id + '_URL').value;
					if (!isFirefox) {
						curform.selector.onfocus = jumpfill_
						curform.selector.onmousedown = jumpfill_
						curform.selector.idx = 0;
					} else {
						curform.selector.onfocus = jumpfill_
						curform.selector.idx = 1;
					}
					curform.selector.disabled = false;
					curform.selector.loaded = 0;
					curform.selector.finder = curform;
				}

				if (curform.id.substr(0, 7) == 'Finder_') {
					try { debuglog('found finder ' + curform.id) } catch (ex) { }
					if (curform[curform.id + '_Refinement']) curform.baserefinement = curform[curform.id + '_Refinement'].value
					curform.showCounts = true
					curform.refinements = refinements_
					curform.searchurl = searchurl_
					curform.counturl = counturl_
					curform.selectors = {}
					for (j = 1; j < 9; j++) {
						if ((curform[curform.id + '_Facet_' + j]) && (curform[curform.id + '_Select_' + j]) && (curform[curform.id + '_Current_' + j])) {
							try { debuglog('selector ' + curform[curform.id + '_Select_' + j].id) } catch (ex) { }
							var curselect = curform[curform.id + '_Select_' + j]
							curselect.facetnum = j
							curselect.facet = curform[curform.id + '_Facet_' + j].value
							if (curform[curform.id + '_Filter_' + j]) {
								curselect.filter = new RegExp(curform[curform.id + '_Filter_' + j].value, 'i');
							} else {
								curselect.filter = null;
							}
							curselect.className = curform[curform.id + '_Facet_' + j].className;
							try { debuglog('facet ' + curform[curform.id + '_Select_' + j].id + ' = ' + curselect.facet) } catch (ex) { }
							if (matches = curselect.facet.match(/FullCategory:(.+)$/)) {
								curselect.strip = new RegExp('^' + matches[1] + '/*', 'i')
							}
							curselect.jsonresp = selectorjsonresp_
							curselect.selectedvalue = selectedvalue_
							curselect.selectedtext = selectedtext_
							curselect.doselect = doselect_
							curselect.onchange = doselect_
							curselect.dosearch = dosearch_
							if (curselect.facet.indexOf("Param:") == -1) { //if it starts with param then dont bother filling it
								if (!isFirefox) {
									curselect.onfocus = prefill_
									curselect.onmousedown = prefill_
									curselect.onmouseover = prefill_
									curselect.idx = 0;
								} else {
									curselect.onfocus = prefill_
									curselect.idx = 1;
								}
							}
							curselect.loaded = 0;
							curselect.fillme = fillme_
							curselect.finder = curform
							curform.selectors[curselect.id] = curselect
							curselect.options[0].selected = true;
							curselect.blur();
							curselect.disabled = false;
						}
					}
					for (j = 1; j < 2; j++) {
						var curcheckbox = document.getElementById(curform.id + '_Checkbox_' + j);
						if (curcheckbox) {
							curcheckbox.onchange = docheckbox_
							curcheckbox.finder = curform
							curcheckbox.baserefinement = curform.baserefinement
						}
					}

					//					for(var k in curform.selectors) {
					//						curform.selectors[k].fillme()
					//					}
					if ($(curform.id + '_Go')) {
						$(curform.id + '_Go').finder = curform
						$(curform.id + '_Go').onclick = dosearch_
					}
				}
			}
		}
		var oldonload = window.onload
		if (typeof window.onload != 'function') {
			window.onload = function() {
				activateFinders()
				changeWrapper()
			}
		} else {
			window.onload = function() {
				activateFinders()
				changeWrapper()
				oldonload()
			}
		}
	} ()
}


function changeWrapper(){
    switch(readCookie('referrer')){
        
        case 'thestar.com':
        document.getElementById('theStarBG').style.backgroundImage='url(/App_Themes/standard/images/sponTorontoStarRO.gif)';
        break;
        case 'www.thestar.com':
        document.getElementById('theStarBG').style.backgroundImage='url(/App_Themes/standard/images/sponTorontoStarRO.gif)';
        break;
        
        case 'www.hamiltonspectator.com':
        document.getElementById('theSpecBG').style.backgroundImage='url(/App_Themes/standard/images/sponTheSpecRO.gif)';
        break;
        case 'hamiltonspectator.com':
        document.getElementById('theSpecBG').style.backgroundImage='url(/App_Themes/standard/images/sponTheSpecRO.gif)';
        break;
        
        case 'therecord.com':
        document.getElementById('theRecordBG').style.backgroundImage='url(/App_Themes/standard/images/sponTheRecordRO.gif)';
        break;
        case 'www.therecord.com':
        document.getElementById('theRecordBG').style.backgroundImage='url(/App_Themes/standard/images/sponTheRecordRO.gif)';
        break;
        
        case 'www.guelphmercury.com':
        document.getElementById('theMercBG').style.backgroundImage='url(/App_Themes/standard/images/sponGuelphMercuryRO.gif)';
        break;
        case 'guelphmercury.com':
        document.getElementById('theMercBG').style.backgroundImage='url(/App_Themes/standard/images/sponGuelphMercuryRO.gif)';
        break;
        
        case 'carguidemagazine.com':
        document.getElementById('theCarBG').style.backgroundImage='url(/App_Themes/standard/images/sponCarguideRO.gif)';
        break;
        case 'www.carguidemagazine.com':
        document.getElementById('theCarBG').style.backgroundImage='url(/App_Themes/standard/images/sponCarguideRO.gif)';
        break;
        
        
        case 'www.worldofwheelsmagazine.com':
        document.getElementById('theWwwBG').style.backgroundImage='url(/App_Themes/standard/images/sponWorldOfWheelsRO.gif)';
        break;
        case 'worldofwheelsmagazine.com':
        document.getElementById('theWwwBG').style.backgroundImage='url(/App_Themes/standard/images/sponWorldOfWheelsRO.gif)';
        break;
        default :
        break;
        }
}

function carcompare(id)
{
  var searchurl = document.getElementById(id + "_SearchUrl");
  searchurl.value = "/Search/carcomparison?redirect=/newvehicles/compare/%24&searchtype=Vehicle";
  var gobutton = document.getElementById(id + "_Go");
  gobutton.click();
}
