/* JavaScript
-------------------------------------------------------------------------------------------
	Copyright (c) 2008 AgenciaWX Development Team
-------------------------------------------------------------------------------------------*/
// Opções
var WX_debug = true;	// Modo Debug

// Variaveis Globais
var WX_objInput;
var	WX_objMascara;



// =========================================
// Função que retorna o resultado da mascara
// =========================================
function WXmascaraRet(campo, mascara){

	// Verificação
	if (!WX_verificacao(campo))
		return false;
	// ================


	campo = WXexecMascara(campo, mascara);
	return campo;

}

// ==============================================================
// Função que trabalha diretamente com o objeto, já o modificando
// ==============================================================
function WXmascaraObj(obj, mascara){

	// Verificação
	if (!WX_verificacao(obj.value))
		return false;
	// ================

	WX_objInput = obj;
	WX_objMascara = mascara;

    setTimeout("intMascara()",1);
	return true;
}
// ==============================================================
function WX_verificacao(value){

	if (WX_debug){
		if (value == null){
			alert('WxMascara: Foi passado um objeto para a funcao Máscara inválida (precisa ser objeto com atributo value');
			return false
		}
	}
	return true;
}
// ==============================================================
function intMascara(){
	WX_objInput.value = WXexecMascara(WX_objInput.value, WX_objMascara);
	return true;
}

// ==============================================================
function WXexecMascara(value, mascara){

	switch (mascara){

		case "DIGITONUMERICO": 	// Apenas caracteres numerico
			value=value.replace(/\D/g,"");                 //Remove tudo o que não é dígito
			return value;

		case "NUMERO":		// Apenas valores 
			value=value.replace(/\D/g,"");                 //Remove tudo o que não é dígito
			value = (value * 1);
			return value;

		case "TELEFONE":
			value=value.replace(/\D/g,"");                 //Remove tudo o que não é dígito
			value=value.replace(/^(\d\d)(\d)/g,"($1) $2"); //Coloca parênteses em volta dos dois primeiros dígitos
			value=value.replace(/(\d{4})(\d)/,"$1-$2");    //Coloca hífen entre o quarto e o quinto dígitos
			return value;

		case "CPF":
			value=value.replace(/\D/g,"")                    //Remove tudo o que não é dígito
			value=value.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
			value=value.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)
			value=value.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
			return value;

		case "CEP":
			value=value.replace(/D/g,"")                //Remove tudo o que não é dígito
			value=value.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
			return  value
		case "CNPJ":
			value=value.replace(/\D/g,"")                           //Remove tudo o que não é dígito
			value=value.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
			value=value.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
			value=value.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
			value=value.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
			return  value
		case "SITE":
			//Esse sem comentarios para que você entenda sozinho ;-) perde cursor
			value=value.replace(/^http:\/\/?/,"")
			dominio=value
			caminho=""
			if(value.indexOf("/")>-1)
				dominio=value.split("/")[0]
				caminho=value.replace(/[^\/]*/,"")
			dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
			caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
			caminho=caminho.replace(/([\?&])=/,"$1")
			if(caminho!="")dominio=dominio.replace(/\.+$/,"")
			value="http://"+dominio+caminho
			return value

		case "DATA":
			value=value.replace(/\D/g,"")                    	   //Remove tudo o que não é dígito
			value=value.replace(/^(\d{2})(\d)/,"$1/$2");			// Adiciona uma / entre o 2 e 3 digito
			value=value.replace(/^(.....)(.)/,"$1/$2");				// Adiciona uma / entre o 5 e 6 digito			
			value=value.replace(/^([0][0]|[4-9]|[3][2-9])/, "");			// Sbustitui Dia se estiver errado
			value=value.replace(/^(...)([0][0]|[2-9]|[1][3-9])/, "$1");	// Sbustitui Mes se estiver errado
			return value
			
		case "DATAHORA":
			value=value.replace(/\D/g,"")                    	  			 //Remove tudo o que não é dígito
			value=value.replace(/^(\d{2})(\d)/,"$1/$2");					// Adiciona uma / entre o 2 e 3 digito
			value=value.replace(/^(.....)(.)/,"$1/$2");						// Adiciona uma / entre o 5 e 6 digito
			value=value.replace(/^(..........)(.)/,"$1 $2");				// Adiciona uma " " entre o 5 e 6 digito						
			value=value.replace(/^(.............)(.)/,"$1:$2");				
			value=value.replace(/^(................)(.)/,"$1:$2");			
			value=value.replace(/^(...................)(.)/,"$1");			
			value=value.replace(/^([0][0]|[4-9]|[3][2-9])/, "");			// Sbustitui Dia se estiver errado
			value=value.replace(/^(...)([0][0]|[2-9]|[1][3-9])/, "$1");		// Sbustitui Mes se estiver errado
			value=value.replace(/^(......)([0]|[3-9]|[1][0-8]|[2][1-9])/, "$1");		// Sbustitui Ano se estiver errado			
			return value			

		case "REAIS":
			value=value.replace(/[^0-9.,-]/g,"");     //Remove tudo o que não é dígito ou virgula
			value=value.replace(/[.]/g,",") ; 		// Troca , por . (para calcular o valor numerico)	

			return value;

		default:
			if (WX_debug){
				alert('WxMascara: Filtro de máscara inexistente:' + mascara)
				return "";
			}
			return value;
	}
}
