It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://pvgis.com

  1.  
  2. <!-- Remove unecessary link and scripts -->
  3. <!DOCTYPE html>
  4. <html lang="1">
  5.  
  6. <head>
  7.  
  8.  <meta charset="UTF-8">
  9.    <title>PVGIS 5.3 SOLAR PANEL CALCULATOR</title>
  10.  <meta name="description" content="Easily calculate solar energy potential and visualize it with PVGIS mapping tool. Empower your solar projects with accurate data insights and precision.">
  11.  
  12.  
  13.  <meta name="robots" content="index,follow">
  14.  <meta name="viewport" content="width=1700, initial-scale=0, user-scalable=yes">
  15.  <link rel="canonical" href="https://pvgis.com">
  16.  <meta property="og:title" content="PVGIS 5.3 SOLAR PANEL CALCULATOR">
  17.  <meta property="og:description" content="Easily calculate solar energy potential and visualize it with PVGIS mapping tool. Empower your solar projects with accurate data insights and precision.">
  18.  <meta property="og:url" content="https://pvgis.com">
  19.  <meta property="og:type" content="website"><meta property="og:image" content="https://cdn.pvgis.com/images/logo.png" />
  20. <meta property="og:image:alt" content="Logo PVGIS" />
  21.  <!-- link -->
  22.  <link rel="apple-touch-icon" sizes="180x180" href="https://pvgis.com/public/assets/images/icon/apple-touch-icon.png">
  23.  <link rel="icon" type="image/png" sizes="32x32" href="https://pvgis.com/public/assets/images/icon/favicon-32x32.png">
  24.  <link rel="icon" type="image/png" sizes="16x16" href="https://pvgis.com/public/assets/images/icon/favicon-16x16.png">
  25.  <link rel="manifest" href="https://pvgis.com/public/assets/images/icon/site.webmanifest">
  26.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/jquery_ui.min.css?v=220120251321">
  27.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/normalize.min.css?v=220120251321">
  28.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/loader.css?v=220120251321">
  29.  <link rel="preload" as="style" onload="this.rel='stylesheet'" href="https://pvgis.com/public/assets/min-css/toastr.css?v=220120251321">
  30.  
  31.  
  32.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/bootstrap.min.css?v=220120251321">
  33.  <link rel="stylesheet" href="https://pvgis.com/public/assets/css/main.css?v=220120251321">
  34.  <link rel="preload" as="style" onload="this.rel='stylesheet'" href="https://cdn.pvgis.com/assets/css/webtools.europa.eu/webtools.theme-ec.css">
  35.  <link rel="preload" as="style" onload="this.rel='stylesheet'" href="https://cdn.pvgis.com/assets/css/bootstrap-icons/bootstrap-icons-1-11.css">
  36.  <link onload="this.rel='stylesheets'" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css">
  37.  <!-- <noscript>
  38.    <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/bootstrap.min.css?v=220120251321">
  39.    <link rel="stylesheet" href="https://pvgis.com/public/assets/css/main.css?v=220120251321">
  40.    <link rel="stylesheet" href="https://cdn.pvgis.com/assets/css/webtools.europa.eu/webtools.theme-ec.css">
  41.    <link rel="stylesheet" href="https://cdn.pvgis.com/assets/css/bootstrap-icons/bootstrap-icons-1-11.css">
  42.    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css">
  43.    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.0.0/css/flag-icons.min.css">
  44.  </noscript> -->
  45.  
  46.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/fonts.css?v=220120251321">
  47.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/width_grid.css?v=220120251321">
  48.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/cookieconsent.css?v=220120251321">
  49.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/header.css?v=220120251321">
  50.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/color.css?v=220120251321">
  51.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/account.css?v=220120251321">
  52.  <link rel="stylesheet" href="https://pvgis.com/public/assets/min-css/custom_radio_checkbox.css?v=220120251321">
  53.  
  54.  <link rel="stylesheet" href="https://pvgis.com/public/assets/css/map.css?v=220120251321">
  55.  
  56.  
  57.  
  58. <script>
  59.    window.env = {
  60.        UI_BASE_URL: "https://pvgis.com",
  61.        AUTH_API_URL: "https://auth.pvgis.com",
  62.        PVGIS_AUTH_API: "https://auth.pvgis.com",
  63.        BASE_URL: "https://api.pvgis.com",
  64.        TRANSLATION_API_URL: "https://ts.pvgis.com",
  65.        PRINT_URL: "https://print.pvgis.com/pvgis",
  66.        MAP_LAYER_URL: "https://gisco-services.ec.europa.eu/maps/tiles/OSMCartoBackground/EPSG3857/{z}/{x}/{y}.png",
  67.        LABEL_LAYER_URL: "https://gisco-services.ec.europa.eu/maps/tiles/OSMCartoLabels/EPSG3857/{z}/{x}/{y}.png",
  68.        SENTINEL_LAYER_URL: "https://tiles.maps.eox.at/",
  69.        SATELLITE_LAYER_URL: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
  70.        SOLAR_LAYER_URL: "https://re.jrc.ec.europa.eu/pvg_tiles/api5_2/{z}/{x}/{-y}.png",
  71.        ELEVATION_URL: "https://api.open-meteo.com/v1/elevation?",
  72.        GEOCODE_URL: "https://gisco-services.ec.europa.eu/api?lang=en&limit=1&q=",
  73.        GA_MEASUREMENT_ID: "G-7160PCEY5S",
  74.        KISS_2_PVGIS: "https://kiss2pvgis.com",
  75.        SOLAR_DROP_SHIPPING: "https://solardropshipping.com",
  76.        CMS_URL: "https://cms.pvgis.com/content-management-system",
  77.        CURRENT_CLIENT_IP: "3.237.223.94",
  78.        COUNTRY_LIST: "https://restcountries.com/v3.1/all",
  79.        PRODUCTION: true,
  80.        FILE_UPLOAD_URL: "https://fs.pvgis.com",
  81.        BROADCAST_URL: "https://bs.pvgis.com",
  82.        BP_BASE_URL: "https://bp.pvgis.com",
  83.        EXCHANGE_RATE_URL: "https://cs.pvgis.com",
  84.        LATEST_PVGIS_API_VERSION: "5.3",
  85.        MINIFY_CSS_JS: true,
  86.        CDN_URL: "https://cdn.pvgis.com",
  87.        SETTING_URL: "https://cfg.pvgis.com",
  88.        STRIPE_PUBLISHABLE_KEY: "pk_live_51Psh8RCNxPSZy3wjNk3YeGrTrJVP2vKEonxodiALZYaYhCbpukHxWITjoFqbaH5DxHhUx2ZuJNqRdFJzrwZH8eo800cpfHoWeG",
  89.        RESOURCE_VERSION: "220120251321",
  90.        GOOGLE_LABELS_LAYER_LINK: "https://mt1.google.com/vt/lyrs=h&x={x}&y={y}&z={zoom}",
  91.        GOOGLE_SATELLITE_LAYER_LINK: "https://khms2.google.com/kh/v=991?x={x}&y={y}&z={zoom}",
  92.        GOOGLE_MAPS_API_KEY: "AIzaSyBGwuAzneXJqwq8ZQ4oJFb9-crInpddy2E",
  93.        GOOGLE_STATIC_MAPS_URL: "https://maps.googleapis.com/maps/api/staticmap?center={lat},{lng}&zoom={zoom}&size={size}&maptype={mapTypeId}&markers=color:red%7Clabel:+%7C{markerLat},{markerLng}&key=AIzaSyBGwuAzneXJqwq8ZQ4oJFb9-crInpddy2E",
  94.        ENABLE_STATIC_RESULTS_MAP: "true" === "true",
  95.        GOOGLE_MAPS_MAP_ID: "e1b4b31e9c1e44e9"
  96.    };
  97.  
  98.  
  99.  
  100.    window.simulatorPvgisMeta = {
  101.        apiVersion: "5.3",
  102.        databases: "PVGIS-SARAH3,PVGIS-ERA5".split(',')
  103.    };
  104. </script>  <link rel="preload" as="style" onload="this.rel='stylesheet'" href='https://pvgis.com/public/assets//css/log_to_pdf_modal.css?v=220120251321' ><link rel="preload" as="style" onload="this.rel='stylesheet'" href='https://pvgis.com/public/assets//css/login.css?v=220120251321' ><link rel="preload" as="style" onload="this.rel='stylesheet'" href='https://pvgis.com/public/assets//css/register.css?v=220120251321' ><link rel="preload" as="style" onload="this.rel='stylesheet'" href='https://pvgis.com/public/assets//css/pdf_editor.css?v=220120251321' ><link rel="preload" as="style" onload="this.rel='stylesheet'" href='https://pvgis.com/public/assets//css/popup.css?v=220120251321' ><link rel="preload" as="style" onload="this.rel='stylesheet'" href='https://pvgis.com/public/assets//css/components/dropdown-select.css?v=220120251321' >
  105.  
  106.  <style>
  107.    body {min-width:1280px}  
  108.  </style>
  109.  
  110.  <link rel="preload" as="style" onload="this.rel='stylesheet'" href="https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.0.0/css/flag-icons.min.css">
  111.  <link rel="preload" as="style" onload="this.rel='stylesheet'" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
  112.  
  113.  <!-- end link -->
  114.  <!-- <script src="https://pvgis.com/public/assets/min-js/jquery.js?v=220120251321"></script> -->
  115.  <script>
  116.    window.customerSavedLanguage =window.customerSavedLanguage || "en";
  117.    window.cmsKey = "pvgis.homepage";
  118.    let isConnected = false;
  119.  
  120.    function isSafari() {
  121.      return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
  122.    }
  123.  
  124.    function isEpiphany() {
  125.      return /epiphany/i.test(navigator.userAgent);
  126.    }
  127.  
  128.    if(isSafari() || isSafari()) {
  129.      addCSSLinkDynamically("safari.css");
  130.    }
  131.  
  132.    function addCSSLinkDynamically(cssFile) {
  133.      let linkElem = document.createElement('link');
  134.      linkElem.rel = 'stylesheet';
  135.      linkElem.href = `https://pvgis.com/public/assets/min-css/${cssFile}?v=220120251321` ;
  136.      document.head.appendChild(linkElem);
  137.    }
  138.  </script>
  139. </head>
  140. <body>
  141.  
  142.    <div class="cssloader-container" style="overflow:hidden;width:100%;height:100%">
  143.  <div class="cssloader-speeding-wheel"></div>
  144.  <p>
  145.    <!-- <img width="285" height="44" src="http://ssdg.mu/wp-content/uploads/2021/08/cropped-logo-ssdg.mu_.png" alt="ssdg.mu"> -->
  146.    PVGIS.COM
  147.  </p>
  148.  <p id="custom-loader-text" class="custom-loader-text">
  149.    <span id="custom-loader-text-content" data-ts="pvgis.simulation.loading_simulation">Loading the simulation</span>
  150.    <span class="dots">
  151.      <span>.</span>
  152.      <span>.</span>
  153.      <span>.</span>
  154.    </span>
  155.  </p>
  156. </div>
  157.  
  158.    <div id="loadingPdf"></div>
  159.    <div class="main-content">
  160.  
  161.        <div class="header" id="header">
  162.    <div class="header-top">
  163.        <div class="container-fluid c-header">
  164.            <div class="menu-btn-container">
  165.                <button class="menu-btn" aria-label="humbergerMenu"><i class="fas fa-bars"></i></button>
  166.            </div>
  167.            <div class="logo-content">
  168.                <div class="logo-title"><a href="/" data-cms-link><img class="logo-internet" loading="lazy" width="300" height="45.8"
  169.                            src="/public/assets/images/icon/logo_internet_pvgis.com.png" alt="Logo PVGIS.COM"
  170.                            srcset=""></a></div>
  171.                <div>
  172.                    <p class="title-header" data-ts="pvgis.header_title">PHOTOVOLTAIC GEOGRAPHICAL INFORMATION SYSTEM
  173.                    </p>
  174.                </div>
  175.            </div>
  176.            <div class="h-top-right">
  177.                <div class="side-web-menu font-medium">
  178.                    <div class="google-analytics-info-container">
  179.                        <div class="google-analytics-info-content">
  180.                            <span class="text-uppercase" id="active-users-ga" style="white-space: nowrap;">83.977
  181.                                UTILISATEURS ACTIFS*</span>
  182.                        </div>
  183.                    </div>
  184.                    <div class="side-menu-item-lang">
  185.                        <!-- etoooo -->
  186.                        <span class="lang-label">
  187.                            <span class="custom-span lang-selected">en</span>
  188.                            <i class="fas fa-sort-down icon icon-select-lang"></i>
  189.                        </span>
  190.                        <div class="lang-popover">
  191.                            
  192.                        </div>
  193.                        <div class="more-lang-popover"></div>
  194.                    </div>
  195.                    <div class="account-menu-container account-menu-large">
  196.                        <!-- <span class="account account-menu-toggler" data-ts="pvgis.header.account_title">Account</span>
  197.                        <i class="fas fa-sort-down account-menu-toggler"></i> -->
  198.                        <!-- <span class="account account-menu-toggler" data-tstype="title" data-ts="pvgis.header.account_menu.title"><i class="fas fa-lock account-menu-toggler fa-xs"></i></span> -->
  199.                                                <a href="/register" class="btn btn-outline-light"
  200.                            data-ts="pvgis.header.account_menu.subscribe">Je m'abonne</a>&nbsp;&nbsp;
  201.                        <a href="/login" class="btn btn-outline-light"
  202.                            data-ts="pvgis.header.account_menu.login">login</a>
  203.                                                <!-- <div>
  204.                            <div class="account-menu">
  205.                                <div class="account-menu-title" data-ts="pvgis.header.account_title">Account</div>
  206.                                                                    <div><a href="/register" data-ts="pvgis.header.account_menu.registration">Registration</a></div>
  207.                                    <div class="clickable-div"><a href="/login" data-ts="pvgis.header.account_menu.login">Login</a></div>
  208.                                                            </div>
  209.                        </div> -->
  210.                    </div>
  211.                </div>
  212.            </div>
  213.            <!-- <h2 class="header-text-slug" data-ts="pvgis.header.slug">PVGIS.COM provides information on solar radiation and PV system performance for any location in the world</h2> -->
  214.        </div>
  215.    </div>
  216.    <div class="header-bottom">
  217.        <div class="h-nav-container font-bold">
  218.            <div class="container-fluid selected-nav-container">
  219.                <div class="seleted-nav" data-ts="pvgis.header.simulator"></div>
  220.                <div class="side-menu-item-lang">
  221.                    <!-- <div class="flag"><i class="fi fi-us"></i></div> -->
  222.                    <div class="selected-lang lang-selected">eng</div>
  223.                    <div class="lang-dropdown-btn"><i class="fas fa-sort-down"></i></div>
  224.                    <!-- <div class="lang-popover"></div> -->
  225.                </div>
  226.                <div class="account-menu-container">
  227.                    <!-- <span class="account account-menu-toggler" data-ts="pvgis.header.account_title">Account</span>
  228.                        <i class="fas fa-sort-down account-menu-toggler"></i> -->
  229.                    <span class="account account-menu-toggler" data-tstype="title"
  230.                        data-ts="pvgis.header.account_menu.title"><i
  231.                            class="fas fa-lock account-menu-toggler fa-xs"></i></span>
  232.                    <div>
  233.                        <div class="account-menu">
  234.                            <div class="account-menu-title" data-ts="pvgis.header.account_title">Account</div>
  235.                                                        <div class="clickable-div"><a href="/login"
  236.                                    data-ts="pvgis.header.account_menu.login">Login</a></div>
  237.                            <div><a href="/register" data-ts="pvgis.header.account_menu.registration">Registration</a>
  238.                            </div>
  239.                                                    </div>
  240.                    </div>
  241.                </div>
  242.            </div>
  243.            <nav class="container-fluid nav-web-menu">
  244.                <ul class="navigation-menu-container">
  245.                </ul>
  246.            </nav>
  247.        </div>
  248.    </div>
  249.    <div class="menu-mobile">
  250.        <div class="menu-mobile-container">
  251.            <div class="menu-m-header">
  252.                <div class="m-logo-container">
  253.                    <span>PVGIS</span>
  254.                    <button><i class="fas fa-times"></i></button>
  255.                </div>
  256.                <div class="m-title">
  257.                    PHOTOVOLTAIC GEOGRAPHICAL INFORMATION SYSTEM
  258.                </div>
  259.            </div>
  260.            <div class="menu-mobile-body">
  261.                <ul class="navigation-menu-container font-bold"></ul>
  262.                <div class="separate"></div>
  263.                <ul class="side-menu-container font-medium"></ul>
  264.            </div>
  265.        </div>
  266.    </div>
  267.  
  268.    <script>var customerIdToast = '';</script><div id="toast" class="toast-view-container">
  269.    <div class="toast-view">
  270.        <div class="toast-body">
  271.            <div class="toast-header">
  272.                <strong id="toast-title" data-ts="pvgis.toast.confirm_profile_information"> Confirm Profile Information </strong>
  273.                <!-- <button type="button" class="btn-close-toast" onclick="hideToast()">&times;</button>  -->
  274.            </div>
  275.            <span>
  276.                <p id="toast-message" data-ts="pvgis.toast.confirm_profile_information_message">Please Confirm some Profile Information before proceeding</p>
  277.            </span>
  278.        </div>
  279.        <div class="toast-footer" id="confirm-toast">
  280.            <button type="button" class="btn-confirm-toast" onclick="redirectToAccountInfo()">
  281.                <span data-ts="pvgis.toast.confirm">Confirm</span>
  282.            </button>
  283.        </div>
  284.    </div>
  285. </div>    <script src="https://pvgis.com/public/assets/min-js/toast/toast.js?v=220120251321">
  286.    </script>
  287.    <style>
  288.    /* .account-menu-container {
  289.            padding: 10px;
  290.            position: fixed;
  291.            bottom: 20px;
  292.            right: 20px;
  293.            z-index: 1000;
  294.            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  295.            border-radius: 8px;
  296.            background-color: rgb(0, 101, 162);
  297.            ;
  298.        } */
  299.    .account-menu-container .account-menu .clickable-div a {
  300.        display: block;
  301.    }
  302.  
  303.    .account-menu-container .account-menu .clickable-div {
  304.        cursor: pointer;
  305.    }
  306.  
  307.    /* .account.account-menu-toggler {
  308.            opacity: 0.7;
  309.        } */
  310.  
  311.    .btn.btn-warning {
  312.        background-color: #FED400 !important;
  313.        color: #174E88 !important;
  314.        padding-left: 10px !important;
  315.        padding-right: 10px !important;
  316.        border-radius: 10px !important;
  317.        border: none !important;
  318.        /* height: 28px; */
  319.    }
  320.    </style>
  321.  
  322.    
  323. </div>        <div class="banner-outer-container">
  324.    <div class="banner-inner-container">
  325.        <!-- <div class="banner-left-container"> -->
  326.            <!-- <span class="banner-highlight" data-ts="pvgis.banner.new">Nouveau</span>  -->
  327.            <!-- <span class="banner-title">PVGIS.COM</span> -->
  328.        <!-- </div> -->
  329.        <div class="banner-right-container ">
  330.            <span class="banner-text" data-ts="pvgis.banner.calculate_simulate_optimize">Calclulez, simulez et optimisez avec</span>
  331.            <a href="/solar-calculator" data-cms-link class="banner-banner-button" data-ts="pvgis.calculator.title">SOLAR CALCULATOR</a>
  332.        </div>
  333.    </div>
  334. </div>
  335.        <div class="modal fade simulator-content" id="modalSteps" role="dialog">
  336.            <div class="modal-dialog">
  337.                <div class="modal-content">
  338.  
  339.                </div>
  340.            </div>
  341.        </div>
  342.        <div id="stepsButton" class="stepsButton simulator-content" data-toggle="modal" data-target="#modalSteps">
  343.            <span class="text-uppercase"><strong data-ts="pvgis.simulator.quick_steps"></strong>&nbsp;&nbsp;<span class="stepsIcon"><i class="fas fa-bars"></i></span></span>
  344.        </div>
  345.  
  346.        <div style="padding-inline: 85px;max-width: 1400px;margin: 0 auto;margin-top:20px">
  347.            <h1 class="title" data-ts="pvgis.simulator.new_pvgis_current" data-tsVar='{"pvgisApiVersion": "5.3"}'>PVGIS 5.3 CALCULATEUR</h1>
  348.        </div>
  349.  
  350.        <div class="container-fluid simulator-content">
  351.            <!-- <h1 class="title" data-ts="pvgis.simulator.pvgis_current" data-tsVar='{"pvgisApiVersion": "5.3"}'>PVGIS 5.3 CALCULATEUR</h1> -->
  352.            <div class="main">
  353.                <div class="stepsSimulator">
  354.                    <div id="steps">
  355.                        <div id="steps-content">
  356.                            <div class="steps" id="accordeon">
  357.    <div class="titleSteps">
  358.        <h3 class="text-uppercase"><strong data-ts="pvgis.simulator.quick_steps">Quick steps</strong></h3>
  359.        <button type="button" class="close" data-dismiss="modal">
  360.            <strong><i class="fas fa-times fa-1x"></i></strong>
  361.        </button>
  362.    </div>
  363.    <h5><a role="button" class="stepsTitle collapse" data-toggle="collapse" data-parent="#accordeon" href="#solarsite" aria-expanded="true" aria-controls="solarsite"><span data-ts="pvgis.simulator.step_one_title">1 • Enter the address of the solar production site</span> <span class="toggle-icon"></span></a></h5>
  364.    <div id="solarsite" class="panel-collapse collapse in">
  365.        <p class="guide" data-ts="pvgis.simulator.step_one_consigne">Provide the following information</p>
  366.        <form class="form-group setps-form-container">
  367.            <div>
  368.                <div class="custom-select-steps" id="customSelect">
  369.                    <input type="text" aria-label="pays" data-tstype="placeholder" data-ts="pvgis.simulator.country" placeholder="Country" name="pays" id="pays" class="form-control" oninput="filterOptions()">
  370.                    <div class="dropdown-content-steps" id="dropdownContent"></div>
  371.                </div>
  372.                <div class="custom-select-steps" id="customCity">
  373.                    <input type="text" aria-label="ville" data-tstype="placeholder" data-ts="pvgis.simulator.city" placeholder="City" name="ville" id="ville" class="form-control" oninput="filterCity()">
  374.                    <div class="dropdown-content-steps" id="dropdownCity"></div>
  375.                </div>
  376.                <input type="text" aria-label="rue" data-tstype="placeholder" data-ts="pvgis.simulator.street" placeholder="Street" name="rue" id="rue" class="form-control">
  377.                <div class="addressButton">
  378.                    <input type="text" aria-label="numrue" data-tstype="placeholder" data-ts="pvgis.simulator.num_street" placeholder="Street number" name="numrue" id="numrue" class="form-control">
  379.                </div>
  380.            </div>
  381.            <button class="btn btn-primary" data-dismiss="modal" onclick="geocodeSteps()" type="button" data-ts="pvgis.simulator.go">Go!</button>
  382.        </form>
  383.    </div>
  384.    <hr>
  385.  
  386.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#zoom" aria-expanded="false" aria-controls="zoom"><span data-ts="pvgis.simulator.step_two_title">2 • Zoom in with + and - to control your GPS point</span> <span class="toggle-icon"></span></a></h5>
  387.    <div id="zoom" class="panel-collapse collapse">
  388.        <div class="stepsContent">
  389.            <div class="text-center btn-group-vertical">
  390.                <div>
  391.                    <button class="stepsInteraction" data-dismiss="modal" id="stepsIn" disabled><i class="fas fa-plus fa-lg"></i></button>
  392.                    <button class="stepsInteraction" data-dismiss="modal" id="stepsOut" disabled><i class="fas fa-minus fa-lg"></i></button>
  393.                </div>
  394.            </div>
  395.            <div class="px-10">
  396.                <p data-ts="pvgis.simulator.step_two_consigne">If the marker does not correspond to your solar production address, use an area approach, using the + and - on the map to geographically define your GPS point.</p>
  397.            </div>
  398.        </div>
  399.    </div>
  400.    <hr>
  401.  
  402.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#ol" aria-expanded="false" aria-controls="ol"><span data-ts="pvgis.simulator.step_three_title">3 • Solar Radiation</span> <span class="toggle-icon"></span></a></h5>
  403.    <div id="ol" class="panel-collapse collapse">
  404.        <p class="guide" data-ts="pvgis.simulator.step_three_guide">We advise you not to modify this color code.</p>
  405.        <div class="stepsContent">
  406.            <div class="text-center btn-group-vertical">
  407.                <div class="wide-button">
  408.                    <button class="wide-letter stepsInteraction" data-dismiss="modal" id="stepsOpacityButton" disabled>O</button>
  409.                    <button class="wide-letter stepsInteraction" data-dismiss="modal" id="stepsLegendButton" disabled>&nbsp;L</button>
  410.                </div>
  411.  
  412.            </div>
  413.            <div class="px-10">
  414.                <p data-ts="pvgis.simulator.step_three_consigne">O (Opacity) modifies the opacity of the map and the visualization of solar irradiance through a color gradient defined in L (Legend). Modifying opacity has no effect on productivity calculations.</p>
  415.            </div>
  416.        </div>
  417.        <div>
  418.            <input type="range" name="stepsopacity" id="stepsopacity" step="0.1" min="0" max="1" value="0.6" style="display: none;">
  419.            <p class="text-center"><img src="https://cdn.pvgis.com/images/loading-ps.svg" class="lazyLoad" data-src="https://cdn.pvgis.com/images/layers/legend_solar.png" alt="legend_solar" id="stepslegend" style="display: none; max-width: 220px; min-width:180px; width:100%"></p>
  420.        </div>
  421.    </div>
  422.    <hr>
  423.  
  424.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#shadows" aria-expanded="false" aria-controls="shadows"><span data-ts="pvgis.simulator.step_four_title">4 • Using terrain shadows</span> <span class="toggle-icon"></span></a></h5>
  425.    <div id="shadows" class="panel-collapse collapse shadows">
  426.        <p class="guide" data-ts="pvgis.simulator.step_four_guide">For a quick calculation we advise you to check calculated horizon</p>
  427.        <div>
  428.            <form class="form-group">
  429.                <p class="form-group-title"><b data-ts="pvgis.simulator.use_terrain_shadows">Use terrain shadows</b><b>:</b></p>
  430.                <p class="form-group-label"><input type="checkbox" aria-label="calculatedHorizon" name="stepscalculated" id="stepscalculated" checked> <label for="stepscalculated" data-ts="pvgis.simulator.calculated_horizon">Calculated horizon</label></p>
  431.                <p class="form-group-label"><input type="checkbox" aria-label="uploadHorizonFile" name="stepsupload" id="stepsupload"> <label for="stepsupload" data-ts="pvgis.simulator.upload_horizon_file">Upload horizon file</label></p>
  432.                <input type="file" name="horizonFileInput" id="stepshorizoninput" onchange="readFileAndSetHiddenValue('stepshorizoninput', 'cbhorizonFormattedInput', userhorizonFormatter)" style="display: none;">
  433.            </form>
  434.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepshorizoncontent" aria-expanded="false" aria-controls="stepshorizoncontent"> <span class="toggle-iconplus"></span></a></p>
  435.        </div>
  436.        <p id="stepshorizoncontent" class="panel-collapse collapse" data-ts="pvgis.simulator.step_four_consigne">The solar radiation and photovoltaic production will change if there are local hills or mountains that block sunlight during certain periods of the day. PVGIS can calculate the effect of this by using data on ground elevation with a resolution of 3 arc-seconds (approximately 90 meters).<br><br>This calculation does not take into account shadows from very close objects such as houses or trees. In this case, you can upload your own information about the horizon by checking the "Download horizon file" box in CSV or JSON format.</p>
  437.    </div>
  438.    <hr>
  439.  
  440.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#estimation" aria-expanded="false" aria-controls="estimation"><span data-ts="pvgis.simulator.step_five_title">5 • Type of solar production estimation for your site</span> <span class="toggle-icon"></span></a></h5>
  441.    <div id="estimation" class="panel-collapse collapse nav-stacked-container">
  442.        <p class="guide" data-ts="pvgis.simulator.step_five_guide">For a roof-mounted production site connected to the public grid, we recommend checking "connected to the grid."</p>
  443.        <!-- <img src="https://cdn.pvgis.com/images/loading-ps.svg" class="lazyLoad" data-src="https://cdn.pvgis.com/images/layers/grid.png" alt="grid-connected"> -->
  444.        <ul class="nav nav-tabs nav-stacked" id="tablist2">
  445.            <li class="liData tab-option active t_tool"><a data-toggle="tab" href="#grid-connected-tab" class="text-uppercase" data-ts="pvgis.simulator.grid_connected">grid connected</a></li>
  446.            <li class="liData tab-option t_tool"><a data-toggle="tab" href="#tracking-pv-tab" class="text-uppercase" data-ts="pvgis.simulator.tracking_pv">tracking pv</a></li>
  447.            <li class="liData tab-option t_tool"><a data-toggle="tab" href="#off-grid-tab" class="text-uppercase" data-ts="pvgis.simulator.off_grid">off-grid</a></li>
  448.            <li class="liData tab-option t_data"><a data-toggle="tab" href="#monthly-tab" class="text-uppercase" data-ts="pvgis.simulator.monthly_data">monthly data</a></li>
  449.            <li class="liData tab-option t_data"><a data-toggle="tab" href="#daily-tab" class="text-uppercase" data-ts="pvgis.simulator.daily_data">daily data</a></li>
  450.            <li class="liData tab-option t_data"><a data-toggle="tab" href="#hourly-tab" class="text-uppercase" data-ts="pvgis.simulator.hourly_data">hourly data</a></li>
  451.            <li class="liData tab-option t_tmy"><a data-toggle="tab" href="#tmy-tab" class="text-uppercase" data-ts="pvgis.simulator.tmy">tmy</a></li>
  452.        </ul>
  453.    </div>
  454.    <hr>
  455.  
  456.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#database" aria-expanded="false" aria-controls="database"><span data-ts="pvgis.simulator.step_six_title">6 • Solar Radiation Databases</span> <span class="toggle-icon"></span></a></h5>
  457.    <div id="database" class="panel-collapse collapse">
  458.        <p class="guide" data-ts="pvgis.simulator.step_six_guide">We recommend keeping the default database determined by PVGIS.</p>
  459.        <div>
  460.            <div>
  461.                <form class="form-group form-inline setps-form-container">
  462.                    <label for="stepsselectdbgridconnected"><span data-ts="pvgis.simulator.forms.solar_radiation_database">Solar radiation database</span><span class="text-danger">*</span></label>
  463.                    <select aria-label="selectDb" name="db" id="stepsselectdbgridconnected" class="duplicate-input-selectdb form-control text-uppercase sr-db">
  464.  
  465.                    </select>
  466.                </form>
  467.                <p class="text-right"><a role="button" data-toggle="collapse" href="#stepsdbcontent" aria-expanded="false" aria-controls="stepsdbcontent"> <span class="toggle-iconplus"></span></a></p>
  468.            </div>
  469.            <p id="stepsdbcontent" class="panel-collapse collapse" data-ts="pvgis.simulator.step_six_consigne">PPVGIS offers four different databases on solar radiation with hourly resolution. Currently, there are three satellite-based databases: <br><br> PVGIS-SARAH2 (0.05º x 0.05º): Produced by CM SAF to replace SARAH-1 (PVGIS-SARAH). It covers Europe, Africa, most of Asia, and some parts of South America. Time range: 2005-2020. <br><br> VGIS-SARAH (0.05º x 0.05º): Produced using the CM SAF algorithm. Similar coverage to SARAH-2. Time range: 2005-2016. PVGIS-SARAH will be discontinued by the end of 2022. <br><br> PVGIS-NSRDB (0.04º x 0.04º): Result of collaboration with NREL (USA), providing the NSRDB solar radiation database to PVGIS. Time range: 2005-2015. <br><br> In addition, there is a worldwide reanalysis database: <br><br> PVGIS-ERA5 (0.25º x 0.25º): The latest global reanalysis from ECMWF (ECMWF). Time range: 2005-2020. <br><br>Reanalysis of solar radiation data generally has higher uncertainty than satellite-based databases. Therefore, we recommend using reanalysis data only when satellite-based data is missing or outdated. For more information on databases and their accuracy, please refer to the PVGIS webpage on calculation methods.</p>
  470.        </div>
  471.    </div>
  472.    <hr>
  473.  
  474.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#dataprofile" aria-expanded="false" aria-controls="dataprofile"><span data-ts="pvgis.simulator.step_seven_title">7 • Daily Radiation Profile Data</span> <span class="toggle-icon"></span></a></h5>
  475.    <div id="dataprofile" class="panel-collapse collapse">
  476.        <p class="guide" data-ts="pvgis.simulator.step_seven_guide">By default, PVGIS provides solar panels made up of crystalline silicon cells. These solar panels correspond to the majority of rooftop-installed solar panel technology. PVGIS does not differentiate between polycrystalline and monocrystalline cells.</p>
  477.        <div>
  478.            <form class="form-group">
  479.                <select aria-label="pvtechchoice" name="pvtechchoice" id="stepspvtechchoice" class="duplicate-input-selectpvtechchoice form-control text-uppercase">
  480.                    <option value="crystSi" class="text-uppercase" data-ts="pvgis.simulator.forms.crystalline_silicon">
  481.                        crystalline sillicon
  482.                    </option>
  483.                    <option value="CIS" class="text-uppercase">cis</option>
  484.                    <option value="CdTe" class="text-uppercase">cdte</option>
  485.                    <option data-ts="pvgis.simulator.forms.unknown" value="Unknown" class="text-uppercase">unknown</option>
  486.                </select>
  487.            </form>
  488.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepsprofilecontent" aria-expanded="false" aria-controls="stepsprofilecontent"> <span class="toggle-iconplus"></span></a></p>
  489.        </div>
  490.        <p id="stepsprofilecontent" class="panel-collapse collapse" data-ts="pvgis.simulator.step_seven_consigne">The performance of photovoltaic modules depends on temperature, solar irradiance, and the spectrum of sunlight. However, the exact dependence varies among different types of photovoltaic modules. <br>
  491.            Currently, we can estimate losses due to temperature and irradiance effects for the following types of modules: <br><br>
  492.  
  493.            • Crystalline silicon cells <br>
  494.            • Thin-film modules made from CIS or CIGS <br>
  495.            • Thin-film modules made from cadmium telluride (CdTe) <br><br>
  496.  
  497.            For other technologies, especially various amorphous technologies, this correction cannot be calculated here. <br><br>
  498.  
  499.            If you choose one of the first three options here, the performance calculation will take into account the temperature dependence of the chosen technology. If you choose the other option (other/unknown), the calculation will assume an 8% power loss due to temperature effects (a generic value that has been found reasonable for temperate climates). <br><br>
  500.  
  501.            Note that the calculation of the spectral variations' effect is currently available only for crystalline silicon and CdTe. The spectral effect cannot yet be considered for areas covered only by the PVGIS-NSRDB database. <br><br>
  502.  
  503.            Monocrystalline or Polycrystalline? <br>
  504.            Monocrystalline silicon is composed of a single silicon crystal, as it is manufactured from a stretched ingot. Polycrystalline silicon is composed of a mosaic of silicon crystals (in fact, residual monocrystalline silicon is used to make polycrystalline silicon). <br><br>
  505.  
  506.            Monocrystalline solar panels currently have a better efficiency, higher than that of polycrystalline panels, by approximately 1 to 3%. <br><br>
  507.  
  508.            Monocrystalline solar panels can produce more electricity than polycrystalline ones because they are better at capturing sunlight, even in diffuse radiation. Therefore, they are suitable for regions with less intense sunlight, such as temperate zones. <br><br>
  509.  
  510.            Polycrystalline solar panels are particularly more efficient in very sunny and hot regions.</p>
  511.    </div>
  512.    <hr>
  513.  
  514.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#picpower" aria-expanded="false" aria-controls="picpower"><span data-ts="pvgis.simulator.step_eight_title">8 • Installed peak PV power [kWp]</span> <span class="toggle-icon"></span></a></h5>
  515.    <div id="picpower" class="panel-collapse collapse">
  516.        <p class="guide" data-ts="pvgis.simulator.step_eight_guide">Please provide the total power of the installed panels in kilowatts. For example, if you have 9 panels each with a capacity of 500 Watts, you would enter 4.5. (9 panels x 500 Watts = 4500 Watts, which is 4.5 kilowatts)</p>
  517.        <div>
  518.            <form class="form-group form-inline setps-form-container">
  519.                <span><label for="stepspeakpower" data-ts="pvgis.simulator.forms.peak_pv_power">Installed peak PV power [kWp] </label><span class="text-danger">*</span></span>
  520.                <input type="number" aria-label="peakpower" min="0" id="stepspeakpower" class="duplicate-input-picpower form-control text-right" name="peakpower" value="1" />
  521.            </form>
  522.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepspicpowercontent" aria-expanded="false" aria-controls="stepspicpowercontent"> <span class="toggle-iconplus"></span></a></p>
  523.        </div>
  524.        <p id="stepspicpowercontent" class="panel-collapse collapse" data-ts="pvgis.simulator.step_eight_consigne">This is the power that the manufacturer declares the photovoltaic system can produce under standard test conditions, which include constant solar irradiance of 1000 W per square meter in the plane of the system, at a system temperature of 25 °C. The peak power should be entered in kilowatt-peak (kWp).</p>
  525.    </div>
  526.    <hr>
  527.  
  528.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#perte" aria-expanded="false" aria-controls="perte"><span data-ts="pvgis.simulator.step_nine_title">9 • System Loss Estimation [%]</span> <span class="toggle-icon"></span></a></h5>
  529.    <div id="perte" class="panel-collapse collapse">
  530.        <p class="guide" data-ts="pvgis.simulator.step_nine_guide">PVGIS provides a default value of 14% for overall losses in the solar electricity production system. If you have a good idea that your value will be different (perhaps due to a highly efficient inverter), you can slightly reduce this value.</p>
  531.        <div>
  532.            <form class="form-group form-inline setps-form-container">
  533.                <span><label for="stepsloss" data-ts="pvgis.simulator.forms.system_loss">System loss [%]</label><span class="text-danger">*</span></span>
  534.                <input type="number" aria-label="loss" id="stepsloss" min="0" class="duplicate-input-gcloss form-control text-right" name="loss" value="14" />
  535.            </form>
  536.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepsgclosscontent" aria-expanded="false" aria-controls="stepsgclosscontent"> <span class="toggle-iconplus"></span></a></p>
  537.        </div>
  538.        <p id="stepsgclosscontent" class="panel-collapse collapse" data-ts="pvgis.simulator.step_nine_consigne">The estimated losses of the system encompass all losses within the system, resulting in the actual energy supplied to the electrical grid being less than the energy produced by the photovoltaic modules. <br><br>
  539.  
  540.            There are several factors contributing to these losses, including cable losses, inverters, dirt (sometimes snow) on the modules, etc. <br><br>
  541.  
  542.            Over the years, modules also tend to lose a bit of their power, so the average annual production over the system's lifespan will be a few percentage points lower than the production in the initial years.</p>
  543.    </div>
  544.    <hr>
  545.  
  546.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#montage" aria-expanded="false" aria-controls="montage"><span data-ts="pvgis.simulator.step_ten_title">10 • Mounting Position</span> <span class="toggle-icon"></span></a></h5>
  547.    <div id="montage" class="panel-collapse collapse">
  548.        <p class="guide" data-ts="pvgis.simulator.step_ten_guide"> There are two installation possibilities: Freestanding/On-Top Installation:
  549.            Modules are mounted on a rack with free air circulation behind them.<br><br>
  550.  
  551.            Roof-Integrated/Building-Integrated: Modules are fully integrated into the structure of a building's wall or roof, with little or no air movement behind the modules. <br><br>
  552.  
  553.            The majority of rooftop installations are currently on-top installations.</p>
  554.  
  555.        <div>
  556.            <form class="form-group form-inline setps-form-container">
  557.                <span><label for="stepsmountingplace" data-ts="pvgis.simulator.forms.mounting_option">Mounting position</label><span class="text-danger">*</span></span>
  558.                <select aria-label="mountingplace" id="stepsmountingplace" name="mountingplace" class="duplicate-input-gcmounting form-control text-uppercase">
  559.                    <option value="free" class="text-uppercase" data-ts="pvgis.simulator.forms.freestanding">Free-standing</option>
  560.                    <option value="building" class="text-uppercase" data-ts="pvgis.simulator.forms.roof_added_building_integrated">
  561.                        Roof added / Building integrated
  562.                    </option>
  563.                </select>
  564.            </form>
  565.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepsgcmpountingcontent" aria-expanded="false" aria-controls="stepsgcmpountingcontent"> <span class="toggle-iconplus"></span></a></p>
  566.        </div>
  567.        <p id="stepsgcmpountingcontent" class="panel-collapse collapse" data-ts="pvgis.simulator.step_ten_consigne">For fixed systems (without tracking), the way modules are mounted will influence the module temperature, which, in turn, affects efficiency. Experiments have shown that if air movement behind the modules is limited, the modules can be considerably warmer (up to 15°C at 1000 W/m2 sunlight). <br><br>Some mounting types fall between these two extremes. For example, if modules are mounted on a roof with curved tiles, allowing air to move behind the modules. In such cases, performance will be somewhere between the results of the two calculations possible here. To be conservative in such cases, the roof-added/integrated construction option can be used.</p>
  568.    </div>
  569.    <hr>
  570.  
  571.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#angleperte" aria-expanded="false" aria-controls="angleperte"><span data-ts="pvgis.simulator.step_eleven_title">11 • Angle or Tilt Loss</span> <span class="toggle-icon"></span></a></h5>
  572.    <div id="angleperte" class="panel-collapse collapse">
  573.        <p class="guide" data-ts="pvgis.simulator.step_eleven_guide">You are aware of the tilt angle of your sloped roof; please provide information on this angle.</p>
  574.  
  575.        <div>
  576.            <div>
  577.                <form class="form-group form-inline setps-form-container">
  578.                    <label for="stepsslope"><span data-ts="pvgis.simulator.forms.slope">Slope</span> [°]<span class="text-danger">*</span></label>
  579.                    <input id="stepsslope" type="number" min="0" class="duplicate-input-gcslope form-control text-right" name="slope" value="35" />
  580.                </form>
  581.                <p>
  582.                    <input type="checkbox" aria-label="optimalinclination" id="stepsgcoptmizeslope" name="optimalinclination" value="1" />
  583.                    <label for="stepsgcoptmizeslope" data-ts="pvgis.simulator.forms.optimize_slope"> Optimize slope </label> <br> <span data-ts="pvgis.simulator.step_eleven_consignee">This application can calculate the optimal values for slope and orientation (assuming fixed angles throughout the year).</span>
  584.                </p>
  585.            </div>
  586.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepsgcslopecontent" aria-expanded="false" aria-controls="stepsgcslopecontent"> <span class="toggle-iconplus"></span></a></p>
  587.        </div>
  588.        <p id="stepsgcslopecontent" class="panel-collapse collapse"><span data-ts="pvgis.simulator.step_eleven_consigne">This concerns the angle of the photovoltaic modules in relation to the horizontal plane, for a fixed installation (without tracking). <br><br> If you have the opportunity to choose the tilt angle of your mounting system for your solar installation, whether it be on a flat roof or on the ground (concrete slab), you will check the angle optimization.</span>
  589.        </p>
  590.    </div>
  591.    <hr>
  592.  
  593.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#azimuth" aria-expanded="false" aria-controls="azimuth"><span data-ts="pvgis.simulator.step_twelve_title">12 • Azimuth or Orientation</span> <span class="toggle-icon"></span></a></h5>
  594.    <div id="azimuth" class="panel-collapse collapse">
  595.        <p class="guide" data-ts="pvgis.simulator.step_twelve_guide">You are familiar with the azimuth or orientation of your sloped roof; please provide information on this azimuth as follows. </p>
  596.        <div>
  597.            <div>
  598.                <form class="form-group form-inline setps-form-container">
  599.                    <label for="stepsangle"><span data-ts="pvgis.simulator.forms.optimize_slope_and_azimuth">Azimuth</span> [°]<span class="text-danger">*</span></label>
  600.                    <input id="stepsangle" type="number" class="duplicate-input-gcazimuth form-control text-right" name="angle" value="0" />
  601.                </form>
  602.                <p>
  603.                    <input type="checkbox" aria-label="optimalangles" id="stepsgcoptmizeazimuth" name="optimalangles" value="1" />
  604.                    <label for="stepsgcoptmizeazimuth" data-ts="pvgis.simulator.forms.optimize_slope_and_azimuth"> Optimize slope and azimuth</label> <br><br> <span data-ts="pvgis.simulator.step_twelve_consignee">This application can calculate the optimal values for tilt and orientation (assuming fixed angles throughout the year).</span> <br> <br>
  605.                </p>
  606.            </div>
  607.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepsgcazimuthcontent" aria-expanded="false" aria-controls="stepsgcazimuthcontent"> <span class="toggle-iconplus"></span></a></p>
  608.  
  609.        </div>
  610.        <p id="stepsgcazimuthcontent" class="panel-collapse collapse"><span data-ts="pvgis.simulator.step_twelve_consigne">The azimuth, or orientation, is the angle of the photovoltaic modules in relation to the direction: <br><br> • SOUTH 0° <br>
  611.                • NORTH 180° <br>
  612.                • EAST - 90° <br>
  613.                • WEST 90° <br>
  614.                • SOUTHWEST 45° <br>
  615.                • SOUTHEAST - 45° <br>
  616.                • NORTHWEST 135° <br>
  617.                • NORTHEAST - 135° <br><br> If you have the opportunity to choose the azimuth or orientation of your mounting system for your solar installation, whether it be on a flat roof or on the ground (concrete slab), you will check the optimization of both the angle and the azimuth.</span>
  618.        </p>
  619.    </div>
  620.    <hr>
  621.  
  622.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#cost" aria-expanded="false" aria-controls="cost"><span data-ts="pvgis.simulator.step_thirteen_title">13 • Cost of Photovoltaic Electricity [per kWh]</span> <span class="toggle-icon"></span></a></h5>
  623.    <div id="cost" class="panel-collapse collapse">
  624.        <p class="guide" data-ts="pvgis.simulator.step_thirteen_guide"> This is a very approximate option for calculating the cost of produced kWh. This option has no impact on the electricity production calculation, and like any option, it is not mandatory. </p>
  625.        <div>
  626.            <form class="form-group">
  627.                <input type="checkbox" aria-label="pvprice" name="pvprice" value="1" id="stepspvprice" />
  628.                <label for="stepspvprice" data-ts="pvgis.simulator.forms.pv_electricity_price">PV electricity price</label>
  629.                <div class="form-inline setps-form-container">
  630.                    <label for="stepspvsystemcost"><span data-ts="pvgis.simulator.forms.pv_system_cost">PV system cost (your currency)</span><span class="text-danger">*</span></label>
  631.                    <input type="number" aria-label="systemcost" min="0" class="duplicate-input-gcsystemcost form-control" id="stepspvsystemcost" name="systemcost" />
  632.                </div>
  633.                <div class="form-inline setps-form-container">
  634.                    <label for="stepspvinterest"><span data-ts="pvgis.simulator.forms.interest">Interest</span> [ % / <span data-ts="year">year</span> ]<span class="text-danger">*</span></label>
  635.                    <input type="number" aria-label="interest" min="0" class="duplicate-input-gcinterest form-control" id="stepspvinterest" name="interest" />
  636.                </div>
  637.                <div class="form-inline setps-form-container">
  638.                    <label for="stepspvlifetime"><span data-ts="pvgis.simulator.forms.lifetime">Lifetime</span> [ <span data-ts="year">year</span> ]<span class="text-danger">*</span></label>
  639.                    <input type="number" aria-label="lifetime" min="0" class="duplicate-input-gclifetime form-control" id="stepspvlifetime" name="lifetime" />
  640.                </div>
  641.            </form>
  642.            <p class="text-right"><a role="button" data-toggle="collapse" href="#stepsgccostcontent" aria-expanded="false" aria-controls="stepsgccostcontent"> <span class="toggle-iconplus"></span></a></p>
  643.  
  644.        </div>
  645.        <p id="stepsgccostcontent" class="panel-collapse collapse" data-ts="pvgis.simulator.step_thirteen_consigne">The calculated cost of the kWh does not take into account maintenance costs, insurance, and other corrective maintenance costs. The essence of PVGIS is the calculation of the production of your photovoltaic system based on your geographic location and installation information.<br><br> Nevertheless, you have the option to calculate, based on the electricity production estimate, the cost of photovoltaic electricity per kWh. <br><br> • Cost of the Photovoltaic System:
  646.            Here, you need to enter the total installation cost of the photovoltaic system, including photovoltaic components (photovoltaic modules, mounting, inverters, cables, etc.) and installation costs (planning, installation, ...). The choice of currency is yours to decide; the electricity price calculated by PVGIS will then be the price per kWh of electricity in the same currency you have used. <br><br> • Interest Rate:
  647.            This is the interest rate you pay on all loans necessary to finance the photovoltaic system. This assumes a fixed interest rate on the loan that will be repaid through annual payments over the system's lifespan. Enter 0 if it is a cash financing, without a loan. <br><br>• Photovoltaic System Lifespan:
  648.            This is the expected lifespan of the photovoltaic system in years. This is used to calculate the effective cost of electricity for the system. If the photovoltaic system lasts longer, the cost of electricity will be proportionally lower. Power purchase agreements with grids are generally for 20 years. We recommend choosing this duration as information about the system's lifespan.
  649.        </p>
  650.    </div>
  651.    <hr>
  652.  
  653.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#resultat" aria-expanded="false" aria-controls="resultat"><span data-ts="pvgis.simulator.step_fourteen_title">14 • Visualize the Results</span> <span class="toggle-icon"></span></a></h5>
  654.    <div id="resultat" class="panel-collapse collapse">
  655.        <p class="guide" data-ts="pvgis.simulator.step_fourteen_guide">Click to view the results on the screen.</p>
  656.        <p class="text-center"><button data-dismiss="modal" onclick="stepsvisualizeresult('grid-connected-tab', 'grid-connected-result')" id="stepsgcvisualizeresult" class="btn-visualize-grid-connected btn btn-primary"><i class="fas fa-eye"></i> <span data-ts="pvgis.simulator.forms.visualize_results">visualize results</span></button></p>
  657.        <p data-ts="pvgis.simulator.step_fourteen_example">Example of solar production month by month.</p>
  658.        <p class="text-center"><img src="https://cdn.pvgis.com/images/loading-ps.svg" class="lazyLoad" data-src="https://cdn.pvgis.com/images/layers/exampleresultgc.png" alt="exemple production solaire" style="width: 100%; max-width: 367px;"></p>
  659.    </div>
  660.    <hr>
  661.  
  662.    <p class="verySmall" style="margin-top: 38px;"><span class="sous-title" data-ts="pvgis.simulator.comment">Commentary on the Results</span></p><br>
  663.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#infos" aria-expanded="false" aria-controls="infos"><span data-ts="pvgis.simulator.step_fifteen_title">15 • Information Provided</span> <span class="toggle-icon"></span></a></h5>
  664.    <div id="infos" class="panel-collapse collapse">
  665.        <table class="table table-results">
  666.            <tr class="table-header">
  667.                <td colspan="2" data-ts="pvgis.simulator.step_fifteen_input">Provided inputs :</td>
  668.            </tr>
  669.            <tbody>
  670.                <tr>
  671.                    <td data-ts="pvgis.simulator.step_fifteen_location">Location [Lat/Lon]:</td>
  672.                    <td>-15.599 , -53.881</td>
  673.                </tr>
  674.                <tr>
  675.                    <td data-ts="pvgis.simulator.step_fifteen_horizon">Horizon:</td>
  676.                    <td data-ts="pvgis.simulator.step_fifteen_caculated">calculated</td>
  677.                </tr>
  678.                <tr>
  679.                    <td data-ts="pvgis.simulator.step_fifteen_tdatabase">Database used:</td>
  680.                    <td>PVGIS-SARAH2</td>
  681.                </tr>
  682.                <tr>
  683.                    <td data-ts="pvgis.simulator.step_fifteen_techpv">PV technology:</td>
  684.                    <td>CRYSTALLINE SILLICON</td>
  685.                </tr>
  686.                <tr>
  687.                    <td data-ts="pvgis.simulator.step_fifteen_instalpv">PV installed [Wp]:</td>
  688.                    <td>1</td>
  689.                </tr>
  690.                <tr>
  691.                    <td data-ts="pvgis.simulator.step_fifteen_losssystem">System loss [%]:</td>
  692.                    <td>14</td>
  693.                </tr>
  694.            </tbody>
  695.        </table>
  696.    </div>
  697.    <hr>
  698.  
  699.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#systemresultat" aria-expanded="false" aria-controls="systemresultat"><span data-ts="pvgis.simulator.step_sixteen_title">16 • Results of the Grid-Connected Photovoltaic System</span> <span class="toggle-icon"></span></a></h5>
  700.    <div id="systemresultat" class="panel-collapse collapse">
  701.        <p class="text-center"><button data-dismiss="modal" onclick="stepsvisualizeresult('grid-connected-tab', 'grid-connected-result')" id="stepsmvisualizeresult" class="btn-visualize-grid-connected btn btn-primary"><i class="fas fa-eye"></i> <span data-ts="pvgis.simulator.forms.visualize_results">visualize results</span></button></p>
  702.  
  703.        <p class="indication" data-ts="pvgis.simulator.step_sixteen_indication">The result of the photovoltaic energy calculation is the average monthly energy production and the average annual production by the photovoltaic system with the properties you have chosen.<br><br>The year-to-year variability is the standard deviation of the annual values calculated over the period covered by the selected solar radiation database.</p>
  704.        <span class="steps-data-container">
  705.            <span class="steps-data-container-title" data-ts="pvgis.simulator.step_sixteen_resume_one">
  706.                Annual Production in kW, taking into account geographic and climatic
  707.                parameters:
  708.            </span>
  709.            <span class="steps-results-data">
  710.                <b>Yearly PV energy production (kWh):</b>
  711.                <b id="steps-energy-production">--</b>
  712.            </span>
  713.            <span data-ts="pvgis.simulator.step_sixteen_resume_two">
  714.                Annual Irradiation, the potential production of kWhs per m<sup>2</sup>:
  715.            </span>
  716.            <span class="steps-results-data">
  717.                <b>
  718.                    Yearly in-plane irradiation (kWh/m<sup>2</sup>):
  719.                </b>
  720.                <b id="steps-in-plane-radiation">--</b>
  721.            </span>
  722.            <span data-ts="pvgis.simulator.step_sixteen_resume_three">
  723.                Annual Variability in kWh, representing the possible variation between two
  724.                years:
  725.            </span>
  726.            <span class="steps-results-data">
  727.                <b>Yearly-to-year variability (kWh):</b>
  728.                <b id="steps-yeatly-to-year-variability">--</b>
  729.            </span>
  730.            <span data-ts="pvgis.simulator.step_sixteen_resume_four">
  731.                Total estimates of losses, taking into account production losses due to the
  732.                angle, spectral effects, and site temperature.
  733.            </span>
  734.        </span>
  735.        <table>
  736.            <tr>
  737.                <td colspan="2">
  738.                    <b data-ts="pvgis.simulator.step_sixteen_change">Changes in output due to:</b>
  739.                </td>
  740.            </tr>
  741.            <tr>
  742.                <td colspan="2"><br></td>
  743.            </tr>
  744.            <tr>
  745.                <td>
  746.                    &nbsp;&nbsp;&nbsp;<b data-ts="pvgis.simulator.step_sixteen_angle">Angle of incidence (%):</b>
  747.                </td>
  748.                <td class="right-align">
  749.                    &nbsp;&nbsp;&nbsp;<b id="steps-angle-of-incidence">--</b>
  750.                </td>
  751.            </tr>
  752.            <tr>
  753.                <td>
  754.                    &nbsp;&nbsp;&nbsp;<b data-ts="pvgis.simulator.step_sixteen_spectral">Spectral effects (%):</b>
  755.                </td>
  756.                <td class="right-align">
  757.                    &nbsp;&nbsp;&nbsp;<b id="steps-spectral-effects">--</b>
  758.                </td>
  759.            </tr>
  760.            <tr>
  761.                <td>
  762.                    &nbsp;&nbsp;&nbsp;<b data-ts="pvgis.simulator.step_sixteen_temperature">Temperature and low irradiance (%):</b>
  763.                </td>
  764.                <td class="right-align">
  765.                    &nbsp;&nbsp;&nbsp;<b id="steps-sixteen-temperature">--</b>
  766.                </td>
  767.            </tr>
  768.            <tr>
  769.                <td colspan="2"><br></td>
  770.            </tr>
  771.            <tr>
  772.                <td>
  773.                    <b data-ts="pvgis.simulator.step_sixteen_total">Total loss (%):</b>
  774.                </td>
  775.                <td class="right-align">
  776.                    &nbsp;&nbsp;&nbsp;<b id="steps-total-loss">--</b>
  777.                </td>
  778.            </tr>
  779.        </table>
  780.  
  781.    </div>
  782.    <hr>
  783.  
  784.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#productionmensuelle" aria-expanded="false" aria-controls="productionmensuelle"><span data-ts="pvgis.simulator.step_seventeen_title">17 • Monthly Energy Production of the Fixed-Angle Photovoltaic System in kW/h</span> <span class="toggle-icon"></span></a></h5>
  785.    <div id="productionmensuelle" class="panel-collapse collapse">
  786.        <p class="text-center"><button data-dismiss="modal" class="btn btn-primary" id="stepsgcpvoutput" data-toggle="tab" href="#grid-connected-pv-output-tab" onclick="scrollToResult()"><i class="fas fa-eye"></i> <span data-ts="pvgis.result.pv_output">PV output</span></button></p>
  787.        <p class="text-center"><img src="https://cdn.pvgis.com/images/loading-ps.svg" class="lazyLoad" data-src="https://cdn.pvgis.com/images/layers/examplepvgc.png" alt="exemple pv output" style="width: 100%; max-width: 362px;"></p>
  788.    </div>
  789.    <hr>
  790.  
  791.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#radiationmensuelle" aria-expanded="false" aria-controls="radiationmensuelle"><span data-ts="pvgis.simulator.step_eighteen_title">18 • Monthly Irradiation in the plane for the fixed angle in kW/h per m2</span> <span class="toggle-icon"></span></a></h5>
  792.    <div id="radiationmensuelle" class="panel-collapse collapse">
  793.        <p class="text-center"><button data-dismiss="modal" class="btn btn-primary" id="stepsgcradiation" data-toggle="tab" href="#grid-connected-radiation-tab" onclick="scrollToResult()"><i class="fas fa-eye"></i> <span data-ts="pvgis.result.radiation">Radiation</span></button></p>
  794.        <p class="text-center"><img src="https://cdn.pvgis.com/images/loading-ps.svg" class="lazyLoad" data-cms-link data-cms-baseURL="https://cdn.pvgis.com/images/home" data-src="https://cdn.pvgis.com/images/home/en/irradiation.jpg" alt="exemple radiation" style="width: 100%; max-width: 361px;"></p>
  795.    </div>
  796.    <hr>
  797.  
  798.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#horizon" aria-expanded="false" aria-controls="horizon"><span data-ts="pvgis.simulator.step_nineteen_title">19 • Horizon Contour</span> <span class="toggle-icon"></span></a></h5>
  799.    <div id="horizon" class="panel-collapse collapse">
  800.        <p class="text-center"><img src="https://cdn.pvgis.com/images/loading-ps.svg" class="lazyLoad" data-cms-link data-cms-baseURL="https://cdn.pvgis.com/images/home" data-src="https://cdn.pvgis.com/images/home/en/horizon.jpg" alt="exemple horizon profile" style="width: 100%; max-width: 363px;"></p>
  801.    </div>
  802.    <hr>
  803.  
  804.    <p class="verySmall" style="margin-top: 38px;"><span class="sous-title" data-ts="pvgis.simulator.exporting_results">Exporting Results</span></p><br>
  805.    <h5><a role="button" class="stepsTitle collapsed" data-toggle="collapse" data-parent="#accordeon" href="#exportpdf" aria-expanded="false" aria-controls="exportpdf"><span data-ts="pvgis.simulator.step_twenty_title">20 • Export PDF of Results</span> <span class="toggle-icon"></span></a></h5>
  806.    <div id="exportpdf" class="panel-collapse collapse">
  807.        <p class="indication" data-ts="pvgis.simulator.step_twenty_indication">Export a PDF of the results of your simulation of the performance of your grid-connected photovoltaic system.<br><br>By clicking on PDF, you download your simulation.</p>
  808.        <br>
  809.        <!-- <p class="text-center"><button data-dismiss="modal" class="btn btn-primary" id="stepsgcpdf" onclick="downloadPdfGridConnected()"><i class="fas fa-print"></i><span data-ts="pvgis.result.pdf"> PDF</span></button></p><br> -->
  810.        <p class="text-center"><button data-dismiss="modal" class="btn btn-primary disabled" id="stepsgcpdf" ><i class="fas fa-print"></i><span data-ts="pvgis.result.pdf"> PDF</span></button></p><br>
  811.        <p class="text-center"><img src="https://cdn.pvgis.com/images/loading-ps.svg" class="lazyLoad" data-src="https://cdn.pvgis.com/images/layers/examplepdfgc.png" alt="exemple horizon profile" style="width: 100%; max-width: 874px;"></p>
  812.    </div>
  813.    <hr>
  814. </div>
  815.  
  816.                        </div>
  817.                    </div>
  818.                </div>
  819.                <!-- <div class="col-md-0 col-lg-0"></div> -->
  820.                <div class="mapSimulator">
  821.                    <!--  -->
  822.                    <div class="map-address-container" style="min-height:700px">
  823.                        <div class="loading-container">
  824.                            <div class="loadingMapAndSimulator" style="display:none"></div>
  825.                            <!-- <div id="map" class="loadingMapAndSimulatorResult "> -->
  826.                            <div id="map" class="loadingMapAndSimulatorResult">
  827.                                <div id="instructionMap">
  828.                                    <p class="opacityRange"><span class="bgbtn"><button title="Change opacity" class="" id="opacityButton">O</button></span>&nbsp;&nbsp;&nbsp;<input type="range" name="opacity" id="opacity" step="0.1" min="0" max="1" value="0.6" style="display: none;"></p>
  829.                                    <p class="opacityRange"><span class="bgbtn"><button title="Legend" id="legendButton">L</button></span>&nbsp;&nbsp;&nbsp;<img src="https://cdn.pvgis.com/images/loading-ps.svg" data-src="https://cdn.pvgis.com/images/layers/legend_solar.png" class="lazyLoad" width="250" id="legend" style="display: none;" alt="legend_solar"></p>
  830.                                </div>
  831.                                <div id="changeLayer">
  832.                                    <p class="bgbtn"><span class="changeLayer"><button title="Layer" class="" id="changeLayerButton"></button></span></p>
  833.                                </div>
  834.                                <div id="changeLayerContainer">
  835.                                    <p class="layerP">
  836.                                        <input type="checkbox" name="label" id="label">
  837.                                        <label for="label" data-ts="pvgis.simulator.label">Labels</label>
  838.                                    </p>
  839.                                    <p class="layerP">
  840.                                        <input type="checkbox" name="solar" id="solar">
  841.                                        <label for="solar" data-ts="pvgis.simulator.solar">Solar radiation</label>
  842.                                    </p>
  843.                                    <p class="layerP">
  844.                                        <input type="radio" aria-label="sentinel" name="layer" value="sentinel" id="sentinel">
  845.                                        <label for="sentinel" data-ts="pvgis.simulator.sentinel">Sentinel-2 cloudless</label>
  846.                                    </p>
  847.                                    <p class="layerP">
  848.                                        <input type="radio" aria-label="osm" name="layer" value="osm" id="osm">
  849.                                        <label for="osm" data-ts="pvgis.simulator.osm">Open Street Map</label>
  850.                                    </p>
  851.                                    <p class="layerP">
  852.                                        <input type="radio" aria-label="terrain" name="layer" value="terrain" id="terrain">
  853.                                        <label for="terrain" data-ts="pvgis.simulator.terrain">Terrain</label>
  854.                                    </p>
  855.                                </div>
  856.                            </div>
  857.                            <!-- <div id="google-map" class="google-map d-none"></div> -->
  858.                        </div>
  859.                        <div class="map-input address-container">
  860.                            <div class="address address-box">
  861.                                <div class="addressButton">
  862.                                    <input type="text" aria-label="adresse" class="form-control" id="address" name="address" placeholder="Address" data-tstype="placeholder" data-ts="pvgis.simulator.address">&nbsp;
  863.                                    <button class="btn btn-primary" onclick="geocode()" type="button" data-ts="pvgis.simulator.go">Go!</button>
  864.                                </div>
  865.                                <p id="ip-indicator"><span data-ts="pvgis.simulator.based_on_ip"></span>: 3.237.223.94</p>
  866.                            </div>
  867.                            <div class="address-box address">
  868.                                <div class="addressButton">
  869.                                    <input type="number" aria-label="latitude" class="form-control lonLat" name="latitude" id="latitude_input" placeholder="Lat: (8.611)">&nbsp;
  870.                                    <input type="number" aria-label="longitude" class="form-control lonLat" name="longitude" id="longitude_input" placeholder="Lon: (45.815)">&nbsp;
  871.                                    <button class="btn btn-primary" onclick="searchLocation()" type="button" data-ts="pvgis.simulator.go">Go!</button>
  872.                                </div>
  873.                            </div>
  874.                        </div>
  875.                    </div>
  876.  
  877.                    <div class="coordinate">
  878.                        <div class="loading-container-form">
  879.                            <div class="loadingMapAndSimulator" style="height: 200px"></div>
  880.                            <div class="border-main loadingMapAndSimulatorResult" id="dataFile">
  881.                                <div>
  882.                                    <form id="locationForm" class="row">
  883.                                        <input type="hidden" name="lat" id="lat">
  884.                                        <input type="hidden" name="lon" id="lon">
  885.                                        <div class="col-md-4">
  886.                                            <p class="clearfix"><span class=""><strong><span class="" data-ts="pvgis.simulator.cursor">Cursor</span>:</strong></span> <span class="" id="latitude"></span> <span id="longitude"></span></p>
  887.                                            <p class="clearfix"><strong><span class="" data-ts="pvgis.simulator.selected">Selected</span>:<span></span> <span class="" id="latitudeSelected"><span class="text-danger" data-ts="pvgis.simulator.select">Select</span></span> <span id="longitudeSelected"><span class="text-danger" data-ts="pvgis.simulator.location">location!</span></span></strong></p>
  888.                                            <p class="clearfix elevation"><span class="" data-ts="pvgis.simulator.elevation">Elevation (m):</span> <span class="" id="elevation"></span></p>
  889.                                        </div>
  890.                                        <div class="col-md-8">
  891.                                            <p><b data-ts="pvgis.simulator.use_terrain_shadows">Use terrain shadows</b><b>:</b></p>
  892.                                            <p class="p-in-btn-container">
  893.                                                <span class=""><input type="checkbox" aria-label="calculatedHorizon" name="cbhorizon1" class="cbhorizon" id="calculated" value="calculated" /> <a role="button" class="horizonFile" data-toggle="collapse" href="#shadows" aria-expanded="false" aria-controls="shadows" data-ts="pvgis.simulator.calculated_horizon">Calculated horizon</a></span>
  894.                                                <span class="p-in-btn-box"><button type="button" class="btn btn-primary" id="cbhorizoncsv" onclick="downloadHorizon('csv')"><i class="fas fa-download"></i>&nbsp;csv</button><button type="button" onclick="downloadHorizon('json')" class="btn btn-primary p-in-cibled-btn" id="cbhorizonjson"><i class="fas fa-download"></i>&nbsp;json</button></span>
  895.                                            </p>
  896.                                            <p class="p-in-btn-container">
  897.                                                <span class=""><input type="checkbox" aria-label="uploadHorizonFile" name="cbhorizon2" class="cbhorizon" id="upload" value="user" /> <a role="button" class="horizonFile" data-toggle="collapse" href="#shadows" aria-expanded="false" aria-controls="shadows" data-ts="pvgis.simulator.upload_horizon_file">Upload horizon file</a> </span>
  898.                                                <span class="custom-file-input" style="margin-top: 4px; ">
  899.                                                    <input class="hidden-input" type="file" name="horizonfileInput" id="cbhorizoninput" onchange="readFileAndSetHiddenValue('cbhorizoninput', 'cbhorizonFormattedInput', userhorizonFormatter)">
  900.                                                    <label for="cbhorizoninput" class="file-label">Parcourir...</label>
  901.                                                    <span class="file-name" data-ts="pvgis.simulator.no_file_selected">Aucun fichier sélectionné</span>
  902.                                                    <!-- <label class="btn input-file btn-primary">
  903.                                                        <i class="fas fa-upload"></i>&nbsp;<span data-ts="pvgis.simulator.file">Project</span>
  904.                                                        <input style="display: none;" type="file" name="horizonfileInput" id="cbhorizoninput" onchange="readFileAndSetHiddenValue('cbhorizoninput', 'cbhorizonFormattedInput', userhorizonFormatter)">
  905.                                                    </label> -->
  906.                                                </span>
  907.                                                <input type="hidden" id="cbhorizonFormattedInput">
  908.                                            </p>
  909.                                        </div>
  910.                                    </form>
  911.  
  912.  
  913.                                    <div class="row">
  914.                                        <div class="col-md-4 col-xs-5">
  915.                                            <p class="clearfix"><span class="" data-ts="pvgis.simulator.version">PVGIS ver.</span> <span class=""><strong>5.3</strong></span></p>
  916.                                        </div>
  917.                                        <div class="col-md-8 col-xs-7" style="margin-top: 4px;"><a href="/?is_api_legacy=1" class="version-switcher-btn" data-ts="pvgis.simulator.switch_version" data-tsVar='{"altPvgisApiVersion":"5.2"}'>Switch to version 5.2</a></div>
  918.                                    </div>
  919.  
  920.                                </div>
  921.                                <hr>
  922.                                <div id="tabs" class="coordinate box-shadow">
  923.                                    <div class="row tabs-containers">
  924.                                        <ul class="nav nav-tabs nav-stacked col-xs-12 col-sm-3 col-md-3" id="tablist">
  925.                                            <li class="liData tab-option active t_tool"><a data-toggle="tab" href="#grid-connected-tab" class="text-uppercase font-size-16" id="font-size-16" data-ts="pvgis.simulator.grid_connected">grid connected</a></li>
  926.                                            <li class="left-3 left-1 liData tab-option t_tool"><a data-toggle="tab" href="#tracking-pv-tab" class="text-uppercase font-size-16" id="font-size-16" data-ts="pvgis.simulator.tracking_pv">tracking pv</a></li>
  927.                                            <li class="left-3 liData tab-option t_tool"><a data-toggle="tab" href="#off-grid-tab" class="text-uppercase font-size-16" id="font-size-16" data-ts="pvgis.simulator.off_grid">off-grid</a></li>
  928.                                            <li class="left-1 liData tab-option t_data"><a data-toggle="tab" href="#monthly-tab" class="text-uppercase font-size-16" id="font-size-16" data-ts="pvgis.simulator.monthly_data">monthly data</a></li>
  929.                                            <li class="left-3 liData tab-option t_data"><a data-toggle="tab" href="#daily-tab" class="text-uppercase font-size-16" id="font-size-16" data-ts="pvgis.simulator.daily_data">daily data</a></li>
  930.                                            <li class="left-1 left-3 liData tab-option t_data"><a data-toggle="tab" href="#hourly-tab" class="text-uppercase font-size-16" id="font-size-16" data-ts="pvgis.simulator.hourly_data">hourly data</a></li>
  931.                                            <li class="liData tab-option t_tmy"><a data-toggle="tab" href="#tmy-tab" class="text-uppercase font-size-16" id="font-size-16" data-ts="pvgis.simulator.tmy">tmy</a></li>
  932.                                        </ul>
  933.                                        <div class="simulator-tab tab-content data-tab col-xs-12 col-sm-9 col-md-9" id="tab-chart">
  934.                                            <div id="grid-connected-tab" class="tab-pane fade in active">
  935.                                                <div class="data-content">
  936.  <div class="t_tool-content">
  937.    <span class="text-white"><i class="fas fa-solar-panel fa-lg"></i></span>
  938.    <h4 class="text-uppercase text-white font-bold">
  939.      <span
  940.        data-ts="pvgis.simulator.forms.grid_connected_perf_pv">performance of grid-connected pv</span>
  941.    </h4>
  942.    <span class="text-white" role="button" data-toggle="modal" data-target="#gcTooltip" aria-label="gcTooltip"><i class="fas fa-question-circle fa-lg"></i></span>
  943.    <div class="modal fade" id="gcTooltip" role="dialog">
  944.      <div class="modal-dialog">
  945.        <div class="modal-content">
  946.          <div class="modal-header">
  947.            <span role="button" class="close" data-dismiss="modal">&times;</span>
  948.            <h4 class="modal-title text-uppercase" data-ts="pvgis.simulator.forms.grid_connected_perf_pv">performance of grid-connected pv</h4>
  949.          </div>
  950.          <div class="modal-body">
  951.            <p data-ts="pvgis.simulator.forms.gc_tooltip">This tool makes it possible to estimate the average monthly and yearly energy production of a PV system connected to the electricity grid, without battery storage. The calculation takes into account the solar radiation, temperature, wind speed and type of PV module. The user can choose how the modules are mounted, whether on a free-standing rack mounting, or integrated in a building surface. PVGIS can also calculate the optimum slope and orientation that maximizes the yearly energy production. For sun-tracking mountings, see the separate tool below this one.</p>
  952.          </div>
  953.        </div>
  954.      </div>
  955.    </div>
  956.  </div>
  957.  <form id="grid-connected-form">
  958.    <div class="form-group padding-right">
  959.      <div class="row select">
  960.        <div class="col-xs-6 label-select">
  961.          <a class="linktab" role="button" data-toggle="collapse" href="#database" aria-expanded="false" aria-controls="database"><span data-ts="pvgis.simulator.forms.solar_radiation_database">Solar radiation database</span><span class="text-danger">*</span></a>
  962.        </div>
  963.        <div class="col-xs-6">
  964.          <select aria-label="selectdbgridconnected"
  965.            name="db"
  966.            id="selectdbgridconnected"
  967.            class="duplicate-input-selectdb form-control text-uppercase sr-db">
  968.  
  969.          </select>
  970.        </div>
  971.      </div>
  972.      <div class="row select">
  973.        <div class="col-xs-6 label-select">
  974.          <a class="linktab" role="button" data-toggle="collapse" href="#dataprofile" aria-expanded="false" aria-controls="dataprofile">
  975.            <span data-ts="pvgis.simulator.forms.pv_technology">PV technology</span><span class="text-danger">*</span>
  976.          </a>
  977.        </div>
  978.        <div class="col-xs-6">
  979.          <select aria-label="pvtechchoice" name="pvtechchoice" id="pvtechchoice" class="duplicate-input-selectpvtechchoice form-control text-uppercase">
  980.            <option value="crystSi" class="text-uppercase" data-ts="pvgis.simulator.forms.crystalline_silicon">
  981.              crystalline sillicon
  982.            </option>
  983.            <option value="CIS" class="text-uppercase">cis</option>
  984.            <option value="CdTe" class="text-uppercase">cdte</option>
  985.            <option data-ts="pvgis.simulator.forms.unknown" value="Unknown" class="text-uppercase">unknown</option>
  986.          </select>
  987.        </div>
  988.      </div>
  989.      <div class="row select">
  990.        <div class="col-xs-9 label-select">
  991.          <a class="linktab" role="button" data-toggle="collapse" href="#picpower" aria-expanded="false" aria-controls="picpower">
  992.            <span data-ts="pvgis.simulator.forms.peak_pv_power">Installed peak PV power</span>
  993.            <span class="text-danger">*</span>
  994.          </a>
  995.        </div>
  996.        <div class="col-xs-3">
  997.          <input type="number" aria-label="peakpower" min="0" class="duplicate-input-picpower form-control text-right" name="peakpower" value="1" />
  998.        </div>
  999.      </div>
  1000.      <div class="row select">
  1001.        <div class="col-xs-9 label-select">
  1002.          <a class="linktab" role="button" data-toggle="collapse" href="#perte" aria-expanded="false" aria-controls="perte">
  1003.            <span data-ts="pvgis.simulator.forms.system_loss">System loss</span><span class="text-danger">*</span>
  1004.          </a>
  1005.        </div>
  1006.        <div class="col-xs-3">
  1007.          <input type="number" aria-label="loss" min="0" class="duplicate-input-gcloss form-control text-right" name="loss" value="14" />
  1008.        </div>
  1009.      </div>
  1010.      <div class="row">
  1011.        <div class="col-xs-6" style="margin-top: 10px">
  1012.          <b style="font-weight: 700;" data-ts="pvgis.simulator.forms.fixed_mounting_options">Fixed mounting options</b>
  1013.        </div>
  1014.      </div>
  1015.      <div class="row select">
  1016.        <div class="col-xs-6 label-select">
  1017.          <a class="linktab" role="button" data-toggle="collapse" href="#montage" aria-expanded="false" aria-controls="montage"><span data-ts="pvgis.simulator.forms.mounting_option">Mounting position</span><span
  1018.              class="text-danger">*</span></a>
  1019.        </div>
  1020.        <div class="col-xs-6">
  1021.          <select aria-label="mountingplace" name="mountingplace" class=" duplicate-input-gcmounting form-control text-uppercase">
  1022.            <option value="free" class="text-uppercase" data-ts="pvgis.simulator.forms.freestanding">Free-standing</option>
  1023.            <option value="building" class="text-uppercase" data-ts="pvgis.simulator.forms.roof_added_building_integrated">
  1024.              Roof added / Building integrated
  1025.            </option>
  1026.          </select>
  1027.        </div>
  1028.      </div>
  1029.      <p></p>
  1030.      <div class="row">
  1031.        <div class="col-xs-3 label-select mobile-75">
  1032.          <a class="linktab" role="button" data-toggle="collapse" href="#angleperte" aria-expanded="false" aria-controls="angleperte"><span data-ts="pvgis.simulator.forms.slope">Slope</span> [°]<span class="text-danger">*</span></a>
  1033.        </div>
  1034.        <div class="col-xs-3">
  1035.          <input type="number" aria-label="angle" min="0" max="90" class="duplicate-input-gcslope form-control text-right" name="angle" id="gcslope" value="35" />
  1036.        </div>
  1037.        <div class="col-xs-6 label-select ">
  1038.          <input type="checkbox" aria-label="optimalinclination" id="gcoptimalinclination" name="optimalinclination" value="1" />
  1039.          <label class="label-thin" for="gcoptimalinclination" data-ts="pvgis.simulator.forms.optimize_slope">Optimize slope</label>
  1040.        </div>
  1041.  
  1042.      </div>
  1043.      <div class="row">
  1044.        <span id="slope-error" style="color: red; display: none;margin-left:145px" data-ts="pvgis.slope_validation_error">Please enter a value between 0 and 90.</span>
  1045.      </div>
  1046.      <p></p>
  1047.      <div class="row">
  1048.        <div class="col-xs-3 label-select mobile-75">
  1049.          <a class="linktab" role="button" data-toggle="collapse" href="#azimuth" aria-expanded="false" aria-controls="azimuth"><span data-ts="pvgis.simulator.forms.azimuth">Azimuth</span> [°]<span class="text-danger">*</span></a>
  1050.        </div>
  1051.        <div class="col-xs-3">
  1052.          <input type="number" aria-label="aspect" class="duplicate-input-gcazimuth form-control text-right" name="aspect" id="gcazimuth" value="0" min="-180" max="180" />
  1053.        </div>
  1054.        <div class="col-xs-6 label-select label-thin">
  1055.          <input type="checkbox" aria-label="optimalangles" id="gcoptimalangles" name="optimalangles" value="1" />
  1056.          <label class="label-thin" for="gcoptimalangles" data-ts="pvgis.simulator.forms.optimize_slope_and_azimuth">Optimize slope and azimuth</label>
  1057.        </div>
  1058.      </div>
  1059.      <div class="row">
  1060.        <span id="gcazimuth-error" style="color: red; display: none;margin-left:145px" data-ts="pvgis.simulator.forms.azimuth-error">Value must be between -180 and 180.</span>
  1061.      </div>
  1062.  
  1063.      <p></p>
  1064.      <div class="row">
  1065.        <div class="col-xs-6">
  1066.          <input type="checkbox" aria-label="pvprice" class="checkboxSimulator" name="pvprice" value="1" id="pvprice" />
  1067.          <label for="pvprice" data-ts="pvgis.simulator.forms.pv_electricity_price">PV electricity price</label>
  1068.        </div>
  1069.      </div>
  1070.      <p></p>
  1071.      <div class="row select">
  1072.        <div class="col-xs-9 label-select">
  1073.          <a class="linktab" role="button" data-toggle="collapse" href="#cost" aria-expanded="false" aria-controls="cost" data-ts="pvgis.simulator.forms.pv_system_cost">PV system cost (your currency)</a>
  1074.        </div>
  1075.        <div class="col-xs-3">
  1076.          <input type="number" aria-label="systemcost" min="0" class="duplicate-input-gcsystemcost form-control" id="pvpsystemcost" name="systemcost" />
  1077.        </div>
  1078.      </div>
  1079.      <div class="row select">
  1080.        <div class="col-xs-9 label-select">
  1081.          <a class="linktab" role="button" data-toggle="collapse" href="#cost" aria-expanded="false" aria-controls="cost"><span data-ts="pvgis.simulator.forms.interest">Interest</span> [ % / <span data-ts="year">year</span> ]<span
  1082.              class="text-danger">*</span></a>
  1083.        </div>
  1084.        <div class="col-xs-3">
  1085.          <input type="number" aria-label="interest" min="0" class="duplicate-input-gcinterest form-control" id="pvpinterest" name="interest" />
  1086.        </div>
  1087.      </div>
  1088.      <div class="row select">
  1089.        <div class="col-xs-9 label-select">
  1090.          <a class="linktab" role="button" data-toggle="collapse" href="#cost" aria-expanded="false" aria-controls="cost"><span data-ts="pvgis.simulator.forms.lifetime">Lifetime</span> [ <span data-ts="year">year</span> ]<span
  1091.              class="text-danger">*</span></a>
  1092.        </div>
  1093.        <div class="col-xs-3">
  1094.          <input type="number" aria-label="lifetime" min="0" class="duplicate-input-gclifetime form-control" id="pvplifetime" name="lifetime" />
  1095.        </div>
  1096.      </div>
  1097.    </div>
  1098.  </form>
  1099. </div>                                            </div>
  1100.                                            <div id="tracking-pv-tab" class="tab-pane fade">
  1101.                                                <div class="data-content">
  1102.  <div class="t_tool-content">
  1103.    <span class="text-white"><i class="fas fa-solar-panel fa-lg"></i></span>
  1104.    <h4 class="text-uppercase text-white font-bold">
  1105.      <span
  1106.        data-ts="pvgis.simulator.forms.performance_of_tracking_pv">
  1107.        performance of tracking pv
  1108.      </span>
  1109.    </h4>
  1110.    <span class="text-white" role="button" data-toggle="modal" data-target="#trackingTooltip" aria-label="trackingTooltip"><i class="fas fa-question-circle fa-lg"></i></span>
  1111.    <div class="modal fade" id="trackingTooltip" role="dialog">
  1112.      <div class="modal-dialog">
  1113.        <div class="modal-content">
  1114.          <div class="modal-header">
  1115.            <span role="button" class="close" data-dismiss="modal">&times;</span>
  1116.            <h4 class="moda-title text-uppercase" data-ts="pvgis.simulator.forms.performance_of_tracking_pv">performance of tracking pv</h4>
  1117.          </div>
  1118.          <div class="modal-body">
  1119.            <p data-ts="pvgis.simulator.forms.tracking_tooltip"></p>
  1120.          </div>
  1121.        </div>
  1122.      </div>
  1123.    </div>
  1124.  </div>
  1125.  <form id="tracking-form">
  1126.    <div class="form-group padding-right">
  1127.      <div class="row select">
  1128.        <div class="col-xs-6 label-select">
  1129.          <span><span data-ts="pvgis.simulator.forms.solar_radiation_database"> Solar radiation database</span><span
  1130.              class="text-danger">*</span></span>
  1131.        </div>
  1132.        <div class="col-xs-6">
  1133.          <select aria-label="selectdbTracking" name="db" id="selectdbTracking" class="form-control text-uppercase sr-db">
  1134.  
  1135.          </select>
  1136.        </div>
  1137.      </div>
  1138.      <div class="row select">
  1139.        <div class="col-xs-6 label-select">
  1140.          <span><span data-ts="pvgis.simulator.forms.pv_technology">PV technology</span><span
  1141.              class="text-danger">*</span></span>
  1142.        </div>
  1143.        <div class="col-xs-6">
  1144.          <select aria-label="pvtechchoice" name="pvtechchoice" class="form-control text-uppercase">
  1145.            <option value="crystSi" class="text-uppercase" data-ts="pvgis.simulator.forms.crystalline_silicon">
  1146.              crystalline sillicon
  1147.            </option>
  1148.            <option value="CIS" class="text-uppercase">cis</option>
  1149.            <option value="CdTe" class="text-uppercase">cdte</option>
  1150.            <option data-ts="pvgis.simulator.forms.unknown" value="Unknown" class="text-uppercase">unknown</option>
  1151.          </select>
  1152.        </div>
  1153.      </div>
  1154.      <div class="row select">
  1155.        <div class="col-xs-9 label-select">
  1156.          <span>
  1157.            <span class="pvgis.simulator.forms.peak_pv_power">Installed peak PV power</span> [kWp]
  1158.            <span class="text-danger">*</span>
  1159.          </span>
  1160.        </div>
  1161.        <div class="col-xs-3">
  1162.          <input type="number" aria-label="peakpower" min="0" class="form-control" name="peakpower" value="1" />
  1163.        </div>
  1164.      </div>
  1165.      <div class="row select">
  1166.        <div class="col-xs-9 label-select">
  1167.          <span>
  1168.            <span class="pvgis.simulator.forms.system_loss">System loss</span> [%]
  1169.            <span class="text-danger">*</span>
  1170.          </span>
  1171.        </div>
  1172.        <div class="col-xs-3">
  1173.          <input type="number" aria-label="loss" min="0" class="form-control" name="loss" value="14" />
  1174.        </div>
  1175.      </div>
  1176.      <div class="row">
  1177.        <div class="col-xs-6">
  1178.          <b data-ts="pvgis.simulator.forms.tracking_mounting_option">Tracking mounting options</b>
  1179.        </div>
  1180.      </div>
  1181.      <div class="row">
  1182.        <div class="col-xs-6 label-select mobile-100">
  1183.          <input type="checkbox" aria-label="vertical_axis" class="checkboxSimulator" name="vertical_axis" id="tmoverticalax" value="1" />
  1184.          <label for="tmoverticalax" class="labelThin" data-ts="pvgis.simulator.forms.vertical_axis">Vertical axis</label>
  1185.        </div>
  1186.        <div class="col-xs-3 label-select mobile-75" data-ts="pvgis.extranet.file_info.slope">Slope [°]</div>
  1187.        <div class="col-xs-3">
  1188.          <input type="number" aria-label="verticalaxisangle" min="0" max="90" class="form-control" name="verticalaxisangle" id="tmoverticalangle"
  1189.            placeholder="(0-90)" />
  1190.        </div>
  1191.        <div class="col-xs-3 label-select mobile-100">
  1192.          <input type="checkbox" aria-label="vertical_optimum" name="vertical_optimum" id="tmooptimalax" value="1" />
  1193.          <label for="tmooptimalax" data-ts="pvgis.simulator.forms.optimize">Optimize</label>
  1194.        </div>
  1195.        <div class="row">
  1196.          <span id="slope-error-4" style="color: red; display: none;margin-left:140px" data-ts="pvgis.slope_validation_error">Please enter a value between 0 and 90.</span>
  1197.        </div>
  1198.      </div>
  1199.      <p></p>
  1200.      <div class="row">
  1201.        <div class="col-xs-6 label-select mobile-100">
  1202.          <input type="checkbox" aria-label="inclined_axis" class="checkboxSimulator" name="inclined_axis" id="tmoinclinedax" value="1" />
  1203.          <label for="tmoinclinedax" class="labelThin" data-ts="pvgis.simulator.forms.inclined_axis">Inclined axis</label>
  1204.        </div>
  1205.        <div class="col-xs-3 label-select mobile-75"><span data-ts="pvgis.simulator.forms.slope">Slope</span> [°]</div>
  1206.        <div class="col-xs-3">
  1207.          <input type="number" aria-label="inclinedaxisangle" min="0" class="form-control" name="inclinedaxisangle" id="tmoinclinedaxangle"
  1208.            placeholder="(0-90)" />
  1209.        </div>
  1210.        <div class="col-xs-3 label-select mobile-100">
  1211.          <input type="checkbox" aria-label="inclined_optimum" name="inclined_optimum" id="tmooptimalinclined" value="1" />
  1212.          <label for="tmooptimalinclined" data-ts="pvgis.simulator.forms.optimize">Optimize</label>
  1213.        </div>
  1214.        <div class="row">
  1215.          <span id="slope-error-5" style="color: red; display: none;margin-left:140px" data-ts="pvgis.slope_validation_error">Please enter a value between 0 and 90.</span>
  1216.        </div>
  1217.      </div>
  1218.      <p></p>
  1219.      <div class="row">
  1220.        <div class="col-xs-3 label-select mobile-100">
  1221.          <input type="checkbox" aria-label="twoaxis" class="checkboxSimulator" name="twoaxis" id="tmotwo" value="1" />
  1222.          <label for="tmotwo" class="labelThin" data-ts="pvgis.simulator.forms.two_axis">Two axis
  1223.          </label>
  1224.        </div>
  1225.      </div>
  1226.    </div>
  1227.  </form>
  1228. </div>                                            </div>
  1229.                                            <div id="off-grid-tab" class="tab-pane fade">
  1230.                                                <div class="data-content">
  1231.  <div class="t_tool-content" style="padding-left: 3px !important; padding-right: 3px !important;">
  1232.    <span class="text-white"><i class="fas fa-car-battery fa-lg"></i></span>
  1233.    <h4 class="text-uppercase text-white font-bold">
  1234.      <span
  1235.        data-ts="pvgis.simulator.forms.performance_offgrid_pv_systems">performance of off-grid pv systems</span>
  1236.    </h4>
  1237.    <span class="text-white" role="button" data-toggle="modal" data-target="#ogTooltip" aria-label="ogTooltip"><i class="fas fa-question-circle fa-lg"></i></span>
  1238.    <div class="modal fade" id="ogTooltip" role="dialog">
  1239.      <div class="modal-dialog">
  1240.        <div class="modal-content">
  1241.          <div class="modal-header">
  1242.            <span role="button" class="close" data-dismiss="modal">&times;</span>
  1243.            <h4 class="modal-title text-uppercase" data-ts="pvgis.simulator.forms.performance_offgrid_pv_systems">performance of off-grid pv systems</h4>
  1244.          </div>
  1245.          <div class="modal-body">
  1246.            <p data-ts="pvgis.simulator.forms.og_tooltip">This part of PVGIS calculates the performance of PV systems that are not connected to the electricity grid but instead rely on battery storage to supply energy when the sun is not shining. The calculation uses information about the daily variation in electricity consumption for the system to simulate the flow of energy to the users and into and out of the battery.</p>
  1247.          </div>
  1248.        </div>
  1249.      </div>
  1250.    </div>
  1251.  </div>
  1252.  <form id="offgridForm">
  1253.    <div class="form-group padding-right">
  1254.      <div class="row select">
  1255.        <div class="col-xs-6 label-select">
  1256.          <span><span data-ts="pvgis.simulator.forms.solar_radiation_database">Solar radiation database</span><span
  1257.              class="text-danger">*</span></span>
  1258.        </div>
  1259.        <div class="col-xs-6">
  1260.          <select aria-label="selectdboffgrid" name="db" id="selectdboffgrid" class="form-control text-uppercase sr-db">
  1261.  
  1262.          </select>
  1263.        </div>
  1264.      </div>
  1265.      <div class="row select">
  1266.        <div class="col-xs-9 label-select">
  1267.          <span><span data-ts="pvgis.simulator.forms.peak_pv_power">Installed peak PV power</span> [Wp]<span
  1268.              class="text-danger">*</span></span>
  1269.        </div>
  1270.        <div class="col-xs-3">
  1271.          <input type="number" aria-label="peakpower" min="0" class="form-control text-right" name="peakpower" value="50" />
  1272.        </div>
  1273.      </div>
  1274.      <div class="row select">
  1275.        <div class="col-xs-9 label-select">
  1276.          <span><span data-ts="pvgis.simulator.forms.battery_capacity">Battery capacity</span> [Wh]<span
  1277.              class="text-danger">*</span></span>
  1278.        </div>
  1279.        <div class="col-xs-3">
  1280.          <input type="number" aria-label="batterycapacity" min="0" class="form-control text-right" name="batterycapacity" value="600" />
  1281.        </div>
  1282.      </div>
  1283.      <div class="row select">
  1284.        <div class="col-xs-9 label-select">
  1285.          <span><span data-ts="pvgis.simulator.forms.discharge_cutoff_limit"> Discharge cutoff limit</span> [%]<span
  1286.              class="text-danger">*</span></span>
  1287.        </div>
  1288.        <div class="col-xs-3">
  1289.          <input type="number" aria-label="discharge" min="0" class="form-control text-right" name="discharge" value="40" />
  1290.        </div>
  1291.      </div>
  1292.      <div class="row select">
  1293.        <div class="col-xs-9 label-select">
  1294.          <span><span data-ts="pvgis.simulator.forms.consumption_per_day">Consumption per day</span> [Wh]<span
  1295.              class="text-danger">*</span></span>
  1296.        </div>
  1297.        <div class="col-xs-3">
  1298.          <input type="number" aria-label="consumptionperday" min="0" class="form-control text-right" name="consumptionperday" value="300" />
  1299.        </div>
  1300.      </div>
  1301.      <div class="row select">
  1302.        <div class="col-xs-6 label-select">
  1303.          <input type="checkbox" aria-label="consumptionFile" class="checkboxSimulator" name="consumptionFile" id="consumptionFile" value="consumptionFile" />
  1304.          <label for="consumptionFile" class="labelThin" data-ts="pvgis.simulator.forms.upload_consumption_data">Upload consumption data</label>
  1305.        </div>
  1306.        <div class="col-xs-6 abel-select">
  1307.          <input type="file" name="consumptionFileInput" id="consumptionFileInput"
  1308.            onchange="readFileAndSetHiddenValue('consumptionFileInput','hourconsumption', consumptionDayFormatter)" />
  1309.          <input type="hidden" id="hourconsumption" />
  1310.        </div>
  1311.      </div>
  1312.      <div class="row select">
  1313.        <div class="col-xs-9 label-select">
  1314.          <span><span data-ts="pvgis.simulator.forms.slope">Slope</span> [°]<span class="text-danger">*</span></span>
  1315.        </div>
  1316.        <div class="col-xs-3">
  1317.          <input type="number" aria-label="shsangle" min="0" max="90" class="form-control text-right" id="shsangle" name="shsangle" value="35" />
  1318.        </div>
  1319.        <div class="row">
  1320.          <span id="slope-error-2" style="color: red; display: none;margin-left:285px" data-ts="pvgis.slope_validation_error">Please enter a value between 0 and 90.</span>
  1321.        </div>
  1322.      </div>
  1323.      <div class="row select">
  1324.        <div class="col-xs-9 label-select">
  1325.          <span><span data-ts="pvgis.simulator.forms.azimuth">Azimuth</span> [°]<span class="text-danger">*</span></span>
  1326.        </div>
  1327.        <div class="col-xs-3">
  1328.          <input type="number" aria-label="shsaspect" class="form-control text-right" name="shsaspect" value="0" />
  1329.        </div>
  1330.      </div>
  1331.    </div>
  1332.  </form>
  1333. </div>                                            </div>
  1334.                                            <div id="monthly-tab" class="tab-pane fade">
  1335.                                                <div class="data-content">
  1336.  <div class="t_data-content">
  1337.    <span class="text-white"><i class="fas fa-calendar-check fa-lg"></i></span>
  1338.    <h4 class="text-uppercase text-white font-bold">
  1339.      <span data-ts="pvgis.simulator.forms.monthly_irradiation_data">monthly irradiation data</span>
  1340.    </h4>
  1341.    <span class="text-white" role="button" data-toggle="modal" data-target="#monthlyTooltip" aria-label="monthlyTooltip"><i class="fas fa-question-circle fa-lg"></i></span>
  1342.    <div class="modal fade" id="monthlyTooltip" role="dialog">
  1343.      <div class="modal-dialog">
  1344.        <div class="modal-content">
  1345.          <div class="modal-header">
  1346.            <span role="button" class="close" data-dismiss="modal">&times;</span>
  1347.            <h4 class="modal-title text-uppercase" data-ts="pvgis.simulator.forms.monthly_irradiation_data">monthly irradiation data</h4>
  1348.          </div>
  1349.          <div class="modal-body">
  1350.            <p data-ts="pvgis.simulator.forms.monthly_tooltip">Here we calculate the monthly averages of solar radiation for the chosen location, showing in graphs or tables how the average solar irradiation varies over a multi-year period. The results are given for radiation on horizontal and/or inclined planes, as well as Direct Normal Irradiation (DNI).</p>
  1351.          </div>
  1352.        </div>
  1353.      </div>
  1354.    </div>
  1355.  </div>
  1356.  <div class="form-group padding-right">
  1357.    <form id="monthlyForm">
  1358.      <div class="row select">
  1359.        <div class="col-xs-6 label-select">
  1360.          <span><span data-ts="pvgis.simulator.forms.solar_radiation_database">Solar radiation database</span><span
  1361.              class="text-danger">*</span></span>
  1362.        </div>
  1363.        <div class="col-xs-6">
  1364.          <select aria-label="selectdbmonthly" name="db" id="selectdbmonthly" class="form-control text-uppercase sr-db">
  1365.  
  1366.          </select>
  1367.        </div>
  1368.      </div>
  1369.      <div class="row select">
  1370.        <div class="col-xs-3 label-select mobile-65">
  1371.          <span><span data-ts="pvgis.simulator.forms.start_year"> Start year</span><span class="text-danger">*</span></span>
  1372.        </div>
  1373.        <div class="col-xs-3 mobile-35">
  1374.          <select aria-label="startyear" name="startyear" class="form-control text-uppercase">
  1375.            <option value="2005" class="text-uppercase">2005</option>
  1376.            <option value="2006" class="text-uppercase">2006</option>
  1377.            <option value="2007" class="text-uppercase">2007</option>
  1378.            <option value="2008" class="text-uppercase">2008</option>
  1379.            <option value="2009" class="text-uppercase">2009</option>
  1380.            <option value="2010" class="text-uppercase">2010</option>
  1381.            <option value="2011" class="text-uppercase">2011</option>
  1382.            <option value="2012" class="text-uppercase">2012</option>
  1383.            <option value="2013" class="text-uppercase">2013</option>
  1384.            <option value="2014" class="text-uppercase">2014</option>
  1385.            <option value="2015" class="text-uppercase">2015</option>
  1386.            <option value="2016" class="text-uppercase">2016</option>
  1387.            <option value="2017" class="text-uppercase">2017</option>
  1388.            <option value="2018" class="text-uppercase">2018</option>
  1389.            <option value="2019" class="text-uppercase">2019</option>
  1390.            <option value="2020" class="text-uppercase">2020</option>
  1391.          </select>
  1392.        </div>
  1393.        <div class="col-xs-3 label-select mobile-65 top-10">
  1394.          <span><span data-ts="pvgis.simulator.forms.end_year">End year</span><span class="text-danger">*</span></span>
  1395.        </div>
  1396.        <div class="col-xs-3 top-10 mobile-35">
  1397.          <select aria-label="endyear" name="endyear" class="form-control text-uppercase">
  1398.            <option value="2005" class="text-uppercase">2005</option>
  1399.            <option value="2006" class="text-uppercase">2006</option>
  1400.            <option value="2007" class="text-uppercase">2007</option>
  1401.            <option value="2008" class="text-uppercase">2008</option>
  1402.            <option value="2009" class="text-uppercase">2009</option>
  1403.            <option value="2010" class="text-uppercase">2010</option>
  1404.            <option value="2011" class="text-uppercase">2011</option>
  1405.            <option value="2012" class="text-uppercase">2012</option>
  1406.            <option value="2013" class="text-uppercase">2013</option>
  1407.            <option value="2014" class="text-uppercase">2014</option>
  1408.            <option value="2015" class="text-uppercase">2015</option>
  1409.            <option value="2016" class="text-uppercase">2016</option>
  1410.            <option value="2017" class="text-uppercase">2017</option>
  1411.            <option value="2018" class="text-uppercase">2018</option>
  1412.            <option value="2019" class="text-uppercase">2019</option>
  1413.            <option value="2020" class="text-uppercase">2020</option>
  1414.          </select>
  1415.        </div>
  1416.      </div>
  1417.      <div class="row">
  1418.        <div class="col-xs-6">
  1419.          <b data-ts="pvgis.simulator.forms.irradiation">Irradiation</b>
  1420.        </div>
  1421.      </div>
  1422.      <div class="row">
  1423.        <div class="col-xs-6 label-select">
  1424.          <input type="checkbox" aria-label="horirrad" class="checkboxSimulator" name="horirrad" id="horirrad" value="1" />
  1425.          <label for="horirrad" class="labelThin" data-ts="pvgis.simulator.forms.global_horizontal_irradiation">Global horizontal irradiation</label>
  1426.        </div>
  1427.      </div>
  1428.      <div class="row">
  1429.        <div class="col-xs-6 label-select">
  1430.          <input type="checkbox" aria-label="mr_dni" class="checkboxSimulator" name="mr_dni" id="mr_dni" value="1" />
  1431.          <label for="mr_dni" class="labelThin" data-ts="pvgis.simulator.forms.direct_normal_irradiation">Direct Normal Irradiation</label>
  1432.        </div>
  1433.      </div>
  1434.      <div class="row">
  1435.        <div class="col-xs-7 label-select">
  1436.          <input type="checkbox" aria-label="optrad" class="checkboxSimulator" name="optrad" id="optrad" value="1" />
  1437.          <label for="optrad" class="labelThin" data-ts="pvgis.simulator.forms.global_irradiation_optimum_angle">Global irradiation optimum angle</label>
  1438.        </div>
  1439.      </div>
  1440.      <div class="row">
  1441.        <div class="col-xs-9 label-select mobile-71">
  1442.          <input type="checkbox" aria-label="selectrad" class="checkboxSimulator" name="selectrad" id="selectrad" value="1" />
  1443.          <label for="selectrad" class="labelThin" data-ts="pvgis.simulator.forms.global_irradiation_at_angle">Global irradiation at angle</label>
  1444.        </div>
  1445.        <div class="col-xs-3 mobile-29">
  1446.          <input type="number" aria-label="angle" min="0" class="form-control" id="mangle" name="angle" placeholder="(0-90)" />
  1447.        </div>
  1448.      </div>
  1449.      <div class="row">
  1450.        <span id="slope-error-7" style="color: red; display: none;margin-left:275px" data-ts="pvgis.slope_validation_error">Please enter a value between 0 and 90.</span>
  1451.      </div>
  1452.      <p></p>
  1453.      <div class="row">
  1454.        <div class="col-xs-6">
  1455.          <b data-ts="pvgis.simulator.forms.ratio">Ratio</b>
  1456.        </div>
  1457.      </div>
  1458.      <div class="row">
  1459.        <div class="col-xs-6 label-select">
  1460.          <input type="checkbox" aria-label="d2g" class="checkboxSimulator" name="d2g" id="d2g" value="1" />
  1461.          <label for="d2g" class="labelThin" data-ts="pvgis.simulator.forms.diffuse_global_ratio">Diffuse/global ratio</label>
  1462.        </div>
  1463.      </div>
  1464.      <p></p>
  1465.      <div class="row">
  1466.        <div class="col-xs-6">
  1467.          <b data-ts="pvgis.simulator.forms.temperature">Temperature</b>
  1468.        </div>
  1469.      </div>
  1470.      <div class="row">
  1471.        <div class="col-xs-6 label-select">
  1472.          <input type="checkbox" aria-label="avtemp" class="checkboxSimulator" name="avtemp" id="avtemp" value="1" />
  1473.          <label for="avtemp" class="labelThin" data-ts="pvgis.simulator.forms.average_temperature">Average temperature</label>
  1474.        </div>
  1475.      </div>
  1476.    </form>
  1477.  </div>
  1478. </div>                                            </div>
  1479.                                            <div id="daily-tab" class="tab-pane fade">
  1480.                                                <div class="data-content">
  1481.  <div class="t_data-content">
  1482.    <span class="text-white"><i class="fas fa-radiation-alt fa-lg"></i></span>
  1483.    <h4 class="text-uppercase text-white font-bold">
  1484.      <span data-ts="pvgis.simulator.forms.average_daily_irradiance_data">average daily irradiance data</span>
  1485.    </h4>
  1486.    <span class="text-white" role="button" data-toggle="modal" data-target="#dailyTooltip" aria-label="dailyTooltip"><i class="fas fa-question-circle fa-lg"></i></span>
  1487.    <div class="modal fade" id="dailyTooltip" role="dialog">
  1488.      <div class="modal-dialog">
  1489.        <div class="modal-content">
  1490.          <div class="modal-header">
  1491.            <span role="button" class="close" data-dismiss="modal">&times;</span>
  1492.            <h4 class="modal-title text-uppercase" data-ts="pvgis.simulator.forms.average_daily_irradiance_data">average daily irradiance data</h4>
  1493.          </div>
  1494.          <div class="modal-body">
  1495.            <p data-ts="pvgis.simulator.forms.daily_tooltip">In this section of PVGIS we show the average solar irradiation for each hour during the day for a chosen month, with the average taken over all days in that month during the multi-year time period for which we have data. In addition to calculating the average of the solar radiation the daily radiation application also calculates the daily variation in the clear-sky radiation, both for fixed and for 2-axis sun-tracking surfaces.</p>
  1496.          </div>
  1497.        </div>
  1498.      </div>
  1499.    </div>
  1500.  </div>
  1501.  <div class="form-group padding-right">
  1502.    <form id="dailyForm">
  1503.      <div class="row select">
  1504.        <div class="col-xs-6 label-select">
  1505.          <span><span data-ts="pvgis.simulator.forms.solar_radiation_database">Solar radiation database</span><span
  1506.              class="text-danger">*</span></span>
  1507.        </div>
  1508.        <div class="col-xs-6">
  1509.          <select aria-label="selectdbDaily" name="db" id="selectdbDaily" class="form-control text-uppercase sr-db">
  1510.  
  1511.          </select>
  1512.        </div>
  1513.      </div>
  1514.      <div class="row select">
  1515.        <div class="col-xs-6 label-select">
  1516.          <span><span data-ts="month">Month</span><span class="text-danger">*</span></span>
  1517.        </div>
  1518.        <div class="col-xs-6 form-group">
  1519.          <select aria-label="month" name="month" class="form-control text-uppercase">
  1520.            <option value="1" class="text-uppercase" data-ts="months.january">january</option>
  1521.            <option value="2" class="text-uppercase" data-ts="months.february">february</option>
  1522.            <option value="3" class="text-uppercase" data-ts="months.march">march</option>
  1523.            <option value="4" class="text-uppercase" data-ts="months.april">april</option>
  1524.            <option value="5" class="text-uppercase" data-ts="months.may">may</option>
  1525.            <option value="6" class="text-uppercase" data-ts="months.june">june</option>
  1526.            <option value="7" class="text-uppercase" data-ts="months.july">july</option>
  1527.            <option value="8" class="text-uppercase" data-ts="months.august">august</option>
  1528.            <option value="9" class="text-uppercase" data-ts="months.september">september</option>
  1529.            <option value="10" class="text-uppercase" data-ts="months.october">october</option>
  1530.            <option value="11" class="text-uppercase" data-ts="months.november">november</option>
  1531.            <option value="12" class="text-uppercase" data-ts="months.december">december</option>
  1532.          </select>
  1533.        </div>
  1534.      </div>
  1535.      <div class="row">
  1536.        <div class="col-xs-6 label-select">
  1537.          <input type="radio" aria-label="utc" id="utc" name="localtime" value="0" checked />
  1538.          <label for="utc" class="labelThin" data-ts="pvgis.simulator.forms.utc_time">UTC time</label>
  1539.        </div>
  1540.        <div class="col-xs-6 label-select">
  1541.          <input type="radio" aria-label="local" id="local" name="localtime" value="1" />
  1542.          <label for="local" class="labelThin" data-ts="pvgis.simulator.forms.local_time">Local time</label>
  1543.        </div>
  1544.      </div>
  1545.      <p></p>
  1546.      <div class="row">
  1547.        <div class="col-xs-6">
  1548.          <b data-ts="pvgis.simulator.forms.on_fixed_plane">On fixed plane</b>
  1549.        </div>
  1550.      </div>
  1551.      <div class="row">
  1552.        <div class="col-xs-6 label-select">
  1553.          <input type="checkbox" aria-label="isGlobal" class="checkboxSimulator" id="ofpglobal" name="isGlobal" value="1" />
  1554.          <label for="ofpglobal" class="labelThin" data-ts="pvgis.simulator.forms.irradiance">Irradiance</label>
  1555.        </div>
  1556.      </div>
  1557.      <div class="row">
  1558.        <div class="col-xs-6 label-select">
  1559.          <input type="checkbox" aria-label="clearsky" class="checkboxSimulator" id="ofpclearsky" name="clearsky" value="1" />
  1560.          <label for="ofpclearsky" class="labelThin" data-ts="pvgis.simulator.forms.clear_sky_irradiance">Clear-sky irradiance</label>
  1561.        </div>
  1562.      </div>
  1563.      <div class="row select">
  1564.        <div class="col-xs-3 label-select mobile-75">
  1565.          <span><span data-ts="pvgis.simulator.forms.slope">Slope</span> [°]<span class="text-danger">*</span></span>
  1566.        </div>
  1567.        <div class="col-xs-3">
  1568.          <input type="number" aria-label="angle" min="0" max="90" class="form-control text-right" id="ofpdangle" name="angle" value="35" />
  1569.        </div>
  1570.      </div>
  1571.      <div class="row">
  1572.        <span id="slope-error-6" style="color: red; display: none;margin-left:145px" data-ts="pvgis.slope_validation_error">Please enter a value between 0 and 90.</span>
  1573.      </div>
  1574.      <div class="row select">
  1575.        <div class="col-xs-3 label-select mobile-75">
  1576.          <span><span data-ts="pvgis.simulator.forms.azimuth">Azimuth</span> [°]<span class="text-danger">*</span></span>
  1577.        </div>
  1578.        <div class="col-xs-3">
  1579.          <input type="number" aria-label="aspect" class="form-control text-right" id="ofpdaspect" name="aspect" value="0" />
  1580.        </div>
  1581.      </div>
  1582.      <div class="row">
  1583.        <span id="azimuth-error-2" style="color: red; display: none;margin-left:145px" data-ts="pvgis.simulator.forms.azimuth-error">Value must be between -180 and 180.</span>
  1584.      </div>
  1585.      <p></p>
  1586.      <div class="row">
  1587.        <div class="col-xs-6">
  1588.          <b data-ts="pvgis.simulator.forms.on_sun_tracking_pane">On sun-tracking plane</b>
  1589.        </div>
  1590.      </div>
  1591.      <div class="row">
  1592.        <div class="col-xs-6 label-select">
  1593.          <input type="checkbox" aria-label="glob_2axis" class="checkboxSimulator" id="glob_2axis" name="glob_2axis" value="1" />
  1594.          <label for="glob_2axis" class="labelThin" data-ts="pvgis.simulator.forms.irradiance">Irradiance</label>
  1595.        </div>
  1596.      </div>
  1597.      <div class="row">
  1598.        <div class="col-xs-6 label-select">
  1599.          <input type="checkbox" aria-label="clearsky_2axis" class="checkboxSimulator" id="clearsky_2axis" name="clearsky_2axis" value="1" />
  1600.          <label for="clearsky_2axis" class="labelThin" data-ts="pvgis.simulator.forms.clear_sky_irradiance">Clear-sky irradiance</label>
  1601.        </div>
  1602.      </div>
  1603.      <p></p>
  1604.      <div class="row">
  1605.        <div class="col-xs-6">
  1606.          <b data-ts="pvgis.simulator.forms.temperature">Temperature</b>
  1607.        </div>
  1608.      </div>
  1609.      <div class="row">
  1610.        <div class="col-xs-6 label-select">
  1611.          <input type="checkbox" aria-label="showtemperatures" class="checkboxSimulator" id="showtemperatures" name="showtemperatures" value="1" />
  1612.          <label for="showtemperatures" class="labelThin" data-ts="pvgis.simulator.forms.daily_temperature_profile">Daily temperature profile</label>
  1613.        </div>
  1614.      </div>
  1615.    </form>
  1616.  </div>
  1617. </div>                                            </div>
  1618.                                            <div id="hourly-tab" class="tab-pane fade">
  1619.                                                <div class="data-content">
  1620.  <div class="t_data-content">
  1621.    <span class="text-white"><i class="fas fa-hourglass-half fa-lg"></i></span>
  1622.    <h4 class="text-uppercase text-white font-bold">
  1623.      <span data-ts="pvgis.simulator.forms.hourly_radiation_data">hourly radiation data</span>
  1624.    </h4>
  1625.    <span class="text-white" role="button" data-toggle="modal" data-target="#hourlyTooltip" aria-label="hourlyTooltip"><i class="fas fa-question-circle fa-lg"></i></span>
  1626.    <div class="modal fade" id="hourlyTooltip" role="dialog">
  1627.      <div class="modal-dialog">
  1628.        <div class="modal-content">
  1629.          <div class="modal-header">
  1630.            <span role="button" class="close" data-dismiss="modal">&times;</span>
  1631.            <h4 class="modal-title text-uppercase" data-ts="pvgis.simulator.forms.hourly_radiation_data">hourly radiation data</h4>
  1632.          </div>
  1633.          <div class="modal-body">
  1634.            <p data-ts="pvgis.simulator.forms.hourly_tooltip">The solar radiation data used by PVGIS consists of values for every hour over a period of several years, based on data from satellites and reanalysis. This part of PVGIS makes it possible to download the full set of hourly data for solar radiation and/or PV output power for the chosen location. Unlike the other parts of PVGIS, the data will not be shown as graphs but will be available for download only.</p>
  1635.          </div>
  1636.        </div>
  1637.      </div>
  1638.    </div>
  1639.  </div>
  1640.  <div class="form-group padding-right">
  1641.    <form id="hourlyForm">
  1642.      <div class="row select">
  1643.        <div class="col-xs-6 label-select">
  1644.          <span><span data-ts="pvgis.simulator.forms.solar_radiation_database">Solar radiation database</span><span
  1645.              class="text-danger">*</span></span>
  1646.        </div>
  1647.        <div class="col-xs-6">
  1648.          <select aria-label="selectdbhourly" name="db" id="selectdbhourly" class="form-control text-uppercase sr-db">
  1649.  
  1650.          </select>
  1651.        </div>
  1652.      </div>
  1653.      <div class="row select">
  1654.        <div class="col-xs-3 label-select mobile-65">
  1655.          <span><span data-ts="pvgis.simulator.forms.start_year">Start year</span><span class="text-danger">*</span></span>
  1656.        </div>
  1657.        <div class="col-xs-3 mobile-35">
  1658.          <select aria-label="startyear" name="startyear" class="form-control text-uppercase">
  1659.            <option value="2005" class="text-uppercase">2005</option>
  1660.            <option value="2006" class="text-uppercase">2006</option>
  1661.            <option value="2007" class="text-uppercase">2007</option>
  1662.            <option value="2008" class="text-uppercase">2008</option>
  1663.            <option value="2009" class="text-uppercase">2009</option>
  1664.            <option value="2010" class="text-uppercase">2010</option>
  1665.            <option value="2011" class="text-uppercase">2011</option>
  1666.            <option value="2012" class="text-uppercase">2012</option>
  1667.            <option value="2013" class="text-uppercase">2013</option>
  1668.            <option value="2014" class="text-uppercase">2014</option>
  1669.            <option value="2015" class="text-uppercase">2015</option>
  1670.            <option value="2016" class="text-uppercase">2016</option>
  1671.            <option value="2017" class="text-uppercase">2017</option>
  1672.            <option value="2018" class="text-uppercase">2018</option>
  1673.            <option value="2019" class="text-uppercase">2019</option>
  1674.            <option value="2020" class="text-uppercase">2020</option>
  1675.          </select>
  1676.        </div>
  1677.        <div class="col-xs-3 label-select mobile-65 top-10">
  1678.          <span><span data-ts="pvgis.simulator.forms.end_year">End year</span><span class="text-danger">*</span></span>
  1679.        </div>
  1680.        <div class="col-xs-3 top-10 mobile-35">
  1681.          <select aria-label="endyear" name="endyear" class="form-control text-uppercase">
  1682.            <option value="2005" class="text-uppercase">2005</option>
  1683.            <option value="2006" class="text-uppercase">2006</option>
  1684.            <option value="2007" class="text-uppercase">2007</option>
  1685.            <option value="2008" class="text-uppercase">2008</option>
  1686.            <option value="2009" class="text-uppercase">2009</option>
  1687.            <option value="2010" class="text-uppercase">2010</option>
  1688.            <option value="2011" class="text-uppercase">2011</option>
  1689.            <option value="2012" class="text-uppercase">2012</option>
  1690.            <option value="2013" class="text-uppercase">2013</option>
  1691.            <option value="2014" class="text-uppercase">2014</option>
  1692.            <option value="2015" class="text-uppercase">2015</option>
  1693.            <option value="2016" class="text-uppercase">2016</option>
  1694.            <option value="2017" class="text-uppercase">2017</option>
  1695.            <option value="2018" class="text-uppercase">2018</option>
  1696.            <option value="2019" class="text-uppercase">2019</option>
  1697.            <option value="2020" class="text-uppercase">2020</option>
  1698.          </select>
  1699.        </div>
  1700.      </div>
  1701.      <div class="row">
  1702.        <div class="col-xs-6">
  1703.          <b><span data-ts="pvgis.simulator.forms.mounting_type">Mounting type</span><span class="text-danger">*</span></b>
  1704.        </div>
  1705.      </div>
  1706.      <div class="row">
  1707.        <div class="col-xs-6 label-select mobile-100">
  1708.          <input type="radio" aria-label="fixed" name="trackingtype" id="fixed" value="0" checked /> <label for="fixed" data-ts="pvgis.simulator.forms.fixed">Fixed</label>
  1709.        </div>
  1710.        <div class="col-xs-6 label-select  mobile-100">
  1711.          <input type="radio" aria-label="vertical" name="trackingtype" id="vertical" value="3" /> <label for="vertical" data-ts="pvgis.simulator.forms.vertical_axis">Vertical
  1712.            axis</label>
  1713.        </div>
  1714.        <div class="col-xs-6 label-select  mobile-100">
  1715.          <input type="radio" aria-label="inclined" name="trackingtype" id="inclined" value="5" /> <label for="inclined" data-ts="pvgis.simulator.forms.inclined_axis">Inclined
  1716.            axis</label>
  1717.        </div>
  1718.        <div class="col-xs-6 label-select  mobile-100">
  1719.          <input type="radio" aria-label="two" name="trackingtype" id="two" value="2" /> <label for="two" data-ts="pvgis.simulator.forms.two_axis">Two axis</label>
  1720.        </div>
  1721.      </div>
  1722.      <p></p>
  1723.      <div class="row">
  1724.        <div class="col-xs-3 label-select mobile-65">
  1725.          <span><span data-ts="pvgis.simulator.forms.slope">Slope</span> [°]</span>
  1726.        </div>
  1727.        <div class="col-xs-3 mobile-35">
  1728.          <input type="number" aria-label="hourlyangle" min="0" max="90" class="form-control" name="hourlyangle" id="hourlyangle" placeholder="(0-90)"
  1729.            required />
  1730.        </div>
  1731.        <div class="col-xs-6 label-select">
  1732.          <input type="checkbox" aria-label="hourlyoptimalinclination" class="hourlyoptimal" name="hourlyoptimalinclination" id="hourlyoptimalinclination"
  1733.            value="1" />
  1734.          <label for="hourlyoptimalinclination" data-ts="pvgis.simulator.forms.optimize_slope">Optimize slope</label>
  1735.        </div>
  1736.  
  1737.      </div>
  1738.      <div class="row">
  1739.        <span id="slope-error-3" style="color: red; display: none;margin-left:145px" data-ts="pvgis.slope_validation_error">Please enter a value between 0 and 90.</span>
  1740.      </div>
  1741.      <p></p>
  1742.      <div class="row">
  1743.        <div class="col-xs-3 label-select mobile-65">
  1744.          <span><span data-ts="pvgis.simulator.forms.azimuth">Azimuth</span> [°]</span>
  1745.        </div>
  1746.        <div class="col-xs-3 mobile-35">
  1747.          <input
  1748.            type="number"
  1749.            class="form-control"
  1750.            name="hourlyaspect"
  1751.            id="hourlyaspect"
  1752.            placeholder="(-180-180)"
  1753.            required />
  1754.        </div>
  1755.        <div class="col-xs-6 label-select">
  1756.          <input type="checkbox" aria-label="hourlyoptimalangles" class="hourlyoptimal" name="hourlyoptimalangles" id="hourlyoptimalangles" value="1" />
  1757.          <label for="hourlyoptimalangles" data-ts="pvgis.simulator.forms.optimize_slope_and_azimuth">Optimize slope and azimuth</label>
  1758.        </div>
  1759.      </div>
  1760.      <div class="row">
  1761.        <span id="azimuth-error-3" style="color: red; display: none;margin-left:145px" data-ts="pvgis.simulator.forms.azimuth-error">Value must be between -180 and 180.</span>
  1762.      </div>
  1763.      <p></p>
  1764.      <div class="row">
  1765.        <div class="col-xs-6">
  1766.          <input type="checkbox" aria-label="pvcalculation" class="checkboxSimulator" name="pvcalculation" id="pvwpvcalculation" value="1" />
  1767.          <label for="pvwpvcalculation" data-ts="pvgis.simulator.forms.pv_power">PV power</label>
  1768.        </div>
  1769.      </div>
  1770.      <div class="row select">
  1771.        <div class="col-xs-6 label-select">
  1772.          <span data-ts="pvgis.simulator.forms.pv_technology">PV technology</span>
  1773.        </div>
  1774.        <div class="col-xs-6">
  1775.          <select aria-label="pvtechchoice" name="pvtechchoice" id="pvwpvtechchoice" class="form-control text-uppercase">
  1776.            <option value="crystSi" class="text-uppercase" data-ts="pvgis.simulator.forms.crystalline_silicon">
  1777.              crystalline sillicon
  1778.            </option>
  1779.            <option value="CIS" class="text-uppercase">cis</option>
  1780.            <option value="CdTe" class="text-uppercase">cdte</option>
  1781.            <option data-ts="pvgis.simulator.forms.unknown" value="Unknown" class="text-uppercase">unknown</option>
  1782.          </select>
  1783.        </div>
  1784.      </div>
  1785.      <div class="row select">
  1786.        <div class="col-xs-9 label-select">
  1787.          <span><span data-ts="pvgis.simulator.forms.peak_pv_power">Installed peak PV power</span> [kWp]</span>
  1788.        </div>
  1789.        <div class="col-xs-3">
  1790.          <input type="number" aria-label="peakpower" min="0" class="form-control text-right" id="pvwpeakpower" name="peakpower" value="1" />
  1791.        </div>
  1792.      </div>
  1793.      <div class="row select">
  1794.        <div class="col-xs-9 label-select">
  1795.          <span><span data-ts="pvgis.simulator.forms.peak_pv_power">System loss</span> [%]</span>
  1796.        </div>
  1797.        <div class="col-xs-3">
  1798.          <input type="number" aria-label="loss" min="0" class="form-control text-right" id="pvwloss" name="loss" value="14" />
  1799.        </div>
  1800.      </div>
  1801.      <p></p>
  1802.      <div class="row">
  1803.        <div class="col-xs-6">
  1804.          <input type="checkbox" aria-label="components" class="checkboxSimulator" id="components" name="components" value="1" />
  1805.          <label for="components" data-ts="pvgis.simulator.forms.radiation_components">Radiation components</label>
  1806.        </div>
  1807.      </div>
  1808.    </form>
  1809.  </div>
  1810. </div>                                            </div>
  1811.                                            <div id="tmy-tab" class="tab-pane fade">
  1812.                                                <div class="data-content">
  1813.  <div class="t_tmy-content">
  1814.    <span class="text-white"><i class="fab fa-docker fa-lg"></i></span>
  1815.    <h4 class="text-uppercase text-white font-bold">
  1816.      <span data-ts="pvgis.simulator.forms.typical_meteorological_year">typical meteorological year</span>
  1817.    </h4>
  1818.    <span class="text-white" role="button" data-toggle="modal" data-target="#tmyTooltip" aria-label="tmyTooltip"><i class="fas fa-question-circle fa-lg"></i></span>
  1819.    <div class="modal fade" id="tmyTooltip" role="dialog">
  1820.      <div class="modal-dialog">
  1821.        <div class="modal-content">
  1822.          <div class="modal-header">
  1823.            <span role="button" class="close" data-dismiss="modal">&times;</span>
  1824.            <h4 class="modal-title text-uppercase" data-ts="pvgis.simulator.forms.typical_meteorological_year">typical meteorological year</h4>
  1825.          </div>
  1826.          <div class="modal-body">
  1827.            <p data-ts="pvgis.simulator.forms.tmy_tooltip">A typical meteorological year (TMY) is a set of meteorological data with data values for every hour in a year for a given geographical location. The data are selected from hourly data in a longer time period (normally 10 years or more). The TMY tool can be used to interactively visualise all the data or to download the data as a text file.</p>
  1828.          </div>
  1829.        </div>
  1830.      </div>
  1831.    </div>
  1832.  </div>
  1833.  <div class="form-group">
  1834.    <form id="tmyForm">
  1835.      <div class="row select">
  1836.        <div class="col-xs-12 label-select text-center">
  1837.          <span><span data-ts="pvgis.simulator.forms.select_period">Select period</span><span
  1838.              class="text-danger">*</span></span>
  1839.        </div>
  1840.      </div>
  1841.      <p></p>
  1842.      <div class="row">
  1843.        <div class="col-xs-0 col-sm-3 col-md-3"></div>
  1844.        <div class="col-xs-12 col-sm-6 col-md-7">
  1845.          <select aria-label="selectdbtmy" name="db" id="selectdbtmy" class="form-control text-uppercase">
  1846.            <option value="1" class="text-uppercase">
  1847.              pvgis-sarah2: 2005 - 2020
  1848.            </option>
  1849.            <option value="2" class="text-uppercase">
  1850.              pvgis-sarah: 2005 - 2016
  1851.            </option>
  1852.            <option value="3" class="text-uppercase">
  1853.              pvgis-era: 2005 - 2020
  1854.            </option>
  1855.          </select>
  1856.        </div>
  1857.        <div class="col-xs-0 col-sm-3 col-md-2"></div>
  1858.      </div>
  1859.    </form>
  1860.  </div>
  1861. </div>                                            </div>
  1862.                                        </div>
  1863.                                    </div>
  1864.                                </div>
  1865.                                <div class="coordinate box-shadow" id="buttonContainer"></div>
  1866.                            </div>
  1867.                        </div>
  1868.  
  1869.                    </div>
  1870.                    <div class="coordinate box-shadow tab-content" id="visualize-result">
  1871.                        <div class="visualize-result collapse" id="grid-connected-result">
  1872.                            <div>
  1873.  <p style="visibility: hidden;display:none;">dummy filler</p>
  1874.  <div class="loadingVisualizeResults" style="height: 100px;"></div>
  1875.  <div class="visualize-result-content">
  1876.    <div class="t_tool-content">
  1877.      <h4 class="text-uppercase text-white font-bold">
  1878.        <span
  1879.          data-ts="pvgis.simulator.forms.grid_connected_perf_pv">performance of grid-connected pv</span>:
  1880.        <span
  1881.          data-ts="pvgis.simulator.results">Results</span>
  1882.  
  1883.      </h4>
  1884.      <span class="text-white tool-btns-container">
  1885.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#grid-connected-pv-output-tab"><i class="fas fa-eye"></i> PV output</span>
  1886.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#grid-connected-radiation-tab"><i class="fas fa-eye"></i> Radiation</span>
  1887.        <span class="btn btn-xs btn-primary" role="button" data-toggle="modal" data-target="#grid-connected-info"><i class="fas fa-question-circle"></i> Info</span>
  1888.        <span class="btn btn-xs btn-primary" onclick="newDownloadPdfGridConnected()"><i class="fas fa-print"></i> PDF</span>
  1889.      </span>
  1890.      <div class="modal fade" id="grid-connected-info" role="dialog">
  1891.        <div class="modal-dialog info">
  1892.          <div class="modal-content">
  1893.            <div class="modal-header">
  1894.              <span role="button" class="close" data-dismiss="modal">&times;</span>
  1895.              <h4 class="moda-title text-uppercase" data-ts="pvgis.result_of_grid_connected_pv_system"></h4>
  1896.            </div>
  1897.            <div class="modal-body">
  1898.              <p data-ts="pvgis_result_of_grid_connected_p_1"></p>
  1899.              <p data-ts="pvgis_result_of_grid_connected_p_1"></p>
  1900.            </div>
  1901.          </div>
  1902.        </div>
  1903.      </div>
  1904.    </div>
  1905.    <br>
  1906.    <div class="summary-results">
  1907.      <div class="summary-results-first">
  1908.        <div class="graph tab-content">
  1909.          <div id="grid-connected-pv-output-tab" class="tab-pane fade in active">
  1910.            <div id="chart-gcContainer" class="chartResult"></div>
  1911.          </div>
  1912.          <div id="grid-connected-radiation-tab" class="tab-pane fade">
  1913.            <div id="chart-gcContainer-rad" class="chartResult"></div>
  1914.          </div>
  1915.        </div>
  1916.      </div>
  1917.      <div class="summary-results-second">
  1918.        <div class="summary" id="gcSummaryContainer">
  1919.          <h4><span data-ts="pvgis.summary">Summary</span></h4>
  1920.          <div style="text-align: right; width: 89.5%;">
  1921.            <div>
  1922.              <a href="#" class="btn-summary" onclick="downloadSummary('gcSummaryContainer', 'gridconnected_summary')"></a>
  1923.            </div>
  1924.          </div>
  1925.          <table class="gcInputSummary table table-results" id="gcInputSummary">
  1926.            <tbody></tbody>
  1927.          </table>
  1928.          <table class="gcOutputSummary table table-results" id="gcOutputSummary">
  1929.            <tbody></tbody>
  1930.          </table>
  1931.        </div>
  1932.      </div>
  1933.      <div class="summary-results-third">
  1934.        <div class="horizon">
  1935.          <div id="chart-gc-horizon-profile-container"></div>
  1936.        </div>
  1937.      </div>
  1938.    </div>
  1939.  </div>
  1940. </div>                        </div>
  1941.                        <div class="visualize-result collapse" id="tracking-pv-result">
  1942.                            <div>
  1943.  <p style="visibility: hidden; display:none;">dummy filler</p>
  1944.  <div class="loadingVisualizeResults" style="height: 100px;"></div>
  1945.  <div class="visualize-result-content">
  1946.    <div class="t_tool-content">
  1947.      <h4 class="text-uppercase text-white font-bold">
  1948.        <span
  1949.          data-ts="pvgis.simulator.forms.performance_of_tracking_pv">
  1950.          performance of tracking pv
  1951.        </span>:
  1952.        <span
  1953.          data-ts="pvgis.simulator.results">Results</span>
  1954.      </h4>
  1955.      <span class="text-white tool-btns-container">
  1956.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#tracking-pv-output-tab"><i class="fas fa-eye"></i> PV output</span>
  1957.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#tracking-radiation-tab"><i class="fas fa-eye"></i> Radiation</span>
  1958.        <span class="btn btn-xs btn-primary" role="button" data-toggle="modal" data-target="#tracking-pv-info"><i class="fas fa-question-circle"></i> Info</span>
  1959.        <span class="btn btn-xs btn-primary" onclick="newDownloadPdfTracking()"><i class="fas fa-print"></i> PDF</span>
  1960.      </span>
  1961.      <div class="modal fade" id="tracking-pv-info" role="dialog">
  1962.        <div class="modal-dialog info">
  1963.          <div class="modal-content">
  1964.            <div class="modal-header">
  1965.              <span role="button" class="close" data-dismiss="modal">&times;</span>
  1966.              <h4 class="moda-title text-uppercase" data-ts="pvgis.result_of_tracking_pv_system"></h4>
  1967.            </div>
  1968.            <div class="modal-body">
  1969.              <p data-ts="pvgis_tracking_pv_p_1"></p>
  1970.              <p data-ts="pvgis_tracking_pv_p_2"></p>
  1971.            </div>
  1972.          </div>
  1973.        </div>
  1974.      </div>
  1975.    </div>
  1976.    <br>
  1977.    <div class="summary-results">
  1978.      <div class="summary-results-first">
  1979.        <div class="graph tab-content">
  1980.          <div id="tracking-pv-output-tab" class="tab-pane fade active in">
  1981.            <div id="chart-trContainer" class="chartResult"></div>
  1982.          </div>
  1983.          <div id="tracking-radiation-tab" class="tab-pane fade">
  1984.            <div id="chart-trContainer-rad" class="chartResult"></div>
  1985.          </div>
  1986.        </div>
  1987.      </div>
  1988.      <div class="summary-results-second">
  1989.        <div class="summary" id="trackingSummaryContainer">
  1990.          <h4 data-ts="pvgis.simulator.summary.summary_label">Summary</h4>
  1991.          <div style="text-align: right; width: 89.5%;">
  1992.            <div>
  1993.              <a href="#" class="btn-summary" onclick="downloadSummary('trackingSummaryContainer', 'tracking_summary')"></a>
  1994.            </div>
  1995.          </div>
  1996.          <div id="trackingSummary"></div>
  1997.        </div>
  1998.      </div>
  1999.      <div class="summary-results-third">
  2000.        <div class="horizon">
  2001.          <div id="chart-tr-horizon-profile-container"></div>
  2002.        </div>
  2003.      </div>
  2004.    </div>
  2005.  </div>
  2006. </div>                        </div>
  2007.                        <div class="visualize-result collapse" id="off-grid-result">
  2008.                            <div>
  2009.  <p style="visibility: hidden;display:none;">dummy filler</p>
  2010.  <div class="loadingVisualizeResults" style="height: 100px;"></div>
  2011.  <div class="visualize-result-content">
  2012.    <div class="t_tool-content">
  2013.      <h4 class="text-uppercase text-white font-bold">
  2014.        <span
  2015.          data-ts="pvgis.simulator.forms.performance_offgrid_pv_systems">performance of off-grid pv systems</span>:
  2016.        <span
  2017.          data-ts="pvgis.simulator.results">Results</span>
  2018.      </h4>
  2019.      <span class="text-white tool-btns-container">
  2020.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#offgrid-pv-output-tab"><i class="fas fa-eye"></i> PV output</span>
  2021.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#offgrid-radiation-tab"><i class="fas fa-eye"></i> Performance</span>
  2022.        <span class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#offgrid-battery-tab"><i class="fas fa-eye"></i> Battery state</span>
  2023.        <span class="btn btn-xs btn-primary" role="button" data-toggle="modal" data-target="#off-grid-pv-info"><i class="fas fa-question-circle"></i> Info</span>
  2024.        <span class="btn btn-xs btn-primary" onclick="newDownloadPdfOffgrid()"><i class="fas fa-print"></i> PDF</span>
  2025.      </span>
  2026.      <div class="modal fade" id="off-grid-pv-info" role="dialog">
  2027.        <div class="modal-dialog info">
  2028.          <div class="modal-content">
  2029.            <div class="modal-header">
  2030.              <span role="button" class="close" data-dismiss="modal">&times;</span>
  2031.              <h4 class="moda-title text-uppercase" data-ts="pvgis.result_of_off_grid_pv_system"></h4>
  2032.            </div>
  2033.            <div class="modal-body">
  2034.              <p data-ts="pvgis.result_of_off_grid_pv_info"></p>
  2035.              <ul>
  2036.                <li data-ts="pvgis.result_of_off_grid_pv_info_1"></li>
  2037.                <li data-ts="pvgis.result_of_off_grid_pv_info_2"></li>
  2038.                <li data-ts="pvgis.result_of_off_grid_pv_info_3"></li>
  2039.              </ul>
  2040.            </div>
  2041.          </div>
  2042.        </div>
  2043.      </div>
  2044.    </div>
  2045.  
  2046.    <br>
  2047.    <div class="summary-results">
  2048.      <div class="summary-results-first">
  2049.        <div class="graph tab-content">
  2050.          <div id="offgrid-pv-output-tab" class="tab-pane fade in active">
  2051.            <div id="chart-offgird-container-output" class="chartResult"></div>
  2052.          </div>
  2053.          <div id="offgrid-radiation-tab" class="tab-pane fade">
  2054.            <div id="chart-offgird-container-performance" class="chartResult"></div>
  2055.          </div>
  2056.          <div id="offgrid-battery-tab" class="tab-pane fade">
  2057.            <div id="chart-offgird-container-battery-state" class="chartResult"></div>
  2058.          </div>
  2059.        </div>
  2060.      </div>
  2061.      <div class="summary-results-second">
  2062.        <div class="summary" id="offgridSummaryContainer">
  2063.          <h4 data-ts="pvgis.simulator.summary.summary_label">Summary</h4>
  2064.          <div style="text-align: right; width: 89.5%;">
  2065.            <div>
  2066.              <a href="#" class="btn-summary" onclick="downloadSummary('offgridSummaryContainer', 'offgrid_summary')"></a>
  2067.            </div>
  2068.          </div>
  2069.          <table class="table table-results" id="offgridInputSummary">
  2070.            <tbody></tbody>
  2071.          </table>
  2072.          <table class="table table-results" id="offgridOutputSummary">
  2073.            <tbody></tbody>
  2074.          </table>
  2075.        </div>
  2076.      </div>
  2077.      <div class="summary-results-third">
  2078.        <div class="horizon">
  2079.          <div id="chart-offgird-horizon-profile-container"></div>
  2080.        </div>
  2081.      </div>
  2082.    </div>
  2083.  </div>
  2084. </div>                        </div>
  2085.                        <div class="visualize-result collapse" id="monthly-result">
  2086.                            <div>
  2087.  <p style="visibility: hidden;display:none;">dummy filler</p>
  2088.  <div class="loadingVisualizeResults" style="height: 100px;"></div>
  2089.  <div class="visualize-result-content">
  2090.    <div class="t_data-content">
  2091.      <h4 class="text-uppercase text-white font-bold">
  2092.        <span data-ts="pvgis.simulator.forms.monthly_irradiation_data">monthly irradiation data</span>:
  2093.        <span
  2094.          data-ts="pvgis.simulator.results">Results</span>
  2095.      </h4>
  2096.      <span class="text-white tool-btns-container">
  2097.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#monthly-radiation-tab"><i class="fas fa-eye"></i> Radiation</span>
  2098.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#monthly-diffuse-tab" id="monthlydiffuse"><i class="fas fa-eye"></i> Diffuse/Global</span>
  2099.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#monthly-temperature-tab" id="monthlytemp"><i class="fas fa-eye"></i> Temperature</span>
  2100.        <span class="btn btn-xs btn-primary" role="button" data-toggle="modal" data-target="#monthly-data-info"><i class="fas fa-question-circle"></i> Info</span>
  2101.        <span class="btn btn-xs btn-primary" onclick="newDownloadPdfMonthly()">
  2102.          <i class="fas fa-print"></i> PDF
  2103.        </span>
  2104.      </span>
  2105.      <div class="modal fade" id="monthly-data-info" role="dialog">
  2106.        <div class="modal-dialog info">
  2107.          <div class="modal-content">
  2108.            <div class="modal-header">
  2109.              <span role="button" class="close" data-dismiss="modal">&times;</span>
  2110.              <h4 class="moda-title text-uppercase" data-ts="pvgis.result_of_monthly_data_info"></h4>
  2111.            </div>
  2112.            <div class="modal-body">
  2113.              <p data-ts="pvgis.monthly_data_info_p"></p>
  2114.            </div>
  2115.          </div>
  2116.        </div>
  2117.      </div>
  2118.    </div>
  2119.    <br>
  2120.    <div class="summary-results">
  2121.      <div class="summary-results-first">
  2122.        <div class="graph tab-content">
  2123.          <div id="monthly-radiation-tab" class="tab-pane fade in active">
  2124.            <p class="text-center">
  2125.              <strong>You must check one of irradiation and reclick visualize results
  2126.                to view this result</strong>
  2127.            </p>
  2128.          </div>
  2129.          <div id="monthly-diffuse-tab" class="tab-pane fade">
  2130.            <p class="text-center">
  2131.              <strong>You must check Diffuse/global ratio and reclick visualize results
  2132.                to view this result</strong>
  2133.            </p>
  2134.          </div>
  2135.          <div id="monthly-temperature-tab" class="tab-pane fade">
  2136.            <p class="text-center">
  2137.              <strong>You must check Average temperature and reclick visualize results
  2138.                to view this result</strong>
  2139.            </p>
  2140.          </div>
  2141.        </div>
  2142.      </div>
  2143.      <div class="summary-results-second">
  2144.        <div class="summary" id="monthlySummaryContainer">
  2145.          <h4 data-ts="pvgis.simulator.summary.summary_label">Summary</h4>
  2146.          <div style="text-align: right; width: 89.5%;">
  2147.            <div>
  2148.            <a href="#" class="btn-summary" onclick="downloadSummary('monthlySummaryContainer', 'monthly_summary')"></a>
  2149.          </div>
  2150.        </div>
  2151.        <table class="table table-results" id="monthlySummary">
  2152.          <tbody></tbody>
  2153.        </table>
  2154.      </div>
  2155.    </div>
  2156.    <div class="summary-results-third">
  2157.      <div class="horizon">
  2158.        <div id="monthlyhorizonProfileContainer"></div>
  2159.      </div>
  2160.    </div>
  2161.  </div>
  2162. </div>
  2163. </div>
  2164. <script>
  2165.  horirrad.addEventListener("change", function() {
  2166.    if (
  2167.      horirrad.checked ||
  2168.      mr_dni.checked ||
  2169.      optrad.checked ||
  2170.      selectrad.checked
  2171.    ) {
  2172.      $("#monthly-radiation-tab").html(
  2173.        '<div id="monthlyRadiationChartContainer" class="chartResult"></div>'
  2174.      );
  2175.    } else {
  2176.      $("#monthly-radiation-tab").html(
  2177.        '<p class="text-center"><strong>You must check one of irradiation and reclick visualize results to view this result</strong></p>'
  2178.      );
  2179.    }
  2180.  });
  2181.  mr_dni.addEventListener("change", function() {
  2182.    if (
  2183.      horirrad.checked ||
  2184.      mr_dni.checked ||
  2185.      optrad.checked ||
  2186.      selectrad.checked
  2187.    ) {
  2188.      $("#monthly-radiation-tab").html(
  2189.        '<div id="monthlyRadiationChartContainer" class="chartResult"></div>'
  2190.      );
  2191.    } else {
  2192.      $("#monthly-radiation-tab").html(
  2193.        '<p class="text-center"><strong>You must check one of irradiation and reclick visualize results to view this result</strong></p>'
  2194.      );
  2195.    }
  2196.  });
  2197.  optrad.addEventListener("change", function() {
  2198.    if (
  2199.      horirrad.checked ||
  2200.      mr_dni.checked ||
  2201.      optrad.checked ||
  2202.      selectrad.checked
  2203.    ) {
  2204.      $("#monthly-radiation-tab").html(
  2205.        '<div id="monthlyRadiationChartContainer" class="chartResult"></div>'
  2206.      );
  2207.    } else {
  2208.      $("#monthly-radiation-tab").html(
  2209.        '<p class="text-center"><strong>You must check one of irradiation and reclick visualize results to view this result</strong></p>'
  2210.      );
  2211.    }
  2212.  });
  2213.  selectrad.addEventListener("change", function() {
  2214.    if (
  2215.      horirrad.checked ||
  2216.      mr_dni.checked ||
  2217.      optrad.checked ||
  2218.      selectrad.checked
  2219.    ) {
  2220.      $("#monthly-radiation-tab").html(
  2221.        '<div id="monthlyRadiationChartContainer" class="chartResult"></div>'
  2222.      );
  2223.    } else {
  2224.      $("#monthly-radiation-tab").html(
  2225.        '<p class="text-center"><strong>You must check one of irradiation and reclick visualize results to view this result</strong></p>'
  2226.      );
  2227.    }
  2228.  });
  2229.  d2g.addEventListener("change", function() {
  2230.    if (d2g.checked) {
  2231.      $("#monthly-diffuse-tab").html(
  2232.        '<div id="monthlyDiffuseRatioChartContainer" class="chartResult"></div>'
  2233.      );
  2234.    } else {
  2235.      $("#monthly-diffuse-tab").html(
  2236.        '<p class="text-center"><strong>You must check Diffuse/global ratio and reclick visualize results to view this result</strong></p>'
  2237.      );
  2238.    }
  2239.  });
  2240.  avtemp.addEventListener("change", function() {
  2241.    if (avtemp.checked) {
  2242.      $("#monthly-temperature-tab").html(
  2243.        '<div id="monthlyTemperatureChartContainer" class="chartResult"></div>'
  2244.      );
  2245.    } else {
  2246.      $("#monthly-temperature-tab").html(
  2247.        '<p class="text-center"><strong>You must check Average temperature and reclick visualize results to view this result</strong></p>'
  2248.      );
  2249.    }
  2250.  });
  2251. </script>                        </div>
  2252.                        <div class="visualize-result collapse" id="daily-result">
  2253.                            <div>
  2254.  <p style="visibility: hidden;display:none;">dummy filler</p>
  2255.  <div class="loadingVisualizeResults" style="height: 100px;"></div>
  2256.  <div class="visualize-result-content">
  2257.  
  2258.    <div class="t_data-content">
  2259.      <h4 class="text-uppercase text-white font-bold">
  2260.        <span data-ts="pvgis.simulator.forms.average_daily_irradiance_data">average daily irradiance data</span>:
  2261.        <span
  2262.          data-ts="pvgis.simulator.results">Results</span>
  2263.      </h4>
  2264.      <span class="text-white tool-btns-container">
  2265.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#daily-fixed-plane-tab"><i class="fas fa-eye"></i> Fixed-plane</span>
  2266.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#daily-tracking-tab"><i class="fas fa-eye"></i> Tracking</span>
  2267.        <span role="button" class="btn btn-xs btn-primary tab-option" data-toggle="tab" href="#daily-temperature-tab"><i class="fas fa-eye"></i> Temperature</span>
  2268.        <span class="btn btn-xs btn-primary" role="button" data-toggle="modal" data-target="#daily-data-info"><i class="fas fa-question-circle"></i> Info</span>
  2269.        <span class="btn btn-xs btn-primary" onclick="newDownloadPdfDaily()">
  2270.          <i class="fas fa-print"></i> PDF
  2271.        </span>
  2272.      </span>
  2273.      <div class="modal fade" id="daily-data-info" role="dialog">
  2274.        <div class="modal-dialog info">
  2275.          <div class="modal-content">
  2276.            <div class="modal-header">
  2277.              <span role="button" class="close" data-dismiss="modal">&times;</span>
  2278.              <h4 class="moda-title text-uppercase" data-ts="pvgis.result_of_daily_data_info"></h4>
  2279.            </div>
  2280.            <div class="modal-body">
  2281.              <p data-ts="pvgis.daily_data_info_p_1"></p>
  2282.              <p data-ts="pvgis.daily_data_info_p_2"></p>
  2283.            </div>
  2284.          </div>
  2285.        </div>
  2286.      </div>
  2287.    </div>
  2288.    <br>
  2289.    <div class="summary-results">
  2290.      <div class="summary-results-first">
  2291.        <div class="graph tab-content">
  2292.          <div id="daily-fixed-plane-tab" class="tab-pane fade in active">
  2293.            <p class="text-center">
  2294.              <strong>You must check one of fixed plane and reclick visualize results
  2295.                to view this result</strong>
  2296.            </p>
  2297.          </div>
  2298.          <div id="daily-tracking-tab" class="tab-pane fade">
  2299.            <p class="text-center">
  2300.              <strong>You must check one of sun-tracking plane and reclick visualize
  2301.                results to view this result</strong>
  2302.            </p>
  2303.          </div>
  2304.          <div id="daily-temperature-tab" class="tab-pane fade">
  2305.            <p class="text-center">
  2306.              <strong>You must check Daily temperature profile and reclick visualize
  2307.                results to view this result</strong>
  2308.            </p>
  2309.          </div>
  2310.        </div>
  2311.      </div>
  2312.      <div class="summary-results-second">
  2313.        <div class="summary" id="dailySummaryContainer">
  2314.          <h4 data-ts="pvgis.simulator.summary.summary_label">Summary</h4>
  2315.          <div class="row" style="text-align: right">
  2316.            <div class="col-md-12">
  2317.              <a href="#" class="btn-summary" onclick="downloadSummary('dailySummaryContainer', 'daily_summary')"></a>
  2318.            </div>
  2319.          </div>
  2320.  
  2321.          <table class="table table-results" id="dailySummary">
  2322.            <tbody></tbody>
  2323.          </table>
  2324.        </div>
  2325.      </div>
  2326.      <div class="summary-results-third">
  2327.        <div class="horizon">
  2328.          <div id="dailyhorizonProfileContainer"></div>
  2329.        </div>
  2330.      </div>
  2331.    </div>
  2332.  
  2333.  </div>
  2334. </div>
  2335. <script>
  2336.  ofpglobal.addEventListener("change", function() {
  2337.    if (ofpglobal.checked || ofpclearsky.checked) {
  2338.      $("#daily-fixed-plane-tab").html(
  2339.        '<div id="dailyRadiationChartContainer" class="chartResult"></div>'
  2340.      );
  2341.    } else {
  2342.      $("#daily-fixed-plane-tab").html(
  2343.        '<p class="text-center"><strong>You must check one of fixed plane and reclick visualize results to view this result</strong></p>'
  2344.      );
  2345.    }
  2346.  });
  2347.  ofpclearsky.addEventListener("change", function() {
  2348.    if (ofpglobal.checked || ofpclearsky.checked) {
  2349.      $("#daily-fixed-plane-tab").html(
  2350.        '<div id="dailyRadiationChartContainer" class="chartResult"></div>'
  2351.      );
  2352.    } else {
  2353.      $("#daily-fixed-plane-tab").html(
  2354.        '<p class="text-center"><strong>You must check one of fixed plane and reclick visualize results to view this result</strong></p>'
  2355.      );
  2356.    }
  2357.  });
  2358.  glob_2axis.addEventListener("change", function() {
  2359.    if (glob_2axis.checked || clearsky_2axis.checked) {
  2360.      $("#daily-tracking-tab").html(
  2361.        '<div id="dailyTrackingChartContainer" class="chartResult"></div>'
  2362.      );
  2363.    } else {
  2364.      $("#daily-tracking-tab").html(
  2365.        '<p class="text-center"><strong>You must check one of sun-tracking plane and reclick visualize results to view this result</strong></p>'
  2366.      );
  2367.    }
  2368.  });
  2369.  clearsky_2axis.addEventListener("change", function() {
  2370.    if (glob_2axis.checked || clearsky_2axis.checked) {
  2371.      $("#daily-tracking-tab").html(
  2372.        '<div id="dailyTrackingChartContainer" class="chartResult"></div>'
  2373.      );
  2374.    } else {
  2375.      $("#daily-tracking-tab").html(
  2376.        '<p class="text-center"><strong>You must check one of sun-tracking plane and reclick visualize results to view this result</strong></p>'
  2377.      );
  2378.    }
  2379.  });
  2380.  showtemperatures.addEventListener("change", function() {
  2381.    if (showtemperatures.checked) {
  2382.      $("#daily-temperature-tab").html(
  2383.        '<div id="dailyTemperatureChartContainer" class="chartResult"></div>'
  2384.      );
  2385.    } else {
  2386.      $("#daily-temperature-tab").html(
  2387.        '<p class="text-center"><strong>You must check Daily temperature profile and reclick visualize results to view this result</strong></p>'
  2388.      );
  2389.    }
  2390.  });
  2391. </script>                        </div>
  2392.                        <div class="visualize-result collapse" id="tmy-result">
  2393.                            <div>
  2394.  <p style="visibility: hidden;display:none;">dummy filler</p>
  2395.  <div class="loadingVisualizeResults" style="height: 100px;"></div>
  2396.  <div class="visualize-result-content">
  2397.    <div class="t_tmy-content">
  2398.      <h4 class="text-uppercase text-white font-bold">
  2399.        <span data-ts="pvgis.simulator.forms.typical_meteorological_year">typical meteorological year</span>:
  2400.        <span
  2401.          data-ts="pvgis.simulator.results">Results</span>
  2402.      </h4>
  2403.      <span class="btn btn-xs btn-primary" role="button" data-toggle="modal" data-target="#tmy-info"><i class="fas fa-question-circle"></i> Info</span>
  2404.      <div class="modal fade" id="tmy-info" role="dialog">
  2405.        <div class="modal-dialog info">
  2406.          <div class="modal-content">
  2407.            <div class="modal-header">
  2408.              <span role="button" class="close" data-dismiss="modal">&times;</span>
  2409.              <h4 class="moda-title text-uppercase" data-ts="pvgis.result_of_tmy_info"></h4>
  2410.            </div>
  2411.            <div class="modal-body">
  2412.              <p data-ts="pvgis.result_of_tmy_info_p"></p>
  2413.            </div>
  2414.          </div>
  2415.        </div>
  2416.      </div>
  2417.    </div>
  2418.    <br>
  2419.    <div class="summary-results">
  2420.      <div class="summary-results-first">
  2421.        <div class="graph tab-content">
  2422.          <div id="tmyChartContainer" class="chartResult"></div>
  2423.        </div>
  2424.      </div>
  2425.      <div class="summary-results-second">
  2426.        <div class="summary" id="tmySummaryContainer">
  2427.          <h4 data-ts="pvgis.simulator.summary.summary_label">Summary</h4>
  2428.          <div style="text-align: right; width: 89.5%;">
  2429.            <div >
  2430.              <a href="#" class="btn-summary" onclick="downloadSummary('tmySummaryContainer', 'tmy_summary')"></a>
  2431.            </div>
  2432.          </div>
  2433.          <table class="table table-results" id="tmyInputSummary">
  2434.            <tbody></tbody>
  2435.          </table>
  2436.          <table class="table table-results" id="tmyOutputSummary">
  2437.            <tbody></tbody>
  2438.          </table>
  2439.        </div>
  2440.      </div>
  2441.  
  2442.      <div class="summary-results-third">
  2443.        <div class="horizon">
  2444.          <div id="tmyhorizonProfileContainer"></div>
  2445.        </div>
  2446.      </div>
  2447.    </div>
  2448.  </div>
  2449. </div>                        </div>
  2450.                    </div>
  2451.                </div>
  2452.            </div>
  2453.            <div class="logToPdfModal" id="log-to-download-modal" role="dialog">
  2454.    <div class="logToPdfModal-dialog">
  2455.        <div class="logToPdfModal-content">
  2456.            <div class="logToPdfModal-header">
  2457.                <img src="https://cdn.pvgis.com/images/pvgis24/info-icon.png?v=18102024" alt="" srcset="">
  2458.                <h5 class="modal-title"><span  data-ts="pvgis.need_log_to_download"></span></h5>
  2459.                <span onclick="hideLogForPdfModal()" class="logToPdfModal-close">&times;</span>
  2460.            </div>
  2461.            <div class="logToPdfModal-footer">
  2462.                <button id="logToPdfModal-login-button" data-ts="pvgis.header.account_menu.login">Login</button>
  2463.                <span data-ts="pvgis.ou_or">or</span>
  2464.                <button id="logToPdfModal-register-button" data-ts="pvgis.header.account_menu.subscribe">Register</button>
  2465.            </div>
  2466.        </div>
  2467.    </div>
  2468. </div>
  2469.    <div id="auth-form-modal" class="form-modal">
  2470.        <div class="auth-form-modal-dialog">
  2471.                        <div class="login-content">
  2472.                <div class="log-header">
  2473.                    <span class="log-header-title">Login</span>
  2474.                    <span class="close-button" onclick="hideFormModal('login')">&times;</span>
  2475.                </div>
  2476.                <div class="container-fluid">
  2477.    <div class="bg-login"></div>
  2478.    <div class="login-container">
  2479.        <div class="create-account">
  2480.            <p><span data-ts="pvgis.login.no_account_question">Pas encore de compte? </span> <a href="/register" id="switch-to-register"> <span data-ts="pvgis.login.create_an_account">Créer un compte</span></a></p>
  2481.            <!-- <p><a href="/"> <span data-ts="pvgis.login.back_to_pvgis_dot_com">Retour vers PVGIS.COM</span></a></p> -->
  2482.        </div>
  2483.        <!-- <div class="row">
  2484.            <div class="col-md-8 "> -->
  2485.        <div class="login-forms-container">
  2486.  
  2487.            <div class="box">
  2488.                <form id="login-form" action="handleLogin" method="POST">
  2489.                    <input type="hidden" name="redirectLink" value="">
  2490.                    <div class="message-container">
  2491.                        <div class="error-message">
  2492.                                                    </div>
  2493.                        <div class="success-message">
  2494.                                                    </div>
  2495.                    </div>
  2496.                    <div class="form-group-container">
  2497.                        <div class="form-group">
  2498.                            <label for="email_login" data-ts="pvgis.login.pseudo_or_email">Pseudo ou Email</label>
  2499.                            <input name="email" type="text" class="form-control to-validate text-input" id="email_login" placeholder="robert.dupont@gmail.com" required>
  2500.                            <div class="error-form-message" data-ts="pvgis.form.required">This field is required.</div>
  2501.                        </div>
  2502.                        <div class="form-group">
  2503.                            <label for="password_login" data-ts="pvgis.login.password">Mot de passe</label>
  2504.                            <div class="pwd-input">
  2505.                                <input name="password" type="password" class="form-control to-validate text-input" id="password_login" data-tstype="placeholder" data-ts="pvgis.login.password" required>
  2506.                                <span class="password-toggle" onclick="toggleLoginPasswordVisibility()"><i id="eye-icon" class="bi bi-eye"></i></span>
  2507.                            </div>
  2508.                            <div class="error-form-message" data-ts="pvgis.form.required">This field is required.</div>
  2509.                            <a href="/forgot-password" data-ts="pvgis.forgot_password">Mot de passe oublié</a>
  2510.                        </div>
  2511.                    </div>
  2512.                    <div class="action-container">
  2513.                        <button type="button" id="cancel-button" class="btn cancel-button" onclick="cancelLogin()">
  2514.                            <span data-ts="pvgis.cancel">Annuler</span>
  2515.                        </button>
  2516.                        <button type="submit" class="btn btn-primary login-button">
  2517.                            <i class="fas fa-spinner"></i> <span data-ts="pvgis.login.login">JE ME CONNECTE</span>
  2518.                        </button>
  2519.                    </div>
  2520.                </form>
  2521.            </div>
  2522.            <div class="tiers-registration-container">
  2523.                <h3 data-ts="pvgis.registration.signin">Inscrivez-vous</h3>
  2524.                <h3 class="uppercase" data-ts="pvgis.registration.quickly">RAPIDEMENT</h3>
  2525.                <p data-ts="pvgis.registration.with_your_account">avec votre compte GOOGLE, <br> créer votre compte en 2 clics</p>
  2526.                <div class="button-container">
  2527.                    <button type="button" id="google-login-button" class="btn g-btn"><img src="https://cdn.pvgis.com/images/pvgis24/google.jpg" alt="S'inscrire a PVGIS avec Google"> <span data-ts="pvgis.registration.google_sign_in">S'inscrire avec Google</span></button>
  2528.                    <!-- TODO temporary hide facebook action -->
  2529.                    <!-- <div class="divider">
  2530.                                <span data-ts="pvgis.registration.or">ou</span>
  2531.                            </div>
  2532.                            <button type="button" class="btn fb-btn"><img src="https://cdn.pvgis.com/images/pvgis24/facebook.jpg" alt="S'inscrire a PVGIS avec Facebook"> <span data-ts="pvgis.registration.fb_sign_in">S'inscrire avec Facebook</span></button> -->
  2533.                </div>
  2534.            </div>
  2535.        </div>
  2536.    </div>
  2537. </div>
  2538. <script>
  2539.    var userData = null;
  2540.    const errorMessage = '';
  2541.    // const redirectToPdf = true
  2542.    // const emailValidate = 'Email verified successfully'
  2543.    const emailValidate = '';
  2544.    const redirectToPdf = 0
  2545. </script>
  2546. <!-- how to run this tag first -->
  2547. <script src="https://pvgis.com/public/assets/min-js/account/login.js?v=220120251321"></script>
  2548.  
  2549. <script>
  2550.    const googleButton = document.querySelector('#google-login-button');
  2551.    let loginGoogleUrl = 'https://api.pvgis.com/auth/login/google'
  2552.  
  2553.  
  2554.    googleButton.addEventListener('click', async (e) => {
  2555.        console.log(window.userCountryCode)
  2556.        loginGoogleUrl += "?country_code=" + window.userCountryCode;
  2557.        loginGoogleUrl += "&lang=" + window.userLanguage;
  2558.        
  2559.        try {
  2560.            if (typeof injectedLogin !== 'undefined') {
  2561.                const url = `${env.UI_BASE_URL}/login`
  2562.                await fetch(url, {
  2563.                    method: 'POST',
  2564.                    body: JSON.stringify({
  2565.                        redirectToPdf: 1
  2566.                    })
  2567.                })
  2568.            }
  2569.            const response = await fetch(loginGoogleUrl);
  2570.            const data = await response.json();
  2571.            window.open(data?.authorization_url, '_blank');
  2572.        } catch (error) {
  2573.            console.error('Error:', error);
  2574.        }
  2575.    });
  2576.  
  2577.    // const facebookButton = document.querySelector('.fb-btn');
  2578.    // const loginFacebookUrl = 'https://api.pvgis.com/auth/login/facebook'
  2579.  
  2580.    // facebookButton.addEventListener('click', async (e) => {
  2581.    //     try {
  2582.    //         const response = await fetch(loginFacebookUrl);
  2583.    //         const data = await response.json();
  2584.    //         window.open(data?.authorization_url, '_blank');
  2585.    //     } catch (error) {
  2586.    //         console.error('Error:', error);
  2587.    //     }
  2588.    // });
  2589. </script>            </div>
  2590.            <div class="register-content">
  2591.                <div class="log-header">
  2592.                    <span class="log-header-title">Registration</span>
  2593.                    <span class="close-button" onclick="hideFormModal('register')">&times;</span>
  2594.                </div>
  2595.                <div class="container-fluid">
  2596.                    <div class="bg-login"></div>
  2597.                    <div class="registration-container">
  2598.    <div class="row">
  2599.        <div class="col-md-8 page-title">
  2600.            <h1 data-ts="pvgis.registration.title">Registration page</h1>
  2601.            <p class="to-login" data-ts="pvgis.registration.have_account">
  2602.                Déjà un compte ?<a id="switch-to-login"><span>Je me connecte</span></a>
  2603.            </p>
  2604.        </div>
  2605.    </div>
  2606.    <div class="row">
  2607.        <div class="col-md-8 ">
  2608.            <form id="registration-form" action="https://api.pvgis.com/auth/register">
  2609.                <div class="message-container">
  2610.                    <div class="error-message-register">
  2611.                                            </div>
  2612.                </div>
  2613.                <div class="row radio-account-type">
  2614.                    <div class="col-sm-4">
  2615.                        <input type="radio" name="type" id="professional" class="radio-pvgis">
  2616.                        <label for="professional" class="font-bold-condensed" data-ts="pvgis.registration.pro">Profesionnel</label><br>
  2617.                        <label for="professional"><span class="description-radio" data-ts="pvgis.registration.pro_description"> Les projets de mes clients</span></label>
  2618.                    </div>
  2619.                    <div class="col-sm-4">
  2620.                        <input type="radio" name="type" id="school" class="radio-pvgis">
  2621.                        <label for="school" class="font-bold-condensed" data-ts="pvgis.registration.school">École</label><br>
  2622.                        <label for="school"><span class="description-radio" data-ts="pvgis.registration.school_description">Les projets scolaires</span></label>
  2623.                    </div>
  2624.                    <div class="col-sm-4">
  2625.                        <input type="radio" name="type" id="personnal" checked class="radio-pvgis">
  2626.                        <label for="personnal" class="font-bold-condensed" data-ts="pvgis.registration.perso">Particulier</label><br>
  2627.                        <label for="personnal"><span class="description-radio" data-ts="pvgis.registration.perso_description">Un projet personnel</span></label>
  2628.                    </div>
  2629.                </div>
  2630.                <div class="row">
  2631.                    <div class="col-md-6">
  2632.                        <div class="form-group nickname-container hidden">
  2633.                            <label for="pseudo"><span data-ts="pvgis.registration.pseudo">Pseudo</span></label>
  2634.                            <input style="width: 95%;" type="text" class="form-control to-send" id="pseudo" name="pseudo">
  2635.                            <div class="error-message">
  2636.                                <span class="pseudo-required"></span>
  2637.                                <!-- <span class="pseudo-required" data-ts="pvgis.registration.error.required">This field is required.</span> -->
  2638.                                <span class="pseudo-already-used" data-ts="pvgis.registration.error.pseudo_already_used">Pseudo is already taken.</span>
  2639.                            </div>
  2640.                        </div>
  2641.                        <div class="form-group school-container">
  2642.                            <label for="school-name"><span data-ts="pvgis.registration.school">École</span></label>
  2643.                            <input style="width: 95%;" type="text" class="form-control to-validate" id="school-name" name="school-name">
  2644.                        </div>
  2645.                        <div class="form-group company-container">
  2646.                            <label for="company-name"><span data-ts="pvgis.registration.company"></span></label>
  2647.                            <input style="width: 95%;" type="text" class="form-control to-validate" id="company-name" name="company-name">
  2648.                        </div>
  2649.                        <div class="form-group">
  2650.                            <label for="last-name"><span data-ts="pvgis.registration.name">Nom</span><span class="required">*</span></label>
  2651.                            <input style="width: 95%;" type="text" class="form-control to-validate" id="last-name" name="last-name">
  2652.                            <div class="error-message" data-ts="pvgis.registration.error.required">This field is required.</div>
  2653.                        </div>
  2654.                        <div class="form-group">
  2655.                            <label for="first-name"><span data-ts="pvgis.registration.first_name">First Name</span><span class="required">*</span></label>
  2656.                            <input style="width: 95%;" type="text" class="form-control to-validate" id="first-name" name="first-name">
  2657.                            <div class="error-message" data-ts="pvgis.registration.error.required">This field is required.</div>
  2658.                        </div>
  2659.                        <div class="form-group">
  2660.                            <div class="dropdown-select-container" id="countryDropdownContainer">
  2661.                                <label for="country"><span data-ts="pvgis.registration.country">Country</span><span class="required">*</span></label>
  2662.                                <div class="dropdown-select-button" id="countryDropdownButton">
  2663.                                    <span id="selectedCountry"></span>
  2664.                                </div>
  2665.                                <ol class="dropdown-select-list" id="countryDropdownList">
  2666.                                    <input type="text" class="search-input" id="countrySearchInput" data-tstype="placeholder" data-ts="pvgis.search">
  2667.                                    <div class="error-message" data-ts="pvgis.registration.error.required">This field is required.</div>
  2668.                                    <div class="item-list-container" id="countryListContainer">
  2669.                                    </div>
  2670.                                </ol>
  2671.                            </div>
  2672.                        </div>
  2673.                    </div>
  2674.                    <div class="col-md-6">
  2675.                        <div class="form-group">
  2676.                            <label for="email"><span data-ts="pvgis.registration.email">Email</span><span class="required">*</span></label>
  2677.                            <input type="email" class="form-control to-validate" id="email" name="email">
  2678.                            <div class="error-message">
  2679.                                <!-- <span class="email-invalid" data-ts="pvgis.registration.error.email">Please enter a valid email address.</span>
  2680.                                <span class="email-already-used" data-ts="pvgis.registration.error.email_already_used">User with the this email already exists or has an account, please use another email to continue.</span>
  2681.                                <span class="email-not-exist" data-ts="pvgis.registration.error.email_not_exist">The email address you entered does not exist.</span> -->
  2682.                            </div>
  2683.                        </div>
  2684.                        <div class="form-group">
  2685.                            <label for="password"><span data-ts="pvgis.registration.password">Password</span><span class="required">*</span></label>
  2686.                            <div class="password-container">
  2687.                                <div class="eye-toogler"><i id="toggle-password" class="bi bi-eye"></i></div>
  2688.                                <input type="text" class="form-control to-validate" id="password" name="password">
  2689.                            </div>
  2690.                            <div class="error-message" data-ts="pvgis.registration.error.password">Password must contain at least 8 caracters with uppercase, lowercase and number.</div>
  2691.                        </div>
  2692.                        <div class="form-group password-container">
  2693.                            <label for="confirm-password"><span data-ts="pvgis.registration.confirm_password">Confirm Password</span><span class="required">*</span></label>
  2694.                            <div class="password-container">
  2695.                                <div class="eye-toogler"><i id="toggle-password-confirm" class="bi bi-eye"></i></div>
  2696.                                <input type="text" class="form-control to-validate" id="confirm-password" name="confirm-password">
  2697.                            </div>
  2698.                            <div class="error-message" data-ts="pvgis.registration.error.password_not_match">Passwords do not match.</div>
  2699.                        </div>
  2700.                        <div class="form-group check-container">
  2701.                            <input type="checkbox" name="accept-cgu" class="checkbox-pvgis" id="accept-cgu">
  2702.                            <label class="no-wrap" for="accept-cgu"><span data-ts="pvgis.i_accept_general"> </span> &nbsp; <a href="/register" id="viewTermAndConditionAction" data-ts="pvgis.terms_and_conditions"> </a> &nbsp; <span data-ts="pvgis.of_use"></span></label>
  2703.                        </div>
  2704.                    </div>
  2705.                </div>
  2706.  
  2707.                <input type="hidden" id="language" name="language" value="en">
  2708.  
  2709.                <div class="btn-container">
  2710.                    <a id="cancel-button" class="btn cancel-button"><span data-ts="pvgis.registration.cancel">Annuler</span></a>
  2711.                    <button type="submit" id="submit-button" class="btn btn-submit disabled" disabled><i class="fas fa-spinner"></i> <span data-ts="pvgis.registration.register"></span></button>
  2712.                </div>
  2713.            </form>
  2714.        </div>
  2715.        <div class="col-md-4">
  2716.            <div class="tiers-registration-container">
  2717.                <h3 data-ts="pvgis.registration.signup">Inscrivez-vous</h3>
  2718.                <h3 class="uppercase" data-ts="pvgis.registration.quickly">RAPIDEMENT</h3>
  2719.                <p data-ts="pvgis.registration.two_click">avec votre compte GOOGLE, <br> créer votre compte en 2 clics</p>
  2720.                <button type="button" id="google-registration-button" class="btn g-btn"><img src="https://cdn.pvgis.com/images/pvgis24/google.jpg" alt="S'inscrire a PVGIS avec Google"> <span data-ts="pvgis.registration.google_sign">S'inscrire avec Google</span></button>
  2721.                <!-- TODO temporary hide facebook action -->
  2722.                <!-- <div class="divider">
  2723.                    <span data-ts="pvgis.registration.or">ou</span>
  2724.                </div>
  2725.                <button type="button" class="btn fb-btn"><img src="https://cdn.pvgis.com/images/pvgis24/facebook.jpg" alt="S'inscrire a PVGIS avec Facebook"> <span data-ts="pvgis.registration.fb_sign">S'inscrire avec Facebook</span></button> -->
  2726.            </div>
  2727.        </div>
  2728.    </div>
  2729.  
  2730. </div>
  2731. <script>
  2732.    $cartReference = null;
  2733. </script>
  2734. <script src="https://pvgis.com/public/assets/min-js/account/registration.js?v=220120251321"></script>
  2735.  
  2736. <script>
  2737.    const googleButtonRegister = document.querySelector('#google-registration-button');
  2738.    googleButtonRegister.addEventListener('click', async (e) => {
  2739.        try {
  2740.            if (typeof injectedRegister !== 'undefined') {
  2741.                const url = `${env.UI_BASE_URL}/register`
  2742.                await fetch(url, {
  2743.                    method: 'POST',
  2744.                    body: JSON.stringify({
  2745.                        redirectToPdf: 1
  2746.                    })
  2747.                })
  2748.            }
  2749.            const currentLanguage = window.userLanguage || getCurrentLanguage();
  2750.            let registrationGoogleUrl = 'https://api.pvgis.com/auth/google'
  2751.            registrationGoogleUrl += "?lang=" + currentLanguage;
  2752.            registrationGoogleUrl += "&country_code=" + window.userCountryCode;
  2753.            console.log(registrationGoogleUrl);
  2754.            const response = await fetch(registrationGoogleUrl);
  2755.            const data = await response.json();
  2756.            window.open(data?.authorization_url, '_blank');
  2757.        } catch (error) {
  2758.            console.error('Error:', error);
  2759.        }
  2760.    });
  2761.  
  2762.    // const facebookButton = document.querySelector('.fb-btn');
  2763.    // const registrationFacebookUrl = 'https://api.pvgis.com/auth/facebook'
  2764.  
  2765.    // facebookButton.addEventListener('click', async (e) => {
  2766.    //     try {
  2767.    //         const currentLanguage = getCurrentLanguage();
  2768.    //         const response = await fetch(registrationFacebookUrl + "?lang=" + currentLanguage);
  2769.    //         const data = await response.json();
  2770.    //         window.open(data?.authorization_url, '_blank');
  2771.    //     } catch (error) {
  2772.    //         console.error('Error:', error);
  2773.    //     }
  2774.    // });
  2775. </script>
  2776. <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
  2777. <script src="https://pvgis.com/public/assets/min-js/utils.js?v=220120251321"></script>
  2778. <script>
  2779.    toastr.options = {
  2780.        "closeButton": false,
  2781.        "debug": false,
  2782.        "newestOnTop": false,
  2783.        "progressBar": false,
  2784.        "positionClass": "toast-bottom-right",
  2785.        "preventDuplicates": false,
  2786.        "onclick": null,
  2787.        "showDuration": "300",
  2788.        "hideDuration": "1000",
  2789.        "timeOut": "30000",
  2790.        "extendedTimeOut": "1500",
  2791.        "showEasing": "swing",
  2792.        "hideEasing": "linear",
  2793.        "showMethod": "fadeIn",
  2794.        "hideMethod": "fadeOut"
  2795.    }
  2796. </script>                </div>
  2797.            </div>
  2798.        </div>
  2799.    </div>
  2800.  
  2801.    <div class="modal-extranet confirm-mail-modal">
  2802.    <div class="container">
  2803.        <div class="row">
  2804.            <div class="col-xs-12 col-md-8">
  2805.                <div class="popup-container">
  2806.                    <div class="row modal-extranet-content">
  2807.                        <p class="mail-confirm-content">
  2808.                            <span data-ts="pvgis.mail.confirm_text">Un mail de validation vient de vous être envoyé à :</span><br>
  2809.                            <span id="mail-to" class="font-condensed-oblique"></span><br>
  2810.                            <span data-ts="pvgis.mail.thanks">Merci de cliquer sur le lien pour confirmer votre inscription.</span>
  2811.                        </p>
  2812.                    </div>
  2813.                    <div class="btn-container">
  2814.                        <a href="/login" class="save-btn" data-ts="pvgis.mail.ok">OK</a>
  2815.                    </div>
  2816.                </div>
  2817.            </div>
  2818.        </div>
  2819.    </div>
  2820. </div>
  2821.            
  2822.  <script src="https://pvgis.com/public/assets/min-js/jquery.js?v=220120251321"></script>
  2823.  <script type="module" src="https://pvgis.com/public/assets/min-js/cookieconsent.umd.js?v=220120251321"></script>
  2824.  <script type="module" src="https://pvgis.com/public/assets/min-js/cookieconsent-config.js?v=220120251321"></script>
  2825.  <script>
  2826.    const _SESSION = {};
  2827.    window.customerSavedLanguage = "en";
  2828.    let pdfData = 0;
  2829.  </script>
  2830.  
  2831.  <script src="https://pvgis.com/public/assets/min-js/links.js?v=220120251321"></script>
  2832.  <script src="https://pvgis.com/public/assets/min-js/cache.js?v=220120251321"></script>
  2833.  <!-- <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script> -->
  2834.  <script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.0.4/js.cookie.min.js" integrity="sha512-Nonc2AqL1+VEN+97F3n4YxucBOAL5BgqNwEVc2uUjdKOWAmzwj5ChdJQvN2KldAxkCxE4OenuJ/RL18bWxGGzA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  2835.  <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/js/all.min.js"></script>
  2836.  <script src="https://pvgis.com/public/assets/min-js/bootstrap.min.js" defer></script>
  2837.  <script src="https://pvgis.com/public/assets/min-js/global.js?v=220120251321"></script>
  2838.  <script src="https://pvgis.com/public/assets/min-js/google-analytics.js?v=220120251321"></script>
  2839.  <script src="https://pvgis.com/public/assets/min-js/loader.js?v=220120251321"></script>
  2840.  <script src="https://pvgis.com/public/assets/min-js/translation/index.js?v=220120251321"></script>
  2841.  <script src="https://pvgis.com/public/assets/min-js/modal/index.js?v=220120251321"></script>
  2842.  <script src="https://cdn.socket.io/4.5.0/socket.io.min.js"></script>
  2843.  <script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
  2844.  <script src="https://pvgis.com/public/assets/min-js/socket-config.js?v=220120251321"></script>
  2845.  <script>
  2846.    removeIndesirableTag();
  2847.  </script>            <script>
  2848.                $(document).ready(async function() {
  2849.                    // getCountries()
  2850.                    lazyLoadImage()
  2851.                    $('.stepsTitle').click(function() {
  2852.                        $('.panel-collapse').not($(this).parent().attr('href')).collapse('hide')
  2853.                    })
  2854.                    $('#tablist a').on('click', function(e) {
  2855.                        e.preventDefault();
  2856.                        var targetTab = $(this).attr('href');
  2857.                        $('#tablist2 a[href="' + targetTab + '"]').tab('show');
  2858.                    });
  2859.                    $('#tablist2 a').on('click', function(e) {
  2860.                        e.preventDefault();
  2861.                        var targetTab = $(this).attr('href');
  2862.                        $('#tablist a[href="' + targetTab + '"]').tab('show');
  2863.                    });
  2864.  
  2865.                    $("#pays").on("input", function() {
  2866.                        loadAddress()
  2867.                    });
  2868.                    $("#ville").on("input", function() {
  2869.                        loadAddress()
  2870.                    });
  2871.                    $("#rue").on("input", function() {
  2872.                        loadAddress()
  2873.                    });
  2874.                    $("#numrue").on("input", function() {
  2875.                        loadAddress()
  2876.                    });
  2877.                    allCountries = []
  2878.                    if (allCountries?.length === 0) {
  2879.                        $("#pays").one('change', async () => {
  2880.                            allCountries = await new Promise(success => {
  2881.                                $.getJSON(`${window.env.CDN_URL}/assets/json/world-countries.json`, function(data) {
  2882.                                    success(data)
  2883.  
  2884.                                })
  2885.                            })
  2886.                            getCountries();
  2887.                            allCities = await new Promise(success => {
  2888.                                $.getJSON(`/public/assets/json/world-cities.json`, function(data) {
  2889.                                    success(data)
  2890.                                })
  2891.                            })
  2892.                        })
  2893.                    }
  2894.  
  2895.                    function getCountries() {
  2896.                        var data = allCountries.sort((a, b) => a.name.common.localeCompare(b.name.common));
  2897.                        var dropdownContent = document.getElementById("dropdownContent");
  2898.  
  2899.                        data.forEach(country => {
  2900.                            var countryName = country.name.common;
  2901.                            var countryCode = country.cca2;
  2902.                            var option = document.createElement("a");
  2903.                            option.href = "#";
  2904.                            option.textContent = countryName;
  2905.                            option.onclick = function() {
  2906.                                selectOption(countryName, event, countryCode);
  2907.                            };
  2908.                            dropdownContent.appendChild(option);
  2909.                        });
  2910.                    }
  2911.  
  2912.  
  2913.  
  2914.                    function getCities(countryCode) {
  2915.                        var cities = allCities.filter(city => city.country === countryCode)
  2916.                        var dropdownCity = document.getElementById("dropdownCity")
  2917.                        dropdownCity.innerHTML = "";
  2918.                        if (cities.length > 1000) {
  2919.                            cities = cities.slice(0, 1573)
  2920.                        }
  2921.                        cities.forEach(city => {
  2922.                            var cityName = city.name
  2923.                            var option = document.createElement("a")
  2924.                            option.href = "#"
  2925.                            option.textContent = cityName
  2926.                            option.onclick = function() {
  2927.                                selectCity(cityName, event)
  2928.                            }
  2929.                            dropdownCity.appendChild(option)
  2930.                        })
  2931.                    }
  2932.  
  2933.                    function selectOption(value, event, countryCode) {
  2934.                        var input = document.getElementById("customSelect").querySelector("input");
  2935.                        input.value = value;
  2936.                        var inputCity = document.getElementById("customCity").querySelector("input");
  2937.                        inputCity.value = "";
  2938.                        inputCity.focus();
  2939.                        localStorage.setItem('cc', countryCode)
  2940.                        document.getElementById("dropdownContent").style.display = "none";
  2941.                        document.getElementById("dropdownCity").style.display = "block";
  2942.                        getCities(countryCode)
  2943.                        loadAddress()
  2944.                        // $("#dropdownContent").hide();
  2945.                        event.preventDefault();
  2946.                        event.stopPropagation();
  2947.                    }
  2948.  
  2949.                    function selectCity(value, event) {
  2950.                        var input = document.getElementById("customCity").querySelector("input");
  2951.                        input.value = value;
  2952.                        document.getElementById("rue").focus()
  2953.                        document.getElementById("dropdownCity").style.display = "none";
  2954.                        loadAddress()
  2955.                        // $("#dropdownContent").hide();
  2956.                        event.preventDefault();
  2957.                        event.stopPropagation();
  2958.                    }
  2959.  
  2960.                    $("#customSelect").click(function() {
  2961.                        document.getElementById("dropdownContent").style.display = "block";
  2962.                        // $("#dropdownContent").show();
  2963.                    });
  2964.  
  2965.                    $("#customSelect input").keyup(function(e) {
  2966.                        if (e.keyCode == 13) {
  2967.                            document.getElementById("dropdownContent").style.display = "none";
  2968.                            $("#customCity input").focus()
  2969.                            document.getElementById("dropdownCity").style.display = "block";
  2970.                        }
  2971.                    })
  2972.  
  2973.                    $(document).click(function(event) {
  2974.                        var customSelect = document.getElementById("customSelect");
  2975.                        if (event.target !== customSelect && !customSelect.contains(event.target)) {
  2976.                            document.getElementById("dropdownContent").style.display = "none";
  2977.                        }
  2978.                    });
  2979.  
  2980.                    $("#customCity").click(function() {
  2981.                        document.getElementById("dropdownCity").style.display = "block";
  2982.                        // $("#dropdownContent").show();
  2983.                    });
  2984.  
  2985.                    $("#customCity input").keyup(function(e) {
  2986.                        if (e.keyCode == 13) {
  2987.                            document.getElementById("dropdownCity").style.display = "none";
  2988.                            $("#rue").focus()
  2989.                        }
  2990.                    })
  2991.  
  2992.                    $("#rue").keyup(function(e) {
  2993.                        if (e.keyCode == 13) {
  2994.                            $("#numrue").focus()
  2995.                        }
  2996.                    })
  2997.  
  2998.                    $(document).click(function(event) {
  2999.                        var customSelect = document.getElementById("customCity");
  3000.                        if (event.target !== customSelect && !customSelect.contains(event.target)) {
  3001.                            document.getElementById("dropdownCity").style.display = "none";
  3002.                        }
  3003.                    });
  3004.  
  3005.                    getCountries();
  3006.                    filterOptions()
  3007.                    filterCity()
  3008.                })
  3009.  
  3010.                var allCities = []
  3011.  
  3012.                const loadAddress = () => {
  3013.                    const pays = $("#pays").val();
  3014.                    const ville = $("#ville").val();
  3015.                    const rue = $("#rue").val();
  3016.                    const numrue = $("#numrue").val();
  3017.  
  3018.                    const addressArr = [];
  3019.                    if (pays) addressArr.push(pays);
  3020.                    if (ville) addressArr.push(ville);
  3021.                    if (rue) addressArr.push(rue);
  3022.                    if (numrue) addressArr.push(numrue);
  3023.  
  3024.                    $("#address").val(addressArr.join(', '));
  3025.                }
  3026.  
  3027.                function filterOptions() {
  3028.                    var input = document.getElementById("customSelect").querySelector("input");
  3029.                    var filter = input.value.toLowerCase();
  3030.                    var options = document.getElementById("dropdownContent").getElementsByTagName("a");
  3031.                    for (var i = 0; i < options.length; i++) {
  3032.                        var textValue = options[i].innerText.toLowerCase();
  3033.                        if (textValue.indexOf(filter) > -1) {
  3034.                            options[i].style.display = "";
  3035.                        } else {
  3036.                            options[i].style.display = "none";
  3037.                        }
  3038.                    }
  3039.                }
  3040.  
  3041.                function filterCity() {
  3042.                    var input = document.getElementById("customCity").querySelector("input");
  3043.                    var filter = input.value.toLowerCase();
  3044.                    var options = document.getElementById("dropdownCity");
  3045.                    options.innerHTML = "";
  3046.                    var tempCities = allCities.filter(city => city.country === localStorage.getItem('cc'))
  3047.                    var cities = tempCities.filter(city => {
  3048.                        var cityNameLower = city.name.toLowerCase()
  3049.                        return cityNameLower.indexOf(filter) > -1
  3050.                    })
  3051.                    if (cities.length > 100) {
  3052.                        cities = cities.slice(0, 100)
  3053.                    }
  3054.                    cities.forEach(city => {
  3055.                        var li = document.createElement("a")
  3056.                        li.href = "#"
  3057.                        li.textContent = city.name
  3058.                        li.onclick = function() {
  3059.                            selectNewCity(city.name, event)
  3060.                        }
  3061.                        options.appendChild(li)
  3062.                    })
  3063.                    for (var i = 0; i < options.length; i++) {
  3064.                        var textValue = options[i].innerText.toLowerCase();
  3065.                        if (textValue.indexOf(filter) > -1) {
  3066.                            options[i].style.display = "";
  3067.                        } else {
  3068.                            options[i].style.display = "none";
  3069.                        }
  3070.                    }
  3071.                    loadAddress()
  3072.                }
  3073.  
  3074.                function selectNewCity(value, event) {
  3075.                    var input = document.getElementById("customCity").querySelector("input");
  3076.                    input.value = value;
  3077.                    document.getElementById("rue").focus()
  3078.                    document.getElementById("dropdownCity").style.display = "none";
  3079.                    loadAddress()
  3080.                    // $("#dropdownContent").hide();
  3081.                    event.preventDefault();
  3082.                    event.stopPropagation();
  3083.                }
  3084.            </script>
  3085.            <!-- <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBGwuAzneXJqwq8ZQ4oJFb9-crInpddy2E&language=en" async defer></script> -->
  3086.            <!-- <script src="https://pvgis.com/public/assets/min-js/utils/google_maps.js?v=220120251321"></script> -->
  3087.            <script src="https://pvgis.com/public/assets/min-js/countries-area-data.js?v=220120251321"></script>
  3088.            <script src="https://pvgis.com/public/assets/min-js/utils/simple_hash.js?v=220120251321"></script>
  3089.            <script src="https://pvgis.com/public/assets/min-js/custom-countries-extent.js?v=220120251321"></script>
  3090.            <script src="https://cdnjs.cloudflare.com/ajax/libs/highstock/4.2.5/highstock.js"></script>
  3091.            <script src="https://unpkg.com/highcharts@4.2.5/highcharts-more.js"></script>
  3092.            <!-- <script src="https://pvgis.com/public/assets/min-js/highstock/modules/exporting.js?v=220120251321"></script> -->
  3093.            <script src="https://cdn.pvgis.com/assets/js/highstock/modules/exporting.js"></script>
  3094.            <!-- <script src="https://pvgis.com/public/assets/min-js/graph/chart-drawer.js?v=220120251321"></script> -->
  3095.            <!-- <script src="https://cdn.pvgis.com/assets/js/graph/chart-drawer.js"></script> -->
  3096.            <script src="https://pvgis.com/public/assets/min-js/graph/chart-drawer.js?v=220120251321"></script>
  3097.            <!-- <script src="https://pvgis.com/public/assets/min-js/summary/tracking-summary-table.js?v=220120251321"></script> -->
  3098.            <script src="https://cdn.pvgis.com/assets/js/summary/tracking-summary-table.js?"></script>
  3099.            <!-- <script src="https://pvgis.com/public/assets/min-js/graph/grid-connected-and-tracking-pv-system.js?v=220120251321"></script> -->
  3100.            <script src="https://cdn.pvgis.com/assets/js/graph/grid-connected-and-tracking-pv-system.js?v=220120251321"></script>
  3101.            <!-- <script src="https://pvgis.com/public/assets/min-js/graph/offgrid-pv-system.js?v=220120251321"></script> -->
  3102.            <script src="https://cdn.pvgis.com/assets/js/graph/offgrid-pv-system.js"></script>
  3103.            <!-- <script src="https://pvgis.com/public/assets/min-js/horizon-profile/horizon-profile.js?v=220120251321"></script> -->
  3104.            <script src="https://cdn.pvgis.com/assets/js/horizon-profile/horizon-profile.js?v=220120251321"></script>
  3105.            <script src="https://pvgis.com/public/assets/min-js/file-input.js?v=220120251321"></script>
  3106.            <script src="https://pvgis.com/public/assets/min-js/file-download.js?v=220120251321"></script>
  3107.            <!-- <script src="https://pvgis.com/public/assets/min-js/pdf/pdf-download.js?v=220120251321"></script> -->
  3108.            <script src="https://cdn.pvgis.com/assets/js/pdf/pdf-download.js"></script>
  3109.            <!-- <script src="https://pvgis.com/public/assets/min-js/pdf/daily-pdf.js?v=220120251321"></script> -->
  3110.            <script src="https://cdn.pvgis.com/assets/js/pdf/daily-pdf.js"></script>
  3111.            <!-- <script src="https://pvgis.com/public/assets/min-js/pdf/monthly-pdf.js?v=220120251321"></script> -->
  3112.            <script src="https://cdn.pvgis.com/assets/js/pdf/monthly-pdf.js"></script>
  3113.            <!-- <script src="https://pvgis.com/public/assets/min-js/pdf/grid-connected.js?v=220120251321"></script> -->
  3114.            <script src="https://cdn.pvgis.com/assets/js/pdf/grid-connected.js"></script>
  3115.            <!-- <script src="https://pvgis.com/public/assets/min-js/pdf/tracking.js?v=220120251321"></script> -->
  3116.            <script src="https://cdn.pvgis.com/assets/js/pdf/tracking.js"></script>
  3117.            <!-- <script src="https://pvgis.com/public/assets/min-js/pdf/offgrid.js?v=220120251321"></script> -->
  3118.            <script src="https://cdn.pvgis.com/assets/js/pdf/offgrid.js"></script>
  3119.            <script src="https://pvgis.com/public/assets/min-js/ol.min.js?v=220120251321"></script>
  3120.            <script src="https://pvgis.com/public/assets/min-js/utils.js?v=220120251321"></script>
  3121.            <!-- <script src="https://pvgis.com/public/assets/min-js/summary/summary-table.js?v=220120251321"></script> -->
  3122.            <script src="https://cdn.pvgis.com/assets/js/summary/summary-table.js"></script>
  3123.            <!-- <script src="https://pvgis.com/public/assets/min-js/graph/daily.js?v=220120251321"></script> -->
  3124.            <script src="https://cdn.pvgis.com/assets/js/graph/daily.js"></script>
  3125.            <!-- <script src="https://pvgis.com/public/assets/min-js/graph/monthly.js?v=220120251321"></script> -->
  3126.            <script src="https://cdn.pvgis.com/assets/js/graph/monthly.js"></script>
  3127.            <!-- <script src="https://pvgis.com/public/assets/min-js/graph/tmy.js?v=220120251321"></script> -->
  3128.            <script src="https://pvgis.com/public/assets/min-js/graph/tmy.js"></script>
  3129.            <script src="https://pvgis.com/public/assets/min-js/getDataMap.js?v=220120251321"></script>
  3130.            <script src="https://pvgis.com/public/assets/min-js/logPDFModal.js?v=220120251321"></script>
  3131.            <script src="https://pvgis.com/public/assets/min-js/carousel-banner.js?v=220120251321"></script>
  3132.            <!-- <script src="https://pvgis.com/public/assets/min-js/simulator-by-google-maps.js?v=220120251321"></script> -->
  3133.            <script src="https://pvgis.com/public/assets/min-js/extranet/dropdown-select.js?v=220120251321" defer></script>
  3134.  
  3135.            <script src="https://cdn.pvgis.com/assets/libs/pdf.js/2.12.313/pdf.min.js"></script>
  3136.            <script src="https://cdn.pvgis.com/assets/libs/pdf-lib/1.17.1/pdf-lib.min.js"></script>
  3137.            <script src="https://cdn.pvgis.com/assets/libs/sortable/1.14.0/sortable.min.js"></script>
  3138.  
  3139.            <script
  3140.                src="https://pvgis.com/public/assets/min-js/extranet/pdf-editor.js?v=220120251321"
  3141.                defer></script>
  3142.  
  3143.            <script>
  3144.                const inSimulator = true
  3145.                $(document).ready(function() {
  3146.                    $(".banner a").attr('title', `Visit solardropshipping.com`);
  3147.                    lazyLoadImage()
  3148.  
  3149.                    getDataMap()
  3150.                    if (pdfData) {
  3151.                        setSimulatorData(pdfData)
  3152.                    }
  3153.                    $('#modalSteps').on('show.bs.modal', function(event) {
  3154.                        $(this).find('.modal-content').append($('#steps-content'))
  3155.                        $('.stepsIcon').html('<i class="fas fa-times"></i>')
  3156.                    })
  3157.                    $('#modalSteps').on('hidden.bs.modal', function(event) {
  3158.                        $('#steps').append($('#steps-content'))
  3159.                        $('.stepsIcon').html('<i class="fas fa-bars"></i>')
  3160.                    })
  3161.                    $('#tablist a[data-toggle="tab"]').on('shown.bs.tab', function(event) {
  3162.                        let tabActif = $(event.target).attr('href')
  3163.                        $(tabActif + ' .checkboxSimulator').prop('checked', false)
  3164.                    })
  3165.                });
  3166.            </script>
  3167.        </div>
  3168.  
  3169.        <div class="modal-backdrop" id="modal-backdrop-pdf">
  3170.    <div id='pdf-modal' class="modal modal-box-shadow">
  3171.        <div id="loading"></div>
  3172.        <div class="pdf-editor">
  3173.            <div id="editor-1">
  3174.                <div style="width: 100%;">
  3175.                    <div class="modal-info">
  3176.                        <div class="modal-title">
  3177.                            <div class="left-title">
  3178.                                <h4 id="title">PDF EDITOR COMPONENT</h4>
  3179.                                <!-- Titre visible par défaut -->
  3180.                                <input type="text" id="name" name="name" required minlength="4" size="50"
  3181.                                    value="PDF EDITOR COMPONENT" style="display: none; width: 100%; padding: 5px;" />
  3182.                                <!-- Input caché par défaut, largeur automatique et padding ajouté -->
  3183.                                <span id="edit-icon" class="zoom-button" title="Modifier">
  3184.                                    <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24"
  3185.                                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
  3186.                                        stroke-linejoin="round" class="lucide lucide-pencil">
  3187.                                        <path
  3188.                                            d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z" />
  3189.                                        <path d="m15 5 4 4" />
  3190.                                    </svg>
  3191.                                </span>
  3192.                                <span style="display: none;" id="close-icon" class="zoom-button" title="Sauvegarder">
  3193.                                    <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24"
  3194.                                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
  3195.                                        stroke-linejoin="round" class="lucide lucide-save">
  3196.                                        <path
  3197.                                            d="M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z" />
  3198.                                        <path d="M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7" />
  3199.                                        <path d="M7 3v4a1 1 0 0 0 1 1h7" />
  3200.                                    </svg>
  3201.                                </span>
  3202.                            </div>
  3203.                            <div class="zoom-container">
  3204.                                <H4 data-ts="pvgis.organis_download" class="organise">Organiser et telecharger</H4>
  3205.                                <div class="zoom-left">
  3206.                                    <span id="zoom-in" class="zoom-button" title="Zoom +">
  3207.                                        <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"
  3208.                                            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
  3209.                                            stroke-linecap="round" stroke-linejoin="round"
  3210.                                            class="lucide lucide-zoom-in">
  3211.                                            <circle cx="11" cy="11" r="8" />
  3212.                                            <line x1="21" x2="16.65" y1="21" y2="16.65" />
  3213.                                            <line x1="11" x2="11" y1="8" y2="14" />
  3214.                                            <line x1="8" x2="14" y1="11" y2="11" />
  3215.                                        </svg>
  3216.                                    </span>
  3217.                                    <span id="zoom-out" class="zoom-button" title="Zoom -">
  3218.                                        <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"
  3219.                                            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
  3220.                                            stroke-linecap="round" stroke-linejoin="round"
  3221.                                            class="lucide lucide-zoom-out">
  3222.                                            <circle cx="11" cy="11" r="8" />
  3223.                                            <line x1="21" x2="16.65" y1="21" y2="16.65" />
  3224.                                            <line x1="8" x2="14" y1="11" y2="11" />
  3225.                                        </svg>
  3226.                                    </span>
  3227.                                    <span id="zoom-reset" class="zoom-button" title="Réinitialiser">
  3228.                                        <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"
  3229.                                            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
  3230.                                            stroke-linecap="round" stroke-linejoin="round"
  3231.                                            class="lucide lucide-rotate-ccw">
  3232.                                            <path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" />
  3233.                                            <path d="M3 3v5h5" />
  3234.                                        </svg>
  3235.                                    </span>
  3236.                                    <span id="download" class="zoom-button" title="download">
  3237.                                        <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"
  3238.                                            viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
  3239.                                            stroke-linecap="round" stroke-linejoin="round"
  3240.                                            class="lucide lucide-download">
  3241.                                            <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" />
  3242.                                            <polyline points="7 10 12 15 17 10" />
  3243.                                            <line x1="12" x2="12" y1="15" y2="3" />
  3244.                                        </svg>
  3245.                                    </span>
  3246.                                </div>
  3247.  
  3248.                                <span onclick="closePdfEditorModal('editor-1')" title="Fermer" class="zoom-button">
  3249.                                    <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24"
  3250.                                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
  3251.                                        stroke-linejoin="round" class="lucide lucide-x">
  3252.                                        <path d="M18 6 6 18" />
  3253.                                        <path d="m6 6 12 12" />
  3254.                                    </svg></span>
  3255.                            </div>
  3256.                        </div>
  3257.                        <div class="preview-container">
  3258.                            <div class="thumbnail-wrapper">
  3259.                                <div class="thumbnail-container">
  3260.                                </div>
  3261.                            </div>
  3262.  
  3263.                            <div class="page-container">
  3264.                            </div>
  3265.  
  3266.                        </div>
  3267.                    </div>
  3268.                </div>
  3269.            </div>
  3270.        </div>
  3271.    </div>
  3272. </div>
  3273.  
  3274. <div class="loading-modal" id="pdf-loading-modal">
  3275.    <div>
  3276.        <div class="loader"></div>
  3277.        <div class="message-container">
  3278.            <div class="message"></div>
  3279.            <span class="loading-dots" style="display: none;">
  3280.                <span>.</span>
  3281.                <span>.</span>
  3282.                <span>.</span>
  3283.            </span>
  3284.        </div>
  3285.    </div>
  3286. </div>
  3287.    </div>
  3288.    <script>
  3289.        ready(() => {
  3290.            // document.body.style.display = "unset";
  3291.            // document.body.style.overflow = "auto";
  3292.            setTimeout(() => {
  3293.                // console.log("bla");
  3294.  
  3295.                // document.querySelector(".map-address-container .loadingMapAndSimulato").style.display = 'block';
  3296.            }, 1000)
  3297.            setTimeout(() => {
  3298.                // const originalLocation = window.location;
  3299.  
  3300.                // window.watch('location', function( attr ,_ , target){
  3301.                //     if(target.indexOf('unwanted url') !== -1)return '#';
  3302.                // });
  3303.                // document.querySelectorAll('*').forEach(element => {
  3304.                //     // delete element.href
  3305.                //     // Check if the element is not an <a> tag with an href attribute
  3306.                //     if (!(element.tagName.toLowerCase() === 'a' && element.hasAttribute('href'))) {
  3307.                //         try {
  3308.                //             element.click(); // Programmatically click the element
  3309.                //         } catch (err) {
  3310.                //             console.warn('Cannot click element:', element, err);
  3311.                //         }
  3312.                //     }
  3313.                // });
  3314.  
  3315.            }, 2000)
  3316.        })
  3317.    </script>
  3318.    <footer id="footer">
  3319.  <div class="container footer-content">
  3320.    <p>&copy; <span data-ts="pvgis.footer.copyright">COPYRIGHT 2024</span></p>
  3321.  </div>
  3322.  <div class="side-web-menu">
  3323.    <ul class="side-menu-container">
  3324.    </ul>
  3325.  </div>
  3326. </footer>
  3327.  
  3328. <script>
  3329.    $(document).ready(function() {
  3330.        //generation menu
  3331.        generateSideMenu();
  3332.        generateNavigationMenu();
  3333.        fetchSeletedLang();
  3334.        getSelectedNav();
  3335.        //Show or hide change language
  3336.        $(".side-menu-item-lang").on("click", (event) => {
  3337.            event.stopPropagation();
  3338.            $(document).one("click.langPopover", (event) => {
  3339.                if (!$(event.target).closest('.lang-popover, .more-languages').length) {
  3340.                    $(".lang-popover").css('display', 'none');
  3341.                }
  3342.                $(document).off("click.langPopover");
  3343.            });
  3344.        });
  3345.  
  3346.        // "More Languages" option
  3347.        $(".side-menu-item-lang").on("click", ".more-languages", (event) => {
  3348.            event.stopPropagation();
  3349.            $(".lang-popover").css('display', 'none');
  3350.            $(".more-lang-popover").css('display', 'grid');
  3351.            generateMoreLanguages();
  3352.        });
  3353.  
  3354.        $(".side-menu-item-lang").on("click", ".lang-label, .back-lang", (event) => {
  3355.            $(".more-lang-popover").css('display', 'none');
  3356.            if ($(".lang-popover").css('display') === 'grid') {
  3357.                $(".lang-popover").css('display', 'none');
  3358.            } else {
  3359.                generateLanguage();
  3360.                $(".lang-popover").css('display', 'grid');
  3361.            };
  3362.        });
  3363.        // Show account menu
  3364.        const accountMenuToggler = document.querySelector(".account-menu-toggler")
  3365.        if(accountMenuToggler){
  3366.            accountMenuToggler.addEventListener("click", (e) => {
  3367.            e.stopPropagation()
  3368.            const menu = document.querySelector('.account-menu')
  3369.            if (menu.classList.contains('visible')) {
  3370.                menu.classList.remove('visible')
  3371.            } else {
  3372.                menu.classList.add('visible')
  3373.            }
  3374.        });
  3375.        }
  3376.        
  3377.  
  3378.        // Hide the account menu when clicking outside of it
  3379.        $(document).click(function(event) {
  3380.            if (!$(event.target).closest(".account-menu").length &&
  3381.                !$(event.target).is(".account-menu-toggler") ||
  3382.                $(event.target).is(".account-menu-container .account-menu div a")) {
  3383.                $(".account-menu").removeClass('visible');
  3384.            }
  3385.        });
  3386.  
  3387.        // Close .more-lang-popover when clicking outside of it
  3388.        $(document).on("click", function(event) {
  3389.            if (!$(event.target).closest(".more-lang-popover").length &&
  3390.                !$(event.target).is(".more-languages")) {
  3391.                $(".more-lang-popover").css('display', 'none');
  3392.            }
  3393.        });
  3394.  
  3395.        // Change language on click
  3396.        $(".side-menu-item-lang").on("click", ".lang-option", function() {
  3397.            const selectedLanguage = $(this).data('language');
  3398.            const selectedLabel = $(this).closest('.lang-option').find('.label-lang').text();
  3399.            if (selectedLanguage) {
  3400.                changeLanguage(selectedLanguage, selectedLabel);
  3401.                $(".lang-popover").css('display', 'none');
  3402.                $(".more-lang-popover").css('display', 'none');
  3403.            }
  3404.        });
  3405.  
  3406.        $(".menu-btn").on("click", () => {
  3407.            showMenu();
  3408.        })
  3409.  
  3410.        //hide menu
  3411.        $(".menu-mobile").on("click", (event) => {
  3412.            if (!$(event.target).closest('.menu-mobile-container').length) {
  3413.                hideMenu();
  3414.            }
  3415.        });
  3416.        $(".menu-m-header button").on("click", () => {
  3417.            hideMenu();
  3418.        })
  3419.  
  3420.        //clickable div for account menu
  3421.        document.querySelectorAll('.clickable-div').forEach(div => {
  3422.            div.addEventListener('click', function() {
  3423.                const link = this.querySelector('a');
  3424.                if (link) {
  3425.                    window.location.href = link.href;
  3426.                }
  3427.            });
  3428.        });
  3429.    });
  3430.  </script>
  3431.    <script>
  3432.        document.addEventListener('DOMContentLoaded', function() {
  3433.            const masqueDiv = () => {
  3434.                let largeurFenetre = window.innerWidth;
  3435.                let footer = document.getElementById('footer')
  3436.                let divAMasquer = document.getElementById('stepsButton');
  3437.                let positionScroll = window.scrollY;
  3438.                let positionBasDePage = document.documentElement.scrollHeight - window.innerHeight;
  3439.                if (positionBasDePage - positionScroll <= 150 && largeurFenetre < 992) {
  3440.                    footer.style.marginBottom = "50px"
  3441.                } else {
  3442.                    footer.style.marginBottom = "0"
  3443.                }
  3444.            }
  3445.            window.addEventListener('scroll', function() {
  3446.                masqueDiv()
  3447.            });
  3448.        });
  3449.        $(document).ready(function() {
  3450.            $(".banner a").attr('title', `Visit solardropshipping.com`);
  3451.            $(".banner a").attr('href', `${env.SOLAR_DROP_SHIPPING}`);
  3452.        })
  3453.    </script>
  3454. </body>
  3455. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda