// JavaScript Document
/* ----------------- Expressoes regulares ----------------------------------- */
var reSpecialChars	=	/(^([A-Za-z0-9_.-\/:]){1,300})+$/;															// Nao permite caracteres especiais			
var	stringCode		=	/[a-zA-Z0-9]{1,}/;																			// Valida STRING > 2 char
var	numberCode		=	/[0-9]{1,}/;																				// Valida NÚMERO > 1 char
var	cepCode			=	/\d{5}-\d{3}/;																				// Valida CEP formato 90460-040
var	emailCode		=	/^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;			// Valida EMAIL
var	dateCode		=	/^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;	// Valida DATA tipo dd/mm/aaaa
var	timeCode		=	/^([0-1]\d|2[0-3]):[0-5]\d$/;																// Valida HORA tipo hh:mm (24h)

/* ------------------------------------------
----------- inicializadores
------------------------------------------- */
$.fn.imagem = function(_path, fn) 
{
    var total = this.length, loaded = 0;
    $('#ctl00_goHomePageHeader').html(this.length + ' : ' + loaded+' : ' + loaded +'<br/>');
    this.each(function() {
        var i = new Image();
            i.src = _path;
        $(i).load(function(){
            loaded++;
            $('#ctl00_goHomePageHeader').append(loaded + ' : ' + total+'<br/>');
            if(loaded==total)
            {
                fn();
            }
        });
    });
}

$(document).ready(function()
{
	$("ul.sf-menu").superfish().find('ul').bgIframe({opacity:false}); 
	
    $.makeAllInputs();

    $(".item-list").each(function (i)
	{		
        $(this).hover(
            function () { $(this).addClass('hover'); }, 
            function () { $(this).removeClass('hover'); }
        );
	});
	
	var intervalo = null;
	_pathEmptyImage = '../../images/empty.gif';
	$('img[@src$=.png]').ifixpng();
	
	$("a.addthis_button_delicious, a.addthis_button_email, a.addthis_button_twitter, a.addthis_button_facebook, a.addthis_button_digg").click(function(){
		var r1 = $(this).attr('class');
		var r2 = r1.split('_');
		var r3 = r2[2].split(' ');
		var rede = r3[0];
		try
		{
			var pageTracker = _gat._getTracker("UA-10479310-1");
			pageTracker._trackPageview('/'+rede+'-enviado');
		}
		catch(err) {}
	});
});

