﻿function mascara(o, f) {
    v_obj = o;
    v_fun = f;
    setTimeout("execmascara()", 1);
}

function execmascara() {    
    v_obj.value = v_fun(v_obj.value);
}

function telefone(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    return v;
    /*v = v.replace(/^(\d\d)(\d)/g, "($1) $2");  //Coloca parênteses em volta dos dois primeiros dígitos
    v = v.replace(/(\d{4})(\d)/, "$1-$2");  //Coloca hífen entre o quarto e o quinto dígitos*/
    
}

function campo_telefone(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    return v;
    /*v = v.replace(/(\d{2})(\d)/, "$1-$2");        //Coloca um traco entre o 2 e o 3 dígitos
    v = v.replace(/(\d{4})(\d)/, "$1-$2");        //Coloca um traco entre o 6 e o 7 dígitos
    v = v.replace(/(\d{4})(\d)/, "$1");        //Copia 4 digitos e deleta o restante*/
    
}

function campo_telefone_us(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    return v;
    /*v = v.replace(/(\d{2})(\d)/, "$1-$2");        //Coloca um traco entre o 2 e o 3 dígitos
    v = v.replace(/(\d{2})(\d)/, "$1-$2");        //Coloca um traco entre o 5 e o 6 dígitos
    v = v.replace(/(\d{4})(\d)/, "$1-$2");        //Coloca um traco entre o 10 e o 11 dígitos
    v = v.replace(/(\d{4})(\d)/, "$1");        //Copia 4 digitos e deleta o restante*/
    
}

function campo_cep(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    v = v.replace(/(\d{5})(\d)/, "$1-$2");         //Coloca um traco entre o 5 e o 6 dígitos
    //v = v.replace(/(\d{3})(\d)/, "$1");         //Copia 3 digitos e deleta o restante
    return v;
}

function campo_ie(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    return v;
}

function campo_numerico(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    return v;
}


function campo_data(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    v = v.replace(/(\d{2})(\d)/, "$1/$2");        //Coloca uma barra entre o 2 e o 3 dígitos
    v = v.replace(/(\d{2})(\d)/, "$1/$2");        //Coloca uma barra entre o 4 e o 5 dígitos
    return v;
}

function campo_id(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    return v;
}

function campo_cvm(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    return v;
}

function rg(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    v = v.replace(/(\d{2})(\d)/, "$1.$2");        //Coloca um ponto entre o 2 e o 3 dígitos
    v = v.replace(/(\d{3})(\d)/, "$1.$2");        //Coloca um ponto entre o 5 e o 6 dígitos
    v = v.replace(/(\d{3})(\d{1,2})$/, "$1-$2");        //Coloca um traco entre o 8 e o 9 dígitos
    return v;
}

function voto(v) {
    v = v.replace(/\D/g, "");  //Remove tudo o que não é dígito
    v = v.replace(/(\d{2})(\d)/, "$1.$2");        //Coloca um ponto entre o 2 e o 3 dígitos    
    return v;
}

function viewBox(id) {
    var elm = document.getElementById(id);
    if (elm != null)
        elm.className = elm.className == "show" ? "hidden" : "show";
}

function KeyDownHandler(btn) {
    if (event.keyCode == 13) {
        event.returnValue = false;
        event.cancel = true;
        btn.click();
    }
}

function PasswordSizeCustomValidate(oSrc, args) {
    if (args.Value.length <= 8)
        args.IsValid = false;
    else
        args.isValid = true;
}

function formataCPF(campo, evt) {
    //999.999.999-99 
    evt = getEvent(evt);
    var tecla = getKeyCode(evt);
    if (!teclaValida(tecla))
        return;
    vr = campo.value = filtraNumeros(filtraCampo(campo));
    tam = vr.length;
    if (tam <= 2) {
        campo.value = vr;
    }
    if (tam > 2 && tam <= 5) {
        campo.value = vr.substr(0, tam - 2) + '-' + vr.substr(tam - 2, tam);
    }
    if (tam >= 6 && tam <= 8) {
        campo.value = vr.substr(0, tam - 5) + '.' + vr.substr(tam - 5, 3) + '-' + vr.substr(tam - 2, tam);
    }
    if (tam >= 9 && tam <= 11) {
        campo.value = vr.substr(0, tam - 8) + '.' + vr.substr(tam - 8, 3) + '.' + vr.substr(tam - 5, 3) + '-' + vr.substr(tam - 2, tam);
    }
}

function cpf(v) {
    v = v.replace(/\D/g, "");                     //Remove tudo o que não é dígito
    v = v.replace(/(\d{3})(\d)/, "$1.$2");        //Coloca um ponto entre o terceiro e o quarto dígitos
    v = v.replace(/(\d{3})(\d)/, "$1.$2");        //Coloca um ponto entre o terceiro e o quarto dígitos
    //de novo (para o segundo bloco de números)
    v = v.replace(/(\d{3})(\d{1,2})$/, "$1-$2");  //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cnpj(v) {

    v = v.replace(/\D/g, "")
    v = v.replace(/^(\d{2})(\d)/, "$1.$2")
    v = v.replace(/^(\d{2})\.(\d{3})(\d)/, "$1.$2.$3")
    v = v.replace(/\.(\d{3})(\d)/, ".$1/$2")
    v = v.replace(/(\d{4})(\d)/, "$1-$2")
    return v

}

function formatar_mascara(src, mascara) {
    var campo = src.value.length;
    var saida = mascara.substring(0, 1);
    var texto = mascara.substring(campo);
    if (texto.substring(0, 1) != saida) {
        src.value += texto.substring(0, 1);
    }
}

//============================================ //


Function.prototype.bind = function(context) {
    var closure = this; var tmp_fnc = function() { return closure.apply(context, arguments); }
    return tmp_fnc;
}

Object.prototype.merge = function(object) { for (attr in object) { this[attr] = object[attr]; } }

document.navigators = { settings: { interval: 100, helper: true, iframe_src: "/control.htm" }, initialize: function() { this.is_ie = (navigator.userAgent.toLowerCase().indexOf("msie") > -1) ? true : false; if (this.is_ie) { this.settings.iframe_src = this.settings.iframe_src.replace(/(\?|#).*$/, ""); window.attachEvent("onload", (function() { this.iframe = document.createElement("iframe"); this.iframe.setAttribute("src", this.settings.iframe_src); this.iframe.style.display = "none"; document.getElementsByTagName("body")[0].appendChild(this.iframe); }).bind(this)); } else { this.running = true; } }, helper: function(data, force) {
    var navs = document.navigators; var data = "[" + this.id + "]" + data; if (force) { navs.data_buffer = ""; }
    if (navs.is_ie) { navs.iframe.src = navs.settings.iframe_src + "?id=" + data; }
    else { window.location.hash = "#" + data; }
}, called: false, history: [], data_buffer: ""
}; function onnavigate(id, callback) {
    var navs = document.navigators; navs[id] = {}; if (!navs.running) { navs.initialize(); }
    setInterval(function() { if (navs.running) { var url = window.location.href; var hash = window.location.hash.replace(/#/, ""); var theid = "#[" + id + "]"; if (url.indexOf(theid) > -1) { var data = url.split(theid)[1] || ""; var new_data = theid + data; if (navs.data_buffer != new_data) { callback(data); navs.called = true; navs.history.push(new_data); navs.data_buffer = new_data; } } else if (!hash && navs.called) { navs.running = false; window.location = ((url.indexOf("#") > -1) ? url.split("#")[0] : url) + "#"; window.location.reload(); } } }, navs.settings.interval); navs[id].merge({ callback: callback }); if (navs.settings.helper) { navs[id].helper = navs.helper.bind({ id: id }); return navs[id].helper; }
}

var popContainer = null; var popOverlay = null; var popContent = null; var popCurrent = null; var PopObject = function(object) {
    this.properties = object; if (typeof (this.properties.events.onComplete) != 'undefined') { this.onCompleteMethod = this.properties.events.onComplete.method; this.onCompleteArgs = this.properties.events.onComplete.args; if (!(this.onCompleteArgs instanceof Array)) { this.onCompleteArgs = [this.onCompleteArgs]; } }
    if (this.properties.events.onClose != null && typeof (this.properties.events.onClose.method) != 'undefined') { this.onCloseMethod = this.properties.events.onClose.method; if (typeof (this.properties.events.onClose.args) != 'undefined') { this.onCloseArgs = this.properties.events.onClose.args; if (!(this.onCloseArgs instanceof Array)) { this.onCloseArgs = [this.onCloseArgs]; } } }
}


PopObject.prototype = { 'properties': null, 'onCompleteMethod': null, 'onCompleteArgs': null, 'onCloseMethod': null, 'onCloseArgs': null, 'start': function() { popContainer = $('pop_container'); popOverlay = $('pop_overlay'); popContent = $('pop_content'); }, 'getParent': function() {
    if (typeof (this.properties.parent) == 'undefined' || this.properties.parent == null) { return null; }
    return this.properties.parent;
}, 'configureEvents': function() {
    if (this.getParent() != null) {
        if (this.onCompleteMethod == null) { this.onCompleteMethod = this.getParent().onCompleteMethod; this.onCompleteArgs = this.getParent().onCompleteArgs; }
        if (this.onCloseMethod == null) { this.onCloseMethod = this.getParent().onCloseMethod; this.onCloseArgs = this.getParent().onCloseArgs; }
    }
}, 'open': function(useHistory) {
    this.start(); this.configureEvents(); Pop.setOverlay(); var ajaxHandle; if (useHistory) { ajaxHandle = SendDataByAjaxRunTemplateHistory; } else { ajaxHandle = SendDataByAjaxRunTemplate; }
    try { ajaxHandle(this.properties.tpl, this.properties.params, { 'callback': Pop.setPopContent, 'extra_data': [this.properties.className] }); } catch (e) { alert(e); }
}, 'complete': function(auxParam) {
    if (!(this.onCompleteArgs instanceof Array)) { this.onCompleteArgs = [this.onCompleteArgs]; }
    this.onCompleteArgs.push(auxParam); this.onCompleteMethod.apply(this, this.onCompleteArgs);
}, 'close': function() {
    if (this.onCloseMethod != null) { this.onCloseMethod.apply(this, [this.onCloseArgs]); return; }
    if (typeof (this.destroy) != 'undefined') { this.destroy(); }
    if (typeof (this.getParent) != 'undefined' && this.getParent() != null) { this.getParent().open(); return; }
    Pop.close();
}, 'destroy': function() {
    var parent = null; if (typeof (this.getParent) != 'undefined') { parent = this.getParent(); }
    if (parent != null) { parent['properties'].childs[this.properties.name] = null; popCurrent = parent; return; }
    popCurrent = null; return;
}
}



var Pop = { 'open': function(name, tpl, params, className, events, useHistory, eventHandle) {
    var popInfo = { 'eventHandle': eventHandle, 'className': className, 'events': events, 'params': params, 'name': name, 'tpl': tpl, 'childs': [], 'parent': null }; if (typeof (useHistory) == 'undefined') { useHistory = false; }
    var popObject = new PopObject(popInfo); if (popCurrent != null) { popObject['properties'].parent = popCurrent; popCurrent['properties'].childs[popObject['properties'].name] = popObject; }
    popCurrent = popObject; popCurrent.open(useHistory); return true;
}, 'setLoader': function() { popContent.addClassName('unvisible'); popContent.addClassName('loading'); Pop.alignCenter(); popContent.removeClassName('unvisible'); }, 'setLoaded': function() { popContent.addClassName('unvisible'); popContent.removeClassName('loading'); Pop.alignCenter(); if (popCurrent != null) { popContent.removeClassName('unvisible'); } }, 'setOverlay': function() {
    if (popOverlay.getStyle('display') != 'none') { return true; }
    hideActiveX(); var bodyDimensions = $$('body')[0].getDimensions(); var viewPortDimensions = document.viewport.getDimensions(); var height = bodyDimensions.height; if (bodyDimensions.height < viewPortDimensions.height) { height = viewPortDimensions.height; }
    popOverlay.setStyle({ 'width': bodyDimensions.width + 'px', 'height': height + 'px', 'display': 'block', 'opacity': 0.7 });
}, 'setPopContent': function(content, className) {
    if (!content) { return false; }
    if ($('tmpContent') != null) { $('tmpContent').remove(); }
    popContent.removeAttribute('style'); var tmpContent = document.createElement('div'); tmpContent.id = 'tmpContent'; tmpContent.className = 'clearfix'; tmpContent.innerHTML = content; popContent.appendChild(tmpContent); try { if (tmpContent.innerHTML != content) { $('tmpContent').update(content); tmpContent.innerHTML.evalScripts(); } } catch (e) { }
    if (className != '') { popContent.className = className; }
    Pop.setOverlay(); popContainer.show(); if (popCurrent.properties.eventHandle == null) { Pop.alignCenter(); } else { Pop.alignTo(popCurrent.properties.eventHandle); }
    Event.observe(popOverlay, 'click', Pop.close.bindAsEventListener(this)); Event.observe(window, 'resize', Pop.alignCenter.bindAsEventListener(this));
}, 'alignTo': function(eventHandle) { popContent.absolutize(); var style = { 'top': eventHandle.pointerY() + 'px', 'left': eventHandle.pointerX() + 'px', 'backgroundColor': 'white' }; popContent.setStyle(style); popContent.setStyle({ 'visibility': 'visible' }); }, 'alignCenter': function() {
    popContent.absolutize(); var height = popContent.getHeight(); var width = popContent.getWidth(); var halfHeight = height / 2; var halfWidth = width / 2; var marginTop = '-' + halfHeight + 'px'; var marginLeft = '-' + halfWidth + 'px'; var body = $$('body')[0]; var viewport = document.viewport; var top = 0; var left = '50%'; if (height > viewport.getHeight()) { marginTop = 0; top = 20 + viewport.getScrollOffsets()[1] + 'px'; } else { top = viewport.getScrollOffsets()[1] + ((viewport.getHeight() - height) / 2) + 'px'; }
    if (body.getHeight() < viewport.getHeight()) { popOverlay.setStyle({ 'height': viewport.getHeight() + 'px' }); } else { popOverlay.setStyle({ 'height': body.getHeight() + 'px' }); }
    popOverlay.setStyle({ 'width': body.getWidth() + 'px' }); if (height + viewport.getHeight() > parseInt(popOverlay.getStyle('height'))) { popOverlay.setStyle({ 'height': height + viewport.getHeight() + 'px' }); }
    var style = { 'top': top, 'left': left, 'marginLeft': marginLeft }; popContent.setStyle(style); popContent.setStyle({ 'visibility': 'visible' });
}, 'close': function(event) {
    if ($('tmpContent') != null) { $('tmpContent').remove(); }
    popContent.removeAttribute('style'); popContainer.hide(); popOverlay.hide(); popCurrent = null; document.location.hash = '#[close]'; document.navigators.called = false; document.navigators.history = []; document.navigators.data_buffer = ""; delete (document.navigators['conteudo']); showActiveX();
}
};

objPageParams = null
objPageParams = null
function test() { alert('ra'); }


function md5(str) {
    var RotateLeft = function(lValue, iShiftBits) { return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); }; var AddUnsigned = function(lX, lY) {
        var lX4, lY4, lX8, lY8, lResult; lX8 = (lX & 0x80000000); lY8 = (lY & 0x80000000); lX4 = (lX & 0x40000000); lY4 = (lY & 0x40000000); lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); if (lX4 & lY4) { return (lResult ^ 0x80000000 ^ lX8 ^ lY8); }
        if (lX4 | lY4) { if (lResult & 0x40000000) { return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); } else { return (lResult ^ 0x40000000 ^ lX8 ^ lY8); } } else { return (lResult ^ lX8 ^ lY8); }
    }; var F = function(x, y, z) { return (x & y) | ((~x) & z); }; var G = function(x, y, z) { return (x & z) | (y & (~z)); }; var H = function(x, y, z) { return (x ^ y ^ z); }; var I = function(x, y, z) { return (y ^ (x | (~z))); }; var FF = function(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; var GG = function(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; var HH = function(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; var II = function(a, b, c, d, x, s, ac) { a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; var ConvertToWordArray = function(str) {
        var lWordCount; var lMessageLength = str.length; var lNumberOfWords_temp1 = lMessageLength + 8; var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64; var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16; var lWordArray = Array(lNumberOfWords - 1); var lBytePosition = 0; var lByteCount = 0; while (lByteCount < lMessageLength) { lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount) << lBytePosition)); lByteCount++; }
        lWordCount = (lByteCount - (lByteCount % 4)) / 4; lBytePosition = (lByteCount % 4) * 8; lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); lWordArray[lNumberOfWords - 2] = lMessageLength << 3; lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; return lWordArray;
    }; var WordToHex = function(lValue) {
        var WordToHexValue = "", WordToHexValue_temp = "", lByte, lCount; for (lCount = 0; lCount <= 3; lCount++) { lByte = (lValue >>> (lCount * 8)) & 255; WordToHexValue_temp = "0" + lByte.toString(16); WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2); }
        return WordToHexValue;
    }; var x = Array(); var k, AA, BB, CC, DD, a, b, c, d; var S11 = 7, S12 = 12, S13 = 17, S14 = 22; var S21 = 5, S22 = 9, S23 = 14, S24 = 20; var S31 = 4, S32 = 11, S33 = 16, S34 = 23; var S41 = 6, S42 = 10, S43 = 15, S44 = 21; str = utf8_encode(str); x = ConvertToWordArray(str); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k = 0; k < x.length; k += 16) { AA = a; BB = b; CC = c; DD = d; a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478); d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756); c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB); b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE); a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF); d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A); c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613); b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501); a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8); d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF); c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1); b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE); a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122); d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193); c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E); b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821); a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562); d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340); c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51); b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA); a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D); d = GG(d, a, b, c, x[k + 10], S22, 0x2441453); c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681); b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8); a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6); d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6); c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87); b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED); a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905); d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8); c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9); b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A); a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942); d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681); c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122); b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C); a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44); d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9); c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60); b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70); a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6); d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA); c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085); b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05); a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039); d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5); c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8); b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665); a = II(a, b, c, d, x[k + 0], S41, 0xF4292244); d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97); c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7); b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039); a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3); d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92); c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D); b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1); a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F); d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0); c = II(c, d, a, b, x[k + 6], S43, 0xA3014314); b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1); a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82); d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235); c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB); b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391); a = AddUnsigned(a, AA); b = AddUnsigned(b, BB); c = AddUnsigned(c, CC); d = AddUnsigned(d, DD); }
    var temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d); return temp.toLowerCase();
}

function utf8_encode(str_data) {
    if (!str_data) { return ''; }
    str_data = str_data.replace(/\r\n/g, "\n"); var tmp_arr = [], ac = 0; for (var n = 0; n < str_data.length; n++) { var c = str_data.charCodeAt(n); if (c < 128) { tmp_arr[ac++] = String.fromCharCode(c); } else if ((c > 127) && (c < 2048)) { tmp_arr[ac++] = String.fromCharCode((c >> 6) | 192); tmp_arr[ac++] = String.fromCharCode((c & 63) | 128); } else { tmp_arr[ac++] = String.fromCharCode((c >> 12) | 224); tmp_arr[ac++] = String.fromCharCode(((c >> 6) & 63) | 128); tmp_arr[ac++] = String.fromCharCode((c & 63) | 128); } }
    return tmp_arr.join('');
}

function utf8_decode(str_data) {
    var tmp_arr = [], i = ac = c = c1 = c2 = 0; while (i < str_data.length) { c = str_data.charCodeAt(i); if (c < 128) { tmp_arr[ac++] = String.fromCharCode(c); i++; } else if ((c > 191) && (c < 224)) { c2 = str_data.charCodeAt(i + 1); tmp_arr[ac++] = String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = str_data.charCodeAt(i + 1); c3 = str_data.charCodeAt(i + 2); tmp_arr[ac++] = String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } }
    return tmp_arr.join('');
}

function base64_encode(data) {
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = ac = 0, enc = "", tmp_arr = []; data = utf8_encode(data); do { o1 = data.charCodeAt(i++); o2 = data.charCodeAt(i++); o3 = data.charCodeAt(i++); bits = o1 << 16 | o2 << 8 | o3; h1 = bits >> 18 & 0x3f; h2 = bits >> 12 & 0x3f; h3 = bits >> 6 & 0x3f; h4 = bits & 0x3f; tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); } while (i < data.length); enc = tmp_arr.join(''); switch (data.length % 3) { case 1: enc = enc.slice(0, -2) + '=='; break; case 2: enc = enc.slice(0, -1) + '='; break; }
    return enc;
}

function base64_decode(data) { var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = ac = 0, dec = "", tmp_arr = []; do { h1 = b64.indexOf(data.charAt(i++)); h2 = b64.indexOf(data.charAt(i++)); h3 = b64.indexOf(data.charAt(i++)); h4 = b64.indexOf(data.charAt(i++)); bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; o1 = bits >> 16 & 0xff; o2 = bits >> 8 & 0xff; o3 = bits & 0xff; if (h3 == 64) { tmp_arr[ac++] = String.fromCharCode(o1); } else if (h4 == 64) { tmp_arr[ac++] = String.fromCharCode(o1, o2); } else { tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); } } while (i < data.length); dec = tmp_arr.join(''); dec = utf8_decode(dec); return dec; }
function encodeUser(num) { return num * 1427327; }
function create_request_string(formName) {
    theForm = eval('document.' + formName)
    var reqStr = ""; for (i = 0; i < theForm.elements.length; i++) {
        isFormObject = false; switch (theForm.elements[i].tagName) {
            case "INPUT": switch (theForm.elements[i].type) {
                    case "text": case "password": case "hidden": reqStr += theForm.elements[i].name + "=" + encodeURIComponent(theForm.elements[i].value); isFormObject = true; break; case "checkbox": if (theForm.elements[i].checked)
                        { reqStr += theForm.elements[i].name + "=" + theForm.elements[i].value; } else { reqStr += theForm.elements[i].name + "="; }
                        isFormObject = true; break; case "radio": if (theForm.elements[i].checked)
                        { reqStr += theForm.elements[i].name + "=" + theForm.elements[i].value; isFormObject = true; }
                }
                break; case "TEXTAREA": reqStr += theForm.elements[i].name + "=" + encodeURIComponent(theForm.elements[i].value); isFormObject = true; break; case "SELECT": var sel = theForm.elements[i]; for (var z = 0; z < sel.options.length; z++) {
                    if (sel.options[z].selected)
                    { reqStr += sel.name + "=" + sel.options[z].value; isFormObject = true; reqStr += "&"; }
                }
                break;
        }
        if ((isFormObject) && ((i + 1) != theForm.elements.length))
        { reqStr += "&"; }
    }
    return reqStr;
}


function createHiddenField(formName, name, value) {
    var form = eval('document.' + formName)
    input = document.createElement("input"); input.type = "hidden"; input.name = name; input.id = name; input.value = value; form.appendChild(input);
}
function ExecuteAction(formName, urlPhp, className, MethodName) {
    form = eval('document.' + formName)
    form.action = urlPhp
    if (className != '')
        createHiddenField(formName, 'mdl', className)
    if (MethodName != '')
        createHiddenField(formName, 'cmd', MethodName)
    form.submit()
}

function TestInputText(formularioAux, campoAux, msgErroAux) {
    formElement = 'document.' + formularioAux + '.' + campoAux + '.value'; formElementExist = eval('document.' + formularioAux + '.' + campoAux)
    if (formElementExist)
        value = eval(formElement)
    if (value != '')
    { return ''; }
    else
    { return msgErroAux + '\n'; }
}

function valueInputSelect(formularioAux, campoAux) {
    formElement = 'document.' + formularioAux + '.' + campoAux + '[document.' + formularioAux + '.' + campoAux + '.selectedIndex].value'
    formElementExist = eval('document.' + formularioAux + '.' + campoAux)
    if (formElementExist) { value = eval(formElement); } else { value = '' }
    if (value != '')
    { return value; }
    else
    { return -1; }
}

