//document.write('<scr','ipt language="javascript" src="/inc/javascript/xml_util.php" type="text\/javascript"><\/scr ','ipt>');

/**
 * Courtesey of http://www.netspade.com/articles/javascript/cookies.xml
 * Gets the value of the specified cookie.
 *
 * name  Name of the desired cookie.
 *
 * Returns a string containing value of specified cookie,
 *   or null if cookie does not exist.
 */
function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}


/*******************************************************************************
 * getJobDataRequestXML - Create an XML JobDataRequest string
 *******************************************************************************/
function getJobDataRequestXML(product,ctls)
{
	if (!product || !ctls || !ctls.length)
		return;
	var xml = '';

// Start the request
	xml += '<'+"?xml version=\"1.0\" xml:lang=\"UTF-8\"?>\n";
	xml += "<maverick>\n";
	xml += "<Session>"+getCookie('PHPSESSID')+"</Session>\n";
	xml += "<JobDataRequest product=\""+product+"\">\n";

// Group the controls by attribute
	var ctl_xref = new Array();
	for (var i=0;i<ctls.length;i++)
	{
		if (!ctls[i])
			continue;
		var attribute = ctls[i].name.replace('[]','');
		if (ctl_xref[attribute])
			continue;

	// Get all of the controls for this attribute
		ctl_xref[attribute] = 1;
		var form = ctls[i].form;
		xml += '<Attribute id="'+attribute+"\" update=\"update\">\n";
		for (var j=0;j<form.elements.length;j++)
		{
			var ctl = form.elements[j];
			if (ctl.name != attribute && ctl.name != attribute+'[]')
				continue;
			if (!ctl.value || (ctl.type == 'radio' || ctl.type == 'checkbox') && !ctl.checked)
				continue;
			xml += '<AttributeValue>'+ctl.value+"</AttributeValue>\n";
		}
		xml += "</Attribute>\n";
	}

// End request
	xml += "</JobDataRequest>\n";
	xml += "</maverick>\n";
	return xml;
}

/*******************************************************************************
 * updateJobData - use XMLHttpRequest to get job info
 *******************************************************************************/
function updateJobData(product,ctls)
{
	var xml_request = getJobDataRequestXML(product,ctls);
	if (!xml_request)
		return;
//alert(xml_request);
	var url = get_base_url()+'/xml/jobData.php';
	var request = null;
	try {
	// Non-IE browsers
		request = new XMLHttpRequest();
	} catch (error1) {
	// Didn't work; try other methods
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (error2) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (error3) {
				try {
					request = window.createRequest();
				} catch (error4) {
				}
			}
		}
	}
	if (request)
	{
		try {
			request.open("POST", url, false);
		} catch (e) {
			alert(e);
		}
		request.setRequestHeader('Content-Type', 'text/xml');
		request.send(xml_request);
	}
//alert(request.responseText);

// Process the response
	if (!request)
		return;
	if (request.readyState == 4)
	{
	// Complete
		if (request.status == 200)
		{
		// OK response
			if (typeof request.responseXML != 'undefined')
				jobDataDom = request.responseXML;
			else
				parseXMLIntoDOM(request.responseText);
			if (!jobDataDom)
				return;

		// Iterate over the job array, plugging in the answers into labels
			var maverick = jobDataDom.getElementsByTagName('maverick')[0];
			if (!maverick)
			{
				return;
			}
			var job_response = maverick.getElementsByTagName('JobDataResponse')[0];
			if (!job_response)
			{
				return;
			}

		// Group the controls together for update
			if (!ctls.length)
				return;
			var form = ctls[0].form;
			var update_ctls = new Array();
			for (var i=0;i<form.elements.length;i++)
			{
			// Look for the values in the update
				var attribute = form.elements[i].name.replace('[]','');
				if (!attribute)
					continue;
				if (typeof update_ctls[attribute] == 'undefined')
					update_ctls[attribute] = new Array();
				update_ctls[attribute][update_ctls.length] = form.elements[i];
			}

		// Move the attribute values into an array for easier access
			var attribute_xref = new Array();
			var attributes = job_response.getElementsByTagName('Attribute');
			for (var i=0;i<attributes.length;i++)
			{
				var id = attributes[i].getAttribute('id');
				attribute_xref[id] = attributes[i].getElementsByTagName('AttributeValue');
			}
		}
	}
}