﻿/*
* Trata imagens em png para ie 5 e 6.
*/
function ValidarPng()
{
    $(document).ready(function(){ 
        $(document).pngFix(); 
    }); 
}

/*
* Troca estado das imagens de on para off 
* class = rollover
*/
function rollover()
{
    $('.rollover').hover(
            function(){
                this.src = this.src.replace('_off','_on');
            },
            function(){
                this.src = this.src.replace('_on','_off');
            }
        );
}

/*
* Limpa o texto predefinido quando o controle ganha o foco
* seletorControle = seletor do controle a receber a animaçao
* palavra = palavra definida inserida no controle
* corFundo = cor que a palavra vai aparecer ( normalmente uma cor mais clara que o preto)
*/
function limpaTexto(seletorControle , palavra , corFundo)
{
    if(corFundo == null || corFundo == "")
        corFundo = "black";
            
    var controles = $(seletorControle)
    controles.each(function(){
        this.style.color = corFundo;
        this.value = palavra
    });
    controles.focus(function(){
        if(this.value == palavra)
        {
            this.style.color = 'black';         
            this.value = "";
        }
    });
    controles.blur(function(){
        if(this.value == "")
        {
            this.style.color = corFundo;
            this.value = palavra;
        }
    });
}

/*
*Fade inicial da imagem
*idImg = id da imagem
*porcentagem = tom do fade
*/
function FadeImg(idImg,porcentagem)
{
    var imgs = $('#' + idImg);
    imgs.each(function(){
         $(this).fadeTo("fast", porcentagem);
    });
    imgs.hover(
        function(){
            $(this).fadeTo("fast", 1);
        },
        function(){
            $(this).fadeTo("fast", porcentagem);
        }
    );
}

// ------------------------------------------------- mask ------------------------------------------------ //
// --------------------------------------------------------------------------------------------------------//