function valueInputRadio(formularioAux, campoAux) {
    formElement = 'document.' + formularioAux + '.' + campoAux; buttonGroup = eval(formElement); ind = -1
    value = ''; if (buttonGroup[0]) {
        for (var i = 0; i < buttonGroup.length; i++) {
            if (buttonGroup[i].checked)
            { ind = i }
        }
    }
    else
    { if (buttonGroup.checked) { ind = 0; } }
    if (ind == -1)
    { return ""; }
    else {
        if (buttonGroup[ind])
        { value = buttonGroup[ind].value; }
        else
        { value = buttonGroup.value; }
    }
    return value;
}

function checkValueInputRadio(formularioAux, campoAux, value) {
    form = 'document.' + formularioAux
    formObject = eval(form)
    if (formObject) {
        formElement = 'document.' + formularioAux + '.' + campoAux; buttonGroup = eval(formElement); ind = -1
        if (buttonGroup[0]) {
            for (var i = 0; i < buttonGroup.length; i++) {
                if (buttonGroup[i].value == value)
                { buttonGroup[i].checked = true }
            }
        }
    }
}
function valueInputText(formularioAux, campoAux) {
    formElement = 'document.' + formularioAux + '.' + campoAux + '.value'; formElementExist = eval('document.' + formularioAux + '.' + campoAux)
    if (formElementExist) {
        value = eval(formElement)
        return value;
    }
    else
    { return '' }
}
function existInput(formName, input) {
    formElement = 'document.' + formName + '.' + input; formElementExist = eval(formElement)
    if (formElementExist)
    { return true; }
    else
    { return false; }
}
function setValueInputText(formAux, inputAux, valueAux)
{ formElement = eval('document.' + formAux + '.' + inputAux); formElement.value = valueAux; }
function setValueInputHidden(formAux, inputAux, valueAux)
{ formElement = eval('document.' + formAux + '.' + inputAux); formElement.value = valueAux; }
function valueInputHidden(formularioAux, campoAux)
{ formElement = 'document.' + formularioAux + '.' + campoAux + '.value'; value = eval(formElement); return value; }
function valueInputCheck(formularioAux, campoAux) {
    formElement = 'document.' + formularioAux + '.' + campoAux + '.checked'
    value = eval(formElement); return value;
}
function verifyInputCheck(formularioAux, inputName) {
    form = eval('document.' + formularioAux); ind = -1
    value = ''; for (var i = 0; i < form.length; i++) {
        if (form.elements[i].name == inputName) {
            if (form.elements[i].checked)
            { ind = i }
        }
    }
    if (ind == -1)
    { return false; }
    else
    { return true; }
}
function TestInputCheck(formularioAux, campoAux, msgErroAux) {
    formElement = 'document.' + formularioAux + '.' + campoAux + '.checked'
    value = eval(formElement); if (value)
    { return ''; }
    else
    { return msgErroAux + '\n'; }
}
function TestInputRadio(formularioAux, campoAux, msgErroAux) {
    value = valueInputRadio(formularioAux, campoAux)
    if (value)
    { return ''; }
    else
    { return msgErroAux + '\n'; }
}
function TestInputSelect(formularioAux, campoAux, msgErroAux) {
    formElement = 'document.' + formularioAux + '.' + campoAux + '[document.' + formularioAux + '.' + campoAux + '.selectedIndex].value'
    formElementExist = eval('document.' + formularioAux + '.' + campoAux)
    if (formElementExist) { value = eval(formElement); } else { value = '' }
    if (value != '')
    { return ''; }
    else
    { return msgErroAux + '\n'; }
}
function TestInputSelectMultiple(formularioAux, campoAux, msgErroAux) {
    tamanhoSelect = eval('document.' + formularioAux + '.' + campoAux + ' .length')
    value = false
    for (i = 0; i < tamanhoSelect; i++) {
        if (!value)
        { value = eval('document.' + formularioAux + '.ddCidade.options[' + i + '].selected') }
    }
    if (value)
    { return ''; }
    else
    { return msgErroAux + '\n'; }
}
function AbrePop(a, X, Y)
{ janela2 = window.open(a, 'pop', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=' + X + ',height=' + Y + ',top=0,left=0,maximized'); }
function ExibeMensagem(Msg) {
    if (Msg == 1)
    { alert('E-mail inserido com sucesso'); }
    if (Msg == 2)
    { alert('E-mail editado com sucesso'); }
    if (Msg == 3)
    { alert('Ocorreu um erro ao tentar salvar o e-mail, por favor tente novamente caso o problema persiste entre em contato com nossa equipe de atendimento atravï¿½s do e-mail rodrigues@armazem7.com.br'); }
}
function scl()
{ setTimeout("scrollBy(0,100000);", 100); }
function SetCookie(cookieName, cookieValue, nDays) {
    var today = new Date(); var expire = new Date(); if (nDays == null)
        nDays = 1; expire.setTime(today.getTime() + 3600000 * 24 * nDays); if (nDays == 0)
        document.cookie = cookieName + "=" + escape(cookieValue) + "; path=/"; else
        document.cookie = cookieName + "=" + escape(cookieValue) + ";expires=" + expire.toGMTString() + "; path=/";
}
function GetCookie(c_name) {
    var c_start
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=")
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1
            c_end = document.cookie.indexOf(";", c_start)
            if (c_end == -1)
                c_end = document.cookie.length
            return unescape(document.cookie.substring(c_start, c_end))
        }
    }
    return 0;
}
function ShowHide(elementName) { if (document.getElementById(elementName).style.display == "none") { document.getElementById(elementName).style.display = "block"; } else { document.getElementById(elementName).style.display = "none"; } }
function DropDownSelectAllOptions(iDselect) {
    select = $(iDselect)
    for (i = 0; i < select.options.length; i++)
    { select.options[i].selected = true }
    ShowHide(divSelect)
    ShowHide(divUnselect)
}
function DropDownUnselectAllOptions(iDselect) {
    select = $(iDselect)
    for (i = 0; i < select.options.length; i++)
    { select.options[i].selected = false }
    ShowHide(divSelect)
    ShowHide(divUnselect)
}
function UserLogout(url)
{ SetCookie('UL', 0, 0); SetCookie('UC', 0, 0); if (url == '') { document.location.reload(); } else { document.location.href = url; } }
function LoginResult(UserCode) {
    if (UserCode) {
        SetLogin(UserCode)
        if (LoginRedirectURL != '')
            document.location.href = LoginRedirectURL
        else
            document.location.reload()
    }
    else {
        alert('O login ou senha informados não estão corretos')
        return false;
    }
}
function VerifyLogin(User, Pass, CallBack) {
    if (!User.length || !Pass.length) { return false; }
    User = VerifyLogin.arguments[0]; Pass = VerifyLogin.arguments[1]; SendDataByAjaxRunMethod('txEmail=' + User + '&pwPassword=' + Pass, 'User', 'UserVerify', CallBack); return true;
}
function VerifyLoginResult(AjaxResponse) { alert(AjaxResponse); }
function PopLoginResult(UserCode) {
    if (UserCode) {
        SetLogin(UserCode)
        if (LoginRedirectURL != '')
            document.location.href = LoginRedirectURL
        else
            document.location.reload()
    }
    else {
        data = 'URL=' + LoginRedirectURL + '&LoginErr=-1'
        SendDataByAjaxRunTemplate('User/Login', data, SetDivContent)
    }
}
function SetLogin(UserCode) {
    if (UserCode) {
        SetCookie('UL', UserCode, 0)
        SetCookie('UC', UserCode, 3600)
    }
}
function GetUserLogin() {
    userCode = GetCookie('UL')
    if (userCode > 0 && userCode != '')
        return true
    else
        return false
}
function RemoveItem(ID, mdl, cmd) {
    remove = confirm('Tem certeza que deseja apagar este registro?')
    if (remove)
    { SendDataByAjaxRunMethod('ID=' + ID, 'Message', 'RemoveMessage', RemoveItemReturn) }
}
function RemoveItemReturn(errCode) {
    if (errCode < 0)
    { alert('Ocorreu um erro ao apagar o registro. Reporte o ocorrido ao administrador do sistema atravÃ©s do email bug@metabolikey.com.br.') }
    else { document.location.reload() }
}
function UploadFile(type, theForm, uploadDiv, uploadField) {
    if (uploadField.value == '') { alert('Você precisa selecionar um arquivo'); return false; }
    fileName = uploadField.value
    extension = fileName.substring(fileName.length - 3, fileName.length)
    extension = extension.toLowerCase()
    if (type == 3) {
        if (extension != 'flv') {
            uploadField.value = ''
            alert('O video precisa estar no formato FLV')
            return false;
        }
    }
    else {
        if (extension != 'jpg' && extension != 'gif') {
            uploadField.value = ''; alert('A imagem precisa estar nos formatos JPG ou GIF')
            return false;
        }
    }
    theForm.hdUploadType.value = type; theForm.hdUploadFilePath.value = uploadField.value; micoxUpload(theForm, 'upload.php', uploadDiv, 'Carregando. Por favor aguarde...', ''); uploadField.value = ''
}
function retornaY(maisY) {
    var y1 = y2 = y3 = 0; if (document.documentElement) { y1 = document.documentElement.scrollTop || 0; }
    if (document.body) { y2 = document.body.scrollTop || 0; }
    y3 = window.scrollY || 0; var y = Math.max(y1, Math.max(y2, y3)) + maisY; return y;
}

function mostraLoader() { var loader = $("loadingClip"); Element.Methods.setStyle(loader, { 'position': 'absolute', 'display': 'block', 'top': document.viewport.getHeight() / 2 + (document.viewport.getScrollOffsets().top - 50) + 'px', 'left': '50%', 'marginLeft': '-' + (loader.getWidth() / 2) + 'px' }); }

function escondeLoader() { var loader = $("loadingClip"); Element.Methods.setStyle(loader, { 'display': 'none' }); }

function goToLink(pagina) { this.window.location(pagina); }

function showDiv(ID) { $(ID).style.display = "block"; }

function hideDiv(ID) { $(ID).style.display = "none"; }

function redimensionaFundo()
{ $('fundo_pop_carrinho').style.height = document.body.scrollHeight + "px"; $('fundo_pop_carrinho').style.width = document.body.scrollWidth + "px"; }
function redimensionaFundo2()
{ $('fundo_pop_carrinho2').style.height = document.body.scrollHeight + "px"; $('fundo_pop_carrinho2').style.width = document.body.scrollWidth + "px"; }

function ShowPOP(Template, Data, type) {
    Type = type
    SendDataByAjaxRunTemplate(Template, Data, SetPOPContent);
}

function SetPOPContent(content) {
    hideActiveX()
    SetDivContent(content)
}

function ClosePOP(Template) {
    showActiveX()
    name = TemplateNameToDivName(Template)
    $(name).innerHTML = '';
}

function CloseDiv(Template) {
    name = TemplateNameToDivName(Template)
    $(name).innerHTML = '';
}

function TemplateNameToJSName(templateName) {
    while (templateName.indexOf('/') != -1)
        templateName = templateName.replace('/', ''); return templateName.toLowerCase();
}

function CreateScript(scriptName) {
    elementName = TemplateNameToJSName('script')
    divId = TemplateNameToDivName(scriptName)
    var oScript = document.createElement(elementName); oScript.src = '/control/Slices/' + scriptName + '.js'; oScript.type = "text/javascript"; document.getElementsByTagName("head")[0].appendChild(oScript);
}

function FileExists(strURL)
{ oHttp = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); oHttp.open("GET", strURL, false); oHttp.send(); return oHttp.responseText.indexOf("404 - File not found") > 0 ? false : true; }
var ns4 = document.layers; var ns6 = document.getElementById && !document.all; var ie4 = document.all; offsetX = 0; offsetY = 20; var toolTipSTYLE = ""; function initToolTips() {
    if (ns4 || ns6 || ie4) {
        if (ns4) toolTipSTYLE = document.toolTipLayer; else if (ns6) toolTipSTYLE = document.getElementById("toolTipLayer").style; else if (ie4) toolTipSTYLE = document.all.toolTipLayer.style; if (ns4) document.captureEvents(Event.MOUSEMOVE); else
        { toolTipSTYLE.visibility = "visible"; toolTipSTYLE.display = "none"; }
        document.onmousemove = moveToMouseLoc;
    }
}

function toolTip(msg, fg, bg) {
    if (toolTip.arguments.length < 1)
    { if (ns4) toolTipSTYLE.visibility = "hidden"; else toolTipSTYLE.display = "none"; }
    else {
        if (!fg) fg = ""; if (!bg) bg = ""; var content = '<table width="200px" border="0" cellspacing="0" cellpadding="1" bgcolor="' + fg + '"><td>' + '<table border="0" cellspacing="0" cellpadding="2" bgcolor="' + bg + '"><td><font face="sans-serif" color="' + fg + '" size="2px">' + msg + '&nbsp\;</font></td></table></td></table>'; if (ns4)
        { toolTipSTYLE.document.write(content); toolTipSTYLE.document.close(); toolTipSTYLE.visibility = "visible"; }
        if (ns6)
        { document.getElementById("toolTipLayer").innerHTML = content; toolTipSTYLE.display = 'block' }
        if (ie4)
        { document.all("toolTipLayer").innerHTML = content; toolTipSTYLE.display = 'block'; }
    }
}

function moveToMouseLoc(e) {
    if (ns4 || ns6)
    { x = e.pageX; y = e.pageY; }
    else
    { x = event.x + document.body.scrollLeft; y = event.y + document.body.scrollTop; }
    toolTipSTYLE.left = x - 120 + "px"; toolTipSTYLE.top = y - 95 + "px"; return true;
}
function validaCPF(cpf) {
    var i; var soma = soma2 = 0; if (!(cpf.match(/^[0-9]{3,3}[.]{0,1}[0-9]{3,3}[.]{0,1}[0-9]{3,3}[-]{0,1}[0-9]{2,2}$/))) { return false; }
    cpf = retiraCaracter(retiraCaracter(cpf, '.'), '-'); for (i = 0; i < 10; i++) {
        if (i < 9) { soma += cpf.charAt(i) * (10 - i); }
        soma2 += cpf.charAt(i) * (11 - i);
    }
    if (((soma % 11) < 2 ? 0 : 11 - (soma % 11)) != cpf.charAt(9)) { return false; }
    return (((soma2 % 11) < 2 ? 0 : 11 - (soma2 % 11)) != cpf.charAt(10)) ? false : true;
}
function retiraCaracter(string, caracter) {
    var i = 0; var final = ''; while (i < string.length) {
        if (string.charAt(i) == caracter) { final += string.substr(0, i); string = string.substr(i + 1, string.length - (i + 1)); i = 0; }
        else { i++; }
    }
    return final + string;
}
LoginRedirectURL = ''; function VerifyLoginForm(event, formName, loginRedirectURL) {
    if (event) { Event.stop(event); }
    MsgErro = ''; MsgErro = MsgErro + TestInputText(formName, 'txEmail', ' - E-mail'); MsgErro = MsgErro + TestInputText(formName, 'pwPassword', ' - Senha'); LoginRedirectURL = loginRedirectURL; if (MsgErro == '') {
        SendFormDataByAjaxRunMethod(formName, 'User', 'UserVerify', { 'callback': function(userCode, loginRedirectURL) {
            if (userCode) { SetLogin(userCode); if (loginRedirectURL != '') { document.location.href = loginRedirectURL; } else { document.location.reload(); } } else {
                alert('O login ou senha informados não estão corretos')
                return false;
            }
        }, 'extra_data': [loginRedirectURL]
        });
    } else { MsgErro = 'Por favor preencha corretamente os campos abaixo:\n\n' + MsgErro; alert(MsgErro); }
    return void (0);
}
function fixPng() {
    var arVersion = navigator.appVersion.split("MSIE")
    var version = parseFloat(arVersion[1])
    if ((version >= 5.5) && (document.body.filters)) {
        for (var i = 0; i < document.images.length; i++) {
            var img = document.images[i]
            var imgName = img.src.toUpperCase()
            if (imgName.substring(imgName.length - 3, imgName.length) == "PNG") {
                var imgID = (img.id) ? "id='" + img.id + "' " : ""
                var imgClass = (img.className) ? "class='" + img.className + "' " : ""
                var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
                var imgStyle = "display:inline-block;" + img.style.cssText
                if (img.align == "left") imgStyle = "float:left;" + imgStyle
                if (img.align == "right") imgStyle = "float:right;" + imgStyle
                if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
                var strNewHTML = "<span " + imgID + imgClass + imgTitle
+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+ "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
                img.outerHTML = strNewHTML
                i = i - 1
            }
        }
    }
}

function RedirectToUrl(url) { document.location.href = url }
function PositionDiv(div) {
    scrOfY = 0; if (typeof (window.pageYOffset) == 'number') { scrOfY = window.pageYOffset; } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { scrOfY = document.body.scrollTop; } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { scrOfY = document.documentElement.scrollTop; }
    $(div).style.top = (scrOfY + 10) + 'px'; $(div).style.left = (((document.body.clientWidth) - ($(div).style.width.substr(0, $(div).style.width.length - 2))) / 2) + 'px';
}
function showDiv(ID) { $(ID).style.display = "block"; }
function hideDiv(ID) { $(ID).style.display = "none"; }

function hideActiveX() {
    vetorSelect = document.getElementsByTagName("select")
    for (i = 0; i < vetorSelect.length; i++)
    { vetorSelect[i].style.display = "none"; }
    vetorObject = document.getElementsByTagName("object")
    for (i = 0; i < vetorObject.length; i++)
    { vetorObject[i].style.display = "none"; }
}
function showActiveX() {
    vetorSelect = document.getElementsByTagName("select")
    for (i = 0; i < vetorSelect.length; i++)
    { vetorSelect[i].style.display = ""; }
    vetorObject = document.getElementsByTagName("object")
    for (i = 0; i < vetorObject.length; i++)
    { vetorObject[i].style.display = ""; }
}
function maxLength(field, keyCode, maxChars)
{ if (keyCode != 8 && keyCode != 46 && keyCode != 116 && keyCode != 37 && keyCode != 38 && keyCode != 39 && keyCode != 40) { if (field.value.length >= maxChars) { alert("Você atingiu o limite de " + maxChars + " caracteres"); return false; } } }
function maxLengthPaste(field, maxChars)
{ }
function OpenURL(url) {
    if (GetUserLogin()) { RedirectToUrl(url) }
    else {
        data = 'URL=' + url
        SendDataByAjaxRunTemplate('User/Login', data, SetDivContent)
        hideActiveX()
    }
}
function CloseLogin()
{ $('user_login').innerHTML = ''; showActiveX() }
function rEs(tO) {
    var i, n; if (!tO) { return false; }
    if (!tO.nodeName) {
        if (!tO.length) { return false; }
        for (n = tO.length; n--; ) { if (!rEs(tO[n])) { return false; } } return true;
    } else { tO.parentNode.removeChild(tO); return true; }
}

function textCounter(field, countfield, maxlimit) { if (field.value.length > maxlimit) { field.value = field.value.substring(0, maxlimit); } else { rEs($(countfield).childNodes); $(countfield).innerHTML = field.value.length; } }

function gFETN(tTn, tFs, isER, rE, justChilds) {
    var tEs, i, n, ii, nn, passed, tF, tER, tR = new Array(); if (rE && justChilds) { tEs = childsOfType(rE, tTn); } else { tEs = (rE || document).getElementsByTagName(tTn); }
    if (!tFs) { return tEs.length ? makeArray(tEs, 1) : false; } if (typeof (tFs) == 'string') { tFs = [tFs]; }
    for (n = tEs.length, i = 0; i < n; i++) {
        passed = 1; for (nn = tFs.length, ii = 0; ii < nn; ii++) {
            tF = tFs[ii].split('='); if (isER) { tER = new RegExp(tF[1], 'g'); if (!tER.test(tEs[i][tF[0]])) { passed = 0; } }
            else { if (tEs[i][tF[0]] != tF[1]) passed = 0; }
        } if (passed) { tR[tR.length] = tEs[i]; }
    }
    return tR.length ? tR : false;
}

function childsOfType(tO, tT) { var i, n, tCs, tR = []; tT = new RegExp((tT instanceof Array) ? tT.join('|') : tT, 'i'); for (i = 0, n = (tCs = tO.childNodes).length; i < n; i++) { if (tCs[i].nodeType == 1 && tT.test(tCs[i].nodeName.toLowerCase())) tR[tR.length] = tCs[i]; } return tR.length ? tR : false; }

function addTok(tokList, tTok, tDiv, duplicate) {
    tDiv = tDiv || ' '; if (hasTok(tokList, tTok, tDiv) && !duplicate) { return tokList; }
    return ((tokList) ? (tokList + tDiv) : '') + tTok;
}
function hasTok(tokList, tTok, tDiv) { var n, i, tToks = tokList.split(tDiv || ' '); for (n = tToks.length; n--; ) { if (tToks[n] == tTok) { return true; } } return false; }
function remTok(tokList, tTok, tDiv) {
    if (!tokList) return ''; var n, i, tRs = []; tDiv = tDiv || ' '; var tToks = tokList.split(tDiv); for (n = tToks.length, i = 0; i < n; i++) { if (tToks[i] != tTok) { tRs[tRs.length] = tToks[i]; } }
    return tRs.length ? tRs.join(tDiv) : '';
}

function isDescendantOf(tO, tT) { while ((tO = tO.parentNode)) { if (tO == tT) { return true; } } return false; }
function nextObject(tE) { var n = tE; do n = n.nextSibling; while (n && n.nodeType != 1); return n; }
function previousObject(tE) { var p = tE; do p = p.previousSibling; while (p && p.nodeType != 1); return p; }


Object.prototype.nextObject = function() { var n = this; do n = n.nextSibling; while (n && n.nodeType != 1); return n; }
Object.prototype.previousObject = function() { var p = this; do p = p.previousSibling; while (p && p.nodeType != 1); return p; }

function isIE6() { var IE6 = false; return IE6; }

function verifyDate(date) {
    var auxDate = new Array(); auxDate[0] = date.substr(6, 2); auxDate[1] = date.substr(4, 2); auxDate[2] = date.substr(0, 4); if (auxDate.length < 3) { return false; }
    var day = auxDate[0]; var month = auxDate[1] - 1; var year = auxDate[2]; var myDate = new Date(); myDate.setFullYear(year, month, day); if (myDate.getMonth() != month) { return false; }
    return true;
}
function verifyName(name) {
    if (name.length == 0) { return false; }
    return true;
}
function isValidEmail(email) { return verifyEmail(email, 0); }
function verifyEmail(email, onlyIsValid) {
    var data = 'txEmail=' + email + '&jsonReturn=1'; if (typeof (onlyIsValid) == 'undefined' || !onlyIsValid) { data += '&alreadyExistsError=1'; }
    var result = SendDataByAjaxRunMethodSync(data, 'Validate', 'isRegistered'); return result;
}

