jQuery.noConflict(); 
var WS={version:'1.6.3',browser:{IE:/msie/i.test(navigator.userAgent),IE6:/msie 6/i.test(navigator.userAgent),IE7:/msie 7/i.test(navigator.userAgent),Gecko:/gecko/i.test(navigator.userAgent),Webkit:/webkit/i.test(navigator.userAgent)},$:function(el){return(typeof el=='string')?document.getElementById(el):el;},hide:function(el){el=$(el);el.style.display='none';return el;},show:function(el){el=$(el);el.style.display='';return el;},toggle:function(el){el=$(el);el.style.display==''?this.hide(el):this.show(el);},addClass:function(el,cls){el=$(el);if(!this.hasClass(el,cls)){el.className+=(' '+cls);}},removeClass:function(el,cls){el=$(el);if(this.hasClass(el,cls)){var regex=new RegExp('(\\s|^)'+cls+'(\\s|$)');el.className=el.className.replace(regex,' ');}},toggleClass:function(el,cls){if(this.hasClass(el,cls)){this.removeClass(el,cls);}else{this.addClass(el,cls);}},hasClass:function(el,cls,greedy){el=$(el);if(!el.className){return false;}else if(greedy){var regex=new RegExp(cls);return regex.test(el.className);}else{return el.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));}},getOpacity:function(el){el=$(el);if(WS.browser.IE){return el.style.filter?(parseFloat(el.style.filter.replace('alpha(opacity=',''))/100):1.0;}return el.style.opacity||1.0;},setOpacity:function(el,op){el=$(el);if(WS.browser.IE){var ieOp=(op*100);if(ieOp<100){el.style.filter='alpha(opacity='+ieOp+')';}else{el.style.filter='';}}else{el.style.opacity=op;}},setText:function(el,text){el=$(el);el.innerHTML=text;}};if(typeof $=='undefined'){var $=WS.$;}else{var get=WS.$;}if(!window.console){window.console={log:function(){}};}
WS.DOM={ready:function(fn){if(document.addEventListener){document.addEventListener('DOMContentLoaded',function(){fn.call();},false);}else if(document.all&&!window.opera){document.write("<s"+'cript id="dom-loaded" defer="defer" src="/'+'/:"></s'+"cript>");$('dom-loaded').onreadystatechange=function(){if(this.readyState=='complete'){fn.call();}};}},getElementsByClass:function(searchClass,node,tag){var classElements=[];if(node==null){node=document;}if(tag==null){tag='*';}var els=node.getElementsByTagName(tag);var elsLen=els.length;var pattern=new RegExp("(^|\\s)"+searchClass+"(\\s|$)");for(i=0,j=0;i<elsLen;i++){if(pattern.test(els[i].className)){classElements[j]=els[i];j++;}}return classElements;},getParent:function(el,offset){offset=offset||1;var parent=$(el).parentNode;for(var i=1;i<offset;i++){parent=parent.parentNode;}return parent;},getChild:function(el,depth){var child=$(el).childNodes[depth-1];while(child.nodeType!=1){child=child.nextSibling;}return child;},getChildren:function(el){var arr=[];var children=$(el).childNodes;for(var i=0;i<children.length;i++){if(children[i].nodeType==1){arr.push(children[i]);}}return arr;},next:function(el){var next=el.nextSibling;while(next.nodeType!=1){next=next.nextSibling;}return next;},insertAfter:function(node,referenceNode){referenceNode.parentNode.insertBefore(node,referenceNode.nextSibling);}};
WS.Util={createToggle:function(id){var t=$(id+'-toggle');var c=$(id+'-container');WS.hide(c);WS.Event.addEvent(t,'click',function(e){WS.Event.stopEvent(e);WS.toggle(c);});},fixPngBackground:function(img,sizingMethod){sizingMethod=sizingMethod||'scale';if(WS.browser.IE6){img=$(img);var src=img.currentStyle.backgroundImage.replace(/url\("(.*)"\)/,'$1');img.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+src+'\', sizingMethod=\''+sizingMethod+'\')';img.style.background='none';}},parseJSON:function(json){try{if(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(json)){var j=eval('('+json+')');return j;}}catch(e){}throw new SyntaxError('Can\'t parse JSON string');},number_format:function(a,b,c,d){a=Math.round(a*Math.pow(10,b))/Math.pow(10,b);e=a+'';f=e.split('.');if(!f[0]){f[0]='0';}if(!f[1]){f[1]='';}if(f[1].length<b){g=f[1];for(i=f[1].length+1;i<=b;i++){g+='0';}f[1]=g;}if(d!=''&&f[0].length>3){h=f[0];f[0]='';for(j=3;j<h.length;j+=3){i=h.slice(h.length-j,h.length-j+3);f[0]=d+i+f[0]+'';}j=h.substr(0,(h.length%3===0)?3:(h.length%3));f[0]=j+f[0];}c=(b<=0)?'':c;return f[0]+c+f[1];},collectionToArray:function(c){var a=[];for(var i=0;i<c.length;i++){a.push(c.item(i));}return a;},secondsToMinutes:function(sec){var minutes=Math.floor(sec/60);var seconds=sec%60;if(seconds<10){seconds='0'+seconds;}return minutes+':'+seconds;}};
WS.Event={addEvent:function(el,type,listener,useCapture){el=$(el);useCapture=useCapture||false;if(WS.browser.Gecko){el.addEventListener(type,listener,useCapture);}else if(WS.browser.IE){var r=el.attachEvent('on'+type,function(){listener.call(el,window.event);});return r;}},removeEvent:function(el,type,listener,useCapture){useCapture=useCapture||false;if(WS.browser.Gecko){el.removeEventListener(type,listener,useCapture);}else if(WS.browser.IE){var r=el.detachEvent('on'+type,listener);}},stopEvent:function(e){e=e||window.event;if(WS.browser.Gecko){e.preventDefault();}else{e.returnValue=false;}},getTarget:function(e){if(e.target){return e.target;}else if(e.srcElement){return e.srcElement;}else{return false;}}};
WS.Ajax={getXMLHttpObject:function(){return window.ActiveXObject?new ActiveXObject('Microsoft.XMLHTTP'):new XMLHttpRequest();},stateChanged:function(xhr,fn){if(xhr.readyState==4){fn(xhr.responseText);}},request:function(url,fn){var self=this;var post=arguments[2]||'';var xhr=this.getXMLHttpObject();if(xhr){xhr.onreadystatechange=function(){self.stateChanged(xhr,fn);};if(post){xhr.open('POST',url,true);xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');xhr.setRequestHeader('Content-length',post.length);xhr.setRequestHeader('Connection','close');}else{xhr.open('GET',url,true);}xhr.send(post);}}};
WS.Validation=function(form){var form=$(form),formElements=[],errorClass='wsv-error';var validations={required:{errorMessage:'Dit veld is verplicht',regex:/\S+/},email:{errorMessage:'U dient een geldig e-mailadres in te vullen',regex:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/},zip:{errorMessage:'U dient een geldige postcode in te vullen (1234AB)',regex:/^[0-9]{4}[\ ]?[a-zA-Z]{2}$/},numeric:{errorMessage:'Dit veld mag alleen numerieke tekens bevatten',regex:/^[0-9]*$/},phone:{errorMessage:'U dient een geldig telefoonnummer in te vullen',regex:/^[0-9 +-]{10,16}$/}};return{initialize:function(){if(!form){return false;}for(var i=0;i<form.elements.length;i++){if(WS.hasClass(form.elements[i],'wsv-',true)){formElements.push(form.elements[i]);}}if(WS.browser.Webkit){var fieldsets=form.getElementsByTagName('fieldset');for(var i=0;i<fieldsets.length;i++){if(WS.hasClass(fieldsets[i],'wsv-',true)){formElements.push(fieldsets[i]);}}}this.initEvents();},initEvents:function(){var self=this;form.onsubmit=function(){return self.validateForm();};},enableElement:function(el){el=$(el);el.disabled=false;},disableElement:function(el){el=$(el);el.disabled=true;},addValidation:function(name,properties){if(!validations[name]){validations[name]=properties;}},validateElement:function(el){var valid=true;var vArr=el.className.match(/wsv-\w+/g);for(var i=0;i<vArr.length;i++){if(vArr[i]!=errorClass){if(el.nodeName=='INPUT'){if(el.type=='text'||el.type=='password'){if(vArr[i]=='wsv-required'||el.value!==''){valid=validations[vArr[i].split('wsv-')[1]].regex.test(el.value);}}else if(el.type=='checkbox'){valid=el.checked;}else if(el.type=='radio'){var nextElement=formElements[formElements.indexOf(el)+1];do{if(!el.checked){valid=false;}nextElement=formElements[formElements.indexOf(nextElement)+1];}while(nextElement.type=='radio'&&nextElement.name==el.name);}}else if(el.nodeName=='SELECT'){valid=el.value!=-1;}else if(el.nodeName=='TEXTAREA'){valid=el.value;}else if(el.nodeName=='FIELDSET'){valid=0;var inputs=el.getElementsByTagName('input');for(var i=0;i<inputs.length;i++){valid+=inputs[i].checked;}}}if(!valid){WS.addClass(el,errorClass);}else if(valid&&WS.hasClass(el,errorClass)){WS.removeClass(el,errorClass);}}return valid;},validateForm:function(){var submit=true;for(var i=0;i<formElements.length;i++){if(!this.validateElement(formElements[i])){submit=false;}}return submit;}};};
Function.prototype.bind=function(){var handler=this,args=[].slice.call(arguments,0),obj=args.shift();return function(){return handler.apply(obj,args.concat([].slice.call(arguments,0)));};};
if(!Array.forEach){Array.prototype.forEach=function(fun){var len=this.length>>>0;if(typeof fun!='function'){throw new TypeError();}var thisp=arguments[1];for(var i=0;i<len;i++){if(i in this){fun.call(thisp,this[i],i,this);}}};}
if(!Array.indexOf){Array.prototype.indexOf=function(obj){for(var i=0;i<this.length;i++){if(this[i]==obj){return i;}}return-1;};}
Array.prototype.first=function(){return this[0];};
Array.prototype.last=function(){return this[this.length-1];};

//var YouTubePlayer=function(pId,options){if(typeof swfobject.embedSWF=='undefined'){throw'YouTubePlayer requires SWFObject 2.0 or higher to work!';}if(!/^[A-Za-z0-9\_]+$/.test(pId)){throw'The YouTube Player ID can only contain A-Z a-z 0-9 and _ (underscores). The ID being used: '+pId;}var self=this;this.pId=pId;this.player=false;if(typeof options!='undefined'){for(prop in options){this[prop]=options[prop];}}this.playerReady=function(playerId){if(self.pId==playerId){self.player=document.getElementById(playerId);self.addEventListener('onStateChange',self.pId+'onStateChange');if(self.onReady){self.onReady(self.player);}if(self.videoId&&self.autoPlay){self.loadVideoById(self.videoId);}else if(self.videoId){self.cueVideoById(self.videoId);}if(self.muted){self.mute();}else{self.unMute();self.setVolume(100);}}};this.stateChange=function(state){if(state===0&&self.onEnd){self.onEnd(self.player);}else if(state===1&&self.onPlay){self.onPlay(self.player);}else if(state===2&&self.onPause){self.onPause(self.player);}else if(state===3&&self.onBuffering){self.onBuffering(self.player);}else if(state===5&&self.onCue){self.onCue(self.player);}};this.error=function(error){if(error===100&&self.onNotFoundError){self.onNotFoundError(self.player);}else if((error===101||error===150)&&self.onNoEmbedError){self.onNoEmbedError(self.player);}};var oldOnYouTubePlayerReady=window.onYouTubePlayerReady||false;if(typeof oldOnYouTubePlayerReady=='function'){window.onYouTubePlayerReady=function(playerId){oldOnYouTubePlayerReady(playerId);self.playerReady(playerId);};}else{window.onYouTubePlayerReady=this.playerReady;}window[this.pId+'onStateChange']=this.stateChange;window[this.pId+'onError']=this.error;swfobject.embedSWF('http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid='+pId,pId,(this.width||320),(this.height||240),'8',null,null,{allowScriptAccess:'always',bgcolor:'#000000',wmode:'transparent'},{id:pId});};YouTubePlayer.prototype={cueVideoById:function(videoId,startSeconds,suggestedQuality){this.player.cueVideoById(videoId,startSeconds,suggestedQuality);},loadVideoById:function(videoId,startSeconds,suggestedQuality){this.player.loadVideoById(videoId,startSeconds,suggestedQuality);},playVideo:function(){this.player.playVideo();},pauseVideo:function(){this.player.pauseVideo();},togglePlay:function(){this.getPlayerState()===1?this.pauseVideo():this.playVideo();},stopVideo:function(){this.player.stopVideo();},seekTo:function(seconds,allowSeekAhead){this.player.seekTo(seconds,allowSeekAhead);},clearVideo:function(){this.player.clearVideo();},mute:function(){this.player.mute();},unMute:function(){this.player.unMute();},isMuted:function(){return this.player.isMuted();},toggleMute:function(){this.isMuted()?this.unMute():this.mute();},setVolume:function(v){this.player.setVolume(v);},getVolume:function(){return this.player.getVolume();},setSize:function(width,height){this.player.setSize(width,height);},getVideoBytesLoaded:function(){return this.player.getVideoBytesLoaded();},getVideoBytesTotal:function(){return this.player.getVideoBytesTotal();},getVideoStartBytes:function(){return this.player.getVideoStartBytes();},getPlayerState:function(){return this.player.getPlayerState();},getCurrentTime:function(){return this.player.getCurrentTime();},getDuration:function(){return this.player.getDuration();},getVideoUrl:function(){return this.player.getVideoUrl();},getVideoEmbedCode:function(){return this.player.getVideoEmbedCode();},addEventListener:function(event,listener){this.player.addEventListener(event,listener);}};

/**
 * YouTubePlayer.js - A YouTube Chromeless Player class
 * 
 * @version 1.0
 * @author Maurice Snip <mauricesnip at hotmail dot com>
 * @uses swfobject.js <http://code.google.com/p/swfobject/>
 */
var YouTubePlayer = function(pId, options) {
	
	/**
	 * Requirements
	 */
	if(typeof swfobject.embedSWF == 'undefined') {
		throw 'YouTubePlayer requires SWFObject 2.0 or higher to work!';
	}
	
	if(!/^[A-Za-z0-9\_]+$/.test(pId)) {
		throw 'The YouTube Player ID can only contain A-Z a-z 0-9 and _ (underscores). The ID being used: ' + pId;
	}
	
	/**
	 * Private properties
	 */
	var self = this;
	
	/**
	 * Public properties
	 */
	this.pId = pId;
	
	this.volume = 100;
	
	this.player = false;
	
	/**
	 * Extend the YouTubePlayer object with option properties
	 */
	if(typeof options != 'undefined') {		
		for(prop in options) {
			this[prop] = options[prop];
		}
	}
	
	/**
	 * onYouTubePlayerReady event handler
	 * 
	 * @scope window
	 */
	this.playerReady = function(playerId) {
		if(self.pId == playerId) {
			self.player = document.getElementById(playerId);
			
			self.addEventListener('onStateChange', self.pId + 'onStateChange');
			
			if(self.onReady) {
				self.onReady(self.player);
			}
			
			if(self.videoId && self.autoPlay) {
				self.loadVideoById(self.videoId);
			}
			else if(self.videoId) {
				self.cueVideoById(self.videoId);
			}
						
			if(self.muted) {
				self.mute();
			}
			else {
				self.unMute();
				self.setVolume(self.volume);
			}
		}
	};
	
	/**
	 * onStateChange event handler
	 * 
	 * @scope window
	 */
	this.stateChange = function(state) {
		if(state === 0 && self.onEnd) {
			self.onEnd(self.player);
		}
		else if(state === 1 && self.onPlay) {
			self.onPlay(self.player);
		}
		else if(state === 2 && self.onPause) {
			self.onPause(self.player);
		}
		else if(state === 3 && self.onBuffering) {
			self.onBuffering(self.player);
		}
		else if(state === 5 && self.onCue) {
			self.onCue(self.player);
		}
	};
	
	/**
	 * onError event handler
	 * 
	 * @scope window
	 */
	this.error = function(error) {
		if(error === 100 && self.onNotFoundError) {
			self.onNotFoundError(self.player);
		}
		else if((error === 101 || error === 150 ) && self.onNoEmbedError) {
			self.onNoEmbedError(self.player);
		}
	};
	
	/**
	 * Multiple player magic, inspired by YtMooPlayer
	 * 
	 * The onYouTubePlayerReady function is called from the window scope,
	 * so we declare it as window.onYouTubePlayerReady. Since other
	 * YouTubePlayer instances might be floating around, we have to check
	 * wheter or not the onYouTubePlayerReady is declared yet. If so,
	 * we call it in our newly declared onYouTubePlayerReady function.
	 */
	var oldOnYouTubePlayerReady = window.onYouTubePlayerReady || false;
	
	if(typeof oldOnYouTubePlayerReady == 'function') {
		window.onYouTubePlayerReady = function(playerId) {
			oldOnYouTubePlayerReady(playerId);
			self.playerReady(playerId);
		};
	}
	else {
		window.onYouTubePlayerReady = this.playerReady;
	}
	
	/**
	 * Map <pId>onStateChange to the onStateChange event handler
	 */
	window[this.pId + 'onStateChange'] = this.stateChange;
	
	/**
	 * Map <pId>onError to the onError event handler
	 */
	window[this.pId + 'onError'] = this.error;
	
	/**
	 * Embed the player
	 */
	swfobject.embedSWF('http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=' + pId, pId, (this.width || 320), (this.height || 240), '8', null, null, { allowScriptAccess: 'always', bgcolor: '#000000', wmode: 'transparent' }, { id: pId });
};

/**
 * Public API
 */
YouTubePlayer.prototype = {
	cueVideoById: function(videoId, startSeconds, suggestedQuality) {
		this.player.cueVideoById(videoId, startSeconds, suggestedQuality);
	},
	
	loadVideoById: function(videoId, startSeconds, suggestedQuality) {
		this.player.loadVideoById(videoId, startSeconds, suggestedQuality);
	},
	
	playVideo: function() {
		this.player.playVideo();
	},
	
	pauseVideo: function() {
		this.player.pauseVideo();
	},
	
	togglePlay: function() {
		this.getPlayerState() === 1 ? this.pauseVideo() : this.playVideo();
	},
	
	stopVideo: function() {
		this.player.stopVideo();
	},
	
	seekTo: function(seconds, allowSeekAhead) {
		this.player.seekTo(seconds, allowSeekAhead);
	},
	
	clearVideo: function() {
		this.player.clearVideo();
	},
	
	mute: function() {
		this.player.mute();
	},
	
	unMute: function() {
		this.player.unMute();
	},
	
	isMuted: function() {
		return this.player.isMuted();
	},
	
	toggleMute: function() {
		this.isMuted() ? this.unMute() : this.mute();
	},
	
	setVolume: function(v) {
		this.player.setVolume(v);
	},
	
	getVolume: function() {
		return this.player.getVolume();
	},
	
	setSize: function(width, height) {
		this.player.setSize(width, height);
	},
	
	getVideoBytesLoaded: function() {
		return this.player.getVideoBytesLoaded();
	},
	
	getVideoBytesTotal: function() {
		return this.player.getVideoBytesTotal();
	},
	
	getVideoStartBytes: function() {
		return this.player.getVideoStartBytes();
	},
	
	getPlayerState: function() {
		return this.player.getPlayerState();
	},
	
	getCurrentTime: function() {
		return this.player.getCurrentTime();
	},
	
	getDuration: function() {
		return this.player.getDuration();
	},
	
	getVideoUrl: function() {
		return this.player.getVideoUrl();
	},
	
	getVideoEmbedCode: function() {
		return this.player.getVideoEmbedCode();
	},
	
	addEventListener: function(event, listener) {
		this.player.addEventListener(event, listener);
	}
};