/**
 * W_Search Class
 * @author Marco Troost
 */
var W_Search = new Class({
	
	/**
	 * initialize
	 * @param	string	root_node_id
	 * @return	void
	 */
	initialize: function(root_node_id)
	{
		// id's
		this.root_node_id			= root_node_id;
		
		this.root_node				= $(this.root_node_id);
		this.object_node			= $('selectbox_object_td');
		this.country_node			= $('selectbox_country_td');
		
		this.selected_flag 			= true;
	},
	
	/**
	 * start
	 * @return	void
	 */
	start: function()
	{		
		if (this.root_node_id)
		{			
			this.setEvents();
		}
	},
	
	/**
	 * set events
	 * @return	void
	 */
	setEvents: function()
	{
		// set var as object
		var _this	= this;
		
		// set object type events
		this.setObjectTypeEvents();
	},
	
	/**
	 * set object type events
	 * @return	void
	 */
	setObjectTypeEvents: function()
	{
		// set var as object
		var _this	= this;
		
		var field_object_node	= $('search_field_object');
		
		if (field_object_node)
		{
			// object type selector
			field_object_node.removeEvents();
			field_object_node.addEvent('change', function()			
			{
				// diasble input fields
				var field_surface_from_node	= $('search_field_surface_from');
				var field_surface_to_node	= $('search_field_surface_to');
				
				if (this.value == 0)
				{
					field_surface_from_node.addClass('disabled');
					field_surface_to_node.addClass('disabled');
					
					field_surface_from_node.disabled	= true;
					field_surface_to_node.disabled		= true;
					
					field_surface_from_node.value	= '';
					field_surface_to_node.value		= '';
				}
				else
				{
					field_surface_from_node.removeClass('disabled');
					field_surface_to_node.removeClass('disabled');
					
					field_surface_from_node.disabled	= false;
					field_surface_to_node.disabled		= false;
				}

				// always disable country selectbox
				_this.disableFieldCountry();				
				
				// always disable city input
				_this.disableFieldCity();
				
				// always disable radius input
				_this.disableFieldRadius();
				
				// load countries based on object type
				_this.loadCountrySelectbox(this.value);			
				
				// always disable search submit
				_this.disableSubmit();
			
			});

			// search result page
			if (field_object_node.value != 0)
			{
				var field_surface_from_node	= $('search_field_surface_from');
				var field_surface_to_node	= $('search_field_surface_to');
				
				field_surface_from_node.removeClass('disabled');
				field_surface_to_node.removeClass('disabled');
				
				field_surface_from_node.disabled	= false;
				field_surface_to_node.disabled		= false;
				
				// load countries based on object type
				_this.loadCountrySelectbox(field_object_node.value);
				
			}			
		}
	},
	
	/**
	 * set country events
	 * @return	void
	 */
	setCountryEvents: function()
	{
		// set vars
		var _this				= this;
		var field_country_node	= $('search_field_country');
		
		if (field_country_node)
		{
			// country selector
			field_country_node.removeEvents();
			field_country_node.addEvent('change', function()			
			{								
				// always disable search submit
				_this.disableSubmit();				
				
				var field_object_node	= $('search_field_object');
				var object_type_id		= 0;

				// clear city value on change country
				var city_node			= $('search_field_city');
				if (city_node)
				{
					city_node.set('value', '');
				}

				// clear city value on change country
				var radius_node			= $('search_field_radius');
				if (radius_node)
				{
					radius_node.set('value', '');
				}

				_this.setCityEvents();
				
				if (field_object_node) object_type_id = field_object_node.get('value');
				if (object_type_id != 4) // don't show provinces on LSP's (lsp = 4)
				{
					var field_city_node	= $('search_field_city');					
					if (field_city_node)
					{
						field_city_node.disabled	= false;
						field_city_node.set('class', '');
					}
				}

				if (field_country_node.value == 0)
				{
					// always disable search submit
					_this.disableSubmit();
					_this.disableFieldCity();
					_this.disableFieldRadius();
				}

				
				if (field_country_node.value != 0 && object_type_id == 4)
				{
					var submit_node	= $('search_submit');
					if (submit_node)
					{
						submit_node.disabled	= false;
						submit_node.set('class', '');
					}
				}
				
				if (field_country_node.value != 0 && object_type_id == 1)
				{
					_this.disableSubmit();
				}				
			});
			
			// search result page
			if (field_country_node.value != 0)
			{	
				var field_object_node	= $('search_field_object');
				var object_type_id		= 0;
				if (field_object_node) object_type_id = field_object_node.get('value');
				
				var field_city_node	= $('search_field_city');					
				if (field_city_node)
				{
					field_city_node.disabled	= false;
					field_city_node.set('class', '');
				}
				
				_this.setCityEvents();			
				
				var submit_node	= $('search_submit');
				if (submit_node)
				{
					submit_node.disabled	= false;
					submit_node.set('class', '');
				}
			}		
		}
	},
	
	/**
	 * set city events
	 * @return	void
	 */
	setCityEvents: function()
	{
		var _this			= this;
		var field_city_node	= $('search_field_city');		

		if (field_city_node)
		{
			// Reload Search result page
			var field_radius_node	= $('search_field_radius');
			if (field_city_node.get('value') != '')
			{
				field_radius_node.disabled	= false;
				field_radius_node.set('class', '');
			}
			
			// Onchange city selectbox
			field_city_node.addEvent('change', function()			
			{
				if (field_city_node.get('value') != '')
				{
					field_radius_node.disabled	= false;
					field_radius_node.set('class', '');
				}
				else 
				{
					_this.disableFieldRadius();
				}
			});				
		}	
	},	
	
		
	/**
	 * load country selectbox
	 * @return	void
	 */
	loadCountrySelectbox: function(object_type_id)
	{
		// set vars
		var _this			= this;
		var selectbox_url	= '/http/selectbox_country.php?object_type_id='+object_type_id;
		
		// make request
		var http_request = new Request.HTML(
		{
			url			: selectbox_url,
			update		: this.country_node,
			onComplete	: function()
			{
				// set country events
				_this.setCountryEvents();
			}
		});
		http_request.get();
	},

	
	/**
	 * disable country field
	 * @return	void
	 */
	disableFieldCountry: function()
	{
		var field_country_node	= $('search_field_country');
		
		if (field_country_node)
		{
			field_country_node.disabled			= true;
			field_country_node.selectedIndex	= 0;
			field_country_node.set('class', 'disabled');
		}
	},
	
	/**
	 * disable radius field
	 * @return	void
	 */
	disableFieldRadius: function()
	{
		var field_radius_node	= $('search_field_radius');
		
		if (field_radius_node)
		{
			field_radius_node.disabled			= true;
			field_radius_node.selectedIndex		= 0;
			field_radius_node.set('class', 'disabled');
		}
	},	
	
	
	/**
	 * disable city field
	 * @return	void
	 */
	disableFieldCity: function()
	{
		var field_city_node	= $('search_field_city');
		
		if (field_city_node)
		{
			field_city_node.value		= '';
			field_city_node.disabled	= true;
			field_city_node.set('class', 'disabled');
		}
	},
	

	/**
	 * disable search field
	 * @return	void
	 */
	disableSubmit: function()
	{
		var submit_node	= $('search_submit');
		
		if (submit_node)
		{
			submit_node.disabled		= true;
			submit_node.selectedIndex	= 0;
			submit_node.set('class', 'disabled');
		}
	}
	
});
