//Funcao que valida a data
function ValidaData(Formulario, Campo, Tipo) 
{
	//Tipo = 1 é pq a data nao pode ser menor q a data atual
	//alert(Tipo);
	erro = false;
	var dataDigitada = Formulario[Campo].value;
	if (dataDigitada != ""){
		
		var array_data = new Array;
		var ExpReg = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}");
		//vetor que contem o dia o mes e o ano
		array_data = dataDigitada.split("/");
		//Valido se a data esta no formato dd/mm/yyyy e se o dia tem 2 digitos e esta entre 01 e 31
		//se o mes tem d2 digitos e esta entre 01 e 12 e o ano se tem 4 digitos e esta entre 1000 e 2999
		if ( dataDigitada.search(ExpReg) == -1 )
			erro = true;
		//Valido os meses que nao tem 31 dias com execao de fevereiro
		else if ( ( ( array_data[1] == 4 ) || ( array_data[1] == 6 ) || ( array_data[1] == 9 ) || ( array_data[1] == 11 ) ) && ( array_data[0] > 30 ) )
			erro = true;
		//Valido o mes de fevereiro
		else if ( array_data[1] == 2 ) {
			//Valido ano que nao e bissexto
			if ( ( array_data[0] > 28 ) && ( ( array_data[2] % 4 ) != 0 ) ) {
				erro = true;
			}
			//Valido ano bissexto
			if ( ( array_data[0] > 29 ) && ( ( array_data[2] % 4 ) == 0 ) ) {
				erro = true;
			}
		}
		
		if (Tipo == '1')	{
			Todays = new Date();
				
			mes = Todays.getMonth() + 1;
			if (mes.length = 1){
				mes = '0'+mes;
			}

			Hoje = Todays.getDate() +"/"+ mes + "/" +  Todays.getYear();
			
			//DiferencaData = <%=DateDiff("d", date, dataDigitada)%>;
			//DiferencaData = <%=DateDiff("d", "23/02/2007", "23/2/2007")%>;
			//DiferencaData = CalculaDiferencaData(Hoje, dataDigitada);
			//alert(DiferencaData);
			//alert(dataDigitada+" <  <%=date%>");
			//alert(CalculaDiferencaDatas(dataDigitada, Hoje));
			if (CalculaDiferencaDatas(dataDigitada, Hoje) < 0) {
				//alert ("teste")
				erro = true
			}
		}
		
	}
		
	if ( erro ) {
		alert("Data Inválida");
		Formulario[Campo].value = "";
		Formulario[Campo].focus();
	}
}

/* 
Modo de usar: addEvent(window, 'load', recuperarCategoria);
*/
function addEvent(obj, evType, fn)
{
    if (obj.addEventListener)
    {
       obj.addEventListener(evType, fn, false);
       return true;
    }
    else if (obj.attachEvent)
    {
       var r = obj.attachEvent("on"+evType, fn);
       return r;
    } 
    else
    {
       return false;
    }
}

function WindowOpen(w, h, page)
{
	retorno = window.open(page,'popup','left=0, top=0, toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=no, width='+ w +', height='+ h ); 
	if (retorno == null)
	{
		//alert ("Você tem bloqueador de pop-up!")
		return false;
	}
	return true;
}


function txtBoxFormat(objForm, strField, sMask, evtKeyPress) 
{

	/***
	* Descrição.: formata um campo do formulário de acordo com a máscara informada...
	* Parâmetros: - objForm (o Objeto Form)
	* - strField (string contendo o nome do textbox)
	* - sMask (mascara que define o formato que o dado será apresentado, usando o algarismo "9" para
	* definir números e o símbolo "!" para qualquer caracter...
	* - evtKeyPress (evento)
	*
	* Uso: <input type="textbox" name="xxx" onkeypress="return txtBoxFormat(this.form, 'str_cep', '99999-999', event);">
	* Observação: As máscaras podem ser representadas como os exemplos abaixo:
	* CEP -> 99999-999
	* CPF -> 999.999.999-99
	* CNPJ -> 99.999.999/9999-99
	* C/C -> 999999-!
	* Tel -> (99) 9999-9999
	* IE -> 999.999.999.999
	***/

	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	if(document.all) { // Internet Explorer
	nTecla = evtKeyPress.keyCode; }
	else if(document.layers) { // Nestcape
	nTecla = evtKeyPress.which;
	}else {
	nTecla = evtKeyPress.charCode;
	}

	sValue = objForm[strField].value;

	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	//alert('mskLen1: '+ mskLen +' nTecla: '+ nTecla);
	if (nTecla == 8 || nTecla == 0){
	mskLen = mskLen - 1;
	}
	//alert('mskLen2: '+ mskLen);

	while (i <= mskLen) {
	bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
	bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

	if (bolMask) {
	  sCod += sMask.charAt(i);
	  mskLen++; }
	else {
	  sCod += sValue.charAt(nCount);
	  nCount++;
	}

	i++;
	}

	objForm[strField].value = sCod;

	//alert('teste: '+ nTecla);
	if (nTecla != 8 && nTecla != 0) { // backspace
	if (sMask.charAt(i-1) == "9") { // apenas números...
	  return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
	else { // qualquer caracter...
	  return true;
	} }
	else {
	return true;
	}
}
