var authPreloadImages = ["zamknij.gif"];
for (var imageIndex = 0; imageIndex < authPreloadImages.length; imageIndex++){
	var imageObj = new Image();
	imageObj.src = "images/" + authPreloadImages[imageIndex];
}
authPreloadImages = null;
var jsPublicImage = {
	Step: 25,
	PaddingSize: 15,
	Timer: 10,
	ImageParams: [],
	ImageObject: null,
	DivObject: null,
	DivShadowObject: null,
	StepWaitImage: 240,
	TimerWaitImage: 225,
	Shadow: true,
	ImageSource: false,
	__PrepareImage: function(image){
		this.CloseImage();
		this.ImageParams = [];
		this.ImageObject = null;
		this.DivObject = null;
		this.DivShadowObject = null;
		this.Shadow = false;
		this.ImageSource = false
		this.DivObject =  document.body.appendChild(document.createElement('DIV'));
		this.DivObject.className = 'public-outside-div';
		this.DivObject.id = 'img_container_big';
		this.ImageObject = this.DivObject.appendChild(document.createElement('IMG'));
		this.ImageObject.src = image;
		this.ImageObject.id = 'img_container_big_image';
	},
	__PrepareParams: function(){
		this.ImageParams['ImageWidth'] = this.ImageObject.width;
		this.ImageParams['ImageHeight'] = this.ImageObject.height;
		this.ImageParams['minImageWidth'] = this.ImageParams['ImageWidth']/this.Step;
		this.ImageParams['minImageHeight'] = this.ImageParams['ImageHeight']/this.Step;
		this.ImageObject.className = 'public-image-big';
		this.ImageParams['WinSize'] = jsUtils.GetWindowSize();
		var panel = document.getElementById('bx_top_panel_container');
		this.ImageParams['CorrectTop'] = this.PaddingSize;
		this.ImageParams['CorrectLeft'] = this.PaddingSize;
		if(panel && panel.offsetHeight > this.ImageParams['WinSize']['scrollTop'])
		this.ImageParams['CorrectTop'] += panel.offsetHeight - this.ImageParams['WinSize']['scrollTop'];
		this.DivObject.style.visibility = 'visible';	
	},
	ShowImage: function(small_image, image, shadow){
		this.CloseLocalWaitWindow(this.ImageSource);
		this.__PrepareImage(image);
		this.ImageSource = small_image;
		this.ShowLocalWaitWindow(this.ImageSource);
		if(shadow)
			this.Shadow = true;
		this.__ImageCheckLoad(1, this.ImageSource);
	},
	__ImageCheckLoad: function(i, ImageSource){
		if(ImageSource != this.ImageSource)
			return;
		if(i>this.StepWaitImage){
			this.CloseLocalWaitWindow(this.ImageSource);
			return;
		}
		var _this = this;	
		if(!this.ImageObject.complete && (!this.ImageObject.width || this.ImageObject.width<=0 || (this.ImageObject.width==28 && jsUtils.IsIE())))
			setTimeout(function() {_this.__ImageCheckLoad(++i, ImageSource)}, this.TimerWaitImage);
		else{
			this.__PrepareParams();
			this.CloseLocalWaitWindow(this.ImageSource);
			setTimeout(function() {_this.ImageExpand(1, ImageSource)}, this.Timer);
		}
	},
	ImageExpand: function(i, ImageSource){
		if(ImageSource != this.ImageSource)
			return;
		if(i>this.Step){	
			this.__PrepareClose();
			return;
		}
		this.DivObject.style.width = this.ImageParams['minImageWidth'] * i + 'px';
		this.DivObject.style.height = this.ImageParams['minImageHeight'] * i + 'px';
		var TopPadding = this.ImageParams['WinSize']['innerHeight']/2 - (this.ImageParams['minImageHeight'] * i)/2 + this.ImageParams['WinSize']['scrollTop'];
		var TopPaddingCmp = this.ImageParams['CorrectTop'] + this.ImageParams['WinSize']['scrollTop'];
		if(TopPadding < TopPaddingCmp)
			this.DivObject.style.top = TopPaddingCmp + 'px';
		else
			this.DivObject.style.top = TopPadding + 'px';
		var LeftPadding = this.ImageParams['WinSize']['innerWidth']/2 - (this.ImageParams['minImageWidth'] * i)/2 + this.ImageParams['WinSize']['scrollLeft'];
		var LeftPaddingCmp = this.ImageParams['CorrectLeft'] + this.ImageParams['WinSize']['scrollLeft'] + 'px';
		if(LeftPadding < LeftPaddingCmp)
			this.DivObject.style.left = LeftPaddingCmp + 'px';
		else
			this.DivObject.style.left = LeftPadding + 'px';
		this.setElementOpacity('img_container_big_image', 0.1*i);
		if(this.Shadow)
			this.ShadowExpand();
		setTimeout(function() {jsPublicImage.ImageExpand(++i, ImageSource);}, this.Timer);
	},
	ShadowExpand: function(){
		if(!this.Shadow)
			return;
		if(this.DivShadowObject==null || !this.DivShadowObject){
			this.DivShadowObject = this.DivObject.appendChild(document.createElement('DIV'));
			this.DivShadowObject.className = 'public-inside-div';
			this.DivShadowObject.id = 'img_container_shadow';
			this.setElementOpacity('img_container_shadow', 0.2);
		}
		this.DivShadowObject.style.width = this.DivObject.style.width;
		this.DivShadowObject.style.height = this.DivObject.style.height;
	},
	__PrepareClose: function(){
		function __Close(e){
			if (!e) e = window.event
			if (!e) return;
			if (e.keyCode == 27){
				jsPublicImage.CloseImage();
				jsUtils.removeEvent(document, 'keydown', __Close);
			}
		}
		jsUtils.addEvent(document, 'keydown', __Close);
		this.ImageObject.onclick = function() {jsPublicImage.CloseImage()};
		this.__PrepareCloseButton();
	},
	__PrepareCloseButton: function(){
		var CloseBtn = this.DivObject.appendChild(document.createElement('DIV'));
		CloseBtn.style.left = this.ImageParams['ImageWidth'] + 'px';		
		CloseBtn.className = 'public-image-close-image';
		CloseBtn.onclick = function() {jsPublicImage.CloseImage()};		
	},
	CloseImage: function(){
		var obDiv = document.getElementById('img_container_big');
		if(obDiv)
			document.body.removeChild(obDiv);
	},
	ShowLocalWaitWindow: function (cont){
		if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
			var obContainerNode = document.getElementById(cont);
		else
			var obContainerNode = cont;
		if (obContainerNode.getBoundingClientRect){
			var obRect = obContainerNode.getBoundingClientRect();
			var obWndSize = jsUtils.GetWindowSize();
			var arContainerPos = {
				left: obRect.left + obWndSize.scrollLeft, 
				top: obRect.top + obWndSize.scrollTop, 
				right: obRect.right + obWndSize.scrollLeft, 
				bottom: obRect.bottom + obWndSize.scrollTop
			};
		}
		else
			var arContainerPos = jsUtils.GetRealPos(obContainerNode);
		var container_id = obContainerNode.id;
		if (!arContainerPos) return;
		var obWaitMessage = document.body.appendChild(document.createElement('DIV'));
		obWaitMessage.id = 'wait_image';
		obWaitMessage.className = 'waitwindow';
		var div_top = arContainerPos.top + 5;
		if (div_top < document.body.scrollTop) div_top = document.body.scrollTop + 5;
		obWaitMessage.style.top = div_top + 'px';
		obWaitMessage.style.left = (arContainerPos.left + 5) + 'px';
		obWaitMessage.innerHTML = 'laduje...';
		if(jsUtils.IsIE()){
			var frame = document.createElement("IFRAME");
			frame.src = "javascript:''";
			frame.id = 'waitframe_image';
			frame.className = "waitwindow";
			frame.style.width = obWaitMessage.offsetWidth + "px";
			frame.style.height = obWaitMessage.offsetHeight + "px";
			frame.style.left = obWaitMessage.style.left;
			frame.style.top = obWaitMessage.style.top;
			document.body.appendChild(frame);
		}
	},
	CloseLocalWaitWindow: function(cont){
		if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
			var obContainerNode = document.getElementById(cont);
		else
			var obContainerNode = cont;
		var container_id = obContainerNode.id;
		var obWaitMessageFrame = document.getElementById('waitframe_image');
		if (obWaitMessageFrame)
			document.body.removeChild(obWaitMessageFrame);
		var obWaitMessage = document.getElementById('wait_image');
		if (obWaitMessage)
			document.body.removeChild(obWaitMessage);
	},
	setElementOpacity: function(sElemId, nOpacity){
		var opacityProp = this.getOpacityProperty();
		var elem = document.getElementById(sElemId);
		if (!elem || !opacityProp)
			return;
		if (opacityProp=="filter"){
			nOpacity *= 100;
			var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
			if (oAlpha) 
				oAlpha.opacity = nOpacity;
			else 
				elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";
		}
		else
			elem.style[opacityProp] = nOpacity;
	},
	getOpacityProperty: function(){
		if (typeof document.body.style.opacity == 'string')
			return 'opacity';
		else if (typeof document.body.style.MozOpacity == 'string')
			return 'MozOpacity';
		else if (typeof document.body.style.KhtmlOpacity == 'string')
			return 'KhtmlOpacity';
		else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5)
			return 'filter';
		return false;
	}
}
if(!window.jsUtils){
	var jsUtils ={
		arEvents: Array(),
		addEvent: function(el, evname, func, capture){
			if(el.attachEvent)
				el.attachEvent("on" + evname, func);
			else if(el.addEventListener)
				el.addEventListener(evname, func, false);
			else
				el["on" + evname] = func;
			this.arEvents[this.arEvents.length] = {'element': el, 'event': evname, 'fn': func};
		},
		removeEvent: function(el, evname, func){
			if(el.detachEvent)
				el.detachEvent("on" + evname, func);
			else if(el.removeEventListener)
				el.removeEventListener(evname, func, false);
			else
				el["on" + evname] = null;
		},
		IsIE: function(){
			return (document.attachEvent && !this.IsOpera());
		},
		IsOpera: function(){
			return (navigator.userAgent.toLowerCase().indexOf('opera') != -1);
		},
		IsSafari: function(){
			var userAgent = navigator.userAgent.toLowerCase();
			return (/webkit/.test(userAgent));
		},
		GetRealPos: function(el){
			if(!el || !el.offsetParent)
				return false;
			var res = Array();
			res["left"] = el.offsetLeft;
			res["top"] = el.offsetTop;
			var objParent = el.offsetParent;
			while(objParent && objParent.tagName != "BODY"){
				res["left"] += objParent.offsetLeft;
				res["top"] += objParent.offsetTop;
				objParent = objParent.offsetParent;
			}
			res["right"] = res["left"] + el.offsetWidth;
			res["bottom"] = res["top"] + el.offsetHeight;
			return res;
		},
		GetWindowInnerSize: function(pDoc){
			var width, height;
			if (!pDoc)
				pDoc = document;
			if (self.innerHeight){
				width = self.innerWidth;
				height = self.innerHeight;
			}
			else if (pDoc.documentElement && pDoc.documentElement.clientHeight){
				width = pDoc.documentElement.clientWidth;
				height = pDoc.documentElement.clientHeight;
			}
			else if (pDoc.body){
				width = pDoc.body.clientWidth;
				height = pDoc.body.clientHeight;
			}
			return {innerWidth : width, innerHeight : height};
		},
		GetWindowScrollPos: function(pDoc){
			var left, top;
			if (!pDoc)
				pDoc = document;
			if (self.pageYOffset){
				left = self.pageXOffset;
				top = self.pageYOffset;
			}
			else if (pDoc.documentElement && pDoc.documentElement.scrollTop){
				left = document.documentElement.scrollLeft;
				top = document.documentElement.scrollTop;
			}
			else if (pDoc.body){
				left = pDoc.body.scrollLeft;
				top = pDoc.body.scrollTop;
			}
			return {scrollLeft : left, scrollTop : top};
		},
		GetWindowScrollSize: function(pDoc){
			var width, height;
			if (!pDoc)
				pDoc = document;
			if ( (pDoc.compatMode && pDoc.compatMode == "CSS1Compat")){
				width = pDoc.documentElement.scrollWidth;
				height = pDoc.documentElement.scrollHeight;
			}
			else{
				if (pDoc.body.scrollHeight > pDoc.body.offsetHeight)
					height = pDoc.body.scrollHeight;
				else
					height = pDoc.body.offsetHeight;
				if (pDoc.body.scrollWidth > pDoc.body.offsetWidth || 
					(pDoc.compatMode && pDoc.compatMode == "BackCompat") ||
					(pDoc.documentElement && !pDoc.documentElement.clientWidth)
				)
					width = pDoc.body.scrollWidth;
				else
					width = pDoc.body.offsetWidth;
			}
			return {scrollWidth : width, scrollHeight : height};
		},
		GetWindowSize: function(){
			var innerSize = jsUtils.GetWindowInnerSize();
			var scrollPos = jsUtils.GetWindowScrollPos();
			var scrollSize = jsUtils.GetWindowScrollSize();
			return  {
				innerWidth : innerSize.innerWidth, innerHeight : innerSize.innerHeight, 
				scrollLeft : scrollPos.scrollLeft, scrollTop : scrollPos.scrollTop,
				scrollWidth : scrollSize.scrollWidth, scrollHeight : scrollSize.scrollHeight
			};
		}
	}
}