
// Constants

var g_bMigration                        = 0;
var gselectedISPIndx                    = 0;
var gCurrISPURL                         = "about:blank";
var gpgType                             = -1;
var gLastProg                           = 0;
var PAGE_REFDIAL                        = 0;
var PAGE_ISPLIST                        = 1;
var PAGE_ISPDIAL                        = 2;
var PAGE_ISPPAGE                        = 3;
var PAGE_SERVERR                        = 4;
var PAGE_REFDRDY                        = 5;
var PAGE_MIGDRDY                        = 6;
var PAGE_REGDIAL                        = 7;

var PAGETYPE_ISP_NORMAL                 =  0x20;
var PAGETYPE_ISP_TOS                    =  0x40;
var PAGETYPE_ISP_FINISH                 =  0x80;
var PAGETYPE_ISP_CUSTOMFINISH           =  0x100;

var PAGEFLAG_SAVE_CHECKBOX              =  1;

// Localization strings
var L_REF_STATUS_DIALING_Text           = "Dialing...";
var L_REF_STATUS_LOCATING_Text          = "Locating service";
var L_REF_STATUS_CONNECTING_Text        = "Connecting to service";
var L_REF_STATUS_CONNECTED_Text         = "Connected";

var L_REF_STATUS_DOWNLOAD_Text          = "Downloading information about ISPs...";
var L_REFDIALTITLE_TEXT                 = "Finding Internet service providers in your area";
var L_REFDIALINTRO_TEXT                 = "Microsoft is retrieving a list of Internet service providers (ISPs) in your area so you can select the one you want to use.";


var REFERALDLCOMPLETED = "{E9E228E0-7A58-11D3-8B99-00A0C91E7F3C}";

var gCurrPage = -1;
var gDialerr = 0;
var TEMP_KEY = "\\Temp";
var ISPINDX = "ISPindex";
var g_IgnoreDialErr = false;

var g_CustomISPName = null;

function SetCustomISPName(Name)
{
    g_CustomISPName = Name;
}

// Description: Disable all the buttons
// Used to prevent script error caused by
// double clicking or rapid clicking
// of two different buttons. E.g. when someone click
// next and back quickly.
//
function DisableButtons()
{
    g.MigPagePlsWaitText.style.visibility = "visible";

    try
    {
        g.btnNext.disabled=true;
    }
    catch(e) {}
    try
    {
        g.btnBack.disabled=true;
    }
    catch(e) {}
    try
    {
        InitButtons();
    }
    catch(e) {}
}


//////////////////////////////////////////////////////////////////////////////////////
// drdyref.htm
//////////////////////////////////////////////////////////////////////////////////////
var L_drdyref_2_ICS_Text = "Windows will now use your Shared Internet Connection to migrate your existing Internet account setting so you will be able to use it with your new computer";

var L_drdyref_4_ICS_Text = "To proceed, provide the information below and click <b>Next</b>. To continue without migrating an existing account, click <b>Skip</b>.";

var L_drdymig_2_ICS_Text = "Windows will now use your Shared Internet Connection to begin re-establishing your existing Internet account. &nbsp; Click <b>Next</b> to begin connecting.";

var L_drdymig_4_ICS_Text = "To proceed, provide the information below and click <b>Next</b>. To continue without re-establishing an existing Internet Account, click <b>Skip</b>.";


var g_ISPAuto = 1;
var g_CalledFromDrdyref = false;
function drdyref_LoadMe(btnSW)
{
    gCurrPage = PAGE_REFDRDY;
    InitFrameRef();
    if (g != null)
    {
        g_FirstFocusElement = g.btnNext;
        g_FirstFocusElement.focus();
    }

    InitNewButtons();

    var fTapi = TapiObj.IsTAPIConfigured;
    if (!fTapi && !g_bTapiDone)
    {
        g.drdyref_ctrl1.style.visibility="visible";

        if(g_CountryIdx < 0)
        {
            g_CountryIdx = TapiObj.get_CountryIndex;
        }

        g.selCountry.selectedIndex=g_CountryIdx;

        g.edtAreaCode.value    = TapiObj.get_AreaCode;

        if(1 == TapiObj.get_PhoneSystem)
            g.radioTouchToneYes.checked = true; //touch tone
        else
            g.radioTouchToneNo.checked = true; //rotary

    }

    if (true == ApiObj.get_OOBEDebugMode)
    {
        g.spnOutsideLine.style.visibility = "visible";
    }
    drdyref_SetOutsideLine( );


    if (g_ISPAuto == 1)
    {
        g.radioYesISPAuto.checked = true;
        g.radioNoISPAuto.checked  = false;
    }
    else
    {
        g.radioYesISPAuto.checked = false;
        g.radioNoISPAuto.checked  = true;
    }

    g_CalledFromDrdyref = true;
    g.btnNext.onclick = ISPNextBtnHandler;
    g.btnSkip.onclick = ISPSkipBtnHandler;
}


