/* Copyright (C) 2007 - 2011 YOOtheme GmbH, YOOtheme Proprietary Use License (http://www.yootheme.com/license) */

(function($){

	$(document).bind('ready', function() {

		/* Match height of div tags */
		(function() {
			$('div.headerbox div.deepest').matchHeight(40);
			$('div.topbox div.deepest').matchHeight(40);
			$('div.bottombox div.deepest').matchHeight(40);
			$('div.maintopbox div.deepest').matchHeight(40);
			$('div.mainbottombox div.deepest').matchHeight(40);
			$('div.contenttopbox div.deepest').matchHeight(40);
			$('div.contentbottombox div.deepest').matchHeight(40);
		})();

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

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

		/* Dropdown menu */
		$('div#menu li.parent').dropdownMenu({ mode: 'height', transition: 'easeOutExpo'});

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

		switch (Warp.Settings.color) {
			case 'blue':
			case 'green':
			case 'black':
				menuEnter = { 'color': '#ff9934' };
				break;
		}

		$('div#menu li.level1').morph(menuEnter, menuLeave,
			{ transition: 'linear', duration: 100 },
			{ transition: 'easeInSine', duration: 300 }, 'a.level1');

		/* Morph: main menu - level1 subline (color) */
		$('div#menu li.level1').morph(menuEnter, menuLeave,
			{ transition: 'linear', duration: 100 },
			{ transition: 'easeInSine', duration: 300 }, 'span.sub');

		/* Morph: main menu - level2 and deeper (color) */
		var selector = 'div#menu li.level2 a, div#menu li.level2 span.separator';
		
		$(selector).morph(menuEnter, menuLeave,
			{ transition: 'swing', duration: 0 },
			{ transition: 'easeInSine', duration: 500 });

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

		switch (Warp.Settings.color) {
			case 'blue':
				submenuEnter = { 'color': '#ba5d00'};
				submenuLeave = { 'color': '#266892'};
				break;
			case 'green':
				submenuEnter = { 'color': '#ba5d00'};
				submenuLeave = { 'color': '#669125'};
				break;
			case 'black':
				submenuEnter = { 'color': '#ba5d00'};
				submenuLeave = { 'color': '#437ca1'};
				break;
		}

		$('div#middle ul.menu a, div#middle ul.menu span').morph(submenuEnter, submenuLeave,
			{ transition: 'easeOutExpo', duration: 0 },
			{ transition: 'easeInSine', duration: 300 });

		/* Smoothscroll */
		$('a[href="#page"]').smoothScroller({ duration: 500 });		

	});

})(jQuery);

function cookie(name, value, options) {
	
	if (typeof value != 'undefined') { // name and value given, set cookie
		options = options || {};
		if (value === null) {
			value = '';
			options.expires = -1;
		}
		var expires = '';
		if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
			var date;
			if (typeof options.expires == 'number') {
				date = new Date();
				date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
			} else {
				date = options.expires;
			}
			expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
		}
		// CAUTION: Needed to parenthesize options.path and options.domain
		// in the following expressions, otherwise they evaluate to undefined
		// in the packed version for some reason...
		var path = options.path ? '; path=' + (options.path) : '';
		var domain = options.domain ? '; domain=' + (options.domain) : '';
		var secure = options.secure ? '; secure' : '';
		document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
	} else { // only name given, get cookie
		var cookieValue = null;
		if (document.cookie && document.cookie != '') {
			var cookies = document.cookie.split(';');
			for (var i = 0; i < cookies.length; i++) {
				var cookie = jQuery.trim(cookies[i]);
				// Does this cookie string begin with the name we want?
				if (cookie.substring(0, name.length + 1) == (name + '=')) {
					cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
					break;
				}
			}
		}
		return cookieValue;
	}
};

/* Move class */
function YOOMove(element, options) {
	
	var options = jQuery.extend({
		direction: 'left',
		speed: 10000,
		pause: 5,
		duration: 1000,
		transition: 'linear'
	}, options);

	var elm = jQuery(element);
	var key = 'yt-' + elm.attr('id');
	
	var timer = null;

	var val = cookie(key);
	
	if (val) {
		elm.css('left', val + 'px');
	}
	
	window.setInterval(function(){
		cookie(key, elm.css('left'));
	},2500);

	var animate = function() {
		var dir   = options.direction;
		var pause = options.pause;
		var coord = elm.position();
		var dest  = (dir == 'left') ? 0 - elm.width() : jQuery(window).width();
		var track = coord.left - dest;
		if (track < 0) { track = -track; }
		
		
		var duration = parseInt(options.speed * track / 1024);
		
		elm.stop().animate({
			'left': (dir == 'left') ? 0 - elm.width() : jQuery(window).width()
		}, duration, options.transition, function(){
			elm.css({
				'left': (dir == 'left') ? jQuery(window).width() : 0 - elm.width()
			});
			
			clearTimeout(timer);
			timer = window.setTimeout(animate, (Math.floor(Math.random() * pause) * 1000));
		});
	};
	
	animate();	

};
