/*Author:	luistar15, <leo020588 [at] gmail.com>License:	MIT License Class	viewer (rev.06-07-08)Arguments:	items: dom collection | required	parameters - see Parameters belowParameters:	sizes: obj | item sizes (px) | default: {w:480,h:240}	mode: string OR array | 'rand','top','right','bottom','left','alpha' | default: 'rand'	modes: array | default: ['top','right','bottom','left','alpha']	fxOptions: object | Fx.Tween options | default: {duration:500}	interval: int | for periodical | default: 5000Methods:	previous(manual): walk to previous item		manual: bolean | default:false	next(manual): walk to next item		manual: bolean | default:false	play(wait): auto walk items		wait: boolean | required	stop(): stop auto walk	walk(item,manual): walk to item		item: int | required		manual: bolean | default:falseRequires:	mootools 1.2 core*/var viewer = new Class({	mode: 'rand',	modes: ['top','right','bottom','left','alpha'],	sizes: {w:480,h:240},	fxOptions: {duration:500},	interval: 5000,	initialize: function(items,options){		if(options) for(var o in options) this[o]=options[o];		//		if(this.buttons){			this.buttons.previous.addEvent('click',this.previous.bind(this,[true]));			this.buttons.next.addEvent('click',this.next.bind(this,[true]));		}		this._current = 0;		this._previous = null;		this.items = items.setStyle('display','none');		this.items[this._current].setStyle('display','block');		this.disabled = false;		this.attrs = {			left: ['left',-this.sizes.w,0,'px'],			top: ['top',-this.sizes.h,0,'px'],			right: ['left',this.sizes.w,0,'px'],			bottom: ['top',this.sizes.h,0,'px'],			alpha: ['opacity',0,1,'']		};		this.rand = this.mode=='rand';		this.sequence = typeof(this.mode)=='object' ? this.mode : false;		this.curseq = 0;		this.timer = null;	},	walk: function(n,manual){		if(this._current!==n && !this.disabled){			this.disabled = true;			if(manual){				this.stop();			}			if(this.rand){				this.mode = this.modes.getRandom();			}else if(this.sequence){				this.mode = this.sequence[this.curseq];				this.curseq += this.curseq+1<this.sequence.length ? 1 : -this.curseq;			}			this._previous = this._current; 			this._current = n;			var a = this.attrs[this.mode].associate(['p','f','t','u']);			for(var i=0;i<this.items.length;i++){				if(this._current===i){					this.items[i].setStyles($extend({'display':'block','z-index':'2'},JSON.decode('{"'+a.p+'":"'+a.f+a.u+'"}')));				}else if(this._previous===i){					this.items[i].setStyles({'z-index':'1'});				}else{					this.items[i].setStyles({'display':'none','z-index':'0'});				}			}			this.items[n].set('tween',{onComplete:this.onComplete.bind(this)}).tween(a.p,a.f,a.t);		}	},		play: function(wait){		this.stop();		if(!wait){			this.next();		}		this.timer = this.next.periodical(this.interval,this,[false]);	},	stop: function(){		$clear(this.timer);	},	next: function(manual){		this.walk(this._current+1<this.items.length ? this._current+1 : 0,manual);	},	previous: function(manual){		this.walk(this._current>0 ? this._current-1 : this.items.length-1,manual);	},	onComplete: function(){		this.disabled = false;		this.items[this._previous].setStyle('display','none');		if(this.onWalk) this.onWalk(this._current);	}});