var req = null, req1, req2;
var prevTotal = temp_iCarsCount;
var bFirstTime = 0;
var TimerID = null;
var TimerID2 = null;

function QuickSearchChanges(action, ID, ID1, target, flag) {
    if (flag == true) {
        url = '/ajax.aspx?';
        url += "type=UR";
        url += "&action=" + action;
        url += "&ID=" + ID;
        url += "&ID1=" + ID1;
        url += "&random=" + Math.random();
        loadXMLDocEx(url, target);
        if (target == 1) ClearSelectEx(document.getElementById(ddlMake_ClientID), "Make");
        ClearSelectEx(document.getElementById(ddlModel_ClientID), "Model");
    } else {
        if (TimerID2) clearInterval(TimerID2);
        TimerID2 = setTimeout("QuickSearchChanges('" + action + "','" + ID + "','" + ID1 + "'," + target + ", true)", 200);
    }
    return false;
}
function processReqChangeEx1() {
    if (req1.readyState == 4) {
        if (req1.status == 200) {
            document.getElementById("invisible_div").innerHTML = req1.responseText;
            target = document.getElementById(ddlMake_ClientID);
            ClearSelect(target);
            CopyOptions(target, document.getElementById("temp_ddlMake"));
        }
        else {
            if (bFirstTime == 0) {
                alert("There was a problem retrieving the search results.\nClick 'Search' to view your search results now.");
                bFirstTime = -1;
            }
        }
        delete req1;
    }
}

function processReqChangeEx2() {
    if (req1.readyState == 4) {
        if (req1.status == 200) {
            document.getElementById("invisible_div").innerHTML = req1.responseText;
            target = document.getElementById(ddlModel_ClientID);
            ClearSelect(target);
            CopyOptions(target, document.getElementById("temp_ddlModel"));
        }
        else {
            if (bFirstTime == 0) {
                alert("There was a problem retrieving the search results.\nClick 'Search' to view your search results now.");
                bFirstTime = -1;
            }
        }
        delete req1;
    }
}

function SelectAction(flag) {
    if (document.forms[0].elements[ddlCategory_ClientID].value == "0" &&
				document.forms[0].elements[ddlMake_ClientID].value == "0" &&
				document.forms[0].elements[ddlModel_ClientID].value == "0" &&
				document.forms[0].elements[ddlPrice_ClientID].value == "0") {
        prevTotal = 0;
        return;
    }

    if (flag) {
        var url;
        var length;
        if (req != null) { req.Abort(); delete req; req = null; }
        url = '/ajax.aspx?';
        url += "type=UR";
        url += "&action=total";
        url += "&iCategoryID=" + document.forms[0].elements[ddlCategory_ClientID].value;
        url += "&iMakeID=" + document.forms[0].elements[ddlMake_ClientID].value;
        url += "&iModelID=" + document.forms[0].elements[ddlModel_ClientID].value;
        url += "&iPriceID=" + document.forms[0].elements[ddlPrice_ClientID].value;
        url += "&random=" + Math.random();
        loadXMLDoc(url);
    } else {
        if (TimerID) clearInterval(TimerID);
        TimerID = setTimeout("SelectAction(true)", 200);
    }
    return;
}

function ClearSelect(target) {
    while (target.options.length > 1) { target.options[1] = null; }
    if (target.options.length > 0) target.options[0] = null;
}
function ClearSelectEx(target, text) {
    while (target.options.length > 1) { target.options[1] = null; }
    target.options[0] = new Option(text, "0", false, true);
}
function CopyOptions(target, source) {
    for (i = 0; i < source.options.length; i++)
        target.options[i] = new Option(source.options[i].text, source.options[i].value, false, source.options[i].selected);
}


function loadXMLDocEx(url, target) {
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req1 = new XMLHttpRequest();
        // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req1 = new ActiveXObject("Microsoft.XMLHTTP");
    }
    switch (target) {
        case 1:
            req1.onreadystatechange = processReqChangeEx1;
            break;
        case 2:
            req1.onreadystatechange = processReqChangeEx2;
            break;
    }
    req1.open("GET", url, true);
    req1.send(null);
}

function loadXMLDoc(url) {
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.onreadystatechange = processReqChange;
    req.open("GET", url, true);
    req.send(null);
}

function processReqChange() {
    var inc;
    if (req.readyState == 4) {
        if (req.status == 200) {
            var total = String(req.responseText);
            inc = Math.abs(Math.round((total - prevTotal) / 20));
            if (inc == 0) inc = 1;
            countUp(prevTotal, total, inc);
            prevTotal = total;
        }
        else {
            if (bFirstTime == 0) {
                alert("There was a problem retrieving the search results.\nClick 'Search' to view your search results now.");
                bFirstTime = -1;
            }
        }
        delete req;
        req = null;
    }
}

function countUp(counter, target, inc) {
    counter = parseInt(counter);
    target = parseInt(target);
    resultString = counter;
    if (counter == target) return;
    if (counter < target) {
        counter = counter + inc;
        if (counter > target) counter = target;
    } else {
        counter = counter - inc;
        if (counter < target) counter = target;
    }
    setTimeout("countUp(" + counter + ", " + target + ", " + String(inc) + ")", 1);
}
