﻿documentall = document.all;
/* 
* função para formatação de valores monetários retirada de 
*/
function formatamoney(c) {
    var t = this; if (c == undefined) c = 2;
    var p, d = (t = t.split("."))[1].substr(0, c);
    for (p = (t = t[0]).length; (p -= 3) >= 1; ) {
        t = t.substr(0, p) + "." + t.substr(p);
    }
    return t + "," + d + Array(c + 1 - d.length).join(0);
}

String.prototype.formatCurrency = formatamoney

function demaskvalue(valor, currency) {
    /* 
    * Se currency é false, retorna o valor sem apenas com os números. Se é true, os dois últimos caracteres são considerados as  
    * casas decimais 
    */
    var val2 = '';
    var strCheck = '0123456789';
    var len = valor.length;
    if (len == 0) {
        return 0.00;
    }

    if (currency == true) {
        /* Elimina os zeros à esquerda  
        * a variável  <i> passa a ser a localização do primeiro caractere após os zeros e  
        * val2 contém os caracteres (descontando os zeros à esquerda) 
        */

        for (var i = 0; i < len; i++)
            if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;

        for (; i < len; i++) {
            if (strCheck.indexOf(valor.charAt(i)) != -1) val2 += valor.charAt(i);
        }

        if (val2.length == 0) return "0.00";
        if (val2.length == 1) return "0.0" + val2;
        if (val2.length == 2) return "0." + val2;

        var parte1 = val2.substring(0, val2.length - 2);
        var parte2 = val2.substring(val2.length - 2);
        var returnvalue = parte1 + "." + parte2;
        return returnvalue;

    }
    else {
        /* currency é false: retornamos os valores COM os zeros à esquerda,  
        * sem considerar os últimos 2 algarismos como casas decimais  
        */
        val3 = "";
        for (var k = 0; k < len; k++) {
            if (strCheck.indexOf(valor.charAt(k)) != -1) val3 += valor.charAt(k);
        }
        return val3;
    }
}

function reais(obj, event) {

    var whichCode = (window.Event) ? event.which : event.keyCode;
    /* 
    Executa a formatação após o backspace nos navegadores !document.all 
    */
    if (whichCode == 8 && !documentall) {
        /* 
        Previne a ação padrão nos navegadores 
        */
        if (event.preventDefault) { //standart browsers  
            event.preventDefault();
        } else { // internet explorer  
            event.returnValue = false;
        }
        var valor = obj.value;
        var x = valor.substring(0, valor.length - 1);
        obj.value = demaskvalue(x, true).formatCurrency();
        return false;
    }
    /* 
    Executa o Formata Reais e faz o format currency novamente após o backspace 
    */
    FormataReais(obj, '.', ',', event);
} // end reais  


function backspace(obj, event) {
    /* 
    Essa função basicamente altera o  backspace nos input com máscara reais para os navegadores IE e opera. 
    O IE não detecta o keycode 8 no evento keypress, por isso, tratamos no keydown. 
    Como o opera suporta o infame document.all, tratamos dele na mesma parte do código. 
    */

    var whichCode = (window.Event) ? event.which : event.keyCode;
    if (whichCode == 8 && documentall) {
        var valor = obj.value;
        var x = valor.substring(0, valor.length - 1);
        var y = demaskvalue(x, true).formatCurrency();

        obj.value = ""; //necessário para o opera  
        obj.value += y;

        if (event.preventDefault) { //standart browsers  
            event.preventDefault();
        } else { // internet explorer  
            event.returnValue = false;
        }
        return false;

    } // end if        
} // end backspace  

function FormataReais(fld, milSep, decSep, e) {
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;

    //if (whichCode == 8 ) return true; //backspace - estamos tratando disso em outra função no keydown  
    if (whichCode == 0) return true;
    if (whichCode == 9) return true; //tecla tab  
    if (whichCode == 13) return true; //tecla enter  
    if (whichCode == 16) return true; //shift internet explorer  
    if (whichCode == 17) return true; //control no internet explorer  
    if (whichCode == 27) return true; //tecla esc  
    if (whichCode == 34) return true; //tecla end  
    if (whichCode == 35) return true; //tecla end  
    if (whichCode == 36) return true; //tecla home  

    /* 
    O trecho abaixo previne a ação padrão nos navegadores. Não estamos inserindo o caractere normalmente, mas via script 
    */

    if (e.preventDefault) { //standart browsers  
        e.preventDefault()
    } else { // internet explorer  
        e.returnValue = false
    }

    var key = String.fromCharCode(whichCode);  // Valor para o código da Chave  
    if (strCheck.indexOf(key) == -1) return false;  // Chave inválida  

    /* 
    Concatenamos ao value o keycode de key, se esse for um número 
    */
    fld.value += key;

    var len = fld.value.length;
    var bodeaux = demaskvalue(fld.value, true).formatCurrency();
    fld.value = bodeaux;

    /* 
    Essa parte da função tão somente move o cursor para o final no opera. Atualmente não existe como movê-lo no konqueror. 
    */
    if (fld.createTextRange) {
        var range = fld.createTextRange();
        range.collapse(false);
        range.select();
    }
    else if (fld.setSelectionRange) {
        fld.focus();
        var length = fld.value.length;
        fld.setSelectionRange(length, length);
    }
    return false;

}

