function CorretorOnline(site){
	this.construct(site);
}


CorretorOnline.prototype = {
	
	/** variaveis **/
	site: 				null,	// url base do site
	id_imovel: 			null,	// id do imovel selecionado
	id_corretor_online:	null,
	id_internauta:		null,
	nome:				null,
	nome_usuario:		null,
	lightbox:			null,
	width:				"550",
	height:				"460",
	response:			"eval(document.getElementById('chat-corretor-online-ajax-response').innerHTML)",
	content:			null,
	refresh:			10,
	loading:			"...",
	sair:				false,
	
	
	/** construtor **/
	construct:function(site){
		this.site = site;
	},
	
	/** define o id_imovel e abre o lightbox de cadastro do internauta **/
	open:function(id_imovel){
		$("#corretor_online_telefone").mask("(99) 9999-9999");
		this.id_imovel = id_imovel;
		this.openLightBox();
	},
	
	/** abre o lightbox com o cadastro do internauta **/
	openLightBox:function(){
		this.lightbox = new LightBox("lbCorretorOnline", null, null, true, true);
		this.lightbox.show();
	},
	
	/** fecha o lightbox com o cadastro do internauta **/
	closeLightBox:function(){
		this.lightbox.close();
	},
	
	/** seta o id_corretor_online **/
	setIdCorretorOnline:function(id_corretor_online){
		this.id_corretor_online = id_corretor_online;
	},
	
	/** seta o id_internauta **/
	setIdInternauta:function(id_internauta){
		this.id_internauta = id_internauta;
	},
	
	/** seta o nome do internauta **/
	setNome:function(nome){
		this.nome = nome;
	},
	
	setNomeUsuario:function(nome_usuario){
		this.nome_usuario = nome_usuario;
	},
	
	setRefresh:function(refresh){
		this.refresh = refresh;
	},
	
	
	/** valida as informacoes do internauta e envia por ajax, apos terminar executa onSave() **/
	save:function(){
		
		var nome 		= getFormObjectValue("corretor_online_nome");
		var telefone 	= getFormObjectValue("corretor_online_telefone");
		var email 		= getFormObjectValue("corretor_online_email");
		
		if(nome==""){
			alert("Preencha o campo NOME !");
			setFocus("corretor_online_nome");
		}
		else {
			if(email=="" || !is_mail(email)){
				alert("Preencha o campo EMAIL corretamente !");
				setFocus("corretor_online_email");
			}
			else {
				if(telefone==""){
					alert("Preencha o campo TELEFONE !");
					setFocus("corretor_online_telefone");
				}
				else {
					getFormObject("corretor_online_button").value 	 = "entrando...";
					getFormObject("corretor_online_button").disabled = true;
					
					var ajax 	= new Ajax();
					var params 	= "";
					
					params += "nome="+nome;
					params += "&telefone="+telefone;
					params += "&email="+email;
					params += "&id_imovel="+this.id_imovel;
					
					ajax.load("POST", this.site+"componentes/ajax/corretor-online-entrar.php", params, "corretor_online_ajax_response", null, "corretorOnline.onSave();");
				}
			}
		}
	},
	
	
	/** verifica se o cadastro do internauta deu certo ou nao, se sim chama redir() se nao avisa o usuario **/
	onSave:function(){
		
		getFormObject("corretor_online_button").value 	 = "entrar";
		getFormObject("corretor_online_button").disabled = false;
		
		eval(document.getElementById("corretor_online_ajax_response").innerHTML);
		
		if(id!=""){
			this.closeLightBox();
			this.redir(id);
		}
		else
			alert("erro ao salvar.");
		
	},
	
	
	/** monta a url com os parametros do cadastro e abre uma popup **/
	redir:function(id){
		var params = "";
		
		params += "toolbar=0,";
		params += "location=0,";
		params += "directories=0,";
		params += "status=0,";
		params += "menubar=1,";
		params += "scrollbars=0,";
		params += "resizable=0";
		
		var janela = window.open(this.site+"corretor-online/"+id+"/"+this.id_imovel, null, params);
		janela.resizeTo(this.width, this.height);
	},
	
	
	/** chama o php que verifica a situacao do atendimento **/
	waiting:function(){
		
		if(this.content==null)
			this.content = document.getElementById("chat-corretor-online-content");
			
		var ajax = new Ajax();
		var params = "id="+this.id_corretor_online;
		
		ajax.load("POST", this.site+"componentes/ajax/corretor-online-waiting.php", params, "chat-corretor-online-ajax-response", null, "corretorOnline.check();");
	},
	
	
	/** verifica se o internauta ja foi antendido ou nao **/
	check:function(){
		eval(this.response);
		
		// atendido
		if(situacao==8){
			this.nome_usuario = nome;
			this.init();
		}
		else {
			// aguardando
			if(situacao==9){
				if( this.loading=="..." )
					this.loading = ".";
				else
					this.loading += ".";
					
				this.content.innerHTML = "aguarde"+this.loading;
				setTimeout("corretorOnline.waiting();", (2*1000));
			}
			else {
				// ocupado
				if(situacao==10)
					this.content.innerHTML = "Todos os atendentes estão ocupados no momento. Por favor tente novamente mais tarde.";
			}
		}
		
	},
	
	
	
	/** chama o ajax que carrega a pagina inicial do chat com os componentes **/
	init:function(){
		var ajax = new Ajax();
		ajax.load("POST", this.site+"componentes/ajax/corretor-online-chat.php", null, "chat-corretor-online-content", null, "corretorOnline.chat();");
	},
	
	
	chat:function(){
		
		var ajax 	= new Ajax();
		var params 	= "";
		
		params += "id_corretor_online="+this.id_corretor_online;
		
		ajax.load("POST", this.site+"componentes/ajax/corretor-online-check-message.php", params, "chat-corretor-online-ajax-response", null, "corretorOnline.checkMessage();");
		setTimeout("corretorOnline.chat();", (this.refresh*1000));
	},
	
	
	/** cria o objeto de mensagem e adiciona ao chat **/
	loadMessage:function(name, message, img_name){
		
		var ul 			= document.getElementById("ul_chat");
		var li 			= document.createElement("li");
		var label 		= document.createElement("label");
		var text_label 	= document.createTextNode(name + ":");
		var text_message= document.createTextNode(message);
		var br			= document.createElement("br");
		var img			= document.createElement("img");
		
		if(img_name!=null)
			img.setAttribute("src", this.site+"img/corretor_online_0"+img_name+".gif");
		
		label.appendChild(img);
		label.appendChild(text_label);
		li.appendChild(label);
		li.appendChild(br);
		li.appendChild(text_message);
		
		li.style.display =  "none";
		
		ul.appendChild(li);
		
		this.fadeIn(li);
		li.scrollIntoView();
	},
	
	
	/** executa o efeito de fadeIn ao enviar uma msg **/
	fadeIn:function(li){
		
		var alpha = 10;
		var opacity = 100;
		
		li.style.display = "block";
		li.style.filter = "alpha(opacity="+ alpha +")";
		li.style.opacity = alpha/100;
		
		var f = setInterval( function() {
		
			if( alpha>=opacity ){
				clearInterval(f);
				li.style.filter = "alpha(opacity="+ alpha; +")";
			}
		
			li.style.filter = "alpha(opacity="+ alpha +")";
			li.style.opacity = alpha/100;
		
			alpha += 4;
		
		}, 1 );
	},
	
	
	
	checkMessage:function(){
		eval(this.response);
		
		if(sair=='true'){
			this.sair = true;
			this.loadMessage(this.nome_usuario, "saiu da conversa", 1);
			alert(this.nome_usuario + " saiu da conversa.");
		}
		else {
			for(var i=0; i<mensagem.length; i++){
				if(mensagem[i]!="")
					setTimeout("corretorOnline.loadMessage('"+this.nome_usuario+"','"+mensagem[i]+"', 1);", (700*i));
			}
		}
	},
	
	
	/** acrescenta a mensagem ao chat e envia por ajax para gravar no BD **/
	sendMessage:function(){
		
		var ajax 	= new Ajax();
		var msg  	= document.getElementById("mensagem");
		var params  = "";
	
		if(this.sair){
			alert(this.nome_usuario + " saiu da conversa.");
			msg.disabled = true;
		}
		else {
			if(msg.value!=""){
				
				params += "id_corretor_online="+this.id_corretor_online;
				params += "&id_internauta="+this.id_internauta;
				params += "&mensagem="+msg.value;
				
				ajax.load("POST", this.site+"componentes/ajax/corretor-online-send-message.php", params);
				this.loadMessage(this.nome, msg.value, 2);
				msg.value = "";
				msg.focus();
			}
		}
	},
	
	
	close:function(){
		var ajax 	= new Ajax();
		var params 	= "";
		
		if(!this.sair){
			params += "id_corretor_online="+this.id_corretor_online;
			params += "&sair=true";
		
			ajax.load("POST", this.site+"componentes/ajax/corretor-online-send-message.php", params);
		}
	}
}
