﻿
var qsParameterNames = new Array();
var qsParameterValues = new Array();



$(document).ready(function() {
    // close the offDiv content sections
    //(doing this with js instead of css means if no js, content is all visible)
    $('h3.closed + ul').hide();
    // Make facet title clickable for toggling options
    $("#facet h3").click(function() {
        $(this).next("ul").slideToggle('fast');
        $(this).toggleClass('closed');
        $(this).toggleClass('open');
        return false;
    });
});


//makeChanged

function parseQueryStringIntoNameValues() {
    var queryStringParams = new Array();
    var query = window.location.search.substring(1);
    var parameters = query.split('&');
    return parameters;
}

function populateDropdowns() {

    // disable the find now if we have less than 1 item selected
    EnableFindButton();
}

var bNextChg = false;
function UpdateLocationDetails() {
   
}

function buildParams() {
    qsParameterNames = new Array();
    qsParameterValues = new Array();

    var ddMake = $("#make");
    var ddModel = $("#modelrange");
    var ddBodystyle = $("#bodystyle");
    var ddFuel = $("#fueltype");
    var ddAge = $("#age");
    var ddMileage = $("#mileage");
    var ddBudget = $("#budget");
//    var ddDistance = $("#distance");
    var ddLocate = $("#locate");
    var tbPostCode = $("#qspostcode");
//    var ddRegion = $("#region");
    var imagesOnly = $get("onlyImages").checked;
    
    if (ddMake.length > 0) {
        qsParameterNames[qsParameterNames.length] = "make";
        qsParameterValues[qsParameterValues.length] = ddMake.val();
    }
    if (ddMake.val()==""){
       ddModel.val("");
    }
    if (ddModel.length > 0) {
        if (ddMake.length > 0) {
            qsParameterNames[qsParameterNames.length] = "modelrange";
            qsParameterValues[qsParameterValues.length] = ddModel.val();
        }
    }
    if (ddBodystyle.length > 0) {
        qsParameterNames[qsParameterNames.length] = "bodystyle";
        qsParameterValues[qsParameterValues.length] = ddBodystyle.val();
    }
    if (ddFuel.length > 0) {
        qsParameterNames[qsParameterNames.length] = "fueltype";
        qsParameterValues[qsParameterValues.length] = ddFuel.val();
    }
    if (ddAge.length > 0) {
        qsParameterNames[qsParameterNames.length] = "age";
        qsParameterValues[qsParameterValues.length] = ddAge.val();
    }
    if (ddMileage.length > 0) {
        qsParameterNames[qsParameterNames.length] = "mileage";
        qsParameterValues[qsParameterValues.length] = ddMileage.val();
    }
    if (ddBudget.length > 0) {
        qsParameterNames[qsParameterNames.length] = "budget";
        qsParameterValues[qsParameterValues.length] = ddBudget.val();
    }
    if (imagesOnly) {
        qsParameterNames[qsParameterNames.length] = "images";
        qsParameterValues[qsParameterValues.length] = 1;
    }

}

function GetCountParamsSelected() {
    var count = 0;

    if (IsDDLSelected("make")) ++count;
    if (IsDDLSelected("modelrange") && IsDDLSelected("make")) ++count;
    if (IsDDLSelected("bodystyle")) ++count;
    if (IsDDLSelected("fueltype")) ++count;
    if (IsDDLSelected("age")) ++count;
    if (IsDDLSelected("mileage")) ++count;
    if (IsDDLSelected("budget")) ++count;

    if ($get("onlyImages").checked)
        ++count;
    return count;
}

function IsDDLSelected(id) {
    var ddl = $('#' + id);
    return (ddl.val() != '');
}

var bBlockRePopulate=false;
function makeChanged() {
    bBlockRePopulate = true;
    $("#modelrange").val('');
    $("#bodystyle").val('');
    $("#fueltype").val('');
     $("#age").val('');
     $("#mileage").val('');
     $("#budget").val('');
    bBlockRePopulate = false;
    rePopulateDropdowns();
}

function rePopulateDropdowns() {
    if (bBlockRePopulate) return;
    buildParams();

    /// reloads the data to fill the dropdowns, based upon what is already selected
    GetQuickSearchParameters(qsParameterNames, qsParameterValues,
        onGetQuickSearchParametersSuceeded, onGetQuickSearchParametersFailed);

    // disable the find now if we have less than 1 item selected
    EnableFindButton();
}

