var url = 'DiaShowGetData.php?id=';
var globalTEMP = "";
var pfad = "/codepages/AjaxDiaShow/";
var diashows = new Array();

var Controls = preLoadControls();

//Laden der Navigationspfeile
function preLoadControls(){
	var temp = new Array();
	var temp2 = null;
	var temp3 = null;

	temp2 = new Array();
	temp2["normal"]  = loadImg(pfad + "pg-first.gif");
	temp2["hover"]	 = loadImg(pfad + "pg-first_hover.gif");
	temp2["disable"] = loadImg(pfad + "pg-first-bw.gif");
	
	temp["first"] = temp2;

	temp2 = new Array();
	temp2["normal"]  = loadImg(pfad + "pg-last.gif");
	temp2["hover"]	 = loadImg(pfad + "pg-last_hover.gif");
	temp2["disable"] = loadImg(pfad + "pg-last-bw.gif");
	
	temp["last"] = temp2;

	temp2 = new Array();
	temp2["normal"]  = loadImg(pfad + "pg-next.gif");
	temp2["hover"]	 = loadImg(pfad + "pg-next_hover.gif");
	temp2["disable"] = loadImg(pfad + "pg-next-bw.gif");
	
	temp["next"] = temp2;

	temp2 = new Array();
	temp2["normal"]  = loadImg(pfad + "pg-prev.gif");
	temp2["hover"]	 = loadImg(pfad + "pg-prev_hover.gif");
	temp2["disable"] = loadImg(pfad + "pg-prev-bw.gif");
	
	temp["prev"] = temp2;

	return temp;
}

//Initalisierung der Diashows auf der aktuellen Seite
function initDiashow(){

	var divs		= document.getElementsByTagName("div");
	var temp_name	= "";
	var temp_id		= 0;

	for(var i=0;i<divs.length;i++){
		if(divs[i].id.substr(0,7)=="diashow"){
			temp_id = divs[i].id.substr(7,divs[i].id.length-7);
			temp_name = divs[i].id;
			
			temp_arr = new Array();
			temp_arr["load"] = false;
			temp_arr["ajax"] = createAJAXconnection();
			temp_arr["current"] = 0;
			temp_arr["aktivlayer"] = 1;
			temp_arr["id"] = temp_id;
			temp_arr["name"] = temp_name
			temp_arr["imgcache"] = new Array();

			temp_arr["imgcache"]["current"]		= loadingArray();
			temp_arr["imgcache"]["next"]		= loadingArray();
			temp_arr["imgcache"]["first"]		= loadingArray();
			temp_arr["imgcache"]["last"]		= loadingArray();
			temp_arr["imgcache"]["prev"]		= loadingArray();

			diashows.push(temp_arr);
		}
	}

	for(i=0;i<diashows.length;i++){
		getDiashow(i, pfad + url + diashows[i]["id"]);
	}
}

function loadingArray(){
	var temp = new Array();
	temp["img"] = null;
	temp["action"] = "load";
	temp["status"] = false;
	return temp;
}

function startLoading(){
	var info = null;
	var status = new Array("current","next","first","last","prev");
	var wiederholen = false;

	for(i=0;i<diashows.length;i++){
		info = diashows[i];
		imgcache = info["imgcache"];
		
		for(a=0;a<status.length;a++){
			try{
			if(imgcache[status[a]]["img"].complete){
				if(!imgcache[status[a]]["status"]){
					if(a!=0){
						changeControl(i,status[a],"normal");
					}else {
						swichDia(status[a], i);
					}
				}
				imgcache[status[a]]["status"] = true;
				imgcache[status[a]]["action"] = "loaded";
				
			}else{
				wiederholen = true;
			}
			}catch(e){
			}
		}	
	}

	if(wiederholen == true){
		window.setTimeout("startLoading()", 500);
	}else{
		//alle Bilder geladen!
	}
}

