id						= "layerGallery";
galleryImageNormalDir	= 'galleryImageNormalDir';
galleryImageThumbDir    = 'galleryImageThumbDir';
galleryImgBig			= 'galleryImgBig';
picNavBox				= 'picNavBoxFrame';
pathToPreLoader			= "css/gallery/view/loader.gif";
pathToPreLoader2		= "css/gallery/view/loader2.gif";
myCurrentGID			= 0;
myCurrentPID			= 0;
myPrevPID				= 0;
myNextPID				= 0;
galleryImgPrev			= "galleryImgPrev";
galleryImgNext			= "galleryImgNext";
nextPhotoTextLink		= "nextPhotoTextLink";
nextPhotoImgLink		= "nextPhotoImgLink";
prevPhotoTextLink		= "prevPhotoTextLink";
prevPhotoImgLink		= "prevPhotoImgLink";
currentPhotoImgLink		= "currentPhotoImgLink";
prevBox					= "prevBox";
nextBox					= "nextBox";
myPics					= new Array();
initFirstView			= false;

window.onresize=renewGallery;

var preLoadLoader = new Image();
preLoadLoader.src = pathToPreLoader;

var preLoadLoader2 = new Image();
preLoadLoader2.src = pathToPreLoader2;

function renewGallery(){
	var elem = document.getElementById(id);
	var currentScrollDimension = getCurrentScrollDimension();

	var difference = getBodyDimensionWithScrollDimension().height-getBodyDimension().height;
	if(difference>=0){
		difference=10;
	}else{
		difference=0;
	}

	var newLeft = ((getBodyDimension().width/2)-(getDimension(id).width/2))+currentScrollDimension.width-difference; // ? der kleine ruckler , warum?
	var newTop  = ((getBodyDimension().height/2)-(getDimension(id).height/2))+currentScrollDimension.height-difference;

	if(newLeft<0){
		elem.style.left = "20px";
	}else{
		elem.style.left = newLeft+"px";
	}
	if(newTop<0){
		elem.style.top  ="20px";
	}else{
		elem.style.top  = newTop+"px";
	}	
}

/*** BEGIN   *** Layer  *** *** *** *** *** *** *** *** *** ***/
function showGallery(gId,pId){
	myCurrentGID=gId;
	myCurrentPID=pId;
	showLayerbackground();
	var elem = document.getElementById(id);
	elem.style.display="block";
	var normalPath = document.getElementById(galleryImageNormalDir).value;
	var img = document.getElementById(galleryImgBig);
	img.src	= pathToPreLoader;
	var preLoadImg = new Image();
    preLoadImg.src = normalPath+"/"+gId+"/"+pId+".jpg";
	if(preLoadImg.height>0){
		checkIfImgComplete(preLoadImg,preLoadImg.height,preLoadImg.width,0,0,id,gId,pId,normalPath,'galleryEngine01');
	}else{
		preLoadImg.onload  = function(){galleryEngine01(gId,pId,normalPath);};
		preLoadImg.onerror = function(){galleryEngine01(gId,pId,normalPath);}; // ignore
	}
	var position = getMiddlePositionInBody(id);
	var difference = getBodyDimensionWithScrollDimension().height-getBodyDimension().height;
	if(difference>=0){
		difference=10;
	}else{
		difference=0;
	}
	elem.style.display="none";
	elem.style.top=(position.top-difference)+"px";
	elem.style.left=(position.left-difference)+"px";
	elem.style.display="block";
	elem.style.visibility="visible";
}

function checkIfImgComplete(img,prevHeight,prevWidth,height,width,id,gId,pId,path,funcOnSuccess){
	if(prevHeight>height || prevWidth>width){
		prevHeight = height;
		prevWidth  = width;
		height = img.height;
		width  = img.width;
		window.setTimeout(function(){checkIfImgComplete(img,prevHeight,prevWidth,height,width,id,gId,pId,path,funcOnSuccess);},50);
	}else{
		eval(funcOnSuccess+"(gId,pId,path)");
	}
}

function galleryEngine01(gId,pId,normalPath){
	var img = document.getElementById('galleryImgBig');	
	img.src	= normalPath+"/"+gId+"/"+pId+".jpg";
	window.setTimeout("galleryEngine02();",500);
}

function galleryEngine02(){
	rollIn(picNavBox,2,10);
}

