/* fotogalerie */
Fotogalerie = SZN.ClassMaker.makeClass({
    NAME: "Fotogalerie",
    VERSION: "2.0",
    CLASS: "class"
});
/* zakladni konstruktor */
Fotogalerie.prototype.$constructor = function(){
	this.active = false;
	this.slide = false;
	this.I = 0;
	this.bodyWidth = document.documentElement.clientWidth || document.body.clientwidth || window.innerWidth || document.body.offsetWidth;
    this.bodyHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || document.body.offsetHeight;
	this._link();
}

Fotogalerie.prototype._makeBg = function(e,elm){
	SZN.Events.cancelDef(e);
	this.active = true;
	//document.body.style.oveflow = 'hidden';
	this.fotoId = parseInt((elm.id.split('Fotogalerie-')[1]),10);
	this.rootBg = SZN.cEl('div','FotogalerieJSBg');
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.rootBg.style.top = scrolltop+'px';
	
	this.hideButton = SZN.cEl('img','Fotogalerie-hide');
	this.hideButton.src = './img/del.gif';
	this.rootBg.appendChild(this.hideButton);
	var hideAction = SZN.Events.addListener(this.hideButton,'click',this,'_close',false);
	
	document.body.appendChild(this.rootBg);
	/*- slide select -*/
	this.slideSelectDiv = SZN.cEl('div','slideSel','slideSel');
	this.slideSelect = SZN.cEl('select');
	this.slideOptions = [];
	for(var i=1;i<=5;i++){
		var def = i==3 ? true : false; 
		var opt = new Option(i+'s',i,def);
		this.slideOptions.push(opt);
	}
	for(var i=0;i<this.slideOptions.length;i++){
		if(SZN.Browser.client == 'ie'){ this.slideSelect.add(this.slideOptions[i]); }
		this.slideSelect.appendChild(this.slideOptions[i]);
	}
	this.slideOk = SZN.cEl('input');
	this.slideOk.value = 'Ok';
	this.slideOk.type = 'button';
	this.slideSelectDiv.appendChild(this.slideSelect);
	this.slideSelectDiv.appendChild(this.slideOk);
	this.rootBg.appendChild(this.slideSelectDiv);
	this.slideAction = SZN.Events.addListener(this.slideOk,'click',this,'_slide',false);
	/*- slide select -*/
	this.escapeAction = SZN.Events.addListener(document,'keydown',this,'_keyPress',false);
	this._callFoto();
}

Fotogalerie.prototype._close = function(){
	this.I = 0;
	document.body.removeChild(this.rootBg);
	//document.body.style.overflow = 'auto';
	SZN.Events.removeListener(this.escapeAction);
}

Fotogalerie.prototype._callFoto = function(){
	var url = './scripts/fotogalerie.php?id='+this.fotoId;
	var rq = new SZN.HTTPRequest();
	rq.setMethod('get');
	rq.setFormat('txt');
	rq.setMode('async');
	rq.send(url, this, '_answer');
}

Fotogalerie.prototype._answer = function(txt,status){
	if(status == 200){
		eval('data = '+txt);
		this.data = data;
		this._makeThumbs();
		this._makeImg();
	}
}

Fotogalerie.prototype._fileExist = function(path){
	if(arguments.length > 1){
		if(arguments[1] == '200' || arguments[1] == '304'){ this.fileStatusTrue = true; }
		else { this.fileStatusTrue = false; }
	} else {
	var rq = new SZN.HTTPRequest();
		rq.setMethod('get');
		rq.setMode('async');
		rq.send(path,this,'_fileExist');
	}
}

Fotogalerie.prototype._makeThumbs = function(){
	this.thumbs = SZN.cEl('div','Fotogalerie-thumbs','Fotogalerie-thumbs');
	this.rootBg.appendChild(this.thumbs);
	html = '<table>';
	for(var i=0;i<this.data.length;i++){
		var url = '../admin/data/';
		var imgMark = url+this.data[i].id+'_mark.'+this.data[i].format;
		var imgOriginal = url+this.data[i].id+'.'+this.data[i].format;
		/*this._fileExist(imgMark);		
		var imgHref = this.fileStatusTrue ? imgMark : imgOriginal;*/
		var imgHref = imgMark;
		var file = url+'thumb_'+this.data[i].id+'_'+this.data[i].thumb+'.'+this.data[i].format;
		var img = '<tr><td><a id="th_'+i+'" href="'+imgHref+'" title="'+this.data[i].popis+'"><img src="'+file+'" alt="" title="" border="0" /></a></td></tr>';
		html += img;
	}
	html += '</table>';
	this.thumbs.innerHTML = html;
	this._lineThumbs();
}

Fotogalerie.prototype._lineThumbs = function(){
	this.views = this.thumbs.getElementsByTagName('a');
	for(var i=0;i<this.views.length;i++){
		var showAction = SZN.Events.addListener(this.views[i],'click',this,'_show',false);
	}
	/*this._makeImg();*/
}

