/*  
Padawan's JavaScript-Mega-Validator 3000+  
Todos os direitos reservados para Diego Pires Plentz  
Você pode usar esse código nas suas páginas desde que mantenha os créditos ;-)  
*/   
  
//Verifica qual o browser do visitante e armazena na variável púbica clientNavigator,   
//Caso Internet Explorer(IE) outros (Other)   
if (navigator.appName.indexOf('Microsoft') != -1){   
    clientNavigator = "IE";   
}else{   
    clientNavigator = "Other";   
}   
function Verifica_Data(data, obrigatorio){   
//Se o parâmetro obrigatório for igual à zero, significa que elepode estar vazio, caso contrário, não   
var data = document.getElementById(data);   
    var strdata = data.value;   
    if((obrigatorio == 1) || (obrigatorio == 0 && strdata != "")){   
        //Verifica a quantidade de digitos informada esta correta.   
        if (strdata.length != 10){   
            alert("Formato da data não é válido.   Formato correto:   - dd/mm/aaaa.");   
            data.focus();   
            return false   
        }   
        //Verifica máscara da data   
        if ("/" != strdata.substr(2,1) || "/" != strdata.substr(5,1)){   
            alert("Formato da data não é válido.   Formato correto:   - dd/mm/aaaa.");   
            data.focus();   
            return false   
        }   
        dia = strdata.substr(0,2)   
        mes = strdata.substr(3,2);   
        ano = strdata.substr(6,4);   
        //Verifica o dia   
        if (isNaN(dia) || dia > 31 || dia < 1){   
            alert("Formato do dia não é válido.");   
            data.focus();   
            return false   
        }   
        if (mes == 4 || mes == 6 || mes == 9 || mes == 11){   
            if (dia == "31"){   
                alert("O mês informado não possui 31 dias.");   
                data.focus();   
                return false   
            }   
        }   
        if (mes == "02"){   
            bissexto = ano % 4;   
            if (bissexto == 0){   
                if (dia > 29){   
                    alert("O mês informado possui somente 29 dias.");   
                    data.focus();   
                    return false   
                }   
            }else{   
                if (dia > 28){   
                    alert("O mês informado possui somente 28 dias.");   
                    data.focus();   
                    return false   
                }   
            }   
        }   
    //Verifica o mês   
        if (isNaN(mes) || mes > 12 || mes < 1){   
            alert("Formato do mês não é válido.");   
            data.focus();   
            return false   
        }   
        //Verifica o ano   
        if (isNaN(ano)){   
            alert("Formato do ano não é válido.");   
            data.focus();   
            return false   
        }   
    }   
}   
  
function Compara_Datas(data_inicial, data_final){   
    //Verifica se a data inicial é maior que a data final   
    var data_inicial = document.getElementById(data_inicial);   
    var data_final   = document.getElementById(data_final);   
    str_data_inicial = data_inicial.value;   
    str_data_final   = data_final.value;   
    dia_inicial      = data_inicial.value.substr(0,2);   
    dia_final        = data_final.value.substr(0,2);   
    mes_inicial      = data_inicial.value.substr(3,2);   
    mes_final        = data_final.value.substr(3,2);   
    ano_inicial      = data_inicial.value.substr(6,4);   
    ano_final        = data_final.value.substr(6,4);   
    if(ano_inicial > ano_final){   
        alert("A data inicial deve ser menor que a data final.");   
        data_inicial.focus();   
        return false   
    }else{   
    if(ano_inicial == ano_final){   
    if(mes_inicial > mes_final){   
    alert("A data inicial deve ser menor que a data final.");   
                data_final.focus();   
                return false   
            }else{   
                if(mes_inicial == mes_final){   
                    if(dia_inicial > dia_final){   
                        alert("A data inicial deve ser menor que a data final.");   
                        data_final.focus();   
                        return false   
                    }   
                }   
            }   
        }   
    }   
}   
  
