
VerifiqueTAB=true;
function Mostra(quem, tammax) {
    if ( (quem.value.length == tammax) && (VerifiqueTAB) ) {
        var i=0,j=0, indice=-1;
        for (i=0; i<document.forms.length; i++) {
            for (j=0; j<document.forms[i].elements.length; j++) {
                if (document.forms[i].elements[j].name == quem.name) {
                    indice=i;
                    break;
                }
            }
            if (indice != -1)
            break;
        }
        for (i=0; i<=document.forms[indice].elements.length; i++) {
            if (document.forms[indice].elements[i].name == quem.name) {
                while ( (document.forms[indice].elements[(i+1)].type == "hidden") &&
                (i < document.forms[indice].elements.length) ) {
                    i++;
                }
                document.forms[indice].elements[(i+1)].focus();
                VerifiqueTAB=false;
                break;
            }
        }
    }
}

function PararTAB(quem)
{
    VerifiqueTAB=false;
}

//<!-- -->

function ChecarTAB()
{
    VerifiqueTAB=true;
    if (window.event.keyCode < 48 | window.event.keyCode >57)
    window.event.returnValue = false;
}

//<!-- -->

function Range(v,p1,p2)
{
    if (v>=p1 && v<=p2)
    {
        return true;
    }
    else
    {
        return false;
    }
}

//<!-- -->

function FechaJanela(url)
{
    window.close(url);
}

//<!-- -->

function numerico (campo)  {
    var len = campo.length
    for (var i=0; i<len; i++)
    if (campo.charAt (i) < "0" || campo.charAt (i) > "9")
    return false;
    return true;
}

function TrocaEnter(quem) {
    if (window.event.keyCode == 13) { // preciona tecla enter
        var i=0,j=0, indice=-1;
        for (i=0; i<document.forms.length; i++) {
            for (j=0; j<document.forms[i].elements.length; j++) {
                if (document.forms[i].elements[j].name == quem.name) {
                    indice=i;
                    break;
                }
            }
            if (indice != -1)
            break;
        }
        for (i=0; i<=document.forms[indice].elements.length; i++) {
            if (document.forms[indice].elements[i].name == quem.name) {
                while ( (document.forms[indice].elements[(i+1)].type == "hidden") &&
                (i < document.forms[indice].elements.length) ) {
                    i++;
                }
                document.forms[indice].elements[(i+1)].focus();
                window.event.returnValue = false;
                break;
            }
        }
    }
}

function placeFocus(Nome) {
    forms = document.getElementsByName(Nome);
    if (forms.length > 0) {
        for (i=1; i < forms[0].elements.length; i++) {
            if (/radio|text|password/i.test(forms[0].elements[i].type)) {
                if (!forms[0].elements[i].readOnly && !forms[0].elements[i].disabled) {
                    forms[0].elements[i].focus();
                    break;
                }
            }
        }
    }
}

/*
**************************************
* String.mask Function v1.0          *
* Autor: Carlos R. L. Rodrigues      *
**************************************
*/
String.prototype.mask = function(m) {
    var m, l = (m = m.split("")).length, s = this.split(""), j = 0, h = "";
    for(var i = -1; ++i < l;)
    if(m[i] != "#"){
        if(m[i] == "\\" && (h += m[++i])) continue;
        h += m[i];
        i + 1 == l && (s[j - 1] += h, h = "");
    }
    else{
        if(!s[j] && !(h = "")) break;
        (s[j] = h + s[j++]) && (h = "");
    }
    return s.join("") + h;
};

/*
**************************************
* Event Listener Function v1.4       *
* Autor: Carlos R. L. Rodrigues      *
**************************************
*/
addEvent = function(o, e, f, s){
    var r = o[r = "_" + (e = "on" + e)] = o[r] || (o[e] ? [[o[e], o]] : []), a, c, d;
    r[r.length] = [f, s || o], o[e] = function(e){
        try{
        (e = e || event).preventDefault || (e.preventDefault = function(){e.returnValue = false;});
        e.stopPropagation || (e.stopPropagation = function(){e.cancelBubble = true;});
        e.target || (e.target = e.srcElement || null);
        e.key = (e.which + 1 || e.keyCode + 1) - 1 || 0;
        }catch(f){}
        for(d = 1, f = r.length; f; r[--f] && (a = r[f][0], o = r[f][1], a.call ? c = a.call(o, e) : (o._ = a, c = o._(e), o._ = null), d &= c !== false));
        return e = null, !!d;
    }
};

