/**
	Copyright Mainframes.se 2010
	All rights reserved
	
	Requier easing plugin.
*/
var currentElm;
var timer;

function gallery_getRealOffset(item) {
			var ret = {
				left: 0,
				top: 0	
			}
			if(item == null) return ret;
			if(item.offsetParent.tagName != "BODY") {
				var temp = gallery_getRealOffset(item.offsetParent);
				ret.left = item.offsetLeft + temp.left;
				ret.top = item.offsetTop + temp.top;
				return ret;
			} else {
				ret.left = item.offsetLeft;
				ret.top = item.offsetTop;
				return ret;	
			}
		}

function initGallery(tag,sizew,sizeh,items)
{
	var overlay = jQuery("<div class=\"overlay\"></div>");
	var overlaylist = jQuery("<ul></ul>")
	var brd_nw = jQuery('<img src="'+items.border_nw+'"/>');  
	var brd_ne = jQuery('<img src="'+items.border_ne+'"/>');  
	var brd_sw = jQuery('<img src="'+items.border_sw+'"/>');  
	var brd_se = jQuery('<img src="'+items.border_se+'"/>');  

	var owner = {
		"overlay" : overlay,
		"overlaylist" : overlaylist,
		"tag" : tag,
		"width" : sizew,
		"height" : sizeh,
		"images": [],
		"links": [],
		"current": 0,
		"skipplay": 0,
		"play": 1,
		"mouseover": 0,
		"resizeTimer": null,
		"border": items.border,
		"brd_nw": brd_nw,
		"brd_ne": brd_ne,
		"brd_sw": brd_sw,
		"brd_se": brd_se,
		"delay": items.delay,
		"animte": items.animate,
		"easing": "easeOutQuad",
		"doResize": function() {
			
			var baseoff = gallery_getRealOffset(this.tag);//$(this.tag).offset()
		
			if(this.images.length > 0)
				for(var i = 0; i < this.images.length; i++) {
					var item = this.images[i];
					$(item).css({
						"position":"static", 
						"left": Math.ceil(baseoff.left)+this.border, 
						"top": Math.ceil(baseoff.top)+this.border,
						"width":sizew,
						"height":sizeh,
						"display":"block"
					});
					if(i != this.current) $(item).css("display","none");
				}
			
			$(this.brd_nw).css({
				"position":"absolute", 
				"left": Math.ceil(baseoff.left)+items.border, 
				"top": Math.ceil(baseoff.top)+items.border,
				"z-index": 100
			});
			$(this.brd_ne).css({
				"position":"absolute", 
				"left": Math.ceil(baseoff.left)+items.border+sizew-items.border_corner, 
				"top": Math.ceil(baseoff.top)+items.border,
				"z-index": 100
			});
			$(this.brd_sw).css({
				"position":"absolute", 
				"left": Math.ceil(baseoff.left)+items.border, 
				"top": Math.ceil(baseoff.top)+sizeh+items.border-items.border_corner,
				"z-index": 100
			});
			$(this.brd_se).css({
				"position":"absolute", 
				"left": Math.ceil(baseoff.left)+items.border+sizew-items.border_corner, 
				"top": Math.ceil(baseoff.top)+sizeh+items.border-items.border_corner,
				"z-index": 100
			});
		
				
			$(this.overlay).css({
				"position":"absolute", 
				"left": Math.ceil(baseoff.left)+sizew-$(overlay).outerWidth(true)+items.border, 
				"top": Math.ceil(baseoff.top)+(sizeh/2)-($(overlay).outerHeight(true)/2)+items.border,
				"z-index": 100
			});
		},
		"doShow": function(ind,play,nofadeout) {
			if(timer) clearTimeout(timer);
			
			if(this.play == 0 && play == 1) return;
				if(play == 0) this.play = 0;
				
				var currentItem = this.images[this.current];
				var temp;

				$("li",this.overlaylist).removeClass("selected");

				if(this.current != ind) {
					$(currentItem).fadeOut({ duration: this.animate, easing: this.easing});
				}
	
				temp = this.current;
				if(ind >= this.images.length) this.current = 0;
				else this.current = ind;
	
				var newItem = this.images[this.current];
				var newLink = this.links[this.current];
				$(newLink).addClass("selected");
				if(temp != ind) {
					$(newItem).fadeIn({ duration: this.animate, easing: this.easing});
				}
				
				currentElm = this;
				if(this.play == 1 && this.mouseover != 1) {
					timer = setTimeout('currentElm.doShow(currentElm.current+1,1,0)',this.delay);
				}
			}
	};
	
	$(tag).css({"width":sizew,"height":sizeh,"overflow":"hidden"});
	
	$(overlay).append(overlaylist);
	$(tag).append(overlay);
	var baseoff = gallery_getRealOffset(tag);//$(tag).offset();
	if(items.images.length > 0)
		for(var i = 0; i < items.images.length; i++) {
			var item = items.images[i];
			var imgitem = jQuery('<img alt="'+item.alt+'" id="'+tag.id+'_gallery_'+i+'" src="'+item.img+'"/>');
			var linkitem = jQuery('<li id="'+tag.id+'_link_'+i+'"></li>');
			$(imgitem).css({
				"position":"absolute", 
				"left": Math.ceil(baseoff.left)+items.border, 
				"top": Math.ceil(baseoff.top)+items.border,
				"width":sizew,
				"height":sizeh,
				"display":"block"
			});
			if(i != 0) $(imgitem).css("display","none");
			$(imgitem).bind('click', {link: item.link}, function(e) {
				document.location = e.data.link;
			});
/*			$(linkitem).bind('click', {index: i,owner: owner}, function(e) {
				owner.doShow(e.data.index,0,0);
			});*/
			$(linkitem).bind('mouseover', {index: i,owner: owner}, function(e) {
				e.data.owner.doShow(e.data.index,0,0);
			});
			$(linkitem).bind('mouseout', {index: i,owner: owner}, function(e) {
				e.data.owner.play = 1;
				e.data.owner.doShow(e.data.index,1,0);
			});
			$(tag).append(imgitem);
			$(overlaylist).append(linkitem);
			owner.images.push(imgitem);
			owner.links.push(linkitem);
		}
	$(tag).append(brd_nw);
	$(tag).append(brd_ne);
	$(tag).append(brd_sw);
	$(tag).append(brd_se);

	owner.doResize();
	
	owner.doShow(0,1,1);
	
	$(window).bind('resize', {owner: owner}, function(e) {
		if (e.data.owner.resizeTimer) clearTimeout(e.data.owner.resizeTimer);
		e.data.owner.resizeTimer = setTimeout('owner.doResize()', 100);
	});
	
	return owner;
}