function MM_swapImgRestore() { //v3.0
    var i, x, a = document.MM_sr; for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}

function MM_preloadImages() { //v3.0
    var d = document; if (d.images) {
        if (!d.MM_p) d.MM_p = new Array();
        var i, j = d.MM_p.length, a = MM_preloadImages.arguments; for (i = 0; i < a.length; i++)
            if (a[i].indexOf("#") != 0) { d.MM_p[j] = new Image; d.MM_p[j++].src = a[i]; } 
    }
}

function MM_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
    var i, j = 0, x, a = MM_swapImage.arguments; document.MM_sr = new Array; for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) { document.MM_sr[j++] = x; if (!x.oSrc) x.oSrc = x.src; x.src = a[i + 2]; }
}

/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Cyanide_7 |  */
var isNN = (navigator.appName.indexOf("Netscape") != -1);

function autoTab(input, len, e) {
    var keyCode = (isNN) ? e.which : e.keyCode;
    var filter = (isNN) ? [0, 8, 9] : [0, 8, 9, 16, 17, 18, 37, 38, 39, 40, 46];
    if (input.value.length >= len && !containsElement(filter, keyCode)) {
        input.value = input.value.slice(0, len);
        input.form[(getIndex(input) + 1) % input.form.length].focus();
    }

    function containsElement(arr, ele) {
        var found = false, index = 0;
        while (!found && index < arr.length)
            if (arr[index] == ele)
            found = true;
        else
            index++;
        return found;
    }

    function getIndex(input) {
        var index = -1, i = 0, found = false;
        while (i < input.form.length && index == -1)
            if (input.form[i] == input) index = i;
        else i++;
        return index;
    }
    return true;
}

//AutoTab versão 2 - mais simples
function AutoTab_v2(campo1, campo2) {
    var obj1 = document.getElementById(campo1);
    var obj2 = document.getElementById(campo2);
    if (obj1 != null & obj2 != null) {
        if (obj1.getAttribute && obj1.value.length == obj1.getAttribute("maxLength")) {
            setTimeout(function() { obj2.focus() }, 0);
        }
    }
}

var r = {
    'special': /[\W]/g,
    'quotes': /['\''&'\"']/g,
    'notnumbers': /[^\d]/g
}

function valid(o, w) {
    o.value = o.value.replace(r[w], '');
}

//MÁSCARA DE VALORES
function txtBoxFormat(objeto, sMask, evtKeyPress) {
    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.which;
        if (nTecla == 8) {
            return true;
        }
    }

    sValue = objeto.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;

    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++;
    }

    objeto.value = sCod;

    if (nTecla != 8) { // backspace
        if (sMask.charAt(i - 1) == "9") { // apenas números...
            return ((nTecla > 47) && (nTecla < 58));
        }
        else { // qualquer caracter...
            return true;
        }
    }
    else {
        return true;
    }
}

//Função para evitar o colar e copiar
function validateKey(evt) {
    if ((evt.ctrlKey & evt.keyCode == '67')) {
        return false
    }
    else {
        if ((evt.ctrlKey & evt.keyCode == '86')) {
            return false
        }
    }
    return true
}

//Definição para o tamanho limite de caracteres do campo
function setLength(obj, length) {
    if (obj != null) {
        obj.setAttribute('maxLength', length);
    }
}

function previewImg(path, img) {
    imgPrev = document.images[img];
    imgPrev.src = path;
}

function FileOnchange(obj) {
    document.getElementById('img').src = "file://" + obj.value;
}


//Custom checks e radios 
function CustomForms()
{
    var inputs=document.getElementsByTagName("input");
    for(var i = 0; i < inputs.length; i++)
    {
          var tipo = inputs[i].type;
        if(tipo=="checkbox")
        {
            inputs[i].style.display="None";
            this.ChangeInput(inputs[i], "ch_");
            inputs[i].nextSibling.onclick=function(){cbclick(this,"ch_")};
        }
        if(tipo=="radio"){
            inputs[i].style.display="None";
            this.ChangeInput(inputs[i], "rd_");
            inputs[i].nextSibling.onclick=function(){cbclick(this,"rd_")};
        }
    }
}
function ChangeInput(input, img)
{
    if(input.checked){    
        input.nextSibling.innerHTML="<img src='../img/"+img +"on.gif' align='middle'>" + input.nextSibling.innerHTML;
    }
    else{
      input.nextSibling.innerHTML="<img src='../img/"+img +"off.gif' align='middle'>"+ input.nextSibling.innerHTML;
      }
}
function cbclick(input, img)
{
    if (input.previousSibling.checked){
            input.previousSibling.checked=false;
            input.getElementsByTagName("img")[0].src="../img/" + img + "off.gif";
        }
    else{
            input.previousSibling.checked=true;
        input.getElementsByTagName("img")[0].src="../img/" + img + "on.gif";
      }
}

