﻿//autor Navit
var Util = function() {
    var ajax = {
        settings: {
            "text_aguarde": "Aguarde...",
            "text_error": "Erro ao processar informa  o. Por favor, tente novamente"
        },

        init: function(text) {
            $(document).ajaxStart(function() {
                ajax.start(text);
            });

            $(document).ajaxStop(function() {
                ajax.stop();
            });

            $(document).ajaxError(function(e, request, settings) {
                ajax.error(e, request, settings);
            });
        },

        start: function(text) {
            text = text || this.settings.text_aguarde;
            $('#ajaxStatus').addClass('loading').text(text).css({ 'display': 'block', 'margin-left': parseInt($('#ajaxStatus').width() / 2, 10) * (-1) });
        },

        stop: function() {
            $('#ajaxStatus').removeClass('loading').empty().css({ 'display': 'none', 'margin-left': 0 });
        },

        error: function(e, request, settings) {
            this.stop();
        }
    };

    var modal = {
        "m": "#modalWindow",
        "o": "#modalOverlay",

        load: function(url, method, extraData, callBack) {
            var 
                width, height, top, left,
                self = this,
                fechar = [],
                bodyH = $(document).height(),
                scroll = $(window).scrollTop() + 5,
                data = $('#formModal').serialize(),
                re = /(jpg|png|gif)$/;

            if (extraData) {
                data += extraData;
            }

            if (re.test(url.toLowerCase())) {
                Util.ajaxStart('Carregando a imagem...');

                fechar.push('<div id="modalContent">');
                fechar.push('<a href="#" rel="nofollow" class="modalclose">Fechar</a>');
                if (extraData) {
                    fechar.push('<h2>' + extraData + '</h2>');
                }
                fechar.push('<img src="' + url + '" id="img_modal" alt="" />');
                fechar.push('</div>');

                $(self.m).append(fechar.join(""));

                $('#img_modal').load(function() {
                    width = $(self.m).width();
                    height = $(self.m).height();
                    top = parseInt(height / 2, 10) * (-1);
                    left = parseInt(width / 2, 10) * (-1);

                    $(self.m).css({
                        top: '50%',
                        marginTop: (top + scroll),
                        marginLeft: left
                    }).fadeIn(200);

                    Util.ajaxStop();
                });

                $('.modalclose,.modalvoltar').bind('click', function() {
                    self.close();
                    return false;
                });

                $(self.o).click(function() {
                    self.close();
                });

                return false;
            }

            $.ajax
		    ({
		        type: method,
		        url: url,
		        data: data,
		        success: function(result) {
		            $(self.m).append(result);

		            width = $(self.m).width();
		            height = $(self.m).height();
		            top = parseInt(height / 2, 10) * (-1);
		            left = parseInt(width / 2, 10) * (-1);

		            if (height > bodyH) {
		                $(self.m).css({
		                    top: 0,
		                    marginTop: scroll,
		                    marginLeft: left
		                });
		            } else {
		                $(self.m).css({
		                    top: '50%',
		                    marginTop: (top + scroll),
		                    marginLeft: left
		                });
		            }

		            $(self.m).fadeIn(200);

		            $('.modalclose,.modalvoltar').bind('click', function() {
		                self.close();
		                return false;
		            });

		            $(self.o).click(function() {
		                self.close();
		            });

		            if (callBack) {
		                callBack();
		            }
		        },
		        cache: false
		    });
        },

        

        

        init: function() {
            var 
                $this,
                self = this;

            $('.modal').unbind('click').bind('click', function() {
                $this = $(this);

                self.open($this.attr('href'), 'GET', $this.attr('title'));
                return false;
            });
        }
    };

    function setLazyLoad() {
        if ((/iPhone|iPad|iPod/).test(navigator.platform)) return;
        $('img').not('.scroller img, .jcarousel-gallery img, .jcarousel-container img').lazyload({
            "placeholder": "/images/lazyload.png",
            "effect": "fadeIn"
        });
    }

    return {
        encontrarElemento: function(id, type, attr) {
            type = type || '';
            attr = attr || 'id';

            var context = $(type + "[" + attr + "$=" + id + "]");

            return context;
        },

        setMoveScroll: function(div) {
            var id = (typeof div === 'string' ? $(div) : div);
            $('html, body').stop().animate({ scrollTop: id.offset().top }, 700);
        },

        formatarValor: function(valor, tipo) {
            var len = valor.toString().length;

            valor = valor.toString();

            if (tipo == "preco") {
                if (len <= 5)
                    valor = valor.substring(0, 1) + "0.000";
                else if (len <= 6)
                    valor = valor.substring(0, 2) + "0.000";
                else if (len <= 7)
                    valor = valor.substring(0, 1) + "." + valor.substring(1, 2) + "00.000";
                else if (len <= 8)
                    valor = valor.substring(0, 2) + "." + valor.substring(3, 2) + "00.000";
            }
            else if (tipo == "parcela" || tipo == "aluguel") {
                if (len <= 2)
                    valor = valor.substring(0, 1) + "0";
                else if (len <= 3)
                    valor = valor.substring(0, 1) + "00";
                else if (len <= 4)
                    valor = valor.substring(0, 1) + "." + valor.substring(1, 2) + "00";
                else if (len <= 5)
                    valor = valor.substring(0, 1) + "0.000";
            }
            else {
                var re = /(\d+)(\d{3})/;
                valor += '';

                while (re.test(valor)) {
                    valor = valor.replace(re, '$1' + '.' + '$2');
                }
            }
            return valor;
        },

        isNullOrEmpty: function(valor) {
            if (!valor) {
                return true;
            } else {
                return false;
            }
        },
        carregarCombo: function(pComboCarregar, pObjCombo, pCallBack, pPrimeiroItem, pDados) {
            var filtro;

            if (pObjCombo.nodeType === 'undefined') {
                filtro = pObjCombo.val();
            } else {
                filtro = pObjCombo.value;
            }	

			if (filtro == '0')			
				return;				
			
            if (filtro.length) {
                // Desabilita o combo pai, para evitar chamar varias vezes o servidor
                // rolando o combo
				
                pObjCombo.disabled = true;

                // Adiciona a primeira opcao do combo
                var 
                    x,
                    i = 1,
                    intervalo = null,
                    t = '',
                    dadosExtra = '',
                    Combo = $e(pComboCarregar, 'select').empty().append('<option value="">Carregando</option>');

                function PiscarCarregando() {
                    if (i <= 3) {
                        t += '.';
                    } else {
                        t = '';
                        i = 0;
                    }
                    x = 'Carregando' + t;

                    Combo.children().eq(0).text(x);
                    i++;
                }

                intervalo = setInterval(PiscarCarregando, 200);

                if (!Util.isNullOrEmpty(pDados)) {
                    dadosExtra = "&buscarPor=" + pDados;
                }

                var params, arrItens = [];

                arrItens.push(pComboCarregar);
                arrItens.push(filtro);
                arrItens.push(dadosExtra);

                params = Util.StringFormat("comboCarregar={0}&codigoFiltro={1}{2}", arrItens);

                $.ajax({
                    type: "GET",
                    url: "carregacombo.asp",
                    data: params,
                    success: function(retorno) {
                        clearInterval(intervalo);

                        if (!Util.isNullOrEmpty(pPrimeiroItem)) {
                            Combo.children().eq(0).val('').text(pPrimeiroItem);
                        } else {
                            Combo.empty();
                        }

                        pObjCombo.disabled = false;

                        if (pCallBack == null) {
                            if (Combo.change != null) { // se o combo tiver funcao, tem que executar
                                Combo.change();
                            }
                        }

                        // Pega string de retorno do .Net e monta array
                        //var Retorno = retorno.responseText;
                        var 
                            arrCombo = [],
                            arrValores = [];

                        if (retorno.length) {
                            arrValores = retorno.split('|');
                        }

                        // Carrega combo com as opcoes do array
                        for (var i = 0, l = arrValores.length - 1; i < l; i += 2) {
                            arrCombo.push('<option value="' + arrValores[i] + '">' + arrValores[i + 1] + '</option>');
                        }

                        Combo.append(arrCombo.join(""));

                        if (pCallBack != null) {
                            pCallBack();
                            if (Combo.change != null) { // se o combo tiver funcao, tem que executar
                                Combo.change();
                            }
                        }
                    }
                });
            }
        },

        // ex:
        // Util.StringFormat('teste numero {0} da funcao {1}', '1', 'Stringformat');
        // Util.StringFormat('teste numero {0} da funcao {1}', ['2', 'Stringformat']);
        StringFormat: function(text) {
            if (arguments.length <= 1) {
                return text;
            }

            if (typeof (arguments[1]) == 'object') {
                arguments = arguments[1];
                arguments.splice(0, 0, "");
            }

            var tokenCount = arguments.length - 2;

            for (var token = 0; token <= tokenCount; token++) {
                text = text.replace(new RegExp("\\{" + token + "\\}", "gi"), arguments[token + 1]);
            }

            return text;
        },

        //        StringFormat: function(template, data) {
        //            return template.replace(/\{\{([-_a-z]+)\}\}/g, function(m, key, value) {
        //                return data[key] ? data[key] : "";
        //            });
        //        },

        ValidarEmail: function(str) {
            var 
                at = "@",
                dot = ".",
                lat = str.indexOf(at),
                lstr = str.length,
                ldot = str.indexOf(dot);

            if (str.indexOf(at) == -1) return false;
            if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) return false;
            if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) return false;
            if (str.indexOf(at, (lat + 1)) != -1) return false;
            if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) return false;
            if (str.indexOf(dot, (lat + 2)) == -1) return false;
            if (str.indexOf(" ") != -1) return false;
            if (str.indexOf(",") != -1) return false;

            return true;
        },

       

        
        modalOpen: function(url, method, data, callBack) {
            modal.open(url, method, data, callBack);
        },

        modalClose: function() {
            modal.close();
        },

        modalInit: function() {
            modal.init();
        },

        ajaxText: function(text) {
            ajax.settings.text_aguarde = text;
        },

        ajaxStart: function(text) {
            ajax.start(text);
        },

        ajaxStop: function() {
            ajax.stop();
        },

        pressKeyDown: function(e) {
            var code = e.which || e.keyCode;
            if (code == 13) {
                return true;
            }

            return false;
        },

        
        replaceAll: function(text, oldString, newString) {
            text = text.replace(new RegExp(oldString, "gi"), newString);
            return text;
        },
		
		defineToolTip: function(){
			$('.ipt4,.ipt5,.ipt6,.ipt7').tooltip({
				track: true,
	    		top: -40,
				opacity: 0.95   	
			});
		},
		gerarURL: function(){
			
			
				var          		
					hTipoImovel				= $e('hTipoImovel'),
					hImovelLocalidade		= $e('hImovelLocalidade'),
					hImovelBairro			= $e('hImovelBairro'),
					hVrMaximo				= $e('hVrMaximo'),
					hVrMinimo				= $e('hVrMinimo'),
					hComodo					= $e('hComodo'),
					hDormitorio				= $e('hDormitorio'),
					hBuscarEm				= $e('hBuscarEm'),
					hOrderBy				= $e('cboOrdenarResultado', 'select'),
					hFiltros				= $e('hFiltros');
					
						var vPagina = 'http://www.chitolinaimobiliaria.com.br/index.asp?run=buscaimovel' +
							'&cboTipoImovel=' + hTipoImovel.val() +
							'&cboImovelLocalidade=' + hImovelLocalidade.val() +
							'&cboImovelBairro=' + hImovelBairro.val() +
							'&txtVrMaximo=' + hVrMaximo.val() +						
							'&txtVrMinimo=' + hVrMinimo.val() +
							'&txtVrComodo=' + hComodo.val() +
							'&txtVrDormitorio=' + hDormitorio.val() +
							'&buscarEm=' + hBuscarEm.val() +
							'&orderby=' + hOrderBy.val() +
							'&filtros=' + hFiltros.val();									
					
					window.location.href =vPagina;

		},
		defineEventos: function(){
			$('#btnFiltroPesquisa').click(function(){				
				var optFiltros = "";
				var ipts = $("input[name=FiltroOpt][type='checkbox']");
				
				jQuery.each(ipts,function(){
					if (this.checked)
					optFiltros += this.value + ";";									
				});
				$e('hFiltros').attr('value',optFiltros);				
				Util.gerarURL();
			});
			$('#cboTipoImovel,#cboTipoImovelAluguel,#cboTipoImovelLateral').change(function(){				
				var sTipo = "";
				var sBusca = "comprar";
				
				if ($(this).attr('id').indexOf('Lateral') != -1 ){										
					var ipts = $("input[name=chkbuscarEm][type='checkbox']");
					var retorno = false;
					
					jQuery.each(ipts, function(){
							if (this.checked == true)
							{
								retorno = true;
								sBusca = this.value;
								sTipo = "Lateral";									
							}								
						});

						if (retorno == false) {
							alert('Você precisa selecionar o tipo de busca: Comprar ou Alugar!');
							return;
						}
						
				}
					
											
				if ($(this).attr('id').indexOf("Aluguel") != -1) {
					sTipo = "Aluguel";
					sBusca = "alugar";
				}	
		
				Util.carregarCombo('cboImovelLocalidade' + sTipo, this, null, 'Localidade...', sBusca);
			});
			
					
			$('#cboImovelLocalidade,#cboImovelLocalidadeAluguel,#cboImovelLocalidadeLateral').change(function(){
				var sTipo = "";
				var sBusca = "comprar";
				var scboTipo = "#cboTipoImovel";
						
						
				if ($(this).attr('id').indexOf('Lateral') != -1 ){
					var ipts = $("input[name=chkbuscarEm][type='checkbox']");
					var retorno = false;
					//alert('lateral');
					scboTipo = scboTipo + 'Lateral';
					
					//alert($(this).attr('name'));
					
					jQuery.each(ipts, function(){
							if (this.checked == true)
							{
								retorno = true;
								sBusca = this.value;
								sTipo = "Lateral";									
							}								
						});

						if (retorno == false) {
							alert('Você precisa selecionar o tipo de busca: Comprar ou Alugar!');
							return;
						}
				}						
				if ($(this).attr('id').indexOf("Aluguel") != -1) {
					sTipo = "Aluguel";
					sBusca = "alugar";
				}				
				
				//apagar
				//alert('tipo--> ' + scboTipo);
				var TipoImovel = $(scboTipo).val();
				//alert(xVal);
				/*
				 * 1 - Comercial
				 * 2 - Rural
				 * 3 - Urbano
				 */
				//if(TipoImovel != '2' && sBusca != 'comprar'){
					//alert(TipoImovel);
				if (sBusca == 'comprar'){
					if(TipoImovel != 2){										
						//alert(TipoImovel + '\nEh Diferente de 2' + '\nBuscando em ' + sBusca + '\nOk devemos efetuar a busca');
						Util.carregarCombo('cboImovelBairro' + sTipo, this, null, 'Bairro...', sBusca);
					}else{
					//	alert(sBusBusca +  ' -- me chamou');
					// nao é igual
						//alert(TipoImovel + '\nEh igual a 2' + '\nBuscando em' + sBusca + '\nNAOOOO devemos efetuar a busca');
						Combo = $e('cboImovelBairro' + sTipo, 'select').empty().append('<option value="0">Todos...</option>');
					}
				}else if(sBusca == 'alugar'){
					//alert('modo alugar --- normal');
					Util.carregarCombo('cboImovelBairro' + sTipo, this, null, 'Bairro...', sBusca);
				}
				
			});
			
			/*$e('cboImovelLocalidade', 'select').bind('change', function(aaa) {
                Util.carregarCombo('cboImovelBairro', this, null, 'Bairro...', 'comprar');               
            });*/
			
            /*$e('cboTipoImovel', 'select').bind('change', function(aaa) {				
                //Util.carregarCombo('cboImovelLocalidade', this, null, 'Localidade...', 'comprar');
				
				if (this.name.indexOf("alugar") != -1) 
					Util.carregarCombo('cboImovelLocalidade', this, null, 'Localidade...', 'comprar');
				else
					Util.carregarCombo('cboImovelLocalidadeAlugar', this, null, 'Localidade...', 'comprar');
								
            });*/
			
			
			
			//aluguel
			/*$e('cboTipoImovelAluguel', 'select').bind('change', function(aaa) {
                Util.carregarCombo('cboImovelLocalidadeAluguel', this, null, 'Localidade...', 'alugar');                
            });
			
			$e('cboImovelLocalidadeAluguel', 'select').bind('change', function(aaa) {
                Util.carregarCombo('cboImovelBairroAluguel', this, null, 'Bairro...', 'alugar');               
            });*/
			
			// nova pesquinsa
			$e('btnFazerNovaPesquisa').click(function(evt){
				var FiltroPesquisa = $e('corpo');
				if(FiltroPesquisa.is(":visible")){
					FiltroPesquisa.slideToggle(400);
					$(this).text("FAZER NOVA PESQUISA");
				}else
				{
					FiltroPesquisa.slideToggle(400);			
					$(this).text("OCULTAR PESQUISA");
				}		
			});
			
			// filtro
			$e('btnFiltroAvancadoCat').click(function(evt){
				var FiltroPesquisa = $e('QuadroFiltroAvancado');
				if (FiltroPesquisa.is(":visible")){
					FiltroPesquisa.slideToggle(400);
					$(this).text('Filtro Avançado');
				}else{
					FiltroPesquisa.slideToggle(400);
					$(this).text('Ocultar Filtro');
				}
			});
			
			// mais opçoes
			$e('btnMaisOpcoes').click(function(evt){
				var FiltroPesquisa = $e('QuadroMaisOpcoes');
				if (FiltroPesquisa.is(":visible")){
					FiltroPesquisa.slideToggle(400);
					$(this).val('MAIS OPÇÕES');
				}else{
					FiltroPesquisa.slideToggle(400);
					$(this).val('OCULTAR OPÇÕES');
				}
			});
			
			// ORDERNAR RESULTADO
			$e('cboOrdenarResultado').bind('change',function(){				
				Util.gerarURL();
			});
		},
        init: function() {
            window.$e = this.encontrarElemento;

            //ajax.init();
           // modal.init();
            //setHideInput();
            //setFocusOut();
            //setLazyLoad();
			//alert('abriu');
			this.defineEventos();
			this.defineToolTip();
			
			if (document.location.href.indexOf("buscaimovel") != -1)
				setLazyLoad();


			$e('txtVrMinimo', 'input').setMask("decimal");
			$e('txtVrMaximo', 'input').setMask("decimal");
			$e('txtVrComodo', 'input').setMask("99");
			$e('txtVrDormitorio', 'input').setMask("99");
			
			$e('txtVrMinimoAluguel', 'input').setMask("decimal");
			$e('txtVrMaximoAluguel', 'input').setMask("decimal");
			$e('txtVrComodoAluguel', 'input').setMask("99");
			$e('txtVrDormitorioAluguel', 'input').setMask("99");
			
            //this.floaterCampaign(21);
        }
    };
} ();

$(function() {
    Util.init();
});
