var basis_cliente;
var basis_campos = new Array();
var basis_url_pesq = './';
var basis_select_label_padrao = " ";
var basis_list_label_padrao = " ";
var basis_money_label_padrao = '0,00';
var basis_numeric_label_padrao = "";
var basis_resultado_link_externo = false;

function bas_get_result(str){
  if ($("#bas_frame_resultado").length != 0) {
	  	
    $("#bas_frame_resultado").attr('src',str);
	//set_basis_current_url(str); 	
  }else{
	     window.location = basis_url_pesq + "?basisbusca=" + replaceAll(str,'&','$');
  }
}

function replaceAll(string, token, newtoken) {
	if (string != undefined && string != null) {
		while (string.indexOf(token) != -1) {
			string = string.replace(token, newtoken);
		}
	}
	return string;
}

function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^#&]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

$(document).ready(function() {
  var busca = gup('basisbusca');
  if(busca != ""){

	b = "http://"+basis_cliente+".vendasnet.basis.net.br";
	//b = "http\://";
	//b = "";
	if (basis_resultado_link_externo){		
		if(busca.search(".vendasnet.basis.net.br") < 0){
			busca = b + busca;	
		}
		//busca = busca.replace(window.location.host,'');
	}
	
	/*if(basis_cliente=="wbianco"){
		busca = b + busca;	
		alert(busca);
	}*/

      busca = replaceAll(busca,'$','&');
      $("#bas_frame_resultado").attr('src', busca);	
    }
	
	$(".numeric").numeric();
	
	$(".money").priceFormat({
		prefix: false,
	    centsSeparator: ',',
	    thousandsSeparator: '.'
    });
});

//*** cria_form **////
//o parametro 'cliente' deve ser preenchido com o nome do cliente, o mesmo usado no subdominio.
//'container' é o nome da 'DIV' onde o formulário sera inserido
//O parametro 'campos' corresponde aos campos desejados no formulário para pesquisa, e deve ser passado como um array de strings
//eles são:
//  finalidade, tipo, estado, cidade, bairro, dormitorio, valor, vaga, referencia
//Exemplo: 
//	['tipo','cidade','bairro','referencia']
//
// O parametro 'componentes' server para predefinir os componentes do formulario,
//mas pode ser passado como nulo caso deseje usar os componentes padrões. Os valores
//devem ser passados na ordem correspondente ao paramentro 'campos'.
//Exemplo:
//  
//cria_form('demonstracao','div_formulario',[campo,campo,campo]);
//objeto campo:
//	{'nome':'cidade','label':'Cidade:','componete':'select','obrigatorio':'sim','label_interna':'sim'}
//
//exceções:
//	para componentes do tipo list, setar a propriedade 'size', exemplo:
//	{'nome':'baiiro','label':'Bairro:','componete':'list','size':'5','obrigatorio':'sim','label_interna':'sim'}

function cria_form(cliente, container,form_name, campos, por_pagina,btn_enviar)
{	
	basis_cliente = cliente;	
	campos = (campos)?campos:basis_campos;
	carrega_scripts(campos);

	var f = document.createElement("form");
	f.method = 'GET';
	
	f.name = (form_name)? form_name : 'basis_form_pesquisa';
	f.id = (form_name)? form_name : 'basis_form_pesquisa';
		
	p = new_component({'componente':'hidden','value':por_pagina});
	p.id = 'per_page';
	p.name = 'per_page';		
	f.appendChild(p);
	
	if(basis_resultado_link_externo) {
		u = window.location.hostname + basis_url_pesq.replace("./","/") + "?basisbusca=";
		e = new_component({'componente':'hidden','value':u});
		e.id = 'link_externo';
		e.name = 'link_externo';		
		f.appendChild(e);
	}
	
	l = campos.length;
	for (i = 0; i < l; i++)
	{
		c = cria_item(campos[i]);
		f.appendChild(c);
	}
		
	b = new_component({'componente':'submit','label':btn_enviar});
	b.id = 'basis_btn_pesquisa_' + f.id;
	b.name = 'basis_btn_pesquisa_' + f.id;
	$(b).addClass("basis_btn_pesquisa");
	f.appendChild(b);
	
	$(f).submit(function(){
		basis_form_action(f.id);
		return false;
	});
		
	$('#'+container).append(f);
	
	return false;
}

function basis_form_action(form_name){
	bas_get_result('http://'+basis_cliente+'.vendasnet.basis.net.br/servicos/resultado?'+$('#'+form_name).serialize());
	return false;
}

//exemplo: add_campo('referencia','Referencia:','text','nao','nao');
function add_campo(nome,label,componente,obrigatorio,label_interna,opcoes)
{
	var c = new Object();
	c.nome = nome;
	c.label=label;
	c.componente=componente;
	c.obrigatorio=obrigatorio;
	c.label_interna=label_interna;
	if(opcoes){
		$.extend(c,opcoes)
	}
	basis_campos.push(c);
	return false;
}

