﻿<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>PandaDoc</title>
        <script src="https://pd-js-sdk.s3.amazonaws.com/latest/pandadoc-js-sdk.min.js"></script>
        <link rel="stylesheet" href="https://pd-js-sdk.s3.amazonaws.com/latest/pandadoc-js-sdk.css"/>
        <script type="text/javascript">
            window.global_config = {
                applicationType: 'microsoftdynamicscrm'
            };
        </script>
        <style type="text/css">
            body {
                margin: 0;
                background: white;
            }

            .pandadoc-doc-list-wrapper,
            .pandadoc-doc-editor-wrapper {
                width: 100%;
                height: 100%;
            }

            .pandadoc-doc-list-wrapper iframe,
            .pandadoc-doc-editor-wrapper iframe {
                position: absolute;
                width: 100%;
                height: 100%;
            }
        </style>
    </head>
    <body>
        <div class="pandadoc-doc-list-wrapper"></div>
        <div class="pandadoc-doc-editor-wrapper"></div>

        <script type="text/javascript">
            (function($) {
                var $deferredTokens;
                var $deferredDataForUpdateDraftDocument;
                var $listWrapper = $('.pandadoc-doc-list-wrapper');
                var $editorWrapper = $('.pandadoc-doc-editor-wrapper');

                var postMessage = function(method, data) {
                    parent.postMessage({method: method, data: data}, '*');
                }

                var showDocList = function(data) {
                    $editorWrapper.hide();
                    $listWrapper.show().find('.pandadoc-doc-list').remove();

                    var docList = new PandaDoc.DocList({mode: PandaDoc.DOC_LIST_MODE.LIST_AND_EDITOR});
                    docList.init({
                        el: $listWrapper,
                        cssClass: 'pandadoc-doc-list',
                        data: data,
                        initOptions: {
                            isExtension: true,
                            externalEditor: true,
                            showTokens: true,
                            showContextMenu: true,
                            provider: {
                                name: 'ms-dynamics',
                            },
                        },
                        events: {
                            onDocumentCreate: function() {
                                postMessage('createDocument');
                            },
                            onDocumentOpen: function(data) {
                                postMessage('openDocument', data);
                            },
                            onTokensOpen: function() {
                                postMessage('openTokens');
                                $deferredTokens = $.Deferred();
                                $deferredTokens.done(function(data){
                                    docList.showAvailableTokens(data);
                                    $deferredTokens = null;
                                });
                            },
                            onDraftDocumentUpdate: function () {
                                $deferredDataForUpdateDraftDocument = $.Deferred();
                                $deferredDataForUpdateDraftDocument.done(function(data){
                                    docList.updateDraftDocument(data);
                                    $deferredDataForUpdateDraftDocument = null;
                                });
                                postMessage('sdk.document.update_draft_document.start');
                            },
                        }
                    });
                }

                var windowOnMessage = function(e) {
                    var data = e.data.data;
                    var method = e.data.method;
                    if (method === 'showList') {
                        showDocList(data);
                    }
                    if (method === 'openTokens') {
                        $deferredTokens.resolve(data);
                    }
                    if (method === 'sdk.document.update_draft_document.receive_data') {
                        $deferredDataForUpdateDraftDocument.resolve(data);
                    }
                };

                if (window.addEventListener) {
                    window.addEventListener('message', windowOnMessage, false);
                }
                else if (window.attachEvent) {
                    window.attachEvent('onmessage', windowOnMessage);
                }

                postMessage('ready');
            })(window.PandaDoc.jQuery);
        </script>
    </body>
</html>