function sajax_debug(text) {
    if (sajax_debug_mode)
        alert(text);
}
function sajax_init_object() {
    var A; var msxmlhttp = new Array('Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'); for (var i = 0; i < msxmlhttp.length; i++) { try { A = new ActiveXObject(msxmlhttp[i]); } catch (e) { A = null; } }
    if (!A && typeof XMLHttpRequest != "undefined")
        A = new XMLHttpRequest(); if (!A)
        sajax_debug("Could not create connection object."); return A;
}
var sajax_requests = new Array(); function sajax_cancel() {
    for (var i = 0; i < sajax_requests.length; i++) { sajax_requests[i].abort(); }
    return true;
}
function sajax_do_call(func_name, args) {
    var i, x, n; var uri; var post_data; var target_id; mostraLoader()
    target_id = sajax_target_id; if (typeof (sajax_request_type) == "undefined" || sajax_request_type == "")
        sajax_request_type = "GET"; uri = sajax_uri; if (sajax_request_type == "GET") {
        if (uri.indexOf("?") == -1)
            uri += "?rs=" + escape(func_name); else
            uri += "&rs=" + escape(func_name); uri += "&rst=" + escape(sajax_target_id); uri += "&rsrnd=" + new Date().getTime(); for (i = 0; i < args.length - 1; i++)
            uri += "&rsargs[]=" + escape(args[i]); post_data = null;
    }
    else if (sajax_request_type == "POST") {
        post_data = "rs=" + escape(func_name); post_data += "&rst=" + escape(sajax_target_id); post_data += "&rsrnd=" + new Date().getTime(); if (args != null) { for (i = 0; i < args.length; i++) { post_data = post_data + "&rsargs[]=" + escape(args[i]); } }
        post_data += '&ajaxcall=1';
    }
    else { alert("Illegal request type: " + sajax_request_type); }
    x = sajax_init_object(); if (x == null) {
        sajaxErrMessage()
        if (sajax_failure_redirect != "") { location.href = sajax_failure_redirect; return false; } else { sajax_debug("NULL sajax object for user agent:\n" + navigator.userAgent); return false; }
    } else {
        x.open(sajax_request_type, uri, sajax_async_mode); if (sajax_request_type == "POST") { x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1"); x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); }
        if (sajax_async_mode) {
            x.onreadystatechange = function() {
                if (x.readyState != 4)
                    return; sajax_debug("received " + x.responseText); var status; var data; var txt = x.responseText.replace(/^\s*|\s*$/g, ""); for (aux = 1; aux < 10; aux++) { txt = txt.replace(/^\n/, ""); txt = txt.replace(/^\r/, ""); }
                status = txt.charAt(0); data = txt.substring(2); if (status == "") { } else if (status == "-") { }
                else {
                    if (target_id != "")
                        document.getElementById(target_id).innerHTML = eval(data); else {
                        try {
                            var callback; var extra_data = false; if (typeof args[args.length - 1] == "object") { callback = args[args.length - 1].callback; extra_data = args[args.length - 1].extra_data; } else { callback = args[args.length - 1]; }
                            if (data.isJSON()) {
                                data = data.evalJSON(); escondeLoader(); if (typeof (data.isError) != 'undefined') {
                                    if (typeof (data.callback) != 'undefined') { data.callback(data); return; }
                                    Feedback.alert(data); if (popCurrent != null && (typeof (data.Stop) != 'undefined') && data.Stop) { popCurrent.close(); }
                                    return;
                                }
                            }
                            try { callback(eval(data), extra_data); } catch (e) { callback(data, extra_data); }
                        } catch (e) { sajax_debug("Caught error " + e + ": Could not eval " + data); }
                    }
                }
                escondeLoader(); return true;
            }
        }
    }
    x.send(post_data); if (!sajax_async_mode) {
        var timeoutID; timeoutID = setTimeout("sajax_cancel();", sajax_wait); var data; var txt = x.responseText.replace(/^\s*|\s*$/g, ""); for (aux = 1; aux < 10; aux++) { txt = txt.replace(/^\n/, ""); txt = txt.replace(/^\r/, ""); }
        status = txt.charAt(0); data = txt.substring(2); if (timeoutID) { window.clearTimeout(timeoutID); }
        if (data.isJSON()) {
            data = data.evalJSON(); if (typeof (data.isError) != 'undefined') {
                if (typeof (data.callback) != 'undefined') { data.callback(data); return; }
                Feedback.alert(data); return void (0);
            }
        }
        if (data.indexOf('var res') != -1) { data = eval(data); }
        return data;
    }
    delete x; return true;
}


function sajaxErrMessage() { alert('Ocorreu um erro desconhecido na comunicação com o servidor. Por favor tente realizar a ação novamente. Caso esta mensagem apareça novamente, verifique a sua conexão com a internet.'); }
function x_ReceiveFormDataByAjaxRunMethod() { sajax_do_call("ReceiveFormDataByAjaxRunMethod", x_ReceiveFormDataByAjaxRunMethod.arguments); }
function x_ReceiveFormDataByAjaxRunTemplate() { sajax_do_call("ReceiveFormDataByAjaxRunTemplate", x_ReceiveFormDataByAjaxRunTemplate.arguments); }
function x_ReceiveFormDataByAjaxRunTemplateSync() { return sajax_do_call("ReceiveFormDataByAjaxRunTemplate", x_ReceiveFormDataByAjaxRunTemplateSync.arguments); }
function x_ReceiveFormDataByAjaxRunMethodSync() { return sajax_do_call("ReceiveFormDataByAjaxRunMethod", x_ReceiveFormDataByAjaxRunMethodSync.arguments); }
function pageRedirect(redirectTo) {
    if (typeof (redirectTo) == 'undefined' || redirectTo == '') { document.location.reload(); return void (0); }
    document.location.href = redirectTo;
}
function pageReload() { document.location.reload(); }
function isChecked(element) { return false; }
function isEmpty(element) {
    if (typeof (element.value) != 'undefined') { return !element.value.blank(); }
    return !element.blank();
}
function verifyLoginPOP() { return verifyLogin('FormPOPLogin', false); }
function verifyLogin(formID, defaultFormLogin) {
    if (typeof (defaultFormLogin) == 'undefined') { formID = 'FormLogin'; } else { if (defaultFormLogin) { formID = defaultFormLogin.id; } }
    var data = create_request_string(formID); var result = SendDataByAjaxRunMethodSync(data, 'Validate', 'login'); if (typeof (result.split) != 'undefined' && result.split('|').length == 2) { var userID = result.split('|')[1]; document.location.href = '/ego/' + userID; return result; }
    return result;
}

function verifyPassword(password) {
    if (password.length > 12 || password.length < 4) { return false; }
    return true;
}
function verifyGender(gender) {
    var value = gender.value; if (typeof (value) == 'undefined') { value = gender; }
    if (value == 0) { return false; }
    if (value != 1 && value != 2) { return false; }
    return true;
}
function verifyBirthTime(birthTime) {
    if (!birthTime) { return false; }
    var auxbirthTime = birthTime.split(':'); if (auxbirthTime[0] == '') { return false; }
    if (auxbirthTime[1] == '') { return false; }
    if (auxbirthTime[0] > 23 && auxbirthTime[0] < 0) { return false; }
    if (auxbirthTime[1] > 59 && auxbirthTime[1] < 0) { return false; }
    return true;
}
function verifyCountry(country, form) { return true; }
function verifyEstate(estate, form) { return true; }
function verifyCity(city, form) {
    var country = encodeURIComponent(form.elements['ddCountry'].value); var estate = encodeURIComponent(form.elements['ddEstate'].value); if (estate == 28) { estate = 0; }
    var data = 'countryID=' + country + '&estateID=' + estate + '&cityName=' + encodeURIComponent(city); var result = SendDataByAjaxRunMethodSync(data, 'Validate', 'verifyCity'); return result;
}
function verifyNameIndications(names) {
    var form = $('FormIndication'); var elements = form.elements['txDestinationName[]']; if (typeof (elements.length) == 'undefined') { elements = [elements]; }
    for (var i = 0; i < elements.length; i++) { if (elements[i].value == '') { return false; } }
    return true;
}
function verifyEmailIndications(emails) {
    var form = $('FormIndication'); var elements = form.elements['txDestinationEmail[]']; if (typeof (elements.length) == 'undefined') { elements = [elements]; }
    for (var i = 0; i < elements.length; i++) { if (elements[i].value == '') { return false; } }
    return true;
}
function forgotPasswordCheckEmail(email) { var data = create_request_string('FormForgotPassword') + '&alreadyExistsError=0'; var result = SendDataByAjaxRunMethodSync(data, 'Validate', 'isRegistered'); return result; }
function StartPage(obj) { objPageParams = obj; }
function Refresh(template, extraData, goToTop) {
    SendDataByAjaxRunTemplateHistory(template, extraData, SetDivContent)
    if (typeof (goToTop) != 'undefined') { window.scrollTo(0, goToTop); }
}
var Profile = { 'dontUseProfile': { 10: { 'url': '/tarot/tarot-e-o-amor' }, 11: { 'url': '/tarot/tarot-semestral' }, 14: { 'url': '/runas/runas-e-vida-material' }, 15: { 'url': '/tarot/tarot-do-dia'} }, 'select': function(productID, itemCartCode, callback, profileID) {
    if (typeof (Profile.dontUseProfile[productID]) != 'undefined' && typeof (itemCartCode) == 'undefined' && itemCartCode != '') {
        var path = '/mini/jogar'; if (typeof (Profile.dontUseProfile[productID]['url']) != 'undefined') { path = Profile.dontUseProfile[productID]['url'] + path; document.location.href = path; return; }
        document.location.href += path; return;
    }
    var params = ['ProductID=' + productID]; if (typeof (itemCartCode) != 'undefined' && itemCartCode != '') { params.push('ItemCartCode=' + itemCartCode); }
    if (typeof (profileID) != 'undefined' && profileID > 0) { params.push('ProfileID=' + profileID); }
    Pop.open('selectProfile', 'Profile/SelectProfile', params.join('&'), 'default', { 'onClose': null, 'onComplete': { 'method': callback, 'args': [productID, itemCartCode]} }); return void (0);
}, 'edit': function(profileID, itemCartCode, callback) {
    var params = ['ProfileID=' + profileID, 'Option=Edit']; if (typeof (itemCartCode) != 'undefined' && itemCartCode != '') { params.push('ItemCartCode=' + itemCartCode); }
    if (!callback) { if (popCurrent != null) { callback = { 'onComplete': { 'method': popCurrent.close, 'args': null}} } else { callback = {}; } }
    Pop.open('editProfile', 'Profile/EditProfile', params.join('&'), 'default', callback); return void (0);
}, 'checkOption': function(event, itemCartCode) {
    var ddProfile = event.element(); switch (ddProfile.value) { case 'AddProfile': Profile.create(itemCartCode); break; default: break; }
    return void (0);
}, 'create': function(itemCartCode, callback) {
    var params = ['Option=Add']; if (typeof (itemCartCode) != 'undefined' && itemCartCode != '') { params.push('ItemCartCode=' + itemCartCode); }
    if (typeof (callback) == 'undefined' || callback == null) { callback = { 'onComplete': { 'method': popCurrent.close, 'args': ''} }; }
    Pop.open('addprofile', 'Profile/EditProfile', params.join('&'), 'default', callback); return void (0);
}, 'returnEditProfile': function(result, profileID) {
    if (result > 0) {
        if (profileID <= 0) { profileID = result; }
        if (popCurrent.getParent() != null) { popCurrent.getParent().properties.params += '&ProfileID=' + profileID; popCurrent.getParent().open(); popCurrent.close(); return void (0); }
        if (typeof (popCurrent.onCompleteMethod) != 'undefined') { popCurrent.complete(result); popCurrent.close(); }
    }
}, 'returnSaveProfile': function(result) {
    if (!(result instanceof Object)) { ReturnSaveProfile(result); return true; }
    var urlProductMini = result.productInfo.urlProductMini + result.code; window.location.href = urlProductMini;
}
}
function verifyFormIndication() { var result = SendFormDataByAjaxRunMethodSync('FormIndication', 'Validate', 'indicationForm'); return result; }
var Indication = { 'types': { 'Product': 1, 'Link': 2 }, 'open': function(url, type, title) {
    var params = ['URL=' + url, 'Type=' + type]; if (typeof (title) != 'undefined') { params.push('Title=' + title); }
    Pop.open('indicationForm', 'Indication/Pop/Form', params.join('&'), 'default', {});
}, 'formValidate': function() { alert(); }, 'send': function(sendResult) {
    if (typeof (sendResult) != 'undefined') {
        if (Boolean(sendResult)) { popCurrent.close(); Feedback.pop(utf8_encode('INDICAÇÃO'), utf8_encode('Sua indicação foi realizada com sucesso.'), utf8_encode('Obrigado por utilizar nossos serviços.'), 0); return true; }
        return false;
    }
    SendFormDataByAjaxRunMethod('FormIndication', 'Indication', 'SendIndication', Indication.send);
}, 'addRecipient': function() {
    var recipients = document.getElementsByClassName('recipient'); var newRecipient = recipients[recipients.length - 1].cloneNode(1); var auxID = ''; var inputs = newRecipient.getElementsByTagName('input'); for (var i = 0; i < inputs.length; i++) { auxID = (i == 0) ? 'Name' : 'Email'; inputs[i].id = 'indication' + auxID + (recipients.length + 1); inputs[i].value = ''; Event.observe(inputs[i], 'focus', PatternForm.ManageInput.bindAsEventListener(this, '')); Event.observe(inputs[i], 'blur', PatternForm.ManageInput.bindAsEventListener(this, '')); }
    var labels = newRecipient.getElementsByTagName('label'); for (var i = 0; i < labels.length; i++) { auxID = (i == 0) ? 'Name' : 'Email'; labels[i].id = 'indication' + auxID + (recipients.length + 1) + '_Label'; labels[i].setAttribute('for', 'indication' + auxID + (recipients.length + 1)); }
    $('recipients').appendChild(newRecipient);
}
}
var FriendsList = { 'openedfriends': {}, 'refreshArgs': {}, 'refresh': function() {
    if (popCurrent != null) { popCurrent.close(); }
    var data = 'Title=' + utf8_encode(FriendsList['refreshArgs']['Title']) + '&LinkTo[Action]=' + FriendsList['refreshArgs']['LinkTo']['Action'] + '&LinkTo[Type]=' + FriendsList['refreshArgs']['LinkTo']['Type'] + '&LinkTo[Params]=' + FriendsList['refreshArgs']['LinkTo']['Params']; SendDataByAjaxRunTemplate(FriendsList['refreshArgs']['TEMPLATE'], data, SetDivContent);
}, 'linkTo': function(target, type, profile, params) {
    switch (type) { case 'JS': target.apply(this, [profile]); break; case 'javascript:': params.push(profile); var target = eval(target); target.apply(this, params); return void (0); return; break; default: document.location.href = target + '/amigo/' + encodeUser(profile); }
    return void (0);
}, 'viewProfile': function(profileID) {
    var link = $('Folder_link_' + profileID); var row = link.parentNode.parentNode; if (typeof (FriendsList.openedfriends[profileID]) != 'undefined') { SetDivContent('', 'friend' + profileID); delete (FriendsList.openedfriends[profileID]); Element.Methods.removeClassName(row, 'active'); Element.Methods.removeClassName(link, 'collapse'); Element.Methods.addClassName(link, 'expand'); return; }
    var data = 'ProfileID=' + profileID; SendDataByAjaxRunTemplate('User/FriendData', data, function(content) { FriendsList.openedfriends[profileID] = 1; SetDivContent(content, 'friend' + profileID); }); Element.Methods.removeClassName(link, 'expand'); Element.Methods.addClassName(row, 'active'); Element.Methods.addClassName(link, 'collapse');
}, 'addFriend': function(showTransit) {
    var callback = FriendsList.refresh; if (typeof (showTransit) != 'undefined' && showTransit) { callback = function(profile) { FriendsList.linkTo('/astrologia/horoscopo', 'LNK', profile); } }
    Profile.create(null, { 'onComplete': { 'method': callback, 'args': []} });
}, 'editFriend': function(profile) { Profile.edit(profile, null, { 'onComplete': { 'method': FriendsList.refresh, 'args': null} }); }, 'removeFriend': function(profile) { var data = 'ProfileID=' + profile; SendDataByAjaxRunMethod(data, 'Profile', 'removeProfile', FriendsList.removeFriendResult); }, 'removeFriendResult': function(result) {
    if (result > 0) {
        if (popCurrent != null) { Pop.close(); }
        FriendsList.refresh();
    }
}
}
var Dialog = { 'question': function(title, question, action) { var data = 'Title=' + title + '&Question=' + question + '&Action=' + action; Pop.open('dialog', 'Pattern/Pop/Dialog', data, 'default', {}); } }
var CreatedProduct = { 'delete': function(callback, params, isQuery) {
    if (typeof (isQuery)) { isQuery = 0; }
    if (typeof (callback) != 'function') { callback = window[callback]; }
    var data = ''; if (isQuery) { data = params; delete (params); }
    Pop.open('dialog', 'CreatedProduct/Pop/DeleteProduct', data, 'default', { 'onComplete': { 'method': callback, 'args': params} });
}
}
var Cookie = { 'add': function(name, value, expires, path, domain, secure) {
    var today = new Date(); today.setTime(today.getTime()); if (expires) { expires = expires * 1000 * 60 * 60 * 24; }
    var expires_date = new Date(today.getTime() + (expires)); document.cookie = name + "=" + escape(value)
+ ((expires) ? ";expires=" + expires_date.toGMTString() : "")
+ ((path) ? ";path=" + path : "")
+ ((domain) ? ";domain=" + domain : "")
+ ((secure) ? ";secure" : ""); return void (0);
}, 'get': function(name) {
    var start = document.cookie.indexOf(name + "="); var len = start + name.length + 1; if ((!start) && (name != document.cookie.substring(0, name.length))) { return null; }
    if (start == -1) { return null; }
    var end = document.cookie.indexOf(";", len); if (end == -1) { end = document.cookie.length; }
    return unescape(document.cookie.substring(len, end));
}, 'remove': function(name, path, domain) {
    if (Cookie.get(name)) {
        document.cookie = name + "="
+ ((path) ? ";path=" + path : "")
+ ((domain) ? ";domain=" + domain : "")
+ ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
}
}
var Login = { 'pop': function(returnToURL, encoded, hasClose) {
    if (typeof (encoded) != 'undefined') { returnToURL = base64_decode(returnToURL); }
    if (typeof (hasClose) == 'undefined') { hasClose = 1; }
    Pop.open('userLogin', 'User/Login', 'HasClose=' + hasClose, 'default', { 'onComplete': { 'method': pageRedirect, 'args': returnToURL} });
}, 'efetuaLogin': function(formID) {
    if (typeof (formID) == 'undefined') { formID = 'FormLogin'; }
    var userCode = SendFormDataByAjaxRunMethodSync(formID, 'User', 'login'); if (userCode > 0) {
        try {
            if (popCurrent.getParent() != null) {
                if (popCurrent.getParent().properties.name == popCurrent.properties.name) { popCurrent.getParent().getParent().open(); return; }
                popCurrent.getParent().open(); popCurrent.close(); return;
            }
        } catch (e) { }
        if (popCurrent == null) {
            if ($(formID).elements['ReturnToURL'].value != '') { pageRedirect($(formID).elements['ReturnToURL'].value); return; }
            pageReload(); return;
        }
        popCurrent.complete();
    }
}, 'forgotPassword': function() { Pop.open('forgotPassword', 'User/ForgotPassword', '', 'default', {}); }, 'sendPassword': function(result) {
    if (typeof (result) != 'undefined') {
        if (Boolean(result) == true) { Feedback.pop('Lembrete de Senha', utf8_encode('Lembrete de senha enviado com sucesso.'), utf8_encode('Sua senha já foi enviada para o e-mail informado.'), 1); }
        return true;
    }
    SendFormDataByAjaxRunMethod('FormForgotPassword', 'User', 'forgotPassword', Login.sendPassword);
}
}
var FAQ = { 'open': function(questionID, isChild) {
    if (isChild == null) { var isChild = 0; }
    var params = ['QuestionID=' + questionID + '&IsChild=' + isChild]; Pop.open('faq', 'FAQ/QuestionsGroup', params.join('&'), 'faq', { 'onComplete': { 'method': function(e) { alert(e); }, 'args': ''} }, true);
}, 'openFormMessage': function(questionID) { var params = ['QuestionID=' + questionID]; Pop.open('faq_message', 'FAQ/FormMessage', params.join('&'), 'default', { 'onComplete': { 'method': FAQ.sendMessage, 'args': ''} }) }, 'sendMessage': function() { SendFormDataByAjaxRunMethod('FormMessage', 'FAQ', 'sendMessage', FAQ.returnSendMessage); }, 'returnSendMessage': function(code) { Pop.open('faq_message_feedback', 'FAQ/FormMessage', 'Feedback=' + code, 'default', { 'onClose': null }); }, 'openTutorial': function(groupID, productID, name) {
    if (name == null) { var name = ''; }
    var params = ['GroupID=' + groupID + '&ProductID=' + productID + '&name=' + utf8_encode(name)]; Pop.open('faq', 'FAQ/Tutorial', params.join('&'), 'video', { 'onComplete': { 'method': function(e) { alert(e); }, 'args': ''} });
}, 'close': function() { Pop.close(); }
}
function remindeBirthTime() {
    var disable = ['ddRememberBirthTimeDays']; var form = 'FormRegister'; for (var i = 0; i < disable.length; i++) { $(disable[i]).disabled = !$(disable[i]).disabled; }
    if (typeof ($(form).elements['NoValidate_ddBirthTime']) == 'undefined') { createHiddenField(form, 'NoValidate_ddBirthTime', 1); }
}
function dontKnowBirthTime(checkAll) {
    var disable = ['ddBirthTimeHour', 'ddBirthTimeMinute', 'cbRememberBirthTime']; var form = 'FormRegister'; for (var i = 0; i < disable.length; i++) { $(disable[i]).disabled = !$(disable[i]).disabled; }
    if (typeof ($(form).elements['NoValidate_ddBirthTime']) != 'undefined') { $(form).elements['NoValidate_ddBirthTime'].remove(); $('ddBirthTime').value = $('ddBirthTimeHour').value + $('ddBirthTimeMinute').value; } else { createHiddenField(form, 'NoValidate_ddBirthTime', 1); $('ddBirthTime').value = 'X'; }
    if ($('cbRememberBirthTime').checked) { $('ddRememberBirthTimeDays').disabled = true; $('cbRememberBirthTime').checked = false; }
}
function RegisterEmailPop(event) { Element.Methods.hide($('Password_hint')); Element.Methods.hide($('E-Mail_hint')); field = event.element(); value = field.value; if (value.empty() == false && confirmedEmail != value) { Pop.open('confirmEmail', 'User/Pop/RegisterEmailConfirm', 'Email=' + value, 'default', { 'onClose': { 'method': RegisterEmailChange, 'args': field }, 'onComplete': { 'method': RegisterEmailConfirm, 'args': value} }); } }
function RegisterEmailConfirm(email) { Pop.close(); confirmedEmail = email; }
function RegisterEmailChange(field) { Pop.close(); Form.Element.clear('E-Mail'); Form.Element.focus('E-Mail'); confirmedEmail = false; }
function checkFields() { var args = checkFields.arguments; var form = 'FormRegister'; for (var i = 0; i < args.length; i++) { $(args[i]).checked = !$(args[i]).checked; } }
var Register = { 'FormID': 'FormRegister', 'FormData': '', 'goToStep': function(step) { SendFormDataByAjaxRunTemplateHistory('User/RegisterStep' + step, 'FormRegister', { 'callback': SetDivContent, 'extra_data': 'user_registerstep1' }); }, 'checkSummerTime': function(form) {
    var data = 'ddCity=' + form.elements['ddCity'].value
+ '&BirthDate=' + form.elements['ddBirthDate'].value
+ '&BirthTime=' + form.elements['ddBirthTime'].value; var summerTime = SendDataByAjaxRunMethodSync(data, 'Profile', 'CheckSummerTime'); return parseInt(summerTime);
}, 'confirm': function() {
    var form = $(Register.FormID); var dontKnowBirthTime = parseInt(form.elements['cbDontKnowBirthTime'].value); if (dontKnowBirthTime != 1) { if (Register.checkSummerTime(form) > 0) { Register.goToStep(4); return void (0); } }
    Register.saveData(); return void (0);
}, 'saveData': function() { SendFormDataByAjaxRunMethod(Register.FormID, 'User', 'addUser', Register.saveDataResult); }, 'saveDataResult': function(result) { result = Boolean(result); if (result) { document.location.href = $(Register.FormID).elements['ReturnToURL'].value + '&FeedbackRegister=1'; return void (0); } }
}
var User = { 'edit': function(userID) { Pop.open('editUser', 'User/EditUser', 'UserID=' + userID, 'default', { 'onComplete': { 'method': pageRedirect, 'args': '/seu-perfil/dados'} }); }, 'save': function() { SendFormDataByAjaxRunMethod('FormEditUser', 'User', 'updateUserInfoBD', User.saveResult) }, 'saveTransitsOptions': function() { SendFormDataByAjaxRunMethod('FormTransitsOptions', 'User', 'SetUserReceiveEmailData', User.saveResult); }, 'saveResult': function(result) {
    if (result > 0) {
        if (typeof (popCurrent.onCompleteMethod) != 'undefined') { popCurrent.complete(); return; }
        popCurrent.close();
    }
}
}
var Cart = { 'NextStep': 0, 'goToStep': function(step) {
    nextStep = Cart.NextStep
    if (nextStep == 0)
        nextStep = step; if (nextStep == 1) { document.location.href = '/carrinho'; }
    if (nextStep == 2) { document.location.href = '/carrinho/presente/listar'; }
    if (nextStep == 3) { document.location.href = '/carrinho/pagamento'; }
    if (nextStep == 4) { document.location.href = '/carrinho/confirmacao'; }
}
}
function hideActiveX() {
    vetorSelect = document.getElementsByTagName("select")
    for (i = 0; i < vetorSelect.length; i++)
    { vetorSelect[i].style.display = "none"; }
    vetorObject = document.getElementsByTagName("object")
    for (i = 0; i < vetorObject.length; i++)
    { vetorObject[i].style.display = "none"; }
    vetorEmbed = document.getElementsByTagName("embed")
    for (i = 0; i < vetorEmbed.length; i++)
    { vetorEmbed[i].style.display = "none"; }
}
function showActiveX() {
    vetorSelect = document.getElementsByTagName("select")
    for (i = 0; i < vetorSelect.length; i++)
    { vetorSelect[i].style.display = ""; }
    vetorObject = document.getElementsByTagName("object")
    for (i = 0; i < vetorObject.length; i++)
    { vetorObject[i].style.display = ""; }
    vetorEmbed = document.getElementsByTagName("embed")
    for (i = 0; i < vetorEmbed.length; i++)
    { vetorEmbed[i].style.display = ""; }
}
function hideActiveX() { activeX(false); }
function showActiveX() { activeX(true); }
function activeX(bool) { var status = (bool) ? 'visible' : 'hidden'; var elements = ['select', 'object', 'embed', 'iframe']; var aux; for (var i = 0; i < elements.length; i++) { aux = document.getElementsByTagName(elements[i]); if (aux.length > 0) { for (var j = 0; j < aux.length; j++) { aux[j].style.visibility = status; } } } }
if (Browser == undefined) { var Browser = { isIE: function() { return (window.ActiveXObject && document.all && navigator.userAgent.toLowerCase().indexOf("msie") > -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1) ? true : false; } } }
var Flash = function(movie, id, width, height, initParams) {
    this.html = ""; this.attributes = this.params = this.variables = null; this.variables = new Array(); this.attributes = { "classid": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", "codebase": "https://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab#version=8,0,22,0", "type": "application/x-shockwave-flash" }
    this.params = { "pluginurl": "https://www.macromedia.com/go/getflashplayer_br" }; if (movie) { this.addAttribute("data", movie); this.addParameter("movie", movie); }
    if (id && id != null) this.addAttribute("id", id); if (width) this.addAttribute("width", width); if (height) this.addAttribute("height", height); if (initParams != undefined) { for (var i in initParams) { this.addParameter(i.toString(), initParams[i]); } }
}
Flash.version = "1.2b"; Flash.getObjectByExceptions = function(obj, excep) {
    var tempObj = {}; for (var i in obj) {
        var inclui = true; for (var j = 0; j < excep.length; j++)
            if (excep[j] == i.toString()) { inclui = false; break; }; if (inclui) tempObj[i] = obj[i];
    }
    return tempObj;
}
Flash.prototype.addAttribute = function(prop, val) { this.attributes[prop] = val; }
Flash.prototype.addParameter = function(prop, val) { this.params[prop] = val; }
Flash.prototype.addVariable = function(prop, val) { this.variables.push([prop, val]); }
Flash.prototype.getFlashVars = function() {
    var tempString = new Array(); for (var i = 0; i < this.variables.length; i++)
        tempString.push(this.variables[i].join("=")); return tempString.join("&");
}
Flash.prototype.toString = function() {
    this.params.flashVars = this.getFlashVars(); if (Browser.isIE()) { this.html = "<ob" + "ject"; var attr = Flash.getObjectByExceptions(this.attributes, ["type", "data"]); for (var i in attr) if (i.toString() != "extend") this.html += " " + i.toString() + " = \"" + attr[i] + "\""; this.html += "> "; var params = Flash.getObjectByExceptions(this.params, ["pluginurl", "extend"]); for (var i in params) if (i.toString() != "extend") this.html += "<param name=\"" + i.toString() + "\" value=\"" + params[i] + "\" /> "; this.html += " </obj" + "ect>"; } else { this.html = "<!--[if !IE]> <--> <obj" + "ect"; var attr = Flash.getObjectByExceptions(this.attributes, ["classid", "codebase"]); for (var i in attr) if (i.toString() != "extend") this.html += " " + i.toString() + " = \"" + attr[i] + "\""; this.html += "> "; var params = Flash.getObjectByExceptions(this.params, ["extend"]); for (var i in params) if (i.toString() != "extend") this.html += "<param name=\"" + i.toString() + "\" value=\"" + params[i] + "\" /> "; this.html += " </obj" + "ect> <!--> <![endif]-->"; }
    return this.html;
}
Flash.prototype.write = Flash.prototype.outIn = Flash.prototype.writeIn = function(w) { if (typeof w == "string" && document.getElementById) var w = document.getElementById(w); if (w != undefined && w) w.innerHTML = this.toString(); else document.write(this.toString()); }
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; function ControlVersion() {
    var version; var axo; var e; try { axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); version = axo.GetVariable("$version"); } catch (e) { }
    if (!version)
    { try { axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); version = "WIN 6,0,21,0"; axo.AllowScriptAccess = "always"; version = axo.GetVariable("$version"); } catch (e) { } }
    if (!version)
    { try { axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version = axo.GetVariable("$version"); } catch (e) { } }
    if (!version)
    { try { axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version = "WIN 3,0,18,0"; } catch (e) { } }
    if (!version)
    { try { axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); version = "WIN 2,0,0,11"; } catch (e) { version = -1; } }
    return version;
}
function GetSwfVer() {
    var flashVer = -1; if (navigator.plugins != null && navigator.plugins.length > 0) {
        if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
            var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; var descArray = flashDescription.split(" "); var tempArrayMajor = descArray[2].split("."); var versionMajor = tempArrayMajor[0]; var versionMinor = tempArrayMajor[1]; var versionRevision = descArray[3]; if (versionRevision == "") { versionRevision = descArray[4]; }
            if (versionRevision[0] == "d") { versionRevision = versionRevision.substring(1); } else if (versionRevision[0] == "r") { versionRevision = versionRevision.substring(1); if (versionRevision.indexOf("d") > 0) { versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); } }
            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
        }
    }
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; else if (isIE && isWin && !isOpera) { flashVer = ControlVersion(); }
    return flashVer;
}
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) {
    versionStr = GetSwfVer(); if (versionStr == -1) { return false; } else if (versionStr != 0) {
        if (isIE && isWin && !isOpera) { tempArray = versionStr.split(" "); tempString = tempArray[1]; versionArray = tempString.split(","); } else { versionArray = versionStr.split("."); }
        var versionMajor = versionArray[0]; var versionMinor = versionArray[1]; var versionRevision = versionArray[2]; if (versionMajor > parseFloat(reqMajorVer)) { return true; } else if (versionMajor == parseFloat(reqMajorVer)) {
            if (versionMinor > parseFloat(reqMinorVer))
                return true; else if (versionMinor == parseFloat(reqMinorVer)) {
                if (versionRevision >= parseFloat(reqRevision))
                    return true;
            }
        }
        return false;
    }
}
function AC_AddExtension(src, ext) {
    if (src.indexOf('?') != -1)
        return src.replace(/\?/, ext + '?'); else
        return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) {
    var str = ''; if (isIE && isWin && !isOpera) {
        str += '<object '; for (var i in objAttrs)
        { str += i + '="' + objAttrs[i] + '" '; }
        str += '>'; for (var i in params)
        { str += '<param name="' + i + '" value="' + params[i] + '" /> '; }
        str += '</object>';
    }
    else {
        str += '<embed '; for (var i in embedAttrs)
        { str += i + '="' + embedAttrs[i] + '" '; }
        str += '> </embed>';
    }
    document.write(str);
}
function AC_FL_RunContent() {
    var ret = AC_GetArgs
(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash"); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent() {
    var ret = AC_GetArgs
(arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000", null); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType) {
    var ret = new Object(); ret.embedAttrs = new Object(); ret.params = new Object(); ret.objAttrs = new Object(); for (var i = 0; i < args.length; i = i + 2) { var currArg = args[i].toLowerCase(); switch (currArg) { case "classid": break; case "pluginspage": ret.embedAttrs[args[i]] = args[i + 1]; break; case "src": case "movie": args[i + 1] = AC_AddExtension(args[i + 1], ext); ret.embedAttrs["src"] = args[i + 1]; ret.params[srcParamName] = args[i + 1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblclick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": case "id": ret.objAttrs[args[i]] = args[i + 1]; break; case "width": case "height": case "align": case "vspace": case "hspace": case "class": case "title": case "accesskey": case "name": case "tabindex": ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i + 1]; break; default: ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i + 1]; } }
    ret.objAttrs["classid"] = classid; if (mimeType) ret.embedAttrs["type"] = mimeType; return ret;
}
function unsubscribleAlertCheck() { var data = create_request_string('FormUnsubscribleAlert'); var result = SendDataByAjaxRunMethodSync(data, 'Validate', 'unsubscribleAlertCheck'); return result; }
var Alerts = { 'checkOption': function(e) { Feedback.formClear(e.element().form.id); var tE = $('taOtherOption').parentNode; tE.toggle(); }, 'subscribleAlert': function(type) {
    type = typeof (type) == 'undefined' ? 1 : type; if (type == 1) { var obj = 'User'; var method = 'SetUserReceiveEmailData'; var params = 'cbReceiveAlerts=1'; } else if (type == 2) { var obj = 'User'; var method = 'SetUserReceivePromotionalEmail'; var params = 'cbReceiveNews=1'; }
    SendDataByAjaxRunMethod(params, obj, method, function(rs) {
        rs = Boolean(rs); if (rs) {
            var title = utf8_encode('RECEBA SEU HORÓSCOPO POR E-MAIL'); var message = 'Cadastramento Alerta'; if (type == 2) { title = utf8_encode('RECEBA NOVIDADES E PROMOÇÕES POR E-MAIL'); message = 'Cadastramento do e-mail promocional'; }
            Feedback.pop(title, message, utf8_encode('Operação realizada com sucesso'), 0, 'javascript:pageRedirect(\'/\')'); return true;
        }
    });
}, 'sendUnsubscribleOptions': function(type) {
    SendFormDataByAjaxRunMethod('FormUnsubscribleAlert', 'User', 'SetUnsubscribleAlertOptions', function(rs) {
        rs = Boolean(rs); if (rs) {
            var title = 'ALERTA'; var message = 'Descadastramento alerta'; if (type == 2) { title = 'E-MAIL PROMOCIONAL'; message = 'Descadastramento e-mail promocional'; }
            Feedback.pop(title, message, utf8_encode('Operação realizada com sucesso.'), 0, 'javascript:pageRedirect(\'/\')'); return true;
        }
    });
}
}
var FirstTime = { 'checkForm': function() {
    var form = $('FormBrandPage'); var errors = []; for (var i = 0; i < form.elements.length; i++) { if (typeof (form.elements[i].type) != 'undefined' && form.elements[i].type.toLowerCase() == 'select-one') { if (form.elements[i].value.length == 0) { errors.push({ 'Name': form.elements[i].name, 'Message': 'Por favor, selecione uma opção.' }); } } }
    if (errors.length) { Feedback.form({ 'form': form.id, 'fields': errors }); return false; }
    SendFormDataByAjaxRunTemplateHistory('Campaign/FirstTime/ProductSearchResult', 'FormBrandPage', { 'callback': SetDivContent, 'extra_data': 'campaign_firsttime_productsearch' });
}
}
var Home = { 'intervalID': 0, 'contador': 0, 'page': 1, 'totalPages': 3, 'killByUser': false, 'killTimeout': function() { clearInterval(Home.intervalID); }, 'startInterval': function() {
    if (Home.killByUser) { return; }
    Home.contador = 0; var tabs = Element.Methods.immediateDescendants($('tablist')); var currentTab = tabs[0]; var product = 0; Home.intervalID = setInterval(function() { currentTab = tabs[++Home.contador]; try { product = currentTab.id.split('_')[2]; Home.highlightShow(product); } catch (e) { Home.killTimeout(); if (Home.page < Home.totalPages) { Home.highlight(Home.page + 1); } else { Home.page = 1; Home.highlight(Home.page); } } }, 5000); return;
}, 'highlight': function(page, byUser) {
    Home.page = page; if (byUser) { Home.killTimeout(); Home.killByUser = true; }
    SendDataByAjaxRunTemplate('Product/Modules/HighlightTabs', 'Page=' + page, function(rs) { $('product_highlight_tabs').update(rs); });
}, 'highlightShow': function(productID, byUser) {
    if (byUser) { Home.killTimeout(); Home.killByUser = true; }
    var active = Element.Methods.select($('product_highlight_tabs'), '[class="active fL"]')[0]; if (!active) { active = Element.Methods.select($('product_highlight_tabs'), '[class="fL active"]')[0]; }
    var content = active.id.split('_')[2]; if (Element.Methods.hasClassName(active, 'active')) { Element.Methods.removeClassName(active, 'active'); Element.Methods.setStyle('content_tab_' + content, { 'display': 'none' }); }
    Element.Methods.addClassName($('tab_browser_' + productID), 'active'); Element.Methods.setStyle('content_tab_' + productID, { 'display': 'block' });
}
}
function getSelText() { var txt = ''; if (window.getSelection) { txt = window.getSelection(); } else if (document.getSelection) { txt = document.getSelection(); } else if (document.selection) { txt = document.selection.createRange().text; } else return; return txt; }
var TextMarker = { 'active': 0, 'startElement': null, 'endElement': null, 'container': '', 'selectedText': {}, 'setActive': function(status) { TextMarker.active = status; return true; }, 'activate': function() { TextMarker.restoreMouseDownEvt(); TextMarker.setActive(1); }, 'deactivate': function() { TextMarker.removeMouseDownEvt(); TextMarker.removeMouseUpEvt(); TextMarker.setActive(0); }, 'restoreMouseDownEvt': function() { return $(document).observe('mousedown', TextMarker.mouseDownEvt); }, 'restoreMouseUpEvt': function() { return $(document).observe('mouseup', TextMarker.mouseUpEvt); }, 'removeMouseDownEvt': function() { $(document).stopObserving('mousedown', TextMarker.mouseDownEvt); return true; }, 'removeMouseUpEvt': function() { $(document).stopObserving('mouseup', TextMarker.mouseUpEvt); return true; }, 'mouseDownEvt': function(evt) {
    var srcElement = evt.element(); TextMarker.removeMouseDownEvt(); if (!srcElement.descendantOf($(TextMarker.container))) { TextMarker.restoreMouseDownEvt(); return false; }
    TextMarker.startElement = srcElement; TextMarker.restoreMouseUpEvt();
}, 'mouseUpEvt': function(evt) {
    var endElement = evt.element(); TextMarker.removeMouseUpEvt(); if (!endElement.descendantOf($(TextMarker.container))) { TextMarker.restoreMouseDownEvt(); return false; }
    TextMarker.endElement = endElement; var aux = getSelText().toString().split("\n"); var paragrafos = []; for (var i = 0; i < aux.length; i++) { if (aux[i].strip().length > 0) { paragrafos.push(aux[i]); } }
    var paragrafoInicial = TextMarker.startElement.id; paragrafoInicial = paragrafoInicial.replace(/[^0-9]+/, ''); var paragrafoFinal = TextMarker.endElement.id; paragrafoFinal = paragrafoFinal.replace(/[^0-9]+/, ''); var i, n; var conteudo; var posInicial; var posFinal; for (i = paragrafoInicial, n = 0; i <= paragrafoFinal; i++, n++) { posInicial = 0; posFinal = 0; conteudo = paragrafos[n].strip(); posInicial = $('paragrafo' + i).innerHTML.indexOf(conteudo); posFinal = posInicial + conteudo.length; TextMarker.selectedText['paragrafo' + i] = [posInicial, posFinal]; }
    TextMarker.doAction(evt);
}, 'doAction': function(evt) { }
}

var sajax_debug_mode = false; var sajax_request_type = "POST"; var sajax_target_id = ""; var sajax_async_mode = true; var sajax_failure_redirect = ""; var sajax_default_uri = "/ajax_tunnel.php"; var sajax_uri = "/ajax_tunnel.php"; var sajax_wait = 60000; function setAjaxASyncMode(mode) { sajax_async_mode = mode; }
function setAjaxTimeout(timeout) { sajax_wait = timeout; }
divName = ''; divCenter = 0; divNameCenter = ''; SajaxLoadingCount = 0; DefaultErrorMessage = 'Por favor entre em contato como administrador do sistema, atravÃ©s do email bug@metabolikey.com.br'; function voidAction() { }
function SendFormDataByAjaxRunTemplate(template, formName, returnFunction) {
    setAjaxASyncMode(true); divName = TemplateNameToDivName(template)
    formData = create_request_string(formName)
    x_ReceiveFormDataByAjaxRunTemplate(template, formData, returnFunction);
}

function SendFormDataByAjaxRunTemplateHistory(template, formName, returnFunction) {
    setAjaxASyncMode(true); divName = TemplateNameToDivName(template); formData = create_request_string(formName); if (!(returnFunction instanceof Function)) { returnFunction = '{"callback":' + returnFunction.callback.toString().strip() + ', "extra_data": "' + returnFunction.extra_data.toString().strip() + '"}'; }
    var data = "['" + template + "', '" + formData + "', " + returnFunction.toString().strip() + "]"; var md5_data = base64_encode(data); conteudo(md5_data);
}
function SendDataByAjaxRunTemplate(template, data, returnFunction)
{ setAjaxASyncMode(true); divName = TemplateNameToDivName(template); x_ReceiveFormDataByAjaxRunTemplate(template, data, returnFunction); }
function SendDataByAjaxRunTemplateHistory(template, params, returnFunction) {
    setAjaxASyncMode(true); if (!(returnFunction instanceof Function)) { returnFunction = '{"callback":' + returnFunction.callback.toString().strip() + ', "extra_data": "' + returnFunction.extra_data.toString().strip() + '"}'; }
    var data = "['" + template + "', '" + params + "', " + returnFunction.toString().strip() + "]"; var md5_data = base64_encode(data); conteudo(md5_data);
}


var conteudo = onnavigate("conteudo", function(data) {
    if (!data) { return false; }
    data = decodeURIComponent(data); try { data = eval('(' + base64_decode(data) + ')'); } catch (e) { return; }
    var template = data[0]; var params = data[1]; var returnFunction = data[2]; divName = TemplateNameToDivName(template); x_ReceiveFormDataByAjaxRunTemplate(template, params, returnFunction);
}); function TemplateNameToDivName(templateName) {
    while (templateName.indexOf('/') != -1)
        templateName = templateName.replace('/', '_'); return templateName.toLowerCase();
}

function SendFormDataByAjaxRunMethod(formName, className, methodName, returnFunction) {
    setAjaxASyncMode(true); sajax_target_id = ''; form = eval('document.' + formName); if (className != '')
        createHiddenField(formName, 'mdl', className)
    if (methodName != '')
        createHiddenField(formName, 'cmd', methodName)
    formData = create_request_string(formName)
    x_ReceiveFormDataByAjaxRunMethod(formData, returnFunction);
}
function SendDataByAjaxRunMethod(data, className, methodName, returnFunction) {
    setAjaxASyncMode(true); sajax_target_id = ''; data += "&mdl=" + className + "&cmd=" + methodName
    x_ReceiveFormDataByAjaxRunMethod(data, returnFunction);
}

function SendDataByAjaxRunMethodSync(data, className, methodName) {
    setAjaxASyncMode(false); data += "&mdl=" + className + "&cmd=" + methodName
    return x_ReceiveFormDataByAjaxRunMethodSync(data);
}
function SendDataByAjaxRunTemplateSync(template, data)
{ setAjaxASyncMode(false); return x_ReceiveFormDataByAjaxRunTemplateSync(template, data); }
function SendFormDataByAjaxRunMethodSync(formName, className, methodName) {
    setAjaxASyncMode(false); form = eval('document.' + formName); if (className != '')
        createHiddenField(formName, 'mdl', className)
    if (methodName != '')
        createHiddenField(formName, 'cmd', methodName)
    formData = create_request_string(formName)
    return x_ReceiveFormDataByAjaxRunMethodSync(formData);
}
function testAjaxSync() { alert(SendDataByAjaxRunMethodSync('txEmail=rafaeasdasdl@siqueira.ws', 'User', 'CheckEmailAlreadyExists')); }
function SetDivContent(content, auxDivName) {
    if (auxDivName != false && typeof auxDivName != "undefined") { divName = auxDivName; }
    if (divNameCenter != '') {
        hideActiveX()
        $(divName).style.visible = 'none'
    }
    $(divName).update(content); if (popCurrent != null) { Pop.alignCenter(); }
    if (divNameCenter != '') {
        PositionDiv(divNameCenter)
        divNameCenter = ''; $(divName).style.visible = 'block'
    }
}
function SetDivNull(voidValue) { $(divName).innerHTML = ''; }

var Prototype = { Version: '1.6.0.2', Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement('div').__proto__ && document.createElement('div').__proto__ !== document.createElement('form').__proto__ }, ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>', JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(x) { return x } }; if (Prototype.Browser.MobileSafari)
    Prototype.BrowserFeatures.SpecificElementExtensions = false; var Class = { create: function() {
        var parent = null, properties = $A(arguments); if (Object.isFunction(properties[0]))
            parent = properties.shift(); function klass() { this.initialize.apply(this, arguments); }
        Object.extend(klass, Class.Methods); klass.superclass = parent; klass.subclasses = []; if (parent) { var subclass = function() { }; subclass.prototype = parent.prototype; klass.prototype = new subclass; parent.subclasses.push(klass); }
        for (var i = 0; i < properties.length; i++)
            klass.addMethods(properties[i]); if (!klass.prototype.initialize)
            klass.prototype.initialize = Prototype.emptyFunction; klass.prototype.constructor = klass; return klass;
    }
    }; Class.Methods = { addMethods: function(source) {
        var ancestor = this.superclass && this.superclass.prototype; var properties = Object.keys(source); if (!Object.keys({ toString: true }).length)
            properties.push("toString", "valueOf"); for (var i = 0, length = properties.length; i < length; i++) {
            var property = properties[i], value = source[property]; if (ancestor && Object.isFunction(value) && value.argumentNames().first() == "$super") { var method = value, value = Object.extend((function(m) { return function() { return ancestor[m].apply(this, arguments) }; })(property).wrap(method), { valueOf: function() { return method }, toString: function() { return method.toString() } }); }
            this.prototype[property] = value;
        }
        return this;
    }
    }; var Abstract = {}; Object.extend = function(destination, source) {
        for (var property in source)
            destination[property] = source[property]; return destination;
    }; Object.extend(Object, { inspect: function(object) { try { if (Object.isUndefined(object)) return 'undefined'; if (object === null) return 'null'; return object.inspect ? object.inspect() : String(object); } catch (e) { if (e instanceof RangeError) return '...'; throw e; } }, toJSON: function(object) {
        var type = typeof object; switch (type) { case 'undefined': case 'function': case 'unknown': return; case 'boolean': return object.toString(); }
        if (object === null) return 'null'; if (object.toJSON) return object.toJSON(); if (Object.isElement(object)) return; var results = []; for (var property in object) {
            var value = Object.toJSON(object[property]); if (!Object.isUndefined(value))
                results.push(property.toJSON() + ': ' + value);
        }
        return '{' + results.join(', ') + '}';
    }, toQueryString: function(object) { return $H(object).toQueryString(); }, toHTML: function(object) { return object && object.toHTML ? object.toHTML() : String.interpret(object); }, keys: function(object) {
        var keys = []; for (var property in object)
            keys.push(property); return keys;
    }, values: function(object) {
        var values = []; for (var property in object)
            values.push(object[property]); return values;
    }, clone: function(object) { return Object.extend({}, object); }, isElement: function(object) { return object && object.nodeType == 1; }, isArray: function(object) { return object != null && typeof object == "object" && 'splice' in object && 'join' in object; }, isHash: function(object) { return object instanceof Hash; }, isFunction: function(object) { return typeof object == "function"; }, isString: function(object) { return typeof object == "string"; }, isNumber: function(object) { return typeof object == "number"; }, isUndefined: function(object) { return typeof object == "undefined"; }
    }); Object.extend(Function.prototype, { argumentNames: function() { var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); return names.length == 1 && !names[0] ? [] : names; }, bind: function() { if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this; var __method = this, args = $A(arguments), object = args.shift(); return function() { return __method.apply(object, args.concat($A(arguments))); } }, bindAsEventListener: function() { var __method = this, args = $A(arguments), object = args.shift(); return function(event) { return __method.apply(object, [event || window.event].concat(args)); } }, curry: function() { if (!arguments.length) return this; var __method = this, args = $A(arguments); return function() { return __method.apply(this, args.concat($A(arguments))); } }, delay: function() { var __method = this, args = $A(arguments), timeout = args.shift() * 1000; return window.setTimeout(function() { return __method.apply(__method, args); }, timeout); }, wrap: function(wrapper) { var __method = this; return function() { return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); } }, methodize: function() { if (this._methodized) return this._methodized; var __method = this; return this._methodized = function() { return __method.apply(null, [this].concat($A(arguments))); }; } }); Function.prototype.defer = Function.prototype.delay.curry(0.01); Date.prototype.toJSON = function() {
        return '"' + this.getUTCFullYear() + '-' +
(this.getUTCMonth() + 1).toPaddedString(2) + '-' +
this.getUTCDate().toPaddedString(2) + 'T' +
this.getUTCHours().toPaddedString(2) + ':' +
this.getUTCMinutes().toPaddedString(2) + ':' +
this.getUTCSeconds().toPaddedString(2) + 'Z"';
    }; var Try = { these: function() {
        var returnValue; for (var i = 0, length = arguments.length; i < length; i++) { var lambda = arguments[i]; try { returnValue = lambda(); break; } catch (e) { } }
        return returnValue;
    }
    }; RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(str) { return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; var PeriodicalExecuter = Class.create({ initialize: function(callback, frequency) { this.callback = callback; this.frequency = frequency; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) return; clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); } finally { this.currentlyExecuting = false; } } } }); Object.extend(String, { interpret: function(value) { return value == null ? '' : String(value); }, specialChar: { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\'} }); Object.extend(String.prototype, { gsub: function(pattern, replacement) {
        var result = '', source = this, match; replacement = arguments.callee.prepareReplacement(replacement); while (source.length > 0) { if (match = source.match(pattern)) { result += source.slice(0, match.index); result += String.interpret(replacement(match)); source = source.slice(match.index + match[0].length); } else { result += source, source = ''; } }
        return result;
    }, sub: function(pattern, replacement, count) { replacement = this.gsub.prepareReplacement(replacement); count = Object.isUndefined(count) ? 1 : count; return this.gsub(pattern, function(match) { if (--count < 0) return match[0]; return replacement(match); }); }, scan: function(pattern, iterator) { this.gsub(pattern, iterator); return String(this); }, truncate: function(length, truncation) { length = length || 30; truncation = Object.isUndefined(truncation) ? '...' : truncation; return this.length > length ? this.slice(0, length - truncation.length) + truncation : String(this); }, strip: function() { return this.replace(/^\s+/, '').replace(/\s+$/, ''); }, stripTags: function() { return this.replace(/<\/?[^>]+>/gi, ''); }, stripScripts: function() { return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); }, extractScripts: function() { var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); return (this.match(matchAll) || []).map(function(scriptTag) { return (scriptTag.match(matchOne) || ['', ''])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return eval(script) }); }, escapeHTML: function() { var self = arguments.callee; self.text.data = this; return self.div.innerHTML; }, unescapeHTML: function() { var div = new Element('div'); div.innerHTML = this.stripTags(); return div.childNodes[0] ? (div.childNodes.length > 1 ? $A(div.childNodes).inject('', function(memo, node) { return memo + node.nodeValue }) : div.childNodes[0].nodeValue) : ''; }, toQueryParams: function(separator) {
        var match = this.strip().match(/([^?#]*)(#.*)?$/); if (!match) return {}; return match[1].split(separator || '&').inject({}, function(hash, pair) {
            if ((pair = pair.split('='))[0]) {
                var key = decodeURIComponent(pair.shift()); var value = pair.length > 1 ? pair.join('=') : pair[0]; if (value != undefined) value = decodeURIComponent(value); if (key in hash) { if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; hash[key].push(value); }
                else hash[key] = value;
            }
            return hash;
        });
    }, toArray: function() { return this.split(''); }, succ: function() {
        return this.slice(0, this.length - 1) +
String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
    }, times: function(count) { return count < 1 ? '' : new Array(count + 1).join(this); }, camelize: function() {
        var parts = this.split('-'), len = parts.length; if (len == 1) return parts[0]; var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) : parts[0]; for (var i = 1; i < len; i++)
            camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); return camelized;
    }, capitalize: function() { return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); }, underscore: function() { return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/, '#{1}_#{2}').gsub(/([a-z\d])([A-Z])/, '#{1}_#{2}').gsub(/-/, '_').toLowerCase(); }, dasherize: function() { return this.gsub(/_/, '-'); }, inspect: function(useDoubleQuotes) { var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { var character = String.specialChar[match[0]]; return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); }); if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; return "'" + escapedString.replace(/'/g, '\\\'') + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(filter) { return this.sub(filter || Prototype.JSONFilter, '#{1}'); }, isJSON: function() { var str = this; if (str.blank()) return false; str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); }, evalJSON: function(sanitize) {
        var json = this.unfilterJSON(); try { if (!sanitize || json.isJSON()) return eval('(' + json + ')'); } catch (e) { }
        throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
    }, include: function(pattern) { return this.indexOf(pattern) > -1; }, startsWith: function(pattern) { return this.indexOf(pattern) === 0; }, endsWith: function(pattern) { var d = this.length - pattern.length; return d >= 0 && this.lastIndexOf(pattern) === d; }, empty: function() { return this == ''; }, blank: function() { return /^\s*$/.test(this); }, interpolate: function(object, pattern) { return new Template(this, pattern).evaluate(object); }
    }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { escapeHTML: function() { return this.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); }, unescapeHTML: function() { return this.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>'); } }); String.prototype.gsub.prepareReplacement = function(replacement) { if (Object.isFunction(replacement)) return replacement; var template = new Template(replacement); return function(match) { return template.evaluate(match) }; }; String.prototype.parseQuery = String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement('div'), text: document.createTextNode('') }); with (String.prototype.escapeHTML) div.appendChild(text); var Template = Class.create({ initialize: function(template, pattern) { this.template = template.toString(); this.pattern = pattern || Template.Pattern; }, evaluate: function(object) {
        if (Object.isFunction(object.toTemplateReplacements))
            object = object.toTemplateReplacements(); return this.template.gsub(this.pattern, function(match) {
                if (object == null) return ''; var before = match[1] || ''; if (before == '\\') return match[2]; var ctx = object, expr = match[3]; var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; match = pattern.exec(expr); if (match == null) return before; while (match != null) { var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); }
                return before + String.interpret(ctx);
            });
    }
    }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = {}; var Enumerable = { each: function(iterator, context) {
        var index = 0; iterator = iterator.bind(context); try { this._each(function(value) { iterator(value, index++); }); } catch (e) { if (e != $break) throw e; }
        return this;
    }, eachSlice: function(number, iterator, context) {
        iterator = iterator ? iterator.bind(context) : Prototype.K; var index = -number, slices = [], array = this.toArray(); while ((index += number) < array.length)
            slices.push(array.slice(index, index + number)); return slices.collect(iterator, context);
    }, all: function(iterator, context) { iterator = iterator ? iterator.bind(context) : Prototype.K; var result = true; this.each(function(value, index) { result = result && !!iterator(value, index); if (!result) throw $break; }); return result; }, any: function(iterator, context) {
        iterator = iterator ? iterator.bind(context) : Prototype.K; var result = false; this.each(function(value, index) {
            if (result = !!iterator(value, index))
                throw $break;
        }); return result;
    }, collect: function(iterator, context) { iterator = iterator ? iterator.bind(context) : Prototype.K; var results = []; this.each(function(value, index) { results.push(iterator(value, index)); }); return results; }, detect: function(iterator, context) { iterator = iterator.bind(context); var result; this.each(function(value, index) { if (iterator(value, index)) { result = value; throw $break; } }); return result; }, findAll: function(iterator, context) {
        iterator = iterator.bind(context); var results = []; this.each(function(value, index) {
            if (iterator(value, index))
                results.push(value);
        }); return results;
    }, grep: function(filter, iterator, context) {
        iterator = iterator ? iterator.bind(context) : Prototype.K; var results = []; if (Object.isString(filter))
            filter = new RegExp(filter); this.each(function(value, index) {
                if (filter.match(value))
                    results.push(iterator(value, index));
            }); return results;
    }, include: function(object) {
        if (Object.isFunction(this.indexOf))
            if (this.indexOf(object) != -1) return true; var found = false; this.each(function(value) { if (value == object) { found = true; throw $break; } }); return found;
    }, inGroupsOf: function(number, fillWith) { fillWith = Object.isUndefined(fillWith) ? null : fillWith; return this.eachSlice(number, function(slice) { while (slice.length < number) slice.push(fillWith); return slice; }); }, inject: function(memo, iterator, context) { iterator = iterator.bind(context); this.each(function(value, index) { memo = iterator(memo, value, index); }); return memo; }, invoke: function(method) { var args = $A(arguments).slice(1); return this.map(function(value) { return value[method].apply(value, args); }); }, max: function(iterator, context) {
        iterator = iterator ? iterator.bind(context) : Prototype.K; var result; this.each(function(value, index) {
            value = iterator(value, index); if (result == null || value >= result)
                result = value;
        }); return result;
    }, min: function(iterator, context) {
        iterator = iterator ? iterator.bind(context) : Prototype.K; var result; this.each(function(value, index) {
            value = iterator(value, index); if (result == null || value < result)
                result = value;
        }); return result;
    }, partition: function(iterator, context) { iterator = iterator ? iterator.bind(context) : Prototype.K; var trues = [], falses = []; this.each(function(value, index) { (iterator(value, index) ? trues : falses).push(value); }); return [trues, falses]; }, pluck: function(property) { var results = []; this.each(function(value) { results.push(value[property]); }); return results; }, reject: function(iterator, context) {
        iterator = iterator.bind(context); var results = []; this.each(function(value, index) {
            if (!iterator(value, index))
                results.push(value);
        }); return results;
    }, sortBy: function(iterator, context) { iterator = iterator.bind(context); return this.map(function(value, index) { return { value: value, criteria: iterator(value, index) }; }).sort(function(left, right) { var a = left.criteria, b = right.criteria; return a < b ? -1 : a > b ? 1 : 0; }).pluck('value'); }, toArray: function() { return this.map(); }, zip: function() {
        var iterator = Prototype.K, args = $A(arguments); if (Object.isFunction(args.last()))
            iterator = args.pop(); var collections = [this].concat(args).map($A); return this.map(function(value, index) { return iterator(collections.pluck(index)); });
    }, size: function() { return this.toArray().length; }, inspect: function() { return '#<Enumerable:' + this.toArray().inspect() + '>'; }
    }; Object.extend(Enumerable, { map: Enumerable.collect, find: Enumerable.detect, select: Enumerable.findAll, filter: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray, every: Enumerable.all, some: Enumerable.any }); function $A(iterable) { if (!iterable) return []; if (iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; }
if (Prototype.Browser.WebKit) { $A = function(iterable) { if (!iterable) return []; if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && iterable.toArray) return iterable.toArray(); var length = iterable.length || 0, results = new Array(length); while (length--) results[length] = iterable[length]; return results; }; }
Array.from = $A; Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; Object.extend(Array.prototype, { _each: function(iterator) {
    for (var i = 0, length = this.length; i < length; i++)
        iterator(this[i]);
}, clear: function() { this.length = 0; return this; }, first: function() { return this[0]; }, last: function() { return this[this.length - 1]; }, compact: function() { return this.select(function(value) { return value != null; }); }, flatten: function() { return this.inject([], function(array, value) { return array.concat(Object.isArray(value) ? value.flatten() : [value]); }); }, without: function() { var values = $A(arguments); return this.select(function(value) { return !values.include(value); }); }, reverse: function(inline) { return (inline !== false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(sorted) {
    return this.inject([], function(array, value, index) {
        if (0 == index || (sorted ? array.last() != value : !array.include(value)))
            array.push(value); return array;
    });
}, intersect: function(array) { return this.uniq().findAll(function(item) { return array.detect(function(value) { return item === value }); }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return '[' + this.map(Object.inspect).join(', ') + ']'; }, toJSON: function() { var results = []; this.each(function(object) { var value = Object.toJSON(object); if (!Object.isUndefined(value)) results.push(value); }); return '[' + results.join(', ') + ']'; }
}); if (Object.isFunction(Array.prototype.forEach))
    Array.prototype._each = Array.prototype.forEach; if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
        i || (i = 0); var length = this.length; if (i < 0) i = length + i; for (; i < length; i++)
            if (this[i] === item) return i; return -1;
    }; if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; var n = this.slice(0, i).reverse().indexOf(item); return (n < 0) ? n : i - n - 1; }; Array.prototype.toArray = Array.prototype.clone; function $w(string) { if (!Object.isString(string)) return []; string = string.strip(); return string ? string.split(/\s+/) : []; }
if (Prototype.Browser.Opera) {
    Array.prototype.concat = function() {
        var array = []; for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); for (var i = 0, length = arguments.length; i < length; i++) {
            if (Object.isArray(arguments[i])) {
                for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
                    array.push(arguments[i][j]);
            } else { array.push(arguments[i]); }
        }
        return array;
    };
}


Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(iterator) { $R(0, this, true).each(iterator); return this; }, toPaddedString: function(length, radix) { var string = this.toString(radix || 10); return '0'.times(length - string.length) + string; }, toJSON: function() { return isFinite(this) ? this.toString() : 'null'; } }); $w('abs round ceil floor').each(function(method) { Number.prototype[method] = Math[method].methodize(); }); function $H(object) { return new Hash(object); }; var Hash = Class.create(Enumerable, (function() {
	function toQueryPair(key, value) { if (Object.isUndefined(value)) return key; return key + '=' + encodeURIComponent(String.interpret(value)); }
	return { initialize: function(object) { this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); }, _each: function(iterator) { for (var key in this._object) { var value = this._object[key], pair = [key, value]; pair.key = key; pair.value = value; iterator(pair); } }, set: function(key, value) { return this._object[key] = value; }, get: function(key) { return this._object[key]; }, unset: function(key) { var value = this._object[key]; delete this._object[key]; return value; }, toObject: function() { return Object.clone(this._object); }, keys: function() { return this.pluck('key'); }, values: function() { return this.pluck('value'); }, index: function(value) { var match = this.detect(function(pair) { return pair.value === value; }); return match && match.key; }, merge: function(object) { return this.clone().update(object); }, update: function(object) { return new Hash(object).inject(this, function(result, pair) { result.set(pair.key, pair.value); return result; }); }, toQueryString: function() {
		return this.map(function(pair) {
			var key = encodeURIComponent(pair.key), values = pair.value; if (values && typeof values == 'object') {
				if (Object.isArray(values))
					return values.map(toQueryPair.curry(key)).join('&');
			}
			return toQueryPair(key, values);
		}).join('&');
	}, inspect: function() { return '#<Hash:{' + this.map(function(pair) { return pair.map(Object.inspect).join(': '); }).join(', ') + '}>'; }, toJSON: function() { return Object.toJSON(this.toObject()); }, clone: function() { return new Hash(this); } 
	}
})()); Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; Hash.from = $H; var ObjectRange = Class.create(Enumerable, { initialize: function(start, end, exclusive) { this.start = start; this.end = end; this.exclusive = exclusive; }, _each: function(iterator) { var value = this.start; while (this.include(value)) { iterator(value); value = value.succ(); } }, include: function(value) {
	if (value < this.start)
		return false; if (this.exclusive)
		return value < this.end; return value <= this.end;
}
}); var $R = function(start, end, exclusive) { return new ObjectRange(start, end, exclusive); }; var Ajax = { getTransport: function() { return Try.these(function() { return new XMLHttpRequest() }, function() { return new ActiveXObject('Msxml2.XMLHTTP') }, function() { return new ActiveXObject('Microsoft.XMLHTTP') }) || false; }, activeRequestCount: 0 }; Ajax.Responders = { responders: [], _each: function(iterator) { this.responders._each(iterator); }, register: function(responder) {
	if (!this.include(responder))
		this.responders.push(responder);
}, unregister: function(responder) { this.responders = this.responders.without(responder); }, dispatch: function(callback, request, transport, json) { this.each(function(responder) { if (Object.isFunction(responder[callback])) { try { responder[callback].apply(responder, [request, transport, json]); } catch (e) { } } }); }
}; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++ }, onComplete: function() { Ajax.activeRequestCount-- } }); Ajax.Base = Class.create({ initialize: function(options) {
	this.options = { method: 'post', asynchronous: true, contentType: 'application/x-www-form-urlencoded', encoding: 'UTF-8', parameters: '', evalJSON: true, evalJS: true }; Object.extend(this.options, options || {}); this.options.method = this.options.method.toLowerCase(); if (Object.isString(this.options.parameters))
		this.options.parameters = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters))
		this.options.parameters = this.options.parameters.toObject();
}
}); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, url, options) { $super(options); this.transport = Ajax.getTransport(); this.request(url); }, request: function(url) {
	this.url = url; this.method = this.options.method; var params = Object.clone(this.options.parameters); if (!['get', 'post'].include(this.method)) { params['_method'] = this.method; this.method = 'post'; }
	this.parameters = params; if (params = Object.toQueryString(params)) {
		if (this.method == 'get')
			this.url += (this.url.include('?') ? '&' : '?') + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
			params += '&_=';
	}
	try {
		var response = new Ajax.Response(this); if (this.options.onCreate) this.options.onCreate(response); Ajax.Responders.dispatch('onCreate', this, response); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == 'post' ? (this.options.postBody || params) : null; this.transport.send(this.body); if (!this.options.asynchronous && this.transport.overrideMimeType)
			this.onStateChange();
	}
	catch (e) { this.dispatchException(e); }
}, onStateChange: function() {
	var readyState = this.transport.readyState; if (readyState > 1 && !((readyState == 4) && this._complete))
		this.respondToReadyState(this.transport.readyState);
}, setRequestHeaders: function() {
	var headers = { 'X-Requested-With': 'XMLHttpRequest', 'X-Prototype-Version': Prototype.Version, 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' }; if (this.method == 'post') {
		headers['Content-type'] = this.options.contentType +
(this.options.encoding ? '; charset=' + this.options.encoding : ''); if (this.transport.overrideMimeType && (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0, 2005])[1] < 2005)
			headers['Connection'] = 'close';
	}
	if (typeof this.options.requestHeaders == 'object') {
		var extras = this.options.requestHeaders; if (Object.isFunction(extras.push))
			for (var i = 0, length = extras.length; i < length; i += 2)
			headers[extras[i]] = extras[i + 1]; else
			$H(extras).each(function(pair) { headers[pair.key] = pair.value });
	}
	for (var name in headers)
		this.transport.setRequestHeader(name, headers[name]);
}, success: function() { var status = this.getStatus(); return !status || (status >= 200 && status < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (e) { return 0 } }, respondToReadyState: function(readyState) {
	var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); if (state == 'Complete') {
		try { this._complete = true; (this.options['on' + response.status] || this.options['on' + (this.success() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(response, response.headerJSON); } catch (e) { this.dispatchException(e); }
		var contentType = response.getHeader('Content-type'); if (this.options.evalJS == 'force' || (this.options.evalJS && this.isSameOrigin() && contentType && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
			this.evalResponse();
	}
	try { (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); } catch (e) { this.dispatchException(e); }
	if (state == 'Complete') { this.transport.onreadystatechange = Prototype.emptyFunction; }
}, isSameOrigin: function() { var m = this.url.match(/^\s*https?:\/\/[^\/]*/); return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ':' + location.port : '' })); }, getHeader: function(name) { try { return this.transport.getResponseHeader(name) || null; } catch (e) { return null } }, evalResponse: function() { try { return eval((this.transport.responseText || '').unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(exception) { (this.options.onException || Prototype.emptyFunction)(this, exception); Ajax.Responders.dispatch('onException', this, exception); }
}); Ajax.Request.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; Ajax.Response = Class.create({ initialize: function(request) {
	this.request = request; var transport = this.transport = request.transport, readyState = this.readyState = transport.readyState; if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(transport.responseText); this.headerJSON = this._getHeaderJSON(); }
	if (readyState == 4) { var xml = transport.responseXML; this.responseXML = Object.isUndefined(xml) ? null : xml; this.responseJSON = this._getResponseJSON(); }
}, status: 0, statusText: '', getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ''; } catch (e) { return '' } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (e) { return null } }, getResponseHeader: function(name) { return this.transport.getResponseHeader(name); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var json = this.getHeader('X-JSON'); if (!json) return null; json = decodeURIComponent(escape(json)); try { return json.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); } }, _getResponseJSON: function() {
	var options = this.request.options; if (!options.evalJSON || (options.evalJSON != 'force' && !(this.getHeader('Content-type') || '').include('application/json')) || this.responseText.blank())
		return null; try { return this.responseText.evalJSON(options.sanitizeJSON || !this.request.isSameOrigin()); } catch (e) { this.request.dispatchException(e); }
}
}); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, container, url, options) { this.container = { success: (container.success || container), failure: (container.failure || (container.success ? null : container)) }; options = Object.clone(options); var onComplete = options.onComplete; options.onComplete = (function(response, json) { this.updateContent(response.responseText); if (Object.isFunction(onComplete)) onComplete(response, json); }).bind(this); $super(url, options); }, updateContent: function(responseText) {
	var receiver = this.container[this.success() ? 'success' : 'failure'], options = this.options; if (!options.evalScripts) responseText = responseText.stripScripts(); if (receiver = $(receiver)) {
		if (options.insertion) {
			if (Object.isString(options.insertion)) { var insertion = {}; insertion[options.insertion] = responseText; receiver.insert(insertion); }
			else options.insertion(receiver, responseText);
		}
		else receiver.update(responseText);
	}
}
}); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, container, url, options) { $super(options); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = {}; this.container = container; this.url = url; this.start(); }, start: function() { this.options.onComplete = this.updateComplete.bind(this); this.onTimerEvent(); }, stop: function() { this.updater.options.onComplete = undefined; clearTimeout(this.timer); (this.onComplete || Prototype.emptyFunction).apply(this, arguments); }, updateComplete: function(response) {
	if (this.options.decay) { this.decay = (response.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = response.responseText; }
	this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
}, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); }
}); function $(element) {
	if (arguments.length > 1) {
		for (var i = 0, elements = [], length = arguments.length; i < length; i++)
			elements.push($(arguments[i])); return elements;
	}
	if (Object.isString(element))
		element = document.getElementById(element); return Element.extend(element);
}
if (Prototype.BrowserFeatures.XPath) {
	document._getElementsByXPath = function(expression, parentElement) {
		var results = []; var query = document.evaluate(expression, $(parentElement) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var i = 0, length = query.snapshotLength; i < length; i++)
			results.push(Element.extend(query.snapshotItem(i))); return results;
	};
}
if (!window.Node) var Node = {}; if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); }
(function() {
	var element = this.Element; this.Element = function(tagName, attributes) {
		attributes = attributes || {}; tagName = tagName.toLowerCase(); var cache = Element.cache; if (Prototype.Browser.IE && attributes.name) { tagName = '<' + tagName + ' name="' + attributes.name + '">'; delete attributes.name; return Element.writeAttribute(document.createElement(tagName), attributes); }
		if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
	}; Object.extend(this.Element, element || {});
}).call(window); Element.cache = {}; Element.Methods = { visible: function(element) { return $(element).style.display != 'none'; }, toggle: function(element) { element = $(element); Element[Element.visible(element) ? 'hide' : 'show'](element); return element; }, hide: function(element) { $(element).style.display = 'none'; return element; }, show: function(element) { $(element).style.display = ''; return element; }, remove: function(element) { element = $(element); element.parentNode.removeChild(element); return element; }, update: function(element, content) { element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element; }, replace: function(element, content) {
	element = $(element); if (content && content.toElement) content = content.toElement(); else if (!Object.isElement(content)) { content = Object.toHTML(content); var range = element.ownerDocument.createRange(); range.selectNode(element); content.evalScripts.bind(content).defer(); content = range.createContextualFragment(content.stripScripts()); }
	element.parentNode.replaceChild(content, element); return element;
}, insert: function(element, insertions) {
	element = $(element); if (Object.isString(insertions) || Object.isNumber(insertions) || Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
		insertions = { bottom: insertions }; var content, insert, tagName, childNodes; for (var position in insertions) {
		content = insertions[position]; position = position.toLowerCase(); insert = Element._insertionTranslations[position]; if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { insert(element, content); continue; }
		content = Object.toHTML(content); tagName = ((position == 'before' || position == 'after') ? element.parentNode : element).tagName.toUpperCase(); childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); if (position == 'top' || position == 'after') childNodes.reverse(); childNodes.each(insert.curry(element)); content.evalScripts.bind(content).defer();
	}
	return element;
}, wrap: function(element, wrapper, attributes) {
	element = $(element); if (Object.isElement(wrapper))
		$(wrapper).writeAttribute(attributes || {}); else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); else wrapper = new Element('div', wrapper); if (element.parentNode)
		element.parentNode.replaceChild(wrapper, element); wrapper.appendChild(element); return wrapper;
}, inspect: function(element) { element = $(element); var result = '<' + element.tagName.toLowerCase(); $H({ 'id': 'id', 'className': 'class' }).each(function(pair) { var property = pair.first(), attribute = pair.last(); var value = (element[property] || '').toString(); if (value) result += ' ' + attribute + '=' + value.inspect(true); }); return result + '>'; }, recursivelyCollect: function(element, property) {
	element = $(element); var elements = []; while (element = element[property])
		if (element.nodeType == 1)
		elements.push(Element.extend(element)); return elements;
}, ancestors: function(element) { return $(element).recursivelyCollect('parentNode'); }, descendants: function(element) { return $(element).select("*"); }, firstDescendant: function(element) { element = $(element).firstChild; while (element && element.nodeType != 1) element = element.nextSibling; return $(element); }, immediateDescendants: function(element) { if (!(element = $(element).firstChild)) return []; while (element && element.nodeType != 1) element = element.nextSibling; if (element) return [element].concat($(element).nextSiblings()); return []; }, previousSiblings: function(element) { return $(element).recursivelyCollect('previousSibling'); }, nextSiblings: function(element) { return $(element).recursivelyCollect('nextSibling'); }, siblings: function(element) { element = $(element); return element.previousSiblings().reverse().concat(element.nextSiblings()); }, match: function(element, selector) {
	if (Object.isString(selector))
		selector = new Selector(selector); return selector.match($(element));
}, up: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(element.parentNode); var ancestors = element.ancestors(); return Object.isNumber(expression) ? ancestors[expression] : Selector.findElement(ancestors, expression, index); }, down: function(element, expression, index) { element = $(element); if (arguments.length == 1) return element.firstDescendant(); return Object.isNumber(expression) ? element.descendants()[expression] : element.select(expression)[index || 0]; }, previous: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); var previousSiblings = element.previousSiblings(); return Object.isNumber(expression) ? previousSiblings[expression] : Selector.findElement(previousSiblings, expression, index); }, next: function(element, expression, index) { element = $(element); if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); var nextSiblings = element.nextSiblings(); return Object.isNumber(expression) ? nextSiblings[expression] : Selector.findElement(nextSiblings, expression, index); }, select: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element, args); }, adjacent: function() { var args = $A(arguments), element = $(args.shift()); return Selector.findChildElements(element.parentNode, args).without(element); }, identify: function(element) { element = $(element); var id = element.readAttribute('id'), self = arguments.callee; if (id) return id; do { id = 'anonymous_element_' + self.counter++ } while ($(id)); element.writeAttribute('id', id); return id; }, readAttribute: function(element, name) {
	element = $(element); if (Prototype.Browser.IE) { var t = Element._attributeTranslations.read; if (t.values[name]) return t.values[name](element, name); if (t.names[name]) name = t.names[name]; if (name.include(':')) { return (!element.attributes || !element.attributes[name]) ? null : element.attributes[name].value; } }
	return element.getAttribute(name);
}, writeAttribute: function(element, name, value) {
	element = $(element); var attributes = {}, t = Element._attributeTranslations.write; if (typeof name == 'object') attributes = name; else attributes[name] = Object.isUndefined(value) ? true : value; for (var attr in attributes) {
		name = t.names[attr] || attr; value = attributes[attr]; if (t.values[attr]) name = t.values[attr](element, value); if (value === false || value === null)
			element.removeAttribute(name); else if (value === true)
			element.setAttribute(name, name); else element.setAttribute(name, value);
	}
	return element;
}, getHeight: function(element) { return $(element).getDimensions().height; }, getWidth: function(element) { return $(element).getDimensions().width; }, classNames: function(element) { return new Element.ClassNames(element); }, hasClassName: function(element, className) { if (!(element = $(element))) return; var elementClassName = element.className; return (elementClassName.length > 0 && (elementClassName == className || new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); }, addClassName: function(element, className) {
	if (!(element = $(element))) return; if (!element.hasClassName(className))
		element.className += (element.className ? ' ' : '') + className; return element;
}, removeClassName: function(element, className) { if (!(element = $(element))) return; element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); return element; }, toggleClassName: function(element, className) { if (!(element = $(element))) return; return element[element.hasClassName(className) ? 'removeClassName' : 'addClassName'](className); }, cleanWhitespace: function(element) {
	element = $(element); var node = element.firstChild; while (node) {
		var nextNode = node.nextSibling; if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
			element.removeChild(node); node = nextNode;
	}
	return element;
}, empty: function(element) { return $(element).innerHTML.blank(); }, descendantOf: function(element, ancestor) {
	element = $(element), ancestor = $(ancestor); var originalAncestor = ancestor; if (element.compareDocumentPosition)
		return (element.compareDocumentPosition(ancestor) & 8) === 8; if (element.sourceIndex && !Prototype.Browser.Opera) {
		var e = element.sourceIndex, a = ancestor.sourceIndex, nextAncestor = ancestor.nextSibling; if (!nextAncestor) {
			do { ancestor = ancestor.parentNode; }
			while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode);
		}
		if (nextAncestor && nextAncestor.sourceIndex)
			return (e > a && e < nextAncestor.sourceIndex);
	}
	while (element = element.parentNode)
		if (element == originalAncestor) return true; return false;
}, scrollTo: function(element) { element = $(element); var pos = element.cumulativeOffset(); window.scrollTo(pos[0], pos[1]); return element; }, getStyle: function(element, style) {
	element = $(element); style = style == 'float' ? 'cssFloat' : style.camelize(); var value = element.style[style]; if (!value) { var css = document.defaultView.getComputedStyle(element, null); value = css ? css[style] : null; }
	if (style == 'opacity') return value ? parseFloat(value) : 1.0; return value == 'auto' ? null : value;
}, getOpacity: function(element) { return $(element).getStyle('opacity'); }, setStyle: function(element, styles) {
	element = $(element); var elementStyle = element.style, match; if (Object.isString(styles)) { element.style.cssText += ';' + styles; return styles.include('opacity') ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; }
	for (var property in styles)
		if (property == 'opacity') element.setOpacity(styles[property]); else
		elementStyle[(property == 'float' || property == 'cssFloat') ? (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property]; return element;
}, setOpacity: function(element, value) { element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }, getDimensions: function(element) {
	element = $(element); var display = $(element).getStyle('display'); if (display != 'none' && display != null)
		return { width: element.offsetWidth, height: element.offsetHeight }; var els = element.style; var originalVisibility = els.visibility; var originalPosition = els.position; var originalDisplay = els.display; els.visibility = 'hidden'; els.position = 'absolute'; els.display = 'block'; var originalWidth = element.clientWidth; var originalHeight = element.clientHeight; els.display = originalDisplay; els.position = originalPosition; els.visibility = originalVisibility; return { width: originalWidth, height: originalHeight };
}, makePositioned: function(element) {
	element = $(element); var pos = Element.getStyle(element, 'position'); if (pos == 'static' || !pos) { element._madePositioned = true; element.style.position = 'relative'; if (window.opera) { element.style.top = 0; element.style.left = 0; } }
	return element;
}, undoPositioned: function(element) {
	element = $(element); if (element._madePositioned) { element._madePositioned = undefined; element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; }
	return element;
}, makeClipping: function(element) {
	element = $(element); if (element._overflow) return element; element._overflow = Element.getStyle(element, 'overflow') || 'auto'; if (element._overflow !== 'hidden')
		element.style.overflow = 'hidden'; return element;
}, undoClipping: function(element) { element = $(element); if (!element._overflow) return element; element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; element._overflow = null; return element; }, cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return Element._returnOffset(valueL, valueT); }, positionedOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; if (element) { if (element.tagName == 'BODY') break; var p = Element.getStyle(element, 'position'); if (p !== 'static') break; } } while (element); return Element._returnOffset(valueL, valueT); }, absolutize: function(element) { element = $(element); if (element.getStyle('position') == 'absolute') return; var offsets = element.positionedOffset(); var top = offsets[1]; var left = offsets[0]; var width = element.clientWidth; var height = element.clientHeight; element._originalLeft = left - parseFloat(element.style.left || 0); element._originalTop = top - parseFloat(element.style.top || 0); element._originalWidth = element.style.width; element._originalHeight = element.style.height; element.style.position = 'absolute'; element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.width = width + 'px'; element.style.height = height + 'px'; return element; }, relativize: function(element) { element = $(element); if (element.getStyle('position') == 'relative') return; element.style.position = 'relative'; var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); element.style.top = top + 'px'; element.style.left = left + 'px'; element.style.height = element._originalHeight; element.style.width = element._originalWidth; return element; }, cumulativeScrollOffset: function(element) { var valueT = 0, valueL = 0; do { valueT += element.scrollTop || 0; valueL += element.scrollLeft || 0; element = element.parentNode; } while (element); return Element._returnOffset(valueL, valueT); }, getOffsetParent: function(element) {
	if (element.offsetParent) return $(element.offsetParent); if (element == document.body) return $(element); while ((element = element.parentNode) && element != document.body)
		if (Element.getStyle(element, 'position') != 'static')
		return $(element); return $(document.body);
}, viewportOffset: function(forElement) { var valueT = 0, valueL = 0; var element = forElement; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body && Element.getStyle(element, 'position') == 'absolute') break; } while (element = element.offsetParent); element = forElement; do { if (!Prototype.Browser.Opera || element.tagName == 'BODY') { valueT -= element.scrollTop || 0; valueL -= element.scrollLeft || 0; } } while (element = element.parentNode); return Element._returnOffset(valueL, valueT); }, clonePosition: function(element, source) {
	var options = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || {}); source = $(source); var p = source.viewportOffset(); element = $(element); var delta = [0, 0]; var parent = null; if (Element.getStyle(element, 'position') == 'absolute') { parent = element.getOffsetParent(); delta = parent.viewportOffset(); }
	if (parent == document.body) { delta[0] -= document.body.offsetLeft; delta[1] -= document.body.offsetTop; }
	if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; if (options.setWidth) element.style.width = source.offsetWidth + 'px'; if (options.setHeight) element.style.height = source.offsetHeight + 'px'; return element;
}
}; Element.Methods.identify.counter = 1; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: 'class', htmlFor: 'for' }, values: {}} }; if (Prototype.Browser.Opera) {
	Element.Methods.getStyle = Element.Methods.getStyle.wrap(function(proceed, element, style) {
		switch (style) {
			case 'left': case 'top': case 'right': case 'bottom': if (proceed(element, 'position') === 'static') return null; case 'height': case 'width': if (!Element.visible(element)) return null; var dim = parseInt(proceed(element, style), 10); if (dim !== element['offset' + style.capitalize()])
					return dim + 'px'; var properties; if (style === 'height') { properties = ['border-top-width', 'padding-top', 'padding-bottom', 'border-bottom-width']; }
				else { properties = ['border-left-width', 'padding-left', 'padding-right', 'border-right-width']; }
				return properties.inject(dim, function(memo, property) { var val = proceed(element, property); return val === null ? memo : memo - parseInt(val, 10); }) + 'px'; default: return proceed(element, style);
		}
	}); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(function(proceed, element, attribute) { if (attribute === 'title') return element.title; return proceed(element, attribute); });
}
else if (Prototype.Browser.IE) {
	Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(function(proceed, element) { element = $(element); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value; }); $w('positionedOffset viewportOffset').each(function(method) {
		Element.Methods[method] = Element.Methods[method].wrap(function(proceed, element) {
			element = $(element); var position = element.getStyle('position'); if (position !== 'static') return proceed(element); var offsetParent = element.getOffsetParent(); if (offsetParent && offsetParent.getStyle('position') === 'fixed')
				offsetParent.setStyle({ zoom: 1 }); element.setStyle({ position: 'relative' }); var value = proceed(element); element.setStyle({ position: position }); return value;
		});
	}); Element.Methods.getStyle = function(element, style) {
		element = $(element); style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); var value = element.style[style]; if (!value && element.currentStyle) value = element.currentStyle[style]; if (style == 'opacity') {
			if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
				if (value[1]) return parseFloat(value[1]) / 100; return 1.0;
		}
		if (value == 'auto') {
			if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
				return element['offset' + style.capitalize()] + 'px'; return null;
		}
		return value;
	}; Element.Methods.setOpacity = function(element, value) {
		function stripAlpha(filter) { return filter.replace(/alpha\([^\)]*\)/gi, ''); }
		element = $(element); var currentStyle = element.currentStyle; if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle && element.style.zoom == 'normal'))
			element.style.zoom = 1; var filter = element.getStyle('filter'), style = element.style; if (value == 1 || value === '') { (filter = stripAlpha(filter)) ? style.filter = filter : style.removeAttribute('filter'); return element; } else if (value < 0.00001) value = 0; style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100) + ')'; return element;
	}; Element._attributeTranslations = { read: { names: { 'class': 'className', 'for': 'htmlFor' }, values: { _getAttr: function(element, attribute) { return element.getAttribute(attribute, 2); }, _getAttrNode: function(element, attribute) { var node = element.getAttributeNode(attribute); return node ? node.value : ""; }, _getEv: function(element, attribute) { attribute = element.getAttribute(attribute); return attribute ? attribute.toString().slice(23, -2) : null; }, _flag: function(element, attribute) { return $(element).hasAttribute(attribute) ? attribute : null; }, style: function(element) { return element.style.cssText.toLowerCase(); }, title: function(element) { return element.title; } }} }; Element._attributeTranslations.write = { names: Object.extend({ cellpadding: 'cellPadding', cellspacing: 'cellSpacing' }, Element._attributeTranslations.read.names), values: { checked: function(element, value) { element.checked = !!value; }, style: function(element, value) { element.style.cssText = value ? value : ''; } } }; Element._attributeTranslations.has = {}; $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + 'encType maxLength readOnly longDesc').each(function(attr) { Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; Element._attributeTranslations.has[attr.toLowerCase()] = attr; }); (function(v) { Object.extend(v, { href: v._getAttr, src: v._getAttr, type: v._getAttr, action: v._getAttrNode, disabled: v._flag, checked: v._flag, readonly: v._flag, multiple: v._flag, onload: v._getEv, onunload: v._getEv, onclick: v._getEv, ondblclick: v._getEv, onmousedown: v._getEv, onmouseup: v._getEv, onmouseover: v._getEv, onmousemove: v._getEv, onmouseout: v._getEv, onfocus: v._getEv, onblur: v._getEv, onkeypress: v._getEv, onkeydown: v._getEv, onkeyup: v._getEv, onsubmit: v._getEv, onreset: v._getEv, onselect: v._getEv, onchange: v._getEv }); })(Element._attributeTranslations.read.values);
}
else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(element, value) { element = $(element); element.style.opacity = (value == 1) ? 0.999999 : (value === '') ? '' : (value < 0.00001) ? 0 : value; return element; }; }
else if (Prototype.Browser.WebKit) {
	Element.Methods.setOpacity = function(element, value) {
		element = $(element); element.style.opacity = (value == 1 || value === '') ? '' : (value < 0.00001) ? 0 : value; if (value == 1)
			if (element.tagName == 'IMG' && element.width) { element.width++; element.width--; } else try { var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch (e) { }
		return element;
	}; Element.Methods.cumulativeOffset = function(element) {
		var valueT = 0, valueL = 0; do {
			valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; if (element.offsetParent == document.body)
				if (Element.getStyle(element, 'position') == 'absolute') break; element = element.offsetParent;
		} while (element); return Element._returnOffset(valueL, valueT);
	};
}
if (Prototype.Browser.IE || Prototype.Browser.Opera) {
	Element.Methods.update = function(element, content) {
		element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) return element.update().insert(content); content = Object.toHTML(content); var tagName = element.tagName.toUpperCase(); if (tagName in Element._insertionTranslations.tags) { $A(element.childNodes).each(function(node) { element.removeChild(node) }); Element._getContentFromAnonymousElement(tagName, content.stripScripts()).each(function(node) { element.appendChild(node) }); }
		else element.innerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element;
	};
}
if ('outerHTML' in document.createElement('div')) {
	Element.Methods.replace = function(element, content) {
		element = $(element); if (content && content.toElement) content = content.toElement(); if (Object.isElement(content)) { element.parentNode.replaceChild(content, element); return element; }
		content = Object.toHTML(content); var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); if (Element._insertionTranslations.tags[tagName]) {
			var nextSibling = element.next(); var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); parent.removeChild(element); if (nextSibling)
				fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); else
				fragments.each(function(node) { parent.appendChild(node) });
		}
		else element.outerHTML = content.stripScripts(); content.evalScripts.bind(content).defer(); return element;
	};
}
Element._returnOffset = function(l, t) { var result = [l, t]; result.left = l; result.top = t; return result; }; Element._getContentFromAnonymousElement = function(tagName, html) { var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; if (t) { div.innerHTML = t[0] + html + t[1]; t[2].times(function() { div = div.firstChild }); } else div.innerHTML = html; return $A(div.childNodes); }; Element._insertionTranslations = { before: function(element, node) { element.parentNode.insertBefore(node, element); }, top: function(element, node) { element.insertBefore(node, element.firstChild); }, bottom: function(element, node) { element.appendChild(node); }, after: function(element, node) { element.parentNode.insertBefore(node, element.nextSibling); }, tags: { TABLE: ['<table>', '</table>', 1], TBODY: ['<table><tbody>', '</tbody></table>', 2], TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3], TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4], SELECT: ['<select>', '</select>', 1]} }; (function() { Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated = { hasAttribute: function(element, attribute) { attribute = Element._attributeTranslations.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return node && node.specified; } }; Element.Methods.ByTag = {}; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement('div').__proto__) { window.HTMLElement = {}; window.HTMLElement.prototype = document.createElement('div').__proto__; Prototype.BrowserFeatures.ElementExtensions = true; }
Element.extend = (function() {
	if (Prototype.BrowserFeatures.SpecificElementExtensions)
		return Prototype.K; var Methods = {}, ByTag = Element.Methods.ByTag; var extend = Object.extend(function(element) {
			if (!element || element._extendedByPrototype || element.nodeType != 1 || element == window) return element; var methods = Object.clone(Methods), tagName = element.tagName, property, value; if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); for (property in methods) {
				value = methods[property]; if (Object.isFunction(value) && !(property in element))
					element[property] = value.methodize();
			}
			element._extendedByPrototype = Prototype.emptyFunction; return element;
		}, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(Methods, Element.Methods); Object.extend(Methods, Element.Methods.Simulated); } } }); extend.refresh(); return extend;
})(); Element.hasAttribute = function(element, attribute) { if (element.hasAttribute) return element.hasAttribute(attribute); return Element.Methods.Simulated.hasAttribute(element, attribute); }; Element.addMethods = function(methods) {
	var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; if (!methods) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { "FORM": Object.clone(Form.Methods), "INPUT": Object.clone(Form.Element.Methods), "SELECT": Object.clone(Form.Element.Methods), "TEXTAREA": Object.clone(Form.Element.Methods) }); }
	if (arguments.length == 2) { var tagName = methods; methods = arguments[1]; }
	if (!tagName) Object.extend(Element.Methods, methods || {}); else { if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName); }
	function extend(tagName) {
		tagName = tagName.toUpperCase(); if (!Element.Methods.ByTag[tagName])
			Element.Methods.ByTag[tagName] = {}; Object.extend(Element.Methods.ByTag[tagName], methods);
	}


