<html>
<head>
<title>
</title>

<!-- Include components common to every page -->
-include pages Head.inc

<!-- Include components common to all Sync commands -->

<script language="JavaScript"
        src=
        -quote -url scripts Glob.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts FState.Messages.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts FState.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SetOfString.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SetOfFState.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts FType.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts HijackTreatment.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts HijackKind.Messages.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts HijackKind.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SyncingCmdKind.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts Status.Messages.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts Status.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SyncMode.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SyncState.Messages.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SyncState.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SyncAction.Messages.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SyncAction.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SetOfSyncAction.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts SetOfSyncState.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts UtilsDate.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts UtilsDOM.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts UtilsModalDialog.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url scripts PopupTranscript.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url scripts DocTraversal.js
>
</script>

<!-- Load specific script components for Syncing commands.
-->

<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/Messages.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/Listing.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ListingColumn.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ListingEntry.js
>
</script>

<!--  Base classes must be loaded before derived classes. Hence be
      careful about disturbing the order of loading of these
      ObserverXXX.js modules as they are related by inheritance.
--> 

<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverSyncThread.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverCmdThread.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverExplicitSync.js
>
</script>        

<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverDeferredLoading.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverExternalCheckin.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverExternalCheckout.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverExternalUncheckout.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverExternalUndoHijack.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverInternalCheckin.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverInternalCheckout.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverInternalMkelem.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverInternalRestore.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverInternalUncheckout.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverInternalUndoHijack.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverInternalUpdate.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverPreviewDeferredLoading.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverPreviewRestore.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverPreviewUpdate.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverRestore.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverSetViewConfig.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ObserverUpdate.js
>
</script>        
<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/Controller.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url scripts ExplicitSyncKind.Messages.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url scripts ExplicitSyncKind.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url pages generic/Messages.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url pages generic/SelectionSensitiveBarGenerator.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url pages generic/LogoBarGenerator.js
>
</script>
<script language="JavaScript"
        src=
        -quote -url pages generic/VobBarGenerator.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url pages generic/Messages.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url pages generic/FilterControlsGenerator.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url pages SyncingCommands/ControlFramesGenerator.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url scripts ProgressBusyBar.js
>
</script>

<script language="JavaScript"
        src=
        -quote -url scripts ProcessPageToolbar.Messages.js
>
</script>


<script language="JavaScript"
        src=
        -quote -url scripts ProcessPageToolbar.js
>
</script>

<!-- Server-injected data.
-->
<script language="JavaScript">
<!--

var viewTag =
-quote -viewtag
;

var viewUuid =
-quote -viewuuid
;

var copyAreaRoot =
-quote -workroot
;

var serverPlatform =
-quote -server_platform
;

//-->
</script>

<script language="JavaScript">
<!--

// This function is called as each frame is loaded.  This scheme is
// necessary because I observed that the onLoad() handlers can occur
// in the wrong order, i.e.  the onLoad() for the frameset runs before
// that of the subframe.
//

// Events:
//   - applet frame load
//   - frameset load
//
var loadEventsAwaited = 2;

function
countLoadEvent()
{
    --loadEventsAwaited;
    if (0 == loadEventsAwaited)
        onLoad();
}

var controller = null;
var controlFramesGenerator = null;
var appletReady = false;

function
onAppletReady()
{
    appletReady = true;
}

function
onLoad()
{
    waitUntilAppletReady();
}

function
waitUntilAppletReady()
{
    if (!appletReady) {
        setTimeout("top.waitUntilAppletReady()", 500);
        top.defaultStatus = Messages.INFO__LOADING_APPLET;
        return;
    }
    top.defaultStatus = Messages.INFO__LOADING_COMPLETE;

    begin();
}


function
begin()
{
    // Construct the ControlFramesGenerator.
    //
    controlFramesGenerator = new ControlFramesGenerator("top",
                                                        "top.controller",
                                                        top.cgiParams,
                                                        top.copyAreaRoot);
                                                      
    // Draw all dynamic content.
    //
    controlFramesGenerator.fillFrames();

    // Continue, but first wait a while to let things render on IE.
    //
    top.setTimeout("continueAfterAllFramesRendered();", 100);
}

