var NiederthannerMenu = Class.create({
elements: null,
disabledFx: false,
menufxan: false,
sele: false,
slidefx: null,
contentsichtbar: null,
fadeset: null,
outtimer: null,
positionsmerker: {},
klickblockiert: false,
fxblockiert: false,

options:
{
	shadowstart: true,
	startMark: 0
},

initialize: function(elements, options)
{
    this.elements = elements;
	Object.extend(this.options, options);
	
	mm = this.initshadow.bind(this);
	Event.observe(document, "dom:loaded", mm);
	
},
initshadow: function()
{
	if(this.options.shadowstart == false)
	{
		this.disabledFx = true;
		return;
	}
	
	mm = this;
	
	var zcount=100;
	
	this.elements.each(function(obj)
								{
									if(Object.keys(obj).indexOf("mark") != -1)
							   		{
										var posi = $(obj.main).positionedOffset();
										mm.positionsmerker[obj.main] = posi[0];
										$(obj.main).setStyle({zIndex: zcount});
										zcount++;
									}
								});
	
	
	this.elements.each(function(obj)
						   {
							   if(Object.keys(obj).indexOf("shadow") != -1)
							   {
								   Effect.Fade(obj.shadow, { duration: 1, from:0, to: 0.5, beforeStart: function(){$(obj.shadow).show();} });
							   }
							   
						   }
						   );
	
	Effect.Fade('id_start_flagnavfx', { duration: 1, from:0, to: 0.5, beforeStart: function(){$('id_start_flagnavfx').show();} });
	
	//$('id_'+this.options.startMark+'_fx').hide();
	$('id_start_flagnavfx').hide();
	
},
disableFx: function()
{
	this.disabledFx = true;
	
	this.elements.each(function(obj)
								{
									if(Object.keys(obj).indexOf("shadow") != -1)
									{
										$(obj.shadow).hide();
									}
									
									if(Object.keys(obj).indexOf("clickarea") != -1)
									{
										$(obj.clickarea).hide();
									}
								});
	
	$('id_start_flagnavfx').hide();
},


over: function(index)
{
	if(this.disabledFx == false)
	{
		
		mm = this.out.bind(this);
		
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("shadow") != -1)
										{
											$(obj.shadow).show();
										}
									});
		
		$(index).hide();
		$('id_start_flagnavfx').show();
	}
},

out: function(index)
{
	if(this.disabledFx == false)
	{
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("shadow") != -1)
										{
											$(obj.shadow).show();
										}
									});
		
		$('id_start_flagnavfx').hide();
	}
},

zusammenleg: function(index, options)
{
	if(this.disabledFx == false)
	{
		this.disableFx();
		this.klickblockiert=true;
		this.fxblockiert=true;
		
		var cur_el = $(index);
		
		cur_el.setStyle({
						  zIndex: 200
						  });
		
		mm = this.weiter.bind(this);
		
		
		ele = new Element('div', {id: 'id_markfly',
						  style: 'position:absolute;z-index: 201'
						  });
		
		eleInner = new Element('div', {style: 'position:relative'});
		
		$(this.options.reldiv).insert({top: ele});
		ele.insert(eleInner);
		
		innerPos = eleInner.cumulativeOffset();
		var hoehepos;
		
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("mark") != -1)
										{
											var pos = $(obj.mark).cumulativeOffset();
											eleInner.insert($(obj.mark));
											$(obj.mark).setStyle({position: 'absolute',top: (pos[1]-innerPos[1])+"px", left: (pos[0]-innerPos[0])+"px"});
											hoehepos = (pos[1]-innerPos[1]);
										}
									});

		
		
		var ary = new Array();
		var i = 0;
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("mark") != -1)
										{
											ev = new Effect.Move(obj.main, { sync: true, x: 0, y: 0, mode: 'absolute'});
											ary.push(ev);
											ev = new Effect.Move(obj.mark, { sync: true, x: 29*i, y: hoehepos, mode: 'absolute', duration: 2});
											ary.push(ev);
											i++;
										}
									});	
		
		new Effect.Parallel(ary, { duration: 2, delay: 0, afterFinish: function(){mm(options);}});
		
	}
	
},


