var setupAllTabs = null;
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) {
			if (typeof( argArray[i]) == 'function')
				continue;
			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 = component+ '?action='+func+'&resultID='+resultId+'&resultLayout=1'+param;
		if (component.indexOf('http://') == -1) {
			url = urlocal + url;
		}
		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, functionName) {
	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) {
						resultObj.innerHTML = result.replace(/\n|\r/g,"");
						
			            // arrumar os pane-tabs
			            if (setupAllTabs) {
				            setupAllTabs();      
			            }
					}
					// executar funcao
					if (functionName) {
						eval(functionName+'();');
					}
				}
			}
		}
		xmlhttp.send(queryString);
	}
}


function getFormValues(fobj,valFunc)
{
   var str = "";
   var valueArr = null;
   var val = "";
   var cmd = "";
     
   for(var i = 0;i < fobj.elements.length;i++)
   {
   		switch(fobj.elements[i].type)
       {
		   case "submit":
       	   case "hidden":
   	   	   case "textarea":       	   
           case "text":
                if(valFunc)
                {
                    //use single quotes for argument so that the value of
                    //fobj.elements[i].value is treated as a string not a literal
                    cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
                    val = eval(cmd)
                }
                str += fobj.elements[i].name +
                 "=" + escape(fobj.elements[i].value) + "&";
                 break;
           case "checkbox":
				if (fobj.elements[i].checked) {
                	str += fobj.elements[i].name +
                 	"=" + escape(fobj.elements[i].value) + "&";
                 }
                 break;
           case "select-one":
                str += fobj.elements[i].name +
                "=" + escape(fobj.elements[i].options[fobj.elements[i].selectedIndex].value) + "&";
                break;
           case "radio":
           		if (fobj.elements[i].checked) {
                	str += fobj.elements[i].name +
                	"=" + escape(fobj.elements[i].value) + "&";
                }
                break;
       }
   }
   str = str.substr(0,(str.length - 1));      
   return str;
}

var http_request = false;
var idReturn = false;

function makePOSTRequest(form, id, urlDefault) {				
	  var url = null; 
   	  idReturn = id
   	  if (form.attributes.action) {
   	  	url = form.attributes.action.value;
   	  }
   	  if (url == '') {
   	  	if (urlDefault) {
   	  		url = urlDefault;
   	  	} else {
   	  		alert('No url given for post');
   	  		return false;
   	  	}
   	  }
   	  parameters = getFormValues(form);
   	  http_request = false;
	  http_request = createRequest();
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);      		
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);      
      return false;
      
}

function alertContents() {
      id = idReturn;
   	  if (http_request.readyState == 1) {
   	    document.getElementById(id).innerHTML = '<p style="margin: 50px; text-align: center;"><img src="/resources/img/ajax-loader.gif" border="0" /></p>';
   	  }
	  if (http_request.readyState == 2) {
   	    document.getElementById(id).innerHTML = '<p>Montando página...</p>';
   	  }   	  
   	  
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById(id).innerHTML = result;      
         } else {
            alert('There was a problem with the request.');
            //alert(http_request.status);
            //alert(http_request.responseText);
            //exit;
         }
      }
}


function reloadPageFunction() {
	window.location.reload();
}
    
    
function loadPagePopup (url, update, functionName) {	
	content = document.getElementById('popupContent');
	content.innerHTML = '<p style="margin: 50px; text-align: center;"><img src="/resources/img/ajax-loader.gif" border="0" /></p>';
	showD('popupBlock','block');
	showD('popupWindow','block');
	showD('iFrameMenu','block');
	getContent(url,'popupContent',functionName);
	if (update) {
		link = document.getElementById('closePopup');
		link.onclick = reloadPageFunction;
	}
}

    
function hideD(id) {
	var elementX = document.getElementById(id);
	if (elementX) {
		elementX.style.display="none";
		elementX.style.visibility="hidden";
	}
}

function showD(id, type) {
	var elementX = document.getElementById(id);
	if (elementX) {
		elementX.style.visibility="visible";
		elementX.style.display="";
		if (type) {
			elementX.style.display=type;
		}
	}
}

