/*
*  Funcao para fazer formatacao de datas : dd/mm/aaaa
*  Utilizar da seguinte forma: formataData(this,event).
*  onkeypress="return formataData(this,event)"
*/
function formataData( campo, e ) {
    car = (navigator.appName == "Netscape" ) ? e.which : e.keyCode;
    var key = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    key = String.fromCharCode(whichCode);
    
    var strCheck = 'abcdefghijklmnopqwrstyuvç`´^~?;:.><,-_)(*&¨%$#@!{[}]ªº/'; /*'0123456789';*/

    if (strCheck.indexOf(key) != -1){
    	return false;   	
   	}
    if ( ( car < 48 || car > 57 ) && ( car > 31 ) ) return false;
    if ( ( campo.value.length == 2 ) || ( campo.value.length == 5 ) ) {
        if (car != 8) {
        	campo.value += '/';
        }
    }

    return true;
}

/*
*  Funcao para fazer formatacao de período : hh/mm
*  Utilizar da seguinte forma: onkeypress="return formataHora(this,event)"
*/
function formataHora(campo, e) {
    car = ( navigator.appName == "Netscape" ) ? e.which : e.keyCode;
    if ( ( car < 48 || car > 57 ) && ( car > 31 ) ) return false;
    if ( campo.value.length==2 )
    {
        campo.value+=':';
    }

    return true;
}

/*
*  Funcao para validar a hora, verificando hora e minuto.
*  Utilizar da seguiinte forma: 
*       onblur="return validaHora(campo_date);"
*/
function validarHora(Wparam) {
    if ( Wparam.value != "" ) {
        barra = Wparam.value.indexOf(":");
        hora = Wparam.value.substring(0,barra);
        min = Wparam.value.substring(barra+1);
        horario = hora + min;
        if ( horario.length < 4 ) {
            Wparam.focus();
            return false;
        }
        if ( hora > 23){
            Wparam.focus();
            return false;
        }
        if ( min > 59){
            Wparam.focus();
            return false;
        }
   }
   return true;
}

/*
*  Funcao para validar a data, verificando mes dia e ano.
*  Utilizar da seguiinte forma: validaData(campo_date)
*/
function validardata(Wparam) {
    if ( trim( Wparam.value ) != "" ){
        barra = Wparam.value.indexOf("/");
        dia = Wparam.value.substring(0,barra);
        string1 = Wparam.value.substring(barra+1);
        barra = string1.indexOf("/");
        mes = string1.substring(0,barra);
        ano = string1.substring(barra+1);
        data = dia + mes + ano;
        
        if (!isNumber(data) || data.length < 8) {
            alert("O formato correto da data é dd/mm/aaaa");
            Wparam.focus();
            return false;
        }
        if (dia > 31 || dia < 1){
            alert("Dia digitado é inválido");
            Wparam.focus();
            return false;
        }
        if (mes > 12 || mes < 1){
            alert("Mês digitado é inválido");
            Wparam.focus();
            return false;
        }
        if (mes == 4 || mes == 6 || mes == 9 || mes == 11){
            if (dia > 30){
                alert("O mês "+mes+" possui 30 dias");
                Wparam.focus();
                return false;
            }
        }
        if (mes == 02){
            bis = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0));
            if (dia>29 || (dia==29 && !bis)){
                hoje = new Date()
                anoh = hoje.getYear()
                mesh = hoje.getMonth()
                if (anoh > ano) {
                  t = "teve";
                }
                else {
                    if(anoh < ano) {
                      t = "terá";
                    }
                    else {
                      if(mesh > 2) {
                        t = "teve";
                      }
                      else {
                        if(mesh < 2) {
                          t = "terá";
                        }
                        else {
                          t = "tem";
                        }
                 }
                 }
             }
            alert("Fevereiro do ano "+ano+" não "+t+" "+dia+" dias");
            Wparam.focus();
            return false;
        }
     }
    }
    
    return true;
}


function limpar(field){
var fieldToClean = document.getElementById(field);
fieldToClean.value = "";
}


function VerificaData(cData) {
       var data = cData;
       var tam = data.length;
       if (tam != 10) {
               alert('Data inválida.');
               return false;
       }

       var dia = data.substr(0,2)
       var mes = data.substr (3,2)
       var ano = data.substr (6,4)

       if (ano < 1900) {
               alert('O ano deve ser maior que 1900.');
               return false;
       }
       if (ano > 2100) {
               alert('O ano deve ser menor que 2100.');
               return false;
       }
       if (mes > 12) {
               alert('O mês da data não existe.');
               return false;
       }

       switch (mes) {
               case '01':
                       if  (dia <= 31)
                               return (true);
                       break;
               case '02':
                       if ((ano % 4) == 0 && ( (ano % 100) != 0 || (ano % 400) == 0 )){
                               if  (dia <= 29)
                                       return (true);
                       } else {
                               if  (dia <= 28){
                                       return (true);
                               } else {
                                       alert('Neste ano o mês de fevereiro possui apenas 28 dias.');
                                       return false;
                               }
                       }
                       break;
               case '03':
                       if  (dia <= 31)
                               return (true);
                       break;
               case '04':
                       if  (dia <= 30)
                               return (true);
                       break;
               case '05':
                       if  (dia <= 31)
                               return (true);
                       break;
               case '06':
                       if  (dia <= 30)
                               return (true);
                       break;
               case '07':
                       if  (dia <= 31)
                               return (true);
                       break;
               case '08':
                       if  (dia <= 31)
                               return (true);
                       break;
               case '09':
                       if  (dia <= 30)
                               return (true);
                       break;
               case '10':
                       if  (dia <= 31)
                               return (true);
                       break;
               case '11':
                       if  (dia <= 30)
                               return (true);
                       break;
               case '12':
                       if  (dia <= 31)
                               return (true);
               break;
       }{
               alert('O dia da data não existe.');
               return false;
       }
       return true;
}


