﻿function sobreB2C(){
    var versaoB2C = 1.06;
    //this.versaoB2C = 1.03;
    //this.versaoB2C = 1.02;
    
    
    
    //--------- POP UP ----------------//
    tpl = new Template("Common");
    var janela = window.open('', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=250px, height=200px, top=0, left=0');
    tpl.tpl_sobre.versao = versaoB2C;
    janela.document.write(tpl.tpl_sobre.getHtml());
}

/*
 * Xml serialization for javascript
 * (c) 2008 Mirek Rusin <info@mirekrusin.com>
 *
 * Example usage:
 *
 *   var my_place = {
 *     '@id': '123', // prefix attributes with @-sign
 *     tagName: 'place', // this is special attribute which overwrites the tag name of the current node
 *     name: "Ringley Ltd",
 *     address: "349 Royal College Street, UK",
 *     lat: 51.1243,
 *     long: 1.12312
 *   }
 *
 * alert(my_place.toXml()) will display:
 *
 *   <?xml version="1.0" ?>
 *   <place id="123">
 *     <name>Ringley Ltd</name>
 *     <address>349 Royal College Street, UK</address>
 *     <lat>51.1243</lat>
 *     <long>1.12312</long>
 *   </place>
 *
 * If you want to use custom xml on your class, please overwrite .toXmlTokens() method only, not .toXml().
 *
 * From .toXmlTokens() just return an array with the following tokens:
 * ['START', tagName]
 * ['END', tagName]
 * ['TEXT', text]
 * ['ATTR', attrName, value]
 *
 * Remember that ATTR tokens need to be immediatelly after START token.
 */
/**
 * Don't overwrite this method. Overwrite .toXmlTokens() to customize xml for your class.
 *
 * - tagName
 * - options
 *   - add_xml_decl: Default true. Set to false to omit <?xml version="1.0" ... ?> declaration.
 *   - version: Default 1.0
 *   - encoding: Default to utf-8
 *   - rails: Replace underscores with '-' for attribute names, just like Ruby on Rails likes. Default false.
 */
Object.prototype.toXml = function(tagName, options){
    if (options == undefined) 
        options = [];
    options['add_xml_decl'] = options['add_xml_decl'] == undefined ? true : options['add_xml_decl'];
    options['version'] = options['version'] == undefined ? '1.0' : options['version'];
    options['encoding'] = options['encoding'] == undefined ? 'utf-8' : options['encoding'];
    options['rails'] = options['rails'] == undefined ? false : options['rails'];
    var tokens = this.toXmlTokens(tagName);
    var chunks = [];
    var state = 'STARTDOC';
    for (var i = 0; i < tokens.length; i++) {
        token = tokens[i];
        switch (token[0]) {
            case 'START':
                if (state == 'STARTDOC') {
                    if (options['add_xml_decl'] != false) {
                        chunks.push('<?xml version="' + options['version'] + '" encoding="' + options['encoding'] + '"?>');
                    }
                }
                if (state == 'IN_START') 
                    chunks.push('>');					
                var name = token[1];
                if (options['rails']) 
                    name = name.replace(/_/g, '-');
                chunks.push('<' + name);
                state = 'IN_START';
                break;
            case 'ATTR':
                var value = token[2].replace(/"/g, '&quot;');
                chunks.push(' ' + token[1] + '="' + value + '"');
                state = 'IN_START';
                break;
            case 'TEXT':
                if (state == 'IN_START') 
                    chunks.push('>');
                var text = token[1];
                text = text.replace(/&/g, '&amp;');
                text = text.replace(/</g, '&lt;');
                text = text.replace(/>/g, '&gt;');
                chunks.push(text);
                state = 'IN_TEXT';
                break;
            case 'END':
                if (state == 'IN_START') {
                    chunks.push(' />');
                }
                else {
                    var name = token[1];
                    if (options['rails']) 
                        name = name.replace(/_/g, '-');
                    chunks.push('</' + name + '>');
                }
                state = 'IN_END';
                break;
        }
    };
    return chunks.join('');
};

Object.prototype.toXmlTokens = function(tagName){
    var attr_tokens = [];
    var other_tokens = [];
    if (!tagName) 
        tagName = this.tagName || 'object';
    for (e in this) {
        if (this.hasOwnProperty(e)) {
            if (e == 'tagName') {
                tagName = this[e];
            }
            else 
                if (e == 'innerHTML') {
                    other_tokens.push(['TEXT', this[e]]);
                }
                else 
                    if (e.charAt(0) == '@') {
                        attr_tokens.push(['ATTR', e.substring(1, e.length), this[e]]);
                    }
                    else {
                        other_tokens = other_tokens.concat(this[e].toXmlTokens(e));
                    }
        }
    };
    return Array.concat([['START', tagName]], attr_tokens, other_tokens, [['END', tagName]]);
};

/**
 * Default xml tokenizer for simple types.
 */
String.prototype.toXmlTokens = function(tagName){
    var tokens = [];
    tokens.push(['START', tagName]);
    tokens.push(['TEXT', this.toString()]);
    tokens.push(['END', tagName]);
    return tokens;
};

Boolean.prototype.toXmlTokens = String.prototype.toXmlTokens;
Date.prototype.toXmlTokens = String.prototype.toXmlTokens;
Number.prototype.toXmlTokens = String.prototype.toXmlTokens;
RegExp.prototype.toXmlTokens = String.prototype.toXmlTokens;

function statusPedido(){
    //    1	Finalizado - Solicitado Bloqueio
    //    2	Finalizado - Solicitado Extra-Bloqueio
    //    3	Cancelado
    //    4	Em processo de compra - Roteiros
    //    5	Em processo de compra - Hoteis / Aereo / Servicos
    //    6	Em processo de compra - Login
    //    7	Em processo de compra - Pagamento
    //    8	Finalizado - Agencia
    //    9	Em andamento - Agencia
    //    10	Em andamento - Operadora
    //    11	Finalizado - Operadora
    
    this.Finalizado_Solicitado_Bloqueio = 1;
    this.Finalizado_Solicitado_ExtraBloqueio = 2;
    this.Cancelado = 3;
    this.Em_processo_compra_Roteiros = 4;
    this.Em_processo_compra_Hoteis = 5;
    this.Em_processo_compra_Login = 6;
    this.Em_processo_compra_Pagamento = 7;
    this.Finalizado_Agencia = 8;
    this.Em_andamento_Agencia = 9;
    this.Em_andamento_Operadora = 10;
    this.Finalizado_Operadora = 11;
};

function $redirect(url, params){
    window.location = url + '?' + params;
};

function $queryString(key){
    var qs = window.location.search.substring(1);
    return QueryString_SetQS(qs, key);
};

function QueryString_SetQS(qs, key){
    var value = null;
    
    var elements = qs.split("&");
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i].split("=");
        if (element[0].toLowerCase() == key.toLowerCase()) {
            value = element[1];
        };
            };
    return value;
};