Fotogalerie.prototype._makeImg = function(){
	this.img = SZN.cEl('img','','',{
		position: 'absolute',
		visibility:  'hidden',
		cursor: 'pointer'
	});
	this.imgDesc = SZN.cEl('p','imgDesc','imgDesc');
	this.rootBg.appendChild(this.img);
	this.rootBg.appendChild(this.imgDesc);
	var loadImgAct = SZN.Events.addListener(this.img,'load',this,'_posImg',false);
	var imgCloseAct = SZN.Events.addListener(this.img,'click',this,'_closeImg',false);
	this._show(null,SZN.gEl('th_'+this.I));
}

Fotogalerie.prototype._closeImg = function(e,elm){
	this.I++;
	var nextImg = SZN.gEl('th_'+this.I);
	if(nextImg){
		this._show(null,nextImg);
	} else {
		this.slide = false;
	}
}

Fotogalerie.prototype._show = function(e,elm){
	if(e){
		SZN.Events.cancelDef(e);
		this.slide = false;
		window.clearTimeout(this.slideInterval);
	}
	this.I = elm.id.split('th_')[1];
	this.img.style.opacity = '0';
	this.img.style.visibility = 'hidden';
	for(var i=0;i<this.views.length;i++){
		this.views[i].parentNode.style.border = '1px solid #FFF';
		this.views[i].removeAttribute('style');
		this.views[i].firstChild.removeAttribute('style');
	}
	elm.parentNode.style.border = '1px solid red';
	elm.style.opacity = '1';
	elm.firstChild.style.filter = 'alpha(opacity="100")';
	this.img.src = elm;
	this.img.title = elm.title;
	this.img.alt = elm.title;
}

Fotogalerie.prototype._newImgSize = function(){
	var sizeImg = SZN.cEl('img');
	sizeImg.src = this.img.src;
	document.body.appendChild(sizeImg);
	var sizes = [];
	sizes.push( sizeImg.offsetWidth );
	sizes.push( sizeImg.offsetHeight );
	document.body.removeChild(sizeImg);
	return sizes;
}

Fotogalerie.prototype._posImg = function(e,elm){
	this.img.style.opacity = '0';
	this.img.style.filter = 'alpha(opacity="0")';
	this.bodyWidth = document.documentElement.clientWidth || document.body.clientwidth || window.innerWidth || document.body.offsetWidth;
    this.bodyHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || document.body.offsetHeight;
	var im = this._newImgSize();
	var imw = im[0];
	var imh = im[1];

	this.img.removeAttribute('width');
	this.img.removeAttribute('height');

	if(imw >= imh){ 	
		if(imw > 1024){
			this.img.width = 1024;
			if(this.img.offsetHeight >= this.bodyHeight){
				this.img.removeAttribute('width');
				this.img.height = (this.bodyHeight-40);
				this.img.style.top = '20px';
			} else {
				var pt = ( this.bodyHeight-this.img.offsetHeight )/2;
				this.img.style.top = pt+'px';
			}
		} else{
			this.img.width = imw;
			if(imh >= this.bodyHeight){
				this.img.removeAttribute('width');
				this.img.height = (this.bodyHeight-40);
				this.img.style.top = '20px';
			} else {
				var pt = ( this.bodyHeight-imh )/2;
				this.img.style.top = pt+'px';
			}
		}
		
	} else {
		if(imh >= this.bodyHeight){
			this.img.removeAttribute('width');
			this.img.height = (this.bodyHeight-40);
			this.img.style.top = '20px';
		} else {
			var pt = ( this.bodyHeight-imh )/2;
			this.img.style.top = pt+'px';
		}
	}
	
	var pl = ((this.bodyWidth-105)-this.img.width)/2;
	this.img.style.left = (pl+105)+'px';
	this.img.style.visibility = 'visible';
	var options = {
		elm : this.img,
		fade : true,
		frequency : 600 
	};
	var anim = new SZN.Animator(options);
	if(this.slide){
		this.slideInterval = window.setTimeout(SZN.bind(this,this._closeImg),this.slideNum);
	}
}

Fotogalerie.prototype._slide = function(e,elm){
	for(var i=0;i<this.slideOptions.length;i++){
		if(this.slideOptions[i].selected){
			var num = this.slideOptions[i].value*1000;
			this.slideNum = num;
			this.slideInterval = window.setTimeout(SZN.bind(this,this._closeImg),num);
		}
	}
	this.slide = true;
}

Fotogalerie.prototype._scrollAction = function(e,elm){
	SZN.Events.cancelDef(e);
	var scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
	this.rootBg.style.top = scrolltop+'px';
}

Fotogalerie.prototype._keyPress = function(e,elm){
	if(e.keyCode == '27'){
		this._close();
	}
}

Fotogalerie.prototype._link = function(){
	var a = SZN.Dom.getElementsByClass('Foto-start','','a');
	for(var i=0;i<a.length;i++){
		var startAction = SZN.Events.addListener(a[i],'click',this,'_makeBg',false);
	}
	var rollAction = SZN.Events.addListener(window,'scroll',this,'_scrollAction',false);
}

