var tab_selected = 0;
var offertePage = "11_4";
var PREFIX = "";
var pictureMap = {};

function reinitialise_header(callback) {
	$("#topMenu").find("a").removeClass("selected");
	$("#topMenu").find("#tab_" + tab_selected).addClass("selected");
	$("#topMenu a.headerLink").click(header_clicked);
	
	if (callback)
		callback.call(this);
}

function showProcessing() {
	var busyMessage = "<div class='centered'><img src='" + PREFIX
			+ "/images/processing.gif'></div>";
	$(this).html(busyMessage).show();
}

function hideProcessing() {
	$(this).hide();
}

function load_page(pageId, tab, reload_header, callback) {
	var contentsDiv = $("#loaded_contents");
	contentsDiv.fadeOut(50, function() {
		showProcessing.call(contentsDiv.get(0));
		$.get(PREFIX + '/load_page.php', {
			page : pageId
		}, function(data) {
			contentsDiv.fadeOut(50, function() {
				hideProcessing.call(contentsDiv.get(0));
				$(this).html(data).fadeIn(50);
				if (document.preload)
					document.preload.call(this, data);
			});
		});
	});

	if (reload_header && (tab !== undefined)) {
		$("#topMenu").load(PREFIX + '/load_header.php?header=' + tab, {},
				function() {
					tab_selected = pageId;
					reinitialise_header(callback);
				});
	}

}

function menuButtonClicked(button, callback) {
	$("div.left div.menuItem").removeClass("selected");
	$("div.left div.menuItem a.menuLink").removeClass("selected");
	$(button).addClass("selected");
	$(button).find("a.menuLink").addClass("selected");
	
	var pageNumber = extractPageId(button.id);
	load_page(getCurrentPage(), getCurrentHeader(), true, callback);
}

function extractPageId(str) {
	if (!str)
		return str;

	var tmp = str.substr(0, str.lastIndexOf('_'));
	return tmp.substr(tmp.lastIndexOf('_') + 1);
}

function extractHeaderId(str) {
	if (!str)
		return str;
	return str.substr(str.lastIndexOf('_') + 1)
}

function getCurrentPage() {
	var tmp = $("div.left").find("div.selected").get(0);
	if (!tmp)
		return;

	var selectedId = tmp.id;

	return extractPageId(selectedId);
}

function getCurrentHeader() {
	var tmp = $("div.left").find("div.selected").get(0);
	if (!tmp)
		return;

	var selectedId = tmp.id;
	return extractHeaderId(selectedId);
}

function header_clicked(event) {
	event.preventDefault();
	event.returnValue = false;

	if ($(this).hasClass("selected"))
		return;

	if (tab_selected = extractHeaderId(this.id)) {
		reinitialise_header();
		load_page(tab_selected, getCurrentHeader(), false);
	}
}

function prepareDocument() {
	// Start with resizing some parts...
	// var height = $("div:first").height();
	// 
	// var content = $(".contents_div")
	// content.height(height - content.offset().top);
	//   
	// var menu = $("#main_div"), left_buttons = menu.find(".left");
	// left_buttons.height(height - menu.find(".left_footer").height() -
	// left_buttons.offset().top);

	var i = 0;
	$('div.right').find('.pictureDiv').each(function() {
		var image = this;
		this.image_id = i++;
	});

	var setupImages = function() {

		// Set up the function that refreshes the images.
		var funcRef = function() {
			var images = $('div.right').find('.pictureDiv');
			var idx = Math.round(Math.random() * (images.length - 1));
			var image = images[idx];

			while (image.lastRefreshed) {
				idx = Math.round(Math.random() * (images.length - 1));
				image = images[idx];
			}

			// Reset lastRefreshed to false.
			for ( var i = 0; i < images.length; i++) {
				images[i].lastRefreshed = false;
                        }

			// Indicate that this image is the last refreshed one.
			image.lastRefreshed = true;

			$.post(PREFIX + '/getNewImage.php', {
				index : image.image_id
			}, function(res) {
				var data = null;
				try {
					data = JSON.parse(res);
				} catch (e) {
					return;
				}

				if (data.success) {
				  var toBeReplaced = $(image).find("img").attr("src", PREFIX + "/pictures/" + data.url);
				  /*$(image).fadeOut(500, function(){
				    $(this).fadeIn(500);
                                  }*/
				}
			});
		};

		setInterval(funcRef, 5000);
	}

	var checkreadyness = function() {
		var imgs = $("div.right").find("img");
		var ready = true;

		for ( var i = 0; i < imgs.length && ready; i++) {
			ready = ready && (imgs[i].complete || (typeof imgs[i].naturalWidth != "undefined" && imgs[i].naturalWidth > 0));
		}

		if (ready) {
			setupImages.call(this);
		} else {
			setTimeout(arguments.callee, 50);
		}
	}

	setTimeout(checkreadyness, 50);
}


function checkAreaLength(event, field, size) {
	return field.value = field.value.substring(0, size);
}

function fetchScript(scriptURL) {
	var errorCallback = function(request, textStatus, error) {
		alert("Error fetching script '" + scriptURL + "': Status " + textStatus
				+ ", error " + (error ? error.message : ""));
	};
	$.ajaxSetup({
		async : false,
		error : errorCallback
	});
	$.getScript(scriptURL);
	$.ajaxSetup({
		async : true,
		error : undefined
	});
}

function setSync() {
	$.ajaxSetup({
		async : false
	});
}
function setAsync() {
	$.ajaxSetup({
		async : true
	});
}

function linkToPage(page, header) {
	var buttons = $(".button");
	for ( var i = 0; i < buttons.length; i++) {
		if (buttons[i].id.match("menuButton_" + page)) {
			setSync();

			menuButtonClicked(buttons[i], function() {
				header_clicked.call($("#tab_" + header + ":first").get(0));
			});

			setAsync();
			break;
		}
	}
}

function scrollToTop() {
	$('.container')[0].scrollTop = 0;
}

