/**
 * @author podolski
 */
ImageMap = Class.create({
	
	initialize: function(name)
	{
		this.isDebug = false;
		this.delegates	= [];
		this.className = name;
		this.downloads = new Object();
		this.downloads['bottom_right'] = "downloads/BIRC.pdf";
	},
	
	startObservers: function(event)
	{
		this.isDebug ? console.log(this+".startObservers("+event+")") : false;
		this.hideHoverFields();
		this.observeImageMapFields();
	},
	
	hideHoverFields: function()
	{
		var _this = this;
		
		$$(".fade_in_text").each(function(elem){
			_this.hideElement(elem)	
		});
	},
	
	observeImageMapFields: function()
	{
		var _this = this;
		
		
		$$(".image_map").each(function(elem){
			_this.delegates['onImageMapFieldOver'] = function(event){
				event.data = [];
				event.data[0] = elem;
				_this.onImageMapFieldOver(event)
			}
			
			_this.delegates['onImageMapFieldOut'] = function(event){
				event.data = [];
				event.data[0] = elem;
				_this.onImageMapFieldOut(event)
			}
			
			_this.delegates['onImageMapFieldClick'] = function(event){
				event.data = [];
				event.data[0] = elem;
				_this.onImageMapFieldClick(event)
			}
			
			elem.observe("mouseover", _this.delegates['onImageMapFieldOver']);
			elem.observe("mouseout", _this.delegates['onImageMapFieldOut']);
			elem.observe("click", _this.delegates['onImageMapFieldClick']);	
		});
	},
	
	onImageMapFieldOver: function(event)
	{
		this.isDebug ? console.log(this+".onImageMapFieldOver("+event+")") : false;
		$("fade_out_text").hide();
		$(event.data[0].id+"_text").show();
	},
	
	onImageMapFieldOut: function(event)
	{
		this.isDebug ? console.log(this+".onImageMapFieldOut("+event+")") : false;
		$("fade_out_text").show();
		$(event.data[0].id+"_text").hide();
	},
	
	onImageMapFieldClick: function(event)
	{
		this.isDebug ? console.log(this+".onImageMapFieldClick("+event+")") : false;
		if(!this.downloads[event.data[0].id])return;
		var popUp = window.open(this.downloads[event.data[0].id], "Download");
		popUp.focus();
	},
	
	hideElement: function(elem)
	{
		elem.hide();
	},
	
	toString: function()
	{
		return "["+this.className+"]";
	}
});
var image_map = new ImageMap( "ImageMap" );
Event.observe(window,"load", image_map.startObservers.bind(image_map));