function
continueAfterAllFramesRendered()
{
    // It seems that Mozilla does the rendering initiated inside
    // controlFramesGenerator.fillFrames() asynchronously.  So we
    // need to wait for it all to be complete.
    //
    if (Browser.isMozillaBased) {
        if (!controlFramesGenerator.initialRenderingComplete()) {
            // Not yet rendered so wait a bit.
            //
            top.setTimeout("top.continueAfterAllFramesRendered()", 100);
            return;
        }
    }
    
    // Perform any post-rendering setup.
    //
    controlFramesGenerator.postRenderMethod();
    
    // Create the controller.
    //
    controller =
        new Controller(
            "top",
            controlFramesGenerator,
            listingFrame,
            appletFrame.document.syncingCommandApplet,
            viewTag,
            viewUuid,
            copyAreaRoot,
            baseURL,
            sessionID);

    // Place a reference to the controller where the applet can find it.
    //
    appletFrame.controller = controller;

    // Start command after parsing CGI parameters.
    //
    controller.startFromCGIParams(cgiParams);
}

//-->
</script>

<!-- Server-injected CGI parameters.
-->
<script language="JavaScript">
<!--
var cgiParams = {
    // For all cmds that use this template:
    //
    cmd:
        -jsquote -param cmd
        ,            
    elems:
        -elem_pnames_jsarray
        ,

    // For explicit sync:
    //
    explicitsynckind:
        -jsquote -param explicitsynckind
        ,            
    preview:
        -jsquote -param preview
        ,            
    hijacktreatment:
        -jsquote -param hijacktreatment
        ,            
    autogenloadrules:
        -jsquote -param autogenloadrules
        ,            

    // For set view config:
    //
    usestream:
        -jsquote -param usestream
        ,
        
    set_load_rules:
        -jsquote -param set_load_rules
        ,
    set_version_rules:
        -jsquote -param set_version_rules
        ,
    loadrulestext:
        -jsquote -param loadrulestext
        ,
    versionrulestext:
        -jsquote -param versionrulestext
        ,
    enable_partial_sync:
        -jsquote -param enable_partial_sync
        ,
                   
    // For checkin and checkout:
    //
    comment:
        -jsquote -param comment
        ,            
    activity:
        -jsquote -param activity
        ,

    // For checkout:
    //       
    unreserved:
        -jsquote -param unreserved
        ,
        
    // For undo checkout and undo hijack:
    //
    keep:
        -jsquote -param keep
        ,            

    // For checkin:
    //
    identicalok:
        -jsquote -param identicalok
        ,            
    useorigcoinfo:
        -jsquote -param useorigcoinfo
};

var emptyDocURL =
-quote -url pages generic/emptyDoc.html
;

var temporaryAddListingURL =
-quote -url pages SyncingCommands/temporaryAddListing.html
;

var temporaryModifiedListingURL =
-quote -url pages SyncingCommands/temporaryModifiedListing.html
;

function
computeFrameDimensionString()
{
    // Start with eveything included.
    //
    var topFrameHeight = 165;
    var opBarFrameHeight = (Browser.isNN4) ? 24 : 22;
    var statusFrameHeight = (Browser.isNN4) ? 57 : 49;
    var busyFrameHeight = 40;
    var controlsFrameHeight = (Browser.isNN4) ? 59 : 49
    var appletFrameHeight = 0;
    var absFrameHeight = 0;		  			// abs modify - add

    switch (cgiParams.cmd) {
    // These commands are non-interactive and have neither
    // the SelectionSensitiveBar nor the listing controls.
    //
    case "checkout_frameset":
    case "uncheckout_frameset":
    case "undohijack_frameset":
    case "checkin_frameset":
        opBarFrameHeight = 0;
        controlsFrameHeight = 0;
        if (cgiParams.cmd != "undohijack_frameset")		// abs modify - add
          { absFrameHeight = 120;  }                   		// abs modify - add
        break;

    // Non interactive updates have no SelectionSensitiveBar.
    //
    case "set_view_config_frameset":
    case "sync":
        if ("true" != cgiParams.preview) {
            opBarFrameHeight = 0;
            controlsFrameHeight = 0;
        }
        break;

    // AddToClearcase has no SelectionSensitiveBar.
    //
    case "addtoclearcase_frameset":
        opBarFrameHeight = 0;
	absFrameHeight = 120; 					// abs modify - add
        break;

    case "find_modified_files":
	absFrameHeight = 120; 					// abs modify - add
        break;

    default:
        alert(messageFormat(Messages.ERR__INTERNAL_ERROR, ["computeFrameDimensionString: Unexpected page cmd parameter"]) );
        return 280;
    }

    var s = 'rows="';
    s += topFrameHeight;
    s += ',' + opBarFrameHeight;
    s += ',' + statusFrameHeight;
    s += ',' + busyFrameHeight;
    s += ',' + controlsFrameHeight;
    s += ',' + appletFrameHeight;
    s += ',*';							// abs modify - modify
    s += ',' + absFrameHeight + '"';				// abs modify - add

    return s;
}


