
$(function () {
	floorplanThing = new FloorplanThing('#floorplan');
})

function FloorplanThing(element) {
	this.baseElement = $(element);
	this.mapElement = this.baseElement.find('#floorplan_map');
	this.defaultMap = this.mapElement.attr('src');
	this.legendElement = this.baseElement.find('#floorplan_legend');
	this.captionHtml = '<a href="docs/floor_plans/{#letter}.pdf"> <img src="images/Floor_plans/clickhere.jpg" /></a>';
	this.floorplanImgUrl = 'images/floor_plans/{#letter}.png';
	this.floorplanBox = '<div style="position:absolute;top:10px;left:10px;padding:5px;"><img src="{#url}" style="display:block;" /><span style="display:block;">{#caption}</span></div>';
	this.mapElementSrcTemplate = 'images/floor_plans/map_highlight_{#letter}.jpg';
	this.loader = new Array();
	this.resetMap = null;

	this.showFloorplan = function (event) {
		var floorplanType = $(this).parent()
			.find('th:eq(0)')
				.html()
					.split(' ')[1];
		tb_show(
			event.data.instance.captionHtml.replace('{#letter}', floorplanType),
			event.data.instance.floorplanImgUrl.replace('{#letter}', floorplanType),
			false
		);
	}
	
	this.showPopup = function (caption, url) {
		var html = this.floorplanBox.replace('{#url}', url).replace('{#caption}', caption);
		$('body').append($(html).bind('click', function () {$(this).remove()}));
	}
	
	this.itemOver = function (event) {
		var letter =  $(this)
			.find('td:eq(0)')
				.html();
		this.style.backgroundColor="#C29E66";
		event.data.instance.mapElement.attr('src', event.data.instance.mapElementSrcTemplate.replace('{#letter}', letter));
		if (event.data.instance.resetMap != null){
			clearTimeout(event.data.instance.resetMap);
		}
	}
	
	this.itemOut = function (event) {
		this.style.backgroundColor="";
		var self = event.data.instance;
		self.resetMap = setTimeout(function (event) {self.mapElement.attr('src', self.defaultMap);},500)
	}

	this.preload = function () {
		var letters = ['a','b','c','d','e','f','g', 'h'];
		for (i in letters) {
			this.loader[i] = new Image();
			this.loader[i].src = this.mapElementSrcTemplate.replace('{#letter}',letters[i]);
		}
		
	}
	
	this.init = function () {
		this.legendElement.find('tr:not(.header_row)')
			.children()
				.bind(
					'click',
					{instance: this},
					this.showFloorplan
				);

		this.legendElement.find('tr:not(.header_row)')
			.bind(
				'mouseover',
				{instance: this},
				this.itemOver
			)
			.bind(
				'mouseout',
				{instance: this},
				this.itemOut
			);
		this.preload();
	}
	this.init();

}