var rowid;

function getPage(type, postString)
    {
        var pagename = "fetchYMM.asp";
        
        var client = new R9HTTPXml();
	    //init with path, argument string, and action code (used in callback (CB))
        
        
        //var theCall = pagename + "?" + postString;
        //prompt("foo", theCall);
        client.init(pagename, postString, type);
        try {
                client.asyncGET(new subCB());
        } catch (e) {
                alert(e);
        }    
    }
    
    function getMakes()
    {
    var year = document.getElementById('yr').value;
    
    //t = type (make/model/engine)
    //year = year
    //make = make
    getPage("make","t=make&year=" + year);
    }
    function getMakesGrid(ctrlname)
    {
    rowid = ctrlname.substring(ctrlname.lastIndexOf('_')+1);
    var year = document.getElementById(ctrlname).value;
    
    //t = type (make/model/engine)
    //year = year
    //make = make
    getPage("makegrid","t=make&year=" + year);
    }
    
    function getModels()
    {
    var year = document.getElementById('yr').value;
    var make = document.getElementById('make').value;
    //t = type (make/model/engine)
    //year = year
    //make = make
    getPage("model","t=model&year=" + year + "&make=" + make);
    }
    function getModelsGrid(ctrlname)
    {
    rowid = ctrlname.substring(ctrlname.lastIndexOf('_')+1);    
    var year = document.getElementById('vehiclegrid_Year_'+rowid).value;
    var make = document.getElementById('vehiclegrid_Make_'+rowid).value;
    //t = type (make/model/engine)
    //year = year
    //make = make
    getPage("modelgrid","t=model&year=" + year + "&make=" + make);
    }
    
    function getEngines()
    {
    var year = document.getElementById('yr').value;
    var make = document.getElementById('make').value;
    var model = document.getElementById('model').value;
    //t = type (make/model/engine)
    //year = year
    //make = make
    getPage("engine","t=engine&year=" + year + "&make=" + make + "&model=" + model);
    }
    function getEnginesGrid(ctrlname)
    {
    rowid = ctrlname.substring(ctrlname.lastIndexOf('_')+1);    
    var year = document.getElementById('vehiclegrid_Year_'+rowid).value;
    var make = document.getElementById('vehiclegrid_Make_'+rowid).value;
    var model = document.getElementById('vehiclegrid_Model_'+rowid).value;
    //t = type (make/model/engine)
    //year = year
    //make = make
    getPage("enginegrid","t=engine&year=" + year + "&make=" + make + "&model=" + model);
    }

// handle onreadystatechange event for asynch updates
    function subCB() {
        this.onLoad = function(xmlobj) {
            // only if req shows "loaded"
            //alert(xmlobj.getText());
            if (xmlobj.xmlhttp.readyState == 4) {
                // only if "OK"
                if (xmlobj.xmlhttp.status == 200) {
                    var text = xmlobj.getText();
                        if (xmlobj.uservars != null && xmlobj.uservars == 'refresh') {
                            // Refresh page
                            document.location.href = document.location.href;
                         } else if (xmlobj.uservars != null && xmlobj.uservars == 'action') {
                            if (typeof someotherfunction == "function") {
                                someotherfunction(text);
                            }
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'addhours') {
                        
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'postPage') {
                            document.getElementById('theContent').innerHTML = text;
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'make') {
                            var cMake = document.getElementById('make');
                            var cModel = document.getElementById('model');
                            var cEngine = document.getElementById('engine');
                            
                            //alert(text);
                            var rtn = text.split("|");
                            
                            changeList(cMake, rtn, 0)
                            
                            
                            
                            cMake.disabled = false;
                            cModel.disabled = true;
                            cEngine.disabled = true;
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'makegrid') {
                            var cMake = document.getElementById('vehiclegrid_Make_'+rowid);
                            var cModel = document.getElementById('vehiclegrid_Model_'+rowid);
                            var cEngine = document.getElementById('vehiclegrid_Engine_'+rowid);
                            
                            //alert(text);
                            var rtn = text.split("|");
                            
                            changeList(cMake, rtn, 0)
                            
                            
                            
                            cMake.disabled = false;
                            cModel.disabled = true;
                            cEngine.disabled = true;
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'model') {
                            var cMake = document.getElementById('make');
                            var cModel = document.getElementById('model');
                            var cEngine = document.getElementById('engine');
                            
                            //alert(text);
                            var rtn = text.split("|");
                            changeList(cModel, rtn, 0)
                            
                            cMake.disabled = false;
                            cModel.disabled = false;
                            cEngine.disabled = true;
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'modelgrid') {
                            var cMake = document.getElementById('vehiclegrid_Make_'+rowid);
                            var cModel = document.getElementById('vehiclegrid_Model_'+rowid);
                            var cEngine = document.getElementById('vehiclegrid_Engine_'+rowid);
                            
                            //alert(text);
                            var rtn = text.split("|");
                            changeList(cModel, rtn, 0)
                            
                            cMake.disabled = false;
                            cModel.disabled = false;
                            cEngine.disabled = true;
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'engine') {
                            var cMake = document.getElementById('make');
                            var cModel = document.getElementById('model');
                            var cEngine = document.getElementById('engine');
                            
                            //alert(text);
                            var rtn = text.split("|");
                            changeList(cEngine, rtn, 0)
                            
                            cMake.disabled = false;
                            cModel.disabled = false;
                            cEngine.disabled = false;
                            
                        } else if (xmlobj.uservars != null && xmlobj.uservars == 'enginegrid') {
                            var cMake = document.getElementById('vehiclegrid_Make_'+rowid);
                            var cModel = document.getElementById('vehiclegrid_Model_'+rowid);
                            var cEngine = document.getElementById('vehiclegrid_Engine_'+rowid);
                            
                            //alert(text);
                            var rtn = text.split("|");
                            changeList(cEngine, rtn, 0)
                            
                            cMake.disabled = false;
                            cModel.disabled = false;
                            cEngine.disabled = false;
                            
                        }
                 } else {
                    alert("There was a problem trying to process your request. Please try again later.");
                 }
            }
        }
        this.onError = function(status,statusText) {
           alert("There was a problem trying to process your request. Please try again later.");
        }
    }
    
    
