//configs
var jsMediaContainer_scrollspeed = 10;	//ms to scroll 2px
var jsMediaContainer_fadespeed = 40;	//ms inbetween fade actions

//pixelshift per timeout
var jsMediaContainer_scrollpixel = (navigator.appName == "Microsoft Internet Explorer")?8:2;	




//intern flags !!dont touch!!no config!!
var jsMediaContainer_slideshow_focus = null;
var jsMediaContainer_slideshow_timerid = null;
var jsMediaContainer_slideshow_button = null;
var jsMediaContainer_scrollbars = null;
var jsMediaContainer_fade_timerid = null;

function jsMediaContainer_ShowMedia(obj){	//on thumb click
	if(obj == null)
		return false;

	//fade
	var crosslink = jsMediaContainer_getAttribute(obj, "crosslink");
	var mc = jsMediaContainer_getMediaContainerFor(obj);
	jsMediaContainer_startFade(mc, crosslink);

	//update marked thumb
	var thumbs = jsMediaContainer_getChildsWithClassName(mc, "MediaContainer_thumbs");
	for(var i = 0; i < thumbs.length; i++){
		var th = thumbs[i];
		var thumb_list = th.getElementsByTagName("img");
		for(var j = 0; j < thumb_list.length; j++)
			thumb_list[j].className = thumb_list[j].className.replace("MediaContainer_thumbs_focus", "");
	}
	if(obj.className.search("MediaContainer_thumbs_focus") < 0)
		obj.className += "MediaContainer_thumbs_focus";
}

function jsMediaContainer_scroll_left(obj, jump){
	var mc = jsMediaContainer_getMediaContainerFor(obj);
	var scroll = jsMediaContainer_getChildsWithClassName(mc, "MediaContainer_thumbs")[0];
	if(jump)
		scroll.scrollLeft = 0;
	else
	{
		scroll.MediaContainer_scroll = -1*jsMediaContainer_scrollpixel;
		jsMediaContainer_scroll_do();
	}
}

function jsMediaContainer_scroll_right(obj, jump){
	var mc = jsMediaContainer_getMediaContainerFor(obj);
	var scroll = jsMediaContainer_getChildsWithClassName(mc, "MediaContainer_thumbs")[0];
	if(jump)
		scroll.scrollLeft = scroll.scrollWidth;
	else
	{
		scroll.MediaContainer_scroll = jsMediaContainer_scrollpixel;
		jsMediaContainer_scroll_do();
	}
}

function jsMediaContainer_scroll_do(){
	var scrollsRemaining = false;
	if(jsMediaContainer_scrollbars == null)	
		jsMediaContainer_scrollbars = jsMediaContainer_getChildsWithClassName(document.body, "MediaContainer_thumbs");

	for(var i = 0; i < jsMediaContainer_scrollbars.length; i++)
	{
		var scroll = jsMediaContainer_scrollbars[i];
		if(scroll.MediaContainer_scroll != 0){
				scroll.scrollLeft += scroll.MediaContainer_scroll;
				scrollsRemaining = true;
		}
	}

	if(scrollsRemaining)
		window.setTimeout("jsMediaContainer_scroll_do();", jsMediaContainer_scrollspeed);	
}

function jsMediaContainer_scroll_stop(obj){
	var mc = jsMediaContainer_getMediaContainerFor(obj);
	var scroll = jsMediaContainer_getChildsWithClassName(mc, "MediaContainer_thumbs")[0];
	scroll.MediaContainer_scroll = 0;
}

function jsMediaContainer_NextMedia(obj){
	focus = obj.parentNode;
	while(focus.getAttribute("MediaContainer") != "true")
		focus = focus.parentNode;
	focus = focus.getElementsByTagName("img");
	var oldFocus = null;
	for(var i=0; i<focus.length; i++)
	{
		if(focus[i].getAttribute("id") == "MediaContainer_thumb_focus")
			oldFocus = focus[i];
	}

	if(oldFocus == null) return;
	newFocus = oldFocus.nextSibling;
	if(newFocus == null) return;
	jsMediaContainer_ShowMedia(newFocus);
}