jQuery.extend({
    splashPromotion: function(_s, _u)
    {
        $('.splashPromotion').hide();
        if(_s)
        {
            $('.splashPromotion .area').click(function () { document.location.href = _u });
            $('.splashPromotion').prepend('<br /><a href="javascript:$.splashPromotion(false);" class="btn-close-promotion">&nbsp;</a><br />');
            $('.splashPromotion').show();
        }    
    },
    makeAllInputs: function ()
    {
        $(":input").each(function (i)
	    {		
		    $(this).focus(function() { clearField(this); });
		    $(this).blur(function() { defaultFieldValue(this); });
	    });
    },
    makeType: function(value)
    {
        var filter = $('#ctl00_filter').val();
    },
    setRegion: function(i)
    {
	    if($('#region-map .region-'+i+'').size() > 0)
	    {
		    $('#advanced-container #region-content').find('input[@value='+i+']').each(function(){ this.checked = false; });
		    $('#region-map .region-'+i+'').remove();
	    }
	    else
	    {
		    $('#advanced-container #region-content').find('input[@value='+i+']').each(function(){ this.checked = true; });
		    $('#region-map').prepend('<div class="map-indication region-'+i+'"><span>'+i+'</span><img src="../../images/map-over.gif" width="21" height="30" alt="" /></div>');	
	    }
    },
    overMap: function (id, show)
    {        
        if($('#ctl00_advanced_cidade').val().toUpperCase() == 'PORTO ALEGRE')
        {
            if(show)
            {
                $(id).css('display', 'block');
            }
            else
            {      
                $(id).css('display', 'none');
            }        
        }
        else
        {
             $(id).css('display', 'none');
        }
    },
    changeCity: function (value, url)
    {
        $.overMap('', true);
        $.overMap('', false);
        $('#neiborhood-content').addClass('deactive');
        $('#neiborhood').html('Nenhuma cidade selecionada');
        $('#region-content').addClass('deactive');
        $('#advanced-container #region-content :checkbox').each(function() { $(this).attr('disabled', 'disabled'); });
        
        $('#divCentro').hover( function(){$.overMap('#rCentro', false);}, function(){$.overMap('#rCentro', false);} );
        $('#divMoinhos').hover( function(){$.overMap('#rMoinhos', false);}, function(){$.overMap('#rMoinhos', false);} );
        $('#divPraia').hover( function(){$.overMap('#rPraia', false);}, function(){$.overMap('#rPraia', false);} );
        $('#divNorte').hover( function(){$.overMap('#rNorte', false);}, function(){$.overMap('#rNorte', false);} );
        $('#divPuc').hover( function(){$.overMap('#rPuc', false);}, function(){$.overMap('#rPuc', false);} );
        $('#divSul').hover( function(){$.overMap('#rSul', false);}, function(){$.overMap('#rSul', false);} );
        
        if(value != '')
        {
            if(value.toUpperCase() == 'PORTO ALEGRE')
            {
                $('#region-content').removeClass('deactive');
                $('#advanced-container #region-content :checkbox').each(function() { $(this).attr('disabled', ''); });
                $('#neiborhood-content').removeClass('deactive');
                $('#neiborhood').html('Carregando Bairros');
                
                $('#divCentro').hover( function(){$.overMap('#rCentro', true);}, function(){$.overMap('#rCentro', false);} );
                $('#divMoinhos').hover( function(){$.overMap('#rMoinhos', true);}, function(){$.overMap('#rMoinhos', false);} );
                $('#divPraia').hover( function(){$.overMap('#rPraia', true);}, function(){$.overMap('#rPraia', false);} );
                $('#divNorte').hover( function(){$.overMap('#rNorte', true);}, function(){$.overMap('#rNorte', false);} );
                $('#divPuc').hover( function(){$.overMap('#rPuc', true);}, function(){$.overMap('#rPuc', false);} );
                $('#divSul').hover( function(){$.overMap('#rSul', true);}, function(){$.overMap('#rSul', false);} );
                
                $.ajax({
                    type:"POST",
                    url: url + "/content/pages/Ajax.aspx/LoadNeighborhoods",               
                    data:"{ cidade: '" + value + "'}",
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    success: function(data)
                    {   
                        data = eval("("+data+")");
                        $('#neiborhood').html('');
                        $('#neiborhood').html(data.d);
                        checkNeighborhoods();
                    }              
                });
            }
            else
            {
                $('#neiborhood').html('Nenhum bairro cadastrado');
            }            
        }
    },
    searchValid: function(filter)
    {
	    var str = '';
	    $('#ctl00_filter').val(filter);
	    var param = '';
	    
	    if($('#'+filter+'_codigo').val() != '' && $('#'+filter+'_codigo').val() != $('#'+filter+'_codigo').attr('defaultValue'))
	    {
	        param += $('#'+filter+'_codigo').val();
	        document.forms["aspnetForm"].method = 'POST';
		    document.forms["aspnetForm"].action = '../../pesquisa/detalhes/resultado.aspx?codigo=' + param;
		    document.forms["aspnetForm"].submit();
	    }
	    else
	    {
	        if($('#ctl00_'+filter+'_finalidade').val() == '')
	        {
                str += '&bull; Finalidade <br />';
	        }
	        if(str == '')
	        {
	            param += 'filter=' + filter;
	            param += '&finalidade='+$('#ctl00_'+filter+'_finalidade').val();
	            param += ($('#ctl00_'+filter+'_tipo_imovel').val() != '' && $('#ctl00_'+filter+'_tipo_imovel').val() != $('#ctl00_'+filter+'_tipo_imovel').attr('defaultValue')) ? '&tipoImovel=' + $('#ctl00_'+filter+'_tipo_imovel').val() : '';
	            param += ($('#ctl00_'+filter+'_dormitorio').val() != '' && $('#ctl00_'+filter+'_dormitorio').val() != $('#ctl00_'+filter+'_dormitorio').attr('defaultValue')) ? '&dormitorios=' + $('#ctl00_'+filter+'_dormitorio').val() : '';
	            param += ($('#ctl00_'+filter+'_cidade').val() != '' && $('#ctl00_'+filter+'_cidade').val() != $('#ctl00_'+filter+'_cidade').attr('defaultValue')) ? '&cidade=' + $('#ctl00_'+filter+'_cidade').val() : '';
	            param += ($('#ctl00_'+filter+'_valor_de').val() != '' && $('#ctl00_'+filter+'_valor_de').val() != $('#ctl00_'+filter+'_valor_de').attr('defaultValue')) ? '&valor_de=' + $('#ctl00_'+filter+'_valor_de').val() : '';
	            param += ($('#ctl00_'+filter+'_valor_ate').val() != '' && $('#ctl00_'+filter+'_valor_ate').val() != $('#ctl00_'+filter+'_valor_ate').attr('defaultValue')) ? '&valor_ate=' + $('#ctl00_'+filter+'_valor_ate').val() : '';
	            if(filter == 'advanced')
	            {
	                var _bairros = new Array();
	                $('#neiborhood :checkbox').each(function(){
                        if(this.checked) { _bairros.push($(this).val()); }
                    });
                    param += (_bairros.length > 0) ? '&bairros=' + _bairros.toString() : '';

                    var _regioes = new Array();
                    $('#region :checkbox').each(function() {
                        if(this.checked) { _regioes.push($(this).val()); }
                    });
                    param += (_regioes.length > 0) ? '&regioes=' + _regioes.toString() : '';
                    
                    param += ($('#ctl00_endereco').val() != ''&& $('#ctl00_endereco').val() != $('#ctl00_endereco').attr('defaultValue')) ? '&endereco=' + $('#ctl00_endereco').val() : '';
                    
                    var _caracteristicas = '';
                    
                    $('#caracteristicas').find("input[@type=checkbox]").each(function(){
                        if(this.checked)
                        {
                            if($(this).attr('id') == 'mobiliado')
                            {
                                _caracteristicas += $(this).val();
                                _caracteristicas += ($('#semi_mobiliado').is(':checked')) ? '.' : ';';
                            }
                            else 
                                _caracteristicas += $(this).val() + ';';
                            
                        }
                    });
                    
                    param += (_caracteristicas != '') ? '&caracteristicas=' + _caracteristicas.substr(0, _caracteristicas.length - 1) : '';
	            }
	            var param_array = param.split(" ");
	            param = param_array.join("+");
	                        
	            document.forms["aspnetForm"].method = 'POST';
		        document.forms["aspnetForm"].action = '../../pesquisa/'+$('#ctl00_'+filter+'_finalidade').val()+'/resultado.aspx?' + param;
		        document.forms["aspnetForm"].submit();
	        }
     
	        else
	        {
		        showModalWindow('Campos Obrigat&oacute;rios', str, 300);
	        }
	    }  
    },
    btnMoreInformation: function(url)
    {
        showModalWindow('Mais Informa&ccedil;&otilde;es', '../../content/modal/MoreInformation.aspx?url=' + url, '350', null);
    },
    btnPrintRealty: function()
    {
        window.print();
    },
    btnSendByEmail: function(url)
    {
        showModalWindow('Enviar por e-mail', '../../content/modal/SendByEmail.aspx?url=' + url, '350', null);
    },
    btnOrderRealty: function()
    {
        showModalWindow('Encomende seu Im&oacute;vel', '../../content/modal/OrderRealty.aspx', '400', null);
    },
    replaceInputFile: function(inputAux, inputFile)
    {
        $(inputFile).css('left', ($(inputAux).position().left)+'px');
        $(inputFile).change( function() {
            $(inputAux).val($(inputFile).val());
        });
        $('.inputFileArea').mousemove(function(e){
            $(inputFile).css('left', (e.clientX - ($(inputFile).width()-30))+'px');
        });
    },
    IsNullOrEmpty: function(valor)
    {
        if (valor == null || valor == '' || valor.length > 0)
        {
            return true; 
        }
        else
        {
            return false;
        }
    },
    verifyRoom: function(obj, arr, objRoom)
    {
        arr = arr.split(',');
        $(objRoom).attr('disabled', 'disabled');
        for(i=0; i< arr.length; i++)
	    {
	        if($.trim(arr[i]).toUpperCase() == $.trim($(obj).val()).toUpperCase())
	        {
	            $(objRoom).attr('disabled', '');
	            break;
	        }
	    }
    },
    clientLogin: function()
    {
        var required = validIsRequired('#client-login-form');
        if(!required[0])
        {
            showModalWindow('Campos Obrigat&oacute;rios', required[1], '350', '300');
        }
        else
        {
            document.forms["aspnetForm"].target = 'blank';
            document.forms["aspnetForm"].method = 'POST';
		    document.forms["aspnetForm"].action = 'http://clientes.sperinde.com/prg/crLogin.php';
		    document.forms["aspnetForm"].submit();
			restFileds();
			$.showPass('SENHA', 'senha_aux');
        }
    },
    hidePass: function(objTemp, objField)
    {
	    $('#'+objTemp).css('display', 'none');
	    $('#'+objField).css('display', '');
	    $('#'+objField).focus();
    },
    showPass: function(objField, objTemp)
    {
	    if($('#'+objField).val() == '')
	    {
		    $('#'+objField).css('display', 'none');
		    $('#'+objTemp).val(document.getElementById(objTemp).defaultValue);
		    $('#'+objTemp).css('display', '');
	    }
    }
});

