$(document).ready(function(){
	itpanesme.init();
});


itpanesme = {
	timers : {},
	init : function(override){
		var acton = (override) ? override : ".pane_grid";
		$(acton).each(function(){ itpanesme.setup(this); });
	},
	setup : function(elem){
		var options = itpanesme.buildobject(elem,"var","title","text");
		var childpanes = $(elem).find(".pane").length;
		var animarr = options.anim.split(",");
		var animax=0;
		for(i=0;i<animarr.length;i++){
			animax=(parseInt(animarr[i])>animax)?animarr[i]:animax;
		}
		itpanesme.timers[elem.id] = {};
		$(elem).prepend('<div class="grid_wrap"></div>');
		$(elem).find(".image_grid").addClass("hidden").hide();
		for(i=0;i<(options.rows*options.cols);i++){
			$(elem).children(".grid_wrap").append('<div id="pane_'+i+'" class="pane tier_'+animarr[i]+'"><span class="blocking"></span><span class="image"></span><span class="trans"></span></div>');
		};
		$(elem).find(".pane").each(function(){
			var orp = itpanesme.getoffset(this);
			$(this).attr("rel",orp);
		});
		itpanesme.setpos(elem);
		itpanesme.getimg.def(elem,animax);
		itpanesme.controlicons.set(elem,3000);
		itpanesme.interactions(elem,animax);
	},
	getoffset : function(elem){
		return $(elem).position().left+","+$(elem).position().top;
	},
	setpos : function(elem){
		$(elem).find(".pane").each(function(){
			var orp = $(this).attr("rel").split(",");
			var orpf = "-"+orp[0]+"px -"+orp[1]+"px";
			$(this).children(".image").css("background-position",orpf);
			$(this).children(".trans").css("background-position",orpf);
		});
	},
	getimg : {
		direct : function(elem,anchor,animax){
			$(elem).find(".image_grid .selected").removeClass("selected");
			var newimg = $(anchor).addClass("selected").attr("href");
			var thisindex = $(anchor).parent().children().index(anchor);
			$(anchor).parent().attr("rel",thisindex);
			itpanesme.swapimg(elem,newimg,animax);
		},
		seq : function(elem,button,animax){
			$(elem).find(".image_grid .selected").removeClass("selected");
			var direc = ($(button).hasClass("scrollleft")) ? "left" : "right";
			var total = $(elem).find(".image_grid .image_list").children().length-1;
			var curselect = parseInt($(elem).find(".image_grid .image_list").attr("rel"));
			var newindex = (direc == "left") ? curselect-1 : curselect+1;
			newindex = (newindex<0) ? total : newindex;
			newindex = (newindex>total) ? 0 : newindex;
			var newimg = $(elem).find(".image_grid .image_list a:eq("+ newindex +")").addClass("selected").attr("href");
			$(elem).find(".image_grid .image_list").attr("rel",newindex);
			itpanesme.swapimg(elem,newimg,animax);
		},
		def : function(elem,animax){
			var newimg = $(elem).find(".image_grid .image_list a:eq(0)").addClass("selected").attr("href");
			$(elem).find(".image_grid .image_list").attr("rel",0);
			itpanesme.swapimg(elem,newimg,animax);
		}
	},
	swapimg : function(elem,newimg,animax){
		$(elem).find(".pane").each(function(){
			portstyle = $(this).children(".image").attr("style");
			$(this).children(".trans").attr("style",portstyle);
			$(this).children(".image").css("background-image","url("+newimg+")").hide();
		});
		itpanesme.animate(elem,"tier_",animax);
	},
	animate : function(elem,seek,animax){
		for(i=0;i<=animax;i++){
			var thistime = 80*i;
			itpanesme.performanimation(elem.id,seek+i,thistime);
			//setTimeout('itpanesme.performanimation("'+elem.id+'","'+seek+i+'")',thistime);
		}
	},
	performanimation : function(elem,getclass,delay){
		$("#"+elem).find("."+getclass).children(".trans").delay(delay).fadeOut(200);
		$("#"+elem).find("."+getclass).children(".image").delay(delay).fadeIn(600);
	},
	controlicons : {
		set : function(elem,delay){
			itpanesme.timers[elem.id]["arrowstimer"] = setTimeout('itpanesme.controlicons.animate.delegate("'+elem.id+'","controlbutton")',delay);
		},
		kill : function(elem){
			clearTimeout(itpanesme.timers[elem.id]["arrowstimer"]);
		},
		animate : {
			delegate : function(elem,getclass,force,speed){
				if (force) {
					if (force == "in") {
						itpanesme.controlicons.animate.fadein(elem,getclass,speed);
					} else {
						itpanesme.controlicons.animate.fadeout(elem,getclass,speed);
					}
				} else {
					if ($("#"+elem).find(".controls").hasClass("out")) {
						itpanesme.controlicons.animate.fadein(elem,getclass,speed);
					} else {
						itpanesme.controlicons.animate.fadeout(elem,getclass,speed);
					}
				}
			},
			fadein : function(elem,getclass,speed){
				dur = (speed) ? speed : 350;
				$("#"+elem).find(".controls").removeClass("out").children("."+getclass).children(".button").fadeIn(350);
			},
			fadeout : function(elem,getclass,speed){
				dur = (speed) ? speed : 1000;
				$("#"+elem).find(".controls").addClass("out").children("."+getclass).children(".button").fadeOut(1000);
			}
		}
	},
	interactions : function(elem,animax){
		$(elem).mousemove(function(){
			if ($(elem).find(".image_grid").hasClass("hidden")) {
				itpanesme.controlicons.animate.delegate(elem.id,"controlbutton","in");
				itpanesme.controlicons.kill(elem);
				itpanesme.controlicons.set(elem,4000);
			}
		});
		$(elem).find(".controls .opengallery").click(function(){
			$(elem).find(".image_grid").removeClass("hidden").fadeIn(400);
			itpanesme.controlicons.animate.delegate(elem.id,"controlbutton","out",400);
			itpanesme.controlicons.kill(elem);
		});
		$(elem).find(".image_grid .closegallery").click(function(){
			$(elem).find(".image_grid").addClass("hidden").fadeOut(400);
			itpanesme.controlicons.animate.delegate(elem.id,"controlbutton","in");
			itpanesme.controlicons.set(elem,4000);
		});
		$(elem).find(".image_grid a").click(function(){
			$(elem).find(".image_grid").addClass("hidden").fadeOut(400);
			itpanesme.controlicons.animate.delegate(elem.id,"controlbutton","in");
			itpanesme.controlicons.set(elem,4000);
			itpanesme.getimg.direct(elem,this,animax);
			return false;
		});
		$(elem).find(".controls .scroller").click(function(){
			itpanesme.controlicons.animate.delegate(elem.id,"controlbutton","in");
			itpanesme.controlicons.kill(elem);
			itpanesme.controlicons.set(elem,4000);
			itpanesme.getimg.seq(elem,this,animax);
			return false;
		});
	},
	
	
	buildobject : function(elem,node,k,v) {
		varlist = {};
		for (i=0;i<$(elem).children(node).length;i++) {
			var key = $(elem).children(node + ":eq(" + i + ")").attr(k);
			var val = (v == "text") ? $(elem).children(node + ":eq(" + i + ")").text() : $(elem).children(node + ":eq(" + i + ")").attr(v);
			varlist[key] = val;
		}
		return varlist;
	}
}