/* mask */
(function(B) { var A = (window.orientation != undefined); B.extend({ mask: { rules: { "z": /[a-z]/, "Z": /[A-Z]/, "a": /[a-zA-Z]/, "*": /[0-9a-zA-Z]/, "@": /[0-9a-zA-ZÃ§Ã‡Ã¡Ã Ã£Ã©Ã¨Ã­Ã¬Ã³Ã²ÃµÃºÃ¹Ã¼]/ }, fixedChars: "[(),.:/ -]", keyRepresentation: { 8: "backspace", 9: "tab", 13: "enter", 16: "shift", 17: "control", 18: "alt", 27: "esc", 33: "page up", 34: "page down", 35: "end", 36: "home", 37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "delete", 116: "f5", 224: "command" }, iphoneKeyRepresentation: { 10: "go", 127: "delete" }, signals: { "+": "", "-": "-" }, options: { attr: "alt", mask: null, type: "fixed", defaultValue: "", signal: false, onInvalid: function() { }, onValid: function() { }, onOverflow: function() { } }, masks: { "phone": { mask: "(99) 9999-9999" }, "phone-us": { mask: "(999) 9999-9999" }, "cpf": { mask: "999.999.999-99" }, "cnpj": { mask: "99.999.999/9999-99" }, "date": { mask: "39/19/9999" }, "date-us": { mask: "19/39/9999" }, "cep": { mask: "99999-999" }, "time": { mask: "29:59" }, "cc": { mask: "9999 9999 9999 9999" }, "integer": { mask: "999.999.999.999", type: "reverse" }, "decimal": { mask: "99,999.999.999.999", type: "reverse", defaultValue: "000" }, "decimal-us": { mask: "99.999,999,999,999", type: "reverse", defaultValue: "000" }, "signed-decimal": { mask: "99,999.999.999.999", type: "reverse", defaultValue: "+000" }, "signed-decimal-us": { mask: "99,999.999.999.999", type: "reverse", defaultValue: "+000"} }, init: function() { if (!this.hasInit) { var C = this, D, E = (A) ? this.iphoneKeyRepresentation : this.keyRepresentation; this.ignore = false; this.fixedCharsReg = new RegExp(this.fixedChars); this.fixedCharsRegG = new RegExp(this.fixedChars, "g"); for (D = 0; D <= 9; D++) { this.rules[D] = new RegExp("[0-" + D + "]") } this.keyRep = E; this.ignoreKeys = []; B.each(E, function(F) { C.ignoreKeys.push(parseInt(F)) }); this.hasInit = true } }, set: function(G, D) { var C = this, E = B(G), F = "maxLength"; this.init(); return E.each(function() { var N = B(this), O = B.extend({}, C.options), M = N.attr(O.attr), H = "", J = C.__getPasteEvent(); H = (typeof D == "string") ? D : (M != "") ? M : null; if (H) { O.mask = H } if (C.masks[H]) { O = B.extend(O, C.masks[H]) } if (typeof D == "object") { O = B.extend(O, D) } if (B.metadata) { O = B.extend(O, N.metadata()) } if (O.mask != null) { if (N.data("mask")) { C.unset(N) } var I = O.defaultValue, L = N.attr(F), K = (O.type == "reverse"); O = B.extend({}, O, { maxlength: L, maskArray: O.mask.split(""), maskNonFixedCharsArray: O.mask.replace(C.fixedCharsRegG, "").split("") }); if (K) { N.css("text-align", "right") } if (N.val() != "") { N.val(C.string(N.val(), O)) } else { if (I != "") { N.val(C.string(I, O)) } } N.data("mask", O); N.removeAttr(F); N.bind("keydown", { func: C._keyDown, thisObj: C }, C._onMask).bind("keyup", { func: C._keyUp, thisObj: C }, C._onMask).bind("keypress", { func: C._keyPress, thisObj: C }, C._onMask).bind(J, { func: C._paste, thisObj: C }, C._delayedOnMask) } }) }, unset: function(D) { var C = B(D), E = this; return C.each(function() { var H = B(this); if (H.data("mask")) { var F = H.data("mask").maxlength, G = E.__getPasteEvent(); if (F != -1) { H.attr("maxLength", F) } H.unbind("keydown", E._onMask).unbind("keypress", E._onMask).unbind("keyup", E._onMask).unbind(G, E._delayedOnMask).removeData("mask") } }) }, string: function(F, C) { this.init(); var E = {}; if (typeof F != "string") { F = String(F) } switch (typeof C) { case "string": if (this.masks[C]) { E = B.extend(E, this.masks[C]) } else { E.mask = C } break; case "object": E = C } if ((E.type == "reverse") && E.defaultValue) { if (typeof this.signals[E.defaultValue.charAt(0)] != "undefined") { var D = F.charAt(0); E.signal = (typeof this.signals[D] != "undefined") ? this.signals[D] : this.signals[E.defaultValue.charAt(0)]; E.defaultValue = E.defaultValue.substring(1) } } return this.__maskArray(F.split(""), E.mask.replace(this.fixedCharsRegG, "").split(""), E.mask.split(""), E.type, E.defaultValue, E.signal) }, unmaskedVal: function(C) { return B(C).val().replace(B.mask.fixedCharsRegG, "") }, _onMask: function(C) { var E = C.data.thisObj, D = {}; D._this = C.target; D.$this = B(D._this); if (D.$this.attr("readonly")) { return true } D.value = D.$this.val(); D.nKey = E.__getKeyNumber(C); D.range = E.__getRange(D._this); D.valueArray = D.value.split(""); D.data = D.$this.data("mask"); D[D.data.type] = true; return C.data.func.call(E, C, D) }, _delayedOnMask: function(C) { C.type = "paste"; setTimeout(function() { C.data.thisObj._onMask(C) }, 1) }, _keyDown: function(D, E) { this.ignore = (B.inArray(E.nKey, this.ignoreKeys) > -1); if (this.ignore) { var C = this.keyRep[E.nKey]; E.data.onValid.call(E._this, C ? C : "", E.nKey) } return A ? this._keyPress(D, E) : true }, _keyUp: function(C, D) { if (D.nKey == 9 && (B.browser.safari || B.browser.msie)) { return true } return (!D.infinite) ? this._paste(C, D) : true }, _paste: function(D, E) { if (E.reverse) { this.__changeSignal(D.type, E) } var C = this.__maskArray(E.valueArray, E.data.maskNonFixedCharsArray, E.data.maskArray, E.data.type, E.data.defaultValue, E.data.signal); E.$this.val(C); if (!E.reverse && E.data.defaultValue.length && (E.range.start == E.range.end)) { this.__setRange(E._this, E.range.start, E.range.end) } if ((B.browser.msie || B.browser.safari) && !E.reverse) { this.__setRange(E._this, E.range.start, E.range.end) } return true }, _keyPress: function(J, C) { if (this.ignore || J.ctrlKey || J.metaKey || J.altKey) { return true } if (C.reverse) { this.__changeSignal(J.type, C) } var K = String.fromCharCode(C.nKey), M = C.range.start, G = C.value, E = C.data.maskArray; if (C.reverse) { var F = G.substr(0, M), I = G.substr(C.range.end, G.length); G = (F + K + I); if (C.data.signal && (M - C.data.signal.length > 0)) { M -= C.data.signal.length } } var L = G.replace(this.fixedCharsRegG, "").split(""), D = this.__extraPositionsTill(M, E); C.rsEp = M + D; if (C.infinite) { C.rsEp = 0 } if (!this.rules[E[C.rsEp]]) { C.data.onOverflow.call(C._this, K, C.nKey); return false } else { if (!this.rules[E[C.rsEp]].test(K)) { C.data.onInvalid.call(C._this, K, C.nKey); return false } else { C.data.onValid.call(C._this, K, C.nKey) } } var H = this.__maskArray(L, C.data.maskNonFixedCharsArray, E, C.data.type, C.data.defaultValue, C.data.signal, D); C.$this.val(H); return (C.reverse) ? this._keyPressReverse(J, C) : (C.fixed) ? this._keyPressFixed(J, C) : true }, _keyPressFixed: function(C, D) { if (D.range.start == D.range.end) { if ((D.rsEp == 0 && D.value.length == 0) || D.rsEp < D.value.length) { this.__setRange(D._this, D.rsEp, D.rsEp + 1) } } else { this.__setRange(D._this, D.range.start, D.range.end) } return true }, _keyPressReverse: function(C, D) { if (B.browser.msie && ((D.rangeStart == 0 && D.range.end == 0) || D.rangeStart != D.range.end)) { this.__setRange(D._this, D.value.length) } return false }, __changeSignal: function(D, E) { if (E.data.signal !== false) { var C = (D == "paste") ? E.value.charAt(0) : String.fromCharCode(E.nKey); if (this.signals && (typeof this.signals[C] != "undefined")) { E.data.signal = this.signals[C] } } }, __getPasteEvent: function() { return (B.browser.opera || (B.browser.mozilla && parseFloat(B.browser.version.substr(0, 3)) < 1.9)) ? "input" : "paste" }, __getKeyNumber: function(C) { return (C.charCode || C.keyCode || C.which) }, __maskArray: function(H, G, D, F, C, I, E) { if (F == "reverse") { H.reverse() } H = this.__removeInvalidChars(H, G); if (C) { H = this.__applyDefaultValue.call(H, C) } H = this.__applyMask(H, D, E); switch (F) { case "reverse": H.reverse(); return (I || "") + H.join("").substring(H.length - D.length); case "infinite": return H.join(""); default: return H.join("").substring(0, D.length) } return "" }, __applyDefaultValue: function(E) { var C = E.length, D = this.length, F; for (F = D - 1; F >= 0; F--) { if (this[F] == E.charAt(0)) { this.pop() } else { break } } for (F = 0; F < C; F++) { if (!this[F]) { this[F] = E.charAt(F) } } return this }, __removeInvalidChars: function(E, D) { for (var C = 0; C < E.length; C++) { if (D[C] && this.rules[D[C]] && !this.rules[D[C]].test(E[C])) { E.splice(C, 1); C-- } } return E }, __applyMask: function(E, C, F) { if (typeof F == "undefined") { F = 0 } for (var D = 0; D < E.length + F; D++) { if (C[D] && this.fixedCharsReg.test(C[D])) { E.splice(D, 0, C[D]) } } return E }, __extraPositionsTill: function(E, C) { var D = 0; while (this.fixedCharsReg.test(C[E])) { E++; D++ } return D }, __setRange: function(E, F, C) { if (typeof C == "undefined") { C = F } if (E.setSelectionRange) { E.setSelectionRange(F, C) } else { var D = E.createTextRange(); D.collapse(); D.moveStart("character", F); D.moveEnd("character", C - F); D.select() } }, __getRange: function(D) { if (!B.browser.msie) { return { start: D.selectionStart, end: D.selectionEnd} } var E = { start: 0, end: 0 }, C = document.selection.createRange(); E.start = 0 - C.duplicate().moveStart("character", -100000); E.end = E.start + C.text.length; return E } } }); B.fn.extend({ setMask: function(C) { return B.mask.set(this, C) }, unsetMask: function() { return B.mask.unset(this) }, unmaskedVal: function() { return B.mask.unmaskedVal(this[0]) } }) })(jQuery)



