// DDS Lightbox Galéria

var idstohide=new Array(); //TODO!! flash tartalmu elemek id-i.

var imgpath="/galeria/thumb2/";
var thumbpath="/galeria/thumb1/";
var noimage="/images/sp.gif";
var viewthumb="/images/gallery/view_thumb.gif";
var viewfull="/images/gallery/view_full.gif";

var initsize=new Array(950,560);
var imagelist=new Array();
var tpages=new Array();
var textlist=new Array();
var mode=2; // 1 képek, 2 thumbnailek
var cp=0; // mode 2 aktuális oldal
var curdir=''; //aktuális mappanév 

function isArray(obj) {
    return obj.constructor == Array;
}

function array_chunk( input, size ) {
	for(var x, i = 0, c = -1, l = input.length, n = []; i < l; i++){
		(x = i % size) ? n[c][x] = input[i] : n[++c] = [input[i]];
	}
	return n;
}

function showGallery(gid,initpic){
	imagelist=new Array();
	current=0;
	loadplus="";
	if(initpic) loadplus="&init="+initpic;
	ajax_load('galleryload.php?g='+gid+''+loadplus);
	dbox=document.getElementById('box');
        dbox.style.width=initsize[0]+'px';
	dbox.style.height=initsize[1]+'px';
	
	/*if(initpic) {
		for(i=0; i<imagelist.length;i++) {
			if(imagelist[i]==initpic) {
				alert("MEGVAGY! "+i); 
				current=i;
			}
		}
		mode=1;
	}*/
	cp=0;
	galleryReload();
	window.onresize=winResize;
	center('box',initsize[0],initsize[1]);
	showItem('overlay');
        showItem('box');
	overlayReload();
	visSelectsAndFlash('hidden');
   	return false;
}

function galleryReload() {
	image=document.getElementById('lbimage');
        cntr=document.getElementById('counter');
        keptxt=document.getElementById('lbtext');
        thumbs=document.getElementById('lbthumbs');
        view=document.getElementById('lbview');

	tpages=new Array();
	
        loadImage(imgpath+imagelist[current]);
	if (mode==1) {
		thumbs.innerHTML='';
		showItem('lbimage');
		if(imagelist.length>1) {
		        showItem('prev',40);
		        showItem('next',40);
		} else {
			hideItem('prev');
			hideItem('next');
        	}
        	if(textlist[current]) keptxt.innerHTML=textlist[current];
        	cntr.innerHTML=current+1+'/'+imagelist.length;
   	
        	view.src=viewthumb;
        	view.title="váltás indexkép nézetre";
        	
        } else {
		tpages=array_chunk(imagelist,20);
		thumbs.innerHTML="";
		if(tpages[cp])	{
			if (tpages[0].length==1 && tpages[0][0]!='') {
				switchMode(0);
				return;
			} else loadThumbs();
		}
		if(tpages.length>1) {
		        showItem('prev',50);
		        showItem('next',50);
		} else {
			hideItem('prev');
			hideItem('next');
        	}
        	cntr.innerHTML=cp+1+'/'+tpages.length;
        	keptxt.innerHTML=curdir;
        	view.src=viewfull;
        	view.title="váltás teljes kép nézetre";
        }
}

function switchMode(imgnr) {
	image=document.getElementById('lbimage');
	if(!imgnr && imgnr!="0") imgnr=current;
	if(mode==1) {
		cp=Math.floor(imgnr/20);
		mode=2;
	} else {
		current=imgnr;
		mode=1;
		image.src=noimage;
	}
	hideItem('lbimage');
	galleryReload();
}

function winResize() {
	center('box',initsize[0],initsize[1]);
	overlayReload();
}

// elrejtés, alapbeállítások visszaállítása
function hideBox(){
	dbox=document.getElementById('box');
	olay=document.getElementById('overlay');
	image=document.getElementById('lbimage');
	image.src=noimage;
	hideItem('overlay');
	hideItem('box');
	hideItem('lbimage');
	visSelectsAndFlash('visible');
	dbox.style.height=initsize[1]+'px';
	dbox.style.width=initsize[0]+'px';
	window.onresize='';
	return false;
}

function overlayReload()
{
	if (window.innerHeight && window.scrollMaxY || window.innerWidth && window.scrollMaxX) {    
		yScroll = window.innerHeight + window.scrollMaxY;
		xScroll = window.innerWidth + window.scrollMaxX;
		var deff = document.documentElement;
		var wff = (deff&&deff.clientWidth) || document.body.clientWidth || window.innerWidth || self.innerWidth;
		var hff = (deff&&deff.clientHeight) || document.body.clientHeight || window.innerHeight || self.innerHeight;
		xScroll -= (window.innerWidth - wff);
		yScroll -= (window.innerHeight - hff);
	} else if (document.body.scrollHeight > document.body.offsetHeight || document.body.scrollWidth > document.body.offsetWidth){ // all but Explorer Mac
		yScroll = document.body.scrollHeight;
		xScroll = document.body.scrollWidth;
	} else { // Explorer Mac... Explorer 6 Strict, Mozilla, Safari
		yScroll = document.body.offsetHeight;
		xScroll = document.body.offsetWidth;
	}
	olay=document.getElementById('overlay');
	olay.style.height = yScroll +'px';
	olay.style.width = xScroll +'px';
}

