/*!
 * $ ILAS Slider Plugin v.1.1
 * http://www.argentovivo.tv/
 *
 * Copyright 2011, Valerio Menna
 * All right reserved to
 * Valerio Menna, ArgentoVivo.tv
 *
 * Date: Dec, 1st, 9:00:00 2011
 
****************************************
			HOW TO USE
****************************************	

***** INCLUDE THE LIBRARY *****
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.easing.js"></script>
<script type="text/javascript" src="js/jqueryui.js"></script>
<script type="text/javascript" src="js/jquery.navILAS-1.0.js"></script>


***** INCLUDE THE STYLE *****
<link rel="stylesheet" href="js/navILAS.css" />

***** SET THE ELEMENT *****
 
***** ANIMATE THE ELEMENT *****
$('#topSlider').ILASlider({
							//user's value
						});
 
 
****************************************
			CUSTOMIZE
****************************************	

 
 */
(function($) {

	var timer = 0;
	var defvars, config, opt, $cont;
	
	// ========================================
	//              FUNZIONI UTILI
	// ========================================
	
	$.fn.startAnimation = function(){
		return this.each(function(){
			var $this = $(this);
			$this.addClass('animated');
		})
	}
	
	$.fn.stopAnimation = function(){
		return this.each(function(){
			var $this = $(this);
			$this.removeClass('animated');
		})
	}
		  
	// ========================================
	//             DEFAULT METHODS
	// ========================================	
	
	var methods = {
			// =========
			// FIRST DECLARATION
			init: function( options ){
						// ========================================
						//			    DEFAULT VARS
						// ========================================	
						defvars = {
									contenitore 				: this,
									/* ===== UL ===== */
									slider_ul 					: this.children('ul'),
									/* ===== LI ===== */
									li_elems 					: this.find('li')
									
								};
						// ========================================
						//			    DEFAULT VALUE
						// ========================================	
						config = {
									defaults: {
										num_elems				: defvars.li_elems.size(), /* ===== NUMERO DI ELEMENTI PRESENTI ===== */
										slider_width			: defvars.contenitore.width(), /* ===== LARGHEZZA DELLO SLIDER ===== */
										slider_height			: defvars.contenitore.height(), /* ===== ALTEZZA DELLO SLIDER ===== */
										anim_time_1				: 1200, /* ===== TEMPO ANIMAZIONE ===== */
										auto_slide_seconds 		: 4000, /* ===== TEMPO AUTOSLIDE ===== */
										allow_auto_slide 		: true, /* ===== ALLOW AUTOSLIDE ===== */
										allow_arrow_controls 	: false, /* ===== ALLOW ARROW CONTROLS ===== */
										arrow_controls_visible 	: false,
										allow_navigation 		: true, /* ===== ALLOW NAVIGATION ===== */
										controls_x				: "10px",
										thumbs					: true /* ===== ALLOW PANEL NAVIGATION ===== */
									}
								};
						//-----save user value
						if ( options ) $.extend(config.defaults, options);
						opt = config.defaults;
						$cont = defvars.contenitore;
						// ========================================
						//			  BASIC OPERATIONS
						// ========================================	
						
						// ===== method invocation for basic operations
						defvars.contenitore.ILASlider('basicOps');
						
						
				},

			// =========
			// BASIC OPERATIONS
			basicOps: function(  ){
				
					// -------------------------------------
					// SET UP CLASSI DI CONTROLLO ANIMAZIONI
					// -------------------------------------
					var classi = "";
					if(opt.allow_autoslide === true){
						classi += "autoslide_ON ";
					} 
					if(opt.allow_arrow_controls === true) {
						classi += "arrow_control ";
					}
					if(opt.allow_navigation === true) {
						classi += "allow_navigation ";
					}
					if(opt.thumbs === true) {
						classi += "panel_navigation ";
					}
					defvars.slider_ul
						.addClass(classi)
						.addClass('scheda_1');
					
					// ------------------------------------
					
					
					// set 'active' first li, hide others
					defvars.li_elems.eq(0)
						.addClass('active').css({'top':0, 'left': 0})
						.siblings().hide(0);
					
					//generate arrow controls
					if(opt.allow_arrow_controls === true){
						$cont.append('<div id="sliderControlWrapperOuter" style="position: absolute; top: 0; left: 0; width: 990px; height: 280px; display: block; "><div id="sliderControlWrapperInner" style="position: relative;width: 990px; height: 280px; display: block; overflow: hidden;"><a href="#prev" class="sliderControl prev" title="Previous">prev</a><a href="#next" class="sliderControl next" title="Next">next</a></div></div>');
					}
					
					//generate navigation controller
					if(config.defaults.allow_navigation === true){
						defvars.contenitore.append('<div id="navigationController"></div>');
						defvars.li_elems.each(function( idx, elem ){
								$('#navigationController').append('<div id="nav' + idx + '">' + idx + '</div>');
							});
						$('#navigationController').append('<div class="clearFloat"> </div>');
						$('#navigationController div').eq(defvars.li_elems.filter('.active').index()).addClass('active');
					}
					
					//turn ON autoslide
					if(config.defaults.allow_auto_slide === true){
						$cont.ILASlider('autoSlide_ON');
					}
					
					//generate navigation panel with thumbs
					//var thumbs=true;
					if(config.defaults.thumbs == true){
						this.after('<div id="navigationPanel"></div><div id="navigationPanelBg"></div>');
						$('#navigationPanelBg').css('opacity', 0.8).add('#navigationPanel').css('height', 0);
						defvars.li_elems.each(function( idx, elem ){
							the_imgsrc = "resizeImg.php?larghezza=248&foto=" + $(elem).find('img').attr('src');
							the_alt = $(elem).find('img').attr('alt');
							the_href = "#" + idx;
							//alert(the_imgsrc);
							$('#navigationPanel').append('<a href="'+the_href+'"><img src="'+the_imgsrc+'" alt="'+the_alt+'" /></a>');
							if( ( (idx+1) % 4) == 0 ){
								$('#navigationPanel').append('<div class="clearFloat">&nbsp;</div>')
							}
						});
						
					}
					
					//bind controls
					defvars.contenitore.ILASlider('bindControls');
					
				},

			// =========
			// AUTOSLIDE
			autoSlide: function(  ){
				$(this).ILASlider('next');

			},

			// =========
			// BIND CONTROLS
			bindControls: function(  ){
					// ========================================
					//		 AUTOSLIDE STOP AND START
					// ========================================
					if(config.defaults.allow_auto_slide === true){
						$(this).hover(function(){
								$(this).ILASlider('autoSlide_OFF' );
							},function(){
								$(this).ILASlider('autoSlide_ON');
							});
						$(this).mousemove(function(){
								$(this).ILASlider('autoSlide_OFF' );
							});
						if(config.defaults.allow_navigation === true){
							$('#navigationController').hover(function(){
								$(this).ILASlider('autoSlide_OFF' );
							},function(){
								$('#navigationController').ILASlider('autoSlide_ON');
							});
						$('#navigationController').mousemove(function(){
								$(this).ILASlider('autoSlide_OFF' );
							});
						}
					}
					// ========================================
					//			    H O V E R
					// ========================================
					if(config.defaults.allow_arrow_controls === true){
						if(config.defaults.arrow_controls_visible === false) {
							jQuery('#sliderControlWrapperOuter').find('.sliderControl').css('opacity',0);
						}
						else {
							jQuery('#sliderControlWrapperOuter').find('.sliderControl').css('opacity', 0.4);
						}
						$(this).hover(function(){
/*								    defvars.slider_ul.siblings('.sliderControl.prev').stop().animate({
										'left' : (config.defaults.controls_x)
									}, 0);
									 defvars.slider_ul.siblings('.sliderControl.next').stop().animate({
										'right' : (config.defaults.controls_x)
									}, 0);
*/
									$(this).find('.sliderControl').stop().animate({'opacity': 0.4}, 600);
								}, function(){
									if(!defvars.slider_ul.hasClass('schedaAperta')){
										jQuery('#sliderControlWrapperOuter').find('.sliderControl.prev').stop().animate({
											'left' : (config.defaults.controls_x)
										}, 0);
										 jQuery('#sliderControlWrapperOuter').find('.sliderControl.next').stop().animate({
											'right' : (config.defaults.controls_x)
										}, 0);
									}
									if(config.defaults.arrow_controls_visible === false) {
										jQuery('#sliderControlWrapperOuter').find('.sliderControl').stop().animate({'opacity': 0}, 300);
									} else {
										jQuery('#sliderControlWrapperOuter').find('.sliderControl').stop().animate({'opacity': 0.4}, 300);
									}
								})
							.find('.sliderControl').hover(function(){
									defvars.slider_ul.siblings().find('.sliderControl.prev').stop().animate({
										'left' : (config.defaults.controls_x)
									}, 0);
									 defvars.slider_ul.siblings().find('.sliderControl.next').stop().animate({
										'right' : (config.defaults.controls_x)
									}, 0);
									$(this).stop().animate({'opacity': 0.8}, 600);
									
									
									
								}, function(){

									$(this).stop().animate({'opacity': 0.4}, 300);
								});
					}
					// ========================================
					//			   NEXT & PREV
					// ========================================
					$.fn.liveArrows = function(){
						$(this).find('.sliderControl.next').live('click', function(e){
								// return false
								e.preventDefault();
/*								defvars.slider_ul.siblings('.sliderControl.next').die('click');
								defvars.slider_ul.siblings('.sliderControl.prev').die('click');
*/								
								if(!defvars.slider_ul.hasClass('disabled') || !defvars.slider_ul.find('li').is(':animated')){
									$(this).ILASlider('next');
								}
							});	
						$(this).find('.sliderControl.prev').live('click', function(e){
								// return false
								e.preventDefault();
/*								defvars.slider_ul.siblings('.sliderControl.next').die('click');
								defvars.slider_ul.siblings('.sliderControl.prev').die('click');
*/								
								if(!defvars.slider_ul.hasClass('disabled') || !defvars.slider_ul.find('li').is(':animated')){
									$(this).ILASlider('prev');
								}
							});
						return $(this);
					}
					if(config.defaults.allow_arrow_controls === true) {
						this.liveArrows();
					}
					// ========================================
					//			 NAVIGATION CONTROL
					// ========================================
					$.fn.liveNavigation = function(){
						$('#navigationController div[id^=nav]:not(".active")').live('click', function(e){
								// return false
								e.preventDefault();
								
								//unbind
								$('#navigationController div[id^=nav]:not(".active")').die('click');
	
								$(this).ILASlider('hide');
								var index = $(this).index();
								$(this).ILASlider('show_el', index);
						});
						return $(this);
					}
					this.liveNavigation();
					
					// ========================================
					//			   PANEL NAVIGATION
					// ========================================
					//$(this).ILASlider('panelNavigation');
					$.fn.panelNavigation = function(  ){
						$('.testata_badge.opener').data('titolo', $('.testata_badge.opener').html() );

						
						
						// ------CLICK 4 OPEN/CLOSE PANEL
						var auto = config.defaults.allow_auto_slide;
						$('.testata_badge.opener').not(".disabled").click( function(e){
							
							e.preventDefault();
							$('#navigationPanel a').stop().animate({'opacity':0}, 0);
							//$('#navigationPanel').append('<div id="nav' + idx + '">' + idx + '</div>');
//							$('#navigationPanel a').hover(function(){
//								$(this).stop().animate({'opacity':0.5}, 400);
//							}, function(){
//								$(this).stop().animate({'opacity':1}, 400);
//							})							

							if(!$('.testata_badge.opener').hasClass('open') && !$('.testata_badge.opener').hasClass('disabled') && !$('#navigationPanel').is(':animated') && !$('#navigationPanel').has(':animated').lenght ){
								//$(this).ILASlider('autoSlide_OFF');
								auto = false;
								$('.testata_badge.opener').addClass('disabled open').html('chiudi');
								
								$('.testata_badge.opener').stop().animate({'top': '240px'}, 700);
								$('#navigationPanel, #navigationPanelBg').stop().animate({'height':'280px'}, 600, function(){ 
									
									$('#navigationPanel a').stop().animate({'opacity':0}, 0).each(function(i, elem){
										$(elem).stop().delay((200*i)).animate({'opacity': 1}, 400)
									})
									.queue(function(){
										// -----HOVER
										//$('#navigationPanel').append('<div id="nav' + idx + '">' + idx + '</div>');
										$('#navigationPanel a').bind({
											mouseenter: function(){
												$(this).stop().animate({'opacity':0.5}, 400);
											},
											mouseleave: function(){
												$(this).stop().animate({'opacity':1}, 400);
											},
											// -----CLICK 4 SHOW SLIDE
											click: function(e){
												e.preventDefault();
												//alert($('#navigationPanel a').index($(this)));
												
												var index = $('#navigationPanel a').index($(this));
												defvars.contenitore.ILASlider('show_el', index);
																								
												$('.testata_badge.opener').addClass('disabled');
												
												auto = config.defaults.allow_auto_slide;
												$('#navigationPanel a').unbind('mouseenter mouseleave click').stop().animate({'opacity':0}, 300, function(){
													$('.testata_badge.opener').stop().animate({'top': '20px'}, 500);
													$('#navigationPanel, #navigationPanelBg').stop().animate({'height':0}, 600, function(){ $('.testata_badge.opener').removeClass('disabled open'); })
													$('.testata_badge.opener').html( $('.testata_badge.opener').data('titolo') );
												})
												return false;

											}
											
											
										})
										$('.testata_badge.opener').removeClass('disabled');
										$.dequeue();

									})
								})
							} else if( !$('.testata_badge.opener').hasClass('disabled') ){
								$('.testata_badge.opener').addClass('disabled').html( $('.testata_badge.opener').data('titolo') );
								
								auto = config.defaults.allow_auto_slide;
								$('#navigationPanel a').unbind('mouseenter mouseleave click').stop().animate({'opacity':0}, 300, function(){
									$('.testata_badge.opener').stop().animate({'top': '20px'}, 500);
									$('#navigationPanel, #navigationPanelBg').stop().animate({'height':0}, 600, function(){ $('.testata_badge.opener').removeClass('disabled open'); })
									
								})
							}
							
							
							if(auto){
								//defvars.contenitore.ILASlider('autoSlide_ON');
							} else {
								defvars.contenitore.ILASlider('autoSlide_OFF');
							}
							
							
						})
						
						
						
					
					}
					this.panelNavigation(  );
							
					// ========================================
					//			 TO NEWS & TO IMG
					// ========================================
					$.fn.bindNewsToImg = function(){
						$(this).find('a.captionLink').bind('click', function(e){
								e.preventDefault();
								
								if(defvars.slider_ul.find('li.active .captionLink').hasClass('LINK_DIRETTO')){
									var url_esterno = $(this).attr('rel');
									
									window.open(url_esterno, "_blank");
								}
								else if(defvars.slider_ul.find('li.active .captionLink').hasClass('APRI_NEWS_0')){
									//non faccio niente
								}
								else if(defvars.slider_ul.find('li.active .captionLink').hasClass('APRI_NEWS_1')){
									defvars.slider_ul.addClass('schedaAperta');
									if(config.defaults.allow_auto_slide === true){
										$(this).ILASlider('autoSlide_OFF' );
									}
									if(config.defaults.allow_arrow_controls == true){
									  defvars.slider_ul.siblings().find('.sliderControl.prev').stop().animate({
											'left' : "-100px"
										}, config.defaults.anim_time_1, 'easeOutQuad');
									  defvars.slider_ul.siblings().find('.sliderControl.next').stop().animate({
											'right' : "-100px"
										}, config.defaults.anim_time_1, 'easeOutQuad');
									}
									defvars.slider_ul.find('li.active').css('opacity', 1).stop().animate({
											'left' : (-(config.defaults.slider_width+20))
										}, config.defaults.anim_time_1, 'easeOutQuad', function(){
											
												if(config.defaults.allow_arrow_controls == true){
												  defvars.slider_ul.siblings().find('.sliderControl.prev').stop().animate({
														'left' : "-100px"
													}, 0);
												  defvars.slider_ul.siblings().find('.sliderControl.next').stop().animate({
														'right' : "-100px"
													}, 0);
												}
											
											
											});
								}
							});
	
						$(this).find('a.newsTextLink').bind('click', function(e){
								e.preventDefault();
								if(config.defaults.allow_auto_slide === true){
									$(this).ILASlider('autoSlide_OFF' );
								}
								if(config.defaults.allow_arrow_controls == true){
								  defvars.slider_ul.siblings().find('.sliderControl.prev').stop().animate({
										'left' : (config.defaults.controls_x)
									}, config.defaults.anim_time_1, 'easeOutQuad');
								 defvars.slider_ul.siblings().find('.sliderControl.next').stop().animate({
										'right' : (config.defaults.controls_x)
									}, config.defaults.anim_time_1, 'easeOutQuad');
								}
							defvars.slider_ul.find('li.active').stop().animate({
										'left' : 0
									}, config.defaults.anim_time_1, 'easeOutQuad', function(){
										$(this).ILASlider('autoSlide_ON' );
									});
								defvars.slider_ul.removeClass('schedaAperta');
							});
						return this;
					}
					this.bindNewsToImg();
					
			},

					
			// =========
			// NEXT FUNCTION
			next: function(  ){
					//next for autoslide & navigation
					if(config.defaults.allow_navigation === true){
						var index = defvars.li_elems.filter('.active').index();
						if(index < (config.defaults.num_elems - 1) && index >= 0){
							$('#navigationController div[id^=nav]').filter('.active').removeClass('active', 800).next().addClass('active', 800);
						} else {
							$('#navigationController div[id^=nav]').filter('.active').removeClass('active', 800).end().eq(0).addClass('active', 800);
						}

					}
					
					//standard behaviour
					$(this).ILASlider('hide');
					$(this).ILASlider('show', 'next');

				},

			// =========
			// PREV FUNCTION
			prev: function(  ){
					//alert('prev');
					$(this).ILASlider('hide');
					$(this).ILASlider('show', 'prev');
				},
			// =========
			// HIDE FUNCTION
			hide: function(  ){
					if(!defvars.slider_ul.find('.active').is(':animated'))   defvars.slider_ul.addClass('disabled');

					if(config.defaults.allow_auto_slide === true){
						$(this).ILASlider('autoSlide_OFF' );
					}
					if(config.defaults.allow_arrow_controls === true){
						
/*						defvars.contenitore.find('.sliderControl.next').die('click');
						defvars.contenitore.find('.sliderControl.prev').die('click');
*/					}
					//alert('hide');
					defvars.li_elems.filter('.active').fadeOut(config.defaults.anim_time_1, function(){ $(this).css('top', -1000); });
				},
				
			// =========
			// SHOW FUNCTION
			show: function( side ){
					//alert('show');
					var index = defvars.li_elems.filter('.active').index();
					
					switch (side){
						case 'next':
							if(index < (config.defaults.num_elems - 1) && index >= 0){
								defvars.li_elems.filter('.active').removeClass('active').next().addClass('active').css({'top':0, 'left': 0}).fadeIn(config.defaults.anim_time_1);
							} else {
								defvars.li_elems.filter('.active').removeClass('active');
								defvars.li_elems.eq(0).addClass('active').css({'top':0, 'left': 0}).fadeIn(config.defaults.anim_time_1);
							}
							break;
						case 'prev':
							if(index-1 >= 0){
								defvars.li_elems.filter('.active').removeClass('active').prev().addClass('active').css({'top':0, 'left': 0}).fadeIn(config.defaults.anim_time_1);
							} else {
								defvars.li_elems.filter('.active').removeClass('active');
								defvars.li_elems.eq(config.defaults.num_elems - 1).addClass('active').css({'top':0, 'left': 0}).fadeIn(config.defaults.anim_time_1);
							}
							break;
					}
					if(config.defaults.allow_auto_slide === true){
						$(this).ILASlider('autoSlide_ON');
					}

					if(config.defaults.allow_arrow_controls == true){
					  defvars.slider_ul.siblings().find('.sliderControl.prev').stop().animate({
							'left' : (config.defaults.controls_x)
						}, config.defaults.anim_time_1, 'easeOutQuad');
					  defvars.slider_ul.siblings().find('.sliderControl.next').stop().animate({
							'right' : (config.defaults.controls_x)
						}, config.defaults.anim_time_1, 'easeOutQuad', function(){ defvars.slider_ul.removeClass('disabled'); });
						
					  //$(defvars.contenitore).liveArrows();						
					}

					defvars.slider_ul.removeClass('schedaAperta');
					
				},
				
			// =========
			// SHOW FIXED ELEMENT FUNCTION
			show_el: function( elem_id ){
					//alert('show');
					defvars.contenitore.ILASlider('autoSlide_OFF');
					defvars.li_elems.filter('.active').removeClass('active');
					defvars.li_elems.eq(elem_id).addClass('active').css({'top': 0, 'left': 0}).fadeIn(config.defaults.anim_time_1, function(){
						
						if(config.defaults.allow_auto_slide === true){
							defvars.contenitore.ILASlider('autoSlide_ON');
						}
						
					});
				},
			// =========
			// ENABLE AUTOSLIDE
			autoSlide_ON: function(){
				
					//alert('on');
					if(timer == 0){
						timer = setInterval(function(){ 
								$(this).ILASlider('autoSlide' ); 
							}, (config.defaults.auto_slide_seconds + config.defaults.anim_time_1));
					}
				},
			// =========
			// DISABLE AUTOSLIDE
			autoSlide_OFF: function( ){
					//alert('off');
					if(timer != 0){
						clearInterval(timer) ;
						timer = 0;
					}
				}
				

				
		}
	  

	  	
	
	// ========================================
	//			BUILD THE PLUGIN
	// ========================================	
	$.fn.ILASlider = function( method ) { 
	   
		// Method calling logic
		if ( methods[method] ) {
		  return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		} else if ( typeof method === 'object' || ! method ) {
		  return methods.init.apply( this, arguments );
		} else {
		  $.error( 'Method ' +  method + ' does not exist on $.navILAS' );
		}
		
		
	    // ========================================
		//			 MANTAIN THE CHAIN
		// ========================================	
			
		return this;
    }
	
	
})($);	
