/**
 * TW_FADER2.js
 * @author TorahWeb
 * @copyright The TorahWeb Foundation, 2008. All Rights Reserved.
 * email Comments / Bugs to: torahweb at torahweb dot org
 */
TW_FADER2 = new Object();
TW_FADER2.img = null;
TW_FADER2.img2 = null;
TW_FADER2.imgContainer;
TW_FADER2.imgContainerId = "imgContainer";
TW_FADER2.step = 5;
TW_FADER2.testTimer = null;
TW_FADER2.imgId;
TW_FADER2.imageIndex = 0;
TW_FADER2.imageUrls;
TW_FADER2.imageIds = new Object();
TW_FADER2.linkUrl;
TW_FADER2.zindex;
/**
 * 
 * @param {Object} change
 */
TW_FADER2.fade = function(timer)
{	
	TW_FADER2.img.twOpacity -= TW_FADER2.step;
	TW_FADER2.img2.twOpacity += TW_FADER2.step;

	if (TW_FADER2.img.twOpacity <= 0 || TW_FADER2.img2.twOpacity >= 100) 
	{
		TW_FADER2.img.twOpacity = 0;
		TW_FADER2.img2.twOpacity = 100;
		//change zIndex so that the a href works
		TW_FADER2.img2.style.zIndex = TW_FADER2.zindex;
		TW_FADER2.zindex++;
		clearInterval(timer);
	}
	try
	{
		if(TW_FADER2.img.twOpacity == 0)
		{
			TW_FADER2.img.style.MozOpacity= "0.0";
			TW_FADER2.img.style.opacity= "0.0";
		}
		else
		{
			TW_FADER2.img.style.MozOpacity= TW_FADER2.img.twOpacity/100;					
			TW_FADER2.img.style.opacity= TW_FADER2.img.twOpacity/100;								
		}

		TW_FADER2.img2.style.MozOpacity= TW_FADER2.img2.twOpacity/100;					
		TW_FADER2.img2.style.opacity= TW_FADER2.img2.twOpacity/100;					
	}
	catch(e){}
	try
	{
		TW_FADER2.img.filters.alpha.opacity=TW_FADER2.img.twOpacity;					
		TW_FADER2.img2.filters.alpha.opacity=TW_FADER2.img2.twOpacity;					
	}
	catch(e){}
}
/**
 * 
 */
TW_FADER2.doFades = function()
{
	TW_FADER2.testTimer = setInterval("TW_FADER2.fade(TW_FADER2.testTimer);", 50);
	setTimeout("TW_FADER2.setImgObjects();", 1500);
}
/**
 * 
 */
TW_FADER2.setImgObjects = function()
{
	TW_FADER2.imageIndex++;
	if(	TW_FADER2.imageIndex == TW_FADER2.imageUrls.length)
	{
		TW_FADER2.imageIndex = 0;
	}	
	var next = (TW_FADER2.imageIndex == TW_FADER2.imageUrls.length-1) ? 0 : TW_FADER2.imageIndex+1;
	
	TW_FADER2.img = document.getElementById(TW_FADER2.imageIds[TW_FADER2.imageIndex]);
	TW_FADER2.img2 = document.getElementById(TW_FADER2.imageIds[next]);
}
/**
 * 
 * @param {Object} urls array of strings with the urls to the images
 * @param {Object} interval time between fades
 */
TW_FADER2.startFade = function(linkUrl, urls, interval)
{
	TW_FADER2.linkUrls = linkUrl;
	TW_FADER2.imageUrls = urls;
	TW_FADER2.zindex= TW_FADER2.imageUrls.length + 1;
	TW_FADER2.buildImgNodes();
	//init opacities
	for (var i = 0; i < TW_FADER2.imageUrls.length; i++) 
	{
		var iid = TW_FADER2.imageIds[i];
		var twimg = document.getElementById(iid);
		twimg.twOpacity = 0;
	}
	//init img objects
	TW_FADER2.img = document.getElementById(TW_FADER2.imageIds[0]);
	TW_FADER2.img.twOpacity = 100;
	TW_FADER2.img2 = document.getElementById(TW_FADER2.imageIds[1]);
	//show first image
	try
	{
		TW_FADER2.img.style.MozOpacity= 1;
	}
	catch(e){}
	try
	{
		TW_FADER2.img.filters.alpha.opacity=100;
	}
	catch(e){}
	//start fading
	setInterval(TW_FADER2.doFades, interval);
}
/**
 * create the img DOM nodes under the container
 */
TW_FADER2.buildImgNodes = function()
{
	TW_FADER2.imgContainer = document.getElementById(TW_FADER2.imgContainerId);
	var txt = "";
	for (var i = 0; i < TW_FADER2.imageUrls.length; i++)
	{
		var imgid = TW_FADER2.imageUrls[i] + "." + i;
		TW_FADER2.imageIds[i] = imgid;
		var itxt = '<img class="fadeable" id="' + imgid + '" src="' + TW_FADER2.imageUrls[i] + '" style="z-index:' + (TW_FADER2.imageUrls.length - i) + ';-moz-opacity:0;filter:alpha(opacity=0)"/>';
		//var itxt = '<img class="fadeable" id="' + TW_FADER2.imageUrls[i] + '" src="' + TW_FADER2.imageUrls[i] + '" style="z-index:' + i + ';-moz-opacity:0;filter:alpha(opacity=0)"/>';
//		txt += '<img style="position:absolute;top:0px;left:0px;width:' + TW_FADER2.imgWidth + ';height:' + TW_FADER2.imgHeight + ';" id="' + TW_FADER2.imageUrls[i] + '" src="' + TW_FADER2.imageUrls[i] + '" style="z-index:' + i + ';-moz-opacity:0;filter:alpha(opacity=0)"/>';
		txt += '<a href="' + TW_FADER2.linkUrls[i] + '">' + itxt + '</a>';
	}
	TW_FADER2.imgContainer.innerHTML = txt;
}
/**
 * TW_LIGHTBOX.js
 * @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;
	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="#001A65";
	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);
}
