if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

RadControlsNamespace.Alpha= function (O,o,Y,I,A)
{
    this.Element=O;
    this.StartValue=o;
    this.EndValue=Y;
    this.Ticker=new RadControlsNamespace.Ticker(this );
    this.Ticker.Configure( {Duration:I,FramesCount:A } );
    this.Amount=Math.round((Y-o)/A);
};

RadControlsNamespace.Alpha.prototype.Show= function ()
{
    this.Coef=1;
    this.Ticker.Start();
    this.Value=this.StartValue;
    this.UpdateOpacity();
};

RadControlsNamespace.Alpha.prototype.Hide= function ()
{
    this.Coef=-1;
    this.Ticker.Start();
    this.Value=this.EndValue;
    this.UpdateOpacity();
};

RadControlsNamespace.Alpha.prototype.OnTick= function ()
{
    this.Value+=this.Coef*this.Amount;
    this.UpdateOpacity();
};

RadControlsNamespace.Alpha.prototype.OnTickEnd= function ()
{
    this.Element.style.filter="";
};

RadControlsNamespace.Alpha.prototype.UpdateOpacity= function ()
{
    var U=this.Element;
    U.style.filter="alpha(opacity="+(this.Value)+")";
    var Z=this.Value/100;
    U.style.z=Z;
    U.style["-moz-opacity"]=Z;
    U.style["-khtml-opacity"]=Z;
};;

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.Box)=="undefined" ||
    typeof(window.RadControlsNamespace.Box.Version)==null ||
    window.RadControlsNamespace.Box.Version<1)
    {
        window.RadControlsNamespace.Box= {Version: 1,
                                            GetOuterWidth:function (O)
                                            {
                                                return O.offsetWidth;
                                            } ,
                                            GetOuterHeight:function (O)
                                            {
                                                return O.offsetHeight;
                                            } ,
                                            SetOuterHeight:function (O,height)
                                            {
                                                if (height<=0 || height=="")
                                                {
                                                    O.style.height="";
                                                }
                                                else
                                                {
                                                    O.style.height=height+"px";
                                                    var X=O.offsetHeight-height;
                                                    var W=height-X;
                                                    if (W>0)
                                                    {
                                                        O.style.height=W+"px";
                                                    }
                                                    else
                                                    {
                                                        O.style.height="";
                                                    }
                                                 }
                                             } ,
                                             SetOuterWidth:function (O,width)
                                             {
                                                if (width<=0 || width=="")
                                                {
                                                    O.style.width="";
                                                }
                                                else
                                                {
                                                    O.style.width=width+"px";
                                                    var X=O.offsetWidth-width;
                                                    var w=width-X;
                                                    if (w>0)
                                                    {
                                                        O.style.width=w+"px";
                                                    }
                                                    else
                                                    {
                                                        O.style.width="";
                                                    }
                                                }
                                             } ,
                                             GetPropertyValue:function (O,V)
                                             {
                                                var computedStyle=this.GetStyle(O);
                                                return this.GetStyleValues(computedStyle,V);
                                             } ,
                                             GetStyle:function (O)
                                             {
                                                if (document.defaultView && document.defaultView.getComputedStyle)
                                                {
                                                    return document.defaultView.getComputedStyle(O,null);
                                                }
                                                else if (O.currentStyle)
                                                {
                                                    return O.currentStyle;
                                                }
                                                else
                                                {
                                                    return O.style;
                                                }
                                             }
                                           };
    };

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.Browser)=="undefined" ||
    typeof(window.RadControlsNamespace.Browser.Version)==null ||
    window.RadControlsNamespace.Browser.Version<1)
    {
        window.RadControlsNamespace.Browser= {Version: 1 } ;
        window.RadControlsNamespace.Browser.ParseBrowserInfo= function ()
        {
            this.IsMacIE=(navigator.appName=="Microsoft Internet Explorer") &&
                            ((navigator.userAgent.toLowerCase().indexOf("mac")!=-1) ||
                                (navigator.appVersion.toLowerCase().indexOf("mac")!=-1)
                            );
            this.IsSafari=(navigator.userAgent.toLowerCase().indexOf("safari")!=-1);
            this.IsMozilla=window.netscape && !window.opera;
            this.IsNetscape=/Netscape/.test(navigator.userAgent);
            this.IsOpera=window.opera;
            this.IsOpera9=window.opera && (parseInt(window.opera.version())>8);
            this.IsIE=!this.IsMacIE && !this.IsMozilla && !this.IsOpera && !this.IsSafari;
            this.StandardsMode=this.IsSafari ||
                                this.IsOpera9 ||
                                this.IsMozilla ||
                                document.compatMode=="CSS1Compat";
            this.IsMac=/Mac/.test(navigator.userAgent);
        };
        RadControlsNamespace.Browser.ParseBrowserInfo();
    };

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.DomEventMixin)=="undefined" ||
    typeof(window.RadControlsNamespace.DomEventMixin.Version)==null ||
    window.RadControlsNamespace.DomEventMixin.Version<1)
    {
        RadControlsNamespace.DomEventMixin= {Version: 1,
                                                Initialize:function (T)
                                                {
                                                    T.CreateEventHandler=this.CreateEventHandler;
                                                    T.AttachDomEvent=this.AttachDomEvent;
                                                    T.DetachDomEvent=this.DetachDomEvent;
                                                    T.DisposeDomEventHandlers=
                                                    this.DisposeDomEventHandlers;
                                                    T.DomEventHandlers=[];
                                                    T.DomEventHandlersHash= {} ;
                                                    T._domEventHandlingEnabled= true;
                                                    T.EnableDomEventHandling=this.EnableDomEventHandling;
                                                    T.DisableDomEventHandling=this.DisableDomEventHandling;
                                                }
                                                ,EnableDomEventHandling:function ()
                                                {
                                                    this._domEventHandlingEnabled= true;
                                                } ,
                                                DisableDomEventHandling:function ()
                                                {
                                                    this._domEventHandlingEnabled= false;
                                                } ,
                                                CreateEventHandler:function (t,S)
                                                {
                                                    var R=this ;
                                                    return function (e)
                                                    {
                                                        if (!R._domEventHandlingEnabled && !S)
                                                        {
                                                            return false;
                                                        }
                                                        return R[t](e || window.event);
                                                    };
                                                } ,
                                                AttachDomEvent:function (O,r,Q,S)
                                                {
                                                    var eventHandler=this.CreateEventHandler(Q,S);
                                                    var P= { "Element":O,"Name":r,"Handler":eventHandler } ;
                                                    this.DomEventHandlers[this.DomEventHandlers.length]=P;
                                                    this.DomEventHandlersHash[Q]=eventHandler;
                                                    if (O.addEventListener)
                                                    {
                                                        O.addEventListener(r,eventHandler, false);
                                                    }
                                                    else if (O.attachEvent)
                                                    {
                                                        O.attachEvent("on"+r,eventHandler);
                                                    }
                                                } ,
                                                DetachDomEvent:function (O,r,eventHandler)
                                                {
                                                    if (typeof eventHandler=="string")
                                                    {
                                                        eventHandler=this.DomEventHandlersHash[eventHandler];
                                                    }
                                                    if (!O){return; }
                                                    if (O.removeEventListener)
                                                    {
                                                        O.removeEventListener(r,eventHandler, false);
                                                    }
                                                    else if (O.detachEvent)
                                                    {
                                                        O.detachEvent("on"+r,eventHandler);
                                                    }
                                                } ,
                                                DisposeDomEventHandlers:function ()
                                                {
                                                    for (var i=0; i<this.DomEventHandlers.length; i++)
                                                    {
                                                        this.DetachDomEvent(this.DomEventHandlers[i].Element,
                                                                            this.DomEventHandlers[i].Name,
                                                                            this.DomEventHandlers[i].Handler);
                                                        this.DomEventHandlers[i].Element=null;
                                                    }
                                                }
                                              };
        RadControlsNamespace.DomEvent= {} ;
        RadControlsNamespace.DomEvent.PreventDefault= function (e)
        {
            if (!e)return true;
            if (e.preventDefault)
            {
                e.preventDefault();
            }
            e.returnValue= false;
            return false;
        };
        RadControlsNamespace.DomEvent.StopPropagation= function (e)
        {
            if (!e)return;
            if (e.stopPropagation)
            {
                e.stopPropagation();
            }
            else
            {
                e.cancelBubble= true;
            }
        };
        RadControlsNamespace.DomEvent.GetTarget= function (e)
        {
            if (!e)return null; return e.target || e.srcElement;
        };
        RadControlsNamespace.DomEvent.GetRelatedTarget= function (e)
        {
            if (!e)return null;
            return e.relatedTarget || (e.type=="mouseout"?e.toElement:e.fromElement);
        };
        RadControlsNamespace.DomEvent.GetKeyCode= function (e)
        {
            if (!e)return 0;
            return e.which || e.keyCode;
        };
    };

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.Ease)=="undefined" ||
    typeof(window.RadControlsNamespace.Ease.Version)==null ||
    window.RadControlsNamespace.Ease.Version<.10e1)
    {
        RadControlsNamespace.Ease= function (O,N,offsetX,offsetY,n,M)
        {
            this.Element=O; if (M)
            {
                this.Overlay=new RadControlsNamespace.Overlay(O);
            }
            this.OffsetX=offsetX;
            this.OffsetY=offsetY;
            this.Invert= false;
            var parent=this.Element.parentNode;
            this.ExpandConfig=this.MergeConfig(N.ExpandAnimation);
            this.CollapseConfig=this.MergeConfig(N.CollapseAnimation);
            this.Ticker=new RadControlsNamespace.Ticker(this );
            this.Listener=n;
            this.SlideParent= false;
        };
        RadControlsNamespace.Ease.Version=.10e1;
        RadControlsNamespace.Ease.Coef=0;
        RadControlsNamespace.Ease.prototype=
        {
            SetSide:function (m)
            {
                this.InitialSide=m.charAt(0).toUpperCase()+m.substr(1,m.length-1);
                this.Invert= false;
                if (m=="right")
                {
                    m="left";
                    this.Invert= true;
                }
                if (m=="bottom")
                {
                    m="top";
                    this.Invert= true;
                }
                this.Side=m;
                this.Horizontal=m=="left";
            } ,
            MergeConfig:function (L)
            {
                if (!L.Type)
                {
                    L.Type="OutQuint";
                }
                if (!L.Duration)
                {
                    L.Duration=200;
                }
                return L;
            } ,
            GetSide:function ()
            {
                return this.InitialSide;
            } ,
            ShowElements:function ()
            {
                this.Element.parentNode.style.display="block";
                this.Element.style.display="block";
                this.Element.parentNode.style.overflow="hidden";
            } ,
            Dispose:function ()
            {
                this.Ticker.Stop();
                this.Element=null;
                if (this.Overlay)
                {
                    this.Overlay.Dispose();
                }
            } ,
            ResetState:function (l)
            {
                this.ShowElements();
                if (l)
                {
                    var K=(this.Horizontal?this.Element.offsetWidth: this.Element.offsetHeight);
                    if (!this.Invert){K=-K; }
                    this.SetPosition(K);
                }
                this.InitialPosition=this.GetPosition();
            } ,
            UpdateContainerSize:function ()
            {
                if (!this.Element.parentNode)
                {
                    return;
                }
                if (!this.Element.offsetWidth || !this.Element.offsetHeight)
                {
                    return;
                }
                if (this.Invert)
                {
                    if (this.Side=="left")
                    {
                        this.Element.parentNode.style.height=this.Element.offsetHeight+"px";
                    }
                    else if (this.Side=="top")
                    {
                        this.Element.parentNode.style.width=this.Element.offsetWidth+"px";
                    }
                    return;
                }
                var top=0;
                var left=0;
                if (this.Element.style.top!="")
                {
                    top=Math.max(parseInt(this.Element.style.top),0);
                }
                if (this.Element.style.left!="")
                {
                    left=Math.max(parseInt(this.Element.style.left),0);
                }
                if (this.SlideParent)
                {
                    top=parseInt(this.Element.style.top);
                    if (isNaN(top))
                        top=0;
                }
                if (this.Element.parentNode.style.height!=this.Element.offsetHeight+top+"px")
                {
                    this.Element.parentNode.style.height=Math.max(this.Element.offsetHeight+top,0)+"px";
                }
                if (this.Element.parentNode.style.width!=(this.Element.offsetWidth+left)+"px")
                {
                    this.Element.parentNode.style.width=Math.max(this.Element.offsetWidth+left,0)+"px";
                }
            } ,
            GetSize:function ()
            {
                return this.Horizontal?this.Element.offsetWidth: this.Element.offsetHeight;
            } ,
            GetPosition:function ()
            {
                if (!this.Element.style[this.Side])
                {
                    return 0;
                }
                return parseInt(this.Element.style[this.Side]);
            } ,
            SetPosition:function (value)
            {
                this.Element.style[this.Side]=value+"px";
            } ,
            Out:function ()
            {
                this.ResetState();
                this.Direction=-1;
                if (this.Invert)
                {
                    this.Delta=this.GetSize()-this.GetPosition();
                }
                else
                {
                    this.Delta=this.GetPosition()-this.GetSize();
                }
                this.Start(this.CollapseConfig);
            } ,
            In:function ()
            {
                this.ResetState( true);
                this.Direction=1;
                this.Delta=-this.GetPosition();
                this.Start(this.ExpandConfig);
            } ,
            Start:function (k)
            {
                if (k.Type=="None")
                {
                    this.UpdateContainerSize();
                    this.Ticker.Stop();
                    this.OnTickEnd();
                    this.ChangePosition(this.InitialPosition+this.Delta);
                    if (this.Overlay)
                    {
                        this.Overlay.Update();
                    }
                    this.UpdateContainerSize(); return;
                }
                this.Tween=k.Type;
                this.Ticker.Configure(k);
                this.Ticker.Start();
                this.UpdateContainerSize();
            } ,
            ChangePosition:function (J)
            {
                if (isNaN(J))
                    return;
                var j,H,h;
                if (this.Invert)
                {
                    if (this.Horizontal)
                    {
                        j=this.Element.offsetWidth;
                        H="width";
                        h=this.OffsetX;
                    }
                    else
                    {
                        j=this.Element.offsetHeight;
                        H="height";
                        h=this.OffsetY;
                    }
                    this.SetPosition(0);
                    var G=Math.max(1,j-J)+"px";
                    this.Element.parentNode.style[H]=G;
                    this.Element.parentNode.style[this.Side]=((j-J+h)*-1)+"px";
                }
                else
                {
                    this.Element.style[this.Side]=J+"px";
                }
            } ,
            OnTick:function (time)
            {
                var J=Math.round(Penner[this.Tween](time,this.InitialPosition,this.Delta,this.Ticker.Duration));
                if (J==this.InitialPosition+this.Delta)
                {
                    this.Ticker.Stop();
                }
                this.ChangePosition(J);
                this.UpdateContainerSize();
                if (this.Overlay)
                {
                    this.Overlay.Update();
                }
            } ,
            OnTickEnd:function ()
            {
                try
                {
                    if (this.Direction==0)
                    {
                        return;
                    }
                    if (this.Direction>0)
                    {
                        this.Element.parentNode.style.overflow="visible";
                        if (this.Listener && this.Listener.OnExpandComplete)
                        {
                            this.Listener.OnExpandComplete();
                        }
                    }
                    else
                    {
                        this.Element.parentNode.style.display="none";
                        if (this.Listener)
                        {
                            this.Listener.OnCollapseComplete();
                        }
                    }
                    this.ChangePosition(this.InitialPosition+this.Delta);
                    if (this.Overlay)
                    {
                        this.Overlay.Update();
                    }
                    this.Direction=0;
                }
                catch (e){}
            }
    };
};

