﻿<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Loading merge...</title>

    <link rel="stylesheet" href="data8_multirecordmerge.css" />
</head>
<body>
    <div class="container-fluid body-content">
        <div id="Logo" style="position: absolute; right: 15px; top: 20px; color: black; font-size: 21px; font-weight: bold; display: none">
            data<span style="color: #FF7C22">8</span> duplicare&trade;
        </div>
        <h1 data-bind="text: MetaData().PageTitle"></h1>
        <div id="RequiredFieldsMsg" class="alert alert-danger" style="display: none">
            <p>Required fields missing:</p>
            <ul></ul>
        </div>
        <div id="InfoMsg" class='alert alert-info'>Loading... Please Wait.</div>
        <div id="ProcessingMsg" class="alert alert-info" style="display: none">
            <div id="ProcessingTxt">Processing... Please Wait...</div>
            <div id="ErrorTxt" style="display: none"><strong>ERROR:</strong> <span class="ErrorMsg"></span></div>
            <div id="ErrorPlugin" style="display: none">This error was produced by the plugin <strong><span id="ErrorPluginName"></span></strong></div>
            <div id="DownloadLogFile" style="display: none"><a download="TraceLog.txt">Download Log File</a></div>
            <div id="ProcessingProgress" class="progress remainingmargin-right remainingmargin-top remainingmargin-left" style="display: none">
                <div id="ProcessingBar" class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
                    0%
                </div>
            </div>
        </div>
        <div id="CalculatingMsg" class="alert alert-info" style="display: none">Contact remembered, calculating account... Please Wait...</div>
        <div id="AlertMessage" class="alert alert-warning" style="display: none"><strong>WARNING:</strong> <span class="AlertMsg"></span></div>
        <div id="multiStagemerge" style="display: none" data-bind="visible: MetaData().MultiStep">
            <ol class="track-progress">
                <li class="done">
                    <span>Lead</span>
                    <i></i>
                </li><!--
                --><li class="done">
                    <span data-bind="text: MetaData().SecondaryMergeType !== 'account' ? 'Contact (Current Stage)' : 'Contact'"></span>
                </li><!--
                --><li data-bind="css: { 'done' : MetaData().SecondaryMergeType === 'account' }">
                    <span data-bind="text: MetaData().SecondaryMergeType === 'account' ? 'Account (Current Stage)' : 'Account'"></span>
                    <i></i>
                </li>
            </ol>
        </div>
        <form class="MainTable" style="display:none;" data-bind="scrollableOnDragOver: d8.vm.UsedDataTypes">
            <div class="table">
                <div class="thead RecordNames">
                    <div class="tr Header">
                        <div class="th">Description</div>
                        <div class="th">Output</div>
                        <!-- ko foreach: Records -->
                        <div class="th">
                            <label>
                                <input type="checkbox" data-bind="checked: Selected, enable: !($root.MergedRecord().RecordId() === RecordId), visible: d8.vm.showTickboxes, click: $root.ToggleInvolvement" />
                                <span data-bind="text: RecordName, click: $root.OpenRelatedRecord, css: { 'btn-link': (RecordId !== '00000000-0000-0000-0000-000000000000'), 'mergeoverride': (RecordId !== '00000000-0000-0000-0000-000000000000') }"></span>
                            </label>
                        </div>
                        <!-- /ko -->
                    </div>
                    <div class="tr Header">
                        <div class="th" style="padding-top: 0;"></div>
                        <div class="th" style="padding-top: 0;"></div>
                        <!-- ko foreach: Records -->
                        <div class="th" style="padding-top: 0;">
                            <span data-bind="text: SubTitle" style="font-style: italic" ></span>
                        </div>
                        <!-- /ko -->
                    </div>
                    <div class="tr Header">
                        <div class="th"></div>
                        <div class="th"></div>
                        <!-- ko foreach: Records -->
                        <div class="th">
                            <button type="button" class="btn btn-default btn-xs" data-bind="visible: !($root.MergedRecord().RecordId() === RecordId), enable: (RecordId !== '00000000-0000-0000-0000-000000000000' && !CannotBeMaster), click: $root.MakeRecordMasterWithOverwiteCheck" title="Keep this record and deactivate the others">Make Master</button>
                            <button type="button" disabled class="btn btn-default disabled btn-xs" data-bind="visible: ($root.MergedRecord().RecordId() === RecordId)" title="This record will be kept and the others deactivated">Master</button>
                        </div>
                        <!-- /ko -->
                    </div>
                    <div class="tr Header" data-bind="visible: d8.vm.ExclusionWarning">
                        <div class="th red-bar">
                            A number of records in this group have been identified as duplicate exclusions
                        </div>
                    </div>
                    <div class="tr Header" data-bind="visible: d8.vm.RecalculateRequired">
                        <div class="th yellow-bar">
                            Recalculate your output record based on the remaining selected records&nbsp;&nbsp;&nbsp;
                            <button type="button" class="btn btn-default btn-xs"  title="Recalculate output record based on remaining records" data-bind="click: $root.RecalculateOutputRecord" >Recalculate Output Record</button>
                        </div>
                    </div>
                </div>
                <!-- ko foreach: Structure -->
                <div class="tbody" data-bind="css: {Collapse: Collapsed}">
                    <div class="tr SectionHeader" data-bind="template: { name:SectionSeperator ? 'tmpltStdSeperator' : (SectionSelector ? 'tmpltSectionHeader' : 'tmpltStdHeader')}"></div>
                    <!-- ko foreach: Rows -->
                    <div class="tr DataRow" data-bind="css: { Required: Required === 'SystemRequired' || Required == 'ApplicationRequired', Used: $root.IsPopulated(LogicalName), Disabled: !IsValidForUpdate, ReadOnly: IsReadOnly || !IsValidForUpdate}, attr: { id: LogicalName }">
                        <div class="td Desc" data-bind="attr: { title: ((Required === 'SystemRequired' || Required == 'ApplicationRequired') ? 'Required' : '')}">
                            <div data-bind="text: DisplayName"></div>
                        </div>     <!-- Merged Record START -->
                        <div class="td OutputValue">
                            <div data-bind="template: {name: 'tmpltFld-' + TemplateType}"></div>
                        </div>
                        <!-- Merged Record END -->
                        <!-- ko foreach: $root.Records -->
                        <div class="td" data-bind="
							 dragZone: {
								name: Rows[$parentContext.$data.LogicalName].DataType,
								data: {Data: $data, StructureRow: $parentContext.$data}
							},
							css: { Disabled: !Selected() },
							attr: { title: ($root.IsUsed($data, $parentContext.$data.LogicalName) ? '' : 'This data will not be kept in the merged record.\nDrag it into the Output column to keep it.') }">
                                <div class="InfoBox">
                                    <span data-bind="if: Rows[$parentContext.$data.LogicalName] && Rows[$parentContext.$data.LogicalName].Field && Rows[$parentContext.$data.LogicalName].Field.IconPath">
                                        <img data-bind="attr: { src: Rows[$parentContext.$data.LogicalName].Field.IconPath }" style="height: 16px;" />
                                    </span>

                                    <!-- ko foreach: Rows[$parentContext.$data.LogicalName].DisplayValues --><!-- ko if: $index() > 0 -->; <!-- /ko --><span data-bind="text: $data, css: { Unused: !$root.IsUsed($parentContext.$data, $parentContext.$parentContext.$data.LogicalName, $data) }, attr: { title: ($root.IsUsed($parentContext.$data, $parentContext.$parentContext.$data.LogicalName, $data) ? '' : 'This data will not be kept in the merged record.\nDrag it into the Output column to keep it.') }" style="white-space: break-spaces;"></span><!-- /ko -->
                                </div>
                            </div>
                            <!-- /ko -->
                        </div>
                    <!-- /ko -->
                </div>
                <!-- /ko -->
            </div>
        </form>
        
        <div id="FooterButtons" style="display:none">
            <div id="FooterButtonsLeft">
                <button type="button" data-bind="click: MergeLeadsOnly.bind(this), visible: MetaData().MultiStep" class="btn btn-primary">Merge Leads Only</button>
            </div>
            <div id="FooterButtonsRight">
                <button type="button" data-bind="click: StoreData.bind(this), visible: MetaData().MultiStep, disable:  MetaData().SecondaryMergeType === 'account'" class="btn btn-primary">Next Stage</button>
                <button type="button" data-bind="visible: MetaData().MultiStep, click: SaveMultiStepData.bind(this), disable: MetaData().MultiStep && MetaData().SecondaryMergeType !== 'account'" class="btn btn-primary">Merge</button>
                <button type="button" data-bind="visible: !MetaData().MultiStep, click: SaveData.bind(this), disable: MetaData().MultiStep && MetaData().SecondaryMergeType !== 'account'" class="btn btn-primary">Merge</button>
                <button type="button" data-bind="click: Cancel.bind(this)" class="btn btn-default">Cancel</button>
            </div>
        </div>
    </div>

    <script type="text/html" id="tmpltSectionHeader">
        <div class="th SectionHeader" style="flex: 2">
            <button type="button" class="SectionToggle btn btn-default" onclick="d8.ToggleSection(this);"></button>
            <span data-bind="text: SectionName"></span>
        </div>
        <!-- ko foreach: $root.Records -->
        <div class="th">
            <button type="button" data-bind="visible: !$parentContext.$data.ReadOnly, click: function(data, event) { $root.CopyAllToMergeTarget(data, $parentContext.$data.Rows) }" class="btn btn-default btn-xs SelectAll" title="Take the values from all fields for this record in this section">Select All</button>
        </div>
        <!-- /ko -->
    </script>

    <script type="text/html" id="tmpltStdHeader">
        <div class="th" style="flex: 2">
            <button type="button" class="SectionToggle btn btn-default" onclick="d8.ToggleSection(this)"></button>
            <span data-bind="text: SectionName"></span>
        </div>
    </script>

    <script type="text/html" id="tmpltStdSeperator">
        <div class="th SectionSeperator" style="flex: 2">
            <span data-bind="text: SectionSeperatorName"></span>
        </div>
    </script>

    <!-- MergeRecord templates -->
    <script type="text/html" id="tmpltFld-Generic">
        <input class="form-control"
               data-bind="
					disable: !IsValidForUpdate || IsReadOnly,
					dropZone: {
						accepts: AcceptedTypes,
						drop: d8.vm.Dropped,
						possibleOnDrag: true
					},
					attr: {
					    maxlength: MaxLength,
					    placeholder: IsSecuredForRead ? '*******' : ''
					},
					textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue"
                    
               type="text" />
    </script>

    <script type="text/html" id="tmpltFld-Picklist">
        <select class="form-control" data-bind="
				disable: !IsValidForUpdate || IsReadOnly,
				options: $root.MergedRecord().Rows[$data.LogicalName].FilteredPickList,
				optionsText: 'Label',
				optionsValue: 'Value',
				value: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue,
				dropZone: {
					accepts: AcceptedTypes,
					drop: d8.vm.Dropped,
					possibleOnDrag: true
				}"></select>
    </script>

    <script type="text/html" id="tmpltFld-MultiPicklist">
        <div class="multipicklist" data-bind="
             dropZone: {
					accepts: AcceptedTypes,
					drop: d8.vm.Dropped,
					possibleOnDrag: true
				}">
            <div class="input-group">
                <input class="form-control" disabled="disabled" data-bind="textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue" />
                <span class="input-group-btn">
                    <button class="btn btn-secondary" type="button" style="background-image: url(data8_downarrow.png); background-repeat: no-repeat; background-position: center;" onclick="d8.ToggleMultiPickList(this)">&nbsp;</button>
                </span>
            </div>
            <div style="display: none" class="multipicklisteditor">
                <!-- ko foreach: $root.MergedRecord().Rows[$data.LogicalName].FilteredPickList -->
                <div class="checkbox">
                    <label>
                        <input type="checkbox" data-bind="
                           disable: !$parent.IsValidForUpdate || $parent.IsReadOnly,
                           value: Value,
                           checked: Checked" />
                        <span data-bind="text: Label"></span>
                    </label>
                </div>
                <!-- /ko -->
            </div>
        </div>
    </script>
    <script type="text/html" id="tmpltFld-Lookup">
        <div class="Lookup" data-bind="dropZone: {
						accepts: AcceptedTypes,
						drop: d8.vm.Dropped,
						possibleOnDrag: true
					}">
            <img data-bind="attr: { src: $root.MergedRecord().Rows[$data.LogicalName].IconPath }" style="height:16px;" />
            <span class="Maximised"
                  data-bind="text: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue"
                  type="text"></span>
        </div>
    </script>
    <script type="text/html" id="tmpltFld-Integer">
        <input class="form-control" type="number"
               data-bind="
					disable: !IsValidForUpdate || IsReadOnly,
					dropZone: {
						accepts: AcceptedTypes,
						drop: d8.vm.Dropped,
						possibleOnDrag: true
					},
					attr: {
					    min: MinValue,
					    max: MaxValue,
					    placeholder: IsSecuredForRead ? '*******' : ''
					},
					textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue" />
    </script>
    <script type="text/html" id="tmpltFld-Decimal">
        <input class="form-control" type="number"
               data-bind="
					disable: !IsValidForUpdate || IsReadOnly,
					dropZone: {
						accepts: AcceptedTypes,
						drop: d8.vm.Dropped,
						possibleOnDrag: true
					},
					attr: {
					    min: MinValue,
					    max: MaxValue,
					    placeholder: IsSecuredForRead ? '*******' : ''
					},
					textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue" />
    </script>
    <script type="text/html" id="tmpltFld-Money">
        <div class="input-group" data-bind="if: $root.MergedRecord().Rows.transactioncurrencyid && $root.MergedRecord().Rows.transactioncurrencyid.RecordValue">
            <span class="input-group-addon" data-bind="text: $root.MetaData().Formats.CurrencySymbols[$root.MergedRecord().Rows.transactioncurrencyid.RecordValue().Id]"></span>
            <input class="form-control"
                   data-bind="
					disable: !IsValidForUpdate || IsReadOnly,
					visible: !$root.MergedRecord().Rows[$data.LogicalName].EditorMode(),
					dropZone: {
						accepts: AcceptedTypes,
						drop: d8.vm.Dropped,
						possibleOnDrag: true
					},
					event: { focus: d8.vm.TogBkgEditFld },
					textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue"
                   type="text" />
            <input class="form-control"
                   data-bind="
					disable: !IsValidForUpdate || IsReadOnly,,
					visible: $root.MergedRecord().Rows[$data.LogicalName].EditorMode(),
					hasFocus: $root.MergedRecord().Rows[$data.LogicalName].EditorMode(),
					attr: {
					    min: MinValueDouble,
					    max: MaxValueDouble,
					    placeholder: IsSecuredForRead ? '*******' : ''
					},
					event: { blur: d8.vm.TogBkgEditFld },
					textInput: $root.MergedRecord().Rows[$data.LogicalName].EditorValue"
                   type="number" />
        </div>
        <div class="input-group" data-bind="ifnot: $root.MergedRecord().Rows.transactioncurrencyid && $root.MergedRecord().Rows.transactioncurrencyid.RecordValue">
            <div class="Lookup"><span class="Maximised" type="text">No currency selected</span></div>
        </div>
    </script>
    <script type="text/html" id="tmpltFld-ExchangeRate">
        <input class="form-control" type="text" disabled
               data-bind="attr: { maxlength: MaxLength, }, textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue" />
    </script>
    <script type="text/html" id="tmpltFld-Memo">
        <textarea class="form-control"
                  data-bind="
					disable: !IsValidForUpdate || IsReadOnly,,
					dropZone: {
						accepts: AcceptedTypes,
						drop: d8.vm.Dropped,
						possibleOnDrag: true
					},
					attr: {
                        maxlength: MaxLength
                    },
					textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue"></textarea>
    </script>
    <script type="text/html" id="tmpltFld-DateTime">
        <div class="input-append date form_datetime datetimepicker-display">
            <input data-bind="datetimepicker: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue, value: $root.MergedRecord().Rows[$data.LogicalName].RecordValue(), disable: !IsValidForUpdate || IsReadOnly," class="datetimepicker-hidden" />
            <input type="text" disabled class="form-control"
                   data-bind="
					    dropZone: {
						    accepts: AcceptedTypes,
						    drop: d8.vm.Dropped,
						    possibleOnDrag: true
					    },
					    css: { picklistonly: IsValidForUpdate },
					    attr: {
                            size: MaxLength
                        },
					    textInput: $root.MergedRecord().Rows[$data.LogicalName].DisplayValue">
            <span class="add-on"><i class="icon-th"></i></span>
        </div>
    </script>
    <script type="text/html" id="tmpltFld-Blank">
    </script>

<script type="text/javascript" src="ClientGlobalContext.js.aspx"></script>
    <script type="text/javascript" src="data8_multirecordmerge.js"></script>
    <!--
    <script type="text/javascript" src="/lib/jquery/dist/jquery.js"></script>
    <script type="text/javascript" src="/lib/bootstrap/dist/js/bootstrap.js"></script>
    <script type="text/javascript" src="/lib/smalot-bootstrap-datetimepicker/js/bootstrap-datetimepicker.js"></script>
    <script type="text/javascript" src="/lib/knockout/dist/knockout.debug.js"></script>
    <script type="text/javascript" src="/js/d8_knockout.dragdrop.js"></script>
    <script type="text/javascript" src="/js/date.format.js"></script>
    <script type="text/javascript" src="/js/AjaxServices.js"></script>
    <script type="text/javascript" src="/js/DataServices.js"></script>
    <script type="text/javascript" src="/js/Defaults.js"></script>
    <script type="text/javascript" src="/js/Site.js"></script>
    -->
</body>
</html>
