/*
SCRIPT AJAX

Criado por: Bruno Augusto Ramon dos Santos

Empresa: Plus Internet & Technologies
Razao Social: SANTOS & VENTURA INFORMATICA LTDA-ME
Data Criação: 23/02/2007 - 18:27
Ultima Alteração: 26/02/2007 - 23:28
UA: 12/03/2007 - 18:56

Codigo protegido: GNU/CC
http://creativecommons.org/licenses/by-nc-nd/2.5/br/
Todos os direitos do codigo reservados

Este codigo somente podera ser utilizado para fins comerciais pelo seu criador,
em proteção ao intelecto. A distribuição está sendo feita pela Santos & Ventura
Informatica LTDA - ME sob autorização do criador, que nessa empresa possui sociedade.
A cópia desse código é de distribuição gratuita para fins educacionais desde de
que citada a fonte criadora.
*/

/* ===============================================================================================
	Faz a criacao do objeto ajax
==================================================================================================*/
Ajax = function (){   
    try{   
        xmlhttp = new XMLHttpRequest();
    }catch(ee){   
        try{   
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){   
            try{   
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(E){   
                xmlhttp = false;   
            }   
        }   
    }   

}
Ajax_cep = function (){   
    try{   
        xmlhttp_cep = new XMLHttpRequest();
    }catch(ee){   
        try{   
            xmlhttp_cep = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){   
            try{   
                xmlhttp_cep = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(E){   
                xmlhttp_cep = false;   
            }   
        }   
    }   

}
Ajax_thumbs = function (){   
    try{   
        xmlhttp = new XMLHttpRequest();
    }catch(ee){   
        try{   
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){   
            try{   
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(E){   
                xmlhttp = false;   
            }   
        }   
    }   

}
/* ==============================================================================================
	FUNCAO AJAXGET - Funcao responsavel por pegar as informacoes de uma url e coloca-la num div
================================================================================================= */
ajaxGet = function( nomeUrl, divRetorno ){   
  
    divInsereResposta = document.getElementById( divRetorno );
	//divInsereResposta.innerHTML = "<table width='120' border='0' cellspacing='0' cellpadding='0'><tr><td width='32'><img src='imgs/aero_light.gif'/></td><td width='88'><span class='loading'>CARREGANDO...</span></td></tr></table>";
	Ajax(); 
    xmlhttp.abort();
	carregando(divRetorno);
	nomeUrl2 = antiCacheRand(nomeUrl);
    xmlhttp.open("POST", nomeUrl2 ,true);
    xmlhttp.onreadystatechange = function() {   
            if( xmlhttp.readyState == 4 ){   
                   
                var valorRetorno            = xmlhttp.responseText;
                divInsereResposta.innerHTML = valorRetorno;
				apaga_carregando();
                       
            }   
    }   
    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xmlhttp.setRequestHeader("Pragma", "no-cache");
    //xmlhttp.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");   
	//xmlhttp.setRequestHeader("Content-type: application/xml; charset=UTF-8");
	//xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.send('1');   
  
}  

/* =========================================================================================
	FUNCAO DE THUMBS NA FOTO PEQUENA
============================================================================================*/
ajaxGet_thumbs = function(fotoURL, divRetorno){   
    divInsereResposta = document.getElementById( divRetorno );
	Ajax(); 
    xmlhttp.abort();
	//fotoUrl2 = antiCacheRand(fotoUrl);
    xmlhttp.open("POST", fotoURL ,true);
    xmlhttp.onreadystatechange = function() {   
            if( xmlhttp.readyState == 4 ){   
                   
                var valorRetorno            = xmlhttp.responseText;
                divInsereResposta.innerHTML = valorRetorno;
                       
            }   
    }   
    xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xmlhttp.setRequestHeader("Pragma", "no-cache");
    //xmlhttp.setRequestHeader("Content-Type", "text/html; charset=iso-8859-1");   
	//xmlhttp.setRequestHeader("Content-type: application/xml; charset=UTF-8");
	//xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.send('1');   
  
}
function mostra_thumbs(fotoURL2, divRetorno){
		var div_thumbs = document.getElementById("LayerThumbs");
		div_thumbs.innerHTML = "<b> CARREGANDO... </B>";
		Ajax_thumbs(); 
		xmlhttp.abort();
		fotoUrl2 = antiCacheRand(fotoURL2);
		xmlhttp.open("POST", fotoUrl2 ,true);
		xmlhttp.onreadystatechange = function() {
				if( xmlhttp.readyState == 4 ){   
					   
					var valorRetorno            = xmlhttp.responseText;
					div_thumbs.innerHTML = valorRetorno;
						   
			}
		}   
		xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		xmlhttp.setRequestHeader("Pragma", "no-cache");
		xmlhttp.send('1');   		
		//div_thumbs.innerHTML = retorno;
	    div_thumbs.style.width = "400px";
		div_thumbs.style.height = "200px";
		div_thumbs.style.top = getMouseY() + "px"; // Entrada manual. Entre com o valor da altura do menu ao conteudo onde aparece o carregando.
		tam_body = parseInt(document.body.clientWidth); // Tira o PX do tamanho da janela do browser cliente
		offset = parseInt("10"); // Define o OffSet da margem esquerda do site
		/* Divide Janela do cliente por 2. Subtrai da metade do tamanho do Layer. Soma o Offset do lado direito da pagina. Soma 20 que eh a margem de erro da borda do IE*/
		total_size = getMouseX() + "px";
    	div_thumbs.style.left = total_size;
		div_thumbs.style.visibility = "visible";
}

function getMouseX(e) {
	var IE = document.all?true:false;
	if (!IE) document.captureEvents(Event.MOUSEMOVE)

	var tempX = 0
	var tempY = 0
  if (IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  return tempX
}
function getMouseY(e) {
	var IE = document.all?true:false;
	if (!IE) document.captureEvents(Event.MOUSEMOVE)	
	var tempX = 0
	var tempY = 0
	if (IE) { // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.body.scrollLeft
		tempY = event.clientY + document.body.scrollTop
	} else {  // grab the x-y pos.s if browser is NS
		tempX = e.pageX
		tempY = e.pageY
	}  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  return tempY
}


function apaga_thumbs(){
	var div_thumbs = document.getElementById("LayerThumbs");
	div_thumbs.style.visibility = "hidden";	
}

function getStyle(el,styleProp)
{
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}



/* =========================================================================================
	Funcoes que gerenciam o DIV transparente do carregando quando busca via ajax
============================================================================================ */

function apaga_carregando(){
		var div_carregando = document.getElementById("LayerCarregando");
		div_carregando.innerHTML = "";
		div_carregando.style.visibility = "hidden";
}
function carregando(divRetorno){
		var div_carregando = document.getElementById("LayerCarregando");
		div_carregando.style.visibility = "visible";
		div_carregando.innerHTML = "<center><table width='120' border='0' cellspacing='0' cellpadding='0'><tr><td width='32'><img src='images/ajax_loading.gif'/></td><td width='88'><span class='loading' style='font-family:arial, verdana; font-size:12px; font-weight:bolder'>CARREGANDO...</span></td></tr></table></center>";
	    div_carregando.style.width = "230px";
		div_carregando.style.height = "100px";
		div_carregando.style.top = "60px"; // Entrada manual. Entre com o valor da altura do menu ao conteudo onde aparece o carregando.
		tam_body = parseInt(document.body.clientWidth); // Tira o PX do tamanho da janela do browser cliente
		offset = parseInt("10"); // Define o OffSet da margem esquerda do site
		/* Divide Janela do cliente por 2. Subtrai da metade do tamanho do Layer. Soma o Offset do lado direito da pagina. Soma 20 que eh a margem de erro da borda do IE*/
		total_size = (((tam_body/2)-245)+offset)+20;
		total_size = total_size + "px";
    	div_carregando.style.left = total_size;
		div_carregando.style.top = "270px";
		/* ((parseint(document.body.clientWidth)/2)-115)-214 + "px"; */

}
/* =================================================================================
	Funcao para gerar sequencia aleatoria e não gerar cache
==================================================================================== */
function antiCacheRand(aurl){
        var dt = new Date();
        if(aurl.indexOf("?")>=0){// já tem parametros ADAPTA RANDOM / SE NAO CRIA PARAM. RANDOM
            return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());
        }else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}
}
/* =================================================================================
FUNCAO SPIN - UP/DOWN PARA BOTOES
==================================================================================== */
function spin(tipo, valor, objeto_form, objeto){
	objOp = document.forms[objeto_form].elements[objeto];
	valor = parseInt(valor);
	if(tipo=="up"){
		if (valor >= 999){
			valor = 999;
		}else{
			valor = parseInt(valor+1);
		}
	}else{
		if(valor <= 1){
			valor = 1;
		}else{
			valor = parseInt(valor-1);
		}
	}
	objOp.value = parseInt(valor);
}
/*==================================================================================
	Funcoes para mascara de objetos CEP, CNPJ, CPF, INDENTIDADE E TELEFONE
	Adaptação de Resource para fins especificos
==================================================================================== */
function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefonem(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpfm(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cepm(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpjm(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}


function site(v){
    v=v.replace(/^http:\/\/?/,"")
    dominio=v
    caminho=""
    if(v.indexOf("/")>-1)
        dominio=v.split("/")[0]
        caminho=v.replace(/[^\/]*/,"")
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    caminho=caminho.replace(/([\?&])=/,"$1")
    if(caminho!="")dominio=dominio.replace(/\.+$/,"")
    v="http://"+dominio+caminho
    return v
}
/* =============================================================================================
	 FUNCAO PARA DESABILITAR O ENTER DE UM CAMPO TEXT
	 Adaptado para fins especicos de um Resource já criado
================================================================================================ */
function handleEnter (field, event) {
        var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
        if (keyCode == 13) {
            var i;
            for (i = 0; i < field.form.elements.length; i++)
                if (field == field.form.elements[i])
                    break;
            i = (i + 1) % field.form.elements.length;
            return false;
        } 
        else
        return true;
    }    
	
/*
	AJAX GET CEP - A mesma funcao do AjaxGet mas para CEP
*/
ajaxGet_cep = function(cep, retorno){
	document.getElementById("btn_busca_cep").disabled = true;
	document.forms['form_confirma'].elements["endereco"].value = "Carregando...";
	document.forms['form_confirma'].elements["bairro"].value = "Carregando...";
	document.forms['form_confirma'].elements["cidade"].value = "Carregando...";
	document.forms['form_confirma'].elements["uf"].value = "Carregando...";	
	//document.getElementById("resposta_cep").innerHTML = "<center>Carregando...</center>";
/*
document.forms['form_confirma'].cep_ent.value
*/
	Ajax_cep();
    xmlhttp_cep.abort();
	//carregando(divRetorno);
	nomeUrl = "buscacep.php?cep="+cep;
	//alert (nomeUrl);
	nomeUrl2 = antiCacheRand(nomeUrl);
    xmlhttp_cep.open("POST", nomeUrl2 ,true);
	xmlhttp_cep.onreadystatechange = handleResponse;

	//xmlhttp_cep.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    //xmlhttp_cep.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    //xmlhttp_cep.setRequestHeader("Pragma", "no-cache");
	//xmlhttp_cep.setRequestHeader("Content-type: application/xml; charset=UTF-8");

    xmlhttp_cep.send('1');  

	document.forms['form_confirma'].elements["btn_busca_cep"].disabled = false;
}  

function handleResponse() { 
   if(xmlhttp_cep.readyState == 4) { 
      var response = xmlhttp_cep.responseText; 
		pega_endereco (response);
   } else {       
      //alert (xmlhttp_cep.readyState);
   } 
} 


function pega_endereco(req){
				var valorRetorno            = req ;
				str=valorRetorno; // extriar o string do controlador hidden
				nsep=4 // número do separador
				for (var i=0;i<nsep;i++){ 
					pos=str.indexOf("|"); 
					if (i==0){
						document.forms['form_confirma'].elements["endereco"].value = str.substring(0,pos);
					}else{
						if(i==1){
							document.forms['form_confirma'].elements["bairro"].value = str.substring(0,pos);
						}else{
							if(i==2){
								document.forms['form_confirma'].elements["cidade"].value = str.substring(0,pos);
							}else{
								if(i==3){
									document.forms['form_confirma'].elements["uf"].value = str.substring(0,pos);
								}
							}
						}
					}
					str=str.substring(pos+1,str.length);		
				}
}

/* ==============================================================================================
FUNCAO PARA PEGAR O ENDERECO DA PAGINA DE CADASTRO
=============================================================================================== */
ajaxGet_cep_cad = function(cep, retorno){
	
	document.forms['form_cadastro'].elements["endereco"].value = "Carregando...";
	document.forms['form_cadastro'].elements["bairro"].value = "Carregando...";
	document.forms['form_cadastro'].elements["cidade"].value = "Carregando...";
	document.forms['form_cadastro'].elements["uf"].value = "Carregando...";	

	Ajax_cep();
    xmlhttp_cep.abort();
	//carregando(divRetorno);
	nomeUrl = "buscacep_cadastro.php?cep="+cep;
	//alert (nomeUrl);
	nomeUrl2 = antiCacheRand(nomeUrl);
    xmlhttp_cep.open("POST", nomeUrl2 ,true);
	xmlhttp_cep.onreadystatechange = handleResponse2;

	//xmlhttp_cep.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    //xmlhttp_cep.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    //xmlhttp_cep.setRequestHeader("Pragma", "no-cache");
	//xmlhttp_cep.setRequestHeader("Content-type: application/xml; charset=UTF-8");

    xmlhttp_cep.send('1');  

}  
function handleResponse2() { 
   if(xmlhttp_cep.readyState == 4) { 
      var response = xmlhttp_cep.responseText; 
		pega_endereco2 (response);
   } else {       
      //alert (xmlhttp_cep.readyState);
   } 
} 


function pega_endereco2(req){
				var valorRetorno            = req ;
				str=valorRetorno; // extriar o string do controlador hidden
				nsep=4 // número do separador
				for (var i=0;i<nsep;i++){ 
					pos=str.indexOf("|"); 
					if (i==0){
						document.forms['form_cadastro'].elements["endereco"].value = str.substring(0,pos);
					}else{
						if(i==1){
							document.forms['form_cadastro'].elements["bairro"].value = str.substring(0,pos);
						}else{
							if(i==2){
								document.forms['form_cadastro'].elements["cidade"].value = str.substring(0,pos);
							}else{
								if(i==3){
									document.forms['form_cadastro'].elements["uf"].value = str.substring(0,pos);
								}
							}
						}
					}
					str=str.substring(pos+1,str.length);		
				}
}
