﻿/// <reference path="jquery-1.4.1-vsdoc.js" />

; (function () { //PRELOAD FUNCTIONS
    //Fancybox
    $.fn.fancybox.defaults.overlayOpacity = 0.6;
    $.fn.fancybox.defaults.overlayColor = '#000';
    $.fn.fancybox.defaults.titlePosition = 'inside';
    $.fn.fancybox.defaults.margin = 0;
    $.fn.fancybox.defaults.padding = 0;
    $("a.lightbox,area.lightbox").not('.iframe').fancybox({
        titleFormat: function (title, currentArray, currentIndex, currentOpts) {
            return '<div id="fancybox-image-title">' +
                        '<p>' + (title && title.length ? title : '') + '</p>' +
                        '<a href="javascript:void(0);" title="Anterior" class="prev text-image ' + (currentIndex == 0 ? 'disable' : '') + '" onclick="$.fancybox.prev();">Anterior</a>' +
                        '<span>' + (currentIndex + 1) + '/' + currentArray.length + '</span>' +
                        '<a href="javascript:void(0);" title="Próxima" class="next text-image ' + (currentIndex == currentArray.length - 1 ? 'disable' : '') + '" onclick="$.fancybox.next();">Próxima</a>' +
                    '</div>';
        }
    });
    $("a.lightbox.iframe,area.lightbox.iframe").not('.small,.form').fancybox({
        width: 1002,
        titleShow: false,
        onStart: function () {
            $('#fancybox-wrap').addClass('fancyFrame');
        },
        onClosed: function () {
            $('#fancybox-wrap').removeClass('fancyFrame');
        }
    });
    $("a.lightbox.iframe.small,area.lightbox.iframe.small").fancybox({
        width: 500,
        titleShow: false,
        onStart: function () {
            $('#fancybox-wrap').addClass('fancyFrame');
        },
        onClosed: function () {
            $('#fancybox-wrap').removeClass('fancyFrame');
        }
    });
    $("a.lightbox.iframe.form,area.lightbox.iframe.form").fancybox({
        width: 450,
        titleShow: false,
        onStart: function () {
            $('#fancybox-wrap').addClass('fancyForm');
        },
        onClosed: function () {
            $('#fancybox-wrap').removeClass('fancyForm');
        }
    });

    $('a[rel=external]').attr('target', '_blank');

    $('a[rel=chat],area.chat').live('click', function () {
        openChat($(this).attr('href'));
        return false;
    });

    //select p/ redirecionamento (as options devem possuir como value a URL a ser direcionada)
    $('select.redirect').bind('change', function () {
        if ($(this).val() != '') {
            window.location.href = $(this).val();
        }
    });

    //Ao alcancar o maxlength do input, pula para o proximo
    $('input[maxlength]').bind('keyup', function () {
        var input = $(this);
        if (input.val().length == input.attr('maxlength')) {
            var inputs = input.closest('fieldset').find('input');
            inputs.eq(inputs.index(input) + 1).trigger('focus');
        }
    });

    $('input:text[title]').bind('focus blur', function () {
        var input = $(this);
        if (input.val() == input.attr('title'))
            input.val('');
        else if (input.val() == '')
            input.val(input.attr('title'));
    });

    $('a.customSelect').bind('click', function () {
        var btn = $(this);
        var list = btn.next('ul');

        if (list.hasClass('active')) {
            list.removeClass('active');
            $('body').unbind('click.listEmp');
        }
        else {
            list.addClass('active');
            $('body').bind('click.listEmp', function (e) {
                list.scrollTop(0);
                btn.trigger('click');
            });
        }
        return false;
    });
})();


/*
 * FUNCOES JQUERY.FN
 *----------------------------------------------------------------------------------*/

/**
 * Aplica a navegacao atraves de abas. A estrutura HTML deve seguir o padrao abaixo.
 *
 * @param index (Integer, optional) Indice do item do menu a ser ativo no inicio. Se existe algum item do menu com a classe 'active' definida no HTML, este sera ativado.
 *
 * @example Estrutura HTML
 * <div id="tabs-example">
 * 	<ul class="nav">
 * 		<li><a href="#tab01">Tab 01</a></li>
 * 		<li><a href="#tab02">Tab 02</a></li>
 * 		<li><a href="#tab03">Tab 03</a></li>
 * 	</ul>
 * 	<div id="tab01" class="content">
 * 		<p>Tab 01 content...</p>
 * 	</div>
 * 	<div id="tab02" class="content">
 * 		<p>Tab 02 content...</p>
 * 	</div>
 * 	<div id="tab03" class="content">
 * 		<p>Tab 03 content...</p>
 * 	</div>
 * </div>
 *
 * @example Chamada
 * $("#tabs-example").tabs();
 *
 * @example Chamada
 * $("#tabs-example").tabs(2);
 */
