/**
 * @author Rob
 */
window.addEvent('domready', function() {
	var sub_navigation = [
		{
			id: 			'navigation_general',
			direction:		'down',
			width:			'content',
			stay_in_list: 	true
		},
		{
			id: 			'navigation_services',
			direction:		'down',
			width:			'content',
			stay_in_list: 	true
		},
		{
			id: 			'navigation',
			direction:		'right',
			width:			'list',
			stay_in_list: 	false
		}
	];
	sub_navigation.each( function(menu) {
		if($(menu.id)) {
			var el = $(menu.id);
			if(Browser.Engine.trident4){
				el.getElements('ul').each(function(ul){
					ul.inject(ul.getPrevious('a'), 'before');
				});
			}
			
			el.getElements('li').each( function(li) {
				li.addEvents({
					mouseenter: function() {
						li.addClass('hover');
						if(li.getElement('ul')) li.getElement('ul').addClass('show');
					},
					mouseleave: function() {
						li.removeClass('hover');
						if(li.getElement('ul')) li.getElement('ul').removeClass('show');
					}
				});
			});
			
			var submenus = el.getElements('li ul');
			if (submenus.length > 0) {
				submenus.each(function(sub){
					sub.setStyles({
						display: 'block',
						visibility: 'visible'
					});
					sub.store('width', (menu.width=='content'?sub.getSize().x.toInt():el.getSize().x.toInt()));
					sub.setStyles({
						position: 'absolute',
						width: sub.retrieve('width')
					});
					
					switch (menu.direction) {
						case 'down':
							var parent_height = el.getSize().y.toInt();
							sub.setStyles({
								top: parent_height
							});
							break;
						case 'right':
							var parent_width = el.getSize().x.toInt();
							sub.setStyles({
								left: parent_width
							});	
							break;
						case 'left':
							var parent_width = sub.getSize().x.toInt();
							sub.setStyles({
								left: 0 - parent_width
							});
							break;
					}
					if(menu.stay_in_list) {
						var list_width = el.getSize().x.toInt();
						var sub_left = sub.getCoordinates(el).left;
						var sub_end = sub_left + sub.retrieve('width');						
						
						if(sub_end > list_width) {
							var diff = sub_end - list_width;
							var current_left = sub.getCoordinates(sub.getParent()).left.toInt();
							sub.setStyles({
								left: current_left - diff
							});
						}
					}
					sub.setStyles({
						display: '',
						visibility: ''										
					});
				});
			}
		}
	});
});

