if(typeof(Enforce) == "undefined")
{
	var Enforce = new Object();
}

/* Galeria */
Enforce.Gallery = new Object();
Enforce.Gallery.Keyword = new String("Gallery");
Enforce.Gallery.MinSize = [500, 400];
Enforce.Gallery.BorderSize = 1;
Enforce.Gallery.Index = 0;
Enforce.Gallery.Images = new Array();

Enforce.Gallery.Init = function()
{
	var anchors = document.getElementsByTagName('a');
	
	for(var i=0; i<anchors.length; i++)
	{
		var anchor = anchors[i];
		var rel = anchor.getAttribute('rel');
		
		if(anchor.getAttribute('href') && rel && rel.match(Enforce.Gallery.Keyword))
		{
			anchor.onclick = Enforce.Gallery.Click
		}
	}
	
	var html = '';
	html += '<div id="Gallery" class="Gallery" style="display:none;">';
	html += '	<div id="Gallery$Overlay" class="Overlay"></div>';
	html += '	<iframe id="Gallery$Mask"></iframe>';
	html += '	<div id="Gallery$Panel" class="Panel">';
	html += '		<div id="Gallery$Navigators" class="Navigators">';
	html += '			<div id="Gallery$Close" class="Close"></div>';
	html += '			<div id="Gallery$Next" class="Next"></div>';
	html += '			<div id="Gallery$Prev" class="Prev"></div>';
	html += '		</div>';
	html += '		<div id="Gallery$Preview" class="Preview">';
	html += '			<img id="Gallery$Image" class="Image"/>';
	html += '			<div id="Gallery$Loader" class="Loader"></div>';
	html += '		</div>';
	html += '		<div id="Gallery$Caption" class="Caption"></div>';
	html += '	</div>';
	html += '</div>';
	
	var body = document.getElementsByTagName("body")[0];
	var span = document.createElement("span");
	span.innerHTML = html;
	body.appendChild(span);

	$("Gallery$Prev").onclick = Enforce.Gallery.PrevImage;
	$("Gallery$Next").onclick = Enforce.Gallery.NextImage;
	$("Gallery$Close").onclick = Enforce.Gallery.Close;
}

Enforce.Gallery.Navigators = function(visibility)
{
	var display = "none";
	
	if(Enforce.Gallery.Images.length > 0)
	{
		display = visibility  ? "" : "none";
	}
	
	$("Gallery$Prev").style.display = display;
	$("Gallery$Next").style.display = display;
	
	$("Gallery$Prev").className = "Prev";
	$("Gallery$Next").className = "Next";
	
	if(visibility && Enforce.Gallery.Index == 0)
	{
		$("Gallery$Prev").className = "Prev Off";
	}
	if(visibility && Enforce.Gallery.Index == (Enforce.Gallery.Images.length - 1))
	{
		$("Gallery$Next").className = "Next Off";
	}
}

Enforce.Gallery.Click = function()
{
	Enforce.Gallery.Images = new Array();
	Enforce.Gallery.Index = 0;
	Enforce.Gallery.Navigators(false);
	if(this.getAttribute('rel') != Enforce.Gallery.Keyword)
	{
		var counter = 0;
		var anchors = document.getElementsByTagName('a');
		
		for(var i=0; i<anchors.length; i++)
		{
			var anchor = anchors[i];
			var rel = anchor.getAttribute('rel');
			
			if(anchor.getAttribute('href') && rel == this.getAttribute('rel'))
			{
				Enforce.Gallery.Images[Enforce.Gallery.Images.length] = anchor;
				
				if(this == anchor)
				{
					Enforce.Gallery.Index = counter;
				}
				
				counter++;
			}
		}
	}

	Enforce.Gallery.Show(this);

	return false;
}

Enforce.Gallery.Show = function(anchor)
{
	$("Gallery$Mask").style.display = "none";
	$("Gallery$Image").style.display = "none";
	$("Gallery$Caption").style.display = "none";
	$("Gallery$Loader").style.display = "";

	$("Gallery$Preview").style.width = Enforce.Gallery.MinSize[0] + "px";
	$("Gallery$Preview").style.height = Enforce.Gallery.MinSize[1] + "px";
	$("Gallery$Caption").style.width = Enforce.Gallery.MinSize[0] + "px";
	$("Gallery$Panel").style.width = Enforce.Gallery.MinSize[0] + "px";
	$("Gallery$Panel").style.position = "absolute";
	$("Gallery$Panel").style.display = "";
	$("Gallery").style.display = "";

	if(Enforce.Gallery.Images.length > 0)
	{
		Enforce.Gallery.Navigators(true);
	}

	Enforce.Gallery.ChangePosition();

	$("Gallery$Image").src = Enforce.Gallery.Images[Enforce.Gallery.Index].href;
	var img = new Image();
	img.src = anchor.href;
	img.title = anchor.title;
	img.onload = Enforce.Gallery.ImageLoad;
}

