/**********************************************************
Author:
Adam Barry
Klestrup partners
www.klestrup-partners.dk

Date: August 8 2009

© 2009 Adam Barry, all rights reserved
-----------------------------------------------------------

Name:
popupWindow script

-----------------------------------------------------------
Description:
Functions that enable an integrated popup-window which
sits in front of the normal page content.

-----------------------------------------------------------
Usage:
Simply place a link to the this script in the head-section
of the XHTML page. The script will then automatically
execute on page load.

<script type="text/javascript" src="popupWindow.js"></script>

-----------------------------------------------------------
Example:
<script type="text/javascript" src="popupWindow.js"></script>


<a href="javascript:popup(false,false,false)">Open popup window</a>
<a href="javascript:popup('<h2>New HTML</h2><p>This text has been injected into the popup-window.</p>',false,2500)">Open time-limited popup window</a>


<div class="popupWindow">
	<div class="popupContainer">

		<div class="popup">
			<a class="close"><span>Close</span></a>

			<div class="popupContent">
				<h2>User notification</h2>
			</div>

		</div>

	</div>
</div>	

-----------------------------------------------------------
Dependencies:
windowOnLoad.js

Optional:
keyHandler.js

**********************************************************/

var popupWindow;
var popupContent;

function initPopup() {
	if (!document.getElementsByTagName) return;

	var divs = document.getElementsByTagName("div");

	for (var i = 0; i < divs.length; i++) {
		if (divs[i].className.indexOf('popupWindow') > -1) {
			var me = divs[i];
			popupWindow = me;
			if(typeof addKeyAction == 'function') {	
				addKeyAction(me,function(){hidePopup();},13);
				addKeyAction(me,function(){hidePopup();},27);
				addKeyAction(me,function(){hidePopup();},32);
			}
			break;
		}
	}	

	if (!popupWindow) addPopupWindow();

	var anchors = popupWindow.getElementsByTagName("a");

	for (var i = 0; i < anchors.length; i++) {

		if (anchors[i].className.indexOf('close') > -1) {
			var me = anchors[i];			
            me.onclick = function() {
				hidePopup();
			}
				break;
		}
	}

	var divs = popupWindow.getElementsByTagName("div");

	for (var i = 0; i < divs.length; i++) {
		if (divs[i].className.indexOf('popupContent') > -1) {
			popupContent = divs[i];
			break;
		}
	}

}addLoadEvent(function(){initPopup();});


function addPopupWindow() {
	popupStructure = document.createElement('div');

	popupStructure.innerHTML = "<div class=\"popupContainer\"><div class=\"popup\"><a class=\"close\"><span></span></a><div class=\"popupContent\"><h2>User notification</h2></div></div></div>";

	document.body.appendChild(popupStructure);
	popupStructure.className = "popupWindow";

	popupWindow = popupStructure;
}



function hidePopup() {
    
    popupWindow.className = popupWindow.className.replace(new RegExp("active\\b"), "");

	if(typeof removeActiveElement == 'function') {
		removeActiveElement();
	}
}


function popupTimer(time) {
	window.setTimeout(hidePopup,time);
}

function popup(message,classInformation,keepVisibleTime) {

    if (!popupWindow) return;

	if (message && popupContent) {
		popupContent.innerHTML = message;
	}

	if (classInformation) {
		popupWindow.className += classInformation;
	}

	popupWindow.className += " active";

	if (keepVisibleTime) {
		popupTimer(keepVisibleTime);
	}

	if(typeof setActiveElement == 'function') {
		setActiveElement(popupWindow);
	}
}
