var srchFldTimer;
var srchFldHideTimer;
dtDate = new Date();
iterations = dtDate.getDay() + dtDate.getHours() + dtDate.getMinutes() + dtDate.getSeconds() + dtDate.getMilliseconds();

document.getElementById("searchCommandPane").className = "search";

// Make Selection //
function selectAllMakes(target){
    var IsChecked = target.checked;
    MakeIdString = "";
    for(var i = 0; document.getElementById('Make_' + i) != null; i++){
        document.getElementById('Make_' + i).checked = IsChecked;
        if(IsChecked){
            MakeIdString = MakeIdString + (MakeIdString.length > 0 ? "," : "") + document.getElementById('Make_' + i).value;
        }
    }
    document.getElementById("MakeIDs").value = MakeIdString;
}

function updateMakes(target, MakeID){
    var MakeIdString = document.getElementById("MakeIDs").value;
    if(target.checked){
        MakeIdString = MakeIdString + (MakeIdString.length > 0 ? "," : "") + MakeID;
    }else{ 
        document.getElementById('SelectAllMakes').checked = false;
        var MakeIds = MakeIdString.split(',');
        MakeIdString = "";
        for(var i = 0; i < MakeIds.length; i++){
            if(MakeIds[i] != MakeID){
                MakeIdString = MakeIdString + (MakeIdString.length > 0 ? "," : "") + MakeIds[i];
            }
        }
    }
    document.getElementById("MakeIDs").value = MakeIdString;
}

function hideNotSelectedMakes(){
    if(document.getElementById('SelectAllMakes').checked){
        for(var i = 0; document.getElementById('Make_' + i) != null; i++){
            document.getElementById('MakeHolder_' + i).className = "hidden";
        }
    }else{
        document.getElementById('MakeAllHolder').className = "hidden";
        var MakeIdString = document.getElementById("MakeIDs").value;
        var MakeIds = MakeIdString.split(',');
        var used = false;
        for(var i = 0; document.getElementById('Make_' + i) != null; i++){
            used = false;
            for(var j = 0; j < MakeIds.length; j++){
                if(document.getElementById('Make_' + i).value == MakeIds[j]){
                    used = true;
                }
            }
            document.getElementById('MakeHolder_' + i).className = (used ? "" : "hidden");
        }
    }
    document.getElementById("MakeGo").className = "hidden";
    document.getElementById("MakeReset").className = "resetBtn";
}

function resetMakes(){
    for(var i = 0; document.getElementById('Make_' + i) != null; i++){
        document.getElementById('MakeHolder_' + i).className = "";
    }
    document.getElementById("MakeGo").className = "goBtn";
    document.getElementById("MakeReset").className = "hidden";
    document.getElementById('MakeAllHolder').className = "";
    document.getElementById('pane2').innerHTML = "<div class=\"full\">&laquo; select a make of vehicle</div>";
    document.getElementById('pane3').innerHTML = "<div class=\"full\">&laquo; select a model of vehicle</div>";
    document.getElementById('pane4').innerHTML = "<div class=\"full\">&laquo; select a year of vehicle</div>";
}

function getModels(){
    var MakeIdString = document.getElementById("MakeIDs").value;
    if(MakeIdString.length > 0){
        hideNotSelectedMakes();
        xmlHttp=GetXmlHttpObject();
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4) { 
                document.getElementById("pane2").innerHTML = xmlHttp.responseText;
            }
        } 
        iterations++;
        xmlHttp.open("GET","/AJAX/getAvailableModels.aspx?MakeIdString=" + MakeIdString + "&iterations=" + iterations,true);
        xmlHttp.send(null);
    }
}

// Model Selection //
function selectAllModels(target){
    var IsChecked = target.checked;
    ModelIdString = "";
    for(var i = 0; document.getElementById('Model_' + i) != null; i++){
        document.getElementById('Model_' + i).checked = IsChecked;
        if(IsChecked){
            ModelIdString = ModelIdString + (ModelIdString.length > 0 ? "," : "") + document.getElementById('Model_' + i).value;
        }
    }
    document.getElementById("ModelIDs").value = ModelIdString;
}

