/******************
* Cria o método trim no objeto String do JavaScript.
******************/
String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

/******************
* Cria o método replaceAll no objeto String do JavaScript.
******************/
String.prototype.replaceAll = function (r, w) {
    var s = this;
    try {
        return s.split(r).join(w);
    } catch (e) {
        return s;
    }
}

/******************
* Transforma um numero num float javascript.
******************/
String.prototype.toFloat = function () {
    var s = this;
    try {
        return parseFloat(s.replaceAll(',', '.'));
    } catch (e) {
        return NaN;
    }
}

/******************
* Transforma um numero numa string formatada
******************/
Number.prototype.formatFloat = function (precision) {
    var f = this;
    try {
        f = f.toFixed(precision);
        return f.toString().replaceAll('.', ',');
    } catch (e) {
        return NaN;
    }
}


/******************
* Cria o método antiCache para colocar em query strings. Passar & ou ? como parametro.
******************/
String.prototype.antiCache = function (s) {
    var d = new Date();
    return this + s + "cache=" + d.getMilliseconds();
}

/***************
* Inicialização da página.
****************/
$(document).ready(function () {
    
    $(".cornerbox").corner();
    $(".twtcorner").corner();
    $(".cornerleft").corner("left");

    if (screen.width > 1024) {
        $("#divConteudo").addClass("AlinhamentoCentralizado");
        $("#divConteudoRodape").addClass("AlinhamentoCentralizado");
    }

    $('ul#slide').innerfade({
        speed: 1000,
        timeout: 3000,
        type: 'sequence',
        containerheight: '240px'
    });

    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(startRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
    preventEnter();
    initPageInputs();
    window.status = "Desenvolvido por J.R.S. Computação - www.jrscomputacao.com.br";
});

/***************
* Handler do inicio das requisições AJAX.ASPNET.
****************/
function startRequestHandler(sender, args) {
    if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()) {
        args.set_cancel(true);
    }
    else {
        showProgress(args.get_postBackElement());
    }
}

/***************
* Handler do final das requisições AJAX.ASPNET.
****************/
function endRequestHandler(sender, args) {
    hideProgress(sender._postBackSettings.sourceElement);
    if (args.get_error() != undefined) {
        var errorMessage;
        if (args.get_response().get_statusCode() == '200') {
            errorMessage = args.get_error().message.replace('Sys.WebForms.PageRequestManagerServerErrorException:', '');
        }
        else {
            errorMessage = 'Ocorreu um problema na operação. Favor tentar novamente.';
        }

        $('#divMsg').html('<div class="error">' + errorMessage + '</div>');
        args.set_errorHandled(true);
        $('html').animate({ scrollTop: 0 }, 'slow');
    }
}

/***************
* Mostra o gif animado de progresso.
****************/
function showProgress(obj) {
    var jqID = "#" + obj.id;
    var isBtn = (obj.getAttribute("type") != null);

    if (isBtn) {
        try {
            $(jqID).addClass("prgimg");
        } catch (e) { }
    }
    else {
        try {
            $('<span><img src="' + APP_ROOT + 'App_Themes/JRS/img/progress.gif" border="0"></span>').appendTo(jqID);
        } catch (e) { }
    }
}

/***************
* Esconde o gif animado de progresso.
****************/
function hideProgress(obj) {
    var jqID = "#" + obj.id;
    var isBtn = (obj.getAttribute("type") != null);

    if (isBtn) {
        try {
            $(jqID).removeClass("prgimg");
        } catch (e) { }
    }
}

/***************
* Não deixa que a página seja postada se o usuário pressionar enter.
****************/
function preventEnter() {

    var keyStop = { 8: ":not(input:text, textarea, input:file, input:password)",
        13: "input:text, input:password",
        end: null
    };

    $(document).bind("keydown", function (event) {
        var selector = keyStop[event.which];
        if (selector !== undefined && $(event.target).is(selector)) {
            event.preventDefault();
        }
        return true;
    });
}

