//<script>

//**************************************************************************************************
//                                                                                                 *
//                               BIBLIOTECA PARA MANIPULAÇÃO DO DOM                                *
//                                     VERSÃO 10.03.30.15.00                                       *
//                                                                                                 *
//**************************************************************************************************

var errMsg = new Object();

errMsg.isArray          = "O parâmetro não é uma matriz válida!";
errMsg.isInteger        = "O parâmetro não é um inteiro válido!";
errMsg.isString         = "O parâmetro não é uma string válida!";
errMsg.isNode           = "O parâmetro não é uma elemento HTML válido!";
errMsg.isTag            = "O parâmetro não é uma tag HTML válida!";
errMsg.invalidArgument  = "Parâmetro invalido na chamada da função!";
errMsg.invalidDataType  = "Tipo de dados inválido!"

//**************************************************************************************************
function showError(error) {
    alert("Ocorreu um erro de 'script' e talvez sua página não seja exibida corretamente!\n" +
          "Se este erro persistir, por favor entre em contato com nossa central de atendimento pelo " +
          "telefone (11) 5572 2611" + ", informando os seguintes detalhes para que possamos corrigi-lo:\n\n" + error.replace(/__/g, "\n") + "\n\n");
}

//**************************************************************************************************
var browser = {
    init: function() {
        try {
            this.name    = this.searchString(this.dataBrowser) || "navegador desconhecido";
            this.id      = (this.index >= 0) ? this.dataBrowser[this.index].id : "";
            this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "versão desconhecida";
            this.OS      = this.searchString(this.dataOS) || "sistema operacional desconhecido";
            this.ff  = browser.id == "ff";
            this.op  = browser.id == "op";
            this.ch  = browser.id == "ch";
            this.sa  = browser.id == "sa";
            this.ie  = browser.id == "ie";
            this.ie6 = browser.id + browser.version == "ie6";
            this.ie7 = browser.id + browser.version == "ie7";
            this.ie8 = browser.id + browser.version == "ie8";
        }
        catch(e) {
            throw "cltdom.js: browser.init()__" + (e.message || e);
        }
    },
    searchString: function(data) {
        try {
            for (var i = 0; i < data.length; i++) {
                var dataString = data[i].string;
                var dataProp = data[i].prop;
                this.versionSearchString = data[i].versionSearch || data[i].identity;
                if (dataString) {
                    if (dataString.indexOf(data[i].subString) != -1) {
                        this.index = i;
                        return data[i].identity;
                    }
                }
                else if (dataProp) {
                    this.index = i;
                    return data[i].identity;
                }
                else {
                    this.index = -1;
                }
            }
        }
        catch(e) {
            throw "cltdom.js: browser.searchString()__" + (e.message || e);
        }
    },
	searchVersion: function(dataString) {
        try {
            var index = dataString.indexOf(this.versionSearchString);
            if (index == -1) return;
            return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
        }
        catch(e) {
            throw "cltdom.js: browser.searchVersion()__" + (e.message || e);
        }
    },
    dataBrowser: [
        {
            id: "ch",
            string: navigator.userAgent,
            subString: "Chrome",
            identity: "Chrome"
        },
        {
            id: "ow",
            string: navigator.userAgent,
            subString: "OmniWeb",
            versionSearch: "OmniWeb/",
            identity: "OmniWeb"
        },
        {
            id: "sa",
            string: navigator.vendor,
            subString: "Apple",
            identity: "Safari",
            versionSearch: "Version"
        },
        {
            id: "op",
            prop: window.opera,
            identity: "Opera"
        },
        {
            id: "ic",
            string: navigator.vendor,
            subString: "iCab",
            identity: "iCab"
        },
        {
            id: "ko",
            string: navigator.vendor,
            subString: "KDE",
            identity: "Konqueror"
        },
        {
            id: "ff",
            string: navigator.userAgent,
            subString: "Firefox",
            identity: "Firefox"
        },
        {
            id: "ca",
            string: navigator.vendor,
            subString: "Camino",
            identity: "Camino"
        },
        {   // for newer Netscape (6+)
            id: "ne",
            string: navigator.userAgent,
            subString: "Netscape",
            identity: "Netscape"
        },
        {
            id: "ie",
            string: navigator.userAgent,
            subString: "MSIE",
            identity: "Internet Explorer",
            versionSearch: "MSIE"
        },
        {
            id: "mo",
            string: navigator.userAgent,
            subString: "Gecko",
            identity: "Mozilla",
            versionSearch: "rv"
        },
        {   // for older Netscapes (4-)
            id: "ne",
            string: navigator.userAgent,
            subString: "Mozilla",
            identity: "Netscape",
            versionSearch: "Mozilla"
        }
    ],
    dataOS: [
        {
            string: navigator.platform,
            subString: "Win",
            identity: "Windows"
        },
        {
            string: navigator.platform,
            subString: "Mac",
            identity: "Mac"
        },
        {
            string: navigator.userAgent,
            subString: "iPhone",
            identity: "iPhone/iPod"
        },
        {
            string: navigator.platform,
            subString: "Linux",
            identity: "Linux"
        }
    ]
};

