/*

GZIP CONTENT DELIVERY
Copyright 2010 Fat Publisher

All rights reserved. Republication, redistribution,
replication or use of Fat Publisher content / scripting
is strictly prohibited without the prior written consent of Fat Publisher.

www.fatpublisher.com.au

Content generated : 06:57:38 am 07 September 2010

*/

/****************************************
*										*
*			XML JS FUNCTIONS			*
*			 Nathan Bryant				*
*		www.dynamicsystems.co.nz		*
*	(Please do not remove this notice)	*
*										*
****************************************/

// XML document
var _x;
// XML request
var _xr;
// XML queue
var xml_queue = new Array();
var xml_requested = false;
// set number of seconds to timeout
var xml_timeout = 30;	

function xml_get_request(url, func)
{
	var timeout;
	// MOZILLA / SAFARI
	if (window.XMLHttpRequest) {
		_xr = new XMLHttpRequest();
	}
	// IE
	else if (window.ActiveXObject) {
		_xr = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if (_xr) {
		_xr.onreadystatechange = function() {
			if (_xr && _xr.readyState == 4) {
				clearTimeout(timeout);
				if (_xr && typeof(_xr.status) == "number" && _xr.status == 200) {						
					if (typeof(func) != "undefined") {
						xml_requested = false;
						func(_xr);
					}
				}
				/*else {
					alert("There was a problem sourcing the xml request - XMLHttpRequest");
				}*/
			}
		}
		_xr.open("GET", url, true);
		_xr.send(null);
		var timeout = window.setTimeout(
			function() {
			   if (xml_requested) {
				   _xr.abort();
				   xml_get_request(url, func);
				}
			},
			xml_timeout * 1000
		);
	}
	xml_requested = true;
}

function xml_get_queue_add(url, func)
{
	var x = new Array();
	x['url'] = url;
	x['func'] = func;
	xml_queue[xml_queue.length] = x;
	xml_get_queue_do();
}

function xml_get_queue_do()
{
	if (xml_requested) {
		setTimeout("xml_get_queue_do()", 250);
	}
	else {
		if (xml_queue.length != 0) {
			xml_get_request(xml_queue[0]['url'], xml_queue[0]['func']);
			xml_queue.shift();
		}
	}
}

function xml_decode_chars(str)
{
	var find = Array("&lt;", "&gt;", "&apos;", "&quot;", "&amp;", "%5B");
	var replace = Array("<", ">", "'", '"', "&");
	for (var i = 0; i < find.length; i ++) {
		var reg = new RegExp(find[i], "gim");
		str = str.replace(reg, replace[i]);
	}
	return str;
}

function xml_value(obj, field)
{
	try {
		return xml_decode_chars(obj.responseXML.getElementsByTagName(field)[0].firstChild.data);
	}
	catch(e) {
		return false;
	}
}

function xml_value_from_responsexml(obj, field)
{
	try {
		return xml_decode_chars(obj.getElementsByTagName(field)[0].firstChild.data);
	}
	catch(e) {
		return false;
	}
}