Functions = {
   confirmAction : function(action,msg){
		if(confirm(msg))
			window.location = action;
	},
    Mascara: function (obj,func){
        eval('obj.value='+'Functions.'+func+'(obj.value);');
    },
    soNumeros: function (v){
        return v.replace(/\D/g,'')
    },
    telefone: function (v){
        v=v.replace(/\D/g,'')
        v=v.replace(/^(\d\d)(\d)/g,'($1) $2')
        v=v.replace(/(\d{4})(\d)/,'$1-$2')
        return v
    },
    cpf: function (v){
        v=v.replace(/\D/g,'')
        v=v.replace(/(\d{3})(\d)/,'$1.$2')
        v=v.replace(/(\d{3})(\d)/,'$1.$2')
        v=v.replace(/(\d{3})(\d{1,2})$/,'$1-$2')
        return v
    },
    cep: function (v){
        v=v.replace(/\D/g,'')
        v=v.replace(/^(\d{5})(\d)/,'$1-$2')
        return v
    },
    hora: function (v){
        v = v.replace(/\D/g,'')                 //Remove tudo o que não é dígito
        v = v.replace(/(\d{2})(\d)/,'$1:$2')    //Coloca hífen entre o quarto e o quinto dígitos
        return v
    },

    numDecimal:function (v){
         v = v.replace(/\D/g,'');
         v = v.replace(/(\d{2})/,'$1,');
         return v;
    },
    date: function (v){
        v=v.replace(/\D/g,'');
        v=v.replace(/^(\d{2})(\d)/,'$1/$2');
        v=v.replace(/(\d{2})(\d)/,'$1/$2');
        return v
    },
    cnpj: function (v){
        v=v.replace(/\D/g,'')
        v=v.replace(/^(\d{2})(\d)/,'$1.$2')
        v=v.replace(/^(\d{2})\.(\d{3})(\d)/,'$1.$2.$3')
        v=v.replace(/\.(\d{3})(\d)/,'.$1/$2')
        v=v.replace(/(\d{4})(\d)/,'$1-$2')
        return v
    },

    validaNumero: function (objeto){
        var tecla = objeto.keyCode;

 		if (tecla > 95 && tecla < 106 ){ // numeros de 0 a 9 (varia: 94 a 105)
 			return true;
 		}

		// Delete
 		if (tecla == 46){
 			return true;
 		}

 		if (tecla > 47 && tecla < 58 ){ // numeros de 0 a 9 (varia: 46 a 57)
 			return true;
 		}else {
	 		if (tecla != 8 && tecla != 9) { // espaÃ§o
				return false;
	 		}else
	 			return true;
 		}
    },

    isCPF: function (st) {
        if (st == "")
            return (false);
        var mesmo;
        for(var i=0;i<=9;i++){
            for(var x=0;x<st.length;x++){
                if(st.charAt(x) != i){
                    mesmo = false;
                    break;
                }else{
                    mesmo = true;
                }
            }
            if(mesmo == true)
                return false;
        }
      
            l = st.length;
            //aleterado para se usuÃ¡rio nÃ£o digitar os zeros na frente do CPF, completar sozinho
            if ((l == 9) || (l == 8)) {
                for (i = l ; i < 10; i++) {
                    st = '0' + st
                }
            }
            l = st.length;
            st2 = "";
            for (i = 0; i < l; i++) {
                caracter = st.substring(i,i+1);
                if ((caracter >= '0') && (caracter <= '9'))
                    st2 = st2 + caracter;
                }
                if ((st2.length > 11) || (st2.length < 10))
                    return (false);
                if (st2.length==10)
                    st2 = '0' + st2;
                digito1 = st2.substring(9,10);
                digito2 = st2.substring(10,11);
                digito1 = parseInt(digito1,10);
                digito2 = parseInt(digito2,10);
                sum = 0; mul = 10;
                for (i = 0; i < 9 ; i++) {
                    digit = st2.substring(i,i+1);
                    tproduct = parseInt(digit ,10) * mul;
                    sum += tproduct;
                    mul--;
                }
                dig1 = ( sum % 11 );
                if ( dig1==0 || dig1==1 )
                    dig1=0;
                else
                    dig1 = 11 - dig1;
                if (dig1!=digito1)
                    return (false);
                    sum = 0;
                    mul = 11;
                    for (i = 0; i < 10 ; i++) {
                        digit = st2.substring(i,i+1);
                        tproduct = parseInt(digit ,10)*mul;
                        sum += tproduct;
                        mul--;
                    }
                    dig2 = (sum % 11);
                    if ( dig2==0 || dig2==1 )
                        dig2=0;
                    else
                        dig2 = 11 - dig2;
                    if (dig2 != digito2)
                        return (false);
                return (true);
    },

    isCNPJ: function (str) {
		var aux = str;
		aux = aux.replace(/[\.\/\\\-]/g,"");
		if (aux == "")
            return (false);
        var mesmo;
        for(var i=0;i<=aux.length;i++){
            for(var x=0;x<aux.length;x++){
                if(aux.charAt(x) != i){
                    mesmo = false;
                    break;
                }else{
                    mesmo = true;
                }
            }
            if(mesmo == true)
                return false;
        }
        CNPJ = str;
        erro = new String;
        if (CNPJ.length < 18)
            erro += "Ã? necessario preencher corretamente o nÃºmero do CNPJ! \n\n";
        if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
            if (erro.length == 0)
                erro += "Ã? necessÃ¡rio preencher corretamente o nÃºmero do CNPJ! \n\n";
        }
        if(document.layers && parseInt(navigator.appVersion) == 4){
            x = CNPJ.substring(0,2);
            x += CNPJ. substring (3,6);
            x += CNPJ. substring (7,10);
            x += CNPJ. substring (11,15);
            x += CNPJ. substring (16,18);
            CNPJ = x;
        } else {
            CNPJ = CNPJ. replace (".","");
            CNPJ = CNPJ. replace (".","");
            CNPJ = CNPJ. replace ("-","");
            CNPJ = CNPJ. replace ("/","");
        }
        var nonNumbers = /\D/;
        if (nonNumbers.test(CNPJ))
            erro += "A verificaÃ§Ã£o de CNPJ suporta apenas nÃºmeros! \n\n";
        var a = [];
        var b = new Number;
        var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
        for (i=0; i<12; i++){
            a[i] = CNPJ.charAt(i);
            b += a[i] * c[i+1];
        }
        if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
            b = 0;
            for (y=0; y<13; y++) {
            b += (a[y] * c[y]);
        }
        if ((x = b % 11) < 2) {
            a[13] = 0;
        } else {
            a[13] = 11-x;
        }
        if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
            return false;
        }
        if (erro.length > 0){
            alert(erro);
            return false;
        }
        return true;
    },

    validaCampo: function (obj,funcao, idDivAlert,classDivErro,classInputErro,msg){
        var divAlert  = document.getElementById(idDivAlert);
        var nameClass = obj.className;
        if(obj.value != ""){
            if(!eval('Functions.'+funcao+'("'+obj.value+'")')){
                divAlert.innerHTML = msg;
                divAlert.style.display = 'block';
                divAlert.className = classDivErro;
                obj.className += ' '+classInputErro;
                Functions.boxMsgStyleErro();
                return false;
            }else{
                divAlert.innerHTML = '';
                divAlert.style.display = 'none';
                obj.className = nameClass.replace(classInputErro,'');

                return true;
            }
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            obj.className = nameClass.replace(classInputErro,'');
            return true;
        }
    },

    espaco: function(str){
        var soEspaco;
        for(var i=0; i<str.length;i++){
            if(str.charAt(i) != ' '){
                soEspaco = false;
                break;
            }else{
                soEspaco = true;
            }
        }
        return soEspaco;
    },

    apenasEspaco: function (obj,idDivAlert,classDivErro,classInputErro,msg){
        var divAlert  = document.getElementById(idDivAlert);
        var nameClass = obj.className;
        if(obj.value != ""){
            if(Functions.espaco(obj.value)){
                divAlert.innerHTML = msg;
                divAlert.style.display = 'block';
                divAlert.className = classDivErro;
                obj.className += ' '+classInputErro;
                Functions.boxMsgStyleErro();
                return false;
            }else{
                divAlert.innerHTML = '';
                divAlert.style.display = 'none';
                obj.className = nameClass.replace(classInputErro,'');

                return true;
            }
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            obj.className = nameClass.replace(classInputErro,'');
            return true;
        }
    },

    checkEmail: function (str){
        var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
        if (filter.test(str)) {
            return true;
        } else {
            return false;
        }
    },

    validaEmail:function (obj,idDivAlert,classDivErro,classInputErro){
        var divAlert  = document.getElementById(idDivAlert);
        var nameClass = obj.className;
        if(obj.value != ""){
            if(!Functions.checkEmail(obj.value)){
                divAlert.innerHTML = 'E-mail inválido!';
                divAlert.style.display = 'block';
                divAlert.className = classDivErro;
                obj.className += ' '+classInputErro;
                Functions.boxMsgStyleErro();
                return false;
            }else{
                divAlert.innerHTML = '';
                divAlert.style.display = 'none';
                obj.className = nameClass.replace(classInputErro,'');
                return true;
            }
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            obj.className = nameClass.replace(classInputErro,'');
            return true;
        }
    },
    checkTelefone: function (telefone){
        if(telefone != ''){
            var filter = /^[(][0-9]{2}[)][' '][0-9]{4}[-][0-9]{4}/;

            if(filter.test(telefone)){
                return true;
            }else{
                return false;
            }
        }else{
            return true;
        }
    },

    validaTelefone: function (obj,idDivAlert,classDivErro,classInputErro,message){
        var divAlert  = document.getElementById(idDivAlert);
        var nameClass = obj.className;
        if(obj.value != ""){
            if(!Functions.checkTelefone(obj.value)){
                divAlert.innerHTML = message;
                divAlert.style.display = 'block';
                divAlert.className = classDivErro;
                obj.className = classInputErro;
                Functions.boxMsgStyleErro();
                return false;
            }else{
                divAlert.innerHTML = '';
                divAlert.style.display = 'none';
                obj.className = nameClass.replace(classInputErro,'');
                return true;
            }
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            obj.className = nameClass.replace(classInputErro,'');
            return true;
        }
    },
    stringLength: function (obj,min,max,idDivAlert,classDivErro,classInputErro,message){
        var divAlert  = document.getElementById(idDivAlert);
        var nameClass = obj.className;
        if(obj.length < min || obj.length > max){
            divAlert.innerHTML = message;
            divAlert.style.display = 'block';
            divAlert.className = classDivErro;
            obj.className = classInputErro;
            Functions.boxMsgStyleErro();
            return false;
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            if(nameClass){
                obj.className = nameClass.replace(classInputErro,'');
            }
            return true;
        }
    },
    checkCep: function (cep){
        if(cep != ''){
            var filter = /^[0-9]{5}[-][0-9]{3}/;

            if(filter.test(cep)){
                return true;
            }else{
                return false;
            }
        }else{
            return true;
        }
    },

    validaCep: function (obj,idDivAlert,classDivErro,classInputErro){
        var divAlert  = document.getElementById(idDivAlert);
        var nameClass = obj.className;
        if(obj.value != ""){
            if(!Functions.checkCep(obj.value)){
                divAlert.innerHTML = 'CEP inválido!';
                divAlert.style.display = 'block';
                divAlert.className = classDivErro;
                obj.className += ' '+classInputErro;
                Functions.boxMsgStyleErro();
                return false;
            }else{
                divAlert.innerHTML = '';
                divAlert.style.display = 'none';
                obj.className = nameClass.replace(classInputErro,'');
                return true;
            }
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            obj.className = nameClass.replace(classInputErro,'');
            return true;
        }
    },

    fieldIsNull: function (idFields,idDivAlert,classDivErro,classInputErro){
        fieldNull = false;
        contNull = 0;
        namesFieldNull = Array();
        msgAux = "";
        var newClass ='';
        for(x=0;x<idFields.length;x++){
            field = document.getElementById(idFields[x][0]);
            if(field != null){
                newClass = field.className + ' '+classInputErro;
                if(field.value.replace(/\s*((\S+\s*)*)/, "$1") == ""){
                    if(!fieldNull){
                        namesFieldNull[contNull] = idFields[x][1];
                        field.className = newClass;
                        fieldNull = true;
                    }else{
                        namesFieldNull[contNull] = ", "+idFields[x][1];
                        field.className = newClass;
                    }
                    contNull++;
                }else{
                    var nameClass = field.className;
                    field.className = nameClass.replace(classInputErro, '');
                }
            }
        }
        if(fieldNull){
            divAlert = document.getElementById(idDivAlert);
            if(contNull>1){
                namesFieldNull[(namesFieldNull.length)-1] = namesFieldNull[(namesFieldNull.length)-1].replace(", "," e ");
                msgAlert = 'Os seguintes campos %% n&atilde;o podem estar vazios';
            }else{
                msgAlert = 'O campo %% n&atilde;o deve estar vazio';
            }
            for(i=0;i<namesFieldNull.length;i++){
                msgAux += namesFieldNull[i];
            }
            if(classDivErro !='')
            {
                divAlert.className = classDivErro;
            }

            divAlert.innerHTML = msgAlert.replace('%%',msgAux);
            return true;
        }
        return false;
    },
    boxMsgStyleErro:function (){
        var msgErroTxt = jQuery(".divAlertaErro").html();
        jQuery(".divAlertaErro").addClass("ui-state-error ui-corner-all");
        jQuery(".divAlertaErro").html("<p><span class='ui-icon ui-icon-alert' style='float: left; margin-right: 0.3em;''></span><strong>Atenção: </strong><span>" + msgErroTxt + "</span></p>");
    },
    validaData:function (obj, formato, idDivAlert,classDivErro,classInputErro){       
        var divAlert  = document.getElementById(idDivAlert);
        var nameClass = obj.className;
        if(obj.value != ""){
            if(!Functions.validDate(obj.value,formato)){                
                divAlert.innerHTML = 'Data inválida!';
                divAlert.style.display = 'block';
                divAlert.className = classDivErro;
                obj.className += ' '+classInputErro;
                Functions.boxMsgStyleErro();
                return false;
            }else{
                divAlert.innerHTML = '';
                divAlert.style.display = 'none';
                obj.className = nameClass.replace(classInputErro,'');
                return true;
            }
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            obj.className = nameClass.replace(classInputErro,'');
            return true;
        }
    },
    validDate: function(date,formatDate){
        var ER = /[\/ -]/;
        formatDate = formatDate.split(ER);
        date = date.split(ER);
        var month = [31,28,31,30,31,30,31,31,30,31,30,31];
        var a,m,d;
        for(x=0;x< formatDate.length;x++){
            /*
             onde (a,m,d) representando (a)no, (m)es, (d)ia será preenchido com o respectivo
             valor do índice em que se encontra na matriz
             ------------------------------------------------------------------------------
             Where (a, m, d) representing year, month, day will be filled with the value of
             the index in which it is in the matrix
            */
            eval(formatDate[x]+"="+x+";");
        }
        if(Functions.bissexto(date[a]))
            month[1] = 29;
        var ER_day;
        switch(month[date[m]-1]){
            case 28:
                ER_day = "(1[\\d]|2[0-8])";
                break;
            case 29:
                ER_day = "[1-2][\\d]";
                break;
            case 30:
                ER_day = "([1-2][\\d]|30)";
                break;
            case 31:
                ER_day = "([1-2][\\d]|3[0-1])";
                break;
        }
        var ER_2 = new RegExp("(0[1-9]|"+ER_day+")\/(0[1-9]|1[0-2])\/([0-2][\\d]{3})");
        date = date[d]+"/"+date[m]+"/"+date[a];
        return ER_2.test(date);
    },
    bissexto:function (year){
        return ((year%4)==0)?true:false;
    },
    validNumero : function(obj, divErro,msg){
        var divAlert  = document.getElementById(divErro);
        var nameClass = obj.className;
        if(obj.value != ""){
            var nonNumbers = /^[0-9]*$/;
            if(nonNumbers.test(obj.value)){
                divAlert.innerHTML = '';
                divAlert.style.display = 'none';
                obj.className = nameClass.replace('alerta','');
                return true;
            }else{
                divAlert.innerHTML = msg;
                divAlert.style.display = 'block';
                divAlert.className = 'divAlertaErro';
                obj.className += ' '+'alerta';
                Functions.boxMsgStyleErro();
                return false;
            }
        }else{
            divAlert.innerHTML = '';
            divAlert.style.display = 'none';
            obj.className = nameClass.replace('alerta','');
            return true;
        }
    },
    comboSelected : function(obj,value){
        if(obj.tagName.toUpperCase() ==  'SELECT'){
            for(var i=0;i<obj.options.length;i++){
                if(obj.options[i].value == value){
                    obj.options[i].selected = true;
                }
            }
        }
    },
    trim: function(str){
        return str.replace(/^\s+|\s+$/g,"");
    }
};
