var SearchSlider = Class.create();

SearchSlider.prototype = Object.extend(new Search(), 
{
	setDefaults: function(defaults) 
	{
      this.defaults = {
		  	min_price: 0,
			max_price: 5025000,
			bedrooms: 0,
			bathrooms: 0,
			garage: 0,
			min_year: 1,
			max_year: 2007,
			home_type: null,
			max_sq_feet: 10200,
			min_sq_feet: 0,
			acreage: 0,
			list_date: null,
			listing_agent: null
      }
      Object.extend(this.defaults, defaults || {});
   },
	createQuery:function()
	{
		var min_price = $('price-bottom').value;
		var max_price = $('price-top').value;		
		var bedrooms = $('bed').value;
		var bathrooms = $('bath').value;
		var garage = $('garage').value;
		var min_year = $('year-bottom').value;
		if (min_year == 1890)
			min_year = 1;
		var max_year = $('year-top').value;
		if (max_year == 1890)
			max_year = 1;
		//var home_type = $('home_type').options[$('home_type').selectedIndex].value;
		var max_sq_feet = $('sqft-top').value;
		var min_sq_feet = $('sqft-bottom').value;
		var acreage = $('lot-size').value;
	
		//create homeQuery
		var search_query = "home.price >= " + min_price;
				
		if(max_price < this.defaults.max_price && max_price > 0)
		{
			search_query += " AND home.price <= " + max_price;
		}		
		
		if(bedrooms > 0)
		{		
			search_query += " AND home.bedrooms >= " + bedrooms;
		}
		
		if(bathrooms > 0)
		{
			search_query += " AND home.bathrooms >= " + bathrooms;
		}
		
		if(min_sq_feet > 0)
		{
			search_query += " AND home.sq_feet >= " + min_sq_feet;
		}
		
		if(max_sq_feet > 0 && max_sq_feet < this.defaults.max_sq_feet)
		{
			search_query += " AND home.sq_feet <= " + max_sq_feet;
		}
			
		if(garage > 0)
		{
			search_query += " AND home.garage_cap >= " + garage;
		}
		
		if(acreage > 0)
		{
			search_query += " AND home.acreage >= " + acreage;
		}
		
		search_query += " AND home.year >= " + min_year;
		
		if(max_year != 2000)
		{
			search_query += " AND home.year <= " + max_year;
		}
		
		var home_type = new Array();
		var radios = document.search.home_type;
		for(var i = 0; i < radios.length; i++)
		{
			var radio = radios[i];
			if(radio.checked)
			{
				home_type[home_type.length] = "'"+radio.value+"'";
			}
		}
		
		if(home_type.length > 0)
		{
			search_query += " AND home.home_type IN (" + home_type.join(',') +")"; 
		}
		
		
		var listed = document.search.listed;
		if(listed.checked == true)
		{
			search_query += " AND home.list_date >= DATE_SUB(NOW(), INTERVAL "+listed.value+" DAY)";
		}
		
		var featured = document.search.featured;
		if(featured.checked == true)
		{
			search_query += " AND home.listing_agent = 'John Armstrong'";
		}
		
		return search_query;
	},
	appendQueryValue:function(name_value, value_array)
	{
		var start = 0;
		var index = name_value.indexOf(' ', start);
		var name = name_value.substring(5, index);
		
		start = name.length+5+1;
		index = name_value.indexOf(' ', start);
		var op = name_value.substring(start, index);
		
		start += op.length + 1;
		var value = name_value.substring(start, name_value.length);
		
		if(name == 'price' || name == 'year' || name == 'sq_feet')
		{
			if(op == '>=')
			{
				name = 'min_'+name;
			}
			else
			{
				name = 'max_'+name;
			}
			
		}
		else if(name == 'garage_cap')
		{
			name = 'garage';
		}
				
		value_array[name] = value;
	},
	setSearchValues:function(query)
	{
		var values = new Array();
		Object.extend(values, this.defaults);
		if(query != null)
		{
			var parts = query.split(' AND ');
			var newValues = new Array();
			for(var i = 0;i < parts.length; i++)
			{
				this.appendQueryValue(parts[i], newValues);
			}
			
			Object.extend(values, newValues);
		}
		
		s1.setTopValue(values.max_price);
		s1.setBottomValue(values.min_price);
		s2.setTopValue(values.max_sq_feet);
		s2.setBottomValue(values.min_sq_feet);
		s3.setTopValue(values.max_year);
		s3.setBottomValue(values.min_year);
		s4.setValue(values.bedrooms);
		s5.setValue(values.bathrooms);
		s6.setValue(values.garage);
		s7.setValue(values.acreage);
		
		//util_setSelectValue($('home_type'), values.home_type);
		this.setHomeTypeValues(values.home_type);
		
		var listed = document.search.listed;
		listed.checked = (values.list_date != null);
		
		document.search.featured.checked = (values.listing_agent != null);
		
		$('home_num').value = "";
		
		this.setTablePrefix(null);
	},
	setHomeTypeValues:function(home_types)
	{
		if(home_types == null)
		{
			var radios = document.search.home_type;
			for(var i = 0; i < radios.length; i++)
			{
				var radio = radios[i];
				radio.checked = false;
			}
			return;
		}
		var hts = new Array();
		if(home_types.charAt(0) == '(')
		{
			home_types = home_types.substring(1, home_types.length-1);
			var types = home_types.split(',');
			for(var i = 0;i < types.length;i++)
			{
				var type = types[i];
				hts[i] = type.substring(1, type.length-1);
			}
			
		}
		else
		{
			hts[0] = home_types.substring(1, home_types.length-1);
		}
		
		var radios = document.search.home_type;
		for(var i = 0; i < radios.length; i++)
		{
			var radio = radios[i];
			for(var j = 0; j < hts.length; j++)
			{
				var type = hts[j];
				if(type != null && radio.value == type)
				{
					hts[j] = null;
					radio.checked = true;
					break;
				}
			}
		}
	},
	getSummaryTable:function(query)
	{
		var summary = document.createElement("table");
		summary.cellpadding=0;
		summary.cellspacing=0;
		summary.border=0;
		summary.className = 'cdgrey';
		
		var min_price = $('price-bottom').value;
		var max_price = $('price-top').value;		
		var bedrooms = $('bed').value;
		var bathrooms = $('bath').value;
		var garage = $('garage').value;
		var min_year = $('year-bottom').value;
		if (min_year == 1890)
			min_year = 1;
		var max_year = $('year-top').value;
		if (max_year == 1890)
			max_year = 1;
		var max_sq_feet = $('sqft-top').value;
		var min_sq_feet = $('sqft-bottom').value;
		var acreage = $('lot-size').value;
		
		var search_type = this.getTablePrefix();
		
		var home_type = '';
		var radios = document.search.home_type;
		for(var i = 0; i < radios.length; i++)
		{
			var radio = radios[i];
			if(radio.checked == true)
			{
				if(home_type.length > 0){ home_type += ', '; }
				
				home_type += radio.value;
			}
		}
		
		// Set min and max price in the save search pannel
		var format = new NumberFormat(min_price);
		format.setCurrency(true);        
		var price = format.toFormatted();
		if(max_price < this.defaults.max_price)
		{
			format = new NumberFormat(max_price);
			format.setCurrency(true);
			price += " - " + format.toFormatted();
		}
		else
		{
			price += ' - Any';
		}
	
		var tr = summary.insertRow(0);
		this.appendSummaryCells('Price:&nbsp;', price, tr, 3);
		
		var sq_feet = 'Any';
		if(max_sq_feet > 0 && max_sq_feet < this.defaults.max_sq_feet && min_sq_feet == 0)
		{
			sq_feet = 'Less Than '.max_sq_feet;
		}
		else if(max_sq_feet == this.defaults.max_sq_feet && min_sq_feet > 0)
		{
			sq_feet = 'More Than '.min_sq_feet;
		}
		else if(min_sq_feet > 0 && max_sq_feet > 0 && max_sq_feet < this.defaults.max_sq_feet)
		{
			sq_feet = min_sq_feet+' - '+max_sq_feet;
		}
			
		
		tr = summary.insertRow(1);
		this.appendSummaryCells('Square feet:&nbsp;', sq_feet, tr, 3);
		
		tr = summary.insertRow(2);
		this.appendSummaryCells('Bedrooms:&nbsp;', (bedrooms == '0')? 'Any':bedrooms, tr);
		this.appendSummaryCells('Baths:&nbsp;', (bathrooms == '0')? 'Any':bathrooms, tr);
		
		tr = summary.insertRow(3);
		this.appendSummaryCells('Garage Size:&nbsp;', (garage == '0')? 'Any':garage+'+ cars', tr);
		this.appendSummaryCells('Lot Size:&nbsp;', (acreage == '0')? 'Any':formatNumber(acreage/10,1,',','.','','','-','')+'+ acres', tr);
		
		tr = summary.insertRow(4);
		var year = '';
		if (min_year == 1)
		{
			if (max_year == 2000)
			{
				year = "Any";
			}
			else
			{
				year = "before "+max_year;
			}
		}
		else
		{
			year = "after "+min_year;
			if (max_year != 2000)
			{
				year += " - before "+max_year;
			}
		}
		this.appendSummaryCells('Year Built:&nbsp;', year, tr, 3);
		
		tr = summary.insertRow(5);
		this.appendSummaryCells('Home Type:&nbsp;', (home_type == '')? "Any":home_type, tr, 3);
		
		tr = summary.insertRow(6);
		this.appendSummaryCells('Search For:&nbsp;', $(search_type+'_name').value, tr, 3);
				
		return summary;
	},
	updateHomeType:function()
	{
		var i = 0;
		var type = this.getTablePrefix();
		var list = null;
		for(i = 0; i < this.home_types.length; i++)
		{
			if(this.home_types[i][0] == type)
			{
				list = this.home_types[i];
				break;
			}
		}
		
		var tbody = $('home_type_radios');
		if(list != null)
		{
			while(tbody.firstChild != null)
			{
				tbody.removeChild(tbody.firstChild);	
			}
			
			var tr = null;
			var c2 = null;
			for(i = 1; i < list.length; i++)
			{
				var option = list[i];
				if(i % 2 != 0)
				{
					tr = tbody.insertRow(tbody.rows.length);
				}
				var c1 = tr.insertCell(0);
				c1.className = 'map_form_label';
				
				var input = document.createElement("input");
				input.name = "home_type";
				input.id = "home_type";
				input.type = "checkbox";
				input.value = option.value;
				
				c1.appendChild(input);
				
				var c2 = tr.insertCell(1);
				c2.className = 'map_form_label';
				c2.style.paddingRight = "10px";
				c2.innerHTML = option.text;				
				
			}
		}
	}
});
