/*!
 * slideViewer 1.2
 * Examples and documentation at: 
 * http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html
 * 2007-2010 Gian Carlo Mingati
 * Version: 1.2.1 (19-FEBRAURY-2010)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Requires:
 * jQuery v1.4.1 or later, jquery.easing.1.2
 * 
 */

var j = 0;
var quantofamo = 0;
jQuery.fn.slideView = function(settings) {
	settings = jQuery.extend({
		easeFunc: "easeInOutExpo",
		easeTime: 500,
		slideShowIntervalTime: 3000,
		toolTip: false,
		ttOpacity: 0.94
	}, settings);
	
	return this.each(function(){
		var container = jQuery(this);
		container.removeClass("svw").addClass("stripViewer");
		var viewWidth = container.width() - 10; // Subtract border
		container.css("border-width", 5) // set border. this fixes a safari bug where the border keeps disapearing
		
		// Adjust height.
		var adjustHeightInterval;
		adjustHeightInterval = setInterval( function() {
			var liElem = container.find("li:first");
			var imgHeight = container.find("img:first", liElem).outerHeight();
			if( imgHeight != null && imgHeight > 0 ) {
				clearInterval( adjustHeightInterval );
				container.height( liElem.outerHeight() );
			}
		}, 75 );
		
		container.each(function(i) {
			jQuery(this).after("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>");
			var stripTransmitter = jQuery("div#stripTransmitter" + j);
			
			jQuery("div#stripTransmitter" + j + " a:first").addClass("current");
			
			var slideshowInterval = undefined;
			var toggleSlideshowControl = undefined;

			var nextSlide = function() {
				var anchors = stripTransmitter.find("li.stripTransmitter_slideControl a");
				var i = anchors.index( stripTransmitter.find("li.stripTransmitter_slideControl a.current")[0] ) + 1;
				i = ( i >= anchors.size() )? 0 : i;
				gotoSlide(i);
			};
			var startSlideshow = function() {
				slideshowInterval = setInterval( nextSlide, settings.slideShowIntervalTime );
				if( toggleSlideshowControl != undefined ) {
					toggleSlideshowControl.removeClass("stripTransmitter_slideshowToggle_stopped");
					toggleSlideshowControl.addClass("stripTransmitter_slideshowToggle_playing");
				}
			};
			var stopSlideshow = function() {
				clearInterval(slideshowInterval);
				slideshowInterval = undefined;
				if( toggleSlideshowControl != undefined ) {
					toggleSlideshowControl.removeClass("stripTransmitter_slideshowToggle_playing");
					toggleSlideshowControl.addClass("stripTransmitter_slideshowToggle_stopped");
				}
			};
			var toggleSlideshow = function() {
				if( slideshowInterval == undefined ) {
					startSlideshow();
				} else {
					stopSlideshow();
				}
			};
			
			var gotoSlide = function(z) {
				var slideControlAnchor = stripTransmitter.find("li.stripTransmitter_slideControl a:eq("+z+")")
				slideControlAnchor.addClass("current")
				stripTransmitter.find("a").not( slideControlAnchor ).removeClass("current");
				var cnt = - (container.find("li").width()*z);
				container.find("ul").stop().animate(
					{left: cnt},
					settings.easeTime,
					settings.easeFunc
				);
				return false;
			};
			
			// Slideshow toggle control
			stripTransmitter.find("ul").append("<li class='stripTransmitter_slideshowToggle'><a rel='Toggle Slideshow' href='javascript:undefined;'><span>Toggle Slideshow<\/span><\/a><\/li>");
			toggleSlideshowControl = stripTransmitter.find("li.stripTransmitter_slideshowToggle a");
			toggleSlideshowControl.bind("click",  toggleSlideshow );
			// Add "transimiter" controls
			jQuery(this).find("li").each(function(n) {
				stripTransmitter.find("ul").append("<li class='stripTransmitter_slideControl'><a rel='" + jQuery(this).find("img").attr("alt") + "' href='javascript:undefined;'>"+(n+1)+"<\/a><\/li>");												
			});
			stripTransmitter.find("li.stripTransmitter_slideControl a").each(function(z) {
				jQuery(this).bind("click", function(){
					stopSlideshow();
					gotoSlide(z);
			   });
			});
			
			// Window resize handling
			var adjustSizes = function( isInit ){
				var viewWidth = container.width() - 10; // Subtract border
				container.css("border-width", 5) // set border. this fixes a safari bug where the border keeps disapearing
				
				container.find("li").each(function(){ jQuery(this).css("width" , viewWidth) });
				var totalWidth = viewWidth * container.find("li").size();
				container.find("ul").css("width" ,  totalWidth);
				
				if( isInit ) {
					startSlideshow();
					//container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc);
					container.find("ul").css("left", 0 - totalWidth - 200 ); // move off screen so the first one animates in
					gotoSlide(0);
				} else {
					gotoSlide( stripTransmitter.find("li.stripTransmitter_slideControl a").index( stripTransmitter.find("li.stripTransmitter_slideControl a.current")[0] ) );
				}
			};
			jQuery(window).resize( function(){ adjustSizes(false) } );
			
			// Get things started.
			adjustSizes(true);
			
			jQuery('body').append('<div class="tooltip" style="display:none;"><\/div>');
			// built-in tooltips 17/02/2010
			// original work at stoimen.com/jquery.tooltip.plugin/
			if(settings.toolTip){
				var aref = jQuery("div#stripTransmitter" + j + " a");
		
				aref.live('mousemove', function(e) {
					var att = jQuery(this).attr('rel');
					posX=e.pageX+25;
					posY=e.pageY+20;
					jQuery('.tooltip').html(att).css({'position': 'absolute', 'top': posY+'px', 'left': posX+'px', 'display': 'block', 'padding': '5px 6px', 'color': '#FFFFFF', 'font-size': '11px', 'background': '#4b4b4b', 'opacity': settings.ttOpacity});
				});
				aref.live('mouseout', function() {
					jQuery('.tooltip').hide();
				});				
			}
		});
		
		j++;
	});	
};