function swichDia(direction,id){
	var info = diashows[id];
	obj = document.getElementById(info["name"]);

	var layerid = "DiaContainer" + info["aktivlayer"];
	var diaid = "Dia" + info["aktivlayer"];

	var dia = findDOMnode(obj, diaid);

	var w = dia.width;
	var h = dia.height;
	dia.src = info["imgcache"][direction]["img"].src;

	//dia.onload = function() { alert("1"); };
		findDOMnode(obj, "loader").style.display = "none";
		findDOMnode(obj, "mainLayer").style.display = "block";

		smoothImgResize(w,h,0,id,direction,info["aktivlayer"]);
		info["aktivlayer"] = (info["aktivlayer"]==1) ? 2 : 1;

}


//Diashow-Daten ermitteln
function getDiashow(id,url){
	obj = diashows[id]["ajax"];
	url = url + '&ajaxTime=' + Date();

	obj.open("GET", url, true);
	obj.onreadystatechange =  new Function('fx', 'processDiashow("'+id+'")');
	obj.send(null);	
}

//Diashow-Daten verarbeiten
function processDiashow(id){
	obj = diashows[id]["ajax"];

	if (obj.readyState == 4) {
		if (obj.status == 200) {
			var xml = obj.responseXML;
			var temp = new Array();

			var DiaShow			= xml.getElementsByTagName('aDiaShowID')[0];

			temp["MyPfad"]		= DiaShow.getElementsByTagName('MyPfad')[0].firstChild.data;
			temp["nMaxBilder"]	= DiaShow.getElementsByTagName('nMaxBilder')[0].firstChild.data;
			temp["Bilder"]		= new Array();
			temp["Texte"]		= new Array();

			for (var i=1;i<=temp["nMaxBilder"];i++)
			{
				temp["Bilder"][i-1]		= DiaShow.getElementsByTagName('Bildname'+i)[0].firstChild.data;
				temp["Texte"][i-1]		= DiaShow.getElementsByTagName('BildText'+i)[0].firstChild.data;
			}

			diashows[id]["data"] = temp;
			displayDiashow(id);
		}
	}
}


/*
function imgLoadedButtonChanger(id,direction){
	info = diashows[id];

	if(info["imgcache"][direction].complete){
		changeControl(id,direction,"normal");
	}else{
		info["imgcache"][direction].onload = function(){ changeControl(id,direction,"normal"); };
	}
}

function firstImageLoader(direction,id){
	if(info["imgcache"][direction].complete){
		swichDia(direction, id);
	}else{
		info["imgcache"][direction].onload = function(){ swichDia(direction, id);  info["imgcache"][direction].onload = null; };
	}
}
*/

function change(id,direction)
{
	var info = diashows[id];
	obj = document.getElementById(info["name"]);

	var cur = info["current"];
	var max = info["data"]["nMaxBilder"];



	info["current"] = getNummer(info,direction);

	switch(direction){
		case 'prev':
			info["imgcache"]["current"] = info["imgcache"]["prev"];
			break;
		case 'next':
			info["imgcache"]["current"] = info["imgcache"]["next"];
			break;
		case 'last':
			info["imgcache"]["current"] = info["imgcache"]["last"];
			break;
		case 'first':
			info["imgcache"]["current"] = info["imgcache"]["first"];
			break;
	}
	//Layer austauschen (zIndex)
	var temp = findDOMnode(obj, "DiaContainer1").style.zIndex;
	findDOMnode(obj, "DiaContainer1").style.zIndex = findDOMnode(obj, "DiaContainer2").style.zIndex;
	findDOMnode(obj, "DiaContainer2").style.zIndex = temp;


	swichDia(direction,id);

}




