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;
}

var nvItems = ['nvMake', 'nvYear', 'nvModel'];

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) {
                        if (nvItems.indexOf(aselector.name) > nvItems.indexOf(this.name)) {
                            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.selectedIndex].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').val();
            } catch (ex) {
                currentVal = '/searchResults?q=';
            }
            return currentVal;
        }

        counturl_ = function () {
            var currentVal = '';
            try {
                currentVal = $('#' + this.id + '_CountUrl').val();
            } 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.onmousedown = prefill_;
                                    curselect.idx = 1;
                                }
                            }
                            curselect.loaded = 0;
                            curselect.fillme = fillme_;
                            curselect.finder = curform;
                            curform.selectors[curselect.id] = curselect;
                            if (curselect.selectedIndex != 0 && curselect.id == "Finder_NewVehicle_Select_1")
                                defVal = curselect.selectedIndex;
                            else if(curselect.selectedIndex != 0 && curselect.id == "Finder_NewVehicle_Select_2")
                                defVal2 = curselect.selectedIndex;
                            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()
                selectDefault()
            }
        } else {
            window.onload = function () {
                activateFinders()
                changeWrapper()
                selectDefault()
                oldonload()
            }
        }
    } ()
}

var defVal = 0;
var defVal2 = 0;

function selectDefault() {
    $('#Finder_NewVehicle_Select_1').mousedown();
    if (defVal)
        var t = setTimeout("changeDefault(1)", 800);
}
function changeDefault(e) {
    document.getElementById('Finder_NewVehicle_Select_' + e).options[defVal].selected = true;
    $('#Finder_NewVehicle_Select_' + e).change();
}

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();
}

