//document.write('<script language="JavaScript" src="../biblioteca/javascript/metodo.js" type="text/javascript"><//script>');
document.write('<script language="JavaScript" src="regex.js" type="text/javascript"></script>');

//DECLARA VARIÁVEIS PARA BROWSER'S
var isNav4, isNav, isIE;

//VERIFICA SE O BROWSER É ACIMA DA VERSÃO 4 IE OU OUTROS.
if(parseInt(navigator.appVersion.charAt(0)) >= 4){
	isNav	= (navigator.appName=="Netscape") ? true : false;
	isIE	= (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
}

//VERIFICA SE O BROWSER É VERSÃO 4 DO NETSCAPE.
if(navigator.appName=="Netscape"){
	isNav4 = (parseInt(navigator.appVersion.charAt(0))==4);
}

//REMOVE ACENTOS
function fctRemAcentos(vVlr){
	var vErrado 	= "áâäãàéèêëíìîïóòôöõúùûüýÿÁÂÄÀÉÈÊËÍÌÎÏÓÒÔÖÕÚÙÛÜÝ";
	var vCorreto  	= "aaaaaeeeeiiiiooooouuuuyyAAAAEEEEIIIIOOOOOUUUUY"; 
	var vRetorno = ""; 
	for(i=0;i<vErrado.length;i++){
		for(j=0;j<vVlr.length;j++){
			vRetorno = vVlr.replace(vErrado.substr(i,1),vCorreto.substr(i,1));
			vVlr = vRetorno;
		} 
	}
	return vRetorno;
}

//REMOVE ZERO A ESQUERDA NO NÚMERO
function fctRemoveZeroEsq(STR){
	var sAux = '';
	STR = new String(STR);
	var i = 0;
	while (i < STR.length ){
		if ((STR.charAt(i)!='.') && (STR.charAt(i)!=',')){
			sAux += STR.charAt(i);
		}
		i++
	}
	
	STR = new String(sAux);
	sAux = '';
	i = 0; 
	
	while (i < STR.length ){
		if (STR.charAt(i) != '0'){
			sAux = STR.substring(i,STR.length);
			i = STR.length;
		}
		i++
	}
	return sAux;
}

//VERIFICA SE O VALOR RECEBIDO É UM VALOR MONETÁRIO
function fctValidaMoeda(sValor){
	for(x=0; x < sValor.length; x++){
		if(isNaN(sValor.substring(x, x+1)) || sValor.substring(x, x+1) == " ")
			if(sValor.substring(x, x+1) != "," && sValor.substring(x, x+1) != ".") 
				return false;
	} 
	return true;
}

//VERIFICA SE O VALOR DIGITADO É UM NÚMERO
function fctNumero(e){
	var chaveTec = (isIE) ? event.keyCode : e.which;
	if (((chaveTec<48)||(chaveTec>57)) && (chaveTec!=13) && (chaveTec!="0") && (chaveTec!=8)){
		if(isIE){
			event.keyCode = 0;
		}
		return false;
	}
	return true;
}

//POSICIONA DATA COM BARRAS EFETUANDO A MÁSCARA DD/MM/AAAA
function fctData(str){
	var data,re,T;
	re = /\//g;
	data = new String(str);
	data = data.replace(re,"");
	data = data.substr(0,8);
	T = data.length;
	if (T>2 && T<5){
		data = data.substr(0,2) + "/" + data.substr(2,2);
	}
	if (T>4){
		data = data.substr(0,2) +"/"+ data.substr(2,2) +"/"+ data.substr(4,4);
	}
	return data;
}

//VALIDA DÍGITO PARA REMOVER CARACTER SOMENTE DO FINAL DA DATA - onkeydown
function fctValidaData(e){
	obj			= (isNav) ? e.target : event.srcElement;
	chaveTec	= (isNav) ? e.which : event.keyCode;

	switch(chaveTec){
		case 8:
			if(isIE){
				obj.value = fctData(obj.value.substring(0,obj.value.length-1)); 
				return false;
				break;
			}
		case 9:
			return true;
			break;
		case 46:
			obj.value = fctData(obj.value.substring(0,obj.value.length-1)); 
			return false;
			break;
	}
}

//VALIDA DÍGITO PARA REMOVER CARACTER SOMENTE DO FINAL DA DATA - onkeypress
function fctFormataData(e) {
	var obj,chaveTec;

	if(!fctNumero(e))
		return false;

	obj			= (isNav) ? e.target : event.srcElement;
	chaveTec	= (isNav) ? e.which : event.keyCode;

	switch (chaveTec){
		case 8:
			obj.value = fctData(obj.value.substring(0,obj.value.length-1)); 
			break;
		case 13:
			return true;
			break;
		default:
			if ((chaveTec>47)&&(chaveTec<58)){
				if (obj.maxLength>obj.value.length){
					obj.value = fctData(obj.value + String.fromCharCode(chaveTec));
				}
			}
	}
	if(chaveTec != 0)
		return false;
}

//POSICIONA VALOR COM PONTO(.) E VÍRGULA(,) EFETUANDO A MÁSCARA 000.000.000,00
function fctValor(str){
	var decimal, inteiro, i, count;
	STR = new String(str);
	STR = fctRemoveZeroEsq(STR);
	inteiro='';

	if (STR.length == 1){
		inteiro = '0';
		decimal = '0' + STR;
	} else{
		if (STR.length == 2){
			inteiro = '0'; decimal = STR;
		} else{
			decimal = STR.substring(STR.length-2,STR.length);
			i=3;
			count=0;
			while (i<=STR.length){
				if (count==3){
					inteiro = '.' + inteiro; count = 0;
				}
				inteiro = STR.charAt(STR.length-i) + inteiro; count++; i++;
			}
		}
	}
	if (inteiro == '') { inteiro = '0'; }
	if (decimal == '') { decimal = '00'; }
	return inteiro + ',' + decimal;
}

//VALIDA DÍGITO PARA REMOVER CARACTER SOMENTE DO FINAL DO VALOR - onkeydown
function fctValidaValor(e){
	obj			= (isNav) ? e.target : event.srcElement;
	chaveTec	= (isNav) ? e.which : event.keyCode;

	switch(chaveTec){
		case 8:
			if(isIE){
				obj.value = fctValor(obj.value.substring(0,obj.value.length-1)); 
				return false;
				break;
			}
		case 9:
			return true;
			break;
		case 46:
			obj.value = fctValor(obj.value.substring(0,obj.value.length-1)); 
			return false;
			break;
	}
}

//VALIDA DÍGITO PARA REMOVER CARACTER SOMENTE DO FINAL DO VALOR - onkeydown
function fctFormataValor(e) {
	var obj,chaveTec;

	if(!fctNumero(e))
		return false;

	obj			= (isNav) ? e.target : event.srcElement;
	chaveTec	= (isNav) ? e.which : event.keyCode;

	switch (chaveTec){
		case 8:
			obj.value = fctValor(obj.value.substring(0,obj.value.length-1)); 
			break;
		case 13:
			return true;
			break;
		default:
			if ((chaveTec>47)&&(chaveTec<58)){
				if (obj.maxLength>obj.value.length){
					obj.value = fctValor(obj.value + String.fromCharCode(chaveTec));
				}
			}
	}
	if(chaveTec != 0)
		return false;
}

//POSICIONA VALOR COM PONTO(.) E VÍRGULA(,) EFETUANDO A MÁSCARA 000.000.000,00
function fctValor2(str){
	var decimal, inteiro, i, count;
	STR = new String(str);
	STR = fctRemoveZeroEsq(STR);
	inteiro='';

	if (STR.length == 1){
		inteiro = '0';
		decimal = '00' + STR;
	} else{
		if (STR.length == 2){
			inteiro = '0'; decimal = '0' + STR;
		} else{
			decimal = STR.substring(STR.length-3,STR.length);
			i=4;
			count=0;
			while (i<=STR.length){
				if (count==3){
					inteiro = '.' + inteiro; count = 0;
				}
				inteiro = STR.charAt(STR.length-i) + inteiro; count++; i++;
			}
		}
	}
	if (inteiro == '') { inteiro = '0'; }
	if (decimal == '') { decimal = '000'; }
	return inteiro + ',' + decimal;
}

//VALIDA DÍGITO PARA REMOVER CARACTER SOMENTE DO FINAL DO VALOR - onkeydown
function fctValidaValor2(e){
	obj			= (isNav) ? e.target : event.srcElement;
	chaveTec	= (isNav) ? e.which : event.keyCode;

	switch(chaveTec){
		case 8:
			if(isIE){
				obj.value = fctValor2(obj.value.substring(0,obj.value.length-1)); 
				return false;
				break;
			}
		case 9:
			return true;
			break;
		case 46:
			obj.value = fctValor2(obj.value.substring(0,obj.value.length-1)); 
			return false;
			break;
	}
}

//VALIDA DÍGITO PARA REMOVER CARACTER SOMENTE DO FINAL DO VALOR - onkeydown
function fctFormataValor2(e) {
	var obj,chaveTec;

	if(!fctNumero(e))
		return false;

	obj			= (isNav) ? e.target : event.srcElement;
	chaveTec	= (isNav) ? e.which : event.keyCode;

	switch (chaveTec){
		case 8:
			obj.value = fctValor2(obj.value.substring(0,obj.value.length-1)); 
			break;
		case 13:
			return true;
			break;
		default:
			if ((chaveTec>47)&&(chaveTec<58)){
				if (obj.maxLength>obj.value.length){
					obj.value = fctValor2(obj.value + String.fromCharCode(chaveTec));
				}
			}
	}
	if(chaveTec != 0)
		return false;
}

//FUNÇÃO PARA EXIBIR JANELA DO CORREIOS PARA BUSCA DE CEP
function fctCepPopUp(){
	window.open('http://www.correios.com.br/servicos/cep/cep_default.cfm','ShowCep','location=no,resize=no, width=730,height=400,left=18,top=18,maximized=0,scrollbars=1');
}

//FUNÇÃO PARA EXIBIR VALOR INICIAL EM UM CAMPO TEXT COM O PADRÃO ACEITO PELO MESMO
function fctMascaraCampo(e, mascara){
	var vEvt	= e.type.toUpperCase().trim();
	var vObj	= (isNav) ? e.target : event.srcElement;

	if(vEvt == "FOCUS" && vObj.value.trim() == mascara){
		vObj.value = "";
	}
	else if(vEvt == "BLUR" && vObj.value.trim() == ""){
		vObj.value = mascara;
	}
}

//FUNÇÃO PARA EFETUAR REQUISIÇÕES POR AJAX
function fctAjax(http_url, http_result){
	http_request = false;

	if(window.XMLHttpRequest){// Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if(http_request.overrideMimeType){
			http_request.overrideMimeType('text/xml');
		}
	} 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('Ocorreu um erro na chamada.');
		return false;
	}

	http_request.onreadystatechange = function(){
		if(http_request.readyState == 4){
			if(http_request.status == 200){
				//if(http_response == "T"){// RETORNO DO TIPO TEXTO
					// OBTÉM O RESULTADO
					var texto = http_request.responseText;

					// DESFAZ O URLENCODE
					texto	= texto.replace(/\+/g," ");
					texto	= unescape(texto);
					http_result.innerHTML = texto;

				/*} else{// RETORNO DO TIPO XML
					var xmldoc		= http_request.responseXML;
					var root_node	= xmldoc.getElementsByTagName('root').item(0);
					alert(root_node.firstChild.data);
				}*/
			} else{
				alert('Ocorreu um problema na requisição.');
				//objAjax.status
				//function printingIdentifiedErrors(id,intStatus,strText){
					//printingIdentifiedErrors(id,objAjax.status,objAjax.responseText);
			}
		}
	}

	http_request.open('GET', http_url, true);
	http_request.send(null);
	/*
	}

	// PROPRIEDADE RESPONSÁVEL PELO CONTROLE DA RESPOSTA DA REQUISIÇÃO
	// TIPO DE RETORNO XML (X) E TEXTO (T)
	http_response = vTipoRes;
	http_request.onreadystatechange = fctRetornoAjax;

	//ABRE ENVELOPE DE ENVIO
	http_request.open(http_method, http_url, true);

	if(http_method == "POST"){
		// CONTROLE DE REQUISIÇÃO
		http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
		// CONTROLE DE CACHE
		http_request.setRequestHeader("Cache-Control","no-store, no-cache, must-revalidate");
		http_request.setRequestHeader("Cache-Control","post-check=0, pre-check=0");
		http_request.setRequestHeader("Pragma", "no-cache");	
	}

	http_request.send(http_send);
	*/
}