function smoothImgResize(w,h,opacity,id,direction,aktiv){
	var info = diashows[id];
	obj = document.getElementById(info["name"]);

	var diaid = "Dia" + aktiv;
	dia = findDOMnode(obj, diaid);
	var  imgobj = info["imgcache"][direction]["img"];

	if(dia.complete){
		var speed = 15;
		if(w > imgobj.width){
			w_neu = w - speed;
			if(w_neu < imgobj.width){
				w_neu = imgobj.width;
			}
		}else if(w < imgobj.width){
			w_neu = w + speed;
			if(w_neu > imgobj.width){
				w_neu = imgobj.width;
			}
		}else{
			w_neu = imgobj.width;
		}
		if(h > imgobj.height){
			h_neu = h - speed;
			if(h_neu < imgobj.height){
				h_neu = imgobj.height;
			}
		}else if(h < imgobj.height){
			h_neu = h + speed;
			if(h_neu > imgobj.height){
				h_neu = imgobj.height;
			}
		}else{
			h_neu = imgobj.height;
		}


		var o_neu = (opacity < 100) ? opacity + 5 : 100;

		var container = findDOMnode(obj, "DiaContainer");
		container.style.width = w_neu+2 + "px";
		container.style.height = h_neu+2 + "px";

		var container1 = findDOMnode(obj, "DiaContainer1");
		container1.style.width = w_neu + "px";
		container1.style.height = h_neu + "px";

		var container2 = findDOMnode(obj, "DiaContainer2");
		container2.style.width = w_neu + "px";
		container2.style.height = h_neu + "px";

		var dia2 = findDOMnode(obj, "DiaContainer" + aktiv);
		setOpacity(dia2,o_neu);


		obj.style.width = w_neu + 12;

		if(o_neu < 100 || w_neu < imgobj.width || h_neu < imgobj.height){
			window.setTimeout("smoothImgResize("+w_neu+","+h_neu+","+o_neu+","+id+",'"+direction+"',"+aktiv+")", 10);
		}else{

			info["imgcache"]["next"]["img"]	= loadImg(getDiaPfad(info,getNummer(info,"next")	));
			info["imgcache"]["prev"]["img"]	= loadImg(getDiaPfad(info,getNummer(info,"prev")	));

			findDOMnode(obj,"text").innerHTML = info["data"]["Texte"][info["current"]];
			findDOMnode(obj,"nummer").innerHTML = (info["current"]+1) + "/" + info["data"]["nMaxBilder"];
		}
	}else{
		window.setTimeout("smoothImgResize("+w+","+h+","+opacity+","+id+",'"+direction+"',"+aktiv+")", 10);
	}
}

function setOpacity(dia,opacity){
	dia.style.opacity = (opacity / 100);
    dia.style.MozOpacity = (opacity / 100);
    dia.style.KhtmlOpacity = (opacity / 100);
    dia.style.filter = "alpha(opacity=" + opacity + ")"; 
}

function displayDiashow(id){
	info = diashows[id];
	obj = document.getElementById(info["name"]);
	obj.innerHTML = diashowCode(id);

//alert(obj.innerHTML.length);

/*	changeControl(id,"first"	,"disable");
	changeControl(id,"prev"	,"disable");
	changeControl(id,"next"	,"disable");
	changeControl(id,"last"	,"disable");

	info["imgcache"]["current"]["img"] = loadImg(getDiaPfad(info,getNummer(info,"current")	));
	//firstImageLoader("current",id);

	info["imgcache"]["next"]["img"]	= loadImg(getDiaPfad(info,getNummer(info,"next")	));
	//imgLoadedButtonChanger(id,"next");

	info["imgcache"]["first"]["img"]	= loadImg(getDiaPfad(info,getNummer(info,"first")	));
	//imgLoadedButtonChanger(id,"first");

	info["imgcache"]["last"]["img"]	= loadImg(getDiaPfad(info,getNummer(info,"last")	));
	//imgLoadedButtonChanger(id,"last");

	info["imgcache"]["prev"]["img"]	= loadImg(getDiaPfad(info,getNummer(info,"prev")	));
	//imgLoadedButtonChanger(id,"prev");
*/
	//startLoading();
}