function copy(methods, destination, onlyIfAbsent) {
    onlyIfAbsent = onlyIfAbsent || false; for (var property in methods) {
        var value = methods[property]; if (!Object.isFunction(value)) continue; if (!onlyIfAbsent || !(property in destination))
            destination[property] = value.methodize();
    }
}

	
	function findDOMClass(tagName) { var klass; var trans = { "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": "FrameSet", "IFRAME": "IFrame" }; if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName + 'Element'; if (window[klass]) return window[klass]; klass = 'HTML' + tagName.capitalize() + 'Element'; if (window[klass]) return window[klass]; window[klass] = {}; window[klass].prototype = document.createElement(tagName).__proto__; return window[klass]; }
	if (F.ElementExtensions) { copy(Element.Methods, HTMLElement.prototype); copy(Element.Methods.Simulated, HTMLElement.prototype, true); }
	if (F.SpecificElementExtensions) { for (var tag in Element.Methods.ByTag) { var klass = findDOMClass(tag); if (Object.isUndefined(klass)) continue; copy(T[tag], klass.prototype); } }
	Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) Element.extend.refresh(); Element.cache = {};
}; document.viewport = { getDimensions: function() { var dimensions = {}; var B = Prototype.Browser; $w('width height').each(function(d) { var D = d.capitalize(); dimensions[d] = (B.WebKit && !document.evaluate) ? self['inner' + D] : (B.Opera) ? document.body['client' + D] : document.documentElement['client' + D]; }); return dimensions; }, getWidth: function() { return this.getDimensions().width; }, getHeight: function() { return this.getDimensions().height; }, getScrollOffsets: function() { return Element._returnOffset(window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; var Selector = Class.create({ initialize: function(expression) { this.expression = expression.strip(); this.compileMatcher(); }, shouldUseXPath: function() {
	if (!Prototype.BrowserFeatures.XPath) return false; var e = this.expression; if (Prototype.Browser.WebKit && (e.include("-of-type") || e.include(":empty")))
		return false; if ((/(\[[\w-]*?:|:checked)/).test(this.expression))
		return false; return true;
}, compileMatcher: function() {
	if (this.shouldUseXPath())
		return this.compileXPathMatcher(); var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; }
	this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : new Template(c[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } }
	this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] = this.matcher;
}, compileXPathMatcher: function() {
	var e = this.expression, ps = Selector.patterns, x = Selector.xpath, le, m; if (Selector._cache[e]) { this.xpath = Selector._cache[e]; return; }
	this.matcher = ['.//*']; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { if (m = e.match(ps[i])) { this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } }
	this.xpath = this.matcher.join(''); Selector._cache[this.expression] = this.xpath;
}, findElements: function(root) { root = root || document; if (this.xpath) return document._getElementsByXPath(this.xpath, root); return this.matcher(root); }, match: function(element) {
	this.tokens = []; var e = this.expression, ps = Selector.patterns, as = Selector.assertions; var le, p, m; while (e && le !== e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { if (as[i]) { this.tokens.push([i, Object.clone(m)]); e = e.replace(m[0], ''); } else { return this.findElements(document).include(element); } } } }
	var match = true, name, matches; for (var i = 0, token; token = this.tokens[i]; i++) { name = token[0], matches = token[1]; if (!Selector.assertions[name](element, matches)) { match = false; break; } }
	return match;
}, toString: function() { return this.expression; }, inspect: function() { return "#<Selector:" + this.expression.inspect() + ">"; }
}); Object.extend(Selector, { _cache: {}, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: '/following-sibling::*', tagName: function(m) { if (m[1] == '*') return ''; return "[local-name()='" + m[1].toLowerCase() + "' or local-name()='" + m[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: function(m) { m[1] = m[1].toLowerCase(); return new Template("[@#{1}]").evaluate(m); }, attr: function(m) { m[1] = m[1].toLowerCase(); m[3] = m[5] || m[6]; return new Template(Selector.xpath.operators[m[2]]).evaluate(m); }, pseudo: function(m) { var h = Selector.xpath.pseudos[m[1]]; if (!h) return ''; if (Object.isFunction(h)) return h(m); return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); }, operators: { '=': "[@#{1}='#{3}']", '!=': "[@#{1}!='#{3}']", '^=': "[starts-with(@#{1}, '#{3}')]", '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", '*=': "[contains(@#{1}, '#{3}')]", '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { 'first-child': '[not(preceding-sibling::*)]', 'last-child': '[not(following-sibling::*)]', 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", 'checked': "[@checked]", 'disabled': "[@disabled]", 'enabled': "[not(@disabled)]", 'not': function(m) {
	var e = m[6], p = Selector.patterns, x = Selector.xpath, le, v; var exclusion = []; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in p) { if (m = e.match(p[i])) { v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); exclusion.push("(" + v.substring(1, v.length - 1) + ")"); e = e.replace(m[0], ''); break; } } }
	return "[not(" + exclusion.join(" and ") + ")]";
}, 'nth-child': function(m) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); }, 'nth-last-child': function(m) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); }, 'nth-of-type': function(m) { return Selector.xpath.pseudos.nth("position() ", m); }, 'nth-last-of-type': function(m) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); }, 'first-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); }, 'last-of-type': function(m) { m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); }, 'only-of-type': function(m) { var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); }, nth: function(fragment, m) {
	var mm, formula = m[6], predicate; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; if (mm = formula.match(/^(\d+)$/))
		return '[' + fragment + "= " + mm[1] + ']'; if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { if (mm[1] == "-") mm[1] = -1; var a = mm[1] ? Number(mm[1]) : 1; var b = mm[2] ? Number(mm[2]) : 0; predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + "((#{fragment} - #{b}) div #{a} >= 0)]"; return new Template(predicate).evaluate({ fragment: fragment, a: a, b: b }); }
} 
}
}, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c);      c = false;', className: 'n = h.className(n, r, "#{1}", c);    c = false;', id: 'n = h.id(n, r, "#{1}", c);           c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', attr: function(m) { m[3] = (m[5] || m[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m); }, pseudo: function(m) { if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: { laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, attrPresence: /^\[([\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ }, assertions: { tagName: function(element, matches) { return matches[1].toUpperCase() == element.tagName.toUpperCase(); }, className: function(element, matches) { return Element.hasClassName(element, matches[1]); }, id: function(element, matches) { return element.id === matches[1]; }, attrPresence: function(element, matches) { return Element.hasAttribute(element, matches[1]); }, attr: function(element, matches) { var nodeValue = Element.readAttribute(element, matches[1]); return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]); } }, handlers: { concat: function(a, b) {
	for (var i = 0, node; node = b[i]; i++)
		a.push(node); return a;
}, mark: function(nodes) {
	var _true = Prototype.emptyFunction; for (var i = 0, node; node = nodes[i]; i++)
		node._countedByPrototype = _true; return nodes;
}, unmark: function(nodes) {
	for (var i = 0, node; node = nodes[i]; i++)
		node._countedByPrototype = undefined; return nodes;
}, index: function(parentNode, reverse, ofType) {
	parentNode._countedByPrototype = Prototype.emptyFunction; if (reverse) { for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { var node = nodes[i]; if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++; } } else {
		for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
			if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
	}
}, unique: function(nodes) {
	if (nodes.length == 0) return nodes; var results = [], n; for (var i = 0, l = nodes.length; i < l; i++)
		if (!(n = nodes[i])._countedByPrototype) { n._countedByPrototype = Prototype.emptyFunction; results.push(Element.extend(n)); }
	return Selector.handlers.unmark(results);
}, descendant: function(nodes) {
	var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++)
		h.concat(results, node.getElementsByTagName('*')); return results;
}, child: function(nodes) {
	var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++) {
		for (var j = 0, child; child = node.childNodes[j]; j++)
			if (child.nodeType == 1 && child.tagName != '!') results.push(child);
	}
	return results;
}, adjacent: function(nodes) {
	for (var i = 0, results = [], node; node = nodes[i]; i++) { var next = this.nextElementSibling(node); if (next) results.push(next); }
	return results;
}, laterSibling: function(nodes) {
	var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++)
		h.concat(results, Element.nextSiblings(node)); return results;
}, nextElementSibling: function(node) {
	while (node = node.nextSibling)
		if (node.nodeType == 1) return node; return null;
}, previousElementSibling: function(node) {
	while (node = node.previousSibling)
		if (node.nodeType == 1) return node; return null;
}, tagName: function(nodes, root, tagName, combinator) {
	var uTagName = tagName.toUpperCase(); var results = [], h = Selector.handlers; if (nodes) {
		if (combinator) {
			if (combinator == "descendant") {
				for (var i = 0, node; node = nodes[i]; i++)
					h.concat(results, node.getElementsByTagName(tagName)); return results;
			} else nodes = this[combinator](nodes); if (tagName == "*") return nodes;
		}
		for (var i = 0, node; node = nodes[i]; i++)
			if (node.tagName.toUpperCase() === uTagName) results.push(node); return results;
	} else return root.getElementsByTagName(tagName);
}, id: function(nodes, root, id, combinator) {
	var targetNode = $(id), h = Selector.handlers; if (!targetNode) return []; if (!nodes && root == document) return [targetNode]; if (nodes) {
		if (combinator) {
			if (combinator == 'child') {
				for (var i = 0, node; node = nodes[i]; i++)
					if (targetNode.parentNode == node) return [targetNode];
			} else if (combinator == 'descendant') {
				for (var i = 0, node; node = nodes[i]; i++)
					if (Element.descendantOf(targetNode, node)) return [targetNode];
			} else if (combinator == 'adjacent') {
				for (var i = 0, node; node = nodes[i]; i++)
					if (Selector.handlers.previousElementSibling(targetNode) == node)
					return [targetNode];
			} else nodes = h[combinator](nodes);
		}
		for (var i = 0, node; node = nodes[i]; i++)
			if (node == targetNode) return [targetNode]; return [];
	}
	return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
}, className: function(nodes, root, className, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); return Selector.handlers.byClassName(nodes, root, className); }, byClassName: function(nodes, root, className) {
	if (!nodes) nodes = Selector.handlers.descendant([root]); var needle = ' ' + className + ' '; for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
		nodeClassName = node.className; if (nodeClassName.length == 0) continue; if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
			results.push(node);
	}
	return results;
}, attrPresence: function(nodes, root, attr, combinator) {
	if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var results = []; for (var i = 0, node; node = nodes[i]; i++)
		if (Element.hasAttribute(node, attr)) results.push(node); return results;
}, attr: function(nodes, root, attr, value, operator, combinator) {
	if (!nodes) nodes = root.getElementsByTagName("*"); if (nodes && combinator) nodes = this[combinator](nodes); var handler = Selector.operators[operator], results = []; for (var i = 0, node; node = nodes[i]; i++) { var nodeValue = Element.readAttribute(node, attr); if (nodeValue === null) continue; if (handler(nodeValue, value)) results.push(node); }
	return results;
}, pseudo: function(nodes, name, value, root, combinator) { if (nodes && combinator) nodes = this[combinator](nodes); if (!nodes) nodes = root.getElementsByTagName("*"); return Selector.pseudos[name](nodes, value, root); }
}, pseudos: { 'first-child': function(nodes, value, root) {
	for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.previousElementSibling(node)) continue; results.push(node); }
	return results;
}, 'last-child': function(nodes, value, root) {
	for (var i = 0, results = [], node; node = nodes[i]; i++) { if (Selector.handlers.nextElementSibling(node)) continue; results.push(node); }
	return results;
}, 'only-child': function(nodes, value, root) {
	var h = Selector.handlers; for (var i = 0, results = [], node; node = nodes[i]; i++)
		if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
		results.push(node); return results;
}, 'nth-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root); }, 'nth-last-child': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true); }, 'nth-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, false, true); }, 'nth-last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, formula, root, true, true); }, 'first-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, false, true); }, 'last-of-type': function(nodes, formula, root) { return Selector.pseudos.nth(nodes, "1", root, true, true); }, 'only-of-type': function(nodes, formula, root) { var p = Selector.pseudos; return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); }, getIndices: function(a, b, total) { if (a == 0) return b > 0 ? [b] : []; return $R(1, total).inject([], function(memo, i) { if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); return memo; }); }, nth: function(nodes, formula, root, reverse, ofType) {
	if (nodes.length == 0) return []; if (formula == 'even') formula = '2n+0'; if (formula == 'odd') formula = '2n+1'; var h = Selector.handlers, results = [], indexed = [], m; h.mark(nodes); for (var i = 0, node; node = nodes[i]; i++) { if (!node.parentNode._countedByPrototype) { h.index(node.parentNode, reverse, ofType); indexed.push(node.parentNode); } }
	if (formula.match(/^\d+$/)) {
		formula = Number(formula); for (var i = 0, node; node = nodes[i]; i++)
			if (node.nodeIndex == formula) results.push(node);
	} else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) {
		if (m[1] == "-") m[1] = -1; var a = m[1] ? Number(m[1]) : 1; var b = m[2] ? Number(m[2]) : 0; var indices = Selector.pseudos.getIndices(a, b, nodes.length); for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
			for (var j = 0; j < l; j++)
				if (node.nodeIndex == indices[j]) results.push(node);
		}
	}
	h.unmark(nodes); h.unmark(indexed); return results;
}, 'empty': function(nodes, value, root) {
	for (var i = 0, results = [], node; node = nodes[i]; i++) { if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; results.push(node); }
	return results;
}, 'not': function(nodes, selector, root) {
	var h = Selector.handlers, selectorType, m; var exclusions = new Selector(selector).findElements(root); h.mark(exclusions); for (var i = 0, results = [], node; node = nodes[i]; i++)
		if (!node._countedByPrototype) results.push(node); h.unmark(exclusions); return results;
}, 'enabled': function(nodes, value, root) {
	for (var i = 0, results = [], node; node = nodes[i]; i++)
		if (!node.disabled) results.push(node); return results;
}, 'disabled': function(nodes, value, root) {
	for (var i = 0, results = [], node; node = nodes[i]; i++)
		if (node.disabled) results.push(node); return results;
}, 'checked': function(nodes, value, root) {
	for (var i = 0, results = [], node; node = nodes[i]; i++)
		if (node.checked) results.push(node); return results;
}
}, operators: { '=': function(nv, v) { return nv == v; }, '!=': function(nv, v) { return nv != v; }, '^=': function(nv, v) { return nv.startsWith(v); }, '$=': function(nv, v) { return nv.endsWith(v); }, '*=': function(nv, v) { return nv.include(v); }, '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } }, split: function(expression) { var expressions = []; expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { expressions.push(m[1].strip()); }); return expressions; }, matchElements: function(elements, expression) {
	var matches = $$(expression), h = Selector.handlers; h.mark(matches); for (var i = 0, results = [], element; element = elements[i]; i++)
		if (element._countedByPrototype) results.push(element); h.unmark(matches); return results;
}, findElement: function(elements, expression, index) {
	if (Object.isNumber(expression)) { index = expression; expression = false; }
	return Selector.matchElements(elements, expression || '*')[index || 0];
}, findChildElements: function(element, expressions) {
	expressions = Selector.split(expressions.join(',')); var results = [], h = Selector.handlers; for (var i = 0, l = expressions.length, selector; i < l; i++) { selector = new Selector(expressions[i].strip()); h.concat(results, selector.findElements(element)); }
	return (l > 1) ? h.unique(results) : results;
}
}); if (Prototype.Browser.IE) {
	Object.extend(Selector.handlers, { concat: function(a, b) {
		for (var i = 0, node; node = b[i]; i++)
			if (node.tagName !== "!") a.push(node); return a;
	}, unmark: function(nodes) {
		for (var i = 0, node; node = nodes[i]; i++)
			node.removeAttribute('_countedByPrototype'); return nodes;
	}
	});
}



