var VVVIShow = new Class({

	Implements: [Events, Options, Chain],

	options: {
		link: null,
		type: 'image',
		container: null,
		className: null,
		centered: false,
		dragging: true,
		closeOnClick: true,
		shadow: (Browser.Engine.trident) ? 'onOpenEnd' : 'onOpen', // performance
		resize: true,
		margin: 20,
		resizeFactor: 0.95,
		resizeLimit: false, // {x: 640, y: 640}
		fixedSize: false,
		cutOut: true,
		addClick: true,
		opacityLoad: 0.6,
		opacityResize: 1,
		opacityTitle: 0.9,
		resizeOptions: {},
		fxOptions: {},
		closer: true,
		parse: false, // 'rel'
		parseSecure: false,
		temporary: false,
		onBuild: $empty,
		onLoad: $empty,
		onOpen: $empty,
		onOpenEnd: $empty,
		onClose: $empty,
		onCloseEnd: $empty,
		generateTitle: function(el) {
			var text = el.get('title');
			if (!text) return false;
			var title = text.split(' :: ');
			var head = new Element('h6', {'html': title[0]});
			return (title[1]) ? [head, new Element('p', {'html': title[1]})] : head;
		}
	},

	initialize: function(element, options) {
		this.element = $(element);
		this.setOptions(options);
		if (this.options.parse) {
			var obj = this.element.getProperty(this.options.parse);
			if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj);
		}
		var origin = this.options.origin;
		this.origin = ((origin) ? $(origin) || this.element.getElement(origin) : null) || this.element;
		this.link = (this.origin.get('href')) ? this.origin.get('href') : this.options.link || this.element.get('href') || this.element.get('src');
		this.container = $(this.options.container) || this.element.getDocument();
		this.bound = {
			'click': function(e) {
				this.open.delay(1, this);
				return false;
			}.bind(this),
			'close': this.close.bind(this),
			'dragClose': function(e) {
				if (e.rightClick) return;
				this.close();
			}.bind(this)
		};
		if (this.options.addClick) this.bindToElement();
	},

	destroy: function() {
		if (this.box) this.box.destroy();
		this.box = this.tweens = this.body = this.content = null;
	},

	bindToElement: function(element) {
		($(element) || this.element).addClass('remooz-element').addEvent('click', this.bound.click);
		return this;
	},

	getOriginCoordinates: function() {
		var coords = this.origin.getCoordinates();
		delete coords.right;
		delete coords.bottom;
		return coords;
	},

	open: function(e) {
		if (this.opened) return (e) ? this.close() : this;
		this.opened = this.loading = true;
		if (!this.box) this.build();
		this.coords = this.getOriginCoordinates();
		this.coords.opacity = this.options.opacityLoad;
		this.coords.display = '';
		this.tweens.box.set(this.coords);
		this.box.addClass('remooz-loading');
		VVVIShow.open(this.fireEvent('onLoad'));
		this['open' + this.options.type.capitalize()]();
		return this;
	},

	finishOpen: function() {
		this.tweens.fade.start(0, 1);
		this.drag.attach();
		this.fireEvent('onOpenEnd').callChain();
	},

	close: function() {
		if (!this.opened) return this;
		this.opened = false;
		VVVIShow.close(this.fireEvent('onClose'));
		if (this.loading) {
			this.box.setStyle('display', 'none');
			return this;
		}
		this.drag.detach();
		this.tweens.fade.cancel().set(0).fireEvent('onComplete');
		if (this.tweens.box.timer) this.tweens.box.clearChain();
		var vars = this.getOriginCoordinates();
		if (this.options.opacityResize != 1) vars.opacity = this.options.opacityResize;
		this.tweens.box.start(vars).chain(this.closeEnd.bind(this));
		return this;
	},

	closeEnd: function() {
		if (this.options.cutOut) this.element.setStyle('visibility', 'visible');
		this.box.setStyle('display', 'none');
		this.fireEvent('onCloseEnd').callChain();
		if (this.options.temporary) this.destroy();
	},

	openImage: function() {
		var tmp = new Image();
		tmp.onload = tmp.onabort = tmp.onerror = function(fast) {
			this.loading = tmp.onload = tmp.onabort = tmp.onerror = null;
			if (!tmp.width || !this.opened) {
				this.fireEvent('onError').close();
				return;
			}
			var to = {x: tmp.width, y: tmp.height};
			if (!this.content) this.content = $(tmp).inject(this.body);
			else tmp = null;
			this[(this.options.resize) ? 'zoomRelativeTo' : 'zoomTo'].create({
				'delay': (tmp && fast !== true) ? 1 : null,
				'arguments': [to],
				'bind': this
			})();
		}.bind(this);
		tmp.src = this.link;
		if (tmp && tmp.complete && tmp.onload) tmp.onload(true);
	},

	/**
	 * @todo Test implementation
	 */
	openElement: function() {
		this.content = this.content || $(this.link) || $E(this.link);
		if (!this.content) {
			this.fireEvent('onError').close();
			return;
		}
		this.content.inject(this.body);
		this.zoomTo({x: this.content.scrollWidth, y: this.content.scrollHeight});
	},

	zoomRelativeTo: function(to) {
		var scale = this.options.resizeLimit;
		if (!scale) {
			scale = this.container.getSize();
			scale.x *= this.options.resizeFactor;
			scale.y *= this.options.resizeFactor;
		}
		for (var i = 2; i--;) {
			if (to.x > scale.x) {
				to.y *= scale.x / to.x;
				to.x = scale.x;
			} else if (to.y > scale.y) {
				to.x *= scale.y / to.y;
				to.y = scale.y;
			}
		}
		return this.zoomTo({x: to.x.toInt(), y: to.y.toInt()});
	},

	zoomTo: function(to) {
		to = this.options.fixedSize || to;
		var box = this.container.getSize(), scroll = this.container.getScroll();
		var pos = (!this.options.centered) ? {
			x: (this.coords.left + (this.coords.width / 2) - to.x / 2).toInt()
				.limit(scroll.x + this.options.margin, scroll.x + box.x - this.options.margin - to.x),
			y: (this.coords.top + (this.coords.height / 2) - to.y / 2).toInt()
				.limit(scroll.y + this.options.margin, scroll.y + box.y - this.options.margin - to.y)
		} :  {
			x: scroll.x + ((box.x - to.x) / 2).toInt(),
			y: scroll.y + ((box.y - to.y) / 2).toInt()
		};
		if (this.options.cutOut) this.element.setStyle('visibility', 'hidden');
		this.box.removeClass('remooz-loading');
		var vars = {left: pos.x, top: pos.y, width: to.x, height: to.y};
		if (this.options.opacityResize != 1) vars.opacity = [this.options.opacityResize, 1];
		else this.box.set('opacity', 1);
		this.tweens.box.start(vars).chain(this.finishOpen.bind(this));
		this.fireEvent('onOpen');
	},

	build: function() {
		this.addEvent('onBlur', function() {
			this.focused = false;
			this.box.removeClass('remooz-box-focus').setStyle('z-index', VVVIShow.options.zIndex);
		}, true);
		this.addEvent('onFocus', function() {
			this.focused = true;
			this.box.addClass('remooz-box-focus').setStyle('z-index', VVVIShow.options.zIndexFocus);
		}, true);

		var classes = ['remooz-box', 'remooz-type-' + this.options.type, 'remooz-engine-' + Browser.Engine.name + Browser.Engine.version];
		if (this.options.className) classes.push(this.options.className);
		this.box = new Element('div', {
			'class': classes.join(' '),
			'styles': {
				'display': 'none',
				'top': 0,
				'left': 0,
				'zIndex': VVVIShow.options.zIndex
			}
		});

		this.tweens = {
			'box': new Fx.Morph(this.box, $merge({
					'duration': 400,
					'unit': 'px',
					'transition': Fx.Transitions.Quart.easeOut,
					'chain': 'cancel'
				}, this.options.resizeOptions)
			),
			'fade': new Fx.Tween(null, $merge({
					'property': 'opacity',
					'duration': (Browser.Engine.trident) ? 0 : 300,
					'chain': 'cancel'
				}, this.options.fxOptions)).addEvents({
					'onComplete': function() {
						if (!this.element.get('opacity')) this.element.setStyle('display', 'none');
					},
					'onStart': function() {
						if (!this.element.get('opacity')) this.element.setStyle('display', '');
					}
				}
			)
		};
		this.tweens.fade.element = $$();

		if (this.options.shadow) {
			if (Browser.Engine.webkit420) {
				this.box.setStyle('-webkit-box-shadow', '0 0 10px rgba(0, 0, 0, 0.7)');
			} else if (!Browser.Engine.trident4) {
				var shadow = new Element('div', {'class': 'remooz-bg-wrap'}).inject(this.box);
				['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].each(function(dir) {
					new Element('div', {'class': 'remooz-bg remooz-bg-' + dir}).inject(shadow);
				});
				this.tweens.bg = new Fx.Tween(shadow, {
					'property': 'opacity',
					'chain': 'cancel'
				}).set(0);
				this.addEvent(this.options.shadow, this.tweens.bg.set.bind(this.tweens.bg, 1), true);
				this.addEvent('onClose', this.tweens.bg.set.bind(this.tweens.bg, 0), true);
			}
		}

		if (this.options.closer) {
			var closer = new Element('a', {
				'class': 'remooz-btn-close',
				'events': {'click': this.bound.close}
			}).inject(this.box);
			this.tweens.fade.element.push(closer);
		}
		this.body = new Element('div', {'class': 'remooz-body'}).inject(this.box);

		var title = this.options.title || this.options.generateTitle.call(this, this.element);
		if (title) { // thx ie6
			var title = new Element('div', {'class': 'remooz-title'}).adopt(
				new Element('div', {'class': 'remooz-title-bg', 'opacity': this.options.opacityTitle}),
				new Element('div', {'class': 'remooz-title-content'}).adopt(title)
			).inject(this.box);
			this.tweens.fade.element.push(title);
		}
		this.tweens.fade.set(0).fireEvent('onComplete');

		this.drag = new Drag.Move(this.box, {
			'snap': 15,
			'preventDefault': true,
			'onBeforeStart': function() {
				if (!this.focused && !this.loading) VVVIShow.focus(this);
				else if (this.loading || this.options.closeOnClick) this.box.addEvent('mouseup', this.bound.dragClose);
			}.bind(this),
			'onSnap': function() {
				this.box.removeEvent('mouseup', this.bound.dragClose);
				if (!this.options.dragging) this.drag.stop();
				else this.box.addClass('remooz-box-dragging');
			}.bind(this),
			'onComplete': function() {
				this.box.removeClass('remooz-box-dragging');
			}.bind(this)
		});
		this.drag.detach();

		this.fireEvent('onBuild', this.box, this.element);
		this.box.inject(this.element.getDocument().body);
	}

});

