/**
 * Gets object by Id (wrapper for dom variations in browsers)
 *
 * @access public
 * @return TBD              
 */
function getObjectById(id)
{
	var obj = false;
	if(document.getElementById){
		obj = document.getElementById(id);}
	else if(document.all){
		obj = document.all[id];}
	else if(document.layers){
		obj = document.layers[id];}
		
	return obj;
}

function showLinkIds() {
	var theStream = getObjectById('stream');
	links = theStream.getElementsByTagName('li');
	msg = new Array;
	for (var i=0;i<links.length;i++) {
		msg.push(links[i].getAttribute('id'));
	}
	alert(msg.join('\n'));
}

function moveStream() {
	if(streamMotion) {
		var theStream = getObjectById('stream');
		links = theStream.getElementsByTagName('li');
		linkIndex = 0; //(links.length-1);
		parentLinkList = links[0].parentNode;
		oldLink = parentLinkList.removeChild(links[linkIndex]);
		parentLinkList.appendChild(oldLink);
		
		// call this method again
		setTimeout('moveStream()',2200);
	}
}


var streamMotion = true;
function pauseStream() {
	if(streamMotion) {
		streamMotion = false;
	} else {
		streamMotion = true;
		moveStream();
	}
}


/**
 * shows one object overtop of the trigger object - much like overlib
 *
 */
function textBoxDisplay(triggerObj,displayObj) {
	triggerObj.onmouseover = function(e) {
		// get mouse position
		if (e.pageX || e.pageY) 	{
			posx = e.pageX;
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	{
			posx = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		
		displayObj.style.visibility = 'visible';
		//displayObj.style.top = (posy+10)+'px';
		//displayObj.style.left = (posx+10)+'px';
	}
	triggerObj.onmouseout = function(e) {
		displayObj.style.visibility = 'hidden';
	}
}


/**
 * 
 */
function setupDescriptions() {
	var linkDescriptions = getElementsByClassName(document,'*','linkDescription');
	for(var i=0;i<linkDescriptions.length;i++) {
		var formContainer = linkDescriptions[i].parentNode;
		//if(hasClass(formContainer,'clnRow')) {
			//var labels = formContainer.getElementsByTagName('a');
			textBoxDisplay(linkDescriptions[i].previousSibling, linkDescriptions[i]);
		//}
	}
}

/**
 * getElementsByClassName
 *	- 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)
}


/**
 * 
 */
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
    	oldonload();
      func();
    }
  }
  // this helps with a bug where the controllers are not redrawn after resizing
  // but does it mess up any other functions using this function? - dwc
  window.onresize = window.onload
}

addLoadEvent(setupDescriptions);
//addLoadEvent(moveStream);
