/* exported timeout TabsMT */ /* Al costruttore è necessario passare il contenitore dei titoli (un ul con la lista dei titoli) e il contenitore dei contenuti*/ var timeout; var divContainerList; var TabsMT=new Class({ Implements: [Events, Options], titleContainer:'', contentsContainer:'', currentTab:null, timeout:null, options:{ close:false, //possibilità di chiusura delle opzioni move:false, // frecciette per muoversi da un tab all'altro clickFunc:null // funzione da chiamare al momento della selezione di un tab }, widthTitle:0, initialize:function(titleContainer,contentsContainer,options){ this.setOptions(options); this.titleContainer=document.id(titleContainer); this.titleContainer.addClass('listTitle') this.contentsContainer=document.id(contentsContainer); var title=this.titleContainer.getChildren(); var contents=this.contentsContainer.getChildren(); title.each(function(el,index){ this.addTabs(title[index],contents[index]) }.bind(this)); if (contents[0]) this.showTab(title[0],contents[0]); window.addEvent('resize',this.refresh2.bind(this)); divContainerList=new Element('div',{ 'class':'divContainerList', 'styles':{ 'width':this.titleContainer.getParent().getSize().x } }); divContainerList.replaces(this.titleContainer); divContainerList.adopt(this.titleContainer); this.titleContainer.setStyle('position','relative') }, refresh2:function(){ if (!this.timeout) this.timeout=setTimeout(this.refresh.bind(this),10); }, refresh:function(){ clearTimeout(this.timeout) this.timeout=null; var containerList=this.titleContainer.getParent().getParent(); var divContainerList=containerList.getElement('.divContainerList') if (this.options.move){ if (divContainerList){ divContainerList.setStyle('width',containerList.getSize().x-48) divContainerList.setStyle('position','relative') divContainerList.setStyle('left','22') } this.createSlider(containerList); this.slideTab(); this.destroySlider(containerList); } else if (divContainerList) divContainerList.setStyle('width',containerList.getSize().x); }, destroySlider:function(containerList){ if (this.widthTitlecontainerList.getSize().x){ this.titleContainer.setStyle('position','relative') containerList.getElement('.divContainerList').setStyle('width',containerList.getSize().x-44); if (!containerList.getElement('.moveSx')){ var divMoveSx=new Element ('div',{ 'class':'tabs tabUnselected move' }).inject(containerList,'top'); new Element ('div',{ 'class':'moveSx', 'html':' ' }).inject(divMoveSx); divMoveSx.addEvents({ 'mousedown':function(){ this.slideSx(true); }.bind(this) }) containerList.getElement('.divContainerList').setStyle('left',22); this.titleContainer.setStyle('left',0) } if (!containerList.getElement('.moveDx')){ var divMoveDx=new Element ('div',{ 'class':'tabs tabUnselected move', 'styles':{right:0,top:0} }).inject(containerList,'bottom'); new Element ('div',{ 'class':'moveDx', 'html':' ' }).inject(divMoveDx); divMoveDx.addEvents({ 'mousedown':function(){ //cerco l'indice del primo campo visibile this.slideDx(true); }.bind(this) }) } } }, slideDx:function(morph){ var list=this.titleContainer.getElements('.tabs'); for (var i=0; i0){ if (morph){ this.titleContainer.set('morph',{duration:300}) this.titleContainer.morph({'left':this.titleContainer.getPosition(this.titleContainer.getParent()).x+(list[i-1].getSize().x)}) } else this.titleContainer.setStyle('left',this.titleContainer.getPosition(this.titleContainer.getParent()).x+(list[i-1].getSize().x)) list[i-1].store('hidden',false); i=list.length; } else if (!list[i].retrieve('hidden') && i==0) i=list.length; else if (i==list.length-1){ if (morph){ this.titleContainer.set('morph',{duration:300}) this.titleContainer.morph({'left':this.titleContainer.getPosition(this.titleContainer.getParent()).x+(list[i-1].getSize().x)}) } else this.titleContainer.setStyle('left',this.titleContainer.getPosition(this.titleContainer.getParent()).x+(list[i-1].getSize().x)) list[i].store('hidden',false); } } }, slideTab:function(){ var hiddenTab=(this.currentTab.title.getPosition().x+this.currentTab.title.getSize().x)>(this.titleContainer.getParent().getPosition().x+this.titleContainer.getParent().getSize().x) while (hiddenTab){ this.slideDx(false); hiddenTab=(this.currentTab.title.getPosition().x+this.currentTab.title.getSize().x)>(this.titleContainer.getParent().getPosition().x+this.titleContainer.getParent().getSize().x) } hiddenTab=(this.currentTab.title.getPosition().x