/***************
* Inicializa os controles da tela.
****************/
function initPageInputs() {

    var inputs = $('input');
    inputs.each(function () {

        if ($(this).hasClass('tableRepeater')) {
            TableRepeater_Init($(this));
        }

        if ($(this).hasClass('requerido')) {
            var d = document.createElement("SPAN");
            d.innerHTML = '<font color=red>&nbsp;*</font>';
            $(this).prev().append(d);
        }

        if ($(this).hasClass('data')) {
            initInputData($(this));
        }

        else if ($(this).hasClass('hora')) {
            initInputHora($(this))
        }

        else if ($(this).hasClass('inteiro')) {
            initInputInteiro($(this))
        }

        else if ($(this).hasClass('decimal')) {
            initInputDecimal($(this))
        }

        else if ($(this).hasClass('fone')) {
            initInputTelefone($(this))
        }

        else if ($(this).hasClass('cep')) {
            initInputCep($(this))
        }

        else if ($(this).hasClass('cpf')) {
            initInputCPF($(this))
        }

        else if ($(this).hasClass('cnpj')) {
            initInputCNPJ($(this))
        }

        else if ($(this).hasClass('NumeroCep')) {
            $(this).mask('99999-999');
        }
    });
}

/***************
* Inicializa o input conforme msk passada
****************/
function initInput(obj, msk) {

    obj.removeClass("cpf");
    obj.removeClass("cnpj");
    obj.removeClass("telefone");
    obj.removeClass("fax");
    obj.removeClass("celular");
    obj.removeClass("email");

    switch (msk.toLowerCase()) {
        case "cpf": initInputCPF(obj); break;
        case "cnpj": initInputCNPJ(obj); break;
        case "telefone": initInputTelefone(obj); break;
        case "fax": initInputTelefone(obj); break;
        case "celular": initInputTelefone(obj); break;
        case "email": initInputEmail(obj); break;

        default: obj.unmask();
    }
}

/***************
* Textbox para data
****************/
function initInputData(obj) {
    obj.mask('99/99/9999');
    obj.datePicker({ startDate: '01/01/1900' });
}

/***************
* Textbox para hora
****************/
function initInputHora(obj) {
    $.mask.definitions['H'] = '[012]';
    $.mask.definitions['M'] = '[012345]';
    obj.mask('H9:M9');
}

/***************
* Textbox para inteiro
****************/
function initInputInteiro(obj) {
    obj.bind('keypress', function (event) {
        if (event.which < 48 || event.which > 57) event.preventDefault();
    });
}

/***************
* Textbox para decimal
****************/
function initInputDecimal(obj) {
    //todo
}

function initInputTelefone(obj) {
    obj.mask("(99) 9999-9999");
}

function initInputCep(obj) {
    obj.mask("99999-999");
}
/***************
* Textbox para CPF
****************/
function initInputCPF(obj) {
    obj.addClass("cpf");
    obj.mask("999.999.999-99");
}

/***************
* Textbox para CNPJ
****************/
function initInputCNPJ(obj) {
    obj.addClass("cnpj");
    obj.mask("99.999.999/9999-99");
}

/***************
* Chamada para HttpHandlers.
****************/
function ExecuteGenericHandler(value, url) {
    if (value.trim() != "") {
        $.get(APP_ROOT + url, { q: value }, function (dados) {
            if (dados != null && dados != "") {
                $.each(dados, function (key, val) {
                    if ($('.' + key).val() == "") {
                        $('.' + key).val(val);
                    }
                });
            }
        });
    }
}

/***************
* Converte um input para hidden.
****************/
function Input2Hidden(obj) {
    var name = obj.getAttribute("id");
    var css = obj.getAttribute("class");
    var val = obj.value;

    return '<input type="hidden" name="' + name + '" id="' + name + '" class="' + css + '" value="' + val + '"/>';
}

