var curImage = null;

function slideSwitch() {
    var $active = $('#slideshow IMG.active');

    if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

    var $next =  $active.next().length ? $active.next()
        : $('#slideshow IMG:first');

    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    setInterval( "slideSwitch()", 5000 );
});

function addSlideshow( elem ) {
	alert();
	var div = document.createElement("div");
	div.className = "slideshow2";
	
	var span = document.createElement("span");
	span.innerHTML = g[i].title;
	div.appendChild( span );
	
	var a = document.createElement("a");
	a.href = "";
	a.innerHTML = "&raquo; View as a Slideshow";
	a.onclick = function(){
		startShow( this.parentNode.nextSibling );
		return false;
	};
	
	div.appendChild( a );
	elem.parentNode.insertBefore( div, elem );
}

function startShow(obj) {
	var elem = tag( "li", obj );
	var gallery = id("gallery");
	for ( var i = 0; i < elem.length; i++ ) new function() {
		var cur = elem[i];
		setTimeout(function(){
			showImage( cur );
			setTimeout(function(){
				fadeOut( gallery, 0, 10 );
			}, 3500 );
		}, i * 5000 );
	};
	setTimeout( hideOverlay, 5000 * elem.length );
	showOverlay();
}


function loadgallery(){
	var gallery = document.createElement("div");
	gallery.id = "gallery";
	gallery.innerHTML = '<div id="gallery_close"><a href="#">Close</a></div>' +
											'<div id="gallery_image"></div>' +
											'<div id="gallery_prev"><a href="#">&laquo; Prev</a></div>' +
											'<div id="gallery_next"><a href="#">Next &raquo;</a></div>' +
											'<div id="gallery_title"></div>';
	
	document.body.appendChild( gallery );
	id("gallery_next").onclick = nextImage;
	id("gallery_prev").onclick = prevImage;
	id("gallery_close").onclick = hideOverlay;

	var g = document.getElementById( "ul_gallery" );
	var link = tag("a", g);
	for (var j = 0; j < link.length; j++) {
		link[j].onclick = function(){
			showOverlay();
			showImage(this.parentNode);
			return false;
		};
	}
	
	var overlay = document.createElement("div");
	overlay.id = "overlay";
	//overlay.onclick = hideOverlay;
	document.body.appendChild(overlay);
}

function hideOverlay() {
	curImage = null;
	hide( id("overlay") );
	hide( id("gallery") );
}

function showOverlay() {
	var over = id("overlay");
	over.style.height = pageHeight() + "px";
	over.style.width = pageWidth() + "px";
	fadeIn(over, 50, 10);
}

function showImage(cur) {	
	curImage = cur;
	
	if ( !prev(cur) )
		hide( id("gallery_prev") );
	else
		show( id("gallery_prev") );
		
	if ( !next(cur) )
		hide( id("gallery_next") );
	else
		show( id("gallery_next") );
	
	var img = id("gallery_image");

	if ( img.firstChild )
		img.removeChild( img.firstChild );
		
	img.appendChild( cur.firstChild.cloneNode( true ) );
	id("gallery_title").innerHTML = cur.firstChild.firstChild.alt;
	var gallery = id("gallery");
	gallery.className = cur.className;
	fadeIn( gallery, 100, 10 );
	adjust();
}

function adjust(){	
	var obj = id("gallery");	
	if ( !obj ) return;		
	
	var w = getWidth( obj );
	var h = getHeight( obj );
	var t = scrollY() + ( windowHeight() / 2 ) - ( h / 2 );
	
	if ( t < 0 ) t = 0;
	var l = scrollX() + ( windowWidth() / 2 ) - ( w / 2 );
	if ( l < 0 ) l = 0;
	
	setY( obj, t );
	setX( obj, l );
};

function prevImage() {		
	showImage( prev( curImage ) );
	return false;
}

function nextImage() {		
	showImage( next( curImage ) );
return false;
}

function tag(name, elem) {
	return (elem || document).getElementsByTagName(name);
}

function fadeIn( elem ) {	
	setOpacity(elem, 0);
	show( elem );
	for (var i = 0; i <= 100; i += 5) {
		(function(){
			var pos = i;
			setTimeout(function(){
				setOpacity( elem, pos );
			}, ( pos + 1 ) * 10 );
		})();
	}	
}

function setOpacity( elem, level ) {
	if ( elem.filters )
		elem.style.filters = 'alpha(opacity=' + level + ')';
	else
		elem.style.opacity = level / 100;
}


function show( elem ) {
	elem.style.display = 'block';
	//elem.style.display = elem.$oldDisplay || '';
}

function hide( elem ) {
	var curDisplay = getStyle( elem, 'display' );
	if ( curDisplay != 'none' )
		elem.$oldDisplay = curDisplay;
	elem.style.display = 'none';
}


function pageHeight() {
	return document.body.scrollHeight;
}

function pageWidth() {
	return document.body.scrollWidth;
}

function id(name) {
	return document.getElementById(name);
}

function getHeight( elem ) {
	return parseInt( getStyle( elem, 'height' ) );
}

function getWidth( elem ) {
	return parseInt( getStyle( elem, 'width' ) );
}

function getStyle( elem, name ) {
	if (elem.style[name])
		return elem.style[name];
	else if (elem.currentStyle)
		return elem.currentStyle[name];
	else if (document.defaultView && document.defaultView.getComputedStyle) {
		name = name.replace(/([A-Z])/g,"-$1");
		name = name.toLowerCase();
		var s = document.defaultView.getComputedStyle(elem,"");
		return s && s.getPropertyValue(name);
	} else
		return null;
}

function windowHeight() {
	var de = document.documentElement;
	return self.innerHeight ||
		( de && de.clientHeight ) ||
		document.body.clientHeight;
}

function windowWidth() {
	var de = document.documentElement;
	return self.innerWidth ||
		( de && de.clientWidth ) ||
		document.body.clientWidth;
}

function scrollY() {
	var de = document.documentElement;
	return self.pageYOffset ||
				( de && de.scrollTop ) ||
				document.body.scrollTop;
}

function scrollX() {
	var de = document.documentElement;
	return self.pageXOffset ||
				( de && de.scrollLeft ) ||
				document.body.scrollLeft;
}


function setX(elem, pos) {
	elem.style.left = pos + "px";
}

function setY(elem, pos) {
	elem.style.top = pos + "px";
}

function prev( elem ) {
	do {
		elem = elem.previousSibling;
	} while ( elem && elem.nodeType != 1 );
	return elem;
}

function next( elem ) {
	do {
		elem = elem.nextSibling;
	} while ( elem && elem.nodeType != 1 );
	return elem;
}