Enforce.Gallery.ChangePosition = function()
{
	var screen = Enforce.Screen();
	var scroll = Enforce.Scroll();

	var left = ((screen[0] - $("Gallery$Panel").offsetWidth) / 2);
	var top = ((screen[1] - $("Gallery$Panel").offsetHeight) / 2);

	$("Gallery$Panel").style.zIndex = "100";
	$("Gallery$Panel").style.left = ((left > 0) ? left : 0) + "px";
	$("Gallery$Panel").style.top = scroll[1] + ((top > 0) ? top : 0) + "px";

	// iframe zaslaniajacy selecty
	if(!((document.getElementById && !document.all) || window.opera))
	{
		$("Gallery$Mask").style.position = "absolute";
		$("Gallery$Mask").style.zIndex = "95";
		$("Gallery$Mask").style.left = $("Gallery$Panel").style.left;
		$("Gallery$Mask").style.top = $("Gallery$Panel").style.top;
		$("Gallery$Mask").style.height = $("Gallery$Panel").offsetHeight;
		$("Gallery$Mask").style.width = $("Gallery$Panel").offsetWidth;
		$("Gallery$Mask").style.display = "";
	}
	else
	{
		$("Gallery$Mask").style.display = "none";
	}

	var screen = Enforce.Screen();
	
	// warstwa przyslaniajaca tresc strony
	var overlayHeight = document.body.offsetHeight;

	if(overlayHeight < screen[1])
	{
		overlayHeight = screen[1];		
	}
	if(parseInt($("Gallery$Panel").style.top) + $("Gallery$Panel").offsetHeight > overlayHeight)
	{
		overlayHeight = parseInt($("Gallery$Panel").style.top) + $("Gallery$Panel").offsetHeight;
	}
		
	$("Gallery$Overlay").style.position = "absolute";
	$("Gallery$Overlay").style.zIndex = "90";
	$("Gallery$Overlay").style.left = "0px";
	$("Gallery$Overlay").style.top = "0px";
	$("Gallery$Overlay").style.height = overlayHeight + "px";
	$("Gallery$Overlay").style.display = "";
}

Enforce.Gallery.ImageLoad = function()
{
	if(this.title.replace(/^\s*|\s*$/g, "") != "")
	{
		$("Gallery$Caption").style.width = this.width + "px";
		$("Gallery$Caption").innerHTML = this.title;
		$("Gallery$Caption").style.display = "";
	}
	else
	{
		$("Gallery$Caption").style.display = "none";
	}

	$("Gallery$Preview").style.width = this.width + "px";
	$("Gallery$Preview").style.height = this.height + "px";

	$("Gallery$Panel").style.width = $("Gallery$Preview").offsetWidth + "px";
	
	$("Gallery$Mask").style.width = this.width + "px";
	$("Gallery$Mask").style.height = this.height + "px";

	$("Gallery$Image").style.width = this.width + "px";
	$("Gallery$Image").style.height = this.height + "px";

	// akcja po kliknieciu na obrazek
	if(Enforce.Gallery.Images.length > 0)
		$("Gallery$Image").onclick = Enforce.Gallery.NextImage;
	else
		$("Gallery$Image").onclick = Enforce.Gallery.Close;
	
	Enforce.Gallery.Navigators(true);

	Enforce.Gallery.ChangePosition();
	//setTimeout("Enforce.Gallery.ChangePosition()", 100);

	//$("Gallery$Image").src = this.src;
	$("Gallery$Loader").style.display = "none";
	$("Gallery$Image").style.display = "";
}

Enforce.Gallery.NextImage = function()
{
	if(Enforce.Gallery.Index < (Enforce.Gallery.Images.length - 1))
	{
		$("Gallery$Image").style.display = "none";
		$("Gallery$Loader").style.display = "";
		
		Enforce.Gallery.Index++;

		$("Gallery$Image").src = Enforce.Gallery.Images[Enforce.Gallery.Index].href;
		var img = new Image();
		img.src = Enforce.Gallery.Images[Enforce.Gallery.Index].href;
		img.title = Enforce.Gallery.Images[Enforce.Gallery.Index].title;	
		img.onload = Enforce.Gallery.ImageLoad;
	}
}

Enforce.Gallery.PrevImage = function()
{
	if(Enforce.Gallery.Index > 0)
	{
		$("Gallery$Image").style.display = "none";
		$("Gallery$Loader").style.display = "";
		
		Enforce.Gallery.Index--;

		$("Gallery$Image").src = Enforce.Gallery.Images[Enforce.Gallery.Index].href;		
		var img = new Image();
		img.src = Enforce.Gallery.Images[Enforce.Gallery.Index].href;
		img.title = Enforce.Gallery.Images[Enforce.Gallery.Index].title;		
		img.onload = Enforce.Gallery.ImageLoad;
	}
}

Enforce.Gallery.Close = function()
{
	$("Gallery").style.display = "none";
	$("Gallery$Image").style.display = "none";
	$("Gallery$Loader").style.display = "";
}

/* Inicjalizacja galerii */
Enforce.Events.add(window, "load", Enforce.Gallery.Init);