function filter ()
{
	var active = arguments[0];
	var tabs = arguments[1];
	var arr = tabs;
		arr = arr.split(',');

	for(i=0; i< arr.length; i++)
	{
		$('fieldset .header #'+$.trim(arr[i])+'').removeClass("active");
		$('fieldset .container #'+$.trim(arr[i])+'-container').css('display', 'none');
	}
	$('fieldset .header #'+$.trim(active)+'').addClass("active");
	$('fieldset .container #'+$.trim(active)+'-container').css('display', '');
	$('#ctl00_filter').val(active);
}
function showHide(show, hide, optional)
{
    show = show.split(',');
    hide = hide.split(',');
    optional = (optional != null || optional != undefined)? optional : '';

    for(i=0; i< hide.length; i++) { $('#' + $.trim(hide[i]) + optional).css('display', 'none'); }
    for(i=0; i< show.length; i++) { $('#' + $.trim(show[i]) + optional).css('display', ''); }
}

/* ------------------------------------------
----------- Janela Modal
------------------------------------------- */
function showModalWindow()
{
	var title 	= arguments[0];
	var content = arguments[1];
	var w 		= arguments[2];
	var h 		= arguments[3];
	var nClass	= arguments[4];
	var func	= arguments[5];

	$.get('../../content/modal/Default.aspx?'+noCache()+'', function(data)
	{
		html_modal = data;
        $(document.body).prepend(html_modal);
        
        if(nClass != '' && nClass != null)                          { $('.modal').addClass(nClass);	}
        if(w != '' && w != null)                                    { $('.modal').width(w);	}
        if(title != '' && title != null)                            { $('.modal .header h2').html(title);	}

        $('.modal .modal-content').html(content);
        if (content.indexOf('.aspx') != -1 && content.indexOf('.asp') != -1)
		{
		    var paramCache = '?&cache='+noCache();
		    if (content.indexOf('.aspx?') != -1 || content.indexOf('.asp?') != -1)
		    {
		        paramCache = '&cache='+noCache();
		    }
		    $('.modal .modal-content').html('<img src="../../images/loading.gif" alt="" />');
			$('.modal .modal-content').load(content+paramCache, function(data) { if(func != '' && func != null) { eval(func); } });
		}
        $('.modal').jqm({modal:true});
        $('.modal').jqmShow();
        $('.modal').css( 'left', ( ($('.jqmOverlay').width()/2)-($('.modal').width()/2)  ) );

        window.scroll(0,0);	
	});
}

