var vDebug = false;
try {
	if(window.queryStr) vDebug = (queryStr('debug') == '1') ? true : false;
} catch(err){
	vDebug = false;
}

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;
}

//------------------------------------------------------------

function returnSimpleValue(url, returnFunc, returnVal){
   var xhttp = GetXmlHttpObject();
   xhttp.onreadystatechange = function(){
      	if(xhttp.readyState == 4){
      		var sTemp = xhttp.responseText;
			if(returnFunc){
				eval(returnFunc + '(\'' + sTemp.split('*|*')[1] + '\')');
			} else {
				alert(sTemp);
			}
			
    	}
   }
   xhttp.open("GET",url,true);
   xhttp.send(null);
}

//------------------------------------------------------------

function updateContainer(url, target, addl, addl2){
	
	if(!document.getElementById(target)) return;

   var xhttp = GetXmlHttpObject();
   xhttp.onreadystatechange = function(){
      	if(xhttp.readyState == 4){
			var A = $(target);
			A.innerHTML = '';
      		A.innerHTML = xhttp.responseText;
			if(addl){
				eval(addl + '();');
			}
			if(addl2){
				eval(addl2 + '();');
			}
    	}
   }
   xhttp.open("GET",url,true);
   xhttp.send(null);
}

//------------------------------------------------------------

function updateControlValue(url, targetCtl, addl){
   var xhttp = GetXmlHttpObject();
   xhttp.onreadystatechange = function(){
      	if(xhttp.readyState == 4){
			targetCtl.value = xhttp.responseText;
			if(addl){
				eval(addl + '();');
			}
    	}
   }
   xhttp.open("GET",url,true);
   xhttp.send(null);
}

//------------------------------------------------------------

function updateSelect(url, nmSelect, blankCaption, blankValue){

	var objSelect = $(nmSelect);

	if(!objSelect)return;

    var xhttp = GetXmlHttpObject()
	var retVal;
	var workVal;
    xhttp.onreadystatechange = function(){
        if(xhttp.readyState == 4){
			objSelect.options.length = 0;

			var vOpt;

			if(blankCaption){
				vOpt = new Option(blankCaption, blankValue);
				objSelect.options[objSelect.length] = vOpt;
			} 

			retVal = xhttp.responseText;
			retVal += '*|*_COL__ROW_';
			retVal = retVal.split('*|*');
			workVal = retVal[1].split('_ROW_');
			for(var i = 0; i < workVal.length; i++){
				workVal[i] = workVal[i].split('_COL_');
				if(workVal[i][0] != ''){
					vOpt = new Option(workVal[i][1], workVal[i][0]);
					objSelect.options[objSelect.length] = vOpt;
				}
			}
        }
    }
    xhttp.open("GET",url,true);
    xhttp.send(null);
}

//------------------------------------------------------------

function testAjaxAccess(){
	alert('AJAX is functioning.');
}

//------------------------------------------------------------

function loadjscssfile(filename, filetype){
	$$('script').each(function(S){
		if(S.src.indexOf(filename)!=-1){
			return;
		}
	})
	if (filetype=="js"){ //if filename is a external JavaScript file
		var fileref=document.createElement('script');
		fileref.setAttribute("type","text/javascript");
		fileref.setAttribute("src", filename);
	}
	else if (filetype=="css"){ //if filename is an external CSS file
		var fileref=document.createElement("link");
		fileref.setAttribute("rel", "stylesheet");
		fileref.setAttribute("type", "text/css");
		fileref.setAttribute("href", filename);
	}
	if (typeof fileref!="undefined")
		document.getElementsByTagName("head")[0].appendChild(fileref);
}

//loadjscssfile("myscript.js", "js") //dynamically load and add this .js file
//loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file
//loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file


//------------------------------------------------------------

function getOffsetLeft(s){
	var retVal = 0;
	var ctl = document.getElementById(s);
	if(ctl){
		while(ctl.offsetParent){
			retVal += ctl.offsetLeft;
			ctl = ctl.offsetParent;
		}
	}
	retVal += 10;
	return retVal;
}

//------------------------------------------------------------