function jsMediaContainer_PrevMedia(obj){
	focus = obj.parentNode;
	while(focus.getAttribute("MediaContainer") != "true")
		focus = focus.parentNode;
	focus = focus.getElementsByTagName("img");
	var oldFocus = null;
	for(var i=0; i<focus.length; i++)
	{
		if(focus[i].getAttribute("id") == "MediaContainer_thumb_focus")
			oldFocus = focus[i];
	}

	if(oldFocus == null) return;
	newFocus = oldFocus.previousSibling;
	if(newFocus == null) return;
	jsMediaContainer_ShowMedia(newFocus);
}

function jsMediaContainer_SlideshowStart(obj){
	focus = obj.parentNode;
	while(focus.getAttribute("MediaContainer") != "true")
		focus = focus.parentNode;
	focus = focus.getElementsByTagName("img");
	var oldFocus = null;
	for(var i=0; i<focus.length; i++)
	{
		if(focus[i].getAttribute("id") == "MediaContainer_thumb_focus")
			oldFocus = focus[i];
	}

	if(oldFocus == null)
		return;

	if(jsMediaContainer_slideshow_timerid != null)
		jsMediaContainer_SlideshowStop();

	
	jsMediaContainer_slideshow_button = obj;
	jsMediaContainer_slideshow_button.value = "Stop";
	jsMediaContainer_slideshow_button.onclick = jsMediaContainer_SlideshowStop;

	jsMediaContainer_slideshow_focus = oldFocus;
	jsMediaContainer_SlideshowDo();
}

function jsMediaContainer_SlideshowDo(){
	focus = jsMediaContainer_slideshow_focus.parentNode;
	while(focus.getAttribute("MediaContainer") != "true")
		focus = focus.parentNode;
	focus = focus.getElementsByTagName("img");
	var oldFocus = null;
	for(var i=0; i<focus.length; i++)
	{
		if(focus[i].getAttribute("id") == "MediaContainer_thumb_focus")
			oldFocus = focus[i];
	}

	if(oldFocus == null)
		return;

	jsMediaContainer_slideshow_focus = oldFocus.nextSibling;
	if(jsMediaContainer_slideshow_focus == null) 
	{
		jsMediaContainer_SlideshowStop();
		return;
	}

	jsMediaContainer_ShowMedia(jsMediaContainer_slideshow_focus);
	jsMediaContainer_slideshow_timerid = window.setTimeout("jsMediaContainer_SlideshowDo()", 1000);
}

function jsMediaContainer_SlideshowStop(){
	window.clearTimeout(jsMediaContainer_slideshow_timerid);
	jsMediaContainer_slideshow_timerid = null;
	jsMediaContainer_slideshow_button.value = "Play";
	jsMediaContainer_slideshow_button.onclick = function(){jsMediaContainer_SlideshowStart(this);};
}

function jsMediaContainer_getAttribute(obj, attribname){
	ret = "";
	if(typeof(obj.getAttribute) != "undefined")
		ret = obj.getAttribute(attribname);
	return ret;
}

function jsMediaContainer_setAttribute(obj, attribname, attribvalue){
	if(typeof(obj.setAttribute) == "undefined")
		return false;
	obj.setAttribute(attribname, attribvalue);
	return true;
}

function jsMediaContainer_getClass(obj){
	ret = "";
	ret = jsMediaContainer_getAttribute(obj, "class");
	if(ret == null)	ret = jsMediaContainer_getAttribute(obj, "className");
	return ret;
}

function jsMediaContainer_isClass(obj, classname){
	objclass = jsMediaContainer_getClass(obj);
	rexp = new RegExp("\\"+classname+"\\b");
	
	if(objclass == null) return false;
	else if(objclass.search(rexp) < 0) return false;
	else return true;
}

function jsMediaContainer_getMediaContainerFor(obj){
	var mc = null;
	while(obj != null && !jsMediaContainer_isClass(obj, "MediaContainer"))
		obj = obj.parentNode;
	mc = obj;
	return mc;
}

function jsMediaContainer_getChildsWithClassName(obj, classname){
	var child = Array();
	while(obj != null) {
		if(obj.hasChildNodes()){
			var ch = obj.firstChild;
			var ret = jsMediaContainer_getChildsWithClassName(ch, classname);
			if(ret.length > 0)
				child = child.concat(ret);				
		}
		if(jsMediaContainer_isClass(obj, classname))
			child.push(obj);
		obj = obj.nextSibling;
	}
	
	return child;
}