$.fn.tabs = function (index) {
    var container = this;
    if (container.length) {
        var menu = container.find('.nav');
        var contents = container.find('.content');
        var active = menu.children('.active');

        function activeTab(tab, duration) {
            menu.children().removeClass('active');
            tab.closest('li').addClass('active');
            contents.hide();
            container.find(tab.attr('href')).fadeIn(duration);
        }

        menu.find('li').filter(function () {
            return container.find($(this).find('a').attr('href')).length <= 0;
        }).addClass('disable');

        if (active.length) {
            active = active.eq(0).find('a');
        }
        else {
            index = parseInt(index);
            index = (isNaN(index)) ? 0 : index;
            active = menu.find('a:eq(' + index + ')');
        }
        activeTab(active, 0)

        menu.children(':first').addClass('first');
        menu.children(':last').addClass('last');
        container.find('.content:first').addClass('first');
        container.find('.content:last').addClass('last');

        menu.find('a').bind('click', function (e) {
            var tab = $(this);

            if (tab.closest('li').hasClass('active') || container.find(tab.attr('href')).length <= 0) return false;

            activeTab(tab, 250)

            return false;
        });
    }
    return container;
};

/**
 * Checa os inputs (checkboxes) que possuirem como classe o id do elemento alvo.
 *
 * @example Estrutura HTML
 * <input type="checkbox" id="checkFrutas"> Frutas
 * <input type="checkbox" name="frutas" value="1" class="checkFrutas"> Melancia
 * <input type="checkbox" name="frutas" value="2" class="checkFrutas"> Morango
 * <input type="checkbox" name="frutas" value="3" class="checkFrutas"> Banana
 *
 * @example Chamada
 * $('#checkFrutas').childsChecker()
 */
$.fn.childsChecker = function () {
    this.each(function () {
        var parent = $(this);
        var childs = $('input:checkbox[class~=' + parent.attr('id') + ']');

        parent.bind('click', function () {
            checkUncheck(parent, childs);
        });
        childs.bind('click', function () {
            checkUncheck(childs, parent);
        });
    });
    function checkUncheck(checkbox1, checkbox2) {
        var checked = (checkbox1.is(':checked')) ? 'checked' : '';
        checkbox2.attr('checked', checked);
    }
    return this;
};

/**
 * Aplica o efeito de Carrossel em listas nao-ordenadas (<ul>).
 * A estrutura HTML deve seguir o padrao abaixo.
 * Os itens da lista podem conter qualquer tipo de conteudo, mas devem possuir a mesma largura.
 *
 * @param view (Integer, optional) Quantidade de itens a serem exibidos (quantidade de itens a serem rolados por vez).
 *
 * @example Estrutura HTML
 * <div id="simple-carrossel">
 * 	<ul>
 * 		<li><img /></li>
 * 		<li><img /></li>
 * 		<li><img /></li>
 * 		<li><img /></li>
 * 	</ul>
 * 	<a href="#" class="anterior">Anteriores</a>
 * 	<a href="#" class="proximo">Proximos</a>
 * </div>
 *
 * @example Chamada
 * $("#simple-carrossel").carrossel(2);
 */
$.fn.carrossel = function (view) {
    view = (view) ? parseInt(view) : 5;
    if (isNaN(view))
        return false;

    this.each(function () {
        var carrossel = $(this);
        var controlButtons = carrossel.find('.anterior,.proximo');
        var list = carrossel.find('ul:eq(0)');
        var firstItem = list.children(':eq(0)');
        var itemWidth = firstItem.outerWidth(true);
        if (!carrossel.is(':visible')) {
            var auxCarrossel = carrossel.clone().css({ position: 'absolute', visibility: 'hidden', display: 'block' });
            carrossel.parent().append(auxCarrossel);
            itemWidth = auxCarrossel.find('ul:eq(0) > li:eq(0)').outerWidth(true);
            auxCarrossel.empty().remove();
        }
        var countItens = list.children().length;
        var nextRange;
        var viewed = view;
        var button;
        var disable;
        var currentFirstIndex;

        if (countItens <= view) {
            controlButtons.addClass('disable');
        }
        else {
            carrossel.find('.proximo').removeClass('disable');
            carrossel.find('.anterior').addClass('disable');
        }

        controlButtons.bind('click', function () {
            button = $(this);
            disable = false;

            if (button.hasClass('disable') || list.is(':animated') || list.children().is(':animated'))
                return false;

            controlButtons.removeClass('disable');

            if (button.hasClass('proximo')) {
                nextRange = (countItens - viewed >= view) ? view : countItens - viewed;
                viewed += nextRange;
                disable = (nextRange < view || viewed == countItens);
                direction = '-=';
            }
            else {
                nextRange = (viewed - view >= view) ? view : viewed - view;
                viewed -= nextRange;
                disable = (nextRange < view || viewed == view);
                direction = '+=';
            }

            if (itemWidth * countItens - view * itemWidth < 10000) { //jQuery.fn.animate bug: http://bugs.jquery.com/ticket/7193
                list.stop().animate({
                    marginLeft: direction + (itemWidth * nextRange)
                }, 500);
            }
            else {
                currentFirstIndex = viewed - 2 * view;
                if (direction == '-=') {
                    list.children(':eq(' + currentFirstIndex + ')').stop().animate({
                        marginLeft: direction + (itemWidth * nextRange)
                    }, 500);
                }
                else {
                    list.children(':eq(' + (currentFirstIndex + view) + ')').stop().animate({
                        marginLeft: direction + (itemWidth * nextRange)
                    }, 500);
                }
            }

            if (disable)
                button.addClass('disable');

            return false;
        });
    });
    return this;
};

