// Controls behaviour of message panels

addLoadEvent( fInitMessagePanels )

function fInitMessagePanels() {
	var oDivs = document.getElementsByTagName( "div" );
	var oDiv, i = 0;
	
	// Locate the message panels,
	while ( oDiv = oDivs[i++] ){
		if ( oDiv.className.indexOf( "MessagePanel" ) != -1 ) {

			var oButtons = oDiv.getElementsByTagName( "button" );
			var oButton, j = 0;
			// Locate buttons and assign behaviour
			while ( oButton = oButtons[j++] ) {
				
				// Assign close behaviour
				if ( oButton.className.toLowerCase() == "ok" ) {
					oButton.onclick = mCloseHandler;
					oButton.focus();
				}
			}
			
			// Locate images and assign behaviour
			var oImages = oDiv.getElementsByTagName( "img" );
			var oImage, k = 0;
			while ( oImage = oImages[k++] ) {
				if ( oImage.className.toLowerCase() == "close" ) {
					oImage.onclick = mCloseHandler;
				}
			}
			
			// Locate the span for the count and assign the countdown function
			var oSpans = oDiv.getElementsByTagName( "span" );
			var oSpan, m = 0; 
			while ( oSpan = oSpans[m++] ) {
				if ( oSpan.className == "counter" ) {
					oGod.messageTimer = new Object();
					// Number of seconds to countdown
					oGod.messageTimer.count = 8;
					oGod.messageTimer.span = oSpan;
					// Number of seconds to countdown
					oGod.messageTimer.span.innerHTML = "8";
					// Assign countdown function
					oGod.messageTimer.tick = function countDown() {
						oGod.messageTimer.count--;
						oGod.messageTimer.span.innerHTML = oGod.messageTimer.count;
						if ( oGod.messageTimer.count < 1 ) {
							window.clearInterval( oGod.messageTimer.id );
							mClose( oGod.messageTimer.span );
							oGod.messageTimer = null;
						}
					};
					oGod.messageTimer.id = window.setInterval( oGod.messageTimer.tick, 1000 );
				} 
			}
		}
	}

	// Locates the messagepanel associated with the event and calls mClose to remove it
	function mCloseHandler(){
		var oDiv = mLocateMessagePanel( this );
		if ( oDiv ) { 
			oDiv.parentNode.removeChild( oDiv );
		}
	}
	
	function mLocateMessagePanel( elem ){
		while ( elem.tagName != "div" && elem.className.indexOf( "MessagePanel" ) == -1 && elem != document.body ) {
			elem = elem.parentNode;
		}
		if ( elem == document.body ) {
			return false;
		}
		return elem;
	}
	
	// Removes a message panel completely from the tree
	function mClose( oDiv ) {
		var oDiv = mLocateMessagePanel( oDiv );
		if ( oDiv ) {
			oDiv.parentNode.removeChild( oDiv );
		}
	}
}

