function valid_listing(listing){
  var listing_length = 3;
  var listing = trim(listing);
  if(listing && (listing!='')){
    if(listing.length <= listing_length){
	  var regex_listing = /^(li|ny)$/;
	  if(listing.search(regex_listing) == -1){
	    return 0;
      }
	}
	else
	  return 0;
  }
  else
    return 0;
  return 1;
}

function valid_ml_num(ml_num){
  var ml_num_length = 7;
  var ml_num = trim(ml_num);
  if(ml_num && (ml_num!='')){
    if(ml_num.length <= ml_num_length){
	  var regex_ml_num = /^[0-9]*$/;
	  if(ml_num.search(regex_ml_num) == -1){
	    return 0;
      }
	}
	else
	  return 0;
  }
  else
    return 0;
  return 1;
}

function upd_add_to_myfavs_icon_state(ml_num, state, on_which_layer){
  //on_which_layer=1 -> search results thumbnails
  //on_which_layer=2 -> property details layer
  //on_which_layer=3 -> google map info window
  //on_which_layer=4 -> featured properties layer
  var add_to_myfavs_icon_id = '';
  switch(on_which_layer){
	  case 1:
		add_to_myfavs_icon_id = 'atmf_icon_' + ml_num;
		break;
	  case 2:
		add_to_myfavs_icon_id = 'pdl_atmf_icon_' + ml_num;
		break;
	  case 3:
		add_to_myfavs_icon_id = 'gmiw_atmf_icon_' + ml_num;
		break;
	  case 4:
		add_to_myfavs_icon_id = 'fp_atmf_icon_' + ml_num;
		break;
  }
  var add_to_myfavs_icon = $('#' + add_to_myfavs_icon_id);
  if(add_to_myfavs_icon.length != 0){
    (state == 'on') ? add_to_myfavs_icon.attr("src", "/images/search_results/little_elephant.gif") : add_to_myfavs_icon.attr("src", "/images/search_results/little_elephant_grey.gif");
	/* update the "add to my favorites" icon on the two main layers */
	if(on_which_layer != 1){
		add_to_myfavs_icon = $('#atmf_icon_' + ml_num);
		if(add_to_myfavs_icon.length != 0){
		  (state == 'on') ? add_to_myfavs_icon.attr("src", "/images/search_results/little_elephant.gif") : add_to_myfavs_icon.attr("src", "/images/search_results/little_elephant_grey.gif");
		}
	}
	if(on_which_layer != 4){
		add_to_myfavs_icon = $('#fp_atmf_icon_' + ml_num);
		if(add_to_myfavs_icon.length != 0){
		  (state == 'on') ? add_to_myfavs_icon.attr("src", "/images/search_results/little_elephant.gif") : add_to_myfavs_icon.attr("src", "/images/search_results/little_elephant_grey.gif");
		}
	}
  }
}

function atmf_show_error_msg(ml_num, error_msg, on_which_layer){
  var atmf_error_holder_id = '';
  //on_which_layer=1 -> search results thumbnails
  //on_which_layer=2 -> property details layer
  //on_which_layer=3 -> google map info window
  //on_which_layer=4 -> featured properties layer
  var add_to_myfavs_icon_id = '';
  switch(on_which_layer){
	  case 1:
		atmf_error_holder_id = 'atmf_error_holder_' + ml_num;
		break;
	  case 2:
		atmf_error_holder_id = 'pdl_atmf_error_holder_' + ml_num;
		break;
	  case 3:
		atmf_error_holder_id = 'gmiw_atmf_error_holder_' + ml_num;
		break;
	  case 4:
		atmf_error_holder_id = 'fp_atmf_error_holder_' + ml_num;
		break;
  }
  var atmf_error_holder = $('#' + atmf_error_holder_id);
  
  if(atmf_error_holder.length != 0){
    atmf_error_holder.attr("innerHTML", error_msg);
    atmf_error_holder.show();
  }
}

function request_add_to_my_favs(user_id, listing, ml_num, on_which_layer){
  var url = '';
  url = '/templates/includes/favorites_properties_request_handler.xpnd';
  url = url + '?type=1';
  url = url + '&user_id=' + escape(user_id);
  url = url + '&listing=' + listing;
  url = url + '&ml_num=' + ml_num;
  
  $.getJSON(url, function(result){
	  if(result[0] == 1){
	    upd_add_to_myfavs_icon_state(ml_num, "on", on_which_layer);
	  }
	  else{
		atmf_show_error_msg(ml_num, result[1], on_which_layer)
	  }
  });
}

