//
// NavCrumbs Handler v0.3
// Geschreven door: Tommy Lesmeister
// Goes & Roos
//

// v0.3
// - Port -> Class
// + Constructor injection mogelijk d.m.v options
// + Workaround voor het in- en uitschakelen van het menu w/o timers.

// v0.2
// - onLoad event gewijzigd.

// Ruimte voor verbetering
// - De bouwer kan zelf de classnamen instellen
// - De bouwer kan zelf het id van het menu bepalen( is non-sense tho )
// - OnMouse events toevoegen

var MyNavCrumbler;

// Class-based
var NavCrumbler = function( crumbOptions ) {
	return this._init( crumbOptions );
};

NavCrumbler.prototype = {
	_init : function( crumbOptions ) {
		if( !document.getElementById( "navCrumbs" )||typeof document.getElementById( "navCrumbs" ) == "undefined"||document.getElementById( "navCrumbs" )==null) {
			alert("Navcrumbs word ingeladen maar niet gebruikt, verwijder deze uit de templates.");
			return;
		}
			
		this.crumbs = document.getElementById( "navCrumbs" ).getElementsByTagName( "ul" );
		this.crumbOptions = crumbOptions||[]; // Ugly worx voor nou..
		
//19-05-2010 - Onderstaande if weer aangezet om mouseover probleem te verhelpen, stond uit.
		if( !this._isOption("clickable") ) {
			// let op; EVIL - HACKISH - METHOD - WORKAROUND
			var tmpHack = document.getElementById( "navCrumbs" ).getElementsByTagName( "li" );
			for( var t=0;t<tmpHack.length;t++ ) {
				if( tmpHack[t].parentNode.id != "navCrumbs" ) continue;

				tmpHack[t].onmouseover = function() { MyNavCrumbler.hide(); };
			}
			// END
		}

		this.hide();
		// Overschrijf default mouseovers
		// Shakel eerst alle kruimels uit
		for(var i=0,l=this.crumbs.length;i<l;++i) {
			crumb = this.crumbs[i];
			crumb.className = "navCrumb_off";
			crumb.id = "crumb"+i;
			
			if( !this._isOption("clickable") )
				crumb.parentNode.onmouseover = function() { MyNavCrumbler.show( this ); };
			else
				crumb.parentNode.onclick = function() { MyNavCrumbler.show( this ); };
		}
		
		return this;
	},
	
	_isOption : function( key ) {
		if(!this.crumbOptions[key]||this.crumbOptions[key]==null||typeof this.crumbOptions[key]=="undefined") return false;
		return true;
	},
	
	hide : function() {
		for(var c=0;c<this.crumbs.length;c++)
			this.crumbs[c].className = "navCrumb_off";
	},
	
	show : function( crumb, show ) {
		var crumbs = crumb.getElementsByTagName( "ul" );
		
		this.hide();
		
		if(crumb.getElementsByTagName( "ul" ).length<=0) return;
		
		crumbs[0].className = /* (show)?"navCrumbs_off": */"navCrumb_on";
		crumbs[0].onmouseout = function() { MyNavCrumbler.hide(); }; // TEMP, ff checke hoe dit in de praktijk functioneerd.
	}
};

// Toevoegen aan de onload
var GR_NavCrumbsInit = function() { MyNavCrumbler = new NavCrumbler( );  };

if( window.addEventListener ) {
	window.addEventListener( "load", GR_NavCrumbsInit, false );
} else if( window.attachEvent ) {
	window.attachEvent( "onload", GR_NavCrumbsInit );
} else {
	window.onload = function() { GR_NavCrumbsInit(); }
}