
/*

	----------------------------------------------------------------------------------------------------
	Accessible News Slider
	----------------------------------------------------------------------------------------------------
	
	Author:
	Brian Reindel
	
	Author URL:
	http://blog.reindel.com

	License:
	Unrestricted. This script is free for both personal and commercial use.

*/

jQuery.fn.accessNews = function( settings ) {
	settings = jQuery.extend({
    headline : " ",
    speed : "normal",
		slideBy : 2,
		autoplay : false,
		gallery: false,
		picsperrow: 4
    }, settings);
  return this.each(function() {
	 jQuery.fn.accessNews.run( jQuery( this ), settings );
  });
};

jQuery.fn.accessNews.avvia = function ($this) {
  jQuery( ".play", $this ).addClass("off");
  jQuery( ".next > a", $this ).click();
};

jQuery.fn.accessNews.ferma = function ($this) {
  jQuery( ".play", $this ).removeClass("off");
};

jQuery.fn.accessNews.run = function( $this, settings ) {
	jQuery( ".javascript_css", $this ).css( "display", "none" );
	var ul = jQuery( "ul:eq(0)", $this );
	var li = ul.children();
  var t;
  var playing = false;
      
	if ( li.length > settings.slideBy ) {
		var $next = jQuery( ".next > a", $this );
		var $back = jQuery( ".back > a", $this );
		var $play = jQuery( ".play > a", $this );

		var liWidth = jQuery( li[0] ).width();
		var liLength = jQuery( li ).length;
		var animating = false;
		
		ul.css( "width", ( li.length * liWidth ) );
		$next.click(function() {	
			if ( !animating ) {
				animating = true;
				offsetLeft = parseInt( ul.css( "left" ) ) - ( liWidth * settings.slideBy );
				if ( offsetLeft + ul.width() > 0 ) {
					$back.css( "display", "block" );
					jQuery(".backdisabled",  $this ).css("display", "none")
					ul.animate({
						left: offsetLeft
					}, settings.speed, function() {
						if ( parseInt( ul.css( "left" ) ) + ul.width() <= liWidth * settings.slideBy ) {
							$next.css( "display", "none" );
							jQuery(".nextdisabled",  $this ).css("display", "block")
						}
						animating = false;
					});
				} else {
					if(playing){
            ul.animate({ left: 0 }, settings.speed);
          }
					animating = false;					
				}
			}
			return false;
		});
		$back.click(function() {
		  if(playing){
        playing = false
      };
			if ( !animating ) {
				animating = true;
				offsetRight = parseInt( ul.css( "left" ) ) + ( liWidth * settings.slideBy );
				if ( offsetRight + ul.width() <= ul.width() ) {
					$next.css( "display", "block" );
					jQuery(".nextdisabled",  $this ).css("display", "none")
					ul.animate({
						left: offsetRight
					}, settings.speed, function() {
						if ( parseInt( ul.css( "left" ) ) == 0 ) {
							$back.css( "display", "none" );
							jQuery(".backdisabled",  $this ).css("display", "block")
						}
						animating = false;
					});
				} else {
					animating = false;
				}
			}
			return false;
		});
    
		$play.click( function(){
		  if(!playing){
		    playing = true;
		    jQuery.fn.accessNews.avvia($this);
		    t = setInterval(function() { jQuery.fn.accessNews.avvia($this); },5000);
		  }else{
		    playing = false;
		    clearInterval(t);
		    jQuery.fn.accessNews.ferma($this);
		  }
		  return false;
    });
    //
    //  Autoplay
    //
    if(settings.autoplay){
      playing = true;
      t = setInterval(function() { jQuery.fn.accessNews.avvia($this); },5000);
    }
    //
    //  Gallery
    //
    if(settings.gallery){
      jQuery($this).after("<div class=\"ans_gallery\"><div class=\"ans_gallery_internal\"></div></div><div class=\"ans_overlay\"></div>");
      jQuery(".ans_overlay").css("opacity", "0.8");
      jQuery(".ans_gallery_internal").click( function(){
        return false;
      });
      jQuery(".ans_overlay, .ans_gallery").click( function(){
        jQuery.fn.accessNews.galleryClose();
      });    
    }
		$next.css( "display", "block" )
    jQuery(".next",  $this ).after("<p class=\"nextdisabled\" style=\"display:none;\">&nbsp;</p>")
    jQuery(".back",  $this ).after("<p class=\"backdisabled\">&nbsp;</p>")    
    jQuery(".view_all",  $this ).html(settings.headline)
    jQuery(".view_all",  $this ).after("<p class=\"indice\"><a href=\"#\"><img src=\"/NSI-theme/images/ans_espandi.png\"></a> "+li.length+" voci</p>")
    //
    //  Click espandi/chiudi
    //
		jQuery( ".indice > a, .skip_to_news > a", $this ).click(function() {
		  if(settings.gallery){
		    var $overlay = jQuery(".ans_overlay");
		    var $gallery = jQuery(".ans_gallery_internal");
		    var stile = "";
		    if ( jQuery( this ).html().indexOf("ans_espandi.png") != -1 || skip_to_news ) {
          //Popolo
    			for(i=0;i<liLength;i++){
   				  ((i)% settings.picsperrow == 0) ? stile=" style=\"float:left;clear:left;\"" : stile=" style=\"float:left;\"" ;
            $gallery.append("<div" + stile + ">" + jQuery( li[i] ).html() + "</div>" );
          }
          //Pulsante di chiusura
          $gallery.append("<p class=\"ans_gallery_close\"></p>");
          jQuery(".ans_gallery_close").append("<img src=\"/NSI-theme/images/lightbox-btn-close.gif\" style=\"border:0;\">");
          jQuery(".ans_gallery_close img").click( function(){
            jQuery.fn.accessNews.galleryClose();
          }); 
          //Apro
          jQuery.fn.accessNews.galleryOpen();
          jQuery(".ans_gallery_internal a").lightBox();
		    }else{
		      //Chiudo
		      jQuery.fn.accessNews.galleryClose();
        }
      }else{
  			var skip_to_news = ( jQuery( this ).html() == "Skip to News" );
  
  			if ( jQuery( this ).html().indexOf("ans_espandi.png") != -1 || skip_to_news ) {
  				ul.css( "width", "auto" ).css( "left", "0" );
   				for(i=0;i<liLength;i = i+settings.slideBy){
            jQuery( li[i] ).css("clear", "left");
           }
          jQuery( li ).css("padding", "5px 0");
  				ul.css( "height", "auto" );
  				$next.css( "display", "none" );
  				$back.css( "display", "none" );
  				jQuery(".nextdisabled",  $this ).css("display", "none");
  				jQuery(".backdisabled",  $this ).css("display", "none");
  				if ( !skip_to_news ) {
  					jQuery( this ).html( "<img src=\"/NSI-theme/images/ans_comprimi.png\">" );
  					jQuery(".play").css("display", "none");
  					jQuery.fn.accessNews.ferma($this);
  					clearInterval(t);
  				}
  			} else {
  				if ( !skip_to_news ) {
  				  jQuery(".play").css("display", "block");
  					jQuery( this ).html( "<img src=\"/NSI-theme/images/ans_espandi.png\">" );
  				}
  				jQuery( li ).css("clear", "none");
  				jQuery( li ).css("padding", "0");
   				ul.css( "width", ( li.length * liWidth ) );
  				$next.css( "display", "block" );
  				jQuery(".backdisabled",  $this ).css("display", "block")
  			}
  		}
			return false;
		});
	}
};
jQuery.fn.accessNews.galleryOpen = function () {
  var arrPageSizes = jQuery.fn.accessNews.___getPageSize();
  jQuery(".ans_overlay").css("height",arrPageSizes[1]);
  jQuery(".ans_overlay").css("display","block");
  jQuery(".ans_gallery_internal").css("display","block");
  jQuery(".ans_gallery").fadeIn('slow');
  window.scrollTo(0,0);
};
jQuery.fn.accessNews.galleryClose = function () {
  jQuery(".ans_overlay").css("display","none");
  jQuery(".ans_gallery").css("dispaly","none");
  jQuery(".ans_gallery_internal").css("display","none");
  //Svuoto
  jQuery(".ans_gallery_internal").empty();
};
jQuery.fn.accessNews.___getPageSize = function() {
			var xScroll, yScroll;
			if (window.innerHeight && window.scrollMaxY) {	
				xScroll = window.innerWidth + window.scrollMaxX;
				yScroll = window.innerHeight + window.scrollMaxY;
			} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
				xScroll = document.body.scrollWidth;
				yScroll = document.body.scrollHeight;
			} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
				xScroll = document.body.offsetWidth;
				yScroll = document.body.offsetHeight;
			}
			var windowWidth, windowHeight;
			if (self.innerHeight) {	// all except Explorer
				if(document.documentElement.clientWidth){
					windowWidth = document.documentElement.clientWidth; 
				} else {
					windowWidth = self.innerWidth;
				}
				windowHeight = self.innerHeight;
			} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
				windowWidth = document.documentElement.clientWidth;
				windowHeight = document.documentElement.clientHeight;
			} else if (document.body) { // other Explorers
				windowWidth = document.body.clientWidth;
				windowHeight = document.body.clientHeight;
			}	
			// for small pages with total height less then height of the viewport
			if(yScroll < windowHeight){
				pageHeight = windowHeight;
			} else { 
				pageHeight = yScroll;
			}
			// for small pages with total width less then width of the viewport
			if(xScroll < windowWidth){	
				pageWidth = xScroll;		
			} else {
				pageWidth = windowWidth;
			}
			arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
			return arrayPageSize;
};
