﻿var winDialog;
Ext.onReady(function(){

    Ext.QuickTips.init();
    
    //Read in XML Doc
    var xmlString = document.getElementById("taXMLHolder").value;
    var xmlMenuDoc = loadXMLString(xmlString);

    //Create toolbar
    var tb = new Ext.Toolbar();
    tb.render('toolbarMenu');

    //Create toolbar buttons
    var xmlNodes = xmlMenuDoc.documentElement.selectNodes("./siteMapNode");
    var intMenuID = 0;
    for (var i=0;i < xmlNodes.length;i++) 
    {
        xmlNode = xmlNodes[i];
        xmlPageNodes = xmlNode.selectNodes("siteMapNode");
        var title = xmlNode.getAttribute("title");
        title = title.replace("~AMP~","&");
        if (xmlPageNodes.length == 0) {
            title = "&nbsp;&nbsp;" + title + "&nbsp;&nbsp;";
        }
        var tooltip = xmlNode.getAttribute("description");
        tooltip = tooltip.replace("~AMP~","&");
        var the_url = xmlNode.getAttribute("url");
        the_url = the_url.replace("~AMP~","&");
        var the_function = new Function("document.getElementById('ifrContent').src = '" + the_url + "';");
        if (xmlPageNodes.length > 0) {
            var tbb = new Ext.Toolbar.MenuButton(
                {
                    id: 'tbb' + i,
                    text: title,
                    tooltip: tooltip,
                    handler: the_function
                });
        }
        else {
            var tbb = new Ext.Toolbar.Button(
                {
                    id: 'tbb' + i,
                    text: title,
                    tooltip: tooltip,
                    handler: the_function
                });
        }        
        tb.add(tbb);
        
        //Add any menus if applicable
        if (xmlPageNodes.length > 0) {
            var retObj = AddMenu(xmlNode,intMenuID);
            tbb.menu = retObj.menu;
            intMenuID = retObj.intMenuID;
        }
    }
    window.ifrContent.onclick = function(e) { Ext.menu.MenuMgr.hideAll()};

});
function AddMenu(xmlObj,intMenuID) {
    var menuid = 'menu'+intMenuID;
    var menu = new Ext.menu.Menu(
        {
            id: menuid
        });
    intMenuID = intMenuID + 1;
    var xmlNodes = xmlObj.selectNodes("siteMapNode");
    for (var i=0;i < xmlNodes.length;i++) {
        var xmlNode = xmlNodes[i];
        var xmlSubNodes = xmlNode.selectNodes("siteMapNode");
        var title = xmlNode.getAttribute("title");
        title = title.replace("~AMP~","&");
        var the_url = xmlNode.getAttribute("url");
        the_url = the_url.replace("~AMP~","&");
        the_url = String.fromCharCode(34) + the_url + String.fromCharCode(34);
        var icon = xmlNode.getAttribute("icon");
        icon = icon.replace("~AMP~","&");
        var menuitem = new Ext.menu.Item(
        {
            text: title,
            href: 'javascript:NavigateContent('+ the_url + ')',
            icon: icon
        });
        menu.add(menuitem);
    }

    return {
        menu: menu,
        intMenuID: intMenuID
    };
}
function loadXMLString(txt) {
    try {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async="false";
        xmlDoc.loadXML(txt);
        return(xmlDoc); 
    }
    catch(e) {
        try {
            parser=new DOMParser();
            xmlDoc=parser.parseFromString(txt,"text/xml");
            return(xmlDoc);
        }
        catch(e) {
            alert(e.message)
        }
    }
    return(null);
}
function NavigateContent(url) {
    document.getElementById("ifrContent").src = url;
}
function calcHeight()
{
  //find the height of the internal page
  var the_height;
  var elemIFR = document.getElementById("ifrContent");
  if (elemIFR.contentDocument && elemIFR.contentDocument.body.offsetHeight) {
    the_height = elemIFR.contentDocument.body.offsetHeight + 20;
  }  
  else {
    //ie height
    the_height = elemIFR.contentWindow.document.body.scrollHeight + 20;
  }
      
  //If the height is too small it will mess up the 'select color' menu
  //So we set a mininum height of 200px.
  if (the_height < 200) {
    the_height = 200;
  }
  
  //change the height of the iframe
  elemIFR.height = the_height;
}
function clearMenus() {
    Ext.menu.MenuMgr.hideAll();
}
function OpenDialog(strType,intTab) {
    if (!winDialog) {
        tpanDialog = new Ext.TabPanel({
                applyTo        : strType + '-tabs',
                autoTabs       : true,
                deferredRender : false,
                border         : false
            });

        winDialog = new Ext.Window({
            applyTo     : strType + '-win',
            layout      : 'fit',
            width       : 600,
            height      : 400,
            closeAction :'hide',
            plain       : true,
            items       : tpanDialog,
            buttons: [{
                text     : 'Close',
                handler  : function(){
                    winDialog.hide();
                }
            }]
        });
    }
    tpanDialog.setActiveTab(intTab - 1);
    winDialog.show();
}


