
/* CLASS MENU */

function euromarkMenu() {
	
	this.timeout = 700;
	this.timer = false;
	this.selectors = {
		main: false,
		sub: false,
		hover: false
	}
	
	this.initMain = function(main, sub) {
		this.selectors.main = main;
		this.selectors.sub  = sub;
		
		$(this.selectors.main).bind('mouseover', {menu: this}, this.mainMouseEnter);
		$(this.selectors.main).bind('mouseout', {menu: this}, this.mainMouseLeave);
	}
	
	this.mainMouseEnter = function(evt) {
		var menu = evt.data.menu;
		
		$(menu.selectors.main).find(menu.selectors.sub).hide();
		$(this).find(menu.selectors.sub).show();
		
		window.clearTimeout(menu.timer);
		menu.timer = false;
	}
	
	this.mainMouseLeave = function(evt) {
		var menu = evt.data.menu;
		
		if (!menu.timer) {
			menu.timer = window.setTimeout(function() {
				$(menu.selectors.main).find(menu.selectors.sub).hide();
			}, menu.timeout);
		}
	}
	
	this.initHover = function(hover) {
		this.selectors.hover = hover;
		
		$(this.selectors.hover).bind('mouseover', {menu: this}, this.hoverMouseEnter);
		$(this.selectors.hover).bind('mouseout', {menu: this}, this.hoverMouseLeave);
	}
	
	this.hoverMouseEnter = function(evt){
		$(this).parent().addClass('hover');
	}
	
	this.hoverMouseLeave = function(evt){
		$(this).parent().removeClass('hover');
	}
	
}

/* CLASS CHART */

function euromarkCharts() {
	this.selector = false;
	
	this.init = function(selector) {
		this.selector = selector;
		$(this.selector).find('.links a').bind('click', {charts: this}, this.click);
		this.autostart();
	}
	
	this.click = function(evt) {
		var charts = evt.data.charts;
		var chart = $(charts.selector).find('.chart');
		var link = chart.parent();
		var url = $(this).attr('href');
		var links = $(charts.selector).find('.links a');
		var idx = links.index(this);
		var big = $(charts.selector).find('.big');
		
		chart.attr('src', url);
		links.removeClass('active');
		$(this).addClass('active');
		
		if ((idx >= 0) && (big.length > 0)) {
			href = big.attr('href');
			href = href.replace(/#chart\d+$/, '#chart'+idx);
			link.attr('href', href);
		}
		
		return false;
	}
	
	this.autostart = function() {
		var matches = window.location.hash.match(/#chart(\d+)/);
		if (matches && matches.length == 2) {
			$(this.selector).find('.links a').eq(matches[1]).click();
		}
	}
}

/* CLASS FILE */

function euromarkFile() {
	this.selector = false;
	
	this.init = function(selector) {
		this.selector = selector;
		
		$(this.selector).bind('mouseover', {file: this}, this.mouseEnter);
		$(this.selector).bind('mouseout', {file: this}, this.mouseLeave);
		
		$(this.selector).bind('click', {file: this}, this.click);
	}
	
	this.mouseEnter = function(evt) {
		var file = evt.data.file;
		$(this).addClass('hover');
	}
	
	this.mouseLeave = function(evt) {
		var file = evt.data.file;
		$(this).removeClass('hover');
	}
	
	this.click = function(evt) {
		var file = evt.data.file;
		window.open( $(this).find('a').eq(0).attr('href') );
		return false;
	}
}

/* CLASS FORMATTED TABLES */

function euromarkFormattedTables() {
	this.selector = false;
	
	this.init = function(selector) {
		this.selector = selector;
		$(this.selector).find('tr').find('td:odd').addClass('dark');
		$(this.selector).find('tr').find('th:odd').addClass('dark');
	}
}

/* CLASS BANNER */

function euromarkFlashBanner() {
	this.selector = false;
	
	var WIDTH_IN  = 622;
	var WIDTH_OUT = 822;
	
	this.init = function(selector) {
		this.selector = selector;
	}
	
	this.slideOut = function() {
		$(this.selector).width(WIDTH_OUT+'px');
	}
	
	this.slideIn = function() {
		$(this.selector).width(WIDTH_IN+'px');
	}
}

/* CLASS VERTICAL SCROLL */

function euromarkSlideshow() {
	
	this.selector = false;
	
	this.ANIMATE_SPEED = 750;
	this.ANIMATE_DELAY = 5000;
	
	this.init = function(selector) {
		this.selector = selector;
		this.setPaddings();
		
		var that = this;
		window.setInterval(
			function(){ that.animate(that); },
			this.ANIMATE_DELAY
		);
	}
	
	this.setPaddings = function() {
		
		var PARENT_WIDTH = 0;
		var MAX_WIDTH    = 0;
		var MAX_HEIGHT   = 0;
		
		$(this.selector).each(function() {
			
			PARENT_WIDTH = $(this).width();
			
			$(this).find('div').each(function() {
				var width = $(this).width();
				var height = $(this).height(); 
				if (width  >  MAX_WIDTH) MAX_WIDTH  =  width;
				if (height > MAX_HEIGHT) MAX_HEIGHT = height;
			});
			
			$(this).find('div').each(function() {
				var width = $(this).width();
				var height = $(this).height(); 
				
				var left = Math.round( (PARENT_WIDTH - PARENT_WIDTH)/2 );
				
				var horizontal = Math.round( (PARENT_WIDTH  -  width)/2 );
				var vertical   = Math.round( (MAX_HEIGHT - height)/2 );
				
				$(this).css({
					left         : left,
					paddingLeft  : horizontal,
					paddingRight : horizontal,
					paddingTop   : vertical,
					paddingBottom: vertical
				});
			});
			
			$(this).find('div:not(:first)').hide();
			
			$(this).css({
				height: MAX_HEIGHT,
				width: PARENT_WIDTH
			});
			
		});
		
	}
	
	this.animate = function(slideshow) {
		var visible = $(slideshow.selector).find('div:visible');
		visible.each(function() {
			var next = $(this).next();
			if (next.length == 0) {
				next = $(this).siblings().first();
			}
			
			$(this).fadeOut(slideshow.ANIMATE_SPEED);
			next.fadeIn(slideshow.ANIMATE_SPEED);
		});
	}
	
}

/* INIT ALL CLASSES */

$(function() {
	
	window.euromarkMenu = new euromarkMenu();
	window.euromarkMenu.initMain('#header .menu>li', '.submenu');
	window.euromarkMenu.initHover('#header .menu li a');
	
	window.euromarkCharts = new euromarkCharts();
	window.euromarkCharts.init('#content .charts');
	
	window.euromarkFile = new euromarkFile();
	window.euromarkFile.init('#content .file');
	
	window.euromarkFormattedTables = new euromarkFormattedTables();
	window.euromarkFormattedTables.init('#content .formatted');
	
	window.euromarkFlashBanner = new euromarkFlashBanner();
	window.euromarkFlashBanner.init('#flash_header');
	
	window.euromarkSlideshow = new euromarkSlideshow();
	window.euromarkSlideshow.init('.slideshow');
	
});

