﻿function XHConn() {
    var xmlhttp, bComplete = false;
    try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
        try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
        catch (e) {
            try { xmlhttp = new XMLHttpRequest(); }
            catch (e) {
                xmlhttp = false;
            }
        }
    }

    if (!xmlhttp) return null;
    this.connect = function(sURL, sMethod, sVars, fnDone) {
        if (!xmlhttp) return false;
        bComplete = false;
        sMethod = sMethod.toUpperCase();
        try {
            if (sMethod == "GET") {
                xmlhttp.open(sMethod, sURL + "?" + sVars, true);
                xmlhttp.setRequestHeader("Content-Type", "application/json, text/javascript");
                sVars = "";
            }
            else {
                xmlhttp.open(sMethod, sURL, true);
                xmlhttp.setRequestHeader("Method", "POST " + sURL + " HTTP/1.1");
                xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            }
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && !bComplete) {
                    bComplete = true;
                    fnDone(xmlhttp);
                }
            };
            xmlhttp.send(sVars);
        }
        catch (e) {
            alert("error");
            return false;
        }
        return true;
    };
    return this;
}

var doAJAXCall = function(PageURL, ReqType, PostStr, FunctionName) {
    var myConn = new XHConn();
    if (myConn) {
        myConn.connect('' + PageURL + '', '' + ReqType + '', '' + PostStr + '', FunctionName);
    }
    else {
        alert("XMLHTTP not available. Try a newer/better browser, this application will not work!");
    }
}

/* Methods for getting car models for a specific make (brand) and populate the
   dropdown list in the car search page */
var fnGetCarModelsResponse = function(oXML) {
    var obj = eval(oXML.responseText);
    var selEl = document.getElementById("model");
    selEl.length = 0;

    for (var idx = 0; idx < obj.length; idx++) {
        var opt = document.createElement('option');
        opt.text = obj[idx].Name;
        opt.value = obj[idx].Id;

        try {
            selEl.add(opt, null); // standards compliant; doesn't work in IE
        }
        catch (ex) {
            selEl.add(opt); // IE only
        }
    }
};

function GetCarModels(ddl, lang) {
    var queryString = "action=models&c=" + lang + "&m=" + ddl[ddl.selectedIndex].value;
    doAJAXCall('/include/IncludeHandler.ashx', 'GET', queryString, fnGetCarModelsResponse);
}