function cria_item(campo){
		var d = cria_item_formulario(campo);
		d.appendChild(new_component(campo));		
		return d;
}

function new_component(campo)
{	
	var c;
	
	switch (campo.componente) 
	{
		case 'text' :
			c = document.createElement("input");
			c.type = "text";		
			if(campo.label_interna=='sim'){
				c.value=campo.label;
				c.defaultValue=campo.label;
				var n = 'imovel_' + campo.nome;
				c.onfocus = function(){ if(this.value == this.defaultValue) this.value=''; };
				c.onblur = function(){ if(this.value == '') this.value=this.defaultValue; };
			}
		break;
		
		case 'password' :
			c = document.createElement("input");
			c.type = "password";
		break;
		
		case 'numeric' :
			c = document.createElement("input");
			c.type = "text";
			c.value = basis_numeric_label_padrao;
			$(c).addClass("numeric");
		break;
		
		case 'money' :
			c = document.createElement("input");
			c.type = "text";
			c.value = basis_money_label_padrao;			
			$(c).addClass("money");
		break;
		
		case 'checkbox' :
			c = document.createElement("input");
			c.type = "checkbox";
			c.alt = campo.label;
			c.value = campo.value;
		break;
		
		case 'radio' :
			c = document.createElement("input");
			c.type = "radio";
			c.alt = campo.label;
			c.value = campo.value;			
		break;
		
		case 'hidden' :
			c = document.createElement("input");
			c.type = "hidden";
			c.value = campo.value;			
		break;
		
		case 'select' :
			c = document.createElement("select");
			if(campo.label_interna=='sim'){
				c.add(new_option('0',campo.label));
			}else{
				c.add(new_option('0',basis_select_label_padrao));
			}
		break;
		
		case 'list' :
			c = document.createElement("select");
			c.size=parseInt(campo.size);
			if(campo.label_interna=='sim'){
				c.add(new_option(0,campo.label),null);
			}else{
				c.add(new_option('0',basis_list_label_padrao),null);
			}
		break;
		
		case 'submit' :
			c = document.createElement("input");
			c.type = "submit";
			c.value=campo.label;
		break;
		
		default:
			c = document.createElement("input");
			c.type = "text";
			if(campo.label_interna=='sim'){c.value=campo.label;}
	}		
	if (c) {
		$(c).attr("id", 'imovel_' + campo.nome);
		$(c).attr("name", 'imovel_' + campo.nome);
	}
	
	return c;
}

function cria_item_formulario(campo){
	var div = document.createElement("div");
	$(div).attr("id","basis_form_item_" + campo.nome);
	$(div).attr("name","basis_form_item_" + campo.nome);
	$(div).addClass("basis_form_item");
	if(campo.obrigatorio=='sim'){
		$(div).addClass('basis_form_item_obrigatorio');
	}
	if(campo.label_interna!='sim'){
		$(div).append(cria_label_formulario(campo));
	}
	return div;
}

function cria_label_formulario(campo){
	var l = document.createElement("label");
	$(l).html($(campo).attr("label"));
	$(l).attr("id","basis_form_label_" + campo.nome);
	$(l).attr("name",l.id);
	$(l).attr("for","imovel_"+ campo.nome);
	$(l).addClass('basis_form_label');
	return l;
}

function carrega_lista(componente,obj,lista)
{
	l = lista.length;
	if ($(componente).attr("tagName") != 'SELECT') {
		if ($(componente).attr("type") == 'radio') {
			$(componente).val(0);
		}
		$('#'+$(componente).parent().attr('id')).append(cria_label_formulario({'nome': replaceAll($(componente).attr("name"), 'imovel_', ''),'label': $(componente).attr('alt')}));
	}
	for(i=0 ; i<l; i++)
	{		
		if($(componente).attr("tagName")=='SELECT') {
			$(componente).append(new_option(lista[i][obj].id, lista[i][obj].descricao));
		}else if($(componente).attr("tagName")=='INPUT') {
			switch($(componente).attr("type")){		
			case 'radio':				
				$('#'+$(componente).parent().attr('id')).append(new_component({'nome':replaceAll($(componente).attr('name'),'imovel_',''),'componente':'radio','value':lista[i][obj].id, 'label':lista[i][obj].descricao}));
				$('#'+$(componente).parent().attr('id')).append(cria_label_formulario({'nome':replaceAll($(componente).attr('name'),'imovel_',''),'label':lista[i][obj].descricao}));
				break;
			case 'checkbox':				
				$('#'+$(componente).parent().attr('id')).append(new_component({'nome':replaceAll($(componente).attr('name'),'imovel_',''),'componente':'checkbox','value':lista[i][obj].id, 'label':lista[i][obj].descricao}));
				$('#'+$(componente).parent().attr('id')).append(cria_label_formulario({'nome':replaceAll($(componente).attr('name'),'imovel_',''),'label':lista[i][obj].descricao}));
				break;
			}
		}		
	}
	
	return false;
}

function new_option(val,desc)
{
	var option=document.createElement("option");
	option.text=desc;
	option.label=desc;
	option.value=val;	
	return option;	
}