function request_fav_property_registered(user_id, listing, ml_num, on_which_layer){
  var url = '';
  url = '/templates/includes/favorites_properties_request_handler.xpnd';
  url = url + '?type=3';
  url = url + '&user_id=' + escape(user_id);
  url = url + '&listing=' + listing;
  url = url + '&ml_num=' + ml_num;
  
  if(valid_user_id(user_id)){
    if(valid_listing(listing)){
      if(valid_ml_num(ml_num)){
		  $.getJSON(url, function(result){
			  if(result[0] == 1){
			    upd_add_to_myfavs_icon_state(ml_num, "on", on_which_layer);
			  }
		  });
	  }
	}
  }
}

function mark_my_favs(user_id){
  if(valid_user_id(user_id)){
	  var url = '';
	  url = '/templates/includes/favorites_properties_request_handler.xpnd';
	  url = url + '?type=2';
	  url = url + '&user_id=' + escape(user_id);
	  
	  $.getJSON(url, function(result){
		  if(result.length > 0){
			
			var my_favs = result;
			var anID = '';
			var anID_parts ='';
			var ml_num = '';
			var on_which_layer=1;
			
			var g = $("#sr_results_left_panel img.add_to_myfavs_icon, #sr_featured_props_panel img.add_to_myfavs_icon");
			
			g.each(function() {
			  anID = $(this).attr("id"); 
			  anID_parts = anID.split('_');
			  ml_num = anID_parts[anID_parts.length - 1];
			  for (var i=0; i<my_favs.length; i++){
				  if(ml_num == my_favs[i].ml_num){
					switch(anID_parts[0]){
					  case 'atmf':
						on_which_layer = 1;
						break;
					  case 'pdl':
						on_which_layer = 2;
						break;
					  case 'gmiw':
						on_which_layer = 3;
						break;
					  case 'fp':
						on_which_layer = 4;
						break;
				    }  
					upd_add_to_myfavs_icon_state(ml_num, "on", on_which_layer);
				  }
			  }
			});
			
		  }
	  });
  }
}

function unmark_my_favs(){
	var anID = '';
	var anID_parts ='';
	var ml_num = '';
	var on_which_layer=1;
	
	var g = $("#sr_results_left_panel img.add_to_myfavs_icon, #sr_featured_props_panel img.add_to_myfavs_icon");
	
	g.each(function() {
	  anID = $(this).attr("id"); 
	  anID_parts = anID.split('_');
	  ml_num = anID_parts[anID_parts.length - 1];
	    switch(anID_parts[0]){
		  case 'atmf':
			on_which_layer = 1;
			break;
		  case 'pdl':
			on_which_layer = 2;
			break;
		  case 'gmiw':
			on_which_layer = 3;
			break;
		  case 'fp':
			on_which_layer = 4;
			break;
	   }  
	   upd_add_to_myfavs_icon_state(ml_num, "off", on_which_layer);
    });
}

function add_to_my_favs(listing, ml_num, on_which_layer){
  var user_id = get_ulrp_usrlogin_cookie_value();
  if(user_id != ''){
	  if(valid_user_id(user_id)){
		if(valid_listing(listing)){
		  if(valid_ml_num(ml_num)){
			request_add_to_my_favs(user_id, listing, ml_num, on_which_layer);
		  }
		  else
			atmf_show_error_msg(ml_num, "The ml_num is not valid.", on_which_layer);
		}
		else
		  atmf_show_error_msg(ml_num, "The listing value is not valid.", on_which_layer);
	  }
	  else
		atmf_show_error_msg(ml_num, "The user id is not valid", on_which_layer);
  }
  else{
    login_logout_usr('my_favs', "add_to_my_favs|"+listing+"|"+ml_num+"|"+on_which_layer);
  }
}

$(document).ready(function(){
  
  mark_my_favs(get_ulrp_usrlogin_cookie_value());
  
  /*var g1 = $("#sr_results_left_panel .add_to_myfavs_link_off");
  g1.each(function() {
	 $(this).hover(function(){
	      this.className = "";
	      this.className = "add_to_myfavs_link_on";
        }, function() {
          this.className = "";
	      this.className = "add_to_myfavs_link_off";										  
     });
  });*/
  
  
  var g2 = $("#sr_results_left_panel img.add_to_myfavs_error_holder");
  g2.each(function() {
	 $(this).click(function(){
	   $(this).hide();
	 });
  });
  
  var g3 = $("#sr_featured_props_panel img.add_to_myfavs_error_holder");
  g3.each(function() {
	 $(this).click(function(){
	   $(this).hide();
	 });
  });
  
});