function $$() { return Selector.findChildElements(document, $A(arguments)); }

var Form = { reset: function(form) { $(form).reset(); return form; }, serializeElements: function(elements, options) {
	if (typeof options != 'object') options = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash = true; var key, value, submitted = false, submit = options.submit; var data = elements.inject({}, function(result, element) {
		if (!element.disabled && element.name) {
			key = element.name; value = $(element).getValue(); if (value != null && (element.type != 'submit' || (!submitted && submit !== false && (!submit || key == submit) && (submitted = true)))) {
				if (key in result) { if (!Object.isArray(result[key])) result[key] = [result[key]]; result[key].push(value); }
				else result[key] = value;
			}
		}
		return result;
	}); return options.hash ? data : Object.toQueryString(data);
}
}; Form.Methods = { serialize: function(form, options) { return Form.serializeElements(Form.getElements(form), options); }, getElements: function(form) {
	return $A($(form).getElementsByTagName('*')).inject([], function(elements, child) {
		if (Form.Element.Serializers[child.tagName.toLowerCase()])
			elements.push(Element.extend(child)); return elements;
	});
}, getInputs: function(form, typeName, name) {
	form = $(form); var inputs = form.getElementsByTagName('input'); if (!typeName && !name) return $A(inputs).map(Element.extend); for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
		var input = inputs[i]; if ((typeName && input.type != typeName) || (name && input.name != name))
			continue; matchingInputs.push(Element.extend(input));
	}
	return matchingInputs;
}, disable: function(form) { form = $(form); Form.getElements(form).invoke('disable'); return form; }, enable: function(form) { form = $(form); Form.getElements(form).invoke('enable'); return form; }, findFirstElement: function(form) { var elements = $(form).getElements().findAll(function(element) { return 'hidden' != element.type && !element.disabled; }); var firstByIndex = elements.findAll(function(element) { return element.hasAttribute('tabIndex') && element.tabIndex >= 0; }).sortBy(function(element) { return element.tabIndex }).first(); return firstByIndex ? firstByIndex : elements.find(function(element) { return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); }); }, focusFirstElement: function(form) { form = $(form); form.findFirstElement().activate(); return form; }, request: function(form, options) {
	form = $(form), options = Object.clone(options || {}); var params = options.parameters, action = form.readAttribute('action') || ''; if (action.blank()) action = window.location.href; options.parameters = form.serialize(true); if (params) { if (Object.isString(params)) params = params.toQueryParams(); Object.extend(options.parameters, params); }
	if (form.hasAttribute('method') && !options.method)
		options.method = form.method; return new Ajax.Request(action, options);
}
}; Form.Element = { focus: function(element) { $(element).focus(); return element; }, select: function(element) { $(element).select(); return element; } }; Form.Element.Methods = { serialize: function(element) {
	element = $(element); if (!element.disabled && element.name) { var value = element.getValue(); if (value != undefined) { var pair = {}; pair[element.name] = value; return Object.toQueryString(pair); } }
	return '';
}, getValue: function(element) { element = $(element); var method = element.tagName.toLowerCase(); return Form.Element.Serializers[method](element); }, setValue: function(element, value) { element = $(element); var method = element.tagName.toLowerCase(); Form.Element.Serializers[method](element, value); return element; }, clear: function(element) { $(element).value = ''; return element; }, present: function(element) { return $(element).value != ''; }, activate: function(element) {
	element = $(element); try {
		element.focus(); if (element.select && (element.tagName.toLowerCase() != 'input' || !['button', 'reset', 'submit'].include(element.type)))
			element.select();
	} catch (e) { }
	return element;
}, disable: function(element) { element = $(element); element.blur(); element.disabled = true; return element; }, enable: function(element) { element = $(element); element.disabled = false; return element; }
}; var Field = Form.Element; var $F = Form.Element.Methods.getValue; Form.Element.Serializers = { input: function(element, value) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': return Form.Element.Serializers.inputSelector(element, value); default: return Form.Element.Serializers.textarea(element, value); } }, inputSelector: function(element, value) { if (Object.isUndefined(value)) return element.checked ? element.value : null; else element.checked = !!value; }, textarea: function(element, value) { if (Object.isUndefined(value)) return element.value; else element.value = value; }, select: function(element, index) {
	if (Object.isUndefined(index))
		return this[element.type == 'select-one' ? 'selectOne' : 'selectMany'](element); else {
		var opt, value, single = !Object.isArray(index); for (var i = 0, length = element.length; i < length; i++) {
			opt = element.options[i]; value = this.optionValue(opt); if (single) { if (value == index) { opt.selected = true; return; } }
			else opt.selected = index.include(value);
		}
	}
}, selectOne: function(element) { var index = element.selectedIndex; return index >= 0 ? this.optionValue(element.options[index]) : null; }, selectMany: function(element) {
	var values, length = element.length; if (!length) return null; for (var i = 0, values = []; i < length; i++) { var opt = element.options[i]; if (opt.selected) values.push(this.optionValue(opt)); }
	return values;
}, optionValue: function(opt) { return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; }
}; Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, element, frequency, callback) { $super(callback, frequency); this.element = $(element); this.lastValue = this.getValue(); }, execute: function() { var value = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(value) ? this.lastValue != value : String(this.lastValue) != String(value)) { this.callback(this.element, value); this.lastValue = value; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); Abstract.EventObserver = Class.create({ initialize: function(element, callback) {
	this.element = $(element); this.callback = callback; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == 'form')
		this.registerFormCallbacks(); else
		this.registerCallback(this.element);
}, onElementEvent: function() { var value = this.getValue(); if (this.lastValue != value) { this.callback(this.element, value); this.lastValue = value; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(element) { if (element.type) { switch (element.type.toLowerCase()) { case 'checkbox': case 'radio': Event.observe(element, 'click', this.onElementEvent.bind(this)); break; default: Event.observe(element, 'change', this.onElementEvent.bind(this)); break; } } }
}); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) var Event = {}; Object.extend(Event, { KEY_BACKSPACE: 8, KEY_TAB: 9, KEY_RETURN: 13, KEY_ESC: 27, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_DELETE: 46, KEY_HOME: 36, KEY_END: 35, KEY_PAGEUP: 33, KEY_PAGEDOWN: 34, KEY_INSERT: 45, cache: {}, relatedTarget: function(event) {
	var element; switch (event.type) { case 'mouseover': element = event.fromElement; break; case 'mouseout': element = event.toElement; break; default: return null; }
	return Element.extend(element);
}
}); Event.Methods = (function() {
	var isButton; if (Prototype.Browser.IE) { var buttonMap = { 0: 1, 1: 4, 2: 2 }; isButton = function(event, code) { return event.button == buttonMap[code]; }; } else if (Prototype.Browser.WebKit) { isButton = function(event, code) { switch (code) { case 0: return event.which == 1 && !event.metaKey; case 1: return event.which == 1 && event.metaKey; default: return false; } }; } else { isButton = function(event, code) { return event.which ? (event.which === code + 1) : (event.button === code); }; }
	return { isLeftClick: function(event) { return isButton(event, 0) }, isMiddleClick: function(event) { return isButton(event, 1) }, isRightClick: function(event) { return isButton(event, 2) }, element: function(event) { var node = Event.extend(event).target; return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); }, findElement: function(event, expression) { var element = Event.element(event); if (!expression) return element; var elements = [element].concat(element.ancestors()); return Selector.findElement(elements, expression, 0); }, pointer: function(event) {
		return { x: event.pageX || (event.clientX +
(document.documentElement.scrollLeft || document.body.scrollLeft)), y: event.pageY || (event.clientY +
(document.documentElement.scrollTop || document.body.scrollTop))
		};
	}, pointerX: function(event) { return Event.pointer(event).x }, pointerY: function(event) { return Event.pointer(event).y }, stop: function(event) { Event.extend(event); event.preventDefault(); event.stopPropagation(); event.stopped = true; }
	};
})(); Event.extend = (function() { var methods = Object.keys(Event.Methods).inject({}, function(m, name) { m[name] = Event.Methods[name].methodize(); return m; }); if (Prototype.Browser.IE) { Object.extend(methods, { stopPropagation: function() { this.cancelBubble = true }, preventDefault: function() { this.returnValue = false }, inspect: function() { return "[object Event]" } }); return function(event) { if (!event) return false; if (event._extendedByPrototype) return event; event._extendedByPrototype = Prototype.emptyFunction; var pointer = Event.pointer(event); Object.extend(event, { target: event.srcElement, relatedTarget: Event.relatedTarget(event), pageX: pointer.x, pageY: pointer.y }); return Object.extend(event, methods); }; } else { Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; Object.extend(Event.prototype, methods); return Prototype.K; } })(); Object.extend(Event, (function() {
	var cache = Event.cache; function getEventID(element) { if (element._prototypeEventID) return element._prototypeEventID[0]; arguments.callee.id = arguments.callee.id || 1; return element._prototypeEventID = [++arguments.callee.id]; }

function getDOMEventName(eventName) { if (eventName && eventName.include(':')) return "dataavailable"; return eventName; }
function getCacheForID(id) { return cache[id] = cache[id] || {}; }
function getWrappersForEventName(id, eventName) { var c = getCacheForID(id); return c[eventName] = c[eventName] || []; }


	function createWrapper(element, eventName, handler) {
		var id = getEventID(element); var c = getWrappersForEventName(id, eventName); if (c.pluck("handler").include(handler)) return false; var wrapper = function(event) {
			if (!Event || !Event.extend || (event.eventName && event.eventName != eventName))
				return false; Event.extend(event); handler.call(element, event);
		}; wrapper.handler = handler; c.push(wrapper); return wrapper;
	}
	function findWrapper(id, eventName, handler) { var c = getWrappersForEventName(id, eventName); return c.find(function(wrapper) { return wrapper.handler == handler }); }
	function destroyWrapper(id, eventName, handler) { var c = getCacheForID(id); if (!c[eventName]) return false; c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); }
	function destroyCache() {
		for (var id in cache)
			for (var eventName in cache[id])
			cache[id][eventName] = null;
	}
	if (window.attachEvent) { window.attachEvent("onunload", destroyCache); }
	return { observe: function(element, eventName, handler) {
		element = $(element); var name = getDOMEventName(eventName); var wrapper = createWrapper(element, eventName, handler); if (!wrapper) return element; if (element.addEventListener) { element.addEventListener(name, wrapper, false); } else { element.attachEvent("on" + name, wrapper); }
		return element;
	}, stopObserving: function(element, eventName, handler) {
		element = $(element); var id = getEventID(element), name = getDOMEventName(eventName); if (!handler && eventName) { getWrappersForEventName(id, eventName).each(function(wrapper) { element.stopObserving(eventName, wrapper.handler); }); return element; } else if (!eventName) { Object.keys(getCacheForID(id)).each(function(eventName) { element.stopObserving(eventName); }); return element; }
		var wrapper = findWrapper(id, eventName, handler); if (!wrapper) return element; if (element.removeEventListener) { element.removeEventListener(name, wrapper, false); } else { element.detachEvent("on" + name, wrapper); }
		destroyWrapper(id, eventName, handler); return element;
	}, fire: function(element, eventName, memo) {
		element = $(element); if (element == document && document.createEvent && !element.dispatchEvent)
			element = document.documentElement; var event; if (document.createEvent) { event = document.createEvent("HTMLEvents"); event.initEvent("dataavailable", true, true); } else { event = document.createEventObject(); event.eventType = "ondataavailable"; }
		event.eventName = eventName; event.memo = memo || {}; if (document.createEvent) { element.dispatchEvent(event); } else { element.fireEvent(event.eventType, event); }
		return Event.extend(event);
	}
	};
})()); Object.extend(Event, Event.Methods); Element.addMethods({ fire: Event.fire, observe: Event.observe, stopObserving: Event.stopObserving }); Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), stopObserving: Element.Methods.stopObserving.methodize(), loaded: false }); (function() {
	var timer; function fireContentLoadedEvent() { if (document.loaded) return; if (timer) window.clearInterval(timer); document.fire("dom:loaded"); document.loaded = true; }
	if (document.addEventListener) {
		if (Prototype.Browser.WebKit) {
			timer = window.setInterval(function() {
				if (/loaded|complete/.test(document.readyState))
					fireContentLoadedEvent();
			}, 0); Event.observe(window, "load", fireContentLoadedEvent);
		} else { document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false); }
	} else { document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>"); $("__onDOMContentLoaded").onreadystatechange = function() { if (this.readyState == "complete") { this.onreadystatechange = null; fireContentLoadedEvent(); } }; }
})(); Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(element, content) { return Element.insert(element, { before: content }); }, Top: function(element, content) { return Element.insert(element, { top: content }); }, Bottom: function(element, content) { return Element.insert(element, { bottom: content }); }, After: function(element, content) { return Element.insert(element, { after: content }); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); var Position = { includeScrollOffsets: false, prepare: function() { this.deltaX = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; this.deltaY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }, within: function(element, x, y) {
	if (this.includeScrollOffsets)
		return this.withinIncludingScrolloffsets(element, x, y); this.xcomp = x; this.ycomp = y; this.offset = Element.cumulativeOffset(element); return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight && x >= this.offset[0] && x < this.offset[0] + element.offsetWidth);
}, withinIncludingScrolloffsets: function(element, x, y) { var offsetcache = Element.cumulativeScrollOffset(element); this.xcomp = x + offsetcache[0] - this.deltaX; this.ycomp = y + offsetcache[1] - this.deltaY; this.offset = Element.cumulativeOffset(element); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + element.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + element.offsetWidth); }, overlap: function(mode, element) {
	if (!mode) return 0; if (mode == 'vertical')
		return ((this.offset[1] + element.offsetHeight) - this.ycomp) / element.offsetHeight; if (mode == 'horizontal')
		return ((this.offset[0] + element.offsetWidth) - this.xcomp) / element.offsetWidth;
}, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(element) { Position.prepare(); return Element.absolutize(element); }, relativize: function(element) { Position.prepare(); return Element.relativize(element); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(source, target, options) { options = options || {}; return Element.clonePosition(target, source, options); }
}; if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods) {
	function iter(name) { return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]"; }
	instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(element, className) { className = className.toString().strip(); var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className); return cond ? document._getElementsByXPath('.//*' + cond, element) : []; } : function(element, className) {
		className = className.toString().strip(); var elements = [], classNames = (/\s/.test(className) ? $w(className) : null); if (!classNames && !className) return elements; var nodes = $(element).getElementsByTagName('*'); className = ' ' + className + ' '; for (var i = 0, child, cn; child = nodes[i]; i++) {
			if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) || (classNames && classNames.all(function(name) { return !name.toString().blank() && cn.include(' ' + name + ' '); }))))
				elements.push(Element.extend(child));
		}
		return elements;
	}; return function(className, parentElement) { return $(parentElement || document.body).getElementsByClassName(className); };
} (Element.Methods); Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(element) { this.element = $(element); }, _each: function(iterator) { this.element.className.split(/\s+/).select(function(name) { return name.length > 0; })._each(iterator); }, set: function(className) { this.element.className = className; }, add: function(classNameToAdd) { if (this.include(classNameToAdd)) return; this.set($A(this).concat(classNameToAdd).join(' ')); }, remove: function(classNameToRemove) { if (!this.include(classNameToRemove)) return; this.set($A(this).without(classNameToRemove).join(' ')); }, toString: function() { return $A(this).join(' '); } }; Object.extend(Element.ClassNames.prototype, Enumerable); Element.addMethods();

