function setOpacity(element, opacity) {
    if (opacity < 0)
        opacity = 0;
    if (opacity > 1)
        opacity = 1;
    element.style.opacity = opacity;
    
    if (element.style.filter != undefined)
        element.style.filter = 'alpha(opacity=' + (opacity * 100) + ')';
    else
        element.style.MozOpacity = opacity;
}

function getOpacity(element) {
    var v = parseFloat(element.style.opacity);
    return ((v == null || isNaN(v)) ? 1 : v);
}

/** Move to the next photo in slideshow
 * @param id the IMG element id to be changed
 */
function gotoNextSlide(id) {
	var img = document.getElementById(id);
	if (img.slideshowIndex == undefined)
		img.slideshowIndex = 0;
	else
	    img.slideshowIndex++;
    if (img.slideshowIndex >= img.images.length) {
        img.slideshowIndex = 0;
    }    
    img.src = img.images[img.slideshowIndex];
    if (img.titles != null) {
    	var title = img.titles[img.slideshowIndex];
    	img.setAttribute("alt", title);
    	img.setAttribute("title", title);
    }
}

/** Runs the fade-in, fade-out effect. 
 * @param id the IMG element id to be fade-in or fade-out
 */
function overEffectStep(id) {
    var img = document.getElementById(id);
    setOpacity(img, getOpacity(img) + img.opacityFactor);
    if (getOpacity(img) <= 0) {
		img.opacityFactor = 0.01;
        gotoNextSlide(id);
	}
	else if ((img.opacityFactor == 0.01) && (getOpacity(img) >= 1)) {
        clearInterval(img.effectInterval);
        setOpacity(img, 1);
        img.slideshowInterval = setTimeout("effectAndGotoNextSlide('" + id + "')", img.slideshowSpeed);
    }
}

function effectAndGotoNextSlide(id) {
    var img = document.getElementById(id);
    img.images = img.getAttribute("slideshow").split(";");
    if ((document.getElementById("preloader") != null) 
            && (img.slideshowIndex + 1 < img.images.length))
        document.getElementById("preloader").src = img.images[img.slideshowIndex + 1];  
    
	img.opacityFactor = -0.01;
    img.effectInterval = setInterval("overEffectStep('" + id + "')", (img.effectSpeed / 100));
}

function startSlideshow(id) {
    var img = document.getElementById(id);
	
	// if there is no element/image with the given id, then simply return
	if (img == null)
		return;
		
	// get the thumbnails
    img.images = img.getAttribute("slideshow").split(";");
    if (img.getAttribute("titles") != null) {
        img.titles = img.getAttribute("titles").split(";");    
    }
	
	// advance to the first slide
	gotoNextSlide(id);
    setOpacity(img, 1);
	
	// ge the slideshow options
    img.slideshowSpeed = parseInt(img.getAttribute("slideshowSpeed"));
    img.effectSpeed = parseInt(img.getAttribute("effectSpeed"));
    img.slideshowInterval = setTimeout("effectAndGotoNextSlide('" + id + "')", img.slideshowSpeed);
}


function showViewPane(slideshow) {
	if (document.getElementById("viewPane") == null)
	    return;

	if (slideshow == null) {
        slideshow = document.getElementById("galleryImage"); 
    }

    if (slideshow.getAttribute("fullImages") == null) {
        return;
    }
	var src = slideshow.getAttribute("fullImages").split(";")[slideshow.slideshowIndex];
	var title = slideshow.title;
	showImageInViewPane(src, title);
}

function showYouTubeVideoInViewPane(youTubeId, title) {
	document.getElementById("viewImg").innerHTML = '<object width="425" height="355">'
			+ '<param name="movie" value="http://www.youtube.com/v/' + youTubeId + '&hl=en"></param>'
			+ '<param name="wmode" value="transparent"></param>'
			+ '<embed src="http://www.youtube.com/v/' + youTubeId + '&hl=en" type="application/x-shockwave-flash"'
			+ 'wmode="transparent" width="425" height="355"></embed></object>';
	if (title != undefined && title.length > 0) {
		document.getElementById("viewDescription").firstChild.innerHTML = title;		
	}

	document.getElementById("viewPane").style.display = "block";
	document.getElementById("underViewPane").style.display = "block";
	document.body.normalOverflow = document.body.style.overflow;
	document.body.style.overflow = "hidden";
}


function showImageInViewPane(src, title) {
	document.getElementById("viewImg").innerHTML = "<img src='" + src + "'/>";
	//document.getElementById("viewImg").firstChild.src = src;
	if (title != undefined && title.length > 0) {
		document.getElementById("viewDescription").firstChild.innerHTML = title;		
	}

	document.getElementById("viewPane").style.display = "block";
	document.getElementById("underViewPane").style.display = "block";
	document.body.normalOverflow = document.body.style.overflow;
	document.body.style.overflow = "hidden";
}

function hideViewPane() {
	if (document.getElementById("viewPane") == null)
	   return;
	document.getElementById("viewPane").style.display = "none";
	document.getElementById("underViewPane").style.display = "none";

    document.body.style.overflow = document.body.normalOverflow;
}