/**
 * Aplica o efeito de Tooltip nos elementos que possuirem a classe 'tooltip' dentro dos elementos-alvo.
 *
 * @param inDuration (Integer, optional) Tempo de duracao do efeito fadeIn (em milissegundos)
 * @param outDuration (Integer, optional) Tempo de duracao do efeito fadeOut (em milissegundos)
 * @param inCallback (Function, optional) Funcao a ser executada ao terminar o efeito fadeIn
 * @param outCallback (Function, optional) Funcao a ser executada ao terminar o efeito fadeOut
 *
 * @example Estrutura
 * <div class="itens">
 * 	<span>Lorem ipsum</span>
 * 	<div class="tooltip">Dolor sit amet</div>
 * </div>
 * <div class="itens">
 * 	<span>Dolor sit amet</span>
 * 	<div class="tooltip">Lorem ipsum</div>
 * </div>
 *
 * @example Chamada
 * $(".itens").tooltip();
 *
 * @example Chamada
 * $(".itens").tooltip(500, 250);
 *
 * @example Chamada
 * $(".itens").tooltip(500, 250, function(){alert('in')}, function(){alert('out')});
 */
$.fn.tooltip = function (inDuration, outDuration, inCallback, outCallback) {
    this.find('.tooltip').hide();

    inDuration = parseInt(inDuration);
    outDuration = parseInt(outDuration);
    if (isNaN(inDuration)) {
        inDuration = 0;
    }
    if (isNaN(outDuration)) {
        outDuration = 0;
    }
    if (typeof (inCallback) != "function") {
        inCallback = function () { };
    }
    if (typeof (outCallback) != "function") {
        outCallback = function () { };
    }

    this.bind('mouseenter mouseleave', function (event) {
        if (event.type == 'mouseenter')
            $(this).find('.tooltip').fadeIn(inDuration, inCallback);
        else if (event.type == 'mouseleave')
            $(this).find('.tooltip').fadeOut(outDuration, outCallback);
    });
    return this;
};

/**
* Aplica o efeito de Accordion (sanfona).
*
* @example
* $("div.sanfona").accordion();
*/
$.fn.accordion = function (active, callback) {
    active = (active) ? parseInt(active) : 0;
    if (isNaN(active))
        return false;

    this.each(function () {
        var container = $(this);
        var contents = container.children('.content');
        var titles = container.children('.title');
        var title;

        if (titles.hasClass('active')) {
            active = titles.index(titles.filter('.active:first'));
        }

        contents.not(titles.eq(active).addClass('title-active').next('.content').show().addClass('content-active')).hide();

        titles.bind({
            click: function () {
                title = $(this);
                if (title.hasClass('title-active'))
                    return false;

                titles.removeClass('title-active');
                contents.removeClass('content-active').slideUp();
                title.addClass('title-active').next('.content').addClass('content-active').slideDown();
            },
            mouseenter: function () {
                $(this).addClass('title-over');
            },
            mouseleave: function () {
                $(this).removeClass('title-over');
            }
        });
    });
    if ($.isFunction(callback)) {
        callback.call(this);
    }
    return this;
};


/*
* FUNCOES GENERICAS
*----------------------------------------------------------------------------------*/

/**
* Valida se uma string possui o formato correto de um e-mail
*
* @param email (String, required) Endereco de email
*
* @return (Boolean) TRUE se o email passado e valido, caso contrario, FALSE
*/
function validateEmail(email) {
    var regEx = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return email.match(regEx);
}

/**
* Compartilha conteudo no Facebook
*
* @param url (String, required) URL a compartilhar
* @param text (String, required) Texto de descrição
*/
function facebookSharer(url, text) {
    window.open(encodeURI('http://www.facebook.com/sharer.php?u=' + encodeURIComponent(url) + '&t=' + text), 'facebook', 'width=626,height=436,toolbar=0,status=0');
}

/**
* Compartilha conteudo no Twitter
*
* @param tweet (String, required) Texto a compartilhar
*/
function twitterSharer(link, tweet) {
    link.href = encodeURI('http://twitter.com/home?status=' + tweet);
}

/**
* Compartilha conteudo no Orkut
*
* @param tweet (String, required) Texto a compartilhar
*/
function orkutSharer(link, title, text, url, thumb) {
    link.href = encodeURI('http://promote.orkut.com/preview?nt=orkut.com&tt=' + title + '&cn=' + text + '&du=' + encodeURIComponent(url) + '&tn=' + encodeURIComponent(thumb));
}

