// JavaScript Document
	var pager = [];//Istanze del controllo pager
	
(function($){//funzione ricorsiva			
	
	var testo = [];//array con il contenuto di testo
	var flag_event = false;//per lanciare gli eventi solo la prima volta
	
	//Valori usati dal controllo
	var valori = {nr_ele : 0,//numero degli elementi (pagine)
								pos_min : 0,//posizione minima contenitore
								pos_max : 0,//posizione massima contenitore
								w_ele : 0,//larghezza elemento
								pag : 1//pagina corrente
							}//fine valori
	
	$.fn.pager = function(options){//inizializzazione del controllo
	
		//opzioni del controllo
		var config = {num_max:20,
									auto_divisione : true,
									type:'images'};
		
		//estensione del settaggio del controllo
		if (options) $.extend(config,options);
		
		var n =  pager.length;//nuovo valore		
		var name = 'pag-' + n;//crea il nome del controllo
		
		//Istanza del controllo
		pager[n] = {id : '',//id del controllo
								config : config,//opzioni del controllo
								vals : {},//valori del controllo
								$this : '',//oggetto passato con il selettore
								$ctrl : ''//oggetto controllo
							}//fine proprietà del pager
		
		pager[n].$this = this;//settaggio dell'oggetto selezionato
		
		pager[n].vals = $.extend(pager[n].vals,valori);//estendo i valori del controllo
		
		//metodi del controllo
		$.extend({
			eventi : function(){//eventi del controllo
							
				$('.right').live('click',function(){//pulsante destro
					var id = idx($(this));//richiama l'id
					
					if (pager[id].vals['pos_min'] != pager[id].vals['pos_max']){//se è alla fine non fa nulla
						pager[id].vals['pos_min'] -= pager[id].vals['w_ele'];//aggiorna la posizione
							if (pager[id].vals['pag'] % 22){
								pager[id].$ctrl.find('.ctx').animate({'margin-left':'-=' + pager[id].vals['w_ele']},'normal','swing');
							}else{
								var t = pager[id].$ctrl.find('.ctx').position().top - 352;
								pager[id].$ctrl.find('.ctx').stop(true,true).css({'margin-left':0,'top':t});
							}//fine if
						pager[id].vals['pag']++;//aumenta il valore della pagina
						$.aggiorna_info(id);//visualizza la pagina corrente
					}//fine if
				})//fine click
				
				.live('mouseenter',function(){//pulsante destro
					$(this).addClass('attivo');
						if (!$(this).hasClass('disabled')) {
							$(this).find('img').attr({'src':'plugins/img/r_at.png'})
						}//fine if
				})//fine mouse enter
				
				.live('mouseleave',function(){//pulsante destro
					$(this).removeClass('attivo');
						if (!$(this).hasClass('disabled')) {
							$(this).find('img').attr({'src':'plugins/img/r.png'})
						}//fine if
				});//fine mouse leave
				
				$('.left').live('click',function(){//pulsante sinistro
					var id = idx($(this));//richiama l'id
					
					if (pager[id].vals['pos_min'] != 0){//se è all'inizio non fa nulla
							if ((pager[id].vals['pag'] - 1) % 22){
								pager[id].$ctrl.find('.ctx').animate({'margin-left':'+=' + pager[id].vals['w_ele']},'normal','swing');
							}else{
								var t = pager[id].$ctrl.find('.ctx').position().top + 352;
								pager[id].$ctrl.find('.ctx').stop(true,true).css({'margin-left':pager[id].vals['w_ele'] * -21,'top':t});
							}//fine if

						//pager[id].$ctrl.find('.ctx').animate({'margin-left':'+=' + pager[id].vals['w_ele']},'normal','swing');
						pager[id].vals['pos_min'] += pager[id].vals['w_ele'];//aggiorna la posizione
						pager[id].vals['pag']--;//decrementa il valore della pagina
						$.aggiorna_info(id);//visualizza la pagina corrente
					}//fine if
						
				})//fine click
				
				.live('mouseenter',function(){//pulsante sinistro
					$(this).addClass('attivo');
						if (!$(this).hasClass('disabled')) {
							$(this).find('img').attr({'src':'plugins/img/l_at.png'})
						}//fine if					
				})//fine mouse enter
				
				.live('mouseleave',function(){//pulsante sinistro
					$(this).removeClass('attivo');
						if (!$(this).hasClass('disabled')) {
							$(this).find('img').attr({'src':'plugins/img/l.png'})
						}//fine if
				});//fine mouse leave
				
			},//fine eventi
			aggiorna_info : function(id){//visualizza la pagina corrente sul controllo
				//stampa la pagina corrente
				pager[id].$ctrl.find('.info').html(pager[id].vals['pag'] + ' di ' + pager[id].vals['nr_ele']);
				
				//aggiorna le icone dei pulsanti
				pager[id].$ctrl.find('.arw').removeClass('disabled')//ri-abilito i pulsanti
				if (!pager[id].$ctrl.find('.left').hasClass('attivo')) pager[id].$ctrl.find('.left img').attr({'src':'plugins/img/l.png'});
				//pager[id].$ctrl.find('.right').removeClass('disabled')//ri-abilito il pulsante right
				if (!pager[id].$ctrl.find('.right').hasClass('attivo')) pager[id].$ctrl.find('.right img').attr({'src':'plugins/img/r.png'});
				
					if (pager[id].vals['pag'] == 1){
						pager[id].$ctrl.find('.left').addClass('disabled')//disabilito il pulsante
							.find('img').attr({'src':'plugins/img/l_in.png'})
					}//fine if
					
					if  (pager[id].vals['pag'] == pager[id].vals['nr_ele']){
						pager[id].$ctrl.find('.right').addClass('disabled')//disabilito il pulsante
							.find('img').attr({'src':'plugins/img/r_in.png'})
					}//fine if
				
			},//fine aggiorna info
			set_containers : function(){//divide il testo passato in più parti
				if (pager[n].config.auto_divisione) {
					switch (pager[n].config.type){
						case 'text':
							var txt = pager[n].$this.find('.ctx').text(),//estrae il testo
									len = txt.length,//numero dei caratteri
									x = Math.ceil(len / pager[n].config.num_max),//numero dei contenitori
									start = 0, tx, val,//primo carattere della selezione, testo selezionato, posizione attuale
									$obj = '';//variabile oggetto
									
							pager[n].vals['nr_ele'] = x;//numero totale delle pagine
							pager[n].vals['pos_max'] = pager[n].vals['w_ele'] * (x - 1) * - 1;//calcola la posizione massima per l'animazione
							
								for (i = 1; i <= x; i++){//ciclo
									//tranne l'ultima volta seleziona il testo fino all'ultimo spazio presente nella frase
									//valore fino all'ultimo spazio
									val = i != x ? txt.substr(start,pager[n].config.num_max).lastIndexOf(' ') : pager[n].config.num_max;
									
									tx = txt.substr(start,val);//testo selezionato
									
									testo.push(tx);//inserisce nell'array il testo
									
									start += val + 1;//aggiorna la selezione parziale
								}//fine for
							
							pager[n].$this.empty();//svuota il contenitore dal testo
						
								for (var t in testo){//ciclo l'array
									$obj = $('<div>').appendTo(pager[n].$this);//inserisco un nuovo div
									$obj.addClass('pager-content');
									$obj = $('<div>').appendTo($obj);//inserisco un nuovo div
									$obj.addClass('text').html(testo[t]);//applico la classe content e popolo il contenuto
								}//fine for
							
							break;
						case 'images':
							var $imgs = pager[n].$this.find('.ctx img'),//le immagini contenute nel div
									len = $imgs.length,
									x = Math.ceil(len / pager[n].config.num_max),//numero dei contenitori
									i = 0,//contatore
									$div = '', start = 0;
							
							//Se sono contenute in un link (es x LightBox) l'oggetto di riferimento è il link (TAG = a)
							if ($imgs.parent().get(0).tagName.toLowerCase() == 'a') $imgs = pager[n].$this.find('a');
							
							pager[n].vals['nr_ele'] = x;//numero totale delle pagine
							pager[n].vals['pos_max'] = pager[n].vals['w_ele'] * (x - 1) * - 1;//calcola la posizione massima per l'animazione
							
							$imgs.wrap('<div/>').parent().addClass('foto');
							pager[n].$this.find('div.foto').wrap('<div/>').parent().addClass('cont_foto');
							
							for (i = 0; i <= x - 1; i++){
								$div = pager[n].$this.find('div.cont_foto').slice(start,start + pager[n].config.num_max);
								
								$div.wrapAll('<div/>').parent().addClass('pager-content images');
								start += pager[n].config.num_max;
							}//fine for
							break;
					}//fine switch
				}else{
					pager[n].vals['nr_ele'] = pager[n].$this.find('.pager-content').length;//numero totale delle pagine
					pager[n].vals['pos_max'] = pager[n].vals['w_ele'] * (pager[n].vals['nr_ele'] - 1) * - 1;//calcola la posizione massima per l'animazione
				}//fine if
				
				//$('.ctx').width(pager[n].vals['nr_ele'] * pager[n].vals['w_ele']);
			},//fine set containers
			build_ctrl : function($obj){
				
				var str_build = '',
						$ctrl = '';
				
				$obj = $obj.children().wrapAll('<div/>').parent().addClass('cont_pager').attr({'id':name});
				
				pager[n].id = name;//memorizza l'id del controllo
				pager[n].$ctrl = $obj;//settaggio del contenitore del controllo				
				
				$ctrl = $obj.children().wrapAll('<div/>').parent();
				
				$ctrl.addClass('pager-container').attr({'id':'pg-container-' + n});
				
				$ctrl.children().wrapAll('<div/>').parent().addClass('ctx').attr({'id':'pg-ctx-' + n});
				
				str_build = '<div class="arrows">' +
			    						'<div class="info"></div>' +
											'<div class="left arw"><img src="plugins/img/l.png" /></div>' +
											'<div class="right arw"><img src="plugins/img/r.png" /></div>' +
										'</div>';
											
				$(str_build).appendTo($obj);
			}//fine build control
		})//fine extend
		
		$.build_ctrl(this);//costruisce il controllo
		
		pager[n].vals['w_ele'] = this.find('div.pager-container').width();//width del contenitore (valore per animazione)
		
		$.set_containers();//divide il testo o calcola di quante pagine è composto
		$.aggiorna_info(n);//mostra la pagina corrente
		
			if (!flag_event){//richiama gli eventi del controllo solo la prima volta
				$.eventi();
				flag_event = true;
			}//fine flag event
		
	}//fine plugin
	
	function idx($obj){//restituisce l'index del controllo (per le opzioni)
		var val = $obj.parents('.cont_pager').attr('id'),//legge l'id
				index = -1;//index del controllo
		
		index = val.split('-').reverse()[0];
		
		return index;
	}//fine idx
	
})(jQuery)//fine funzione ricorsiva
