var menuImages = [
                  'assets/templates/site-template/new_img/menu-hover.gif', 
                  'assets/templates/site-template/new_img/menu-shadow-left.png',
                  'assets/templates/site-template/new_img/menu-shadow-background.png',
                  'assets/templates/site-template/new_img/menu-big-border-bottom.jpg',
                  'assets/templates/site-template/new_img/menu-marker.jpg',
                  'assets/templates/site-template/new_img/menu-vert-border.gif',
                  'assets/templates/site-template/new_img/menu-shadow-right.png',
                  'assets/templates/site-template/new_img/menu-shadow-bottom-middle.png'
                  ];
menuImages.each(function(img){
	new Asset.image(img);
});

var evilBrowserInformation = {
	isEvil : null,
	evilVersion : null
}

function checkEvilBrowser() {
	var isEvil = /msie\s(\d)/.test(navigator.userAgent.toLowerCase());
	var ieVersion = null;
	if (isEvil) {
		var ieVersion = RegExp.$1;
	}
	evilBrowserInformation.isEvil = isEvil;
	if (isEvil) {
		evilBrowserInformation.evilVersion = ieVersion;
	}
}

checkEvilBrowser();

//if (typeof(console)=='undefined')
	/*var */console = {log: function(){}};

var NaviMenu = {
	menuElement: null,
	menuLayer: null,
	menuWrapper: null,
	topNavEntries: null,
	viewedElement: null,
	hiddenDropDowns: null,
	timeout: null,
	showTimeout: null,
	prevElement: null,
	isProduct: false,
	showTimeoutVal: 100,
	hideTimeoutVal: 300,

	initialize: function() {
		this.menuElement = $('mainmenu');
		this.menuLayer = $('menu_layer');
		this.menuWrapper = $('menuWrapper');
		
		if (!this.menuElement || !this.menuLayer) {
			return false;
		}
		this.topNavEntries = this.menuElement.getElement('ul.menuItemList').getChildren('li');
		
		this.topNavEntries = this.topNavEntries.filter(function(el){
			if( !el.hasClass('menu_after') && !el.hasClass('menu_before') )
				return true;
		});
		
		//console.log(this.topNavEntries.length);
		
		this.topNavEntries.each(function(el) {
			el.addEvent('mouseover', this.menuOver.bind(this));
			el.addEvent('mouseout', this.menuOut.bind(this));
			
		}.bind(this));
		
		this.menuLayer.addEvent('mouseover', this.layerOver.bind(this));
		this.menuLayer.addEvent('mouseout', this.layerOut.bind(this));
	},
	
	calculatePosition: function(el) {
		// TODO: <iframe src="" id="overwrite" style="position:absolute;z-index:-1"></iframe>
		a = el.getPosition();
		
		var left = a.x;
		console.log('left: ' + left);
		wrap = (((document.body.clientWidth - 988) / 2) + 988) - (left + this.menuLayer.offsetWidth); //654
		console.log('wrap: ' + wrap);
		//если нужно сместить влево
		if (wrap < 0) {
			left = left + wrap + 7;
		}
		else{
			left = left - 9;
		}
	    this.menuLayer.style.left = (left) + 'px';
	    
		var maxHeight = 0;

		if(this.isProduct){
			console.log('product position');
			var submenuBoxes = this.menuWrapper.getElement('ul.products').getChildren('.submenu_box');
		    submenuBoxes.each(function(el) {
		    	//var height = el.getSize().size.y;
		    	var height = el.getSize().y;
		    	if (height > maxHeight) {
		    		maxHeight = height;
		    	}
		    });
	
	
		    submenuBoxes.each(function(el) {
				el.setStyle('height', maxHeight + 'px');
		    });
		}
	    
		var lastEntries = this.menuWrapper.getElements('.last');
		if (lastEntries.length > 0) {
			var vertContainer = this.menuWrapper.select('.vertContainer');
			if (vertContainer.length > 0) {
				var vertContainerWidth = vertContainer[0].getDimensions().width;
				lastEntries.each(function(el) {
					if (el.getDimensions().width != vertContainerWidth) {
						el.style.width = vertContainerWidth + 'px';
					}
				});
			}
		}
		this.hideDropDowns();
	},
	
	show: function(el) {
		if (this.prevElement){
			this.prevElement.getParent().getParent().removeClass('hover');
		}
		this.prevElement = el;
		
		window.clearTimeout(this.timeout);
		
		//подсвечиваем активный пункт меню
		el.getParent().getParent().addClass('hover');
		this.viewedElement = el;
		//this.menuLayer.show();
		//var Menu = this;
		this.menuLayer.setStyle('display', 'block');
	},
	
	hide: function(el) {
		console.log('hide ' + el);
		if(this.viewedElement==el){
			el.getParent().getParent().removeClass('hover');
			this.menuLayer.setStyle('display', 'none'); 
			if (this.hiddenDropDowns) {
				this.hiddenDropDowns.each(function(el) {
					el.style.visibility = 'visible';
				});
			}
			this.hiddenDropDowns = [];
		}
	},
	
	hideDropDowns: function() {
		this.hiddenDropDowns = [];
		/*if (evilBrowserInformation.isEvil && evilBrowserInformation.evilVersion < 7) {
			$('main').select('select').each(function(el,i){
				if (el.overlaps(this.menuLayer)) {
					this.hiddenDropDowns.push(el);
					el.style.visibility = 'hidden';
				}
			}.bind(this));
		}*/
	},
	
	menuOver: function(ev) {
		ev = new Event(ev);
		var el = $(ev.target); // a
		console.log('menuOver '+el);
		var parentEl = el.getParent().getParent();	// li	 

		var doc_id = parentEl.id;

		var hiddenMenu = parentEl.getElement('.hiddenMenu');
		
		if (hiddenMenu) {
			
			var Menu = this;
			this.showTimeout = window.setTimeout(function(){
				console.log('show ' + el);
				Menu.menuLayer.setStyle('left', '100px');
				Menu.menuWrapper.innerHTML = (hiddenMenu.innerHTML);

				Menu.isProduct = false;
				if(doc_id == "doc_20" || doc_id == "doc_131"){
					Menu.menuWrapper.getElement('ul').addClass("products");
					Menu.isProduct = true;
				}				
				
				
				Menu.show(el);
				Menu.calculatePosition(el);
				//if (evilBrowserInformation.isEvil && evilBrowserInformation.evilVersion == 7) this.ie7ZoomFix();
			}, this.showTimeoutVal);
			
		}
	},
	
	menuOut: function(ev) {
		ev = new Event(ev);
		console.log('menuout ' + $(ev.target))
		window.clearTimeout(this.showTimeout);
		
		var Menu = this;
		this.timeout = window.setTimeout(function(){Menu.hide($(ev.target))},this.hideTimeoutVal);
	},
	
	layerOver: function(ev) {console.log('layerOver');
		this.show(this.viewedElement);
		this.hideDropDowns();
	},
	
	layerOut: function(ev) {console.log('layerOut');
		var Menu = this;
		this.timeout = window.setTimeout(function(){Menu.hide(Menu.viewedElement)},this.hideTimeoutVal);
	},
	// fix for menu link salad in ie7 when zoom != 1 (Bug #246)
	ie7ZoomFix: function() {
		var els = this.menuWrapper.select('.listing > li > a');
		var cont;
		for (var i=0; i<els.length; i++) {
			cont = els[i].innerHTML
			els[i].innerHTML = '';
			els[i].innerHTML = cont;
		}
	}
};

/*document.observe('dom:loaded', function() {
	NaviMenu.initialize();
});*/

window.addEvent('domready', function() {
	if (evilBrowserInformation.isEvil /*&& evilBrowserInformation.evilVersion < 7*/) {
		$$(".menuItemList > li:last-child").setStyle('display', 'none');
	}
	
	NaviMenu.initialize();
});