/**
* Adiciona um cookie
*
* @param name (String, required)
* @param value (String, required)
* @param days (Integer, required)
*/
function createCookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}
/**
* Le um cookie
*
* @param name (String, required)
*/
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    var c;
    for (var i = 0; i < ca.length; i++) {
        c = ca[i];
        while (c.charAt(0) == ' ')
            c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0)
            return c.substring(nameEQ.length, c.length);
    }
    return null;
}
/**
* Remove um cookie
*
* @param name (String, required)
*/
function eraseCookie(name) {
    createCookie(name, "", -1);
}

function replaceSpecialChars(str) {
    str = str.replace(/\s/g, '-');
    str = str.replace(/[àáâãäå]/g, 'a');
    str = str.replace(/æ/g, 'ae');
    str = str.replace(/ç/g, 'c');
    str = str.replace(/[èéêë]/g, 'e');
    str = str.replace(/[ìíîï]/g, 'i');
    str = str.replace(/ñ/g, 'n');
    str = str.replace(/[òóôõö]/g, 'o');
    str = str.replace(/œ/g, 'oe');
    str = str.replace(/[ùúûü]/g, 'u');
    str = str.replace(/[ýÿ]/g, 'y');
    str = str.replace(/\W/g, '-');
    return str;
}

/*
* FUNCOES ESPECIFICAS
*----------------------------------------------------------------------------------*/

function validarGAEnvioDiario(estado, email) {
    var gaCookie = readCookie('GADiario');
    var gaCookieSplited;
    var isUnique = true;
    var hAtual = (new Date()).getHours();
    var expires = ((24 - hAtual) / 24).toFixed(2);
    if (gaCookie) {
        gaCookieSplited = gaCookie.split(':');
        if (gaCookieSplited[0] == estado && gaCookieSplited[1] == email) {
            isUnique = false;
        }
    }
    if (isUnique) {
        createCookie('GADiario', estado + ':' + email, expires);
        return true;
    }
    return false;
}

function gaChangeEstado(form, estado) {
    var id = form.getAttribute('id').split(':');
    id[1] = estado;
    id = id.join(':');
    form.setAttribute('id', id);
}

function openChat(url) {
    window.open(url, 'chat', 'width=505,height=594,left=50,top=50,resize=no,toolbar=no');
}

function openTourVirtual(url, width, height) {
    width = width || 978;
    height = height || 600;
    window.open(url, 'tour', 'width=' + width + ',height=' + height + ',left=50,top=50,resize=no,toolbar=no');
}

//CHAT ATIVO
function loadChatAtivo(chatURL) {
    if (readCookie('ChatClosed'))
        return false;

    window.chatTimeout = 0;
    setChatTimeout(chatURL);
    $('body').bind('click.chatAtivo', function () {
        setChatTimeout(chatURL);
    });
}
function setChatTimeout(chatURL) {
    clearTimeout(chatTimeout);
    chatTimeout = setTimeout(function () { callChatAtivo(chatURL) }, (typeof isHome != 'undefined' && isHome) ? 180000 : 60000); //Home = 3 minutos (180000) / Interna = 1 minuto (60000)
}
function callChatAtivo(chatURL) {
    createCookie('ChatClosed', '1');
	$(function () {
	    $.fancybox({
	        content: '<a href="' + chatURL + '" onclick="closeLightbox();" class="chat text-image" rel="chat" title="Fale on-line com um consultor Living">Um consultor Living espera por você agora mesmo. Clique e fale on-line.</a>',
			width: 658,
			height: 415,
	        autoDimensions: false,
	        titleShow: false,
	        onStart: function () {
	            $('#fancybox-wrap').addClass('lightboxChat');
	        },
	        onClosed: function () {
	            $('#fancybox-wrap').removeClass('lightboxChat');
	        }
	    });
	    $('body').unbind('click.chatAtivo');
	});
}

function closeLightbox(isIframe) {
    if(isIframe)
        parent.$.fancybox.close();
    else
        $.fancybox.close();
}

function checkGeoIP() {
    /*var htmlGeoIP = '<div id="geoIP">' +
    '<h1>Bem-vindo ao Site da Living Construtora.</h1>' +
    '<p>Identificamos que seu estado é <em>' + estadoAtivoGeoIP + '</em>.<br />' +
    'Clique no botão <em>OK</em> para continuar em <em>@Model.Estado.Nome</em> ou altere para o Estado de sua preferência.</p>' +
    '<div>' +
    '<select>';
    for (var i = 0; i < estadosGeoIP.length; i++) {
    htmlGeoIP += '<option value="' + estadosGeoIP[i].url + '" ' + (estadosGeoIP[i].isCurrent ? 'selected="selected"' : '') + '>' + estadosGeoIP[i].nome + '</option>';
    }
    htmlGeoIP += '</select>' +
    '<input type="submit" value="OK" class="submit text-image" />' +
    '<div>' +
    '</div>';
    */

    /* comentado temporariamente
    var geoIPCookieName = 'GeoIP';
    if (readCookie(geoIPCookieName) == '1') {
        var container = $('#geoIP');
        container.show()
        .find('.submit').bind('click', function () {
            eraseCookie(geoIPCookieName);
            var newURL = container.find('select option:selected').val();
            if (newURL != window.location.pathname)
                window.location.href = newURL;
            else
                container.hide();
        });
    }
    */
}