var Penner= {} ;
Penner.Linear= function (g,b,F,f)
{
    return F*g/f+b;
};

Penner.InQuad= function (g,b,F,f)
{
    return F*(g /= f)*g+b;
};

Penner.OutQuad= function (g,b,F,f)
{
    return -F*(g /= f)*(g-2)+b;
};

Penner.InOutQuad= function (g,b,F,f)
{
    if ((g /= f/2)<1)
        return F/2*g*g+b;
    return -F/2*(( --g)*(g-2)-1)+b;
};

Penner.InCubic= function (g,b,F,f)
{
    return F*(g /= f)*g*g+b;
};

Penner.OutCubic= function (g,b,F,f)
{
    return F*((g=g/f-1)*g*g+1)+b;
};

Penner.InOutCubic= function (g,b,F,f)
{
    if ((g /= f/2)<1)
        return F/2*g*g*g+b;
    return F/2*((g-=2)*g*g+2)+b;
};

Penner.InQuart= function (g,b,F,f)
{
    return F*(g /= f)*g*g*g+b;
};

Penner.OutQuart= function (g,b,F,f)
{
    return -F*((g=g/f-1)*g*g*g-1)+b;
};

Penner.InOutQuart= function (g,b,F,f)
{
    if ((g /= f/2)<1)
        return F/2*g*g*g*g+b;
    return -F/2*((g-=2)*g*g*g-2)+b;
};

Penner.InQuint= function (g,b,F,f)
{
    return F*(g /= f)*g*g*g*g+b;
};

Penner.OutQuint= function (g,b,F,f)
{
    return F*((g=g/f-1)*g*g*g*g+1)+b;
};

Penner.InOutQuint= function (g,b,F,f)
{
    if ((g /= f/2)<1)
        return F/2*g*g*g*g*g+b;
    return F/2*((g-=2)*g*g*g*g+2)+b;
};

Penner.InSine= function (g,b,F,f)
{
    return -F*Math.cos(g/f*(Math.PI/2))+F+b;
};

Penner.OutSine= function (g,b,F,f)
{
    return F*Math.sin(g/f*(Math.PI/2))+b;
};

Penner.InOutSine= function (g,b,F,f)
{
    return -F/2*(Math.cos(Math.PI*g/f)-1)+b;
};

Penner.InExpo= function (g,b,F,f)
{
    return (g==0)?b:F*Math.pow(2,10*(g/f-1))+b;
};

Penner.OutExpo= function (g,b,F,f)
{
    return (g==f)?b+F:F*(-Math.pow(2,-10*g/f)+1)+b;
};

Penner.InOutExpo= function (g,b,F,f)
{
    if (g==0)
        return b;
    if (g==f)
        return b+F;
    if ((g /= f/2)<1)
        return F/2*Math.pow(2,10*(g-1))+b;
    return F/2*(-Math.pow(2,-10* --g)+2)+b;
};

Penner.InCirc= function (g,b,F,f)
{
    return -F*(Math.sqrt(1-(g /= f)*g)-1)+b;
};

Penner.OutCirc= function (g,b,F,f)
{
    return F*Math.sqrt(1-(g=g/f-1)*g)+b;
};

Penner.InOutCirc= function (g,b,F,f)
{
    if ((g /= f/2)<1)
        return -F/2*(Math.sqrt(1-g*g)-1)+b;
    return F/2*(Math.sqrt(1-(g-=2)*g)+1)+b;
};

Penner.InElastic= function (g,b,F,f,a,p)
{
    if (g==0)
        return b;
    if ((g /= f)==1)
        return b+F;
    if (!p)
        p=f*.3;
    if ((!a) || a<Math.abs(F))
    {
        a=F;
        var s=p/4;
    }
    else
        var s=p/(2*Math.PI)*Math.asin(F/a);
    return -(a*Math.pow(2,10*(g-=1))*Math.sin((g*f-s)*(2*Math.PI)/p))+b;
};

Penner.OutElastic= function (g,b,F,f,a,p)
{
    if (g==0)
        return b;
    if ((g /= f)==1)
        return b+F;
    if (!p)
        p=f*.3;
    if ((!a) || a<Math.abs(F))
    {
        a=F;
        var s=p/4;
    }
    else
        var s=p/(2*Math.PI)*Math.asin(F/a);
    return a*Math.pow(2,-10*g)*Math.sin((g*f-s)*(2*Math.PI)/p)+F+b;
};

Penner.InOutElastic= function (g,b,F,f,a,p)
{
    if (g==0)
        return b;
    if ((g /= f/2)==2)
        return b+F;
    if (!p)
        p=f*(.3*.15e1);
    if ((!a) || a<Math.abs(F))
    {
        a=F;
        var s=p/4;
    }
    else
        var s=p/(2*Math.PI)*Math.asin(F/a);
    if (g<1)
        return -.5*(a*Math.pow(2,10*(g-=1))*Math.sin((g*f-s)*(2*Math.PI)/p))+b;
    return a*Math.pow(2,-10*(g-=1))*Math.sin((g*f-s)*(2*Math.PI)/p)*.5+F+b;
};

Penner.InBack= function (g,b,F,f,s)
{
    if (s==undefined)
        s=.170158e1;
    return F*(g /= f)*g*((s+1)*g-s)+b;
};

Penner.OutBack= function (g,b,F,f,s)
{
    if (s==undefined)
        s=.170158e1;
    return F*((g=g/f-1)*g*((s+1)*g+s)+1)+b;
};

Penner.InOutBack= function (g,b,F,f,s)
{
    if (s==undefined)
        s=.170158e1;
    if ((g /= f/2)<1)
        return F/2*(g*g*(((s *= (.1525e1))+1)*g-s))+b;
    return F/2*((g-=2)*g*(((s *= (.1525e1))+1)*g+s)+2)+b;
};

Penner.InBounce= function (g,b,F,f)
{
    return F-Penner.OutBounce(f-g,0,F,f)+b;
};

Penner.OutBounce= function (g,b,F,f)
{
    if ((g /= f)<(1/.275e1))
    {
        return F*(.75625e1*g*g)+b;
    }
    else if (g<(2/.275e1))
    {
        return F*(.75625e1*(g-=(.15e1/.275e1))*g+.75)+b;
    }
    else if (g<(.25e1/.275e1))
    {
        return F*(.75625e1*(g-=(.225e1/.275e1))*g+.9375)+b;
    }
    else
    {
        return F*(.75625e1*(g-=(.2625e1/.275e1))*g+.984375)+b;
    }
};

