var debugOn=false;

var xmlDoc;
var menuNodeList;
function loadXML(xmlFile) {
	//load xml file...
	// code for IE...
	if(window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		return xmlDoc.load(xmlFile);
	}
	// code for Mozilla, etc...
	else {
		var xmlhttp = new window.XMLHttpRequest();
		xmlhttp.open("GET", xmlFile, false);
		xmlhttp.send(null);
		xmlDoc = xmlhttp.responseXML.documentElement;
	}
}

/*
 * Author:	A.T.A. van Hout
 * Comment:	Menu for new Robeco layout with external CSS and Javascript from Info.nl
*/

var menuTarget = new Array();
var menuXML = new Array;
var counter = 0;

var FLASH_ACTIONMENU_URL = new Array();
var FLASH_ACTIONMENU_WIDTH = new Array();
var FLASH_ACTIONMENU_HEIGHT = new Array();
var FLASH_ACTIONMENU_VERSION = new Array();
var FLASH_ACTIONMENU_VARIABLES = new Array();
var FLASH_ACTIONMENU_DIV_ID = new Array();
var FLASH_ACTIONMENU_COUNTER = 0;


function instantiateInsync2(targetDiv, xmlMenu, reset)
{
	var menuContent;
	if(document.getElementById) 
	{
		if(document.getElementById(targetDiv))
		{
			try
			{
				loadXML(xmlMenu);
				menuContent = xmlDoc;
				if(menuContent.getElementsByTagName('menu').length==0) 
				{
					menuNodeList = menuContent.getElementsByTagName('menu:menu')[0];
					menuPosLeft = menuContent.getElementsByTagName('menu:posleft')[0];
					menuPosTop = menuContent.getElementsByTagName('menu:postop')[0];
				} 
				else 
				{
					menuNodeList = menuContent.getElementsByTagName('menu')[0];
					menuPosLeft = menuContent.getElementsByTagName('posleft')[0];
					menuPosTop = menuContent.getElementsByTagName('postop')[0];
				}
				buildMenu2(targetDiv, menuNodeList, menuPosLeft, menuPosTop);
				
				if(reset!= true)
				{
					menuTarget[counter] = targetDiv;
					menuXML[counter] = xmlMenu;
					counter++;
				}
			}
			catch(ex)
			{
				if(debugOn)
				{
					window.status = ex.message;
				}
			}
		}
	}
	
	return;
}

function resetMenu2()
{
	for(i=0;i<menuTarget.length;i++)
	{
		var currentMenuDiv = document.getElementById(menuTarget[i]);
		if(currentMenuDiv)
		{
			instantiateInsync2(menuTarget[i], menuXML[i], true);
		}
	}
}

function resetSpecifiedMenu2(targetDiv, xmlMenu)
{
	var currentMenuDiv = document.getElementById(targetDiv);
	if(currentMenuDiv)
	{
		instantiateInsync2(targetDiv, xmlMenu, true);
	}
}