VVVIShow.factory = function(extended) {
	return $extend(this, extended);
};

VVVIShow.factory(new Options).factory({

	options: {
		zIndex: 41,
		zIndexFocus: 42,
		query: 'a.remooz',
		modal: false
	},

	assign: function(elements, options) {
		return $$(elements).map(function(element) {
			return new VVVIShow(element, options);
		}, this);
	},

	stack: [],

	open: function(obj) {
		var last = this.stack.getLast();
		this.focus(obj);
		if (last && this.options.modal) last.close();
	},

	close: function(obj) {
		var length = this.stack.length - 1;
		if (length > 1 && this.stack[length] == obj) this.focus(this.stack[length - 1]);
		this.stack.erase(obj);
	},

	focus: function(obj) {
		var last = this.stack.getLast();
		obj.fireEvent('onFocus', [obj]);
		if (last == obj) return;
		if (last) last.fireEvent('onBlur', [last]);
		this.stack.erase(obj).push(obj);
	}

});

var VVVBShow = {

	presets: {
		onOpen: $empty,
		onClose: $empty,
		onUpdate: $empty,
		onResize: $empty,
		onMove: $empty,
		onShow: $empty,
		onHide: $empty,
		size: {x: 600, y: 450},
		sizeLoading: {x: 200, y: 150},
		marginInner: {x: 20, y: 20},
		marginImage: {x: 50, y: 75},
		handler: false,
		target: null,
		closable: true,
		closeBtn: true,
		zIndex: 65555,
		overlayOpacity: 0.7,
		classWindow: '',
		classOverlay: '',
		overlayFx: {},
		resizeFx: {},
		contentFx: {},
		parse: false, // 'rel'
		parseSecure: false,
		shadow: true,
		document: null,
		ajaxOptions: {}
	},

	initialize: function(presets) {
		if (this.options) return this;

		this.presets = $merge(this.presets, presets);
		this.doc = this.presets.document || document;
		this.options = {};
		this.setOptions(this.presets).build();
		this.bound = {
			window: this.reposition.bind(this, [null]),
			scroll: this.checkTarget.bind(this),
			close: this.close.bind(this),
			key: this.onKey.bind(this)
		};
		this.isOpen = this.isLoading = false;
		return this;
	},

	build: function() {
		this.overlay = new Element('div', {
			id: 'sbox-overlay',
			styles: {display: 'none', zIndex: this.options.zIndex}
		});
		this.win = new Element('div', {
			id: 'sbox-window',
			styles: {display: 'none', zIndex: this.options.zIndex + 2}
		});
		if (this.options.shadow) {
			if (Browser.Engine.webkit420) {
				this.win.setStyle('-webkit-box-shadow', '0 0 10px rgba(0, 0, 0, 0.7)');
			} else if (!Browser.Engine.trident4) {
				var shadow = new Element('div', {'class': 'sbox-bg-wrap'}).inject(this.win);
				var relay = function(e) {
					this.overlay.fireEvent('click', [e]);
				}.bind(this);
				['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].each(function(dir) {
					new Element('div', {'class': 'sbox-bg sbox-bg-' + dir}).inject(shadow).addEvent('click', relay);
				});
			}
		}
		this.content = new Element('div', {id: 'sbox-content'}).inject(this.win);
		this.closeBtn = new Element('a', {id: 'sbox-btn-close', href: '#'}).inject(this.win);
		this.fx = {
			overlay: new Fx.Tween(this.overlay, $merge({
				property: 'opacity',
				onStart: Events.prototype.clearChain,
				duration: 250,
				link: 'cancel'
			}, this.options.overlayFx)).set(0),
			win: new Fx.Morph(this.win, $merge({
				onStart: Events.prototype.clearChain,
				unit: 'px',
				duration: 750,
				transition: Fx.Transitions.Quint.easeOut,
				link: 'cancel',
				unit: 'px'
			}, this.options.resizeFx)),
			content: new Fx.Tween(this.content, $merge({
				property: 'opacity',
				duration: 250,
				link: 'cancel'
			}, this.options.contentFx)).set(0)
		};
		$(this.doc.body).adopt(this.overlay, this.win);
	},

	assign: function(to, options) {
		return ($(to) || $$(to)).addEvent('click', function() {
			return !VVVBShow.fromElement(this, options);
		});
	},
	
	open: function(subject, options) {
		this.initialize();

		if (this.element != null) this.trash();
		this.element = $(subject) || false;
		
		this.setOptions($merge(this.presets, options || {}));
		
		if (this.element && this.options.parse) {
			var obj = this.element.getProperty(this.options.parse);
			if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj);
		}
		this.url = ((this.element) ? (this.element.get('href')) : subject) || this.options.url || '';

		this.assignOptions();
		
		var handler = handler || this.options.handler;
		if (handler) return this.setContent(handler, this.parsers[handler].call(this, true));
		var ret = false;
		return this.parsers.some(function(parser, key) {
			var content = parser.call(this);
			if (content) {
				ret = this.setContent(key, content);
				return true;
			}
			return false;
		}, this);
	},
	
	fromElement: function(from, options) {
		return this.open(from, options);
	},

	assignOptions: function() {
		this.overlay.set('class', this.options.classOverlay);
		this.win.set('class', this.options.classWindow);
		if (Browser.Engine.trident4) this.win.addClass('sbox-window-ie6');
	},

	close: function(e) {
		var stoppable = ($type(e) == 'event');
		if (stoppable) e.stop();
		if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this;
		this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));
		this.win.setStyle('display', 'none');
		this.fireEvent('onClose', [this.content]);
		this.trash();
		this.toggleListeners();
		this.isOpen = false;
		return this;
	},

	trash: function() {
		this.element = this.asset = null;
		this.content.empty();
		this.options = {};
		this.removeEvents().setOptions(this.presets).callChain();
	},

	onError: function() {
		this.asset = null;
		this.setContent('string', this.options.errorMsg || 'An error occurred');
	},

	setContent: function(handler, content) {
		if (!this.handlers[handler]) return false;
		this.content.className = 'sbox-content-' + handler;
		this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, this.handlers[handler].call(this, content));
		if (this.overlay.retrieve('opacity')) return this;
		this.toggleOverlay(true);
		this.fx.overlay.start(this.options.overlayOpacity);
		return this.reposition();
	},

	applyContent: function(content, size) {
		if (!this.isOpen && !this.applyTimer) return;
		this.applyTimer = $clear(this.applyTimer);
		this.hideContent();
		if (!content) {
			this.toggleLoading(true);
		} else {
			if (this.isLoading) this.toggleLoading(false);
			this.fireEvent('onUpdate', [this.content], 20);
		}
		if (content) {
			if (['string', 'array'].contains($type(content))) this.content.set('html', content);
			else if (!this.content.hasChild(content)) this.content.adopt(content);
		}
		this.callChain();
		if (!this.isOpen) {
			this.toggleListeners(true);
			this.resize(size, true);
			this.isOpen = true;
			this.fireEvent('onOpen', [this.content]);
		} else {
			this.resize(size);
		}
	},

	resize: function(size, instantly) {
		this.showTimer = $clear(this.showTimer || null);
		var box = this.doc.getSize(), scroll = this.doc.getScroll();
		this.size = $merge((this.isLoading) ? this.options.sizeLoading : this.options.size, size);
		var to = {
			width: this.size.x,
			height: this.size.y,
			left: (scroll.x + (box.x - this.size.x - this.options.marginInner.x) / 2).toInt(),
			top: (scroll.y + (box.y - this.size.y - this.options.marginInner.y) / 2).toInt()
		};
		this.hideContent();
		if (!instantly) {
			this.fx.win.start(to).chain(this.showContent.bind(this));
		} else {
			this.win.setStyles(to).setStyle('display', '');
			this.showTimer = this.showContent.delay(50, this);
		}
		return this.reposition();
	},

	toggleListeners: function(state) {
		var fn = (state) ? 'addEvent' : 'removeEvent';
		this.closeBtn[fn]('click', this.bound.close);
		this.overlay[fn]('click', this.bound.close);
		this.doc[fn]('keydown', this.bound.key)[fn]('mousewheel', this.bound.scroll);
		this.doc.getWindow()[fn]('resize', this.bound.window)[fn]('scroll', this.bound.window);
	},

	toggleLoading: function(state) {
		this.isLoading = state;
		this.win[(state) ? 'addClass' : 'removeClass']('sbox-loading');
		if (state) this.fireEvent('onLoading', [this.win]);
	},

	toggleOverlay: function(state) {
		var full = this.doc.getSize().x;
		this.overlay.setStyle('display', (state) ? '' : 'none');
		this.doc.body[(state) ? 'addClass' : 'removeClass']('body-overlayed');
		if (state) {
			this.scrollOffset = this.doc.getWindow().getSize().x - full;
			this.doc.body.setStyle('margin-right', this.scrollOffset);
		} else {
			this.doc.body.setStyle('margin-right', '');
		}
	},

	showContent: function() {
		if (this.content.get('opacity')) this.fireEvent('onShow', [this.win]);
		this.fx.content.start(1);
	},

	hideContent: function() {
		if (!this.content.get('opacity')) this.fireEvent('onHide', [this.win]);
		this.fx.content.cancel().set(0);
	},

	onKey: function(e) {
		switch (e.key) {
			case 'esc': this.close(e);
			case 'up': case 'down': return false;
		}
	},

	checkTarget: function(e) {
		return this.content.hasChild(e.target);
	},

	reposition: function() {
		var size = this.doc.getSize(), scroll = this.doc.getScroll(), ssize = this.doc.getScrollSize();
		this.overlay.setStyles({
			width: ssize.x + 'px',
			height: ssize.y + 'px'
		});
		this.win.setStyles({
			left: (scroll.x + (size.x - this.win.offsetWidth) / 2 - this.scrollOffset).toInt() + 'px',
			top: (scroll.y + (size.y - this.win.offsetHeight) / 2).toInt() + 'px'
		});
		return this.fireEvent('onMove', [this.overlay, this.win]);
	},

	removeEvents: function(type){
		if (!this.$events) return this;
		if (!type) this.$events = null;
		else if (this.$events[type]) this.$events[type] = null;
		return this;
	},

	extend: function(properties) {
		return $extend(this, properties);
	},

	handlers: new Hash(),

	parsers: new Hash()

};

