var loadCallbacks = [];
var unloadCallbacks = [];
(function() {
	var recoverTimeout, index = 0, u = navigator.userAgent;
	function runLoadCallbacks() {
		recoverTimeout = setTimeout(runLoadCallbacks, 0);
		while (index < loadCallbacks.length) loadCallbacks[index++]();
		clearTimeout(recoverTimeout);
	}
	function runUnloadCallbacks() {
		for (var i=0; i<unloadCallbacks.length; i++) unloadCallbacks[i]();
	}
	window.onunload = runUnloadCallbacks;
	if (/webkit/i.test(u)) setTimeout(function DOMContentLoaded() {
		var dr = document.readyState;
		if (dr=="loaded" || dr == "complete") runLoadCallbacks();
		else setTimeout(DOMContentLoaded, 10);
		}, 10);
	else if (/opera/i.test(u) || (/mozilla/i.test(u) && !/compati/.test(u)))
		document.addEventListener("DOMContentLoaded", runLoadCallbacks, false);
	else if (/*@cc_on!@*/false) (function DOMContentLoaded(){
		var t=document.createElement("doc:rdy"), e;
		try { t.doScroll("left"); }
		catch(e) { setTimeout(DOMContentLoaded, 0); return; }
		runLoadCallbacks();
		t = null;
		})();
	else
		window.onload = runLoadCallbacks;
})();


loadCallbacks.push(function inputHelpSetup() {
	var inputs = document.getElementsByTagName("input"), len = inputs.length;
	var textInputs = [];
	function onfocus() {
		if (!this.isEmpty) return;
		this.className = this.baseClassName;
		this.value = "";
		this.isEmpty = false;
	}
	function onblur() {
		if (this.value) return;
		this.className = this.baseClassName + " empty";
		this.value = this.getAttribute("title");
		this.isEmpty = true;
	}
	unloadCallbacks.push(function clearInputs() {
		for (var i=0; i<textInputs.length; i++) {
			var input = textInputs[i];
			if (input.isEmpty) input.value = "";
		}
	});
	for (var i=0; i<len; i++) {
		var input = inputs[i];
		if (input.getAttribute("type").toLowerCase() != "text" || !input.getAttribute("title")) continue;
		textInputs.push(input);
		input.baseClassName = input.className;
		input.onfocus = onfocus;
		input.onblur = onblur;
		input.onblur();
		input.blur();
	}
});

loadCallbacks.push(function pageTrackerSetup() {
	var gaJsHost = (document.location.protocol == "https:") ? "s://ssl" : "://www";
	var gaJs = document.createElement("script");
	gaJs.type = "text/javascript";
	gaJs.onload = function() {
		try {
			var pageTracker = _gat._getTracker("UA-2990788-2"), e;
			pageTracker._trackPageview();
		} catch(e){ }
	}
	gaJs.src = "http"+gaJsHost+".google-analytics.com/ga.js";
	document.getElementsByTagName("head")[0].appendChild(gaJs);
});

loadCallbacks.push(function initCarousel() {
	var carousel = document.getElementById("carousel");
	if (!carousel) return;
	var slider = document.getElementById("carousel_slider");
	var row = document.getElementById("carousel_row");
	var tiles = row.childNodes;
	carousel.className = "enabled";
	var leftButton = document.createElement("a");
	var rightButton = document.createElement("a");
	
	leftButton.setAttribute("id", "carousel_button_left");
	leftButton.href = "javascript:void(0)";
	rightButton.setAttribute("id", "carousel_button_right");
	rightButton.href = "javascript:void(0)";
	carousel.appendChild(leftButton);
	carousel.appendChild(rightButton);
	
	var preload_index = 0;
	var preload_classes = ["L2","L3","R2","R3","V2","BL"];
	var temp_button = document.createElement("div");
	temp_button.setAttribute("id", "temp_button");
	document.body.appendChild(temp_button);
	function preloadButtons() {
		if (preload_index < preload_classes.length) {
			temp_button.className = preload_classes[preload_index++];
			setTimeout(preloadButtons, 0);
		} else {
			temp_button.parentNode.removeChild(temp_button);
		}
	}
	preloadButtons();
	
	
	for (var i = tiles.length - 1; i >= 0; i--) {
		var tile = tiles[i];
		if (tile.tagName != "TD") row.removeChild(tile);
	}
	
	var len = tiles.length;
	if (!len) return;
	while (len < 6) {
		for (var i=0; i<len; i++)
			row.appendChild(tiles[i].cloneNode(true));
		len = tiles.length;
	}
	
	var WIDTH = tiles[1].offsetLeft - tiles[0].offsetLeft;
	slider.style.left = -WIDTH + "px";
	row.insertBefore(row.lastChild, row.firstChild);
	var speed = 0;
	var SNAP_X = 1;
	var TENSION = 0.05;
	var MAX_ACC = 5;
	var targetX = slider.offsetLeft;
	
	function step() {
		var x = slider.offsetLeft;
		var dx = targetX - x;
		if (dx > -SNAP_X && dx < SNAP_X) {
			speed = 0;
			x = targetX;
			leftButton.className = "";
			rightButton.className = "";
		} else {
			var newSpeed = dx * TENSION;
			if (newSpeed - speed > MAX_ACC)
				speed += MAX_ACC;
			else if (speed - newSpeed > MAX_ACC)
				speed -= MAX_ACC;
			else
				speed = newSpeed;
			if (speed > 0) {
				speed = Math.ceil(speed);
				leftButton.className = "active";
				rightButton.className = "";
			} else {
				speed = Math.floor(speed);
				leftButton.className = "";
				rightButton.className = "active";
			}
			x += speed;
		}
		
		while (x > -WIDTH) {
			x -= WIDTH;
			targetX -= WIDTH;
			row.insertBefore(row.lastChild, row.firstChild);
		}
		
		while (x <= -(WIDTH+WIDTH)) {
			x += WIDTH;
			targetX += WIDTH;
			row.appendChild(row.firstChild);
		}
		
		slider.style.left = x + "px";
		if (speed) setTimeout(step, 0);
	}
	
	leftButton.onclick = function() {
		leftButton.className = "active";
		targetX += WIDTH;
		if (!speed) step();
		return false;
	}
	rightButton.onclick = function() {
		rightButton.className = "active";
		targetX -= WIDTH;
		if (!speed) step();
		return false;
	}
	
});

//*/