function remove(quem){
    quem.parentNode.removeChild(quem);
};

function $select_contains(obj, child){
    for (var i = 0; i < obj.options.length; i++) {
        if (obj[i].value == child.value) 
            return true;
    };
    return false;
};

function $element(id){
    return document.getElementById(id);
};

function addEvent(obj, evType, fn){
    //o velho do elcio.com.br/crossbrowser
    if (obj.addEventListener) 
        obj.addEventListener(evType, fn, true);
    if (obj.attachEvent) 
        obj.attachEvent("on" + evType, fn);
};

function removeEvent(obj, type, fn){
    if (obj.detachEvent) {
        obj.detachEvent('on' + type, fn);
    }
    else {
        obj.removeEventListener(type, fn, false);
    }
};

String.format = function(text){
    //check if there are two arguments in the arguments list
    if (arguments.length <= 1) {
        //if there are not 2 or more arguments there’s nothing to replace
        //just return the original text
        return text;
    }
    
    //decrement to move to the second argument in the array
    var tokenCount = arguments.length - 2;
    for (var token = 0; token <= tokenCount; token++) {
        //iterate through the tokens and replace their placeholders from the original text in order
        text = text.replace(new RegExp("\\{" + token + "\\}", "gi"), arguments[token + 1]);
    };
    return text;
};

/* 
 Ex.: ajaxUpload(this.form,'upload.aspx','recebe_up_onblur','Carregando...','Erro ao carregar')
 */