function checkISPSetupType()
{
    if (g.radioYesISPAuto.checked == true)
        g_ISPAuto = 1;
    else
        g_ISPAuto = 2;
}


function drdyref_OutsideLineClicked( )

{
    try
    {
        if (null == g.event)
            return;
    }
    catch(e)
    {
        return;
    }

    drdyref_SetOutsideLine( );
}

function drdyref_SetOutsideLine( )
{
    if (true == g.radioOutsideLineYes.checked &&
        "visible" == g.spnOutsideLine.style.visibility)
    {
        g.spnOutsideLineNumber.style.visibility = "visible";
        g.edtOutsideLineNumber.style.visibility = "visible";
        g.edtOutsideLineNumber.value = TapiObj.get_DialOut;
        if (0 == g.edtOutsideLineNumber.value.length)
        {
            g.edtOutsideLineNumber.value = "9";
        }
    }
    else
    {
        g.edtOutsideLineNumber.value = "";
        g.spnOutsideLineNumber.style.visibility = "hidden";
        g.spnOutsideLine.style.visibility = "hidden";
    }

}

function drdymig_LoadMe()
{

    gCurrPage = PAGE_MIGDRDY;
    InitFrameRef();
    if (g != null)
    {
        g_FirstFocusElement = g.btnNext;
        g_FirstFocusElement.focus();
    }

    InitNewButtons();

    var fTapi = TapiObj.IsTAPIConfigured;
    if (!fTapi && !g_bTapiDone)
    {
        g.drdyref_ctrl1.style.visibility="visible";

        if(g_CountryIdx < 0)
        {
            g_CountryIdx = TapiObj.get_CountryIndex;
        }

        g.selCountry.selectedIndex=g_CountryIdx;

        g.edtAreaCode.value    = TapiObj.get_AreaCode;

        if(1 == TapiObj.get_PhoneSystem)
            g.radioTouchToneYes.checked = true; //touch tone
        else
            g.radioTouchToneNo.checked = true; //rotary

    }

    g.btnNext.onclick = ISPNextBtnHandler;
    g.btnSkip.onclick = ISPSkipBtnHandler;
}

var bMSgDisplay = true;

