function getElementsByClassName(needle) {
	var my_array = document.getElementsByTagName("*");
	var retvalue = new Array();
	var i;
	var j;
	for (i=0,j=0;i<my_array.length;i++) {
		var c = " " + my_array[i].className + " ";
		if (c.indexOf(" " + needle + " ") != -1) retvalue[j++] = my_array[i];
	}
	return retvalue;
}

function brightbox(state,dialog) {
	var dialog = 'hidden-'+dialog;
	var overlay = document.getElementById('overlay');
	var brightbox = document.getElementById(dialog);

	if(state=='show') {
		// Resize the overlay to fit the height of the page.
		var documentHeight = document.getElementsByTagName('body')[0].offsetHeight;
		overlay.style.height = documentHeight+'px';

		// Display the overlay.
		overlay.style.opacity = 0;
		overlay.style.filter = 'alpha(opacity=0)';
		overlay.style.display = 'block';

		if(typeof overlay.fadeIn != 'function')
			overlay.fadeIn = fadeIn;

		overlay.fadeIn(0.6);

		overlay.style.top = 0;
		overlay.style.left = 0;
		overlay.style.zIndex = 3;

		// Display the brightbox.
		brightbox.style.display = 'block';
		brightbox.style.zIndex = 4;

		var divwidth = (brightbox.offsetWidth);
		var divheight = (brightbox.offsetHeight);

		// Animate.
		brightbox.style.width = 0;
		brightbox.style.height = 0;

		intervalwidth = divwidth / 10;
		intervalheight = divheight / 10;
		//alert("intervalwidth: "+intervalwidth+", intervalheight: "+intervalheight);

		if(typeof brightbox.animate != 'function')
			brightbox.animate = animate;

		brightbox.animate(intervalwidth,intervalheight,dialog);

	} else if (state=='hide') {
		// Hide the overlay.
		overlay.style.display = 'none';

		// Hide all brightboxes on the page.
		brightboxes = getElementsByClassName("brightbox");
		for(var i=0;i<brightboxes.length;i++)
			brightboxes[i].style.display = 'none';
	}
}

function animate(intervalwidth,intervalheight,dialog) {
		var container = document.getElementById(dialog).childNodes[1];
		container.style.display = 'none';

		if (parseInt(this.style.width) >= 690 && parseInt(this.style.height) >= 470) {
			// Fade in the brightbox content.
			container.style.opacity = 0;
			container.style.filter = 'alpha(opacity=0)';
			container.style.display = 'block';

			if(typeof container.fadeIn != 'function')
				container.fadeIn = fadeIn;

			container.fadeIn(1);
			return;
		}

		// Reposition the div.
		var viewportwidth, viewportheight;

		if (typeof window.innerWidth != 'undefined') {
			viewportwidth = window.innerWidth;
			viewportheight = window.innerHeight;
		}
		else if (typeof document.documentElement != 'undefined'
			&& typeof document.documentElement.clientWidth !='undefined'
			&& document.documentElement.clientWidth != 0) {
				viewportwidth = document.documentElement.clientWidth;
				viewportheight = document.documentElement.clientHeight;
		}
		else {
			viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
			viewportheight = document.getElementsByTagName('body')[0].clientHeight;
		}
		//alert('Your viewport dimensions are: '+viewportwidth+'x'+viewportheight);

		var divwidth = (this.offsetWidth);
		var divheight = (this.offsetHeight);

		if (document.documentElement.scrollTop > 0 && document.body.scrollTop == 0)
			scrollDist = document.documentElement.scrollTop;
		else if (document.documentElement.scrollTop == 0 && document.body.scrollTop > 0)
			scrollDist = document.body.scrollTop;
		else
			scrollDist = 0;

		offsettop = (viewportheight / 2) - (divheight / 2) + scrollDist;
		offsetleft = (viewportwidth / 2) - (divwidth / 2);

		this.style.top = offsettop+'px';
		this.style.left = offsetleft+'px';

		// Re-size the div.
		this.style.width = parseInt(this.style.width)+intervalwidth+'px';
		this.style.height = parseInt(this.style.height)+intervalheight+'px';
		//alert('new width: '+brightbox.style.width+', new height: '+brightbox.style.width);

		setTimeout("document.getElementById('"+this.id+"').animate(intervalwidth,intervalheight,'"+dialog+"');",100);
}

function fadeIn(finalOpacity) {
	if (this.style.opacity > finalOpacity || this.style.filter == 'alpha(opacity=60)')
		return;
	this.style.opacity = parseFloat(this.style.opacity) + 0.05;

	// Internet Explorer
	ieInterval = 0.05*100;
	var ieOpacity = this.style.filter;
	var match = /[0-9]+/.exec(ieOpacity);
	var iestring = 'alpha(opacity = '+(parseFloat(match)+parseFloat(ieInterval))+')';
	this.style.filter = iestring;

	setTimeout("document.getElementById('"+this.id+"').fadeIn("+finalOpacity+");",100);
}
