/*
---
description: This provides a simple Drop Down menu with infinit levels

license: MIT-style

authors:
- Arian Stolwijk

requires:
  core/1.2.4: [Class.Extras,Element.Style,Element.Event]

provides: [MooDropMenu,Element.MooDropMenu]

...
*/

var MooDropMenu = new Class({
	Implements: [Options,Events],
	options: {
		onOpen: function(el){
			el.set('opacity',1);
		},
		onClose: function(el){
			el.set('opacity',0);
		},
		onInitialize: function(el){
			el.set('opacity',0);
		},
		mouseoutDelay: 100,
		mouseoverDelay: 0
	},

	initialize: function(menu, options, level){
		this.setOptions(options);

		if ($type(level) == 'number') {
			this.menu = document.id(menu); //attach menu to object
			this.fireEvent('initialize',menu);

			// hook up menu's parent with event to trigger menu
			this.menu.pel.addEvents({

				'mouseover': function(){
					// Set the DropDownOpen status to true
					this.menu.pel.mel.store('DropDownOpen',true);

					// Clear the timer of the delay
					$clear(this.timer);
					// Fire the event to open the menu
					this.timer = (function(){
						this.fireEvent('open',this.menu.pel.mel);
					}).delay(this.options.mouseoverDelay,this);

				}.bind(this),

				'mouseout': function(){
					// Set the DropDownOpen status to false
					this.menu.pel.mel.store('DropDownOpen',false);

					// Clear the timer of the delay
					$clear(this.timer);
					// Build a delay before the onClose event get fired
					this.timer = (function(){
						if(!this.menu.pel.mel.retrieve('DropDownOpen')){
							this.fireEvent('close',this.menu.pel.mel);
						}
					}).delay(this.options.mouseoutDelay,this);

				}.bind(this)
			});
		}
		else {
			level = 0;
			this.menu = document.id(menu);
		}

		// grab all of the menus children - LI's in this case
		// loop through children
		this.menu.getChildren('li').each(function(item, index){
			var list = item.getFirst('ul'); // Should be an A tag
			// if there is a sub menu UL
			if ($type(list) == 'element') {
				item.mel = list; // pel = parent element
				list.pel = item; // mel = menu element
				new MooDropMenu(list, options, level + 1); // hook up the subMenu
			}
		});
	},

	toElement: function(){
		return this.menu
	}

});

/* So you can do like this $('nav').MooDropMenu(); or even $('nav').MooDropMenu().setStyle('border',1); */
Element.implement({
	MooDropMenu: function (options){
		this.store('MooDropMenu',new MooDropMenu(this,options));
		return this;
	}
});

// shadowbox eventhandler für bildergalerien
function sbOpen(el){
	if (el.player == 'img') {
		var cssnode = document.createElement('link');
		cssnode.setAttribute('rel','stylesheet');
		cssnode.setAttribute('type','text/css');
		cssnode.setAttribute('href','/css/sbgal.css');
		document.getElementsByTagName('head')[0].appendChild(cssnode);
		var picTitel = document.createElement('div')
		picTitel.setAttribute('id','pllGalPicTitel');
		picTitel.innerHTML = '<p>&nbsp;</p>';
		document.getElementById('sb-info-inner').appendChild(picTitel);
		if(Shadowbox.isIE){
			document.getElementById('sb-nav-pause').style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src='/js/shadowbox/pause_b.png',sizingMethod=scale);"
			document.getElementById('sb-nav-play').style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src='/js/shadowbox/play_b.png',sizingMethod=scale);"
			document.getElementById('sb-nav-close').style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src='/js/shadowbox/close_b.png',sizingMethod=scale);"
			document.getElementById('sb-nav-next').style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src='/js/shadowbox/next_b.png',sizingMethod=scale);"
			document.getElementById('sb-nav-previous').style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src='/js/shadowbox/previous_b.png',sizingMethod=scale);"
		}
	}
}
function sbFinish(el){
	if (el.player == 'img') {
		var picinfo = (el.options.split(':'))[1];
		picinfo = picinfo.substring(0,picinfo.length-1);
		document.getElementById('pllGalPicTitel').innerHTML = '<p>'+picinfo+'</p>';
		var titelWidth = $('sb-info').getStyle('width').toInt() - 140;
		$('pllGalPicTitel').setStyle('width',titelWidth);
	}
}
function sbChange(el){
	if (el.player == 'img') {
		document.getElementById('pllGalPicTitel').innerHTML = '<p>&nbsp;</p>';
	}
}
// Typoersetzung mittels cufon
Cufon.replace('#topmenu p.main',{hover:true});

window.addEvent('domready',function(){
if($('pllMainNav')){
	$('pllMainNav').MooDropMenu({
		onOpen: function(el){
			el.fade('in');
		},
		onClose: function(el){
			el.fade('out');
		},
		onInitialize: function(el){
			el.fade('hide').set('tween',{duration:0});
		}
	});
}
});

