/*



	2009.03.06

	SlideView Component

	developled by Robin at ELFVision and PageTalks

	used mainly in the WUSESKY Project

	

	Visit Robin's:

	http://www.elfvision.com/

	http://pagetalks.com/

	

	and See our Project

	http://www.wusesky.com/



*/



jQuery.iSlideView = {

	build: function(user_options) {

		var defaults = {

			thumbPrefix: "thumb_",

			slideBy : 1,

			speed: 350

		};

		return jQuery(this).each(function() {

			var options = jQuery.extend(defaults, user_options);

			var config;

			

			var x =jQuery(this);

			var list  = x.find(".slideView");

			var links = list.find("a");

			var images = list.find("img");

			

			//Prepare DOM

			x.prepend("<span class='desc'></span><span class='arrowL arrow'><</span><div class='wrap'><ul class='thumbList'></ul></div><span class='arrowR arrow'>></span>");

			var thumbList = x.find(".thumbList");

			var i=0;

			images.each(function() {

				var l = jQuery(this);

				thumbList.append("<li>"+

					"<a href='javascript:;' id='"+ (i+1) +"'><img src='"+getThumbName(l.attr("src"),options.thumbPrefix)+"' alt='"+l.attr("alt")+"' width='93' height='61' /></a></li>");

				i++;

			});

			

			//Force to hide overflow

			x.css("overflow","hidden");

			

			//Attach events

			var arrow = x.find(".arrow");

			var back = x.find(".arrowL");

			var next = x.find(".arrowR");

			var desc = x.find(".desc");

			var liW = thumbList.find("li").width();

			var xW = x.width();

			var xH = x.height();

			var thumbW = thumbList.width(); //458px

			var li = thumbList.find("li");

			var tLink = thumbList.find("a");

			var totalW = li.length * liW;

			var xTotalH = li.length * xH;

			

			back.hide();

			x.find(".wrap").fadeTo("fast",10);

			

			desc.text(images.eq(0).attr("alt")).fadeTo("fast",0.6).hover(function() {

				jQuery(this).fadeTo("fast",0.6);

			},function() {

				jQuery(this).fadeTo("fast",0.6);

			});

			

			list.css("height",xTotalH);

			thumbList.css( "width", totalW );

			

			var Pointer = 0;

			var total = li.length;

			

			next.click(function() {

				var offsetL =  parseInt(thumbList.css("left")) - liW * options.slideBy;

				

				thumbList.animate({

					left: offsetL + "px"

				},options.speed,function() {

					if(Pointer==total-1) {

						next.hide();

					}

					desc.text(images.eq(Pointer).attr("alt"));

					var offsetT = - (xH * Pointer);

					

					list.animate({

						top: offsetT

					},options.speed);

				});

				Pointer++;

				if(Pointer!=0) {

					back.show().fadeTo("fast",0.6);

				}

				

			});

			

			back.click(function() {

				var offsetL =  parseInt(thumbList.css("left")) + liW * options.slideBy;

				thumbList.animate({

					left: offsetL + "px"

				},options.speed,function() {

					if(Pointer==0) {

						back.hide();

						next.show().fadeTo("fast",0.6);

					}

					desc.text(images.eq(Pointer).attr("alt"));

					var offsetT = - (xH * Pointer);

					list.animate({

						top: offsetT

					},options.speed);

					

				});

				

				Pointer--;

			});

			

			tLink.click(function() {

				var id = $(this).attr("id")-1;				

				var offsetT = - (xH * id);

				desc.text(images.eq(id).attr("alt"));

					list.animate({

						top: offsetT

					},options.speed);

			},function() {

				var offsetT = - (xH * Pointer);

				desc.text(images.eq(Pointer).attr("alt"));

				list.animate({

					top: offsetT

				},options.speed);

			});

			

			thumbList.hover(function() {

				x.find(".wrap").fadeTo("fast",10);

			},

			function() {

				x.find(".wrap").fadeTo("fast",10);

			});

			

			arrow.fadeTo("fast",10).hover(function() {

				jQuery(this).fadeTo("fast",10);

			},

			function() {

				jQuery(this).fadeTo("fast",10);

			}

			);

			

		});

	}

}



jQuery.fn.slideView = jQuery.iSlideView.build;



//Helping functions



function getThumbName(n,prefix) {

	var arr = n.split("/");

	var tl = n.length;

	var w = arr[arr.length-1].length;

	return n.substr(0,tl-w-1)+"/"+arr[arr.length-1];
	//return n.substr(0,tl-w-1)+"/"+prefix+arr[arr.length-1];

}



function focusTo(pointer,list,height,speed,desc,text) {

	//alert(pointer);

	var id = pointer - 1;

	var offsetT = - (height * id);

	list.animate({

		top: offsetT

	},speed);

	desc.text(text);

}


