/* saved search functions */
var SavedSearch = Class.create();

SavedSearch.prototype = 
{
	initialize: function(defaults)
	{
		this.ajaxSaveSearch = new SimpleAjax("save_search", "/ajax/search_save.php", this.parseSaveSearchResponse.bind(this));
		this.ajaxUserNotification = new SimpleAjax("user_notification", "/ajax/search_save.php", this.parseUserNotificationInfo.bind(this));
		
		this.setDefaults(defaults);
		this.setSavedSearchValues();
	},
	setDefaults: function(defaults) 
	{
      this.defaults = {
		  search_name: '',
		  search_query: null,
		  search_type: null,
          search_city_id:-1,
          search_county_id:-1,
          search_no_geo: false
      }
	  
      Object.extend(this.defaults, defaults || {});
   },
	doSaveSearch:function()
	{
		//create homeQuery
		var queryArray = new Array();
        var county;
        var city;
		queryArray[queryArray.length]="action=save";
		queryArray[queryArray.length]="search_query="+ escape(_search.createQuery());
	
		if(_mdc.map != null)
		{
			var bounds = _mdc.map.getBounds();
			var ne_bound = bounds.getNorthEast();
			var sw_bound = bounds.getSouthWest();
			var center = _mdc.map.getCenter();
			
			queryArray[queryArray.length]= "min_lng=" + sw_bound.lng();
			queryArray[queryArray.length]= "min_lat=" + sw_bound.lat();
			queryArray[queryArray.length]= "max_lng=" + ne_bound.lng();
			queryArray[queryArray.length]= "max_lat=" + ne_bound.lat();
			queryArray[queryArray.length]= "center_lng=" + center.lng();
			queryArray[queryArray.length]= "center_lat="+center.lat();
			queryArray[queryArray.length]= "zoom=" + _mdc.map.getZoom();
		}
		else
		{
			county = getSelectedCounty();
			if(county == null)
			{
				alert("Please select a county before trying to save your search.");
				return false;
			}
		}
		
		var search_name = $('search_name');
		queryArray[queryArray.length]= "search_name=" + escape(search_name.value);
		if(search_name.value =='')
		{
			alert("Please enter the name that you will use to identify this search.");
			return(false);
		}
		
		var search_type = _search.getTablePrefix();
		queryArray[queryArray.length]="search_type="+search_type;
		
		var notification = document.save_search_form.search_notification;
		var send_email = (document.save_search_form.send_email.checked ? "y" : "n");
		var send_text = (document.save_search_form.send_text.checked ? "y" : "n");

		queryArray[queryArray.length]= "send_email=" + send_email;
		queryArray[queryArray.length]= "send_text=" + send_text;
		/*
		for (i=0;i<notification.length;i++)
		{
			if (notification[i].checked==true)
			{
				notify_choice=i;
				break;
			}
		}

		queryArray[queryArray.length]= "notify=" + notification[notify_choice].value;
		*/
		
		
		var cell_number = $('search_cell_phone');
		if (cell_number != "none" && cell_number != "")
		{
			queryArray[queryArray.length]= "cell_number=" + cell_number.value;
		}
	
		var cell_carrier = $('search_cell_carrier');
		var cell_carrier_value = cell_carrier.options[cell_carrier.selectedIndex].value;
		if (cell_carrier_value != "none" && cell_carrier_value != "")
		{
			queryArray[queryArray.length]= "cell_carrier=" + cell_carrier_value;
		}
			
		if ((cell_number == "none" || cell_carrier_value =="none" || cell_number == "" || cell_carrier_value == "") && send_text=="y")
		{
			alert("You must specify a cell number and carrier to receive text message notifications.");
			return(false);
		}

        city = getSelectedCity();
        if (city != null)
        {
            queryArray[queryArray.length]="city="+city.id;
        }
        county = getSelectedCounty();
        if (county != null)
        {
            queryArray[queryArray.length]="county="+county.id;
        }
		
		//Could be an agent saving the search for a client
		queryArray[queryArray.length]= "destination_user_id=" + $('destination_user_id').value;
	
		this.ajaxSaveSearch.sendGet(queryArray);
	},
	parseSaveSearchResponse:function(response)
	{
		var rv = response.getAttribute("rv");
		if(rv == "true" || rv == "1")
		{
			alert("The search has been added to your list of searches.");

			//bch36: should this be here for some reason?  Seems like it makes both search and result panels appear
			//$("search_panel").style.display = "block";

			$("save_search_panel").style.display = "none";	
		}
		else
		{
			alert("Error saving search: \r\n" + response.firstChild.nodeValue);
		}	
	},
	clearDefaultSearch:function()
	{
		var cmd="search_save.php?action=clear_default_search";
		var sa = new SimpleAjax("clear_def",cmd, this.parseClearDefault.bind(this));
        sa.sendGet(null);
	},
	parseClearDefault:function(data)
	{
	
	},
	updateNotify:function()
	{
		var cmd = "search_save.php?user_notify_save&cell_phone=";
		cmd += $('notify_cell_phone').value;
		cmd +="&cell_carrier="+$('search_cell_carrier').options[$('search_cell_carrier').selectedIndex].value;
		var sa = new SimpleAjax("update_notify",cmd, this.parseUpdateNotifyResponse.bind(this));
        sa.sendGet(null);
	},
	parseUpdateNotifyResponse:function(data)
	{
		var response = data.firstChild;
		var rv = response.getAttribute("rv");
		if(rv == "true" || rv == "1")
		{
			alert("Your notification information has been saved.");
		}
		else
		{
			alert("Error saving notification information: \r\n\r\n" + response.innerHTML);
		}	
	},
	OtherSaveSearchNotifyType:function(selectObj, search_id)
	{
		var cmd = "search_save.php?search_notify_save"
		cmd += "&search_id="+search_id;
		cmd += "&notify_type="+selectObj.options[selectObj.selectedIndex].value;
		var sa = new SimpleAjax("search_notify",cmd, this.parseSearchNotifyResponse.bind(this));
        sa.sendGet(null);
	},
	parseSearchNotifyResponse:function(data)
	{
		var response = data.firstChild;
		var rv = response.getAttribute("rv");
		if(rv != "true" && rv != "1")
		{
			alert("Failed to save search notification information: \r\n\r\n"+ response.innerHTML);
		}
	},
	loadDefaultSearch:function()
	{
		alert("default search");
	},
	GetUserNotificationInfo:function()
	{
		homeQuery = "action=user_notify_info";
		this.ajaxUserNotification.sendGet(new Array("action=user_notify_info"));
	},
	parseUserNotificationInfo:function(data)
	{
		var userData = data.firstChild;
		
		var logged_in = userData.getAttribute("logged_in");
		if (logged_in == 'y')
		{
			var cell_phone = userData.getAttribute("cell_phone");
			var cell_carrier = userData.getAttribute("cell_carrier");
			var email = userData.getAttribute("email");
			var carrier_list = $('search_cell_carrier');
			var defaultSearchName = userData.getAttribute("default_search_name");
			
	//        $('search_name').value=defaultSearchName;
			$('search_email_addr').innerHTML = email;
			$('search_cell_phone').value = cell_phone;
			
			for (var i=0; i<carrier_list.length; i++)
			{
				if (carrier_list.options[i].value == cell_carrier)
				{
					carrier_list.selectedIndex = i;
					break;
				}
			}
		}
		else
		{
			$('search_email_addr').innerHTML = "Not logged in";
		}
		return false;
	},
	setMatchingOption:function(selObj, val)
	{
		for (i=0; i<selObj.length; i++)
		{
			if (selObj.options[i].value == val)
			{
				selObj.selectedIndex = i;
				return;
			}
		}
	},
	setSavedSearchValues:function()
	{
		$('search_name').value = this.defaults.search_name;
		if (this.defaults.search_county_id != -1)
		{
			util_setSelectValue($('county'), this.defaults.search_county_id);
			if (this.defaults.search_city_id != -1)
			{
				var county = getSelectedCounty();
				county.setUpdateCity(this.defaults.search_city_id);
			}
			updateCitySelect();
		}
		if (this.defaults.search_type != null)    
		{
			_search.setTablePrefix(this.defaults.search_type);
			_search.updateTablePrefix();
		}
        _search.no_geo = this.defaults.search_no_geo;
        _search.setSearchValues(this.defaults.search_query)

	},
	switchToSaveSearchPanel:function()
	{
		this.GetUserNotificationInfo();
		var summary = _search.getSummaryTable();
		var search_summary = $('search_summary');
		var child = search_summary.firstChild;
		if(child != null)
		{
			search_summary.removeChild(child);
		}
		search_summary.appendChild(summary);
		
		$("search_panel").style.display = "none";
		$("save_search_panel").style.display = "block";    
	},
	switchToSearchPanel:function()
	{
		$("search_panel").style.display = "block";
		$("save_search_panel").style.display = "none";    
	},
	clearSearch:function()
	{
		document.search.search_type[0].checked = true;
		document.search.show_fsbo_agent.checked = false;
		document.search.show_fsbo_agent.disabled = true;
		document.search.only_homes.checked = false;
		document.search.only_condos.checked = false;
		document.search.show_new_listings.checked = false;
		document.search.show_new_construction.checked = false;
		
		if(_mdc.map != null)
		{
			_mdc.zoomMap(10);
			_mdc.map.panTo(new google.maps.LatLng(counties[1][1], counties[1][2]));
		}
		
		this.clearDefaultSearch();
	},
    closeSaveSearch:function()
    {
        $("save_search_panel").style.display="none";
    }
}


