addLoadEvent(initHoverImages);
addLoadEvent(initExpandingTextareas);
addLoadEvent(initExternalLinks);

var lsTimer;
var lsOver;
var lsTw;

function bookmarkUs(url, title) {
	
	if (window.sidebar) {
		window.sidebar.addPanel(title, url, "");
	} else if(window.opera && window.print) {
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	} else if(document.all) {
		window.external.AddFavorite(url, title);
	}
}

function initLoudspeaker() {
	var loudspeaker = document.getElementById("loudspeaker");
	var lis = loudspeaker.getElementsByTagName("li");
	
	lsTw = 0;
	for(var i = 0; i < lis.length; i++) {
		lsTw += parseInt(lis[i].style.width);
		lis[i].onmouseover = function() { clearTimeout(lsTimer); lsOver = true; }
		lis[i].onmouseout = function() { lsTimer = window.setTimeout('animLoudspeaker()', 50); lsOver = false; }
	}
	lsTimer = window.setTimeout('animLoudspeaker()', 50);
}

function animLoudspeaker() {
	var loudspeaker = document.getElementById("loudspeaker");
	var lis = loudspeaker.getElementsByTagName("li");
	if(!lsOver) {
		for(var i = 0; i < lis.length; i++) {
			var x = lis[i].style.left;
			var w = lis[i].style.width;
			x = parseInt(x); x--;
			w = parseInt(w);
			w += 20;
			if(x < -w) { x += lsTw; }
			lis[i].style.left = x + "px";
		}
	}
	lsTimer = window.setTimeout('animLoudspeaker()', 50);
}

function initExternalLinks() {
	var hyperlinks = getElementsByRelName("external");
	for(var i = 0; i < hyperlinks.length; i++) {
		hyperlinks[i].target = "_blank";
	}
}

function initExpandingTextareas() {
	var textareas = getElementsByClassName("expanding");
	for(var i = 0; i < textareas.length; i++) {
		textareas[i].onkeyup = expand;
		expand.call(textareas[i]);
		textareas[i].rows = 5;
	}
}
	
function expand() {
	var el = this;
	var lines = el.value.replace((new RegExp(".{"+ el.cols + "}","g")),"\n").split("\n");
	if(lines.length > 5) {
		if(lines[lines.length - 1] == "") lines.length--;
		lines = lines.length;
		el.rows = lines + 1;
	}
}

function initHoverImages() {
	var hoverImages = getElementsByClassName("hoverImage");
	for(var i = 0; i < hoverImages.length; i++) {
		hoverImages[i].onclick = function() { doHoverImage(this); }
	}
}

/*function doHoverImage(image) {
	var profileImage = document.getElementById("profileImage");
	profileImage.src = image.src;
	profileImage.alt = image.alt;
	return false;
}*/

function doHoverImage(image) {
	var imagePopup = document.getElementById("imagePopup");
	
	var scrolledY;
	if(self.pageYOffset) {
		scrolledY = self.pageYOffset;
	} else if(document.documentElement && document.documentElement.scrollTop) {
		scrolledY = document.documentElement.scrollTop;
	} else if(document.body) {
		scrolledY = document.body.scrollTop;
	}

	var centerY;
	if(self.innerHeight) {
		centerY = self.innerHeight;
	} else if(document.documentElement && document.documentElement.clientHeight) {
		centerY = document.documentElement.clientHeight;
	} else if(document.body) {
		centerY = document.body.clientHeight;
	}

	var y = scrolledY + (centerY - 270) / 2;

	imagePopup.firstChild.src = image.src;
	imagePopup.firstChild.alt = image.alt;

	imagePopup.style.top = y + "px";
	imagePopup.style.display = "block";

	imagePopup.firstChild.onclick = function() { this.parentNode.style.display = "none"; }
}

// Helper functions...
function selectText(elementID) {
	var element = document.getElementById(elementID);
	if(element) {
		element.select();
	}
	return false;
}

function setOpacity(element, opacity) {
	element.style.opacity = opacity / 10;
	element.style.filter = 'alpha(opacity=' + opacity * 10 + ')';
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if(typeof window.onload != 'function') { window.onload = func; } else {
		window.onload = function() {
			if(oldonload) { oldonload(); }
			func();
		}
	}
}

function getElementsByClassName(classname) {
	var node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + classname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i = 0, j = els.length; i < j; i++) if(re.test(els[i].className)) a.push(els[i]);
	return a;
}

function getElementsByRelName(relname) {
	var node = document.getElementsByTagName("body")[0];
	var a = [];
	var re = new RegExp('\\b' + relname + '\\b');
	var els = node.getElementsByTagName("*");
	for(var i = 0, j = els.length; i < j; i++) if(re.test(els[i].rel)) a.push(els[i]);
	return a;
}