Penner.InOutBounce= function (g,b,F,f)
{
    if (g<f/2)
        return Penner.InBounce(g*2,0,F,f)*.5+b;
    return Penner.OutBounce(g*2-f,0,F,f)*.5+F*.5+b;
};
;

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.EventMixin)=="undefined" ||
    typeof(window.RadControlsNamespace.EventMixin.Version)==null ||
    window.RadControlsNamespace.EventMixin.Version<1)
    {
        RadControlsNamespace.EventMixin= {Version: 1,
                                            Initialize:function (T)
                                            {
                                                T._listeners= {} ;
                                                T._eventsEnabled= true;
                                                T.AttachEvent=this.AttachEvent;
                                                T.DetachEvent=this.DetachEvent;
                                                T.RaiseEvent=this.RaiseEvent;
                                                T.EnableEvents=this.EnableEvents;
                                                T.DisableEvents=this.DisableEvents;
                                            } ,
                                            DisableEvents:function ()
                                            {
                                                this._eventsEnabled= false;
                                            } ,
                                            EnableEvents:function ()
                                            {
                                                this._eventsEnabled= true;
                                            } ,
                                            AttachEvent:function (r,D)
                                            {
                                                if (!this._listeners[r])
                                                {
                                                    this._listeners[r]=[];
                                                }
                                                this._listeners[r][this._listeners[r].length]=(RadControlsNamespace.EventMixin.ResolveFunction(D));
                                            } ,
                                            DetachEvent:function (r,D)
                                            {
                                                var C=this._listeners[r];
                                                if (!C)
                                                {
                                                    return false;
                                                }
                                                var B=RadControlsNamespace.EventMixin.ResolveFunction(D);
                                                for (var i=0; i<C.length; i++)
                                                {
                                                    if (B==C[i])
                                                    {
                                                        C.splice(i,1);
                                                        return true;
                                                    }
                                                }
                                                return false;
                                            } ,
                                            ResolveFunction:function (o0)
                                            {
                                                if (typeof(o0)=="function")
                                                {
                                                    return o0;
                                                }
                                                else if (typeof(window[o0])=="function")
                                                {
                                                    return window[o0];
                                                }
                                                else
                                                {
                                                    return new Function("var Sender = arguments[0]; var Arguments = arguments[1];"+o0);
                                                }
                                            } ,
                                            RaiseEvent:function (r,O0)
                                            {
                                                if (!this._eventsEnabled)
                                                {
                                                    return true;
                                                }
                                                var l0= true;
                                                if (this[r])
                                                {
                                                    var i0=RadControlsNamespace.EventMixin.ResolveFunction(this[r])(this,O0);
                                                    if (typeof(i0)=="undefined")
                                                    {
                                                        i0= true;
                                                    }
                                                    l0=l0 && i0;
                                                }
                                                if (!this._listeners[r])
                                                    return l0;
                                                for (var i=0; i<this._listeners[r].length; i++)
                                                {
                                                    var D=this._listeners[r][i];
                                                    var i0=D(this,O0);
                                                    if (typeof(i0)=="undefined")
                                                    {
                                                        i0= true;
                                                    }
                                                    l0=l0 && i0;
                                                }
                                                return l0;
                                            }
                                         };
    };

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.JSON)=="undefined" ||
    typeof(window.RadControlsNamespace.JSON.Version)==null ||
    window.RadControlsNamespace.JSON.Version<1)
    {
        window.RadControlsNamespace.JSON= {Version: 1,
                                            stringify:function (Z,I0)
                                            {
                                                var a=[];
                                                var o1=arguments[2] || {} ;
                                                function e(s)
                                                {
                                                    a[a.length]=s;
                                                }
                                                function O1(x)
                                                {
                                                    var F,i,l1,Z;
                                                    switch (typeof x)
                                                    {
                                                        case "object":
                                                            if (x)
                                                            {
                                                                if (x instanceof Array)
                                                                {
                                                                    e("[");
                                                                    l1=a.length;
                                                                    for (i=0; i<x.length; i+=1)
                                                                    {
                                                                        Z=x[i];
                                                                        if (typeof Z!="undefined" && typeof Z!="function")
                                                                        {
                                                                            if (l1<a.length)
                                                                            {
                                                                                e("\x2c");
                                                                            }
                                                                            O1(Z);
                                                                        }
                                                                    }
                                                                    e("]");
                                                                    return "";
                                                                }
                                                                else if (typeof x.valueOf=="function")
                                                                {
                                                                    e("{");
                                                                    l1=a.length;
                                                                    for (i in x)
                                                                    {
                                                                        Z=x[i];
                                                                        if (I0 && Z==I0[i])
                                                                        {
                                                                            continue;
                                                                        }
                                                                        var type=typeof Z;
                                                                        if (type=="undefined" || type=="function")
                                                                        {
                                                                            continue;
                                                                        }
                                                                        if (type=="object" && !o1[i])
                                                                        {
                                                                            continue;
                                                                        }
                                                                        if (l1<a.length)
                                                                        {
                                                                            e("\x2c");
                                                                        }
                                                                        O1(i);
                                                                        e(":");
                                                                        O1(Z);
                                                                    }
                                                                    return e("}");
                                                                }
                                                            }
                                                            e("null");
                                                            return "";
                                                        case "number":
                                                            e(isFinite(x)? +x: "\x6e\x75ll");
                                                            return "";
                                                        case "string":
                                                            l1=x.length;
                                                            e("\x22");
                                                            for (i=0; i<l1; i+=1)
                                                            {
                                                                F=x.charAt(i);
                                                                if (F>="\x20")
                                                                {
                                                                    if (F=="\134" || F=="\x22")
                                                                    {
                                                                        e("\134");
                                                                    }
                                                                    e(F);
                                                                }
                                                                else
                                                                {
                                                                    switch (F)
                                                                    {
                                                                        case "\010":
                                                                            e("\134\x62");
                                                                            break;
                                                                        case "\x0c":
                                                                            e("\x5cf");
                                                                            break;
                                                                        case "\x0a":
                                                                            e("\134n");
                                                                            break;
                                                                        case "\015":
                                                                            e("\134\x72");
                                                                            break;
                                                                        case "\x09":
                                                                            e("\134\x74");
                                                                            break;
                                                                        default:
                                                                            F=F.charCodeAt();
                                                                            e("\x5cu00"+Math.floor(F/16).toString(16)+(F%16).toString(16));
                                                                    }
                                                                }
                                                            }
                                                            e("\042");
                                                            return "";
                                                        case "boolean":
                                                            e(String(x));
                                                            return "";
                                                        default:
                                                            e("null");
                                                            return "";
                                                    }
                                                }
                                                O1(Z,0);
                                                return a.join("");
                                            } ,
                                            stringifyHashTable:function (hash,i1,I1)
                                            {
                                                var a=[];
                                                if (!I1)
                                                    I1=[];
                                                for (var i=0; i<hash.length; i++)
                                                {
                                                    var o2=this.stringify(hash[i],I1[i]);
                                                    if (o2=="{}")
                                                        continue;
                                                    a[a.length]="\x22"+hash[i][i1]+"\042\072"+o2;
                                                }
                                                return "{"+a.join(",")+"}";
                                            } ,
                                            parse:function (text)
                                            {
                                                return (/^([\x20\x09\x0d\x0a\x2c\x3a\x7b\x7d\x5b\x5d]|\x22(\x5c[\x22\x5c\x2f\x62\x66\x6e\x72\x74\x75]|[^\x00-\x1f\x22\x5c]+)*\x22|\x2d?\d+(\x2e\d*)?([\x65\x45][\x2b-]?\d+)?|\x74\x72\x75\x65|\x66\x61\x6c\x73\x65|\x6e\x75\x6c\x6c)+$/.test(text)) && eval("("+text+")");
                                            }
                                        };
    };

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.Overlay)=="undefined" ||
    typeof(window.RadControlsNamespace.Overlay.Version)==null ||
    window.RadControlsNamespace.Overlay.Version<.11e1)
    {
        window.RadControlsNamespace.Overlay= function (O)
        {
            if (!this.SupportsOverlay())
            {
                return;
            }
            this.Element=O;
            this.Shim=document.createElement("IFRAME");
            this.Shim.src="javascript:'';";
            this.Element.parentNode.insertBefore(this.Shim,this.Element);
            if (O.style.zIndex>0)
            {
                this.Shim.style.zIndex=O.style.zIndex-1;
            }
            this.Shim.style.position="absolute";
            this.Shim.style.border="0px";
            this.Shim.frameBorder=0;
            this.Shim.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
            this.Shim.disabled="disabled";
        };
        window.RadControlsNamespace.Overlay.Version=.11e1;
        RadControlsNamespace.Overlay.prototype.SupportsOverlay= function ()
        {
            return RadControlsNamespace.Browser.IsIE || (RadControlsNamespace.Browser.IsMozilla && RadControlsNamespace.Browser.IsMac);
        };
        RadControlsNamespace.Overlay.prototype.Update= function ()
        {
            if (!this.SupportsOverlay())
            {
                return;
            }
            this.Shim.style.top=this.ToUnit(this.Element.style.top);
            this.Shim.style.left=this.ToUnit(this.Element.style.left);
            this.Shim.style.width=this.Element.offsetWidth+"px";
            this.Shim.style.height=this.Element.offsetHeight+"px";
        };
        RadControlsNamespace.Overlay.prototype.ToUnit= function (value)
        {
            if (!value)
                return "0px";
            return parseInt(value)+"px";
        };
        RadControlsNamespace.Overlay.prototype.Dispose= function ()
        {
            if (!this.SupportsOverlay())
            {
                return;
            }
            if (this.Shim.parentNode)
            {
                this.Shim.parentNode.removeChild(this.Shim);
            }
            this.Element=null;
            this.Shim=null;
        };
    };


if (typeof(window.RadMenuNamespace)=="undefined")
{
    window.RadMenuNamespace= {} ;
}

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

RadControlsNamespace.AppendStyleSheet= function (O2,l2,i2)
{
    if (!i2)
    {
        return;
    }
    if (!O2)
    {
        document.write("<"+"link"+" rel='stylesheet' type='text/css' href='"+i2+"' />");
    }
    else
    {
        var I2=document.createElement("LINK");
        I2.rel="stylesheet";
        I2.type="text/css";
        I2.href=i2;
        document.getElementById(l2+"StyleSheetHolder").appendChild(I2);
    }
};

RadMenuNamespace.ItemFlow= {Vertical: 0,
                            Horizontal: 1
                            };

RadMenuNamespace.ExpandDirection= {Auto: 0,
                                    Up: 1,
                                    Down: 2,
                                    Left: 3,
                                    Right: 4
                                  };

RadMenuNamespace.ExpandDirectionPropertyName= { "1": "bottom",
                                                "2": "top",
                                                "3": "right",
                                                "4": "left"
                                              };

function RadMenu(l2)
{
    var o3=window[l2];
    if (o3!=null && o3.Dispose)
    {
        o3.Dispose();
    }
    this.DomElement=document.getElementById(l2);
    this.ChildItemList=RadMenu.GetFirstChildByTagName(this.DomElement,"ul");
    this.StateField=document.getElementById(l2+"_Hidden");
    this.Items=[]; this.AllItems=[];
    this.OpenedItem=null;
    this.LastExpandedItem=null;
    this.ExpandAnimation= {} ;
    this.CollapseAnimation= {} ;
    this.CollapseDelay=500;
    this.ExpandDelay=0;
    this.ID=l2;
    this.Skin="Outlook";
    this.RightToLeft= false;
    this.EnableScreenBoundaryDetection= true;
    this.InUpdate= false;
    this.Initialized= false;
    this.State= {} ;
    this.ItemState= {} ;
    this.CausesValidation= true;
    this.Flow=RadMenuNamespace.ItemFlow.Horizontal;
    this.ClickToOpen= false;
    this.Enabled= true;
    this.EnableAutoScroll= false;
    this.Clicked= false;
    this.OriginalZIndex=this.DomElement.style.zIndex;
    this.Attributes= {} ;
    RadControlsNamespace.EventMixin.Initialize(this );
    RadControlsNamespace.DomEventMixin.Initialize(this );
}

RadMenu.JSONIncludeDeep= { "Attributes": true };

RadMenu.CreateState= function (R)
{
    R.InitialState= {};
    for (var i in R)
    {
        var type=typeof R[i];
        if (type=="number" || type=="string" || type=="boolean")
            R.InitialState[i]=R[i];
    }
};

RadMenu.GetFirstChildByTagName= function (parentNode,tagName)
{
    var O3=parentNode.getElementsByTagName(tagName)[0];
    if (O3 && O3.parentNode==parentNode)
    {
        return O3;
    }
    return null;
};

RadMenu.prototype.RenderInProgress= function ()
{
    return this.DomElement.offsetWidth==0;
};

RadMenu.prototype.Detach= function (e)
{
    if (!(RadControlsNamespace.Browser.IsIE) || document.readyState=="complete")
    {
        document.forms[0].appendChild(this.DomElement);
        this.DomElement.style.position="absolute";
        this.Detached= true;
    }
};

RadMenu.prototype.Show= function (e)
{
    for (var i in RadMenuNamespace.ContextMenus)
    {
        RadMenuNamespace.ContextMenus[i].Hide();
    }
    var x=this.MouseEventX(e);
    var y=this.MouseEventY(e);
    return this.ShowAt(x,y);
};

RadMenu.prototype.ShowAt= function (x,y)
{
    if (!this.Detached)
    {
        this.Detach();
    }
    this.ShownAsContext= true;
    this.Ease.ShowElements();
    this.Ease.UpdateContainerSize();
    if (!this.WidthFixed)
    {
        this.WidthFixed= true;
        this.FixItemWidth(this );
    }
    this.Position(x,y);
    this.Ease.In();
    return false;
};

RadMenu.prototype.Position= function (x,y)
{
    var l3=RadControlsNamespace.Screen.GetViewPortSize();
    x=Math.min(x,l3.width-this.DomElement.offsetWidth);
    y=Math.min(y,l3.height-this.DomElement.offsetHeight);
    if (isNaN(x))
        x=0;
    if (isNaN(y))
        y=0;
    this.DomElement.style.left=x+"px";
    this.DomElement.style.top=y+"px";
};

RadMenu.prototype.MouseEventX= function (e)
{
    if (e.pageX)
    {
        return e.pageX;
    }
    else if (e.clientX)
    {
        if (RadControlsNamespace.Browser.StandardsMode)
        {
            return (e.clientX+document.documentElement.scrollLeft);
        }
        return (e.clientX+document.body.scrollLeft);
    }
};

RadMenu.prototype.MouseEventY= function (e)
{
    if (e.pageY)
    {
        return e.pageY;
    }
    else if (e.clientY)
    {
        if (RadControlsNamespace.Browser.StandardsMode)
        {
            return (e.clientY+document.documentElement.scrollTop);
        }
        return (e.clientY+document.body.scrollTop);
    }
};

RadMenu.prototype.EventSource= function (e)
{
    return RadControlsNamespace.DomEvent.GetTarget(e);
};

RadMenu.prototype.Hide= function ()
{
    if (this.ShownAsContext)
    {
        this.Ease.Out();
        this.ShownAsContext= false;
    }
};

RadMenu.prototype.Initialize= function (N,i3)
{
    this.LoadConfiguration(N);
    this.ItemData=i3;
    this.DetermineDirection();
    this.ApplyRTL();
    if (this.IsContext)
    {
        this.InitContextMenu();
    }
    this.CreateControlHierarchy(this,0);
    if (!this.Enabled)
    {
        this.Disable();
    }
    if (this.Flow==RadMenuNamespace.ItemFlow.Vertical)
    {
        this.FixRootItemWidth();
    }
    this.RegisterDisposeOnUnload();
    this.AttachEventHandlers();
    this.Initialized= true;
    RadMenu.CreateState(this );
    this.RaiseEvent("OnClientLoad",null);
};

