Element.extend({
	'show': function () {
		return this.setStyle('display', '')
	},
	'hide': function () {
		return this.setStyle('display', 'none')
	}
});
String.extend({
	'sameDomain': function () {
		var domain = /^(http|https):\/\/([a-z-.0-9]+)[\/]{0,1}/i.exec(window.location);
		var lnk = /^(http|https):\/\/([a-z-.0-9]+)[\/]{0,1}/i.exec(this);
		return domain[2] === lnk[2]
	}
});
var RokBox = new Class({
	version: '1.3',
	options: {
		'className': 'rokbox',
		'theme': 'default',
		'transition': Fx.Transitions.Quad.easeOut,
		'duration': 200,
		'chase': 40,
		'effect': 'quicksilver',
		'captions': true,
		'captionsDelay': 800,
		'scrolling': false,
		'keyEvents': true,
		overlay: {
			'background': '#000',
			'opacity': 0.85,
			'zIndex': 65550,
			'duration': 200,
			'transition': Fx.Transitions.Quad.easeInOut
		},
		'frame-border': 0,
		'content-padding': 0,
		'arrows-height': 50,
		defaultSize: {
			'width': 640,
			'height': 460
		},
		'autoplay': 'true',
		'controller': 'false',
		'bgcolor': '#f3f3f3',
		'youtubeAutoplay': false,
		'youtubeHighQuality': false,
		'vimeoColor': '00adef',
		'vimeoPortrait': false,
		'vimeoTitle': false,
		'vimeoFullScreen': true,
		'vimeoByline': false
	},
	initialize: function (options) {
		this.setOptions(options);
		var regexp = new RegExp("^" + this.options.className),
		cls = this.options.className,
		self = this;
		this.current = [];
		this.groups = new Hash({});
		this.changeGroup = false;
		this.swtch = false;
		this.elements = $$('a').filter(function (lnk) {
			var rel = lnk.getProperty('rel'),
			group = false,
			len = false,
			module = false;
			var test = (rel || '').test(regexp);
			if (test) {
				if (rel) group = rel.match(/\([a-z0-9A-Z]+\)/g) || false;
				if (rel) module = rel.match(/\[module\=(.+)+\]/) || false;
				if (module[1]) {
					lnk.module = module[1]
				} else {
					lnk.module = false
				};
				if (group[0]) {
					group = group[0].replace("(", "").replace(")", "");
					if (!this.groups.hasKey(group)) this.groups.set(group, []);
					var groups = this.groups.get(group);
					groups.push(lnk);
					len = groups.length;
					this.groups.set(group, groups)
				};
				lnk.group = group;
				lnk.idx = len;
				lnk.addEvent('click', this.click.bindWithEvent(lnk, [lnk.title, lnk.href, lnk.rel, this]))
			};
			return test
		}.bind(this));
		var overlayOptions = $merge(this.options.overlay, {
			'id': cls + '-overlay',
			'class': cls + '-overlay'
		});
		this.overlayObj = new Rokverlay(false, overlayOptions).addEvent('onShow', function () {
			self.open(self.current)
		}).addEvent('onHide', function () {
			if (self.changeGroup) {
				self.changeGroup = false;
				var e = self.nextGroup[0],
				selfLink = self.nextGroup[1],
				list = self.nextGroup[2],
				index = self.nextGroup[3],
				what;
				if (selfLink.getProperty('id').test('next')) what = list[index];
				else what = list[index - 2];
				self.click.delay(100, self, [false, what.title, what.href, what.rel, self, what])
			}
		});
		this.overlay = this.overlayObj.overlay.addEvent('click', function () {
			self.swtch = false;
			self.close()
		});
		this.wrapper = new Element('div', {
			'id': cls + '-wrapper',
			'class': cls + '-' + this.options.theme
		}).inject(document.body).setStyles({
			'position': 'absolute',
			'zIndex': 65555,
			'opacity': 0
		}).hide();
		var topleft = new Element('div', {
			'id': cls + '-top',
			'class': cls + '-left'
		}).inject(this.wrapper);
		var topright = new Element('div', {
			'class': cls + '-right'
		}).inject(topleft);
		var topcenter = new Element('div', {
			'class': cls + '-center'
		}).inject(topright);
		var middleleft = new Element('div', {
			'id': cls + '-middle',
			'class': cls + '-left'
		}).inject(this.wrapper);
		var middleright = new Element('div', {
			'class': cls + '-right'
		}).inject(middleleft);
		this.center = new Element('div', {
			'class': cls + '-center'
		}).inject(middleright);
		var bottomleft = new Element('div', {
			'id': cls + '-bottom',
			'class': cls + '-left'
		}).inject(this.wrapper);
		var bottomright = new Element('div', {
			'class': cls + '-right'
		}).inject(bottomleft);
		var bottomcenter = new Element('div', {
			'class': cls + '-center'
		}).inject(bottomright);
		new Element('div', {
			'class': 'clr'
		}).inject(this.wrapper);
		this.closeButton = new Element('a', {
			'id': cls + '-close',
			'href': '#'
		}).setHTML('<span>[x] close</span>').inject(this.center);
		this.closeButton.addEvent('click', function (e) {
			new Event(e).stop();
			self.swtch = false;
			self.close(e)
		});
		this.fx = {
			'wrapper': new Fx.Styles(this.wrapper, {
				'duration': this.options.duration,
				wait: true,
				'transition': this.options.transition,
				onComplete: function () {
					if (self.type == 'image') return;
					if (!this.now.opacity && self.overlayObj.open) {
						self.wrapper.hide();
						if (!self.swtch) {
							self.overlayObj.hide()
						} else {
							if (self.changeGroup) {
								self.changeGroup = false;
								var e = self.nextGroup[0],
								selfLink = self.nextGroup[1],
								list = self.nextGroup[2],
								index = self.nextGroup[3],
								what;
								if (selfLink.getProperty('id').test('next')) what = list[index];
								else what = list[index - 2];
								self.click.delay(100, self, [false, what.title, what.href, what.rel, self, what])
							}
						}
					} else {
						self.loadVideo.delay(50, self)
					}
				}
			}),
			'center': new Fx.Styles(this.center, {
				'duration': this.options.duration,
				wait: true,
				'transition': this.options.transition
			}),
			'height': new Fx.Style(this.center, 'height', {
				'duration': this.options.duration,
				wait: true,
				'transition': this.options.transition
			})
		};
		window.addEvent('resize', function () {
			self.reposition(self.wrapper);
			self.overlayObj.reposition()
		});
		if (this.options.scrolling) window.addEvent('scroll', function () {
			self.reposition(self.wrapper)
		})
	},
	click: function (e, title, href, options, self, me) {
		if (e) new Event(e).stop();
		var fs = '';
		var match = options.match(/([0-9]+\s?[0-9]+)/g) || [''];
		match = match[0].split(" ");
		var match = options.match(/([0-9%]+\s?[0-9%]+)/g) || [''];
		fs = match[0].split(" ");
		match = match[0].split(" ");
		if (options.match(/fullscreen/g)) fs = 'fullscreen';
		var tmp = self.overflow();
		if (!me) me = false;
		var group = this.group || me.group;
		var closeHeight = self.closeButton.getStyle('height').toInt() || self.closeButton.getSize().size.y || 0;
		var arrowHeight = self.options['arrows-height'] || 0;
		match[0] = (match[0]) ? match[0] : '';
		match[1] = (match[1]) ? match[1] : '';
		if ((!match[0].contains("%") && !match[1].contains("%")) && !match[0].length || !match[1].length) {
			if (href.match(/youtube\.com\/watch/i)) {
				match[0] = 640;
				match[1] = 385
			} else if (href.match(/dailymotion\./i)) {
				match[0] = 420;
				match[1] = 339
			} else if (href.match(/metacafe\.com\/watch/i)) {
				match[0] = 400;
				match[1] = 345
			} else if (href.match(/google\.com\/videoplay/i)) {
				match[0] = 400;
				match[1] = 326
			} else if (href.match(/vimeo\.com\/[0-9]{1,}/i)) {
				match[0] = 400;
				match[1] = 225
			} else if (href.match(/\.(mov|qt|mpeg|divx|avi|xvid|wmv|wma|wax|wvx|asx|asf)$/i)) {
				match[0] = 504;
				match[1] = 336
			} else if (href.match(/\.(mp3|wav)$/i)) {
				match[0] = 320;
				match[1] = 45
			}
		};
		var winSize = window.getSize().size;
		if (match[0] > ((window.opera) ? window.innerWidth: winSize.x) || fs == 'fullscreen') match[0] = ((window.opera) ? window.innerWidth: winSize.x) - self.overflow(true) - 20;
		if (match[1] > ((window.opera) ? window.innerHeight: winSize.y) || fs == 'fullscreen') match[1] = ((window.opera) ? window.innerHeight: winSize.y) - self.overflow() - closeHeight - arrowHeight - 20;
		if ($type(match[0]) != 'number' && $type(match[1]) != 'number') {
			if (match[0].contains("%") && match[1].contains("%")) {
				var ww = (window.opera) ? window.innerWidth: winSize.x;
				var wh = (window.opera) ? window.innerHeight: winSize.y;
				match[0] = match[0].replace("%", "").toInt();
				match[1] = match[1].replace("%", "").toInt();
				match[0] = match[0] > 100 ? 100 : match[0];
				match[1] = match[1] > 100 ? 100 : match[1];
				match[0] = ww * match[0] / 100;
				match[1] = wh * match[1] / 100;
				match[0] = match[0] - self.overflow(true) - 20;
				match[1] = match[1] - self.overflow() - closeHeight - arrowHeight - 20
			}
		}
		options = {
			width: (match[0] || self.options.defaultSize.width).toInt(),
			height: (match[1] || self.options.defaultSize.height).toInt()
		};
		options2 = {
			width: (match[0] || self.options.defaultSize.width).toInt() + self.overflow(true),
			height: (match[1] || self.options.defaultSize.height).toInt() + self.overflow() + closeHeight
		};
		self.current = [this, title, href, options, group, this.idx || me.idx, options2, this.module];
		if (!self.swtch) self.overlayObj.toggle();
		else self.open(self.current)
	},
	overflow: function (margin) {
		var tmp = (this.options['frame-border'] * 2) + (this.options['content-padding'] * 2);
		return tmp
	},
	open: function () {
		arguments = arguments[0];
		var b = arguments;
		var el = arguments[0],
		title = arguments[1],
		href = arguments[2],
		size = arguments[3],
		options = arguments[6],
		module = arguments[7],
		self = this;
		this.closeButton.setStyle('visibility', 'visible');
		var closeHeight = self.closeButton.getStyle('height').toInt() || self.closeButton.getSize().size.y || self.closeButton.currentStyle.height.toInt() || 0;
		var arrowHeight = self.options['arrows-height'] || 0;
		this.wrapper.setStyles({
			'width': options.width,
			'height': options.height + arrowHeight + closeHeight
		}).show();
		this.center.setStyles({
			'width': size.width,
			'height': size.height + closeHeight + arrowHeight
		});
		if (self.options.captions && !this.caption) {
			var getCaption = self.getCaption(title) || [false, false];
			var title = getCaption[0],
			description = getCaption[1];
			this.caption = new Element('div', {
				'id': this.options.className + '-caption'
			}).inject(this.center).setStyle('opacity', 0).adopt(title, description)
		};
		if (self.options.captions && this.caption) this.caption.hide().setStyle('height', 0);
		if (self.container) self.container.empty();
		var position = this.reposition(this.wrapper, options)[1];
		this.fx.wrapper.start(this.effects(this.options.effect, position).start).chain(function () {
			if (self.options.captions && self.caption) { (function () {
					var height = self.caption.getSize().size.y || 0;
					var center = self.center.getStyle('height').toInt();
					self.fx.height.start(center + height - arrowHeight).chain(function () {
						self.caption.effect('opacity').start(1);
						if (self.options.keyEvents) {
							self.evt = self.keyEvents.bindWithEvent(self);
							document.addEvent('keyup', self.evt)
						}
					})
				}).delay(self.options.captionsDelay)
			}
		});
		var h = size.height + closeHeight + arrowHeight;
		var f = this.effects(this.options.effect, position).start;
		if (f.width || f.height) this.fx.center.start({
			'width': ($type(f.width) == 'array') ? [0, size.width] : size.width,
			'height': ($type(f.height) == 'array') ? [0, h] : h
		});
		else this.center.setStyles({
			'width': size.width,
			'height': h
		})
	},
	close: function (event, animation) {
		var self = this,
		effect;
		var position = {
			'left': this.wrapper.getStyle('left').toInt(),
			'top': this.wrapper.getStyle('top').toInt()
		};
		this.closeButton.setStyle('visibility', 'hidden');
		this.container.removeClass('spinner');
		this.unloadVideo();
		effect = this.effects((animation) ? animation: this.options.effect, position).end;
		if (this.options.captions) this.caption.effect('opacity').set(0);
		if (this.options.keyEvents) document.removeEvent('keyup', self.evt);
		if (this.arrows) this.arrows.remove();
		this.arrows = false;
		var tmp = {};
		if ($chk(effect.width)) tmp.width = Math.abs(effect.width - self.overflow());
		if ($chk(effect.height)) tmp.height = Math.abs(effect.height);
		this.fx.center.start(tmp).chain(function () {
			self.fx.height.stop();
			if (self.caption) self.caption.setStyle('height', '');
			self.center.setStyles({
				'width': '',
				'height': ''
			});
			self.container.setStyles({
				'width': '',
				'height': ''
			})
		});
		this.fx.wrapper.start(effect);
		return this
	},
	keyEvents: function (e) {
		new Event(e);
		switch (e.key) {
		case 'left':
			if (this.arrows) this.prevArrow.fireEvent('click', e);
			break;
		case 'right':
			if (this.arrows) this.nextArrow.fireEvent('click', e);
			break;
		case 'esc':
			this.swtch = false;
			this.close(e, 'growl')
		}
	},
	reposition: function (wrapper, size) {
		var winSize = window.getSize();
		if (!wrapper) wrapper = $(this.wrapper);
		if (!size) {
			var tmp = wrapper.getSize().size;
			size = {
				'width': tmp.x,
				'height': tmp.y
			}
		};
		var plus = this.options['arrows-height'];
		var position = {
			'top': winSize.scroll.y + (((window.opera) ? window.innerHeight: winSize.size.y) / 2) - (size.height / 2) - wrapper.getStyle('padding-top').toInt() - (plus / 2),
			'left': winSize.scroll.x + (((window.opera) ? window.innerWidth: winSize.size.x) / 2) - (size.width / 2) - wrapper.getStyle('padding-left').toInt()
		};
		return [wrapper.setStyles(position), position]
	},
	loadVideo: function () {
		if (this.container) this.container.remove();
		if (this.caption) this.caption.hide();
		var caption = this.current[1],
		url = this.current[2],
		size = this.current[3],
		group = this.current[4],
		index = this.current[5],
		cls = this.options.className;
		var module = this.current[7];
		var closeHeight = this.closeButton.getStyle('height').toInt() || this.closeButton.getSize().size.y || 0;
		var arrowHeight = this.options['arrows-height'] || 0;
		this.type = false;
		if (module) {
			this.type = 'module';
			this.object = $(module)
		} else if (url.match(/\.(gif|jpg|jpeg|png|bmp)$/i) || this.current[0].alt == 'image') {
			this.type = 'image';
			var self = this;
			this.object = new Asset.image(url, {
				id: 'rokboxobject',
				onload: function () {
					size.width = this.width;
					size.height = this.height;
					self.container.setStyles(size);
					var img = this,
					winSize = window.getSize();
					var top = winSize.scroll.y + (winSize.size.y / 2) - (this.height / 2) - self.wrapper.getStyle('padding-top').toInt();
					if (top < 0) top = 0;
					self.fx.wrapper.start({
						'left': winSize.scroll.x + (winSize.size.x / 2) - (this.width / 2) - (self.overflow(true) / 2) - self.wrapper.getStyle('padding-left').toInt(),
						'width': this.width + self.overflow(true),
						'height': this.height + self.overflow() + arrowHeight + closeHeight
					}).chain(function () {
						self.container.removeClass('spinner');
						img.inject(self.container)
					})
				}
			})
		} else if (url.match(/\.(mov|qt|mpeg|divx|avi|xvid|mv4|m4v)$/i)) {
			this.type = 'qt';
			if (navigator.plugins && navigator.plugins.length) {
				this.object = '<object id="rokboxobject" standby="loading..." type="video/quicktime" codebase="http://www.apple.com/qtactivex/qtplugin.cab" data="' + url + '" width="' + size.width + '" height="' + size.height + '"><param name="src" value="' + url + '" /><param name="scale" value="aspect" /><param name="controller" value="' + this.options.controller + '" /><param name="autoplay" value="' + this.options.autoplay + '" /><param name="bgcolor" value="' + this.options.bgcolor + '" /><param name="enablejavascript" value="true" /></object>'
			} else {
				this.object = '<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" standby="loading..." codebase="http://www.apple.com/qtactivex/qtplugin.cab" type="video/quicktime" width="' + size.width + '" height="' + size.height + '" id="rokboxobject"><param name="src" value="' + url + '" /><param name="scale" value="aspect" /><param name="controller" value="' + this.options.controller + '" /><param name="autoplay" value="' + this.options.autoplay + '" /><param name="bgcolor" value="' + this.options.bgcolor + '" /><param name="enablejavascript" value="true" /></object>'
			}
		} else if (url.match(/\.(wmv|wma|wax|wvx|asx|asf)$/i)) {
			this.type = 'wmv';
			if (navigator.plugins && navigator.plugins.length) {
				this.object = '<object id="rokboxobject" standby="loading..." type="application/x-oleobject" data="' + url + '" width="' + size.width + '" height="' + size.height + '" /><param name="src" value="' + url + '" /><param name="autoStart" value="' + this.options.autoplay + '" /><param name="bgcolor" value="' + this.options.bgcolor + '" /></object>'
			} else {
				this.object = '<object id="rokboxobject" standby="loading..." classid="CLSID:22D6f312-B0F6-11D0-94AB-0080C74C7E95" type="application/x-oleobject" data="' + url + '" width="' + size.width + '" height="' + size.height + '" /><param name="filename" value="' + url + '" /><param name="showcontrols" value="' + this.options.controller + '"><param name="autoStart" value="' + this.options.autoplay + '" /><param name="bgcolor" value="' + this.options.bgcolor + '" /><param name="stretchToFit" value="true" /></object>'
			}
		} else if (url.match(/youtube\.com\/watch/i)) {
			this.type = 'flash';
			var videoId = url.split('=');
			this.videoID = videoId[1];
	   	        this.options.youtubeAutoplay = (this.options.youtubeAutoplay) ? 1 : 0;
			this.options.youtubeHighQuality = (this.options.youtubeHighQuality) ? '&ap=?%3D22': '';
			this.object = new SWFObject("http://www.youtube.com/v/" + this.videoID + "&rel=0&autoplay=" + this.options.youtubeAutoplay + this.options.youtubeHighQuality, "rokboxobject", size.width, size.height, "9", this.options.bgcolor, "wmode", "transparent");

                        this.object.addParam('allowscriptaccess', 'always');
			this.object.addParam('allowfullscreen', 'true')
		} else if (url.match(/dailymotion\./i)) {
			this.type = 'flash';
			var videoId = url.split("_")[0].split('/');
			this.videoId = videoId[videoId.length - 1];
			this.object = new SWFObject("http://www.dailymotion.com/swf/" + this.videoId + "&v3=1&colors=background:DDDDDD;glow:FFFFFF;foreground:333333;special:FFC300;&autoPlay=1&related=0", "rokboxobject", size.width, size.height, "9", this.options.bgcolor);
			this.object.addParam('allowscriptaccess', 'always');
			this.object.addParam('allowfullscreen', 'true')
		} else if (url.match(/metacafe\.com\/watch/i)) {
			this.type = 'flash';
			var videoId = url.split('/');
			this.videoID = videoId[4];
			this.object = new SWFObject("http://www.metacafe.com/fplayer/" + this.videoID + "/.swf", "rokboxobject", size.width, size.height, "9", this.options.bgcolor, "wmode", "transparent");
			this.object.addParam('allowscriptaccess', 'always');
			this.object.addParam('allowfullscreen', 'true')
		} else if (url.match(/google\.com\/videoplay/i)) {
			this.type = 'flash';
			var videoId = url.split('=');
			this.videoID = videoId[1];
			this.object = new SWFObject("http://video.google.com/googleplayer.swf?docId=" + this.videoID + "&autoplay=1&hl=en", "rokboxobject", size.width, size.height, "9", this.options.bgcolor, "wmode", "transparent");
			this.object.addParam('allowscriptaccess', 'always');
			this.object.addParam('allowfullscreen', 'true')
		} else if (url.match(/vimeo\.com\/[0-9]{1,}/i)) {
			this.type = 'flash';
			var videoId = url.split('/');
			this.videoID = videoId[3];
			this.options.vimeoFullScreen = (this.options.vimeoFullScreen) ? 1 : 0;
			this.options.vimeoTitle = (this.options.vimeoTitle) ? 1 : 0;
			this.options.vimeoByline = (this.options.vimeoByline) ? 1 : 0;
			this.options.vimeoPortrait = (this.options.vimeoPortrait) ? 1 : 0;
			this.options.vimeoColor = (this.options.vimeoColor.match(/[0-9]{6}/)) ? this.options.vimeoColor: '00adef';
			this.object = new SWFObject("http://www.vimeo.com/moogaloop.swf?clip_id=" + this.videoID + "&amp;server=www.vimeo.com&amp;fullscreen=" + this.options.vimeoFullScreen + "&amp;show_title=" + this.options.vimeoTitle + "&amp;show_byline=" + this.options.vimeoByline + "&amp;show_portrait=" + this.options.vimeoPortrait + "&amp;color=" + this.options.vimeoColor + "", "rokboxobject", size.width, size.height, "9", this.options.bgcolor);
			this.object.addParam('allowscriptaccess', 'always');
			this.object.addParam('allowfullscreen', 'true')
		} else if (url.match(/\.swf/i)) {
			this.type = 'flash';
			this.object = new SWFObject(url, "rokboxobject", size.width, size.height, "9", this.options.bgcolor, "wmode", "transparent");
			this.object.addParam('allowscriptaccess', 'always');
			this.object.addParam('allowfullscreen', 'true')
		} else if (url.match(/\.(mp3|m4a)$/i)) {
			this.type = 'audio';
			this.object = '<object id="rokboxobject"" width="' + size.width + '" height="' + size.height + '" data="' + url + '"" type="' + ((window.ie) ? 'application/x-mplayer2': 'audio/mpeg') + '"><param value="' + url + '" name="src"/><param value="' + url + '" name="filename"/><param value="' + ((window.ie) ? 'application/x-mplayer2': 'audio/mpeg') + '" name="type"/><param name="bgcolor" value="' + this.options.bgcolor + '" /><p>No plugin matched for playing: ' + url + '</p></object>'
		} else if (url.match(/\.wav$/i)) {
			this.type = 'audio';
			this.object = '<object id="rokboxobject"" width="' + size.width + '" height="' + size.height + '" data="' + url + '"" type="' + ((window.ie) ? 'application/x-mplayer2': 'audio/wav') + '"><param value="' + url + '" name="src"/><param value="' + url + '" name="filename"/><param value="' + ((window.ie) ? 'application/x-mplayer2': 'audio/wav') + '" name="type"/><param name="bgcolor" value="' + this.options.bgcolor + '" /><p>No plugin matched for playing: ' + url + '</p></object>'
		} else {
			this.type = 'iframe';
			var IFrameID = "rokboxobject" + $time() + $random(0, 100);
			this.object = new Element('iframe').setProperties({
				id: IFrameID,
				width: size.width,
				height: size.height,
				frameBorder: 0,
				scrolling: 'auto',
				src: url
			});
			var self = this;
			this.object.onload = function () {
				self.container.removeClass('spinner')
			}
		}
		this.movie = $('rokboxobject');
		if (this.type) {
			this.container = new Element('div', {
				'id': cls + '-container',
				'class': cls + '-container'
			}).addClass('spinner').setStyles(size).injectInside(this.center);
			if (this.type == 'flash') this.object.write(this.container);
			else if (this.type == 'module') {
				this.object.clone(true).inject(this.container.removeClass('spinner')).setStyle('display', 'block')
			} else if (this.type == 'html') {
				this.object.inject(this.container);
				new Ajax(url, {
					'method': 'get',
					'evalScripts': true,
					'update': this.object,
					onComplete: function () {
						this.container.removeClass('spinner')
					}.bind(this)
				}).request()
			} else if (this.type == 'iframe') {
				this.object.inject(this.container)
			} else if (this.type != 'image') this.container.removeClass('spinner').setHTML(this.object);
			if (group) {
				var list = this.groups.get(group),
				self = this;
				if (list.length > 1) {
					if (!this.arrows) {
						this.arrows = new Element('div', {
							'id': this.options.className + '-arrows'
						}).inject(this.center).hide();
						if (index != 1) {
							this.prevArrow = new Element('a', {
								'id': this.options.className + '-previous'
							}).inject(this.arrows).setHTML('<span>&lt; previous</span>');
							this.prevArrow.setProperties({
								'href': list[index - 2].getProperty('href'),
								'title': list[index - 2].getProperty('title')
							})
						};
						if (index != list.length) {
							this.nextArrow = new Element('a', {
								'id': this.options.className + '-next'
							}).inject(this.arrows).setHTML('<span>next &gt;</span>');
							this.nextArrow.setProperties({
								'href': list[index].getProperty('href'),
								'title': list[index].getProperty('title')
							})
						};
						if (index == 1) this.prevArrow = new Element('a', {
							'id': this.options.className + '-previous',
							'class': 'inactive',
							'href': '#'
						}).inject(this.arrows, 'top').setHTML('<span>&lt; previous</span>');
						if (index == list.length) this.nextArrow = new Element('a', {
							'id': this.options.className + '-next',
							'class': 'inactive',
							'href': '#'
						}).inject(this.arrows).setHTML('<span>next &gt;</span>');
						this.prevArrow.addEvent('click', function (e) {
							e = new Event(e).stop();
							if (!this.hasClass('inactive')) {
								self.changeGroup = true;
								self.nextGroup = [e, this, list, index];
								self.swtch = true;
								self.close(e, 'growl')
							}
						});
						this.nextArrow.addEvent('click', function (e) {
							e = new Event(e).stop();
							if (!this.hasClass('inactive')) {
								self.changeGroup = true;
								self.nextGroup = [e, this, list, index];
								self.swtch = true;
								self.close(e, 'growl')
							}
						})
					};
					this.arrows.show()
				}
			};
			if (this.options.captions) {
				var getCaption = this.getCaption(caption) || [false, false];
				var title = getCaption[0],
				description = getCaption[1];
				if (this.caption) this.caption.empty().remove();
				this.caption = new Element('div', {
					'id': this.options.className + '-caption'
				}).inject(this.center).setStyle('opacity', 0).adopt(title, description)
			}
		}
	},
	unloadVideo: function () {
		if (this.type) this.container.innerHTML = '';
		this.movie = null;
		this.type = false
	},
	getCaption: function (caption) {
		caption = caption.split(" :: ") || false;
		switch (caption.length) {
		case 0:
			return false;
			break;
		case 1:
			var title = false;
			var description = new Element('p').setText(caption[0]);
			break;
		case 2:
			var title = new Element('h2').setText(caption[0]);
			var description = new Element('p').setText(caption[1]);
			break
		}
		return [title, description]
	},
	getGroup: function (el) {
		var rel = el.getProperty('rel'),
		group = false;
		if (rel) group = rel.match(/\([a-z0-9A-Z]+\)/g) || false;
		if (group[0]) group = group[0].replace("(", "").replace(")", "");
		else group = false;
		return group
	}
});
RokBox.implement(new Options, new Chain);
var Rokverlay = new Class({
	options: {
		'id': false,
		'class': false,
		'background': '#000000',
		'opacity': 0.7,
		'zIndex': 65555,
		'duration': 200,
		'transition': Fx.Transitions.Quad.easeInOut
	},
	initialize: function (where, options) {
		this.where = $(where) || $(document.body);
		this.setOptions(options);
		this.overlay = new Element('div', {
			'id': this.options.id || ('rokverlay-' + $random(1, 1000)),
			'class': this.options.id || ('rokverlay-' + $random(1, 1000)),
			'styles': {
				'opacity': 0,
				'display': 'none',
				'position': 'absolute',
				'top': 0,
				'left': 0,
				'cursor': 'pointer',
				'background-color': this.options.background,
				'z-index': this.options.zIndex
			}
		}).inject(document.body);
		this.fx = new Fx.Style(this.overlay, 'opacity', {
			duration: this.options.duration,
			transition: this.options.transition
		});
		this.open = false;
		return this
	},
	reposition: function (sizes) {
		var where = this.where;
		sizes = sizes || window.getSize().scrollSize;
		this.overlay.setStyles({
			top: where.getPosition().y || 0,
			left: where.getPosition().x || 0,
			width: window.getSize().size.x,
			height: sizes.y
		});
		return this
	},
	show: function () {
		var overlay = this.overlay,
		self = this;
		this.overlay.setStyle('display', '');
		this.open = true;
		this.reposition().fx.start(this.options.opacity).chain(function () {
			self.fireEvent('onShow', overlay)
		});
		return this
	},
	hide: function () {
		var overlay = this.overlay,
		self = this;
		this.open = false;
		this.reposition().fx.start(0).chain(function () {
			overlay.setStyle('display', 'none');
			self.fireEvent('onHide', overlay)
		});
		return this
	},
	toggle: function () {
		this[this.open ? 'hide': 'show']();
		return this
	}
});
Rokverlay.implement(new Options, new Events);
if (typeof deconcept == "undefined") {
	var deconcept = new Object()
}
if (typeof deconcept.util == "undefined") {
	deconcept.util = new Object()
}
if (typeof deconcept.SWFObjectUtil == "undefined") {
	deconcept.SWFObjectUtil = new Object()
}
deconcept.SWFObject = function (_1, id, w, h, _5, c, _7, _8, _9, _a) {
	if (!document.getElementById) {
		return
	}
	this.DETECT_KEY = _a ? _a: "detectflash";
	this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);
	this.params = new Object();
	this.variables = new Object();
	this.attributes = new Array();
	if (_1) {
		this.setAttribute("swf", _1)
	}
	if (id) {
		this.setAttribute("id", id)
	}
	if (w) {
		this.setAttribute("width", w)
	}
	if (h) {
		this.setAttribute("height", h)
	}
	if (_5) {
		this.setAttribute("version", new deconcept.PlayerVersion(_5.toString().split(".")))
	}
	this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();
	if (!window.opera && document.all && this.installedVer.major > 7) {
		deconcept.SWFObject.doPrepUnload = true
	}
	if (c) {
		this.addParam("bgcolor", c)
	}
	var q = _7 ? _7: "high";
	this.addParam("quality", q);
	this.setAttribute("useExpressInstall", false);
	this.setAttribute("doExpressInstall", false);
	var _c = (_8) ? _8: window.location;
	this.setAttribute("xiRedirectUrl", _c);
	this.setAttribute("redirectUrl", "");
	if (_9) {
		this.setAttribute("redirectUrl", _9)
	}
};
deconcept.SWFObject.prototype = {
	useExpressInstall: function (_d) {
		this.xiSWFPath = !_d ? "expressinstall.swf": _d;
		this.setAttribute("useExpressInstall", true)
	},
	setAttribute: function (_e, _f) {
		this.attributes[_e] = _f
	},
	getAttribute: function (_10) {
		return this.attributes[_10]
	},
	addParam: function (_11, _12) {
		this.params[_11] = _12
	},
	getParams: function () {
		return this.params
	},
	addVariable: function (_13, _14) {
		this.variables[_13] = _14
	},
	getVariable: function (_15) {
		return this.variables[_15]
	},
	getVariables: function () {
		return this.variables
	},
	getVariablePairs: function () {
		var _16 = new Array();
		var key;
		var _18 = this.getVariables();
		for (key in _18) {
			_16[_16.length] = key + "=" + _18[key]
		}
		return _16
	},
	getSWFHTML: function () {
		var _19 = "";
		if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
			if (this.getAttribute("doExpressInstall")) {
				this.addVariable("MMplayerType", "PlugIn");
				this.setAttribute("swf", this.xiSWFPath)
			}
			_19 = "<embed type=\"application/x-shockwave-flash\" src=\"" + this.getAttribute("swf") + "\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\"";
			_19 += " id=\"" + this.getAttribute("id") + "\" name=\"" + this.getAttribute("id") + "\" ";
			var _1a = this.getParams();
			for (var key in _1a) {
				_19 += [key] + "=\"" + _1a[key] + "\" "
			}
			var _1c = this.getVariablePairs().join("&");
			if (_1c.length > 0) {
				_19 += "flashvars=\"" + _1c + "\""
			}
			_19 += "/>"
		} else {
			if (this.getAttribute("doExpressInstall")) {
				this.addVariable("MMplayerType", "ActiveX");
				this.setAttribute("swf", this.xiSWFPath)
			}
			_19 = "<object id=\"" + this.getAttribute("id") + "\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\">";
			_19 += "<param name=\"movie\" value=\"" + this.getAttribute("swf") + "\" />";
			var _1d = this.getParams();
			for (var key in _1d) {
				_19 += "<param name=\"" + key + "\" value=\"" + _1d[key] + "\" />"
			}
			var _1f = this.getVariablePairs().join("&");
			if (_1f.length > 0) {
				_19 += "<param name=\"flashvars\" value=\"" + _1f + "\" />"
			}
			_19 += "</object>"
		}
		return _19
	},
	write: function (_20) {
		if (this.getAttribute("useExpressInstall")) {
			var _21 = new deconcept.PlayerVersion([6, 0, 65]);
			if (this.installedVer.versionIsValid(_21) && !this.installedVer.versionIsValid(this.getAttribute("version"))) {
				this.setAttribute("doExpressInstall", true);
				this.addVariable("MMredirectURL", escape(this.getAttribute("xiRedirectUrl")));
				document.title = document.title.slice(0, 47) + " - Flash Player Installation";
				this.addVariable("MMdoctitle", document.title)
			}
		}
		if (this.skipDetect || this.getAttribute("doExpressInstall") || this.installedVer.versionIsValid(this.getAttribute("version"))) {
			var n = (typeof _20 == "string") ? document.getElementById(_20) : _20;
			n.innerHTML = this.getSWFHTML();
			return true
		} else {
			if (this.getAttribute("redirectUrl") != "") {
				document.location.replace(this.getAttribute("redirectUrl"))
			}
		}
		return false
	}
};
deconcept.SWFObjectUtil.getPlayerVersion = function () {
	var _23 = new deconcept.PlayerVersion([0, 0, 0]);
	if (navigator.plugins && navigator.mimeTypes.length) {
		var x = navigator.plugins["Shockwave Flash"];
		if (x && x.description) {
			_23 = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."))
		}
	} else {
		if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0) {
			var axo = 1;
			var _26 = 3;
			while (axo) {
				try {
					_26++;
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + _26);
					_23 = new deconcept.PlayerVersion([_26, 0, 0])
				} catch(e) {
					axo = null
				}
			}
		} else {
			try {
				var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")
			} catch(e) {
				try {
					var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					_23 = new deconcept.PlayerVersion([6, 0, 21]);
					axo.AllowScriptAccess = "always"
				} catch(e) {
					if (_23.major == 6) {
						return _23
					}
				}
				try {
					axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")
				} catch(e) {}
			}
			if (axo != null) {
				_23 = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","))
			}
		}
	}
	return _23
};
deconcept.PlayerVersion = function (_29) {
	this.major = _29[0] != null ? parseInt(_29[0], 10) : 0;
	this.minor = _29[1] != null ? parseInt(_29[1], 10) : 0;
	this.rev = _29[2] != null ? parseInt(_29[2], 10) : 0
};
deconcept.PlayerVersion.prototype.versionIsValid = function (fv) {
	if (this.major < fv.major) {
		return false
	}
	if (this.major > fv.major) {
		return true
	}
	if (this.minor < fv.minor) {
		return false
	}
	if (this.minor > fv.minor) {
		return true
	}
	if (this.rev < fv.rev) {
		return false
	}
	return true
};
deconcept.util = {
	getRequestParameter: function (_2b) {
		var q = document.location.search || document.location.hash;
		if (_2b == null) {
			return q
		}
		if (q) {
			var _2d = q.substring(1).split("&");
			for (var i = 0; i < _2d.length; i++) {
				if (_2d[i].substring(0, _2d[i].indexOf("=")) == _2b) {
					return _2d[i].substring((_2d[i].indexOf("=") + 1))
				}
			}
		}
		return ""
	}
};
deconcept.SWFObjectUtil.cleanupSWFs = function () {
	var _2f = document.getElementsByTagName("OBJECT");
	for (var i = _2f.length - 1; i >= 0; i--) {
		_2f[i].style.display = "none";
		for (var x in _2f[i]) {
			if (typeof _2f[i][x] == "function") {
				_2f[i][x] = function () {}
			}
		}
	}
};
if (deconcept.SWFObject.doPrepUnload) {
	if (!deconcept.unloadSet) {
		deconcept.SWFObjectUtil.prepUnload = function () {
			__flash_unloadHandler = function () {};
			__flash_savedUnloadHandler = function () {};
			window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs)
		};
		window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload);
		deconcept.unloadSet = true
	}
}
if (!document.getElementById && document.all) {
	document.getElementById = function (id) {
		return document.all[id]
	}
}
var getQueryParamValue = deconcept.util.getRequestParameter;
var FlashObject = deconcept.SWFObject;
var SWFObject = deconcept.SWFObject;
RokBox.implement({
	effects: function (type, position) {
		var effect = {};
		if (!position) position = 0;
		switch (type) {
		case 'growl':
			effect = {
				'start': {
					'top': [position.top - this.options.chase, position.top],
					'opacity': 1
				},
				'end': {
					'top': this.wrapper.getStyle('top').toInt() + this.options.chase,
					'opacity': 0
				}
			};
			break;
		case 'quicksilver':
			var height = this.wrapper.getStyle('height').toInt(),
			width = this.wrapper.getStyle('width').toInt();
			effect = {
				'start': {
					'top': [position.top + (height / 2), position.top],
					'height': [0, height],
					'opacity': 1
				},
				'end': {
					'top': position.top + (height / 2),
					'left': window.getSize().size.x / 2 - ((window.getSize().scrollSize.x - 10) / 2),
					'width': window.getSize().scrollSize.x - 30,
					'height': 0,
					'opacity': 0
				}
			};
			break;
		case 'explode':
			var height = this.wrapper.getStyle('height').toInt(),
			width = this.wrapper.getStyle('width').toInt();
			effect = {
				'start': {
					'height': [0, height],
					'width': [0, width],
					'opacity': 1,
					'top': [(window.getSize().size.y / 2) + window.getSize().scroll.y, position.top],
					'left': [(window.getSize().size.x / 2) + window.getSize().scroll.x, position.left]
				},
				'end': {
					'height': 0,
					'width': 0,
					'opacity': 0,
					'top': (window.getSize().size.y / 2) + window.getSize().scroll.y,
					'left': (window.getSize().size.x / 2) + window.getSize().scroll.x
				}
			};
			break;
		case 'fade':
			effect = {
				'start': {
					'opacity': 1
				},
				'end': {
					'opacity': 0
				}
			}
		}
		return effect
	}
});