function getOffsetTop(s){
	var retVal = 0;
	var ctl = document.getElementById(s)
	if(ctl){
		while(ctl.offsetParent){
			retVal += ctl.offsetTop;
			ctl = ctl.offsetParent;
		}
	}
	retVal += document.body.scrollTop;
	return retVal;
}

//------------------------------------------------------------

function sysUpdateSearchForm(args){
	if(!args){
		// if we haven't passed in an array, display the message that shows how to use the function
		var usageMsg = '<pre>USAGE\n\nargs[0] = form object\nargs[1] = new\\used control name';
		usageMsg += '\nargs[2] = make dropdown obj';
		usageMsg += '\nargs[3] = model dropdown obj';
		usageMsg += '\nargs[4] = year dropdown obj';
		usageMsg += '\nargs[5] = object to display count';
		usageMsg += '\nargs[6] = site GUID';
		usageMsg += '\nsysUpdateSearchForm(args);</pre>';
		document.write(usageMsg);
		return;
	}
	
	if(document.getElementById('divTest')) {
		var divTest = $('divTest');
		if(divTest) divTest.innerHTML = 'Updating the form...';
	}
	
	var ctlYearFrom;
	var usesYearFrom = false;
	
	// setup our objects
	var frm = args[0];
	var ctlNewUsed	= args[1];
	var ctlMake 	= args[2];
	var ctlModel 	= args[3];
	var ctlYear 	= args[4]; // year from, if alone.  THat's just how it worked out.
	var ctlCount	= args[5];
	// args[8] = lotcode, just for reference
	if(args[7]) {
		ctlYearFrom	= args[7];
		usesYearFrom = true;
	}
	var ctlLotCode = '';
	if(args[8]) { ctlLotCode = args[8] }
	var ctlType = args[9];
	var debug	= false //(args[10] == '1') ? true : false;

	// setup our values
	var sg 			= args[6];
	var selNewUsed	= '';
	var selYear 	= (ctlYear.value) ? ctlYear.value : '';
	var selMake 	= ctlMake.value;
	var selModel 	= ctlModel.value;
	var selType		= '';
	if(ctlType) selType	= ctlType.value;

	var selYearFrom = '';
	if(usesYearFrom) selYearFrom = ctlYearFrom.value;

	if(ctlNewUsed.length){
		for(var i = 0; i < ctlNewUsed.length; i++){
			// if(vDebug)alert('checked: ' + ctlNewUsed[i].checked);
			if(ctlNewUsed[i].checked) {
				// if(vDebug)alert('checked value: ' + ctlNewUsed[i].value)
				selNewUsed = ctlNewUsed[i].value;
				break;
			}
		}
	} else {
		selNewUsed = ctlNewUsed.value;
	}

	var newOption;

	xmlHttp = GetXmlHttpObject();
	
	if (xmlHttp==null) {
		  alert ("This function requires the use of a newer browser.");
		  return;
	} 

	var url = "/templates/vehicleSearch/populateVehicleSearch.asp?";
	url += "yearTo=" + selYear;
	url += "&yearFrom=" + selYearFrom;
	url += "&make=" + selMake;
	url += "&model=" + selModel;
	url += "&newused=" + selNewUsed;
	url += '&LotCode=' + ctlLotCode;
	url += "&sg=" + sg;
	//url += "&lotcode=" + args[8];
	url += "&parVehType=" + selType;
	url += "&parIP=" + args[10];
	if($('divDebug'))$('divDebug').innerHTML = url;
	// $('divTest').innerHTML = url;
	
	// THIS IS THE IMPORTANT LINE
	xmlHttp.onreadystatechange = function(){
		if(xmlHttp.readyState == 4){
			var sTemp = xmlHttp.responseText;
			//$('divTest').innerHTML = sTemp;				
			
			sTemp = sTemp.split('*|*');
			var arrTemp;
			var ctl;
			if(sTemp[1] && ctlYear){ //year
				ctl = ctlYear;
				ctl.options.length = 0;
				sTemp[1] = sTemp[1].split(';');
				if(usesYearFrom)
					newOption = new Option('-- year --', '');
				else
					newOption = new Option('-- year to --', '');
				ctl.options[ctl.length] = newOption;
				for(var i = 0; i < sTemp[1].length; i++){
					if(sTemp[1][i]!=''){
						newOption = new Option(sTemp[1][i], sTemp[1][i]);
						ctl.options[ctl.length] = newOption;
					}
				}
				ctl.value = selYear;
				
				if(usesYearFrom){
					ctl = ctlYearFrom;
					ctl.options.length = 0;
					// sTemp[1] = sTemp[1].split(';');  // already done
					newOption = new Option('-- year from --', '');
					ctl.options[ctl.length] = newOption;
					for(var i = 0; i < sTemp[1].length; i++){
						if(sTemp[1][i]!=''){
							newOption = new Option(sTemp[1][i], sTemp[1][i]);
							ctl.options[ctl.length] = newOption;
						}
					}
					ctl.value = selYearFrom;
				}
				
			}
			if(sTemp[2]){ //make
				ctl = ctlMake;
				ctl.options.length = 0;
				sTemp[2] = sTemp[2].split(';');
				newOption = new Option('-- make --', '');
				ctl.options[ctl.length] = newOption;
				for(var i = 0; i < sTemp[2].length; i++){
					if(sTemp[2][i]!=''){
						newOption = new Option(sTemp[2][i], sTemp[2][i]);
						ctl.options[ctl.length] = newOption;
					}
				}
				ctl.value = selMake;
			}
			if(sTemp[3]){//model
				ctl = ctlModel;
				ctl.options.length = 0;
				arrTemp = sTemp[3];
				arrTemp = arrTemp.split(';');
				newOption = new Option('-- model --', '');
				ctl.options[ctl.length] = newOption;
				for(var i = 0; i < arrTemp.length; i++){
					if(arrTemp[i]!=''){
						newOption = new Option(arrTemp[i], arrTemp[i]);
						ctl.options[ctl.length] = newOption;
					}
				}
				ctl.value = selModel;
			}
			if(sTemp[4]) { x = 'engine' } 
			if(sTemp[5]) { x = 'body' }
			if(sTemp[6] && ctlType) { sysBuildOptionsList(sTemp[6].split(';'), ctlType, selType, '-- vehicle type --:') } //type
			if(ctlCount) {
				ctlCount.innerHTML = sTemp[sTemp.length - 1] + '&#160;Matching&#160;Vehicles&#160;Found';
			}
			setTimeout("$('divTest').innerHTML = '&nbsp;'", 500);
			// if(document.getElementById('divTest')) setTimeout("document.getElementById('divTest').innerHTML = '&nbsp;';", 1000);
		}
	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);

}