function ajaxUpload(form, url_action, id_elemento_mensagem, id_elemento_retorno, html_exibe_carregando, html_erro_http, formato_retorno){
    //testando se passou o ID ou o objeto mesmo
    form = typeof(form) == "string" ? $element(form) : form;
    
    var erro = "";
    if (form == null || typeof(form) == "undefined") {
        erro += "O form passado no 1o parâmetro não existe na página.\n";
    }
    else 
        if (form.nodeName != "FORM") {
            erro += "O form passado no 1o parâmetro da função não é um form.\n";
        }
    if ($element(id_elemento_mensagem) == null) {
        erro += "O elemento passado no 3o parâmetro não existe na página.\n";
    }
    
    if (erro.length > 0) {
        alert("Erro ao chamar a função ajaxUpload:\n" + erro);
        return;
    }
    
    var retorno;
    
    //criando o iframe
    var iframe = document.createElement("iframe");
    iframe.setAttribute("id", "ajax-temp");
    iframe.setAttribute("name", "ajax-temp");
    iframe.setAttribute("width", "0");
    iframe.setAttribute("height", "0");
    iframe.setAttribute("border", "0");
    iframe.setAttribute("style", "width: 0; height: 0; border: none;");
    
    //adicionando ao documento
    form.parentNode.appendChild(iframe);
    window.frames['ajax-temp'].name = "ajax-temp"; //ie sucks
    //adicionando o evento ao carregar
    var carregou = function(){
        removeEvent($element('ajax-temp'), "load", carregou);
        var cross = "javascript: ";
        cross += "window.parent.document.getElementById('" + id_elemento_mensagem + "').innerHTML = document.body.innerHTML; void(0); ";
        
        retorno = iframe.contentWindow.document.body.innerHTML;
        
        if (formato_retorno != null) {
            $element(id_elemento_mensagem).innerHTML = String.format(formato_retorno, retorno);
        }
        
        $element(id_elemento_retorno).value = retorno;
        
        //deleta o iframe
        setTimeout(function(){
            remove($element('ajax-temp'))
        }, 500);
    };
    addEvent($element('ajax-temp'), "load", carregou);
    
    //setando propriedades do form
    form.setAttribute("target", "ajax-temp");
    form.setAttribute("action", url_action);
    form.setAttribute("method", "post");
    form.setAttribute("enctype", "multipart/form-data");
    form.setAttribute("encoding", "multipart/form-data");
    //submetendo
    form.submit();
    
    //se for pra exibir alguma imagem ou texto enquanto carrega
    if (html_exibe_carregando.length > 0) {
        $element(id_elemento_mensagem).innerHTML = html_exibe_carregando;
    }
};

function $html_select(objeto, innerHTML){
    objeto.innerHTML = "";
    var selTemp = document.createElement("xselect");
    var opt;
    selTemp.id = "xselect1";
    document.body.appendChild(selTemp);
    selTemp = document.getElementById("xselect1");
    selTemp.style.display = "none";
    if (innerHTML.toLowerCase().indexOf("<option") < 0) {
        innerHTML = "<option>" + innerHTML + "</option>";
    }
    innerHTML = innerHTML.toLowerCase().replace(/<option/g, "<span").replace(/<\/option/g, "</span");
    selTemp.innerHTML = innerHTML;
    for (var i = 0; i < selTemp.childNodes.length; i++) {
        var spantemp = selTemp.childNodes[i];
        if (spantemp.tagName) {
            opt = document.createElement("OPTION");
            if (document.all) {
                //IE
                objeto.add(opt);
            }
            else {
                objeto.appendChild(opt);
            }
            //getting attributes
            for (var j = 0; j < spantemp.attributes.length; j++) {
                var attrName = spantemp.attributes[j].nodeName;
                var attrVal = spantemp.attributes[j].nodeValue;
                if (attrVal) {
                    try {
                        opt.setAttribute(attrName, attrVal);
                        opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));
                    } 
                    catch (e) {
                    }
                }
            }
            //getting styles
            if (spantemp.style) {
                for (var y in spantemp.style) {
                    try {
                        opt.style[y] = spantemp.style[y];
                    } 
                    catch (e) {
                    }
                }
            }
            //value and text
            opt.value = spantemp.getAttribute("value");
            opt.text = spantemp.innerHTML;
            //IE
            opt.selected = spantemp.getAttribute('selected');
            opt.className = spantemp.className;
        }
    };
    document.body.removeChild(selTemp);
    selTemp = null;
};

function SoNumeros(e){
    try {
        var carCode = (window.event ? event.keyCode : e.which);
        
        if ((carCode == 9) || (carCode == 46) || (carCode == 44) || (carCode >= 96) || (carCode > 57) || (carCode < 48)) {
            if ((carCode == 8) || (carCode == 0)) {
                return true;
            };
            
            if ((carCode == 46) || (carCode == 44)) {
                return true;
            };
            return false;
        };
        return true;
    } 
    catch (ex) {
    };
};