function EnableFindButton() {
}



function onGetQuickSearchParametersSuceeded(results) {
    if ($get("make").selectedIndex == 0) {
        $get("modelrange").options.length = 1;
    }
    for (i = 0; i < results.length; i++) {
        var parameter = results[i];
        var dropdown = document.getElementById(parameter.Name);

        if (dropdown) {
            // get the dropdowns currently selected item
            var currentValue = null;
            currentValue = dropdown.value;

            // delete all the previous options 
            // EXCEPT the 'Any / All / No Preference' option which is the first in the list
            dropdown.options.length = 1;
            // populate with the rest
            for (j = 0; j < parameter.Items.length; j++) {
                var option = new Option(parameter.Items[j].Name, parameter.Items[j].Id);
                if (parameter.Items[j].Id == currentValue)
                    option.selected = true;
                dropdown.options[j + 1] = option;
            }
        }
    }
}

function onGetQuickSearchParametersFailed() {
    EnableFindButton();
    JSDebug("web service call failed :(");
}

var bBlockMultipleReqs = false;


function GetLocParams(bNoParams) {

    var tbPostcode = $("#qspostcode");
     var s 
    if (bNoParams == undefined || bNoParams == true) {s="?"; }
    else { s="&";}
   
  s += "st=postcode";  //+ ddLocation.val();
    var postcodeVal=URLEncode(tbPostcode.val());
    if (postcodeVal == "") postcodeVal = "empty";
    s = s + "&sv=" + postcodeVal;

    return s;
}

function TestPostCodeEntered() {
    var tbPostcode = $("#qspostcode").val();
    return !($.trim(tbPostcode)=='')
}

function DoQuickSearch() {
//    if (!TestPostCodeEntered()) {
//        alert("Please enter a postcode");
//        return;
//    }
        var url = buildResultsUrl();
        window.location.href = url;
}


function SaveQuickSearchToCookie() {
    buildParams();
    var queryParams = "";
    for (var i = 0; i < qsParameterNames.length; i++) {
        queryParams += qsParameterNames[i] + "|" + qsParameterValues[i] + ";"
    }
    queryParams += "[" +GetLocParams()+ "]";
    AddSessionCookie("QSearchParams", queryParams,null);
}


function displayError(message) {
    var errorMsg = document.getElementById("errorMessage");
    errorMsg.style.display = 'block';
    errorMsg.innerHTML = message;
    $(document).ready(function() {
        $('#findNow').css({ backgroundImage: 'url(' + StaticContentRoot + 'images/findmeacar.gif)' });
        $('#findNow').removeClass("loading");
    });
}


function buildResultsUrl() {
    // var url;
    var url = BuildJSUrl() + "search";
    if (GetCountParamsSelected() == 0) {
        url += GetLocParams(true);
        return url;
    }
    buildParams();
    var ddMake = $("#make");
    if (ddMake.val().length > 0) {
        url += "&make=" + ddMake.val();
    }

    var ddModel = $("#modelrange");
    if (ddModel.val().length > 0) {
        if (ddMake.val().length > 0) {
            url += "&modelrange=" + ddModel.val();
        }
    }

    url += GetUrlParamFromDDl("bodystyle");
    url += GetUrlParamFromDDl("fueltype");
    url += GetUrlParamFromDDl("age");
    url += GetUrlParamFromDDl("mileage");
    url += GetUrlParamFromDDl("budget");
    url += GetUrlParamFromDDl("minprice");
    url += GetUrlParamFromDDl("maxprice");



    var imagesOnly = $get("onlyImages").checked;
    if ($get("onlyImages").checked)
        url += "&images=1";

    var ddLocation = $("#locate").val();
    url = url.replace(/search\&/g, "search?");
    url = url + GetLocParams(false);
    var idxAmp=url.indexOf("&");
    if (url.indexOf("?") == -1 && idxAmp > -1) {
        url = url.replace(/\&/, "?");
        //url = url.substr(0, idxAmp - 1) + "?" + url.substr(idxAmp + 1);
    }
    return url;
}

function GetUrlParamFromDDl(id, blnIsValid) {
    var ddl = $('#' + id);
    if (ddl.length > 0) {
        blnIsValid = true;
        var s = ddl.val();
        if (IsStringValid(s)) {
            return "&" + id + "=" + ddl.val();
        }
    }
    blnIsValid = false;
    return "";
}


function doRedirect(result) {
    window.location.href = result;
}