function rollIn(picNavBox,steps,speed){
	var elem = document.getElementById(picNavBox);
	document.getElementById(id).style.visibility="hidden";
	elem.style.display="block";
	elem.style.visibility="hidden";
	originalHeight = getDimension(picNavBox).height;
	elem.style.height="0px";
	elem.style.visibility="visible";
	document.getElementById(id).style.visibility="visible";
	var originalTopBox = getPosition(id).top;
	initFirstView=true;
	refreshGallery(myCurrentGID,myCurrentPID);
	rollInEngine(picNavBox,0,originalHeight,originalTopBox,steps,speed);
}

function rollInEngine(picNavBox,currentHeight,originalHeight,originalTopBox,steps,speed){
	var elem = document.getElementById(picNavBox);
	if(currentHeight<=originalHeight){
		elem.style.visibility="visible";
		elem.style.height=currentHeight+"px";
		currentHeight = currentHeight+steps;
		document.getElementById(id).style.top=(originalTopBox-(currentHeight/2))+"px";
		window.setTimeout(function(){rollInEngine(picNavBox,currentHeight,originalHeight,originalTopBox,steps,speed)},speed);
	}else{
		elem.style.height=originalHeight+"px";
	}
}

function refreshGallery(gId,pId){
	var result		= getPreviousAndNext(gId,pId);
	var prevPID		= result.prev;
	var nextPID		= result.next;
	if(prevPID > 0 && nextPID > 0){
		refreshGalleryEngine(gId,pId,prevPID,nextPID);
	}else{
		myAjaxRequest('GET','ext/gallery.php?ts='+(new Date().getMilliseconds())+'&gId='+gId+'&pId='+pId,'gallery_loading','gallery_loaded','gallery_success','gallery_failure');
	}
}


function gallery_loading(){
	var imgPrev = document.getElementById(galleryImgPrev);
	imgPrev.src	= pathToPreLoader2;
	var imgNext = document.getElementById(galleryImgNext);
	imgNext.src	= pathToPreLoader2;
	if(initFirstView===false){
		var imgCurrent = document.getElementById(galleryImgBig);
		imgCurrent.src	= pathToPreLoader;
	}
}

function gallery_loaded(){}

function gallery_failure(){
	alert("Fehler in der Datenverarbeitung innerhalb der Gallery - Bei dauerhaften Auftreten bitte an den Administrator wenden!");
}

function gallery_success(t){
	myJSONObject = eval('(' + t + ')');
	if(myJSONObject.result02.length==0){
		gallery_failure();
		return;
	}
	var gId			= myJSONObject.result01[0].gId;
	var currentPID	= myJSONObject.result01[0].currentPId;
	myPics[gId]		= new Array();
	for(var i=0;i<myJSONObject.result02.length;i++){
		myPics[gId][i]	= myJSONObject.result02[i].pId;
	}
	var result = getPreviousAndNext(gId,currentPID);
	var prevPID		= result.prev;
	var nextPID		= result.next;

	refreshGalleryEngine(gId,currentPID,prevPID,nextPID);
}