RadMenu.prototype.AttachEventHandlers= function ()
{
    var R=this ;
    this.DomElement.RadShow= function ()
    {
        if (R.Flow==RadMenuNamespace.ItemFlow.Vertical)
        {
            R.FixRootItemWidth();
        }
    };
};

RadMenu.prototype.DetermineDirection= function ()
{
    var U=this.DomElement;
    while (U.tagName.toLowerCase()!="html")
    {
        if (U.dir)
        {
            this.RightToLeft=(U.dir.toLowerCase()=="rtl");
            return;
        }
        U=U.parentNode;
    }
    this.RightToLeft= false;
};

RadMenu.prototype.ApplyRTL= function ()
{
    if (!this.RightToLeft)
        return;
    if (RadControlsNamespace.Browser.IsIE)
    {
        this.DomElement.dir="ltr";
    }
    if (!this.IsContext)
    {
        this.DomElement.className+=" rtl RadMenu_"+this.Skin+"_rtl";
    }
    else
    {
        this.DomElement.className+=" rtlcontext RadMenu_"+this.Skin+"_rtl";
    }
};

RadMenu.prototype.InitContextMenu= function ()
{
    this.Ease=new RadControlsNamespace.Ease(this.ChildItemList,this,0,0,null, true);
    this.Flow=RadMenuNamespace.ItemFlow.Vertical;
    this.Ease.SetSide("top");
    if (RadControlsNamespace.Browser.IsOpera)
    {
        this.AttachDomEvent(document,"mousedown","OnContextMenu");
    }
    else
    {
        this.AttachDomEvent(document,"contextmenu","OnContextMenu");
    }
    this.AttachDomEvent(document,"click","OnDocumentClick");
    if (!RadMenuNamespace.ContextMenus)
    {
        RadMenuNamespace.ContextMenus= {} ;
    }
    if (!RadMenuNamespace.ContextElements)
    {
        RadMenuNamespace.ContextElements= {} ;
    }
    if (this.ContextMenuElementID)
    {
        RadMenuNamespace.ContextElements[this.ContextMenuElementID]= true;
    }
    RadMenuNamespace.ContextMenus[this.ID]=this ;
};

RadMenu.prototype.OnContextMenu= function (e)
{
    if (RadControlsNamespace.Browser.IsOpera)
    {
        if (e.button!=2)
        {
            return;
        }
    }
    this.ContextElement=document.getElementById(this.ContextMenuElementID);
    if (this.ContextMenuElementID && !this.ContextElement)
    {
        return;
    }
    var I3=this.EventSource(e);
    if (this.ContextElement)
    {
        if (I3==this.ContextElement || this.IsChildOf(this.ContextElement,I3))
        {
            this.Show(e);
            RadControlsNamespace.DomEvent.PreventDefault(e);
            RadControlsNamespace.DomEvent.StopPropagation(e);
        }
    }
    else if (!RadMenuNamespace.ContextElements[I3.id])
    {
        this.Show(e);
        RadControlsNamespace.DomEvent.PreventDefault(e);
        RadControlsNamespace.DomEvent.StopPropagation(e);
    }
};

RadMenu.prototype.IsChildOf= function (parent,O3)
{
    if (O3==parent)
    {
        return false;
    }
    while (O3 && (O3!=document.body))
    {
        if (O3==parent)
        {
            return true;
        }
        try
        {
            O3=O3.parentNode;
        }
        catch (e)
        {
            return false;
        }
    }
    return false;
};

RadMenu.prototype.OnDocumentClick= function (e)
{
    var I3=this.EventSource(e);
    if (this.IsChildOf(this.DomElement,I3))
    {
        if (!this.IsChildOfMenuItem(I3))
        {
            return;
        }
    }
    this.Hide();
};

RadMenu.prototype.IsChildOfMenuItem= function (O)
{
    if (O.tagName=="span" && O.className.indexOf("text")>-1)
    {
        return true;
    }
    if (O.tagName=="a" && O.className.indexOf("link")>-1)
    {
        return true;
    }
    return false;
};

RadMenu.prototype.Enable= function ()
{
    this.Enabled= true;
    this.DomElement.disabled="";
    for (var i=0; i<this.AllItems.length; i++)
    {
        this.AllItems[i].Enable();
    }
};

RadMenu.prototype.Disable= function ()
{
    this.Enabled= false;
    this.DomElement.disabled="disabled";
    for (var i=0; i<this.AllItems.length; i++)
    {
        this.AllItems[i].Disable();
    }
};

RadMenu.prototype.Focus= function ()
{
    this.DomElement.focus();
};

RadMenu.prototype.RegisterDisposeOnUnload= function ()
{
    if (!RadControlsNamespace.Browser.IsIE)
        return;
    var R=this ;
    this.DisposeHandler= function ()
    {
        R.Dispose();
    };
    window.attachEvent("onunload",this.DisposeHandler);
};

RadMenu.prototype.Dispose= function ()
{
    for (var i=0; i<this.AllItems.length; i++)
    {
        this.AllItems[i].Dispose();
    }
    if (this.Detached && this.DomElement)
    {
        if (this.DomElement.parentNode)
        {
            this.DomElement.parentNode.removeChild(this.DomElement);
        }
    }
    if (RadControlsNamespace.Browser.IsIE)
    {
        window.detachEvent("onunload",this.DisposeHandler); this.DisposeHandler=null;
    }
    if (this.DomElement)
    {
        this.DomElement.RadShow=null;
    }
    this.DomElement=null;
    this.ChildItemList=null;
    this.DisposeDomEventHandlers();
    if (this.IsContext && RadMenuNamespace.ContextMenus)
    {
        RadMenuNamespace.ContextMenus[this.ID]=null;
    }
};

RadMenu.prototype.CreateMenuItem= function (parent,o4)
{
    var item=new RadMenuItem(o4);
    this.AddItemToParent(parent,item);
    return item;
};

RadMenu.prototype.AddItemToParent= function (parent,item)
{
    item.Index=parent.Items.length;
    parent.Items[parent.Items.length]=item;
    item.GlobalIndex=this.AllItems.length;
    this.AllItems[this.AllItems.length]=item;
    item.Parent=parent;
    item.Menu=this ;
};

RadMenu.prototype.CreateControlHierarchy= function (parent,O4)
{
    parent.Level=O4;
    var O=parent.ChildItemList;
    if (!O)
    {
        return;
    }
    for (var i=0; i<O.childNodes.length; i++)
    {
        var l4=O.childNodes[i];
        if (l4.nodeType==3)
            continue;
        var item=this.CreateMenuItem(parent,l4);
        item.Initialize();
        if (O4==0)
        {
            item.PostInitialize();
        }
        this.CreateControlHierarchy(item,O4+1);
    }
};

RadMenu.prototype.FixItemWidth= function (item)
{
    var i4=0;
    var I4=0;
    var ul=item.ChildItemList;
    for (var i=0; i<ul.childNodes.length; i++)
    {
        var li=ul.childNodes[i];
        if (li.nodeType==3)
            continue;
        var O=RadMenu.GetFirstChildByTagName(li,"a");
        if (!O)
        {
            O=li;
        }
        i4=Math.max(RadControlsNamespace.Box.GetOuterWidth(O),i4);
    }
    for (var i=0; i<ul.childNodes.length; i++)
    {
        var li=ul.childNodes[i];
        if (li.nodeType==3)
            continue;
        if (RadControlsNamespace.Browser.IsOpera)
        {
            li.style.cssFloat="none";
        }
        var a=RadMenu.GetFirstChildByTagName(li,"a");
        if (a)
        {
            var o5=!RadMenu.GetFirstChildByTagName(a,"span").firstChild;
            if (!RadControlsNamespace.Browser.IsIE || !o5)
            {
                RadControlsNamespace.Box.SetOuterWidth(a,i4);
            }
        }
        else
        {
            li.style.width=i4+"px";
        }
    }
    if (RadControlsNamespace.Browser.IsSafari)
    {
        ul.style.width=RadMenu.GetFirstChildByTagName(ul,"li").offsetWidth+"px";
    }
};

RadMenu.prototype.FixRootItemWidth= function ()
{
    var R=this ;
    var O5= function ()
    {
        R.FixItemWidth(R);
    };
    if (this.RenderInProgress() || RadControlsNamespace.Browser.IsOpera || RadControlsNamespace.Browser.IsSafari)
    {
        if (window.addEventListener)
        {
            window.addEventListener("load",O5, false);
        }
        else
        {
            window.attachEvent("onload",O5);
        }
    }
    else
    {
        O5();
    }
};

RadMenu.prototype.FixListWidth= function (item)
{
    var l5=0;
    var ul=item.ChildItemList;
    for (var i=0; i<ul.childNodes.length; i++)
    {
        var node=ul.childNodes[i];
        if (node.nodeType==3)
            continue;
        l5+=node.offsetWidth;
        node.style.clear="none";
    }
    ul.style.width=l5+"px";
};

RadMenu.prototype.LoadConfiguration= function (N)
{
    for (var i5 in N)
    {
        this[i5]=N[i5];
    }
    if (!this.DefaultGroupSettings)
    {
        this.DefaultGroupSettings= {} ;
    }
    if (typeof this.DefaultGroupSettings.Flow=="undefined")
    {
        this.DefaultGroupSettings.Flow=RadMenuNamespace.ItemFlow.Vertical;
    }
    if (typeof this.DefaultGroupSettings.ExpandDirection=="undefined")
    {
        this.DefaultGroupSettings.ExpandDirection=RadMenuNamespace.ExpandDirection.Auto;
    }
    if (typeof this.DefaultGroupSettings.OffsetX=="undefined")
    {
        this.DefaultGroupSettings.OffsetX=0;
    }
    if (typeof this.DefaultGroupSettings.OffsetY=="undefined")
    {
        this.DefaultGroupSettings.OffsetY=0;
    }
};

RadMenu.prototype.Close= function (N)
{
    if (this.OpenedItem)
    {
        this.OpenedItem.Close();
    }
};

RadMenu.prototype.FindItemByText= function (text)
{
    for (var i=0; i<this.AllItems.length; i++)
    {
        if (this.AllItems[i].Text==text)
        {
            return this.AllItems[i];
        }
    }
    return null;
};

RadMenu.prototype.FindItemById= function (id)
{
    for (var i=0; i<this.AllItems.length; i++)
    {
        if (this.AllItems[i].ID==id)
        {
            return this.AllItems[i];
        }
    }
    return null;
};

RadMenu.prototype.FindItemByValue= function (value)
{
    for (var i=0; i<this.AllItems.length; i++)
    {
        if (this.AllItems[i].Value==value)
        {
            return this.AllItems[i];
        }
    }
    return null;
};

RadMenu.prototype.FindItemByUrl= function (I5)
{
    for (var i=0; i<this.AllItems.length; i++)
    {
        if (this.AllItems[i].NavigateUrl==I5)
        {
            return this.AllItems[i];
        }
    }
    return null;
};

RadMenu.prototype.SetContextElementID= function (id)
{
    if (!RadMenuNamespace.ContextElements)
    {
        RadMenuNamespace.ContextElements= {} ;
    }
    if (this.ContextMenuElementID)
    {
        RadMenuNamespace.ContextElements[this.ContextMenuElementID]= false;
    }
    this.ContextMenuElementID=id;
    RadMenuNamespace.ContextElements[this.ContextMenuElementID]= false;
};

RadMenu.prototype.RecordState= function ()
{
    if (this.InUpdate || !this.Initialized)
    {
        return;
    }
    var o6=RadControlsNamespace.JSON.stringify(this,this.InitialState,RadMenu.JSONIncludeDeep);
    var O6=[];
    for (var i in this.ItemState)
    {
        if (this.ItemState[i]=="")
            continue;
        if (typeof this.ItemState[i]=="function")
            continue;
        O6[O6.length]=this.ItemState[i];
    }
    this.StateField.value="{\"State\":"+o6+",\"ItemState\":{"+O6.join(",")+"}}";
};

RadMenu.prototype.PersistClientSideItems= function ()
{
    for (var i=0; i<this.AllItems.length; i++)
    {
        var item=this.AllItems[i];
        if (item.ClientSide)
        {
            item.RecordState( true);
        }
    }
};

RadMenu.prototype.SetAttribute= function (name,value)
{
    this.Attributes[name]=value;
    this.RecordState();
};

RadMenu.prototype.GetAttribute= function (name)
{
    return this.Attributes[name];
};

RadMenu.CreateChildItemContainer= function (l6)
{
    var i6=document.createElement("div");
    i6.className="slide";
    l6.DomElement.appendChild(i6);
    var I6=document.createElement("ul");
    if (l6.Flow==RadMenuNamespace.ItemFlow.Horizontal)
    {
        I6.className="horizontal group level"+l6.Level;
    }
    else
    {
        I6.className="vertical group level"+l6.Level;
    }
    i6.appendChild(I6);
};

