﻿var Util = function () {
    var ajax = {
        msgAjax: {
            "terror": "Ops! Por favor, tente novamente.",
            "taguarde": "<img src=\"/layout/load.gif\" alt=\"Carregando...\" width=\"152\" height=\"33\" />"
        },

        init: function (text) {
            $(document).ajaxStart(function () {
                ajax.start(text);
            });
            $(document).ajaxStop(function () {
                ajax.stop();
            });
            $(document).ajaxError(function (e, request, msgAjax) {
                ajax.error(e, request, msgAjax);
            });
        },

        start: function (text) {
            text = text || this.msgAjax.taguarde;
            $('#carregando').html(text);
            $('#carregando').removeClass('hide');
        },

        stop: function () {
            $('#carregando').addClass('hide');
            $('#carregando').addClass('hide');
        },

        error: function (e, request, msgAjax) {
            this.stop();
        }
    };

    return {
        // Valida se é nulo ou empty
        isNullOrEmpty: function (valor) {
            if (!valor || valor == null || valor == "") {
                return true;
            } else {
                return false;
            }
        },

        ajaxText: function (text) {
            ajax.msgAjax.taguarde = text;
        },

        ajaxStart: function (text) {
            ajax.start(text);
        },

        ajaxStop: function () {
            ajax.stop();
        },

        //Remove acentuação em uma string
        removeAcentos: function (string) {
            var r = string.toLowerCase();
            r = r.replace(new RegExp("\\s", 'g'), " ");
            r = r.replace(new RegExp("[àáâãäå]", 'g'), "a");
            r = r.replace(new RegExp("æ", 'g'), "ae");
            r = r.replace(new RegExp("ç", 'g'), "c");
            r = r.replace(new RegExp("[èéêë]", 'g'), "e");
            r = r.replace(new RegExp("[ìíîï]", 'g'), "i");
            r = r.replace(new RegExp("ñ", 'g'), "n");
            r = r.replace(new RegExp("[òóôõö]", 'g'), "o");
            r = r.replace(new RegExp("œ", 'g'), "oe");
            r = r.replace(new RegExp("[ùúûü]", 'g'), "u");
            r = r.replace(new RegExp("[ýÿ]", 'g'), "y");
            r = r.replace(new RegExp("\\W", 'g'), " ");
            return r;
        },

        //Controla enter
        Enter: function (e) {
            var code = e.which || e.keyCode;
            if (code == 13) {
                return true;
            }
            return false;
        },

        //Retorna valor de qualquer parâmetro na url atual
        QueryString: function (param) {
            var valParam = null,
                url = window.location.search.substring(1),
                urlSplit = url.split("&");
            for (i = 0; i < urlSplit.length; i++) {
                valParam = urlSplit[i].split("=");
                if (valParam[0] == param) {
                    return valParam[1];
                }
            }
            return null;
        },

        //Retorna identificação do domain da faixa de preço
        RetornaIdentificacaoFaixaDePreco: function (valor) {
            valor = parseInt(valor);
            if (valor <= 220000)
                return 1;
            else if (valor >= 180000 && valor <= 420000)
                return 2;
            else if (valor >= 380000 && valor <= 620000)
                return 3;
            else if (valor >= 580000 && valor <= 820000)
                return 4;
            else if (valor >= 780000)
                return 5;
        },

        //Converte valor selecionado na régua de valores, para milhar
        ConvertePrecoSliderParaMilhar: function (valor) {
            valor = parseInt(valor);
            switch (valor) {
                case (0):
                    return 0;
                    break;
                case (200):
                    return 200000;
                    break;
                case (400):
                    return 400000;
                    break;
                case (600):
                    return 600000;
                    break;
                case (800):
                    return 800000;
                    break;
                case (1000):
                    return 1000000;
                    break;
            }
        },

        init: function () {
            ajax.init();
        },

        //Formata url amigável
        Rewrite: function (str) {
            newStr = new String(Util.removeAcentos(str)).toLowerCase().replace("_", "").replace(/\s/gi, "-").replace(".", "").replace(";", "").replace(":", "").replace("--", "-").replace("/", "-").replace(",", "-");
            return newStr;
        },

        //Popula funcionalidades click dos filtros laterais
        BindClickFiltros: function (sender, tipo) {
            var obj = $(sender);
            obj.each(function () {
                var txtLabel = Util.Rewrite($.trim($(this).children("label").text())),
                    input = $(this).children("input").addClass(txtLabel);
                input.attr("tipoBusca", tipo);
                $(input).click(function (event) {
                    Gsp.FiltraResultados($(this), null, null);
                });
            });
        },

        //Controla ação de traçar rota
        PrepararRota: function (idioma) {
            $("#msg-rota").text("");
            var origem = $("#endOrigem").val(),
                destino = $("#ctl00_ctl00_MainContent_cphInterna_hfLatLng").val();
            if (!Util.isNullOrEmpty(origem)) {
                Gsp.TracarRota(origem, destino, "desc-rota", idioma);
            }
            else {
                if (idioma == 'ingles') {
                    $("#msg-rota").text("Enter a source address");
                }
                else {
                    $("#msg-rota").text("Informe um endereço de origem");
                }
            }
        },

        Menu: function (target) {
            var obj, pageTitle, newPageTitle, newClass, objIndex, classNameReplace, pathname, newPathname;
            obj = $(target);

            //Ajusta as margens de Topo e baixo
            obj.first().addClass("no-mt");
            obj.last().addClass("no-mb");

            pathname = window.location.pathname
            newPathname = pathname.split("/");

            pageTitle = new String($(".titulo").text()).toLowerCase();
            newPageTitle = pageTitle.split("\n");

            newClass = new String(newPathname[1]).replace(" ", "-");
            strCount = new String(newPageTitle[1]).length;

            $(".menu-modelo1").addClass("ui-" + newClass);

            obj.each(function () {
                $(this).addClass("ui-" + newClass + "-" + $(this).index());
                if ($.trim($(this).text()).length > "26") {
                    $(this).addClass("ui-2-linhas");
                }
                //Compara com o link com o titulo da pagina e aplica a class Active
                if ($.trim($(this).text()).toLowerCase() == $.trim(pageTitle)) {
                    $(this).addClass("active");
                }
            });
        },

        //Ajusta a altura dos filtros do tipo de empreendimento
        FiltrosFixHeight: function (object) {
            var obj = $(object);
            obj.each(function () {
                if ($.trim($(this).children("label").text()).length > "21") {
                    $(this).addClass("ui-filtro-2-linhas");
                }
            });
        },

        State: {
            Set: function (index, exp) {
                var date = new Date();
                date.setTime(date.getTime() + (exp * 24 * 60 * 60 * 1000));
                var expire = date.toGMTString();
                document.cookie = "state_index=" + index + "; expires=" + expire;
            },
            Get: function () {
                var state = document.cookie;
                if (state.indexOf("state_index") != -1) {
                    var splState = state.split("=");
                    return splState[1];
                }
            },
            Clear: function (obj, idx) {
                var date = new Date();
                date.setTime(date.getTime() - 1);
                var expire = date.toGMTString();
                document.cookie = "state_index+=; expires=" + expire;
            }
        },

        //Funçao de Imprimir
        Print: function (object) {
            $(object).click(function () {
                return window.print();
            });
        },

        //Zoom do Texto
        Zoom: function (up, down) {
            var current = new String($(".content p, .zoomtextcontent p, .black-title a, .txtDesc, .content_clientes p, .acc_trigger a").css("fontSize")).split("px");
            var i = 0;
            var zoom = parseInt(current[0]);
            $(up).click(function () {
                if (i < 6) {
                    i = i + 1;
                    $(".content p, .zoomtextcontent p, .black-title a, .txtDesc, .content_clientes p, .acc_trigger a").css("fontSize", i + zoom + "px");
                    /*$(".content label, .zoomtextcontent label").css("fontSize", i + zoom + "px");*/
                    $(".content li, .zoomtextcontent li").css("fontSize", i + zoom + "px");
                    $(".content small, .zoomtextcontent small").css("fontSize", i + zoom + "px");
                }
            });

            $(down).click(function () {
                if (i > 0) {
                    i = i - 1;
                    $(".content p, .zoomtextcontent p, .black-title a, .txtDesc, .content_clientes p, .acc_trigger a").css("fontSize", (i + zoom) + "px");
                    /*$(".content label, .zoomtextcontent label").css("fontSize", (i + zoom) + "px");*/
                    $(".content li, .zoomtextcontent li").css("fontSize", (i + zoom) + "px");
                    $(".content small, .zoomtextcontent small").css("fontSize", i + zoom + "px");
                }
            });
        },

        //Marca campos vazios com borda vermelha
        valida_campos_vazios: function (val, args) {
            if (Util.isNullOrEmpty(args.Value) || args.Value == "0") {
                args.IsValid = false;
                $("#" + val.controltovalidate).css("border", "1px solid #F00");
            } else {
                args.IsValid = true;
                //$("#" + val.controltovalidate).css("border", "1px solid #CCC");
            }
        },

        //Marca campos com e-mail inválido com borda vermelha
        valida_campos_email: function (val, args) {
            var regex = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
            if (!Util.isNullOrEmpty(args.Value)) {
                if (regex.test(args.Value) != true) {
                    args.IsValid = false;
                    $("#" + val.controltovalidate).css("border", "1px solid #F00");
                } else {
                    $("#" + val.controltovalidate).css("border", "1px solid #CCC");
                    args.IsValid = true;
                }
            } else {
                $("#" + val.controltovalidate).css("border", "1px solid #F00");
                args.IsValid = false;
            }
        },

        valida_telefone: function (val, args) {
            if (document.getElementById("ctl00_Unnamed2_newsletterTel").checked == "checked" && args.Value == "") {
                args.IsValid = false;
                $("#" + val.controltovalidate).css("border", "1px solid #F00");
            }
            else {
                $("#" + val.controltovalidate).css("border", "1px solid #CCC");
                args.IsValid = true;
            }
        },

        //Permite somente números
        regIsNumber: function (evt) {
            var charCode = (evt.which) ? evt.which : event.keyCode;
            if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46 && charCode != 44) {
                return false;
            }
            return true;
        },

        // Andamento das Obras
        ProgressBar: function () {

            $(".progress-bar").each(function () {

                $(this).find(".progress-content").each(function () {
                    var value = $(this).parent().next().text().trim().split("%");
                    if (value[0] != "" && value[0] != 0) {
                        $(this).css("width", value[0] + "%");
                    } else {

                        $(this).parent().css("display", "none");
                        $(this).parent().prev().parent().css("display", "none");
                    }

                })

            })

        },

        //permite pular para o campo seguinte
        //inputs
        PularCampo: function () {
            $('.form-ddd, .inputddd').each(function (i) {
                var value = new String($(this).val());
                var count = value.length;
                $(this).click(function () {
                    if (value == '__' || value == '') {
                        count = 0;
                    }
                });


                $(this).keyup(function () {
                    count = count + 1;
                    if (count == 3) {
                        $('.form-tel, .inputtel').eq(i).each(function (a) {
                            $(this).eq(0).focus();
                        });
                    }
                    if (count > 2) {
                        count = 0;
                    }
                });
            });


            //Trabalhe Conosco - verifica form-rg e pula para form-cpf
            $('.form-rg').keyup(function () {
                var c = 0;
                if (c == 8) {
                    $('.form-cpf').focus();
                }
                c++;
            });

            //Trabalhe Conosco - verifica form-cpf e pula para form-data
            $('.form-cpf').keyup(function () {
                var d = 0;
                if (d == 10) {
                    $('.form-data').focus();
                }
                d++;
            });

            //Agende Contato - verifica form-tel e pula para form-dia
            $('.form-tel').keyup(function () {
                var t = 0;
                if (t == 7) {
                    $('.form-dia').focus();
                }
                t++;
            });

            //selects
            $('.form-estado, .estados, .form-cpf, .form-data').change(function () {
                var value = $(this).val();
                if (value != 0) {
                    $('.form-cidade, .form-recebanome, .form-data').focus();
                }
            });
        }
    };
} ();

$(function () {
    Util.init();
});
