
var g_requestUrl = null;

function createRequest() {	
	var xmlhttp;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = null;
		}
	}
	@end @*/
	if (!this.xmlhttp && typeof XMLHttpRequest!='undefined') {
		xmlhttp = new XMLHttpRequest();
//		xmlhttp.setRequestHeader('Accept-Charset','ISO-8859-1');
//		xmlhttp.setRequestHeader('Accept-Charset','UTF-8');

	}
	return xmlhttp;
}

function callFunction(component, func, callback) {
	prepareCall();
	var xmlhttp = createRequest();
	if (xmlhttp) {
		if (xmlhttp.readyState != 4) {
			xmlhttp.abort();
		}
		
		var callerInfo = new Array(5);
		callerInfo['component'] = component;
		callerInfo['function'] = func;
		callerInfo['parameters'] = new Array();

		var queryString = "";
		var argArray = arguments[3];
		for (var i in argArray) {
			argName = i;
			queryString += "&"+argName+"="+argArray[i];
			callerInfo['parameters'][argName] =argArray[i];
		}
		var url = urlocal+component;
		queryString = "module="+component+"&resultLayout=2&action="+func+queryString;
		xmlhttp.open("POST", url, true);
//		alert(url);
//		alert(queryString);
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp) {
				if (xmlhttp.readyState==1) {
					// carregando...
					wait();
				}
				if (xmlhttp.readyState==2) {
					// carregado;
				}
				if (xmlhttp.readyState==4) {	
					// lido;				
					var isError = false;
					var xmldoc = xmlhttp.responseXML;
					callerInfo['responseXML'] = xmlhttp.responseXML;
					callerInfo['responseText'] = xmlhttp.responseText;
					if (xmldoc) {
						var result = xml2Js(xmldoc, null);
						if (result) {
							if (result['systemErrors'] || result['errors'] || result == false) {
								showError(result);
								isError = true;	
							}
							if (callback) {
								callback(result, isError, callerInfo);
								finished();
							}				
						} else {
							isError = true;
							callback(result, isError, callerInfo);
							finished();
						}
					} else {
					  if (callback) {
						result = xmlhttp.responseText;
						callback(result,true, callerInfo);
						finished();
					  }
	 				}
				}
			}
		};
		xmlhttp.send(queryString);
	}
}
function callFunctionFrame (component, func, resultId, param, notprep) {
	var frame = document.getElementById('fAction');
	if (frame) {
		if (!notprep) {
			prepareCall();
		}
		fade(resultId,true,1,1);
	    if (param) param = '&'+replaceAll(param, '&amp;', '&');
	    else param = '';
        var url = urlocal+component+ '?action='+func+'&resultID='+resultId+'&resultLayout=1'+param;
//		alert(param);	
//		var windowS =  window.open(url,'janelinha');
		frame.src = url;	
		finished();
	} else {
		alert('Please wait while the page loads');
	}
}
function openFrame (component, func, resultId, param) {
	var frame = document.getElementById(resultId);
	if (frame) {
		wait();
		fade(resultId,true,1,1);
		var url = urlocal+component+ '?action='+func+'&resultID='+resultId+'&resultLayout=3&'+param;
		//alert(param);	
		//var windowS =  window.open(url,'janelinha');				
		frame.src = url;	
		finished();
	} else {
		alert('No function frame available!');
	}
}

function xml2Js(xmldoc, node) {
	var result;
	if (!xmldoc) return null;
	if (!node) {
		node = xmldoc.documentElement;
	}

	if (node) {
		var vartype = node.getAttribute("type");
		if (vartype == "object") {
			result = new Object();
			var length = node.childNodes.length;
			for (var x=0; x<length; x++) {
				if (node.childNodes.item(x).nodeType == 3) { continue; }
				
				var curnode = node.childNodes.item(x);
				var tagname = curnode.nodeName;
				var r = xml2Js(xmldoc, curnode);
				tagname = tagname.replace("-", "_");
				tagname = tagname.replace(" ", "");			
				tagname = tagname.replace("private", "privado");			
				// n?o sei porque ele n?o aceita private
				eval("result."+tagname+" = r");
			}
		}
		else if (vartype == "array") {
			var arrayLen = parseInt(node.getAttribute("length"));
			result = new Array(arrayLen);
			var items = node.getElementsByTagName("item");
			for (var i = 0; i < items.length; i++) {
				if (items.item(i).parentNode != node) {continue;} 
				if (items.item(i).nodeType == 3) { continue; }
				
				var item = items.item(i);
				var key = item.getAttribute("key");
				result[key] = xml2Js(xmldoc, item);
			}
		}
		else {
			if (node.firstChild) {
				result = node.firstChild.nodeValue;	
			} else {
				result = node.nodeValue;
			}
			if (vartype == "integer") {
				if (!result) result = 0;
				else  result = parseInt(result);
			}
			else if (vartype == "boolean")  {
				result = (result)?true:false;
			}
			if (isString(result)) {
				if (result.substring(0,17) == 'XML Parsing Error') {
					alert('XML Parsing Error');
					result = false;
				}
			}
		}
	}
	return result;
}

function getContent(url,id) {
	var xmlhttp = createRequest();
	var queryString = '';
	if (xmlhttp) {
		if (xmlhttp.readyState != 4) {
			xmlhttp.abort();
		}
		xmlhttp.open("GET", url, true);
//		xmlhttp.setRequestHeader('Accept-Charset','ISO-8859-1');
//		xmlhttp.setRequestHeader('Accept-Charset','UTF-8');
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');

		xmlhttp.onreadystatechange = function() {
			if (xmlhttp) {		
//				alert(xmlhttp.readyState);
				if (xmlhttp.readyState==4) {
					var result = xmlhttp.responseText;
					var resultObj = document.getElementById(id);
					if (resultObj) {
//						alert('imprime');
//						alert(result);						
//						alert(resultObj);
//						alert(result.replace(/\n/g,""));
						resultObj.innerHTML = result.replace(/\n|\r/g,"");
//						alert(resultObj.innerHTML);
//						resultObj.innerHTML = 'abc';
					}
				}
			}
		}
		xmlhttp.send(queryString);
	}
}