// -------------------------------------------- tableRollover -------------------------------------------- //
// --------------------------------------------------------------------------------------------------------//

// Adds rollover effect to the table rows.

// param: tableId: the id of the table to which this script will apply the effect.
// param: cssClass_mouseOver: the css class name to apply to rows being mouse-overed.
// param: cssClass_mouseOut: the name of the css class to aplly to apply to r
// param: ignoreFirstRow: 
function addTableRollover(tableId, cssClass_mouseOver, cssClass_mouseOut, ignoreFirstRow)
{
    mouseOverCssClass = cssClass_mouseOver;
    mouseOutCssClass = cssClass_mouseOut;

    var table = document.getElementById(tableId);
    
    if (table)
    {        
        for (var i = 0; i < table.rows.length; i++)
        {

            if (i == 0 && ignoreFirstRow)
                continue;

            var currentRow = table.rows[i];
            
            currentRow.onmouseover = function () {this.className = cssClass_mouseOver;};
            currentRow.onmouseout = function() {this.className = cssClass_mouseOut;};
        }
    }
}


// ----------------------------------------- findElementPosition ----------------------------------------- //
// --------------------------------------------------------------------------------------------------------//

function findElementPosition(obj) {
    var curleft = curtop = 0;

    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        }
        while (obj = obj.offsetParent);
    }

    return [curtop, curleft];
}