function hideModalWindow()
{
    if(($.browser.version < 7) && ($.browser.msie))
    {
        $('.jqmOverlay').css('display', 'none');
    }
    else
    {
        $('.modal').empty();
	    $('.modal').jqmHide();    
    }
	$('.modal').remove();
}

/* ------------------------------------------
----------- Para formulários
------------------------------------------- */
function enableFields(_obj, _value, _div)
{
	if(_obj.value.toLowerCase() == _value.toLowerCase())
	{
		$('#'+_div+'').attr('disabled', '');
	}
	else
	{
		$('#'+_div+'').attr('disabled', 'disabled');
	}
}
function restFileds()
{
    document.forms[0].reset();
}
function validIsRequired(_d, _m)
{
    var ok = true;
    var html = '';
        html += '<ul class="itens-required">';

    $(_d).find('.required').each(function()
    {
        if(!$(this).hasClass('typeRadio') && ($(this).val() == this.defaultValue || $(this).val() == ''))
        {
            ok = false;
            html += '<li>' + $(this).attr('title') + '</li>';
            if(_m) { $(this).addClass('error'); }
        }
        if($(this).hasClass('typeEmail') && $(this).val() != this.defaultValue && !emailCode.test($(this).val()))
        {
            ok = false;
            html += '<li>' + $(this).attr('title') + ' Inv&aacute;lido</li>';
            if(_m) { $(this).addClass('error'); }
        }
        if($(this).hasClass('typeCpf') && $(this).val() != this.defaultValue && !isCpf($(this).val()))
        {
            ok = false;
            html += '<li>' + $(this).attr('title') + ' Inv&aacute;lido</li>';
            if(_m) { $(this).addClass('error'); }
        }
        if($(this).hasClass('typeCurrency') && $(this).val() != this.defaultValue && !numberCode.test($(this).val()))
        {
            ok = false;
            html += '<li>' + $(this).attr('title') + ' Inv&aacute;lido</li>';
            if(_m) { $(this).addClass('error'); }
        }        
        if($(this).hasClass('typeRadio'))
        {
            var radio = false;
            $('#'+$(this).attr('id')+' :radio:checked').each(function()
            {
                radio = true; 
            });
            if(!radio)
            {
                ok = false;          
                html += '<li>' + $(this).attr('title') + '</li>';
                if(_m) { $(this).addClass('error'); }
            }
        }  
    });
    html += '</ul>';
    return [ok, html];
}
function clearField(field)
{
    if($(field).attr('type') == 'text' || $(field).attr('type') == 'textarea')
    {
        if($(field).val() == field.defaultValue) { $(field).val(''); }
        if($(field).attr('type') == 'text')
        {
	        if($(field).hasClass("isCurrency")) { $(field).addClass("txt-right"); }	
        }    
    }
    if($(field).hasClass('error'))
    {
        $(field).removeClass("error");
    }
}
function defaultFieldValue(field)
{
    if($(field).val() == '') { $(field).val(field.defaultValue);
	if($(field).attr('type') == 'text')
	{
		 if($(field).hasClass("isCurrency")) { $(field).removeClass("txt-right"); } }
	}
}
function mask(o,f)
{
    v_obj=o;
    v_fun=f;
    setTimeout("execMask()",1);
}
function execMask()
{
    v_obj.value=v_fun(v_obj.value);
}
/* onkeypress="mask(this,maskOnlyNro);"  */
function maskOnlyNro(v)
{
    return v.replace(/\D/g,"");
}
/* onkeypress="mask(this,maskCNPJ);"  */
function maskCNPJ(v)
{
    v_obj.maxLength = 18;		//Define o tamanho máx de digitos
	v=v.replace(/\D/g,"");									//Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2");					//Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3");		//Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2");					//Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2");						//Coloca um hífen depois do bloco de quatro dígitos
    return v;
}
/* onkeypress="mask(this,maskCPF);"  */
function maskCPF(v)
{
    v_obj.maxLength = 14;		//Define o tamanho máx de digitos
    v=v.replace(/\D/g,"");									//Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2");						//Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2");						//Coloca um ponto entre o terceiro e o quarto dígitos
															//de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2");				//Coloca um hífen entre o terceiro e o quarto dígitos
    return v;
}
/* onkeypress="getEnter(this,getEnter);"  */
function getEnter(e,f)
{
	if(window.event)
		key=window.event.keyCode;
	else if(e)
		key=e.which;
	if(key==13)
		mask(e,f);
}
/* onkeypress="mask(this,maskPhone);"  */
function maskPhone(v)
{
    v_obj.maxLength = 9;		                            //Define o tamanho máx de digitos
    v=v.replace(/\D/g,"");									//Remove tudo o que não é dígito
    v=v.replace(/^(\d{4})(\d)/,"$1.$2");					//Coloca ponto entre o quarto e o quinto dígito
    return v;
}
/* onkeypress="mask(this,maskCEP);"  */
function maskCEP(v)
{
    v_obj.maxLength = 9;		                            //Define o tamanho máx de digitos
    v=v.replace(/\D/g,"");									//Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2");					//Coloca hifem entro o quinto e o sexto digito
    return v
}
/* onkeypress="mask(this,maskCurrency);"  */
function maskCurrency(v)
{
    v_obj.maxLength = 18;		//Define o tamanho máx de digitos
	v=v.replace(/\D/g,"");									//permite digitar apenas números
//	v=v.replace(/[0-9]{15}/,"exedeu o limite");				//limita pra máximo 999.999.999.999,99
	v=v.replace(/(\d{1})(\d{11})$/,"$1.$2");				//coloca ponto antes dos últimos 11 digitos
	v=v.replace(/(\d{1})(\d{8})$/,"$1.$2");					//coloca ponto antes dos últimos 8 digitos
	v=v.replace(/(\d{1})(\d{5})$/,"$1.$2");					//coloca ponto antes dos últimos 5 digitos
	v=v.replace(/(\d{1})(\d{1,2})$/,"$1,$2");				//coloca virgula antes dos últimos 2 digitos
    return v
}
function DFchangeField(o,e,d)
{
	if(window.event)
		key=window.event.keyCode;
	else if(e)
		key=e.which;
	else 
		return true;
	if(key==9||key==2||key==16)
		return false;
	if(d<=2&&o.value.length==o.maxLength)
	{
		for(var i=0;i<o.form.length;i++)
		{
			if(o.form[i]==o&&o.form[i+1])
			{
				o.form[i+1].focus();
				break;
			}
		}
	}
	if(d>1&&o.value.length==0&&key==8)
	{
		for(var i=0;i<o.form.length;i++)
		{
			if(o.form[i]==o&&o.form[i-1])
			{
				o.form[i-1].focus();
				o.form[i-1].value=o.form[i-1].value;break;
			}
		}
	}
}
var NUM_DIGITOS_CPF  = 11;
var NUM_DIGITOS_CNPJ = 14;
var NUM_DGT_CNPJ_BASE = 8;
function isCnpj(pCnpj)
{
	var numero = formatCpfCnpj(pCnpj, false, true);
	var base = numero.substring(0, NUM_DGT_CNPJ_BASE);
	var ordem = numero.substring(NUM_DGT_CNPJ_BASE, 12);
	var digitos = dvCpfCnpj(base + ordem, true);
	var algUnico;

	if (numero != base + ordem + digitos) return false;

	algUnico = numero.charAt(0) != '0';
	for (i=1; algUnico && i<NUM_DGT_CNPJ_BASE; i++)
	{
		algUnico = (numero.charAt(i-1) == numero.charAt(i));
	}
	if (algUnico) return false;

	if (ordem == "0000") return false;
	return (base == "00000000" || parseInt(ordem, 10) <= 300 || base.substring(0, 3) != "000");
}
function isCpf(pCpf)
{
	var numero = formatCpfCnpj(pCpf, false, false);
	var base = numero.substring(0, numero.length - 2);
	var digitos = dvCpfCnpj(base, false);
	var algUnico, i;

	// Valida dígitos verificadores
	if (numero != base + digitos) return false;
S
	algUnico = true;
	for (i=1; algUnico && i<NUM_DIGITOS_CPF; i++)
	{
		algUnico = (numero.charAt(i-1) == numero.charAt(i));
	}
	return (!algUnico);
}
function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	if (pUseSepar==null) pUseSepar = true;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var numero = unformatNumber(pCpfCnpj);

	numero = numero.lpad(maxDigitos, '0');
	if (!pUseSepar) return numero;

	if (pIsCnpj)
	{
		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;
		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");
	}
	else
	{
		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;
		numero = numero.replace(reCpf, "$1.$2.$3-$4");
	}
	return numero;
}
function unformatNumber(pNum)
{
	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");
}
String.prototype.lpad = function(pSize, pCharPad)
{
	var str = this;
	var dif = pSize - str.length;
	var ch = String(pCharPad).charAt(0);
	for (; dif>0; dif--) str = ch + str;
	return (str);
}
String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
function dvCpfCnpj(pEfetivo, pIsCnpj)
{
	if (pIsCnpj==null) { pIsCnpj = false; }
	var i, j, k, soma, dv;
	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);
	calculado = calculado.substring(2, maxDigitos);
	var result = "";

	for (j = 1; j <= 2; j++)
	{
		k = 2;
		soma = 0;
		for (i = calculado.length-1; i >= 0; i--)
		{
			soma += (calculado.charAt(i) - '0') * k;
			k = (k-1) % cicloPeso + 2;
		}
		dv = 11 - soma % 11;
		if (dv > 9) { dv = 0; }
		calculado += dv;
		result += dv
	}

	return result;
}
/* ------------------------------------------
----------- Gerais
------------------------------------------- */
function noCache()
{
	data = new Date();
	cache = (data.getDate() +''+ data.getMonth() +''+ data.getFullYear() +''+ data.getHours() +''+ data.getMinutes() +''+ data.getSeconds() +''+ data.getMilliseconds());
	return cache;
}
function getPath()
{
	path = '';
	start = unescape(document.location.toString()).indexOf('content');
	end = unescape(document.location.toString()).length;

	path_arr = unescape(document.location.toString());
	path_arr = path_arr.substring(start,end);
	path_arr = path_arr.split('/')
	for (i=0; i < (path_arr.length-1); i++)
	{
		path += '../';
	}
	return path;
}

