/*
 * Call with the ID of the div containing
 * the cross-fading images.
 */

var zIndexCurrent = 10;
var zIndexNext = 0;
var zIndexPrior = -10;

var opacityDecrement = 1; // Opacity goes from 99 to 1

var delayBetween = 7000;
var delayFadeIncrement = 10;
 
var gTargetImgs;
var gCurrentImg;
var gNextImg;

var gCrossfadePaused = false;

function SetupCrossfade( targetId )
{
    var targetObj = document.getElementById( targetId );
    if( targetObj )
    {
        gTargetImgs = targetObj.getElementsByTagName("img");        
        SetCurrentImg( 0 );
    }
}

function SetupEPNCrossfade( targetId )
{
    var targetObj = document.getElementById( targetId );
    if( targetObj )
    {
        gTargetImgs = targetObj.getElementsByTagName("img"); 
        
        for( var index = 0; index < gTargetImgs.length; index++ )
        {
           gTargetImgs[index].style.zIndex = -10;
            SetOpacity( gTargetImgs[index], 0 );
        }
        gCrossfadePaused = true; 
        gTargetImgs[0].style.zIndex = 10;
        SetCurrentImg( 0 );        
    }
}



function SetCurrentImg( index )
{    
    gCurrentImg = index;
    gNextImg = index + 1;
    
    if( gNextImg > gTargetImgs.length - 1 )
    {        
        gNextImg = 0;
    }

    for( var index = 1; index < gTargetImgs.length; index++ )
    {
        if( index != gCurrentImg || index != gNextImg )
        {            
            gTargetImgs[index].style.zIndex = zIndexPrior;
            SetOpacity( gTargetImgs[index], 0 );
        }
    }
    
    if( gTargetImgs.length > 0 )
    {
        gTargetImgs[gCurrentImg].style.zIndex = zIndexCurrent;
        SetOpacity( gTargetImgs[gCurrentImg], 100 );
    }
    if( gTargetImgs.length > 1 )
    {
        gTargetImgs[gNextImg].style.zIndex = zIndexNext;
        SetOpacity( gTargetImgs[gNextImg], 100);
        if( !gCrossfadePaused )
        {
            setTimeout( Crossfade, delayBetween );
        }
    }
}

function CrossfadeNavigate()
{
    var targetUrl = gTargetImgs[gCurrentImg].FeaturedUrl;
    if( 0 != targetUrl.indexOf("javascript") )
    {
        if(targetUrl == "http://www.sustainability.executiveboard.com/pdf/Sustainability_in_China_Shangha_Summary.pdf"){
			window.open(targetUrl,'_blank');
		}        
	
	else
	{            
	open(targetUrl, '_blank');        
	}    } 
	
	else    
	{        
	eval( targetUrl );    
	
	} 
	
}

function Crossfade()
{
    if( gCrossfadePaused )
    {
        SetOpacity( gTargetImgs[gCurrentImg], 100 );        
        return;
    }
    
    //
    // If we are fading out...
	
	/*function CrossfadeNavigate() 
	{    
	var targetUrl = gTargetImgs[gCurrentImg].FeaturedUrl;    
	if( 0 != targetUrl.indexOf("javascript") )    
	{        
	if(targetUrl == "http://www.sustainability.executiveboard.com/pdf/SF Snap Poll Results 7.08.doc"){            
	window.open(targetUrl,'_blank');
	}        
	
	else
	{            
	open(targetUrl);        
	}    } 
	
	else    
	{        
	eval( targetUrl );    
	
	} }*/

    //    
    if( GetOpacity( gTargetImgs[gCurrentImg] ) > 1 )
    {
        SetOpacity( gTargetImgs[gCurrentImg], GetOpacity( gTargetImgs[gCurrentImg] ) - opacityDecrement );
        setTimeout( Crossfade, delayFadeIncrement );
    }
    else
    {
        gTargetImgs[gCurrentImg].style.zIndex = zIndexPrior;
        gTargetImgs[gNextImg].style.zIndex = zIndexCurrent;
        
        gCurrentImg = gNextImg;
        gNextImg = gNextImg + 1;
        if( gNextImg >= gTargetImgs.length )
        {
            gNextImg = 0;
        }

        gTargetImgs[gNextImg].style.zIndex = zIndexNext;
        SetOpacity(gTargetImgs[gNextImg],100);
        setTimeout( Crossfade, delayBetween );
    }
}

