
        // -----------------------------------------------------------
        // InitNavLinks()
        // Sets link text, URL and icon for NavLinks Show based on framed state
        // -----------------------------------------------------------

        function InitNavLinks()
        {
                if ("object" != typeof(lnkShowImg) || "object" != typeof(imgShow) || "object" != typeof(lnkShowImg.all.tags( "FONT" )))
                {
                        return false;
                }

                var bIsFramed = ((top != self) && ("TOC" == top.frames[0].name));
                if (bIsFramed)
                {
                        lnkShowImg.all.tags( "FONT" )[0].innerText = "hide toc";
                        lnkShowImg.href = self.location.href;
                        imgShow.src = "/msdn-online/shared/graphics/icons/hidetoc.gif";
                }
                else
                {
                        lnkShowImg.all.tags( "FONT" )[0].innerText = "show toc";
                        var sPath = self.location.pathname;

                        // WATCH OUT FOR INSTANCES OF MSDN-ONLINE !!!   
                        sPath = sPath.replace("/msdn-online","");
                        var sFrameHref = sPath.match(/[/][^/]+[/]/) + "c-frame.htm?" + sPath;
                        lnkShowImg.href = sFrameHref;
                        imgShow.src = "/msdn-online/shared/graphics/icons/showtoc.gif";
                }
        }

        // -----------------------------------------------------------
        // NavLinks_hover()
        // DHTML script for NavLinks mouseover and mouseout.
        // -----------------------------------------------------------

        
                /////////////////////////////////////////////////////////////
                //
                //      Function: process_button() - Button Event handler
                //      Parameters: none
                //      Returns: void
                //
                //      This function processes mouse and keyboard events on all
                //      button elements (className contains "Btn" within a given
                //      container.  Button specific processing is sent to the buttonClick()
                //      function. Information about the button can be stored in expandos,
                //                      STATE ( "On" , "Off" )
                //                      IMG ( contains the base name and ID of the icon )
                //
                /////////////////////////////////////////////////////////////
        
        
                function process_button(Evt)
                {
                	     // var ns6=document.getElementById&&!document.all 
                        var ie=document.all 

                	      if (!Evt) Evt = window.event; 
                     	if (ie)
                     		var oEl = Evt.srcElement;
                     	else
                           var oEl = Evt.target;
 								//var oEl = Evt.target; 
                	      //if (!oEl)
	 							//	var oEl = Evt.srcElement; 
               	         
 								Evt.cancelBubble = true;
 								//alert(oEl.className)
 								/*
                        var oEl = event.srcElement;
                        event.cancelBubble = true;
                        */
                        while( -1 == oEl.className.indexOf( "Btn" ) )
                        {
                        	if (ie)
                              oEl = oEl.parentElement;
                        	else
                        		oEl = oEl.parentNode;
                           if ( !oEl ) return;
                        }
                        var baseClass = oEl.className.substring( 0 , oEl.className.indexOf( "Btn" ) + 3 );
                        var btnImage = null;
                        if( oEl.IMG ) btnImage = oEl.all.tags( "IMG" )[0];
        
                        //switch( event.type )
                        switch( Evt.type )
                        {
                                case "mouseout" :
                                       // if( oEl.contains( event.toElement ) ) return;
                                       //if( oEl.contains( Evt.toElement ) ) return;
                                       /*
                                       if (!Evt.toElement)
                                       	{ if( oEl.contains( Evt.relatedTarget ) ) return; }
                                     	else
                                    		{ if( oEl.contains( Evt.toElement ) ) return; }
                                    		*/
                                       // if( btnImage )
                                       // {
                                       //         btnImage.src =  btnImage.src.substring( 0 , btnImage.src.length - 5 ) + "1.gif";
                                       // }
                                        if( oEl.STATE )
                                        {
        
                                                oEl.className = baseClass + oEl.STATE;
                                        }
                                        else
                                        {
                                                oEl.className = baseClass + "Off";
                                        }
                                        break;
                                case "mouseover" :
                                        //if( oEl.contains( event.fromElement ) ) return;
                                   /*    if (!Evt.toElement)
                                       	{ if( oEl.contains( Evt.relatedTarget ) ) return; }
                                     	else
                                    		{ if( oEl.contains( Evt.toElement ) ) return; } */
                                       // if( oEl.contains( Evt.fromElement ) ) return;
                                      //  alert(btnImage)
                                     //   if( btnImage )
                                     //   {
                                     //           btnImage.src =  btnImage.src.substring( 0 , btnImage.src.length - 5 ) + "2.gif";
                                     //   }
                                        if( oEl.STATE )
                                        {
                                                var tmpState = oEl.STATE == "Off" ? "Up" : "Down";
                                                oEl.className = baseClass + tmpState;
                                        }
                                        else
                                        {
                                                oEl.className = baseClass + "Up";
                                        }
                                        break;
        
                                case "mousedown" :
                                        oEl.className = baseClass + "Down";
                                        break;
        
                                case "mouseup" :
                                        if( oEl.STATE )
                                        {
                                                oEl.STATE = oEl.STATE == "Off" ? "On" : "Off";
                                                var tmpState = oEl.STATE == "On" ? "Down" : "Up";
                                                oEl.className = baseClass + tmpState;
                                        }
                                        else
                                        {
                                                oEl.className = baseClass + "Up";
                                        }
                                        break;
        
                                case "click" :
                                        Evt.returnValue = doButtonClick( oEl, Evt );
                                       // event.returnValue = doButtonClick( oEl );
                                        break;
        
                                case "dblclick" :
                                        //event.returnValue = doButtonClick( oEl, Evt );
                                        Evt.returnValue = doButtonClick( oEl , Evt);
                                        break;
        
                                case "keyup" :
                                        //if( 13 == event.keyCode )
                                        if( 13 == Evt.keyCode )
                                        {
                                                if( oEl.STATE )
                                                {
                                                        oEl.STATE = oEl.STATE == "Off" ? "On" : "Off";
                                                        var tmpState = oEl.STATE == "On" ? "Down" : "Up";
                                                        oEl.className = baseClass + tmpState;
                                                }
                                                else
                                                {
                                                        oEl.className = baseClass + "Up";
                                                }
                                                Evt.returnValue = doButtonClick( oEl , Evt);
                                               // event.returnValue = doButtonClick( oEl );
                                        }
                                        break;
                                        
                                case "selectstart" :
                                        if( oEl )
                                        {
                                                //event.returnValue = false;
                                                Evt.returnValue = false;
                                                return false;
                                        }
                                        break;
        
                                default :
                                        break;
        
                        }
                }
        
        ////////////////////////////////////////////////////////////////////
        //
        //      Function: doButtonClick()
        //      Parameters: oEl - Button Element which fired the event
        //      Returns: event return value
        //
        //      This function navigates to the first link contained in a button,
        //      or performs a custom button action if one is defined on an individual page.
        //
        ////////////////////////////////////////////////////////////////////
        
                function doButtonClick( oEl, Evt )
                {
                        var oLink = oEl.all.tags( "A" );
                        if( oLink.length  )
                        {
                                if( "_blank" == oLink[0].target )
                                {
                                        winComments = window.open(  oLink[0].href ,"winComments" , "width=640,height=480,location=no,status=yes,resizable=yes,scrollbars=yes,menubar=yes,toolbar=no" );
                                        winComments.focus();
                                        Evt.returnValue = false;
                                        // event.returnValue = false;
                                        return false;
                                }
                                else if( !oEl.ACTION )
                                {
                                        oLink[0].click();
                                        return true;
                                }
                        }
                        
                        if( "function" == typeof( fnCustomAction ) )
                        {       
                                return fnCustomAction( oEl );
                        }
                }

    // -----------------------------------------------------------
    // window_load()
    // Container function for load.
    // -----------------------------------------------------------

    function window_load()
    {
        if (oBD.getsNavBar)
        {
            if ("function" == typeof(CommonLoad)) CommonLoad();
        }
    }

        function CommonLoad()
        {
                if ("function" == typeof(InitNavLinks)) InitNavLinks();
//              if ("function" == typeof(CheckToTop)) CheckToTop();
//              if ("function" == typeof(RemoveLastPipe)) RemoveLastPipe();
                if ("function" == typeof(process_button))
                {
                        with( document )
                        {
                                ondblclick = onmousedown = onmouseup = onmouseover = onmouseout = onkeyup = onclick = onselectstart = process_button;
                        }
                }
                if( "function" == typeof( doOutline ) )
                {
                        document.onclick = doOutline;
                }
        }


        // -----------------------------------------------------------
        // Client-side BrowserData constructor
        // Populated using data from server-side oBD object to avoid redundancy
        // -----------------------------------------------------------

        function BrowserData()
        {
                this.userAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
                this.browser = "MSIE";
                this.majorVer = 5;
                this.minorVer = "01";
                this.betaVer = "0";
                this.platform = "NT";
                this.platVer = "5.0";
                this.getsNavBar = true;
                this.doesActiveX = true;
                this.fullVer = 5.01;

        }
