/* Copyright (C) */

var YOOTools = {
		
	start: function() {

		/* Match height of div tags */
		YOOTools.setDivHeight();

		/* Background Animations */
		switch (YtSettings.color) {
			
			// underwater
			case 'default':
				if ($('object1')) { new YOOMove('object1', { 'direction': 'right', 'speed': 40000, 'pause': 60 }); }
				if ($('object2')) { new YOOMove('object2', { 'direction': 'left', 'speed': 30000, 'pause': 50 }); }
				break;
				
			// countryside, snow
			case 'brown':
			case 'blue':
			case 'green':
			case 'red':
				if ($('object1')) { new YOOMove('object1', { 'direction': 'left', 'speed': 300000, 'pause': 3 }); }
				if ($('object2')) { new YOOMove('object2', { 'direction': 'right', 'speed': 60000, 'pause': 50 }); }
				if ($('object3')) { new YOOMove('object3', { 'direction': 'left', 'speed': 30000, 'pause': 60 }); }
				break;

			// mars, earth
			case 'orange':
			case 'black':
				if ($('object1')) { new YOOMove('object1', { 'direction': 'right', 'speed': 70000, 'pause': 40 }); }
				if ($('object2')) { new YOOMove('object2', { 'direction': 'right', 'speed': 30000, 'pause': 10 }); }
				if ($('object3')) { new YOOMove('object3', { 'direction': 'left', 'speed': 100000, 'pause': 90 }); }
				break;
				
			// island, sunset
			case 'mint':
			case 'turquoise':
			case 'yellow':
				if ($('object1')) { new YOOMove('object1', { 'direction': 'left', 'speed': 300000, 'pause': 3 }); }
				if ($('object2')) { new YOOMove('object2', { 'direction': 'right', 'speed': 50000, 'pause': 50 }); }
				if ($('object3')) { new YOOMove('object3', { 'direction': 'left', 'speed': 100000, 'pause': 60 }); }
				break;
		}
		
		
		/* Accordion menu */
		new YOOAccordionMenu('div#middle ul.menu li.toggler', 'ul.accordion', { accordion: 'slide' });

		/* Dropdown menu */
		new YOODropdownMenu('div#menu li.parent', { mode: 'height', transition: Fx.Transitions.Expo.easeOut });

		/* Morph: main menu - level1 (tab) */
		var menuEnter = { 'color': '#ffffaa' };
		var menuLeave = { 'color': '#F0F0DC' };

		switch (YtSettings.color) {
			case 'blue':
			case 'green':
			case 'black':
				menuEnter = { 'color': '#ffffff' };
				break;
		}

		new YOOMorph('div#menu li.level1', menuEnter, menuLeave,
			{ transition: Fx.Transitions.linear, duration: 100 },
			{ transition: Fx.Transitions.sineIn, duration: 300 }, 'a.level1');

		/* Morph: main menu - level1 subline (color) */
		new YOOMorph('div#menu li.level1', menuEnter, menuLeave,
			{ transition: Fx.Transitions.linear, duration: 100 },
			{ transition: Fx.Transitions.sineIn, duration: 300 }, 'span.sub');

		/* Morph: main menu - level2 and deeper (color) */
		var selector = 'div#menu li.level2 a, div#menu li.level2 span.separator';
		/* fix for Opera because Mootools 1.1 is not compatible with latest Opera version */
		if (window.opera) { selector = 'div#menu li.item1 li.level2 a, div#menu li.item1 li.level2 span.separator, div#menu li.item2 li.level2 a, div#menu li.item2 li.level2 span.separator, div#menu li.item3 li.level2 a, div#menu li.item3 li.level2 span.separator, div#menu li.item4 li.level2 a, div#menu li.item4 li.level2 span.separator, div#menu li.item5 li.level2 a, div#menu li.item5 li.level2 span.separator, div#menu li.item6 li.level2 a, div#menu li.item6 li.level2 span.separator, div#menu li.item7 li.level2 a, div#menu li.item7 li.level2 span.separator'; }
		
		new YOOMorph(selector, menuEnter, menuLeave,
			{ transition: Fx.Transitions.linear, duration: 0 },
			{ transition: Fx.Transitions.sineIn, duration: 500 });

		/* Morph: sub menu - level1 */
		var submenuEnter = { 'color': '#ffffaa'};
		var submenuLeave = { 'color': '#F0F0DC'};

		switch (YtSettings.color) {
			case 'blue':
				submenuEnter = { 'color': '#ba5d00'};
				submenuLeave = { 'color': '#266892'};
				break;
			case 'green':
				submenuEnter = { 'color': '#36a153'};
				submenuLeave = { 'color': '#36a153'};
				break;
			case 'black':
				submenuEnter = { 'color': '#ba5d00'};
				submenuLeave = { 'color': '#437ca1'};
				break;
		}

		new YOOMorph('div#middle ul.menu a, div#middle ul.menu span', submenuEnter, submenuLeave,
			{ transition: Fx.Transitions.expoOut, duration: 0 },
			{ transition: Fx.Transitions.sineIn, duration: 300 });

		/* Smoothscroll */
		new SmoothScroll({ duration: 500, transition: Fx.Transitions.Expo.easeOut });
	},

	/* Include script */
	include: function(library) {
		$ES('script').each(function(s, i){
			var src  = s.getProperty('src');
			var path = '';
			if (src && src.match(/yoo_tools\.js(\?.*)?$/)) path = src.replace(/yoo_tools\.js(\?.*)?$/,'');
			if (src && src.match(/template\.js\.php(\?.*)?$/)) path = src.replace(/template\.js\.php(\?.*)?$/,'');
			if (path != '') document.write('<script language="javascript" src="' + path + library + '" type="text/javascript"></script>');
		});
	},

	/* Match height of div tags */
	setDivHeight: function() {
		YOOBase.matchDivHeight('div.headerbox div.deepest', 0, 40);
		YOOBase.matchDivHeight('div.topbox div.deepest', 0, 40);
		YOOBase.matchDivHeight('div.bottombox div.deepest', 0, 40);
		YOOBase.matchDivHeight('div.maintopbox div.deepest', 0, 40);
		YOOBase.matchDivHeight('div.mainbottombox div.deepest', 0, 40);
		YOOBase.matchDivHeight('div.contenttopbox div.deepest', 0, 40);
		YOOBase.matchDivHeight('div.contentbottombox div.deepest', 0, 40);
	}

};

