<!--

/*
*	@author:	aware
*	@method:	createXMLHttpRequest
*	@purpose:	simple XML requests for Firefox, IE, Safari, Opera etc...
*	@notes:		createXMLHttpRequest name says it all
*	@returns:	xmlhttprequest
*/

function createXMLHttpRequest() {
	try { return new XMLHttpRequest(); } catch(e) {} // Firefox, Safari, ...
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} // ActiveX / Internet Explorer 
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} // MS has 2 versions LAME!

	return null;
}

/*
*	@author:	aware
*	@method:	createXMLDoc
*	@purpose:	simple XML requests for Firefox, IE, Safari, Opera etc...
*	@notes:		createXMLHttpRequest name says it all
*	@returns:	XMLDoc
*/

function createXMLDoc() {
	try { return new ActiveXObject("Microsoft.XMLDOM"); } catch(e) {}
	try { return document.implementation.createDocument("","",null); } catch(e) {}

	return null;
}

/*
*	@author:	aware
*	@method:	loadContent
*	@param:		path:[path to the data], synchronous[boolean],
*	@param:		target[not required, used for asynchronous calls],
*	@param:		progress[boolean](determines of a preloading image should be shown)
*	@returns:	data (html, etc...)
*	@purpose:	simple content requests for Firefox, IE, Safari, Opera etc...
*	@notes:		some data needs to be synchronous and target can be used for asyncrhonous calls
*/

function loadContent(path, synchronous, target, progress, tab) {
	
	try {
		
		if (target && progress) target.appendChild(createProgress());
		
		var connect = createXMLHttpRequest();

		if (!synchronous) {

			// create a listener when the ready state changes for our connect object

			connect.onreadystatechange = function() { // instructions to process the response };
				if (connect.readyState == 4) { // ready state of 4 means good to go
					target.innerHTML = (connect.status  == 200)? connect.responseText : connect.status; // Show our result or show our error
					
					if(target.getAttribute('oem') == "true") gE('oem-warranty').style.display = 'block';
					if(target.getAttribute('dlr') == "true") gE('dealer-warranty').style.display = 'block';
					if(gE('overlay')){repositionOverlay();}
				}
			}
		}
	
		connect.open('GET', path, !synchronous);
		connect.send(null);
		
		if(!synchronous) return;

		return connect.responseText;

	} catch(e) {}
}

function loadJson(path, callback) {
	try {
		var connect = createXMLHttpRequest();
		// create a listener when the ready state changes for our connect object
		connect.onreadystatechange = function() { // instructions to process the response };
			if (connect.readyState == 4) { // ready state of 4 means good to go
				callback(createJsonObject(connect.responseText));
			}
		}
		connect.open('GET', path);
		connect.send(null);
	} catch(e) {}
}

function createJsonObject(responseText)
{
	try {return new Function("return " + responseText)();} catch(e) {}
}

function createProgress() {
	var div = document.createElement('div');
		div.id = 'progress';
		div.innerHTML = '<img src="/plugins/images/inv/default/loader.gif" alt="loading"/>';
	return div;
}

/*
*	@author:	aware
*	@method:	loadXML
*	@params:	path:[path to the data], synchronous[boolean], target[not required, used for asynchronous calls], progress[boolean](determines of a preloading image should be shown)
*	@returns:	data (xml)
*	@purpose:	simple XML requests for Firefox, IE, Safari, Opera etc...
*	@notes:		some data needs to be synchronous and target can be used for asyncrhonous calls
*/

function loadXML(path, synchronous, target, progress)
{	
	try {
		if (target && progress) target.appendChild(createProgress());

		var xmlDoc = createXMLDoc();
			xmlDoc.async = true; //!synchronous;	
			
			try {
				xmlDoc.onload = function() {
					target.innerHTML = xmlDoc.childNodes[0].nodeValue;
				}
			} catch (e) {
				try {
					xmlDoc.onreadystatechange = function() {
						if(xmlDoc.readystate == 4) {
							target.innerHTML = xmlDoc.childNodes[0].nodeValue;
						}
					}
				} catch(e) {}
			}

			xmlDoc.load(path);		
			
	} catch (e) {}
}