//funcão para auxiliar a importação dos scripts de dados sem o formulario de pesquisa
function importa_scripts(cliente,campos)
{
	basis_cliente = cliente;	
	carrega_scripts(!(campos==null)?campos:['destaque','finalidade','tipos','estados','cidades','bairros','uso_imovel','tipos_negocios','dormitorios','vagas']);
	return false;
}

function carrega_scripts(campos)
{
	var host = "http://" + basis_cliente + ".vendasnet.basis.net.br";
	
	l = campos.length;
	
	for(i=0; i < l; i++)
	{		
		c = (campos[i].nome)?campos[i].nome:campos[i];	
		url = "";	
		switch (c) 
		{
			case 'finalidade': url = host + "/servicos/get_finalidades.json"; break;
				
			case 'tipo' : url = host + "/servicos/get_tipos.json"; break;
			
			case 'estado' : url = host + "/servicos/get_estados.json"; break;
				
			case 'cidade' : url = host + "/servicos/get_cidades.json?estado=0"; break;
				
			case 'bairro' : url = host + "/servicos/get_bairros.json?cidade=0"; break;

			case 'uso_imovel' : url = host + "/servicos/get_uso_imovel.json"; break;
				
			case 'tipo_negocio' : url = host + "/servicos/get_tipos_negocios.json"; break;				
			
			case 'dormitorios' : 
				url = host + "/servicos/get_dormitorios.json";
				break;
			
			case 'vagas' : 
				url = host + "/servicos/get_vagas.json"; 
				break;
				
			case 'valori' :
				break;
				
			case 'valorf' :
				break;
				
			case 'fotos' :
				
				break;

			case 'destaque' : url = host + "/servicos/banner_destaque.json"; break;			
		}
		
		if (url!="") {
			add_script(url);
		}
	}
	return false;
}

function add_script(url)
{
	var s = document.createElement("script");
	s.type = "text/javascript";
	s.src = url;
	document.getElementsByTagName("head")[0].appendChild(s);
	return false;
} 

function carrega_campos(nome)
{		
	switch (nome) {
		case 'finalidade':
			carrega_lista($('#imovel_' + nome),'tbtiposnegocio',basis_finalidades);
			break;
			
		case 'tipo':
			carrega_lista($('#imovel_' + nome),'tbimoveistipo',basis_tipos);
			break;
			
		case 'estado':
			carrega_lista($('#imovel_' + nome),'tbestado',basis_estados);
			$('#basis_form_estado').change(function(){
				filter_data('#imovel_cidade', basis_cidades,'tbcidade','tbestado_id','#imovel_estado');
			});
			break;
			
		case 'cidade':
			carrega_lista($('#imovel_' + nome),'tbcidade',basis_cidades);
			$('#imovel_cidade').change(function(){
				filter_data('#imovel_bairro', basis_bairros,'tbbairro','tbcidade_id','#imovel_cidade');
			});
			break;
			
		case 'bairro':
			carrega_lista($('#imovel_' + nome),'tbbairro',basis_bairros);
			break;
			
		case 'uso_imovel':
			carrega_lista($('#imovel_' + nome),'tbusoimovel',basis_uso_imovel);
			break;
			
		case 'tipo_negocio':
			carrega_lista($('#imovel_' + nome),'tbtiposnegocio',basis_tipos_negocios);
			break;
			
		case 'dormitorios':
			break;
			
		case 'vagas':			
			break;
			
		case 'destaque':
			break;
			
		case 'fotos':			
			break;
		}
	return false;
}

function filter_data(componente,dados,obj,campo,componente_pai)
{
	l = dados.length;				  
	$(componente).find('option').each(function() {
	   	if($(this).val()>0){
			$(this).remove();
		}
	   });
	a = dados;
	for(i=0;i<a.length;i++){
		if(a[i][obj][campo]==$(componente_pai).val() || $(componente_pai).val() == 0){
			$(componente).append('<option value="'+a[i][obj].id+'">'+a[i][obj].descricao+'</option>');
		}	
	}
	return false;
}

Number.prototype.formatMoney = function(c, d, t){
var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
   return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
 };

function get_link(imov){
	link = "http://"+basis_cliente+".vendasnet.basis.net.br/detalhes?imv=" + imov.imcodigo;
	link += "&map=" + imov.mapa + "&tipo_negocio=" + imov['negocio'] + "&valor=" + imov.valori + "&carac=" + imov.carac;
	link += "&bairro=" + imov.bairro + "&cidade=" + imov.cidade + "&tipo_imovel=" + imov.tipo + "&uf=" + imov.uf;
	return link;
}

//function set_basis_current_url(str){
//	$.Storage.saveItem(str.match(/[a-z]{5,}/) + 'vendasnet_current_url',str);
//}
//
//function get_basis_current_url(){
//	return $.Storage.loadItem( basis_cliente? basis_cliente : String(window.location.match(/[a-z]{5,}/)) + 'vendasnet_current_url');
//}
