var urlPrefix = '';

function initXmlHttp(){
    if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
   	return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

function switchModel(url, label) {
    var xmlHttp = initXmlHttp();
    xmlHttp.open("POST", url, false);
    xmlHttp.send(null);
    window.document.title = label;
    top.MAIN.location.href=urlPrefix+"topElement";
	if (top.NAVTREE)
	    top.NAVTREE.location.reload(true);
	else
        top.frames[1].location.reload(true); // workaround for Safari/Chrome
    top.BOTTOM.location.reload(true);
    top.LOGO.location.href = "model/logo";
    top.PFINFO.location.href = "model/right";
}

function checkTop() {
		  if (top.frames.length == 0) {
		    document.cookie = "newURL=" + escape(document.URL) + "; path=/;"
		    ver = parseInt(navigator.appVersion, 10);
		    if ( ((navigator.appName == "Netscape") && (ver >= 3)) ||
		         ((navigator.appName == "Microsoft Internet Explorer") && (ver >= 4)) )
			      location.replace("/ModelViewer/index.html?page=" + escape(document.URL));
			    else
			      location = "/ModelViewer/index.html?page=" + escape(document.URL);
		    };
		}


function init()
{
	checkTop();
	var location = new String(document.location.href);
  	if(location.indexOf('/index/') != -1)
	urlPrefix = "../";
	if(location.indexOf('/typecodes/') != -1)
	urlPrefix = "../";
	if(location.indexOf('/codelists/') !=-1)
	urlPrefix = "../";

	//Main Menu items:
	menus[0] = new menu(22, "horizontal", 20, 10, -2, -2, "#CACAFF", "#0000A0", "Verdana,Helvetica", 9,
		"bold", "bold", "black", "white", 1, "gray", 2, "", false, true, true, true, 12, true, 4, 4, "black");
	//menus[0].addItem("javascript:top.MAIN.location.href=urlPrefix+'topElement'", "", 85, "center", "Top", 0);
	menus[0].addItem(urlPrefix+'topElement', "", 85, "center", "Top", 0);
	menus[0].addItem("#", "", 85, "center", "Links", 1);
	menus[0].addItem("#", "", 85, "center", "View", 2);
	menus[0].addItem("#", "", 85, "center", "Model", 4);
	menus[0].addItem("#", "", 85, "center", "Help", 3);
	//menus[0].addItem("http://forums.pilotfishtechnology.com", "NEWWIN", 85, "center", "Forum", 0);


//Sub Menu for 2nd Main Menu Item ("Links"):
	menus[1] = new menu(140, "vertical", 0, 0, -5, -5, "#CACAFF", "#0000A0", "Verdana,Helvetica", 9, "bold",
		"bold", "black", "white", 1, "gray", 2, "", false, true, false, true, 6, true, 4, 4, "black");
	//menus[1].addItem("http://www.acord.org", "NEWWIN", 22, "left", "ACORD Home", 0);
	menus[1].addItem("http://www.pilotfishtechnology.com", "NEWWIN", 22, "left", "PilotFish Home", 0);
	//menus[1].addItem("http://www.pilotfishtechnology.com/download.htm", "NEWWIN", 22, "left", "XCS Home", 0);

//Sub Menu for 3rd Main Menu Item ("View"):
	menus[2] = new menu(160, "vertical", 0, 0, -5, -5, "#CACAFF", "#0000A0", "Verdana,Helvetica", 9, "bold",
		"bold", "black", "white", 1, "gray", 2, "", false, true, false, false, 0, true, 4, 4, "black");
	var xmlHttp = initXmlHttp();
	xmlHttp.open("GET", urlPrefix+"menu/viewXml", false);
	xmlHttp.send(null);

   	var xmlModels = xmlHttp.responseXML;
   	var items = xmlModels.getElementsByTagName("MenuItem");
   	for (var i=0; i<items.length; i++) {
		var label = items[i].getAttribute("label");
		var link = items[i].getAttribute("link");
		//menus[2].addItem("javascript:document.location.href=urlPrefix + '"+link+"'", "", 22, "left",label , 0);
		menus[2].addItem(urlPrefix + link, "", 22, "left",label , 0);
   	}

//Sub Menu for Main Menu Item ("Help"):
	menus[3] = new menu(140, "vertical", 0, 0, 0, 0, "#CACAFF", "#0000A0", "Verdana,Helvetica", 9, "bold", "bold", "black", "white", 1, "gray", 2, "", false, true, false, false, 0, true, 4, 4, "black");
	menus[3].addItem("mailto:services@pilotfishtechnology.com?Subject=ModelViewer%20Question", "", 22, "left", "Submit Question", 0);
	menus[3].addItem("mailto:support@pilotfishtechnology.com?Subject=PilotFish%20Model%20Viewer%20Support", "", 22, "left", "Support", 0);


//Sub Menu for Sub Menu "Model":
	xmlHttp.open("GET", urlPrefix+"menu/modelsXml", false);
	xmlHttp.send(null);
	//!!! 0001619 sub-menu width is extended to 400 to fit new models with long names
	menus[4] = new menu(400, "vertical", 0, 0, 0, 0, "#CACAFF", "#0000A0", "Verdana,Helvetica", 9, "bold", "bold", "black", "white", 1, "gray", 2, "", false, true, false, false, 0, true, 4, 4, "black");

    var xmlModels = xmlHttp.responseXML;
	var models = xmlModels.getElementsByTagName("model");
	for (var i=0; i<models.length; i++) {
		var modelKey = models[i].getAttribute("key");
		var modelLabel = models[i].getAttribute("label");
		var idx = 5+i;
		menus[4].addItem("#", "", 22, "left",modelLabel ,idx);
	}
	for (var i=0; i<models.length; i++) {
		var modelKey = models[i].getAttribute("key");
		var modelLabel = models[i].getAttribute("label");
		var idx = 5+i;
		menus[idx] = new menu(140, "vertical", 0, 0, 0, 0, "#CACAFF", "#0000A0", "Verdana,Helvetica", 9, "bold", "bold", "black", "white", 1, "gray", 2, "", false, true, false, false, 0, true, 4, 4, "black");
		var versions = models[i].getElementsByTagName("version");
		for(var j=0; j<versions.length; j++) {
        	var verLabel = versions[j].getAttribute("label");
  			var verKey = versions[j].getAttribute("key");
   			var cmd = "javascript:switchModel(urlPrefix+'switch/"+modelKey+"_"+verKey+"', '"+modelLabel+" "+verLabel+"')";
    	    menus[idx].addItem(cmd, "", 22, "left",verLabel , 0);
		 }
	 }

} //OUTER CLOSING BRACKET. EVERYTHING ADDED MUST BE ABOVE THIS LINE.