function buildMenu2(targetDiv, menuNodes, menuPosLeft, menuPosTop) 
{
	var str='';
	var i;
	var cssClass;
	
	//Setup main menu items...
	for(i=0;i<menuNodes.childNodes.length;i++) 
	{
		if (menuNodes.childNodes[i].childNodes[0].attributes!=null && menuNodes.childNodes[i].childNodes[0].attributes.length>0 && menuNodes.childNodes[i].childNodes[0].attributes[0]!=null) 
		{
			cssClass = menuNodes.childNodes[i].childNodes[0].getAttribute('cssclass');
		}

		if (menuNodes.childNodes[i].childNodes[0].childNodes[0] != null)
		{
			if(cssClass != null && cssClass != '')
			{
				str+='<div class="' + cssClass + '"><h3>';
			}
			else
			{ // No CSS class, so no h3 tag
				str+='<div>';
			}
			str+=menuNodes.childNodes[i].childNodes[0].childNodes[0].nodeValue;
			if(cssClass != null && cssClass != '')
			{
				str+='</h3>';
			}
		}
		else
		{
			if (i==0)
			{
				str+='<div>';
			}
			else
			{
				str+='<div style="padding-top:8px;">';
			}
		}
		str+=addSubItems2(menuNodes.childNodes[i].childNodes);
		str+='</div>';
	}
	
	document.getElementById(targetDiv).innerHTML=str;
			
	if(ActionMenu != null) 
	{
		ActionMenu.collapseAll();
	}
	
	for(index = 0; index < FLASH_ACTIONMENU_COUNTER; index++)
	{	
		writeActionmenuFlash(
			FLASH_ACTIONMENU_DIV_ID[index], 
			FLASH_ACTIONMENU_URL[index], 
			FLASH_ACTIONMENU_WIDTH[index], 
			FLASH_ACTIONMENU_HEIGHT[index], 
			FLASH_ACTIONMENU_VERSION[index], 
			FLASH_ACTIONMENU_VARIABLES[index]);
	}
}

