if( document.getElementById ){
	isCrumbSupported = true;
}else{
	isCrumbSupported = false;
}

if( taxonomy.length == 1 ){
	isCrumbSupported = false;
}

crumbNum = (printLeaf) ? taxonomy.length : taxonomy.length-1;
doingMenu = false;
mCrumbTimeOut = 300;
mCrumbItemNum = new Array();

lastCrumbIdx = -1;
doingMain = false;

registerOnLoad( "paintCrumb()" );
// ===========================
// crumb menu function library
// ===========================
function arrangeCrumbMenu() {	
	if( !isCrumbSupported ){ return; }
	
	var vLeft, vTop;
	for( var i=1 ; i < crumbNum ; i++ ){
		vLeft = gLeft("crumb"+i);
		vTop = gTop("crumb"+i)+gHeight("crumb"+i);
		//alert( vTop );
		zMove( "mCrumb"+i, vLeft, vTop );
		//alert( gTop( "mCrumb"+i) );
	}
}

function buildCrumbMenu(){
	// building CrumbMenu only if isCrumbSupported
	if( !isCrumbSupported ){ return; }
	registerOnLoad( "arrangeCrumbMenu()" );
	
	outStr="";
	for( i=1; i<crumbNum ; i++ ){
		outStr += '<div style="{position:absolute;z-index:' +(10+i)+ ';}" class="mCrumb" id="mCrumb' +i+ '" '+
		  'onMouseOver="crumbMenuOver(' +i+ ')" onMouseOut="crumbMenuOut(' +i+ ')">'+
		  '<div class="mCrumbFrame">';
		siblingArr = getMenu(taxonomy[i-1],"children");
		if( siblingArr )
			siblingCount = siblingArr.length;
		else
			siblingCount = 0;
		mCrumbItemNum[i] = siblingCount;
		
		for( var j=0; j<siblingCount ; j++ ){
			vTag = siblingArr[j];
			
			// mcItem is menuCrumbItem
			
			if( vTag == taxonomy[i] ){
				outStr += '<div class="mCrumbItemDim">';
				outStr += getMenu(vTag,"title");
				outStr += '</div>';
			}else{ 
				vUrl = getMenu(vTag,"url");
				vHref = ((vUrl.substring(0,4)=='http') ? '' : pathPrfx) + vUrl;
				divStr = '<div id="mcItem' +i+'_'+j+ '"'; 
				eventStr = ' onMouseOver="mcItemOver(' +i+','+j+ ')" onMouseOut="mcItemOut(' +i+','+j+ ')"';
				vIdx = getMenuIdx( vTag );
				divStr += eventStr+' onClick="mcItemClick(' + vIdx + ')"';
				divStr += ' class="mCrumbItem">';
  			
				outStr += divStr;				
				outStr += '<a href="' + vHref + '"' +eventStr+ '>' + getMenu(vTag,"title") + '</a>';
				outStr += '</div>';	
			}
		}
		outStr += '</div></div>';
	}
	document.write(outStr);
}

function mcItemClick( pIdx ){
	var vUrl = getMenuByIdx(pIdx,"url");
	var vHref = ((vUrl.substring(0,4)=='http') ? '' : pathPrfx) + vUrl;
	document.location.href = vHref;
}

function mcItemOver( crumbIdx, mcItemIdx ){
	doingMenu = true;
	setStyle("mcItem"+crumbIdx+"_"+mcItemIdx, "backgroundColor", mCrumbItemHighColor);
}

function mcItemOut( crumbIdx, mcItemIdx ){
	doingMenu = false;
	setStyle("mcItem"+crumbIdx+"_"+mcItemIdx, "backgroundColor", mCrumbItemDefColor);
}

function crumbMenuOver(crumbIdx){
	doingMenu = true;
}

function crumbMenuOut(crumbIdx){
	doingMenu = false;
	setTimeout( "outOfMenu()", mCrumbTimeOut );
}

// ======================
// crumb function library
// ======================
function paintCrumb(){
	if( taxonomy.length == 1 ) return;
	for( i=0 ; i<crumbNum ; i++ ){
		 setStyle("crumb"+i, "borderColor", headerColor );
	}
}

function crumbClick(crumbIdx){
	document.location.href = pathPrfx + getMenu(taxonomy[crumbIdx],"url");
}

function crumbOver(crumbIdx){
	if( !isCrumbSupported ) return;
	doingMain = true;
	if( lastCrumbIdx != crumbIdx && lastCrumbIdx > -1 )
		hideCrumbMenu(lastCrumbIdx);
	lastCrumbIdx = crumbIdx;	
	
	if( mCrumbItemNum[crumbIdx] == 0 ){
		return;
	}else
		showCrumbMenu(crumbIdx);
}

function crumbOut(crumbIdx){	
	if( !isCrumbSupported ) return;
	doingMain = false;
	setTimeout( "outOfMenu()", mCrumbTimeOut );
}

function showCrumbMenu(crumbIdx){
	setStyle("crumb"+crumbIdx, "backgroundColor", "#efefef");
	setStyle("crumb"+crumbIdx, "borderLeftColor", "#999999" );
	setStyle("crumb"+crumbIdx, "borderTopColor", "#999999" );
	setStyle("crumb"+crumbIdx, "borderRightColor", "#ffffff" );
	setStyle("crumb"+crumbIdx, "borderBottomColor", "#ffffff" );

	var	vLeft = gLeft("crumb"+crumbIdx);
	var	vTop = gTop("crumb"+crumbIdx)+gHeight("crumb"+crumbIdx);
	//alert( vTop );
	zMove( "mCrumb"+crumbIdx, vLeft, vTop );
	
	zShow("mCrumb"+crumbIdx);
}

function hideCrumbMenu(crumbIdx){
	setStyle("crumb"+crumbIdx, "backgroundColor", "transparent");
	setStyle("crumb"+crumbIdx, "borderColor", headerColor );
	zHide("mCrumb"+crumbIdx);
}

function outOfMenu(){
	//window.status =	 doingMain +" "+ doingMenu;
	if( !doingMain && !doingMenu )
		hideCrumbMenu(lastCrumbIdx);
}