function checkState(cookieValue, state) {
    if (!cookieValue) cookieValue = '';
    return (cookieValue.indexOf(state + '|') > -1);
}
function addState(cookieValue, state) {
    if (!cookieValue) cookieValue = '';
    return cookieValue + state + '|';
}

function loadTVjQuery() {
}

function loadEmpreendimentosSelect(url) {
    $.ajax({
        url: url,
        cache: true,
        dataType: 'jsonp',
        jsonpCallback: 'jsonpEmpSelect',
        success: function (Estados) {
            var $estado = $('#header .buscaEmp .estado');
            var $empreendimento = $('#header .buscaEmp .empreendimento');
            var $submit = $('#header .buscaEmp .submit');
            var strHTML = '';
            var selected = {
                text: '',
                index: 0
            };

            for (var i = 0; i < Estados.length; i++) {
                if (i == 0) {
                    selected.text = ' selected="selected"';
                    selected.index = i;
                }
                else {
                    selected.text = '';
                }
                strHTML += '<option value="' + i + '"' + selected.text + '>' + Estados[i].Nome + '</option>';
            }

            $estado
            .empty()
            .append(strHTML)
            .bind('change', function () {
                fillEmpreendimentos(Estados, $(this).val());
            });

            fillEmpreendimentos(Estados, selected.index);

            $submit.bind('click', function () {
                if ($empreendimento.val() != '')
                    window.location.href = $empreendimento.val();
            });

            function fillEmpreendimentos(Estados, indexEstado) {
                var strHTML = '';
                for (var i = 0; i < Estados[indexEstado].Empreendimentos.length; i++) {
                    strHTML += '<option value="' + Estados[indexEstado].Empreendimentos[i].URL + '">' + Estados[indexEstado].Empreendimentos[i].Nome + '</option>';
                }
                $empreendimento.empty().append(strHTML);
            }
        } //success function
    });
}

function loadBusca(url, idEstado) {
    var $busca = $('#header .busca');

    if ($busca.length < 1)
        return false;

    var $form = $busca.closest('form');
    var $cidade = $busca.find('#idCidade');
    var strHTML = '';
    var Estado;
    var Cidade;

    $form.bind('submit', function () {
        if ($cidade.val() == 0) {
            alert('Selecione a cidade.');
            return false;
        }
    });

    $.ajax({
        url: url,
        cache: true,
        dataType: 'jsonp',
        jsonpCallback: 'jsonpBusca',
        success: function (data) {
            //Cidade
            for (var i = 0; i < data.Estados.length; i++) {
                strHTML += '<optgroup label="' + data.Estados[i].Nome + '" class="estado' + data.Estados[i].ID + '">';
                for (var j = 0; j < data.Estados[i].Cidades.length; j++) {
                    strHTML += '<option value="' + data.Estados[i].Cidades[j].ID + '" class="' + i + '-' + j + '">' + data.Estados[i].Cidades[j].Nome + '</option>';
                }
                strHTML += '</optgroup>';
            }
            $cidade
            .append(strHTML)
            .end().find('option:first').text('Estado/Cidade').after($cidade.find('optgroup.estado' + idEstado).remove());
            //Os outros campos
            $cidade.bind('change', function () {
                $busca.find('select:not(:first) option:not(:first-child)').remove();
                $form.attr('action', '');

                if ($cidade.val() == 0)
                    return false;

                Estado = $cidade.find('option:selected').attr('class');
                Cidade = Estado.split('-')[1];
                Estado = Estado.split('-')[0];

                Estado = data.Estados[Estado];
                Cidade = Estado.Cidades[Cidade];

                $form.attr('action', '/' + Estado.Sigla + '/' + Cidade.NomeURL);

                //Regioes
                strHTML = '';
                for (var i = 0; i < Cidade.Regioes.length; i++) {
                    strHTML += '<option value="' + Cidade.Regioes[i].ID + '">' + Cidade.Regioes[i].Nome + '</option>';
                }
                $busca.find('#idRegiao').append(strHTML);

                //Dormitorios
                strHTML = '';
                for (var j = 0; j < Cidade.FaixasQuarto.length; j++) {
                    strHTML += '<option value="' + Cidade.FaixasQuarto[j].ID + '">' + Cidade.FaixasQuarto[j].Rotulo + ' ' + data.NomeDormitorio + 's</option>';
                }
                $busca.find('#idFaixaQuarto').append(strHTML);

                //Fase da Obra
                strHTML = '';
                for (var k = 0; k < Cidade.Fases.length; k++) {
                    strHTML += '<option value="' + Cidade.Fases[k].ID + '">' + Cidade.Fases[k].Nome + '</option>';
                }
                $busca.find('#idFase').append(strHTML);

                //Faixa de Preco
                strHTML = '';
                for (var x = 0; x < Cidade.FaixasPreco.length; x++) {
                    strHTML += '<option value="' + Cidade.FaixasPreco[x].ID + '">' + Cidade.FaixasPreco[x].Rotulo + '</option>';
                }
                $busca.find('#idFaixaPreco').append(strHTML);
            });
        } //success function
    });
}

