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

jQuery(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 });		

});

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();	

};
