templates/search.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html class="no-js" lang="en">
  3. <head>
  4.     <meta charset="utf-8">
  5.     <!-- Page Title-->
  6.     <title>The Smartfiles Network by LeReTo</title>
  7.     <!-- Meta Tags-->
  8.     <meta name="description" content="The Smartfiles Network by LeReTo | Combining EU and national case law datasets to enable a unique view of the interconnectedness of European case law.">
  9.     <meta name="keywords" content="Legal Network Analysis, Legal Tech, European Case Law, Citation Maps, Smart PDF-convolute">
  10.     <meta name="author" content="LeReTo">
  11.     <!-- Meta Tags-->
  12.     <!-- Viewport Meta-->
  13.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  14.     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  15.     <!-- Template Favicon & Icons Start -->
  16.     <link rel="shortcut icon" sizes="16x16 24x24 32x32 48x48 64x64 96x96" href="img/favicon/favicon.ico" type="image/x-icon">
  17.     <link rel="apple-touch-icon" sizes="57x57" href="img/favicon/apple-touch-icon-57x57.png">
  18.     <link rel="apple-touch-icon" sizes="60x60" href="img/favicon/apple-touch-icon-60x60.png">
  19.     <link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-touch-icon-72x72.png">
  20.     <link rel="apple-touch-icon" sizes="76x76" href="img/favicon/apple-touch-icon-76x76.png">
  21.     <link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-touch-icon-114x114.png">
  22.     <link rel="apple-touch-icon" sizes="120x120" href="img/favicon/apple-touch-icon-120x120.png">
  23.     <link rel="apple-touch-icon" sizes="144x144" href="img/favicon/apple-touch-icon-144x144.png">
  24.     <link rel="apple-touch-icon" sizes="152x152" href="img/favicon/apple-touch-icon-152x152.png">
  25.     <link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-touch-icon-180x180.png">
  26.     <link rel="icon" type="image/png" sizes="192x192" href="img/favicon/android-chrome-192x192.png">
  27.     <link rel="manifest" href="img/favicon/site.webmanifest">
  28.     <link rel="mask-icon" href="img/favicon/safari-pinned-tab.svg" color="#25237e">
  29.     <meta name="msapplication-config" content="img/favicon/browserconfig.xml">
  30.     <meta name="msapplication-TileColor" content="#ffaca3">
  31.     <!-- Template Favicon & Icons End-->
  32.     <link rel="stylesheet" href="multirange.css">
  33.     <!-- Template Styles Start-->
  34.     <link rel="stylesheet" type="text/css" href="css/plugins.css">
  35.     <link rel="stylesheet" type="text/css" href="css/loaders/loader.css">
  36.     <link rel="stylesheet" type="text/css" href="css/main.css">
  37.     <!-- Template Styles End-->
  38.     <!-- Custom Browser Color Start-->
  39.     <meta name="theme-color" content="#272F7C">
  40.     <meta name="msapplication-navbutton-color" content="#272F7C">
  41.     <meta name="apple-mobile-web-app-status-bar-style" content="#272F7C">
  42.     <!-- Custom Browser Color End-->
  43.     <script src="//unpkg.com/d3-quadtree"></script>
  44.     <script src="//unpkg.com/d3-force"></script>
  45.     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/izimodal/1.5.1/css/iziModal.min.css" />
  46.     <script src="/js/force-graph.js"></script>
  47.     <script src="https://unpkg.com/ionicons@4.5.5/dist/ionicons.js"></script>
  48.     <style type="text/css">.graph-tooltip {
  49.             position: absolute;
  50.             transform: translate(-50%, 25px);
  51.             font-family: Sans-serif;
  52.             font-size: 16px;
  53.             padding: 4px;
  54.             border-radius: 3px;
  55.             color: #eee;
  56.             background: rgba(0,0,0,0.65);
  57.             visibility: hidden; /* by default */
  58.         }
  59.         .loader2,
  60.         .loader2:before,
  61.         .loader2:after {
  62.             border-radius: 50%;
  63.             width: 2.5em;
  64.             height: 2.5em;
  65.             -webkit-animation-fill-mode: both;
  66.             animation-fill-mode: both;
  67.             -webkit-animation: load7 1.8s infinite ease-in-out;
  68.             animation: load7 1.8s infinite ease-in-out;
  69.         }
  70.         .loader2 {
  71.             color: #000000;
  72.             font-size: 10px;
  73.             margin: 80px auto;
  74.             position: relative;
  75.             text-indent: -9999em;
  76.             -webkit-transform: translateZ(0);
  77.             -ms-transform: translateZ(0);
  78.             transform: translateZ(0);
  79.             -webkit-animation-delay: -0.16s;
  80.             animation-delay: -0.16s;
  81.         }
  82.         .loader2:before,
  83.         .loader2:after {
  84.             content: '';
  85.             position: absolute;
  86.             top: 0;
  87.         }
  88.         .loader2:before {
  89.             left: -3.5em;
  90.             -webkit-animation-delay: -0.32s;
  91.             animation-delay: -0.32s;
  92.         }
  93.         .loader2:after {
  94.             left: 3.5em;
  95.         }
  96.         @-webkit-keyframes load7 {
  97.             0%,
  98.             80%,
  99.             100% {
  100.                 box-shadow: 0 2.5em 0 -1.3em;
  101.             }
  102.             40% {
  103.                 box-shadow: 0 2.5em 0 0;
  104.             }
  105.         }
  106.         @keyframes load7 {
  107.             0%,
  108.             80%,
  109.             100% {
  110.                 box-shadow: 0 2.5em 0 -1.3em;
  111.             }
  112.             40% {
  113.                 box-shadow: 0 2.5em 0 0;
  114.             }
  115.         }
  116.         .grabbable {
  117.             cursor: move;
  118.             cursor: grab;
  119.             cursor: -moz-grab;
  120.             cursor: -webkit-grab;
  121.         }
  122.         .grabbable:active {
  123.             cursor: grabbing;
  124.             cursor: -moz-grabbing;
  125.             cursor: -webkit-grabbing;
  126.         }
  127.         .fullscreen-bg {
  128.             position: fixed;
  129.             top: 0;
  130.             right: 0;
  131.             bottom: 0;
  132.             left: 0;
  133.             overflow: hidden;
  134.             z-index: -100;
  135.         }
  136.         .fullscreen-bg__video {
  137.             position: absolute;
  138.             top: 0;
  139.             left: 0;
  140.             width: 100%;
  141.             height: 100%;
  142.         }
  143.         @media (min-aspect-ratio: 16/9) {
  144.             .fullscreen-bg__video {
  145.                 width: 100%;
  146.                 height: auto;
  147.             }
  148.         }
  149.         @media (max-aspect-ratio: 16/9) {
  150.             .fullscreen-bg__video {
  151.                 width: auto;
  152.                 height: 100%;
  153.             }
  154.         }
  155.         @media (min-aspect-ratio: 16/9) {
  156.             .fullscreen-bg__video {
  157.                 height: 300%;
  158.                 top: -100%;
  159.             }
  160.         }
  161.         @media (max-aspect-ratio: 16/9) {
  162.             .fullscreen-bg__video {
  163.                 width: 300%;
  164.                 left: -100%;
  165.             }
  166.         }
  167.         metadatas li.selected, metadatas li:hover
  168.         {
  169.             font-weight: bold;
  170.         }
  171.         li {
  172.             cursor: pointer;
  173.         }
  174.         [data-entry].selected, [data-entry]:hover
  175.         {
  176.             color: #7ed4dd !important;
  177.         }
  178.         @import url(https://fonts.googleapis.com/css?family=Ubuntu);
  179.         .toggle-btn {
  180.             width: 80px;
  181.             height: 40px;
  182.             margin: 10px;
  183.             border-radius: 50px;
  184.             display: inline-block;
  185.             position: relative;
  186.             background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAyklEQVQ4T42TaxHCQAyENw5wAhLACVUAUkABOCkSwEkdhNmbpHNckzv689L98toIAKjqGcAFwElEFr5ln6ruAMwA7iLyFBM/TPDuQSrxwf6fCKBoX2UMIYGYkg8BLOnVg2RiAEexGaQQq4w9e9klcxGLLAUwgDAcihlYAR1IvZA1sz/+AAaQjXhTQQVoe2Yo3E7UQiT2ijeQdojRtClOfVKvMVyVpU594kZK9zzySWTlcNqZY9tjCsUds00+A57z1e35xzlzJjee8xf0HYp+cOZQUQAAAABJRU5ErkJggg==") no-repeat 50px center #e74c3c;
  187.             cursor: pointer;
  188.             -webkit-transition: background-color .40s ease-in-out;
  189.             -moz-transition: background-color .40s ease-in-out;
  190.             -o-transition: background-color .40s ease-in-out;
  191.             transition: background-color .40s ease-in-out;
  192.             cursor: pointer;
  193.         }
  194.         .toggle-btn.active {
  195.             background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAmUlEQVQ4T6WT0RWDMAhFeZs4ipu0mawZpaO4yevBc6hUIWLNd+4NeQDk5sE/PMkZwFvZywKSTxF5iUgH0C4JHGyF97IggFVSqyCFga0CvQSg70Mdwd8QSSr4sGBMcgavAgdvwQCtApvA2uKr1x7Pu++06ItrF5LXPB/CP4M0kKTwYRIDyRAOR9lJTuF0F0hOAJbKopVHOZN9ACS0UgowIx8ZAAAAAElFTkSuQmCC") no-repeat 10px center #2ecc71;
  196.         }
  197.         .toggle-btn.active .round-btn {
  198.             left: 45px;
  199.         }
  200.         .toggle-btn .round-btn {
  201.             width: 30px;
  202.             height: 30px;
  203.             background-color: #fff;
  204.             border-radius: 50%;
  205.             display: inline-block;
  206.             position: absolute;
  207.             left: 5px;
  208.             top: 50%;
  209.             margin-top: -15px;
  210.             -webkit-transition: all .30s ease-in-out;
  211.             -moz-transition: all .30s ease-in-out;
  212.             -o-transition: all .30s ease-in-out;
  213.             transition: all .30s ease-in-out;
  214.         }
  215.         .toggle-btn .cb-value {
  216.             position: absolute;
  217.             left: 0;
  218.             right: 0;
  219.             width: 100%;
  220.             height: 100%;
  221.             opacity: 0;
  222.             z-index: 9;
  223.             cursor: pointer;
  224.             -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  225.         }
  226.         .subjectHighlight:hover
  227.         {
  228.             font-weight: bold;
  229.         }
  230.         #sidebar div:hover
  231.         {
  232.             /*background-color: #333333;*/
  233.         }
  234.     </style>
  235.     <!--<script src="../../dist/force-graph.js"></script>-->
  236.     <script src="/js/three.js"></script>
  237. </head>
  238. <body class="overflow-hidden">
  239. <!-- Old Browsers Support Start-->
  240. <!--[if lt IE 9]>
  241. <script src="js/libs/es5-shim.min.js"></script>
  242. <script src="js/libs/html5shiv.min.js"></script>
  243. <script src="js/libs/html5shiv-printshiv.min.js"></script>
  244. <script src="js/libs/respond.min.js"></script>
  245. <!--Plugin CSS file with desired skin-->
  246. <!--jQuery-->
  247. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  248. <!--Plugin JavaScript file-->
  249. <![endif]-->
  250. <!-- Old Browsers Support End-->
  251. <!-- Loader Start-->
  252. <div class="loader">
  253.     <!-- Loader Content Wrapper Start -->
  254.     <div class="loader_content">
  255.         <!-- Loader Logo Start -->
  256.         <div class="loader-logo-container">
  257.             <div class="loader-logo slideInDown">
  258.                 <!-- Put Your Logo Here -->
  259.                 <img src="img/logo_nobg_white_medium.png" alt="the smartfiles network">
  260.             </div>
  261.             <div class="loader-caption slideInUp">
  262.             <span class="loading-dots">
  263.               <span class="dot"></span>
  264.               <span class="dot"></span>
  265.               <span class="dot"></span>
  266.             </span>
  267.             </div>
  268.         </div>
  269.         <!-- Loader Logo End -->
  270.     </div>
  271.     <!-- Loader Content Wrapper Start -->
  272.     <div class="loader_background"></div>
  273.     <!-- Loader Morphing Shape Start -->
  274.     <div class="loader_shape">
  275.         <svg class="loader-transition-shape" width="100%" height="100%" viewBox="0 0 1440 800" preserveAspectRatio="none">
  276.             <path class="loader-morphing-path" d="M-22.4-87.7c-8.3,95.9,56.9,71.1,216.6,79c189.3,9.4,264.6-2.6,431.3-0.8c187.6,2,331.6-9.3,528.2-0.2c443.7,20.5,435.1-61.8,368.6-188.1C1455.9-324.1,34.5-746.7-22.4-87.7z"/>
  277.         </svg>
  278.     </div>
  279.     <!-- Loader Morphing Shape End -->
  280. </div>
  281. <!-- Loader End-->
  282. <!-- Custom HTML Start-->
  283. <!-- Menu Button Start -->
  284. <div class="menu-button">
  285.     <a href="#" id="menu-trigger" class="menu-trigger">
  286.         <span></span>
  287.     </a>
  288.     <!-- Menu Button Morphing Shape Start -->
  289.     <svg class="menu-btn-morphing-object" width="100%" height="100%" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
  290.         <path class="menu-btn-morphing-path" d="M49.8,29.3c0,13.3-14.9,20.5-28.2,20.5S0.8,38.6,0.8,25.4S15.9,0.2,29.2,0.2S49.8,16,49.8,29.3z"/>
  291.       </svg>
  292.     <!-- Menu Button Morphing Shape End -->
  293. </div>
  294. <!-- Menu Button Start -->
  295. <!-- Navigation Start-->
  296. <div class="navigation">
  297.     <!-- Menu Content Wrapper Start -->
  298.     <div class="navigation_content">
  299.         <!-- Menu Close Button Start -->
  300.         <a href="#" id="menu-close" class="navigation_close"></a>
  301.         <!-- Menu Close Button End -->
  302.         <!-- Menu Logo Start -->
  303.         <div class="logo-wrapper">
  304.             <!-- Your Logo Here -->
  305.             <img src="img/logo_nobg_white.png" alt="the smartfiles network"/>
  306.         </div>
  307.         <!-- Menu Logo End -->
  308.         <!-- Menu Content Start -->
  309.         <div class="menu-wrapper">
  310.             <nav>
  311.                 <!-- Menu Start-->
  312.                 <ul class="menu" id="menu">
  313.                     <li data-menuanchor="main">
  314.                         <a href="/#main">Home</a>
  315.                     </li>
  316.                     <li data-menuanchor="solution">
  317.                         <a href="/#solution">Our Solution</a>
  318.                     </li>
  319.                     <li data-menuanchor="demo">
  320.                         <a href="/#demo">Demo</a>
  321.                     </li>
  322.                     <li data-menuanchor="project">
  323.                         <a href="/#project">The Project</a>
  324.                     </li>
  325.                     <li data-menuanchor="data">
  326.                         <a href="/#data">Data</a>
  327.                     </li>
  328.                     <li data-menuanchor="team">
  329.                         <a href="/#team">Team</a>
  330.                     </li>
  331.                     <li data-menuanchor="contact">
  332.                         <a href="/#contact">Contact LeReTo</a>
  333.                     </li>
  334.                     <li data-menuanchor="imprint">
  335.                         <a href="/#imprint">Imprint (Cookies & Dataprotection)</a>
  336.                     </li>
  337.                 </ul>
  338.                 <!-- Menu End-->
  339.             </nav>
  340.             <!-- Socials Start-->
  341.             <ul class="menu-socials">
  342.                 <br>
  343.                 <li>
  344.                     <a class="" href="https://twitter.com/LeReTo_" target="_blank">
  345.                         <i class="icon ion-social-twitter"></i>
  346.                     </a>
  347.                 </li>
  348.                 <li>
  349.                     <a class="" href="https://www.linkedin.com/company/18403075/" target="_blank">
  350.                         <i class="icon ion-social-linkedin"></i>
  351.                     </a>
  352.                 </li>
  353.                 <li>
  354.                     <a class="" href="https://www.facebook.com/lereto.at" target="_blank">
  355.                         <i class="icon ion-social-facebook"></i>
  356.                     </a>
  357.                 </li>
  358.             </ul>
  359.             <!-- Socials End-->
  360.         </div>
  361.         <!-- Menu Content End -->
  362.     </div>
  363.     <!-- Menu Content Wrapper End -->
  364.     <div class="navigation_background"></div>
  365.     <!-- Menu Morphing Shape Start -->
  366.     <div class="navigation_shape">
  367.         <svg class="menu-transition-shape" width="100%" height="100%" viewBox="0 0 1440 800" preserveAspectRatio="none">
  368.             <path class="menu-morphing-path" d="M-22.4-87.7c-8.3,95.9,56.9,71.1,216.6,79c189.3,9.4,264.6-2.6,431.3-0.8c187.6,2,331.6-9.3,528.2-0.2c443.7,20.5,435.1-61.8,368.6-188.1C1455.9-324.1,34.5-746.7-22.4-87.7z"/>
  369.         </svg>
  370.     </div>
  371.     <!-- Menu Morphing Shape End -->
  372. </div>
  373. <!-- Navigation End-->
  374. <!-- Fullpage.js Sections Start-->
  375. <div id="fullpage">
  376.     <!-- Main Section Start-->
  377.     <div class="section fp-auto-height-responsive main-section" data-anchor="main">
  378.         <!-- Logo Start -->
  379.         <div class="logo">
  380.             <!-- Your Logo Here -->
  381.             <img src="img/logo_nobg_white_text2_small60.png" alt="the smartfiles network">
  382.         </div>
  383.         <!-- Logo End -->
  384.         <!-- Main Section Content Start -->
  385.         <div class="main-section_content split fullheight">
  386.             <div class="container-fluid p-0 fullheight">
  387.                 <div class="row no-gutters fullheight" style="background-color: rgb(37, 40, 40);">
  388.                     <!-- Main Section Intro Start -->
  389.                    <!-- <div class="col-12 col-xl-6 main-section_intro split fullheight" style="max-width: 360px; background-color: #191919">
  390.                         <br/><br/>
  391.                         <div id="sidebar" style="color: white; padding-left: 20px; padding-right: 30px; text-align: left; font-size:14px">
  392.                             Drag a PDF to the search area!<br/>Demo-Files (or use your own PDF):<br/><br/>
  393.                             <div ondragstart="window.ff = null;window.f=1;event.dataTransfer.setData('text/plain',1);$('#leretoframe_wrapper').show();" ondragend="$('#leretoframe_wrapper').hide();dragend()" draggable="true" title="Drag me to the drop zone" style="border: 2px dashed #7ed4dd; border-radius: 5px; text-align: center; cursor: pointer; font-size: 12px">
  394.                                 <img draggable="false" src="/img/pdf-gray.svg" width="25px" style="width: 50px; margin-left: auto; margin-right: auto; margin-top: 30px"/><br/>
  395.                                 Demo Competition Law<br/><br/>
  396.                             </div><br/>
  397.                             <div ondragstart="window.ff = null;window.f=3;event.dataTransfer.setData('text/plain',3);$('#leretoframe_wrapper').show();" ondragend="$('#leretoframe_wrapper').hide();dragend()" draggable="true"  title="Drag me to the drop zone" style="border: 2px dashed #7ed4dd; border-radius: 5px; text-align: center; cursor: pointer; font-size: 12px">
  398.                             <img draggable="false" src="/img/pdf-gray.svg" width="25px" style="width: 50px; margin-left: auto; margin-right: auto; margin-top: 30px"/><br/>
  399.                                 Demo Corporate Law<br/><br/>
  400.                             </div><br/>
  401.                             <div ondragstart="window.ff = null;window.f=4;event.dataTransfer.setData('text/plain',4);$('#leretoframe_wrapper').show();" ondragend="$('#leretoframe_wrapper').hide();dragend()" draggable="true"  title="Drag me to the drop zone" style="border: 2px dashed #7ed4dd; border-radius: 5px; text-align: center; cursor: pointer; font-size: 12px">
  402.                                 <img draggable="false" src="/img/pdf-gray.svg" width="25px" style="width: 50px; margin-left: auto; margin-right: auto; margin-top: 30px"/><br/>
  403.                                 Demo National Case Law<br/><br/>
  404.                             </div><br/>
  405.                         </div>
  406.                     </div>-->
  407.                     <!-- Main Section Intro End -->
  408.                     <!-- Main Section Media Start -->
  409.                     <div class="col-12 col-xl-9 main-section_media fullheight" style="background-color: rgb(37, 40, 40); width: calc(100% - 300px)">
  410.                         <!-- Background Effect Start -->
  411.                         <!--<div class="video-background">
  412.                             <div class="" id="video-wrapper">
  413.                                 <div id="bgndVideo" class="player" data-property="{ videoURL:'https://youtu.be/4WVu5tgNLcY', }"></div>
  414.                             </div>
  415.                         </div>-->
  416.                         <div id="graph" style="display: none; background-color: rgb(37,40,40); width: 200%">
  417.                             <div style="position: relative; background-color: rgb(37,40,40);">
  418.                                 <canvas width="100%" height="100%" style="background-color: rgb(37,40,40);width: 100%; height: 100%;" class=""></canvas>
  419.                                 <div class="graph-tooltip" style="top: 294px; left: 477px; visibility: hidden;"></div>
  420.                             </div>
  421.                         </div>
  422.                         <div class="overlay1" style="cursor: pointer; color: white; display: none; width:300px; height: 30px; position: absolute; left: 40px; top: 50px; text-align: center;" onclick="document.location.href = 'https://smartfiles.lereto.at/search';">
  423.                             <img src="/restart.svg" style="width: 24px; display: inline"/> <span style="position: relative; top: -5px; ">Start new search</span>
  424.                         </div>
  425.                         <div class="overlay1 downloadoverlay" style="cursor: pointer; color: white; display: none; width:300px; height: 30px; position: absolute; left: 20px; bottom: 100px; text-align: center;" onclick="download();">
  426.                             <img src="/download.svg" style="width: 24px; display: inline"/> <span style="position: relative; top: -5px; ">Download</span>
  427.                         </div>
  428.                         <div class="overlay1" style="cursor: pointer; color: white; display: none; width:300px; height: 30px; position: absolute; left: 0px; bottom: 50px; text-align: center;" onclick="share();">
  429.                             <img src="/share.svg" style="width: 24px; display: inline"/> <span style="position: relative; top: -5px; ">Share</span>
  430.                         </div>
  431.                         <div class="overlay1" style="cursor: pointer; color: white; display: block; width:100px; height: 30px; position: absolute; right: -110px; bottom: 10px; text-align: center;" onclick="share();">
  432.                             <span style="color: gray">Open Beta</span>
  433.                         </div>
  434.                         <div class="overlay1" style="cursor: pointer; color: white; display: none; width:150px; height: 30px; position: absolute; right: 0px; top: 50px; text-align: center;">
  435.                             <div title="The EU relevance switch scales the nodesize in respect to the whole EU case law network as per 2019-06-02. The predefined nodesize reflects the relevance of a cited case law in respect to the shown network map" style="display: block">EU relevance</div> <div class="toggle-btn">
  436.                                 <input type="checkbox" class="cb-value" />
  437.                                 <span class="round-btn"></span>
  438.                             </div>
  439.                         </div>
  440.                         <div class="overlay1meta" style="padding-left:4px;border: 2px dashed #7ed4dd; border-radius: 5px;cursor: pointer; color: white; display: none; background-color: transparent; opacity: 0.8;color:white;width:360px; height: 500px; position: absolute; left: 110px; top:calc(50% - 250px); text-align: left;">
  441.                             <!--<img src="/share.svg" style="width: 24px; display: inline"/> <span style="position: relative; top: -5px; ">Share</span>-->
  442.                             <ion-icon name="close-circle-outline" style="position: absolute; right: 5px; top: 5px" onclick="$('.overlay1meta').hide();"></ion-icon>
  443.                             <ul class="metadatas">
  444.                             </ul>
  445.                         </div>
  446.                         <script>
  447.                             window.addEventListener('message', receiver, false);
  448.                             function receiver(e) {
  449.                                     if((""+e.data).indexOf("md5-") > -1)
  450.                                     {
  451.                                         window.md = (""+e.data).replace("md5-","");
  452.                                     } else {
  453.                                         window.sidebarset = e.data;
  454.                                     initGraph(e.data)
  455.                                     }
  456.                             }
  457.                             nodeCache = [];
  458.                             function share()
  459.                             {
  460.                                 var dataURL = canvas.canvas.toDataURL('image/png');
  461.                                 $.post("/share",{'data':{'md':window.md, 'png':dataURL}},function(){
  462.                                     //Generate Share Links
  463.                                     $('#links').html(
  464. "     <a href=\"https://www.linkedin.com/sharing/share-offsite/?url=https://smartfiles.lereto.at/shares/"+window.md+"\" target=\"_blank\">\n" +
  465. "            <img width='48px' style='width:48px' src=\"https://simplesharebuttons.com/images/somacro/linkedin.png\" alt=\"LinkedIn\" />\n" +
  466. "        </a><br/><br/>\n" +
  467. "    \n" +
  468. "        \n" +
  469. "        <a href=\"https://twitter.com/intent/tweet?url=https://smartfiles.lereto.at/shares/"+window.md+"&amp;text=The%20Smartfiles%20Network&amp;hashtags=TheSmartfilesNetwork\" target=\"_blank\">\n" +
  470. "            <img width='48px' style='width:48px' src=\"https://simplesharebuttons.com/images/somacro/twitter.png\" alt=\"Twitter\" />\n" +
  471. "        </a><br/><br/>\n" +
  472. "    \n" +
  473. "        \n" +
  474. "        <a href=\"mailto:?Subject=The Smartfiles Network&amp;Body=My%20PDF-based%20search%20result%20powered%20by%20LeReTo!%20 https://smartfiles.lereto.at/shares/"+window.md+"\">\n" +
  475. "            <img width='48px' style='width:48px' src=\"https://simplesharebuttons.com/images/somacro/email.png\" alt=\"Email\" />\n" +
  476. "        </a><br/><br/><img src='https://smartfiles.lereto.at/sharedata/"+window.md+".png' style='left: 100px;\n" +
  477.                                         "\n" +
  478.                                         "z-index: -1000;\n" +
  479.                                         "\n" +
  480.                                         "position: absolute;\n" +
  481.                                         "\n" +
  482.                                         "top: 50px;'/>");
  483.                                     $('#modal').iziModal('open');
  484.                                 })
  485.                             }
  486.                             //$('input.cb-value').prop("checked", true);
  487.                             $('.cb-value').click(function() {
  488.                                 var mainParent = $(this).parent('.toggle-btn');
  489.                                 if($(mainParent).find('input.cb-value').is(':checked')) {
  490.                                     $(mainParent).addClass('active');
  491.                                     window.nodeImportance = 'global';
  492.                                     Graph(document.getElementById('graph')).d3Force('collide', d3.forceCollide(radius)).d3Force("link", d3.forceLink().distance(d => 100));
  493.                                 } else {
  494.                                     $(mainParent).removeClass('active');
  495.                                     window.nodeImportance = 'local';
  496.                                     Graph(document.getElementById('graph')).d3Force('collide', d3.forceCollide(radius)).d3Force("link", d3.forceLink().distance(d => 100));
  497.                                 }
  498.                             })
  499.                             window.highlighted = new Array();
  500.                             window.hidden = new Array();
  501.                             function loadSubjects(){
  502.                                 ids = new Array();
  503.                                 $(data.nodes).each(function(k,v){
  504.                                     ids.push(v.id);
  505.                                 });
  506.                                 $.post("/subject.php",{'data':ids},function(data){
  507.                                     data = JSON.parse(data);
  508.                                     var keys = Object.keys(data);
  509.                                     keys = keys.sort(function(y,x){
  510.                                         x = data[x].count;
  511.                                         y = data[y].count;
  512.                                         if (x < y) {
  513.                                             return -1;
  514.                                         }
  515.                                         if (x > y) {
  516.                                             return 1;
  517.                                         }
  518.                                         return 0;
  519.                                     });
  520.                                     data2 = new Array();
  521.                                     $(keys).each(function(k,v){
  522.                                         data2.push(data[v]);
  523.                                     });
  524.                                     window.subjects = data2;
  525.                                     var c = 0;
  526.                                     $(subjects).each(function(k,v){
  527.                                         $('<li class="subjectHighlight" onclick="highlightSubjects(\''+k+'\')" onmouseover="highlightSubjects(\''+k+'\')" data-entry="'+k+'">'+v['title']+'</li>').appendTo($('#subjects'));
  528.                                         c+=1;
  529.                                         if(c > 10)
  530.                                         {
  531.                                             return false;
  532.                                         }
  533.                                     });
  534.                                     /*console.log(data);
  535.                                     data.sort(function(a,b){
  536.                                         return a.count > b.count ? 1 : -1;
  537.                                     });
  538.                                     console.log(data);*/
  539.                                 });
  540.                             }
  541.                             function highlightSubjects(s)
  542.                             {
  543.                                 window.highlighted = subjects[s].nodes;
  544.                             }
  545.                             function highlightNode2(n)
  546.                             {
  547.                                 if(n)
  548.                                 {
  549.                                     window.highlighted = [n.id];
  550.                                     $('[data-entry]').removeClass('selected');
  551.                                     $('[data-entry="'+n.case_id+'"]').addClass('selected');
  552.                                 }
  553.                             }
  554.                             function highlightNode(n)
  555.                             {
  556.                                 //find node ids to caption
  557.                                 window.highlighted = new Array();
  558.                                 $.each(data.nodes, function(k,v){
  559.                                     if(v.case_id == n)
  560.                                     {
  561.                                         window.highlighted.push(v.id);
  562.                                     }
  563.                                 });
  564.                             }
  565.                             function slide(d)
  566.                             {
  567.                                 vals = $('.original').val().split(',');
  568.                                 date_min = vals[0];
  569.                                 date_max = vals[1];
  570.                                 minSelDate = window.dates[(window.dates.length-1)/100*date_min];
  571.                                 maxSelDate = window.dates[(window.dates.length-1)/100*date_max];
  572.                                 date_max = window.dates[ (Math.floor ((window.dates.length-1)/100*date_max))];
  573.                                 date_min = window.dates[(Math.floor ((window.dates.length-1)/100*date_min))];
  574.                                 window.hidden = new Array();
  575.                                 //UPDATE DATE FILTER
  576.                                 $(data.nodes).each(function(k,v){
  577.                                     console.log(date_min + " " + date_max + " " + v.dat);
  578.                                     if(v.dat < date_min || v.dat > date_max)
  579.                                     {
  580.                                         window.hidden.push(v.id);
  581.                                     }
  582.                                 });
  583.                                 date_min = new Date(date_min);
  584.                                 date_max = new Date(date_max);
  585.                                 function fz(d)
  586.                                 {
  587.                                     d = ""+d;
  588.                                     if(d == "001")
  589.                                         return "01";
  590.                                     if(d.length == 1)
  591.                                     {
  592.                                         return "0" + d;
  593.                                     }
  594.                                     return d;
  595.                                 }
  596.                                 txt = moment.unix(date_min).format("DD/MM/YYYY") + " - " + moment.unix(date_max).format("DD/MM/YYYY");
  597.                                 $('#datefield').text(txt);
  598.                             }
  599.                             function filterCountry(c)
  600.                             {
  601.                                 highlighted = new Array();
  602.                                 if(c == "ALL")
  603.                                     return;
  604.                                 $(data.nodes).each(function(k,v){
  605.                                     if((v.ecli && v.ecli.indexOf(c) > -1) || v.country && v.country.indexOf(c) > -1)
  606.                                     {
  607.                                         highlighted.push(v.id);
  608.                                     }
  609.                                 });
  610.                             }
  611.                             function setSidebar(d)
  612.                             {
  613.                                 $('.overlay1').show();
  614.                                 date = "<br/><input style='width: 300px' onmousemove='slide' oninput='slide' onchange='slide' type=\"range\" multiple value=\"0,100\" /><br/><span id='datefield'></span>";
  615.                                 $('#sidebar').html("<b style='font-weight: bold'><ion-icon style='position:relative; top: 2px; color: white; font-size: 16px' name=\"quote\"></ion-icon> Citated case law  </b><br/><ul id='sidebarlist' style='text-align: left; padding-left: 0px; font-size: 12px; margin-left: 16px'></ul>");
  616.                                 $("<div class=\"overlay1\" style=\"cursor: pointer; color: white; display: block; width:320px; height: 400px; ; text-align: left;\">\n" +
  617.                                     "                            <div style=\"display: block; font-weight: bold; margin-top: 30px;\"><ion-icon name=\"pricetags\" style=\"font-size: 16px; position:relative;top:3px\"></ion-icon> Subject matter</div>\n" +
  618.                                     "                            <ul id=\"subjects\" style=\"font-size: 12px; margin-left: 16px\">\n" +
  619.                                     "\n" +
  620.                                     "                            </ul><div style=\"display: block; font-weight: bold; margin-top: 30px;\"><ion-icon style=\"font-size: 16px; position:relative;top:3px\" name=\"calendar\"></ion-icon> Date </div>"+date+"\n\n<div style=\"display: block; font-weight: bold; margin-top: 30px;\"><ion-icon style=\"font-size: 16px; position:relative;top:3px\" name=\"pin\"></ion-icon> Jurisdiction </div><div style='font-size: 14px; margin-left: 16px;'><span onmouseenter=\"filterCountry('EU')\"><a target='_blank' style='color: white' href='https://e-justice.europa.eu/content_eu_case_law-12-en.do'>EU</a></span> | <span  style='color: white' onmouseenter=\"filterCountry('AT')\"><a target='_blank'  style='color: white'  href='https://e-justice.europa.eu/content_judicial_systems_in_member_states-16-at-en.do?member=1'>AT</a></span> | <span target='_blank'  style='color: white'  onmouseenter=\"filterCountry('DE')\"><a  style='color: white' target='_blank' href='https://e-justice.europa.eu/content_judicial_systems_in_member_states-16-de-en.do?member=1'>DE</a></span> | <span  style='color: white' target='_blank' onmouseenter=\"filterCountry('NL')\"><a  style='color: white'  href='https://e-justice.europa.eu/content_judicial_systems_in_member_states-16-nl-en.do?member=1 '>NL</a></span> </div> \n\n" +
  621.                                     "                        </div>").appendTo($('#sidebar'));
  622.                                 function nz(d)
  623.                                 {
  624.                                     if(isNaN(d))
  625.                                     {
  626.                                         return 0;
  627.                                     }
  628.                                     return d;
  629.                                 }
  630.                                 $.each(d['judikat'],function(k,v){
  631.                                     v[0] = v[0].replace(" ","");
  632.                                     d['judikat'][k][0] = d['judikat'][k][0].replace(" ","").trim();
  633.                                     addData = "&nbsp;&nbsp;";
  634.                                     $(data.nodes).each(function(k2,v2){
  635.                                         console.log(v2.case_id + " " + v[0]);
  636.                                         if(v2.case_id.replace(" ","") == v[0].replace(" ","") || v2.ecli == v[0] || "C-"+v2.case_id == v[0])
  637.                                         {
  638.                                            ecli = "";
  639.                                            if(v2.ecli)
  640.                                            {
  641.                                                ecli = v2.ecli.split(":")[1];
  642.                                            } else {
  643.                                                if(v2.country)
  644.                                                {
  645.                                                 ecli = v2.country;
  646.                                                } else {
  647.                                                    //TODO AT
  648.                                                    ecli = "";
  649.                                                    v2.country = "";
  650.                                                }
  651.                                            }
  652.                                            if(ecli != "" || v2.dat)
  653.                                            {
  654.                                             addData = " <div style=\"display: inline-block; width:30px\"><!--<ion-icon style='position:relative; top: 2px; color: white' name=\"pin\"></ion-icon> -->" + ecli + "</div> <div style=\"display: inline-block; width:30px\"><!--<ion-icon style='position:relative; top: 2px; color: white' name=\"arrow-dropleft\"></ion-icon>--> [ " + nz(Math.floor(v2.weight*10)+1) + " </div> <div style=\"display: inline-block; width:30px\"><!--<ion-icon style='position:relative; top: 2px; color: white' name=\"arrow-dropright\"></ion-icon>--> " + nz(Math.floor(v2.outs*10)) + " ]</div>";
  655.                                            }
  656.                                         }
  657.                                     });
  658.                                     if(!nodeCache[v[0]])
  659.                                     {
  660.                                         $('<li onclick="showMetadata2(\''+v[0]+'\')" onmouseover="highlightNode(\''+v[0]+'\')" data-entry="'+v[0]+'"><div style="display: inline-block; width:160px; font-weight: bold;">'+v[0]+'</div>'+addData+'</li>').appendTo($('#sidebarlist'));
  661.                                         nodeCache[v[0]] = 1;
  662.                                     }
  663.                                 });
  664.                                 addData = $("<br/><ion-icon style='position:relative; top: -15px; left: 200px; color: white' name=\"log-in\"></ion-icon><ion-icon style='position:relative; top: -15px; color: white; left: 215px' name=\"log-out\"></ion-icon>").appendTo($('#sidebarlist'));
  665.                                 (function() {
  666.                                     "use strict";
  667.                                     var supportsMultiple = self.HTMLInputElement && "valueLow" in HTMLInputElement.prototype;
  668.                                     var descriptor = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, "value");
  669.                                     var multirange = function(input) {
  670.                                         if (supportsMultiple || input.classList.contains("multirange")) {
  671.                                             return;
  672.                                         }
  673.                                         var value = input.getAttribute("value");
  674.                                         var values = value === null ? [] : value.split(",");
  675.                                         var min = +(input.min || 0);
  676.                                         var max = +(input.max || 100);
  677.                                         var ghost = input.cloneNode();
  678.                                         input.classList.add("multirange", "original");
  679.                                         ghost.classList.add("multirange", "ghost");
  680.                                         input.value = values[0] || min + (max - min) / 2;
  681.                                         ghost.value = values[1] || min + (max - min) / 2;
  682.                                         input.parentNode.insertBefore(ghost, input.nextSibling);
  683.                                         Object.defineProperty(input, "originalValue", descriptor.get ? descriptor : {
  684.                                             // Fuck you Safari >:(
  685.                                             get: function() { return this.value; },
  686.                                             set: function(v) { this.value = v; }
  687.                                         });
  688.                                         Object.defineProperties(input, {
  689.                                             valueLow: {
  690.                                                 get: function() { return Math.min(this.originalValue, ghost.value); },
  691.                                                 set: function(v) { this.originalValue = v; },
  692.                                                 enumerable: true
  693.                                             },
  694.                                             valueHigh: {
  695.                                                 get: function() { return Math.max(this.originalValue, ghost.value); },
  696.                                                 set: function(v) { ghost.value = v; },
  697.                                                 enumerable: true
  698.                                             }
  699.                                         });
  700.                                         if (descriptor.get) {
  701.                                             // Again, fuck you Safari
  702.                                             Object.defineProperty(input, "value", {
  703.                                                 get: function() { return this.valueLow + "," + this.valueHigh; },
  704.                                                 set: function(v) {
  705.                                                     var values = v.split(",");
  706.                                                     this.valueLow = values[0];
  707.                                                     this.valueHigh = values[1];
  708.                                                     update();
  709.                                                 },
  710.                                                 enumerable: true
  711.                                             });
  712.                                         }
  713.                                         if (typeof input.oninput === "function") {
  714.                                             ghost.oninput = input.oninput.bind(input);
  715.                                         }
  716.                                         function update() {
  717.                                             ghost.style.setProperty("--low", 100 * ((input.valueLow - min) / (max - min)) + 1 + "%");
  718.                                             ghost.style.setProperty("--high", 100 * ((input.valueHigh - min) / (max - min)) - 1 + "%");
  719.                                         }
  720.                                         input.addEventListener("input", update);
  721.                                         ghost.addEventListener("input", update);
  722.                                         update();
  723.                                     }
  724.                                     multirange.init = function() {
  725.                                         [].slice.call(document.querySelectorAll("input[type=range][multiple]:not(.multirange)")).forEach(multirange);
  726.                                     }
  727.                                     if (typeof module === "undefined") {
  728.                                         self.multirange = multirange;
  729.                                         if (document.readyState == "loading") {
  730.                                             document.addEventListener("DOMContentLoaded", multirange.init);
  731.                                         }
  732.                                         else {
  733.                                             multirange.init();
  734.                                         }
  735.                                     } else {
  736.                                         module.exports = multirange;
  737.                                     }
  738.                                 })();
  739.                                 $('.ghost, .original, .multirange').unbind("input");
  740.                                 $('.ghost, .original, .multirange').unbind("change");
  741.                                 $('.ghost, .original, .multirange').bind('input',function(d){
  742.                                     slide();
  743.                                 });
  744.                                 $('.ghost, .original, .multirange').bind('change',function(d){
  745.                                     slide();
  746.                                 });
  747.                                 $('.ghost, .original').css('background-color','#191919');
  748.                             }
  749.                             var $idown;  // Keep it outside of the function, so it's initialized once.
  750.                             downloadURL = function(url) {
  751.                                 if ($idown) {
  752.                                     $idown.attr('src',url);
  753.                                 } else {
  754.                                     $idown = $('<iframe>', { id:'idown', src:url }).hide().appendTo('body');
  755.                                 }
  756.                             }
  757.                             function download()
  758.                             {
  759.                                 $('#modal2').iziModal('open');
  760.                                 setTimeout(function(){
  761.                                     var req = new XMLHttpRequest();
  762.                                     req.open("GET", "/processed/" + window.ff + ".pdf", true);
  763.                                     req.responseType = "blob";
  764.                                     req.onload = function (event) {
  765.                                         var blob = req.response;
  766.                                         console.log(blob.size);
  767.                                         var link=document.createElement('a');
  768.                                         link.href=window.URL.createObjectURL(blob);
  769.                                         link.download="PDF_Convolute.pdf";
  770.                                         link.click();
  771.                                     };
  772.                                     req.send();
  773.                                     $('#modal2').iziModal('close');
  774.                                 },1000)
  775.                             }
  776.                             function showMetadata(nodeid)
  777.                             {
  778.                                 $.get("/metadata/" + nodeid,function(data){
  779.                                     data = data[0];
  780.                                     window.metadata = data[0];
  781.                                     String.prototype.replaceAll = function(search, replacement) {
  782.                                         var target = this;
  783.                                         return target.replace(new RegExp(search, 'g'), replacement);
  784.                                     };
  785.                                     html = "<b style='font-weight: bold'>Case law data </b><a target='_blank' href='"+data.htmlLink.replace("TXT/HTML/","TXT/")+"'><ion-icon style='color: white' name='open'  title='Open in EUR-Lex'></ion-icon></a><br/><br/>";
  786.                                     if(data.htmlLink)
  787.                                     {
  788.                                         //html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:normal; color: white !important;'><a style='color: white !important;' target=\"_blank\" href=\""+data.htmlLink.replace("TXT/HTML/","TXT/")+"\">Open document in new Tab <br/></a></b><br/></li>";
  789.                                     }
  790.                                     if(data.case_id != data.ecli)
  791.                                     {
  792.                                     html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>Case: </b><span style='font-size: 12px; font-weight: normal'>" + data.caseId + "</span></li>";
  793.                                     }
  794.                                     if(data.celexNumber.indexOf("ECLI") == -1 && data.celexNumber != data.case_id)
  795.                                         html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>CELEX: </b><span style='font-size: 12px; font-weight: normal'>" + data.celexNumber + "</span></li>";
  796.                                     if(data.ecli)
  797.                                         html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>ECLI: </b><span style='font-size: 12px; font-weight: normal'>" + data.ecli + "</span></li>";
  798.                                     if(data.meta.dateofdocument)
  799.                                     {
  800.                                         html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>Document date </b><span style='font-size: 12px; font-weight: normal'>" + data.meta.dateofdocument  + "</span></li>";
  801.                                     }
  802.                                     html += "<li style='line-height: 16px; margin-bottom: 5px;' title=\""+data.cid+"\"><b style='font-weight:bold'>Title: </b><span style='font-size: 12px; font-weight: normal'>" + cut(data.cid) + "</span></li>";
  803.                                     if(data.meta.nationalcourt)
  804.                                     {
  805.                                         html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>National court </b><span style='font-size: 12px; font-weight: normal'>" + cut(data.meta.nationalcourt,50)  + "</span></li>";
  806.                                     }
  807.                                     if(data.meta.eurovocdescriptor)
  808.                                     {
  809.                                         html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>EUROVOC: </b><span style='font-size: 12px; font-weight: normal'>" + data.meta.eurovocdescriptor  + "</span></li>";
  810.                                     }
  811.                                     if(data.meta.author)
  812.                                     {
  813.                                         html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>Author: </b><span style='font-size: 12px; font-weight: normal'>" + data.meta.author  + "</span></li>";
  814.                                     }
  815.                                     /*if(data.meta.authenticlanguage)
  816.                                     {
  817.                                         html += "<li style='line-height: 16px; margin-bottom: 5px;'><b style='font-weight:bold'>Language: </b><span style='font-size: 12px; font-weight: normal'>" + data.meta.authenticlanguage  + "</span></li>";
  818.                                     }*/
  819.                                     if(data.meta.subjectmatter)
  820.                                     {
  821.                                         s = data.meta.subjectmatter.replaceAll('search.html','https://eur-lex.europa.eu/search.html').replaceAll('href','target="_blank" style="color: white; padding-left: 10px; font-size: 12px; list-style-type: circle;" href').replaceAll('\./https','https');
  822.                                         html += "<b style='font-weight:bold'>Subject matter </b><li style='color: white !important;'>"+s+"</li>";
  823.                                     }
  824.                                     $('.metadatas').html(html);
  825.                                     $('.overlay1meta').show();
  826.                                 });
  827.                             }
  828.                             function showMetadata2(n)
  829.                             {
  830.                                 $.each(data.nodes, function(k,v){
  831.                                     if(v.case_id == n)
  832.                                     {
  833.                                         showMetadata(v.id);
  834.                                     }
  835.                                 });
  836.                             }
  837.                             function linkCo(d)
  838.                             {
  839.                                 return '#7ed4dd';
  840.                             }
  841.                             function lw(d)
  842.                             {
  843.                                 return 1;
  844.                             }
  845.                             function curve(g)
  846.                             {
  847.                                 return 0;
  848.                             }
  849.                             function nval(g)
  850.                             {
  851.                                 if(g.id == 999999999)
  852.                                 {
  853.                                     return 120;
  854.                                 }
  855.                                 return 60;
  856.                             }
  857.                             function cut(s,l=80)
  858.                             {
  859.                                 return s.substring(0,l) + "...";
  860.                             }
  861.                             Array.prototype.unique = function() {
  862.                                 return this.filter(function (value, index, self) {
  863.                                     return self.indexOf(value) === index;
  864.                                 });
  865.                             }
  866.                             window.dates = new Array();
  867.                             function initGraph(data)
  868.                             {
  869.                                 data2 = data;
  870.                                 window.img = new Image();
  871.                                 img.src = './img/blue.png';
  872.                                 window.img2 = new Image();
  873.                                 img2.src = './img/red.png';
  874.                                 window.img3 = new Image();
  875.                                 img3.src = './img/pdf-red.svg';
  876.                                 imgs = [img];
  877.                                 $.post('/data.php',{'data':data},function(data){
  878.                                     data = JSON.parse(data);
  879.                                     window.data = data;
  880.                                     $(data.nodes).each(function(k,v){
  881.                                         data.nodes[k].dat = moment(v.dat, "DD/MM/YYYY").unix();
  882.                                         if(data.nodes[k].dat)
  883.                                             window.dates.push(data.nodes[k].dat);
  884.                                         else
  885.                                             data.nodes[k].dat = Date.parse('01/01/1950')
  886.                                             window.dates.push(data.nodes[k].dat);
  887.                                     });
  888.                                     setSidebar(data2);
  889.                                     window.dates.push(moment('01/01/1950', "DD/MM/YYYY").unix());
  890.                                     window.dates = window.dates.unique();
  891.                                     function sortNumber(a, b) {
  892.                                         return a - b;
  893.                                     }
  894.                                     window.dates = window.dates.sort(sortNumber);
  895.                                     window.minDate = window.dates[0];
  896.                                     window.maxDate = window.dates[window.dates.length-1];
  897.                                     loadSubjects();
  898.                                    window.Graph = ForceGraph()
  899.                                     (document.getElementById('graph'))
  900.                                       .backgroundColor('#252828').onNodeHover(node => highlightNode2(node)).onNodeClick(node => showMetadata(node.id))/*.onNodeHover(node => elem.style.cursor = node ? 'pointer' : null).*/.graphData(data).linkWidth(lw).nodeVal(nval).linkColor(linkCo).linkDirectionalParticles(2).linkCurvature(curve).nodeId('id')./*nodeLabel('id').*/nodeCanvasObject((node, ctx, globalScale) => {
  901.                                             const label = node.case_id;
  902.                                             const fontSize = 10/globalScale;
  903.                                             ctx.font = `${fontSize}px Sans-Serif`;
  904.                                             const textWidth = ctx.measureText(label).width;
  905.                                             const bckgDimensions = [textWidth, fontSize].map(n => n + fontSize * 0.2); // some padding
  906.                                             ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
  907.                                             //ctx.fillRect(node.x - bckgDimensions[0] / 2, node.y - bckgDimensions[1] / 2, ...bckgDimensions);
  908.                                             ctx.textAlign = 'center';
  909.                                             ctx.textBaseline = 'middle';
  910.                                           if(label == "PDF")
  911.                                               {
  912.                                                    ctx.fillStyle = 'rgba(210, 96, 83,1 )';
  913.                                                  ctx.beginPath();
  914.                                                  ctx.arc(node.x , node.y , 50, 0, 2 * Math.PI);
  915.                                                   ctx.lineWidth=5;
  916.                                                   ctx.strokeStyle="rgba(210, 96, 83, 1)";
  917.                                                   ctx.stroke();
  918.                                                   ctx.beginPath();
  919.                                                   //ctx.fill();
  920.                                                   ctx.fillStyle = 'rgba(37, 40, 40, 1)';
  921.                                                   ctx.arc(node.x , node.y , 49, 0, 2 * Math.PI);
  922.                                                   ctx.fill();
  923.                                                   window.canvas = ctx;
  924.                                               ctx.drawImage(window.img3, node.x - 96/4, node.y - 115/4, 96/2, 115/2);
  925.                                                   //ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
  926.                                                   //ctx.fillText(label, node.x, node.y);
  927.                                           } else {
  928.                                               if(node.level == 0)
  929.                                               {
  930.                                                   ctx.fillStyle = 'rgba(126, 212, 221, 1)';
  931.                                               } else {
  932.                                                   ctx.fillStyle = 'rgba(126, 212, 221, 0.5)';
  933.                                               }
  934.                                               if(window.highlighted.indexOf(node.id) > -1)
  935.                                               {
  936.                                                   ctx.fillStyle = 'rgba(210, 96, 83, 0.8)';
  937.                                               }
  938.                                               if(window.hidden.indexOf(node.id) > -1)
  939.                                               {
  940.                                                   ctx.fillStyle = 'rgba(126, 212, 221, 0.1)';
  941.                                               }
  942.                                               ctx.beginPath();
  943.                                               if(window.nodeImportance == 'local')
  944.                                               {
  945.                                                     ctx.arc(node.x , node.y , 15  *node.size, 0, 2 * Math.PI);
  946.                                               } else {
  947.                                                   ctx.arc(node.x , node.y , 15  *node.weight, 0, 2 * Math.PI);
  948.                                               }
  949.                                               ctx.fill();
  950.                                               //ctx.drawImage(window.img, node.x - 20, node.y - 20, 40, 40);
  951.                                               ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
  952.                                               ctx.font = "bold 12pt Arial";
  953.                                               ctx.fillText(label, node.x, node.y);
  954.                                           }
  955.                                         });
  956.                                     ;
  957.                                     $('#graph').css('display','block');
  958.                                     window.nodeImportance = 'local';
  959.                                     function radius(e)
  960.                                     {
  961.                                         if(e.id == 999999999)
  962.                                         {
  963.                                             return Graph.nodeRelSize()*25*1;
  964.                                         }
  965.                                         if(window.nodeImportance == 'local')
  966.                                         {
  967.                                             return Graph.nodeRelSize()*6.5*e.size;
  968.                                         } else {
  969.                                             return Graph.nodeRelSize()*6.5*e.weight;
  970.                                         }
  971.                                     }
  972.                                     Graph(document.getElementById('graph')).d3Force('collide', d3.forceCollide(radius)).d3Force("link", d3.forceLink().distance(d => 100));
  973.                                 });
  974.                             }
  975.                         </script>
  976.                         <div ondragenter="dragged(event)"  id="leretoframe_wrapper" style="display: none; color: #7ed4dd; background-color: rgb(37,40,40); width: 100%; height: 100%; margin-left: 100px; text-align: center;"><br/><br/><br/><br/><br/><br/><br/><br/> <br/><br/><br/><img src='https://tool.lereto.at/pdf-gray.svg' style='width: 100px; margin-left: auto; margin-right: auto;'/><br/><br/>Drop PDF here</div>
  977. <!--                        <iframe  id="leretoframe" src="https://tool.lereto.at/smartfiles" style="background-color: rgb(37,40,40); width: 100%; height: 100%; margin-left: 100px"></iframe>-->
  978.                         <div  id="leretoframe" style="margin-left: 50px;margin-top:100px;text-align:center; color: white"><h1>UNDER CONSTRUCTION</h1><br/><br/> We are currently working on an upgrade of Smartfiles Network. <br/><br/>Stay tuned and check out our video clip: <br/><br/><iframe width="640" height="360" src="https://www.youtube.com/embed/ZM2Xwjzb3yw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>
  979.                         <script>
  980.                             function dragged(event)
  981.                             {
  982.                                 window.ff = window.f;
  983.                             }
  984.                             function dragend()
  985.                             {
  986.                                 if(window.ff)
  987.                                 {
  988.                                     if(window.ff != 1 && window.ff != 2 && window.ff != 3)
  989.                                     {
  990.                                         $('.downloadoverlay').remove();
  991.                                     }
  992.                                     $.get("/"+window.ff+".php",function(data){
  993.                                         window.frames[0].postMessage(data,"*");
  994.                                     });
  995.                                 }
  996.                             }
  997.                             document.addEventListener("drop", function( event ) {
  998.                                 // prevent default action (open as link for some elements)
  999.                                 event.preventDefault();
  1000.                             }, false);
  1001.                             window.onresize = function(){
  1002.                                 $('#leretoframe').css('width',(jQuery(window).width()-400) + "px");
  1003.                             }
  1004.                             setTimeout(function(){
  1005.                                 $('#leretoframe').css('width',(jQuery(window).width()-400) + "px");
  1006.                             },1000);
  1007.                             window.onresize = function(){
  1008.                                 $('#leretoframe_wrapper').css('width',(jQuery(window).width()-400) + "px");
  1009.                             }
  1010.                             setTimeout(function(){
  1011.                                 $('#leretoframe_wrapper').css('width',(jQuery(window).width()-400) + "px");
  1012.                             },1000);
  1013.                         </script>
  1014.                         <!-- Background Effect End -->
  1015.                         <!-- Color Layer Start -->
  1016.                         <!-- Color Layer End -->
  1017.                         <!-- SVG Shape Start -->
  1018.                         <div class="side-shape-holder">
  1019.                             <svg class="main-side-shape-desktop" viewBox="0 0 100 600" style="enable-background:new 0 0 100 600;" preserveAspectRatio="none">
  1020.                                 <path id="main-side-path-desktop" class="main-side-path path-desktop" d="M0,0c0,0,28,21,28,44s-11,40-11,73s25,45,30,73s-29,53-29,85s64,36,64,80s-61,87-61,139c0,42,23,41,24,63c1.2,26-45,43-45,43V0z"/>
  1021.                             </svg>
  1022.                             <svg class="main-side-shape-mobile" viewBox="0 0 600 100" style="enable-background:new 0 0 600 100;" preserveAspectRatio="none">
  1023.                                 <path id="main-side-path-mobile" class="main-side-path path-mobile" d="M600,0c0,0-21,28-44,28s-40-11-73-11s-45,25-73,30s-53-29-85-29s-36,64-80,64s-87-61-139-61c-42,0-41,23-63,24C17,46.2,0,0,0,0H600z"/>
  1024.                             </svg>
  1025.                         </div>
  1026.                         <!-- SVG Shape End -->
  1027.                         <!-- Socials Start -->
  1028.                         <!-- Socials End -->
  1029.                         <!-- Credits Start -->
  1030.                         <!-- Credits Start -->
  1031.                     </div>
  1032.                     <!-- Main Section Media End -->
  1033.                 </div>
  1034.             </div>
  1035.         </div>
  1036.         <!-- Main Section Content End-->
  1037.     </div>
  1038.     <!-- Main Section End-->
  1039. </div>
  1040. <!-- Fullpage.js Sections End-->
  1041. <!-- Notify Me Popup Start -->
  1042. <div class="popup popup-light notify">
  1043.     <!-- Popup Content Wrapper Start -->
  1044.     <div class="popup_content">
  1045.         <!-- Close Button Start -->
  1046.         <a href="#0" id="notify-close" class="popup_close notify-close"></a>
  1047.         <!-- Close Button End -->
  1048.         <div class="container-fluid p-0 fullheight">
  1049.             <div class="row no-gutters justify-content-center fullheight">
  1050.                 <div class="col-12 col-xl-4 fullheight">
  1051.                     <!-- Notify Content Start -->
  1052.                     <div class="popup-wrapper">
  1053.                         <!-- Notify Title Start -->
  1054.                         <div class="popup-title">
  1055.                             <p class="title">Get to know about our launch</p>
  1056.                             <span class="divider"></span>
  1057.                             <p class="subtitle">Subscribe to our newsletter and we will send you a notification about the launch of our brand new site.</p>
  1058.                         </div>
  1059.                         <!-- Notify Title End -->
  1060.                         <!-- Notify Form Container Start -->
  1061.                         <div class="form-container">
  1062.                             <!-- Reply Messages Start-->
  1063.                             <div class="reply-group reply-dark subscription-ok">
  1064.                                 <i class="icon ion-ios-checkmark txt-accent-color"></i>
  1065.                                 <p class="reply-group__title">Done!</p>
  1066.                                 <span class="reply-group__text">Thanks for subscribing. We will send you a notification about the launch of our brand new website.</span>
  1067.                             </div>
  1068.                             <div class="reply-group reply-dark subscription-error">
  1069.                                 <i class="icon ion-sad txt-accent-color"></i>
  1070.                                 <p class="reply-group__title">Ooops!</p>
  1071.                                 <span class="reply-group__text">Something went wrong. Please try again later.</span>
  1072.                             </div>
  1073.                             <!-- Reply Messages End-->
  1074.                             <!-- Notify Contact Form Start-->
  1075.                             <form class="form form-dark notify-form">
  1076.                                 <input class="input" type="email" placeholder="Email Adress*" required>
  1077.                                 <span class="inputs-description">*Required fields</span>
  1078.                                 <button class="btn" type="submit">
  1079.                                     <span class="btn-caption">Send</span>
  1080.                                     <span class="icon ion-android-send"></span>
  1081.                                 </button>
  1082.                             </form>
  1083.                             <!-- Notify Contact Form End-->
  1084.                         </div>
  1085.                         <!-- Notify Form Container End -->
  1086.                     </div>
  1087.                     <!-- Notify Content End -->
  1088.                 </div>
  1089.             </div>
  1090.         </div>
  1091.     </div>
  1092.     <!-- Popup Content Wrapper End -->
  1093.     <div class="popup_background"></div>
  1094.     <!-- Popup Morphing Shape Start -->
  1095.     <div class="popup_shape">
  1096.         <svg class="popup-transition-shape" width="100%" height="100%" viewBox="0 0 1440 800" preserveAspectRatio="none">
  1097.             <path class="popup-morphing-path" d="M-22.4-87.7c-8.3,95.9,56.9,71.1,216.6,79c189.3,9.4,264.6-2.6,431.3-0.8c187.6,2,331.6-9.3,528.2-0.2c443.7,20.5,435.1-61.8,368.6-188.1C1455.9-324.1,34.5-746.7-22.4-87.7z"/>
  1098.         </svg>
  1099.     </div>
  1100.     <!-- Popup Morphing Shape End -->
  1101. </div>
  1102. <!-- Notify Me Popup End -->
  1103. <!-- Write-a-Line Popup Start -->
  1104. <div class="popup popup-light writealine">
  1105.     <!-- Popup Content Wrapper Start -->
  1106.     <div class="popup_content">
  1107.         <!-- Close Button Start -->
  1108.         <a href="#0" id="writealine-close" class="popup_close writealine-close"></a>
  1109.         <!-- Close Button End -->
  1110.         <div class="container-fluid p-0 fullheight">
  1111.             <div class="row no-gutters justify-content-center fullheight">
  1112.                 <div class="col-12 col-xl-4 fullheight">
  1113.                     <!-- Write-a-Line Content Start -->
  1114.                     <div class="popup-wrapper">
  1115.                         <!-- Write-a-Line Title Start -->
  1116.                         <div class="popup-title">
  1117.                             <p class="title">Just say "Hello!"</p>
  1118.                             <span class="divider"></span>
  1119.                             <p class="subtitle">Drop us a line and we will get back as soon as possible.</p>
  1120.                         </div>
  1121.                         <!-- Write-a-Line Title End -->
  1122.                         <!-- Write-a-Line Form Container Start -->
  1123.                         <div class="form-container">
  1124.                             <!-- Reply Group Start -->
  1125.                             <div class="reply-group reply-dark">
  1126.                                 <i class="icon ion-ios-checkmark"></i>
  1127.                                 <p class="reply-group__title"><span>Done</span>!</p>
  1128.                                 <span class="reply-group__text">Thanks for your message. We will get back as soon as possible.</span>
  1129.                             </div>
  1130.                             <!-- Reply Group End -->
  1131.                             <!-- Contact Form Start -->
  1132.                             <form class="form form-dark writealine-form" id="writealine-form">
  1133.                                 <!-- Hidden Required Fields -->
  1134.                                 <input type="hidden" name="project_name" value=" Coming Soon Template"> <!-- Put Your Project Name Here -->
  1135.                                 <input type="hidden" name="admin_email" value="support@mixdesign.club"> <!-- Put Your Email Here -->
  1136.                                 <input type="hidden" name="form_subject" value="Contact Form Message"> <!-- Put Your Email Subject Here -->
  1137.                                 <!-- END Hidden Required Fields-->
  1138.                                 <input type="text" name="Name" placeholder="Your Name*" required>
  1139.                                 <input type="email" name="E-mail" placeholder="Email Adress*">
  1140.                                 <textarea name="Message" placeholder="A Few Words*" required></textarea>
  1141.                                 <span class="inputs-description">*Required fields</span>
  1142.                                 <!-- Send Button Start -->
  1143.                                 <button class="btn">
  1144.                                     <span class="btn-caption">Send</span>
  1145.                                     <span class="icon ion-android-send"></span>
  1146.                                 </button>
  1147.                                 <!-- Send Button End -->
  1148.                             </form>
  1149.                             <!-- Contact Form End -->
  1150.                         </div>
  1151.                         <!-- Write-a-Line Form Container End -->
  1152.                     </div>
  1153.                     <!-- Write-a-Line Content End -->
  1154.                 </div>
  1155.             </div>
  1156.         </div>
  1157.     </div>
  1158.     <!-- Popup Content Wrapper End -->
  1159.     <div class="popup_background"></div>
  1160.     <!-- Popup Morphing Shape Start -->
  1161.     <div class="popup_shape">
  1162.         <svg class="popup-transition-shape" width="100%" height="100%" viewBox="0 0 1440 800" preserveAspectRatio="none">
  1163.             <path class="popup-morphing-path" d="M-22.4-87.7c-8.3,95.9,56.9,71.1,216.6,79c189.3,9.4,264.6-2.6,431.3-0.8c187.6,2,331.6-9.3,528.2-0.2c443.7,20.5,435.1-61.8,368.6-188.1C1455.9-324.1,34.5-746.7-22.4-87.7z"/>
  1164.         </svg>
  1165.     </div>
  1166.     <!-- Popup Morphing Shape End -->
  1167. </div>
  1168. <!-- Write-a-Line Popup End -->
  1169. <!-- Custom HTML End-->
  1170. <!-- Root element of PhotoSwipe. Must have class pswp. -->
  1171. <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
  1172.     <!-- Background of PhotoSwipe.
  1173.     It's a separate element, as animating opacity is faster than rgba(). -->
  1174.     <div class="pswp__bg"></div>
  1175.     <!-- Slides wrapper with overflow:hidden. -->
  1176.     <div class="pswp__scroll-wrap">
  1177.         <!-- Container that holds slides. PhotoSwipe keeps only 3 slides in DOM to save memory. -->
  1178.         <!-- don't modify these 3 pswp__item elements, data is added later on. -->
  1179.         <div class="pswp__container">
  1180.             <div class="pswp__item"></div>
  1181.             <div class="pswp__item"></div>
  1182.             <div class="pswp__item"></div>
  1183.         </div>
  1184.         <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
  1185.         <div class="pswp__ui pswp__ui--hidden">
  1186.             <div class="pswp__top-bar">
  1187.                 <!--  Controls are self-explanatory. Order can be changed. -->
  1188.                 <div class="pswp__counter"></div>
  1189.                 <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
  1190.                 <button class="pswp__button pswp__button--share" title="Share"></button>
  1191.                 <!-- <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>  -->
  1192.                 <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
  1193.                 <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
  1194.                 <!-- element will get class pswp__preloader--active when preloader is running -->
  1195.                 <div class="pswp__preloader">
  1196.                     <div class="pswp__preloader__icn">
  1197.                         <div class="pswp__preloader__cut">
  1198.                             <div class="pswp__preloader__donut"></div>
  1199.                         </div>
  1200.                     </div>
  1201.                 </div>
  1202.             </div>
  1203.             <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
  1204.                 <div class="pswp__share-tooltip"></div>
  1205.             </div>
  1206.             <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
  1207.             </button>
  1208.             <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
  1209.             </button>
  1210.             <div class="pswp__caption">
  1211.                 <div class="pswp__caption__center"></div>
  1212.             </div>
  1213.         </div>
  1214.     </div>
  1215. </div>
  1216. <!-- Load Scripts Start-->
  1217. <script src="js/libs.min.js"></script>
  1218. <script src="js/gallery-init.js"></script>
  1219. <script src="js/punchy-custom.js"></script>
  1220. <script src="https://cdnjs.cloudflare.com/ajax/libs/izimodal/1.5.1/js/iziModal.js"></script>
  1221. <script src="multirange.js"></script>
  1222. <script src="js/moment.js"></script>
  1223. <!-- Load Scripts End-->
  1224. <div id="modal" style="padding: 20px 20px 20px 20px"> <!-- data-iziModal-fullscreen="true"  data-iziModal-title="Welcome"  data-iziModal-subtitle="Subtitle"  data-iziModal-icon="icon-home" -->
  1225.     <h4>Share your case law research results</h4>
  1226.     <br/><br/>
  1227.     <span id="links">
  1228.         </span>
  1229. </div>
  1230. <div id="modal2" style="padding: 20px 20px 20px 20px; max-height:500px;height:500px;overflow: hidden"> <!-- data-iziModal-fullscreen="true"  data-iziModal-title="Welcome"  data-iziModal-subtitle="Subtitle"  data-iziModal-icon="icon-home" -->
  1231.     <h4>Preparing PDF convolute</h4>
  1232.     <div class="loader2" style="position: relative; z-index: 100000"> Loading...</div>
  1233.     <br/><br/><br/><br/>
  1234. </div>
  1235. <script>
  1236.     $(document).ready(function(){
  1237.         $("#modal").iziModal();
  1238.         $("#modal2").iziModal();
  1239.         setTimeout(function(){
  1240.             var url_string = window.location.href;
  1241.             var url = new URL(url_string);
  1242.             var c = url.searchParams.get("shareid");
  1243.             if(c)
  1244.             {
  1245.                 $.get("/getdata.php?md="+c,function(data){
  1246.                     window.frames[0].postMessage(data,"*");
  1247.                 });
  1248.             }
  1249.         },1000);
  1250.     });
  1251. </script>
  1252. </body>
  1253. </html>