//------------------------------------------------------------

function sysBuildOptionsList(arrValues, ctl, selValue, defaults) {
	ctl.options.length = 0;
	newOption = new Option(defaults.split(':')[0], defaults.split(':')[1]);
	ctl.options[ctl.length] = newOption;
	for(var i = 0; i < arrValues.length; i++){
		if(arrValues[i].indexOf('--') != -1){
			arrValues[i] = arrValues[i].split('--');
			// alert(arrValues[i]);
			newOption = new Option(arrValues[i][1], arrValues[i][0]);
			ctl.options[ctl.length] = newOption;
		}else{
			if(arrValues[i]!=''){
				newOption = new Option(arrValues[i], arrValues[i]);
				ctl.options[ctl.length] = newOption;
			}
		}
	}
	ctl.value = selValue;
} 

//------------------------------------------------------------

function doActionWithoutFeedback(url, returnFunc, returnVal){
   var xhttp = GetXmlHttpObject();
   xhttp.onreadystatechange = function(){
      	if(xhttp.readyState == 4){
      		var sTemp = xhttp.responseText;
			if(returnFunc){
				eval(returnFunc + '(\'' + sTemp.split('*|*')[1] + '\')');
			}

    	}
   }
   xhttp.open("GET",url,true);
   xhttp.send(null);
}


//------------------------------------------------------------

var ajax = function(){
	return {
		sysUpdateSearchForm : function(args){
			/* to view the output of this function, trace for connection name of "Ajax_PopulateVehicleSearch" */
			sysUpdateSearchForm(args)
		},
		confirmAjax : function(){
			alert('Ajax installed.');
		}
	}
}();
