// JavaScript Document
var paramFieldSep = '::##::';
var paramPairSep = '||##||';

var _save_data = null;

function _set_save_data(key, data, overwrite_existing) {
	if (_save_data == null) {_save_data = new Array();}
	
	if (_save_data[key] != null && !overwrite_existing) return false;

	_save_data[key] = data;

	return true;
}

function _get_save_data(key) {
	if (_save_data == null) {return false;}
	if (_save_data[key] == null) {return false;}

	var data = _save_data[key];
	_save_data[key] = null;
	return data;
}

function sendRequestFromForm(sUrl, sMethod, form, caller)
{
	var s = '';						

	for ( var i=0;i< form.elements.length;i++ )
	{
		if (!_ie5_() && encodeURIComponent)
		{
			s += form.elements[i].name + '=' + encodeURIComponent(form.elements[i].value) + '&';								 
		}
		else
		{
			s += form.elements[i].name + '=' + escape(form.elements[i].value) + '&';								 
		}
		
	}

	if (s.length > 0) {
		s = s.substring(0, s.length - 1);
	}			
	
	sendXmlRequest(sUrl, sMethod, s, caller, null);
	
}

function sendRequest(sUrl, sMethod, postParams, caller, data)
{
	var s = null;
	var undefined = 'undefined';			
	
	s = '';
	if (typeof(postParams) != undefined && postParams != '') {
		var nvpairs = postParams.split(paramPairSep);
		for (var idx = 0; idx < nvpairs.length - 1; idx++) {
			var z = nvpairs[idx].split(paramFieldSep);
			if (z.length > 0) {
				s += z[0] + '=' + z[1] + '&';
			}
		}
	}
	if (s.length > 0) {
		s = s.substring(0, s.length - 1);
	}	

	if (!data) {data = '';}
	
	sendXmlRequest(sUrl, sMethod, s, caller, data);
}

function sendXmlRequest(sUrl, sMethod, post, caller, data) {
/*	try {
	    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	   } catch (e) {
	    alert("Permission UniversalBrowserRead denied.");
	   }*/
	var objXML = getXMLHTTP();
	if (sMethod != 'GET') {
		sMethod = 'POST';
	}
	objXML.open(sMethod, sUrl, true);
	objXML.onreadystatechange = function() {
		if (objXML.readyState == 4 && objXML.responseText) {
			if (check_for_error(objXML.responseXML)) {
				document.URL = _error_location;
				return false;
			}
			var f = 'requestComplete(objXML.responseText, caller, data)';
			eval(f);
		}
	}				

	objXML.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');											
	objXML.setRequestHeader('Pragma', 'no-cache');
	objXML.setRequestHeader('Cache-control', 'no-cache');
	objXML.setRequestHeader('Referer', document.URL);

	objXML.send(post);
}

function check_for_error(xml) {
	try {
		var errNode = xml.getElementsByTagName("ErrorCode");
		if (getNodeText(errNode[0]).toLowerCase() != 'success') {
			return true;
		}
	}
	catch (exc) {
		return false;
	}
	//return true;
	
	return false;
}

function getXMLHTTP(){
	var objXML = null;
	
	try {
		objXML = new ActiveXObject("Msxml2.XMLHTTP")
	}
	catch(exc){
		try {
			objXML = new ActiveXObject("Microsoft.XMLHTTP")
		}
		catch(exc) {
			objXML = null;
		}
	}
	if(!objXML && typeof XMLHttpRequest != "undefined") {
		objXML = new XMLHttpRequest();		
	}
	//alert('getXMLHTTP = ' );
	//alert(objXML);
	return objXML;
}
function getNodeText(node) {

		var undefined = 'undefined';

		if (typeof(node.text) != undefined) {
				return node.text;
		}
		if (typeof(node.textContent) != undefined) {
				return node.textContent;
		}

		return '';
	}