RadMenu.prototype.AddItem= function (item)
{
    var o4=document.createElement("li");
    o4.className="item last";
    var o7=document.createElement("a");
    o7.className="link";
    var O7=document.createElement("span");
    O7.className="text";
    o7.appendChild(O7);
    o4.appendChild(o7);
    item.SetDomElement(o4);
    var menu=this.Menu || this ;
    if (menu!=this && this.Items.length==0)
    {
        RadMenu.CreateChildItemContainer(this );
        this.InitializeDomElements();
        this.InitializeAnimation();
    }
    this.ChildItemList.appendChild(o4);
    menu.AddItemToParent(this,item);
    item.Level=this.Level+1;
    var text=item.Text;
    item.Text="";
    item.ID=this.ID+"_m"+(this.Items.length-1);
    item.Initialize();
    item.SetText(text);
    if (this.Menu)
    {
        item.ParentClientID=this.ID;
    }
    o7.href="#";
    if (this.Items.length>1)
    {
        var l7=this.Items[this.Items.length-2].DomElement;
        l7.className=l7.className.replace(" last","");
    }
};

function i7(I7)
{
    document.body.appendChild(document.createTextNode(I7));
    document.body.appendChild(document.createElement("HR"));
};

function RadMenuItem(o4)
{
    if (o4)
    {
        this.SetDomElement(o4);
    }
    else
    {
        this.ClientSide= true;
    }
    this.IsSeparator= false;
    this.AnimationContainer=null;
    this.OpenedItem=null;
    this.FocusedItem=null;
    this.Items=[];
    this.Attributes= {} ;
    this.Index=-1;
    this.Level=-1;
    this.Parent=null;
    this.Menu=null;
    this.GroupSettings= {} ;
    this.TimeoutPointer=null;
    this.Templated= false;
    this.NavigateAfterClick= true;
    this.FocusedCssClass="focused";
    this.ClickedCssClass="clicked";
    this.ExpandedCssClass="expanded";
    this.DisabledCssClass="disabled";
    this.CssClass="";
    this.State=RadMenuItemState.Closed;
    this.Focused= false;
    this.Clicked= false;
    this.Enabled= true;
    this.Initialized= false;
}

RadMenuItem.prototype.SetDomElement= function (o4)
{
    this.DomElement=o4;
    this.LinkElement=RadMenu.GetFirstChildByTagName(this.DomElement,"a");
    if (this.LinkElement==null)
    {
        this.ID=this.DomElement.id;
        this.TextElement=RadMenu.GetFirstChildByTagName(this.DomElement,"span");
        this.NavigateUrl="";
    }
    else
    {
        this.ID=this.LinkElement.id;
        this.TextElement=RadMenu.GetFirstChildByTagName(this.LinkElement,"span");
        this.NavigateUrl=this.LinkElement.href;
    }
};

RadMenuItem.prototype.PostInitializeItems= function ()
{
    for (var i=0; i<this.Items.length; i++)
    {
        this.Items[i].PostInitialize();
    }
};

RadMenuItem.prototype.SetText= function (text)
{
    this.PostInitialize();
    this.TextElement.innerHTML=text;
    this.Text=text;
    this.RecordState();
};

RadMenuItem.prototype.SetNavigateUrl= function (I5)
{
    this.PostInitialize();
    this.LinkElement.setAttribute("href",I5);
    this.NavigateUrl=I5;
    this.RecordState();
};

RadMenuItem.prototype.SetValue= function (value)
{
    this.PostInitialize();
    this.Value=value; this.RecordState();
};

RadMenuItem.prototype.InitializeDomElements= function ()
{
    if (!this.Templated)
    {
        this.AnimationContainer=RadMenu.GetFirstChildByTagName(this.DomElement,"div");
        this.ImageElement=RadMenu.GetFirstChildByTagName(this.LinkElement || this.DomElement,"img");
        if (this.ImageElement)
        {
            this.ImageUrl=this.ImageElement.src;
        }
    }
    else
    {
        this.TextElement=RadMenu.GetFirstChildByTagName(this.DomElement,"div");
        this.AnimationContainer=this.TextElement.nextSibling;
    }
    if (this.AnimationContainer)
    {
        var ul=this.AnimationContainer.getElementsByTagName("ul")[0];
        this.ChildItemList=ul;
        if (this.ChildItemList.parentNode!=this.AnimationContainer)
        {
            this.ScrollWrap=this.ChildItemList.parentNode;
        }
    }
};

RadMenuItem.prototype.InitializeAnimation= function ()
{
    this.DetermineExpandDirection();
    if (!this.AnimationContainer)
    {
        return;
    }
    this.Ease=new RadControlsNamespace.Ease(this.ScrollWrap || this.ChildItemList,
                                            this.Menu,
                                            this.GroupSettings.OffsetX,
                                            this.GroupSettings.OffsetY,
                                            this,
                                            true);
    var o8=this.GroupSettings.ExpandDirection;
    var O8=RadMenuNamespace.ExpandDirectionPropertyName[o8];
    this.Ease.SetSide(O8);
    this.TextElement.className="text expand"+this.Ease.GetSide();
    this.AnimationContainer.style.zIndex=this.GlobalIndex+10;
    this.ChildItemList.style.zIndex=this.GlobalIndex+10;
    if (this.ScrollWrap)
    {
        this.CreateScroll();
    }
};

RadMenuItem.prototype.Initialize= function ()
{
    RadControlsNamespace.DomEventMixin.Initialize(this );
    this.LoadConfiguration();
    this.InitializeDomElements();
    this.InitializeAnimation();
    if (this.TextElement && this.TextElement.firstChild)
    {
        this.Text=this.TextElement.firstChild.nodeValue;
    }
    this.OriginalZIndex=Math.max(this.DomElement.style.zIndex,this.Menu.OriginalZIndex);
};

RadMenuItem.prototype.PostInitialize= function ()
{
    if (this.Initialized)
    {
        return;
    }
    this.AttachEventHandlers();
    this.RenderAccessKey();
    RadMenu.CreateState(this );
    this.UpdateCssClass();
    this.Initialized= true;
};

RadMenuItem.prototype.RenderAccessKey= function ()
{
    if (this.IsSeparator || this.Templated)
    {
        return;
    }
    var accessKey=this.LinkElement.accessKey.toLowerCase();
    if (!accessKey)
    {
        return;
    }
    var text=this.TextElement.firstChild.nodeValue;
    var l8=text.toLowerCase().indexOf(accessKey);
    if (l8==-1)
    {
        return;
    }
    this.TextElement.innerHTML=text.substr(0,l8)+
                                "<u>"+
                                text.substr(l8,1)+
                                "</u>"+
                                text.substr(l8+1,text.length);
};

RadMenuItem.prototype.CreateScroll= function ()
{
    this.ScrollWrap.style.zIndex=this.GlobalIndex+10;
    this.BuildScrollObject( false);
};

RadMenuItem.prototype.BuildScrollObject= function (i8)
{
    var I8=RadMenuNamespace.ItemFlow.Vertical==this.GroupSettings.Flow;
    var options= {PerTabScrolling: false ,
                    ScrollButtonsPosition: 1,
                    ScrollPosition: 0 } ;
    this.Scroll=new RadControlsNamespace.Scroll(this.ChildItemList,I8,options);
    this.Scroll.ScrollOnHover= true;
    this.Scroll.LeaveGapsForArrows= false;
    this.Scroll.WrapNeeded=i8;
    if (this.GroupSettings.Flow==RadMenuNamespace.ItemFlow.Vertical)
    {
        this.Scroll.LeftArrowClass="topArrow";
        this.Scroll.LeftArrowClassDisabled="topArrowDisabled";
        this.Scroll.RightArrowClass="bottomArrow";
        this.Scroll.RightArrowClassDisabled="bottomArrowDisabled";
    }
};

RadMenuItem.prototype.CreateRuntimeScroll= function (height)
{
    if (this.Scroll)
    {
        this.Scroll.SetHeight(height);
        return;
    }
    this.BuildScrollObject( true);
    this.Scroll.Initialize();
    this.ScrollWrap=this.ChildItemList.parentNode;
    this.Ease.Element=this.ScrollWrap;
    this.Ease.Overlay.Element=this.ScrollWrap;
    this.ScrollWrap.className="scrollWrap";
    this.Scroll.SetHeight(height);
};

RadMenuItem.prototype.Dispose= function ()
{
    if (!this.Initialized)
        return;
    this.DisposeDomEventHandlers();
    if (this.Ease)
    {
        this.Ease.Dispose();
    }
    this.DomElement=null;
    this.LinkElement=null;
    this.AnimationContainer=null;
};

RadMenuItem.prototype.Focus= function ()
{
    if (!this.CanFocus())
    {
        return;
    }
    this.PostInitializeItems();
    if (this.Parent.OpenedItem && this.Parent.OpenedItem!=this )
    {
        this.Parent.OpenedItem.Close();
    }
    if (this.Parent.State!=RadMenuItemState.Open && this.Parent.Open)
    {
        this.Parent.Open();
    }
    this.Parent.FocusedItem=this ;
    if (!this.Focused && this.LinkElement)
    {
        this.LinkElement.focus();
    }
    this.CancelMenuClose();
    this.UpdateCssClass();
    this.RaiseEvent("OnClientItemFocus");
};

RadMenuItem.prototype.Blur= function ()
{
    if (this.IsSeparator)
    {
        return;
    }
    if (this.Focused)
    {
        this.LinkElement.blur();
    }
    this.Parent.FocusedItem=null;
    this.UpdateCssClass();
    this.RaiseEvent("OnClientItemBlur");
};

RadMenuItem.prototype.Open= function ()
{
    this.PostInitializeItems();
    this.Menu.AboutToCollapse= false;
    if (this.Parent!=this.Menu && this.Parent.State!=RadMenuItemState.Open)
    {
        this.Parent.Open();
    }
    this.Parent.OpenedItem=this ;
    clearTimeout(this.TimeoutPointer);
    if (!this.AnimationContainer)
        return;
    this.State=RadMenuItemState.Open;
    var o9=RadControlsNamespace.Screen.GetViewPortSize();
    this.ChildItemList.style.display="block";
    this.Ease.ShowElements();
    if (this.GroupSettings.Flow==RadMenuNamespace.ItemFlow.Vertical)
    {
        this.Menu.FixItemWidth(this );
    }
    else
    {
        this.Menu.FixListWidth(this );
    }
    if (this.Menu.EnableAutoScroll && this.ChildItemList.offsetHeight>o9.height)
    {
        if (!this.ScrollWrap || this.ScrollWrap.offsetHeight>o9.height)
        {
            this.CreateRuntimeScroll(o9.height+"px");
            this.Ease.ShowElements();
            this.Ease.UpdateContainerSize();
        }
    }
    this.Ease.SetSide(this.GetEaseSide());
    this.Ease.UpdateContainerSize();
    if (this.Scroll)
    {
        this.CalculateScrollWrapSize();
        this.Scroll.Initialize();
    }
    this.PositionChildContainer(o9);
    this.Ease.In();
    this.UpdateCssClass();
    this.DomElement.style.zIndex=this.OriginalZIndex+1000;
    if (!RadControlsNamespace.Browser.IsNetscape)
    {
        this.Menu.DomElement.style.zIndex=this.Menu.OriginalZIndex+1000;
    }
    this.CancelMenuClose();
    this.RaiseEvent("OnClientItemOpen");
};

RadMenuItem.prototype.GetEaseSide= function ()
{
    var o8=this.GroupSettings.ExpandDirection;
    return RadMenuNamespace.ExpandDirectionPropertyName[o8];
};

RadMenuItem.prototype.RaiseEvent= function (r)
{
    return this.Menu.RaiseEvent(r, {Item: this } );
};

RadMenuItem.prototype.UpdateCssClass= function ()
{
    if (this.IsSeparator || this.Templated)
    {
        return;
    }
    var cssClass="link "+this.CssClass;
    if (this.Focused)
    {
        cssClass=cssClass+" "+this.FocusedCssClass;
    }
    if (this.State==RadMenuItemState.Open)
    {
        cssClass=cssClass+" "+this.ExpandedCssClass;
    }
    if (this.Clicked)
    {
        cssClass=cssClass+" "+this.ClickedCssClass;
    }
    if (!this.Enabled)
    {
        cssClass=cssClass+" "+this.DisabledCssClass;
    }
    this.LinkElement.className=cssClass;
    this.UpdateImageUrl();
};

RadMenuItem.prototype.UpdateImageUrl= function ()
{
    if (!this.ImageElement)
        return;
    var O9=this.ImageUrl;
    if (this.Hovered && this.ImageOverUrl)
    {
        O9=this.ImageOverUrl;
    }
    if (this.State==RadMenuItemState.Open && this.ExpandedImageUrl)
    {
        O9=this.ExpandedImageUrl;
    }
    if (!this.Enabled && this.DisabledImageUrl)
    {
        O9=this.DisabledImageUrl;
    }
    if (O9!=this.ImageElement.src)
    {
        this.ImageElement.src=O9;
    }
};

