/**
	Nasledujici soubor umoznuje vytvorit obrazkovou javascript galerii.	
**/

function imgListViw(listId,divCount){
	this.imgList = new Array();
	this.myId = listId ? listId : 'imglistview';
	this.divCount = divCount ? divCount : 3;
	this.curIndex = 0;
	this.showInProgress = false;
	this.imageWidth = 0;
	this.imageHeight = 0;
	
	var elThis = this;
	
	//funkce nastavi velikost velkeho obrazku, od te chvile se nepouziva tag img, ale tag div s nastavenym pozadim
	this.setImageSize = function(width,height){
		elThis.imageWidth = width;
		elThis.imageHeight = height;
	}
	
	this.addImage = function(imgId,srcSmall,srcBig){
		this.imgList[this.imgList.length] = new imgListItem(imgId,srcSmall,srcBig);		
	}
	
	this.showImageById = function(imgId){
		for(var i in elThis.imgList){
			if(elThis.imgList[i].imgId == imgId) return elThis.showImage(i);
		}
		return false;
	}
	
	this.showImage = function(index){
		index = parseInt(index);
		if(!elThis || !elThis.imgList || !elThis.imgList[index]) return false;
		elThis.curIndex = index;
		
		var item = elThis.imgList[index];
		
		var objMain = getId(elThis.myId);
		if(objMain)	objMain.parentNode.removeChild(objMain);
		var objMain = document.createElement('div');
		objMain.id = elThis.myId;
		objMain.style.display = '';
		objMain.style.width=GetPageWidth()+'px';
		objMain.style.height=GetPageHeight()+'px';
		objMain.style.position='absolute';
		objMain.style.left='0';
		objMain.style.top='0';
		objMain.style.zIndex=1000;		
		
		AddEvent(objMain,'click',elThis.close);
		
		var lastNode = objMain;
		var sc = parseInt(elThis.divCount);
		while(sc > 0){
			var divNode = document.createElement('div');
			divNode.id = elThis.myId+'-in-'+sc;
			AddEvent(divNode,'click',elThis.close);
			lastNode.appendChild(divNode);
			lastNode = divNode;
			
			sc = sc - 1;
		}
		
		if(!elThis.imageWidth || !elThis.imageHeight){
			var imgNode = document.createElement('img');
			imgNode.src = item.srcBig;
			imgNode.id = elThis.myId+"-image";
			AddEvent(imgNode,'click',elThis.doNothing);
			lastNode.appendChild(imgNode);
		}else{
			var imgNode = document.createElement('div');
			imgNode.style.backgroundImage = "url('"+item.srcBig+"')";
			imgNode.style.width = elThis.imageWidth+'px';
			imgNode.style.height = elThis.imageHeight+'px';
			imgNode.id = elThis.myId+"-image";
			AddEvent(imgNode,'click',elThis.doNothing);
			AddEvent(imgNode,'mouseover',elThis.overStart);
			AddEvent(imgNode,'mouseout',elThis.overStop);
			lastNode.appendChild(imgNode);
		}
		
		if(index < (elThis.imgList.length - 1)){
			var bNext = document.createElement('div');
			bNext.id = elThis.myId+'-b-next';
			AddEvent(bNext,'click',elThis.showNext);
			AddEvent(bNext,'mouseover',elThis.overStart);
			AddEvent(bNext,'mouseout',elThis.overStop);
			lastNode.appendChild(bNext);
		}
		
		if(index > 0){
			var bPrev = document.createElement('div');		
			bPrev.id = elThis.myId+'-b-prev';
			AddEvent(bPrev,'click',elThis.showPrev);
			AddEvent(bPrev,'mouseover',elThis.overStart);
			AddEvent(bPrev,'mouseout',elThis.overStop);
			lastNode.appendChild(bPrev);
		}
		
		var bClose = document.createElement('div');		
		bClose.id = elThis.myId+'-b-close';
		AddEvent(bClose,'click',elThis.close);
		AddEvent(bClose,'mouseover',elThis.overStart);
		AddEvent(bClose,'mouseout',elThis.overStop);
		lastNode.appendChild(bClose);
		
		var showingText = elThis.getShowingText(index);
		if(showingText){
			var showingNode = document.createElement('div');		
			showingNode.id = elThis.myId+'-showing';
			showingNode.innerHTML = showingText;
			AddEvent(showingNode,'mouseover',elThis.overStart);
			AddEvent(showingNode,'mouseout',elThis.overStop);
			lastNode.appendChild(showingNode);
		}
		
		document.body.appendChild(objMain);
		
		elThis.eventShow(true);
		
		setTimeout(elThis.progressStop,2000);
	}
	
	this.getShowingText = function(index){
		return "Obrázek <strong>"+(index+1)+"</strong> ze "+elThis.imgList.length;
	}
	
	this.progressStop = function(){
		elThis.showInProgress = false;
	}
	
	this.doNothing = function(){
		elThis.showInProgress = true;
	}
	
	this.close = function(e){
		var obj = SrcFromEvent(e);
		if(obj && obj.id==(elThis.myId+'-b-close')) elThis.showInProgress = false;
		
		if(elThis.showInProgress)	return;
		var objMain = getId(elThis.myId);
		if(objMain) objMain.parentNode.removeChild(objMain);		
		elThis.eventShow(false);
	}
	
	this.showNext = function(){
		var index = parseInt(elThis.curIndex);
		if((index + 1) < elThis.imgList.length){
			elThis.showInProgress = true;
			index = index+1;
			elThis.showImage(index);
		}		
	}
	
	this.showPrev = function(){
		var index = parseInt(elThis.curIndex);
		if(index > 0){
			elThis.showInProgress = true;
			index = index - 1;
			elThis.showImage(index);
		}
	}
	
	this.overStart = function(e){
		var obj = SrcFromEvent(e);
		obj.className = "over";
	}
	
	this.overStop = function(e){
		var obj = SrcFromEvent(e);
		obj.className = "";
	}
	
	this.eventShow = function(showing){
		var elements = document.body.getElementsByTagName("SELECT");
		if(!elements) return;
		for(var i in elements){
			//if(showing) elements[i].style.display = 'none';
			//else elements[i].style.display = 'none';
		}
	}
}

function imgListItem(imgId,srcSmall,srcBig){
	this.imgId = imgId;
	this.srcSmall = srcSmall;
	this.srcBig = srcBig;	
}
