﻿//Atualiza o valor de um campo com animação
$.fn.atualizaCampo = function(valor) { $(this).val(valor).animate({ backgroundColor: "#8addff" }, 900).animate({ backgroundColor: "#ffffff" }, 900); }
//Atualiza o texto de um campo com animação
$.fn.atualizaTexto = function(valor) { $(this).text(valor).animate({ backgroundColor: "#8addff" }, 900).animate({ backgroundColor: "#ffffff" }, 900); }
//Ajusta foco com animação
$.fn.ajustaFoco = function() {
    $(this).focus(function() { $(this).animate({ backgroundColor: "#fffdd9" }, 500); })
    $(this).blur(function() { $(this).animate({ backgroundColor: "#ffffff" }, 500); })
}

//VALIDAÇÕES
function validaCPF(value, element) {
    
    if ((value != "___.___.___-__") && (value != ""))
    {
        var cpf = value.replace(/\D/g, "");

        if (cpf.length != 11 || cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999")
            return false;
        add = 0;
        for (i = 0; i < 9; i++)
            add += parseInt(cpf.charAt(i)) * (10 - i);
        rev = 11 - (add % 11);
        if (rev == 10 || rev == 11)
            rev = 0;
        if (rev != parseInt(cpf.charAt(9)))
            return false;
        add = 0;
        for (i = 0; i < 10; i++)
            add += parseInt(cpf.charAt(i)) * (11 - i);
        rev = 11 - (add % 11);
        if (rev == 10 || rev == 11)
            rev = 0;
        if (rev != parseInt(cpf.charAt(10)))
            return false;

        return true;
    }
    else
        return true;
}

function validaCNPJ(value, element) {
    var cnpj = value.replace(/\D/g, "");
    var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;

    digitos_iguais = 1;
    if (cnpj.length < 14 && cnpj.length < 15)
        return false;
    for (i = 0; i < cnpj.length - 1; i++)
        if (cnpj.charAt(i) != cnpj.charAt(i + 1))
    {
        digitos_iguais = 0;
        break;
    }
    if (!digitos_iguais)
    {
        tamanho = cnpj.length - 2
        numeros = cnpj.substring(0, tamanho);
        digitos = cnpj.substring(tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--)
        {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2)
                pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;

        if (resultado != digitos.charAt(0))
            return false;

        tamanho = tamanho + 1;
        numeros = cnpj.substring(0, tamanho);
        soma = 0;
        pos = tamanho - 7;
        for (i = tamanho; i >= 1; i--)
        {
            soma += numeros.charAt(tamanho - i) * pos--;
            if (pos < 2)
                pos = 9;
        }
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;

        return true;
    }
    else
        return false;
}

function validaData(value, element) {
    var expReg = /^((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 aRet = true;
    if (value.match(expReg) && (value != ''))
    {
        var dia = value.substring(0, 2);
        var mes = value.substring(3, 5);
        var ano = value.substring(6, 10);
        if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia > 30)
            aRet = false;
        else
            if ((ano % 4) != 0 && mes == 2 && dia > 28)
            aRet = false;
        else
            if ((ano % 4) == 0 && mes == 2 && dia > 29)
            aRet = false;
    }
    else if (value == '__/__/____' || value == "")
        aRet = true;
    else
        aRet = false;

    return aRet;
}

function validaDataFutura(value, element) {
    var expReg = /^((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 aRet = true;
    var dataAtual = new Date()
    var mesAtual = dataAtual.getMonth() + 1
    var diaAtual = dataAtual.getDate()
    var anoAtual = dataAtual.getFullYear()

    if (value.match(expReg) && (value != ''))
    {
        var dia = value.substring(0, 2);
        var mes = value.substring(3, 5);
        var ano = value.substring(6, 10);

        var mess;
        var diaa;

        if (mes.charAt(0) == "0")
            mess = parseInt(value.substring(4, 5));
        else
            mess = parseInt(value.substring(3, 5));

        if (dia.charAt(0) == "0")
            diaa = parseInt(value.substring(1, 2));
        else
            diaa = parseInt(value.substring(0, 2));

        if ((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia > 30)
        {
            aRet = false;
        }
        else if ((ano % 4) != 0 && mes == 2 && dia > 28)
        {
            aRet = false;
        }
        else if ((ano % 4) == 0 && mes == 2 && dia > 29)
        {
            aRet = false;
        }
        else if (parseInt(ano) > anoAtual)
        {
            aRet = false;
        }
        else if (parseInt(ano) == anoAtual && mess > mesAtual)
        {
            aRet = false;
        }
        else if (parseInt(ano) == anoAtual && mess == mesAtual && diaa > diaAtual)
        {
            aRet = false;
        }
    }
    else if (value == '__/__/____' || value == "")
        aRet = true;
    else
        aRet = false;

    return aRet;
}

function validaDuracaoMultiplo5(value, element) { return this.optional(element) || (value % 5 == 0); }

function validaDuracaoRange(value, element) {
    if (value > 240)
        return false;
    else if (value < 0)
        return false;
    else
        return true
}
$.validator.addMethod("cpf", validaCPF, "CPF Inválido"); $.validator.addMethod("cnpj", validaCNPJ, "CNPJ Inválido");
$.validator.addMethod("data", validaData, "Data Inválida"); $.validator.addMethod("dataFutura", validaDataFutura, "Data Inválida");
$.validator.addMethod("duracaoMultiplo", validaDuracaoMultiplo5, "<br />DURAÇÃO deve ser múltipla de 5 (5, 10, 15, 20, 25 etc.)");
$.validator.addMethod("duracaoRange", validaDuracaoRange, "DURAÇÃO deve ser maior ou igual a 0 e menor ou igual a 240"); $.validator.addClassRules("duracao", { duracaoMultiplo: true, duracaoRange: true });  


//ALPHANUMERIC
(function($) {
    $.fn.alphanumeric = function(p) {
        p = $.extend({
            ichars: "çÇª°£¢¿®ñÑ½¼¡«»░▒▓│øøØ×ƒßåŒþÆÐœÞæðµ☼⌂↕‼↔♥♦♣♠•◘○◙♂♀♪♫☼►◄¶§▬↨↑↓→←∟↔▲▼¹³²■☺☻±©™¨!@#$%^&*()+=[]\\\';,/{}|\":<>?~`´.- ",
            nchars: "",
            allow: ""
        }, p);
        return this.each
		(
			function() {
			    if (p.nocaps) p.nchars += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
			    if (p.allcaps) p.nchars += "abcdefghijklmnopqrstuvwxyz";
			    s = p.allow.split('');
			    for (i = 0; i < s.length; i++) if (p.ichars.indexOf(s[i]) != -1) s[i] = "\\" + s[i];
			    p.allow = s.join('|');
			    var reg = new RegExp(p.allow, 'gi');
			    var ch = p.ichars + p.nchars;
			    ch = ch.replace(reg, '');
			    $(this).keypress(
						function(e) {
						    if (!e.charCode) k = String.fromCharCode(e.which);
						    else k = String.fromCharCode(e.charCode);
						    if (ch.indexOf(k) != -1) e.preventDefault();
						    if (e.ctrlKey && k == 'v') e.preventDefault();
						}
					);
			    $(this).bind('contextmenu', function() { return false });
			}
		);
    };
    $.fn.number = function(p) {
        var az = "abcdefghijklmnopqrstuvwxyz";
        az += az.toUpperCase();
        p = $.extend({
            nchars: az
        }, p);
        return this.each(function() { $(this).alphanumeric(p); }
	);
    };
    $.fn.alpha = function(p) {
        var nm = "1234567890";
        p = $.extend({
            nchars: nm
        }, p);
        return this.each(function() {
            $(this).alphanumeric(p);
        }
	);
    };
})(jQuery);


//MASKED INPUT
(function($) {
    var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask";
    var iPhone = (window.orientation != undefined);
    $.mask = {
        definitions: {
            '9': "[0-9]",
            'a': "[A-Za-z]",
            '*': "[A-Za-z0-9]"
        }
    };
    $.fn.extend({
        caret: function(begin, end) {
            if (this.length == 0) return;
            if (typeof begin == 'number')
            {
                end = (typeof end == 'number') ? end : begin;
                return this.each(function() {
                    if (this.setSelectionRange)
                    {
                        this.focus(); this.setSelectionRange(begin, end);
                    } else if (this.createTextRange)
                    {
                        var range = this.createTextRange();
                        range.collapse(true); range.moveEnd('character', end); range.moveStart('character', begin); range.select();
                    }
                });
            } else
            {
                if (this[0].setSelectionRange)
                {
                    begin = this[0].selectionStart; end = this[0].selectionEnd;
                } else if (document.selection && document.selection.createRange)
                {
                    var range = document.selection.createRange();
                    begin = 0 - range.duplicate().moveStart('character', -100000);
                    end = begin + range.text.length;
                }
                return { begin: begin, end: end };
            }
        },
        unmask: function() { return this.trigger("unmask"); },
        mask: function(mask, settings) {
            if (!mask && this.length > 0)
            {
                var input = $(this[0]);
                var tests = input.data("tests");
                return $.map(input.data("buffer"), function(c, i) {
                    return tests[i] ? c : null;
                }).join('');
            }
            settings = $.extend({
                placeholder: "_",
                completed: null
            }, settings);

            var defs = $.mask.definitions;
            var tests = [];
            var partialPosition = mask.length;
            var firstNonMaskPos = null;
            var len = mask.length;

            $.each(mask.split(""), function(i, c) {
                if (c == '?')
                {
                    len--;
                    partialPosition = i;
                } else if (defs[c])
                {
                    tests.push(new RegExp(defs[c]));
                    if (firstNonMaskPos == null)
                        firstNonMaskPos = tests.length - 1;
                } else { tests.push(null); }
            });
            return this.each(function() {
                var input = $(this);
                var buffer = $.map(mask.split(""), function(c, i) { if (c != '?') return defs[c] ? settings.placeholder : c });
                var ignore = false;  			//Variable for ignoring control keys
                var focusText = input.val();
                input.data("buffer", buffer).data("tests", tests);
                function seekNext(pos) {
                    while (++pos <= len && !tests[pos]);
                    return pos;
                };
                function shiftL(pos) {
                    while (!tests[pos] && --pos >= 0);
                    for (var i = pos; i < len; i++)
                    {
                        if (tests[i])
                        {
                            buffer[i] = settings.placeholder;
                            var j = seekNext(i);
                            if (j < len && tests[i].test(buffer[j]))
                            {
                                buffer[i] = buffer[j];
                            } else
                                break;
                        }
                    }
                    writeBuffer();
                    input.caret(Math.max(firstNonMaskPos, pos));
                };
                function shiftR(pos) {
                    for (var i = pos, c = settings.placeholder; i < len; i++)
                    {
                        if (tests[i])
                        {
                            var j = seekNext(i);
                            var t = buffer[i];
                            buffer[i] = c;
                            if (j < len && tests[j].test(t)) c = t;
                            else break;
                        }
                    }
                };
                function keydownEvent(e) {
                    var pos = $(this).caret();
                    var k = e.keyCode;
                    ignore = (k < 16 || (k > 16 && k < 32) || (k > 32 && k < 41));
                    //delete selection before proceeding
                    if ((pos.begin - pos.end) != 0 && (!ignore || k == 8 || k == 46))
                        clearBuffer(pos.begin, pos.end);

                    //backspace, delete, and escape get special treatment
                    if (k == 8 || k == 46 || (iPhone && k == 127))
                    {//backspace/delete
                        shiftL(pos.begin + (k == 46 ? 0 : -1));
                        return false;
                    } else if (k == 27)
                    {//escape
                        input.val(focusText);
                        input.caret(0, checkVal());
                        return false;
                    }
                };

                function keypressEvent(e) {
                    if (ignore)
                    {
                        ignore = false;
                        //Fixes Mac FF bug on backspace
                        return (e.keyCode == 8) ? false : null;
                    }
                    e = e || window.event;
                    var k = e.charCode || e.keyCode || e.which;
                    var pos = $(this).caret();

                    if (e.ctrlKey || e.altKey || e.metaKey)
                    {//Ignore
                        return true;
                    } else if ((k >= 32 && k <= 125) || k > 186)
                    {//typeable characters
                        var p = seekNext(pos.begin - 1);
                        if (p < len)
                        {
                            var c = String.fromCharCode(k);
                            if (tests[p].test(c))
                            {
                                shiftR(p);
                                buffer[p] = c;
                                writeBuffer();
                                var next = seekNext(p);
                                $(this).caret(next);
                                if (settings.completed && next == len)
                                    settings.completed.call(input);
                            }
                        }
                    }
                    return false;
                };

                function clearBuffer(start, end) {
                    for (var i = start; i < end && i < len; i++)
                    {
                        if (tests[i])
                            buffer[i] = settings.placeholder;
                    }
                };
                function writeBuffer() { return input.val(buffer.join('')).val(); };
                function checkVal(allow) {
                    //try to place characters where they belong
                    var test = input.val();
                    var lastMatch = -1;
                    for (var i = 0, pos = 0; i < len; i++)
                    {
                        if (tests[i])
                        {
                            buffer[i] = settings.placeholder;
                            while (pos++ < test.length)
                            {
                                var c = test.charAt(pos - 1);
                                if (tests[i].test(c))
                                {
                                    buffer[i] = c;
                                    lastMatch = i;
                                    break;
                                }
                            }
                            if (pos > test.length)
                                break;
                        } else if (buffer[i] == test[pos] && i != partialPosition)
                        {
                            pos++;
                            lastMatch = i;
                        }
                    }
                    if (!allow && lastMatch + 1 < partialPosition)
                    {
                        input.val("");
                        clearBuffer(0, len);
                    } else if (allow || lastMatch + 1 >= partialPosition)
                    {
                        writeBuffer();
                        if (!allow) input.val(input.val().substring(0, lastMatch + 1));
                    }
                    return (partialPosition ? i : firstNonMaskPos);
                };

                if (!input.attr("readonly"))
                    input
					.one("unmask", function() {
					    input
							.unbind(".mask")
							.removeData("buffer")
							.removeData("tests");
					})
					.bind("focus.mask", function() {
					    focusText = input.val();
					    var pos = checkVal();
					    writeBuffer();
					    setTimeout(function() {
					        if (pos == mask.length)
					            input.caret(0, pos);
					        else
					            input.caret(pos);
					    }, 0);
					})
					.bind("blur.mask", function() {
					    checkVal();
					    if (input.val() != focusText)
					        input.change();
					})
					.bind("keydown.mask", keydownEvent)
					.bind("keypress.mask", keypressEvent)
					.bind(pasteEventName, function() {
					    setTimeout(function() { input.caret(checkVal(true)); }, 0);
					});

                checkVal(); //Perform initial check for existing values
            });
        }
    });
})(jQuery);


//INÍCIO - FillSelect
$.fn.clearSelect = function() { return this.each(function() { if (this.tagName == 'SELECT') this.options.length = 0; }); }
$.fn.fillSelect = function(data) {
    return this.clearSelect().each(function() {
        if (this.tagName == 'SELECT')
        {
            var dropdownList = this;
            $.each(data, function(index, optionData) {
                var option = new Option(optionData.Text, optionData.Value);
                if ($.browser.msie)
                    dropdownList.add(option);
                else
                    dropdownList.add(option, null);
            });
        }
    });
}

//Limpa campos de formulário
$.fn.clearForm = function() {
    return this.each(function() {
        var type = this.type, tag = this.tagName.toLowerCase();
        if (tag == 'form')
            return $(':input', this).clearForm();
        if (type == 'text' || type == 'password' || tag == 'textarea')
            this.value = '';
        else if (type == 'checkbox' || type == 'radio')
            this.checked = false;
        else if (tag == 'select')
            this.selectedIndex = -1;
    });
};

//Contador de caracteres
$.fn.contadorCaracteres = function() {
    $(this).each(function() {
        var max = $(this).attr('maxlength');
        var val = $(this).attr('value');
        var cur = 0;
        if (val)
            cur = val.length;
        var left = max - cur;
        $(this).after("<div class='counter'>" + left.toString() + "</div>");
        var c = $(this).next(".counter");
        c.width(30);
        c.css("position", "relative");
        //	        c.css("top", -$(this).height() + 51);
        //	        c.css("left", $(this).width() + 5);
        c.css("margin-left", "382px");

        if (BrowserDetect.browser == "Firefox")
            c.css("margin-left", "388px");
        c.css("background", "#009ADA");
        c.css("color", "#FFF");
        $(this).keyup(function(i) {
            var max = $(this).attr('maxlength');
            var val = $(this).attr('value');
            var cur = 0;
            if (val)
                cur = val.length;
            var left = max - cur;
            if (left < 1)
                left = 0;
            $(this).next(".counter").text(left.toString());
            return this;
        });
    });
    return this;
}


//INÍCIO - Watermark (campos de texto com texto como marca d'água)

	/* Version: Beta 1 */
	var map = new Array();
	$.Watermark = {
		ShowAll: function() {
			for (var i = 0; i < map.length; i++)
			{
				if (map[i].obj.val() == "")
				{
					map[i].obj.val(map[i].text);
					map[i].obj.css("color", map[i].WatermarkColor);
				} else { map[i].obj.css("color", map[i].DefaultColor); }
			}
		},
		HideAll: function() {
			for (var i = 0; i < map.length; i++)
			{
				if (map[i].obj.val() == map[i].text) map[i].obj.val("");
			}
		}
	}
	$.fn.Watermark = function(text, color) {
		if (!color)
			color = "#aaa";
		return this.each(
			function() {
				var input = $(this);
				var defaultColor = input.css("color");
				map[map.length] = { text: text, obj: input, DefaultColor: defaultColor, WatermarkColor: color };
				function clearMessage() {
					if (input.val() == text)
						input.val("");
					input.css("color", defaultColor);
				}
				function insertMessage() {
					if (input.val().length == 0 || input.val() == text)
					{
						input.val(text);
						input.css("color", color);
					} else
						input.css("color", defaultColor);
				}
				input.focus(clearMessage);
				input.blur(insertMessage);
				input.change(insertMessage);
				insertMessage();
			}
		);
	}



//INÍCIO - TextLimit(Limitador de caracteres)
$.fn.textlimit = function(counter_el, thelimit, speed) {
    //Example: jQuery("Textarea").textlimit('span.counter', 256)
    //$Version: 2007.10.24 +r1
    var charDelSpeed = speed || 15;
    var toggleCharDel = speed != -1;
    var toggleTrim = true;
    var that = this[0];
    updateCounter();
    function updateCounter() {
        jQuery(counter_el).text(thelimit - that.value.length);
    };
    this.keypress(function(e) { if (this.value.length >= thelimit && e.charCode != '0') e.preventDefault() })
	.keyup(function(e) {
	    updateCounter();
	    if (this.value.length >= thelimit && toggleTrim)
	    {
	        if (toggleCharDel)
	        {
	            that.value = that.value.substr(0, thelimit + 100);
	            var init = setInterval(
						function() {
						    if (that.value.length <= thelimit) { init = clearInterval(init); updateCounter() }
						    else { that.value = that.value.substring(0, that.value.length - 1); jQuery(counter_el).text('trimming...  ' + (thelimit - that.value.length)); };
						}, charDelSpeed
					);
	        }
	        else this.value = that.value.substr(0, thelimit);
	    }
	});
};


//INÍCIO - EnableCheckboxRangeSelection (Selecionar intervalo de checkboxes com o shift apertado)

    $.fn.enableCheckboxRangeSelection = function() {
        var lastCheckbox = null;
        var $spec = this;
        $spec.bind("click", function(e) {
            if (lastCheckbox != null && e.shiftKey)
            {
                $spec.slice(
          Math.min($spec.index(lastCheckbox), $spec.index(e.target)),
          Math.max($spec.index(lastCheckbox), $spec.index(e.target)) + 1
        ).attr({ checked: e.target.checked ? "checked" : "" });
            }
            lastCheckbox = e.target;
        });
        return $spec;
    };


    //MASKMONEY
    //Máscara de moedas
    $.fn.maskMoney = function(settings) {
        settings = $.extend({
            symbol: "US$",
            decimal: ".",
            precision: 2,
            thousands: ",",
            showSymbol: true
        }, settings);
        settings.symbol = settings.symbol + " ";
        return this.each(function() {
            var input = $(this);
            function money(e) {
                e = e || window.event;
                var k = e.charCode || e.keyCode || e.which;
                if (k == 8)
                { // tecla backspace
                    preventDefault(e);
                    var x = input.val().substring(0, input.val().length - 1);
                    input.val(maskValue(x));
                    return false;
                } else if (k == 9)
                { // tecla tab
                    return true;
                }
                if (k < 48 || k > 57)
                {
                    preventDefault(e);
                    return true;
                }
                var key = String.fromCharCode(k);  // Valor para o código da Chave
                preventDefault(e);
                input.val(maskValue(input.val() + key));
            }
            function preventDefault(e) {
                if (e.preventDefault)
                { //standard browsers
                    e.preventDefault()
                } else
                { // internet explorer
                    e.returnValue = false
                }
            }
            function maskValue(v) {
                v = v.replace(settings.symbol, "");
                var a = '';
                var strCheck = '0123456789';
                var len = v.length;
                var t = "";
                if (len == 0)
                {
                    t = "0.00";
                }
                for (var i = 0; i < len; i++)
                    if ((v.charAt(i) != '0') && (v.charAt(i) != settings.decimal))
                    break;

                for (; i < len; i++)
                {
                    if (strCheck.indexOf(v.charAt(i)) != -1) a += v.charAt(i);
                }
                var n = parseFloat(a);
                n = isNaN(n) ? 0 : n / Math.pow(10, settings.precision);
                t = n.toFixed(settings.precision);
                var p, d = (t = t.split("."))[1].substr(0, settings.precision);
                for (p = (t = t[0]).length; (p -= 3) >= 1; )
                {
                    t = t.substr(0, p) + settings.thousands + t.substr(p);
                }
                return setSymbol(t + settings.decimal + d + Array(
					(settings.precision + 1) - d.length).join(0));
            }
            function focusEvent() {
                if (input.val() == "")
                {
                    input.val(setSymbol(getDefaultMask()));
                } else
                {
                    input.val(setSymbol(input.val()));
                }
            }
            function blurEvent() {
                if (input.val() == setSymbol(getDefaultMask()))
                {
                    input.val("");
                } else
                {
                    input.val(input.val().replace(settings.symbol, ""))
                }
            }
            function getDefaultMask() {
                var n = parseFloat("0") / Math.pow(10, settings.precision);
                return (n.toFixed(settings.precision)).replace(
					new RegExp("\\.", "g"), settings.decimal);
            }

            function setSymbol(v) {
                if (settings.showSymbol)
                {
                    return settings.symbol + v;
                }
                return v;
            }
            input.bind("keypress", money);
            input.bind("blur", blurEvent);
            input.bind("focus", focusEvent);
            input.one("unmaskMoney", function() {
                input.unbind("focus", focusEvent);
                input.unbind("blur", blurEvent);
                input.unbind("keypress", money);
                if ($.browser.msie)
                    this.onpaste = null;
                else if ($.browser.mozilla)
                    this.removeEventListener('input', blurEvent, false);
            });
        });
    }
    //Retira a máscara de moeda
    $.fn.unmaskMoney = function() {
        return this.trigger("unmaskMoney");
    };

    //Pega parâmetro de QueryString - getUrlParam
    jQuery.fn.extend({
        /**
        * $(document).getUrlParam("paramName");
        * To get the params of a html-attribut (uses src attribute)
        * @example value = $('#imgLink').getUrlParam("paramName");
        */
        getUrlParam: function(strParamName) {
            strParamName = escape(unescape(strParamName));
            var returnVal = new Array();
            var qString = null;
            if ($(this).attr("nodeName") == "#document")
            {
                if (window.location.search.search(strParamName) > -1)
                {
                    qString = window.location.search.substr(1, window.location.search.length).split("&");
                }
            } else if ($(this).attr("src") != "undefined")
            {
                var strHref = $(this).attr("src")
                if (strHref.indexOf("?") > -1)
                {
                    var strQueryString = strHref.substr(strHref.indexOf("?") + 1);
                    qString = strQueryString.split("&");
                }
            } else if ($(this).attr("href") != "undefined")
            {
                var strHref = $(this).attr("href")
                if (strHref.indexOf("?") > -1)
                {
                    var strQueryString = strHref.substr(strHref.indexOf("?") + 1);
                    qString = strQueryString.split("&");
                }
            } else { return null; }

            if (qString == null) return null;
            for (var i = 0; i < qString.length; i++)
            {
                if (escape(unescape(qString[i].split("=")[0])) == strParamName) { returnVal.push(qString[i].split("=")[1]); }
            }
            if (returnVal.length == 0) return null;
            else if (returnVal.length == 1) return returnVal[0];
            else return returnVal;
        }
    });
    //Fim getUrlParam


    //Função TRIM
    function Trim(str) {
        return str.replace(/^\s+|\s+$/g, "");
    }    
