/* Copyright (C) 2007 - 2009 YOOtheme GmbH */

var YOOBase = {

	/* Match height of div tags */		
	matchDivHeight: function(selector, minWidth) {
		var maxHeight = 0;
		var matchDivs = [];
		var selectors = selector.split(" ");
		var elements  = selectors.shift();
		var script    = '';

		selectors.each(function(el, i){
			script += '.getElement("' +  el + '")';
		});
		
		$ES(elements).each(function(element, i){
			eval('matchDivs.push(element' + script + ');');
		});

		matchDivs.each(function(div, i){
			if (!$chk(div)) return;
			var divHeight, divPadding;
			if (div.offsetHeight) {
				divHeight = div.offsetHeight;
				divPadding = 0;
				divPadding += div.getStyle('padding-top').toInt();
				divPadding += div.getStyle('padding-bottom').toInt();
				divHeight -= divPadding;
				divBorder = 0;
				divBorder += div.getStyle('border-top-width').toInt();
				divBorder += div.getStyle('border-bottom-width').toInt();
				divHeight -= divBorder;
			} else if (div.style.pixelHeight) {
				divHeight = div.style.pixelHeight;
			}
			maxHeight = Math.max(maxHeight, divHeight);
		});

		if (minWidth != undefined) {
			maxHeight = Math.max(maxHeight, minWidth);
		}

		matchDivs.each(function(div, i){
			if (!$chk(div)) return;
			if(window.ie6) {
				/* use height style for IE6 compatibility */
				div.setStyle('height', maxHeight + 'px')	
			} else {
				div.setStyle('min-height', maxHeight + 'px')					
			}
		});
	}

};

var YOOMorph = new Class({

	initialize: function(element, enter, leave, enterFx, leaveFx, elementFx) {	
		this.setOptions({
			duration: 500,
			transition: Fx.Transitions.expoOut,
			wait: false,
			ignoreClass: ''
		}, enterFx);
		
		var options = this.options;
		
		$$(element).each(function(el, i){
			var elfx = el;
			if (elementFx) {
				var elms = el.getElementsBySelector(elementFx);
				if (elms.length > 0) { elfx = elms[0]; }
			}
			var fx = new Fx.Styles(elfx, options);

			if (!($chk(options.ignoreClass) && el.hasClass(options.ignoreClass))) {
				el.addEvent('mouseenter', function(e){
					fx.setOptions(options, enterFx).start(enter);
				});
				el.addEvent('mouseleave', function(e){
					fx.setOptions(options, leaveFx).start(leave);
				});
			}
		});
	}

});

YOOMorph.implement(new Options);

var YOOBackgroundFx = new Class({

	initialize: function(options) {	
		this.setOptions({
			transition: Fx.Transitions.linear,
			duration: 9000,
			wait: false,
			colors: ['#FFFFFF', '#999999']
		}, options);

		var body   = new Element(document.body);
		var fx     = body.effects(this.options);
		var index  = 0;
		var colors = this.options.colors;
		var timer  = animate.periodical(this.options.duration * 2);
		
		animate();
		
		function animate() {
			fx.start({
				'background-color': colors[index]
			});
			if (index + 1 >= colors.length) {
				index = 0;
			} else {
				index++;
			};
		}
	}

});

YOOBackgroundFx.implement(new Options);