function ISPNextBtnHandler()
{

    trace("ISPNextBtnHandler: CurrentPage: " + gCurrPage);
    switch (gCurrPage)
    {
        case PAGE_REFDRDY:
        case PAGE_MIGDRDY:
        {
            if (g.drdyref_ctrl1.style.visibility == "visible")
            {
                TapiObj.set_AreaCode = g.edtAreaCode.value;
                TapiObj.set_CountryIndex = g.selCountry.selectedIndex;

                if (g.PulseToneDialing.style.visibility != "hidden")
                {
                    if (g.radioTouchToneYes.checked)
                        TapiObj.set_PhoneSystem = 1;
                    else
                        TapiObj.set_PhoneSystem = 0;
                }

            }

            if ("visible" == g.spnOutsideLine.style.visible &&
                true == g.radioOutsideLineYes.checked &&
                "visible" == g.spnOutsideLineNumber.style.visibility
                )
            {
              TapiObj.set_DialOut = g.edtOutsideLineNumber.value;
            }

            if (window.external.CheckPhoneBook("msobe.isp"))
            {
                if (!g_CalledFromDrdyref)
                {
                    GoToDialingPage();
                }
                else
                {
                    g_CalledFromDrdyref = false;

                    if (g_ISPAuto == 1)
                        GoToDialingPage();
                    else
                        GoNext();  // This will navigate to iconnect.htm
                }
            }
            else
            {
                Navigate("isperror\\isppberr.htm");
            }

            break;
        }

        case PAGE_REFDIAL:
        {
            // NO Next button on this page
            break;
        }
        case PAGE_ISPLIST:
        {
            // if something selected
            //    if use network
            //      go to CKPT_??
            //    else
            //      go to CKPT_MIGDIAL
            //  else if message already displayed
            //    go to CKPT_OEMCUST
            //  else
            //    display message
            if (-1 == gselectedISPIndx)
            {
                // We need to display some a message to contact ISP
                if (bMSgDisplay && (g.selISPDropList.length != 1))
                {
                    // Set this to false so user will navigate when the Next
                    // button is pressed again.
                    //
                    bMSgDisplay = false;

                    // Hide the selection controls and display the message.
                    //
                    g.selISPDropList.style.display = "none";
                    g.drdyisp_4_spanID.style.display = "none";
                    g.btnManual.style.display = "none";
                    g.ManualBtnLocalText01.style.display = "none";
                    g.MigListTitle.style.display="none";
                    g.MigListTxt.style.display="none";
                    g.MigListTxt2.style.display="none";
                    // g.selectedISPName.style.display="none";
                    gselectedISPIndx = -1;

                    g.MigListNoOffer.style.display="inline";
                    g.MigListTxtNoOffer.style.display="inline";
                }
                else
                {
                    GoNavigate(CKPT_OEMCUST);
                }

            }
            else
            {
                // From ISP selection page, advance to the isp pre-dialing page
                // g_navigate(g_OOBEDir + "setup\\migdial.htm");
                GoNavigate(CKPT_MIGDIAL);
            }
            break;
        }
        case PAGE_ISPDIAL:
        {
            break;
        }
        case PAGE_ISPPAGE:  // ISP hosting page
        {
            trace("ISPNextBtnHandler: gpgType: " + gpgType);
            switch (gpgType)
            {
                case PAGETYPE_ISP_NORMAL:
                case PAGETYPE_ISP_TOS:
                {
                    DisableButtons();
                    if (false == window.external.Migrate_GoNext())
                    {
                        OnServerErrorEx(0);
                    }
                    break;
                }
                case PAGETYPE_ISP_FINISH:
                {
                    DisableButtons();
                    var szINSURL = window.external.get_URL(1);
                    if (true == window.external.ProcessINS(szINSURL))
                    {
                        // ProcessINS creates a connectoid which will be firewalled
                        // at the end of OOBE via an API from HomeNet. We don't want
                        // the firewalling if there is one or more net cards because
                        // the function call can affect bridging of the net cards.
                        if (HasNetwork())
                        {
                            window.external.FirewallPreferredConnection(false);
                        }
                        GoNavigate(CKPT_OEMCUST);
                    }
                    else
                        Navigate("isperror\\ispins.htm");
                    break;
                }
                case PAGETYPE_ISP_CUSTOMFINISH:
                {
                    break;
                }
                case PAGE_SERVERR:
                {
                    //PopCKPT(); // Pop the double check point
                    GoNavigate(CKPT_MIGLIST);

                    break;
                }

            }
            break;
        }
    }

}

function ISPBackBtnHandler()
{
    g_bMigration = 0;
    switch (gCurrPage)
    {
        case PAGE_REFDIAL:
        {
            g_IgnoreDialErr = true;
            window.external.Hangup();
            PopCKPT(CKPT_REFDIAL); // Pop the dial ready checkpoint
            GoBack();  //GoNavigate(CKPT_ISPSIGNUP);
            break;
        }
        case PAGE_ISPLIST:
        {
            window.external.Hangup();
            if (!bMSgDisplay)
            {
                bMSgDisplay = true;

                g.selISPDropList.style.display = "inline";
                g.drdyisp_4_spanID.style.display = "inline";
                g.btnManual.style.display = "inline";
                g.ManualBtnLocalText01.style.display = "inline";
                g.MigListTitle.style.display="inline";
                g.MigListTxt.style.display="inline";
                g.MigListTxt2.style.display="inline";
                // g.selectedISPName.style.display="inline";
                g.MigListTxtNoOffer.style.display="none";
                g.MigListNoOffer.style.display="none";
                g.selISPDropList.focus();

            }
            else
            {
                GoBack();
            }
            break;
        }
        case PAGE_ISPDIAL:
        {
            g_IgnoreDialErr = true;
            window.external.Hangup();
            PopCKPT(CKPT_MIGDIAL); // Pop the dial ready checkpoint
            GoBack();  // GoNavigate(CKPT_MIGLIST);
            break;
        }
        case PAGE_ISPPAGE:
        {
            DisableButtons();
            if (false == window.external.Migrate_GoBack())
            {
                window.external.Hangup();
                PopCKPT(CKPT_MIGDIAL); // Pop the double check point
                GoBack();
            }
            break;
        }
        case PAGE_REGDIAL:
        {
            window.external.Hangup();
            GoBack();
            break;
        }
        case PAGE_SERVERR:
        {
            window.external.Hangup();
            PopCKPT(); // Pop the double check point
            GoNavigate(CKPT_MIGLIST);

            break;
        }
    }
}