var Feedback = { 'alert': function(object) { alert(object.Message); }, 'pop': function(title, mainMessage, message, refresh, onClose) {
    try {
        if (typeof (onClose) == 'undefined') { onClose = ''; }
        Pop.open('feedback', 'Pattern/Feedback/Pop/Feedback', 'Title=' + title + '&MainMessage=' + mainMessage + '&Message=' + message + '&RefreshOnClose=' + parseInt(refresh) + '&onClose=' + onClose, 'default', {});
    } catch (e) { alert(e); }
}, 'form': function(object) {
    var form = object.form; Feedback.formClear(form); if ($(form + '_FeedBack') != null) { $(form + '_FeedBack').addClassName('alert'); $(form + '_FeedBack').innerHTML = '<p class="content nomargin"><strong>Existem erros no formulário.</strong><br />Por favor, verifique os campos abaixo:</p>'; }
    var fields = object.fields; for (var i = 0; i < fields.length; i++) { if ($(form + '_' + fields[i].Name + '_Feedback') != null) { var container = $(form + '_' + fields[i].Name + '_Feedback').parentNode; Element.Methods.addClassName(container, 'alert_field'); Element.Methods.addClassName($(form + '_' + fields[i].Name + '_Feedback'), 'alert_inline'); $(form + '_' + fields[i].Name + '_Feedback').innerHTML = '<p class="nomargin">' + fields[i].Message; +'<p>' } }
}, 'formClear': function(form) {
    escondeLoader(); if ($(form + '_FeedBack') != null) { $(form + '_FeedBack').removeClassName('alert'); $(form + '_FeedBack').innerHTML = ''; }
    var fElements = Form.getElements(form); var container = null; for (var i = 0; i < fElements.length; i++) { if ($(form + '_' + fElements[i].name + '_Feedback') != null) { container = $(form + '_' + fElements[i].name + '_Feedback').parentNode; Element.Methods.removeClassName(container, 'alert_field'); Element.Methods.removeClassName($(form + '_' + fElements[i].name + '_Feedback'), 'alert_inline'); $(form + '_' + fElements[i].name + '_Feedback').innerHTML = ''; } }
}
}

