//Klasse um Menupunkte zu hovern
var classSwitcher = Class.create();
classSwitcher.prototype = {

	initialize : function (elems)
	{
		this.naventries = elems;
		
		for( i=0; i<this.naventries.length; i++ )
		{
			for( k=0; k<this.naventries[i].length; k++ )
			{
				this.naventries[i][k].myClass = this;
				this.naventries[i][k].observe('mouseover', this.over);				
				this.naventries[i][k].observe('mouseout', this.out);				
			}
		}
	},

	over : function ()
	{
		this.addClassName('hover');
		clearInterval(this.hide);
	},
	
	out : function ()
	{
		this.hide = setInterval(this.myClass.removeClass.bind(this),20);
	},
	
	removeClass : function()
	{
		if(this.className.indexOf("hover") >= 0)
		{
			this.removeClassName("hover");
		}
	}
}


//Klasse um Portaldropdown
var portalSelection = Class.create();
portalSelection.prototype = {

	initialize : function (selectbox,config)
	{
		this.config = {};
		if(typeof config == "object") {
			this.config = config;
		}
		
		this.selectbox = selectbox;
		
		this.button = this.selectbox.getElementsByClassName('tag_select')[0];
		this.optionBox = this.selectbox.getElementsByClassName('tag_options')[0];

		this.myInterval = null;
		
		this.button.observe('click', this.openOptions.bind(this));
	},

	openOptions : function ()
	{
	
		this.optionBox.style.display = 'block';
		this.optionBox.onmouseover = this.setMouse.bind(this);
		
		if(typeof this.config.onClick == "function") {
			this.config.onClick();
		}
	},
	
	setMouse : function ()
	{
		this.optionBox.onmouseout = this.intervalClose.bind(this);
		if(this.myInterval != null)
		{
			this.clearInterval(); 
		}
		
	},
	
	intervalClose : function ()
	{
		this.myInterval = window.setInterval(this.closeOptions.bind(this), 1000);
	},
	
	closeOptions : function ()
	{
		this.optionBox.style.display = 'none';
		this.clearInterval(); 
	},
	
	clearInterval : function ()
	{
		clearInterval(this.myInterval);
		this.myInterval = null;
	}

}


//Klasse um Galerie einzublenden
var gallerySwitch = Class.create();
gallerySwitch.prototype = {

	initialize : function (gal)
	{
		
		this.gallery = gal;
		
		this.button = this.gallery.getElementsByClassName('gallery_button')[0];
		this.thumbcontainer = this.gallery.getElementsByClassName('thumbs_container')[0];
		this.thumbs = this.gallery.getElementsByClassName('thumbs')[0];
		this.thumbHeight = this.thumbs.getHeight();
	
		this.button.observe('click', this.clickButton.bind(this));		
		
		this.thumbs.observe('mouseover', this.over.bind(this));
		this.thumbs.observe('mouseout', this.out.bind(this));
		
	},

	clickButton : function ()
	{
		this.slide(0,this.thumbHeight);
		clearInterval(this.hide);
		
		var closedWithAjax = false;
	},
	
	slide : function (start,finish)
	{
		this.startHeight = start;
		this.finishHeight = finish;
		this.thumbcontainer.style.height= '0px';
		this.thumbcontainer.style.opacity= 1;
		
		ex1 = new Animator({transition: Animator.makeEaseIn(2),duration: 300});
		ex1.addSubject(new NumericalStyleSubject(this.thumbcontainer, 'height', this.startHeight, this.finishHeight));
		ex1.play();
	},
	
	over : function ()
	{
		clearInterval(this.hide);
	},
	
	out : function ()
	{
		this.hide = setInterval(this.removeClass.bind(this),100);
	},
	
	removeClass : function()
	{
		//this.thumbcontainer.style.height= '0px';
		
		clearInterval(this.hide);
		
		if(this.thumbcontainer.style.height!='0px'){
			ex2 = new Animator({transition: Animator.makeEaseIn(2),duration: 150});
			ex2.addSubject(new NumericalStyleSubject(this.thumbcontainer, 'height', this.thumbHeight, 0));
			ex2.play();
		}

	}
}