function updateModels(target, ModelID){
    var ModelIdString = document.getElementById("ModelIDs").value;
    if(target.checked){
        ModelIdString = ModelIdString + (ModelIdString.length > 0 ? "," : "") + ModelID;
    }else{
        document.getElementById('SelectAllModels').checked = false;
        var ModelIds = ModelIdString.split(',');
        ModelIdString = "";
        for(var i = 0; i < ModelIds.length; i++){
            if(ModelIds[i] != ModelID){
                ModelIdString = ModelIdString + (ModelIdString.length > 0 ? "," : "") + ModelIds[i];
            }
        }
    }
    document.getElementById("ModelIDs").value = ModelIdString;
}

function hideNotSelectedModels(){
    if(document.getElementById('SelectAllModels').checked){
        for(var i = 0; document.getElementById('Model_' + i) != null; i++){
            document.getElementById('ModelHolder_' + i).className = "hidden";
        }
    }else{
        document.getElementById('ModelAllHolder').className = "hidden";
        var ModelIdString = document.getElementById("ModelIDs").value;
        var ModelIds = ModelIdString.split(',');
        var used = false;
        for(var i = 0; document.getElementById('Model_' + i) != null; i++){
            used = false;
            for(var j = 0; j < ModelIds.length; j++){
                if(document.getElementById('Model_' + i).value == ModelIds[j]){
                    used = true;
                }
            }
            document.getElementById('ModelHolder_' + i).className = (used ? "" : "hidden");
        }
    }
    document.getElementById("ModelGo").className = "hidden";
    document.getElementById("ModelReset").className = "resetBtn";
}

function resetModels(){
    for(var i = 0; document.getElementById('Model_' + i) != null; i++){
        document.getElementById('ModelHolder_' + i).className = "";
    }
    document.getElementById("ModelGo").className = "goBtn";
    document.getElementById("ModelReset").className = "hidden";
    document.getElementById('ModelAllHolder').className = "";
    document.getElementById('pane3').innerHTML = "<div class=\"full\">&laquo; select a model of vehicle</div>";
    document.getElementById('pane4').innerHTML = "<div class=\"full\">&laquo; select a year of vehicle</div>";
}

function getYears(){
    var ModelIdString = document.getElementById("ModelIDs").value;
    if(ModelIdString.length > 0){
        hideNotSelectedModels();
        xmlHttp=GetXmlHttpObject();
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4) { 
                document.getElementById("pane3").innerHTML = xmlHttp.responseText;
            }
        } 
        iterations++;
        xmlHttp.open("GET","/AJAX/getAvailableYears.aspx?ModelIdString=" + ModelIdString + "&iterations=" + iterations,true);
        xmlHttp.send(null);
    }
}

// Year Selection //
function selectAllYears(target){
    var IsChecked = target.checked;
    YearString = "";
    for(var i = 0; document.getElementById('Year_' + i) != null; i++){
        document.getElementById('Year_' + i).checked = IsChecked;
        if(IsChecked){
            YearString = YearString + (YearString.length > 0 ? "," : "") + document.getElementById('Year_' + i).value;
        }
    }
    document.getElementById("Years").value = YearString;
}

function updateYears(target, Year){
    var YearString = document.getElementById("Years").value;
    if(target.checked){
        YearString = YearString + (YearString.length > 0 ? "," : "") + Year;
    }else{
        document.getElementById('SelectAllYears').checked = false;
        var Years = YearString.split(',');
        YearString = "";
        for(var i = 0; i < Years.length; i++){
            if(Years[i] != Year){
                YearString = YearString + (YearString.length > 0 ? "," : "") + Years[i];
            }
        }
    }
    document.getElementById("Years").value = YearString;
}

function hideNotSelectedYears(){
    if(document.getElementById('SelectAllYears').checked){
        for(var i = 0; document.getElementById('Year_' + i) != null; i++){
            document.getElementById('YearHolder_' + i).className = "hidden";
        }
    }else{
        document.getElementById('YearAllHolder').className = "hidden";
        var YearString = document.getElementById("Years").value;
        var Years = YearString.split(',');
        var used = false;
        for(var i = 0; document.getElementById('Year_' + i) != null; i++){
            used = false;
            for(var j = 0; j < Years.length; j++){
                if(document.getElementById('Year_' + i).value == Years[j]){
                    used = true;
                }
            }
            document.getElementById('YearHolder_' + i).className = (used ? "" : "hidden");
        }
    }
    document.getElementById("YearGo").className = "hidden";
    document.getElementById("YearReset").className = "resetBtn";
}

