var percent = new Object;
var image_width = 0;
var wrapper;
var interval = '';
var interval_state = false;
var speed = 250;
var blend_speed = 500;
var blend_elements = new Array('#modalbox', '#modalbox .wrapper');
var cookie_name = 'switch';
var prevent_animation = false;

$(function() {
	monitor_accessible_toggle();
	if($('#header li').length) {
		multiply_images();
		add_rollovers();
		//$("body").append("<div id='status'></div>");
		$().mousemove(function(e){
			
			mouse = new Object;
			mouse.x = e.pageX;
			mouse.y = e.pageY;
			
			window_size = window.get_size();
			
			window_percent = new Object;
			window_percent.x = window_size.x/100;
			window_percent.y = window_size.y/100;
			
			current_percent = new Object;
			current_percent.x = mouse.x/100;
			current_percent.y = mouse.y/100;
			
			percent.x = (current_percent.x/window_percent.x)*100;
			percent.y = (current_percent.y/window_percent.y)*100;
			//$('#status').html(percent.x +', '+ percent.y);
		});
		
		interval = window.setInterval('animate()', 40);
		interval_state = true;
	}
	fix_splash_page();
	add_client_list();
	$('#header').hide();
	//$('#header').css('height', '173px');
	$('#header').fadeIn(speed);
	open_navigation();
	monitor_navigation();
});

function multiply_images(){
	image_width = 0;
	$('#header img').each(function(){
		image_width = image_width + $(this).width();
	});
	wrapper = $('#header .wrapper').width();
	ratio = wrapper / image_width;
	// FIX FOR BANNERS WITH LONG CONTENT / MANY ELEMENTS
	if(ratio < 0.5) {
		$('#header .wrapper').width(image_width/2);
		ratio = wrapper / image_width;
	}
	
	$image_list = $('#header').find('ul');
	var htmlStr = $('#header .mover').html();
	var content = '';
	for(i=0;i<=Math.ceil(ratio);i++) { // maybe 0 to 1
		// Duplicate here
		content += htmlStr;
	}
	$('#header .mover').html(content);
	$('#header .mover ul:not(:first)').addClass('duplicate');
}

function add_rollovers() {
	$('#header a').each(function(){
		$(this).hover(function(){
			prevent_animation = true;
			add_highlight($(this).attr('class'));
			classes = $(this).attr('class').split(' ');
			if(classes.length > 1) {
				for(i=0;i<classes.length;i++) {
					if(classes[i]) {
						if(classes[i].indexOf('bannerElement') != -1) {
							classes = classes[i];
						}
					}
				}
			}
			classes = classes.split('_');
			type = classes.shift();
			id = classes.pop();
			$('#content .rollover_texts .text_'+id).addClass('visible');
		},function(){
			prevent_animation = false;
			remove_highlight();
			classes = $(this).attr('class').split(' ');
			if(classes.length > 1) {
				for(i=0;i<classes.length;i++) {
					if(classes[i]) {
						if(classes[i].indexOf('bannerElement') != -1) {
							classes = classes[i];
						}
					}
				}
			}
			classes = classes.split('_');
			type = classes.shift();
			id = classes.pop();
			$('#content .rollover_texts .text_'+id).removeClass('visible');
		});
		$(this).click(function(e){
			e.preventDefault();
			if(interval_state) {
				interval_state = false;
				classes = $(this).attr('class').split(' ');
				if(classes.length > 1) {
					for(i=0;i<classes.length;i++) {
						if(classes[i]) {
							if(classes[i].indexOf('bannerElement') != -1) {
								classes = classes[i];
							}
						}
					}
				}
				classes = classes.split('_');
				//classes = $(this).attr('class').split('_');
				type = classes.shift();
				id = classes.pop();
				$.ajax({
					type: "POST",
					url: "/generic/data/",
					data: "id="+id+"&model="+type,
					success: function(response){
						window.clearInterval(interval);
						//$("body").append(response);
						$("#main").prepend(response);
						add_close();
					}
				});
			}
		});
	});
}

function add_close() {
	$('#modalbox a.close, #modalbox #closer').click(function(e){
		e.preventDefault();
		blend_elements = new Array('#modalbox', '#modalbox .wrapper');
		blend_out();
		if(!interval_state) {
			interval = window.setInterval('animate()', 40);
			interval_state = true;
		}
	});
}