RadMenuItem.prototype.Enable= function ()
{
    if (this.IsSeparator || this.Templated)
    {
        return;
    }
    this.LinkElement.disabled="";
    this.Enabled= true;
    this.EnableDomEventHandling();
    this.UpdateCssClass();
};

RadMenuItem.prototype.Disable= function ()
{
    if (this.IsSeparator || this.Templated)
    {
        return;
    }
    this.LinkElement.disabled="disabled";
    this.Enabled= false;
    this.DisableDomEventHandling();
    this.UpdateCssClass();
};

RadMenuItem.prototype.Close= function ()
{
    if (this.IsSeparator)
    {
        return;
    }
    if (this.State==RadMenuItemState.Closed)
    {
        return;
    }
    if (this.OpenedItem)
    {
        this.OpenedItem.Close();
    }
    this.Parent.OpenedItem=null;
    clearTimeout(this.TimeoutPointer);
    if (!this.AnimationContainer)
        return;
    this.State=RadMenuItemState.Closed;
    if (this.Level==1)
    {
        this.Menu.AboutToCollapse= true;
    }
    this.Ease.Out();
    this.UpdateCssClass();
    this.DomElement.style.zIndex=this.OriginalZIndex;
    this.HideChildren();
};

RadMenuItem.prototype.OnCollapseComplete= function ()
{
    if (this.Menu.AboutToCollapse)
    {
        if (this.Level==1)
        {
            this.Menu.DomElement.style.zIndex=this.Menu.OriginalZIndex;
        }
    }
    this.RaiseEvent("OnClientItemClose");
};

RadMenuItem.prototype.HideChildren= function ()
{
    for (var i=0; i<this.Items.length; i++)
    {
        if (this.Items[i].AnimationContainer)
        {
            this.Items[i].AnimationContainer.style.display="none";
        }
    }
};

RadMenuItem.prototype.CalculateScrollWrapSize= function ()
{
    if (!this.ScrollWrap)
    {
        return;
    }
    if (!this.ScrollWrap.style.height)
    {
        this.ScrollWrap.style.height=this.ChildItemList.offsetHeight+"px";
    }
    if (!this.ScrollWrap.style.width)
    {
        this.ScrollWrap.style.width=this.ChildItemList.offsetWidth+"px";
    }
};

RadMenuItem.prototype.AttachEventHandlers= function ()
{
    this.AttachDomEvent(this.DomElement,"mouseover","MouseOverHandler");
    this.AttachDomEvent(this.DomElement,"mouseout","MouseOutHandler");
    if (this.IsSeparator || this.Templated)
    {
        return;
    }
    this.AttachDomEvent(this.LinkElement,"click","ClickHandler", true);
    this.AttachDomEvent(this.LinkElement,"mouseout","HRefMouseOutHandler");
    this.AttachDomEvent(this.LinkElement,"mouseover","HRefMouseOverHandler");
    this.AttachDomEvent(this.LinkElement,"mousedown","MouseDownHandler");
    this.AttachDomEvent(this.LinkElement,"mouseup","MouseUpHandler");
    this.AttachDomEvent(this.LinkElement,"blur","BlurHandler");
    this.AttachDomEvent(this.LinkElement,"focus","FocusHandler");
    this.AttachDomEvent(this.LinkElement,"keydown","KeyDownHandler");
};

RadMenuItem.prototype.MouseDownHandler= function (e)
{
    this.Clicked= true;
    this.UpdateCssClass();
};

RadMenuItem.prototype.MouseUpHandler= function (e)
{
    this.Clicked= false;
    this.UpdateCssClass();
};

RadMenuItem.prototype.HRefMouseOutHandler= function (e)
{
    var l9=RadControlsNamespace.DomEvent.GetRelatedTarget(e);
    if (this.Menu.IsChildOf(this.LinkElement,l9) || l9==this.LinkElement)
    {
        return;
    }
    this.Hovered= false;
    this.UpdateImageUrl();
    this.RaiseEvent("OnClientMouseOut");
};

RadMenuItem.prototype.HRefMouseOverHandler= function (e)
{
    var i9=RadControlsNamespace.DomEvent.GetRelatedTarget(e);
    if (this.Menu.IsChildOf(this.LinkElement,i9) || this.LinkElement==i9)
    {
        return;
    }
    this.Hovered= true;
    this.UpdateImageUrl();
    this.RaiseEvent("OnClientMouseOver");
};

RadMenuItem.prototype.KeyDownHandler= function (e)
{
    var I9= {left: 37,
                oa: 38,
                right: 39,
                Oa: 40,
                la: 27 } ;
    var keyCode=RadControlsNamespace.DomEvent.GetKeyCode(e);
    if (keyCode==I9.right)
    {
        if (this.Menu.RightToLeft)
        {
            this.HandleLeftArrow();
        }
        else
        {
            this.HandleRightArrow();
        }
    }
    else if (keyCode==I9.left)
    {
        if (this.Menu.RightToLeft)
        {
            this.HandleRightArrow();
        }
        else
        {
            this.HandleLeftArrow();
        }
    }
    else if (keyCode==I9.oa)
    {
        this.HandleUpArrow();
    }
    else if (keyCode==I9.Oa)
    {
        this.HandleDownArrow();
    }
    else if (keyCode==I9.la)
    {
        if (this.Parent==this.Menu)
        {
            this.Blur();
        }
        else
        {
            this.Parent.Close();
            this.Parent.Focus();
        }
    }
    else
    {
        return;
    }
    RadControlsNamespace.DomEvent.PreventDefault(e);
};

RadMenuItem.prototype.FocusHandler= function (e)
{
    this.Focused= true;
    this.Focus();
};

RadMenuItem.prototype.ScheduleMenuClose= function (ia)
{
    var menu=this.Menu;
    clearTimeout(this.Menu.CloseTimeout);
    this.Menu.CloseTimeout=setTimeout( function ()
                                        {
                                            menu.Close();
                                            menu.Clicked= false;
                                        } ,ia);
};

RadMenuItem.prototype.CancelMenuClose= function ()
{
    clearTimeout(this.Menu.CloseTimeout);
};

RadMenuItem.prototype.BlurHandler= function (e)
{
    if (this.LinkElement.offsetWidth)
    {
        this.ScheduleMenuClose(100);
    }
    this.Focused= false;
    this.Menu.Clicked= false;
    this.Blur();
};

RadMenuItem.prototype.NavigatesToURL= function ()
{
    if (location.href+"#"==this.NavigateUrl || location.href==this.NavigateUrl)
    {
        return false;
    }
    return (new RegExp("//")).test(this.LinkElement.href);
};

RadMenuItem.prototype.Validate= function ()
{
    if (!this.Menu.CausesValidation || this.NavigatesToURL())
    {
        return true;
    }
    if (typeof(Page_ClientValidate)!="function")
    {
        return true;
    }
    return Page_ClientValidate(this.Menu.ValidationGroup);
};

RadMenuItem.prototype.ClickHandler= function (e)
{
    if (!this.Enabled)
    {
        return RadControlsNamespace.DomEvent.PreventDefault(e);
    }
    if (!this.RaiseEvent("OnClientItemClicking"))
    {
        return RadControlsNamespace.DomEvent.PreventDefault(e);
    }
    if (!this.Validate())
    {
        return RadControlsNamespace.DomEvent.PreventDefault(e);
    }
    var returnValue= true;
    if (!this.Menu.ClickToOpen)
    {
        returnValue= true;
    }
    else if (this.Level>1)
    {
        returnValue= true;
    }
    else
    {
        if (!this.Menu.Clicked)
        {
            this.Open();
        }
        else
        {
            this.Close();
        }
        this.Menu.Clicked=!this.Menu.Clicked;
    }
    this.RaiseEvent("OnClientItemClicked");
    if (!this.NavigateAfterClick || !returnValue)
    {
        RadControlsNamespace.DomEvent.PreventDefault(e);
    }
};

RadMenuItem.prototype.MouseOverHandler= function (e)
{
    var i9=RadControlsNamespace.DomEvent.GetRelatedTarget(e);
    if (this.Menu.IsChildOf(this.DomElement,i9) || this.DomElement==i9)
    {
        return;
    }
    if (this.Menu.ClickToOpen && !this.Menu.Clicked)
    {
        return;
    }
    if (this.State==RadMenuItemState.Open || this.State==RadMenuItemState.AboutToOpen)
    {
        return;
    }
    this.Menu.LastOpenedItem=this ;
    if (this.State==RadMenuItemState.AboutToClose)
    {
        clearTimeout(this.TimeoutPointer);
        this.State=RadMenuItemState.Open;
        return;
    }
    if (this.Parent.OpenedItem)
    {
        this.Parent.OpenedItem.Close();
    }
    this.Parent.OpenedItem=this ;
    this.State=RadMenuItemState.AboutToOpen;
    var R=this ;
    var Ia= function ()
    {
        R.Open();
    };
    this.TimeoutPointer=setTimeout(Ia,this.Menu.ExpandDelay);
};

RadMenuItem.prototype.MouseOutHandler= function (e)
{
    var l9=RadControlsNamespace.DomEvent.GetRelatedTarget(e);
    if ((!l9) || this.Menu.IsChildOf(this.DomElement,l9) || l9==this.DomElement)
    {
        return;
    }
    if (this.Menu.ClickToOpen)
    {
        return;
    }
    if (this.State==RadMenuItemState.Closed || this.State==RadMenuItemState.AboutToClose)
    {
        return;
    }
    if (this.State==RadMenuItemState.AboutToOpen)
    {
        clearTimeout(this.TimeoutPointer);
        this.State=RadMenuItemState.Closed;
        this.Parent.OpenedItem=null;
        return;
    }
    this.State=RadMenuItemState.AboutToClose;
    var R=this ;
    var Ia= function ()
    {
        R.Close();
    };
    this.TimeoutPointer=setTimeout(Ia,this.Menu.CollapseDelay);
};

RadMenuItem.prototype.PositionChildContainer= function (o9)
{
    var top=0;
    var left=0;
    var o8=this.GroupSettings.ExpandDirection;
    var O8=RadMenuNamespace.ExpandDirectionPropertyName[o8];
    var ob=this.DomElement;
    var Ob=RadControlsNamespace.Box.GetOuterHeight(ob);
    var lb=RadControlsNamespace.Box.GetOuterWidth(ob);
    var ib=this.AnimationContainer;
    var Ib=RadControlsNamespace.Box.GetOuterHeight(ib);
    var oc=RadControlsNamespace.Box.GetOuterWidth(ib);
    if (o8==RadMenuNamespace.ExpandDirection.Down)
    {
        top=Ob;
    }
    else if (o8==RadMenuNamespace.ExpandDirection.Right)
    {
        left=lb;
    }
    this.SetContainerPosition(left,top);
    var Oc=RadControlsNamespace.Screen.GetElementPosition(ib);
    if (this.Menu.RightToLeft)
    {
        left=lb-oc;
    }
    if (!this.Menu.EnableScreenBoundaryDetection)
    {
        this.Ease.SetSide(O8);
        this.TextElement.className="text expand"+this.Ease.GetSide();
        return;
    }
    if (RadControlsNamespace.Screen.ElementOverflowsRight(o9,ib) && o8==RadMenuNamespace.ExpandDirection.Right)
    {
        o8=RadMenuNamespace.ExpandDirection.Left;
        O8="right"; left=0;
    }
    else if (Oc.x-oc<0 && o8==RadMenuNamespace.ExpandDirection.Left)
    {
        o8=RadMenuNamespace.ExpandDirection.Right;
        O8="left";
        left=lb;
    }
    else if (Oc.y-Ib<0 && o8==RadMenuNamespace.ExpandDirection.Up)
    {
        o8=RadMenuNamespace.ExpandDirection.Down;
        O8="top";
        top=Ob;
    }
    else if (RadControlsNamespace.Screen.ElementOverflowsBottom(o9,ib) && o8==RadMenuNamespace.ExpandDirection.Down)
    {
        o8=RadMenuNamespace.ExpandDirection.Up;
        O8="bottom";
        top=Ob;
    }
    if (RadControlsNamespace.Screen.ElementOverflowsRight(o9,ib) && (o8==RadMenuNamespace.ExpandDirection.Down || o8==RadMenuNamespace.ExpandDirection.Up))
    {
        left=o9.width-(Oc.x+oc);
    }
    else if (RadControlsNamespace.Screen.ElementOverflowsBottom(o9,ib))
    {
        if (o8==RadMenuNamespace.ExpandDirection.Left || o8==RadMenuNamespace.ExpandDirection.Right)
        {
            top=o9.height-(Oc.y+Ib);
        }
    }
    this.SetContainerPosition(left,top);
    this.Ease.SetSide(O8);
    this.TextElement.className="text expand"+this.Ease.GetSide();
};