function loadImoveisVisualizados() {
    var cookieName = 'ImoveisVisualizados';
    var cookieValue = readCookie(cookieName);

    if (cookieValue != '') {
        var container = $('#lastViewed').hide();
        var strHTML = '';

        container.html(
            '<h2>Imóveis <span>Visualizados</span></h2>' +
            '<p>Estes são os imóveis que você visitou</p>' +
            '<span class="loading"></span>'
        );

        $.ajax({
            url: '/ImoveisVisualizados/' + cookieValue,
            cache: true,
            dataType: 'jsonp',
            jsonpCallback: 'jsonpVisualizados',
            success: function (Imoveis) {
                container.find('.loading').remove();
                if (Imoveis.length) {
                    strHTML = '<ol>';
                    for (var i = 0; i < Imoveis.length; i++) {
                        strHTML +=
                        '<li id="' + Imoveis[i].ID + '">' +
                            ((Imoveis[i].ImagemURL && Imoveis[i].ImagemURL != '') ? '<a href="' + Imoveis[i].URL + '" title="' + Imoveis[i].Nome + '"><img src="' + Imoveis[i].ImagemURL + '" alt="' + Imoveis[i].Nome + '" /></a>' : '') +
                            '<h3>' + Imoveis[i].Cidade + '</h3>' +
                            '<h4>' +
                                '<a href="' + Imoveis[i].URL + '" title="' + Imoveis[i].Nome + '">' + Imoveis[i].Nome + '</a>' +
                            '</h4>' +
                            '<p>' + Imoveis[i].DescricaoLinha1 + '</p>' +
                            '<p>' + Imoveis[i].DescricaoLinha2 + '</p>' +
                            '<a href="javascript:void(0);" class="fechar text-image" title="Excluir item">Excluir item</a>' +
                        '</li>';
                    }
                    strHTML += '</ol><a href="javascript:void(0);" class="exluirItens text-image" title="Exluir todos os itens">Exluir itens</a>';

                    container.append(strHTML).fadeIn();

                    container.find('.fechar').bind('click', function () {
                        var li = $(this).closest('li');
                        createCookie(cookieName, cookieValue.replace(li.attr('id') + '-', ''), 30);
                        li.fadeOut(function () {
                            li.empty().remove();
                        });
                    });

                    container.find('.exluirItens').bind('click', function () {
                        eraseCookie(cookieName);
                        container.fadeOut(function () {
                            container.html('').remove();
                        });
                    });
                }
                else {
                    container.html('').remove();
                }
            }
        });
    }
}

//ORDENACAO DOS RESULTADOS DA BUSCA
function loadOrdenacao() {
    var $list = $('ul#resultadosBusca');
    var $select = $('#ordenacaoBusca select');
    var $loading = $('#ordenacaoBusca img.loading');
    var sortSelector;
    var sortedList;

    $select.bind('change', function () {
        switch ($select.val()) {
            case 'nome':
                sortSelector = 'h2';
                break;

            case 'regiao':
                sortSelector = 'h3';
                break;

            case 'fase':
                sortSelector = '.fase';
                break;

            default:
                return false;
        }

        sortedList = $.makeArray($list.children()).sort(function (a, b) {
            a = $(a).find(sortSelector).text();
            b = $(b).find(sortSelector).text();
            a = (a) ? a : '';
            b = (b) ? b : '';
            return a.localeCompare(b);
        });

        $list.html(sortedList);

        $loading.show().fadeOut(800);
    });
}