function diashowCode(id){
	var html = "";

	info = diashows[id];
	for(a=0;a<info["data"]["Bilder"].length;a++){
	html += "";
	html += "<a href=\"" + getDiaPfad(info,a) +"\" rel=\"lightbox[dia"+id+"]\" title=\"" + getDiaText(info,a) +"&nbsp;\"><img src='" + pfad + "quickThumb.php?img=" + getDiaPfad(info,a) +"' style='height:80px;margin:2px;border:1px solid #999999;padding:2px' rel=\"lightbox\"></a> ";
	}

/*	html += '<div id="loader"><img src="/CodePages/AjaxDiaShow/loading.gif"></div>';
	html += '<div style="background-color:#e0e0e0;text-align:left;font-family:arial; font-size:12px;border:1px solid #999999;display:none" id="mainLayer">';
	html += '<div style="position:relative;height:0;width:0;left:4px;top:4px;background-color:#000000;margin-bottom:5px" id="DiaContainer">';
	html += '<div style="position:absolute;z-index:2;height:0;width:0;top:1px;left:1px" id="DiaContainer1"><img id="Dia1" src="' + pfad + '/blank.gif" alt="Diashow FF Krems" width="100%" height="100%"  /></div>'; 
	html += '<div style="position:absolute;z-index:1;height:0;width:0;top:1px;left:1px" id="DiaContainer2"><img id="Dia2" src="' + pfad + '/blank.gif" alt="Diashow FF Krems" width="100%" height="100%" /></div>'; 
	html += '</div>';
	html += '<div style="float:right;margin-right:2px;margin-bottom:3px;">';
	html += '<div style="float:left"><a href="javascript:change('+id+',\'first\')"><img src="x.gif" border="0" id="first" /></a></div>';
	html += '<div style="float:left"><a href="javascript:change('+id+',\'prev\')"><img src="x.gif" border="0" id="prev" /></a></div>';
	html += '<div style="float:left" id="nummer">0/0</div>';
	html += '<div style="float:left"><a href="javascript:change('+id+',\'next\')"><img src="x.gif" border="0" id="next" /></a></div>';
	html += '<div style="float:left"><a href="javascript:change('+id+',\'last\')"><img src="x.gif" border="0" id="last" /></a></div>';
	html += '</div>';
	html += '<div style="margin-left:4px;margin-bottom:3px;" id="text"></div>';
	html += '<div style="clear:both;height:0px;font-size:0;"></div>';
	html += '</div>';*/

	return html;
}


// Hilfsfunktionen

function changeControl(id, direction, action){
	info = diashows[id];
	obj = document.getElementById(info["name"]);
	var node = findDOMnode(obj,direction);

	node.src = Controls[direction][action].src;
	switch(action){
		case "normal":
			node.onmouseover = function(){ this.src = Controls[direction]["hover"].src };
			node.onmouseout = function(){ this.src = Controls[direction][action].src };
			break;
	}

}

function findDOMnode(obj,searchid){
	var len = obj.childNodes.length;
	for(var i = 0; i < len; i++){
		if(obj.childNodes[i].id == searchid){
			return obj.childNodes[i];
		}else{
			if(obj.childNodes[i].hasChildNodes()){
				var x = findDOMnode(obj.childNodes[i],searchid);
				if(x!=true)
					return x;
			}else{
			}
		}
	}
	return true;
}


function loadImg(pfad){
	var temp = new Image();
	temp.src = pfad;
	return temp;
}


function getDiaPfad(info, id){
	return info["data"]["MyPfad"] + "/" + info["data"]["Bilder"][id];
}
function getDiaText(info, id){
	return info["data"]["Texte"][id];
}

function getNummer(info, which){
	switch(which){
		case 'current':
			return info["current"];
			break;
		case 'next':
			return ((info["current"]+1)>(info["data"]["nMaxBilder"]-1))? 0 : (info["current"]+1);
			break;
		case 'first':
			return 0;
			break;
		case 'last':
			return info["data"]["nMaxBilder"]-1;
			break;
		case 'prev':
			return ((info["current"]-1)<0)? info["data"]["nMaxBilder"]-1 : (info["current"]-1);
			break;
	}
}

