function bindGalleryDetail( listContainerId, ajaxquerystring) {
	try {
		var container = document.getElementById( listContainerId);
		container.ajaxquerystring = ajaxquerystring;
		var lis = container.getElementsByTagName( 'li');
		var div;
		var atags;
		for ( var l = 0; l < lis.length; l++) {
			if ( lis[l].className && lis[l].className.match( /(^|\s)galleryGrp(\s|$)/)) {
				div = lis[l].firstChild;
				while ( div && div.tagName != 'DIV')
					div = div.nextSibling;
				if ( div) {
					div.onclick = function(e) {
						showGalleryDetail( this);
					};
					killStaticLinks( div);
					div.style.cursor = 'hand';
					div.style.cursor = 'pointer';
				}
			}
		}
	}
	catch( error) {
		alert( error);
	}
}
function showGalleryDetail( div) {
	try {
		var item;
		var detail;
		var container = div.parentNode;
		while ( container && !container.ajaxquerystring)
			container = container.parentNode;
		if ( !container)
			throw 'Appears a binding error occurred';
		if ( container.detailItemContainer) {
			detail = container.detailItemContainer;
			item = detail.galleryDetailItemContent;
		}
		else {
			detail = document.createElement( 'div');
			detail.className = 'detail galleryDetailItem';
			detail.style.position = 'absolute';
			detail.style.left = '50px';
			document.body.appendChild( detail);
			container.detailItemContainer = detail;
			var closeControl = document.createElement( 'div');
			closeControl.style.position = 'absolute';
			closeControl.style.top = '0.5em';
			closeControl.style.right = '1em';
			closeControl.style.textAlign = 'center';
			closeControl.style.cursor = 'hand';
			closeControl.style.cursor = 'pointer';
			closeControl.detailItemContainer = detail;
			closeControl.appendChild( document.createTextNode( 'Close'));
			closeControl.onclick = function(e) {
				this.detailItemContainer.style.display = 'none';
			};
			detail.appendChild( closeControl);
			
			detail.prevControl = document.createElement( 'span');
			detail.prevControl.appendChild( document.createTextNode( '<- Prev'));
			detail.prevControl.style.cursor = 'hand';
			detail.prevControl.style.cursor = 'pointer';
			detail.prevControl.style.visibility = 'hidden';
			
			detail.nextControl = detail.prevControl.cloneNode( false);
			detail.nextControl.appendChild( document.createTextNode( 'Next ->'));
			detail.nextControl.style.position = 'relative';
			detail.nextControl.style.top = '0';
			detail.nextControl.style.right = '';
			detail.nextControl.style.visibility = 'hidden';
			
			var controls = document.createElement( 'div');
			controls.style.position = 'absolute';
			controls.style.top = '0.5em';
			controls.style.right = '50px';
			controls.style.left = '50px';
			controls.style.textAlign = 'center';
			controls.appendChild( detail.prevControl);
			controls.appendChild( document.createTextNode( ' | '));
			controls.appendChild( detail.nextControl);
			detail.appendChild( controls);
			
			item = document.createElement( 'div');
			item.id = 'galleryDetailItemContent';
			if ( div.id.match( /_.+/))
				item.id += div.id.replace( /^.+_/, '_');
			item.className = 'item';
			item.style.position = 'relative';
			item.style.top = '20px';
			item.style.marginBottom = '20px';
			detail.appendChild( item);
			detail.galleryDetailItemContent = item;
		}
		detail.style.display = 'block';
		// Position window
		var scrOfY = 0;
		if( typeof( window.pageYOffset ) == 'number' ) {
			scrOfY = window.pageYOffset;
		}
		else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			scrOfY = document.body.scrollTop;
		}
		else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			scrOfY = document.documentElement.scrollTop;
		}
		detail.style.top = ( parseInt( scrOfY) + 100).toString() + 'px';
		var de = document.documentElement;
		var winWidth = self.innerWidth || ( de && de.clientWidth) || document.body.clientWidth;
		detail.style.left = ( (parseInt( winWidth) - detail.clientWidth) / 2).toString() + 'px';

		doAjax( window.location.pathname + '?' + container.ajaxquerystring + '&bte=' + div.id, function() {
			var scriptExpr = "<script[^>]*>(.|\s|\n|\r)*?</" + "script>";
			// Set item content to return HTML
			while ( item.firstChild)
				item.removeChild( item.firstChild);
			item.appendChild( document.createTextNode( 'Loading...'));
			item.innerHTML = xmlhttp.responseText.replace( new RegExp( scriptExpr, "img"), "");
			// Execute any JS returned
			var matches = xmlhttp.responseText.match( new RegExp( scriptExpr, "img"));
			if (matches) {
				var numMatches = matches.length;
				for (var i = 0; i < numMatches; i++) {
					var s = matches[i].replace(/<script[^>]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/script>/img, "");
					eval( s);
				}
			}
			// Setup the Previous | Next controls
			var prev = div.parentNode.previousSibling;
			if ( !prev) {
				var prevParent = div.parentNode.parentNode.previousSibling;
				if ( prevParent) {
					if ( prevParent.className && prevParent.className == div.parentNode.parentNode.className)
						prev = prevParent.lastChild;
					else {
						prevParent = prevParent.previousSibling;
						if ( prevParent && prevParent.className && prevParent.className == div.parentNode.parentNode.className)
							prev = prevParent.lastChild;
					}
				}
			}
			if ( prev) {
				prev = prev.firstChild;
				while ( prev && prev.tagName != 'DIV')
					prev = prev.nextSibling;
			}
			detail.prevControl.style.visibility = ( prev ? 'visible' : 'hidden');
			detail.prevControl.onclick = function(e) {
				showGalleryDetail( prev);
			};
			var next = div.parentNode.nextSibling;
			if ( !next) {
				var nextParent = div.parentNode.parentNode.nextSibling;
				if ( nextParent) {
					if ( nextParent.className && nextParent.className == div.parentNode.parentNode.className)
						next = nextParent.firstChild;
					else {
						nextParent = nextParent.nextSibling;
						if ( nextParent && nextParent.className && nextParent.className == div.parentNode.parentNode.className)
							next = nextParent.firstChild;
					}
				}
			}
			if ( next) {
				next = next.firstChild;
				while ( next && next.tagName != 'DIV')
					next = next.nextSibling;
			}
			detail.nextControl.style.visibility = ( next ? 'visible' : 'hidden');
			detail.nextControl.onclick = function(e) {
				showGalleryDetail( next);
			};
		});
	}
	catch( error) {
		alert( 'Sorry, an error occurred. ' + error);
	}
}
function killStaticLinks( div) {
	var atags = div.getElementsByTagName( 'a');
	for ( a = 0; a < atags.length; a++)
		if ( atags[a].className && atags[a].className == 'bTE')
			atags[a].onclick = function(e) { return false; };
}
