// convert our menu item to ext js tree node i.e. classData
function _Menu2Tree(menu, version){
	
	if (Ext.isEmpty(menu))
		return null;
	
	this.id = menu.Title;
	this.cls = "cls";
	this.iconCls = "icon-docs";
	//this.text = menu.Description;
	this.text = menu.Title;   
		
	if (Ext.isEmpty(menu.Children)){
		this.leaf=true;
		this.href = root + 'Text/' + menu.Title + "," + version;
		this.isClass=true;
	}else{
		this.singleClickExpand=true;

		this.href = root + 'Text/' + menu.Title + "," + version;
		this.children = new Array();
		for(var i=0;i<menu.Children.length;i++)				
			this.children[i] =  new _Menu2Tree(menu.Children[i], version);
	}
}


// loads menu from web
LoadMenu = function (version) {
    LoadMask();
    //alert('loading menu tree');

    //alert("cookie: " + Ext.util.Cookies.get("menuVersion"));
    if (versionData.getCount() == 0) {
        versionData.on({
            'load': function (store, record, options) {
                if (version == null) {
                    version = Ext.util.Cookies.get("menuVersion");
                    if (version == null) {
                        store.filter('DefaultVersion', true);
                        if (store.getCount() > 0) {
                            var rec = store.getAt(0);
                            version = rec.get('Key');
                            store.clearFilter();
                        } else {
                            store.clearFilter();
                            var rec = store.getAt(store.getTotalCount() - 1);
                            version = rec.get('Key');
                        }
                    }
                }

                loadGetMenu(version);
            },
            scope: this
        });
        versionData.load();
    } else {
        loadGetMenu(version);
    }
};

function loadGetMenu(version) {
    Ext.Ajax.request({
        url: version != null ? root + 'Home/GetMenu?ver=' + version : root + 'Home/GetMenu/',
        success: function (result) {

            treedata = Ext.decode(result.responseText);
            // if the menuVersion in cookie is empty, then get the default version from the menu
            if (version == null) version = treedata.Version;
            Docs.classData = new _Menu2Tree(treedata, version);

            var tree = Ext.getCmp("api-tree");
            if (tree != null) {
                // populate tree	 
                var root = new Ext.tree.AsyncTreeNode({
                    text: 'Ext JS',
                    id: 'root',
                    expanded: true,
                    children: [Docs.classData]
                });

                tree.setRootNode(root);
                tree.root.render();
            } else {
                OnLoadMenuSuccess();
                Ext.getCmp("cmbVersion").setValue(version);
            }

            // set the current version to cookie with expire day of 7 days
            Ext.util.Cookies.set('menuVersion', version, new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 7)));

            //alert('Docs.classData:'+Ext.util.JSON.encode(Docs.classData));
        },
        failure: function (result) {
            //alert('failure:' + result.responseText);
            alert('failed to load menu from server');
        }
    });
} 

function LoadMask() {
    Ext.Ajax.on('beforerequest', function (connection, response, options) {
        Ext.get(document.body).mask('Please wait...');
    });

    Ext.Ajax.on('requestexception', function (connection, response, options) {
        Ext.get(document.body).unmask();
    });

    Ext.Ajax.on('requestcomplete', function (connection, response, options) {
        Ext.get(document.body).unmask();
    });
}

/*
Docs.classData =
{"id":"apidocs","iconCls":"icon-docs","text":"Help Documentation","singleClickExpand":true,"children":[
	{"id":"help_root","text":"EVENTS","iconCls":"icon-pkg","cls":"package","singleClickExpand":true, children:[
		{"href":"output/Search Event History.htm","text":"Search Event History","id":"search_event_history","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}
		,			
		{"id":"subscribe_to_events","text":"Subscribe to Events","iconCls":"icon-cls","cls":"package","singleClickExpand":true, children:[
			{"href":"output/Events.htm","text":"Events","id":"events","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}
			,
			{"href":"output/User Events.htm","text":"User Events","id":"user_events","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}
		]}
	]}
	,
	{"id":"help_db_root","text":"EVENTS from DB","iconCls":"icon-pkg","cls":"package","singleClickExpand":true, children:[
		{"href":"/Text/Index/Search Event History","text":"Search Event History","id":"Search Event History","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}
		,			
		{"id":"Subscribe to Events","text":"Subscribe to Events","iconCls":"icon-cls","cls":"package","singleClickExpand":true, children:[
			{"href":"/Text/Index/Events","text":"Events","id":"Events","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}
			,
			{"href":"/Text/Index/User Events","text":"User Events","id":"User Events","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}
		]}
	]}
	,
	{"href":"/Text/Index/root","text":"root page from db","id":"String","isClass":true,"iconCls":"icon-cls","cls":"cls","leaf":true}
	
]};
*/
				
