/**
 * @class	CarDamage
 * @author	Jeffrey van der Veen
 */
var CarDamage = new Class(
{
	/**
	 * Constructor
	 * @param	string	root_id
	 * @return	void
	 */
	initialize: function(root_id)
	{
		// nodes
		this.root_node = root_id ? $(root_id) : $$('body');
		
		// classes
		this.part_item_remove_class			= 'car_damage_part_item_remove';
		this.part_item_name_class			= 'car_damage_part_item_name';
		this.part_item_description_class	= 'car_damage_part_item_description';
		this.over_class						= 'over';
		this.active_class					= 'active';
		this.added_class					= 'added';
	},
	
	/**
	 * start
	 * @return	void
	 */
	start: function()
	{
		this.setEvents();
	},
	
	/**
	 * set events
	 * @return	void
	 */
	setEvents: function()
	{
		var _this = this;
		
		if (this.root_node)
		{
			var car_damage_area_nodes			= this.root_node.getElements('area');
			var car_damage_left_node			= $('car_damage_left');
			var car_damage_right_node			= $('car_damage_right');
			var car_damage_left_handler_node	= $('popup_previous_page');
			var car_damage_right_handler_node	= $('popup_next_page');
			var car_damage_part_form_node		= $('car_damage_part_form');
			var car_damage_part_list_node		= $('car_damage_part_list');
			
			if (car_damage_area_nodes)
			{
				car_damage_area_nodes.addEvents(
				{
					'click'		: function()
					{
						var area_href				= this.get('href');
						var active_nodes			= _this.root_node.getElements('.'+_this.active_class);
						var img_nodes				= _this.root_node.getElements('.'+area_href);
						var part_name_node			= $('car_damage_part_name'); 
						var part_description_node	= $('car_damage_part_description'); 
						var is_active				= this.hasClass(_this.active_class) ? true : false;
						var is_added				= this.hasClass(_this.added_class) ? true : false;
						
						if (active_nodes)
						{
							active_nodes.removeClass(_this.active_class);
						}
						
						if (!is_active)
						{
							this.addClass(_this.active_class);
							img_nodes.addClass(_this.active_class);
						}
						
						if (part_name_node && part_description_node)
						{
							var part_name			= is_active && !is_added ? null : (area_href.substr(0, 1).toUpperCase()+area_href.substr(1)).replace(/_/gi, ' ');
							var part_description	= null;
							
							if (is_added && car_damage_part_list_node)
							{
								var list_node				= car_damage_part_list_node.getElement('.'+area_href);
								var item_description_node	= list_node ? list_node.getElement('.'+_this.part_item_description_class) : null;
								
								if (item_description_node)
								{
									part_description = item_description_node.get('text');
								}
							}
							
							part_name_node.set('text', part_name);
							part_description_node
								.erase('disabled')
								.set('value', part_description)
								.focus();
						}
						
						return false;
					},
					'mouseover'	: function()
					{
						var area_href	= this.get('href');
						var img_nodes	= _this.root_node.getElements('.'+area_href);
						
						if (img_nodes)
						{
							img_nodes.addClass(_this.over_class);
						}
					},
					'mouseout'	: function()
					{
						var area_href	= this.get('href');
						var img_nodes	= _this.root_node.getElements('.'+area_href);
						
						if (img_nodes)
						{
							img_nodes.removeClass(_this.over_class);
						}
					}
				});
			}
			
			if (car_damage_left_node && car_damage_right_node)
			{
				if (car_damage_left_handler_node && car_damage_right_handler_node)
				{
					car_damage_left_handler_node.addEvent('click', function()
					{
						car_damage_right_node.setStyle('display', 'none');
						car_damage_left_node.setStyle('display', 'block');
					});
					
					car_damage_right_handler_node.addEvent('click', function()
					{
						car_damage_left_node.setStyle('display', 'none');
						car_damage_right_node.setStyle('display', 'block');
					});
				}
			}
			
			if (car_damage_part_form_node && car_damage_part_list_node)
			{
				car_damage_part_form_node.addEvent('submit', function()
				{
					var name_node			= $('car_damage_part_name');
					var description_node	= $('car_damage_part_description');
					
					if (name_node && description_node)
					{
						var name_value			= name_node.get('text');
						var description_value	= description_node.get('value');
						
						if (name_value)
						{
							if (description_value)
							{
								var active_nodes			= _this.root_node.getElements('.'+_this.active_class);
								var item_class				= name_value.toLowerCase().replace(/ /gi, '_');
								var item_node				= car_damage_part_list_node.getElement('.'+item_class);
								var item_description_node	= item_node ? item_node.getElement('.'+_this.part_item_description_class) : null;
								
								if (!item_description_node)
								{
									item_node				= new Element('li', {'class': item_class});
									item_remove_node		= new Element('a', {'href': '#', 'class': _this.part_item_remove_class});
									item_name_node			= new Element('a', {'href': '#', 'class': _this.part_item_name_class, 'text': name_value});
									item_description_node	= new Element('span', {'class': _this.part_item_description_class});
									
									item_remove_node.inject(item_node);
									item_name_node.inject(item_node);
									item_description_node.inject(item_node);
									item_node.inject(car_damage_part_list_node);
									
									item_remove_node.addEvent('click', function()
									{
										var parent_li_node = this.getParent('li');
										
										if (parent_li_node)
										{
											var parent_li_class	= parent_li_node.get('class');
											parent_li_class		= parent_li_class ? parent_li_class.split(' ') : null;
											parent_li_class		= parent_li_class ? parent_li_class[0] : null;
											var part_nodes		= parent_li_class ? _this.root_node.getElements('.'+parent_li_class) : null;
											
											if (part_nodes)
											{
												part_nodes.removeClass(_this.added_class);
											}
											
											parent_li_node.dispose();
										}
										
										return false;
									});
									
									item_name_node.addEvent('click', function()
									{
										var parent_li_node	= this.getParent('li');
										var item_name		= this.get('text');
										
										name_node.set('text', item_name);
										
										if (parent_li_node)
										{
											var item_description_node = parent_li_node.getElement('.'+_this.part_item_description_class);
											
											if (item_description_node)
											{
												var item_description = item_description_node.get('text');
												
												description_node.set('value', item_description);
											}
										}
										
										return false;
									});
								}
								
								item_description_node.set('text', description_value);
								
								if (active_nodes)
								{
									active_nodes.addClass(_this.added_class);
								}
							}
							else
							{
								alert('U dient een omschrijving in te vullen.');
							}
						}
					}
					
					return false;
				});
			}
		}
	}
});