function center(windowname, fwidth, fheight) {
	var successWin = document.getElementById(windowname);
	var pagesize = getPageSize();    
	var arrayPageScroll = getPageScrollTop();
	lbtop = (arrayPageScroll[1] + (pagesize[1] - fheight-60)/3);
	lbleft = (arrayPageScroll[0] + (pagesize[0] - fwidth)/2);
	successWin.style.top = (lbtop < 0) ? "0px" : lbtop + "px";
	successWin.style.left = (lbleft < 0) ? "0px" : lbleft + "px";
}

function getPageSize(){
	var de = document.documentElement;
	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight
	arrayPageSize = new Array(w,h) 
	return arrayPageSize;
}

function getPageScrollTop(){
	var yScrolltop;
	var xScrollleft;
	if (self.pageYOffset || self.pageXOffset) {
		yScrolltop = self.pageYOffset;
		xScrollleft = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop || document.documentElement.scrollLeft ){     // Explorer 6 Strict
		yScrolltop = document.documentElement.scrollTop;
		xScrollleft = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScrolltop = document.body.scrollTop;
		xScrollleft = document.body.scrollLeft;
	}
	arrayPageScroll = new Array(xScrollleft,yScrolltop) 
	return arrayPageScroll;
}

// elrejtendő elemek (select, flash, stb)
function visSelectsAndFlash(visibility){
	selects = document.getElementsByTagName('select');
	for(i = 0; i < selects.length; i++) {
		selects[i].style.visibility = visibility;
	}
	for(i = 0; i < idstohide.length; i++) {
		currentid=document.getElementById(idstohide[i]);
		if(currentid)
			currentid.style.visibility = visibility;
	}
}

function prevImage(){
	image=document.getElementById('lbimage');
	cntr=document.getElementById('counter');
	keptxt=document.getElementById('lbtext');
	
	if(mode==1) {
		current--;
		if(current<0) current=imagelist.length-1;
		loadImage(imgpath+imagelist[current]);
        	cntr.innerHTML=current+1+'/'+imagelist.length;
		if(textlist[current]) keptxt.innerHTML=textlist[current];
	} else {
		cp--;
		if(cp<0) cp=tpages.length-1;
		thumbs.innerHTML='';
		loadThumbs();
		cntr.innerHTML=cp+1+'/'+tpages.length;
	}

}

function nextImage(){
	image=document.getElementById('lbimage');
	cntr=document.getElementById('counter');
	keptxt=document.getElementById('lbtext');
	
	if(mode==1){
		current++;
		if(current==imagelist.length) current=0;
		loadImage(imgpath+imagelist[current]);
		cntr.innerHTML=current+1+'/'+imagelist.length;
		if(textlist[current]) keptxt.innerHTML=textlist[current];
	} else {
		cp++;
		if(cp==tpages.length) cp=0;
		thumbs.innerHTML='';
		loadThumbs();
		cntr.innerHTML=cp+1+'/'+tpages.length;
	}
}

function resizeImage(img){
 	pagesize=getPageSize();
 	arany=img.width/img.height;
 	if(img.height>pagesize[1]) {
 		img.height=pagesize[1]-80;
 		img.width=img.height*arany;
 	}
	if(img.width>pagesize[0]) {
 		img.width=pagesize[0]-80;
 		img.height=img.width/arany;
 	}
 	return img;
}

function showItem(item,opc) {
	obj=document.getElementById(item);
	obj.style.display='block';
	if (opc) {
		changeOpacity(opc,item);
	}
}

function hideItem(item,opc) {
	obj=document.getElementById(item);
	obj.style.display='none';
	if (opc) {
		changeOpacity(opc,item);
	}
}
function fadeItem(from, to, id, time) {
	if(!time) time=100;
	 var speed = Math.round(time / 100);
    	 var timer = 0; 
	if(from>to) {
		for (f=from; f>=to; f--) {
			setTimeout("changeOpacity("+f+",'"+id+"')",(timer*speed));
			timer++;
		}
	} else {
		for (f=from; f<=to; f++) {
			setTimeout("changeOpacity("+f+",'"+id+"')",(timer*speed));
			timer++;
		}
	}
}
function loadImage(src) {
	if(src.indexOf('.jpg')==-1) src=noimage;
	showItem('loading');
	changeOpacity(40,'lbimage');
	//fadeItem(100,40,'lbimage',500);
	image=document.getElementById('lbimage');
	preimg=new Image();
	preimg.onload=function(){
		changeOpacity(0,'lbimage');
		image.src=src;  //imgpath+imagelist[current];
		image.style.top=65+(450-preimg.height)/2+'px';
        	image.style.left=30+(560-preimg.width)/2+'px';
        	changeOpacity(100,'lbimage');
        	hideItem('loading');
        	//fadeItem(0,100,'lbimage',500);
        }
        preimg.src=src;

}
function loadThumbs() {
	for (x=0; x<tpages[cp].length; x++) {
		if(!tpages[cp][x]) {
			thumbs.innerHTML='<div class="b c m10">Kérjük válasszon egy képtár mappát!</div>'; 
			return;
		}
		i=cp*20+x;
		thumbs.innerHTML+='<img id="thmb'+i+'" class="thumb" src="'+thumbpath+tpages[cp][x]+'" onmouseover="changeOpacity(70,this.id);" onmouseout="changeOpacity(100,this.id);" alt="'+textlist[i]+'" title="'+textlist[i]+'" onclick="switchMode('+i+');" width="100" height="100" />';
	}
}
function changeOpacity(opacity, id) {
	var object = document.getElementById(id).style;
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}
