	function htmlEntities(str)
	{
	    if(!str)
		{
	        return "";
	    }
	    else
		{
	        var keys = new Array(
	        "&", " ", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³",
	        "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï",
	        "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë",
	        "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ", "\"", "<", ">", "");
			
	        var values = new Array(
	        "&amp;", "&nbsp;", "&iexcl;", "&cent;", "&pound;", "&curren;", "&yen;", "&brvbar;", "&sect;", "&uml;", "&copy;",
	        "&ordf;", "&laquo;", "&not;", "&shy;", "&reg;", "&macr;", "&deg;", "&plusmn;", "&sup2;", "&sup3;", "&acute;", "&micro;", "&para;",
	        "&middot;", "&cedil;", "&sup1;", "&ordm;", "&raquo;", "&frac14;", "&frac12;", "&frac34;", "&iquest;", "&Agrave;", "&Aacute;", "&Acirc;",
	        "&Atilde;", "&Auml;", "&Aring;", "&AElig;", "&Ccedil;", "&Egrave;", "&Eacute;", "&Ecirc;", "&Euml;", "&Igrave;", "&Iacute;", "&Icirc;",
	        "&Iuml;", "&ETH;", "&Ntilde;", "&Ograve;", "&Oacute;", "&Ocirc;", "&Otilde;", "&Ouml;", "&times;", "&Oslash;", "&Ugrave;", "&Uacute;",
	        "&Ucirc;", "&Uuml;", "&Yacute;", "&THORN;", "&szlig;", "&agrave;", "&aacute;", "&acirc;", "&atilde;", "&auml;", "&aring;", "&aelig;",
	        "&ccedil;", "&egrave;", "&eacute;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&icirc;", "&iuml;", "&eth;", "&ntilde;", "&ograve;",
	        "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&divide;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&yacute;", "&thorn;",
	        "&yuml;", "&quot;", "&lt;", "&gt;", "");
	       
	        for(var i=0; i<keys.length; i++)
			{
	            if( values[i] != "&nbsp;")
				{
	                str = str.replace(keys[i], values[i]);
	            }
	        }
	        return str;
	    }
	}
	
	
	function objXMLHttp()
	{
		var ajax = false;
		
		if(window.XMLHttpRequest)
		{ // Mozilla, Safari...
			var objetoXMLHttp = new XMLHttpRequest();
			return objetoXMLHttp;
		}
		else if(window.ActiveXObject)
		{ // IE
			var versoes = 
				[
					"MSXML2.XMLHttp.6.0",
					"MSXML2.XMLHttp.5.0",
					"MSXML2.XMLHttp.4.0",
					"MSXML2.XMLHttp.3.0",
					"MSXML2.XMLHttp",
					"Microsoft.XMLHttp"
				];
				
			for(var i = 0; i < versoes.length; i++)
			{
				try
				{
					var objetoXMLHttp = new ActiveXObject(versoes[i]);
					return objetoXMLHttp;
				}
				catch(ex)
				{
					//nada
				}
			}
		}
		return false;	
	}
	
	
	function getForm(objForm)
	{
		
		var params = new Array();
		
		for(var i=0; i < objForm.elements.length; i++)
		{
			var parametro;
			var flagPost = true; 
			
            if (objForm.elements[i].value == "")
			{
                flagPost = false;
            }
			
			if (objForm.elements[i].type == "checkbox" || objForm.elements[i].type == "radio")
			{
				if(!objForm.elements[i].checked)
                    flagPost = false;
			}
			
			if(flagPost == true)
			{
				parametro = encodeURIComponent(objForm.elements[i].name);
                parametro += "=";
                parametro += encodeURIComponent( htmlEntities(objForm.elements[i].value) );
                params.push(parametro);
			}
			flagPost = true;
		}
		
		return params.join("&");
	}
	
	
	function enviar(action,formulario,retorno,reset)
	{
		
		var dados = getForm(formulario);
		var ajax = objXMLHttp();
		
		ajax.open("POST" , action , true);
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded charset=iso-8859-1");
		
		ajax.onreadystatechange = function()
		{
			//enquanto estiver processando... emite a msg de carregando
			if(ajax.readyState == 1)
			{
				document.getElementById('carregando').style.display = "block";
				scroll(0,0);
			}
			if(ajax.readyState == 4)
			{
				if(ajax.status == 200)
				{
					document.getElementById('carregando').style.display = "none";
					mensagem(retorno,ajax.responseText);
				}
				else
				{
					document.getElementById('carregando').style.display = "none";
					mensagem(retorno,"Ocorreu o erro: "+ ajax.statusText);
				}
			}
		}
		ajax.send(dados);
		if(reset == true)
		{
			formulario.reset();
			return false;
	    }
		else
		{
			return false;
		}
		
	}
	
	function mensagem(id,msg)
	{
        document.getElementById(id).innerHTML = msg;
    }
	
	function getDados(id,pagina)
	{
		if(!id)
		  id = "backgroundTabelas";
		  
		var ajax = objXMLHttp();
		
		if(ajax)
		{
			ajax.open("GET", pagina, true);
			ajax.onreadystatechange = function()
			{//enquanto estiver processando...emite a msg de carregando
				
				if(ajax.readyState == 1)
				{
					document.getElementById(id).innerHTML = "<div id='img_loading'></div>";
				}
				if(ajax.readyState == 4)
				{
					if(ajax.status == 200)
					{
						document.getElementById(id).innerHTML = ajax.responseText;												
					}
					else
					{
						alert("Houve um problema ao carregar");
					}
				}
			}
		}
		ajax.send(null);
	}
	
	function getDadosPesquisa(retorno,pagina)
	{
				  
		var ajax = objXMLHttp();
		
		if(ajax)
		{
			ajax.open("GET", pagina, true);
			ajax.onreadystatechange = function()
			{//enquanto estiver processando...emite a msg de carregando
				
				if(ajax.readyState == 1)
				{
					document.getElementById(retorno).innerHTML = "<div id='carregando2'><div id='img_load_pesquisa'></div></div>";
				}
				if(ajax.readyState == 4)
				{
					if(ajax.status == 200)
					{
						document.getElementById(retorno).innerHTML = ajax.responseText;												
					}
					else
					{
						alert("Houve um problema ao carregar");
						document.getElementById(retorno).style.display = "none";
					}
				}
			}
		}
		ajax.send(null);
	}
	
	function jumpMenuAjax(pagina,selectValue)
	{
		//<select onchange="jumpMenuAjax('ajax.php',this);">
	    var page = pagina+selectValue.options[selectValue.selectedIndex].value;
	    getDados('',page);
    }
    
    function jumpMenuAjax2(pagina,retorno,param,selectValue)
	{
		//<select onchange="jumpMenuAjax2('ajax.php','div_retorno',param,this);">
	    var page = pagina+param+selectValue.options[selectValue.selectedIndex].value;
	    getDados(retorno,page);
    }
	
	function excluirContentsAjax(id,url,MSG)
	{
	    if(confirm(MSG))
	        getDados(id,url);
	    else
	        return false;
    }
	
	function validaTodosAjax(action,nform,retorno,reset)
	{
	    for(var i = 0; i < nform.elements.length; i++)
		{
	        if(nform.elements[i].value == "" && nform.elements[i].type != "hidden" && nform.elements[i].type != "checkbox")
			{
	            alert("Preencha todos os campos");
	            nform.elements[i].focus();
	            return false;
	        }
	    }
		return enviar(action,nform,retorno,reset);   
    }
    
    function validaTodosExcessaoAjax(action,nform,retorno,reset,excessao)
	{
	    for(var i = 0; i < nform.elements.length; i++)
		{
	        if(nform.elements[i].value == "" && nform.elements[i].type != "hidden" && nform.elements[i].type != "checkbox" && nform.elements[i].name != excessao)
			{
	            alert("Preencha todos os campos");
	            nform.elements[i].focus();
	            return false;
	        }
	    }
		return enviar(action,nform,retorno,reset);   
    }
	
	function resetForm(nform)
	{
		if(!nform)
		  return false;
		else 
		  return nform.reset();
	}