// -------------------------------------------- Char Counter -------------------------------------------- //
// ------------------------------------------------------------------------------------------------------ //

jQuery.findPosition = function(element) {
    var curleft = curtop = 0;
    if (element.offsetParent) {
        do {
            curleft += element.offsetLeft;
            curtop += element.offsetTop;
        } while (element = element.offsetParent);
    }
    return [curleft, curtop];
};

jQuery.fn.charCounter = function(options) {
    settings = jQuery.extend({
        css: '',
        fadeOut: 'fast',
        show: ''
    }, options);
    return this.each(function() {
        var jThis = jQuery(this);
        var elPosition = jQuery.findPosition(jThis.get(0));
        var maxLength = (jThis.attr('type') == 'input' ? jThis.attr('maxLength') : parseInt(jThis.attr('maxLength'), 10));
        var counter = jQuery('#' + jThis.attr('id') + '_counter');
        if (counter.length == 0) {
            var counterHtml = '<div id="' + jThis.attr('id') + '_counter" class="' + settings.css + '" style="left:' + (elPosition[0] + jThis.attr('offsetWidth') + 3) + 'px;top:' + elPosition[1] + 'px;"><span>' + (maxLength - jThis.val().length) + '</span></div>';
            jThis.after(counterHtml);
            var counter = jQuery('#' + jThis.attr('id') + '_counter');
        }
        jThis.blur(function() { counter.fadeOut(settings.fadeOut); })
            .focus(function() { counter.show(settings.show); })
            .keyup(function() { jQuery('span', counter).text(maxLength - this.value.length); });
    });
};
