/**
 *
 *  UTF-8 data encode / decode
 *  http://www.webtoolkit.info/
 *
 **/
var Utf8 = {

    // public method for url encoding
    encode: function(string){
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";
        
        for (var n = 0; n < string.length; n++) {
        
            var c = string.charCodeAt(n);
            
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else 
                if ((c > 127) && (c < 2048)) {
                    utftext += String.fromCharCode((c >> 6) | 192);
                    utftext += String.fromCharCode((c & 63) | 128);
                }
                else {
                    utftext += String.fromCharCode((c >> 12) | 224);
                    utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                    utftext += String.fromCharCode((c & 63) | 128);
                }
            
        }
        
        return utftext;
    },
    
    // public method for url decoding
    decode: function(utftext){
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        
        while (i < utftext.length) {
        
            c = utftext.charCodeAt(i);
            
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else 
                if ((c > 191) && (c < 224)) {
                    c2 = utftext.charCodeAt(i + 1);
                    string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                    i += 2;
                }
                else {
                    c2 = utftext.charCodeAt(i + 1);
                    c3 = utftext.charCodeAt(i + 2);
                    string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                    i += 3;
                }
            
        }
        
        return string;
    }
    
}

function FormataCnpj(campo, e){
    var tecla;
    
    if (window.event) 
        tecla = window.event.keyCode;
    else 
        if (e) 
            tecla = e.which;
        else 
            return true;
    
    if ((tecla == null) || (tecla == 0) || (tecla == 8) || (tecla == 9) || (tecla == 13) || (tecla == 27)) 
        return true;
    
    var keychar = String.fromCharCode(tecla);
    var vr = new String(campo.value);
    vr = vr.replace(".", "");
    vr = vr.replace("/", "");
    vr = vr.replace("-", "");
    tam = vr.length + 1;
    
    /* if (tecla != 14) */
    if ((("0123456789").indexOf(keychar) > -1)) {
        if (tam == 3) 
            campo.value = vr.substr(0, 2) + '.';
        if (tam == 6) 
            campo.value = vr.substr(0, 2) + '.' + vr.substr(2, 5) + '.';
        if (tam == 10) 
            campo.value = vr.substr(0, 2) + '.' + vr.substr(2, 3) + '.' + vr.substr(6, 3) + '/';
        if (tam == 15) 
            campo.value = vr.substr(0, 2) + '.' + vr.substr(2, 3) + '.' + vr.substr(6, 3) + '/' + vr.substr(9, 4) + '-' + vr.substr(13, 2);
        return true;
    }
    else {
        return false;
    }
}

function valnum(myfield, e, dec){
    var key;
    var keychar;
    
    if (window.event) 
        key = window.event.keyCode;
    else 
        if (e) 
            key = e.which;
        else 
            return true;
    keychar = String.fromCharCode(key);
    
    // control keys
    if ((key == null) || (key == 0) || (key == 8) ||
    (key == 9) ||
    (key == 13) ||
    (key == 27)) 
        return true;
    
    // numbers
    else 
        if ((("0123456789").indexOf(keychar) > -1)) 
            return true;
        
        // decimal point jump
        else 
            if (dec && (keychar == ".")) {
                myfield.form.elements[dec].focus();
                return false;
            }
            else 
                return false;
}

function searchEnter(e, v, a){
    var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
    if ((keyCode == 13)) 
        sendSearch(v, a);
}

function sendSearch(v, a){
    document.location.href = a + v;
}