function formatData(children) {
	
}

/*
*	@author:	aware
*	@method:	debug
*	@params:	trace[String], target[element you are writing the trace to]
*	@returns:	html list
*	@purpose:	simple trace to the page so we don't have to do a bunch of alerts
*/

function debugOutput(trace, target) {
	var target = (!target)? "debug" : target;

	target.innerHTML += "<br />" + trace;
}

/*
*	@author:	aware
*	@method:	submitForm
*	@params:	form:Element[form based on an id], target:Element[target we are going to write to]
*	@purpose:	submit a form, should get back a thank you
*	@notes:		Looks like 2 other params have been added path, and micro form, not sure what these are just yet
*/

// submitForm(document.forms['quickquote'], 'thanks', null)

function submitForm(form, target, path, microform) {
	
// 	console.log('form : ' + form);
//	console.log('target : ' + target);
// 	console.log('path : ' + path);

	var valid = (microform) ? validateForm(document.forms[form.id], null, true) : validateForm(document.forms[form.id]);
	
	if(valid) {
		completeForm(form);
		var fields_len = form.length;
		var ranNum = Math.random();
		var data = 'display=ajax&ensurzeBz=' + String(ranNum) + '&';

		if(!path || path === null) {
			path = (portalPath)? "/" + portalPath : "/" + gE('portalPath').value;

			path += '/form.do';
		} else {
			gE('url').value = escape(document.location);
		}

		for(var i = 0; i < fields_len; i++)
		{
			var field = form.elements[i];
			var value = field.value;
			
			var name = field.getAttribute('name');
			if(field && value && name!='stockTypeRadioButton' && name!='_submit'){
				data += field.getAttribute('name') + '=' + value;
				data += (i < fields_len - 1)? '&' : '';
			}
		}
		
		// console.log(data);

		var connect = createXMLHttpRequest();
			connect.open('POST', path, true);
			connect.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			connect.setRequestHeader('Content-Length', fields_len);
			connect.setRequestHeader('Connection', 'close');
	
			connect.onreadystatechange = function()
			{
				if (connect.readyState == 4)
				{
					form.style.display = 'none';

					try // Omniture Tracking
					{
						s.events = 'event1';
						s.products = ';' + form.getAttribute('id');
						s.eVar13 = gE('vehicle_year').value;
						s.eVar1 = gE('vehicle_make').value;
						s.eVar2 = gE('vehicle_model').value;
						s.eVar14 = gE('vehicle_type').value;
						s.eVar15 = gE('vehicle_vin').value;
						s.eVar3 = gE('portalPath').value;
						s.eVar4 = ranNum;
						s.eVar5 = 'Web Lead';
						s.t();
					
					} catch (e) {}

					if(target) gE(target).style.display = 'block';
					if(form.id == "quickquote" && overlayTracker)
					{
						// gE('overlayCloseButton').style.display = 'block';
						submitWarning = null;
						// setTimeout(deleteOverlay, 5000);
					}
				}
			}
			
	 	if(typeof setCookie=='function') setCookie('dmiDetailsCookie', true, 1);
		connect.send(data);
	}
	if(form.id == "quickquote" && overlayTracker) repositionOverlay();
	return;
}

function completeForm(form){
	if(form.id=="quickquote" && overlayTracker){
	gE('vehicle_stock_number').value = gE(overlayTracker).getAttribute('sn');
	gE('vehicle_type').value = gE(overlayTracker).getAttribute('st');
	gE('vehicle_year').value = gE(overlayTracker).getAttribute('y');
	gE('vehicle_make').value = gE(overlayTracker).getAttribute('mk');
	gE('vehicle_model').value = gE(overlayTracker).getAttribute('md');
	gE('vehicle_trim').value = gE(overlayTracker).getAttribute('tr');
	gE('vehicle_color').value = gE(overlayTracker).getAttribute('ebc');
	gE('vehicle_StockType').value = gE(overlayTracker).getAttribute('st');
	}
}

//END -->