/**
 * @class	CarDamagePopup
 * @author	Paul Kruijt
 * @author	Jeffrey van der Veen
 */
var CarDamagePopup = new Class(
{
	/**
	 * initialize
	 * @param	button_wrapper_node_id
	 * @return	void
	 */
	initialize: function(button_wrapper_node_id)
	{
		// id's
		this.button_wrapper_node_id	= button_wrapper_node_id ? button_wrapper_node_id : null;
		this.filter_node_id			= 'page_filter';
		this.root_node_id			= 'popup';
		this.inner_node_id			= 'popup_inner';
		this.prev_page_handler_id	= 'popup_previous_page';
		this.next_page_handler_id	= 'popup_next_page';
		this.close_handler_id		= 'popup_close';
		this.save_handler_id		= 'car_damage_save';
		this.page_id				= 420;
		
		// classes
		this.loader_class			= 'loader';
		this.hide_class				= 'hide';
		this.show_class				= 'show';
		this.popup_class			= 'car_damage';
		this.item_name_class		= 'car_damage_part_item_name';
		this.item_description_class	= 'car_damage_part_item_description';
		
		// other
		this.loader_path	= '/img/popup_loader.gif';
		this.page_url		= '/html/index.php?page_id=';
	},
	
	/**
	 * start
	 * @return	void
	 */
	start: function()
	{
		if ($(this.button_wrapper_node_id) && $(this.filter_node_id) && $(this.inner_node_id) && $(this.root_node_id))
		{
			// set events
			this.setEvents();
		}
	},
	
	/**
	 * set events
	 * @return	void
	 */
	setEvents: function()
	{
		// set vars
		var _this		= this;
		var close_node	= $(this.close_handler_id);
		var save_node	= $(this.save_handler_id);
		var save_a_node	= save_node ? save_node.getElement('a') : null;
		
		// close event
		if (close_node)
		{
			close_node.removeEvents();
			close_node.addEvent('click', function()
			{
				if (confirm('Wilt u de wijzigingen opslaan?'))
				{
					_this.hide(1);
					_this.saveData();
				}
				else
				{
					_this.hide(0);
				}
			});
		}
		
		if (save_a_node)
		{
			save_a_node.removeEvents();
			save_a_node.addEvent('click', function()
			{
				_this.hide(1);
				_this.saveData();
				
				return false;
			});
		}
		
		// item events
		var button_node = $(this.button_wrapper_node_id).getElement('input[type=button]');
		
		if (button_node)
		{
			button_node.removeEvents();
			button_node.addEvents(
			{
				'click' : function()
				{
					_this.show();
					
					document.location.href = '#';
				}
			});
		}
	},
	
	/**
	 * show
	 * @param	object	handler_node
	 * @return	void
	 */
	show: function(handler_node)
	{
		var filter_node	= $(this.filter_node_id);
		var popup_node	= $(this.root_node_id);
		var inner_node	= $(this.inner_node_id);
		var inner_html	= inner_node ? inner_node.get('html').trim() : null;
		
		if (filter_node) filter_node.set('class', this.show_class);
		if (popup_node) popup_node.set('class', this.show_class+' '+this.popup_class);
		if (!inner_html) this.loadData(this.page_id);
	},
	
	/**
	 * hide
	 * @param	boolean	type
	 * @return	void
	 */
	hide: function(type)
	{
		var filter_node = $(this.filter_node_id);
		var popup_node	= $(this.root_node_id);
		var inner_node	= $(this.inner_node_id);
		
		if (filter_node) filter_node.set('class', this.hide_class);
		if (popup_node) popup_node.set('class', this.hide_class);
		
		type = type ? type : 0;
		
		if (type == 0 && inner_node)
		{
			inner_node.innerHTML = '';
		}
	},
	
	/**
	 * load data
	 * @param	integer	page_id
	 * @return	void
	 */
	loadData: function(page_id)
	{
		// set vars
		var _this		= this;
		var inner_node	= $(this.inner_node_id);
		page_id			= !page_id ? 0 : page_id.toInt();
		
		if (inner_node)
		{
			inner_node.innerHTML = '';
			
			// create loader
			var loader_wrapper_node	= new Element('div', {'class' : this.loader_class});
			var loader_node			= new Element('img', {'src' : this.loader_path});
			
			loader_node.inject(loader_wrapper_node);
			loader_wrapper_node.inject(inner_node);
			
			if (page_id > 0)
			{
				var page_url		= this.page_url;
				var arr_page_url	= page_url.split('=');
				this.page_url		= arr_page_url[0]+'=';
			}
			
			this.page_url = page_id > 0 ? this.page_url + page_id : this.page_url;
			
			// ajax call
			var http_request = new Request.HTML(
			{
				url		: this.page_url,
				update	: inner_node
			});
			
			http_request.get();
		}
	},
	
	/**
	 * save data
	 * @return	void
	 */
	saveData: function()
	{
		var field_node	= $('cs_field_26');
		var list_node	= $('car_damage_part_list');
		
		if (field_node && list_node)
		{
			var item_nodes = list_node.getElements('li');
			
			if (item_nodes)
			{
				var field_value = '';
				
				for (i=0; i<item_nodes.length; i++)
				{
					var item_node				= item_nodes[i];
					var item_name_node			= item_node.getElement('.'+this.item_name_class);
					var item_description_node	= item_node.getElement('.'+this.item_description_class);
					
					if (item_name_node && item_description_node)
					{
						var item_name_text			= item_name_node.get('text');
						var item_description_text	= item_description_node.get('text');
						
						field_value += '\n'+item_name_text+'\n'+item_description_text+'\n';
					}
				}
				
				field_node.set('value', field_value);
			}
		}
	}
});