function ISPSkipBtnHandler()
{
    window.external.Hangup();
    PopCKPT();
    g_bMigration = 0;
    GoCancel();
}


function HandleISPDropListChange()
{
    gselectedISPIndx = g.selISPDropList.selectedIndex;
    // g.selectedISPName.value=g.selISPDropList.options(gselectedISPIndx).text;
    ApiObj.set_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + TEMP_KEY, ISPINDX, gselectedISPIndx);
    // The "My ISP is not listed" entry is always last in the list.  If it is
    // selected, pretend that no entry was selected.
    //
    if ((gselectedISPIndx+1) == g.selISPDropList.length)
        gselectedISPIndx = -1;
}



// Referral dialing page
function Refdial_LoadMe()
{

    InitFrameRef()
    g.btnNext.disabled = true;
    InitNewButtons();
    gCurrPage = PAGE_REFDIAL;
    g.btnNext.onclick = ISPNextBtnHandler;
    g.btnBack.onclick = ISPBackBtnHandler;
    g.btnSkip.onclick = ISPSkipBtnHandler;
    if (g != null && g.spnReferralStatus != null)
        g.spnReferralStatus.innerText = L_REF_STATUS_DIALING_Text;

    setTimeout("DoReferralDial()" , 40); //BUGBUG #define this at the top, and why do we have to wait 40 milliseconds anyway?

}

function Miglist_Manual_Btn_Handler()
{
    GoNavigate(CKPT_ICONNECT);
}

// ISP Sel page
function Miglist_LoadMe()
{
    InitFrameRef()
    InitNewButtons();
    gCurrPage = PAGE_ISPLIST;
    g.btnNext.onclick = ISPNextBtnHandler;
    g.btnBack.onclick = ISPBackBtnHandler;
    g.btnSkip.onclick = ISPSkipBtnHandler;
    g.selISPDropList.style.width = 300;

    g.btnManual.onmouseover = HandleNextButtonMouseOver;
    g.btnManual.onmouseout  = HandleNextButtonMouseOut;
    g.btnManual.onmousedown = HandleNextButtonMouseDown;
    g.btnManual.className="newbuttonsNext";
    g.btnManual.onclick = Miglist_Manual_Btn_Handler;

    try
    {
        gselectedISPIndx = ApiObj.get_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + TEMP_KEY, ISPINDX)
    }
    catch (e)
    {
        gselectedISPIndx = 0;
    }
    if (g.selISPDropList.length <= 0)
    {
        // Go back one page
        PopCKPT(); // Pop the current check point
        ISPBackBtnHandler();
    }
    else if (g.selISPDropList.length == 1)
    {
        // My ISP is not on the list
        gselectedISPIndx = -1;
        g.MigListNoOffer.style.display="inline";
        g.MigListTxtNoOffer.style.display="inline";
    }
    else
    {
        if ((gselectedISPIndx + 1) > g.selISPDropList.length)
            gselectedISPIndx = 0;

        g.selISPDropList.onchange = HandleISPDropListChange;
        g.selISPDropList.selectedIndex = gselectedISPIndx;
        // g.selectedISPName.value=g.selISPDropList.options(gselectedISPIndx).text;

        // If isp is not on the list:
        if ((gselectedISPIndx + 1) == g.selISPDropList.length)
            gselectedISPIndx = -1;

        g.selISPDropList.style.display = "inline";
        g.drdyisp_4_spanID.style.display = "inline";
        g.btnManual.style.display = "inline";
        g.ManualBtnLocalText01.style.display = "inline";
        g.MigListTitle.style.display="inline";
        g.MigListTxt.style.display="inline";
        g.MigListTxt2.style.display="inline";
        // g.selectedISPName.style.display="inline";
        g.selISPDropList.focus();

    }
}

