/**********************************************************************************
 * 
 * LastChangedDate:		$Date: 2007-02-13 13:54:48 +0100 (Tue, 13 Feb 2007) $
 * LastChangedRevision	$Rev: 63 $
 * LastChangedBy:		$Author: $
 * HeadURL:				$URL: http://linux/cd/balance/trunk/httpdocs/js/nl/balance/balance.js $
 * ID:					$Id: balance.js 63 2007-02-13 12:54:48Z  $
 * 
/**********************************************************************************/

// Create namespace
if ( ! window.nl.degoey ) {
	window.nl.degoey = {} ;
} ;

/**
 * Schaapskooi Class
 */
nl.degoey.Degoey= function() {
	nl.xd.util.Event.addListener( window , 'load' , function() { nl.degoey.Degoey.DOC.show() ; } ) ;
} ;

/**
 * DOC Class
 */
nl.degoey.Degoey.DOC = function() {
	var flash ;
	
	return {
		show: function() {
			window.flashPlayer = deconcept.SWFObjectUtil.getPlayerVersion() ;
			
			if ( window.flashPlayer.major >= 6 ) {
				this.showMenu() ;
				
				this.initRollOverList();
				
				var headertypes = new Array( {tag:'h1',size:'16'} ) ;
				
				for ( var i = 0; i < headertypes.length; i++ ) {
					this.replaceHeaders( headertypes[ i ] ) ;
				} ;
			} ;
		} ,
		initRollOverList: function(){
			var shopoverview = nl.xd.util.DOM.get( 'shopoverview' ) ;
			if( shopoverview ){
				new nl.degoey.RollOverList( shopoverview, 'overviewitem' , 'td' ) ;
			}
		},
		replaceHeaders: function( headertype ) {
			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 = this.getColor( headers[ i ] ) ;
						size  = 35; //headertype.size ;
						title = headers[ i ].innerHTML ;
						
						var a = headers[ i ].getElementsByTagName( 'a' ) ;
						
						if ( a.length ) {
							title = a[ 0 ].innerHTML ;
							hover = '#ffffff' ;
							link  = a[ 0 ].href ;
						} else {
							title = headers[ i ].innerHTML ;
						} ;
						break ;
				} ;
				
				var width 	   = headers[ i ].offsetWidth ;
				var timestamp  = 2000 * Math.random() ;
				var height 	   = headers[ i ].offsetHeight ;
				var lineheight = parseInt( headertype.size ) ;
				var lines 	   = Math.floor( height / lineheight ) ;
				height         = lines * 35; //lineheight ; // fix IE bug
				
				title = title.replace( '&amp;' , '%26' ) ;
				
				newtitle = encodeURI( title ) ;
				
				var flashvars  = '_xml=<header><height>' + height + '</height><lineheight>' + lineheight + '</lineheight><size>' + size + '</size><color>' + color + '</color><title><![CDATA[' + newtitle + ']]></title></header>&id=' + timestamp ;
				headers[ i ].innerHTML = window.nl.xd.flash.Simple.Standard( 'swf/h.swf' , width , height , flashvars , timestamp ) + '<span>' + title + '</span>' ;
			} ;
		} ,
		getColor: function( element ) {
			color = 'ffffff'; //'#918F90' ;
			
			switch ( element.className ) {
				case 'blue' :
					color = '#0099FF' ;
					break ;
					
				case 'green' :
					color = '#C1DD00' ;
					break ;
			} ;
			
			return color ;
		} ,
		showFlash: function( swf, width, height, element ){
			document.write( window.nl.xd.flash.Simple.Standard( swf , width , height , null , "0" ) ) ;
		},
		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 ;
		} ,
		resetHeight: function( id , height ) {
			var flash = nl.xd.util.DOM.get( id ) ;
			
			flash.height = height ;
		} ,
		showMenu: function() {
			var path = location.href ;
			path = path.split( '?' ) ;
			path = path[ 0 ] ;
			
			var container = nl.xd.util.DOM.get( 'mainmenu' ) ;
			container.innerHTML = nl.xd.flash.Simple.Standard( 'swf/top.swf' , 880 , 50 , window.flashvars + '&path=' + path , 'mm' ) ;
		}
	} ;
} () ;

/* RollOverList */
nl.degoey.RollOverList = function( element, itemname, itemtype ){
	this.element = element ;
	this.itemname = itemname ;
	this.itemtype = itemtype ;
	this.initialize() ;	
}
nl.degoey.RollOverList.prototype = {
	initialize: function(){
		this.buildItems() ;	
	} ,
	buildItems: function(){
		var self = this ;
		this.items = new Array() ;
		var item_arr = nl.xd.util.DOM.getByClassName( this.itemname, this.itemtype, this.element ) ;
		for( var i=0; i<item_arr.length; i++ ){
			this.items.push( new nl.degoey.RollOverListItem( item_arr[ i ], self ) )	;
		}
	}
}

nl.degoey.RollOverListItem = function( element , parent ){
	this.element = element ;
	this.parent = parent ;
	this.initialize() ;
}
nl.degoey.RollOverListItem.prototype = {
	initialize: function(){
		this.buildItem() ;
		this.setEvents() ;
	} ,
	buildItem: function(){
	} ,
	setEvents: function(){
		var self = this ;
		nl.xd.util.Event.addListener( this.element, 'mouseover', function(){ self.onRollOverItem() } ) ;
		nl.xd.util.Event.addListener( this.element, 'mouseout', function(){ self.onRollOutItem() } ) ;
		nl.xd.util.Event.addListener( this.element, 'click', function(){ self.onClickItem() } ) ;
	} ,
	onRollOverItem: function(){
		nl.xd.util.DOM.addClass( this.element , 'rollover' ) ;
	} ,
	onRollOutItem: function(){
		nl.xd.util.DOM.removeClass( this.element , 'rollover' ) ;
	} ,
	onClickItem: function(){
		var a = nl.xd.util.DOM.getByTagName( 'a' , this.element )[ 0 ] ;
		var href = nl.xd.util.DOM.getAttribute( a , 'href' ) ;
		window.location = href ;
	}
}


new nl.degoey.Degoey() ;