function resetYears(){
    for(var i = 0; document.getElementById('Year_' + i) != null; i++){
        document.getElementById('YearHolder_' + i).className = "";
    }
    document.getElementById("YearGo").className = "goBtn";
    document.getElementById("YearReset").className = "hidden";
    document.getElementById('YearAllHolder').className = "";
    document.getElementById('pane4').innerHTML = "<div class=\"full\">&laquo; select a year of vehicle</div>";
}

function getMiles(){
    var ModelIdString = document.getElementById("ModelIDs").value;
    var YearString = document.getElementById("Years").value;
    if(YearString.length > 0){
        hideNotSelectedYears();
        xmlHttp=GetXmlHttpObject();
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4) { 
                document.getElementById("pane4").innerHTML = xmlHttp.responseText;
            }
        } 
        iterations++;
        xmlHttp.open("GET","/AJAX/getAvailableMiles.aspx?ModelIdString=" + ModelIdString + "&YearString=" + YearString + "&iterations=" + iterations,true);
        xmlHttp.send(null);
    }
}

// Miles Selection //
function selectAllMiles(target){
    var IsChecked = target.checked;
    MileString = "";
    for(var i = 0; document.getElementById('Mile_' + i) != null; i++){
        document.getElementById('Mile_' + i).checked = IsChecked;
        if(IsChecked){
            MileString = MileString + (MileString.length > 0 ? "," : "") + document.getElementById('Mile_' + i).value;
        }
    }
    document.getElementById("Miles").value = MileString;
}

function updateMiles(target, Mile){
    var MileString = document.getElementById("Miles").value;
    if(target.checked){
        MileString = MileString + (MileString.length > 0 ? "," : "") + Mile;
    }else{
        document.getElementById('SelectAllMiles').checked = false;
        var Miles = MileString.split(',');
        MileString = "";
        for(var i = 0; i < Miles.length; i++){
            if(Miles[i] != Mile){
                MileString = MileString + (MileString.length > 0 ? "," : "") + Miles[i];
            }
        }
    }
    document.getElementById("Miles").value = MileString;
}

function getAutos(){
    var ModelIdString = document.getElementById("ModelIDs").value;
    var YearString = document.getElementById("Years").value;
    var MileString = document.getElementById("Miles").value;
    if(MileString.length > 0){
        hideFields();
        xmlHttp=GetXmlHttpObject();
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4) { 
                document.getElementById("items").innerHTML = xmlHttp.responseText;
                showViewAllButton();
            }
        } 
        iterations++;
        xmlHttp.open("GET","/AJAX/getAvailableAutos.aspx?ModelIdString=" + ModelIdString + "&YearString=" + YearString + "&MileString=" + MileString + "&iterations=" + iterations,true);
        xmlHttp.send(null);
    }
}

function showFields(){
    clearTimeout(srchFldTimer);
    clearTimeout(srchFldHideTimer);
    currentHeight = document.getElementById("searchFields").offsetHeight;
    document.getElementById("searchFields").style.height = "auto";
    document.getElementById("searchFields").className = "searchFields";
    var height = document.getElementById("searchFields").offsetHeight;
    document.getElementById("searchFields").style.height = currentHeight + "px";
    displayFields(currentHeight, height);
}

function hideFields(){
    srchFldHideTimer = setTimeout(function() { removeFields(); }, 500);
}

function displayFields(height, maxheight){
    document.getElementById("searchFields").style.height = height + "px";
    if(height < maxheight){
        height += Math.floor((maxheight - height)/3 + 4);
        height = height > maxheight ? maxheight : height;
        srchFldTimer = setTimeout(function() { displayFields(height, maxheight); }, 20);
    }else{
        document.getElementById("searchFields").style.height = "auto";
    }
}

function removeFields(){            
    currentHeight = document.getElementById("searchFields").offsetHeight;
    newHeight = Math.floor(currentHeight/3 - 4);
    newHeight = newHeight < 0 ? 0 : newHeight;
    document.getElementById("searchFields").style.height = newHeight + "px";
    if(newHeight > 0){
        srchFldHideTimer = setTimeout(function() { removeFields(); }, 20);
    }else{
        document.getElementById("searchFields").style.height = "auto";
        document.getElementById("searchFields").className = "hidden";
    }
}

function GetXmlHttpObject(){
    var xmlHttp=null;
    try {// Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e) {// Internet Explorer
        try{
             xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e){
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