auseinanderfalt_init: function()
{
	if(this.klickblockiert==true)
	{
		return;
	}
	
	if(this.disabledFx==true)
	{
		_this = this;
		
		this.menufxan = false;
		
		
		$('id_start_flagnavfx').hide();
		this.slideClose({afterFinish: function(){_this.auseinanderfalt();}});
		
		this.elements.each(function(obj)
									{
										if(obj.main !== _this.sele)
										{
												if(Object.keys(obj).indexOf("shadow") != -1)
												{
													if(_this.sele=='' && obj.main=='id_0_nav')
													{
														
													}
													else
													{
														Effect.Fade(obj.main, { duration: 1, from:0, to: 1});
													}
													$(obj.main).show();
													$(obj.shadow).hide();
												}
										}
									});
	}
	else
	{
		window.location='/';
	}
	
},

auseinanderfalt: function()
{
	$(this.contentsichtbar).hide();
	$('id_contentclip').hide();
	
	//this.disabledFx=false;
	this.disableFx();
	
	var _this = this;
	
	
	this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("mark") != -1)
										{
											$(obj.main).down('div').insert({bottom: $(obj.mark)});
											$(obj.clickarea).show();
											$(obj.flagnavfx).hide();
											$(obj.mark).setStyle({position: 'absolute',top: "188px", left: "0px", zindex: '99'});
										}
									});
	$('id_markfly').remove();
	
	var ary = new Array();
	var i = 0;
	
	this.elements.each(function(obj)
								{
									if(Object.keys(obj).indexOf("mark") != -1)
									{
										ev = new Effect.Move(obj.main, { sync: true, x: _this.positionsmerker[obj.main], y: 0, mode: 'absolute'});
										ary.push(ev);
										i++;
									}
								});	
	
	
	
	new Effect.Parallel(ary, { duration: 2, delay: 0, afterFinish: function(){_this.disabledFx=false;_this.initshadow();}});
	
},

to: function(index, fs)
{
	this.sele = index;
	var obj = this.getFullObj(index);
	this.merkePos(obj.main, fs);
	this.zusammenleg(index,{contentid: obj.contentdiv, fadeset: fs, afterFinish: function(){slideStart();}});
},

getFullObj: function(mainname, opt)
{
	var returnval = null;
	
	this.elements.each(
					   function(obj)
					   {
						   if(opt == undefined)
						   {
							   if(obj.main == mainname)
							   {
								   returnval = obj;
							   }
						   }
						   else if(opt == "contentdiv")
						   {
							   if(obj.contentdiv == mainname)
							   {
								   returnval = obj;
							   }
						   }
						   else if(opt == "flagnavfx")
						   {
							   if(obj.flagnavfx == mainname)
							   {
								   returnval = obj;
							   }
						   }
					   }
					   
					   );
	
	return returnval;
}

,
weiter: function(options)
{
	var _this = this;
	var opt = {contentid: null, nichtaus: null}
	
	Object.extend(opt, options);
	
	this.elements.each(function(obj)
									{
										if(obj.main !== _this.sele)
										{
											if(options.nichtaus !== null && options.nichtaus==obj.main)
											{
											}
											else
											{
												if(Object.keys(obj).indexOf("shadow") != -1)
												{
													Effect.Fade(obj.main, { duration: 1, from:1, to: 0, afterFinish: function(){_this.klickblockiert=false;_this.fxblockiert=false;}});
												}
											
											}
										}
									});
	this.menufxanschalten(1);
	
	this.slideOpen(opt);
},

menufxanschalten: function(noblock)
{
	_this = this;
	$('id_start_mark').show();
	_this.menufxan = true;
	Effect.Fade('id_start_flagnavfx', { duration: 1, from:0, to: 0.5, beforeStart: function(){$('id_start_flagnavfx').show();}});
	
	this.elements.each(function(obj)
						   {
							   if(Object.keys(obj).indexOf("flagnavfx") != -1)
							   {
								   Effect.Fade(obj.flagnavfx, { duration: 1, from:0, to: 0.5, beforeStart: function(){$(obj.flagnavfx).show();} });
							   }
							   
						   }
						   );
	
	this.returnmenu(noblock);
}
,

