    // common new/used stuff
    ////////////////////////
    
    function Year(yearName) {
        this.yearName = yearName;
    }
    
    function Model(modelId, modelName) {
        this.modelId = modelId;
        this.modelName = modelName;    
        this.years = new Array();
    }
    
    function Make(makeId, makeName) {
        this.makeId = makeId;
        this.makeName = makeName;
        this.models = new Array();
    }

    // used stuff
    ////////////////////////
    function loadMake(makeId, makeName) {
        var make = new Make(makeId, makeName);
        makes.push(make);
    }
    
    function getMake(makeId) {
        for (var i=0; i<makes.length; i++) {
       		var make = makes[i];
       		if (make.makeId == makeId) {
       			return make;	
       		}
        }
    }

    function loadModel(makeId, modelId, modelName) {
        var make = getMake(makeId);
        make.models.push(new Model(modelId, modelName));
    }
    
    function populateMakes() {
        var makeSelect = document.used_search.make;
        makeSelect.options.length = 0;
        var optionNum = 0;
        makeSelect.options[optionNum++] = new Option("Select A Make", 0);
        for (var i=0; i<makes.length; i++) {
       		var make = makes[i];
       		makeSelect.options[optionNum++] = new Option(make.makeName, make.makeId);
        }
    }
    
    function populateModels(makeId) {
        var modelSelect = document.used_search.model;
        modelSelect.options.length = 0;
        var optionNum = 0;
        //modelSelect.options[optionNum++] = new Option("Select A Model", 0);
        if (makeId>0) {
            //modelSelect.options[optionNum++] = new Option("All", -1);
        }
        var make = getMake(makeId);
        var models = make.models;
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		modelSelect.options[optionNum++] = new Option(model.modelName, model.modelId);
        }
    }
    
    function selectMake(makeId) {
        var makeSelect = document.used_search.make;
        for (i=0;i<makeSelect.options.length;i++) {
            if (makeSelect.options[i].value == makeId) {
                makeSelect.options[i].selected = true;
            }
        }
    }
    
    function selectModel(modelId) {
        var modelSelect = document.used_search.model;
        for (i=0;i<modelSelect.options.length;i++) {
            if (modelSelect.options[i].value == modelId) {
                modelSelect.options[i].selected = true;
            }
        }
    }
    
    
    
    // used drop-downs on photo-lot page
    ////////////////////////////////////
    function populateMakesPhotoLot() {
        var makeSelect = document.photo_lot.make;
        makeSelect.options.length = 0;
        var optionNum = 0;
        makeSelect.options[optionNum++] = new Option("Select A Make", 0);
        for (var i=0; i<makes.length; i++) {
       		var make = makes[i];
       		makeSelect.options[optionNum++] = new Option(make.makeName, make.makeId);
        }
    }
    
    function populateModelsPhotoLot(makeId) {
        var modelSelect = document.photo_lot.model;
        modelSelect.options.length = 0;
        var optionNum = 0;
        modelSelect.options[optionNum++] = new Option("Select A Model", 0);
        if (makeId>0) {
            //modelSelect.options[optionNum++] = new Option("All", -1);
        }
        var make = getMake(makeId);
        var models = make.models;
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		modelSelect.options[optionNum++] = new Option(model.modelName, model.modelId);
        }
    }
    
    function selectMakePhotoLot(makeId) {
        var makeSelect = document.photo_lot.make;
        for (i=0;i<makeSelect.options.length;i++) {
            if (makeSelect.options[i].value == makeId) {
                makeSelect.options[i].selected = true;
            }
        }
    }
    
    function selectModelPhotoLot(modelId) {
        var modelSelect = document.photo_lot.model;
        for (i=0;i<modelSelect.options.length;i++) {
            if (modelSelect.options[i].value == modelId) {
                modelSelect.options[i].selected = true;
            }
        }
    }
    
    
    
    
    // new stuff
    ////////////////////////
    function loadNewMake(makeId, makeName) {
        var make = new Make(makeId, makeName);
        newMakes.push(make);
    }
    
    function getNewMake(makeId) {
        for (var i=0; i<newMakes.length; i++) {
       		var make = newMakes[i];
       		if (make.makeId == makeId) {
       			return make;	
       		}
        }
    }

    function loadNewModel(makeId, modelId, modelName) {
        var make = getNewMake(makeId);
        make.models.push(new Model(modelId, modelName));
    }
    
    function populateNewMakes() {
        var makeSelect = document.new_search.make;
        makeSelect.options.length = 0;
        var optionNum = 0;
        makeSelect.options[optionNum++] = new Option("Select A Make", 0);
        for (var i=0; i<newMakes.length; i++) {
       		var make = newMakes[i];
       		makeSelect.options[optionNum++] = new Option(make.makeName, make.makeId);
        }
    }
    
    function populateNewModels(makeId) {
        var modelSelect = document.new_search.model;
        modelSelect.options.length = 0;
        var optionNum = 0;
        if (makeId>0) {
            //modelSelect.options[optionNum++] = new Option("All", -1);
        }
        var make = getNewMake(makeId);
        // if make array does not contain make, return graceful
        if (make == null) {
        	modelSelect.options[optionNum] = new Option("Select A Model", 0);
        	return;
        }
        var models = make.models;
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		modelSelect.options[optionNum++] = new Option(model.modelName, model.modelId);
        }
    }
    
    function selectNewMake(makeId) {
        var makeSelect = document.new_search.make;
        for (i=0;i<makeSelect.options.length;i++) {
            if (makeSelect.options[i].value == makeId) {
                makeSelect.options[i].selected = true;
            }
        }
    }
    
    function selectNewModel(modelId) {
        var modelSelect = document.new_search.model;
        for (i=0;i<modelSelect.options.length;i++) {
            if (modelSelect.options[i].value == modelId) {
                modelSelect.options[i].selected = true;
            }
        }
    }
    
    
    
    // new quote stuff
    //////////////////
    
    function populateQuoteMakes() {
        var makeSelect = document.new_quote.make;
        makeSelect.options.length = 0;
        var optionNum = 0;
        makeSelect.options[optionNum++] = new Option("Select A Make", 0);
        for (var i=0; i<newMakes.length; i++) {
       		var make = newMakes[i];
       		makeSelect.options[optionNum++] = new Option(make.makeName, make.makeId);
        }
    }
    
    function populateQuoteModels(makeId) {
        var modelSelect = document.new_quote.model;
        modelSelect.options.length = 0;
        var optionNum = 0;
        var make = getNewMake(makeId);
        // if make array does not contain make, return graceful
        if (make == null) {
        	modelSelect.options[optionNum] = new Option("Select A Model", 0);
        	return;
        }
        
        var models = make.models;
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		modelSelect.options[optionNum++] = new Option(model.modelName, model.modelId);
        }
    }
    
    function selectQuoteMake(makeId) {
        var makeSelect = document.new_quote.make;
        for (i=0;i<makeSelect.options.length;i++) {
            if (makeSelect.options[i].value == makeId) {
                makeSelect.options[i].selected = true;
            }
        }
    }
    
    function selectQuoteModel(modelId) {
        var modelSelect = document.new_quote.model;
        for (i=0;i<modelSelect.options.length;i++) {
            if (modelSelect.options[i].value == modelId) {
                modelSelect.options[i].selected = true;
            }
        }
    }
    
    
    // review-new stuff
    ////////////////////////
    function loadReviewNewMake(makeId, makeName) {
        var make = new Make(makeId, makeName);
        reviewNewMakes.push(make);
    }
    
    function getReviewNewMake(makeId) {
        for (var i=0; i<reviewNewMakes.length; i++) {
       		var make = reviewNewMakes[i];
       		if (make.makeId == makeId) {
       			return make;	
       		}
        }
    }
    
    function getReviewNewModel(models, modelId) {
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		if (model.modelId == modelId) {
       			return model;	
       		}
        }
    }

    function loadReviewNewModel(makeId, modelId, modelName) {
        var make = getReviewNewMake(makeId);
        make.models.push(new Model(modelId, modelName));
    }
    
    function loadReviewNewYear(makeId, modelId, yearName) {
        var make = getReviewNewMake(makeId);
        var model = getReviewNewModel(make.models, modelId);
        model.years.push(new Year(yearName));
    }
    
    function populateReviewNewMakes() {
        var makeSelect = document.review_new_search.make;
        makeSelect.options.length = 0;
        var optionNum = 0;
        makeSelect.options[optionNum++] = new Option("Select A Make", 0);
        for (var i=0; i<reviewNewMakes.length; i++) {
       		var make = reviewNewMakes[i];
       		makeSelect.options[optionNum++] = new Option(make.makeName, make.makeId);
        }
    }
    
    function populateReviewNewModels(makeId) {
        var modelSelect = document.review_new_search.model;
        modelSelect.options.length = 0;
        var optionNum = 0;
        var make = getReviewNewMake(makeId);
        // if make array does not contain make, return graceful
        if (make == null) {
        	modelSelect.options[optionNum] = new Option("Select A Model", 0);
        	return;
        }
        var models = make.models;
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		modelSelect.options[optionNum++] = new Option(model.modelName, model.modelId);
        }
    }
    
    function populateReviewNewYears(modelId) {
        var yearSelect = document.review_new_search.year;
        yearSelect.options.length = 0;
        var optionNum = 0;
        
        // get make object
        var makeSelect = document.review_new_search.make;
        var makeId = makeSelect[makeSelect.selectedIndex].value;
        var make = getReviewNewMake(makeId);
                
        // get model object
        var model = getReviewNewModel(make.models, modelId);
        
        // if model array does not contain model, return graceful
        if (model == null) {
        	yearSelect.options[optionNum] = new Option("Select A Year", 0);
        	return;
        }
        
        // populate years select
        var years = model.years;
        for (var i=0; i<years.length; i++) {
       		var year = years[i];
       		yearSelect.options[optionNum++] = new Option(year.yearName, year.yearName);
        }
    }
    
    function populateReviewNewModelsYears(makeId) {
        // populate model drop-down
        populateReviewNewModels(makeId);  
        
        // get selected model
        var modelSelect = document.review_new_search.model;
        var modelId = modelSelect[modelSelect.selectedIndex].value;   
        
        // populate year drop-down
        populateReviewNewYears(modelId);
    }
    
    function selectReviewNewMake(makeId) {
        var makeSelect = document.review_new_search.make;
        for (i=0;i<makeSelect.options.length;i++) {
            if (makeSelect.options[i].value == makeId) {
                makeSelect.options[i].selected = true;
            }
        }
    }
    
    function selectReviewNewModel(modelId) {
        var modelSelect = document.review_new_search.model;
        for (i=0;i<modelSelect.options.length;i++) {
            if (modelSelect.options[i].value == modelId) {
                modelSelect.options[i].selected = true;
            }
        }
    }
    
    function selectReviewNewYear(yearName) {
        var yearSelect = document.review_new_search.year;
        for (i=0;i<yearSelect.options.length;i++) {
            if (yearSelect.options[i].value == yearName) {
                yearSelect.options[i].selected = true;
            }
        }
    }
    
    
    
    // review stuff
    ////////////////////////
    function loadReviewMake(makeId, makeName) {
        var make = new Make(makeId, makeName);
        reviewMakes.push(make);
    }
    
    function getReviewMake(makeId) {
        for (var i=0; i<reviewMakes.length; i++) {
       		var make = reviewMakes[i];
       		if (make.makeId == makeId) {
       			return make;	
       		}
        }
    }
    
    function getReviewModel(models, modelId) {
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		if (model.modelId == modelId) {
       			return model;	
       		}
        }
    }

    function loadReviewModel(makeId, modelId, modelName) {
        var make = getReviewMake(makeId);
        make.models.push(new Model(modelId, modelName));
    }
    
    function loadReviewYear(makeId, modelId, yearName) {
        var make = getReviewMake(makeId);
        var model = getReviewModel(make.models, modelId);
        model.years.push(new Year(yearName));
    }
    
    function populateReviewMakes() {
        var makeSelect = document.review_search.make;
        makeSelect.options.length = 0;
        var optionNum = 0;
        makeSelect.options[optionNum++] = new Option("Select A Make", 0);
        for (var i=0; i<reviewMakes.length; i++) {
       		var make = reviewMakes[i];
       		makeSelect.options[optionNum++] = new Option(make.makeName, make.makeId);
        }
    }
    
    function populateReviewModels(makeId) {
        var modelSelect = document.review_search.model;
        modelSelect.options.length = 0;
        var optionNum = 0;
        var make = getReviewMake(makeId);
        // if make array does not contain make, return graceful
        if (make == null) {
        	modelSelect.options[optionNum] = new Option("Select A Model", 0);
        	return;
        }
        var models = make.models;
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		modelSelect.options[optionNum++] = new Option(model.modelName, model.modelId);
        }
    }
    
    function populateReviewYears(modelId) {
        var yearSelect = document.review_search.year;
        yearSelect.options.length = 0;
        var optionNum = 0;
        
        // get make object
        var makeSelect = document.review_search.make;
        var makeId = makeSelect[makeSelect.selectedIndex].value;
        var make = getReviewMake(makeId);
                
        // get model object
        var model = getReviewModel(make.models, modelId);
        
        // if model array does not contain model, return graceful
        if (model == null) {
        	//yearSelect.options[optionNum] = new Option("Select A Year", 0);
        	//return;
        	// just get the 1st one in the list
        	model = make.models[0];
        }
        
        // populate years select
        var years = model.years;
        for (var i=0; i<years.length; i++) {
       		var year = years[i];
       		yearSelect.options[optionNum++] = new Option(year.yearName, year.yearName);
        }
    }
    
    function populateReviewModelsYears(makeId) {
        // populate model drop-down
        populateReviewModels(makeId);  
        
        // get selected model
        var modelSelect = document.review_search.model;
        var modelId = modelSelect[modelSelect.selectedIndex].value;   
        
        // populate year drop-down
        populateReviewYears(modelId);
    }
    
    function selectReviewMake(makeId) {
        var makeSelect = document.review_search.make;
        for (i=0;i<makeSelect.options.length;i++) {
            if (makeSelect.options[i].value == makeId) {
                makeSelect.options[i].selected = true;
            }
        }
    }
    
    function selectReviewModel(modelId) {
        var modelSelect = document.review_search.model;
        for (i=0;i<modelSelect.options.length;i++) {
            if (modelSelect.options[i].value == modelId) {
                modelSelect.options[i].selected = true;
            }
        }
    }
    
    function selectReviewYear(yearName) {
        var yearSelect = document.review_search.year;
        for (i=0;i<yearSelect.options.length;i++) {
            if (yearSelect.options[i].value == yearName) {
                yearSelect.options[i].selected = true;
            }
        }
    }
    
    
    
    // research stuff
    ////////////////////////
    function loadResearchMake(makeId, makeName) {
        var make = new Make(makeId, makeName);
        researchMakes.push(make);
    }
    
    function getResearchMake(makeId) {
        for (var i=0; i<researchMakes.length; i++) {
       		var make = researchMakes[i];
       		if (make.makeId == makeId) {
       			return make;	
       		}
        }
    }
    
    function getResearchModel(models, modelId) {
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		if (model.modelId == modelId) {
       			return model;	
       		}
        }
    }

    function loadResearchModel(makeId, modelId, modelName) {
        var make = getResearchMake(makeId);
        make.models.push(new Model(modelId, modelName));
    }
    
    function loadResearchYear(makeId, modelId, yearName) {
        var make = getResearchMake(makeId);
        var model = getResearchModel(make.models, modelId);
        model.years.push(new Year(yearName));
    }
    
    function populateResearchMakes() {
        var makeSelect = document.research_search.make;
        makeSelect.options.length = 0;
        var optionNum = 0;
        makeSelect.options[optionNum++] = new Option("Select A Make", 0);
        for (var i=0; i<researchMakes.length; i++) {
       		var make = researchMakes[i];
       		makeSelect.options[optionNum++] = new Option(make.makeName, make.makeId);
        }
    }
    
    function populateResearchModels(makeId) {
        var modelSelect = document.research_search.model;
        modelSelect.options.length = 0;
        var optionNum = 0;
        var make = getResearchMake(makeId);
        // if make array does not contain make, return graceful
        if (make == null) {
        	modelSelect.options[optionNum] = new Option("Select A Model", 0);
        	return;
        }
        var models = make.models;
        for (var i=0; i<models.length; i++) {
       		var model = models[i];
       		modelSelect.options[optionNum++] = new Option(model.modelName, model.modelId);
        }
    }
    
    function populateResearchYears(modelId) {
        var yearSelect = document.research_search.year;
        yearSelect.options.length = 0;
        var optionNum = 0;
        
        // get make object
        var makeSelect = document.research_search.make;
        var makeId = makeSelect[makeSelect.selectedIndex].value;
        var make = getResearchMake(makeId);
                
        // get model object
        var model = getResearchModel(make.models, modelId);
        
        // if model array does not contain model, return graceful
        if (model == null) {
        	//yearSelect.options[optionNum] = new Option("Select A Year", 0);
        	//return;
        	// just get the 1st one in the list
        	model = make.models[0];
        }
        
        // populate years select
        var years = model.years;
        for (var i=0; i<years.length; i++) {
       		var year = years[i];
       		yearSelect.options[optionNum++] = new Option(year.yearName, year.yearName);
        }
    }
    
    function populateResearchModelsYears(makeId) {
        // populate model drop-down
        populateResearchModels(makeId);  
        
        // get selected model
        var modelSelect = document.research_search.model;
        var modelId = modelSelect[modelSelect.selectedIndex].value;   
        
        // populate year drop-down
        populateResearchYears(modelId);
    }
    
    function selectResearchMake(makeId) {
        var makeSelect = document.research_search.make;
        for (i=0;i<makeSelect.options.length;i++) {
            if (makeSelect.options[i].value == makeId) {
                makeSelect.options[i].selected = true;
            }
        }
    }
    
    function selectResearchModel(modelId) {
        var modelSelect = document.research_search.model;
        for (i=0;i<modelSelect.options.length;i++) {
            if (modelSelect.options[i].value == modelId) {
                modelSelect.options[i].selected = true;
            }
        }
    }
    
    function selectResearchYear(yearName) {
        var yearSelect = document.research_search.year;
        for (i=0;i<yearSelect.options.length;i++) {
            if (yearSelect.options[i].value == yearName) {
                yearSelect.options[i].selected = true;
            }
        }
    }
    
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    
    
    function render() {
       showMessage();
       setTimeout('renderList()',500);
    }
        
    function showMessage() {
        var msgbox = document.getElementById('messagebox');
        if (msgbox != null) {
            msgbox.style.left  = Math.round((document.body.clientWidth - msgbox.offsetWidth) / 2) + "px" ;
            msgbox.style.top   = Math.round(((document.body.clientHeight - msgbox.offsetHeight) / 3) + document.body.scrollTop) + "px";
            msgbox.style.visibility = 'visible';
        }
    }
    
    function hideMessage() {
        var msgbox = document.getElementById('messagebox');
        if (msgbox != null) {
            msgbox.style.visibility = 'hidden';
        }
    }


    function addCommas(nStr) {
		nStr += '';
		var x = nStr.split('.');
		var x1 = x[0];
		var x2 = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + ',' + '$2');
		}
		return x1 + x2;
	}

	function sortByPrice(a, b) {
	    var x = a.price;
		var y = b.price;
	    // $0 prices should be at the end of list
	    if (x == 0) {
	        x = 10000000
	    }
	    if (y == 0) {
	        y = 10000000
	    }
		return ((x < y) ? -1 : ((x > y) ? 1 : 0));
	}
	
	function sortByDistance(a, b) {
		var x = a.distance;
		var y = b.distance;
		return ((x < y) ? -1 : ((x > y) ? 1 : 0));
	}
	
	function sortByMileage(a, b) {
		var x = a.mileage;
		var y = b.mileage;
		// 0 mileage should be at the end of list
	    if (x == 0) {
	        x = 100000000
	    }
	    if (y == 0) {
	        y = 100000000
	    }
		return ((x < y) ? -1 : ((x > y) ? 1 : 0));
	}
	
	function sortByYear(a, b) {
		var x = a.year;
		var y = b.year;
		return ((x < y) ? 1 : ((x > y) ? -1 : 0));
	}
	
	function sortByCarfaxReport(a, b) {
		var x = a.carfaxReport;
		var y = b.carfaxReport;
		var w = a.carfaxSingleOwner;
		var z = b.carfaxSingleOwner;
		if (x == y) {
            if (w == z) {
                return 0;
            }
            return (w < z) ? -1 : 1;    
        }
        return (x < y) ? 1 : -1;
	}
	
	function sortByCarfaxSingleOwner(a, b) {
		var x = a.carfaxReport;
		var y = b.carfaxReport;
		var w = a.carfaxSingleOwner;
		var z = b.carfaxSingleOwner;
		if (w == z) {
            if (x == y) {
                return 0;
            }
            return (x < y) ? 1 : -1;    
        }
        return (w < z) ? 1 : -1;
	}
	
	/*
	function escapeQuotes(string) {
		return string.replace(/('|")/g, "\\$1");	
	}
	*/
	
	function Car(id, make, model, trim, color, latitude, longitude, dealerName, address, city, state, zip, phone,
	             year, price, mileage, optionsDesc, promoText, photoAvailable, photoUrl, distance, carfaxReport, carfaxSingleOwner, premium) {
    	this.id = id;
        this.make = make;
        this.model = model;
        this.trim = trim;
        this.color = color;
        this.latitude = latitude;
        this.longitude = longitude;
		this.dealerName = dealerName;
		this.address = address;
		this.city = city;
		this.state = state;
		this.zip = zip;
		this.phone = phone;
		this.year = year;
		this.price = price;
		this.mileage = mileage;
		this.optionsDesc = optionsDesc;
		this.promoText = promoText;
		this.photoAvailable = photoAvailable;
		this.photoUrl = photoUrl;
		this.distance = distance;
		this.carfaxReport = carfaxReport;
		this.carfaxSingleOwner = carfaxSingleOwner;
		this.premium = premium;
   	}
   		
   	
   	function setMaxDistance(distance) {
        var maxDistance = document.getElementById('storeMaxDistance');
        maxDistance.value = distance;
    }
    function getMaxDistance() {
        var maxDistance = document.getElementById('storeMaxDistance');
        return maxDistance.value;
    }
    
    function setMaxPrice(price) {
        var maxPrice = document.getElementById('storeMaxPrice');
        maxPrice.value = price;
    }
    function getMaxPrice() {
        var maxPrice = document.getElementById('storeMaxPrice');
        return maxPrice.value;
    }
    
    function setMaxMileage(mileage) {
        var maxMileage = document.getElementById('storeMaxMileage');
        maxMileage.value = mileage;
    }
    function getMaxMileage() {
        var maxMileage = document.getElementById('storeMaxMileage');
        return maxMileage.value;
    }
    
    function setVids(vids) {
        var vidsElement = document.getElementById('vids');
        vidsElement.value = vids;
    }
    function getVids() {
        var vidsElement = document.getElementById('vids');
        return vidsElement.value;
    }
    
    
	function distanceHandler(value) {
		//maxDistance = value;
		setMaxDistance(value);
		$('distanceDisplay').innerHTML=value + ' miles away';
		render();
	}

	
	function priceHandler(v, priceMaxMarker, eventType) {
		var value = Math.round(v * priceMaxMarker);
		if (value == priceMaxMarker) {
		    $('priceDisplay').innerHTML='$' + addCommas(priceMaxMarker) + ' and up';
		} else {
		    $('priceDisplay').innerHTML='$' + addCommas(value);
		}
		if (eventType == "change") {
		    setMaxPrice(value);
		    render();
		}
	}
	
	
	function mileageHandler(value) {
		//maxMileage = value;
		setMaxMileage(value);
		$('milesDisplay').innerHTML=addCommas(value) + ' miles'
		render();
	}
	
	function popup(url) {
	    var options = "height=530,width=640,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,left=100,top=5";
	    win2 = window.open(url, 'Auto_Photo', options);
	    win2.focus();
	}

	function toggleNewSearch() {
        var box = document.getElementById('newSearchBox');
        var icon = document.getElementById('newSearchIcon');
        if (box != null && icon != null) {
            if (box.style.display == 'none') {
                box.style.display = 'block';
                icon.src = '/images/minus.gif'
                //Effect.Appear('newSearchBox',{duration:.5});
            } else {
                box.style.display = 'none';
                //Effect.SlideUp('newSearchBox',{duration:.5});
                icon.src = '/images/plus.gif'
            }
        }
    }
    
    function toggleVehicleOptions() {
    	var vehicleOptions = document.getElementById('vehicleOptions');
        if (vehicleOptions.style.display == 'none') {
            Effect.BlindDown('vehicleOptions');
            var vehicleOptionsLink = document.getElementById('vehicleOptionsLink');
            vehicleOptionsLink.innerHTML = "Hide Vehicle Options";
        } else {
            vehicleOptions.style.display = 'none';
            var vehicleOptionsLink = document.getElementById('vehicleOptionsLink');
            vehicleOptionsLink.innerHTML = "Show Vehicle Options";
        }
    }

    
	function showPhotoBox(imageUrl) {
        var photoBox = document.getElementById('photoBox');
    	var html = "<center><table border=0 cellpadding=0 cellspacing=0><tr><td colspan=2>&nbsp;</td><td align=right><a style='font-size:12px;color:#28ACE5;' href='javascript:void(0);' onclick='javascript:hidePhotoBox();'><u>close X</u></a></td></tr>";
    	html += "<tr><td colspan=3 align=center><img title='Click to close' src=" + imageUrl + "></td></tr></table></center>";
    	photoBox.innerHTML = html;
        Effect.Appear('photoBox');
        //dim background
        var cover = document.getElementById('cover');
        cover.style.display = 'block';
    }
    
    function hidePhotoBox() {
        var photoBox = document.getElementById('photoBox');
        photoBox.style.display = 'none';
        // un-dim background
        var cover = document.getElementById('cover');
        cover.style.display = 'none';
    }
    
    function showVevoVideo(vin) {
        var videoScreen = document.getElementById('videoScreen');
        videoScreen.style.display = 'block';
        var html = "<center><table border=0 cellpadding=0 cellspacing=0><tr><td colspan=2>&nbsp;</td><td align=right><a style='font-size:12px;color:#28ACE5;' href='javascript:void(0);' onclick='javascript:removeVevoVideo()'><u>close X</u></a></td></tr>";
    	html += "<tr><td colspan=3 align=center><iframe name=mapFrame src = http://videos.vehicledata.com/vevo.cfm?vin=" + vin + "&dataPartner=3501 frameborder=0 scrolling=no height=350 width=425 marginwidth=0 marginheight=0></iframe></td></tr></table></center>";
        videoScreen.innerHTML = html;
        // dim background
        var cover = document.getElementById('cover');
        cover.style.display = 'block';
    }
    
    function removeVevoVideo() {
        var videoScreen = document.getElementById('videoScreen');
        videoScreen.style.display = 'none';
        videoScreen.innerHTML = "";
        // un-dim background
        var cover = document.getElementById('cover');
        cover.style.display = 'none';
    }

    function showContactSeller() {
        var contactSeller = document.getElementById('contactSeller');
    	contactSeller.style.display = 'block';
        //dim background
        var cover = document.getElementById('cover');
        cover.style.display = 'block';
    }
    
    function hideContactSeller() {
        var contactSeller = document.getElementById('contactSeller');
        contactSeller.style.display = 'none';
        // un-dim background
        var cover = document.getElementById('cover');
        cover.style.display = 'none';
    }
    
    function isInteger(val){
	    if (isBlank(val)) {
	        return false;
	    }
	    for(var i=0;i<val.length;i++){
	    	if(!isDigit(val.charAt(i))){
	    	    return false;
	    	}
	    }
	    return true;
	}
		
	function isDigit(num) {
	    if (num.length > 1) {
	        return false;
	    }
	    var string="1234567890";
	    if (string.indexOf(num) != -1){
	        return true;
	    }
	    return false;
	}

	function isBlank(val){
		if (val==null) {
		    return true;
		}
		for(var i=0;i<val.length;i++) {
			if ( (val.charAt(i)!=' ') &&
			     (val.charAt(i)!="\t") &&
			     (val.charAt(i)!="\n") &&
			     (val.charAt(i)!="\r")){
	            return false;
			}
		}
		return true;
	}
	
	function LTrim(value)  {	
    	var re = /\s*((\S+\s*)*)/;
    	return value.replace(re, "$1");	
    }
    
    function RTrim(value) {	
    	var re = /((\s*\S+)*)\s*/;
    	return value.replace(re, "$1");	
    }
    
    function Trim(value) {	
    	return LTrim(RTrim(value));	
    }
	
	function loanPopUrl(url) {
		sealWin=window.open(url,"win",'toolbar=0,location=0,directories=0,status=1,menu bar=0,scrollbars=1,width=600,height=600');
		self.name = "mainWin"; 
	}
	
    
    function urlRewrite(form) {
        // all the forms have make/model
        var makeSelect = form.make;
        var modelSelect = form.model;
        var makeName = makeSelect.options[makeSelect.selectedIndex].text;
        var modelName = modelSelect.options[modelSelect.selectedIndex].text;
        var makeId = makeSelect.options[makeSelect.selectedIndex].value;
        var modelId = modelSelect.options[modelSelect.selectedIndex].value;
        
        var link = ""
        if (form.name == "used_search") {
            var zip = form.zip.value;
            var radiusSelect = form.radius;
            var radius = radiusSelect.options[radiusSelect.selectedIndex].value;
            link = "/" + makeId + "/" + modelId + "/" + zip + "/" + radius + "/" + makeName.replace(" ", "-") + "/" + modelName.replace(" ", "-") + "/used-cars";
        
        } else if (form.name == "new_search") {
            var zip = form.zip.value;
            var radiusSelect = form.radius;
            var radius = radiusSelect.options[radiusSelect.selectedIndex].value;
            link = "/" + makeId + "/" + modelId + "/" + zip + "/" + radius + "/" + makeName.replace(" ", "-") + "/" + modelName.replace(" ", "-") + "/new-cars";
            
        } else if (form.name == "new_quote") {
            var zip = form.zip.value;
            link = "/" + makeId + "/" + modelId + "/" + zip + "/new-cars/price-quote/" + makeName.replace(" ", "-") + "/" + modelName.replace(" ", "-");
            
        } else if (form.name == "review_search" || form.name == "review_new_search") {
            var yearSelect = form.year;
            var year = yearSelect.options[yearSelect.selectedIndex].value;
            link = "/" + makeId + "/" + modelId + "/" + year + "/" + makeName.replace(" ", "-") + "/" + modelName.replace(" ", "-") + "/reviews/overview";
        
        } else if (form.name == "research_search") {
            var yearSelect = form.year;
            var year = yearSelect.options[yearSelect.selectedIndex].value;
            link = "/" + makeName.replace(" ", "-").toLowerCase() + "/" + modelName.replace(" ", "-").toLowerCase() + "/" + year;
        }
        
        
        
        // validate
        if (form.name == "used_search" || form.name == "new_search" || form.name == "new_quote") {
            if (zip.length != 5 || !isInteger(zip)) {
                alert("Please enter a valid Zip");
                return false;
            }
        }
        
        
        // send
        location.href=link;
        
        /*
        hiddenField = document.createElement('input');
        hiddenField.setAttribute('type','');
        hiddenField.setAttribute('name', '');
        hiddenField.setAttribute('value', '');
        form.appendChild(hiddenField);
        */
        
        return false;
    }