// Copyright (c) 2008 Graphic Vision NeuroInformatics, Inc.
// Version 2.02

var LinkToSite = function(site)
{
    window.open("http://" + site);
}

Masada_235 = {};
with(Masada_235)
{
    Masada_235.d = document;
    Masada_235.$ = function()
    {
        return document.getElementById(arguments[0]);
    }
    
    Masada_235.$$ = function()
    {
        return document.createElement(arguments[0]);
    }

    Masada_235.ApplicationManager = function(resources)
    {
        This = this;
        var Resources = resources;

        var Handlers = {};
        this.AddHandler = function(id, method)
        {
            Handlers[id] = method;
        }

        this.OnMenuClick = function(id)
        {
            //alert('id=' + id);
            if (Handlers[id])
            {
                Handlers[id]();
                return;
            }
            for (var i = 0; i < Resources.length; i++)
            {
                var Resource = Resources[i];
                var Id = Resource.Id;
                if (Id == id)
                {
                    var Panel = Resource.Panel;
                    var Instance = This[Id];
                    if (typeof (Instance) == 'undefined')
                    {
                        Resource.ContentMgr.Insert(Panel);
                        if (Resource.Instance)
                        {
                            Instance = Resource.Instance;
                        }
                        else
                        {
                            Instance = new Resource.Constructor(Resource);
                        }
                        Instance.BindTo(Resource.Panel.Container);
                        if (Instance.Init) Instance.Init(Resource);
                        This[Id] = Instance;
                    }
                    Resource.ContentMgr.CurrentPanel(Panel);
                    if (Instance && Instance.Focus) Instance.Focus(Id);
                    return;
                }
            }
        }
    }

    Masada_235.Panel = function(id, width, height, borderColor, backgroundColor, label, overflow)
    {
        var Container = $$('div');
        var Content = Container;
        var Id = null;
        var Width = 0;
        var Height = 0;
        var HdrHeight = 0;
        var FtrHeight = 0;
        var BorderColor = 'transparent';
        var BackgroundColor = 'transparent';
        var Label = '';

        var Overflow = 'auto';

        var Hdr = null;
        var Ftr = null;

        var OnRenderComplete = function(rtn)
        {
            if (rtn == 'Ok')
            {
                if (Hdr && HdrType != 'Std') Hdr.style.background = 'url(ImageCashe/' + Id + '_hdr.png) ' + 'no-repeat';
                if (Ftr && FtrType != 'Std') Ftr.style.background = 'url(ImageCashe/' + Id + '_ftr.png) ' + 'no-repeat';
            }
            else
                alert(rtn);
        }

        if (arguments.length == 0)
        {
        }
        else if (arguments.length > 1)
        {
            Id = id;
            Width = width;
            Height = height;
            Container.style.font = 'normal 9pt arial';
            Container.style.width = width;

            Hdr = Container.appendChild($$('div'));
            Hdr.style.height = '24px';
            Hdr.style.width = width + 'px';

            BorderColor = borderColor;
            BackgroundColor = backgroundColor;
            Label = label;
            Overflow = overflow;

            Content = Container.appendChild($$('div'));
            Content.style.overflow = Overflow;
            Content.style.height = height + 'px';
            Content.style.backgroundColor = BackgroundColor;
            Content.style.borderStyle = 'solid';
            Content.style.borderColor = BorderColor;
            Content.style.borderWidth = '0px 2px 0px 2px';

            Ftr = Container.appendChild($$('div'));
            Ftr.style.height = '30px';
            Ftr.style.width = width + 'px';
            Masada.AjaxService.RenderPanelImages(id, Width, Height, BorderColor, BackgroundColor, Label, OnRenderComplete, OnAjaxErrors);
        }
        else
        {
            var PanelNode = arguments[0];

            Id = PanelNode.getAttribute('Id');
            Height = parseInt(PanelNode.getAttribute('Height'));
            Width = parseInt(PanelNode.getAttribute('Width'));
            var BorderWidth = parseInt(PanelNode.getAttribute('BorderWidth'));
            var Type = PanelNode.getAttribute('Type');
            Container.style.width = Width + 'px';

            var HeaderNode = PanelNode.selectSingleNode("Header");
            var HdrType = null;
            if (HeaderNode != null)
            {
                HdrType = HeaderNode.getAttribute('Type');
                HdrHeight = parseInt(HeaderNode.getAttribute('Height'));
                Label = HeaderNode.getAttribute('Label');
                Hdr = Container.appendChild($$('div'));
                if (HdrHeight) Hdr.style.height = HdrHeight - 2 + 'px';
                var HeaderStyleNode = HeaderNode.selectSingleNode("Style");
                if (HeaderStyleNode) new Style(HeaderStyleNode).SetStyle(Hdr);
            }

            var FooterNode = PanelNode.selectSingleNode("Footer");

            if (HeaderNode || FooterNode)
            {
                Content = Container.appendChild($$('div'));
                Content.style.borderStyle = 'solid';
                Content.style.borderWidth = '0 ' + BorderWidth + 'px ' + '0 ' + BorderWidth + 'px';
            }

            var StyleNode = PanelNode.selectSingleNode("Style");
            if (StyleNode != null)
            {
                var PanelStyle = new Style(StyleNode);
                PanelStyle.SetStyle(Content);
                if (PanelStyle.backgroundColor) BackgroundColor = PanelStyle.backgroundColor;
                if (PanelStyle.borderColor) BorderColor = PanelStyle.borderColor;
            }

            if (FooterNode)
            { // there's a problem here - when we change headernode to footernode it breaks
                var FtrType = FooterNode.getAttribute('Type');
                Ftr = Container.appendChild($$('div'));
                FtrHeight = parseInt(FooterNode.getAttribute('Height'));
                if (FtrHeight) Ftr.style.height = FtrHeight + 'px';
                var FooterStyleNode = FooterNode.selectSingleNode("Style");
                if (FooterStyleNode) new Style(FooterStyleNode).SetStyle(Ftr);
            }

            var height = (Height - HdrHeight - FtrHeight);
            if (height > 0) Content.style.height = height + 'px';
            else Content.style.height = '0px';
            if (HdrType || FtrType && (!(HdrType == 'Std' && FtrType == 'Std')))
            {
                Masada.AjaxService.RenderPanel(SerializeXML(PanelNode), OnRenderComplete, OnAjaxErrors);
            }
        }

        this.GetHeader = function()
        {
            return Hdr;
        }

        this.Div = Container;
        this.Footer = Ftr;
        this.Header = Hdr;
        this.Container = Content;
    }

    Masada_235.ContentManager = function(width, height)
    {
        var This = this;
        var Width = width + 'px';
        var Height = height + 'px';

        var CurrentDiv = null;
        var count = 0;
        var Divs = [];
        Divs.length = 0;

        var Properties = function()
        {
            this.Name = null;
            this.IsDisabled = false;
            this.Overflow = 'hidden';
            this.Visible = function(state) { }
            this.Clear = function() { ClearDiv(this); }
        }

        var Container = $$('Div');
        Container.style.cssText = "";
        Container.style.width = Width;
        Container.style.height = Height;
        Container.style.textAlign = 'left';
        Container.style.position = 'relative';
        Container.style.overflow = 'hidden';
        Container.style.margin = '0px';
        Container.style.padding = '0px';
        //Container.style.zIndex = 1000;

        var InsertNew = function(id, overflow)
        {
            var div = $$('div');
            div.id = id;
            div.style.width = Width;
            div.style.height = Height;
            div.Properties = new Properties();
            if (arguments.length == 2) div.Properties.Overflow = overflow;
            if (Divs.length == 0)
            {
                CurrentDiv = div;
            }
            InitializeDiv(div);
            Divs.push(div);
            Container.appendChild(div);
            return div;
        }

        var Insert = function(panel)
        {
            var div = panel.Div;
            div.Properties = new Properties();
            if (Divs.length == 0)
            {
                CurrentDiv = div;
            }
            InitializeDiv(div);
            Divs.push(div);
            Container.appendChild(div);
            return panel;
        }

        var Clear = function()
        {
            DeleteChildren(Container);
        }

        var Find = function(id)
        {
            for (var i = 0; i < Divs.length; i++)
            {
                if (Divs[i].id == id) return Divs[i];
            }
            return null;
        }

        var InitializeDiv = function(div)
        {
            div.style.position = 'absolute';
            div.style.overflow = div.Properties.Overflow;
            div.style.display = 'none';
        }


        var CurrentPanel = function(panel)
        {
            var div = panel.Div;
            //if (arguments.length == 0 && CurrentDiv) return CurrentDiv;
            //if (div.Properties.IsDisabled) return;
            div.style.display = 'block';

            if (CurrentDiv && div != CurrentDiv)
            {
                CurrentDiv.style.display = 'none';
                CurrentDiv = div;
            }
        }

        Container.style.visibility = 'visible';

        var BindTo = function(parent)
        {
            parent.appendChild(Container);
            return this;
        }

        this.BindTo = BindTo;
        this.Find = Find;
        this.Insert = Insert;
        this.InsertNew = InsertNew;
        this.CurrentPanel = CurrentPanel;
        this.Container = Container;
    }


    Masada_235.LoadResource = function(resource, type, container, onCompleteHandler)
    {
        var ResourceId = null;
        var Instance = null;
        if (typeof(resource) == 'string') ResourceId = resource;
        else
        {
            ResourceId = resource.Id
            Instance = resource.Instance;
        }
        var Type = type;
        var OnCompleteHandler = null;
        if (arguments.length > 3) OnCompleteHandler = onCompleteHandler;
        var callback = function(rtn)
        {
            switch(Type)
            {
                case 'HTML':
                {
                    container.innerHTML = rtn;
                    break;
                }
                case 'JS':
                {
                    (new ScriptManager()).InsertScript(ResourceId + '_Js',rtn);
                    var obj = eval('new ' + ResourceId + '(resource);');
                    obj.BindTo(container);
                    if (Instance && Instance.Init) Instance.Init(resource);
                    break;
                }
            }
            if (OnCompleteHandler) OnCompleteHandler(resource);
        }
        Masada.AjaxService.LoadAsciiFile(ResourceId,callback,OnAjaxErrors);
    }
    
    Masada_235.LoadPanel = function(resource, onCompleteHandler)
    {
        var ResourceId = resource.Id;
        var Container = resource.Panel.Container;
        var ResourceType = resource.Type;
        var Instance = resource.Instance;
        
        if (Instance == null)
        {
            LoadResource(resource, ResourceType, Container, onCompleteHandler); 
        }
        else
        {
            Instance.BindTo(Container);
            if (Instance.Init)Instance.Init(resource);
        }
    }
    
    Masada_235.LoadContent = function(resource, panel, onCompleteHandler)
    {
        var Resource = resource;
        var Panel = panel;
        var OnCompleteHandler = null;
        if (arguments.length > 2) OnCompleteHandler = onCompleteHandler;
        var callback = function(rtn)
        {
            Panel.innerHTML = rtn;
            if (OnCompleteHandler) OnCompleteHandler(Resource);
        }
        Masada.AjaxService.LoadAsciiFile(Resource,callback,OnAjaxErrors);
    }
    
    Masada_235.LoadSysContent = function(path, panel)
    {
        var callback = function(rtn)
        {
            panel.innerHTML = rtn;
            //alert(rtn);
            //var Doc = new XmlDom("<test></test>");
        }
        Masada.AjaxService.GetAsciiFile(path,true,callback,OnAjaxErrors);
    }

    Masada_235.LoadJs = function(id, path, callback)
    {
        var Callback = callback;
        var Id = id;
        var onLoadComplete = function(rtn)
        {
            (new ScriptManager()).InsertScript(Id,rtn);
            if (Callback) Callback();
        }

        Masada.AjaxService.GetAsciiFile(path,false,onLoadComplete,OnAjaxErrors);
    }
    
    Masada_235.LoadScript = function(resource, callback)
    {
        var Callback = callback;
        var onLoadComplete = function(rtn)
        {
            (new ScriptManager()).InsertScript(resource + '_script',rtn);
            if (Callback) Callback();
        }
        Masada.AjaxService.LoadAsciiFile(resource,onLoadComplete,OnAjaxErrors);
    }

    Masada_235.LoadXamlImage = function(path)
    {
        var Img = $$('img');
        var callback = function(rtn)
        {
            Img.src = '/Resource.aro?guid=' + rtn;
        }
        Masada.AjaxService.RenderXamlFromFile(path,callback,OnAjaxErrors);
        return Img;
    }

    Masada_235.LoadBackgroundImage = function(div,width,height,label,style)
    {
        var callback = function(rtn)
        {
            div.style.background = 'url(/Resource.aro?guid=' + rtn + ') ' + style;
        }
        Masada.AjaxService.RenderPanelBorder(width,height,label,callback,OnAjaxErrors);
    }

    Masada_235.Image = function(width,height,path,alt)
    {
        var Img = $$('img');

        if (width) Img.style.width = width;
         if (height) Img.style.height = height;
        Img.src = path;
        Img.alt = alt;
        return Img;
    }
    
    Masada_235.OnAjaxErrors = function(rtn, context)
    {
        alert(rtn.get_message() + '\r\n' +
            rtn.get_stackTrace() + '\r\n' +
            rtn.get_statusCode() + '\r\n' +
            rtn.get_timedOut());
    }
    
    Masada_235.UserLogin = function(loginEventHandler)
    {
        var This = this;
        var User = "";
        var LoginEventHandler = loginEventHandler;
        var Container = $$('div');
        Container.style.padding = '10px 20px 10px 20px';
        
        var UsernameLbl = Container.appendChild($$('label'));
        UsernameLbl.style.fontWeight = 'bold';
        UsernameLbl.innerHTML = 'Username:';
        Container.appendChild($$('br'));
        
        var UsernameTbx = Container.appendChild($$('input'));
        UsernameTbx.type = 'text';
        UsernameTbx.id = 'UserNameTbx';
        UsernameTbx.name = 'UserNameTbx';
        UsernameTbx.maxLength = 24;
        UsernameTbx.style.width = '150px';
        UsernameTbx.tabIndex = 1;
        Container.appendChild($$('br'));

        var PasswordLbl = Container.appendChild($$('label'));
        PasswordLbl.style.fontWeight = 'bold';
        PasswordLbl.innerHTML = 'Password:';
        Container.appendChild($$('br'));
       
        var PasswordTbx = $$('input');
        PasswordTbx.type = 'password';
        PasswordTbx.id = 'PasswordTbx';
        PasswordTbx.name = 'UserNameTbx';
        PasswordTbx.maxLength = 14;
        PasswordTbx.style.width = '150px';
        PasswordTbx.tabIndex = 2;
        Container.appendChild(PasswordTbx);
        
        var LoginBtn = $$('input');
        LoginBtn.type = 'button';
        LoginBtn.id = 'PasswordTbx';
        LoginBtn.name = 'UserNameTbx';
        LoginBtn.value = 'Login';
        LoginBtn.onclick = function() 
        {
            var Name = UsernameTbx.value;
            var Password = PasswordTbx.value;
            var OnAuthenticateComplete = function(rtn)
            {
                if (rtn == 'True')
                {
                    User = Name;
                    MessageLbl.innerHTML = '';
                    LoginEventHandler(true);
                }
                else
                {
                    UsernameTbx.focus();
                    MessageLbl.innerHTML = 'Login failure';
                    loginEventHandler(false);
                }
            }
            Masada.AjaxService.AuthenticateUser(Name,Password,OnAuthenticateComplete,OnAjaxErrors);
            UsernameTbx.value = '';
            PasswordTbx.value = '';
        }
        Container.appendChild(LoginBtn);
        Container.appendChild($$('br'));

        var MessageLbl = Container.appendChild($$('label'));
        MessageLbl.style.fontWeight = 'bold';
        MessageLbl.style.color ='red';

        var Reset = function(parent)
        {
            UsernameTbx.value = '';
            PasswordTbx.value = '';
            MessageLbl.innerHTML = '';
            UsernameTbx.focus();
            return This;
        }
        
        this.CurrentUser = function()
        {
            return User;
            return This;
        }
        
        this.BindTo = function(parent)
        {
            parent.appendChild(Container);
            return This;
        }
        this.Reset = Reset;
    }
    
    
    Masada_235.StoreResource = function(resource, data, onCompleteHandler)
    {
        Masada.AjaxService.StoreAsciiResource(resource,data, onCompleteHandler,OnAjaxErrors);
    }
    
    Masada_235.LoadCss = function(style)
    {
        var OnCssLoadComplete = function(rtn)
        {
            var css = document.createElement('style');
            css.setAttribute("type", "text/css");
            if (css.styleSheet)// IE
                css.styleSheet.cssText = rtn;
            else
                css.appendChild(document.createTextNode(rtn));
            document.getElementsByTagName('head')[0].appendChild(css);
        }
            
        Masada.AjaxService.LoadAsciiFile(style, OnCssLoadComplete, OnAjaxErrors);
    }
    
    Masada_235.SetStyle = function(style)
    {
        if (typeof style == "number") return style + 'px';
        return style;
    }
    
    Masada_235.ScriptManager = function()
    {
        var InsertScript = function(ScriptId,ScriptText)
        {
            try
            {
                var script = $$("script"); 
                script.setAttribute('id',ScriptId); 
                script.setAttribute('type','text/javascript'); 

                if (script.canHaveChildren)
                {
                    script.appendChild(d.createTextNode(ScriptText));
                } 
                else
                {
                    script.text = ScriptText; 
                }
                d.body.appendChild(script); 
            }
            catch(err)
            {
                alert('Error in ScriptManager:');
            }
        }
        this.InsertScript = InsertScript;
    }
    
    Masada_235.Textbox = function(label)
    {
        var Tbx = $$('input'); 
        Tbx.type = 'text';
        if (arguments.length > 1) Tbx.style.width = arguments[1] + 'px';
        if (arguments.length > 2) Tbx.style.height = arguments[2] + 'px';

        this.Style = function(name, value)
        {
            Tbx.style[name] = value;
            return This;
        }
        this.Element = Tbx;
    }
    
    Masada_235.Button = function(label)
    {
        var Btn = $$('input'); 
        Btn.type = 'button';
        Btn.value = label;
        if (arguments.length > 1) Btn.style.width = arguments[1] + 'px';
        if (arguments.length > 2) Btn.style.height = arguments[2] + 'px';

        this.Style = function(name, value)
        {
            Lbl.style[name] = value;
            return This;
        }
        this.Element = Btn;
    }
    
    Masada_235.Label = function(label, width, height)
    {
        var This = this;
        var Lbl = $$('Label'); 
        Lbl.innerHTML = label;
        if (arguments.length > 1) Lbl.style.width = arguments[1] + 'px';
        if (arguments.length > 2) Lbl.style.height = arguments[2] + 'px';
        
        this.Style = function(name, value)
        {
            Lbl.style[name] = value;
            return This;
        }
        this.Element = Lbl;
    }

    Masada_235.SqlQuery = function(name,type)
    {
        var Type = 'Sql';
        if (arguments.length > 1) Type = type;
        var This = this;
        var Query =
            "<Query>" +
                "<Resource/>" +
                "<Parameters/>" +
            "</Query>";
        var QueryDoc = new Masada_235.XmlDom(Query);
        this.DocumentElement = QueryDoc.documentElement;
        var ParametersNode = this.DocumentElement.selectSingleNode('Parameters');
        var ResourceNode = this.DocumentElement.selectSingleNode('Resource');
        ResourceNode.setAttribute("Id", name);
        ResourceNode.setAttribute("Type",Type);
        ResourceNode.setAttribute("Source","Db");
        this.AddParameter = function()
        {
            var Id = null;
            var Value = "";
            if (arguments.length == 1)
                Value = arguments[0];
            else
            {
                Id = arguments[0];
                Value = arguments[1];
            }
            var ParameterNode = QueryDoc.createNode(1,"Parameter", "");
            ParametersNode.appendChild(ParameterNode);
            if (Id) ParameterNode.setAttribute("Id",Id);
            ParameterNode.setAttribute("Value",Value);
            return This;
        }
        this.Clear = function()
        {
            while (ParametersNode.hasChildNodes())
            {
                ParametersNode.removeChild(ParametersNode.firstChild);
            }
        }
    }

    Masada_235.Ddl = function()
    {
        var This = this;
        var Ddl = null;
        var TextName = null;
        var ValueName = null;
        var Handler = null;
        var Arg = 0;
        var Length = arguments.length;

        if (typeof (arguments[0]) == 'object')
        {
            Ddl = arguments[0];
        }
        else
        {
            Ddl = $$('select');
            Ddl.style.width = arguments[Arg++] + 'px';
            if (--Length)
                Ddl.style.height = arguments[Arg] + 'px'
        }

        this.Callback = function(handler)
        {
            Handler = handler;
            return This;
        }

        var Add = function(text, value) {
            var o = $$("OPTION");
            o.text = text;
            o.value = value;
            Ddl.options.add(o);
            return This;
        }

        this.Load = function(query)
        {
            var TextName = arguments[1];
            var ValueName = TextName;
            if (arguments.length > 2) ValueName = TextName;
            var ListData = new RecordSet();
            var OnComplete = function(rtn)
            {
                for (var i = 0; i < rtn.RowCount; i++)
                {
                    Add(rtn.GetValue(i, TextName), rtn.GetValue(i, ValueName));
                }
                if (Handler != null) Handler(This);
            }
            ListData.Load(query, OnComplete);
            return This;
        }

        this.Index = function(idx)
        {
            Ddl.selectedIndex = idx;
        }

        this.Style = function(name, value)
        {
            Lbl.style[name] = value;
            return This;
        }

        this.Add = Add;
        this.Element = Ddl;
    }
    
    Masada_235.GetDdlValue = function(ddl)
    {
        if (ddl && ddl.selectedIndex > -1)
        {
            return ddl[ddl.selectedIndex].value;
        }
        return '';
    }

    Masada_235.SetDdlOption = function(control,value)
    {
        var Options = control.options;
        var Index = control.selectedIndex;
        for(var i=0;i<Options.length;i++)
        {
            var Option = Options[i];
            var Value = Option.value.trim();
            if (Value.length == 0) Value = Option.text.trim();
            if(Value == value)
            {
                control.selectedIndex = i;
                return;
            }
        }
        control.selectedIndex = 0;
    }
    



    Masada_235.Table = function(width)
    {
        var ThisTable = this;
        var Tbl = this.Element = $$('table');
        if (arguments == 1) Tbl.width = width;
        Tbl.cellSpacing = '0';
        Tbl.cellPadding = '0';
        Tbl.border = '0';
        var DomTable = Tbl.appendChild($$('tbody'));
        DomTable.style.display = 'none';
        
        var Visible = function(state)
        {
            if (state) DomTable.style.display = 'block';
            else DomTable.style.display = 'none';
            return ThisTable;
        }
        var Position = function(mode,left,top)
        {
            Tbl.style.position = mode;
            Tbl.style.left = left + 'px';
            Tbl.style.top = top + 'px';
        }
        
        var BindTo = function(parent)
        {
            parent.appendChild(Tbl);
            return ThisTable;
        }
        
        var Row = function()
        {
            var ThisRow = this;
            this.Table = ThisTable;
            this.DomRow = DomTable.appendChild($$('tr'));
            var Cell = function(width,addDiv)
            {
                var ThisCell = this;
                this.Row = ThisRow;
                var td = $$('td');
                ThisRow.DomRow.appendChild(td);
                if (width) td.style.width = width;
                if (addDiv)
                {
                    this.Element = $$('div');
                    td.appendChild(this.Element);
                    this.Element.style.height = ThisRow.DomRow.style.height;
                }
                else
                    this.Element = td;
                
                var GetPosition = function()
                {
                    return GetElementPosition(ThisCell.Element);
                }
                this.GetPosition = GetPosition;
            }
            
            var AddCell = function(width,addDiv)
            {
                var Width = null;
                var AddDiv = false;
                if (arguments.length > 0) Width = SetStyle(width);
                if (arguments.length > 1) AddDiv = addDiv;
                var cell = new Cell(Width,AddDiv);
                cell.Element.style.height = ThisRow.DomRow.style.height;
                return cell;
            }
            this.AddCell = AddCell;
        }
        
        var AddRow = function(height)
        {
            var row = new Row();
            if (arguments.length > 0) row.DomRow.style.height = SetStyle(height);
            return row;
        }
        this.BindTo = BindTo;
        this.AddRow = AddRow;    
        this.Position = Position;
        this.Visible = Visible;
    }
    
    //http://weblogs.asp.net/ssargent/archive/2007/01/25/selectsinglenode-and-firefox.aspx
    if (!window.ActiveXObject)
    {
        Element.prototype.selectNodes = function(sXPath)
        {
            var oEvaluator = new XPathEvaluator();
            var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
            var aNodes = new Array();
            if (oResult != null)
            {
                var oElement = oResult.iterateNext();
                while(oElement)
                {
                    aNodes.push(oElement);
                    oElement = oResult.iterateNext();
                }
            }
            return aNodes;
        }

        Element.prototype.selectSingleNode = function(sXPath)
        {
            var oEvaluator = new XPathEvaluator();
            var oResult = oEvaluator.evaluate(sXPath, this, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
            if (oResult != null)
                return oResult.singleNodeValue;
            else
                return null;
        }
    }
    
    Masada_235.SerializeXML = function(node)
    {
        if (typeof XMLSerializer != "undefined") return (new XMLSerializer()).serializeToString(node);
        else if (node.xml) return node.xml;
        else throw "Unable to serialize";
    }
    
    Masada_235.XmlDom = function(Xml)
    {
        var xmlDoc = null;
        
        var OuterXML = function(node)
        { //  with Opera
            if (node.ownerDocument && node.ownerDocument.implementation &&
                document.implementation.createLSSerializer &&
                (serializer = node.ownerDocument.implementation.createLSSerializer()))
            {
                return serializer.writeToString(node);
            }
        }
        
        try //Internet Explorer
        {
            xmlDoc = new ActiveXObject("MSXML2.DOMDocument");
            xmlDoc.async = "false";
            xmlDoc.loadXML(Xml);
        }
        catch(e)
        {
            try //Firefox, Mozilla, Opera, etc.
            {
                var parser = new DOMParser();
                xmlDoc = parser.parseFromString(Xml,"text/xml");
            }
            catch(e) {alert(e.message); return null;}
        }
        
        this.OuterXML = OuterXML;
        this.DocumentElement = xmlDoc.documentElement;
        return xmlDoc;
    }

   Masada_235.BrowserInfo = function()
    {
        this.Type = null;
        var Agent = navigator.userAgent;
        if (Agent.indexOf("MSIE") != -1) this.Type = 'IE';
        else if (Agent.indexOf("Firefox") != -1)  this.Type = 'FF';
        else if (Agent.indexOf("Navigator") != -1)  this.Type = 'NV';
        else if (Agent.indexOf("Opera") != -1 ) this.Type = 'OP';
        else this.Type = 'UK';
    }
    
    Masada_235.XmlHttp = function()
    {
        var xmlhttp = null;
        
        if (window.XMLHttpRequest)
        {
            xmlhttp = new XMLHttpRequest();
            if (typeof xmlhttp.overrideMimeType != 'undefined')
            { 
                xmlhttp.overrideMimeType('text/xml'); 
            }
        }
        else if (window.ActiveXObject)
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else
        {
            alert('Perhaps your browser does not support xmlhttprequests?');
            return null;
        }
        
        xmlhttp.onreadystatechange = function()
        {
            if (xmlhttp.readyState == 4) // && xmlhttp.status == 200)
            {
                alert(xmlhttp.status);
                //alert(xmlhttp.responseText);
                var obj = eval(xmlhttp.responseText);
                alert(obj.Name);
            }
            else
            {
                //alert(xmlhttp.readyState);
                // wait for the call to complete
            }
        };
        
        
        var Open = function()
        {
            xmlhttp.open('POST', 'resource.aro?Test=1234', true);
        }
        
        var Send = function()
        {
            xmlhttp.send("hello=there");
        }
        
        this.Open = Open;
        this.Send = Send;
    }
    
    Masada_235.Style = function(style)
    {
        var This = this;
        var Properties = style.childNodes;
        for (var i=0;i<Properties.length;i++)
        {
            var Property = Properties[i].attributes[0];
            this[Property.nodeName] = Property.value;
        }

        var SetStyle = function(cell)
        {
            for (var property in This)
            {
                if (property.substr(0,8) == 'function') continue;
                cell.style[property] = This[property];
            }
        }   
        this.SetStyle = SetStyle;
    }
    
    Masada_235.FlashPlayer = function(width, height)
    {
        var FlashObj = document.createElement('object');
        FlashObj.type = "application/x-shockwave-flash";
        FlashObj.width = width;
        FlashObj.height = height;
        FlashObj.setAttribute("allowScriptAccess", "sameDomain");
        FlashObj.setAttribute("bgcolor", "#487d69");
        
        var BindTo = function(parent)
        {
            parent.appendChild(FlashObj);
        }
        
        var SetMovie = function(swf)
        {
            var Resource = "resource.aro?image=" + swf;
            FlashObj.data = Resource;
            FlashObj.setAttribute("movie", Resource);
        }
        
        this.BindTo = BindTo;
        this.SetMovie = SetMovie;
    }

    Masada_235.HtmlPanel = function(resourceId, container, callback)
    {
        var Callback = null;
        if (arguments.length > 2) Callback = callback;
        ResourceId = resourceId;
        var This = this;
        
        var OnLoadComplete = function(html)
        {
            if (html && html.length > 0)
            {
                container.innerHTML = html;
            }
            else
            {
                alert('Error(HtmlPanel): ' + resourceId + ' panel not found');
            }
            var descend = function(node)
            {
                //if (node.nodeType == 3) return;    // node.TEXT_NODE
                var Elements = node.childNodes;
                for(var i=0; i<Elements.length; i++)
                {
                    descend(Elements[i]);
                    var Element = Elements[i];
                    var Id = Element.id;
                    
                    //if (resourceId == 'MMISignUpForm') alert('Id = ' + Id); // it's john OK
                    if (Id && Id != 'undefined')
                    {
                        var Obj = new Object();
                        Obj.Element = Element;
                        Obj.IoFlag = 3;
                        var Len = Id.length;
                        Obj.Ext = Id.substr(Len-3);
                        if (Obj.Ext != 'Lbl')
                            Obj.Name = Id.substring(0,Len-3);
                        else
                            Obj.Name = Id;
                        This[Id] = Obj;
//                        alert(this.Element.id);
                        //Element.id = null;
                        Obj.Value = function(value)
                        {
                            if (arguments.length > 0)
                            {
                                switch(this.Element.type)
                                {
                                    case 'button':
                                    {
                                    }  
                                    case 'checkbox':
                                    case 'file':
                                    case 'hidden':
                                    case 'image':
                                    case 'password':
                                    case 'radio':
                                    case 'reset':
                                    break;
                                    case 'select-one':
                                    case 'select-multiple':
                                        SetDdlOption(this.Element,value);
                                        break;
                                    case 'submit':
                                        break;
                                    case 'text':
                                    case 'textarea':
                                        this.Element.value = value;
                                        break;
                                    default:
                                    {   // span
                                        this.Element.innerHTML = value;
                                    }
                                }
                            }
                            else
                            {
                                switch(this.Element.type)
                                {
                                    case 'button':
                                    {
                                    }  
                                    case 'checkbox':
                                    case 'file':
                                    case 'hidden':
                                    case 'image':
                                    case 'password':
                                    case 'radio':
                                    case 'reset':
                                    break;
                                    case 'select-one':
                                    case 'select-multiple':
                                        return GetDdlValue(this.Element);
                                        break;
                                    case 'submit':
                                        break;
                                    case 'text':
                                    case 'textarea':
                                        return this.Element.value;
                                    default:
                                    {   // span
                                        return this.Element.innerHTML;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            descend(container.firstChild);
            if (Callback) Callback();
        }
       
        Masada.AjaxService.LoadAsciiFile(ResourceId,OnLoadComplete, OnAjaxErrors);
        
        this.Clear = function()
        {
            var ioType = 3;
            for (var property in This)
            {
                var Obj = This[property];
                if (Obj.IoFlag && Obj.IoFlag != 0)
                {
                    var Len = property.length;
                    var Ext = Obj.Ext;
                    if (Ext == 'Lbl' || Ext == 'Dte') continue;
                    Obj.Value('');
                }
            }
            return This;
        }
        
        this.Load = function(rec)
        {
            var ioType = 3;
            for (var property in This)
            {
                var Obj = This[property];
                if (Obj.IoFlag == ioType)
                {
                    var Ext = Obj.Ext;
                    if (Ext == 'Lbl' || Ext == 'Dte') continue;
                    Obj.Value(rec.GetValue(Obj.Name));
                }
            }
            return This;
        }
        
        this.Store = function(rec)
        {
            for (var property in This)
            {
                var Obj = This[property];
                if (Obj.IoFlag == 3 || Obj.IoFlag == 2)
                {
                    var Ext = Obj.Ext;
                    if (Ext == 'Lbl' || Ext == 'Dte') continue;
                    rec.SetValue(Obj.Name, Obj.Value());
                }
            }
            return This;
        }
        
        
        var Disabled = function(state)
        {
            for (var property in This)
            {
                if (property.substr(0,8) == 'function') continue;
                var obj = This[property];
                var Id = obj.id;
                if (Id && Id.length > 0)
                {
                    obj.disabled = state;
                }
            }
        }
        
        
        this.Disabled = Disabled;
        
    }
    
     Masada_235.ButtonBar = function(btnBarNode, OnBtnClick)
     {
        var This = this;
        var onBtnClick = null;
        if (arguments.length > 1) onBtnClick = OnBtnClick;
        var Container = $$('Div');
        var BtnBarNode = btnBarNode;
        var Height = parseInt(BtnBarNode.getAttribute('Height'));
        var ButtonWidth = parseInt(BtnBarNode.getAttribute('ButtonWidth'));

        var BtnNodes = BtnBarNode.selectNodes("Button");
        
        var Tbl = new Table().BindTo(Container).Visible(true);
        var Row = Tbl.AddRow();
        
        var SetMode = function(mode)
        {
            var StateNodes = BtnBarNode.selectNodes("*/State[@Mode='" + mode + "']");
            for (var i=0;i< StateNodes.length;i++)
            {
                var StateNode = StateNodes[i];
                var Obj = This[StateNode.parentNode.attributes.getNamedItem('Id').value]
                var ValueNode = StateNode.attributes.getNamedItem('Value');
                var DisabledNode = StateNode.attributes.getNamedItem('Disabled');
                if (ValueNode) Obj.value = ValueNode.value;
                if (DisabledNode)
                    if (DisabledNode.value == 'True')
                        Obj.disabled = true;
                    else
                        Obj.disabled = false;               
            }
            return This;
        }
        
        var Insert = function(name, width)
        {
            var Cell = Row.AddCell(width).Element;
            var Btn = Cell.appendChild($$('button'));
            if (arguments.length > 0) Btn.value = name;
            if (arguments.length > 1) Btn.style.width = width
            else if (ButtonWidth > 0) Btn.style.width = ButtonWidth;
            if (OnBtnClick) Btn.onclick = function() { OnBtnClick({'Name':this.value}) };
            This[name] = Btn;
            return This;
        }
       
        for (var i=0;i< BtnNodes.length;i++)
        {
            var BtnNode = BtnNodes[i];
            var Id = BtnNode.attributes.getNamedItem('Id').value;
            var Width = BtnNode.attributes.getNamedItem('Width').value;
            Insert(Id,Width);
        }
        
        var BindTo = function(parent) { parent.appendChild(Container); return This;}
        this.BindTo = BindTo;
        this.Insert = Insert;
        this.SetMode = SetMode;
        this.Element = Container;
    }

    Masada_235.ExtractDate = function(Dt)
    {
        if (Dt.length == 0) return "";
        var theDate = new Date(Dt);
        return (theDate.getMonth() + 1 )+ '/' + theDate.getDate() + '/' + theDate.getYear();
    }

    Masada_235.GetDateTime = function()
    {
        var theDate = new Date();
        return (theDate.getMonth() + 1 ) + '/' + theDate.getDate() + '/' + theDate.getYear() + ' ' +
            theDate.getHours() + ':' + theDate.getMinutes() + ':' + theDate.getSeconds();
    }


    Masada_235.Validation = function(parentContainer,headingText,validationHandler,eventHandler)
    {
        var This = this;
        var d = document;
        var ValidationHandler = validationHandler;
        var EventHandler = null;
        if (arguments.length > 3) EventHandler = eventHandler;
        this.Count = 0;
        
        var Container = null;
        
        var Init = function(containerName)
        {
            var tableBody = null;
            var container = d.getElementById(containerName);
            if (container == null)
            {
                container = $$("div");
                container.id = containerName;
                parentContainer.appendChild(container);
                container.style.visibility = "hidden";
                container.style.position = "absolute";
                container.style.top = "5px";
                container.style.left = "100px";
                container.style.color = "black";
                container.style.background = "Silver";
                container.style.padding = "1px";
                container.style.border = "2px solid #204070";
   	            var Heading = container.appendChild($$("h1"));
                Heading.style.cssText = "padding: 4px;display: block;color: white;background-color: #204070;" +
	                "font-size: 13px;font-weight: bold;margin:0px;white-space:nowrap";
	            Heading.innerHTML = headingText;
                var tbl = container.appendChild($$("table"));
                tbl.style.width = '500px';
                tbl.border = '2';
                tbl.style.cssText = "cellpadding='0'; cellspacing='0'; color: #204070;";
                tableBody = tbl.appendChild($$("tbody"));
            }
            else
                tableBody = container.getElementsByTagName("tbody")[0];
            Container = container;
            return tableBody;
        }
        
        var TableBody = Init(ContainerName);
        
        var Clear = function ()
        {
            Container.style.visibility = 'hidden';
            This.Count = 0;   
            while (TableBody.hasChildNodes())
            {
                TableBody.removeChild(TableBody.firstChild);
            }            
        }

        var Add = function (expression, message)
        {
            Container.style.visibility = 'visible';
            var cell = $$("td");
            cell.width = '500px';
            cell.onclick = function(){Remove(this,expression);}
            cell.onmouseover = onmouseover;
            cell.onmouseout = onmouseout;
            cell.innerHTML = message;
            var NewRow = $$("tr");
            NewRow.appendChild(cell);
            TableBody.appendChild(NewRow);
            This.Count++;   
        }
       
        var Remove = function(cell,expression)
        {
            cell.parentNode.removeChild(cell);
            This.Count--;
            ValidationHandler(expression);
            if (This.Count == 0)
            {
                Clear();
                if (EventHandler != null) EventHandler(This);
            }
        }
        
        var onmouseover = function()
        {
           this.style.backgroundColor='white';
        }
        
        var onmouseout = function()
        {
            this.style.backgroundColor='silver';
        }
        
        var BindTo = function(parent) { parent.appendChild(Container); return This;}

        Clear();
        this.BindTo = BindTo;
        this.Add = Add;
        this.Clear = Clear;
    }
    
    Masada_235.HorizontalMenu = function(Handler)
    {
        var This = this;
        var d = document;
        var MenuDoc = null;
        var OnClickFunction = null; 
        var OnClickHandler = function(id){ OnClickFunction(id);}
        var MenuXml = null;
        
        if (arguments.length > 1)
        {
            OnClickFunction = arguments[0];
            MenuXml = arguments[1]; 
        }
        else
            MenuXml = arguments[0]; 
        
        this.RegisterHandler = function(Handler)
        {
            OnClickFunction = Handler;
            return This;
        }
        
        function Resize(){This.PositionSubMenus();}

        function attachEvent()
        {
            if(window.addEventListener)
            {
                window.addEventListener('resize',Resize,false);
            }
            else if (window.attachEvent)
            {
                window.attachEvent("onresize",Resize);
            }
            else if(document.body.onresize)
            {
                document.body.onresize = Resize;
            }
        }
        attachEvent();
        
        
        //document.body.addEventListener('resize', function() { alert('reloading'); }, false);        
        //window.onresize = function() {This.PositionSubMenus();}    
        var MenuTbl = new Table();
        var Row = null;
        
        var MenuArray = new Array();       
        this.BindTo = function(parent)
        {
            MenuTbl.BindTo(parent);
            MenuTbl.Visible(true);
            if (MenuXml != null)
            {
                var Cell = null;
                MenuDoc = new Masada_235.XmlDom(MenuXml);
                var root = MenuDoc.documentElement;
                var MenuHeight = root.getAttribute('Height');
                Row = MenuTbl.AddRow(MenuHeight)
                var Items = root.childNodes;
                var Styles = root.lastChild;
                
                var AllDefaultStyle = new Style(Styles.childNodes[0]);
                var MenuDefaultStyle = new Style(Styles.childNodes[1]);
                var MenuHoverOverStyle = new Style(Styles.childNodes[2]);
                var MenuMouseOutStyle = new Style(Styles.childNodes[3]);
                
                for (var i=0;i<Items.length;i++)
                {
                    var Item = Items[i];
                    if (Item.nodeName == 'Styles') continue;
                    var Text = Item.getAttribute('Text');
                    var Width = Item.getAttribute('Width');
                    var Value = Item.getAttribute('Value');
                    var Image = Item.getAttribute('Image');
                    if (!Width) {alert('problem'); return;}
                    
                    MenuArray[i] = Cell = This.AddItem(Width);
                    var CellObj = Cell.Element;
                    AllDefaultStyle.SetStyle(CellObj);
                    MenuDefaultStyle.SetStyle(CellObj);

                    CellObj.id = i;
                    var Div = InsertDiv(CellObj,Width);
                    if (Text) Div.innerHTML = Text;

                    if (Item.nodeName == 'Spacer')
                    {
                        if (Image) CellObj.style.background = "url('resource.aro?image=" + Image + "') no-repeat";
                        continue;
                    }
                    if (Value)
                    {
                        Cell.Value = Value;
                        CellObj.onclick = function()
                        {
                            var sm = MenuArray[this.id];
                            if (sm && OnClickHandler) OnClickHandler(sm.Value);
                        }
                    }
                    
                    CellObj.onmouseover = function()
                    {
                        var Cell = MenuArray[this.id];
                        var SubMenu = Cell.Reference;
                        if (SubMenu) SubMenu.Visible(true);
                        MenuHoverOverStyle.SetStyle(this);
                    }
                        
                    CellObj.onmouseout = function()
                    {
                        var Cell = MenuArray[this.id];
                        var SubMenu = Cell.Reference;
                        if (SubMenu) SubMenu.Visible(false);
                        MenuMouseOutStyle.SetStyle(this);
                    }
                    if (Item.firstChild)
                    {
                        var SubItems = Item.firstChild.childNodes;
                        var NbrSubItems = SubItems.length;
                        if (NbrSubItems > 0)
                        {
                            var SubMenu = new VerticalMenu(Item.firstChild,Styles);
                            SubMenu.RegisterHandler(OnClickHandler);
                            Cell.Reference = SubMenu;
                            SubMenu.BindTo(document.body);
                        }
                        else
                            SubMenu = null;
                        }
                }
            }
            This.PositionSubMenus();
            This.PositionSubMenus(); // both statements required
            return This;
        }
            
        This.PositionSubMenus = function()
        {
            if (!MenuArray) return;
            for (var i=0;i<MenuArray.length;i++)
            {
                var Cell = MenuArray[i];
                var SubMenu = Cell.Reference;
                if (SubMenu)
                {
                    var Position = Cell.GetPosition();
                    SubMenu.Position('absolute',Position[0],Position[1]);
                }
            }
        }
           
        HorizontalMenu.prototype.AddItem = function(width)
        {
           return Row.AddCell(width);
        }
           
        var Visible = function(state)
        {
            MenuTbl.Visible(state);
        }
        this.Visible = Visible;
    }
    
    Masada_235.InsertDiv = function(cell,width)
    {
        var div = document.createElement("div");
        if (width) div.style.width = width + 'px';
        div.style.whiteSpace = "nowrap";
        div.style.overflow = 'hidden';
        div.style.padding = 0; 
        div.style.paddingLeft = '6px'; 
        div.style.paddingRight = '6px'; 
        cell.appendChild(div);
        return div;
    }

    Masada_235.VerticalMenu = function(menu,styles)
    {
        var This = this;
        this.ClearOnMouseOut = true;
        var AllDefaultStyle = new Style(styles.childNodes[0]);
        var SubMenuDefaultStyle = new Style(styles.childNodes[4]);
        var SubMenuHoverOverStyle = new Style(styles.childNodes[5]);
        var SubMenuMouseOutStyle = new Style(styles.childNodes[6]);
        
        var RowHeight = menu.getAttribute('Height');
        var ItemNodes = menu.childNodes
        var MenuTbl = new Table();
        this.ControlItem = null;
        d = document;
        var CellArray = new Array();       
        var OnClickHandler = null;    
        this.RegisterHandler = function(Handler)
        {
            OnClickHandler = Handler;
        }
        var BindTo = function(parent)
        {
            MenuTbl.BindTo(parent);
            for (var i=0;i<ItemNodes.length;i++)
            { 
                var Item = ItemNodes[i];
                var Text = Item.getAttribute('Text');
                var Width = Item.getAttribute('Width');
                var ItemCell = CellArray[i] = AddItem(Width);
                var Value = Item.getAttribute('Value');
                if (Value) ItemCell.Value = Value;
                var CellObj = ItemCell.Element;
                CellObj.id = i;
                AllDefaultStyle.SetStyle(CellObj);
                SubMenuDefaultStyle.SetStyle(CellObj);
                var div = InsertDiv(CellObj, Width);
                div.innerHTML = Text;
                CellObj.onmouseover = function()
                {
                    SubMenuHoverOverStyle.SetStyle(this);
                    Visible(true);
                }
                    
                CellObj.onclick = function()
                {
                    var sm = CellArray[this.id];
                    if (sm && OnClickHandler) OnClickHandler(sm.Value);
                }
                
                CellObj.onmouseout = function()
                {
                    SubMenuMouseOutStyle.SetStyle(this);
                    if (This.ClearOnMouseOut) Visible(false);
                }
            }
            return This;
        }
        
        var AddItem = function(width)
        {
            var Row = MenuTbl.AddRow(RowHeight);
            return Row.AddCell(width);
        }
        
        var Visible = function(state)
        {
            MenuTbl.Visible(state);
        }
        
        var Position = function(mode, left, top)
        {
            MenuTbl.Position(mode, left, top);
        }
            
        this.Visible = Visible;    
        this.Position = Position;
        this.BindTo = BindTo;
        this.AddItem = AddItem;
    }

    Masada_235.vMenu = function(menuNode, onMenuClick)
    {
        var This = this;
        var Container = $$('Div');
        var OnMenuClick = null; 
        if (arguments.length > 1) OnMenuClick = onMenuClick;
        var MenuNode = menuNode;
        //                var Items = root.childNodes;
        //                var Styles = root.lastChild;
        //        var RowHeight = MenuNode.getAttribute('Height');
        var ItemNodes = MenuNode.firstChild.childNodes;
        var StyleNodes = MenuNode.lastChild.childNodes;

        var MenuStyle = new Style(StyleNodes[0], true);
        var SubMenuStyle = new Style(StyleNodes[1]);
        var MouseOverStyle = new Style(StyleNodes[2]);
        var MouseOutStyle = new Style(StyleNodes[3]);
        var ShowStyle = new Style(StyleNodes[4]);
        var HideStyle = new Style(StyleNodes[5]);

        this.RegisterHandler = function(Handler)
        {
            OnMenuClick = Handler;
            return This;
        }

        var ShowHide = function(obj)
        {
            var div = obj.Div;
            if (div.style.display == 'block')
                div.style.display = 'none';
            else
                div.style.display = 'block';
        }

        var OnClick = function(obj)
        {
            if (OnMenuClick) OnMenuClick(obj.name);
        }

        var MenuItem = function(container, name, label, style, onClick)
        {
            var Item = document.createElement('div');
            Item.onmouseover = function() { MouseOverStyle.SetStyle(this); }
            Item.onmouseout = function() { MouseOutStyle.SetStyle(this); }
            Item.onclick = function() { onClick(this); }
            Item.name = name;
            style.SetStyle(Item);
            Item.innerHTML = label;
            container.appendChild(Item);
            var div = document.createElement('div');
            div.style.display = 'none'
            div.style.borderBottom = 'solid 1px';
            div.style.borderTop = 'solid 1px';
            div.id = name;
            Item.Div = div;
            container.appendChild(div);

            var Add = function(name, label)
            {
                return new MenuItem(div, name, label, SubMenuStyle, OnClick);
            }
            this.Add = Add;
        }

        var Add = function(name, label, noClick)
        {
            var ClickEvent = OnClick;
            if (arguments.length == 3 && noClick) ClickEvent = ShowHide;
            return new MenuItem(Container, name, label, MenuStyle, ClickEvent);
        }

        for (var i = 0; i < ItemNodes.length; i++)
        {
            var Item = ItemNodes[i];
            var Text = Item.getAttribute('Text');
            var Value = Item.getAttribute('Id');
            var SubNode = Item.firstChild;
            var NbrSubItems = 0;
            if (SubNode) NbrSubItems = SubNode.childNodes.length;
            if (!NbrSubItems)
            {
                Add(Value, Text);
            }
            else
            {
                var SubMenu = Add(Value, Text, true);
                var SubItems = SubNode.childNodes;
                for (var j = 0; j < NbrSubItems; j++)
                {
                    SubItem = SubItems[j];
                    SubMenu.Add(SubItem.getAttribute('Id'), SubItem.getAttribute('Text'));
                }
            }
        }

        this.Add = Add;
        this.BindTo = function(parent) { parent.appendChild(Container); return This; }
    }

    Masada_235.BrowserInfo = function()
    {
        this.Type = null;
        var Agent = navigator.userAgent;
        if (Agent.indexOf("MSIE") != -1) this.Type = 'IE';
        else if (Agent.indexOf("Firefox") != -1)  this.Type = 'FF';
        else if (Agent.indexOf("Navigator") != -1)  this.Type = 'NV';
        else if (Agent.indexOf("Opera") != -1 ) this.Type = 'OP';
        else this.Type = 'UK';
    }

    Masada_235. GetElementPosition = function(element)
    {
        var x = y = 0;
        var obj = element;
        do
        {
            x += obj.offsetLeft;
            y += obj.offsetTop;
            obj = obj.offsetParent;
        } while (obj.offsetParent != null)
        var Browser = new BrowserInfo().Type;
        if (Browser == 'IE' && element.offsetParent.offsetParent.style.position == '')
        {
    //        x += 10;
    //        y += 14;
        }
        y += element.offsetHeight;
        return [x,y];
    }
    //var con = new XmlHttp();
    //con.Open();
    //con.Send();
//var message="Function Disabled!";

//function clickIE4()
//{
//    if (event.button==2)
//    {
//        alert(message);
//        return false;
//    }
//}


//function clickNS4(e)
//{
//    if (d.layers||d.getElementById&&!d.all)
//    {
//        if (e.which==2||e.which==3)
//        {
//            alert(message);
//            return false;
//        }
//    }
//}

//if (d.layers)
//{
//    d.captureEvents(Event.MOUSEDOWN);
//    d.onmousedown=clickNS4;
//}
//else if (d.all&&!d.getElementById)
//{
//    d.onmousedown=clickIE4;
//}

//d.oncontextmenu=new Function("alert(message);return false")

//   var e = document.createElement("script");
//   e.src = "test.js";
//   e.type="text/javascript";
//   document.getElementsByTagName("head")[0].appendChild(e); 

}
