/*!
 * 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.3 (9-JULY-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
 * 
 */
/*
  jQuery-fireEvent v0.2, by Francois-Guillaume Ribreau.

  http://blog.fgribreau.com/2010/08/jquery-fireevent-plugin-for-firing-real.html

  Copyright (c)2010 Francois-Guillaume Ribreau. All rights reserved.
  Released under the Creative Commons BY-SA Conditions.
    http://creativecommons.org/licenses/by-sa/3.0/

  Usage:
    $('#button').fireEvent('click').text('Event sent');
*/

(function($, undefined) {

	$.fireEvent = function(el, eventName, opt) {
		if (el === undefined)
			return false;
		
		if('jquery' in el){
		  el = el[0];
		}

    if(!evts[eventName]){
			return false;
    }
    
    var evt;
    
		if (typeof(document.createEvent) != 'undefined') {//W3C way
			evt = document.createEvent(evts[eventName].w3c);
			evts[eventName].initEvt(evt, el, opt);
			el.dispatchEvent(evt);

		} else {//IE
			if (eventName == 'click') { 
				// we use jquery to fire the click event because of a bug in IE7-8
				$(el).click();
			} else {
				el.fireEvent(evts[eventName].ie);
			}
		}
	};

	$.fn.fireEvent = function(eventName, opt) {
		if (this.length == 0)
			return this;

		$.fireEvent.call({},this[0], eventName, opt);

		return this;
	};

	/* -- Event cross-browser implementation -- */
	var evts = {
		'click': {//Tested/Work with Firefox 3.6 & Safari 5.0.1 & Chromium 6.0
			ie: 'onclick',
			w3c: 'MouseEvents',
			initEvt: function(evt, target, opt) {
				var _def = $.extend({
						type: 'click',
						canBubble: true,
						cancelable: true,
						view: window,
						detail: 1,
						screenX: 1,
						screenY: 1,
						clientX: 1,
						clientY: 1,
						ctrlKey: false,
						altKey: false,
						shiftKey: false,
						metaKey: false,
						button: 0,
						relatedTarget: target}, opt);

				evt.initMouseEvent(_def.type,
				_def.canBubble, _def.cancelable, _def.view, _def.detail,
				_def.screenX, _def.screenY, _def.clientX, _def.clientY,
				_def.ctrlKey, _def.altKey, _def.shiftKey, _def.metaKey, _def.button, _def.relatedTarget);
			}
		},

		'dblclick': {//Tested/Work with Firefox 3.6 & Safari 5.0.1 & Chromium 6.0
			ie: 'ondblclick',
			w3c: 'MouseEvents',
			initEvt: function(evt, target, opt) {
				evts['click'].initEvt(evt, target, $.extend({type: 'dblclick'}, opt));
			}
		},

		'keyup': {//Tested/Work with Firefox 3.6 & Safari 5.0.1 & Chromium 6.0 (not opera)
			ie: 'onkeyup',
			w3c: 'KeyboardEvent',
			initEvt: function(evt, target, opt) {
				var _def = $.extend({keyCode: null, CharCode: null}, opt);
        //initKeyboardEvent doesn't work with Opera (tested with Firefox 3.6 & Safari 5.0.1)
				evt.initKeyboardEvent('keyup', true, true, window, false, false, false, false, _def.keyCode, _def.CharCode)
			}

		},
		
		'blur': {//Tested/Work with Firefox 3.6 & Safari 5.0.1 & Chromium 6.0
			ie: 'onblur',
			w3c: 'HTMLEvents',
			initEvt: function(evt, target, opt) {
				evt.initEvent('blur', true, true);
			}

		},
		
		'change': {//Tested/Work with Firefox 3.6 & Safari 5.0.1 & Chromium 6.0
			ie: 'onchange',
			w3c: 'HTMLEvents',
			initEvt: function(evt, target, opt) {
				evt.initEvent('change', true, true);
			}
		}
	};

})(jQuery);
jQuery(function(){
    jQuery("div.svw").prepend("<img src='spinner.gif' class='ldrgif' alt='loading...'/ >"); 
});
var j = 0;
var quantofamo = 0;
jQuery.fn.slideView = function(settings) {
    settings = jQuery.extend({
        easeFunc: "easeInOutExpo",
        easeTime: 750,
        uiBefore: false,
        toolTip: false,
        ttOpacity: 0.9
    }, settings);
    return this.each(function(){
        var container = jQuery(this);
        container.find("img.ldrgif").remove();
        container.removeClass("svw").addClass("stripViewer");		
        var pictWidth = container.find("img").width();
        var pictHeight = container.find("img").height();
        var pictEls = container.find("li").size();
        var stripViewerWidth = pictWidth*pictEls;
        container.find("ul").css("width" , stripViewerWidth);
        container.css("width" , pictWidth);
        container.css("height" , pictHeight);
        
        container.each(function(i) {
            (!settings.uiBefore) ? jQuery(this).after("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>") : jQuery(this).before("<div class='stripTransmitter' id='stripTransmitter" + (j) + "'><ul><\/ul><\/div>");			
            jQuery(this).find("li").each(function(n) {
                jQuery("div#stripTransmitter" + j + " ul").append("<li><a title='" + jQuery(this).find("img").attr("alt") + "' href='#'>"+(n+1)+"<\/a><\/li>");												
            });
           
            jQuery("div#stripTransmitter" + j + " a").each(function(z) {                 
                jQuery(this).bind("click", function(){                    
                    jQuery(this).addClass("current").parent().parent().find("a").not(jQuery(this)).removeClass("current"); // wow!
                    var cnt = -(pictWidth*z);
                    container.find("ul").animate({
                        left: cnt
                    }, settings.easeTime, settings.easeFunc);
                    return false;
                });
                       

            });            
            var x=jQuery("div#stripTransmitter0 ul li a").length-1;
            var z=0;
            setInterval(function(){              
                z=(z<=x) ? z :0;
                var cual=jQuery("div#stripTransmitter0 ul li a")[z];
              
                jQuery(cual).addClass("current").parent().parent().find("a").not(cual).removeClass("current");
               
                var cnt = -(pictWidth*z);
                container.find("ul").animate({
                        left: cnt
                   }, settings.easeTime, settings.easeFunc);
                
                z++;
            },7000);
		
		
            container.bind("click", function(e){
                
                var ui = (!settings.uiBefore) ? jQuery(this).next().find("a.current") : jQuery(this).prev().find("a.current");
                var bTotal = parseFloat(jQuery(this).css('borderLeftWidth').replace("px", "")) +  parseFloat(jQuery(this).css('borderRightWidth').replace("px", ""));
                var dOs = jQuery(this).offset();
                var zeroLeft = (bTotal/2 + pictWidth) - (e.pageX - dOs.left);
                if(zeroLeft >= pictWidth/2) { 
                    var uiprev = ui.parent().prev().find("a");	
                    (jQuery(uiprev).length != 0)? uiprev.trigger("click") : ui.parent().parent().find("a:last").trigger("click");							
                } 
                else {
                    var uinext = ui.parent().next().find("a");
                    (jQuery(uinext).length != 0)? uinext.trigger("click") : ui.parent().parent().find("a:first").trigger("click");
                }
            });
		
		
            jQuery("div#stripTransmitter" + j).css("width" , pictWidth);
            jQuery("div#stripTransmitter" + j + " a:first").addClass("current");
            jQuery('body').append('<div class="tooltip" style="display:none;"><\/div>');
		

            if(settings.toolTip){
                var aref = jQuery("div#stripTransmitter" + j + " a");

                aref.live('mousemove', function(e) {
                    var att = jQuery(this).attr('title');
                    posX=e.pageX+10;
                    posY=e.pageY+10;
                    jQuery('.tooltip').html(att).css({
                        'position': 'absolute', 
                        'top': posY+'px', 
                        'left': posX+'px', 
                        'display': 'block', 
                        'opacity': settings.ttOpacity
                    });
                });
                aref.live('mouseout', function() {
                    jQuery('.tooltip').hide();
                });				
            }
        });
        j++;
    });	
};