Docs.icons = {

	"Ext.chart.Axis":"icon-cls"
	,
	"Ext.chart.BarChart":"icon-cmp"
	,
	"Ext.chart.BarSeries":"icon-cls"
	,
	"Ext.chart.CartesianChart":"icon-cmp"
	,
	"Ext.chart.CartesianSeries":"icon-cls"
	,
	"Ext.chart.CategoryAxis":"icon-cls"
	,
	"Ext.chart.Chart":"icon-cmp"
	,
	"Ext.chart.ColumnChart":"icon-cmp"
	,
	"Ext.chart.ColumnSeries":"icon-cls"
	,
	"Ext.chart.LineChart":"icon-cmp"
	,
	"Ext.chart.LineSeries":"icon-cls"
	,
	"Ext.chart.NumericAxis":"icon-cls"
	,
	"Ext.chart.PieChart":"icon-cmp"
	,
	"Ext.chart.PieSeries":"icon-cls"
	,
	"Ext.chart.Series":"icon-cls"
	,
	"Ext.chart.StackedBarChart":"icon-cmp"
	,
	"Ext.chart.StackedColumnChart":"icon-cmp"
	,
	"Ext.chart.TimeAxis":"icon-cls"
	,
	"Ext.data.Api":"icon-static"
	,
	"Ext.data.Api.Error":"icon-cls"
	,
	"Ext.data.ArrayReader":"icon-cls"
	,
	"Ext.data.ArrayStore":"icon-cls"
	,
	"Ext.data.Connection":"icon-cls"
	,
	"Ext.data.DataProxy":"icon-cls"
	,
	"Ext.data.DataProxy.Error":"icon-cls"
	,
	"Ext.data.DataReader":"icon-cls"
	,
	"Ext.data.DataReader.Error":"icon-cls"
	,
	"Ext.data.DataWriter":"icon-cls"
	,
	"Ext.data.DirectProxy":"icon-cls"
	,
	"Ext.data.DirectStore":"icon-cls"
	,
	"Ext.data.Field":"icon-cls"
	,
	"Ext.data.GroupingStore":"icon-cls"
	,
	"Ext.data.HttpProxy":"icon-cls"
	,
	"Ext.data.JsonReader":"icon-cls"
	,
	"Ext.data.JsonReader.Error":"icon-cls"
	,
	"Ext.data.JsonStore":"icon-cls"
	,
	"Ext.data.JsonWriter":"icon-cls"
	,
	"Ext.data.MemoryProxy":"icon-cls"
	,
	"Ext.data.Node":"icon-cls"
	,
	"Ext.data.Record":"icon-cls"
	,
	"Ext.data.Request":"icon-cls"
	,
	"Ext.data.Response":"icon-cls"
	,
	"Ext.data.ScriptTagProxy":"icon-cls"
	,
	"Ext.data.SortTypes":"icon-static"
	,
	"Ext.data.Store":"icon-cls"
	,
	"Ext.data.Store.Error":"icon-cls"
	,
	"Ext.data.Tree":"icon-cls"
	,
	"Ext.data.XmlReader":"icon-cls"
	,
	"Ext.data.XmlStore":"icon-cls"
	,
	"Ext.data.XmlWriter":"icon-cls"
	,
	"Ext.dd.DD":"icon-cls"
	,
	"Ext.dd.DDProxy":"icon-cls"
	,
	"Ext.dd.DDTarget":"icon-cls"
	,
	"Ext.dd.DragDrop":"icon-cls"
	,
	"Ext.dd.DragDropMgr":"icon-static"
	,
	"Ext.dd.DragSource":"icon-cls"
	,
	"Ext.dd.DragTracker":"icon-cls"
	,
	"Ext.dd.DragZone":"icon-cls"
	,
	"Ext.dd.DropTarget":"icon-cls"
	,
	"Ext.dd.DropZone":"icon-cls"
	,
	"Ext.dd.PanelProxy":"icon-cls"
	,
	"Ext.dd.Registry":"icon-static"
	,
	"Ext.dd.ScrollManager":"icon-static"
	,
	"Ext.dd.StatusProxy":"icon-cls"
	,
	"Ext.direct.JsonProvider":"icon-cls"
	,
	"Ext.direct.PollingProvider":"icon-cls"
	,
	"Ext.direct.Provider":"icon-cls"
	,
	"Ext.direct.RemotingProvider":"icon-cls"
	,
	"Ext.direct.Transaction":"icon-cls"
	,
	"Ext.form.Action":"icon-cls"
	,
	"Ext.form.Action.DirectLoad":"icon-cls"
	,
	"Ext.form.Action.DirectSubmit":"icon-cls"
	,
	"Ext.form.Action.Load":"icon-cls"
	,
	"Ext.form.Action.Submit":"icon-cls"
	,
	"Ext.form.BasicForm":"icon-cls"
	,
	"Ext.form.Checkbox":"icon-cmp"
	,
	"Ext.form.CheckboxGroup":"icon-cmp"
	,
	"Ext.form.ComboBox":"icon-cmp"
	,
	"Ext.form.DateField":"icon-cmp"
	,
	"Ext.form.DisplayField":"icon-cmp"
	,
	"Ext.form.Field":"icon-cmp"
	,
	"Ext.form.FieldSet":"icon-cmp"
	,
	"Ext.form.FormPanel":"icon-cmp"
	,
	"Ext.form.Hidden":"icon-cmp"
	,
	"Ext.form.HtmlEditor":"icon-cmp"
	,
	"Ext.form.Label":"icon-cmp"
	,
	"Ext.form.NumberField":"icon-cmp"
	,
	"Ext.form.Radio":"icon-cmp"
	,
	"Ext.form.RadioGroup":"icon-cmp"
	,
	"Ext.form.TextArea":"icon-cmp"
	,
	"Ext.form.TextField":"icon-cmp"
	,
	"Ext.form.TimeField":"icon-cmp"
	,
	"Ext.form.TriggerField":"icon-cmp"
	,
	"Ext.form.TwinTriggerField":"icon-cmp"
	,
	"Ext.form.VTypes":"icon-static"
	,
	"Ext.grid.AbstractSelectionModel":"icon-cls"
	,
	"Ext.grid.BooleanColumn":"icon-cls"
	,
	"Ext.grid.CellSelectionModel":"icon-cls"
	,
	"Ext.grid.CheckboxSelectionModel":"icon-cls"
	,
	"Ext.grid.Column":"icon-cls"
	,
	"Ext.grid.ColumnModel":"icon-cls"
	,
	"Ext.grid.DateColumn":"icon-cls"
	,
	"Ext.grid.EditorGridPanel":"icon-cmp"
	,
	"Ext.grid.GridDragZone":"icon-cls"
	,
	"Ext.grid.GridPanel":"icon-cmp"
	,
	"Ext.grid.GridView":"icon-cls"
	,
	"Ext.grid.GroupingView":"icon-cls"
	,
	"Ext.grid.NumberColumn":"icon-cls"
	,
	"Ext.grid.PropertyColumnModel":"icon-cls"
	,
	"Ext.grid.PropertyGrid":"icon-cmp"
	,
	"Ext.grid.PropertyRecord":"icon-cls"
	,
	"Ext.grid.PropertyStore":"icon-cls"
	,
	"Ext.grid.RowNumberer":"icon-cls"
	,
	"Ext.grid.RowSelectionModel":"icon-cls"
	,
	"Ext.grid.TemplateColumn":"icon-cls"
	,
	"Ext.layout.AbsoluteLayout":"icon-cls"
	,
	"Ext.layout.AccordionLayout":"icon-cls"
	,
	"Ext.layout.AnchorLayout":"icon-cls"
	,
	"Ext.layout.BorderLayout":"icon-cls"
	,
	"Ext.layout.BorderLayout.Region":"icon-cls"
	,
	"Ext.layout.BorderLayout.SplitRegion":"icon-cls"
	,
	"Ext.layout.BoxLayout":"icon-cls"
	,
	"Ext.layout.CardLayout":"icon-cls"
	,
	"Ext.layout.ColumnLayout":"icon-cls"
	,
	"Ext.layout.ContainerLayout":"icon-cls"
	,
	"Ext.layout.FitLayout":"icon-cls"
	,
	"Ext.layout.FormLayout":"icon-cls"
	,
	"Ext.layout.HBoxLayout":"icon-cls"
	,
	"Ext.layout.MenuLayout":"icon-cls"
	,
	"Ext.layout.TableLayout":"icon-cls"
	,
	"Ext.layout.ToolbarLayout":"icon-cls"
	,
	"Ext.layout.VBoxLayout":"icon-cls"
	,
	"Ext.list.BooleanColumn":"icon-cls"
	,
	"Ext.list.Column":"icon-cls"
	,
	"Ext.list.ColumnResizer":"icon-cls"
	,
	"Ext.list.DateColumn":"icon-cls"
	,
	"Ext.list.ListView":"icon-cmp"
	,
	"Ext.list.NumberColumn":"icon-cls"
	,
	"Ext.list.Sorter":"icon-cls"
	,
	"Ext.menu.BaseItem":"icon-cmp"
	,
	"Ext.menu.CheckItem":"icon-cmp"
	,
	"Ext.menu.ColorMenu":"icon-cmp"
	,
	"Ext.menu.DateMenu":"icon-cmp"
	,
	"Ext.menu.Item":"icon-cmp"
	,
	"Ext.menu.Menu":"icon-cmp"
	,
	"Ext.menu.MenuMgr":"icon-static"
	,
	"Ext.menu.Separator":"icon-cmp"
	,
	"Ext.menu.TextItem":"icon-cmp"
	,
	"Ext.state.CookieProvider":"icon-cls"
	,
	"Ext.state.Manager":"icon-static"
	,
	"Ext.state.Provider":"icon-cls"
	,
	"Ext.tree.AsyncTreeNode":"icon-cls"
	,
	"Ext.tree.DefaultSelectionModel":"icon-cls"
	,
	"Ext.tree.MultiSelectionModel":"icon-cls"
	,
	"Ext.tree.RootTreeNodeUI":"icon-cls"
	,
	"Ext.tree.TreeDragZone":"icon-cls"
	,
	"Ext.tree.TreeDropZone":"icon-cls"
	,
	"Ext.tree.TreeEditor":"icon-cmp"
	,
	"Ext.tree.TreeFilter":"icon-cls"
	,
	"Ext.tree.TreeLoader":"icon-cls"
	,
	"Ext.tree.TreeNode":"icon-cls"
	,
	"Ext.tree.TreeNodeUI":"icon-cls"
	,
	"Ext.tree.TreePanel":"icon-cmp"
	,
	"Ext.tree.TreeSorter":"icon-cls"
	,
	"Ext.util.CSS":"icon-static"
	,
	"Ext.util.ClickRepeater":"icon-cls"
	,
	"Ext.util.Cookies":"icon-static"
	,
	"Ext.util.DelayedTask":"icon-cls"
	,
	"Ext.util.Format":"icon-static"
	,
	"Ext.util.JSON":"icon-static"
	,
	"Ext.util.MixedCollection":"icon-cls"
	,
	"Ext.util.Observable":"icon-cls"
	,
	"Ext.util.TaskRunner":"icon-cls"
	,
	"Ext.util.TextMetrics":"icon-static"
	,
	"Ext.Action":"icon-cls"
	,
	"Ext.Ajax":"icon-static"
	,
	"Ext.BoxComponent":"icon-cmp"
	,
	"Ext.Button":"icon-cmp"
	,
	"Ext.ButtonGroup":"icon-cmp"
	,
	"Ext.ColorPalette":"icon-cmp"
	,
	"Ext.Component":"icon-cls"
	,
	"Ext.ComponentMgr":"icon-static"
	,
	"Ext.CompositeElement":"icon-cls"
	,
	"Ext.CompositeElementLite":"icon-cls"
	,
	"Ext.Container":"icon-cmp"
	,
	"Ext.CycleButton":"icon-cmp"
	,
	"Ext.DataView":"icon-cmp"
	,
	"Ext.DatePicker":"icon-cmp"
	,
	"Ext.Direct":"icon-static"
	,
	"Ext.DomHelper":"icon-static"
	,
	"Ext.DomQuery":"icon-static"
	,
	"Ext.Editor":"icon-cmp"
	,
	"Ext.Element":"icon-cls"
	,
	"Ext.Error":"icon-cls"
	,
	"Ext.EventManager":"icon-static"
	,
	"Ext.EventObject":"icon-static"
	,
	"Ext.FlashComponent":"icon-cmp"
	,
	"Ext.FlashProxy":"icon-static"
	,
	"Ext.Fx":"icon-cls"
	,
	"Ext.History":"icon-static"
	,
	"Ext.KeyMap":"icon-cls"
	,
	"Ext.KeyNav":"icon-cls"
	,
	"Ext.Layer":"icon-cls"
	,
	"Ext.LoadMask":"icon-cls"
	,
	"Ext.MessageBox":"icon-static"
	,
	"Ext.PagingToolbar":"icon-cmp"
	,
	"Ext.Panel":"icon-cmp"
	,
	"Ext.ProgressBar":"icon-cmp"
	,
	"Ext.QuickTip":"icon-cmp"
	,
	"Ext.QuickTips":"icon-static"
	,
	"Ext.Resizable":"icon-cls"
	,
	"Ext.Shadow":"icon-cls"
	,
	"Ext.Slider":"icon-cmp"
	,
	"Ext.Spacer":"icon-cmp"
	,
	"Ext.SplitBar":"icon-cls"
	,
	"Ext.SplitBar.AbsoluteLayoutAdapter":"icon-cls"
	,
	"Ext.SplitBar.BasicLayoutAdapter":"icon-cls"
	,
	"Ext.SplitButton":"icon-cmp"
	,
	"Ext.StoreMgr":"icon-static"
	,
	"Ext.TabPanel":"icon-cmp"
	,
	"Ext.TaskMgr":"icon-static"
	,
	"Ext.Template":"icon-cls"
	,
	"Ext.Tip":"icon-cmp"
	,
	"Ext.ToolTip":"icon-cmp"
	,
	"Ext.Toolbar":"icon-cmp"
	,
	"Ext.Toolbar.Fill":"icon-cmp"
	,
	"Ext.Toolbar.Item":"icon-cmp"
	,
	"Ext.Toolbar.Separator":"icon-cmp"
	,
	"Ext.Toolbar.Spacer":"icon-cmp"
	,
	"Ext.Toolbar.TextItem":"icon-cmp"
	,
	"Ext.Updater":"icon-cls"
	,
	"Ext.Updater.BasicRenderer":"icon-cls"
	,
	"Ext.Updater.defaults":"icon-cls"
	,
	"Ext.Viewport":"icon-cmp"
	,
	"Ext.Window":"icon-cmp"
	,
	"Ext.WindowGroup":"icon-cls"
	,
	"Ext.WindowMgr":"icon-static"
	,
	"Ext.XTemplate":"icon-cls"
	,
	"Array":"icon-cls"
	,
	"Date":"icon-cls"
	,
	"Ext":"icon-static"
	,
	"Function":"icon-cls"
	,
	"Number":"icon-cls"
	,
	"String":"icon-cls"
	};