var ValidationForm = { '_hasConfirmationField': function(field, elements) { return (typeof (elements['Confirm_' + field]) != 'undefined'); }, 'prepareFormFields': function(elements, formID) {
    var formFields = {}; var auxField; for (field in elements) {
        if (elements[field] == null || typeof (elements[field].name) == 'undefined' || typeof (elements[field].name.split) == 'undefined') { continue; }
        auxField = elements[field].name.split('_'); if (auxField.length > 1 && (auxField[0] != 'NoValidate' && auxField[0] != 'Confirm')) { auxField = auxField[1]; } else { auxField = elements[field].name; }
        if (typeof ($(formID).elements[auxField]) != 'undefined') { formFields[auxField] = elements[field]; }
    }
    return formFields;
}, 'validate': function(event) {
    var form = event.element(); if (form.nodeName.toLowerCase() != 'form') { form = form.form; } event.stop(); var validations = {}; try { validations = eval('validations' + form.id); } catch (e) { }
    if (typeof (validations[form.id]) == 'undefined') { return form.submit(); }
    var formFields = ValidationForm.prepareFormFields(form.elements, form.id); var formValidations = validations[form.id]; var regexp = null; var errors = []; var auxValue = null; var i, n, func, check; var expression = 'noexpression'; var checkedConfirmation = new Array(); var jsonReturn = false; var jsonData = null; for (var item in formValidations) {
        check = formValidations[item]['Check']; if (typeof (check) == 'undefined') { continue; }
        if (typeof (formFields['NoValidate_' + item]) != 'undefined') { continue; }
        patterns: for (i = 0, n = check.length; i < n; i++) {
            if (typeof (check[i]) == 'undefined') { break patterns; }
            if (typeof (check[i]['Pattern']['isFunc']) != 'undefined' && check[i]['Pattern']['isFunc']) { func = check[i]['Pattern']['Exec']; auxValue = (formFields[item].length > 1) ? formFields[item] : formFields[item].value; expression = window[func].apply(this, [auxValue, form]); } else { regexp = new RegExp(check[i]['Pattern']['Exec']); expression = regexp.test(formFields[item].value); }
            if (expression != 'noexpression') {
                if (expression === false || expression == undefined) { errors.push({ 'Name': item, 'Message': check[i]['Message'][0] }); break patterns; }
                if (expression !== true && !isNaN(expression)) { return expression; }
                if (expression !== true && expression.isJSON()) {
                    jsonReturn = true; jsonData = expression.evalJSON(); currentCheck = check[i]; for (var i = 0; i < jsonData.length; i++) { errors.push({ 'Name': jsonData[i].Name, 'Message': currentCheck['Message'][jsonData[i].Message] }); }
                    break patterns;
                }
            }
            if (ValidationForm._hasConfirmationField(item, formFields) && (formFields[item].value != formFields['Confirm_' + item].value) && (typeof (checkedConfirmation[item]) == 'undefined')) { errors.push({ 'Name': 'Confirm_' + item, 'Message': check[i]['ConfirmationMessage'] }); checkedConfirmation[item] = true; }
        }
    }
    if (errors.length > 0) { Feedback.form({ 'form': form.id, 'fields': errors }); return false; }
    if (!jsonReturn) { SendFormDataByAjaxRunMethod(form.id, 'ValidationForm', 'validate', { 'callback': ValidationForm.ajaxValidateResult, 'extra_data': form }); }
    return true;
}, 'ajaxValidateResult': function(result, form) {
    Feedback.formClear(form.id); if (result == true) { ValidationForm.formFields = {}; return form.submit(); }
    if (result.isJSON()) { result = result.evalJSON(); Feedback.form(result); return; }
}
}

