// JavaScript Document

// Global Variables
var xmlDoc = null;
var windowOpen;
var defaultCtb;
var sSource = "../XML/WAR_Gallery.xml";

// Populate the list of photographers
function jsLoadContributors()
{
  
    xmlDoc = jsLoadXMLwXSLT( sSource+"?rand="+(Math.random() *1000), "../XML/WAR_CtbSort.xslt" );
	
     //alert( xmlDoc );
    // Retrieve list of contributors from XML file
    var l_eltCtbs = xmlDoc.getElementsByTagName( "album" );
    var l_iCtbs = l_eltCtbs.length;
    
    // Get object reference to the SELECT item
    var l_lstCtbs = document.getElementById( 'lstCtbs' );
    
    // On first run - store the first contributor's name 
    // in global variable to use in other functions
    defaultCtb = l_eltCtbs[0].getAttribute( 'id' );
    
    // Iterate through the list of contributors and add
    // them as options to the SELECT list
    for( var l_iCt = 0; l_iCt < l_iCtbs ; l_iCt++ )
    {
        var l_optCtbs = document.createElement( 'option' );
        jsBrwSetAttrib( l_optCtbs, "value", l_eltCtbs[l_iCt].getAttribute( 'id' ) );
        l_optCtbs.appendChild( document.createTextNode( l_eltCtbs[l_iCt].getAttribute( 'name' ) ) );
        l_lstCtbs.appendChild( l_optCtbs );        
    }  
    
    // On first run load the thumbnails for the default contributor
    jsLoadThumbnails( null );  
}

// Load the thumbnails for a specified contributor
function jsLoadThumbnails( p_sCtb )
{

    var l_sBaseImageDir = "..Images/thewar/galleries/";
    // Special Case: Initial set of images to load in the gallery
    if( p_sCtb == null ) p_sCtb = defaultCtb;
    
    // Retrieving album information
    var l_xAlbum = jsXPath( xmlDoc, "album[@id='" + p_sCtb + "']")[0];
    var l_sAlbumName = l_xAlbum.getAttribute( "name" );
    var l_sImageDir = l_xAlbum.getAttribute( "imageDir" );    
    
    // Extracting image information from the selected album
	var l_eltImages = l_xAlbum.getElementsByTagName("image"); 
	

	// Extracting photographer information
	var l_eltProviders = l_xAlbum.getElementsByTagName( "photographers" )[0]; 
	var l_eltPGraphers = l_eltProviders.getElementsByTagName( "person" );
	var l_bContribs	=	(l_eltPGraphers.length > 0 );
	
	// Remove previous gallery and photographer divs
	var l_tblGallery    =   document.getElementById( "tdImageGallery" );
	var l_dvImageGal    =   document.getElementById( "dvImageGal" ); 
	var l_dvPGrapher    =   document.getElementById( "dvPGraphers" );
	
	if( l_dvImageGal != null ) l_tblGallery.removeChild( l_dvImageGal );	
	if( l_dvPGrapher != null ) l_tblGallery.removeChild( l_dvPGrapher );	
	
	// Variables
	var l_imgObject;
	var l_hFullGallery;
	
	// Create photographer info. area
	if( l_bContribs )
		l_tblGallery.appendChild( jsCreatePGInfo( l_eltPGraphers, l_sBaseImageDir + l_sImageDir) );
	
	// Create image gallery DIV and set ID attribute
	l_hFullGallery = document.createElement( "div" ) ;	
	jsBrwSetAttrib( l_hFullGallery, "id","dvImageGal" );
	
	
	var l_iCounter;
	var l_iImageCount = l_eltImages.length;
	
	for( l_iCounter = 0; l_iCounter < l_iImageCount; l_iCounter++ )
	{
		var l_sCaption="";
		var l_sThumbnail="";
		var l_sFullSize="";
		var l_sImgID = l_eltImages[ l_iCounter ].getAttribute( "id" );
		
		for( l_iCounterA = 0; l_iCounterA < l_eltImages[ l_iCounter ].childNodes.length; l_iCounterA++ )
		{				
			if (l_eltImages[l_iCounter].childNodes[l_iCounterA].nodeType != 1 )	continue;
			
			var l_iSwitch = l_iCounterA;

			if (isMoz  ) l_iSwitch = parseInt( l_iCounterA / 2 );
			//alert(l_eltImages[l_iCounter].childNodes[l_iCounterA].nodeName);
			switch( l_eltImages[l_iCounter].childNodes[l_iCounterA].nodeName )
			{
				case "caption": // Caption
					{
						l_sCaption = l_eltImages[l_iCounter].childNodes[l_iCounterA].firstChild.nodeValue;
						break;						
					} 
				case "thumbnail": // Thumbnails
					{ 	
						l_sThumbnail = l_sBaseImageDir + l_sImageDir + l_eltImages[l_iCounter].childNodes[l_iCounterA].firstChild.nodeValue;
						break;
					}
				case "fullsize": // Link to full size image
					{
						l_sFullSize =  l_eltImages[l_iCounter].childNodes[l_iCounterA].firstChild.nodeValue;
						break;
					}
					
			}
		}
		
		var l_oGyItem = document.createElement( "div" );
		var l_imgLink = document.createElement( "a" );
		var l_imgObject = document.createElement( "img" );	
		var l_spnObject = document.createElement( "span" );
		
		jsBrwSetAttrib( l_oGyItem, "id", l_eltImages[ l_iCounter ].getAttribute( 'id' ) );
		jsBrwSetAttrib( l_oGyItem, "class", "dvImgContainer" );
		jsBrwSetAttrib( l_imgLink, "href", "javascript:jsOpenImage('"+ l_sBaseImageDir + l_sImageDir + "', '" + l_sCaption + "','" + l_sImgID + "', '" + l_sFullSize + "')" );
		jsBrwSetAttrib( l_imgLink, "class", "imgPhoto" );
		jsBrwSetAttrib( l_imgObject, "alt", l_sCaption );
		jsBrwSetAttrib( l_imgObject, "src", l_sThumbnail );
		jsBrwSetAttrib( l_spnObject, "class", "spnCaption" );
		
		l_imgLink.appendChild( l_imgObject );
		l_oGyItem.appendChild( l_imgLink );
		l_oGyItem.appendChild( document.createElement( "br" ) );
		l_spnObject.appendChild(document.createTextNode( l_sCaption ));
		l_oGyItem.appendChild( l_spnObject );
		
		l_hFullGallery.appendChild( l_oGyItem );
	}
	
	l_tblGallery.appendChild( l_hFullGallery );
	
}