function blend_in() {
	if (blend_elements.length) {
		element = blend_elements.shift();
		$(element).fadeIn(blend_speed, function(){
			blend_in();
		});
	}
}

function blend_out() {
	if (blend_elements.length) {
		element = blend_elements.shift();
		$(element).fadeOut(blend_speed, function(){
			blend_out();
		});
	} else {
		$('#modalbox').remove();
	}
}

function animate(){
	if (!prevent_animation) {
		if (!window.speed_factor) {
			speed_factor = 1;
		}
		disposition = (window.percent.x - 50) * speed_factor;//throttle_factor;
		position = $('#mover').position();
		if (position.left == 'undefined') 
			position.left = 0;
		
		current = position.left;
		new_pos = current - disposition;
		
		header_element_width = $('#header ul').width();
		if (window.percent.x > 50 && new_pos < -(header_element_width)) {
			new_pos = new_pos + header_element_width;
		}
		else 
			if (window.percent.x < 50 && new_pos > -10) {
				new_pos = new_pos - header_element_width;
			}
		
		$('#header .mover').css("left", new_pos + "px");
	}
}

function get_size() {
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	obj = new Object;
	obj.x = myWidth;
	obj.y = myHeight;
	return obj;
}

function overlay_slider() {
	$('#modalbox .wrapper .details .slider a').toggle(
		function () {
			
			slider = $('#modalbox .wrapper .container');
			slider_inside = $('#modalbox .wrapper .details');
			slider_width = slider_inside.width()
			slider_height = slider_inside.height();
			
			$(slider).animate({
				width: slider_width,
				height: slider_height
			}, speed, 'swing', $(this).html('<<'));
			
			$(slider_inside).animate({
				opacity: 0.85
			}, speed, 'swing');
		},
		function () {
			slider_inside = $('#modalbox .wrapper .details');
			
			slider_button = $('#modalbox .wrapper .details .slider a');
			slider_button_width = slider_button.width();
			slider_button_height = slider_button.height();
			
			$(slider).animate({
				width: slider_button_width,
				height: "25px"//slider_button_height
			}, speed, 'swing', $(this).html('>>'));
			
			$(slider_inside).animate({
				opacity: 0.25
			}, speed, 'swing');
		}
	);
}

function overlay_nav() {
	$('.modal_footer .footer_nav a').each(function(){
		$(this).click(function(e){
			e.preventDefault();
			href = $(this).attr('href');
			overlay_process(href);
		});
	});
}

function overlay_process(href) {
	image_holder = $('#modalbox .wrapper .content .image #overlay_image_holder');
	image = $(image_holder).find('img:visible');
	
	load_holder = $('#modalbox .wrapper .content .image .load_holder');
	$(load_holder).css('z-index','3');
	
	loading = $('#modalbox .wrapper .content .image .loading');
	//$(loading).show();
	if($(loading).hasClass('loaded') == false) {
		$(loading).spinner({ height: 16, width: 16, speed: 50, image: '/themed/frontend/css/images/spinner/loader.png' });
		$(loading).addClass('loaded');
	}
	$(loading).fadeIn(speed);
	
	new_image = new Image();
	$(new_image).load(function(){

		$(loading).fadeOut(speed, function(){
			
			//$(this).attr('style', '');
			classes = href.split('/');
			id = classes.pop();
			type = classes.pop();
			$.ajax({
				type: "POST",
				url: "/generic/proceed",
				data: "id="+id+"&model="+type,
				success: function(response){
					
					//$.spinnerStop();
					$(load_holder).css('z-index','2');
					
					$(new_image).css('display', 'none');
					$(image_holder).append(new_image);
					if(response) {
						$(new_image).wrap('<a href="'+response+'"></a>');
					}
					$(image).fadeOut(speed, function() {
						if($(this).parent().get(0).tagName == 'A') {
							$(this).parent().remove();
						} else {
							$(this).remove();
						}
					});
					$(new_image).fadeIn(speed);
					overlay_listener();
					
				}
			});
			
		});
		
	}).error(function(){
		$.log($(this));
	}).attr('src', href);
	
	replace_overlay_nav(href);
}

function replace_overlay_nav(href) {
	classes = href.split('/');
	id = classes.pop();
	type = classes.pop();
	$.ajax({
		type: "POST",
		url: "/generic/overlay_nav",
		data: "id="+id+"&model="+type,
		success: function(response){
			$('.modal_footer').html(response);
			add_close();
			overlay_nav();
		}
	});
}