RadMenuItem.prototype.SetContainerPosition= function (left,top)
{
    this.AnimationContainer.style.top=(top+this.GroupSettings.OffsetY)+"px";
    this.AnimationContainer.style.left=(left+this.GroupSettings.OffsetX)+"px";
};

RadMenuItem.prototype.SetAttribute= function (name,value)
{
    this.PostInitialize();
    this.Attributes[name]=value;
    this.RecordState();
};

RadMenuItem.prototype.SetImageUrl= function (src)
{
    this.PostInitialize();
    this.ImageUrl=src;
    this.ImageElement.src=src;
    this.RecordState();
};

RadMenuItem.prototype.SetImageOverUrl= function (src)
{
    this.PostInitialize();
    this.ImageOverUrl=src;
    this.RecordState();
};

RadMenuItem.prototype.GetAttribute= function (name)
{
    return this.Attributes[name];
};

RadMenuItem.prototype.DetermineExpandDirection= function ()
{
    if (this.GroupSettings.ExpandDirection!=RadMenuNamespace.ExpandDirection.Auto)
    {
        return;
    }
    if (this.Parent.Flow==RadMenuNamespace.ItemFlow.Vertical)
    {
        if (this.Menu.RightToLeft)
        {
            this.GroupSettings.ExpandDirection=RadMenuNamespace.ExpandDirection.Left;
        }
        else
        {
            this.GroupSettings.ExpandDirection=RadMenuNamespace.ExpandDirection.Right;
        }
    }
    else
    {
        this.GroupSettings.ExpandDirection=RadMenuNamespace.ExpandDirection.Down;
    }
};


RadMenuItem.prototype.LoadConfiguration= function ()
{
    if (this.Menu.ItemData[this.ID])
    {
        for (var i5 in this.Menu.ItemData[this.ID])
        {
            this[i5]=this.Menu.ItemData[this.ID][i5];
        }
    }
    var lc=this.Menu.DefaultGroupSettings;
    if (typeof this.GroupSettings.Flow=="undefined")
    {
        this.GroupSettings.Flow=lc.Flow;
    }
    this.Flow=this.GroupSettings.Flow;
    if (typeof this.GroupSettings.ExpandDirection=="undefined")
    {
        this.GroupSettings.ExpandDirection=lc.ExpandDirection;
    }
    if (typeof this.GroupSettings.OffsetX=="undefined")
    {
        this.GroupSettings.OffsetX=lc.OffsetX;
    }
    if (typeof this.GroupSettings.OffsetY=="undefined")
    {
        this.GroupSettings.OffsetY=lc.OffsetY;
    }
    if (!this.Enabled)
    {
        this.Disable();
    }
};

RadMenuItem.prototype.HandleRightArrow= function ()
{
    if (this.Parent.Flow==RadMenuNamespace.ItemFlow.Horizontal)
    {
        this.FocusNextItem();
    }
    else
    {
        if (this.Items.length && this.GroupSettings.ExpandDirection==RadMenuNamespace.ExpandDirection.Right)
        {
            this.FocusFirstChild();
        }
        else if (this.Parent.GroupSettings && this.Parent.GroupSettings.ExpandDirection==RadMenuNamespace.ExpandDirection.Left)
        {
            this.Parent.Focus();
        }
        else
        {
            if (this.Menu.OpenedItem)
            {
                this.Menu.OpenedItem.GetNextItem().Focus();
            }
        }
    }
};

RadMenuItem.prototype.HandleLeftArrow= function ()
{
    if (this.Parent.Flow==RadMenuNamespace.ItemFlow.Horizontal)
    {
        this.FocusPreviousItem();
    }
    else
    {
        if (this.Items.length && this.GroupSettings.ExpandDirection==RadMenuNamespace.ExpandDirection.Left)
        {
            this.FocusFirstChild();
        }
        else if (this.Parent.GroupSettings && this.Parent.GroupSettings.ExpandDirection==RadMenuNamespace.ExpandDirection.Right)
        {
            this.Parent.Focus();
        }
        else
        {
            if (this.Menu.OpenedItem)
            {
                this.Menu.OpenedItem.GetPreviousItem().Focus();
            }
        }
    }
};

RadMenuItem.prototype.HandleUpArrow= function ()
{
    if (this.Parent.Flow==RadMenuNamespace.ItemFlow.Vertical)
    {
        this.FocusPreviousItem();
    }
    else
    {
        this.FocusLastChild();
    }
};

RadMenuItem.prototype.HandleDownArrow= function ()
{
    if (this.Parent.Flow==RadMenuNamespace.ItemFlow.Vertical)
    {
        this.FocusNextItem();
    }
    else
    {
        this.FocusFirstChild();
    }
};

RadMenuItem.prototype.GetNextItem= function ()
{
    if (this.Index==this.Parent.Items.length-1)
    {
        return this.Parent.Items[0];
    }
    return this.Parent.Items[this.Index+1];
};

RadMenuItem.prototype.GetPreviousItem= function ()
{
    if (this.Index==0)
    {
        return this.Parent.Items[this.Parent.Items.length-1];
    }
    return this.Parent.Items[this.Index-1];
};

RadMenuItem.prototype.CanFocus= function ()
{
    return (!this.IsSeparator) && this.Enabled;
};


RadMenuItem.prototype.FocusFirstChild= function ()
{
    if (!this.Items.length)
    {
        return;
    }
    var item=this.Items[0];
    while (!item.CanFocus())
    {
        item=item.GetNextItem();
        if (item==this.Items[0])
        {
            return;
        }
    }
    item.Focus();
};

RadMenuItem.prototype.FocusLastChild= function ()
{
    if (!this.Items.length)
    {
        return;
    }
    var item=this.Items[this.Items.length-1];
    while (!item.CanFocus())
    {
        item=item.GetPreviousItem();
        if (this.Items.length-1)
        {
            return;
        }
    }
    item.Focus();
};

RadMenuItem.prototype.FocusNextItem= function ()
{
    var item=this.GetNextItem();
    while (!item.CanFocus())
    {
        item=item.GetNextItem();
    }
    item.Focus();
};

RadMenuItem.prototype.FocusPreviousItem= function ()
{
    var item=this.GetPreviousItem();
    while (!item.CanFocus())
    {
        item=item.GetPreviousItem();
    }
    item.Focus();
};

RadMenuItem.prototype.RecordState= function (ic)
{
    if (this.ClientSide && !ic)
    {
        return;
    }
    var Ic=RadControlsNamespace.JSON.stringify(this,this.InitialState,RadMenu.JSONIncludeDeep);
    if (Ic=="{}")
    {
        this.Menu.ItemState[this.ID]="";
    }
    else
    {
        this.Menu.ItemState[this.ID]="\""+this.ID+"\":"+Ic;
    }
    this.Menu.RecordState();
};

RadMenuItem.prototype.AddItem= function ()
{
    this.Menu.AddItem.apply(this,arguments);
    this.Menu.FixItemWidth(this );
};;

function RadMenuItemState(){}RadMenuItemState= {Closed: 0,
                                                Open: 1,
                                                AboutToClose: 2,
                                                AboutToOpen: 3 };;

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

if (typeof(window.RadControlsNamespace.Screen)=="undefined" ||
    typeof(window.RadControlsNamespace.Screen.Version)==null ||
    window.RadControlsNamespace.Screen.Version<.11e1)
    {
        window.RadControlsNamespace.Screen= {Version: .11e1,
                                            GetViewPortSize:function ()
                                            {
                                                var width=0;
                                                var height=0;
                                                var od=document.body;
                                                if (RadControlsNamespace.Browser.StandardsMode)
                                                {
                                                    od=document.documentElement;
                                                }
                                                if (window.innerWidth)
                                                {
                                                    width=window.innerWidth;
                                                    height=window.innerHeight;
                                                }
                                                else
                                                {
                                                    width=od.clientWidth;
                                                    height=od.clientHeight;
                                                }
                                                width+=od.scrollLeft;
                                                height+=od.scrollTop;
                                                return {width:width-6,height:height-6 } ;
                                            } ,
                                            GetElementPosition:function (U)
                                            {
                                                var parent=null;
                                                var Od= {x: 0,y: 0 } ;
                                                var box;
                                                if (U.getBoundingClientRect)
                                                {
                                                    box=U.getBoundingClientRect();
                                                    var scrollTop=document.documentElement.scrollTop || document.body.scrollTop;
                                                    var scrollLeft=document.documentElement.scrollLeft || document.body.scrollLeft;
                                                    Od.x=box.left+scrollLeft-2;
                                                    Od.y=box.top+scrollTop-2;
                                                    return Od;
                                                }
                                                else if (document.getBoxObjectFor)
                                                {
                                                    box=document.getBoxObjectFor(U);
                                                    Od.x=box.x-2;
                                                    Od.y=box.y-2;
                                                }
                                                else
                                                {
                                                    Od.x=U.offsetLeft;
                                                    Od.y=U.offsetTop;
                                                    parent=U.offsetParent;
                                                    if (parent!=U)
                                                    {
                                                        while (parent)
                                                        {
                                                            Od.x+=parent.offsetLeft;
                                                            Od.y+=parent.offsetTop;
                                                            parent=parent.offsetParent;
                                                        }
                                                    }
                                                }
                                                if (window.opera)
                                                {
                                                    parent=U.offsetParent;
                                                    while (parent && parent.tagName!="BODY" && parent.tagName!="HTML")
                                                    {
                                                        Od.x-=parent.scrollLeft;
                                                        Od.y-=parent.scrollTop;
                                                        parent=parent.offsetParent;
                                                    }
                                                }
                                                else
                                                {
                                                    parent=U.parentNode;
                                                    while (parent && parent.tagName!="BODY" && parent.tagName!="HTML")
                                                    {
                                                        Od.x-=parent.scrollLeft;
                                                        Od.y-=parent.scrollTop;
                                                        parent=parent.parentNode;
                                                    }
                                                }
                                                return Od;
                                            } ,
                                            ElementOverflowsTop:function (O)
                                            {
                                                return this.GetElementPosition(O).y<0;
                                            } ,
                                            ElementOverflowsLeft:function (O)
                                            {
                                                return this.GetElementPosition(O).x<0;
                                            } ,
                                            ElementOverflowsBottom:function (ld,O)
                                            {
                                                var oe=this.GetElementPosition(O).y+RadControlsNamespace.Box.GetOuterHeight(O);
                                                return oe>ld.height;
                                            } ,
                                            ElementOverflowsRight:function (ld,O)
                                            {
                                                var Oe=this.GetElementPosition(O).x+RadControlsNamespace.Box.GetOuterWidth(O);
                                                return Oe>ld.width;
                                            }
                                        };
    };


if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

RadControlsNamespace.ScrollButtonsPosition= {Left: 0,Middle: 1,Right: 2 } ;

RadControlsNamespace.Scroll= function (O,le,ie)
{
    this.Owner=ie;
    this.Element=O;
    this.IsVertical=le;
    this.ScrollButtonsPosition=ie.ScrollButtonsPosition;
    this.ScrollPosition=ie.ScrollPosition;
    this.PerTabScrolling=ie.PerTabScrolling;
    this.ScrollOnHover= false;
    this.WrapNeeded= false;
    this.LeaveGapsForArrows= true;
    this.LeftArrowClass="leftArrow";
    this.LeftArrowClassDisabled="leftArrowDisabled";
    this.RightArrowClass="rightArrow";
    this.RightArrowClassDisabled="rightArrowDisabled";
    this.Initialized= false;
};

RadControlsNamespace.Scroll.Create= function (O,le,ie)
{
    return new RadControlsNamespace.Scroll(O,le,ie);
};

RadControlsNamespace.Scroll.prototype.Initialize= function ()
{
    if (this.Initialized)
    {
        this.ApplyOverflow();
        this.CalculateMinMaxPosition();
        this.EvaluateArrowStatus();
        return false;
    }
    if ((this.Element.offsetWidth==0 && !this.IsVertical) || (this.Element.offsetHeight==0 && this.IsVertical))
    {
        return false;
    }
    this.Initialized= true;
    this.ScrollAmount=2;
    this.Direction=0;
    if (this.WrapNeeded)
    {
        var Ie=this.CreateScrollWrap();
    }
    this.ApplyOverflow();
    this.Element.style.position="relative";
    this.AttachArrows();
    this.CalculateMinMaxPosition();
    if (this.PerTabScrolling)
    {
        this.CalculateInitialTab();
    }
    this.AttachScrollMethods();
    this.EvaluateArrowStatus();
    this.AttachEventHandlers();
    this.ScrollTo(this.ScrollPosition);
    this.ApplyOverflow();
    return Ie;
};