/******************
* Posta o formulario efetuando as validações jQuery.
*****************/
function postForm(obj) {
    //Pega o nome do formulário atual.
    var id = "#" + document.forms[0].id;
    //Ativa o jQuery Validator
    $(id).validate();
    //Verifica se o form é valido.
    return $(id).valid();
}

/******************
* Mostra mensagem de informação para o usuário.
*****************/
function showInformationMessage(msg) {
    $('#divMsg').html('<div class="info">' + msg + '</div>');
}

/******************
* Mostra mensagem de alerta para o usuário.
*****************/
function showAlertMessage(msg) {
    $('#divMsg').html('<div class="alert">' + msg + '</div>');
}

/******************
* Mostra mensagem de sucesso para o usuário.
*****************/
function showSuccessMessage(msg) {
    $('#divMsg').html('<div class="success">' + msg + '</div>');
}

/******************
* Valida resposta ajax e mostra msg se necessário.
*****************/
function validarRespostaAjax(dados) {
    $('#divMsg').html("");
    if (dados != null && dados != "") {
        try {
            if (dados.indexOf('erro') > -1) {
                showAlertMessage(dados.substring(5));
                return false;
            }
            return true;
        } catch (e) {
            return true;
        }
    }

    return false;
}

/******************
* Calcula o total do pedido.
*****************/
function calcularTotaisProdutos() {

    var totalGeral = 0;
    var totalCliente = 0;
    var totalRevendedor = 0;
    var qtd = 0;
    var val = 0;

    var pComissCli = $(".ComissaoCliente").val();
    var pComissRev = $(".ComissaoRevendedor").val();

    pComissCli = pComissCli.toString().toFloat();
    pComissRev = pComissRev.toString().toFloat();

    $('#tbProdutos TR').each(function () {
        qtd = $(this).find(".Qtdade").val();
        val = $(this).find(".ValorUnitario").val();

        if (qtd != null && val != null) {
            var total = qtd.toFloat() * val.toFloat();

            if (!isNaN(total)) {
                totalGeral = totalGeral + total;
            }

            $(this).find('#txtValorTotal').val(total.formatFloat(2));
        }
    });

    totalCliente = (totalGeral * pComissCli) / 100;
    totalRevendedor = (totalGeral * pComissRev) / 100;

    $('#lblTotalProdutos').html(totalGeral.formatFloat(2));
    $('#lblComissaoCliente').html(totalCliente.formatFloat(2));
    $('#lblComissaoRevendedor').html(totalRevendedor.formatFloat(2));

}

var globalPopup = null;
function criarPopup() {
    globalPopup = window.open('', 'name', 'left=10, top=5, height=' + (screen.height - 120) + ', width=' + (screen.width - 25) + ', menubar=0, location=0, toolbar=0, status=0, resizable=1, scrollbars=1, minimizable=no');
}

/* ABRE POPUP DO RELATORIO*/
function abrirPopRelatorio(url) {
    globalPopup.location.href = url;
}


/* ABRE POPUP DO SUPORTE */
function abrirSuporte() {
    $.prompt('<div style="overflow:hidden;height:400px;width:575px;postion:relative;margin-top:-10px;"><div style="postion:relative;margin-top:-80px;"><iframe src="/site/Estatico/Atendimento.aspx" frameborder="0" height="475" width="590"></iframe></div></div>   ');
}

/* SELECIONA QUAIS VIDEOS DEVEM APARECER DE ACOROD COM O MODULO */
function selecionarModuloVideo(val) {
    document.getElementById('frmVideos').setAttribute('src', 'VideosListar.aspx?modulo=' + val);
}

/* posta o form para o mysuite */
function callMySuite() 
{
    var email = document.getElementById('hdnEmailLogado').value;
    document.forms[0].action = 'http://jrscomputacao.mysuite.com.br/logininterno.php?param=chat_gc_noedit&inf=' + email;
    document.forms[0].submit();
    
}