browser.init();

//**************************************************************************************************
// Prototipação para o Firefox
if (typeof HTMLElement != "undefined" && !HTMLElement.prototype.insertAdjacentElement) {
    //==============================================================================================
    HTMLElement.prototype.insertAdjacentElement = function(where, parsedNode) {
        try {
            switch (where.toLowerCase()) {
            case "beforebegin":
                this.parentNode.insertBefore(parsedNode, this);
                break;
            case "afterbegin":
                this.insertBefore(parsedNode, this.firstChild);
                break;
            case "beforeend":
                this.appendChild(parsedNode);
                break;
            case "afterend":
                if (this.nextSibling) this.parentNode.insertBefore(parsedNode, this.nextSibling);
                else this.parentNode.appendChild(parsedNode);
                break;
            }
        }
        catch(e) {
            throw "cltdom.js: HTMLElement.prototype.insertAdjacentElement()__" + (e.message || e);
        }
    }
    //==============================================================================================
    HTMLElement.prototype.insertAdjacentHTML = function (where, htmlStr) {
        try {
            var r = this.ownerDocument.createRange();
            r.setStartBefore(this);
            var parsedHTML = r.createContextualFragment(htmlStr);
            this.insertAdjacentElement(where, parsedHTML);
        }
        catch(e) {
            throw "cltdom.js: HTMLElement.prototype.insertAdjacentHTML()__" + (e.message || e);
        }
    }
    //==============================================================================================
    HTMLElement.prototype.insertAdjacentText = function (where, txtStr) {
        try {
            var parsedText = document.createTextNode(txtStr);
            this.insertAdjacentElement(where, parsedText);
        }
        catch(e) {
            throw "cltdom.js: HTMLElement.prototype.insertAdjacentText()__" + (e.message || e);
        }
    }
}

//**************************************************************************************************
function DOMHide(elem) {
    try {
        elem.style.display = "none";
    }
    catch(e) {
        throw "cltdom.js: DOMHide()__" + (e.message || e);
    }
}

//**************************************************************************************************
function DOMShow(elem) {
    try {
        elem.style.display = "block";
    }
    catch(e) {
        throw "cltdom.js: DOMShow()__" + (e.message || e);
    }
}

//**************************************************************************************************
function DOMShowHide(elem) {
    try {
        elem.style.display = (elem.style.display == "none") ? "" : "none";
    }
    catch(e) {
        throw "cltdom.js: DOMShowHide()__" + (e.message || e);
    }
}

//**************************************************************************************************
function checkBrowser() {
    try {
        if ((browser.id != "ff") &&
            (browser.id != "ie") &&
            (browser.id != "sa") &&
            (browser.id != "ch") &&
            (browser.id != "op")) {
            alert("Atenção!\n\n" +
            "Este site foi otimizado para ser exibido nas versões mais recentes dos seguintes navegadores:\n\n" +
            "- Firefox\n" +
            "- Internet Explorer\n" +
            "- Opera\n" +
            "- Safari\n" +
            "- Chrome\n\n" +
            "Você está utilizando o navegador " + browser.name + " " + browser.version + " no sistema operacional " + browser.OS + ".\n\n" +
            "Algumas funcionalidades poderão deixar de ser exibidas corretamente!\n\n");
        }
    }
    catch(e) {
        throw "cltdom.js: getBrowser()__" + (e.message || e);
    }
}