function openWindow(url,janela,larg,alt,scroll)
{
	try
	{
		if (!scroll)
		{
			scroll='auto'
		}
		var posx = (screen.width - larg) / 2;
		var posy = (screen.height - alt) / 2;
		janelaNova = window.open(url,janela,"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+scroll+",resizable=no,copyhistory=no,width="+larg+",height="+alt+",left="+posx+",top="+posy+"");
		janelaNova.focus();
		return janelaNova;
	}
	catch(e) {   }
}

function showForm(id)
{
    var action = '';
    if($('#' + id + " div").css('display') == 'none')
    {
        $('#' + id).addClass('active');
    }
    else
    {
        $('#' + id).removeClass('active');
        action = 'none';
    }
    $('#' + id + " div").css('display', action);
}

function PopulateCombos(selectedValue, url)
{
    function setSelectText(_o, _v)
    {
        $(_o).find('option').filter(':selected').text(_v);
    }
    var contador = 0;
	function Blink()
	{
		var sufixo = null;
		switch (contador)
		{
			case 0:
			    sufixo = "   ";
			break;

			case 1:
			    sufixo = ".  ";
			break;

			case 2:
			    sufixo = ".. ";
			break;

			case 3:
			    sufixo = "...";
			break;
		}
		contador ++;
		if (contador == 4) { contador = 0; }
        setSelectText('#ctl00_basic_tipo_imovel', 'Carregando' + sufixo);
        setSelectText('#ctl00_advanced_tipo_imovel', 'Carregando' + sufixo);
        setSelectText('#ctl00_basic_cidade', 'Carregando' + sufixo);
        setSelectText('#ctl00_advanced_cidade', 'Carregando' + sufixo);
	}
	
	function PopulateText(id, value, text, empty)
	{
        if(empty)
        {
            $(id).html('');
        }
        else
        {
            var disabled = (value == '' && text != 'Tipo de Im&oacute;vel' && id != '#ctl00_basic_cidade' && id != '#ctl00_advanced_cidade') ? 'disabled=disabled' : '';
            $(id).append('<option label="'+text+'" value="'+value+'" '+disabled+'>'+text+'</option>'); 
        }
	}
	
    setSelectText('#ctl00_basic_tipo_imovel', 'Carregando   ');
    setSelectText('#ctl00_advanced_tipo_imovel', 'Carregando   ');
    setSelectText('#ctl00_basic_cidade', 'Carregando   ');
    setSelectText('#ctl00_advanced_cidade', 'Carregando   ');
    
    $('#ctl00_basic_tipo_imovel').attr('disabled', 'disabled');
    $('#ctl00_advanced_tipo_imovel').attr('disabled', 'disabled');
    $('#ctl00_basic_cidade').attr('disabled', 'disabled');
    $('#ctl00_advanced_cidade').attr('disabled', 'disabled');

	var intervalo = setInterval(Blink, 200);
	
    $.ajax({
        type:"POST",
        url: url + "content/pages/Ajax.aspx/RepopulateType",               
        data:"{ selectedValue: '" + selectedValue + "'}",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        success: function(data)
        {         
            data = eval('(' + data + ')'); 
             
            clearInterval(intervalo); // Para de piscar o "Carregando..."
		    contador = 0;
		    
            var types = (typeof data.d) == 'string' ? eval('(' + data.d + ')') : data.d;  

            PopulateText('#ctl00_basic_tipo_imovel', null, null, true);  
            PopulateText('#ctl00_advanced_tipo_imovel', null, null, true);
            
            if($.IsNullOrEmpty(types))  
            {
                PopulateText('#ctl00_basic_tipo_imovel', '', 'Tipo de Im&oacute;vel');
                PopulateText('#ctl00_advanced_tipo_imovel', '', 'Tipo de Im&oacute;vel');

                for(var i = 0; i < types.length; i++)
                {
                    PopulateText('#ctl00_basic_tipo_imovel', types[i].value, types[i].text.replace('#','&nbsp;'));
                    PopulateText('#ctl00_advanced_tipo_imovel', types[i].value, types[i].text.replace('#','&nbsp;'));
                }
            }
            else
            {
                PopulateText('#ctl00_basic_tipo_imovel', '', 'Tipo de Im&oacute;vel');
                PopulateText('#ctl00_advanced_tipo_imovel', '', 'Tipo de Im&oacute;vel');
            }
            $("#ctl00_basic_tipo_imovel").removeAttr("disabled");
            $("#ctl00_advanced_tipo_imovel").removeAttr("disabled");
        }              
    });
    $.ajax({
        type:"POST",
        url: url + "content/pages/Ajax.aspx/RepopulateCity",               
        data:"{ selectedValue: '" + selectedValue + "'}",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        success: function(data)
        {   
            data = eval('(' + data + ')');
              
            clearInterval(intervalo); // Para de piscar o "Carregando..."
		    contador = 0;
		    
            var types = (typeof data.d) == 'string' ? eval('(' + data.d + ')') : data.d;  
            
            PopulateText('#ctl00_basic_cidade', null, null, true);
            PopulateText('#ctl00_advanced_cidade', null, null, true);
            
            if($.IsNullOrEmpty(types))  
            {
                PopulateText('#ctl00_basic_cidade', '', 'Cidade');
                PopulateText('#ctl00_advanced_cidade', '', 'Cidade');

                for(var i = 0; i < types.length; i++)
                {
                    PopulateText('#ctl00_basic_cidade', types[i].value, types[i].text);
                    PopulateText('#ctl00_advanced_cidade', types[i].value, types[i].text);
                }
            }    
            else
            {
                PopulateText('#ctl00_basic_cidade', '', 'Cidade');
                PopulateText('#ctl00_advanced_cidade', '', 'Cidade');
            }
            $("#ctl00_basic_cidade").removeAttr("disabled");
            $("#ctl00_advanced_cidade").removeAttr("disabled");
            $.changeCity("");
        }              
    });
    $.ajax({
        type:"POST",
        url: url + "content/pages/Ajax.aspx/SavePurposeState",               
        data:"{ selectedValue: '" + selectedValue + "'}",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        success: function(data)
        {
            clearInterval(intervalo); // Para de piscar o "Carregando..."
		    contador = 0;
		    
            $("#ctl00_basic_finalidade").val(selectedValue);              
            $("#ctl00_advanced_finalidade").val(selectedValue);
        }              
    });
}

function showAddress(address) 
{ 
    var sIcon = new GIcon(G_DEFAULT_ICON);
    sIcon.image = "../../images/map-over.gif";
    markerOptions = { icon:sIcon };

    var map = new GMap2(document.getElementById("map_canvas"));
    var geocoder = new GClientGeocoder();
    geocoder.getLatLng(
        address,
        function(point) {
        if (!point)
        {
            showModalWindow('Aviso', 'Endere&oacute;o n&atilde;o encontrado:<br /><br />'+address+'');
        }
        else
        {
            map.setCenter(point, 15);
            var marker = new GMarker(point, markerOptions);
            map.addOverlay(marker);
        }
    });
}

function paginateMyList(url, page)
{
    $('#list-container').load(url + '/content/pages/MyList.aspx?'+noCache()+'', {'page':page});
}

function addToMyList(url, description, id, price, area, bedroom, details)
{
    $.ajax({
        type: 'POST',
        url: url + 'content/pages/Ajax.aspx/AddToMyList',
        data: '{ description: "' + description + '", id: "' + id + '", price: "' + price + '", area: "' + area + '", bedroom: "' + bedroom + '", details: "' + details + '"}',
        contentType: 'application/json; charset=utf-8',
        datatype: 'json',
        success: function(data)
        {
            data = eval('('+data+')');            
            $('#list-container').load(url + 'content/pages/MyList.aspx?'+noCache()+'');
            if(data.d != "")
            {            
                $('#btnListTotal').html(data.d);
                if(eval(data.d) != 1)
                {
                    $('#lblListTotal').html('im&oacute;veis na sua lista.');
                }
                else
                {
                    $('#lblListTotal').html('im&oacute;vel na sua lista.');
                }
            }
        }
    });
}

function removeFromMyList(url, id)
{
    $.ajax({
        type: 'POST',
        url: url + 'content/pages/Ajax.aspx/RemoveFromMyList',
        data: "{ id: '" + id + "' }",
        contentType: 'application/json; charset=utf-8',
        datatype: 'json',
        success: function(data)
        {            
            data = eval('('+data+')');           
            $('#list-container').load(url + 'content/pages/MyList.aspx?'+noCache()+'');
            
            if(eval(data.d) == "")
            {
                $('#btnListTotal').html("0");
            }
            else
            {
                $('#btnListTotal').html(data.d);
            }  
            if(eval(data.d) != 1)
            {               
                $('#lblListTotal').html('im&oacute;veis na sua lista.');                
            }
            else                
            {
                $('#lblListTotal').html('im&oacute;vel na sua lista.');
            }
        }
    });
}