menuover: function(index, noblock)
{
	if(this.fxblockiert == true && noblock == undefined)
	{
		return;
	}
	
	if(this.menufxan == true)
	{
		if(this.flagnavtimer !== null)
		{
			clearTimeout(this.flagnavtimer);
		}
		
		mm = this.menuout.bind(this);
		
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("flagnavfx") != -1)
										{
											$(obj.flagnavfx).show();
										}
									});
		
		var obj2 = this.getFullObj(index, 'flagnavfx');
		
		
		$(index).hide();
		
		if(index == "id_start_flagnavfx")
		{
			return;
		}
		
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("main") != -1)
										{
											if(obj.main !== obj2.main)
											{
												try
												{
													$(obj.main).hide();
												}
												catch(e)
												{
												}
											}
											else
											{
												try
												{
													$(obj.main).show();
												}
												catch(e)
												{
												}
											}
										}
									});
		
		
	}
},
menuout: function(index)
{
	if(this.menufxan == true)
	{
		$(index).show();
		try
		{
			$(this.sele).show();
		}
		catch(e)
		{}
		
		mm = this.returnmenu.bind(this);
		this.flagnavtimer = setTimeout(mm, 50);
	}
},

returnmenu: function(noblock)
{
	var obj = this.getFullObj(this.sele);
	
	if(Object.keys(obj).indexOf("flagnavfx") != -1)
	{
		this.menuover(obj.flagnavfx, noblock);
	}
	else
	{
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("flagnavfx") != -1)
										{
											$(obj.flagnavfx).show();
										}
									});
	}
},

openContent: function(menufx, fs)
{
	slideStop();
	
	var obj = this.getFullObj(menufx, 'contentdiv');
	
	this.sele = obj.main;
	this.returnmenu();
	
	this.merkePos(obj.main, fs);
	
	var _this = this;
	var zcount=100;
	this.elements.each(function(obj)
								{
									if(Object.keys(obj).indexOf("mark") != -1)
							   		{
										if(_this.sele == obj.main)
										{
											$(obj.main).setStyle({zIndex: 200});
										}
										else
										{
											$(obj.main).setStyle({zIndex: zcount});
											zcount++;
										}
									}
								});
	
	var mm = this.slideOpen.bind(this);
	this.slideClose({afterFinish: function()
										   {
											   mm({fadeset: fs,contentid: menufx, afterFinish: function()
																							{
																								slideStart();
																							}});
										   }});
},


slideOpen: function(options)
{
	if(this.disabledFx == true)
	{
		this.elements.each(function(obj)
									{
										if(Object.keys(obj).indexOf("contentdiv") != -1)
										{
											$(obj.contentdiv).hide();
										}
										
									});
		
		this.contentsichtbar = options.contentid;
		this.fadeset=options.fadeset;
		slideReset(this.fadeset);
		
		fxopt = {style: 'left:0px;',duration: 2};
		Object.extend(fxopt, options);
		
		$('id_contentclip').show();
		
		
		if(this.slidefx !== null)
		{
			this.slidefx.cancel();
		}
		
		
		this.slidefx = new Effect.Morph(options.contentid, fxopt);
		$(options.contentid).show();
	}
},

slideClose: function(options)
{
	if(this.disabledFx == true)
	{
		fxopt = {style: 'left:-765px;',duration: 1};
		Object.extend(fxopt, options);
		
		if(this.slidefx !== null)
		{
			this.slidefx.cancel();
		}
		
		
		
		this.slidefx = new Effect.Morph(this.contentsichtbar, fxopt);
	}
},


merkePos: function(merk, fs)
{
	
	new Ajax.Request('index.php?act=ajaxInput&action=posmerk&merk='+merk+'&fs='+fs, {
	  method: 'get',
	  onSuccess: function(transport)
	  {
		  
	  }
	});
	
}


});
