//-- Preload images to cure the browser flickering issue
if (document.images) {
	var aryImages = new Array(
		"/images/spacer.gif",
		"/images/btn_blue.png",
		"/images/btn_disabled.png",
		"/images/btn_ltgray.png"
	);
	var aryPreload = new Array();
	for (var img=0; img<aryImages.length; img++) {
		aryPreload[img] = new Image();
		aryPreload[img].src = aryImages[img];
	}
}

//-- Opens links with the "external" rel attribute in a new window (CSS Compliant)
function initLinks() {
	if (document.getElementsByTagName) {
		var a = document.getElementsByTagName("A");
		for (var i=0; i<a.length; i++) {
			if (a[i].getAttribute("href") && a[i].getAttribute("rel") == "external") {
				a[i].target = "_blank";
			}
		}
	}
}

function switchImage(id, img, caption) {
	try {
		document.getElementById(id + "_link").href = img;
		document.getElementById(id + "_link").title = caption;
		document.getElementById(id + "_image").src = "webitems/thumbnail.aspx?image=" + img + "&width=189";
		document.getElementById(id + "_image").alt = caption;
		document.getElementById(id + "_caption").innerHTML = caption;
		return false;
	} catch (err) {
		return true;
	}
}

function fixSlideshowOverflow() {
	$("#slideshow-inner .slideshowDescriptionBlock").has(".slideshowDescriptionContent").each(function(){
		try {
			var $title = $(this).children(".slideshowDescriptionTitle").eq(0);
			var $content = $(this).children(".slideshowDescriptionContent").eq(0);
			var targetHeight = Math.max(0, $(this).height() - ($title.height() == null ? 0 : $title.height()));

			if ($content.height() > targetHeight) {
				var failsafe = 0;
				var oldHtml = $content.html();
				var newHtml = oldHtml.replace(/<([^>]+)>/g, " ").replace(/&nbsp;/g, " ").replace(/\s{2,}/g, " ");
				
				$content.html(newHtml);
				while ($content.height() > targetHeight) {
					failsafe++;
					
					//-- cut off chunks to save time
					if ($content.height() > (targetHeight * 1.5)) {
						newHtml = newHtml.substr(0, Math.round(newHtml.length/1.5));
					}
					
					var position = newHtml.lastIndexOf(" ");
					if (position <= 0 || failsafe > 50) {
						break;
					}
					newHtml = newHtml.substr(0, position).replace(/^\s+|\s+$/g, "") + "...";
					$content.html(newHtml);
				}
			}
		} catch (er) { }
	});
}

$(document).ready(function(){
	$("#nav ul li.navitem").has("ul").hover(
		function() {
			var navitem = $(this);
			navitem.clearQueue();
			navitem.delay(250);
			navitem.queue(function(){
				navitem.addClass("hover");
				navitem.dequeue();
			});
		},
		function() {
			var navitem = $(this);
			navitem.clearQueue();
			navitem.delay(250);
			navitem.queue(function(){
				navitem.removeClass("hover");
				navitem.dequeue();
			});
		}
	);
	//-- makes drop-down navigation work on iOS devices
	if (navigator.userAgent.match(/Mobile/i) && navigator.userAgent.match(/Safari/i)) {
		$(document).bind("touchmove", function(){
			$("#nav ul li.hover").mouseout();
		});
		$("#nav ul li.navitem").has("ul").unbind("mouseenter");
		$("#nav ul li.navitem").has("ul").children("a.navlink").click(function() {
			var parent = $(this).parent("li.navitem");
			if (parent.hasClass("hover")) {
				return true;
			}
			parent.clearQueue();
			parent.delay(250);
			parent.queue(function(){
				parent.addClass("hover");
				parent.dequeue();
			});
			return false;
		});
	}
});