/* Add functions on window load */
window.addEvent('domready', YOOTools.start);

/* Load IE6 fix */
if (window.ie6) {
	YOOTools.include('addons/ie6fix.js');
	YOOTools.include('addons/ie6png.js');
	YOOTools.include('yoo_ie6fix.js');
}

/* Move class */
var YOOMove = new Class({
	
	initialize: function(element, options) {
		this.setOptions({
			direction: 'left',
			speed: 10000,
			pause: 5,
			duration: 1000,
			transition: Fx.Transitions.linear
		}, options);

		this.elm = $(element);
		this.key = 'yt-' + this.elm.getProperty('id');
		this.fx = new Fx.Styles(this.elm, this.options);
		this.timer = null;

		var val = Cookie.get(this.key);
		if (val) {
			this.elm.setStyle('left', val + 'px');
		}
		
		this.memorize.periodical(2500, this);
		this.animate();
	},

	animate: function() {
		var dir   = this.options.direction;
		var pause = this.options.pause;
		var coord = this.elm.getCoordinates();
		var dest  = (dir == 'left') ? 0 - coord.width : window.getWidth();
		var track = coord.left - dest;
		if (track < 0) { track = -track; }

		this.fx.setOptions({ 'duration': (this.options.speed * track / 1024).toInt() });
		this.fx.start({
			'left': (dir == 'left') ? 0 - coord.width : window.getWidth()
		}).chain(function() {
			this.elm.setStyles({
				'left': (dir == 'left') ? window.getWidth() : 0 - coord.width
			});
			$clear(this.timer);
			this.timer = this.animate.delay((Math.floor(Math.random() * pause) * 1000).limit(1000, (1000 * pause)), this);
		}.bind(this));
	},
	
	memorize: function() {
		var coord = this.elm.getCoordinates();
		Cookie.set(this.key, coord.left);
	}
	
});

YOOMove.implement(new Options);
