// JavaScript Document

var gGalleryXml;
var gMandatoryElement;

function importGallery( mandatoryElement ) {

	gMandatoryElement = mandatoryElement;
	var galleryDescription = gBase + "gallery/gallery.xml";	
	
    // branch for native XMLHttpRequest object	
    if (window.XMLHttpRequest) {
        gGalleryXml = new XMLHttpRequest();
        gGalleryXml.onreadystatechange = processGalleryLoad;
        gGalleryXml.open("GET", galleryDescription, true);
        gGalleryXml.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        gGalleryXml = new ActiveXObject("Microsoft.XMLHTTP");
        if ( gGalleryXml ) {
            gGalleryXml.onreadystatechange = processGalleryLoad;
            gGalleryXml.open("GET", galleryDescription, true);
            gGalleryXml.send();
        }
    }
}

function normalizeQuotes( text ) {
	text = text.replace(/'/g, "&acute;");
	return text.replace(/"/g, "&quot;");
}

function getElement( xmlElement, type, language ) {
	var elements = xmlElement.getElementsByTagName( type );
	var text = '';
	
	if ( elements != null && elements.length > 0) {

		// By default, use  first element
		var element = elements[0];
		element.normalize();
		
		if ( element.hasChildNodes() )				
			text = element.firstChild.nodeValue;

		// Check for other elements only, if there is language given
		if ( language != null )
			for (i = 0; i < elements.length; i++) {
				element = elements[i];
				element.normalize();
				if ( element.getAttribute( 'lang' ) == language ) {
					if ( element.hasChildNodes() )						
						text = element.firstChild.nodeValue;
					break;
				}			
			}
	}

	return normalizeQuotes(text);
}

function hasMandatoryElement( xmlElement ) {
	var elements = xmlElement.getElementsByTagName( gMandatoryElement );
	if (elements != null && elements.length > 0)
		return true;
		
	return false;
}

function processGalleryLoad() {
    // only if req shows "loaded"
    if ( gGalleryXml.readyState == 4 ) {
        // only if "OK"
        if ( gGalleryXml.status == 200 ) {
            			
			var xml = gGalleryXml.responseXML.getElementsByTagName('image');
						
			// Count items in gallery
			var table = window.document.getElementById('Thumbnails');
			var tableRow = table.insertRow( 0 );
			
			// Count years
			// Add items to thumbnail layer..
			var i;
			var hasItem = false;
			for (i = 0; i < xml.length; i++ ) {
				
				var imageElement = xml[i];
				if ( gMandatoryElement != null && !hasMandatoryElement( imageElement ) ) 
					continue;				
				
				if ( hasItem ) {
					var col = tableRow.insertCell( tableRow.cells.length );	
					htmlCode = '<img src="thumb_separator.png" />';
					col.insertAdjacentHTML( 'afterBegin', htmlCode );
				}
				
				var col = tableRow.insertCell( tableRow.cells.length );												
								
				var thumbName = getElement( imageElement, 'thumb', gLanguage );
				var srcName = getElement( imageElement, 'src', gLanguage );
				var itemName = getElement( imageElement, 'name', gLanguage );
				var yearName = getElement( imageElement, 'year', gLanguage );
				var sizeName = getElement( imageElement, 'size', gLanguage );
				var ownerName = getElement( imageElement, 'owner', gLanguage );


				var htmlCode = '';
									
				htmlCode += '<img src="gallery/thumbs/' + thumbName + '\"';
				htmlCode += ' onclick=\"onThumbnailClick('  
											+ ' \'' + srcName   + '\', '
											+ ' \'' + itemName  + '\', '
											+ ' \'' + yearName  + '\', '
											+ ' \'' + sizeName  + '\', '
											+ ' \'' + ownerName + '\'  '
											+ ');"';
				htmlCode += ' class="Thumbnail" />';
				
				col.insertAdjacentHTML( 'afterBegin', htmlCode );
				
				if ( hasItem == false ) // Make first item visible
					onThumbnailClick( srcName, itemName, yearName, sizeName, ownerName );
				hasItem = true;					
			}														
        } else {
            alert("There was a problem retrieving the gallery data:\n" +
                gXmlReq.statusText);
        }
    }
}

function onThumbnailClick( srcName, name, year, size, owner ) {
	// 
	//alert( "src=" + srcName + " name=" + name + " year=" + year + " size=" + size + " owner="+ owner );
	{	
		var image = window.document.getElementById( 'BigImage' );
		htmlCode = '<img src="gallery/' + srcName + '" />';
		clearElement( image ); // from main.js	
		image.insertAdjacentHTML( 'afterBegin', htmlCode );
	}
	
	{
		var description = window.document.getElementById( 'Descriptions' );
		clearElement( description ); // from main.js			
		
		htmlCode = '<div class="BodyTextMini">' + name + '</span>';
		description.insertAdjacentHTML( 'beforeEnd', htmlCode );

		htmlCode = '<div class="BodyTextMini">' + year + '</span>';
		description.insertAdjacentHTML( 'beforeEnd', htmlCode );

		htmlCode = '<div class="BodyTextMini">' + size + '</span>';
		description.insertAdjacentHTML( 'beforeEnd', htmlCode );

		htmlCode = '<div class="BodyTextMini">' + owner + '</span>';
		description.insertAdjacentHTML( 'beforeEnd', htmlCode );
	}
	
}

