/*	Wicked JavaScript things by Anatoli Papirovski at fecklessmind.com.
	Hire that guy, people.  -Rob. */
var duration = 500; // set the time in miliseconds

/* don't change the rest */

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements);
}

/*
	And that's all that belongs to them, ladies and gentlemen.
*/

var commentsInt = null;
var moTimeout = null;
var comInterval = 20;

window.onload = function() {
	if (!document.getElementsByTagName || !document.addEventListener) return false;
	prepareComments();
}

prepareComments = function() {
	var element = getElementsByClassName(document, "div", "comment-data");
	for(var i = 0; i < element.length; i++) {
		var popupDiv = element[i];
		popupDiv.getElementsByTagName('DIV')[0].style.opacity = 0;
		popupDiv.onmouseover = triggerComments;
		popupDiv.onmouseout = prepareUntrigger;
	}
}

prepareUntrigger = function() {
	var el = this.getElementsByTagName('DIV')[0];
	el.style.display = "block";
	turnOff = function() {untriggerComments(el);}
	moTimeout = window.setTimeout("turnOff()", 200);
}

triggerComments = function(el) {
	if (moTimeout != null) {
		window.clearTimeout(moTimeout);
		moTimeout = null;
	}
	el = this.getElementsByTagName('DIV')[0];
	if (el.style.opacity == 0 && commentsInt == null) {
		el.style.display = "block";
		startTime = (new Date).getTime();
		openComm = function() {animate(el,0,0.99);}
		commentsInt = setInterval("openComm()", comInterval);
	}
}

untriggerComments = function(el) {
	if (el.style.opacity == 0.99 && commentsInt == null) {
		startTime = (new Date).getTime();
		closeComm = function() {animate(el,0.99,0);}
		commentsInt = setInterval("closeComm()", comInterval);
	}
}

animate = function(element, from, to) {
	var time  = (new Date).getTime();
	if(time >= duration+startTime) {
		now = to;
		clearInterval(commentsInt);
		commentsInt = null;
		if (to == 0)  {
			element.style.display = "none";
		}
	} else {
		var tPos = (time - startTime) / duration;
		now = transition(tPos) * (to-from) + from;
	}
	element.style.opacity = now;
}

transition = function(pos){
	return ((-Math.cos(pos*Math.PI)/2) + 0.5);
	//this transition is from script.aculo.us (and I borrowed it from moo.fx.js)
}