//TODO: Rever a forma de chamada dessas funcoes (loadLivingTeLiga e loadInfoEmail) - D.R.Y.
function loadLivingTeLiga(url) {
    var $form = $("#footer form[id^='livingTeLigaRodape']");
    var $nome = $form.find("#Nome");
    var $telefone = $form.find("#Telefone");
    var $estado = $form.find("#Estado");

    $form.find('fieldset').append(
        '<div class="loading">Enviando...</div>' +
        '<div class="success">Obrigado! Entraremos em contato. <a href="javascript:void(0);" class="voltar">Voltar</a></div>' +
        '<div class="error">Os dados não foram enviados, tente novamente.</div>'
    );

    $telefone.bind('focus', function () {
        $(this).mask('(99) 9999-9999');
    });

    $form.find('.voltar').bind('click', function () {
        $form.find('.success,.error').hide()
        .end().find('.fields').fadeIn();
        return false;
    });

    $form.bind('submit', function () {
        if ($form.valid()) {

            $form.find('.fields').hide()
            .end().find('.loading').show();

            $.ajax({
                type: 'POST',
                dataType: 'jsonp',
                cache: true,
                jsonpCallback: 'jsonpLivingTeLiga',
                url: url,
                data: { Nome: $nome.val(), Telefone: $telefone.val(), Estado: $estado.val() },
                success: function () {
                    gaConfig.callEvent($form.addClass('ga-applied').attr('id'));

                    $nome.val($nome.attr('title'));
                    $telefone.val($telefone.attr('title'));

                    $form.find('.loading').hide()
                    .end().find('.success').fadeIn();
                },
                error: function () {
                    $form.find('.loading').hide()
                    .end().find('.fields,.error').fadeIn();
                }
            });
        }
        return false;
    });
}
//TODO: Rever a forma de chamada dessas funcoes (loadLivingTeLiga e loadInfoEmail) - D.R.Y.
function loadInfoEmail(url) {
    var $form = $("#footer form[id^='informacoesPorEmailRodape']");
    var $nome = $form.find("#Nome");
    var $email = $form.find("#Email");
    var $estado = $form.find("#Estado");
    var estadoSigla = $form.attr('id').split(':')[1];

    $form.find('fieldset').append(
        '<div class="loading">Enviando...</div>' +
        '<div class="success">Obrigado! Entraremos em contato. <a href="javascript:void(0);" class="voltar">Voltar</a></div>' +
        '<div class="error">Os dados não foram enviados, tente novamente.</div>'
    );

    $form.find('.voltar').bind('click', function () {
        $form.find('.success,.error').hide()
        .end().find('.fields').fadeIn();
        return false;
    });

    $form.bind('submit', function () {
        if ($form.valid()) {

            $form.find('.fields').hide()
            .end().find('.loading').show();

            $.ajax({
                type: 'POST',
                dataType: 'jsonp',
                cache: true,
                jsonpCallback: 'jsonpInfoEmail',
                url: url,
                data: { Nome: $nome.val(), Email: $email.val(), Estado: $estado.val() },
                success: function () {
                    if ($email.val().indexOf('@teste.com') == -1 && validarGAEnvioDiario(estadoSigla, $email.val())) {
                        gaConfig.callEvent($form.addClass('ga-applied').attr('id'));
                    }

                    $nome.val($nome.attr('title'));
                    $email.val($email.attr('title'));

                    $form.find('.loading').hide()
                    .end().find('.success').fadeIn();
                },
                error: function () {
                    $form.find('.loading').hide()
                    .end().find('.fields,.error').fadeIn();
                }
            });
        }
        return false;
    });
}

function loadFunctionsFicha() {
    $('#content .header .destaque .galeria').carrossel(1);
    $('#content .contentItem .galeria').carrossel(4);
    $('#content .header .info .caracteristicas ul li:even').addClass('alt');
    loadEstagioObraNavigation();
	
    /*centralizacao - logos realizacao*/
    var logos = $('#infoRealizacao ul.logos');
    var logoswidth = 0;
	logos.children().each(function () {
	    logoswidth += $(this).outerWidth(true);
	});
	if (logoswidth < logos.width()) {
	    logos.css('padding-left', (logos.width() - logoswidth) / 2);
	}
}

function loadEstagioObra(url) {
    $("#idTorre").live("change", function () {
        var container = $(this).closest("#infoObra");
        $.ajax({
            url: url,
            data: { idTorre: $(this).val() },
            dataType: 'html',
            success: function (data) {
                container.after(data).empty().remove();
                loadEstagioObraNavigation();
            }
        });
    });
}

function loadEstagioObraNavigation() {
    $('#infoObra').tabs();
    $('#infoObra .galeria img:eq(0)').bind('load error', function () {
        $('#infoObra .galeria').carrossel(4);
    });
    $('#infoObra ul.nav li:not(.disable):last a').trigger('click');
    $('#infoObra .galeria ul li a.lightbox').fancybox({
        titleFormat: function (title, currentArray, currentIndex, currentOpts) {
            return '<div id="fancybox-image-title">' +
                    '<p>' + (title && title.length ? title : '') + '</p>' +
                    '<a href="javascript:void(0);" title="Anterior" class="prev text-image ' + (currentIndex == 0 ? 'disable' : '') + '" onclick="$.fancybox.prev();">Anterior</a>' +
                    '<span>' + (currentIndex + 1) + '/' + currentArray.length + '</span>' +
                    '<a href="javascript:void(0);" title="Próxima" class="next text-image ' + (currentIndex == currentArray.length - 1 ? 'disable' : '') + '" onclick="$.fancybox.next();">Próxima</a>' +
                    '<a href="javascript:void(0);" title="Envie para um amigo" class="lightbox iframe amigo" index="' + currentIndex + '" onclick="openEnvieObra();">Envie para um amigo</a>' +
                '</div>';
        }
    });
}