var reDate1 = /^\d{1,2}\/\d{1,2}\/\d{1,4}$/;
var reDate2 = /^[0-3]?\d\/[01]?\d\/(\d{2}|\d{4})$/;
var reDate3 = /^(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(19|20)?\d{2}$/;
var reDate4 = /^((0?[1-9]|[12]\d)\/(0?[1-9]|1[0-2])|30\/(0?[13-9]|1[0-2])|31\/(0?[13578]|1[02]))\/(19|20)?\d{2}$/;
var reDate5 = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
var reDate = reDate4;

function doDate(pStr, pFmt, msg){
    eval("reDate = reDate" + pFmt);
    if (!reDate.test(pStr) && pStr != null && pStr != "") {
        alert(pStr + " Não é uma data válida.");
    }
} // doDate
function mascara_data(field, data){
    var mydata = '';
    mydata = mydata + data;
    if (mydata.length == 2) {
        mydata = mydata + '/';
        $(field).value = mydata;
    }
    if (mydata.length == 5) {
        mydata = mydata + '/';
        $(field).value = mydata;
    }
    if (mydata.length == 10) {
        verifica_data(mydata);
    }
}

function verifica_data(d){
    situacao = "";
    
    eval("reDate = reDate1");
    if (!reDate.test(d)) 
        situacao = "falsa";
    
    dia = (d.substring(0, 2));
    mes = (d.substring(3, 5));
    ano = (d.substring(6, 10));
    
    // verifica o dia valido para cada mes 
    if ((dia < 01) || (dia < 01 || dia > '30') && (mes == 04 || mes == 06 || mes == 9 || mes == 11) || dia > 31) {
        situacao = "falsa";
    }
    
    // verifica se o mes e valido 
    if (mes < 01 || mes > 12) {
        situacao = "falsa";
    }
    
    // verifica se e ano bissexto 
    if (mes == 2 && (dia < 01 || dia > 29 || (dia > 28 && (parseInt(ano / 4) != ano / 4)))) {
        situacao = "falsa";
    }
    
    if (d == "") {
        situacao = "falsa";
    }
    
    if (situacao == "falsa") {
        alert("Data inválida!");
        return false;
    }
}

var STR_PAD_LEFT = 1;
var STR_PAD_RIGHT = 2;
var STR_PAD_BOTH = 3;

function pad(str, len, pad, dir){

    if (typeof(len) == "undefined") {
        var len = 0;
    }
    if (typeof(pad) == "undefined") {
        var pad = ' ';
    }
    if (typeof(dir) == "undefined") {
        var dir = STR_PAD_RIGHT;
    }
    
    if (len + 1 >= str.length) {
    
        switch (dir) {
        
            case STR_PAD_LEFT:
                str = Array(len + 1 - str.length).join(pad) + str;
                break;
                
            case STR_PAD_BOTH:
                var RIGHT = Math.ceil((padlen = len - str.length) / 2);
                var left = padlen - right;
                str = Array(left + 1).join(pad) + str + Array(right + 1).join(pad);
                break;
                
            default:
                str = str + Array(len + 1 - str.length).join(pad);
                break;
                
        } // switch
    }
    
    return str;
    
}

function calcSince(dref, type, num){
    var data = new Date();
    adref = dref.split('/');
    
    data.setFullYear(adref[2], adref[1] - 1, adref[0]);
    
    if (type == 'D') 
        data.setDate(data.getDate() - num);
    if (type == 'S') 
        data.setDate(data.getDate() - (num * 7));
    if (type == 'M') 
        data.setMonth(data.getMonth() - num);
    if (type == 'A') 
        data.setFullYear(data.getFullYear() - num);
    
    $('since_date').innerHTML = pad(data.getDate().toString(), 2, '0', 1) + '/' + pad((data.getMonth() + 1).toString(), 2, '0', 1) + '/' + data.getFullYear().toString();
}

function clearInput(field_id, term_to_clear){

    // Clear input if it matches default value
    if (document.getElementById(field_id).value == term_to_clear) {
        document.getElementById(field_id).value = '';
    }
    
    // If the value is blank, then put back term
    else 
        if (document.getElementById(field_id).value == '') {
            document.getElementById(field_id).value = term_to_clear;
        }
} // end clearSearch()
function verifyRadio(field, msg){
    myOption = -1;
    for (i = 0; i < field.length; i++) {
        if (field[i].checked) {
            myOption = i;
        }
    }
    if (myOption == -1) {
        alert(msg);
        return false;
    }
    return true;
}

function nextFocus(me, next){
    maxLen = me.attr("maxlength") || 1000; //caso o campo não contenha este atributo
    field = document.getElementById(next);
    (me.val().length + 1 > maxLen ? field.focus() : 0)
}

function logged(){
    var randomnumber = Math.floor(Math.random() * 100000000000001);
    $.get("/welcome/islogged/" + randomnumber, {}, function(data){
        if (data.length > 5) {
            $("#usuario").empty().html(data);
            if (data.indexOf('Cadastre') > 0) {
                $("#usuario").attr('class', 'deslogado');
            }
        }
        $("#usuario").show();
    });
}

jQuery.preloadImages = function(){
    for (var i = 0; i < arguments.length; i++) {
        jQuery("<img>").attr("src", arguments[i]);
    }
}

jQuery().ready(function(){
    $.preloadImages("/images/bg-menu-active.gif", "/images/bg-menu.gif", "/images/clear.gif");
    logged();
});

//Validacao de email
function checkValidation(formInput) {

    var message='';

    if (stringEmpty(formInput)) {
        message = "Erro! Nenhum valor preenchido.";
    } else if (noAtSign( formInput )) {
        message = "Erro! O endereço \"" + formInput + "\" não contém o caracter '@'.";
    } else if (nothingBeforeAt(formInput)) {
        message = "Erro! O endereço \"" + formInput;
        message += "\" deve conter pelo menos um caractere antes do caracter '@'";
    } else if (noLeftBracket(formInput)) {
        message = "Erro! O endereço \"" + formInput;
        message += "\" contém um colchete direito ']', \nmas não contém um colchete esquerdo correspondente '['.";
    } else if (noRightBracket(formInput)) {
        message = "Erro! O endereço \"" + formInput;
        message += "\" contém um colchete esquerdo '[', \nmas não contém um colchete direito correspondente ']'.";
    } else if (noValidPeriod(formInput)) {
        message = "Erro! O endereço \"" + formInput + "\" deve conter um ponto ('.').";
    } else if (noValidSuffix(formInput)) {
        message = "Erro! O endereço \"" + formInput;
        message += "\" deve conter dois, três ou quatro caracteres no sufixo.";
    } //else {
        //message = "Success! The email address \"" + formInput + "\" validates OK.";
        //alert(message);
    //}

    //var objType = typeof(formInput.focus);
    //if (objType == "object" || objType == "function") {
    //     formInput.focus();
    //}
	if (message=='') {
		return (true);
	} else {
        alert(message);
	    return (false);
	}
}

function checkValid (formField) {
    if ( checkValidation ( formField ) == false ) {
        alert ( 'E-Mail Address Validates OK' );
    }

    return ( false );
}

function stringEmpty (formField) {
    // CHECK THAT THE STRING IS NOT EMPTY
    if ( formField.length < 1 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function noAtSign (formField) {
    // CHECK THAT THERE IS AN '@' CHARACTER IN THE STRING
    if (formField.indexOf ('@', 0) == -1) {
        return ( true )
    } else {
        return ( false );
    }
}

function nothingBeforeAt (formField) {
    // CHECK THERE IS AT LEAST ONE CHARACTER BEFORE THE '@' CHARACTER
    if ( formField.indexOf ( '@', 0 ) < 1 ) {
        return ( true )
    } else {
        return ( false );
    }
}

function noLeftBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR LEFT BRACKET
    if ( formField.indexOf ( '[', 0 ) == -1 && formField.charAt (formField.length - 1) == ']') {
        return ( true )
    } else {
        return ( false );
    }
}

function noRightBracket (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN CHECK FOR RIGHT BRACKET
    if (formField.indexOf ( '[', 0 ) > -1 && formField.charAt (formField.length - 1) != ']') {
        return ( true );
    } else {
        return ( false );
    }
}

function noValidPeriod (formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf ( '@', 0 ) > 1 && formField.charAt (formField.length - 1 ) == ']')
        return ( false );

    // CHECK THAT THERE IS AT LEAST ONE PERIOD IN THE STRING
    if (formField.indexOf ( '.', 0 ) == -1)
        return ( true );

    return ( false );
}

function noValidSuffix(formField) {
    // IF EMAIL ADDRESS IN FORM 'user@[255,255,255,0]', THEN WE ARE NOT INTERESTED
    if (formField.indexOf('@', 0) > 1 && formField.charAt(formField.length - 1) == ']') {
        return ( false );
    }

    // CHECK THAT THERE IS A TWO OR THREE CHARACTER SUFFIX AFTER THE LAST PERIOD
    var len = formField.length;
    var pos = formField.lastIndexOf ( '.', len - 1 ) + 1;
    if ( ( len - pos ) < 2 || ( len - pos ) > 4 ) {
        return ( true );
    } else {
        return ( false );
    }
}

function captchaReloadImage() {
	document.getElementById('imgcaptcha').src = '/securimage/securimage_show.php?sid=' + Math.random();
	$("#ccode").val('');
	return false;
}

