/**
 * @author wparkes
 */

var config = {
	regions: [
		{id:'default' , src:'uk_map.gif', href: ''},
		{id:'south-east' , src:'south_east.gif', href: 'south-east.html'},
		{id:'midlands' , src:'midlands.gif', href: 'midlands.html'},
		{id:'south-west' , src:'south_west.gif', href: 'south-west.html'},
		{id:'north' , src:'north_scotland.gif', href: 'north.html'},
		{id:'ireland' , src:'ireland.gif', href: 'ireland.html'}
	],
	timings: { loadWait: 1000, preloadWait: 250, fadeContent: 800, fadePreload: 400 }
};

$(document).ready(function() {
	// do stuff when DOM is ready

	$('#region').change(function () {
		var value = $(this).val();
		if (value != '') results.loadContent(value);
	});

	$('#region-submit').hide();

	results.init(config.regions);
	$('#aligner').css('min-height', 860);// prevent scrollbar appearing on content load
});

var results = {
	images: {},
	hrefs: {},
		
	init: function (imageList) {
		var that = this;
		var images = that.images;
		var idList = [];
		var imageElem = $('#region-map');
		var img;
		
		for (var i = 0; i < imageList.length; i++) {
			img = new Image();
			img.src = 'images/map/'+ imageList[i].src;
			var id = imageList[i].id;
			idList[i] = id;
			images[id] = img;
			that.hrefs[id] = imageList[i].href;
		}
		
		for (var i = 0; i < idList.length; i++) {
			if (idList[i] != 'default') {
				$('#' + idList[i])
					.mouseover(function () {
						imageElem.attr('src', images[$(this).attr('id')].src);
					})
					.mouseout(function () {
						imageElem.attr('src', images['default'].src);
					})
					.click(function (e) {
						var areaElem = $(this);
						areaElem.blur();
						e.preventDefault();
						var region = getValueFromParams('region', areaElem.attr('href'));
						var regionOptions = $('#region').find('option');
						regionOptions.each(function () {
							var option = $(this);
							if (option.val() == region) option.attr('selected', 'selected');
						});
						that.loadContent(region);
					});
			}
		}
	},

	loadContent: function (criteria) {
		var that = this;
		var url = that.hrefs[criteria] || '';
		
		if (!url) return false;

		// empty current results here
		$('#content').empty().hide();
		
		// show preloader here
		//if ($('#preloader').length === 0) {
		//	$('#content').after('<div id="preloader" style="display:none">loading...</div>');
		//}
		//$('#preloader').fadeIn(config.timings.fadePreload);

		$.ajax({
			url: 'results/' + url,
			type: 'GET',
			success: results.loadContentHandler
		});
		return true;
	},

	loadContentHandler: function (data, status) {
		// append the returned data here
		setTimeout(function () {
			$('#content').append(data).fadeIn(config.timings.fadeContent);
			createPrintButton();
			setTimeout(function () {
				$('#preloader').fadeOut(config.timings.fadePreload);
			}, config.timings.preloadWait);
		}, config.timings.loadWait);
	}
};

function createPrintButton () {
	$('#content-heading').after('<a class="print" href="#print" onclick="window.print();this.blur();return false;"></a>');
}

function getValueFromParams (name, params) {
	var res = params.match(new RegExp('[\\?&]'+ name +'=([^&#]*)'));
    return (res !== null)? res[1] : '';
}