VVVBShow.extend(new Events($empty)).extend(new Options($empty)).extend(new Chain($empty));

VVVBShow.parsers.extend({

	image: function(preset) {
		return (preset || (/\.(?:jpg|png|gif)$/i).test(this.url)) ? this.url : false;
	},

	clone: function(preset) {
		if ($(this.options.target)) return $(this.options.target);
		if (this.element && !this.element.parentNode) return this.element;
		var bits = this.url.match(/#([\w-]+)$/);
		return (bits) ? $(bits[1]) : (preset ? this.element : false);
	},

	ajax: function(preset) {
		return (preset || (this.url && !(/^(?:javascript|#)/i).test(this.url))) ? this.url : false;
	},

	iframe: function(preset) {
		return (preset || this.url) ? this.url : false;
	},

	string: function(preset) {
		return true;
	}
});

VVVBShow.handlers.extend({

	image: function(url) {
		var size, tmp = new Image();
		this.asset = null;
		tmp.onload = tmp.onabort = tmp.onerror = (function() {
			tmp.onload = tmp.onabort = tmp.onerror = null;
			if (!tmp.width) {
				this.onError.delay(10, this);
				return;
			}
			var box = this.doc.getSize();
			box.x -= this.options.marginImage.x;
			box.y -= this.options.marginImage.y;
			size = {x: tmp.width, y: tmp.height};
			for (var i = 2; i--;) {
				if (size.x > box.x) {
					size.y *= box.x / size.x;
					size.x = box.x;
				} else if (size.y > box.y) {
					size.x *= box.y / size.y;
					size.y = box.y;
				}
			}
			size.x = size.x.toInt();
			size.y = size.y.toInt();
			this.asset = $(tmp);
			tmp = null;
			this.asset.width = size.x;
			this.asset.height = size.y;
			this.applyContent(this.asset, size);
		}).bind(this);
		tmp.src = url;
		if (tmp && tmp.onload && tmp.complete) tmp.onload();
		return (this.asset) ? [this.asset, size] : null;
	},

	clone: function(el) {
		if (el) return el.clone();
		return this.onError();
	},

	adopt: function(el) {
		if (el) return el;
		return this.onError();
	},

	ajax: function(url) {
		var options = this.options.ajaxOptions || {};
		this.asset = new Request.HTML($merge({
			method: 'get',
			evalScripts: false
		}, this.options.ajaxOptions)).addEvents({
			onSuccess: function(resp) {
				this.applyContent(resp);
				if (options.evalScripts !== null && !options.evalScripts) $exec(this.asset.response.javascript);
				this.fireEvent('onAjax', [resp, this.asset]);
				this.asset = null;
			}.bind(this),
			onFailure: this.onError.bind(this)
		});
		this.asset.send.delay(10, this.asset, [{url: url}]);
	},

	iframe: function(url) {
		this.asset = new Element('iframe', $merge({
			src: url,
			frameBorder: 0,
			width: this.options.size.x,
			height: this.options.size.y
		}, this.options.iframeOptions));
		if (this.options.iframePreload) {
			this.asset.addEvent('load', function() {
				this.applyContent(this.asset.setStyle('display', ''));
			}.bind(this));
			this.asset.setStyle('display', 'none').inject(this.content);
			return false;
		}
		return this.asset;
	},

	string: function(str) {
		return str;
	}

});

VVVBShow.handlers.url = VVVBShow.handlers.ajax;
VVVBShow.parsers.url = VVVBShow.parsers.ajax;
VVVBShow.parsers.adopt = VVVBShow.parsers.clone;
var Autocompleter=new Class({Implements:[Options,Events],options:{minLength:1,markQuery:true,width:"inherit",maxChoices:10,injectChoice:null,customChoices:null,emptyChoices:null,visibleChoices:true,className:"autocompleter-choices",zIndex:42,delay:400,observerOptions:{},fxOptions:{},autoSubmit:false,overflow:false,overflowMargin:25,selectFirst:false,filter:null,filterCase:false,filterSubset:false,forceSelect:false,selectMode:true,choicesMatch:null,multiple:false,separator:", ",separatorSplit:/\s*[,;]\s*/,autoTrim:false,allowDupes:false,cache:true,relative:false},initialize:function(b,a){this.element=$(b);this.setOptions(a);this.build();this.observer=new Observer(this.element,this.prefetch.bind(this),$merge({delay:this.options.delay},this.options.observerOptions));this.queryValue=null;if(this.options.filter){this.filter=this.options.filter.bind(this)}var c=this.options.selectMode;this.typeAhead=(c=="type-ahead");this.selectMode=(c===true)?"selection":c;this.cached=[]},build:function(){if($(this.options.customChoices)){this.choices=this.options.customChoices}else{this.choices=new Element("ul",{"class":this.options.className,styles:{zIndex:this.options.zIndex}}).inject(document.body);this.relative=false;if(this.options.relative){this.choices.inject(this.element,"after");this.relative=this.element.getOffsetParent()}this.fix=new OverlayFix(this.choices)}if(!this.options.separator.test(this.options.separatorSplit)){this.options.separatorSplit=this.options.separator}this.fx=(!this.options.fxOptions)?null:new Fx.Tween(this.choices,$merge({property:"opacity",link:"cancel",duration:200},this.options.fxOptions)).addEvent("onStart",Chain.prototype.clearChain).set(0);this.element.setProperty("autocomplete","off").addEvent((Browser.Engine.trident||Browser.Engine.webkit)?"keydown":"keypress",this.onCommand.bind(this)).addEvent("click",this.onCommand.bind(this,[false])).addEvent("focus",this.toggleFocus.create({bind:this,arguments:true,delay:100})).addEvent("blur",this.toggleFocus.create({bind:this,arguments:false,delay:100}))},destroy:function(){if(this.fix){this.fix.destroy()}this.choices=this.selected=this.choices.destroy()},toggleFocus:function(a){this.focussed=a;if(!a){this.hideChoices(true)}this.fireEvent((a)?"onFocus":"onBlur",[this.element])},onCommand:function(b){if(!b&&this.focussed){return this.prefetch()}if(b&&b.key&&!b.shift){switch(b.key){case"enter":if(this.element.value!=this.opted){return true}if(this.selected&&this.visible){this.choiceSelect(this.selected);return !!(this.options.autoSubmit)}break;case"up":case"down":if(!this.prefetch()&&this.queryValue!==null){var a=(b.key=="up");this.choiceOver((this.selected||this.choices)[(this.selected)?((a)?"getPrevious":"getNext"):((a)?"getLast":"getFirst")](this.options.choicesMatch),true)}return false;case"esc":case"tab":this.hideChoices(true);break}}return true},setSelection:function(f){var g=this.selected.inputValue,h=g;var a=this.queryValue.length,c=g.length;if(g.substr(0,a).toLowerCase()!=this.queryValue.toLowerCase()){a=0}if(this.options.multiple){var e=this.options.separatorSplit;h=this.element.value;a+=this.queryIndex;c+=this.queryIndex;var b=h.substr(this.queryIndex).split(e,1)[0];h=h.substr(0,this.queryIndex)+g+h.substr(this.queryIndex+b.length);if(f){var d=h.split(this.options.separatorSplit).filter(function(j){return this.test(j)},/[^\s,]+/);if(!this.options.allowDupes){d=[].combine(d)}var i=this.options.separator;h=d.join(i)+i;c=h.length}}this.observer.setValue(h);this.opted=h;if(f||this.selectMode=="pick"){a=c}this.element.selectRange(a,c);this.fireEvent("onSelection",[this.element,this.selected,h,g])},showChoices:function(){var c=this.options.choicesMatch,b=this.choices.getFirst(c);this.selected=this.selectedValue=null;if(this.fix){var e=this.element.getCoordinates(this.relative),a=this.options.width||"auto";this.choices.setStyles({left:e.left,top:e.bottom,width:(a===true||a=="inherit")?e.width:a})}if(!b){return}if(!this.visible){this.visible=true;this.choices.setStyle("display","");if(this.fx){this.fx.start(1)}this.fireEvent("onShow",[this.element,this.choices])}if(this.options.selectFirst||this.typeAhead||b.inputValue==this.queryValue){this.choiceOver(b,this.typeAhead)}var d=this.choices.getChildren(c),f=this.options.maxChoices;var i={overflowY:"hidden",height:""};this.overflown=false;if(d.length>f){var j=d[f-1];i.overflowY="scroll";i.height=j.getCoordinates(this.choices).bottom;this.overflown=true}this.choices.setStyles(i);this.fix.show();if(this.options.visibleChoices){var h=document.getScroll(),k=document.getSize(),g=this.choices.getCoordinates();if(g.right>h.x+k.x){h.x=g.right-k.x}if(g.bottom>h.y+k.y){h.y=g.bottom-k.y}window.scrollTo(Math.min(h.x,g.left),Math.min(h.y,g.top))}},hideChoices:function(a){if(a){var c=this.element.value;if(this.options.forceSelect){c=this.opted}if(this.options.autoTrim){c=c.split(this.options.separatorSplit).filter($arguments(0)).join(this.options.separator)}this.observer.setValue(c)}if(!this.visible){return}this.visible=false;if(this.selected){this.selected.removeClass("autocompleter-selected")}this.observer.clear();var b=function(){this.choices.setStyle("display","none");this.fix.hide()}.bind(this);if(this.fx){this.fx.start(0).chain(b)}else{b()}this.fireEvent("onHide",[this.element,this.choices])},prefetch:function(){var f=this.element.value,e=f;if(this.options.multiple){var c=this.options.separatorSplit;var a=f.split(c);var b=this.element.getSelectedRange().start;var g=f.substr(0,b).split(c);var d=g.length-1;b-=g[d].length;e=a[d]}if(e.length<this.options.minLength){this.hideChoices()}else{if(e===this.queryValue||(this.visible&&e==this.selectedValue)){if(this.visible){return false}this.showChoices()}else{this.queryValue=e;this.queryIndex=b;if(!this.fetchCached()){this.query()}}}return true},fetchCached:function(){return false;if(!this.options.cache||!this.cached||!this.cached.length||this.cached.length>=this.options.maxChoices||this.queryValue){return false}this.update(this.filter(this.cached));return true},update:function(b){this.choices.empty();this.cached=b;var a=b&&$type(b);if(!a||(a=="array"&&!b.length)||(a=="hash"&&!b.getLength())){(this.options.emptyChoices||this.hideChoices).call(this)}else{if(this.options.maxChoices<b.length&&!this.options.overflow){b.length=this.options.maxChoices}b.each(this.options.injectChoice||function(d){var c=new Element("li",{html:this.markQueryValue(d)});c.inputValue=d;this.addChoiceEvents(c).inject(this.choices)},this);this.showChoices()}},choiceOver:function(c,d){if(!c||c==this.selected){return}if(this.selected){this.selected.removeClass("autocompleter-selected")}this.selected=c.addClass("autocompleter-selected");this.fireEvent("onSelect",[this.element,this.selected,d]);if(!this.selectMode){this.opted=this.element.value}if(!d){return}this.selectedValue=this.selected.inputValue;if(this.overflown){var f=this.selected.getCoordinates(this.choices),e=this.options.overflowMargin,g=this.choices.scrollTop,a=this.choices.offsetHeight,b=g+a;if(f.top-e<g&&g){this.choices.scrollTop=Math.max(f.top-e,0)}else{if(f.bottom+e>b){this.choices.scrollTop=Math.min(f.bottom-a+e,b)}}}if(this.selectMode){this.setSelection()}},choiceSelect:function(a){if(a){this.choiceOver(a)}this.setSelection(true);this.queryValue=false;this.hideChoices()},filter:function(a){return(a||this.tokens).filter(function(b){return this.test(b)},new RegExp(((this.options.filterSubset)?"":"^")+this.queryValue.escapeRegExp(),(this.options.filterCase)?"":"i"))},markQueryValue:function(a){return(!this.options.markQuery||!this.queryValue)?a:a.replace(new RegExp("("+((this.options.filterSubset)?"":"^")+this.queryValue.escapeRegExp()+")",(this.options.filterCase)?"":"i"),'<span class="autocompleter-queried">$1</span>')},addChoiceEvents:function(a){return a.addEvents({mouseover:this.choiceOver.bind(this,[a]),click:this.choiceSelect.bind(this,[a])})}});var OverlayFix=new Class({initialize:function(a){if(Browser.Engine.trident){this.element=$(a);this.relative=this.element.getOffsetParent();this.fix=new Element("iframe",{frameborder:"0",scrolling:"no",src:"javascript:false;",styles:{position:"absolute",border:"none",display:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}}).inject(this.element,"after")}},show:function(){if(this.fix){var a=this.element.getCoordinates(this.relative);delete a.right;delete a.bottom;this.fix.setStyles($extend(a,{display:"",zIndex:(this.element.getStyle("zIndex")||1)-1}))}return this},hide:function(){if(this.fix){this.fix.setStyle("display","none")}return this},destroy:function(){if(this.fix){this.fix=this.fix.destroy()}}});Element.implement({getSelectedRange:function(){if(!Browser.Engine.trident){return{start:this.selectionStart,end:this.selectionEnd}}var e={start:0,end:0};var a=this.getDocument().selection.createRange();if(!a||a.parentElement()!=this){return e}var c=a.duplicate();if(this.type=="text"){e.start=0-c.moveStart("character",-100000);e.end=e.start+a.text.length}else{var b=this.value;var d=b.length-b.match(/[\n\r]*$/)[0].length;c.moveToElementText(this);c.setEndPoint("StartToEnd",a);e.end=d-c.text.length;c.setEndPoint("StartToStart",a);e.start=d-c.text.length}return e},selectRange:function(d,a){if(Browser.Engine.trident){var c=this.value.substr(d,a-d).replace(/\r/g,"").length;d=this.value.substr(0,d).replace(/\r/g,"").length;var b=this.createTextRange();b.collapse(true);b.moveEnd("character",d+c);b.moveStart("character",d);b.select()}else{this.focus();this.setSelectionRange(d,a)}return this}});Autocompleter.Base=Autocompleter;Autocompleter.Local=new Class({Extends:Autocompleter,options:{minLength:0,delay:200},initialize:function(b,c,a){this.parent(b,a);this.tokens=c},query:function(){this.update(this.filter())}});Autocompleter.Request=new Class({Extends:Autocompleter,options:{postData:{},ajaxOptions:{},postVar:"value"},query:function(){var c=$unlink(this.options.postData)||{};c[this.options.postVar]=this.queryValue;var b=$(this.options.indicator);if(b){b.setStyle("display","")}var a=this.options.indicatorClass;if(a){this.element.addClass(a)}this.fireEvent("onRequest",[this.element,this.request,c,this.queryValue]);this.request.send({data:c})},queryResponse:function(){var b=$(this.options.indicator);if(b){b.setStyle("display","none")}var a=this.options.indicatorClass;if(a){this.element.removeClass(a)}return this.fireEvent("onComplete",[this.element,this.request])}});Autocompleter.Request.JSON=new Class({Extends:Autocompleter.Request,initialize:function(c,b,a){this.parent(c,a);this.request=new Request.JSON($merge({url:b,link:"cancel"},this.options.ajaxOptions)).addEvent("onComplete",this.queryResponse.bind(this))},queryResponse:function(a){this.parent();this.update(a)}});Autocompleter.Request.HTML=new Class({Extends:Autocompleter.Request,initialize:function(c,b,a){this.parent(c,a);this.request=new Request.HTML($merge({url:b,link:"cancel",update:this.choices},this.options.ajaxOptions)).addEvent("onComplete",this.queryResponse.bind(this))},queryResponse:function(a,b){this.parent();if(!b||!b.length){this.hideChoices()}else{this.choices.getChildren(this.options.choicesMatch).each(this.options.injectChoice||function(c){var d=c.innerHTML;c.inputValue=d;this.addChoiceEvents(c.set("html",this.markQueryValue(d)))},this);this.showChoices()}}});Autocompleter.Ajax={Base:Autocompleter.Request,Json:Autocompleter.Request.JSON,Xhtml:Autocompleter.Request.HTML};var Observer=new Class({Implements:[Options,Events],options:{periodical:false,delay:1000},initialize:function(c,a,b){this.element=$(c)||$$(c);this.addEvent("onFired",a);this.setOptions(b);this.bound=this.changed.bind(this);this.resume()},changed:function(){var a=this.element.get("value");if($equals(this.value,a)){return}this.clear();this.value=a;this.timeout=this.onFired.delay(this.options.delay,this)},setValue:function(a){this.value=a;this.element.set("value",a);return this.clear()},onFired:function(){this.fireEvent("onFired",[this.value,this.element])},clear:function(){$clear(this.timeout||null);return this},pause:function(){if(this.timer){$clear(this.timer)}else{this.element.removeEvent("keyup",this.bound)}return this.clear()},resume:function(){this.value=this.element.get("value");if(this.options.periodical){this.timer=this.changed.periodical(this.options.periodical,this)}else{this.element.addEvent("keyup",this.bound)}return this}});var $equals=function(b,a){return(b==a||JSON.encode(b)==JSON.encode(a))};

var UvumiDropdown=new Class({Implements:Options,options:{clickToOpen:false,openDelay:150,closeDelay:500,duration:250,link:'cancel',transition:Fx.Transitions.linear,mode:'horizontal'},initialize:function(a,b){this.menu=a;this.setOptions(b);if(this.options.mode!='horizontal'&&this.options.mode!='vertical'){this.options.mode='horizontal'}if(Browser.Engine.webkit){window.addEvent('domready',this.domReady.delay(200,this))}else{window.addEvent('domready',this.domReady.bind(this))}},domReady:function(){this.menu=$(this.menu);if(!$defined(this.menu)){return false}if(this.menu.get('tag')!='ul'){this.menu=this.menu.getElement('ul');if(!$defined(this.menu)){return false}}if(this.menu.getStyle('direction')=='rtl'||$(document.body).getStyle('direction')=='rtl'){this.rtl=true;if(Browser.Engine.trident&&$(document.body).getStyle('direction')=='rtl'){this.menu.getParent().setStyle('direction','ltr');this.menu.setStyle('direction','rtl')}}this.menu.setStyles({visibility:'hidden',display:'block',overflow:'hidden',height:0,marginLeft:(Browser.Engine.trident?1:-1)});this.createSubmenu(this.menu);if(this.options.mode=='horizontal'){this.menu.getChildren('li').setStyles({'float':(this.rtl?'right':'left'),display:'block',top:0});var a=new Element('li',{html:"&nbsp;",styles:{clear:(this.rtl?'right':'left'),display:(Browser.Engine.trident?'inline':'block'),position:'relative',top:0,height:0,width:0,fontSize:0,lineHeight:0,margin:0,padding:0}}).inject(this.menu)}else{this.menu.getChildren('li').setStyles({display:'block',top:0})}this.menu.setStyles({height:'auto',overflow:'visible',visibility:'visible'});this.menu.getElements('a').setStyle('display',(Browser.Engine.trident?'inline-block':'block'))},createSubmenu:function(c){var d=c.getChildren('li');var f=0;d.each(function(a){a.setStyles({position:'relative',display:'block',top:-f,zIndex:1});f+=a.getSize().y;var b=a.getFirst('ul');if($defined(b)){c.getElements('ul').setStyle('display','none');if(c==this.menu&&this.options.mode=='horizontal'){a.addClass('submenu-down');var x=0;var y=a.getSize().y;this.options.link='cancel';a.store('animation',new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0),this.options))}else{a.addClass('submenu-left');var x=a.getSize().x-(this.rtl&&!Browser.Engine.trident?2:1)*a.getStyle('border-left-width').toInt();var y=-a.getStyle('border-bottom-width').toInt();this.options.link='chain';a.store('animation',new Fx.Elements($$(b,b.getChildren('li')).setStyle('opacity',0),this.options));f=a.getSize().y+a.getPosition(this.menu).y}b.setStyles({position:'absolute',top:y,opacity:0});c.getElements('ul').setStyle('display','block');if(this.rtl){b.setStyles({right:x,marginRight:-x})}else{b.setStyles({left:x,marginLeft:-x})}this.createSubmenu(b);if(this.options.clickToOpen){a.addEvent('mouseenter',function(){$clear(a.retrieve('closeDelay'))}.bind(this));a.getFirst('a').addEvent('click',function(e){e.stop();$clear(a.retrieve('closeDelay'));this.showChildList(a)}.bind(this))}else{a.addEvent('mouseenter',function(){$clear(a.retrieve('closeDelay'));a.store('openDelay',this.showChildList.delay(this.options.openDelay,this,a))}.bind(this))}a.addEvent('mouseleave',function(){$clear(a.retrieve('openDelay'));a.store('closeDelay',this.hideChildList.delay(this.options.closeDelay,this,a))}.bind(this))}},this)},showChildList:function(b){var c=b.getFirst('ul');var d=$$(c.getChildren('li'));var e=b.retrieve('animation');if(b.getParent('ul')!=this.menu||this.options.mode=='vertical'){e.cancel();var f={0:{opacity:1},1:{opacity:1}};if(this.rtl){f[0]['marginRight']=0}else{f[0]['marginLeft']=0}e.start(f);var g={}}else{var g={0:{opacity:1}}}d.each(function(a,i){g[i+1]={top:0,opacity:1}});b.setStyle('z-index',99);e.start(g)},hideChildList:function(b){var c=b.retrieve('animation');var d=b.getFirst('ul');var e=$$(d.getChildren('li'));var f=0;var g={};e.each(function(a,i){g[i+1]={top:-f,opacity:0};f+=a.getSize().y});b.setStyle('z-index',1);if(b.getParent('ul')!=this.menu||this.options.mode=='vertical'){g[1]=null;c.cancel();c.start(g);var h={0:{opacity:0},1:{opacity:0}};if(this.rtl){h[0]['marginRight']=-d.getSize().x}else{h[0]['marginLeft']=-d.getSize().x}c.start(h)}else{g[0]={opacity:0};c.start(g)}}});


function wHeight() {
	var h = 0;
	if(!window.innerWidth) {
		//strict mode
		if(!(document.documentElement.clientWidth == 0)) {
			h = document.documentElement.clientHeight;
		}
		//quirks mode
		else {
			h = document.body.clientHeight;
		}
	}
	//w3c
	else {
		h = window.innerHeight;
	}
	return h;
}

function languages() {
	$$('.languages a').each(function(e) {
		if (!e.hasClass('active')) { 
			e.fade('0.3');
			e.addEvents({ 
				'mouseover': function() { e.fade('1'); },
				'mouseout' : function() { e.fade('0.3'); }
			});
		}
	});
}
function animenu() {
	$$('#mmenu a').each(function(e) {
		if (!e.hasClass('active')) { 
			e.addEvents({ 
				'mouseover': function() { 
					e.tween('background-image', '', 'url(fileadmin/templates/2010/images/menubg.gif)');
				 },
				'mouseout' : function() { 
					e.tween('background-image', 'url(fileadmin/templates/2010/images/menubg.gif)', '');
				 }
			});
		}
	});
}
function initAccs(){
	// Linkerkolom
	var toggles = $$('#maincontent .left .highbox h2.aheader');
	var content = $$('#maincontent .left .ablock');
	var AccordionObject = new Accordion(toggles, content, {
		// show: 666, 
		display: 0,
		height : true,
		width : false,
		opacity: true,
		padding: '20px',
		overflow: 'auto',
		
		'padding-bottom': "20px",
		alwaysHide: true,
		onComplete: function(toggler, element) {
		},
		onActive: function(toggler, element) {
			if (toggler.hasClass('phoneheader')) { toggler.setStyle('background-image', "url(fileadmin/templates/2010/images/phoneheaderoff.gif)"); }
			else { toggler.setStyle('background-image', 'none'); }
		},
		onBackground: function(toggler, element) {
			if (toggler) {
			if (toggler.hasClass('phoneheader')) { toggler.setStyle('backgroundImage', "url(fileadmin/templates/2010/images/phoneheader.gif)"); }
			else if (toggler.hasClass('darkheader')) { toggler.setStyle('backgroundImage', "url(fileadmin/templates/2010/images/plusdark.gif)"); }
			else { toggler.setStyle('backgroundImage', "url(fileadmin/templates/2010/images/pluslight.gif)"); }
			}
		}
	});	
	// Middenkolom
	var toggles = $$('#maincontent .nieuws h2');
	var content = $$('#maincontent .nieuws .bblock');
	var AccordionObject = new Accordion(toggles, content, {
		// show: 666, 
		display: 0,
		height : true,
		width : false,
		opacity: true,
		padding: '20px',
		overflow: 'auto',
		
		'padding-bottom': "20px",
		alwaysHide: true,
		onComplete: function(toggler, element) {
		},
		onActive: function(toggler, element) {
			toggler.setStyle('background-image', 'none'); 
		},
		onBackground: function(toggler, element) {
			if (toggler.hasClass('firstheader')) { toggler.setStyle('background-image', "url('fileadmin/templates/2010/images/pluslight.gif')"); }
			else { toggler.setStyle('background-image', "url('fileadmin/templates/2010/images/plusulight.gif')"); }
		}
	});	
	// Rechterkolom
	var toggles = $$('#maincontent .activiteiten h2');
	var content = $$('#maincontent .activiteiten .cblock');
	var AccordionObject = new Accordion(toggles, content, {
		// show: 666, 
		display: 0,
		height : true,
		width : false,
		opacity: true,
		padding: '20px',
		overflow: 'auto',
		
		'padding-bottom': "20px",
		alwaysHide: true,
		onComplete: function(toggler, element) {
		},
		onActive: function(toggler, element) {
			toggler.setStyle('background-image', 'none'); 
		},
		onBackground: function(toggler, element) {
			if (toggler.hasClass('darkheader')) { toggler.setStyle('background-image', "url('fileadmin/templates/2010/images/plusdark.gif')"); }
			else { toggler.setStyle('background-image', "url('fileadmin/templates/2010/images/pluslight.gif')"); }
		}
	});	


}
var bgnum =1;
function switchBg() {
	var fx = new Fx.Tween($('bgvisual'), {duration: 2000});
	var fx2 = new Fx.Tween($('bgvisual2'), {duration: 2000});
	var fxIn = new Fx.Tween($('visual'), {duration: 1600});
	var fxIn2 = new Fx.Tween($('visual2'), {duration: 1600});
	
	fx.chain(
		function() { 
			bgnum +=1;
			if (bgnum > 6) { bgnum = 1; }
			
			
			if (bgnum%2 == 0) {
				// Eerste visual vullen
				$('visual').setStyle('background', 'url(http://www.vvvterschelling.nl/fileadmin/templates/2010/images/bg/'+bgnum+'u.jpg) no-repeat');
				//$('visual').setStyle('background-color', '#ffffff');
				fxIn2.start('opacity', 1, 0);
				fxIn.start('opacity', 0, 1);
				//setTimeout("$('visual2').setStyle('background-image', '')", 1600);
				//setTimeout("$('visual2').setStyle('background-color', 'transparent')", 1600);
				
				
				$('bgvisual').setStyle('background-image', 'url(http://www.vvvterschelling.nl/fileadmin/templates/2010/images/bg/'+bgnum+'l.jpg)');
				//$('bgvisual').setStyle('background-color', '#ffffff');
				fx2.start('opacity', 1, 0);
				fx.start('opacity', 0, 1);
				//setTimeout("$('bgvisual2').setStyle('background-image', '')", 1600);
				//setTimeout("$('bgvisual2').setStyle('background-color', 'transparent')", 1600);
				
			}
			else {
				// Tweede vullen
				$('visual2').setStyle('background-image', 'url(http://www.vvvterschelling.nl/fileadmin/templates/2010/images/bg/'+bgnum+'u.jpg)');
				//$('visual2').setStyle('background-color', '#ffffff');
				fxIn2.start('opacity', 0, 1);
				fxIn.start('opacity', 1, 0);
				//setTimeout("$('visual').setStyle('background-image', '')", 1600);
				//setTimeout("$('visual').setStyle('background-color', 'transparent')", 1600);
				
				$('bgvisual2').setStyle('background-image', 'url(http://www.vvvterschelling.nl/fileadmin/templates/2010/images/bg/'+bgnum+'l.jpg)');
				//$('bgvisual2').setStyle('background-color', '#ffffff');
				fx.start('opacity', 1, 0);
				fx2.start('opacity', 0, 1);
				//setTimeout("$('bgvisual').setStyle('background-image', '')", 1600);
				//setTimeout("$('bgvisual').setStyle('background-color', 'transparent')", 1600);
				
				
			}
		}
	);
	fx.callChain();	
	setTimeout("switchBg()", 10000);
}


function slideLastminutes() {
	var totIncrement		= 0;
	var increment			= 180;
	var maxRightIncrement	= -(($$('#lmlist div.item').length * 180) - 360); // -1100; // $('tlup').get('nheight'); // increment*(-6);
	var fx = new Fx.Tween($('lmlist'), {duration: 500, transition: 'back:in:out'});
	
	if ($('lmright')) {
		$('lmright').addEvent('click', function() {
		if(totIncrement < 0) {
		    totIncrement += increment;
		    fx.start('margin-left', totIncrement);
		    if (totIncrement == 0) { $('lmright').style.visibility="hidden"; }
		    $('lmleft').style.visibility="visible";
		    }
			else { $('lmleft').style.visibility="hidden"; }
		});
		
		$('lmleft').addEvent('click', function() {
		if(totIncrement > maxRightIncrement) {
		    totIncrement -= increment;
		    fx.start('margin-left', totIncrement);
		     if (totIncrement == maxRightIncrement) { $('lmleft').style.visibility="hidden"; }
		     $('lmright').style.visibility="visible";
		    }
		 else { $('lmright').style.visibility="hidden"; }
		});	
		$('lmright').style.visibility="hidden";
	}
	
	var scUp = -202;
	var totVIncrement = 0
	if ($('lmup')) {
		$('lmup').addEvent('click', function() {
			if (totVIncrement >= 0) {
			totVIncrement += scUp;
				if (totIncrement < 0){
					fx.chain(
						function() { fx.start('margin-left', 0); },
						function() { fx.start('margin-top', totVIncrement); },
						function() { 
							var bgFx = new Fx.Tween($('lmcontent'), $('lmtools'), {duration: 500});
							bgFx.start('background-color', '#ffffff', '#e5f3f9');
							var bgtFx = new Fx.Tween($('lmtools'), {duration: 500});
							bgtFx.start('background-color', '#ffffff', '#e5f3f9');
							$('lmleft').style.visibility="hidden";
							$('lmright').style.visibility="hidden";
							$('lmup').set('html', 'Actueel');
							$('lmup').setStyle('background-position', '0px -11px');
						}
					);
					fx.callChain();
				}
				else {
					fx.chain(
						function() { fx.start('margin-top', totVIncrement); },
						function() { 
							var bgFx = new Fx.Tween($('lmcontent'), $('lmtools'), {duration: 500});
							bgFx.start('background-color', '#ffffff', '#e5f3f9');
							var bgtFx = new Fx.Tween($('lmtools'), {duration: 500});
							bgtFx.start('background-color', '#ffffff', '#e5f3f9');
							$('lmleft').style.visibility="hidden";
							$('lmright').style.visibility="hidden"; 
							$('lmup').set('html', 'Actueel');
							$('lmup').setStyle('background-position', '0px -11px');
						}
					);
					fx.callChain();
					}
				}
			
				else {
					// Terugzetten
					fx.chain(
						function() { fx.start('margin-top', 0); },
						function() { 
							totIncrement = 0;
							totVIncrement = 0;
							var bgFx = new Fx.Tween($('lmcontent'), $('lmtools'), {duration: 500});
							bgFx.start('background-color', '#e5f3f9', '#ffffff');
							var bgtFx = new Fx.Tween($('lmtools'), {duration: 500});
							bgtFx.start('background-color', '#e5f3f9', '#ffffff');
							$('lmleft').style.visibility="visible";
							$('lmright').style.visibility="hidden";
							$('lmup').set('html', 'Alle lastminutes');
							$('lmup').setStyle('background-position', '0px 3px');
						}
					);
					fx.callChain();
				}
			}
			
		);
	}
}
function slideArrangementen() {
	var totIncrement		= 0;
	var increment			= 180;
	var maxRightIncrement	= -(($$('#arlist div.item').length * 180) - 180); // -1100; // $('tlup').get('nheight'); // increment*(-6);
	var fx = new Fx.Tween($('arlist'), {duration: 500, transition: 'back:in:out'});
	
	if ($('arright')) {
		$('arright').addEvent('click', function() {
		if(totIncrement < 0) {
		    totIncrement += increment;
		    fx.start('margin-left', totIncrement);
		    if (totIncrement == 0) { $('arright').style.visibility="hidden"; }
		    $('arleft').style.visibility="visible";
		    }
			else { $('arleft').style.visibility="hidden"; }
		});
		
		$('arleft').addEvent('click', function() {
		if(totIncrement > maxRightIncrement) {
		    totIncrement -= increment;
		    fx.start('margin-left', totIncrement);
		     if (totIncrement == maxRightIncrement) { $('arleft').style.visibility="hidden"; }
		     $('arright').style.visibility="visible";
		    }
		 else { $('arright').style.visibility="hidden"; }
		});	
		$('arright').style.visibility="hidden";
	}
}
function slideActiviteiten() {
	var totIncrement		= 0;
	var increment			= 316;
	var maxRightIncrement	= -(($$('#actslider div.list').length * 316) - 316); // -1100; // $('tlup').get('nheight'); // increment*(-6);
	var fx = new Fx.Tween($('actslider'), {duration: 500, transition: 'back:in:out'});
	
	if ($('actright')) {
		$('actright').addEvent('click', function() {
		if(totIncrement < 0) {
		    totIncrement += increment;
		    fx.start('margin-left', totIncrement);
		    if (totIncrement == 0) { $('actright').style.visibility="hidden"; }
		    $('actleft').style.visibility="visible";
		    }
			else { $('actleft').style.visibility="hidden"; }
		});
		
		$('actleft').addEvent('click', function() {
		if(totIncrement > maxRightIncrement) {
		    totIncrement -= increment;
		    fx.start('margin-left', totIncrement);
		     if (totIncrement == maxRightIncrement) { $('actleft').style.visibility="hidden"; }
		     $('actright').style.visibility="visible";
		    }
		 else { $('actright').style.visibility="hidden"; }
		});	
		$('actright').style.visibility="hidden";
	}
	
	
	var totEIncrement		= 0;
	var maxeRightIncrement	= -(($$('#evnmslider div.list').length * 316) - 316); // -1100; // $('tlup').get('nheight'); // increment*(-6);
	var fxE = new Fx.Tween($('evnmslider'), {duration: 500, transition: 'back:in:out'});
	
	if ($('evnmright')) {
		$('evnmright').addEvent('click', function() {
		if(totEIncrement < 0) {
		    totEIncrement += increment;
		    fxE.start('margin-left', totEIncrement);
		    if (totEIncrement == 0) { $('evnmright').style.visibility="hidden"; }
		    $('evnmleft').style.visibility="visible";
		    }
			else { $('evnmleft').style.visibility="hidden"; }
		});
		
		$('evnmleft').addEvent('click', function() {
		if(totEIncrement > maxeRightIncrement) {
		    totEIncrement -= increment;
		    fxE.start('margin-left', totEIncrement);
		     if (totEIncrement == maxeRightIncrement) { $('evnmleft').style.visibility="hidden"; }
		     $('evnmright').style.visibility="visible";
		    }
		 else { $('evnmright').style.visibility="hidden"; }
		});	
		$('evnmright').style.visibility="hidden";
	}

}
function fixPhotos() {
	//$$('#activiteitenlijst img').each(function(element) {
    //    new VVVIShow(element, {
    //        centered: true, 
    //        'shadow': 'onOpenEnd',
    //        'resizeFactor': 0.8, 
    //        origin: element.getElement('img') 
    //    });
    //});
       
	$$('#webcams a.webcam').each(function(element) {
		if (element.href.match(/webcam1.html/)) { VVVBShow.assign(element, {handler: 'iframe', size: {x: 920, y: 690}}); }
 		else { VVVBShow.assign(element, {handler: 'iframe', size: {x: 640, y: 480}}); }
    });

    $$('#resultsColumn img').each(function(element) {
    	if (element.getParent().getProperty('rel')) {
    		element.addClass('resized');
        	new VVVIShow(element, {
            	centered: true, 
            	'shadow': 'onOpenEnd',
            	'resizeFactor': 0.8, 
            	origin: element.getParent()
        	});
        }
    });
}
function initContent() {
	var toggles = $$('#resultsColumn .csc-header');
	var content = $$('#resultsColumn .crbodywrap');
	if (content == '') { return; }
	var AccordionObject = new Accordion(toggles, content, {
		// show: 666, 
		display: 0,
		height : true,
		width : false,
		opacity: true,
		padding: '20px',
		overflow: 'auto',
		
		'padding-bottom': "20px",
		alwaysHide: true,
		onComplete: function(toggler, element) {
		},
		onActive: function(toggler, element) { 
			toggler.setStyle('background-image', 'none');
			toggler.setStyle('background-color', '#ffffff');
		},
		onBackground: function(toggler, element) {
			if (toggler) {
				toggler.setStyle('background-color', '#e5f3f9');
				toggler.setStyle('backgroundImage', "url(fileadmin/templates/2010/images/plusulight.gif)");
			}
		}
	});	
	
	//var fontCookie = Cookie.read('fontsize');
	if ($('supersizeme')) {
		var fontCookie = Cookie.read('fontSize');
		if (fontCookie == 14) {
			$$('.crpadder').each(function(el) { 
				var fx = new Fx.Morph(el,{ duration:700, link:'cancel' });
				fx.start({ 'font-size': fontCookie });
			});
			$('supersizeme').set('html', "Tekst kleiner <span class='supersize'>A<sup>-</sup></span>");
		}
		
		
		$('supersizeme').addEvents({ 
			'click': function() { 
				//var fSize = parseInt($$('.crpadder:nth-child(first)').getStyle('font-size'));
				if (parseInt($$('.crpadder:nth-child(first)').getStyle('font-size')) == 14) {
					$$('.crpadder').each(function(el) { 
						var fx = new Fx.Morph(el,{ duration:700, link:'cancel' });
						fx.start({ 'font-size': 12 });
					});
					var fontCookie = Cookie.write('fontSize', '12', {domain: 'vvvterschelling.nl', path: '/'});
					$('supersizeme').set('html', "Tekst groter <span class='supersize'>A<sup>+</sup></span>");
				}
				else {
					$$('.crpadder').each(function(el) { 
						var fx = new Fx.Morph(el,{ duration:700, link:'cancel' });
						fx.start({ 'font-size': 14 });
					});
					var fontCookie = Cookie.write('fontSize', '14', {domain: 'vvvterschelling.nl', path: '/'});
					$('supersizeme').set('html', "Tekst kleiner <span class='supersize'>A<sup>-</sup></span>");
				}
		 	}
		});
	}
}
function autoCompleter() {
	var el = $("tx-indexedsearch-searchbox-sword");
	if (el) {
		var form = el;
		for (var i=0;i<20;i++) {
			form = form.getParent();
			if (form.nodeName=="FORM") break;
		}
		var sectionpid = 0;
		var section = $("tx-indexedsearch-selectbox-sectionsxx");
		if ($type(section)=="element") {
			sectionpid = section.getValue();
		}
		var languageid = -1;
		var language = $("tx-indexedsearch-selectbox-langxx");
		if ($type(language)=="element") {
			languageid = language.getValue();
		}
		var mediaid = -1;
		var media = $("tx-indexedsearch-selectbox-media");
		if ($type(media)=="element") {
			mediaid = media.getValue();
		}
		var ajaxurl = "index.php?eID=pmkisac";
		var completer = new Autocompleter.Request.HTML(el, ajaxurl , {
			"postData": {id: 40,sp: sectionpid,la: languageid,me: mediaid,sw: 1,ml: 2,mc: 10, wc: 1},
			"minLength": 2,
			"maxChoices": 10,
			"useSelection": 0,
			"markQuery": 0,
			"inheritWidth": 1,
			"dropDownWidth": 100,
			"multi": 1,
			"delimeter": " ",
			"delay": 100,
			"indicatorClass": "autocompleter-loading",
			"injectChoice": function(choice) {
			var text = choice.getFirst();
			var value = text.innerHTML;
			choice.inputValue = value;
			text.set("html", this.markQueryValue(value));
			this.addChoiceEvents(choice);
		}
	});
	if ($type(section)=="element") {
		section.addEvent("change", function(){
		completer.options.postData["sp"] = section.getValue();
		});
	}
	if ($type(language)=="element") {
		language.addEvent("change", function(){
		completer.options.postData["la"] = language.getValue();
		});
	}
	if ($type(media)=="element") {
		media.addEvent("change", function(){
		completer.options.postData["me"] = media.getValue();
		});
	}
	}


}
function toolTips() {
	$$('a').each(function(element,index) {
		if (element.get('title')) {
			var content = element.get('title').split('::');
			element.store('tip:title', 'VVV Terschelling');
			element.store('tip:text', content[0]);
		}
		else if ((element.get('href') == '') || (element.get('href') == '#')) {
			var content = element.get('href');
			element.store('tip:title', 'VVV Terschelling');
			element.store('tip:text', "Bekijk resultaat");
		}
		else {
			var content = element.get('href');
			element.store('tip:title', 'VVV Terschelling');
			element.store('tip:text', content);
		}
		
	});
	
	var vvvtips = new Tips('a',{
		className: 'vvvtips',
		fixed: true,
		hideDelay: 50,
		showDelay: 50,
		offsets: {
		'x': 16,       //default is 16
		'y': 16        //default is 16
		},
		fixed: false
	});	
}
function setFooter(){
	alert(body.getSize().y);
	//$('footer').setStyle('margin-top', (window.getSize().y)-650);
}
window.addEvent('resize', function() {

});
	
function loadMap(url) {
	// Test: http%3A//zoekenboek.vvvterschelling.nl/ajax/map/%3FsearchType%3Dhouse%26ids%3DA366
	VVVBShow.initialize({
        size: {x: 920, y: 566}
    });
	VVVBShow.open('http://www.vvvterschelling.nl/sys/kaart/?url='+url, {handler: 'iframe'});
}

function popupWindow(inu) {
	var win = window.open(inu, "pWindow", "borders=no,scrollbars=no,toolbar=no,location=no,directories=no,status=yes,menubar=no,copyhistory=no");	
}
window.addEvent('domready', function() {
	
	//languages();	
	initAccs();
	autoCompleter();
	slideLastminutes();
	slideArrangementen();
	slideActiviteiten();
	fixPhotos();
	initContent();
	// toolTips();
	
	
	$$('.footerlinks a').each(function(el) {  
		var fx = new Fx.Morph(el,{ duration:300, link:'cancel' });
		el.addEvents({
			'mouseenter': function() { fx.start({ 'padding-left': 6 }); },
			'mouseleave': function() { fx.start({ 'padding-left': 0 }); }
		});
	});
	$$('#mainmenu .dropdown ul.links li a').each(function(el) {  
		el.setStyle('opacity', '0.9');
	});


	VVVBShow.assign($$('#visualoverlay a.maplink'), {handler: 'iframe', size: {x: 920, y: 566}});
	VVVBShow.assign($$('.toolbar a.nieuwsbrief'), {handler: 'iframe', size: {x: 400, y: 180}});


	setTimeout("switchBg()", 10000);
	var menu = new UvumiDropdown('navmenu', { delay:250 });
	
	var sponslinks = $$('#sponsorsSpace a');
	sponslinks.each(function(item, index) { item.set('target', '_blank'); });
	
	var ownsponslinks = $$('#sponsorOwn a');
	ownsponslinks.each(function(item, index) { item.set('target', '_self'); });

});