function refreshGalleryEngine(gId,currentPID,prevPID,nextPID){
	// current
	// link
	var currentImgLink = document.getElementById(currentPhotoImgLink);
	if(nextPID>0){
		currentImgLink.onclick= function(){refreshGallery(gId,nextPID);return false;};
	}else{
		currentImgLink.onclick= function(){return false;};
	}
	if(initFirstView===false){
		var normalPath = document.getElementById(galleryImageNormalDir).value;
		// img
		var imgCurrentPre = new Image();
		imgCurrentPre.src	= normalPath+"/"+gId+"/"+currentPID+".jpg";

		if(imgCurrentPre.height>0){
			checkIfImgComplete(imgCurrentPre,imgCurrentPre.height,imgCurrentPre.width,0,0,id,gId,currentPID,normalPath,'setCurrent');
		}else{
			imgCurrentPre.onload  = function(){setCurrent(gId,currentPID,normalPath);};
			imgCurrentPre.onerror = function(){setCurrent(gId,currentPID,normalPath);}; // ignore
		}
	}
	initFirstView=false;
	var thumbPath = document.getElementById(galleryImageThumbDir).value;

	// prev
	if(prevPID==0){
		document.getElementById(prevBox).style.visibility="hidden";
		document.getElementById(prevPhotoTextLink).style.visibility="hidden";
	}
	if(prevPID>0 && document.getElementById(prevBox).style.visibility=="hidden"){
		document.getElementById(prevBox).style.visibility="visible";
		document.getElementById(prevPhotoTextLink).style.visibility="visible";
	}
	if(prevPID>0){
		//links
		var prevTextLink = document.getElementById(prevPhotoTextLink);
		prevTextLink.onclick= function(){refreshGallery(gId,prevPID);return false;};
		var prevImgLink = document.getElementById(prevPhotoImgLink);
		prevImgLink.onclick= function(){refreshGallery(gId,prevPID);return false;};
		// img

		var imgPrevPre = new Image();
		imgPrevPre.src	= thumbPath+"/"+gId+"/"+prevPID+".jpg";

		if(imgPrevPre.height>0){
			checkIfImgComplete(imgPrevPre,imgPrevPre.height,imgPrevPre.width,0,0,id,gId,prevPID,thumbPath,'setPrev');
		}else{
			imgPrevPre.onload  = function(){setPrev(gId,prevPID,thumbPath);};
			imgPrevPre.onerror = function(){setPrev(gId,prevPID,thumbPath);}; // ignore
		}
	}
	// next
	if(nextPID==0){
		document.getElementById(nextBox).style.visibility="hidden";
		document.getElementById(nextPhotoTextLink).style.visibility="hidden";
		
	}
	if(nextPID>0 && document.getElementById(nextBox).style.visibility=="hidden"){
		document.getElementById(nextBox).style.visibility="visible";
		document.getElementById(nextPhotoTextLink).style.visibility="visible";
	}
	if(nextPID>0){
		// links
		var nextTextLink = document.getElementById(nextPhotoTextLink);
		nextTextLink.onclick= function(){refreshGallery(gId,nextPID);return false;};
		var nextImgLink = document.getElementById(nextPhotoImgLink);
		nextImgLink.onclick= function(){refreshGallery(gId,nextPID);return false;};
		// img
		var imgPrevNext = new Image();
		imgPrevNext.src	= thumbPath+"/"+gId+"/"+nextPID+".jpg";

		if(imgPrevNext.height>0){
			checkIfImgComplete(imgPrevNext,imgPrevNext.height,imgPrevNext.width,0,0,id,gId,nextPID,thumbPath,'setNext');
		}else{
			imgPrevNext.onload  = function(){setNext(gId,nextPID,thumbPath);};
			imgPrevNext.onerror = function(){setNext(gId,nextPID,thumbPath);}; // ignore
		}
	}
}

function setPrev(gId,pId,path){
	var imgPrev = document.getElementById(galleryImgPrev);
	imgPrev.src= path+"/"+gId+"/"+pId+".jpg";
}

function setNext(gId,pId,path){
	var imgNext = document.getElementById(galleryImgNext);
	imgNext.src= path+"/"+gId+"/"+pId+".jpg";

}

function setCurrent(gId,pId,path){
	var imgCurrent = document.getElementById(galleryImgBig);
	imgCurrent.src= path+"/"+gId+"/"+pId+".jpg";
}

function getMiddlePositionInBody(id){
	var position	= { left:0, top:0 };
	var bodyDimension = getBodyDimension();
	var elemDimension = getDimension(id);
	var currentScrollDimension = getCurrentScrollDimension();
	position.top = ((bodyDimension.height/2)-(elemDimension.height/2))+currentScrollDimension.height;
	position.left = ((bodyDimension.width/2)-(elemDimension.width/2))+currentScrollDimension.width;
	return position;
}

function hideLayer(id){
	hideElement(picNavBox);
	hideElement(id);
	hideLayerbackground();
}

function fwdToGalleryChose(){
	hideLayer(id);
	location.href = 'index.php?s=gallery&s2=chose';
}

function getPreviousAndNext(gId,pId){
	var result		= { prev:0, next:0 };
	if(typeof(myPics[gId])!="object"){
		return result;
	}
	var hit			= false;
	for(var i=0;i<myPics[gId].length;i++){
		if(hit==true){
			result.next = myPics[gId][i];
			break;
		}
		if(pId==myPics[gId][i]){
			hit=true;
		}else{
			result.prev=myPics[gId][i]
		}
	}
	return result;
}