function openEnvieObra() {
    $('#boxEnvieObra input#imagemURL').val($('#fancybox-content img#fancybox-img').attr('src'));
    $.fancybox({
        onStart: function () {
            $('#fancybox-wrap').addClass('fancyForm');
        },
        onClosed: function () {
            $('#fancybox-wrap').removeClass('fancyForm');
        },
        titleShow: false,
        href: '#boxEnvieObra'
    });
}
function envieAmigoObra() {
    var form = $('#boxEnvieObra');
    form.find('.result').html('').end().find('.loading').fadeIn(200);
    $.ajax({
        type: 'POST',
        dataType: 'jsonp',
        cache: true,
        jsonpCallback: 'jsonpEnvieObra',
        url: form.attr('action'),
        data: {
            Nome: form.find('#Nome').val(),
            Email: form.find('#Email').val(),
            NomeAmigo: form.find('#NomeAmigo').val(),
            EmailAmigo: form.find('#EmailAmigo').val(),
            Mensagem: form.find('#Mensagem').val(),
            ReceberEmails: form.find('#ReceberEmails').val(),
            imagemURL: form.find('#imagemURL').val()
        },
        success: function () {
            form.find('.loading').hide().end().find('.result').html('Mensagem enviada com sucesso.').fadeIn();
        },
        error: function () {
            form.find('.loading').hide().end().find('.result').html('Ocorreu um erro. Tente novamente mais tarde.').fadeIn();
        }
    });
}

function printGoogleMap(latitude, longitude, titulo, descricao) {
    if (google && GMapsConfig && GMapsConfig.routeLatitude && GMapsConfig.routeLongitude) {

        var objZoom = GMapsConfig.routeMapDirections.getZoom();

        var url = 'http://maps.google.com/maps?f=d&hl=pt-BR&ie=UTF8&pw=2&z=' + objZoom + '&daddr=' + GMapsConfig.latitude + ',' + GMapsConfig.longitude + '&saddr=' + GMapsConfig.routeLatitude + ',' + GMapsConfig.routeLongitude;
        window.open(url, 'gmaps', 'width=780,height=600,left=50,top=50,resize=no,toolbar=no,scrollbars=yes');
    }
    else {
        var contentHTML = '';

        if (titulo && titulo != '') {
            contentHTML += '<h1 style="text-align:center">' + titulo + '</h1>';
        }
        if (descricao && descricao != '') {
            contentHTML += '<p style="text-align:center">' + descricao + '</p>';
        }

        var imgURL = 'http://maps.google.com/maps/api/staticmap?markers=color:red|label:|' + latitude + ',' + longitude + '&center=' + latitude + ',' + longitude + '&zoom=15&size=640x500&maptype=roadmap&sensor=true';

        contentHTML += '<img src="' + imgURL + '" alt="Mapa" style="display:block; margin:0 auto;" />';

        var popup = window.open('', 'imprimir', 'left=-50,top=-50,width=1,height=1,toolbar=0,scrollbars=0,status=0');
        popup.document.open();
        popup.document.write('<html><head></head><body onload="window.print();window.close();">' + contentHTML + '</body></html>');
        popup.document.close();
    }
    return false;
}

function resizeIframeLightbox() {
    parent.$('#fancybox-content').animate({
        height: $('form.lightbox fieldset').outerHeight()
    });
}

function twitterShare(){
	var desc = $("meta[property='og:description']").attr('content');
	var url = window.location.href;
	var lang = $('html').attr('lang');
	window.open(
		encodeURI(
			'http://twitter.com/share?text=' + desc +  
			'&url=' + url +
			'&lang='+ lang
			),
			'Twitter',
			'width=626,height=436,toolbar=0,status=0'
	);
}

//
// Altera o texto do campo de filtro "QUARTOS" para "DORMITORIOS"
// quando a praca e SAO PAULO ou SAO PAULO INTERIOR
//

function nomeCampoFiltro() {
    var pracaAtual = location.pathname.split('/')[1];

    if (pracaAtual == 'sp' || pracaAtual == 'si')
        $('#idFaixaQuarto').find('option:first').text('Dormitórios');
}


//
// Altera a url do --Acesse o Portal do Cliente:-- na pagina ATENDIMENTO AO CLIENTE
// quando a praca e RS -- PR -- SC
//

function portalCliente() {
    var pracaAtual = location.pathname.split('/')[1];

    if (pracaAtual == 'rs' || pracaAtual == 'pr' || pracaAtual == 'sc') {
        $('#content').find('.linkPortalCliente').attr('href', 'http://tsweb.goldsztein.com.br/jobjcocv/frmlogin.aspx');

        $('#content .linkPortalCliente').find('strong').text('www.tsweb.goldsztein.com.br')

        $('#content').find('.txtFaleConosco').html('Este é o nosso canal de relacionamento com o cliente, para dúvidas, sugestões ou reclamações sobre sua obra, entre em contato conosco através do site ou <a href="mailto:atendimento@cyrelasul.com.br" title="Envie um email para atendimento@cyrelasul.com.br"><strong>atendimento@cyrelasul.com.br</strong></a>.')
    }
}


$(function () {
    nomeCampoFiltro();
})