function overlay_listener() {
	$('#overlay_image_holder').find('a').click(function(e){
		e.preventDefault();
		href = $(this).attr('href');
		overlay_process(href);
	});
}

function add_client_list() {
	if ($('.client_list').length) {
		$('.client_list a').each(function(){
			$(this).hover(
				function () {
					add_highlight($(this).attr('class'));
				}, 
				function () {
					remove_highlight();
				}
			);
			$(this).click(function(e){
				e.preventDefault();
				classes = $(this).attr('class').split(' ');
				if(classes.length > 1) {
					for(i=0;i<classes.length;i++) {
						if(classes[i].indexOf('client') != -1) {
							classes = classes[i];
						}
					}
				}
				classes = classes.split('_');
				id = classes.pop();
				type = classes.pop();
				replace_header(type, id);
			});
		});
	}
}

function add_highlight(classes) {
	
	if (classes.indexOf('bannerElement') != -1) {
		classesCopy = classes;
		classesCopy = classesCopy.split(' ');
		if(classesCopy.length > 1) {
			for(i=0;i<classesCopy.length;i++) {
				if(classesCopy[i].indexOf('bannerElement') != -1) {
					selectedBannerElement = classesCopy[i];
				}
			}
		}
	} else {
		selectedBannerElement = false;
	}
	
	if ($('.client_list').length) {
		search_string = 'client';
	} else {
		search_string = 'bannerElement';
	}
	
	classes = classes.split(' ');
	if(classes.length > 1) {
		for(i=0;i<classes.length;i++) {
			if(classes[i]) {
				if(classes[i].indexOf(search_string) != -1) {
					classes = classes[i];
				}
			}
		}
	}
	
	if ($('#header li').length) {
		if (selectedBannerElement) {
			$('#header li a.' + selectedBannerElement).addClass('act');
		} else {
			$('#header li a.' + classes).addClass('act');
		}
	}
	if ($('.client_list').length) {
		$('.client_list a.'+classes).addClass('act');
	}
}
function remove_highlight() {
	if ($('#header li').length) {
		$('#header li a').removeClass('act');
	}
	if ($('.client_list').length) {
		$('.client_list a').removeClass('act');
	}
}

function replace_header(type, id) {
	$.ajax({
		type: "POST",
		url: "/banner_elements/replace_header",
		data: "id="+id+"&model="+type,
		success: function(response){
			$('#header').fadeOut(speed, function(){
				$('#mover').html(response);
				$('#mover').css('left', '0px');
				$('#header').fadeIn(speed);
				multiply_images();
				add_rollovers();
				
			});
		}
	});
}

function open_navigation() {
	if ($('#navigation .act.subact').length) {
		$('#navigation .act.subact').parent().find('ul').slideDown(speed*2);
	}
}

function monitor_navigation() {
	if ($('#navigation a').length) {
		$('#navigation a').each(function(){
			$(this).click(function(e){
				$('#header').fadeOut(speed);
			});
		});
	}
}

function monitor_accessible_toggle() {
	if($.cookie(cookie_name) == null) {
		if ($.cookie(cookie_name) != 'true') {
			switch_styles('default');
			$.cookie(cookie_name, 'false', { expires: 10, path: '/' });
		}
	}
	$('.switcher').click(function(e){
		e.preventDefault();
		cookie_value = $.cookie(cookie_name);
		if(cookie_value == 'true') {
			$.cookie(cookie_name, 'false', { expires: 10, path: '/' });
			switch_styles('default');
			$('#header .mover').css('left', '0px');
		} else {
			$.cookie(cookie_name, 'true', { expires: 10, path: '/' });
			switch_styles('accessible');
		}
		return false;
	});
}

function fix_splash_page() {
	width = $('#welcome .intro').width();
	height = $('#welcome .intro').height();
	
	$('#welcome .contentblock').css({
		'margin-left' : '-'+width/2+'px',
		'top' : '-'+height/2+'px',
		'width' : width+'px',
		'height' : height+'px'
	});
}

function switch_styles(active) {
	$('link[@rel*=style][title]').each(function(i) {
		this.disabled = true;
		if (this.getAttribute('title') == active) this.disabled = false;
	});
}

(function($){
	$.log = function(obj){
		if(window.console && window.console.log)
			console.log(obj);
	}
})(jQuery);