// JScript File
function fireTimer(_1){
var _2=_1;

function timerFired(){
if(_2.inprogress){
_2._abortRequest(_2);
}
}
_2._timeoutID=window.setTimeout(timerFired,_2.timeoutMS);
}

function R9HTTPXml(){
}
R9HTTPXml.prototype={uservars:null,url:null,postbuffer:null,xmlhttp:null,inprogress:false,thecallback:null,timeoutMS:-1,_timeoutID:null,cancelled:false,init:function(_3,_4,_5){
this.url=_3;
this.uservars=_5;
this.postbuffer=_4;
if(window.XMLHttpRequest){
this.xmlhttp=new XMLHttpRequest();
}else{
if(window.ActiveXObject){
this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}else{
window.alert("Sorry your browser is not compatible with this functionality");
}
}
},setTimeout:function(_6){
this.timeoutMS=_6;
},asyncGET:function(_7){
if(this.inprogress){
throw "Call in progress";
}
var _8=this;
if(_7==null){
_7=_8;
}
this.thecallback=_7;
var _9=null;
if(this.postbuffer==null){
this.xmlhttp.open("GET",this.url,true);
}else{
this.xmlhttp.open("POST",this.url,true);
this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
_9=this.postbuffer;
}
this.xmlhttp.onreadystatechange=function(){
_8.stateChangeCallback(_8);
};
this.inprogress=true;
this.cancelled=false;
this.xmlhttp.send(_9);
if(this.timeoutMS>0){
fireTimer(this);
}
},stateChangeCallback:function(_a){
switch(_a.xmlhttp.readyState){
case 1:
try{
if(!_a.cancelled){
_a.thecallback.onInit();
}
}
catch(e){
}
break;
case 2:
try{
if(_a.xmlhttp.status!=200&&_a.xmlhttp.status!=0){
if(!_a.cancelled){
window.status="error";
_a.thecallback.onError(_a.xmlhttp.status,_a.xmlhttp.statusText,_a);
}
_a.xmlhttp.abort();
_a.inprogress=false;
}
}
catch(e){
}
break;
case 3:
var _b;
try{
try{
_b=_a.xmlhttp.getResponseHeader("Content-Length");
}
catch(e){
_b=NaN;
}
if(!_a.cancelled){
window.status="ping";
_a.thecallback.onProgress(_a.xmlhttp.responseText,_b);
}
}
catch(e){
}
break;
case 4:
try{
if(_a._timeoutID){
window.clearTimeout(_a._timeoutID);
_a._timeoutID=null;
}
if(_a.inprogress){
_a.inprogress=false;
if(!_a.cancelled){
window.status="done";
_a.thecallback.onLoad(_a);
}
}
}
catch(e){
}
finally{
_a.inprogress=false;
}
break;
}
},cancelRequest:function(){
var _c=this;
this.cancelled=true;
if(this._timeoutID){
window.clearTimeout(this._timeoutID);
this._timeoutID=null;
}
_c._abortRequest(_c);
},_abortRequest:function(_d){
if(_d.xmlhttp!=null){
try{
_d.xmlhttp.abort();
if(_d.inprogress){
window.status="abort";
_d.thecallback.onError("timeout","Your request has timed out.",_d);
}
}
catch(e){
}
_d.cancelled=true;
_d.inprogress=false;
}
},getText:function(){
return this.xmlhttp.responseText;
},getXML:function(){
return this.xmlhttp.responseXML;
},getTags:function(_e){
try{
return this.xmlhttp.responseXML.getElementsByTagName(_e);
}
catch(e){
return null;
}
},getOperaText:function(_f,_10,_11){
try{
var _12=_f.getElementsByTagName(_10)[_11];
if(_12){
var _13="",i=0,_15;
while(_15=_12.childNodes[i]){
_13+=_15.nodeValue;
i++;
}
return _13;
}else{
return "";
}
}
catch(e){
opera.postError("exception: "+e);
}
},getOpera:function(_16,_17,_18){
return "foo";
},getTagText:function(_19,_1a,_1b){
var _1c=_19.getElementsByTagName(_1a)[_1b];
if(_1c){
if(_1c.childNodes.length>1){
return _1c.childNodes[1].nodeValue;
}else{
if(_1c.childNodes.length==1){
return _1c.firstChild.nodeValue;
}
}
}else{
return "";
}
},onProgress:function(t,l){
},onError:function(s,t,c){
},onLoad:function(c){
},onInit:function(c){
}};


/**
*
* URL encode / decode
* http://www.webtoolkit.info/
*
**/

var Url = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}