function jsCreatePGInfo( p_xInfo, p_sImageDir )
{
    var l_hReturnValue;
    var l_hWorker;
    var l_iAcc;
    var l_hLI;
    var l_iPGs = p_xInfo.length;
    
	l_hReturnValue = document.createElement( "div" );
	jsBrwSetAttrib( l_hReturnValue, "id", "dvPGraphers" );    
    
    l_hWorker = document.createElement( "h3" );
    jsBrwSetAttrib( l_hWorker, "id", "h3PGList" );
    l_hWorker.appendChild( document.createTextNode( "Pictures provided by" ) ); 
    l_hReturnValue.appendChild( l_hWorker );   
    
    l_hWorker = document.createElement( "ul" );
    jsBrwSetAttrib( l_hWorker, "id", "pgList" );
    
    var l_bOdd = ((l_iPGs % 2) != 0 );
    for( l_iAcc = 0; l_iAcc < l_iPGs; l_iAcc++ )
    {
        var l_hLI;
        var l_hPicture;        
        var l_hBio;     
        
        
        if( p_xInfo[ l_iAcc ].nodeType != 1 ) continue;
        
        var l_sName     =   p_xInfo[l_iAcc].getAttribute( "name" );
        var l_sImgSrc   =   p_xInfo[l_iAcc].getAttribute( "thumbnail" ); 
        if( l_sImgSrc != null && l_sImgSrc != '') 
            l_sImgSrc = p_sImageDir + l_sImgSrc;
        else
            l_sImgSrc = null;
        
        var l_sCDATA = null;
        if( p_xInfo[l_iAcc].firstChild != null )
            l_sCDATA = p_xInfo[l_iAcc].firstChild.nodeValue;
        
        if( l_sCDATA == null && l_sCDATA == null ) continue;

        l_hLI = document.createElement( "li" );
	if( l_bOdd && (l_iAcc == l_iPGs - 1) )
	        jsBrwSetAttrib( l_hLI, "class", "oddLast" );
        
        if( l_sImgSrc != null )
        {
            l_hPicture = document.createElement( "img" );
            jsBrwSetAttrib( l_hPicture, "class", "pgImage" );     
            jsBrwSetAttrib( l_hPicture, "src", l_sImgSrc );
            jsBrwSetAttrib( l_hPicture, "alt", "[Image of "+l_sName+"] " );
            jsBrwSetAttrib( l_hPicture, "align", "left" );
            l_hLI.appendChild( l_hPicture );
        }
        
        if( l_sCDATA != null )
        {
            l_hBio = document.createElement( "div" );            
            l_hBio.appendChild( document.createTextNode( l_sCDATA ) );     
            
            l_hLI.appendChild( l_hBio );        
        }
        
        l_hWorker.appendChild( l_hLI );
        
    }
    l_hReturnValue.appendChild( l_hWorker );
    
    return( l_hReturnValue );
}

function jsOpenImage(p_sBase, p_sWindowTitle, p_sImgID, p_sFileName) 
{
	if( windowOpen != null ) windowOpen.close();
	var regEx = /(\d+)x(\d+)/;
	var matches = p_sFileName.match( regEx );
	var x=600;
	var y=400;
	var top=200;
	var left=200;
	
	if( matches != null )
	{
		x = parseInt( matches[1] ) + 1;
		y = parseInt( matches[2] ) + 1;
	}
	
	top = parseInt( (screen.height - y )/2 );
	left = parseInt( (screen.width - x )/2 );	
	
	windowOpen=window.open("displayImage.asp?src=" + sSource + "&id=" + p_sImgID + "&base="+p_sBase+"&windowtitle="+p_sWindowTitle, "Image", "toolbar=0,location=0,directories=0,status=0,menubar=no,scrollbars=no,resizable=no,width=" + x + ",height="+y+",top="+top+",left="+left);
}	