//-------------------- submit_form_ajax(não retorna vazio, usado para salvar imediatamente) ----------------------------------------------------------------------------------------------------------------
function submit_form_ajax_nao_retorna_vazio(form) { 
	submit_form_ajax(form, submit_form_ajax_nao_retorna_vazio_f);
}
function submit_form_ajax_nao_retorna_vazio_f(xmlHttp, form) { 
	var retorno = xmlHttp.responseText;
	if (retorno != "") {
		alert(retorno);
	}
}
//-------------------- submit_form_ajax_retorna_qualquer(sempre retorna o resultado, para testes) ----------------------------------------------------------------------------------------------------------------
function submit_form_ajax_retorna_qualquer(form) { 
	submit_form_ajax(form, submit_form_ajax_retorna_qualquer_f);
}
function submit_form_ajax_retorna_qualquer_f(xmlHttp, form) { 
	alert(xmlHttp.responseText);
}
//-------------------- valida_form_ajax(se o retorno nao for vazio da um alert do erro, senao envia o form) ----------------------------------------------------------------------------------------------------------------
//ex: <form onsubmit="valida_form_ajax(this);return false;">
function valida_form_ajax(form) {
	submit_form_ajax(form, valida_form_ajax_validado);
}
function valida_form_ajax_validado(xmlHttp, form) { 
	var retorno = xmlHttp.responseText;
	if (retorno == "") {
		form.submit();
	}
	else {
		alert(retorno);
	}
}
//-------------------- submit_form_ajax(form, objF) -----------------------------------------------------------------------------------------------------------
function submit_form_ajax(form, objF) { 
	var url = form.action;
	var params = get_form_post(form);
	var xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 
	try {
		var reg1str = "\\?";
		var reg1 = new RegExp(reg1str);
		if (!reg1.test(url)) {
			url += "?sidrand=" + Math.random();
		}
		else {
			url += "&sidrand=" + Math.random();
		}
	}
	catch (err) {
	}
	//------------------------------------------------------------------------------------------------------------------------------------
	url += "&submit_form_ajax=true";
	//------------------------------------------------------------------------------------------------------------------------------------
	xmlHttp.open("POST", url, true);
	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	//xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4) { 
			objF(xmlHttp, form);
		}
	}
	xmlHttp.send(params);
	return false;
}
//-------------------- ajax_post(form, objF, params) -----------------------------------------------------------------------------------------------------------
function ajax_post(url, objF, params) { 
	var xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 
	try {
		var reg1str = "\\?";
		var reg1 = new RegExp(reg1str);
		if (!reg1.test(url)) {
			url += "?sidrand=" + Math.random();
		}
		else {
			url += "&sidrand=" + Math.random();
		}
	}
	catch (err) {
	}
	xmlHttp.open("POST", url, true);

	//Send the proper header information along with the request
	//xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
	//xmlHttp.onreadystatechange = objF;
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4) { 
			objF(xmlHttp);
			//alert(xmlHttp.responseText);
		}
	}
	xmlHttp.send(params);
}
//-------------------- le_pagina_web2(url, objF) -----------------------------------------------------------------------------------------------------------
function le_pagina_web2(url, objF) { 
	var xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 
	//var url = "teste2.aspx";
	//url += "?q=" + str;
	try {
		var reg1str = "\\?";
		var reg1 = new RegExp(reg1str);
		if (!reg1.test(url)) {
			url += "?sidrand=" + Math.random();
		}
		else {
			url += "&sidrand=" + Math.random();
		}
	}
	catch (err) {
	}
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4) { 
			objF(xmlHttp);
		}
	}
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}
//-------------------- le_pagina_web(url) -----------------------------------------------------------------------------------------------------------
function le_pagina_web(url) { 
	var xmlHttp = GetXmlHttpObject();
	if (xmlHttp == null) {
		alert ("Your browser does not support AJAX!");
		return;
	} 
	//var url = "teste2.aspx";
	//url += "?q=" + str;
	try {
		var reg1str = "\\?";
		var reg1 = new RegExp(reg1str);
		if (!reg1.test(url)) {
			url += "?sidrand=" + Math.random();
		}
		else {
			url += "&sidrand=" + Math.random();
		}
	}
	catch (err) {
	}
	xmlHttp.onreadystatechange = function() {}
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}
//-------------------- GetXmlHttpObject() -----------------------------------------------------------------------------------------------------------
function GetXmlHttpObject() {
	var xmlHttp = null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp = new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try  {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}
//------------------------------------------------------------------------------------------------------------------------------------
/*
//Copiar para a página que chama a função le_pagina_web
function pagina_web_lida() { 
	if (xmlHttp.readyState == 4) { 
		document.getElementById("txtHint").innerHTML = xmlHttp.responseText;
	}
}
*/
//-------------------- Request(nome_string) -----------------------------------------------------------------------------------------------------------
function Request(nome_string) {
	return Request_location_href(nome_string, location.href);
}
function Request_location_href(nome_string, location_href) {
	var url = location_href;
	var er = "[&|" + nome_string.substring(0, 1) + "]+" + nome_string.substring(1) + "\=[^\&]*";
	var rg = new RegExp(er);
	var myArray = rg.exec(url);
	if (!(myArray == null)) {
		return myArray[0].split("=")[1];
	}
	return null;
}
//------------------------------------------------------------------------------------------------------------------------------------
var http_request = false;
function makeRequest(url, parameters) {
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
		// set type accordingly to anticipated content type
		//http_request.overrideMimeType('text/xml');
		http_request.overrideMimeType('text/html');
	 }
  } else if (window.ActiveXObject) { // IE
	 try {
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
		try {
		   http_request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {}
	 }
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
  http_request.onreadystatechange = alertContents;
  http_request.open('GET', url + parameters, true);
  http_request.send(null);
}
//------------------------------------------------------------------------------------------------------------------------------------
function get_form_post(obj) {
	var getstr = "";
	var objs = new Array();
	for (var i = 0; i < obj.getElementsByTagName("input").length; i++) {
		objs.push(obj.getElementsByTagName("input")[i]);
	}
	for (var i = 0; i < obj.getElementsByTagName("SELECT").length; i++) {
		objs.push(obj.getElementsByTagName("SELECT")[i]);
	}
	for (var i = 0; i < obj.getElementsByTagName("textarea").length; i++) {
		objs.push(obj.getElementsByTagName("textarea")[i]);
	}
	for (var i = 0; i < objs.length; i++) {
		if (objs[i].type == "text" || objs[i].type == "hidden" || objs[i].type == "textarea") {
			getstr += objs[i].name + "=" + 
			URLEncode(objs[i].value) + "&";
		}
		if (objs[i].type == "checkbox") {
			if (objs[i].checked) {
				getstr += objs[i].name + "=" + 
				URLEncode(objs[i].value) + "&";
			} 
			else {
				getstr += objs[i].name + "=&";
			}
		}
		if (objs[i].type == "radio") {
			if (objs[i].checked) {
				getstr += objs[i].name + "=" + 
				URLEncode(objs[i].value) + "&";
			}
		}  
		if (objs[i].tagName == "SELECT") {
			var sel = objs[i];
			getstr += sel.name + "=" + URLEncode(sel.options[sel.selectedIndex].value) + "&";
		}
	}
	return getstr;
}
//------------------------------------------------------------------------------------------------------------------------------------
function get_form_post_ant(obj) {
	var getstr = "";
	for (var i = 0; i < obj.getElementsByTagName("input").length; i++) {
		if (obj.getElementsByTagName("input")[i].type == "text" || obj.getElementsByTagName("input")[i].type == "hidden") {
			getstr += obj.getElementsByTagName("input")[i].name + "=" + 
			URLEncode(obj.getElementsByTagName("input")[i].value) + "&";
		}
		if (obj.getElementsByTagName("input")[i].type == "checkbox") {
			if (obj.getElementsByTagName("input")[i].checked) {
				getstr += obj.getElementsByTagName("input")[i].name + "=" + 
				URLEncode(obj.getElementsByTagName("input")[i].value) + "&";
			} 
			else {
				getstr += obj.getElementsByTagName("input")[i].name + "=&";
			}
		}
		if (obj.getElementsByTagName("input")[i].type == "radio") {
			if (obj.getElementsByTagName("input")[i].checked) {
				getstr += obj.getElementsByTagName("input")[i].name + "=" + 
				URLEncode(obj.getElementsByTagName("input")[i].value) + "&";
			}
		}  
		if (obj.getElementsByTagName("input")[i].tagName == "SELECT") {
			var sel = obj.getElementsByTagName("input")[i];
			getstr += sel.name + "=" + URLEncode(sel.options[sel.selectedIndex].value) + "&";
		}
	}
	return getstr;
}
//------------------------------------------------------------------------------------------------------------------------------------
function get_form_ant(obj) {
  var getstr = "";
  for (i=0; i<obj.childNodes.length; i++) {
	 if (obj.childNodes[i].tagName == "INPUT") {
		if (obj.childNodes[i].type == "text") {
		   getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		}
		if (obj.childNodes[i].type == "checkbox") {
		   if (obj.childNodes[i].checked) {
			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		   } else {
			  getstr += obj.childNodes[i].name + "=&";
		   }
		}
		if (obj.childNodes[i].type == "radio") {
		   if (obj.childNodes[i].checked) {
			  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		   }
		}
	 }   
	 if (obj.childNodes[i].tagName == "SELECT") {
		var sel = obj.childNodes[i];
		getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
	 }
  }
  return getstr;
}
//------------------------------------------------------------------------------------------------------------------------------------
function URLEncode(url) //Function to encode URL.
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" + // Numeric
	"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
	"abcdefghijklmnopqrstuvwxyz" +
	"-_.!~*'()"; // RFC2396 Mark characters
	var HEX = "0123456789ABCDEF"; 

	var plaintext = url;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
		if (ch == " ") {
			encoded += "+"; // x-www-urlencoded, rather than %20
		} 
		else if (SAFECHARS.indexOf(ch) != -1) {
			encoded += ch;
		} 
		else {
			var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
				alert( "Unicode Character '" 
				+ ch 
				+ "' cannot be encoded using standard URL encoding.\n" +
				"(URL encoding only supports 8-bit characters.)\n" +
				"A space (+) will be substituted." );
				encoded += "+";
			} 
			else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} 
	return encoded;
}; 
//------------------------------------------------------------------------------------------------------------------------------------
function URLDecode(url) //function decode URL
{
	// Replace + with ' '
	// Replace %xx with equivalent character
	// Put [ERROR] in output if %xx is invalid.
	var HEXCHARS = "0123456789ABCDEFabcdef"; 
	var encoded = url;
	var plaintext = "";
	var i = 0;
	while (i < encoded.length) {
		var ch = encoded.charAt(i);
		if (ch == "+") {
			plaintext += " ";
			i++;
		} 
		else if (ch == "%") {
			if (i < (encoded.length-2) 
			&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
			&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} 
			else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} 
		else {
			plaintext += ch;
			i++;
		}
	} // while 

	return plaintext;
}; 
//------------------------------------------------------------------------------------------------------------------------------------