var currentImage;
var nextImage;
function ChangeImage(currentImage1, nextImage1)
{
    currentImage=currentImage1;
    nextImage=nextImage1;    
    gTargetImgs[nextImage].style.zIndex = 10;
    gTargetImgs[currentImage].style.zIndex = 0;  
    for( var index = 1; index < gTargetImgs.length; index++ )
    {
        if( index != currentImage && index != nextImage )
        {            
            gTargetImgs[index].style.zIndex = zIndexPrior;
            SetOpacity( gTargetImgs[index], 0 );
        }
    }
    SetOpacity(gTargetImgs[currentImage],100);
    SetOpacity(gTargetImgs[nextImage],0);
    setTimeout(ChangeImagefade, 1);
}
function ChangeImagefade()
{    
    //
    // If we are fading out...
    //  

        if( GetOpacity( gTargetImgs[currentImage] ) > 1 )
        {
           
           SetOpacity( gTargetImgs[currentImage], GetOpacity( gTargetImgs[currentImage] ) - (opacityDecrement *3) );
            SetOpacity( gTargetImgs[nextImage], GetOpacity( gTargetImgs[nextImage] ) + (opacityDecrement*3) );
            
            setTimeout(ChangeImagefade, 1);
        }
        else
        {
            gTargetImgs[currentImage].style.zIndex = zIndexPrior;
            gTargetImgs[nextImage].style.zIndex = zIndexCurrent;  
            gCurrentImg = nextImage;
            gNextImg = nextImage + 1;
            if( gNextImg >= gTargetImgs.length )
            {
                gNextImg = 0;
            }          
            //gTargetImgs[nextImage].style.zIndex = zIndexNext;
            SetOpacity(gTargetImgs[nextImage],100);
            clearTimeout();
        }
}



function CrossfadeBack()
{
    gCrossfadePaused = true;
    if( gCurrentImg - 1 < 0 )
    {
        SetCurrentImg( gTargetImgs.length - 1 );
    }
    else
    {
        SetCurrentImg( gCurrentImg - 1 );
    }
}

function EPNCrossfadeNext(index)
{
    gCrossfadePaused = false;    
    SetCurrentImg( index ); 
    gCrossfadePaused = true;       
}

function CrossfadeNext()
{
    gCrossfadePaused = true;
    SetCurrentImg( gNextImg );
}

function CrossfadePause()
{
    if( gTargetImgs.length > 1 )
    {
        gCrossfadePaused = !gCrossfadePaused;
        if( !gCrossfadePaused )
        {
            setTimeout( Crossfade, delayFadeIncrement );
        }    
    }
}

function GetOpacity( targetObj )
{
    if( targetObj )
    {
        return targetObj.xOpacity;
    }
    else
    {
        return void 0;
    }
}

function SetOpacity( targetObj, targetVal )
{
    if( targetObj )
    {
        if( targetVal > 99 )
        {
            targetVal = 99;
        }
        if( targetVal < 1 )
        {
            targetVal = 1;
        }

        targetObj.xOpacity = targetVal;        

        var decimalOpacity = targetVal / 100.00;
        targetObj.xOpacity = targetVal;        
        targetObj.style.opacity = decimalOpacity;
        targetObj.style.MozOpacity = decimalOpacity;
        targetObj.style.filter = "alpha(opacity=" + targetVal + ")";
    } 
}
