// Zeppelin v1.5
// Author: Witold Wieszczek
// Website: http://www.libertas.pl/
// Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
// base on Lightbox class written by Lokesh Dhakar visit http://www.huddletogether.com/projects/lightbox/
// and LyteBox class written by Markus F. Hay visit http://www.dolem.com/lytebox/

Array.prototype.removeDuplicates=function(){for(var i=1;i<this.length;i++)if(this[i][0]==this[i-1][0])this.splice(i,1);}

function ocen(zdj,ocena)
{
  var params="idenzdj="+zdj+"&ocena="+ocena;
  if(ocena=='S') params+="&komentarz=" + encodeURI(document.getElementById("komentarz").value)+ "&podpisold=" + encodeURI(document.getElementById("podpisold").value) + "&podpisnew=" + encodeURI(document.getElementById("podpisnew").value);

  if(window.XMLHttpRequest) xmlhttp=new XMLHttpRequest();
  else if(window.ActiveXObject) xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  // kod dla IE6, IE5. tfu...
  if(xmlhttp==null) document.getElementById("zForm").innerHTML="Twoją przeglądarka nie obsługuje tej funkcji. Zaktualizuj ją do nowszej wersji.";
  else
  {
    document.getElementById("zForm").innerHTML="zapisuję, proszę czekać...";
    var url="/ocen_zdj.php";
    xmlhttp.open("POST",url,true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length",params.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.onreadystatechange=function() {if(xmlhttp.readyState==4 && xmlhttp.status==200) document.getElementById("zForm").innerHTML=xmlhttp.responseText;}
    xmlhttp.send(params);
  }
}

function validate_paap()
{
  form=document.forms.paap;
  if(form.pa_szablon.value=="" || form.pa_imie.value=="" || form.pa_nazwisko.value=="" || form.pa_plec.value=="")
  {
    window.alert("Brak wystarczającej ilości danych! Wypełnij wszystkie pola!");
    return false;
  }
  else return true;
}

function Zeppelin()
{
  this.maxOpacity=80;
  this.borderSize=6; //the same as padding in the CSS
  this.resizeDuration=10; //speed of the image resizing (10=fast, 100=slow)

  this.autoResize=false;//wylaczone ze wzgledu na mape i wzrost rozdzielczosci userow
  this.doAnimations=true;	
  this.doAnimations2=false;

  this.resizeHTimer=0;
  this.resizeWTimer=0;
  this.showContentTimer=0;
  this.overlayTimer=0;  
  this.imageTimer=0;
  this.imageArray=new Array();
  this.activeImage=null;
  this.preload=0;	
  this.doc=document;

//  this.ie/*@cc_on = @_jscript_version@*/;

	/*@cc_on
		/*@if (@_jscript)
			this.ie = (document.all && !window.opera) ? true : false;
		/*@else @*/
			this.ie = false;
		/*@end
	@*/
  this.ie7 = (this.ie && window.XMLHttpRequest);	

  this.initialize();
}



Zeppelin.prototype.initialize=function()
{
  this.updateZeppelinItems();
  var objBody=this.doc.getElementsByTagName("body").item(0);
  if(this.doc.getElementById('zOverlay'))
  {
    objBody.removeChild(this.doc.getElementById("zOverlay"));
    objBody.removeChild(this.doc.getElementById("zMain"));
  }
	var objOverlay = this.doc.createElement("div");
	objOverlay.setAttribute('id','zOverlay');
	if((this.ie && !this.ie7) || (this.ie7 && this.doc.compatMode == 'BackCompat')) objOverlay.style.position = 'absolute';
	objOverlay.style.display = 'none';
	objBody.appendChild(objOverlay);
	var objZeppelin = this.doc.createElement("div");
	objZeppelin.setAttribute('id','zMain');
	objZeppelin.style.display = 'none';
	objBody.appendChild(objZeppelin);
	var objOuterContainer = this.doc.createElement("div");
	objOuterContainer.setAttribute('id','zOuterContainer');
	objZeppelin.appendChild(objOuterContainer);
	var objImageContainer = this.doc.createElement("div");
	objImageContainer.setAttribute('id','zImageContainer');
	objOuterContainer.appendChild(objImageContainer);
	var objZeppelinImage = this.doc.createElement("img");
	objZeppelinImage.setAttribute('id','zImage');
	objImageContainer.appendChild(objZeppelinImage);
	var objLoading = this.doc.createElement("div");
	objLoading.setAttribute('id','zLoading');
	objOuterContainer.appendChild(objLoading);
	var objDetailsContainer = this.doc.createElement("div");
	objDetailsContainer.setAttribute('id','zDetailsContainer');
	objZeppelin.appendChild(objDetailsContainer);

	var objForm = this.doc.createElement("div");
	objForm.setAttribute('id','zForm');
	objDetailsContainer.appendChild(objForm);
	var objCaption = this.doc.createElement("span");
	objCaption.setAttribute('id','zCaption');
	objDetailsContainer.appendChild(objCaption);
	var objNumberDisplay = this.doc.createElement("span");
	objNumberDisplay.setAttribute('id','zNumberDisplay');
	objDetailsContainer.appendChild(objNumberDisplay);

	var objHoverNav = this.doc.createElement("div");
	objHoverNav.setAttribute('id','zHoverNav');
	objImageContainer.appendChild(objHoverNav);
	var objPrev = this.doc.createElement("a");
	objPrev.setAttribute('id','zPrev');
	objPrev.setAttribute('href','#');
	objHoverNav.appendChild(objPrev);
	var objClose = this.doc.createElement("a");
	objClose.setAttribute('id','zClose');
	objClose.setAttribute('href','#');
	objHoverNav.appendChild(objClose);
	var objNext = this.doc.createElement("a");
	objNext.setAttribute('id','zNext');
	objNext.setAttribute('href','#');
	objHoverNav.appendChild(objNext);
};

Zeppelin.prototype.updateZeppelinItems=function()
{	
  var anchors=document.getElementsByTagName('a');
  for(var i=0;i<anchors.length;i++)
  {
    var anchor=anchors[i];
    if(anchor.getAttribute('href') && anchor.getAttribute('title')) anchor.onclick=function(){myZeppelin.start(this);return false;}  
  }
};

Zeppelin.prototype.start=function(imageLink)
{
  var pageSize=this.getPageSize();
  var objOverlay=this.doc.getElementById('zOverlay');
  objOverlay.style.height=pageSize[1]+"px";
  objOverlay.style.display='';
	this.appear('zOverlay',(this.doAnimations2 ? 0 : this.maxOpacity));
  var anchors=document.getElementsByTagName('a');
  this.imageArray=[];
  this.imageNum=0;
  for(var i=0;i<anchors.length;i++)
  {
    var anchor=anchors[i];
    if(anchor.getAttribute('href') && anchor.getAttribute('title')) this.imageArray.push(new Array(anchor.getAttribute('href'),anchor.getAttribute('title')));
  }
  this.imageArray.removeDuplicates();
  while(this.imageArray[this.imageNum][0]!=imageLink.getAttribute('href'))this.imageNum++;
  var object=this.doc.getElementById('zMain');
  object.style.top=(this.getPageScroll()+((pageSize[3]-730)/2>0 ? (pageSize[3]-730)/2 : 3))+"px";
  object.style.display='';
  this.doc.getElementById('zOverlay').onclick=function(){myZeppelin.end();return false;}
  object.onclick=function(e)
  {
    if(!e)e=window.event;
    var id=(e.target ? e.target.id : e.srcElement.id);
    if(id=='zMain'){myZeppelin.end();return false;}
  }
  this.doc.getElementById('zClose').onclick=function(){myZeppelin.end();return false;}
  this.changeContent(this.imageNum);
};

Zeppelin.prototype.changeContent = function(imageNum)
{
  this.activeImage=imageNum;
  this.doc.getElementById('zLoading').style.display='';
  this.doc.getElementById('zImage').style.display='none';
  this.doc.getElementById('zPrev').style.display='none';
  this.doc.getElementById('zNext').style.display='none';
  this.doc.getElementById('zDetailsContainer').style.display='none';
  this.doc.getElementById('zNumberDisplay').style.display='none';
  imgPreloader=new Image();
  imgPreloader.onload=function()
  {
    var imageWidth=imgPreloader.width;
    var imageHeight=imgPreloader.height;
    if(myZeppelin.autoResize)
    {
      var pagesize=myZeppelin.getPageSize();
      var x=pagesize[2]-40;
      var y=pagesize[3]-60;
      if(imageWidth>x)
      {
        imageHeight=Math.round(imageHeight*(x/imageWidth));
        imageWidth=x; 
        if(imageHeight>y)
        {
          imageWidth=Math.round(imageWidth*(y/imageHeight));
          imageHeight=y;
        }
      }
      else if(imageHeight>y)
      { 
        myZeppelin.doc.getElementById('zCaption').style.fontSize='8px';
        myZeppelin.doc.getElementById('zNumberDisplay').style.fontSize='8px';
        myZeppelin.doc.getElementById('zForm').className='sm';
        imageWidth=Math.round(imageWidth*(y/imageHeight));
        imageHeight=y; 
        if(imageWidth>x)
        {
          imageHeight=Math.round(imageHeight*(x/imageWidth));
          imageWidth=x;
        }
      }
    }
    var zImage=myZeppelin.doc.getElementById('zImage')
    zImage.src=myZeppelin.imageArray[myZeppelin.activeImage][0];
    zImage.width=imageWidth;
    zImage.height=imageHeight;
    myZeppelin.resizeContainer(imageWidth,imageHeight);
    imgPreloader.onload=function(){};
  }
  imgPreloader.src=this.imageArray[this.activeImage][0];
};

Zeppelin.prototype.resizeContainer = function(imgWidth,imgHeight)
{
  this.wCur=this.doc.getElementById('zOuterContainer').offsetWidth;
  this.hCur=this.doc.getElementById('zOuterContainer').offsetHeight;
  var wDiff=(this.wCur-this.borderSize*2)-imgWidth;
  var hDiff=(this.hCur-this.borderSize*2)-imgHeight;
  if(hDiff!=0)
  {
    this.hDone=false;
    this.resizeH('zOuterContainer',this.hCur,imgHeight+this.borderSize*2);
  } 
  else this.hDone=true;
  if(wDiff!=0)
  {
    this.wDone=false;
    this.resizeW('zOuterContainer',this.wCur,imgWidth+this.borderSize*2);
  }
  else this.wDone = true;
  if((hDiff==0) && (wDiff==0))this.pause(100);
	this.doc.getElementById('zDetailsContainer').style.width=(imgWidth+(this.borderSize*2)+(this.ie && this.doc.compatMode=="BackCompat" ? 2 : 0))+"px";
	this.showContent();
};

Zeppelin.prototype.showContent = function()
{
  window.clearTimeout(this.showContentTimer);
	if(this.wDone && this.hDone)
  {
		this.doc.getElementById('zLoading').style.display='none';
  	this.doc.getElementById('zImage').style.display='';
		this.appear('zImage',(this.doAnimations2 ? 0 : 100));
	  if(this.preload>1)this.preloadNeighborImages();
		this.doc.getElementById('zHoverNav').style.display=''
		this.doc.getElementById('zClose').style.display='';
    this.doc.getElementById('zImageContainer').style.display='';
	}
  else this.showContentTimer=setTimeout("myZeppelin.showContent()",100);	
};

Zeppelin.prototype.updateDetails = function()
{
	var object=this.doc.getElementById('zCaption');
	var sTitle=this.imageArray[this.activeImage][1];
  object.style.display='';
	object.innerHTML=sTitle;
  var object=this.doc.getElementById('zForm');
  object.style.display='';
  var gdzie=this.imageArray[this.activeImage][0].indexOf('-');
  var zdj=this.imageArray[this.activeImage][0].substring(gdzie-11,gdzie);

  object.innerHTML="oceń: <button title=\"zbyt słabe na publikację\" onclick=\"ocen("+zdj+",1);\">1</button><button title=\"kiepskie\" onclick=\"ocen("+zdj+",2);\">2</button><button title=\"przeciętne\" onclick=\"ocen("+zdj+",3);\">3</button><button title=\"dobre\" onclick=\"ocen("+zdj+",4);\">4</button><button title=\"świetne\" onclick=\"ocen("+zdj+",5);\">5</button> <button title=\"skomentuj\"onclick=\"ocen("+zdj+",'K');\">K</button> <button title=\"zamknij\" onclick=\"myZeppelin.end();\">X</button>"; 

	this.updateNav();
	this.doc.getElementById('zDetailsContainer').style.display='';
	object=this.doc.getElementById('zNumberDisplay');
	object.style.display='';
  object.innerHTML="Zdjęcie "+eval(this.activeImage + 1)+" z "+this.imageArray.length;
  window.clearTimeout(this.imageTimer);
};

Zeppelin.prototype.updateNav = function()
{
	if(this.activeImage!=0)
  {
		var object=this.doc.getElementById('zPrev');
		object.style.display='';
		object.onclick=function(){myZeppelin.changeContent(myZeppelin.activeImage-1);myZeppelin.preload++;return false;}
	}
	if(this.activeImage!=(this.imageArray.length-1))
  {
		var object=this.doc.getElementById('zNext');
		object.style.display='';
		object.onclick=function(){myZeppelin.changeContent(myZeppelin.activeImage+1);myZeppelin.preload++;return false;}
	} 
	this.enableKeyboardNav();
};

Zeppelin.prototype.enableKeyboardNav=function(){document.onkeydown=this.keyboardAction;};
Zeppelin.prototype.disableKeyboardNav=function(){document.onkeydown='';};

Zeppelin.prototype.keyboardAction=function(e)
{
	var keycode=key=escape=null;
	keycode=(e==null) ? event.keyCode : e.which;
	key=String.fromCharCode(keycode).toLowerCase();
	escape=(e==null) ? 27 : e.DOM_VK_ESCAPE;
	if(keycode==escape)myZeppelin.preload=0;

  else if(keycode == 37)
  {
    if(myZeppelin.activeImage!=0)
    {
		  myZeppelin.disableKeyboardNav();
		  myZeppelin.changeContent(myZeppelin.activeImage-1);
		  myZeppelin.preload++;
		}
	}	
	else if(keycode==39 && myZeppelin.activeImage!=(myZeppelin.imageArray.length-1))
  {
		myZeppelin.disableKeyboardNav();
		myZeppelin.changeContent(myZeppelin.activeImage+1);
		myZeppelin.preload++;
	}
};	

Zeppelin.prototype.preloadNeighborImages = function()
{
	if((this.imageArray.length-1)>this.activeImage)
  {
		preloadNextImage=new Image();
		preloadNextImage.src=this.imageArray[this.activeImage+1][0];
	}
	if(this.activeImage>0)
  {
		preloadPrevImage=new Image();
		preloadPrevImage.src=this.imageArray[this.activeImage-1][0];
	}
};

Zeppelin.prototype.end = function(caller)
{
	var closeClick=true;
	this.disableKeyboardNav();
	this.doc.getElementById('zMain').style.display='none';
	this.fade('zOverlay',(this.doAnimations2 ? this.maxOpacity : 0));
	myZeppelin.preload=0;
};

Zeppelin.prototype.appear = function(id,opacity)
{
  var object=this.doc.getElementById(id).style;
  object.opacity=(opacity/100);

  if(opacity==100 && id=='zImage') this.updateDetails();
  else if(opacity>=this.maxOpacity&&id=='zOverlay')	window.clearTimeout(this.overlayTimer);
  else
  {
		if(id=='zOverlay')this.overlayTimer=setTimeout("myZeppelin.appear('"+id+"', "+(opacity+20)+")",1);
    else this.imageTimer=setTimeout("myZeppelin.appear('"+id+"', "+(opacity+10)+")",1);
	}
};

Zeppelin.prototype.fade = function(id,opacity)
{
	var object=this.doc.getElementById(id).style;
	object.opacity=(opacity/100);
	object.MozOpacity=(opacity/100);
	object.KhtmlOpacity=(opacity/100);
	object.filter="alpha(opacity="+opacity+")";
	if(opacity<=0)
  {
		try{
			object.display = 'none';
		} catch(err) { }
	}
  else if (id=='zOverlay') this.overlayTimer=setTimeout("myZeppelin.fade('"+id+"', "+(opacity-20)+")", 1);
};

Zeppelin.prototype.resizeH = function(id,newS,maxS)
{
  window.clearTimeout(this.resizeHTimer);
  var diff=(maxS>newS) ? maxS-newS : newS-maxS;
  pixelrate=Math.ceil((diff)/5);
  if(pixelrate<10)pixelrate=10;
	var object=this.doc.getElementById(id);
	var newS=(this.doAnimations ? newS : maxS);
	object.style.height=(newS)+"px";
	if(newS<maxS) newS+=(newS+pixelrate>=maxS) ? (maxS-newS) : pixelrate;
	if(newS>maxS) newS-=(newS-pixelrate<=maxS) ? (newS-maxS) : pixelrate;
	this.resizeHTimer=setTimeout("myZeppelin.resizeH('"+id+"',"+newS+","+maxS+")",this.resizeDuration);
	if (parseInt(object.style.height)==maxS)
  {
		this.hDone=true;
		window.clearTimeout(this.resizeHTimer);
	}
};

Zeppelin.prototype.resizeW = function(id,newS,maxS)
{
  window.clearTimeout(this.resizeWTimer);
  var diff=(maxS>newS) ? maxS-newS : newS-maxS;
  pixelrate=Math.ceil((diff)/5);
  if(pixelrate<10)pixelrate=10;
	var object=this.doc.getElementById(id);
	var newS=(this.doAnimations ? newS : maxS);
	object.style.width=(newS)+"px";
	if(newS<maxS) newS+=(newS+pixelrate>=maxS) ? (maxS-newS) : pixelrate;
	if(newS>maxS) newS-=(newS-pixelrate<=maxS) ? (newS-maxS) : pixelrate;
	this.resizeWTimer=setTimeout("myZeppelin.resizeW('"+id+"',"+newS+","+maxS+")",this.resizeDuration);
	if (parseInt(object.style.width)==maxS)
  {
		this.wDone=true;
		window.clearTimeout(this.resizeWTimer);
	}
};

Zeppelin.prototype.getPageScroll = function()
{
  if(self.pageYOffset) return self.pageYOffset;
  else if(this.doc.documentElement && this.doc.documentElement.scrollTop) return this.doc.documentElement.scrollTop;
  else if(document.body) return this.doc.body.scrollTop;
};

Zeppelin.prototype.getPageSize = function()
{	
	var xScroll, yScroll, windowWidth, windowHeight;
//  xScroll=this.doc.body.offsetWidth;
  yScroll=this.doc.body.offsetHeight;
	if (self.innerHeight)
  {
		windowWidth=self.innerWidth;
		windowHeight=self.innerHeight;
  }
  else //IE
  {
		windowWidth=this.doc.documentElement.clientWidth;
		windowHeight=this.doc.documentElement.clientHeight;  
  }		
	var pageHeight=(yScroll<windowHeight) ? windowHeight : yScroll;
	var pageWidth=(xScroll < windowWidth) ? windowWidth : xScroll;
	return new Array(pageWidth, pageHeight, windowWidth, windowHeight);
};

if (window.addEventListener) window.addEventListener("load",initZeppelin,false);
else if(window.attachEvent) window.attachEvent("onload",initZeppelin);

function initZeppelin() {myZeppelin = new Zeppelin();}