RadControlsNamespace.Scroll.prototype.ApplyOverflow= function ()
{
    if (RadControlsNamespace.Browser.IsIE)
    {
        this.Element.parentNode.style.overflow="visible";
        if (this.IsVertical)
        {
            this.Element.parentNode.style.overflowX="";
            this.Element.parentNode.style.overflowY="hidden";
        }
        else
        {
            this.Element.parentNode.style.overflowX="hidden";
            this.Element.parentNode.style.overflowY="hidden";
        }
    }
    else
    {
        this.Element.parentNode.style.overflow="hidden";
    }
    if (!this.ScrollNeeded())
    {
        this.Element.parentNode.style.overflow="visible";
        this.Element.parentNode.style.overflowX="visible";
        this.Element.parentNode.style.overflowY="visible";
    }
};

RadControlsNamespace.Scroll.prototype.ResizeHandler= function ()
{
    if (!this.Initialized)
    {
        this.Initialize();
    }
    if (!this.Initialized)
    {
        return;
    }
    if (!this.Element.offsetHeight || !this.Element.offsetWidth)
    {
        return;
    }
    this.CalculateMinMaxPosition();
    if (this.Element.offsetWidth<this.Element.parentNode.offsetWidth)
    {
        this.ScrollTo(0);
    }
    var of=parseInt(this.IsVertical?this.Element.style.top: this.Element.style.left);
    if (isNaN(of))
    {
        of=0;
    }
    var R=this ;
    setTimeout( function ()
                {
                    R.ApplyOverflow();
                    R.ScrollTo(of);
                    R.EvaluateArrowStatus();
                } ,100);
};

RadControlsNamespace.Scroll.prototype.AttachEventHandlers= function ()
{
    var O=this.Element;
    var R=this ;
    var Of= function ()
    {
        R.ResizeHandler();
    };
    if (window.addEventListener)
    {
        window.addEventListener("resize",Of, false);
    }
    else
    {
        window.attachEvent("onresize",Of);
    }
};

RadControlsNamespace.Scroll.prototype.AttachArrows= function ()
{
    var If=this.CreateArrow("&laquo;",1,this.LeftArrowClass);
    var og=this.CreateArrow("&raquo;",-1,this.RightArrowClass);
    this.LeftArrow=If;
    this.RightArrow=og;
    if (this.IsVertical)
    {
        If.style.left="0px";
        og.style.left="0px";
        if (this.ScrollButtonsPosition==RadControlsNamespace.ScrollButtonsPosition.Middle)
        {
            If.style.top="0px";
            og.style.bottom="0px";
        }
        else if (this.ScrollButtonsPosition==RadControlsNamespace.ScrollButtonsPosition.Left)
        {
            If.style.top="0px";
            og.style.top=If.offsetHeight+"px";
        }
        else
        {
            og.style.bottom="0px";
            If.style.bottom=If.offsetHeight+"px";
        }
    }
    else
    {
        If.style.top="0px";
        og.style.top="0px";
        if (this.ScrollButtonsPosition==RadControlsNamespace.ScrollButtonsPosition.Middle)
        {
            If.style.left="-1px";
            og.style.right="-1px";
        }
        else if (this.ScrollButtonsPosition==RadControlsNamespace.ScrollButtonsPosition.Left)
        {
            If.style.left="-1px";
            og.style.left=(If.offsetWidth-1)+"px";
        }
        else
        {
            og.style.right="-1px";
            If.style.right=(og.offsetWidth-1)+"px";
        }
    }
};

RadControlsNamespace.Scroll.prototype.CreateArrow= function (Og,lg,cssClass)
{
    var ig=document.createElement("a");
    ig.href="#";
    ig.className=cssClass;
    ig.innerHTML="&nbsp;";
    ig.style.zIndex="2000";
    this.Element.parentNode.appendChild(ig);
    var R=this ;
    ig.ScrollDirection=lg;
    if (this.ScrollOnHover)
    {
        ig.onmousedown= function ()
        {
            if (this.disabled)
            {
                return false;
            }
            R.ScrollAmount=3;
            return true;
        };
        ig.onmouseup= function ()
        {
            R.ScrollAmount=1;
        };
        ig.onmouseover= function ()
        {
            if (this.disabled)
            {
                return false;
            }
            R.ScrollAmount=1;
            R.Scroll(this.ScrollDirection);
            return true;
        };
        ig.onmouseout= function ()
        {
            R.Ig=0;
            R.Stop();
            return false;
        };
    }
    else
    {
        ig.onmousedown= function ()
        {
            R.Scroll(this.ScrollDirection);
        };
        ig.onmouseup= function ()
        {
            R.Stop();
        };
    }
    ig.onclick= function ()
    {
        return false;
    };
    return ig;
};

RadControlsNamespace.Scroll.prototype.SetHeight= function (value)
{
    if (parseInt(value)==0)
    {
        return;
    }
    this.Element.parentNode.style.height=value;
    this.Initialize();
};

RadControlsNamespace.Scroll.prototype.SetWidth= function (value)
{
    if (parseInt(value)==0)
    {
        return;
    }
    this.Element.parentNode.style.width=value;
    this.Initialize();
};

RadControlsNamespace.Scroll.prototype.CreateScrollWrap= function ()
{
    var Ie=document.createElement("div");
    var oh=this.Element.parentNode;
    Ie.appendChild(this.Element);
    Ie.style.position="relative";
    Ie.align="left";
    oh.appendChild(Ie);
    if (this.IsVertical)
    {
        Ie.style.styleFloat="left";
        Ie.style.cssFloat="left";
        this.Element.style.display="none";
        Ie.style.height=Ie.parentNode.parentNode.offsetHeight+"px";
        this.Element.style.display="block";
    }
    else
    {
        var Oh=0;
        for (var i=0; i<this.Element.childNodes.length; i++)
        {
            var node=this.Element.childNodes[i];
            if (!node.tagName)
                continue;
            Oh+=node.offsetWidth;
        }
        this.Element.style.width=(Oh+3)+"px";
    }
    return Ie;
};

RadControlsNamespace.Scroll.prototype.CalculateMinMaxPosition= function ()
{
    if (!this.Initialized)
    {
        return;
    }
    if (this.IsVertical)
    {
        var lh=this.Element.parentNode.offsetHeight-this.Element.offsetHeight;
        var ih=this.LeftArrow.offsetHeight;
        var Ih=this.RightArrow.offsetHeight;
    }
    else
    {
        var lh=this.Element.parentNode.offsetWidth-this.Element.offsetWidth;
        var ih=this.LeftArrow.offsetWidth;
        var Ih=this.RightArrow.offsetWidth;
    }
    if (!this.LeaveGapsForArrows)
    {
        ih=0;
        Ih=0;
    }
    this.MaxScrollPosition=0;
    this.MinScrollPosition=lh-Ih-ih;
    if (this.ScrollButtonsPosition==RadControlsNamespace.ScrollButtonsPosition.Middle)
    {
        this.Offset=ih;
    }
    else if (this.ScrollButtonsPosition==RadControlsNamespace.ScrollButtonsPosition.Left)
    {
        this.Offset=ih+Ih;
    }
    else
    {
        this.Offset=0;
    }
};

RadControlsNamespace.Scroll.prototype.CalculateInitialTab= function ()
{
    var oi=this.Element.getElementsByTagName("li");
    if (oi.length>0)
    {
        var i=0;
        while (this.ScrollPosition<-(this.IsVertical?oi[i].offsetTop:oi[i].offsetLeft))
        {
            i++;
        }
        this.CurrentTab=i;
    }
};

RadControlsNamespace.Scroll.prototype.AttachScrollMethods= function ()
{
    if (this.PerTabScrolling)
    {
        this.Scroll=RadControlsNamespace.Scroll.StartPerTabScroll;
        this.Stop=RadControlsNamespace.Scroll.StopPerTabScroll;
    }
    else
    {
        this.Scroll=RadControlsNamespace.Scroll.StartSmoothScroll;
        this.Stop=RadControlsNamespace.Scroll.StopSmoothScroll;
    }
};

RadControlsNamespace.Scroll.prototype.EvaluateArrowStatus= function ()
{
    var Oi=!(this.ScrollPosition>this.MinScrollPosition);
    var ii=!(this.ScrollPosition<this.MaxScrollPosition);
    this.RightArrow.disabled=Oi;
    this.LeftArrow.disabled=ii;
    if (ii)
    {
        if (this.LeftArrow.className!=this.LeftArrowClassDisabled)
        {
            this.LeftArrow.className=this.LeftArrowClassDisabled;
        }
    }
    else
    {
        if (this.LeftArrow.className!=this.LeftArrowClass)
        {
            this.LeftArrow.className=this.LeftArrowClass;
        }
    }
    if (Oi)
    {
        if (this.RightArrow.className!=this.RightArrowClassDisabled)
        {
            this.RightArrow.className=this.RightArrowClassDisabled;
        }
    }
    else
    {
        if (this.RightArrow.className!=this.RightArrowClass)
        {
            this.RightArrow.className=this.RightArrowClass;
        }
    }
};

RadControlsNamespace.Scroll.StartSmoothScroll= function (direction)
{
    this.Stop();
    this.Direction=direction;
    var R=this ;
    var Ii= function ()
    {
        R.ScrollBy(R.Direction*R.ScrollAmount);
    };
    Ii();
    this.oj=setInterval(Ii,10);
};

RadControlsNamespace.Scroll.prototype.ScrollTo= function (position)
{
    position=Math.max(position,this.MinScrollPosition);
    position=Math.min(position,this.MaxScrollPosition);
    position+=this.Offset;
    if (this.IsVertical)
    {
        this.Element.style.top=position+"px";
    }
    else
    {
        this.Element.style.left=position+"px";
    }
    this.Owner.ScrollPosition=this.ScrollPosition=position-this.Offset;
    this.EvaluateArrowStatus();
};

RadControlsNamespace.Scroll.prototype.ScrollBy= function (Oj)
{
    var lj=this.ScrollPosition;
    this.ScrollTo(lj+Oj);
};

RadControlsNamespace.Scroll.StartPerTabScroll= function (direction)
{
    this.Stop();
    var oi=this.Element.getElementsByTagName("li");
    var ij=this.CurrentTab-direction;
    if (ij<0 || ij>oi.length)
    {
        return;
    }
    var Ij=direction==-1?this.CurrentTab:ij;
    this.CurrentTab=ij;
    if (this.IsVertical)
    {
        var ok=oi[Ij].offsetHeight;
    }
    else
    {
        var ok=oi[Ij].offsetWidth;
    }
    this.ScrollBy(ok*direction);
    this.EvaluateArrowStatus();
};

RadControlsNamespace.Scroll.prototype.ScrollNeeded= function ()
{
    return true;
    if (this.IsVertical)
    {
        return this.Element.offsetHeight>this.Element.parentNode.offsetHeight;
    }
    return this.Element.offsetWidth>this.Element.parentNode.offsetWidth;
};

RadControlsNamespace.Scroll.StopSmoothScroll= function (direction)
{
    if (this.OnScrollStop)
    {
        this.OnScrollStop();
    }
    clearInterval(this.oj);
};

RadControlsNamespace.Scroll.StopPerTabScroll= function (direction)
{
    if (this.OnScrollStop)
    {
        this.OnScrollStop();
    }
};;

if (typeof(window.RadControlsNamespace)=="undefined")
{
    window.RadControlsNamespace= {} ;
}

RadControlsNamespace.Ticker= function (n)
{
    this.Listener=n;
    this.IntervalPointer=null;
};

RadControlsNamespace.Ticker.prototype= {Configure:function (L)
                                                    {
                                                        this.Duration=L.Duration;
                                                        this.Interval=16;
                                                    } ,
                                        Start:function ()
                                        {
                                            clearInterval(this.IntervalPointer);
                                            this.TimeElapsed=0;
                                            var R=this ;
                                            var Ia= function ()
                                            {
                                                R.Tick();
                                            };
                                            this.Tick();
                                            this.IntervalPointer=setInterval(Ia,this.Interval);
                                        } ,
                                        Tick:function ()
                                        {
                                            this.TimeElapsed+=this.Interval;
                                            this.Listener.OnTick(this.TimeElapsed);
                                            if (this.TimeElapsed>=this.Duration)
                                            {
                                                this.Stop();
                                            }
                                        } ,
                                        Stop:function ()
                                        {
                                            if (this.IntervalPointer)
                                            {
                                                this.Listener.OnTickEnd();
                                                clearInterval(this.IntervalPointer);
                                                this.IntervalPointer=null;
                                            }
                                        }
                                    };;