//**************************************************************************************************
function adjustLegendTags() {
    try {
        var legends = document.getElementsByTagName("legend");
        for (var loop = 0; loop < legends.length; loop++) {
            var strHei = (browser.ff || browser.ie8) ? "1" : (browser.op || browser.ch || browser.sa || browser.ie6 || browser.ie7) ? "2" : "";
            if (strHei.length > 0) legends[loop].insertAdjacentHTML("afterend", "<div style='height:" + strHei + "px;overflow:hidden'></div>");
            if (browser.op) legends[loop].style.background = "#ECF0E9";
        }
    }
    catch(e) {
        throw "cltdom.js: adjustLegendTags()__" + (e.message || e);
    }
}

//**************************************************************************************************
function getElementsByName(tag, name) {
    try {
        var elem = document.getElementsByTagName(tag);
        var arr = new Array();
        for (loop = 0, count = 0; loop < elem.length; loop++) {
            att = elem[loop].getAttribute("name");
            if (att == name) {
                arr[count] = elem[loop];
                count++;
            }
        }
        return arr;
    }
    catch(e) {
        throw "<cltdom.js: getElementsByName()> " + (e.message || e);
    }
}

//**************************************************************************************************
function isNode(id) {
    try {
        return (document.getElementById("" + id));
    }
    catch(e) {
        throw "cltdom.js: isNode()__" + (e.message || e);
    }
}

//**************************************************************************************************
function isTag(id, tag) {
    try {
        if (!isNode(id)) return false;
        if (!isString(tag)) return false;
        return (document.getElementById(id).tagName.toLowerCase() == tag.toLowerCase());
    }
    catch(e) {
        throw "cltdom.js: isTag()__" + (e.message || e);
    }
}

//**************************************************************************************************
function showAlert(element) {
    try {
        if (!element.getVal()) {
            alert("O campo '" + element.caption.replace("&nbsp;", " ") + "' não foi fornecido!");
            element.focus();
            return false;
        }
        else {
            return true;
        }
    }
    catch(e) {
        throw "cltdom.js: showAlert()__" + (e.message || e);
    }
}


/*

//******************************************************************************
function color(rule, file) {
    try {
        file = (file || "color.css");
        for (var loop1 = 0; loop1 < document.styleSheets.length; loop1++) {
            if (document.styleSheets[loop1].href.substr(document.styleSheets[loop1].href.length - file.length).toUpperCase() == file.toUpperCase()) {
                if (window.event) {
                    for (var loop2 = 0; loop2 < document.styleSheets[loop1].rules.length; loop2++) {
                        if (document.styleSheets[loop1].rules[loop2].selectorText.substr(1).toUpperCase() == rule.toUpperCase()) {
                            return document.styleSheets[loop1].rules[loop2].style.color;
                        }
                    }
                }
                else {
                    for (var loop2 = 0; loop2 < document.styleSheets[loop1].cssRules.length; loop2++) {
                        if (document.styleSheets[loop1].cssRules[loop2].selectorText.substr(1).toUpperCase() == rule.toUpperCase()) {
                            return document.styleSheets[loop1].cssRules[loop2].style.color;
                        }
                    }
                }
            }
        }
        return "";
    }
    catch(e) {
        throw "<cltdom.js: color()> " + (e.message || e);
    }
}

//******************************************************************************
function validElement(id, tag) {
    try {
        if ((typeof(id) != "string") || (id == "")) throw "O parâmetro 'id' não é válido!";
        if (!document.getElementById(id)) throw "O parâmetro 'id' (" + id + ") não se refere a um elemento HTML!";
        if (document.getElementById(id).tagName != tag) throw "O elemento (" + id + ") não é uma tag (" + tag + ")!";
        return true;
    }
    catch(e) {
        throw "<cltdom.js: validElement()> " + (e.message || e);
    }
}
*/

/*
//******************************************************************************
function cookiesEnabled() {
    try {
        var cook = "*";
        document.cookie = "cook=" + cook;
        if (document.cookie.indexOf(cook, 0) < 0) throw "O seu navegador não está habilitado para aceitar cookies!";
    }
    catch(e) {
        throw "<cltdom.js: cooksEnabled()> " + (e.message || e);
    }
}
*/

/*
//******************************************************************************
function dialog(url, data, width, height) {
    try {
        return window.showModalDialog(url, data, "dialogWidth:" + width + "px;dialogHeight:" + height + "px;center:yes;help:0;scroll:0;status:0");
    }
    catch(e) {
        throw "<cltdom.js: dialog()> " + (e.message || e);
    }
}
*/

//</script>
