	//-------------------------------------------------------------------------------
	/* Pop up window JavaScript */
	
	function openWin(sHref) {
		window.open(sHref, null, 'width=600,height=500,status=yes,toolbar=no,scrollbars=yes,resizable=yes');
	}


	/* Solution Engine JavaScript */

	//-------------------------------------------------------------------------------

	function getHTTPObject() {

		var xmlhttp;

		/*@cc_on
			@if (@_jscript_version >= 5)
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (E) {
					xmlhttp = false;
			}
		}
		@else
			xmlhttp = false;
		@end @*/

		if(!xmlhttp &&
		   typeof(XMLHttpRequest) != 'undefined') {
			try {
				xmlhttp = new XMLHttpRequest();
			} catch (e) {
				xmlhttp = false;
			}
		}

		return xmlhttp;

	}

	function vRemoveOptions (oEl) {

		var oNextOption;

		for (var oOption = oEl.firstChild; oOption; oOption = oNextOption) {

			oNextOption = oOption.nextSibling;
			oEl.removeChild(oOption);

		}

	}

	function vSetLoading (sElementID) {

		var oElement = document.getElementById(sElementID);

		vRemoveOptions(oElement);
		vAddOption(oElement, '', 'Loading - Please Wait');

		oElement.disabled = true;

	}

	function vAddOption (oParentElement, sValue, sText) {

		var oOption = document.createElement('option');

		oOption.value = sValue;
		oOption.innerHTML = sText;

		vAppendOption(oParentElement, oOption);

	}

	function vAppendOption(oParentElement, oOption) {

		try {

			oParentElement.appendChild(oOption);

		} catch(ex) {

			oParentElement.add(oOption);
		}

	}

	function vHandleHTTPresponse (sEl, sLabel) {

		if (oHTTP.readyState == 4) {

			var oElT = document.getElementById(sEl); // target select element

			if (oHTTP.status==200) {

				var oXML = oHTTP.responseXML;

				vRemoveOptions(oElT);

				var oResponse = oXML.documentElement;
				var iOptions = oResponse.getAttribute('options');

				if (iOptions > 0) {
					vAddOption(oElT, '-', '- Select ' + sLabel + ' (' + iOptions + ' items) -');
					vAddOption(oElT, '!!', '- Not Listed -');
				} else {
					vAddOption(oElT, '-', '- No ' + sLabel + 's Listed -');
				}

				for (var oChild = oResponse.firstChild; oChild; oChild=oChild.nextSibling) {

					if (oChild.tagName=='option') {
						vAddOption (oElT, oChild.getAttribute('value'), oChild.firstChild.nodeValue);

					}

				}

				oElT.disabled = false;

			} else {

				vRemoveOptions(oElT);
				vAddOption(oElT, '', '-');
				oElT.disabled = true;

			}

		}

	}

	var oHTTP = getHTTPObject();

	//-------------------------------------------------------------------------------

	function sGetSelectedValue (sId) {

		/* Return selected value for specified field */

		var oEl = document.getElementById(sId);


		if (oEl.selectedIndex <= 0) {
			return 0;
		}

		return oEl[oEl.selectedIndex].value;

	}

	function vPopulateRange (bSkipRange) {

		/* Populate Range if Make and Year are set */

		var sMake = sGetSelectedValue('se_make');

		if (sMake == 0) {

			var oEl = document.getElementById('se_range');
			vRemoveOptions(oEl);
			oEl.disabled = true;

			return;

		}

		/* Clear model */

		var oEl = document.getElementById('se_model');
		vRemoveOptions(oEl);
		oEl.disabled = true;

		var sURL = '/quote/_xml?field=se_range&se_make=' + sMake;
//		window.location = sURL;

		vSetLoading('se_range');

		oHTTP.open('GET', sURL, true);
		eval("oHTTP.onreadystatechange = function(){vHandleHTTPresponse('se_range', 'Range')};");
		oHTTP.send(null);

	}

	function vPopulateModel () {

		/* Populate Model if Make, Year and Range are set */

		var sMake	= sGetSelectedValue('se_make');
		var sYear	= sGetSelectedValue('se_year');
		var sRange	= sGetSelectedValue('se_range');

		if (sMake == 0 || sYear == 0 || sRange == 0 ) {

			var oEl = document.getElementById('se_model');
			vRemoveOptions(oEl);
			oEl.disabled = true;

			return;

		}

		var sURL = '/quote/_xml?field=se_model&se_make=' + sMake + '&se_year=' + sYear + '&se_range=' + sRange;
//		window.location = sURL;

		vSetLoading('se_model');

		oHTTP.open('GET', sURL, true);
		eval("oHTTP.onreadystatechange = function(){vHandleHTTPresponse('se_model', 'Model')};");
		oHTTP.send(null);

	}
