/****  MENU ******/
var under_menu_box = new Class({
	Implements: [Chain, Options],
	/* standart egenskap */
	options: {		
		frame_id						: 'under-meny-frame',				
		box_per_row						: 6,
		top_offset						: 0,
		box_visible						: false,
		box_hide_delay					: -1
	},
	frame_DOM						: null,
	frame_top_arrow_DOM				: null,
	frame_content_DOM				: null,
	current_meny_ind 				: -1,
	left_menu_DOM					: null,
	left_menu_pos					: null,
	left_menu_size					: null,
	h_limits_pos					:{'x'	: 0},
	h_limits_size					:{'x'	: '960'},
	/* -- constructor -- */
	initialize: function($options){
		this.setOptions($options);		
		for (var i = 0; i < this.options.menu_list.length; i ++){
			// 'elem_id'=> 'search_field', 'under_box_id'=>'search_under_box', 'event'=>'blur'
			if (this.options.menu_list[i].sub_menu_count == 0) continue;
			this.options.menu_list[i].elem_DOM = $('main-menu-'+this.options.menu_list[i].id);
			this.options.menu_list[i].elem_DOM_a = $$('#main-menu-'+this.options.menu_list[i].id+' a.a_top_menu');			
			this.options.menu_list[i].under_box_DOM = $('sub-menu-'+this.options.menu_list[i].id);
			this.options.menu_list[i].elem_DOM.addEvent('mouseenter', this.show_box_for.bind(this, [i]));			
			this.options.menu_list[i].elem_DOM.addEvent('mouseleave', this.set_delay_hide_box_for.bind(this, [i]));
			this.options.menu_list[i].sub_elemts = this.options.menu_list[i].under_box_DOM.getElements('.sub-item-cont');
			//this.options.menu_list[i].sub_menu_count = 
						
						
			
			/*this.options.box_ids[i].under_box_DOM.setStyles({'display': 'block', 'visibility':'hidden'});			
			this.options.box_ids[i].under_box_size = this.options.box_ids[i].under_box_DOM.getSize();
			this.options.box_ids[i].under_box_DOM.setStyles({'width':this.options.box_ids[i].under_box_size.x, 'height':this.options.box_ids[i].under_box_size.y});
			this.options.box_ids[i].under_box_DOM.setStyles({'display': 'none', 'visibility':'visible'});
			this.options.box_ids[i].position_limits = true;
			if (this.options.box_ids[i].Show) {
				this.options.box_ids[i].elem_DOM.addEvent(this.options.box_ids[i].Show, this.show_box_for.bind(this, [i]));
				this.options.box_ids[i].position_limits = false;
				this.options.box_ids[i].elem_DOM.addEvent('mouseover', this.reset_delay_2.bind(this, [i]));
			}
			else{
				this.options.box_ids[i].elem_DOM.addEvent('mouseover', this.show_box_for.bind(this, [i]));
			}
			if (this.options.box_ids[i].Hide) {
				this.options.box_ids[i].elem_DOM.addEvent(this.options.box_ids[i].Hide, this.set_delay_hide_box_for.bind(this, [i]));
			} else this.options.box_ids[i].elem_DOM.addEvent('mouseout', this.set_delay_hide_box_for.bind(this, [i]));*/
		}
		this.frame_DOM = $(this.options.frame_id);
		//$(document.body).grab(this.frame_DOM);
		//this.frame_content_DOM = $(this.options.frame_contetnt_id);
		//this.frame_top_arrow_DOM = this.frame_DOM.getElement('#under-meny-pil');
		this.options.top_offset = $('top-menu-box').getPosition().y + $('top-menu-box').getSize().y + this.options.top_offset;		
		this.top_menu_cont_dom = $('top-menu-box');
		this.top_menu_cont_pos = this.top_menu_cont_dom.getPosition();
		this.frame_DOM.addEvent('mouseenter', this.reset_delay.bind(this));
		/*this.frame_DOM.addEvent('mousemove', this.reset_delay.bind(this));
		this.frame_DOM.addEvent('click', this.reset_delay.bind(this));*/
		this.frame_DOM.addEvent('mouseleave', this.set_delay_hide_box_for.bind(this));
		/*try{
			this.left_menu_DOM = $(this.options.limit_DOM_id);
			this.h_limits_pos = this.left_menu_DOM.getPosition();
			this.h_limits_size = this.left_menu_DOM.getSize();
		}
		catch(e){
		}*/
	},
	clear_container: function(){
		if (this.current_meny_ind != -1){
			this.options.menu_list[this.current_meny_ind].elem_DOM_a.removeClass('a_top_menu_active');
			for (var $i = 0; $i < this.options.menu_list[this.current_meny_ind].sub_menu_count; $i ++){
				/*if ($i % this.options.box_per_row == 0) _$tmp_container = $('sub-menu-row-'+($i % this.options.box_per_row));*/			
				this.options.menu_list[this.current_meny_ind].sub_elemts[$i].inject(this.options.menu_list[this.current_meny_ind].under_box_DOM);
			}
		}
	},

	show_box_for: function(ind){
		
		this.reset_delay(ind);
		this.clear_container();		
		this.current_meny_ind = ind;
		var target_elem = this.options.menu_list[ind].elem_DOM;
		this.options.menu_list[ind].elem_DOM_a.addClass('a_top_menu_active');
		var target_pos = target_elem.getPosition();
		var target_size = target_elem.getSize();
		var content_elem = this.options.menu_list[ind].under_box_DOM;
		var content_size = this.frame_DOM.getSize();
		//console.log(this.top_menu_cont_pos.x);
		this.top_menu_cont_pos = this.top_menu_cont_dom.getPosition();
		var box_pos = {
			x:this.top_menu_cont_pos.x + 11, //- (content_size.x / 2) + (target_size.x / 2) - 21,
			y:this.options.top_offset
		};
		/*console.log(this.options.top_offset);*/
		var arrow_pos = {
			x:((content_size.x / 2) + 17) + 'px',
			y:'top'
		};
		var box_size = {
			x: content_size.x,
			y: content_size.y
		};
		var org_box_pos = {
			x: box_pos.x,
			y: box_pos.y
		};

		/*if (this.h_limits_pos.x > box_pos.x && this.h_limits_size.x  > box_size.x){
			box_pos.x = parseInt(this.h_limits_pos.x) + 5;
			//console.log((parseInt(org_box_pos.x) - parseInt(box_pos.x)));
		}*/
		// too mutch to the right
/*		if (this.h_limits_pos.x + this.h_limits_size.x < box_pos.x + box_size.x && this.h_limits_size.x  > box_size.x){
			box_pos.x = parseInt(this.h_limits_pos.x) + parseInt(this.h_limits_size.x) - parseInt(box_size.x);
		} */
		// too wide anyway
		/*if (box_size.x > this.h_limits_size.x){
			var sizeDx = (box_size.x - this.h_limits_size.x) / 2;
			box_pos.x = parseInt(this.h_limits_pos.x) - sizeDx;
		}  */

		//var child = this.frame_content_DOM.getFirst();
		if (this.frame_DOM) {
			$(document.body).grab(this.frame_DOM);
			this.frame_DOM.setStyle('display', 'none');
		}
		//console.log(arrow_pos.x);
		if (parseInt(org_box_pos.x) - parseInt(box_pos.x) != 0) arrow_pos.x = parseInt(arrow_pos.x) + (parseInt(org_box_pos.x) - parseInt(box_pos.x)) + 'px';
		//this.frame_top_arrow_DOM.setStyle('background-position', arrow_pos.x+' '+arrow_pos.y);
		var _$tmp_container = $('sub-menu-row-0');		
		var $_tmp_box_i = 0;
		for (var $i = 0; $i < this.options.menu_list[ind].sub_menu_count; $i ++){
			//console.log($i % this.options.box_per_row, $i);
			if ($i % this.options.box_per_row == 0) _$tmp_container = $('sub-menu-row-'+$_tmp_box_i++);										
			this.options.menu_list[ind].sub_elemts[$i].inject(_$tmp_container);
		}
		if (this.options.box_visible == false){
			this.frame_DOM.setStyles({
				'display'	: 'block'});			
			/*,
				'width'		: box_size.x+'px',
				'height'	: box_size.y+'px'*/
			this.frame_DOM.setPosition({'x':box_pos.x, 'y':box_pos.y});
		}
		
		/*if (this.options.box_visible){
			this.frame_DOM.set('tween', {'duration':'short'});
			this.frame_DOM.tween('left',box_pos.x);
			this.frame_content_DOM.set('morph', {
				transition: 'quint:out',
				onComplete : function($content){
					$content.setStyles({'display':'block'});
					this.frame_content_DOM.set('html', '');
					this.frame_content_DOM.grab($content);
				}.bind(this, [content_elem])
			});
			this.frame_content_DOM.morph({
				'width':box_size.x+'px',
				'height':box_size.y+'px'
			});
			//this.frame_DOM.setPosition({'x':target_pos.x - (content_size.x / 2) + (target_size.x / 2), 'y':this.options.top_offset});
		} else {
			content_elem.setStyle('display', 'block');
			this.frame_content_DOM.adopt(content_elem);
			///this.frame_content_DOM.setStyles({'width':content_size.x, 'height':content_size.y});
			this.frame_content_DOM.setStyles({'width':box_size.x, 'height':box_size.y});
			//this.frame_DOM.setPosition({'x':target_pos.x - (content_size.x / 2) + (target_size.x / 2) - 21, 'y':this.options.top_offset});
			this.frame_DOM.setPosition({'x':box_pos.x, 'y':box_pos.y});
			this.frame_DOM.setStyle('display','inline');
			this.options.box_visible = true;
		} */
	},
	set_delay_hide_box_for: function(ind){
		//return;
		this.options.box_hide_delay = this.hide_box_for.delay(450, this);
	},
	hide_box_for: function(){
		//return;
		this.clear_container();
		this.frame_DOM.setStyle('display', 'none');
		/*var child = this.frame_content_DOM.getFirst();
		if (child) {
			child.setStyle('display', 'none');
			$(document.body).grab(child);
		}*/
		this.options.box_hide_delay = -1;
		this.options.box_visible = false;		
		this.options.menu_list[this.current_meny_ind].elem_DOM_a.removeClass('a_top_menu_active');
		this.current_meny_ind = -1;
	},
	reset_delay: function(ind){
		$clear(this.options.box_hide_delay);
		//$clear(this.options.box_content_delay);
		this.options.box_hide_delay = -1;
	}
	/*reset_delay_2 : function(ind){
		if (this.current_meny_ind != ind) return;
		$clear(this.options.box_hide_delay);
		this.options.box_hide_delay = -1;
	} */
});