function jsMediaContainer_getChildsWithAttribute(obj, atrname, atrvalue){
	var child = Array();
	while(obj != null) {
		if(obj.hasChildNodes()){
			var ch = obj.firstChild;
			var ret = jsMediaContainer_getChildsWithAttribute(ch, atrname, atrvalue);
			if(ret.length > 0)
				child = child.concat(ret);			
		}
		if(jsMediaContainer_getAttribute(obj, atrname) == atrvalue)
			child.push(obj);
		obj = obj.nextSibling;
	}
	
	return child;
}

function jsMediaContainer_startFade(mc, crosslink){
	//set all fade directions	
	var pic_containers = jsMediaContainer_getChildsWithClassName(mc, "MediaContainer_pic");
	for(var i=0; i < pic_containers.length; i++){
		var pic_divs = pic_containers[i].getElementsByTagName("div");
		for(var j=0; j < pic_divs.length; j++){
			pic = pic_divs[j];
			if(jsMediaContainer_getAttribute(pic, "crosslink") == crosslink)
				jsMediaContainer_setAttribute(pic, "fade", "1");
			else
				jsMediaContainer_setAttribute(pic, "fade", "-1");
		}
	}
	
	var cap_containers = jsMediaContainer_getChildsWithClassName(mc, "MediaContainer_caption");
	for(var i=0; i < cap_containers.length; i++){
		var cap_divs = cap_containers[i].getElementsByTagName("div");
		for(var j=0; j < cap_divs.length; j++){
			cap = cap_divs[j];
			if(jsMediaContainer_getAttribute(cap, "crosslink") == crosslink)
				jsMediaContainer_setAttribute(cap, "fade", "1");
			else
				jsMediaContainer_setAttribute(cap, "fade", "-1");
		}
	}

	//do fade
	if(jsMediaContainer_fade_timerid == null)
		jsMediaContainer_doFade();
}

function jsMediaContainer_doFade(){
	//get all containers
	var containers = jsMediaContainer_getChildsWithClassName(document, "MediaContainer");

	//collect divs to fade
	var fade_ins = Array();
	var fade_outs = Array();
	for(var i = 0; i < containers.length; i++){
		fade_ins = fade_ins.concat(jsMediaContainer_getChildsWithAttribute(containers[i], "fade", "1"));
		fade_outs = fade_outs.concat(jsMediaContainer_getChildsWithAttribute(containers[i], "fade", "-1"));
	}
	var fades = fade_ins.concat(fade_outs);

	//do the fading
	var any_fading_done = false;
	for(var i = 0; i < fades.length; i++){
		any_fading_done = true;
		if(fades[i].filters) //IE
		{
			fades[i].filters.alpha.opacity += parseFloat(jsMediaContainer_getAttribute(fades[i], "fade"))*10;
			if(fades[i].filters.alpha.opacity <= 0 || fades[i].filters.alpha.opacity >= 100)
			{
				jsMediaContainer_setAttribute(fades[i], "fade", "0");
				fades[i].filters.alpha.opacity = (fades[i].filters.alpha.opacity >= 100)?100:0;
			}
		}
		else //other (FF)
		{
			fades[i].style.opacity = parseFloat(fades[i].style.opacity) + (parseFloat(jsMediaContainer_getAttribute(fades[i], "fade"))/10);
			if(parseFloat(fades[i].style.opacity)>=1.0 || parseFloat(fades[i].style.opacity)<=0.0)
			{
				jsMediaContainer_setAttribute(fades[i], "fade", "0");
				if(parseFloat(fades[i].style.opacity)>=1.0){
					fades[i].style.opacity = 1.0;
					fades[i].style.zIndex = 1;
				}
				else{
					fades[i].style.opacity = 0.0;
					fades[i].style.zIndex = 0;
				}
			}
		}
	}

	//retrigger if neccessary
	jsMediaContainer_fade_timerid = null;
	if(any_fading_done)
		jsMediaContainer_fade_timerid = window.setTimeout("jsMediaContainer_doFade();", jsMediaContainer_fadespeed);		
}