/* Gera a mensagem de erro de acordo com o status HTTP do servidor */
/*
function printingIdentifiedErrors(id,intStatus,strText){

        switch(intStatus){
                // Quando o servidor processa a solicitação com sucesso mas tem problemas com a montagem do conteúdo
                case 201 : printById(id,"<p>Erro 201 (Criado) - A solicitação foi bem-sucedida, mas, o servidor criou um novo recurso.</p>"); break;
                case 202 : printById(id,"<p>Erro 202 (Aceito) - O servidor aceitou a solicitação, mas não a processou a tempos.</p>"); break;
                case 203 : printById(id,"<p>Erro 203 (Informação não-autorizável) - O servidor processou a solicitação com sucesso, mas está retornando informações que podem ser de outra fonte.</p>"); break;
                case 204 : printById(id,"<p>Erro 204 (Sem conteúdo) - O servidor processou a solicitação com sucesso, mas não está retornando conteúdo algum.</p>"); break;
                case 205 : printById(id,"<p>Erro 205 (Redefinir conteúdo) - O servidor processou a solicitação com sucesso, mas não está retornando conteúdo algum porque o conteúdo está sendo redefinido.</p>"); break;
                case 206 : printById(id,"<p>Erro 206 (Conteúdo parcial) - O servidor processou uma solicitação parcialmente.</p>"); break;
                // Qanda há erros na solicitação, que impediu que o servidor a processasse 
                case 400 : printById(id,"<p>Erro 400 (Solicitação Inválida) - O servidor não entendeu o código da solicitação.</p>"); break;
                case 401 : printById(id,"<p>Erro 401 (Não Autorizado) - Não Autorizado</p>"); break;
                case 403 : printById(id,"<p>Erro 403 (Proibido) - O servidor recusou a solicitação.</p>"); break;
                case 404 : printById(id,"<p>Erro 404 (Não Encontrado) - O servidor não encontrou a página solicitada</p>"); break;
                case 405 : printById(id,"<p>Erro 405 - MethodNotAllowed</p>"); break;
                case 408 : printById(id,"<p>Erro 408 (Expiração da solicitação) - O servidor expirou ao esperar pela solicitação.</p>"); break;
                // Quando o servidor teve um erro interno ao tentar processar a solicitação
                case 500 : printById(id,"<p>Erro 500 (Erro interno do servidor) <br />" + strText + "</p>"); break;
                case 501 : printById(id,"<p>Erro 501 (Não implementado) - O servidor não tem a funcionalidade necessária para completar a solicitação.</p>"); break;
                case 503 : printById(id,"<p>Erro 503 (Serviço Indisponível) - O servidor está indisponível (por sobrecarga ou inatividade para manutenção). Geralmente, esse status é temporário..</p>"); break;
        }

        alert("Esta página contém erros!");

}
*/
// ADICIONA FUNÇÕES E OBJETOS JAVASCRIPT À PÁGINA
function appendJavaScript(id){
	var objId = window.document.getElementById(id);
	var objElement = objId.getElementsByTagName("script");
	var objScript;

	for(var x = 0; x < objElement.length; x++){
		objScript = document.createElement('script');
		objScript.type = "text/javascript";

		if(objElement[x].src)
			objScript.src = objElement[x].src;
		else
			objScript.text = objElement[x].text;
	
		window.document.body.appendChild(objScript);
	}
	return true;
}
