function NVIBasicScroll(id){var _id=id;var _ScrollTable=null;var _ScrollTR=null;var _ScrollMask=null;var _ScrollIndex=0;var _Motion=null;var _CachedStep=null;var _CalculatedPosition=0;var _delay=0;var _timeoutId=null;var _previousButton={id:null,step:null,eventName:null,disabled:false};var _nextButton={id:null,step:null,eventName:null,disabled:false};this.initialize=function(){if(!setup())void pln.events.addListener(window,'__documentReady',null,setup);};function setup(){if(pln.isNull(_ScrollMask)){try{_ScrollMask=pln.node.getById(_id);_ScrollTable=pln.node.getByName('table',_ScrollMask)[0];_ScrollTR=pln.node.getByPath('0.0',_ScrollTable);void pln.node.setProperty(_ScrollTable,'left','0px');}catch(error){return false;}}var previousButton=pln.node.getById(_previousButton.id);var nextButton=pln.node.getById(_nextButton.id);if(previousButton!=null&&nextButton!=null){void pln.events.addListener(previousButton,_previousButton.eventName==null?'click':_previousButton.eventName,null,MovePrevious);void pln.events.addListener(nextButton,_previousButton.eventName==null?'click':_previousButton.eventName,null,MoveNext);void Move(_nextButton.step,1,true);return true;}else{return false;}};function Move(Step,Direction,initial){var initial=pln.isBoolean(initial)?initial:false;var TargetIndex=0;var Distance=0;var MaxChild=pln.node.getLength(_ScrollTR);var CalculatedStep=Step * Direction;if(Direction==1){var expectedStep=MaxChild-(_ScrollIndex+CalculatedStep);if(expectedStep<CalculatedStep)CalculatedStep=expectedStep;}if(Direction==-1){if(_CachedStep!=null){CalculatedStep=Direction * _CachedStep;_CachedStep=null;}}if(_ScrollIndex+CalculatedStep<0){TargetIndex=0;}else if(_ScrollIndex+CalculatedStep>=MaxChild){TargetIndex=MaxChild-CalculatedStep;}else{TargetIndex=_ScrollIndex+CalculatedStep;}void manageNextButton(initial?!(Step<MaxChild):TargetIndex+Step>=MaxChild);try{for(var i=0;i<TargetIndex;i++)Distance+=pln.node.getProperty(pln.node.getByPosition(i,_ScrollTR),'offsetWidth');}catch(error){}var Position=Distance *-1;_CalculatedPosition=Position;if(initial){void managePreviousButton(_ScrollIndex==0||Step>=MaxChild);return;}if(_ScrollIndex!=TargetIndex){_CachedStep=expectedStep;_ScrollIndex=TargetIndex;void managePreviousButton(_ScrollIndex==0||Step>=MaxChild);}else{return;}if(_Motion!=null)_Motion.pause();_Motion=new pln.motion.composition({element:_ScrollTable,property:'left',start:null,end:Position,duration:20,equation:pln.motion.equations.quint_out,unit:'px'});_Motion.start();if(_delay>0){if(_timeoutId)clearTimeout(_timeoutId);_timeoutId=setTimeout(autoNextSlide,_delay);}};function autoNextSlide(){var count=pln.node.getLength(_ScrollTR);if(_ScrollIndex>=count-1){void Move(1,-2);}else{void Move(1,1);}};function managePreviousButton(enable){_previousButton.disabled=enable;void pln.node[enable?'addClassName':'removeClassName'](_previousButton.id,'disabled');};function manageNextButton(enable){_nextButton.disabled=enable;void pln.node[enable?'addClassName':'removeClassName'](_nextButton.id,'disabled');};function MovePrevious(){if(!_previousButton.disabled)Move(_previousButton.step,-1);};function MoveNext(){if(!_nextButton.disabled)Move(_nextButton.step,1);};this.registerPreviousButton=function(id,step,eventName){if(pln.isString(id)&&!pln.isEmpty(id))_previousButton.id=id;if(pln.isNumber(step))_previousButton.step=step;if(pln.isString(eventName)&&!pln.isEmpty(eventName))_previousButton.eventName=eventName;};this.registerNextButton=function(id,step,eventName){if(pln.isString(id)&&!pln.isEmpty(id))_nextButton.id=id;if(pln.isNumber(step))_nextButton.step=step;if(pln.isString(eventName)&&!pln.isEmpty(eventName))_nextButton.eventName=eventName;};this.setDelay=function(milliseconds){if(!pln.isNumber(milliseconds)||milliseconds<0)return;_delay=milliseconds;_timeoutId=setTimeout(autoNextSlide,_delay);};};
