function homes(settings){
	this.settings=settings;
	this.requests=new Object();
	
	$('.ContactAgent').keydown(
		function(event){
			if(this.type=='text' && event.keyCode==13){
				$('#ContactAgentbtn').trigger('click');
			}
		}
	);
		
	this.contact_agent=function(id,post_url){
		btnTxt=$('#ContactAgentbtn').val();
		$('#ContactAgentbtn').val('Loading...');
		$('.ContactAgent').attr("disabled","disabled");
		
		if(this.requests['contact_agent']){
			this.requests['contact_agent'].abort();	
		}
		this.requests['contact_agent']=$.ajax({
			type: "POST",
			url: post_url,
			data:$('.ContactAgent'),
			dataType:"json",
			error: function(){
				location.reload(true);
			},
			success: function(resp){
				$('#ContactAgentbtn').val(btnTxt);
				$('.ContactAgent').removeAttr("disabled");
				if(resp.success){
					$('#ContactAgent_content').html('<span>Email successfully sent!</span>');
				}
				else {
					if(resp.errors){
						msg='Please correct the following errors:\n\n';
						for(i in resp.errors){
							msg+='\t- '+resp.errors[i]+'\n';	
						}
						alert(msg);
					}
				}
			}
		});
	}
	
	$('.EmailToFriend').keydown(
		function(event){
			if(this.type=='text' && event.keyCode==13){
				$('#EmailToFriend').trigger('click');
			}
		}
	);
	
	this.email_to_friend=function(id,post_url){
		
		btnTxt=$('#EmailToFriend').val();
		$('#EmailToFriend').val('Loading...');
		$('.EmailToFriend').attr("disabled","disabled");
		
		if(this.requests['email_to_friend']){
			this.requests['email_to_friend'].abort();	
		}
		this.requests['email_to_friend']=$.ajax({
			type: "POST",
			url: post_url,
			data:$('.EmailToFriend'),
			dataType:"json",
			error: function(){
				location.reload(true);
			},
			success: function(resp){
				$('#EmailToFriend').val(btnTxt);
				$('.EmailToFriend').removeAttr("disabled");
				if(resp.success){
					$('#EmailToFriend_content').html('<span>Email successfully sent!</span>');
				}
				else {
					if(resp.errors){
						msg='Please correct the following errors:\n\n';
						for(i in resp.errors){
							msg+='\t- '+resp.errors[i]+'\n';	
						}
						alert(msg);
					}
				}
			}
		});
	}
	
	this.favourite=function(id,url){
		settings=this.settings.favourite;

		$('#list_favourite span').html('Loading...');
		
		if(this.requests['favourite']){
			this.requests['favourite'].abort();	
		}

		if($('#list_favourite_item_'+id).length>0){
			//Remove	
			this.requests['favourite']=$.ajax({
				type: "POST",
				url: "homes/favourite/"+id,
				data:{"mode":"delete"},
				dataType:"json",
				error: function(){
					location.reload(true);
				},
				success: function(resp){			
					if(resp.success){
						$('#list_favourite_item_'+id).slideUp('fast',function(){$('#list_favourite_item_'+id).remove();});
						$('div.tools .favourite a span').html(settings.add);
						$('div.tools li.favourite').addClass('add');
						$('div.tools li.favourite').removeClass('remove');
					}
					else {
						location.reload(true);
					}
				}
			});
		}
		else {
			//Add
			this.requests['favourite']=$.ajax({
				type: "POST",
				url: "homes/favourite/"+id,
				data:{"mode":"add","url":url},
				dataType:"json",
				error: function(){
					location.reload(true);
				},
				success: function(resp){			
					if(resp.success){
						$('#list_favourite ul').append('<li id="list_favourite_item_'+id+'" class="list_favourite_item" style="display:none;"><a href="'+resp.url+'">'+resp.title+'</a></li>');
						$('#list_favourite_item_'+id).slideDown('fast');
						$('div.tools li.favourite').removeClass('add');
						$('div.tools li.favourite').addClass('remove');
						$('div.tools .favourite a span').html(settings.remove);
												}
					else {
						location.reload(true);
					}
				}
			});
		}
	}
	
	this.compare=function(id,url){
		settings=this.settings.compare;

		$('#list_compare span').html('Loading...');
		
		if(this.requests['compare']){
			this.requests['compare'].abort();	
		}

		if($('#list_compare_item_'+id).length>0){
			//Remove	
			this.requests['compare']=$.ajax({
				type: "POST",
				url: "homes/compare",
				data:{"mode":"delete","id":id},
				dataType:"json",
				error: function(){
					location.reload(true);
				},
				success: function(resp){			
					if(resp.success){
						$('#list_compare_item_'+id).slideUp('fast',
							function(){
								$('#list_compare_item_'+id).remove();
								keepView=0;
								$('.list_compare_item').each(
									function(){
										if(this.id){
											keepView=1;
											
										}
									}
								);
								if(!keepView){
									$('#list_compare li.view').slideUp('fast');		
								}
							}
						);
						$('div.tools .compare a span').html(settings.add);
					}
					else {
						location.reload(true);
					}
				}
			});
		}
		else {
			//Add
			this.requests['compare']=$.ajax({
				type: "POST",
				url: "homes/compare",
				data:{"mode":"add","id":id,"url":url},
				dataType:"json",
				error: function(){
					location.reload(true);
				},
				success: function(resp){			
					if(resp.success){
						$('#list_compare ul').append('<li id="list_compare_item_'+id+'" class="list_compare_item" style="display:none;"><a href="'+resp.url+'">'+resp.title+'</a></li>');
						viewHTML=$('#list_compare ul li.view').html();
						$('#list_compare ul li.view').remove();
						$('#list_compare ul').append('<li class="view">'+viewHTML+'</li>');
						$('#list_compare_item_'+id).slideDown('fast');				
						$('#list_compare li.view').slideDown('fast');
						$('div.tools .compare a span').html(settings.remove);
						}
					else {
						location.reload(true);
					}
				}
			});
		}
	}
}