Scroller = new Class({
	initialize: function(scroller,buttons,do_pngs) {
		var self = this;
		this.scroller = $(scroller);
		this.move_prev = $(buttons.prev);
		this.move_next = $(buttons.next);
		this.pp = $(buttons.pp);
		this.locked = false;
		this.ajax = null;
		var width = 0;
		var x, i = 0;
		if (window.ie6) {
			$('news').setStyle('position','static');
		}
		if(x = this.scroller.getFirst()) {
			do {
				if (window.ie && do_pngs) {
					var img = x.getElement('img');
					if (img.getProperty('src').match(/png$/)) {
						img.setStyle('visibility','hidden');
						img.addEvent('load',function(ev){
							var node = new Event(ev).target;
							node.setStyles({
								'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + node.getProperty('src') + "', sizingMethod='crop')",
								'width': node.width,
								'height': node.height,
								'cursor': 'pointer',
								'visibility': 'visible'
							});
							node.removeEvents('load');
							node.src = '/images/layout/1x1.png';
						});
					}
				}
				
				x.setProperty('rel',i++);
				x.setProperty('base-width',x.getStyle('width').toInt());
				width += x.getStyle('width').toInt() + x.getStyle('padding-left').toInt() + x.getStyle('padding-right').toInt();
			} while (x = x.getNext());
		}
		this.scroller.setStyles({
			'width': width + 'px',
			'height': (this.scroller.getFirst() ? this.scroller.getFirst().getStyle('height').toInt() : ''),
			'position': 'relative'
		});
		this.move_next.addEvent('click', function(ev) {
			new Event(ev).preventDefault().target.blur();
			self.moveNext();
		});
		this.move_prev.addEvent('click', function(ev) {
			new Event(ev).preventDefault().target.blur();
			self.movePrevious();
		});
		this.pp.addEvent('click', function(ev) {
			new Event(ev).preventDefault().target.blur();
			self.play();
		});
		
		var props = self.scroller.getProperty('rel');
		if (props) {
			var properties = new Hash();
			props.split(':').each(function(x){
				properties.set(x,null);
			});
			properties.each(function(val,key){
				var args = key.split('=');
				var name = args[0] || x;
				if (args[1]) {
					properties.set(name,args[1]);
					properties.remove(key);
				}
				switch (name) {
					case 'playing':
						self.play();
						break;
					case 'update':
						var x = self.scroller.getFirst();
						do {
							self.movePrevious(true,true);
						} while (('start' != x.getProperty('rel')) && (x = x.getNext()));
						break;
					default:
						break;
				}
			});
			if ( properties.get('update') ) {
				if (!$('scroller_hidden_box')) {
					var hidden_box = new Element('div').setStyles({
						display: 'none',
						height: 0,
						width: 0
					}).setProperty('id','scroller_hidden_box').injectInside($E('body'));
				}
				self.ajax = new Ajax(properties.get('update'),{
					method: 'get',
					onComplete: function(text) {
						$('news').setStyle('position','relative');
						var hidden = $('scroller_hidden_box');
						hidden.setHTML(text);
						hidden.getFirst().setProperty('id','');
						var i = 1;
						/*var temp_nodes = new Array();
						if (window.ie) {
							
							temp_nodes.push(new Element('div').setProperty('rel','ajax_updater_' + i).addClass('clearfix').setStyle('clear','both'));
							temp_nodes.getLast().innerHTML = hidden.getFirst().innerHTML;
						} else {
							while (hidden.getElement('*[rel=ajax_updater_' + i + ']')) {
								temp_nodes.push(new Element('div').setProperty('rel','ajax_updater_' + i).addClass('clearfix').setStyle('clear','both'));
								temp_nodes.getLast().innerHTML = hidden.getElement('*[rel=ajax_updater_' + i + ']').innerHTML;
								i++;
							}
						}*/
						/*$('news').setStyle('height',$('news').getSize().size.y);*/
						$('news').setStyle('overflow','hidden');
						/*var img = $('news').getElement('img').clone();
						img.setStyles({
						  position: 'absolute',
						  left: 0,
						  top: 0
						});*/
						/*if(window.ie) {*/
							
							var el = hidden.getFirst().getFirst();
							// el.adopt(img);
							el.injectInside($('news'));
							el.setStyles({
								position: 'absolute',
								left: $('news').getSize().size.x,
								top: 0,
								width: $('news').getSize().size.x
							});
							doSifr('');
							/*el.effect('left',{
								
							}).start(0);
							el.getPrevious().effect('left',{
								onComplete: function() {
									el.setStyle('posi')
									el.getPrevious().remove();
								}
							}).start(-(el.getPrevious().getSize().size.x));
							el.getParent().effect('height').start(el.getSize().size.y + 10);*/
							(function(){
							el.setStyles({
								position: '',
								left: '',
								top: '',
								width: ''
							});
							// img.effect('opacity',{
							//   onComplete: function(){ img.remove() }
							// }).start(1,0)
							while ($('news').getLast().getPrevious()) {
								$('news').getLast().getPrevious().remove();
							}
							
							$('news').setStyle('position','static')
							}).delay(500);
						/*} else {
						temp_nodes.each(function(el,idx){
								el.injectAfter($E('*[rel=ajax_updater_' + (idx+1) + ']'));
								
								el.getPrevious().effect('margin-top',{
									onComplete: function() {
										el.getPrevious().remove();
									}
								}).start(-(el.getPrevious().getSize().size.y));
								el.getParent().effect('height').start(el.getSize().size.y + 10);
							});
						}*/
						
					} 
				});
				self.ajax.old_request = self.ajax.request;
				self.ajax.request = function(url) {
					this.old_url = this.url;
					this.url = this.url + '/' + url;
					this.old_request();
					this.url = this.old_url;
				}
			}
		}
	},
	movePrevious: function(no_stop,no_transition) {
		var self = this;
		if (self.locked) { return false; }
		if (!no_stop) { self.stop(); }
		self.locked = true;
		if (self.ajax) {
			self.ajax.request(self.scroller.getFirst().getProperty('rel'));
		}
		self.scroller.getFirst().effect('margin-left',{
			duration: (no_transition ? 0 : 500),
			onComplete: function(el) {
				el.injectInside(self.scroller);
				el.setStyle('margin-left','');
				self.locked = false;
			}
		}).start(0,-(this.scroller.getFirst().getProperty('base-width')));
	},
	moveNext: function(no_stop,no_transition) {
		var self = this;
		if (self.locked) { return false; }
		if (!no_stop) { self.stop(); }
		self.locked = true;
		self.scroller.getLast().setStyle('margin-left',-(self.scroller.getFirst().getProperty('base-width')));
		self.scroller.getLast().injectTop(self.scroller);
		if (self.ajax) {
			self.ajax.request(self.scroller.getLast().getProperty('rel'));
		}
		self.scroller.getFirst().effect('margin-left',{
			duration: (no_transition ? 0 : 500),
			onComplete: function(el) {
				el.setStyle('margin-left','');
				self.locked = false;
			}
		}).start(-(self.scroller.getFirst().getProperty('base-width')),0);		
	},
	play: function() {
		if (this.playing) {
			this.stop();
		} else {
			this.scroller.getParent().getParent().addClass('playing');
			this.playing = this.moveNext.periodical(3000,this,true);
		}
	},
	stop: function() {
		$clear(this.playing);
		this.scroller.getParent().getParent().removeClass('playing');
		this.playing = false;
	}
});

var scrollers = new Array();
window.addEvent('domready', function(){
	$$(".scroller").each(function(node){
		new Element('div').addClass('scroll_buttons').
			setHTML('<a class="scroll_prev" href="#">Previous</a><a class="scroll_pp" href="#">Play/Pause</a><a class="scroll_next" href="#">Next</a>').
			injectInside(node);
		var do_pngs = node.hasClass('do_pngs');
	new Scroller(node.getElement('.scrollable'), {
			prev: node.getElement('.scroll_prev'),
			next: node.getElement('.scroll_next'),
			pp: node.getElement('.scroll_pp')
		},do_pngs);
	});
});