var PatternForm = { 'ManageInput': function(event, value) {
    var input = event.element(); var label = $$('label[for=' + input.id + ']')[0]; var container = input.parentNode; var hint = $(input.id + '_hint'); var hints = document.getElementsByClassName('tooltip_hint'); switch (input.type.toLowerCase()) {
        case 'password': switch (event.type.toLowerCase()) {
                case 'focus': if (!input.hasClassName('active')) { input.addClassName('active'); label.addClassName('active'); }
                    if (input.hasClassName(value)) { input.removeClassName(value); }
                    if (hints.length > 0) { for (var i = 0; i < hints.length; i++) { Element.Methods.setStyle(hints[i], { 'display': 'none' }); } }
                    if (hint != null) { hint.show(); }
                    break; case 'blur': if (input.hasClassName('active')) { input.removeClassName('active'); label.removeClassName('active'); }
                    if (!input.present()) { input.addClassName(value); }
                    Event.observe(document, 'click', ToolTipRemove.bindAsEventListener(this, hint)); break; case 'change': if (hasClassName(container, 'alert_field')) { container.removeClassName('alert_field'); }
                    break;
            }
            break; case 'text': switch (event.type.toLowerCase()) {
                case 'focus': if (input.getValue() == value) { input.clear(); }
                    if (!input.hasClassName('active')) { input.addClassName('active'); label.addClassName('active'); }
                    if (hints.length > 0) { for (var i = 0; i < hints.length; i++) { Element.Methods.setStyle(hints[i], { 'display': 'none' }); } }
                    if (hint != null) { hint.show(); }
                    break; case 'blur': if (!input.present()) { input.value = value; }
                    if (input.hasClassName('active')) { input.removeClassName('active'); label.removeClassName('active'); }
                    Event.observe(document, 'click', ToolTipRemove.bindAsEventListener(this, hint)); break; case 'change': if (hasClassName(container, 'alert_field')) { container.removeClassName('alert_field'); }
                    break;
            }
    }
}, 'ManageSelect': function(event) {
    var select = event.element(); var label = $$('label[for=' + select.id + ']')[0]; var hint = $(select.id + '_hint'); var hints = document.getElementsByClassName('tooltip_hint'); var container = select.parentNode; switch (event.type.toLowerCase()) {
        case 'focus': if (!select.hasClassName('active')) { select.addClassName('active'); label.addClassName('active'); }
            if (hints.length > 0) { for (var i = 0; i < hints.length; i++) { Element.Methods.setStyle(hints[i], { 'display': 'none' }); } }
            if (hint != null) { hint.show(); }
            break; case 'blur': if (select.hasClassName('active')) { select.removeClassName('active'); label.removeClassName('active'); }
            Event.observe(document, 'click', ToolTipRemove.bindAsEventListener(this, hint)); break; case 'change': if (Element.Methods.hasClassName(container, 'alert_field')) { Element.Methods.removeClassName(container, 'alert_field'); }
            break;
    }
}, 'ManageCombinedSelect': function(event, id, type) {
    var container = event.element().parentNode; var selects = $$('#' + container.id + ' select'); var label = $$('label[for=' + selects[0].id + ']')[0]; var hidden = container.id.split('_')[0]; var HiddenValue = new Array(); var hint = $(id + '_hint'); var hints = document.getElementsByClassName('tooltip_hint'); var c, n; switch (event.type.toLowerCase()) {
        case 'focus': if (!label.hasClassName('active')) { label.addClassName('active'); }
            for (i = 0; i < selects.length; i++) { if (!selects[i].hasClassName('active')) { selects[i].addClassName('active'); } }
            if (hints.length > 0) { for (var i = 0; i < hints.length; i++) { Element.Methods.setStyle(hints[i], { 'display': 'none' }); } }
            if (hint != null) { hint.show(); }
            break; case 'blur': if (label.hasClassName('active')) { label.removeClassName('active'); }
            for (i = 0; i < selects.length; i++) { if (selects[i].hasClassName('active')) { selects[i].removeClassName('active'); } }
            Event.observe(document, 'click', ToolTipRemove.bindAsEventListener(this, hint)); break; case 'change': for (c = 0, n = selects.length; c < n; c++) { HiddenValue.push(selects[c].getValue()); }
            if (type == 'time') { HiddenValue = HiddenValue.join(''); } else if (type == 'date') { HiddenValue.reverse(); HiddenValue = HiddenValue.join(''); }
            $(hidden).value = HiddenValue; if (container.hasClassName('alert_field')) { container.removeClassName('alert_field'); }
            break; break;
    }
}
}
var PatternControler = { 'ManageTextZoom': function(event, content) {
    var control = event.element(); var action = control.id.split('_'); action = action.pop(); var actualSize = $(content).getStyle('fontSize'); switch (action) {
        case 'in': switch (actualSize) { case '8px': $(content).setStyle({ fontSize: '10px' }); break; case '10px': $(content).setStyle({ fontSize: '12px' }); break; case '100%': $(content).setStyle({ fontSize: '14px' }); break; case '12px': $(content).setStyle({ fontSize: '14px' }); break; case '14px': $(content).setStyle({ fontSize: '16px' }); break; case '16px': $(content).setStyle({ fontSize: '18px' }); break; }
            break; case 'out': switch (actualSize) { case '10px': $(content).setStyle({ fontSize: '8px' }); break; case '100%': $(content).setStyle({ fontSize: '10px' }); break; case '12px': $(content).setStyle({ fontSize: '10px' }); break; case '14px': $(content).setStyle({ fontSize: '12px' }); break; case '16px': $(content).setStyle({ fontSize: '14px' }); break; case '18px': $(content).setStyle({ fontSize: '16px' }); break; }
            break;
    }
    return event.stop();
}, 'ManageTabBrowser': function(event) {
    var tab = event.element(); var tabs = Element.Methods.adjacent(tab.id, 'a'); var number = []; for (var i = 0; i < tabs.length; i++) { Element.Methods.removeClassName(tabs[i].id, 'active'); number = tabs[i].id.split('_'); Element.Methods.setStyle('content_tab_' + number[number.length - 1], { 'display': 'none' }); }
    Element.Methods.addClassName(tab.id, 'active'); number = tab.id.split('_'); Element.Methods.setStyle('content_tab_' + number[number.length - 1], { 'display': 'block' }); return event.stop();
}, 'ManageFolder': function(event, content, expanded) {
    event.stop(); if (event.type == 'load') { if ($(content) != null) { var list = $(content).parentNode; if (expanded) { $(content).setStyle({ display: 'block' }); Element.Methods.addClassName(list, 'active'); } else { $(content).setStyle({ display: 'none' }); Element.Methods.removeClassName(list, 'active'); } } } else {
        var control = event.element(); if (control.nodeName == 'SPAN') { var control = control.parentNode; }
        var list = control.parentNode; if (control.id.split('_')[1] == 'icon') { var control = control.ancestors()[0]; }
        var action = $w(control.className).last(); switch (action) { case 'expand': PatternControler.clearFolder(action, control, content); $(content).toggle(); Element.Methods.removeClassName($(control.id), 'expand'); Element.Methods.addClassName($(control.id), 'collapse'); Element.Methods.addClassName(list, 'active'); break; case 'collapse': PatternControler.clearFolder(action, control, content); $(content).toggle(); Element.Methods.removeClassName($(control.id), 'collapse'); Element.Methods.addClassName($(control.id), 'expand'); Element.Methods.removeClassName(list, 'active'); break; }
    }
    var collapse = $$('a.collapse span.off'); var expand = $$('a.expand span.off'); for (var i = 0; i < collapse.length; i++) { collapse[i].update('-'); }
    for (var i = 0; i < expand.length; i++) { expand[i].update('+'); }
    return void (0);
}, 'clearFolder': function(action, control, content) {
    switch (action) {
        case 'expand': var UL = control.parentNode.parentNode; var opened = null; opened = $$('a[class~=collapse]'); if (opened.length == 0) { return; }
            opened = opened[0]; var list = opened.parentNode; var openedContentID = opened.id.split('_'); openedContentID[openedContentID.length - 2] = 'content'; openedContentID = openedContentID.join('_'); Element.Methods.removeClassName(opened, 'collapse'); Element.Methods.addClassName(opened, 'expand'); Element.Methods.removeClassName(list, 'active'); Element.Methods.setStyle(openedContentID, { 'display': 'none' }); break;
    }
}
}
var PatternLayout = { 'ManageFeatureList': function(event, listID) {
    var List = $(listID); var LIs = List.getElementsByTagName('li'); Element.Methods.addClassName(LIs[0], 'activeFeature'); for (var i = 1; i <= LIs.length - 1; i++) { Element.Methods.setStyle(LIs[i], { 'display': 'none' }); }
    if (LIs.length > 1) {
        new PeriodicalExecuter(function(pe) {
            var active = List.getElementsByClassName('activeFeature')[0]; var next = Element.Methods.nextSiblings(active); if (next.length) { next = next[0]; }
            else { next = LIs[0]; }
            Element.Methods.setStyle(active, { 'display': 'none' }); Element.Methods.setStyle(next, { 'display': '' }); Element.Methods.addClassName(next, 'activeFeature'); Element.Methods.removeClassName(active, 'activeFeature');
        }, 3);
    }
}
}
function ToolTipRemove(e, hint) { var tEl = e.element(); if (!Element.Methods.hasClassName(tEl.parentNode, 'tooltip_hint') && typeof (tEl.type) == 'undefined') { if (hint != null) { hint.hide(); Event.stopObserving(document, 'click', ToolTipRemove); } } }

var OA_p = location.protocol == 'https:' ? 'https:' : 'http:'; var OA_r = Math.floor(Math.random() * 99999999); if (!document.OA_used) { document.OA_used = ','; }
function OA_dhtml(z, n)
{ if (z > -1) { var az = "<" + "script type='text/javascript' "; az += "src='" + OA_p + "//crm.personare.com.br/www/delivery/al.php?n=" + n + "&zoneid=" + z; az += "&source=" + OA_channel; az += "&layerstyle=simple&align=center&valign=top&padding=2&padding=2&shifth=0&shiftv=318&closebutton=f&nobg=t&noborder=t"; az += "'><" + "/script>"; document.write(az); } }
function OA_adjs(z, n)
{ if (z > -1) { var az = "<" + "script language='JavaScript' type='text/javascript' "; az += "src='" + OA_p + "//crm.personare.com.br/www/delivery/ajs.php?n=" + n + "&zoneid=" + z; az += "&source=" + OA_channel + "&exclude=" + document.OA_used + "&r=" + OA_r; az += "&mmm_fo=" + (document.mmm_fo) ? '1' : '0'; az += "'><" + "/script>"; document.write(az); } }
function OA_adpop(z, n)
{ }

function mostraDiv(obj) {

    if (document.getElementById) {
        var el = document.getElementById(obj);
        if (el.style.display != "block") { //DynamicDrive.com change
            el.style.display = "block";
        }
    }
}

function esconderDiv(obj) {

    if (document.getElementById) {
        var el = document.getElementById(obj);
        if (el.style.display == "block") { //DynamicDrive.com change
            el.style.display = "none";
        }
    }
}

function showDiv(pass,pass2) {
    var divs = document.getElementsByTagName('div');    
    var divs2 = document.getElementsByTagName('a');  

    for (i = 0; i < divs.length; i++) {
        if (divs[i].id.match(pass)) {
            if (document.getElementById) {

                var el = document.getElementById(divs[i].id);
                
                mostrarTabela(el.id);                
            }
        }
    }
    
    for (x = 0; x < divs2.length; x++) {
         if (divs2[x].id.match(pass2)) {
            if (document.getElementById) {

                var el2 = document.getElementById(divs2[x].id);
                
                esconderImagem(el2.id);                  
             }
        }
    }     
}

function hiddenDiv(pass,pass2) {
    var divs = document.getElementsByTagName('div');    
    var divs2 = document.getElementsByTagName('a');  

    for (i = 0; i < divs.length; i++) {
        if (divs[i].id.match(pass)) {
            if (document.getElementById) {

                var el = document.getElementById(divs[i].id);
                
                esconderTabela(el.id);                
            }
        }
    }
    
    for (x = 0; x < divs2.length; x++) {
         if (divs2[x].id.match(pass2)) {
            if (document.getElementById) {

                var el2 = document.getElementById(divs2[x].id);
                
                mostrarImagem(el2.id);                  
             }
        }
    }     
}



function mostaTb(idtabelaDados, idDivEsconderMostrar) {
    
    var el1 = document.getElementById(idtabelaDados);
    
    var el2 = document.getElementById(idDivEsconderMostrar);
    
    if (el1.style.display == 'none') {
        el1.style.display = 'block';
        el2.style.background = '#EFEFF2 url(images/ico_esconder_abas.gif) no-repeat 10px 4px';
    } else {
        el1.style.display = 'none';
        el2.style.background = '#EFEFF2 url(images/ico_mostrar_abas.gif) no-repeat 10px 4px';
    }
}

function mostrarTabela(idtabelaDados) {
    
    var el1 = document.getElementById(idtabelaDados);        
    
    el1.style.display = 'block';       
    
}

function esconderTabela(idtabelaDados) {
    
    var el1 = document.getElementById(idtabelaDados);        
    
    el1.style.display = 'none';        
    
}


function mostrarImagem( idDivEsconderMostrar) {
    
    var el2 = document.getElementById(idDivEsconderMostrar);
    
    el2.style.background = '#EFEFF2 url(images/ico_mostrar_abas.gif) no-repeat 10px 4px';

}

function esconderImagem( idDivEsconderMostrar) {
    
   var el2 = document.getElementById(idDivEsconderMostrar);
    
        el2.style.background = '#EFEFF2 url(images/ico_esconder_abas.gif) no-repeat 10px 4px';
   
}

function clickButton(e, buttonid) {
    var evt = e ? e : window.event;
    var bt = document.getElementById(buttonid);
    if (bt) {
        if (evt.keyCode == 13) {
            bt.click();
            return false;
        }
    }
}

var blah='';

function movein(which)
{
    which.className='resultrowActive';
    document.body.style.cursor='hand';
}

function moveout(which)
{
    if(blah=='')
        which.className=which.name;
    else
        {
        which.className=which.name;
        document.all.item(blah).className='resultrowActive';
        }
    document.body.style.cursor='auto';
}

function trocaPais(obj)
{      
    
    if(obj.value == 'Brasil' || obj.value == 'Brazil')
    {
        document.getElementById('ctl00_cphMasterPublica_tr_USUARIO_ESTADO').className='aparece';
        
    }
    else
    {   
        document.getElementById('ctl00_cphMasterPublica_tr_USUARIO_ESTADO').className='some';
    }
}