removeEvent = function(o, e, f, s){
    for(var i = (e = o["_on" + e] || []).length; i;)
    if(e[--i] && e[i][0] == f && (s || o) == e[i][1])
    return delete e[i];
    return false;
};

enterAsTab = function(){ //v1.0
    function next(e){
        var l, i, f, j, o = e.target;
        if(e.key == 13 && !/textarea|select/i.test(o.type)){
            for(i = l = (f = o.form.elements).length; f[--i] != o;);
            for(j = i; (j = (j + 1) % l) != i && (!f[j].type || f[j].disabled || f[j].readOnly););
            e.preventDefault(), j != i && f[j].focus();
        }
    }
    for(var f, i = (f = document.forms).length; i; addEvent(f[--i], "keypress", next));
};

function formatCurrency(o, n, dig, dec){
    o.c = !isNaN(n) ? Math.abs(n) : 2;
    o.dec = dec || ",", o.dig = dig || "";
    addEvent(o, "keypress", function(e){
        if(e.key > 47 && e.key < 58){
            var o, s = ((o = this).value.replace(/^0+/g, "") + String.fromCharCode(e.key)).replace(/\D/g, ""), l, n;
            (l = s.length) <= (n = o.c) && (s = new Array(n - l + 2).join("0") + s);
            for(var i = (l = (s = s.split("")).length) - n; (i -= 3) > 0; s[i - 1] += o.dig);
            n && n < l && (s[l - ++n] += o.dec);
            o.value = s.join("");
        }
        e.key > 30 && e.preventDefault();
    });
}

autoTab = function(){ //v1.0
    function next(e){
        var i, j = e.key, f = (e = e.target).form.elements, l = e.value.length;
        if(e.maxLength != -1 && l >= (Math.abs(e.maxLength) || l + 1) && /[\w¡-ÿ ]/.test(String.fromCharCode(j))){
            for(i = l = f.length; f[--i] != e;);
            for(j = i; (j = (j + 1) % l) != i && (!f[j].type || f[j].disabled || f[j].readOnly););
            j != i && f[j].focus();
        }
    }
    for(var f, i = (f = document.forms).length; i; addEvent(f[--i], "keyup", next));
};

