/**
 * @author TorahWeb
 * @copyright The TorahWeb Foundation, 2008. All Rights Reserved.
 * email Comments / Bugs to: torahweb at torahweb dot org
 */
TW_LIGHTBOX = new Object();
TW_LIGHTBOX.bgId =  "TW_LIGHTBOX.back";
TW_LIGHTBOX.background;
TW_LIGHTBOX.dialogId = "TW_LIGHTBOX.main";
TW_LIGHTBOX.dialog;
TW_LIGHTBOX.testTimer;
/**
 * 
 * @param {Object} htmltxt
 * @param {Object} id
 * @param {Object} width
 * @param {Object} height
 * @param {Object} fadein - boolean which indicates if lightbox should fade in or not
 */
TW_LIGHTBOX.createLightBox = function(htmltxt, width, height, fadein)
{
	//create background
	if(fadein)
	{
		TW_LIGHTBOX.createBackground("#FFFFFF", "1");
	}
	else
	{
		TW_LIGHTBOX.createBackground("#FFFFFF", "50");		
	}
	
	//create container div, add html to it, 
	var boxDiv = document.createElement('div');
	boxDiv.style.width=width;
	boxDiv.style.height=height;
	//boxDiv.style.height=height;
	var dims = TW_LIGHTBOX.getWindowSize();	
	var left = dims.width/2 - width/2;
	var top = dims.height/2 - height/2;
	boxDiv.style.position = "absolute";
	boxDiv.style.left = left + 'px';
	boxDiv.style.top = top + 'px';
	boxDiv.id = TW_LIGHTBOX.dialogId;
	boxDiv.style.backgroundColor="#FFFFFF";
	boxDiv.style.padding="10px";
	boxDiv.style.borderStyle="solid";
	boxDiv.style.borderColor="#1237A6"; //A2B6F2"; //"#333534";
	boxDiv.style.zIndex="901";	
	if(fadein)
	{
		try
		{
			boxDiv.style.MozOpacity=0;
			boxDiv.style.opacity= 0;
		}
		catch(e){}
		try
		{
			boxDiv.filters.alpha.opacity=0;
			boxDiv.style.filter = "alpha(opacity=0)";
		}
		catch(e){}		
	}
	boxDiv.innerHTML = htmltxt;
	document.body.appendChild(boxDiv);
	
	//workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=167801  from http://yuiblog.com/sandbox/yui/v230/examples/container/ffcursor.html
	boxDiv.style.overflow = "auto";
	boxDiv.style.display = "none";
	var fixDisplay = function()
	{
		boxDiv.style.display = "block";
		document.getElementById(TW_LIGHTBOX.dialogId).focus();
    }
    setTimeout(fixDisplay, 1);
	//end workaround	
	
	if(fadein)
	{
		TW_LIGHTBOX.fadeIn();
	}
}
/**
 * 
 */
TW_LIGHTBOX.closeLightBox = function()
{
	document.body.removeChild(document.getElementById(TW_LIGHTBOX.dialogId));
	document.body.removeChild(document.getElementById(TW_LIGHTBOX.bgId));
}
/**
 * from http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
 */
TW_LIGHTBOX.getWindowSize = function()
{
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return{width:myWidth, height:myHeight};
}
/**
 * 
 * @param {Object} id
 * @param {Object} color
 * @param {Object} opac - opacity
 */
TW_LIGHTBOX.createBackground = function(color, opac)
{
	var dialogbg = document.createElement('div');
	dialogbg.id = TW_LIGHTBOX.bgId;
	//set position - 0,0 and fill
	dialogbg.style.position = "absolute";
	dialogbg.style.display = "inline-block";
	dialogbg.style.minWidth = "100%";
	dialogbg.style.minHeight = "100%";
	dialogbg.style.left = 0;	
	dialogbg.style.top = 0;
	//set background and transparency
	dialogbg.style.backgroundColor = color;
	try
	{
		dialogbg.style.mozOpacity = "0." + opac;
		dialogbg.style.opacity = "0." + opac;		
	}
	catch(e){}
	try
	{
		dialogbg.style.filter = "alpha(opacity=" + opac + ")";		
	}
	catch(e){}
	
	dialogbg.style.zIndex="900";

	document.body.appendChild(dialogbg);	
}
/**
 * 
 * @param {Object} change
 */
TW_LIGHTBOX.dofade = function(timer)
{	
	TW_LIGHTBOX.background.twOpacity += 5;
	TW_LIGHTBOX.dialog.twOpacity += 10;

	if (TW_LIGHTBOX.background.twOpacity >= 60 || TW_LIGHTBOX.dialog.twOpacity >= 100) 
	{
		TW_LIGHTBOX.background.twOpacity = 60;
		TW_LIGHTBOX.dialog.twOpacity = 100;
		clearInterval(timer);
	}
	try
	{
		TW_LIGHTBOX.background.style.MozOpacity= TW_LIGHTBOX.background.twOpacity/100;
		TW_LIGHTBOX.dialog.style.MozOpacity= TW_LIGHTBOX.dialog.twOpacity/100;	

		TW_LIGHTBOX.background.style.opacity= TW_LIGHTBOX.background.twOpacity/100;		
		TW_LIGHTBOX.dialog.style.opacity= TW_LIGHTBOX.dialog.twOpacity/100;				
	}
	catch(e){}
	try
	{
		TW_LIGHTBOX.background.filters.alpha.opacity=TW_LIGHTBOX.background.twOpacity;					
		TW_LIGHTBOX.dialog.filters.alpha.opacity=TW_LIGHTBOX.dialog.twOpacity;					

		TW_LIGHTBOX.background.style.filter = "alpha(opacity=" + opac + ")";		
		TW_LIGHTBOX.dialog.style.filter = "alpha(opacity=" + opac + ")";		
	}
	catch(e){}
}
/**
 * 
 */
TW_LIGHTBOX.fadeIn = function()
{
	TW_LIGHTBOX.background = document.getElementById(TW_LIGHTBOX.bgId);
	TW_LIGHTBOX.dialog = document.getElementById(TW_LIGHTBOX.dialogId);
	TW_LIGHTBOX.background.twOpacity = 0;
	TW_LIGHTBOX.dialog.twOpacity = 0;

	TW_LIGHTBOX.testTimer = setInterval("TW_LIGHTBOX.dofade(TW_LIGHTBOX.testTimer);", 50);
}