function validaData(campo){
	if (campo.value != ""){
       if(!VerificaData(campo.value)) {
               limpar(campo);
               campo.focus();
       }
	}
}

function daysInMonth(month, year) {
	var m = [31,28,31,30,31,30,31,31,30,31,30,31];
	if (month != 2) return m[month - 1];
	if (year%4 != 0) return m[1];
	if (year%100 == 0 && year%400 != 0) return m[1];
	return m[1] + 1;
}

function escondeDivsCalendario() {
	for (n=0; n<document.getElementsByName("nCalendario").length; n++) {
		document.getElementsByName("nCalendario")[n].style.display = "none";
	}
}

function escondeDiv(id) {
	document.getElementById(id).style.display = "none";
}

function retornar(dia, mes, ano, formulario, campo, id){ 
	if (parseInt(mes) < 10) {
		mes = '0' + parseInt(mes);
	}
	if (parseInt(dia) < 10){
		dia = '0' + parseInt(dia);
	}
	eval("document." + formulario + "['" + campo + "'].value = dia + '/' + mes + '/' + ano;");
	eval("document." + formulario + "['" + campo + "'].focus(); ");
	document.getElementById(id).style.display = "none";
}

function construirCalendario(dia, mes, ano, formulario, campo, iAno, iMes, iDias, iCalendario){ 
	if (parseInt(mes) == -1) {
		mes = 11;
	}
	if (parseInt(mes) == 12) {
		mes = 0;
	}
	var campoFormatado = replace(campo, ".", "_");
	eval("document." + formulario + "['dia_" + campoFormatado + "'].value = dia;");
	eval("document." + formulario + "['mes_" + campoFormatado + "'].value = mes;");
	eval("document." + formulario + "['ano_" + campoFormatado + "'].value = ano;");
	var meses = new Array("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro");
	document.getElementById(iAno).innerHTML = ano;
	document.getElementById(iMes).innerHTML = meses[mes];
	var tabela = document.getElementById(iDias);
	var data = new Date();
	var day = new Date(ano, mes, 1);
	ult = daysInMonth(parseInt(mes)+1, parseInt(ano));
	sem = day.getDay();
	tam = tabela.rows.length;
	for (var i=0; i<tam; i++) {
		var aux = document.getElementById(campoFormatado + (i + 1));
		tabela.deleteRow(aux.rowIndex);
	}
	num = 0;
	quant = parseInt(sem) + parseInt(ult);
	var row = tabela.insertRow(num++);
	row.id = campoFormatado + "1";
	col = row.insertCell(0);
	col.innerHTML = "D";
	col.style.textAlign = "center";
	col.className = "tdColuna";
	col = row.insertCell(1);
	col.innerHTML = "S";
	col.style.textAlign = "center";
	col.className = "tdColuna";
	col = row.insertCell(2);
	col.innerHTML = "T";
	col.style.textAlign = "center";
	col.className = "tdColuna";
	col = row.insertCell(3);
	col.innerHTML = "Q";
	col.style.textAlign = "center";
	col.className = "tdColuna";
	col = row.insertCell(4);
	col.innerHTML = "Q";
	col.style.textAlign = "center";
	col.className = "tdColuna";
	col = row.insertCell(5);
	col.innerHTML = "S";
	col.style.textAlign = "center";
	col.className = "tdColuna";
	col = row.insertCell(6);
	col.innerHTML = "S";
	col.style.textAlign = "center";
	col.className = "tdColuna";

	var cont = 1;
	var cont2 = 2;
	var cont3 = 0;
	for (x=0; x<quant; x++) {
		if ((x % 7) == 0){
			var row = tabela.insertRow(num++);
			row.id = campoFormatado + cont2++;
			cont3 = 0;
			var col = "";
		}
		col = row.insertCell(cont3++);
		col.style.textAlign = "center";
		if (dia == cont && x > (sem - 1)){
			 col.className = "tdDestaque";
		} else { 
			col.style.backgroundColor = "#FFFFFF";
		}
		if (x > (sem - 1)){
			col.style.cursor = "pointer";
			col.innerHTML = "<div style=\"cursor:pointer; color: #485D5D;\" onClick=\"retornar('" + cont + "', '" + (parseInt(mes)+1) + "', '" + ano + "', '" + formulario + "', '" + campo + "', '" + iCalendario + "');\">" + cont++ + "</div>";
		} else { 
			col.innerHTML = "";
		}
	}
}