// ISP dialing page
function Migdial_LoadMe()
{

    InitFrameRef()
    g.btnNext.disabled = true;
    InitNewButtons();
    gCurrPage = PAGE_ISPDIAL;

    g.btnNext.onclick = ISPNextBtnHandler;
    g.btnBack.onclick = ISPBackBtnHandler;
    g.btnSkip.onclick = ISPSkipBtnHandler;
    try
    {
        gselectedISPIndx = ApiObj.get_RegValue(HKEY_LOCAL_MACHINE, OOBE_MAIN_REG_KEY + TEMP_KEY, ISPINDX)
    }
    catch (e)
    {
        gselectedISPIndx = 0;
    }

    setTimeout("DoISPDial(" + gselectedISPIndx + ")" , 40); //BUGBUG #define this at the top, and why do we have to wait 40 milliseconds anyway?

}

// ISP Access page
function Migpage_LoadMe()
{
    InitFrameRef();
    g.spnSaveInfo.style.display="none";
    InitNewButtons();
    gCurrPage = PAGE_ISPPAGE;
    g.MigPagePlsWaitText.style.visibility = "hidden";
    g.TOSFramespn.style.display = "none";

    g.btnNext.onclick = ISPNextBtnHandler;
    g.btnBack.onclick = ISPBackBtnHandler;
    g.btnSkip.onclick = ISPSkipBtnHandler;
    g.ISPContent.style.display = "none";
    g.TOSFramespn.style.display = "none";
    g.TOSRadioSpn.style.display = "none";

    g.ISPContent.innerHTML = ReadContent();

    window.external.walk();
    gpgType = window.external.get_PageType();
    switch (gpgType)
    {
        case PAGETYPE_ISP_NORMAL:
        {
            g.ISPContent.style.display = "inline";
            break;
        }
        case PAGETYPE_ISP_TOS:
        {
            g.TOSFrame.navigate(gCurrISPURL);

            g.TOSFramespn.style.display = "inline";
            g.TOSRadioSpn.style.display = "inline";

            break;
        }
       default:
       {
            g.ISPContent.style.display = "inline";
            break;
       }
    }
    var pgFlag = window.external.get_PageFlag();
    switch (pgFlag)
    {
        case PAGEFLAG_SAVE_CHECKBOX:
        {
            //alert("PAGEFLAG_SAVE_CHECKBOX");
            g.spnSaveInfo.style.display="inline";
            break;
        }
    }
}

function ReadContent()
{
    var fso, f, r = "";
    var ForReading = 1;
    try
    {
    fso = new ActiveXObject("Scripting.FileSystemObject");
    if ("" == gCurrISPURL)
        return;
    f = fso.OpenTextFile(gCurrISPURL, ForReading);
    r = f.ReadAll();
    f.Close();
    }
    catch(e) {}
    return r;
}

function DoReferralDial()
{
    g_bMigration = 1;
    g_IgnoreDialErr = false;
    if ((UseModem()) && window.external.CheckOnlineStatus &&
        window.external.CheckStayConnected("migrate.isp"))
    {
        window.external.Connect(CONNECTED_REFFERAL, "migrate.isp");
    }
    else
    {
        window.external.DialEx(CONNECTED_REFFERAL, "migrate.isp");
    }
}

