var Utility = {
	'Dereference': function( s ) { return s; },
	'ForEach': function( arr, callback, condition ) {
		if( !arr || !arr.length ) return;
		for( var i = 0; i < arr.length; i++ ) {
			var e = arr[ i ];
			if( !(condition instanceof Function) || condition( i, e ) ) if( callback( i, e ) ) return;
		}
	},
	'AddClass': function( element, className ) {
		if( !element || !element.tagName || !className ) return;
		else if( !element.className ) element.className = className;
		else {
			Utility.ForEach( element.className.split( /\s+/g ), function( i, e ) {
				if( e == className ) return true;
				element.className += ( ' ' + className );
			} );
		}
	},
	'RemoveClass': function( element, className ) {
		if( !element || !element.tagName || !className || !element.className ) return;
		else {
			var className_new = [];
			Utility.ForEach( element.className.split( /\s+/g ), function( i, e ) {
				className_new.push( e );
			}, function( i, e ) {
				return e != className;
			} );
			element.className = className_new.join( ' ' );
		}
	},
	'HasClass': function( element, className ) {
		if( !element || !element.tagName || !className || !element.className ) return false;
		else {
			var retval = false;
			Utility.ForEach( element.className.split( /\s+/g ), function( i, e ) {
				retval = true;
				return true;
			}, function( i, e ) {
				return e == className;
			} );
			return retval;
		}
	},
	'ReplaceClass': function( element, className_old, className_new ) {
		Utility.RemoveClass( element, className_old );
		Utility.AddClass( element, className_new );
	},
	'Load': function( src ) {
		if( !Utility._preload ) Utility._preload = [];
		var img;
		Utility.ForEach( Utility._preload, function( i, e ) {
			img = e;
			return true;
		}, function( i, e ) {
			return e.src == src;
		} );
		if( !img ) {
			img = new Image();
			img.src = src;
			Utility._preload.push( img );
		}
		return img;
	}
};

(function() {
	var window_onload = [];
	if( window.onload ) window_onload.push( window.onload );

	window_onload.push( function() {
		Utility.ForEach( document.getElementsByTagName( '*' ), function( i, e ) {
			Utility.AddClass( e, 'first-child' );
		},
		function( i, e ) {
			return !e.previousSibling;
		} );
	} );
	window_onload.push( function() {
		Utility.ForEach( document.getElementsByTagName( 'A' ), function( i, e ) {
			Utility.Load( e.href );
		}, function( i, e ) {
			return Utility.HasClass( e, 'details-small' );
		} );
	} );
	window_onload.push( function() {
		Utility.ForEach( document.getElementsByTagName( 'INPUT' ), function( i, e ) {
			var type = ( e.type || '' ).toLowerCase();
			if( type ) Utility.AddClass( e, type );
			if( type == 'checkbox' ) {
				e.onchange = (function( o ) {
					var old = o.onchange;
					return function( e ) {
						if( o.checked ) Utility.ReplaceClass( o, 'unchecked', 'checked' );
						else Utility.ReplaceClass( o, 'checked', 'unchecked' );
						if( old ) old( e );
				}; })( e );
				e.onchange();
			}		
		} );
	} );
	window_onload.push( function() {
		Utility.ForEach( document.getElementsByTagName( 'OBJECT' ), function( i, e ) {
			if( e.data ) {
				e.removeAttribute( 'data' );
				e.outerHTML = e.outerHTML;
			}
		} );
	} );
	window.onload = function( ev ) {
		Utility.ForEach( window_onload, function( i, e ) {
			if( e instanceof Function ) e( ev );
		} );
	}
})();
function collection_details_swap( src ) {
	var dest = document.getElementById( 'details-large' );
	if( !dest || !src || !src.href ) return;
	dest.src = Utility.Load( src.href ).src;
	Utility.ForEach( document.getElementsByTagName( 'A' ), function( i, e ) {
		Utility.RemoveClass( e, 'selected' );
	}, function( i, e ) {
		return Utility.HasClass( e, 'details-small' );
	} );
	Utility.AddClass( src, 'selected' );

	
	return;	
	
}

var currLayerId;

function togCaption(id)
{
	if(currLayerId) setDisplay(currLayerId, "none");
	if(id) setDisplay(id, "");
	currLayerId = id;
	return false;
}

function setDisplay(id,value)
{
	var elm = document.getElementById(id);
	elm.style.display = value;
}