$(document).ready(gallery_init);

function gallery_init(){
	$("a.x").click(function(){
		var g = this.rel || false;
		gallery.show(this.href,g);
		this.blur();
		return false;
	});
}

gallery = {
	width : 0,
	height : 0,
	show : function(url, group) {
		try {
			var self = this;
		
			if (document.getElementById("hideselect_gallery") == null) {
				$('body').append('<iframe id="hideselect_gallery" class="xg-hideselect"></iframe><div id="overlay_gallery" class="xg-overlay"></div><div id="x-gallery"></div>');
				$('#overlay_gallery').click(self.remove);
			}
			
			$(window).scroll(self.position);
	 		
			this.overlay('gallery');
			
			$('body').append('<div id="x-load" class="xg-loading"></div>');
			this.position_load();
			
			var urlString = /\.jpg|\.jpeg|\.png|\.gif|\.html|\.htm|\.php|\.cfm|\.asp|\.aspx|\.jsp|\.jst|\.rb|\.txt|\.bmp/g;
			var urlType = url.toLowerCase().match(urlString);
			
			if(!(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif')) return;
			
			var g_furl = false;
			var g_navigation = '';
			var g_prev_url = '';
			var g_prev_active = '';
			var g_prev_deactive = '';
			var g_next_url = '';
			var g_next_active = '';
			var g_next_deactive = '';
			
			if(group) {
				var tmp = $("a[@rel="+group+"]").get();
				for (i = 0; ((i < tmp.length) && (g_next_active == '')); i++) {
					if (!(tmp[i].href == url)) {
						if (g_furl == true) {
							g_next_url = tmp[i].href;
							g_next_active = '<a id="x-next" class="x-next" href="#next"></a>';
						} else {
							g_prev_url = tmp[i].href;
							g_prev_active = '<a id="x-prev" class="x-prev" href="#previous"></a>';
						}
					} else {
						g_furl = true;
					}
				}
			}
			
			function goNext(){
				$('#x-gallery').remove();
				$('body').append('<div id="x-gallery"></div>');
				self.show(g_next_url, group);				
				return false;	
			}
			
					
			function goPrev(){
				$('#x-gallery').remove();
				$('body').append('<div id="x-gallery"></div>');
				self.show(g_prev_url, group);
				return false;	
			}
			
			/*-------------- images ------------*/
			if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){
				if(group){	
					g_prev_deactive = g_prev_active == '' ? '<span class="x-prev"></span>' : '';
					g_next_deactive = g_next_active == '' ? '<span class="x-next"></span>' : '';
					g_navigation = '<div id="x-navigation">' + g_prev_active + g_prev_deactive + g_next_active + g_next_deactive + '</div>';
				}

				imgPreloader = new Image();
				imgPreloader.onload = function(){
				
					imgPreloader.onload = null;
					
					var iw = imgPreloader.width;
					var ih = imgPreloader.height;
			
					gallery.width = iw + 62;
					gallery.height = ih + 62;
				
					$("#x-gallery").append("<table class='xg'><tr><td class='xg-11 png'><div></div></td><td class='xg-12 pngscale'><div></div></td><td class='xg-13 png'><div ></div></td></tr><tr><td class='xg-21 pngscale'><div></div></td><td class='xg-22'><a href='#close' id='x-closebtn'></a><div id='x-image'><img id='x-image' src='" + url + "' width='" + iw + "' height='" + ih + "' alt='' /><br /></div>" + g_navigation + "</td><td class='xg-23 pngscale'><div></div></td></tr><tr><td class='xg-31 png'><div ></div></td><td class='xg-32 pngscale'><div></div></td><td class='xg-33 png'><div></div></td></tr></table>");
					
					$('#x-closebtn').click(self.remove);
					
					if (!(g_prev_active == '')) $('#x-prev').click(goPrev);
					
					if (!(g_next_active == '')) $('#x-next').click(goNext);
			
					self.position();
					$('#x-load').remove();
					$('#x-gallery').css({display:'block'});
				}
		  
				imgPreloader.src = url;
			}
			/*------------- /images ------------*/
			$(window).resize(self.position);
			
		} catch(e) {
			alert( e );
		}
	},

	remove : function() {
		$("#x-gallery").css({ display:'none'});
		$('#overlay_gallery,#hideselect_gallery,#x-gallery').remove();
		$("#x-load").remove();
		$(document).unbind("unkeyup");
		return false;
	},

	position : function () {
		var pagesize = gallery.pagesize();
		var arrayPageScroll = gallery.pagescroll();
		$("#x-gallery").css({width:gallery.width+"px",left: ((pagesize[0] - gallery.width)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-gallery.height)/2))+"px" });
	},

	position_load : function() {
		var pagesize = this.pagesize();
		var arrayPageScroll = this.pagescroll();

		$("#x-load")
		.css({left: ((pagesize[0] - 100)/2)+"px", top: (arrayPageScroll[1] + ((pagesize[1]-100)/2))+"px" })
		.css({display:"block"});
	},
	
	pagesize : function(){
		var de = document.documentElement;
		var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
		var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
		
		result = new Array(w,h) 
		return result;
	},
	
	pagescroll : function (){
		var t;
		if (self.pageYOffset) {
			t = self.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
			t = document.documentElement.scrollTop;
		} else if (document.body) {// all other Explorers
			t = document.body.scrollTop;
		}
		
		result = new Array('',t) 
		return result;
	},
	
	overlay : function(id) {
		if (window.innerHeight && window.scrollMaxY) {	
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){
			yScroll = document.body.scrollHeight;
		} else {
			yScroll = document.body.offsetHeight;
		}
		$('#overlay_' + id).css('height',yScroll + 'px');
		$('#hidehelect_' + id).css('height',yScroll + 'px');
	}
}