function DoISPDial(dISP)
{
    g_bMigration = 1;
    g_IgnoreDialErr = false;
    window.external.DialEx(CONNECTED_ISP_MIGRATE, "", dISP);
}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnDialingErrorEx(derr)
{
    window.external.Hangup();

    if (g_IgnoreDialErr)
        return;
    
    switch (derr)
    {
     case DERR_PORT_OR_DEVICE:
     case DERR_PORT_ALREADY_OPEN:
     case DERR_HARDWARE_FAILURE:
     case DERR_DIALTONE:
        Navigate("isperror\\ispdtone.htm");
        break;

     case DERR_BUSY:
        Navigate("isperror\\ispphbsy.htm");
        break;

     case DERR_VOICEANSWER:
     case DERR_PPP_TIMEOUT:
        Navigate("isperror\\isphdshk.htm");
        break;

     case DERR_NO_CARRIER:
     case DERR_REMOTE_DISCONNECT:
        Navigate("isperror\\ispcnerr.htm");
        break;

     case DERR_NOANSWER:
        Navigate("isperror\\ispnoanw.htm");
        break;

     default:
        Navigate("isperror\\isphdshk.htm");
        break;
    }
}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnServerErrorEx(derr)
{
    window.external.Hangup();

    if (g_IgnoreDialErr)
        return;

    Navigate("isperror\\ispsbusy.htm");
}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
var L_NAME_OF_ISP_Text = "MSN";
function OnDialingEx()
{
    // Called when dialing type != CONNECTED_REGISTRATION

    if (g != null && g.spnISPName != null)
    {
        switch (g_CurrentCKPT)
        {
            case CKPT_ISPDIAL:
                g.spnISPName.innerText = (g_CustomISPName == null) ? 
                    L_NAME_OF_ISP_Text : g_CustomISPName;
                break;
            default:
                g.spnISPName.innerText = window.external.get_ISPName;
                break;
        }

    }

    if (g != null && g.spnDialing != null)
        g.spnDialing.innerText = window.external.get_DialNumber;
}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnConnectingEx()
{
    switch (g_CurrentCKPT)
    {
        case CKPT_REFDIAL:
            if (g != null && g.spnReferralStatus != null)
                g.spnReferralStatus.innerText = L_REF_STATUS_CONNECTING_Text;
            break;
    }

}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnDownloadingEx()
{
        // Next line of code added by TandyT to support special ISP signup process commands
        // Calls to function in agtcore.js

        Agent_TurnOnISPSpecialCommands();



    // Static control over online pages

       try
       {
           window.parent.document.frames("connDelay").frameElement.style.zIndex=3;
           window.parent.document.frames("connDelay").frameElement.style.display="inline";
           window.parent.document.frames("connDelay").document.body.style.cursor='wait';
       }
       catch (e)
       {
       }

    switch (g_CurrentCKPT)
    {
        case CKPT_REFDIAL:
            if (g != null)
            {
                if (g.spnReferralStatus != null)
                {
                    g.spnReferralStatus.innerText = L_REF_STATUS_CONNECTED_Text;
                }
                if (g.spnTblProgressBar != null)
                {
                    g.spnTblProgressBar.style.visibility="visible";
                }
            }
            break;
    }

}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnDisconnectEx()
{
}

function SetProg(i)
{
    // Status item starts at 1
    if (0 == i )
        return;
    if ((i>0) && (i<=100))
    {
        for (var j = gLastProg; j < i; j++)
        {
            if (g != null && g.tblProg != null)
                g.tblProg.rows(0).cells(j).style.backgroundColor = "green";
        }
        gLastProg = i;
    }

}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnConnectedEx()
{
    g_bTapiDone = true;
    switch (g_CurrentCKPT)
    {
        case CKPT_REFDIAL:
            if (g != null && g.spnReferralStatus != null)
                g.spnReferralStatus.innerText = L_REF_STATUS_CONNECTED_Text;
            if (g != null && g.spnTblProgressBar != null)
                g.spnTblProgressBar.style.visibility="visible";
            break;
    }
}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnRefDownloadProgressEx(dprog)
{
    if (g != null && g.spnReferralStatus != null)
    {
        g.spnReferralStatus.innerText = L_REF_STATUS_DOWNLOAD_Text;
        g.refdial_title1.innerText = L_REFDIALTITLE_TEXT;
        g.refdial_intro1.innerText = L_REFDIALINTRO_TEXT;
    }

    // UPDATE PROGRESS BAR
    SetProg(dprog);
}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnRefDownloadCompleteEx(bRet)
{
    var TIME_FOR_PROGRESS_BAR_FILL = 1000;
    // NAVIGATE TO ERROR OR THE NEXT PAGE
    if (1 == bRet)
    {
        window.external.Hangup();
        
        StatusObj.set_Status(REFERALDLCOMPLETED, true);
        setTimeout("GoNavigate(" + CKPT_MIGLIST + ")", TIME_FOR_PROGRESS_BAR_FILL);
    }
    else
    {
        OnServerErrorEx(0);

    }

}

<!--REQUIRED FUNCTION NAME:: DO NOT OVERLOAD OR ALTER-->
function OnISPDownloadCompleteEx(szURL)
{

    // alert("OnISPDownloadCompleteEx: " + szURL);

    if ("" == szURL)
    {
        OnServerErrorEx(0);
    }
    else
    {
        gCurrISPURL = szURL;
        Navigate("setup\\Migpage.htm");
    }
}
function TOSRadioClick()
{
    if (g.radioAgree.checked)
    {
        g.btnNext.disabled=false;
        g.btnNext.className="buttons";
    }
    else if (g.radioDisAgree.checked)
    {
        g.btnNext.disabled=true;
        g.btnNext.className="buttons-disabled";
    }

}
