vdwFavorites = {
	init : function() {
		$jq('body').append('<div id="ajax-confirmation"></div>');
		$jq('#ajax-confirmation').dialog({ title : 'My LMSRE Favorites', dialogClass : 'favorites-dialog', autoOpen : false, resizable : false, width: 400, height : 300 });
		$jq('.registered .btn-favorite-listing').click(function(e) {
			e.preventDefault();				
			vdwFavorites.updateFavoriteStatus($jq(this), $jq(this).prevAll("input[name='user_id']").val(), $jq(this).prevAll("input[name='property_id']").val());
		});
		$jq("input[name='compare_property']").click(function(e) {
			vdwFavorites.updateCompareStatus($jq(this), (($jq(this).is(':checked')) ? 'add' : 'remove'), $jq(this).val());
		});
		$jq('.btn-save-comparison').click(function(e) {
			e.preventDefault();				
			vdwFavorites.savedComparisonHandler($jq(this), $jq(this).prevAll("input[name='comparison_mode']").val(), $jq(this).prevAll("input[name='user_id']").val(), $jq(this).prevAll("input[name='listing_ids']").val(), $jq(this).prevAll("input[name='comparison_name']").val(), $jq(this).prevAll("input[name='saved_comparison_id']").val());
		});
		$jq('#btn-save-search').click(function(e) {
			e.preventDefault();
			vdwFavorites.savedSearchHandler($jq(this), $jq(this).prevAll("input[name='save_search_mode']").val(), $jq(this).prevAll("input[name='user_id']").val(), $jq(this).prevAll("input[name='search_string']").val(), $jq(this).prevAll("input[name='search_name']").val());
		});
	},
	savedComparisonHandler : function($trigger, mode, user_id, listing_ids, comparison_name, saved_comparison_id) {
		switch (mode) {
			case 'get_name':
				vdwFavorites.getSavedComparisonName($trigger, user_id, listing_ids);
			break;
			case 'add':
			case 'remove':
				vdwFavorites.updateSavedComparisonStatus($trigger, user_id, listing_ids, comparison_name, saved_comparison_id);
			break;
		}
	
	},
	getSavedComparisonName : function($trigger, user_id, listing_ids) {
		$jq('#ajax-confirmation').html('<form id="comparison_name_form" method="post" action="" class="vertical"><ul><li><label for="user_comparison_name">Enter a Name for the Comparison</label><input type="text" name="user_comparison_name" id="user_comparison_name" /></li><li class="submit"><input type="image" name="search_name_submit" id="search_name_submit" alt="Save" src="/assets/templates/main/images/btn-save.gif" /></li></ul></form>').dialog('open');
		$jq('#comparison_name_form').submit(function(e) {
			e.preventDefault();
			if ($jq('#user_comparison_name').val() == '') {
				alert('Please enter a name for your search');
			} else {
				$jq('#ajax-confirmation').dialog('close');
				$trigger.prevAll("input[name='comparison_mode']").val('add');
				vdwFavorites.updateSavedComparisonStatus($trigger, user_id, listing_ids, $jq('#user_comparison_name').val());
			}
		});		
	},
	updateSavedComparisonStatus : function($trigger, user_id, listing_ids, comparison_name, saved_comparison_id) {
		$trigger.parent('form').append('<img class="ajax-loader" alt="Loading..." src="/assets/templates/main/images/ajax-loader.gif" />');
		data = { mode : $trigger.prevAll("input[name='comparison_mode']").val(), user_id : user_id, listing_ids : listing_ids, comparison_name : comparison_name, saved_comparison_id : saved_comparison_id };
		$jq.post('/assets/snippets/compare_properties/save_comparison_ajax.inc.php', data,
			function(response) {
				if (!response.error) {
					if (data.mode == 'add') {
						$trigger.text('Remove Comparison');							
						$trigger.prevAll("input[name='comparison_mode']").val('remove');
						$trigger.prevAll("input[name='saved_comparison_id']").val(response.saved_comparison_id);
						$jq.cookies.del('lmsre_compare_properties', { path : '/', domain : '.lmsre.com' });
					} else {
						$trigger.text('Save Comparison');	
						$trigger.prevAll("input[name='comparison_mode']").val('get_name');
					}
				}
				$jq('.ajax-loader').remove();
				$jq('#ajax-confirmation').html(response.message_html).dialog('open');
			},
			'json');
	},
	savedSearchHandler : function($trigger, mode, user_id, search_string, search_name) {
		switch (mode) {
			case 'get_name':
				vdwFavorites.getSavedSearchName($trigger, user_id, search_string);
			break;
			case 'add':
			case 'remove':
				vdwFavorites.updateSavedSearchStatus($trigger, user_id, search_string, search_name);
			break;
		}
	
	},
	getSavedSearchName : function($trigger, user_id, search_string) {
		$jq('#ajax-confirmation').html('<form id="search_name_form" method="post" action="" class="vertical"><ul><li><label for="user_search_name">Enter a Name for the Search</label><input type="text" name="user_search_name" id="user_search_name" /></li><li class="submit"><input type="image" name="search_name_submit" id="search_name_submit" alt="Save" src="/assets/templates/main/images/btn-save.gif" /></li></ul></form>').dialog('open');
		$jq('#search_name_form').submit(function(e) {
			e.preventDefault();
			if ($jq('#user_search_name').val() == '') {
				alert('Please enter a name for your search');
			} else {
				$jq('#ajax-confirmation').dialog('close');
				$trigger.prevAll("input[name='save_search_mode']").val('add');
				vdwFavorites.updateSavedSearchStatus($trigger, user_id, search_string, $jq('#user_search_name').val());
			}
		});		
	},
	updateSavedSearchStatus : function($trigger, user_id, search_string, search_name) {
		$trigger.parent('form').append('<img class="ajax-loader" alt="Loading..." src="/assets/templates/main/images/ajax-loader.gif" />');
		data = { mode : $trigger.prevAll("input[name='save_search_mode']").val(), user_id : user_id, search_string : search_string, search_name : search_name };
		$jq.post('/assets/snippets/saved_searches/saved_searches_ajax.inc.php', data,
			function(response) {
				if (!response.error) {
					if (data.mode == 'add') {
						$trigger.text('Remove from Saved Searches');							
						$trigger.prevAll("input[name='save_search_mode']").val('remove');
					} else {
						$trigger.text('Save Search');				
						$trigger.prevAll("input[name='save_search_mode']").val('get_name');						
					}
				}
				$jq('.ajax-loader').remove();
				$jq('#ajax-confirmation').html(response.message_html).dialog('open');
			},
			'json');
	},
	updateFavoriteStatus : function($trigger, user_id, property_id) {
		$trigger.parents('li').append('<img class="ajax-loader" alt="Loading..." src="/assets/templates/main/images/ajax-loader.gif" />');
		data = { mode : $trigger.prevAll("input[name='favorite_mode']").val(), user_id : user_id, property_id : property_id };
		$jq.post('/assets/snippets/favorite_properties/favorite_properties_ajax.inc.php', data,
			function(response) {
				if (!response.error) {
					if (data.mode == 'add') {
						$trigger.text('Remove from Favorites');
						$trigger.prevAll("input[name='favorite_mode']").val('remove');
					} else {
						$trigger.text('Add to Favorites');
						$trigger.prevAll("input[name='favorite_mode']").val('add');						
					}
				}
				$jq('.ajax-loader').remove();
				$jq('#ajax-confirmation').html(response.message_html).dialog('open');
			},
			'json');
	},
	updateCompareStatus : function($trigger, mode, property_id) {
		switch (mode) {
			case 'add':
				var old_cookie_val = $jq.cookies.get('lmsre_compare_properties');
				// If the cookie is empty, add the property to it
				if ((old_cookie_val == null) || (old_cookie_val == undefined) || (old_cookie_val == 'undefined') || (old_cookie_val == '')) {
					var new_cookie_val =  property_id;
					$jq.cookies.set('lmsre_compare_properties', new_cookie_val, { path : '/', domain : '.lmsre.com' });
				// Otherwise, check that the property type limit is not exceeded
				} else {	
					var old_cookie_val = $jq.cookies.get('lmsre_compare_properties');
					function comparePropertyTypeLimitHandle($trigger, response) {
						if (!response.error) {
							var new_cookie_val =  response.listing_ids + ',' + response.property_id;
							$jq.cookies.set('lmsre_compare_properties', new_cookie_val, { path : '/', domain : '.lmsre.com' });
						} else {
							$jq('#ajax-confirmation').html(response.message_html).dialog('open');
							$trigger.attr('checked','');
						}
					}
					$jq.ajax({
						type: 'POST',
						url: '/assets/snippets/compare_properties/validate_property_type_limit_ajax.inc.php',
						data: { listing_ids : old_cookie_val, property_id : property_id },
						dataType: 'json',
						async: false,
						success: function(response) {
							comparePropertyTypeLimitHandle($trigger, response);
						}
					});
				}
			break;
			case 'remove':
				var old_cookie_val = $jq.cookies.get('lmsre_compare_properties');
				var old_property_ids = old_cookie_val.split(',');
				var new_property_ids = new Array();
				for (var i = 0; i < old_property_ids.length; i++) {
					if (old_property_ids[i] != property_id) {
						new_property_ids.push(old_property_ids[i]);
					}
				}
				$jq.cookies.set('lmsre_compare_properties', new_property_ids.join(','), { path : '/', domain : '.lmsre.com' });
			break;
		}
	},
	clearCompared : function() {
		$jq.cookies.del('lmsre_compare_properties', { path : '/', domain : '.lmsre.com' });
		$jq("input[name='compare_property']").attr('checked','');
		$jq('#ajax-confirmation').html('<p>All your compared properties have been removed.</p>');
	}
}

$jq(document).ready(vdwFavorites.init);