/**
 * class	SILO_PageGrid
 * author	Paul Kruijt
 */
var SILO_PageGrid = new Class({
	
	/**
	 * initialize
	 * @return	void
	 */
	initialize: function()
	{
		// nodes
		this.document_node					= document.getElement('body');
		this.grid_node						= $('content_column_grid');
		this.hidden_page_filtering_node		= $('hidden_page_filtering');
		this.hidden_page_properties_node	= $('hidden_page_properties');
		
		// id's
		this.page_filtering_id			= 'page_filtering';
		this.page_properties_popup_id	= 'page_properties_popup';
		
		// classes
		this.grid_item_class	= 'grid_box';
		
		// settings
		this.total_grid_items	= 60;
		this.grid_items_per_row	= 4;
		this.grid_item_height	= 200;
		this.grid_item_width	= 200;
		this.grid_item_gap		= 14;
	},
	
	/**
	 * start
	 * @return	void
	 */
	start: function()
	{
		if (this.grid_node)
		{
			// create grid items
			this.createGridItems();
			
			// create page filtering
			this.createPageFiltering();
			
			// create page properties popup
			this.createPagePropertiesPopup();
		}
	},
	
	/**
	 * create grid items
	 * @return	void
	 */
	createGridItems: function()
	{
		for (var i=1; i<=this.total_grid_items; i++)
		{
			this.createGridItem(i);
		}
	},
	
	/**
	 * create grid item
	 * @param	integer	item_nr
	 * @return	void
	 */
	createGridItem: function(item_nr)
	{
		// set vars
		var _this = this;
		
		if (item_nr > 0)
		{
			// set position
			var row_nr		= Math.ceil(item_nr / this.grid_items_per_row) - 1;
			var pos_top		= ((row_nr) * (this.grid_item_height + this.grid_item_gap));
			item_nr			= item_nr - (row_nr * this.grid_items_per_row);
			var pos_left	= ((item_nr - 1) * (this.grid_item_width + this.grid_item_gap));
			
			var grid_item_node = new Element('div', 
			{
				'id'		: 'box_'+(row_nr + 1)+'_'+item_nr,
				'class' 	: this.grid_item_class,
				'styles'	: 
				{
					'height'	: this.grid_item_height+'px',
					'left'		: pos_left+'px',
					'top'		: pos_top+'px',
					'width'		: this.grid_item_width+'px'
				},
				'events'	: 
				{
					'click'	: function()
					{
						// get row number and item number
						var item_id			= this.get('id');
						var arr_item_id		= item_id.split('box_');
						var arr_properties	= arr_item_id[1].split('_');
						var row_nr			= arr_properties[0];
						var item_nr			= arr_properties[1];
						
						if (row_nr > 0 && item_nr > 0)
						{
							var str_param_category_id = SILO_category_id > 0 ? '&category_id='+SILO_category_id : '';
							
							// go to location
							document.location = '/html/index.php?page_id='+SILO_page_id + str_param_category_id + '&row_nr='+row_nr+'&item_nr='+item_nr;
						}
					}
				}
				
			});
			
			grid_item_node.inject(this.grid_node);
		}
	},
	
	/**
	 * create page filtering
	 * @return	void
	 */
	createPageFiltering: function()
	{
		if (this.hidden_page_filtering_node)
		{
			// get html of hidden wrapper
			var page_filtering_html = this.hidden_page_filtering_node.get('html');
			
			// create wrapper node and set html
			var filtering_node = new Element('div', 
			{
				'id'	: this.page_filtering_id,
				'html'	: page_filtering_html
			});
			
			filtering_node.inject(this.document_node);
		}
	},
	
	/**
	 * create properties popup
	 * @return	void
	 */
	createPagePropertiesPopup: function()
	{
		if (this.hidden_page_properties_node)
		{
			// get html of hidden wrapper
			var page_properties_html = this.hidden_page_properties_node.get('html');
			
			// create wrapper node and set html
			var properties_popup_node = new Element('div', 
			{
				'id'	: this.page_properties_popup_id,
				'html'	: page_properties_html
			});
			
			properties_popup_node.inject(this.document_node);
		}
	}
});