String.prototype.isCPF = function(){
    var c = this;
    if((c = c.replace(/[^\d]/g,"").split("")).length != 11) return false;
    if(new RegExp("^" + c[0] + "{11}$").test(c.join(""))) return false;
    for(var s = 10, n = 0, i = 0; s >= 2; n += c[i++] * s--);
    if(c[9] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    for(var s = 11, n = 0, i = 0; s >= 2; n += c[i++] * s--);
    if(c[10] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    return true;
};

String.prototype.isCNPJ = function(){
    var b = [6,5,4,3,2,9,8,7,6,5,4,3,2], c = this;
    if((c = c.replace(/[^\d]/g,"").split("")).length != 14) return false;
    for(var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
    if(c[12] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    for(var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
    if(c[13] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    return true;
};

/**************************************
* Jonas Raoni Soares Silva
* http://www.joninhas.ath.cx
**************************************/

//========================================================
// REQUIRES http://www.jsfromhell.com/geral/event-listener
//========================================================

MaskInput = function(f, m){ //v1.0
    function mask(e){
        var patterns = {"1": /[A-Z]/i, "2": /[0-9]/, "4": /[À-ÿ]/i, "8": /./ },
        rules = { "a": 3, "A": 7, "9": 2, "C":5, "c": 1, "*": 8};
        function accept(c, rule){
            for(var i = 1, r = rules[rule] || 0; i <= r; i<<=1)
            if(r & i && patterns[i].test(c))
            break;
            return i <= r || c == rule;
        }
        var k, mC, r, c = String.fromCharCode(k = e.key), l = f.value.length;
        (!k || k == 8 ? 1 : (r = /^(.)\^(.*)$/.exec(m)) && (r[0] = r[2].indexOf(c) + 1) + 1 ?
        r[1] == "O" ? r[0] : r[1] == "E" ? !r[0] : accept(c, r[1]) || r[0]
        : (l = (f.value += m.substr(l, (r = /[A|9|C|\*]/i.exec(m.substr(l))) ?
        r.index : l)).length) < m.length && accept(c, m.charAt(l))) || e.preventDefault();
    }
    for(var i in !/^(.)\^(.*)$/.test(m) && (f.maxLength = m.length), {keypress: 0, keyup: 1})
    addEvent(f, i, mask);
};


/*
**************************************
* Restrict Class v1.0                *
* Autor: Carlos R. L. Rodrigues      *
**************************************
*/
/* Versão 1.0.1 // Modificado por JDGRIECO (referencia ao id no lugar do nome)

//========================================================
// REQUIRES http://www.jsfromhell.com/geral/event-listener
//========================================================
*/
Restrict = function(form){
    this.form = form, this.field = {}, this.mask = {};
}
Restrict.field = Restrict.inst = Restrict.c = null;
Restrict.prototype.start = function(){
    var $, __ = document.forms[this.form], s, x, j, c, sp, o = this, l;
    var p = {".":/./, w:/\w/, W:/\W/, d:/\d/, D:/\D/, s:/\s/, a:/[\xc0-\xff]/, A:/[^\xc0-\xff]/};
    for(var _ in $ = this.field) {
        var fld = document.getElementById(_);
        if(/text|textarea|password/i.test(fld.type)) {
            x = $[_].split(""), c = j = 0, sp, s = [[],[]];
            for(var i = 0, l = x.length; i < l; i++)
            if(x[i] == "\\" || sp){
                if(sp = !sp) continue;
                s[j][c++] = p[x[i]] || x[i];
            }
            else if(x[i] == "^") c = (j = 1) - 1;
            else s[j][c++] = x[i];
            o.mask[fld.id] && (fld.maxLength = o.mask[fld.id].length);
            fld.pt = s, addEvent(fld, "keydown", function(e){
                var r = Restrict.field = e.target;
                if(!o.mask[r.id]) return;
                r.l = r.value.length, Restrict.inst = o; Restrict.c = e.key;
                setTimeout(o.onchanged, r.e = 1);
            });
            addEvent(fld, "keyup", function(e){
            (Restrict.field = e.target).e = 0;
            });
            addEvent(fld, "keypress", function(e){
                o.restrict(e) || e.preventDefault();
                var r = Restrict.field = e.target;
                if(!o.mask[r.id]) return;
                if(!r.e){
                    r.l = r.value.length, Restrict.inst = o, Restrict.c = e.key || 0;
                    setTimeout(o.onchanged, 1);
                }
            });
        }

    }
    }
    Restrict.prototype.restrict = function(e){
        var o, c = e.key, n = (o = e.target).id, r;
        var has = function(c, r){
            for(var i = r.length; i--;)
            if((r[i] instanceof RegExp && r[i].test(c)) || r[i] == c) return true;
            return false;
        }
        var inRange = function(c){
            return has(c, o.pt[0]) && !has(c, o.pt[1]);
        }
        return (c < 30 || inRange(String.fromCharCode(c))) ?
        (this.onKeyAccept && this.onKeyAccept(o, c), !0) :
        (this.onKeyRefuse && this.onKeyRefuse(o, c),  !1);
    }
    Restrict.prototype.onchanged = function(){
        var ob = Restrict, si, moz = false, o = ob.field, t, lt = (t = o.value).length, m = ob.inst.mask[o.id];
        if(o.l == o.value.length) return;
        if(si = o.selectionStart) moz = true;
        else if(o.createTextRange){
            var obj = document.selection.createRange(), r = o.createTextRange();
            if(!r.setEndPoint) return false;
            try {
                r.setEndPoint("EndToStart", obj);
            }
            catch(all) {

            }
            finally {
                si = r.text.length;
            }
        }
        else return false;
        for(var i in m = m.split(""))
        if(m[i] != "#")
        t = t.replace(m[i] == "\\" ? m[++i] : m[i], "");
        var j = 0, h = "", l = m.length, ini = si == 1, t = t.split("");
        for(i = 0; i < l; i++)
        if(m[i] != "#"){
            if(m[i] == "\\" && (h += m[++i])) continue;
            h += m[i], i + 1 == l && (t[j - 1] += h, h = "");
        }
        else{
            if(!t[j] && !(h = "")) break;
            (t[j] = h + t[j++]) && (h = "");
        }
        o.value = o.maxLength > -1 && o.maxLength < (t = t.join("")).length ? t.slice(0, o.maxLength) : t;
        if(ob.c && ob.c != 46 && ob.c != 8){
            if(si != lt){
                while(m[si] != "#" && m[si]) si++;
                ini && m[0] != "#" && si++;
            }
            else si = o.value.length;
        }
        !moz ? (obj.move("character", si), obj.select()) : o.setSelectionRange(si, si);
    }

    var caller;
    function displayError(str, field) {
        var dlgError;
        function findPosX(obj)
        {
            var curleft = 0;
            if (obj.offsetParent)
            {
                while (obj.offsetParent)
                {
                    curleft += obj.offsetLeft
                    obj = obj.offsetParent;
                }
            }
            else if (obj.x)
            curleft += obj.x;
            return curleft;
        }

        function findPosY(obj)
        {
            var curtop = 0;
            if (obj.offsetParent)
            {
                while (obj.offsetParent)
                {
                    curtop += obj.offsetTop
                    obj = obj.offsetParent;
                }
            }
            else if (obj.y)
            curtop += obj.y;
            return curtop;
        }
        dlgError = document.getElementById('dlgError');
        dlgError.style.visibility = 'visible';
        dlgError.innerHTML = str;
        dlgError.style.top = findPosY(field)+field.offsetHeight;
        dlgError.style.left = findPosX(field);
        caller = field.id;
    }

    function hideError(field) {
        if (caller==field.id) document.getElementById('dlgError').style.visibility = 'hidden';
    }

    function checa_data(e) {
        if (!e) e = window.event;
        if (e.target) campo = e.target; else campo = e.srcElement;e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
        if (e.preventDefault) e.stopPropagation();
        e.returnValue = false;
        valida = new RegExp("(0[1-9]|[12][0-9]|3[01])(/|-)(0[1-9]|1[012])(/|-)([12][0-9]{3}|[0-9]{2})");
        if (data = valida.exec(campo.value)) {
            switch (data[5].length) {
                case 1:
                case 2:
                data[5] = ((data[5] <= 30)?"20":"19")+data[5];
                break;
                case 3:
                data[5] = "2" + data[5];
                break;
            }
            testa_data = new Date(data[5],data[3]-1,data[1]);
            if (!(testa_data.getFullYear() == data[5] && testa_data.getMonth() == data[3]-1 && testa_data.getDate() == data[1]))  {
                displayError('Data Inválida!', campo);
                if (navigator.appName != "Netscape") {
                    campo.focus();
                } else {
                    setTimeout("campo.focus();",1);
                }
                campo.select();
            } else {
                hideError(campo);
                campo.value = data[1]+data[2]+data[3]+data[4]+data[5];
            }
        } else {
            displayError('Data Inválida!', campo);
            if (navigator.appName != "Netscape") {
                campo.focus();
            } else {
                setTimeout("campo.focus();",1);
            }
            campo.select();
        }
    }

    find_lbl = function (el) {
        var lbls = el.form.getElementsByTagName('label');
        for(i=0; i<lbls.length; i++) {
            if (lbls[i].htmlFor == el.id) {
                return lbls[i]
            }
        }
        return false;
    }


    error = function () {
    }
    error.prototype.set = function (el, message) {
//        el.style.backgroundColor = 'e54c2c';
//        el.style.color = 'white';
        if (lbl = find_lbl(el)) {
//            lbl.style.color = 'e54c2c';
            lbl.style.fontWeight = 'bold';
        }
        if (message != '' && (error_message = document.getElementById(el.id + '-erro'))) {
            error_message.innerHTML = message;
        }
    }
    error.prototype.clear = function (el) {
        el.style.backgroundColor = '';
        el.style.color = '';
        if (lbl = find_lbl(el)) {
            lbl.style.color = '';
            lbl.style.fontWeight = '';
        }
        if (error_message = document.getElementById(el.id + '-erro')) {
            error_message.innerHTML = '';
        }
    }
    error.prototype.abort = function (formulario) {
        var error_fields = Array(), evObj = document.createEventObject(), i, field;
        for (i=0; i < formulario.elements.length; i++) {
            field = formulario.elements[i];
            field.fireEvent('onblur',evObj);
            if (!/hidden/.test(field.type) && field.style.backgroundColor == '#e54c2c') {
                error_fields.push(field.id);
            }
        }
        if (error_fields.length > 0) {
            return error_fields;
        } else {
            return false
        }
    }

    error_alert = new error();

