function in_array( what, where ){
  var a = false;
  for(var i = 0; i<where.length ; i++){
	  if(what == where[i]){
		  a = true;
		  break;
	  }
  }
  return a;
}
function searchByClass(t,name) {
	if(t.hasChildNodes()) {
		var temp = t.childNodes;
		for( var i = 0 ; i<temp.length ; i++) {
			if(temp[i].className == name) {
				return temp[i];
			}
		}
	}
	return null;
}
function getScrollArray() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}
function tryDetectIE(){
	var IE=v=false,n;
	try{n=navigator.appVersion;IE=(n.indexOf('MSIE')!=-1)}
		catch(e){}
	if(IE)
		v = n.substr(n.indexOf('MSIE')+5,1);
	if(parseInt(v)>0)
		return parseInt(v);
	else
		return 0;
}
var LightboxGalleryOpen = false;
var LightboxGalleryActiveInstance = null;
function LightboxGalleryClose() {
	var shadow = document.getElementById('lightBoxGalleryDivBoxShadow');
	var inner = document.getElementById('lightBoxGalleryDivBoxInner');
	var control = document.getElementById('lightBoxGalleryDivBoxControl');
	var close = document.getElementById('lightBoxGalleryClose');
	inner.style.display = "none";
	shadow.style.display = "none";
	control.style.display = "none";
	close.style.display = "none";
	LightboxGalleryOpen = false;
}
function LightboxGallery(autoAssign) {
	autoAssign = typeof(autoAssign) != 'undefined' ? autoAssign : true;
	if(!LightboxGallery.Instances) {
		LightboxGallery.Instances = new Array();
	}
	this.id = LightboxGallery.Instances.length; // Identyfikator galerii
	LightboxGallery.Instances[this.id] = this;
	this.img = new Array();
	this.getImageWay = "img"; // Sposób szukania elementów w galerii
	this.searchSpace = document; // Przestrzeń do szukania
	this.shadowOpacity = 50; // Przezroczystość tła
	this.controlOpacity = 65; // Przezroczystość kontrolki
	this.classArray = new Array();
	this.defautlLinkClassName = "alt";
	this.defaultRoot = "i/";
	this.imageArray = new Array();
	this.defaultCloseText = "Zamknij";
	this.defaultNextText = "Kolejny obrazek w galerii";
	this.defaultPrevText = "Poprzedni obrazek w galerii";
	this.setImage = function(obj) {
		var id = this.img.length;
		this.img[id] = obj.alt.slice(4);
		obj.galleryId = this.id;
		obj.galleryImageId = id;
		obj.onclick = function () { LightboxGallery.Instances[this.galleryId].show(this.galleryImageId); }
		obj.style.cursor = 'pointer';
	}
	this.getImages = function() {
		var t = new RegExp("^img:.*$", "i");
		switch(this.getImageWay) {
			case "img":
				var temp = this.searchSpace.getElementsByTagName('img');
				if(temp.length>0) {
					for(var i = 0; i<temp.length; i++) {
						if(t.test(temp[i].alt)) {
							this.setImage(temp[i]);
						}
					}
				}
			break;
			case "class":
				var temp = this.searchSpace.getElementsByTagName("*");
				for (var i = 0; i < temp.length; i++ ){
					if(in_array(temp[i].className,this.classArray)){
						var node = searchByClass(temp[i],this.defautlLinkClassName);
						if(node != null)
							temp[i].alt = node.innerHTML;
						if(t.test(temp[i].alt)) {
							this.setImage(temp[i]);
						}
					}
				}
			break;
			case "array":
				if(this.imageArray.length>0) {
					this.img = this.imageArray;
				}
			break;
		}
	}
	this.show = function(id) {
		LightboxGalleryActiveInstance = this.id;
		var image = document.getElementById('lightBoxGalleryDivBoxImage');
		image.activeGallery = this.id;
		var ImageObj = new Image();
		ImageObj.onload = function() {
			var image = document.getElementById('lightBoxGalleryDivBoxImage');
			image.realWidth = this.width;
			image.realHeight = this.height;
			image.src = this.src;
		}
		document.getElementById('lightBoxGalleryDivBoxControlCount').innerHTML = (id+1)+"/"+this.img.length;
		if((id+1)>(this.img.length-1))
			var next = 0;
		else
			var next = id+1;
		if((id-1)<0)
			var prev = this.img.length-1;
		else
			var prev = id-1;
		this.next = next;
		this.prev = prev;
		var nextBtn = document.getElementById('lightBoxGalleryDivBoxControlNext');
		nextBtn.galleryId = this.id;
		nextBtn.galleryImageId = next;
		nextBtn.onclick = function () { LightboxGallery.Instances[this.galleryId].show(this.galleryImageId); }
		var prevBtn = document.getElementById('lightBoxGalleryDivBoxControlPrev');
		prevBtn.galleryId = this.id;
		prevBtn.galleryImageId = prev;
		prevBtn.onclick = function () { LightboxGallery.Instances[this.galleryId].show(this.galleryImageId); }
		ImageObj.src = this.img[id];
	}
	if(document.getElementById('lightBoxGalleryDivBoxShadow')==null) {
		document.body.innerHTML += '<div id="lightBoxGalleryDivBoxShadow" onclick="LightboxGalleryClose();" style="position:fixed; top:0px; display:none; background-color:#000; left:0px; z-index:200;"></div>';
		var shadow = document.getElementById('lightBoxGalleryDivBoxShadow'); 
		if(typeof document.body.style.maxHeight == "undefined") {
			shadow.style.position = "absolute";
		}
		shadow.style.width = document.body.offsetWidth+"px";
		shadow.style.height = document.body.offsetHeight+"px";
		shadow.style.opacity = (this.shadowOpacity / 100);
		shadow.style.MozOpacity = (this.shadowOpacity / 100);
		shadow.style.KhtmlOpacity = (this.shadowOpacity / 100);
		shadow.style.filter = "alpha(opacity=" + this.shadowOpacity + ")";
	}
	if(document.getElementById('lightBoxGalleryDivBoxInner')==null) {
		document.body.innerHTML += '<div id="lightBoxGalleryDivBoxInner" style="position:absolute; top:0px; display:none; cursor:pointer; background-color:#fff; left:0px; z-index:201;" title="'+this.defaultCloseText+'"><img id="lightBoxGalleryDivBoxImage"></div>';
		document.body.innerHTML += '<style type="text/css">.'+this.defautlLinkClassName+'{display:none !important;}</style>';
		document.body.innerHTML += '<div id="lightBoxGalleryDivBoxControl" style="position:absolute;z-index:202;width:90px;height:23px;display:none;"><div id="lightBoxGalleryDivBoxControlPrev" title="'+this.defaultPrevText+'" style="float:left;width:21px;height:23px;cursor:pointer;background:url('+this.defaultRoot+'lightboxGalleryPrev.gif) no-repeat;" onmouseover="this.style.background = \'url('+this.defaultRoot+'lightboxGalleryPrevHover.gif) no-repeat\';" onmouseout="this.style.background = \'url('+this.defaultRoot+'lightboxGalleryPrev.gif) no-repeat\';"></div><div id="lightBoxGalleryDivBoxControlCount" style="float:left;width:48px;height:23px; line-height:23px; color:#fff; font-size:11px; background:url('+this.defaultRoot+'lightboxGalleryCount.gif) no-repeat;text-align:center;"></div><div id="lightBoxGalleryDivBoxControlNext" title="'+this.defaultNextText+'" style="float:left;width:21px;height:23px;background:url('+this.defaultRoot+'lightboxGalleryNext.gif) no-repeat;cursor:pointer;" onmouseover="this.style.background = \'url('+this.defaultRoot+'lightboxGalleryNextHover.gif) no-repeat\';" onmouseout="this.style.background = \'url('+this.defaultRoot+'lightboxGalleryNext.gif) no-repeat\';"></div></div>';
		document.body.innerHTML += '<div id="lightBoxGalleryClose" style="display:none; cursor:pointer; z-index:302;"><img src="/i/lightboxGalleryClose.gif" alt="" onclick="LightboxGalleryClose();"></a>';
		var control = document.getElementById('lightBoxGalleryDivBoxControl');
		control.style.opacity = (this.controlOpacity / 100);
		control.style.MozOpacity = (this.controlOpacity / 100);
		control.style.KhtmlOpacity = (this.controlOpacity / 100);
		control.style.filter = "alpha(opacity=" + this.controlOpacity + ")";
		control.onmouseover = function() {
			this.over = true;
		}
		var image = document.getElementById('lightBoxGalleryDivBoxImage');
		image.onload = function() {
			var shadow = document.getElementById('lightBoxGalleryDivBoxShadow');
			var inner = document.getElementById('lightBoxGalleryDivBoxInner');
			var control = document.getElementById('lightBoxGalleryDivBoxControl');
			var close = document.getElementById('lightBoxGalleryClose');
			inner.style.width = (this.realWidth+20)+"px";
			inner.style.height = (this.realHeight+20)+"px";
			this.style.margin = "10px";
			var scroll = getScrollArray();
			var imageHeight = parseInt(this.realHeight+20);
			if (self.innerWidth) {
				  frameWidth = self.innerWidth;
				  frameHeight = self.innerHeight;
			}
			else if (document.documentElement && document.documentElement.clientWidth) {
				  frameWidth = document.documentElement.clientWidth;
				  frameHeight = document.documentElement.clientHeight;
			}
			else if (document.body) {
				  frameWidth = document.body.clientWidth;
				  frameHeight = document.body.clientHeight;
			}
			inner.style.left = (parseInt(frameWidth/2)-parseInt((this.realWidth+20)/2))+"px";
			inner.style.top = (parseInt(frameHeight/2)-parseInt((this.realHeight+20)/2))+"px";
			control.style.left = (parseInt(frameWidth/2)-45)+"px";
			control.style.top = (parseInt(frameHeight/2)-parseInt((this.realHeight+20)/2)+15)+"px";
			close.style.left = (parseInt(frameWidth/2)+parseInt((this.realWidth+20)/2)-20)+"px";
			close.style.top = (parseInt(frameHeight/2)-parseInt((this.realHeight+20)/2)+5)+"px";
			if(imageHeight<=parseInt(frameHeight*0.9) && tryDetectIE() != 6) {
				control.style.position = "fixed";
				inner.style.position = "fixed";
				close.style.position = "fixed";
			}
			else {
				if(parseInt(scroll[1])>0) {
					inner.style.top = (parseInt(frameHeight/2)-parseInt((this.realHeight+20)/2))+parseInt(scroll[1])+"px";
					control.style.top = (parseInt(frameHeight/2)-parseInt((this.realHeight+20)/2)+15)+parseInt(scroll[1])+"px";
					close.style.top = (parseInt(frameHeight/2)-parseInt((this.realHeight+20)/2)+5+parseInt(scroll[1]))+"px";
				}
				inner.style.position = "absolute";
				control.style.position = "absolute";
				close.style.position = "absolute";
			}
			if(tryDetectIE() == 6) {
				shadow.style.height = document.body.clientHeight+"px";
			}
			shadow.style.display = "block";
			inner.style.display = "block";
			close.style.display = "block";
			LightboxGalleryOpen = true;
		}
		image.onclick = function() {
			LightboxGalleryClose();
		}
		image.onmouseover = function() {
			var control = document.getElementById('lightBoxGalleryDivBoxControl');
			control.over = true;
			control.style.display = "block";
		}
		image.onmouseout = function() {
			var control = document.getElementById('lightBoxGalleryDivBoxControl');
			control.over = false;
			setTimeout(function() {
				var control = document.getElementById('lightBoxGalleryDivBoxControl');
				if(control.over==false)
					control.style.display = "none";
			},200)
		}
	}
	if(autoAssign)
		this.getImages();
}
function CloseLightboxOnKeyPress(e) {
	if(LightboxGalleryOpen==true) {
		e = e || window.event;
		var key = e.keyCode || e.which;
		if(key==27) {
			LightboxGalleryClose();
		}
	}
}
function NavigatorLightboxOnKeyDown(e) {
	if(LightboxGalleryOpen==true) {
		e = e || window.event;
		var key = e.keyCode || e.which;
		if(key==37) {
			LightboxGallery.Instances[LightboxGalleryActiveInstance].show(LightboxGallery.Instances[LightboxGalleryActiveInstance].prev);
		}
		if(key==39) {
			LightboxGallery.Instances[LightboxGalleryActiveInstance].show(LightboxGallery.Instances[LightboxGalleryActiveInstance].next);
		}
	}
}
document.onkeypress = CloseLightboxOnKeyPress;
document.onkeydown = NavigatorLightboxOnKeyDown;