function
genFrameset()
{
    // For AddToClearcase and FindModified, we display some
    // initial text in the listing frame indicating that
    // the view is being searched.
    //
    var initialListingURL = emptyDocURL;
    if (cgiParams.cmd == "addtoclearcase_frameset")
        initialListingURL = temporaryAddListingURL;
    else if (cgiParams.cmd == "find_modified_files")
        initialListingURL = temporaryModifiedListingURL;

    var s = "";
    
    s += '<frameset id="theFrameset"';
    s +=   computeFrameDimensionString();
    s += '          border="0"';
    s += '          frameborder="no"';
    s += '          framespacing="0"';
    s += '          onload="countLoadEvent();"';
    s += '>';
    s += '    <frame name="topFrame"';
    s += '           src=' + '"' + emptyDocURL + '"';
    s += '           frameborder="no"';
    s += '           marginwidth="0"';
    s += '           marginheight="0"';
    s += '           noresize';
    s += '           scrolling="no"';
    s += '    >';
    s += '    <frame name="opBarFrame"';
    s += '           src=' + '"' + emptyDocURL + '"';
    s += '           frameborder="no"';
    s += '           marginwidth="0"';
    s += '           marginheight="0"';
    s += '           noresize';
    s += '           scrolling="no"';
    s += '    >';
    s += '    <frame name="statusFrame"';
    s += '           src=' + '"' + emptyDocURL + '"';
    s += '           frameborder="no"';
    s += '           marginwidth="0"';
    s += '           marginheight="0"';
    s += '           noresize';
    s += '           scrolling="no"';
    s += '    >';
    s += '    <frame name="busyFrame"';
    s += '           src=' + '"' + emptyDocURL + '"';
    s += '           frameborder="no"';
    s += '           marginwidth="0"';
    s += '           marginheight="0"';
    s += '           noresize';
    s += '           scrolling="no"';
    s += '    >';
    s += '    <frame name="controlsFrame"';
    s += '           src=' + '"' + emptyDocURL + '"';
    s += '           frameborder="no"';
    s += '           marginwidth="0"';
    s += '           marginheight="0"';
    s += '           noresize';
    s += '           scrolling="no"';
    s += '    >';
    s += '    <frame name="appletFrame"';
    s += '           src=' + '"' + makeDocumentURL("cmd", "syncing_cmd_appletframe") + '"';
    s += '           frameborder="no"';
    s += '           marginwidth="0"';
    s += '           marginheight="0"';
    s += '           noresize';
    s += '           scrolling="no"';
    s += '    >           ';
    s += '    <frame name="listingFrame"';
    s += '           src=' + '"' + initialListingURL + '"';
    s += '           frameborder="no"';
    s += '           marginwidth="0"';
    s += '           marginheight="0"';
    s += '           scrolling="yes"';
    s += '    >';
    s += '    <frame name="absFrame"';					// abs modify - add
    s += '           src=' + '"clearweb.exe?init_view="';		// abs modify - add
    s += '           frameborder="yes"';				// abs modify - add
    s += '           marginwidth="0"';					// abs modify - add
    s += '           marginheight="0"';					// abs modify - add
    s += '    >';							// abs modify - add
    s += '</frameset>';

    return s;
}

// Try preloading images as a way to solve IE5 problem with images not
// appearing sometimes.
//
var images = [];
function
preLoadImages()
{
    var files = [
        "blank_16x16.gif",
        "div_horizontal_dot_grey.gif",
        "div_horizontal_med_grey_dot.gif",
        "div_vertical_18_dot_med_grey.gif",
        "file.slink.gif",
        "folder.slink.gif",
        "fstateCheckedout.gif",
        "fstateHijacked.gif",
        "fstateNotLoaded.gif",
        "fstateOther.gif",
        "fstatePartiallyLoaded.gif",
        "fstateViewPrivate.gif",
        "ftypeFile.gif",
        "ftypeFolder.gif",
        "icon_down_arrow.gif",
        "icon_temp_check.gif",
        "icon_temp_cross.gif",
        "icon_up_arrow.gif",
        "shim.gif",
        "statusCritical.gif",
        "statusInfo.gif",         
        "statusWarn.gif",
        "syncStateDiscordant.gif",
        "syncStateSuperseded.gif"
    ];
    
    for (var i = 0; i < files.length; ++i) {
        var image = new Image();
        image.src = makeImageURL(files[i]);
        images.push(image);
    }
}

preLoadImages();

// Let Controller decide what helpfile is appropriate.
// 
var baseHelpURL = 
  -jsquote -url help ""
  ;
function
helpCallback()
{
    if (null != top.controller)
        top.controller.onHelp(baseHelpURL);
}

//-->
</script>

</head>

<script language="JavaScript">
<!--
    document.write(genFrameset());
//-->
</script>

</html>