function Verifica_Hora(hora, obrigatorio){   
//Se o parâmetro obrigatório for igual à zero, significa que elepode estar vazio, caso contrário, não   
    var hora = document.getElementById(hora);   
    if((obrigatorio == 1) || (obrigatorio == 0 && hora.value != "")){   
        if(hora.value.length < 5){   
            alert("Formato da hora inválido.   Por favor, informe a hora no formato correto: hh:mm");   
            hora.focus();   
            return false   
        }   
        if(hora.value.substr(0,2) > 23 || isNaN(hora.value.substr(0,2))){   
            alert("Formato da hora inválido.");   
            hora.focus();   
            return false   
        }   
        if(hora.value.substr(3,2) > 59 || isNaN(hora.value.substr(3,2))){   
            alert("Formato do minuto inválido.");   
            hora.focus();   
            return false   
        }   
    }   
}   
  
function Verifica_Email(email, obrigatorio){   
//Se o parâmetro obrigatório for igual à zero, significa que elepode estar vazio, caso contrário, não   
    var email = document.getElementById(email);   
    if((obrigatorio == 1) || (obrigatorio == 0 && email.value != "")){   
        if(!email.value.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z0-9._-]+)/gi)){   
            alert("Informe um e-mail válido");   
            email.focus();   
            return false   
        }   
    }   
}   
  
function Verifica_Tamanho(campo, tamanho){   
//usado para campos textarea onde não se tem o atributo maxlenght   
    var campo = document.getElementById(campo);   
    if(campo.value.length > tamanho){   
        alert("O campo suporta no máximo " + tamanho + " caracteres.");   
        campo.focus();   
        return false   
    }   
}   
  
function Verifica_Cep(cep, obrigatorio){   
//Se o parâmetro obrigatório for igual à zero, significa que elepode estar vazio, caso contrário, não   
    var cep    = document.getElementById(cep);   
    var strcep = cep.value;   
    if((obrigatorio == 1) || (obrigatorio == 0 && strcep != "")){   
        if (strcep.length != 9){   
            alert("CEP informado inválido.");   
            cep.focus();   
            return false   
        }else{   
            if (strcep.indexOf("-") != 5){   
                alert("Formato de CEP informado inválido.");   
                cep.focus();   
                return false   
            }else{   
                if (isNaN(strcep.replace("-","0"))){   
                    alert("CEP informado inválido.");   
                    cep.focus();   
                    return false   
                }   
            }   
        }   
    }       
}   
  
function Bloqueia_Caracteres(evnt){   
//Função permite digitação de números   
    if (clientNavigator == "IE"){   
        if (evnt.keyCode < 48 || evnt.keyCode > 57){   
            return false   
        }   
    }else{   
        if ((evnt.charCode < 48 || evnt.charCode > 57) && evnt.keyCode == 0){   
            return false   
        }   
    }   
}   
  
function Ajusta_Data(input, evnt){   
//Ajusta máscara de Data e só permite digitação de números   
    if (input.value.length == 2 || input.value.length == 5){   
        if(clientNavigator == "IE"){   
            input.value += "/";   
        }else{   
            if(evnt.keyCode == 0){   
                input.value += "/";   
            }   
        }   
    }   
//Chama a função Bloqueia_Caracteres para só permitir a digitação de números   
    return Bloqueia_Caracteres(evnt);   
}   
  
function Ajusta_Hora(input, evnt){   
//Ajusta máscara de Hora e só permite digitação de números   
    if (input.value.length == 2){   
        if(clientNavigator == "IE"){   
            input.value += ":";   
        }else{   
            if(evnt.keyCode == 0){   
                input.value += ":";   
            }   
        }   
    }   
//Chama a função Bloqueia_Caracteres para só permitir a digitação de números   
    return Bloqueia_Caracteres(evnt);   
}   
  
function Ajusta_Cep(input, evnt){   
//Ajusta máscara de CEP e só permite digitação de números   
    if (input.value.length == 5){   
        if(clientNavigator == "IE"){   
            input.value += "-";   
        }else{   
            if(evnt.keyCode == 0){   
                input.value += "-";   
            }   
        }   
    }   
//Chama a função Bloqueia_Caracteres para só permitir a digitação de números   
    return Bloqueia_Caracteres(evnt);   
}   
  
function Atualiza_Opener(){   
//Atualiza a página opener da popup que chamar a função   
    window.opener.location.reload();   
}