function addSubItems2(nodes) 
{
	var str='';
	var j;
	var aLink, aTarget;
	var cssClass;
	var type;
	var altText;
	var inactive;
	var previousType = '';
	var previousLevel = 1;
	var level;
		
	//First child is always a main menu item...	
	for(j=1;j<nodes.length;j++) 
	{
		//Setup submenu items...
		if (nodes[j].attributes!=null && nodes[j].attributes[1]!=null) 
		{
			aLink=nodes[j].getAttribute('action'); 
			aTarget=nodes[j].getAttribute('target');
			cssClass=nodes[j].getAttribute('cssclass');
			type=nodes[j].getAttribute('type');
			altText=nodes[j].getAttribute('alt');
			inactive=nodes[j].getAttribute('inactive');
			level=nodes[j].getAttribute('level');
			if(level == null || level == '')
			{
				level = 1; // Default level
			}
		}
		
		if(previousLevel > level)
		{
			if(previousType == 'list')
			{
				str+='</ul>';
				previousType = '';
			}
			for(l = 0; l < (previousLevel - level); l++)
			{
				str+='</div>';
			}
		}
		
		if(previousType == 'list' && type != 'list')
		{
			str+='</ul>';
		}
		
		// Add submenu items...
		switch(type)
		{
			case 'list':
				
				if(previousType != 'list')
				{
					str+='<ul>';
				}				
				
				if(inactive!= null && inactive!='')
				{
					str+='<li><span';
					
					if(cssClass != null && cssClass != '')
					{
						str+=' class="' + cssClass + '"';
					}
					
					str+=' title="' + inactive + '">' + nodes[j].childNodes[0].nodeValue + '</span></li>';
				}
				else
				{
					if(aLink!= null && aLink!='')
					{
						str+='<li><a href="' + aLink + '"';
						
						if(cssClass != null && cssClass != '')
						{
							str+=' class="' + cssClass + '"';
						}
						if(altText != null && altText != '')
						{
							str+=' title="' + altText + '"';
						}
						if(aTarget != null && aTarget != '')
						{
							str+=' target="' + aTarget + '"';
						}
						
						str+='>' + nodes[j].childNodes[0].nodeValue + '</a></li>';
					}
					else
					{
						str+='<li><span';
						
						if(cssClass != null && cssClass != '')
						{
							str+=' class="' + cssClass + '"';
						}
						if(altText != null && altText != '')
						{
							str+=' title="' + altText + '"';
						}
						
						str+='>' + nodes[j].childNodes[0].nodeValue + '</span></li>';
					}
				}
			break;
			
			case 'box':
				if(level > 1)
				{
					if(cssClass != null && cssClass != '')
					{
						str+='<div class="' + cssClass + '"><h3>';
					}
					else
					{ // No CSS class, so no h3 tag
						str+='<div>';
					}
					str+=nodes[j].childNodes[0].nodeValue;
					if(cssClass != null && cssClass != '')
					{
						str+='</h3>';
					}
				}
			break;
			case 'banner':
				var image = nodes[j].childNodes[0].nodeValue;
				if(image != null && image != '')
				{
					str+='<a href=' + aLink;
					if(cssClass != null && cssClass != '')
					{
						str+=' class="' + cssClass + '"';
					}
					if(aTarget != null && aTarget != '')
					{
						str+=' target="' + aTarget+ '"';
					}
					str+='><img src=' + image;
					if(altText != null && altText != '')
					{
						str+=' alt="' + altText + '"';
					}
					if(cssClass != null && cssClass != '')
					{
						str+=' class="' + cssClass + '"';
					}
					str+='/></a>';

				}
			break;
			
			case 'banner2':
				var image = nodes[j].childNodes[0].nodeValue;
				if(image != null && image != '')
				{
					str+='<img src=' + image;
					if(altText != null && altText != '')
					{
						str+=' alt="' + altText + '"';
					}
					if(cssClass != null && cssClass != '')
					{
						str+=' class="' + cssClass + '"';
					}
					if(aTarget != null && aTarget != '')
					{
						str+=' target="' + aTarget+ '"';
					}

					str+='>';
				}
				alert('str: ' + str );
			break;
			
			case 'imagebox':
				if(cssClass != null && cssClass != '')
				{
					str+='<div class="' + cssClass + '"><h3 class="image">';
				}
				str+=nodes[j].childNodes[0].nodeValue;
				str+='</h3>';				
			break;
			
			case 'flash':
				try
				{
					FLASH_ACTIONMENU_URL[FLASH_ACTIONMENU_COUNTER] = nodes[j].getAttribute('flashurl');
					FLASH_ACTIONMENU_WIDTH[FLASH_ACTIONMENU_COUNTER] = nodes[j].getAttribute('flashwidth');
					FLASH_ACTIONMENU_HEIGHT[FLASH_ACTIONMENU_COUNTER] = nodes[j].getAttribute('flashheight');
					FLASH_ACTIONMENU_VERSION[FLASH_ACTIONMENU_COUNTER] = nodes[j].getAttribute('flashversion');
					FLASH_ACTIONMENU_VARIABLES[FLASH_ACTIONMENU_COUNTER] = nodes[j].getAttribute('flashvars');
					FLASH_ACTIONMENU_DIV_ID[FLASH_ACTIONMENU_COUNTER] = nodes[j].getAttribute('flashdivid');
					FLASH_ACTIONMENU_COUNTER++;
				}
				catch(ex)
				{
					if(debugOn)
					{
						window.status = ex.message;
					}
				}
				
				str+=nodes[j].childNodes[0].nodeValue;
			break;
			
			default:
				str+=nodes[j].childNodes[0].nodeValue;
			break;
		}
		
		previousType = type;
		previousLevel = level;
	}
	
	return str;
}

function writeActionmenuFlash(divId, url, width, height, version, flashvariables)
{
	try
	{
		var flash = new SWFObject(url, "robeco", width, height, version, "#FFFFFF");
		if(flash != null && flash.installedVer.versionIsValid(flash.getAttribute("version")))
		{
			flash.addParam("scale", "noscale");
			flash.addParam("wmode", "transparent");
			
			// flash variables:
			var flashvars = flashvariables;
			if(flashvars != null && flashvars != '')
			{
				var flashvarArray = flashvars.split('&');
				for(i = 0; i < flashvarArray.length; i++)
				{
					if(debugOn)
					{
						window.status = flashvarArray[i].split('=')[0] + ': ' + flashvarArray[i].split('=')[1];
					}
					flash.addVariable(flashvarArray[i].split('=')[0], flashvarArray[i].split('=')[1]);
				}
			}
			
			flash.write(divId);
		}
	}
	catch(e)
	{
		if(debugOn)
		{
			window.status = ex.message;
		}
	}
}
