sendtransfer.com Ads.txt file


<!DOCTYPE html>
<html style="scrollbar-width: none;">
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://www.datatransfer.com/">
<link rel="preconnect" href="http://datatransfer.com-ca-montreal.l5s6.ca.idrivee2-21.com">
<link rel="preload" href="https://securepubads.g.doubleclick.net/tag/js/gpt.js" as="script" />
<link rel="preload" href="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" as="script" />
<link rel="preload" as="image" href="https://datatransfer.b-cdn.net/assets/img/upload.png">

<!-- Preload LEAFLET -->
<!-- <link rel="preload" href="https://datatransfer.b-cdn.net/assets/js/leaflet.js" as="script" /> -->
<!-- <link rel="preload" href="https://datatransfer.b-cdn.net/assets/css/leaflet.css" as="style" /> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/3/2.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/3/3.png" type="image/png" loading="lazy">
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/2/2.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/4/2.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/2/3.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/4/3.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/1/2.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/5/2.png" type="image/png" loading="lazy">
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/1/3.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/5/3.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/0/2.png" type="image/png" loading="lazy">
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/6/2.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/0/3.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/6/3.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/7/2.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://b.basemaps.cartocdn.com/dark_nolabels/3/7/3.png" type="image/png" loading="lazy"> -->
<!-- <link rel="preload" fetchpriority="high" as="image" href="https://c.basemaps.cartocdn.com/dark_nolabels/3/3/3@2x.png" type="image/png" loading="lazy"> -->
<!-- Preload LEAFLET -->

<title>DataTransfer | Transfer Big Files Up To 10GB</title>

<base href="https://www.datatransfer.com/">

<!-- Favicon -->
<!-- <link href="https://www.datatransfer.com/img/favicon.ico" rel="shortcut icon" type="image/png"> -->

<!-- Search engine tags -->
<meta name="description" content="DataTransfer is the online service that allows users to send large files up to 10GB for free. Ideal choice for businesses and individuals who need to transfer big files.">
<meta name="author" content="DataTransfer">
<meta name="keywords" content="data transfer,file transfer,file sharing, transfer big file, send large files, large file transfer"/>

<!-- External libraries and fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://cdn.lineicons.com/3.0/lineicons.css" rel="stylesheet">
<link href="https://datatransfer.b-cdn.net/assets/css/vegas.min.css?v=2.6.5" rel="stylesheet">

<!-- Preload icons -->

<!-- stylesheet -->
<link rel="stylesheet" href="https://datatransfer.b-cdn.net/assets/themes/modern/css/style.css?v=16730351122.6.5">

<!-- Style overwrite -->
<style>.button.is-info, .upload-block .upload-form .radio-group .radio.selected { background: black !important; color: white } .close-btn { color: black } .navbar.is-info { background-color: black }</style>


<!-- Add Block Update -->
<!-- Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "DataTransfer",
"url": "https://www.datatransfer.com",
"logo": "https://www.datatransfer.com/img/logo.png",
"sameAs": "https://twitter.com/DT_10GB",
"description": "DataTransfer is the online service that allows users to send large files up to 10GB for free. Ideal choice for businesses and individuals who need to transfer big files.",
"provider": {
"@type": "Organization",
"name": "DataTransfer"
}
}
</script>
<!-- Schema -->
<!-- Favicon -->
<link rel="icon" href="/img/favicon.ico" sizes="32x32">
<link rel="icon" href="/img/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/img/apple-touch-icon.png"><!-- 180×180 -->
<!-- Favicon END -->
<script src="https://datatransfer.b-cdn.net/assets/js/jquery-3.6.0.min.js"></script>
<link rel="stylesheet" href="https://datatransfer.b-cdn.net/assets/themes/modern/css/style.css?v=8756770552.6.5">
<link rel="canonical" href="https://www.datatransfer.com/">
<link rel="image_src" type="image/png" href="https://www.datatransfer.com/img/logo.png"/>
<link rel="preload" href="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" as="script" />
<link rel="preload" href="https://securepubads.g.doubleclick.net/tag/js/gpt.js" as="script" />
<meta name="DC.Language" content="en" >
<meta name="DC.Title" content="DataTransfer | Transfer Big Files Up To 10GB" >
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@DT_10GB DataTransfer">
<meta name="twitter:creator" content="@DT_10GB DataTransfer">
<meta name="twitter:title" content="DataTransfer | Transfer Big Files Up To 10GB">
<meta name="twitter:description" content="DataTransfer is the online service that allows users to send large files up to 10GB for free. Ideal choice for businesses and individuals who need to transfer big files.">
<meta name="twitter:image" content="https://www.datatransfer.com/img/logo.png">
<!-- Open Graph data (volitelné, ale doporučené) -->
<meta property="og:title" content="DataTransfer | Transfer Big Files Up To 10GB">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.datatransfer.com">
<meta property="og:image" content="https://www.datatransfer.com/img/logo.png">
<meta property="og:description" content="DataTransfer is the online service that allows users to send large files up to 10GB for free. Ideal choice for businesses and individuals who need to transfer big files.">
<meta property="og:site_name" content="DataTransfer.com">
<link rel="canonical" href="https://www.datatransfer.com/" />
<style>
html {
background-color: #000000 !important;
}
@import url('https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Indie+Flower&display=swap');&display=swap');
</style>
<style>
@import url(bulma.min.css);.button.is-info{background-color:#ededed!important;border-radius:20px!important;height:35px;color:#1b1b1b!important}.button.is-info :hover{color:#000!important}.navbar.is-info{background-color:#000!important}h6{font-size:2.5em}h5{font-size:1.6em;font-weight:700}body{width:100%;height:100%;margin:0;padding:0;color:#000;font-family:Roboto,"Times New Roman",Times,serif;background-color:#000;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;-webkit-transition:background 1s ease-in-out;-moz-transition:background 1s ease-in-out;-o-transition:background 1s ease-in-out;-ms-transition:background 1s ease-in-out;transition:background 1s ease-in-out;-webkit-backface-visibility:hidden;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.main-logo{position:fixed;top:5px;left:0;max-height:60px}.mobile-nav{display:none;font-size:14px}.mobile-nav .navbar-item,.mobile-nav .navbar-link{line-height:15px}.background{position:fixed!important;left:0;top:0;width:100%!important;height:100%!important;z-index:0!important;cursor:auto;background:#000}@media (max-width:768px){body{position:fixed;background-color:#fff;overflow-y:scroll}.background,.main-logo{display:none}.mobile-nav{display:block}}
@media (max-width: 768px) {.hidden-sm {display: none !important;}}
.upload-block{position: absolute;left: 50%;top: 50%;-webkit-transform: translate(-50%, -50%);transform: translate(-50%, -50%);}
@media (max-width: 768px) {.upload-block {margin-left:0px;}}
.upload-block-inner{left: 0% !important;margin-left: 0px !important;}
@media (max-width: 768px) {.upload-block-inner {width:300px!important;}}
</style>
<!-- font family Roboto -->
<style>
@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmZiArmlw.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmQiArmlw.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmYiArmlw.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmXiArmlw.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVnoiArmlw.woff2) format('woff2');unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVn6iArmlw.woff2) format('woff2');unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F3F3,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmbiArmlw.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmaiArmlw.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/roboto/v47/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWuaabVmUiAo.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
</style>
<!-- font family Roboto -->
<!-- font family Raleway -->
<style>
@font-face{font-family:'Raleway';font-style:normal;font-weight:300;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Raleway';font-style:normal;font-weight:300;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Raleway';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Raleway';font-style:normal;font-weight:600;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Raleway';font-style:normal;font-weight:800;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Raleway';font-style:normal;font-weight:800;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Raleway';font-style:normal;font-weight:800;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Raleway';font-style:normal;font-weight:800;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Raleway';font-style:normal;font-weight:800;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Raleway';font-style:normal;font-weight:900;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCAIT5lu.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Raleway';font-style:normal;font-weight:900;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCkIT5lu.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Raleway';font-style:normal;font-weight:900;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCIIT5lu.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Raleway';font-style:normal;font-weight:900;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyCMIT5lu.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Raleway';font-style:normal;font-weight:900;src:url(https://fonts.gstatic.com/s/raleway/v34/1Ptug8zYS_SKggPNyC0ITw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
</style>
<!-- font family Raleway -->

<script>
$('a[data-target="tab-terms"]').hide();
</script>

<!-- Analytics -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-730V2FYF7G"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'G-730V2FYF7G');
</script>
<!-- Analytics -->

<!-- Google Adsense -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
(adsbygoogle = window.adsbygoogle || []).push({
google_ad_client: "ca-pub-7740240375137244",
enable_page_level_ads: true
});
</script>
<!-- Google Adsense -->

<!-- Google Adsense DT_INDEX -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/DT_INDEX_300x100', [[320, 100], [300, 100], [300, 75]], 'div-gpt-ad-1662815517026-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
<!-- Google Adsense DT_INDEX -->

<!-- Google Adsense DT_INDEX_OPTIONS_300x100 -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/DT_INDEX_OPTIONS_300x100', [[320, 100], [300, 100], [300, 75]], 'div-gpt-ad-1743584373831-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
});
</script>
<!-- Google Adsense DT_INDEX_OPTIONS_300x100 -->

<!-- Google Adsense DT_PROGRESS -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/DT_PROGRESS_300x100', [[320, 100], [300, 100], [300, 75]], 'div-gpt-ad-1662817897654-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
<!-- Google Adsense DT_PROGRESS -->

<!-- Google Adsense DT_SUCCESS -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/DT_SUCCESS_300x100', [[336, 280], [300, 100]], 'div-gpt-ad-1663231230538-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
<!-- Google Adsense DT_SUCCESS -->

<!-- Google Adsense Download ST_DOWN -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/ST_DOWN_336x280_1', [336, 280], 'div-gpt-ad-1732802672358-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
});
</script>
<!-- Google Adsense Download ST_DOWN -->

<!-- Google Adsense Download_PT_DOWNLOAD -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/PT_DOWNLOAD_336x280', [336, 280], 'div-gpt-ad-1730966601524-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
});
</script>
<!-- Google Adsense Download_PT_DOWNLOAD -->

<!-- Google Adsense DT_DOWN_NOT_FOUND -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/DT_DOWN_NOT_FOUND_300x250', [336, 280], 'div-gpt-ad-1730967717399-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
<!-- Google Adsense DT_DOWN_NOT_FOUND -->

<!-- Google Adsense UPLOAD IS PROCESSING -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/DT_UPLOAD_IS_PROCESSING_336x280', [336, 280], 'div-gpt-ad-1731086349417-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();
});
</script>
<!-- Google Adsense UPLOAD IS PROCESSING -->

<!-- Add Block Update END -->

<style>.background { background: #000 !important;}
.background { overflow: hidden !important;}

.upload-block {
height: 450px !important;
}

.iss-tooltip {
background-color: black !important;
color: white !important;
font-size: 16px !important;
border: none !important;
padding: 2px 4px;
box-shadow: none;
}

.navbar.is-info {
/* margin-top: -43px !important; */
position: fixed;
top: 0px;
width: 100%;
}

.upload-block {
z-index: 2000;
}
.tab-window.active {
z-index: 5000;
}
.tabs:not(.core) {
z-index: 5001;
}
.modal.active {
z-index: 5555;
}
.main-logo {
z-index: 5003;
}
@media (max-width: 768px) {
body {
overflow-y: scroll !important;
background: #fff !important;
}
}

.vegas-content-scrollable {
overflow: hidden;
}

.filesfolder:hover {
background: #f9f9f9 !important;
border: 1px #e7e7e7 solid !important;
cursor: pointer !important;
}

.upload-block-inner {box-shadow: 0 .5rem 1rem .125rem rgba(0, 0, 0, .05); -webkit-transition: -webkit-box-shadow .2s; transition: -webkit-box-shadow .2s; transition: box-shadow .2s; transition: box-shadow .2s, -webkit-box-shadow .2s;}

.upload-block-inner:hover{-webkit-box-shadow:0 .5rem 1rem .25rem rgba(0,0,0,.075);box-shadow:0 .5rem 1rem .25rem rgba(0,0,0,.075)}

.hidden-sm{ box-shadow: none;}
.hidden-sm:hover{box-shadow: none;}

.button-block {
border: none !important;
}


@media (max-width: 768px) {
.upload-block .upload-block-inner {
margin-top: 50px;
}
.files {
margin-top: -34px !important;
}
}

@media (max-width: 1245px) {
.popup {
display: none !important;
}
.bmac {
display: none !important;
}
}

@media (max-width: 768px) {
.button-block {
height: 270px !important;
}
}

@media (max-width: 768px) {
.upload-block {
z-index: 1;
position: absolute;
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
}







.animated {
-webkit-animation-duration: 10s;animation-duration: 10s;
-webkit-animation-fill-mode: both;animation-fill-mode: both;
}
@-webkit-keyframes fadeOut {
0% {opacity: 1;}
95% {opacity: 1;}
100% {opacity: 0.0;}
}
@keyframes fadeOut {
0% {opacity: 1;}
95% {opacity: 1;}
100% {opacity: 0.0;}
}
.fadeOut {
-webkit-animation-name: fadeOut;
animation-name: fadeOut;
}
.fadeOut:hover {
opacity: 1 !important;
}

.upload-block-content#download .block-icon {
width: 68px !important;
margin-top: 0px !important;
}

.upload-progress-bar {
margin-top: 0px !important;
}

.upload-block-tooltip {
position: fixed;
right: 380px;
}

.upload-block .upload-block-content.start-top {
border-radius: 11px !important;
}
.upload-block .upload-block-inner {
border-radius: 11px !important;
}
.upload-block .upload-block-content .button-block {
border-radius: 11px;
}

.selected-files .add-buttons .button:first-child {
border-radius: 0px !important;
}
.selected-files .add-buttons .button:last-child {
border-radius: 0px !important;
}

.upload-block .upload-block-content .button-block button {
background-color: #f8f8f8 !important;
}

.tab-window .tab h2 {
font-weight: 100;
}


@keyframes cssAnimation {
to { opacity: 1; }
}
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% {transform: rotate(360deg);} }
</style>

<!-- Javascript -->
<script src="https://datatransfer.b-cdn.net/assets/js/jquery-3.6.0.min.js"></script>
<!-- Include video.js CSS -->
<!-- <link href="https://vjs.zencdn.net/7.11.4/video-js.css" rel="stylesheet" />-->

<!-- Include video.js JavaScript -->
<!-- <script src="https://vjs.zencdn.net/7.11.4/video.min.js"></script>-->
</head>

<!-- Background -->
<!-- <div class="background hidden-sm" id="background"></div> -->

<!-- Add Block Update -->
<!-- Full width background -->


//
//

<!-- Leaflet CSS -->
<link rel="stylesheet" href="https://datatransfer.b-cdn.net/assets/css/leaflet.css">

<style>
html,body{margin:0;padding:0;height:100%;overflow:hidden;}#map-container{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;}#map{position:absolute;top:-30%;left:-30%;width:160% !important;height:160% !important;transition:transform 0.1s ease-out;cursor:grab;overflow:hidden;}
</style>

<div class="hidden-sm">
<div id="map-container">
<div id="map" aria-hidden="true" role="presentation"></div>
</div>
</div>

<!-- Leaflet JS -->
<script src="https://datatransfer.b-cdn.net/assets/js/leaflet.js"></script>
<script>
// Inicializace mapy – vestavěné interakce jsou vypnuty, používáme vlastní drag logiku
var map = L.map('map', {
attributionControl: false,
zoomControl: false,
dragging: false,
scrollWheelZoom: false,
doubleClickZoom: false,
boxZoom: false,
keyboard: false,
center: [30, -34],
zoom: 3
});

// Přidání tile layeru (dark_nolabels)
L.tileLayer('https://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}{r}.png', {
attribution: '&copy; OpenStreetMap &copy; CARTO',
subdomains: 'abcd',
maxZoom: 19
}).addTo(map);

// --- Městské markery ---
var markerLayer = L.layerGroup().addTo(map);
var markersByCity = {};

// Pomocná funkce pro interpolaci barvy z modré (#0000ff) do červené (#ff0000)
function interpolateOutlineToTarget(fraction) {
var r = Math.round(fraction * 255); // 0 → 255
var b = Math.round((1 - fraction) * 255); // 255 → 0
var rHex = r.toString(16).padStart(2, '0');
var bHex = b.toString(16).padStart(2, '0');
return '#' + rHex + '00' + bHex;
}

// Funkce, která načítá data měst a přidává nové markery ve fázi 1.
function updateMarkers() {
fetch('/rating/pozadi/get_cities.php?t=' + new Date().getTime())
.then(response => response.json())
.then(cities => {
console.log("Data z get_cities.php:", cities);
if (!Array.isArray(cities) || cities.length === 0) {
console.log("Nebyla vrácena žádná data.");
return;
}
var newKeys = {};
cities.forEach(function(city) {
if (city.lat && city.lon) {
var lat = parseFloat(city.lat);
var lon = parseFloat(city.lon);
if (!isNaN(lat) && !isNaN(lon)) {
var key = city.mesto; // předpokládáme unikátní identifikátor
newKeys[key] = true;
if (!markersByCity[key]) {
var marker = L.circleMarker([lat, lon], {
radius: 3.5 * 5,
fillColor: '#0000ff',
color: '#0000ff',
weight: 1,
opacity: 1,
fillOpacity: 0,
interactive: false
}).addTo(markerLayer);
marker.baseRadius = 3.5;
marker.createdAt = Date.now();
markersByCity[key] = marker;
} else {
markersByCity[key].setLatLng([lat, lon]);
}
} else {
console.warn("Neplatné souřadnice:", city);
}
} else {
console.warn("Chybí souřadnice pro:", city);
}
});
for (var key in markersByCity) {
if (!newKeys[key]) {
markerLayer.removeLayer(markersByCity[key]);
delete markersByCity[key];
}
}
})
.catch(function(error) {
console.error("Chyba při načítání měst:", error);
});
}

setInterval(updateMarkers, 15000);
updateMarkers();

// --- Animace markerů měst ---
function animateMarkerColors() {
var now = Date.now();
for (var key in markersByCity) {
var marker = markersByCity[key];
var age = (now - marker.createdAt) / 1000; // věk markeru v sekundách

if (age < 1) {
var fraction = age / 1;
var targetPulse = 1 + 0.1 * Math.sin((2 * Math.PI * now) / 500);
var targetRadius = marker.baseRadius * targetPulse;
var radius = marker.baseRadius * 5 + fraction * (targetRadius - marker.baseRadius * 5);
var color = interpolateOutlineToTarget(fraction);
var fillOpacity = fraction * 0.8;

marker.setStyle({
fillColor: color,
color: color,
weight: 1,
fillOpacity: fillOpacity,
radius: radius
});
} else if (age < 4) {
var t = (age - 1) / 3;
var smoothT = 0.5 - 0.5 * Math.cos(Math.PI * t);
var r = Math.round(255 * (1 - smoothT));
var b = Math.round(255 * smoothT);
var color = '#' + r.toString(16).padStart(2, '0') + '00' + b.toString(16).padStart(2, '0');
var pulse = 1 + 0.1 * Math.sin((2 * Math.PI * now) / 500);
marker.setStyle({
fillColor: color,
color: color,
weight: 1,
fillOpacity: 0.8,
radius: marker.baseRadius * pulse
});
} else {
marker.setStyle({
fillColor: '#0000ff',
color: '#0000ff',
weight: 1,
fillOpacity: 0.8,
radius: marker.baseRadius
});
}
}
requestAnimationFrame(animateMarkerColors);
}
requestAnimationFrame(animateMarkerColors);

// --- Slunce a Měsíc ---
var sunAura = L.circleMarker([0,0], {
radius: 28,
fillColor: '#ffffaa',
color: '#ffffaa',
weight: 0,
opacity: 1,
fillOpacity: 0.3,
interactive: false
}).addTo(map);
var sunMarker = L.circleMarker([0,0], {
radius: 18,
fillColor: '#ffff00',
color: '#ffff00',
weight: 1,
opacity: 1,
fillOpacity: 0.9,
interactive: false
}).addTo(map);
var moonMarker = L.circleMarker([0,0], {
radius: 6,
fillColor: '#ffffff',
color: '#ffffff',
weight: 1,
opacity: 1,
fillOpacity: 0.9,
interactive: false
}).addTo(map);

var sunHitArea = L.circleMarker([0,0], {
radius: 35,
fillOpacity: 0,
opacity: 0,
interactive: true
}).addTo(map);
sunHitArea.bindTooltip("The Sun", {
permanent: false,
direction: 'top',
opacity: 0.9,
className: 'iss-tooltip'
});

var moonHitArea = L.circleMarker([0,0], {
radius: 15,
fillOpacity: 0,
opacity: 0,
interactive: true
}).addTo(map);
moonHitArea.bindTooltip("The Moon", {
permanent: false,
direction: 'top',
opacity: 0.9,
className: 'iss-tooltip'
});

function updateSunPosition() {
var now = new Date();
var start = new Date(now.getFullYear(), 0, 0);
var diff = now - start;
var oneDay = 1000 * 60 * 60 * 24;
var dayOfYear = Math.floor(diff / oneDay);
var decl = 23.44 * Math.sin((2 * Math.PI / 365) * (284 + dayOfYear));
var subsolarLat = decl;
var utcTime = now.getUTCHours() + now.getUTCMinutes()/60 + now.getUTCSeconds()/3600;
var subsolarLon = -15 * (utcTime - 12);
subsolarLon = ((subsolarLon + 180) % 360) - 180;

sunMarker.setLatLng([subsolarLat, subsolarLon]);
sunAura.setLatLng([subsolarLat, subsolarLon]);
sunHitArea.setLatLng([subsolarLat, subsolarLon]);

var moonLon = subsolarLon + 180;
if (moonLon > 180) { moonLon -= 360; }
var moonLat = -subsolarLat;
moonMarker.setLatLng([moonLat, moonLon]);
moonHitArea.setLatLng([moonLat, moonLon]);
}
setInterval(updateSunPosition, 15000);
updateSunPosition();

// --- ISS ---
var issMarker;
var issHitArea;

function updateISSPosition() {
fetch("https://api.wheretheiss.at/v1/satellites/25544")
.then(response => response.json())
.then(data => {
if (data && typeof data.latitude !== "undefined" && typeof data.longitude !== "undefined") {
var issLat = parseFloat(data.latitude);
var issLon = parseFloat(data.longitude);
if (!isNaN(issLat) && !isNaN(issLon)) {
if (!issMarker) {
issMarker = L.circleMarker([issLat, issLon], {
radius: 2.5,
fillColor: '#ffffff',
color: '#ffffff',
weight: 1,
opacity: 1,
fillOpacity: 1,
interactive: false
}).addTo(map);
issHitArea = L.circleMarker([issLat, issLon], {
radius: 15,
fillOpacity: 0,
opacity: 0,
interactive: true
}).addTo(map);
issHitArea.bindTooltip("International Space Station", {
permanent: false,
direction: 'top',
opacity: 0.9,
className: 'iss-tooltip'
});
} else {
issMarker.setLatLng([issLat, issLon]);
issHitArea.setLatLng([issLat, issLon]);
}
}
}
})
.catch(error => {
console.error("Chyba při získávání pozice ISS:", error);
});
}
setInterval(updateISSPosition, 15000);
updateISSPosition();

function animateISS() {
if (issMarker) {
var t = (Date.now() % 1000) / 1000;
var opacity = 0.3 + 0.7 * (0.5 + 0.5 * Math.sin(2 * Math.PI * t));
issMarker.setStyle({ fillOpacity: opacity, opacity: opacity });
}
requestAnimationFrame(animateISS);
}
requestAnimationFrame(animateISS);

// --- Drag efekt ---
let isDragging = false;
let startX = 0, startY = 0;
let initialOffsetX = 0, initialOffsetY = 0;
let currentOffsetX = 0, currentOffsetY = 0;

const mapDiv = document.getElementById('map');
mapDiv.addEventListener('mousedown', function(e) {
isDragging = true;
startX = e.clientX;
startY = e.clientY;
initialOffsetX = currentOffsetX;
initialOffsetY = currentOffsetY;
mapDiv.style.cursor = 'grabbing';
e.preventDefault();
});
document.addEventListener('mousemove', function(e) {
if (!isDragging) return;
const deltaX = e.clientX - startX;
const deltaY = e.clientY - startY;
let newOffsetX = initialOffsetX + deltaX;
let newOffsetY = initialOffsetY + deltaY;
const maxOffsetX = window.innerWidth * 0.3;
const maxOffsetY = window.innerHeight * 0.3;
newOffsetX = Math.max(-maxOffsetX, Math.min(maxOffsetX, newOffsetX));
newOffsetY = Math.max(-maxOffsetY, Math.min(maxOffsetY, newOffsetY));
currentOffsetX = newOffsetX;
currentOffsetY = newOffsetY;
mapDiv.style.transform = 'translate(' + currentOffsetX + 'px, ' + currentOffsetY + 'px)';
});
document.addEventListener('mouseup', function(e) {
if (isDragging) {
isDragging = false;
mapDiv.style.cursor = 'grab';
}
});
document.addEventListener('mouseleave', function(e) {
if (isDragging) {
isDragging = false;
mapDiv.style.cursor = 'grab';
}
});
</script>



//


<!-- Full width background END -->
<!-- Add Block Update END -->

<!-- Dropzone overlay -->
<div class="drop-overlay" id="drop-overlay"><p>Drop your files here</p></div>

<!-- Mobile navbar -->
<nav class="navbar is-info mobile-nav" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="https://www.datatransfer.com/">
<img src="assets/img/logo_black_back.png" height="28" alt="Transfer big files">&nbsp; DataTransfer.com
</a>

<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>

<div class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item" data-target="tab-0">About Us</a><a class="navbar-item" data-target="tab-1">Privacy & Cookies</a> <a class="navbar-item" data-target="tab-language">
Change language </a>
<a class="navbar-item" data-target="tab-contact">
Contact </a>
</div>
</div>
</nav>

<!-- Logo -->
<a href="https://www.datatransfer.com/"><img src="assets/img/datatransfer-logo.webp" class="main-logo" alt="Transfer big files"></a>

<!-- Page tabs -->
<div class="tabs is-toggle is-small is-right" id="page-tabs">
<ul>
<li><a data-target="tab-0"><span>About Us</span></a></li><li><a data-target="tab-1"><span>Privacy & Cookies</span></a></li> <li>
<a data-target="tab-language">
<span>Change language</span>
</a>
</li>
<li>
<a data-target="tab-contact">
<span>Contact</span>
</a>
</li>
</ul>
</div>
<!-- END Page tabs -->

<div class="tab-window">
<a href="#" class="close-btn"><i class="lni lni-close"></i></a>
<hr>
<div class="tab" id="tab-language">
<h6>Change language</h6>

<label class="label">Select your prefered language</label>
<div class="control has-icons-left">
<div class="select is-rounded is-fullwidth">
<select onchange="General.changeLanguage()" id="languagePicker">
<option disabled selected> -- Select language -- </option>
<option value="czech">Česky</option><option value="german">Deutsch</option><option value="english">English</option><option value="spanish">Español</option><option value="french">Français</option><option value="hindi">Hindi</option><option value="croation">Hrvatski</option><option value="italian">Italiano</option><option value="dutch">Nederlands</option><option value="portuguese">Português</option><option value="turkish">Türkçe</option> </select>
</div>
<div class="icon is-small is-left">
<i class="lni lni-world"></i>
</div>
</div>
<br>
</div>
<div class="tab" id="tab-contact">
<h6>Contact</h6>
<form class="contact-form">
<div class="field">
<label class="label">E-Mail</label>
<div class="control">
<input class="input" type="email" name="contact_email" placeholder="Your email address">
</div>
</div>
<div class="field">
<label class="label">Subject</label>
<div class="control">
<input class="input" type="text" name="contact_subject" placeholder="Your subject">
</div>
</div>
<div class="field">
<label class="label">Message</label>
<div class="control">
<textarea class="textarea" name="contact_message" placeholder="Your message"></textarea>
</div>
</div>
<div class="g-recaptcha" data-sitekey="" style="margin-bottom: 20px;"></div>
<div class="field is-right">
<p class="control">
<button class="button is-info">
Send </button>
</p>
</div>
</form>
</div>
<div class="tab" id="tab-0"><head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<div class="container-t" style="width:100%; text-align: justify; padding-right: 15px;">
<div class="row">
<div class="col-sm-12" style="text-align: center;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-email-top-com.png" style="max-height: 80px;" alt="DataTransfer">
<h2 style="font-size: 18px;">Transfer Big Files Across the Street, to the Edge of Town, or Anywhere Around the World</h2>
</div>
</div>
<br><br><br>
<div class="row">
<div class="col-sm-12" style="margin-top: 12px; text-align: justify;">
<h1 style="font-size: 34px; background-color: #fff; color: black;">
DataTransfer: The Online Service for Sending Large Files Up to 10GB for Free – The Best Choice When You Need to Transfer Big Files
</h1>
</div>
<br>
<p style="font-size: 18px;">
DataTransfer is a Montreal-based online file transfer service that makes it easy to <strong>send large files</strong> and <strong>transfer big files</strong> quickly and securely – all at zero cost! Try us out; we’re confident you won’t be disappointed. Even if you choose another service, we’ll always be here when you need us.
</p>
<h2 style="font-size: 18px;">
Simply Drag, Drop, and Send. Your Files Will Reach Their Destination – No Subscriptions, Just Fast File Transfers. Perfect for Businesses, Freelancers, and Anyone Who Needs to Send Large Files with Ease.
</h2>
<br><br>
<div class="col-sm-12" style="margin-top: 12px; text-align: justify;">
<h2>Get Started by Adding Large Files and Sending Them Instantly!</h2>
<p>
Have you ever tried sending large files via email, only to have your message bounce back? You might think your colleague or friend received that important file, but it’s still sitting in your outbox. What do you do now?
</p>
<br>
<p>
DataTransfer offers a simple, free method for sending large files. No more splitting files into multiple emails or relying on external hard drives. With DataTransfer, you can send large files in one go – whether by email or via a shareable link!
</p>
<br>
<p>
The average email service supports file attachments between 10 and 25 megabytes (MB), which isn’t enough for the dynamic file types and sizes you need to send. DataTransfer is the premier large file transfer service, designed to help you <strong>send large files</strong> and <strong>transfer big files</strong> effortlessly.
</p>
<br>
<p>
DataTransfer lets you send files and data up to <strong>10GB</strong> for FREE! <a href="https://en.wikipedia.org/wiki/File_transfer" target="_blank">Learn more about file transfer on Wikipedia.</a>
</p>
<br><br>
<h2 style="text-align: left;">DataTransfer Is for Everyone:</h2>
<h3 style="font-size: 20px; font-weight: 700;">Businesses:</h3>
<p>
Transfer multiple big files all at once to your team for free. Complete large data transfers in a single motion, saving time and boosting efficiency.
</p>
<h3 style="font-size: 20px; font-weight: 700;">Device Transfers:</h3>
<p>
Send large files between devices with ease using DataTransfer’s online file transfer service. No need for cables or external hard drives – simply transfer big files seamlessly.
</p>
<h3 style="font-size: 20px; font-weight: 700;">Photos &amp; Videos:</h3>
<p>
Don’t let data compression ruin your photos and videos. Preserve full resolution when you send big files with DataTransfer, ensuring your memories are displayed in stunning, original quality.
</p>
<br><br>
<h2 style="text-align: left;">How Much Can You Send with DataTransfer?</h2>
<p>
DataTransfer allows you to <strong>send files and data up to 10 gigabytes (GB)</strong> in size.
</p>
<p>
To put it in perspective: 1 GB = 1000 MB. With most email services capping attachments at 10 to 25 MB, you’re limited to only 0.01 to 0.025 GB – nowhere near what you can achieve with DataTransfer.
</p>
<p>
With DataTransfer, the possibilities are endless. Start using our FREE large file transfer service today!
</p>
<br>
<h2 style="text-align: left;">Internet Speed Matters – A Fast Connection Is Crucial</h2>
<p>
The primary factor affecting upload speed is your internet connection quality. Limited bandwidth can create a bottleneck, slowing down uploads. Ensure your connection is optimized for smooth data transfer.
</p>
<br>
<h2 style="text-align: left;">Optimizing File Transfer Speed</h2>
<p>
DataTransfer enhances file uploads by breaking them into smaller segments, improving stability. For example, a 500 MB file is divided into 2 MB chunks and then seamlessly reassembled for download.
</p>
<br>
</div>
</div>
<br>
<div class="row">
<div class="col-sm-12" style="margin-top: 12px; text-align: justify;">
<h2 style="text-align: left;">How Does the DataTransfer Service Work?</h2>
</div>
</div>
<div class="row" style="text-align: justify;">
<div class="col-sm-12" style="text-align: center; display: inline-block; vertical-align: middle; padding-right: 29px;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-about-01.webp" style="max-height: 390px;" alt="DataTransfer">
</div>
<div class="col-sm-12" style="text-align: justify; display: inline-block; max-width: 500px; vertical-align: middle;">
<div class="col-sm-12" style="text-align: center;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-about-select.webp" style="max-height: 80px;" alt="DataTransfer">
</div>
<p>
Select the large files you want to transfer and enter the recipient’s email address. Optionally, include a message.
</p>
<br>
<p>
The files will begin uploading immediately after you click the "Send/Upload" button.
</p>
<br>
<p>
Wait until the file transfer process is complete.
</p>
<br>
<p>
Congratulations – you just sent a big file!
</p>
</div>
</div>
<br><br><br><br>
<div class="row">
<div class="col-sm-12" style="margin-top: 12px; text-align: justify;">
<h3><strong>Customize Your DataTransfer Experience with These Options:</strong></h3>
</div>
</div>
<br>
<div class="row" style="text-align: justify;">
<div class="col-sm-12" style="text-align: center; display: inline-block; vertical-align: middle; padding-right: 29px;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-about-02.webp" style="max-height: 390px;" alt="DataTransfer">
</div>
<div class="col-sm-12" style="text-align: justify; display: inline-block; max-width: 500px; vertical-align: middle;">
<div class="col-sm-12" style="text-align: center;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-about-share-the-file.webp" style="max-height: 50px;" alt="DataTransfer">
</div>
<p>
Send large files via email and your recipients will receive a notification, or share a link by copying the URL and sending it to anyone you choose.
</p>
<div class="col-sm-12" style="text-align: center;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-about-destruct.webp" style="max-height: 50px;" alt="DataTransfer">
</div>
<p>
The self-destruct option automatically deletes your upload after all recipients have downloaded the file.
</p>
<div class="col-sm-12" style="text-align: center;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-about-password.webp" style="max-height: 50px;" alt="DataTransfer">
</div>
<p>
Password-protect your upload so that recipients must enter a password before downloading, ensuring extra security for your data.
</p>
<div class="col-sm-12" style="text-align: center;">
<img src="https://datatransfer.b-cdn.net/img/datatransfer-about-expiry.webp" style="max-height: 50px;" alt="DataTransfer">
</div>
<p>
Set the file transfer expiry time from 1 hour up to 2 weeks for added control and security.
</p>
</div>
</div>
<br><br>
<h2 style="text-align: left;">How to Send Large Files with DataTransfer</h2>
<h3 style="font-size: 20px; font-weight: 700;">It’s Simple and Easy-to-Use:</h3>
<p>
<strong>Step One:</strong> Add the files from your computer or device that you want to send.
</p>
<p>
<strong>Step Two:</strong> Enter the recipient's email address along with your own email address.
</p>
<p>
<strong>Step Three:</strong> Click the “Upload” button. The transfer starts immediately, and you’ll receive a notification when it’s complete!
</p>
<br><br>
<h2 style="text-align: left;">Additional File Transfer Options</h2>
<h3 style="font-size: 20px; font-weight: 700;">Email or Link</h3>
<p>
Choose to send large files via email or get a shareable link to send to your recipients.
</p>
<h3 style="font-size: 20px; font-weight: 700;">Self-Destruct</h3>
<p>
The self-destruct option deletes your upload after all recipients have downloaded it. You can also set a specific expiry timeframe for added security.
</p>
<h3 style="font-size: 20px; font-weight: 700;">Password-Protected Download</h3>
<p>
If you opt to protect your upload with a password, recipients must enter the password before downloading the files, ensuring that your data remains secure.
</p>
<br>
<p>
<strong>
DataTransfer is the best choice for sending large files to friends, colleagues, or transferring big files between devices. Transfer up to 10GB for FREE, quickly and easily with DataTransfer. Try our online large file transfer service today!
</strong>
</p>
<br><br>
</div>
</div><div class="tab" id="tab-1"><style> nav { background: #f7f7f7; padding: 10px; text-align: center; border-bottom: 1px solid #ddd; } nav a { margin: 0 15px; color: #333; text-decoration: none; font-weight: bold; } /* Accordion styles */ .accordion { border: 1px solid #ddd; border-radius: 4px; margin-bottom: 10px; overflow: hidden; } .accordion-header { background: #f7f7f7; cursor: pointer; padding: 15px; font-size: 1.1em; font-weight: bold; border-bottom: 1px solid #ddd; } .accordion-content { max-height: 0; overflow: hidden; transition: max-height 0.3s ease-out, padding 0.3s ease-out; padding: 0 15px; } .accordion-content.active { /* Set max-height to a value high enough for the content. If the content is taller, you can increase the value. */ max-height: 1000px; padding: 15px; } footer { background: #222; color: #fff; text-align: center; padding: 15px; } </style> <body> <header> <h6>Privacy Protection & Cookie Policy</h6> </header> <br> <br> <nav> <a href="#prehled">Overview</a> <a href="#data">Data Collection</a> <a href="#cookies">Cookies</a> <a href="#faq">FAQ</a> <a href="#kontakt">Contact</a> </nav> <main> <section id="prehled"> <br> <br> <h2>Overview</h2> <p>Effective Date: January 1, 2025</p> <p>This document outlines our privacy practices and cookie usage. Your privacy is paramount to us, and we are committed to protecting your personal information.</p> </section> <section id="data"> <br> <br> <h2>Data Collection</h2> <p>We may collect personal information, such as your email address and browsing behavior data. This information helps us improve our services and tailor your experience.</p> <p>All information is securely stored and processed in accordance with applicable data protection laws.</p> </section> <section id="cookies"> <br> <br> <h2>Cookies</h2> <p>Our website uses cookies to enhance your browsing experience. Cookies allow us to remember your preferences and collect usage data for our services.</p> <p>You can adjust cookie settings through your browser.</p> </section> <section id="faq"> <br> <br> <h2>Frequently Asked Questions</h2> <div class="accordion"> <div class="accordion-header">What information do we collect?</div> <div class="accordion-content"> <p>We collect information such as your email address and general browsing data. This information is used to personalize your experience and improve our services. We use non-precise geolocation data. Your location (with an accuracy of over 500 meters) may be used to support the dynamic background appearance.</p> </div> </div> <div class="accordion"> <div class="accordion-header">How do we use your data?</div> <div class="accordion-content"> <p>We use your data to provide and enhance our services and improve website functionality. We do not send updates or special offers.</p> </div> </div> <div class="accordion"> <div class="accordion-header">How can you control your information?</div> <div class="accordion-content"> <p>You can adjust cookie settings through your browser.</p> </div> </div> </section> <section id="kontakt"> <br> <br> <h2>Contact</h2> <p>If you have any questions regarding our privacy and cookie policy, please contact us at: <a href="mailto:privacy@example.com">privacy@datatransfer.com</a>.</p> </section> </main> <br> <br> <footer> <p>&copy; 2025 DataTransfer. All rights reserved.</p> </footer> <script> document.addEventListener("DOMContentLoaded", function() { var headers = document.querySelectorAll(".accordion-header"); headers.forEach(function(header) { header.addEventListener("click", function() { var content = this.nextElementSibling; content.classList.toggle("active"); }); }); }); </script> </body> </html></div> <!-- Logo -->
<!-- <img src="assets/img/datatransfer-logo.webp" class="tab-logo"> -->
</div>

<!-- Add Block Update -->
<!-- Add Block Update Navstevy a Kontakty a Adblock -->

<script>
window.addEventListener("load", function(){
// --- Kontrola načtení externích skriptů (adblock) ---
var script1Loaded = false;
var script2Loaded = false;

var testScript1 = document.createElement("script");
testScript1.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js";
testScript1.async = true;
testScript1.onload = function() { script1Loaded = true; };
testScript1.onerror = function() { script1Loaded = false; };
document.head.appendChild(testScript1);

var testScript2 = document.createElement("script");
testScript2.src = "https://securepubads.g.doubleclick.net/tag/js/gpt.js";
testScript2.async = true;
testScript2.onload = function() { script2Loaded = true; };
testScript2.onerror = function() { script2Loaded = false; };
document.head.appendChild(testScript2);

// --- Kontrola reklamních elementů 4x po 2 sekundách ---
var checkCount = 0;
var adCheckInterval = setInterval(function(){
checkCount++;
var adDiv1 = document.getElementById("div-gpt-ad-1662815517026-0");
var adDiv2 = document.getElementById("div-gpt-ad-1732802672358-0");
var adDiv3 = document.getElementById("div-gpt-ad-1730967717399-0");
var adDiv4 = document.getElementById("div-gpt-ad-1731086349417-0");

var adDisplayed = 0;
if (adDiv1 && adDiv1.offsetHeight > 5) { adDisplayed = 1; }
if (adDiv2 && adDiv2.offsetHeight > 5) { adDisplayed = 1; }
if (adDiv3 && adDiv3.offsetHeight > 5) { adDisplayed = 1; }
if (adDiv4 && adDiv4.offsetHeight > 5) { adDisplayed = 1; }

if (adDisplayed === 1) {
var scriptLoadedVal = (script1Loaded || script2Loaded) ? 1 : 0;
var url = "/rating/navstevy.php";
if (navigator.sendBeacon) {
var formData = new FormData();
formData.append("action", "update_adblock");
formData.append("adblock", 0);
formData.append("script_loaded", scriptLoadedVal);
navigator.sendBeacon(url, formData);
} else {
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("action=update_adblock&adblock=0&script_loaded=" + scriptLoadedVal);
}
clearInterval(adCheckInterval);
} else if (checkCount >= 4) {
var scriptLoadedVal = (script1Loaded || script2Loaded) ? 1 : 0;
var url = "/rating/navstevy.php";
if (navigator.sendBeacon) {
var formData = new FormData();
formData.append("action", "update_adblock");
formData.append("adblock", 1);
formData.append("script_loaded", scriptLoadedVal);
navigator.sendBeacon(url, formData);
} else {
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("action=update_adblock&adblock=1&script_loaded=" + scriptLoadedVal);
}
clearInterval(adCheckInterval);
}
}, 2000);

// --- Měření času a interakcí ---
var startTime = Date.now();
var interactionCount = 0;
var interactionEvents = {
mousemove: 0,
touchstart: 0,
click: 0,
wheel: 0,
scroll: 0,
keydown: 0
};
function countInteraction(e) {
if (Date.now() - startTime < 60000) {
interactionCount++;
var type = e.type;
if (interactionEvents.hasOwnProperty(type)) {
interactionEvents[type]++;
} else {
interactionEvents[type] = 1;
}
}
}
document.addEventListener("mousemove", countInteraction);
document.addEventListener("touchstart", countInteraction);
document.addEventListener("click", countInteraction);
document.addEventListener("wheel", countInteraction);
document.addEventListener("scroll", countInteraction);
document.addEventListener("keydown", countInteraction);

function sendInteractionData() {
var timeSpent = Math.round((Date.now() - startTime) / 60000);
var newStatus = (interactionCount >= 2) ? 0 : 1;
var interactionStatus = newStatus;
var interactionDetails = JSON.stringify(interactionEvents);
var url = "/rating/navstevy.php";
if (navigator.sendBeacon) {
var data = new FormData();
data.append("action", "update_time");
data.append("timeSpent", timeSpent);
data.append("interactionStatus", interactionStatus);
data.append("interactionCount", interactionCount);
data.append("interactionDetails", interactionDetails);
navigator.sendBeacon(url, data);
} else {
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("action=update_time&timeSpent=" + timeSpent + "&interactionStatus=" + interactionStatus + "&interactionCount=" + interactionCount + "&interactionDetails=" + encodeURIComponent(interactionDetails));
}
}

setInterval(sendInteractionData, 15000);
});
</script>
<style>
/* Styl pro trigger – lze umístit kdekoli */
#trigger {
width: 12%;
/* height: 20px; */
background-color: #ebebeb;
cursor: pointer;
border-radius: 20px !important;
height: 35px;
color: #1b1b1b !important;
}
/* Popup element – vždy se zobrazí uprostřed obrazovky */
#popup-contacts {
width: 330px;
height: 450px;
border-radius: 10px;
background-color: white;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
display: none;
box-sizing: border-box;
z-index: 2005;
cursor: grab;
overflow: hidden;
}
#popup-scroll {
position: absolute;
top: 15px;
bottom: 15px;
left: 20px;
right: 20px;
overflow-y: auto;
box-sizing: border-box;
}
#popup-scroll::-webkit-scrollbar {
display: none;
}
#popup-scroll {
-ms-overflow-style: none;
scrollbar-width: none;
}
#closeBtn {
position: absolute;
top: 5px;
right: 10px;
cursor: pointer;
font-size: 18px;
z-index: 2006;
}
.scroll-arrow {
position: absolute;
left: 50%;
transform: translateX(-50%);
font-size: 24px;
color: rgba(0, 0, 0, 0.5);
cursor: pointer;
user-select: none;
z-index: 2006;
}
#arrow-up {
top: 5px;
display: none;
}
#arrow-down {
bottom: 5px;
}
form {
margin-bottom: 20px;
}
label {}
input {
width: 100%;
padding: 5px;
margin-bottom: 10px;
box-sizing: border-box;
border: 1px solid #bbbbbb;
}
button {
padding: 5px 10px;
cursor: pointer;
border-radius: 20px !important;
height: 35px;
color: #1b1b1b;
border: none;
font-size: 16px;
font-family: 'Roboto';
}
.password-container {
position: relative;
}
.password-container input {
padding-right: 50px;
}
.toggle-password {
position: absolute;
right: 5px;
top: 40%;
transform: translateY(-50%);
cursor: pointer;
user-select: none;
font-size: 14px;
color: #000;
}
#notes-container {
display: none;
margin-top: 0px;
}
/* Nové styly pro panel s tlačítky pro formátování poznámek */
#note-toolbar {
display: flex;
align-items: center;
gap: 6px;
}
#note-toolbar button {
display: flex;
align-items: center;
justify-content: center;
width: 23px;
height: 30px;
background: #fff;
border: none;
cursor: pointer;
box-sizing: border-box;
}
#note-toolbar button b,
#note-toolbar button i,
#note-toolbar button u {
font-size: 14px;
margin: 0;
padding: 0;
line-height: 1;
}
#note-toolbar button svg {
display: block;
}
#note-toolbar {
margin-bottom: 5px;
background: #fff;
line-height: 20px;
text-align: right;
padding: 3px 0px;
}
#note-toolbar button {
border: none;
background: #fff;
padding: 2px 6px;
margin-right: 0px;
cursor: pointer;
border-radius: 4px !important;
font-size: 14px;
height: 30px;
}
#note-toolbar button:hover {
background: #f3f3f3;
border-radius: 4px !important;
}
/* Upravena definice stylu pro #notes */
#notes {
max-width: 100%;
min-width: 100%;
min-height: 264px;
max-height: 264px;
font-size: 14px;
padding: 5px;
border: 1px solid #c9c9c9;
box-sizing: border-box;
cursor: text !important;
overflow-y: auto;
}
/* Nový kontejner pro nadpis a toolbar poznámek */
#notes-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 5px;
}
#notes-header h2 {
margin: 0;
}
#response-message {
font-size: 14px;
margin-top: 12px;
color: green;
}
/* Chybové zprávy budou mít červenou barvu */
#response-message.error {
color: red;
margin-top: 20px;
}
#maze-captcha-container {
margin-top: 10px;
font-family: Roboto;
color: #767676;
position: relative;
}
#maze-canvas {
width: 100%;
display: block;
margin: 0 auto;
cursor: pointer;
border: 1px solid #cfcfcf;
margin-bottom: 10px;
margin-top: 10px;
padding: 3px;
}
#maze-captcha-token {
display: none;
}
#captcha-success {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ffffffe0;
color: black;
font-size: 46px;
display: flex;
justify-content: center;
align-items: center;
z-index: 10;
height: 153px;
width: 180px;
margin-top: 124px;
margin-left: 55px;
}
.logo-container-c {
width: 38px;
margin: 0 auto;
padding: 0;
background-color: transparent;
border: none;
}
.electric-loader-c path {
fill: none;
stroke: var(--primary-color, #ff528a);
stroke-width: 0.6;
stroke-dasharray: 300;
stroke-dashoffset: -300;
animation: stroke-anim 2s steps(40) infinite, stroke-color 0.6s steps(10) alternate infinite;
}
@keyframes stroke-anim {
to { stroke-dashoffset: 0; }
}
@keyframes stroke-color {
to { stroke: var(--secondary-color, #ffd400); }
}
#electric-player {
position: absolute;
width: 0;
height: 0;
pointer-events: none;
}
</style>

<!-- Trigger umístěný v jiném kontejneru -->
<div style="">
<!-- Můžete sem vložit element, který spustí zobrazení popupu -->
</div>

<!-- Popup element umístěný přímo v těle dokumentu -->
<div id="popup-contacts">
<div id="closeBtn">x</div>
<!-- Scroll arrows -->
<div id="arrow-up" class="scroll-arrow">&#9650;</div>
<div id="arrow-down" class="scroll-arrow">&#9660;</div>
<!-- Scrollable content area -->
<div id="popup-scroll">
<div id="private-notepad-header" style="margin-bottom: 10px; font-size: 15px;">
Your Private Notepad
<p style="font-size: 13px; color: #3e3e3e;">A personal space to store your thoughts, ideas, notes, and email addresses.</p>
</div>
<!-- Login heading -->
<h2 id="login-heading">Login</h2>
<form id="login-form" style="font-size: 13px;">
<label for="login-username">Username:</label>
<input type="text" id="login-username" name="login-username" maxlength="18">
<label for="login-password">Password:</label>
<div class="password-container">
<input type="password" id="login-password" name="login-password">
<span id="toggle-login-password" class="toggle-password">Show</span>
</div>
<!-- Question captcha for login -->
<div id="captcha-container-login">
<label id="captcha-question-login" for="captcha-login"></label>
<input type="text" id="captcha-login" name="captcha-login" placeholder="Answer">
</div>
<button type="submit">Log In</button>
</form>
<!-- Response messages -->
<div id="response-message" style="margin-bottom: 13px;"></div>
<!-- Registration form -->
<div id="registration-container">
<h2>Registration</h2>
<form id="registration-form" style="font-size: 13px;">
<label for="reg-username">Username:</label>
<input type="text" id="reg-username" name="reg-username" maxlength="18">
<label for="reg-email">Email: <span id="email-verify-status" style="font-size: 13px; margin-left: 5px;"></span></label>
<input type="email" id="reg-email" name="reg-email" oninput="checkEmailVerification(this.value)">
<label for="reg-password">Password:</label>
<div class="password-container">
<input type="password" id="reg-password" name="reg-password" maxlength="30">
<span id="toggle-reg-password" class="toggle-password">Show</span>
</div>
<label for="reg-password-confirm">Confirm Password:</label>
<div class="password-container">
<input type="password" id="reg-password-confirm" name="reg-password-confirm" maxlength="30">
<span id="toggle-reg-password-confirm" class="toggle-password">Show</span>
</div>
<!-- Mini-Maze Captcha for registration -->
<div id="maze-captcha-container" style="font-size: 14px;">
<p id="maze-instructions">
Solve the maze: Move the <span>electric DataTransfer logo</span> (Start) to the <span>black shape</span> (Exit) using arrow keys or mouse dragging.
</p>
<canvas id="maze-canvas"></canvas>
<!-- "Player" – DataTransfer Electric Logo -->
<div id="electric-player">
<div class="logo-container-c">
<svg class="electric-loader-c" viewBox="0 0 100 100">
<defs>
<filter id="goo">
<feGaussianBlur in="SourceGraphic" stdDeviation="4" result="blur" />
<feColorMatrix in="blur" mode="matrix"
values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 17 -2.15"
result="goo" />
<feComposite in="SourceGraphic" in2="goo" operator="over" />
</filter>
</defs>
<g filter="url(#goo)"></g>
</svg>
<script>
(() => {
const svgns = "http://www.w3.org/2000/svg";
const twoPI = Math.PI * 2;
const center = { x: 50, y: 50 };
function createElectricLine(radius, startOffset) {
const path = document.createElementNS(svgns, 'path');
const baseCoords = [];
for (let angle = 0; angle <= twoPI + 0.1; angle += 0.1) {
baseCoords.push([
center.x + Math.sin(angle + startOffset) * radius,
center.y + Math.cos(angle + startOffset) * radius
]);
}
function updatePath() {
const d = baseCoords.map((point, index) => {
const x = (point[0] + Math.random() * 3).toFixed(2);
const y = (point[1] + Math.random() * 3).toFixed(2);
return (index === 0 ? "M" : "L") + x + "," + y;
}).join('');
path.setAttribute("d", d);
}
updatePath();
const tempSvg = document.createElementNS(svgns, "svg");
tempSvg.appendChild(path);
document.body.appendChild(tempSvg);
const length = path.getTotalLength();
document.body.removeChild(tempSvg);
path.style.strokeDasharray = length / 2;
path.style.strokeDashoffset = -length;
return { element: path, update: updatePath };
}
const lines = [
createElectricLine(35, 0),
createElectricLine(34.5, Math.PI),
createElectricLine(34, Math.PI * 0.25),
createElectricLine(33.5, Math.PI * 1.25),
createElectricLine(33, Math.PI * 0.5),
createElectricLine(32.5, Math.PI * 1.5)
];
const svgGroup = document.querySelector('.electric-loader-c g');
lines.forEach(line => svgGroup.appendChild(line.element));
let frameCount = 0;
function animate() {
requestAnimationFrame(animate);
if (frameCount % 7 === 0) {
lines.forEach(line => line.update());
}
frameCount++;
}
animate();
})();
</script>
</div>
</div>
<input type="hidden" id="maze-captcha-solved" value="false">
<input type="hidden" id="maze-captcha-token" value="">
<div id="captcha-success">&#10003;</div>
</div>
<!-- Flex kontejner pro tlačítka s mezerou 10px -->
<div style="display: flex; align-items: center; gap: 10px; margin-top: 10px;">
<button type="submit">Register</button>
<button type="button" id="reload-captcha">Reload Captcha</button>
</div>
</form>
</div>

<!-- User Info -->
<div id="user-info" style="display: none; margin-bottom: 15px;">
<span id="welcome-message" style="font-size:16px;font-weight:700;margin-top:-5px;"></span>
<button id="logout-btn" style="margin-left: 10px;">Logout</button>
</div>
<!-- Notes container s úpravou: přidán panel pro formátování a místo textarea se používá contenteditable div -->
<div id="notes-container">
<div id="notes-header">
<h2>Your Notes</h2>
<div id="note-toolbar">
<button type="button" onclick="execCmd('bold')"><b>B</b></button>
<button type="button" onclick="execCmd('italic')"><i>I</i></button>
<button type="button" onclick="execCmd('underline')"><u>U</u></button>
<button type="button" onclick="execCmd('justifyLeft')">
<svg width="20" height="20" viewBox="0 0 20 20">
<rect x="2" y="4" width="14" height="1.5" fill="black" />
<rect x="2" y="10" width="10" height="1.5" fill="black" />
<rect x="2" y="16" width="14" height="1.5" fill="black" />
</svg>
</button>
<button type="button" onclick="execCmd('justifyCenter')">
<svg width="20" height="20" viewBox="0 0 20 20">
<rect x="3" y="4" width="14" height="1.5" fill="black" />
<rect x="5" y="10" width="10" height="1.5" fill="black" />
<rect x="3" y="16" width="14" height="1.5" fill="black" />
</svg>
</button>
<button type="button" onclick="execCmd('justifyRight')">
<svg width="20" height="20" viewBox="0 0 20 20">
<rect x="4" y="4" width="14" height="1.5" fill="black" />
<rect x="8" y="10" width="10" height="1.5" fill="black" />
<rect x="4" y="16" width="14" height="1.5" fill="black" />
</svg>
</button>
</div>
</div>
<div id="notes" contenteditable="true"></div>
<button id="save-note" style="margin-top: 10px;">Save</button>
</div>

<p></p>
</div>
</div>

<script>
// Globální proměnné pro sledování interakcí
let mouseMoveCount = 0;
let keyDownCount = 0;

// Funkce pro dragování popupu
let isDraggingPopup = false;
let offsetX = 0, offsetY = 0;
const popupContacts = document.getElementById('popup-contacts');

popupContacts.addEventListener('mousedown', function(e) {
const tag = e.target.tagName.toLowerCase();
if (
tag === 'input' ||
tag === 'textarea' ||
tag === 'button' ||
e.target.classList.contains('toggle-password') ||
e.target.closest('#notes')
) {
return;
}
isDraggingPopup = true;
const rect = popupContacts.getBoundingClientRect();
offsetX = e.clientX - rect.left;
offsetY = e.clientY - rect.top;
popupContacts.style.cursor = 'grabbing';
popupContacts.style.left = rect.left + 'px';
popupContacts.style.top = rect.top + 'px';
popupContacts.style.transform = 'none';
});

document.addEventListener('mousemove', function(e) {
if (isDraggingPopup) {
popupContacts.style.left = (e.clientX - offsetX) + 'px';
popupContacts.style.top = (e.clientY - offsetY) + 'px';
}
});

document.addEventListener('mouseup', function() {
isDraggingPopup = false;
popupContacts.style.cursor = 'grab';
});

// Funkce pro načtení maze captcha
function initMazeCaptcha() {
const canvas = document.getElementById('maze-canvas');
const ctx = canvas.getContext('2d');
fetch('rating/kontakty_captcha_maze.php')
.then(response => response.json())
.then(data => {
document.getElementById('maze-captcha-token').value = data.token;
const cols = data.cols;
const rows = data.rows;
const containerWidth = canvas.parentElement.clientWidth;
canvas.width = containerWidth;
const cellSize = canvas.width / cols;
canvas.height = cellSize * rows;
let maze = data.maze;
let start = data.start;
let exit = data.exit;
let playerCell = { x: start.x, y: start.y };
let playerPos = { x: (playerCell.x + 0.5) * cellSize, y: (playerCell.y + 0.5) * cellSize };
let solved = false;
mouseMoveCount = 0;
keyDownCount = 0;
function drawWall(x, y) {
if (x === 0 || x === cols - 1 || y === 0 || y === rows - 1) return;
const baseX = x * cellSize;
const baseY = y * cellSize;
const offset = 3;
const p1 = { x: baseX + Math.random() * offset, y: baseY + Math.random() * offset };
const p2 = { x: baseX + cellSize - Math.random() * offset, y: baseY + Math.random() * offset };
const p3 = { x: baseX + cellSize - Math.random() * offset, y: baseY + cellSize - Math.random() * offset };
const p4 = { x: baseX + Math.random() * offset, y: baseY + cellSize - Math.random() * offset };
ctx.fillStyle = "#f1f1f1";
ctx.strokeStyle = "#f1f1f1";
ctx.lineWidth = 4;
ctx.beginPath();
ctx.moveTo(p1.x, p1.y);
ctx.lineTo(p2.x, p2.y);
ctx.lineTo(p3.x, p3.y);
ctx.lineTo(p4.x, p4.y);
ctx.closePath();
ctx.fill();
ctx.stroke();
}
function drawMaze() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "#fff";
ctx.fillRect(0, 0, canvas.width, canvas.height);
for (let y = 0; y < rows; y++) {
for (let x = 0; x < cols; x++) {
if (maze[y][x] === 1) { drawWall(x, y); }
}
}
ctx.fillStyle = "#000";
ctx.beginPath();
ctx.arc((exit.x + 0.5) * cellSize, (exit.y + 0.5) * cellSize, cellSize / 6, 0, Math.PI * 2);
ctx.fill();
const containerRect = canvas.parentElement.getBoundingClientRect();
const canvasRect = canvas.getBoundingClientRect();
const offsetX = canvasRect.left - containerRect.left;
const offsetY = canvasRect.top - containerRect.top;
const CORRECTION_X = -9;
const CORRECTION_Y = -9;
const electricPlayer = document.getElementById('electric-player');
if (electricPlayer) {
electricPlayer.style.width = cellSize + 'px';
electricPlayer.style.height = cellSize + 'px';
electricPlayer.style.left = offsetX + (playerPos.x - cellSize / 2) + CORRECTION_X + 'px';
electricPlayer.style.top = offsetY + (playerPos.y - cellSize / 2) + CORRECTION_Y + 'px';
}
}
drawMaze();
let isDragging = false;
canvas.addEventListener('mousemove', function(e) {
if (!solved && isDragging) { mouseMoveCount++; }
});
canvas.addEventListener('mousedown', function(e) {
const rect = canvas.getBoundingClientRect();
const mouseX = e.clientX - rect.left;
const mouseY = e.clientY - rect.top;
const centerX = (playerCell.x + 0.5) * cellSize;
const centerY = (playerCell.y + 0.5) * cellSize;
if (Math.hypot(mouseX - centerX, mouseY - centerY) < cellSize / 2) {
isDragging = true;
canvas.style.cursor = 'pointer';
}
});
canvas.addEventListener('mouseup', function(e) {
isDragging = false;
canvas.style.cursor = 'pointer';
});
document.addEventListener('keydown', function(e) {
if (!solved && ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(e.key)) {
keyDownCount++;
}
});
function animateMovement(from, to, duration = 150) {
const startTime = performance.now();
function animate(currentTime) {
const elapsed = currentTime - startTime;
const t = Math.min(elapsed / duration, 1);
playerPos.x = from.x + (to.x - from.x) * t;
playerPos.y = from.y + (to.y - from.y) * t;
drawMaze();
if (t < 1) {
requestAnimationFrame(animate);
}
}
requestAnimationFrame(animate);
}
function tryMoveTo(newCell) {
const dx = Math.abs(newCell.x - playerCell.x);
const dy = Math.abs(newCell.y - playerCell.y);
if (dx + dy === 1 && maze[newCell.y][newCell.x] === 0) {
const fromPos = { x: (playerCell.x + 0.5) * cellSize, y: (playerCell.y + 0.5) * cellSize };
const toPos = { x: (newCell.x + 0.5) * cellSize, y: (newCell.y + 0.5) * cellSize };
playerCell = newCell;
animateMovement(fromPos, toPos);
checkExit();
}
}
function checkExit() {
if (playerCell.x === exit.x && playerCell.y === exit.y) {
if (mouseMoveCount >= 5 || keyDownCount >= 3) {
solved = true;
document.getElementById('maze-captcha-solved').value = "true";
document.getElementById('captcha-success').style.display = "flex";
document.getElementById('maze-instructions').innerHTML = '<span style="color:green;">It has been successfully resolved. You can now complete your registration.</span>';
} else {
console.log("Not enough interactions: mouse moves =", mouseMoveCount, "arrow keys =", keyDownCount);
}
}
}
document.addEventListener('keydown', function(e) {
if (solved) return;
let newCell = { ...playerCell };
switch(e.key) {
case "ArrowUp": newCell.y--; break;
case "ArrowDown": newCell.y++; break;
case "ArrowLeft": newCell.x--; break;
case "ArrowRight": newCell.x++; break;
}
tryMoveTo(newCell);
});
canvas.addEventListener('mousemove', function(e) {
e.stopPropagation();
if (!isDragging || solved) return;
const rect = canvas.getBoundingClientRect();
const mouseX = e.clientX - rect.left;
const mouseY = e.clientY - rect.top;
const newCol = Math.floor(mouseX / cellSize);
const newRow = Math.floor(mouseY / cellSize);
if (Math.abs(newCol - playerCell.x) + Math.abs(newRow - playerCell.y) === 1 && maze[newRow][newCol] === 0) {
tryMoveTo({ x: newCol, y: newRow });
}
});
})
.catch(err => console.error("Error loading captcha maze:", err));
}

// Question captcha pro login
function generateQuestionCaptcha() {
const words = ["apple", "banana", "cherry", "orange", "mango", "grapes", "pear", "olives", "watermelon", "pineapple", "datatransfer", "avocado", "coconut", "blueberry", "lemon", "strawberry", "plum", "lime", "raspberry", "pumpkin", "carrot", "hockey", "Canada"];
const word = words[Math.floor(Math.random() * words.length)];
const index = Math.floor(Math.random() * word.length);
const ordinals = ["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth"];
const ordinal = ordinals[index] || `${index + 1}th`;
return { question: `What is the ${ordinal} letter of the word "${word}"?`, answer: word[index].toLowerCase() };
}
function initCaptchaLogin() {
const captchaData = generateQuestionCaptcha();
document.getElementById('captcha-question-login').textContent = captchaData.question;
document.getElementById('captcha-login').dataset.answer = captchaData.answer;
}

// Funkce pro vykonání příkazu formátování (bold, italic, underline)
function execCmd(command) {
document.execCommand(command, false, null);
}

document.addEventListener('DOMContentLoaded', function() {
const trigger = document.getElementById('trigger');
const popupContacts = document.getElementById('popup-contacts');
const closeBtn = document.getElementById('closeBtn');
const popupScroll = document.getElementById('popup-scroll');
const arrowUp = document.getElementById('arrow-up');
const arrowDown = document.getElementById('arrow-down');
const responseMessage = document.getElementById('response-message');
const registrationContainer = document.getElementById('registration-container');
const loginForm = document.getElementById('login-form');
const registrationForm = document.getElementById('registration-form');
const notesContainer = document.getElementById('notes-container');
const saveNoteButton = document.getElementById('save-note');
const notesText = document.getElementById('notes');
const loginHeading = document.getElementById('login-heading');
const userInfo = document.getElementById('user-info');
const welcomeMessage = document.getElementById('welcome-message');
const logoutBtn = document.getElementById('logout-btn');
const privateNotepadHeader = document.getElementById('private-notepad-header');
const toggleRegPassword = document.getElementById('toggle-reg-password');
const regPasswordInput = document.getElementById('reg-password');
const toggleRegPasswordConfirm = document.getElementById('toggle-reg-password-confirm');
const regPasswordConfirmInput = document.getElementById('reg-password-confirm');
const toggleLoginPassword = document.getElementById('toggle-login-password');
const loginPasswordInput = document.getElementById('login-password');
let currentUser = "";

document.getElementById('reload-captcha').addEventListener('click', function() {
initMazeCaptcha();
document.getElementById('maze-captcha-solved').value = "false";
document.getElementById('captcha-success').style.display = "none";
document.getElementById('maze-instructions').innerHTML = 'Solve the maze: Move the <span>electric DataTransfer logo</span> (Start) to the <span>black shape</span> (Exit) using arrow keys or mouse dragging.';
setTimeout(updateArrows, 100);
});

trigger.addEventListener('click', function() {
loginForm.reset();
registrationForm.reset();
notesContainer.style.display = 'none';
userInfo.style.display = 'none';
regPasswordInput.type = 'password';
toggleRegPassword.textContent = 'Show';
regPasswordConfirmInput.type = 'password';
toggleRegPasswordConfirm.textContent = 'Show';
loginPasswordInput.type = 'password';
toggleLoginPassword.textContent = 'Show';
loginForm.style.display = 'block';
registrationContainer.style.display = 'block';
loginHeading.style.display = 'block';
privateNotepadHeader.style.display = 'block';
document.getElementById('email-verify-status').textContent = '';
popupContacts.style.display = 'block';
popupScroll.scrollTop = 0;
setTimeout(updateArrows, 100);
setTimeout(function() {
initCaptchaLogin();
document.getElementById('maze-captcha-solved').value = "false";
document.getElementById('captcha-success').style.display = "none";
document.getElementById('maze-instructions').innerHTML = 'Solve the maze: Move the <span>electric DataTransfer logo</span> (Start) to the <span>black shape</span> (Exit) using arrow keys or mouse dragging.';
initMazeCaptcha();
}, 0);
});

closeBtn.addEventListener('click', function() {
popupContacts.style.display = 'none';
responseMessage.textContent = '';
currentUser = '';
loginForm.style.display = 'block';
registrationContainer.style.display = 'block';
loginHeading.style.display = 'block';
userInfo.style.display = 'none';
privateNotepadHeader.style.display = 'block';
document.getElementById('email-verify-status').textContent = '';
initCaptchaLogin();
document.getElementById('maze-captcha-solved').value = "false";
document.getElementById('captcha-success').style.display = "none";
document.getElementById('maze-instructions').innerHTML = 'Solve the maze: Move the <span>electric DataTransfer logo</span> (Start) to the <span>black shape</span> (Exit) using arrow keys or mouse dragging.';
});

arrowDown.addEventListener('click', function() {
popupScroll.scrollBy({ top: 250, behavior: 'smooth' });
});
arrowUp.addEventListener('click', function() {
popupScroll.scrollBy({ top: -250, behavior: 'smooth' });
});
popupScroll.addEventListener('scroll', updateArrows);
function updateArrows() {
const scrollTop = popupScroll.scrollTop;
const scrollHeight = popupScroll.scrollHeight;
const clientHeight = popupScroll.clientHeight;
const canScrollDown = scrollTop + clientHeight < scrollHeight - 1;
const canScrollUp = scrollTop > 1;
if (notesContainer.style.display === 'block') {
arrowUp.style.display = 'none';
arrowDown.style.display = 'none';
} else {
arrowUp.style.display = canScrollUp ? 'block' : 'none';
arrowDown.style.display = canScrollDown ? 'block' : 'none';
}
}

toggleRegPassword.addEventListener('click', function() {
if (regPasswordInput.type === 'password') {
regPasswordInput.type = 'text';
toggleRegPassword.textContent = 'Hide';
} else {
regPasswordInput.type = 'password';
toggleRegPassword.textContent = 'Show';
}
});
toggleRegPasswordConfirm.addEventListener('click', function() {
if (regPasswordConfirmInput.type === 'password') {
regPasswordConfirmInput.type = 'text';
toggleRegPasswordConfirm.textContent = 'Hide';
} else {
regPasswordConfirmInput.type = 'password';
toggleRegPasswordConfirm.textContent = 'Show';
}
});
toggleLoginPassword.addEventListener('click', function() {
if (loginPasswordInput.type === 'password') {
loginPasswordInput.type = 'text';
toggleLoginPassword.textContent = 'Hide';
} else {
loginPasswordInput.type = 'password';
toggleLoginPassword.textContent = 'Show';
}
});

// UPRAVENA REGISTRAČNÍ FUNKCE – po kliknutí na Register se vždy vyscrolluje na response message a chyby se zobrazují červeně
registrationForm.addEventListener('submit', function(e) {
e.preventDefault();
responseMessage.classList.remove('error');
const emailStatus = document.getElementById('email-verify-status').textContent.trim().toLowerCase();
if (emailStatus !== 'verified') {
responseMessage.textContent = 'Please verify your email before registration.';
responseMessage.classList.add('error');
popupScroll.scrollTo({ top: responseMessage.offsetTop - 20, behavior: 'smooth' });
return;
}
if (document.getElementById('maze-captcha-solved').value !== "true") {
responseMessage.textContent = 'Please solve the maze captcha for registration.';
responseMessage.classList.add('error');
popupScroll.scrollTo({ top: responseMessage.offsetTop - 20, behavior: 'smooth' });
setTimeout(function() {
responseMessage.textContent = '';
responseMessage.classList.remove('error');
}, 3000);
return;
}
responseMessage.textContent = 'Processing registration...';
popupScroll.scrollTo({ top: responseMessage.offsetTop - 20, behavior: 'smooth' });
const formData = new FormData(this);
formData.append('maze_token', document.getElementById('maze-captcha-token').value);
formData.append('action', 'register');
fetch('rating/kontakty_process.php', { method: 'POST', body: formData })
.then(response => response.text())
.then(result => {
responseMessage.textContent = result;
if (result.toLowerCase().includes('successful') || result.toLowerCase().includes('successfully')) {
responseMessage.classList.remove('error');
responseMessage.textContent = 'Registration successful, please log in.';
registrationContainer.style.display = 'none';
loginForm.style.display = 'block';
loginHeading.style.display = 'block';
privateNotepadHeader.style.display = 'block';
} else {
responseMessage.classList.add('error');
}
popupScroll.scrollTo({ top: responseMessage.offsetTop - 20, behavior: 'smooth' });
})
.catch(error => {
responseMessage.textContent = 'Error: ' + error;
responseMessage.classList.add('error');
popupScroll.scrollTo({ top: responseMessage.offsetTop - 20, behavior: 'smooth' });
});
});


// Login
loginForm.addEventListener('submit', function(e) {
e.preventDefault();
responseMessage.classList.remove('error');
const userCaptchaLogin = document.getElementById('captcha-login').value.trim().toLowerCase();
const correctAnswer = document.getElementById('captcha-login').dataset.answer;
if (userCaptchaLogin !== correctAnswer) {
responseMessage.textContent = 'Incorrect captcha answer for login.';
responseMessage.classList.add('error');
initCaptchaLogin();
return;
}
responseMessage.textContent = 'Processing login...';
const formData = new FormData(this);
formData.append('action', 'login');
fetch('rating/kontakty_process.php', { method: 'POST', body: formData })
.then(response => response.text())
.then(result => {
let parts = result.split("|||");
responseMessage.textContent = parts[0];
if (parts[0].toLowerCase().includes('successful')) {
currentUser = document.getElementById('login-username').value;
welcomeMessage.textContent = `Welcome, ${currentUser}!`;
userInfo.style.display = 'block';
loginForm.style.display = 'none';
registrationContainer.style.display = 'none';
loginHeading.style.display = 'none';
privateNotepadHeader.style.display = 'none';
responseMessage.textContent = '';
notesContainer.style.display = 'block';
notesText.innerHTML = parts[1] ? decodeURIComponent(parts[1]) : "";
setTimeout(updateArrows, 50);
}
})
.catch(error => {
responseMessage.textContent = 'Error: ' + error;
responseMessage.classList.add('error');
});
});

// Logout
logoutBtn.addEventListener('click', function() {
currentUser = '';
welcomeMessage.textContent = '';
userInfo.style.display = 'none';
notesContainer.style.display = 'none';
notesText.innerHTML = "";
loginForm.reset();
registrationForm.reset();
document.getElementById('email-verify-status').textContent = '';
initCaptchaLogin();
document.getElementById('maze-captcha-solved').value = "false";
initMazeCaptcha();
document.getElementById('maze-instructions').innerHTML = 'Solve the maze: Move the <span>electric DataTransfer logo</span> (Start) to the <span>black shape</span> (Exit) using arrow keys or mouse dragging.';
document.getElementById('captcha-success').style.display = "none";
loginForm.style.display = 'block';
registrationContainer.style.display = 'block';
loginHeading.style.display = 'block';
privateNotepadHeader.style.display = 'block';
responseMessage.textContent = '';
});

// Uložení poznámek
saveNoteButton.addEventListener('click', function() {
responseMessage.classList.remove('error');
responseMessage.textContent = 'Note saved successfully';
const noteContent = encodeURIComponent(notesText.innerHTML);
const formData = new FormData();
formData.append('action', 'saveNote');
formData.append('username', currentUser);
formData.append('note', noteContent);
fetch('rating/kontakty_process.php', { method: 'POST', body: formData })
.then(response => response.text())
.then(result => {
responseMessage.textContent = result;
popupScroll.scrollTo({ top: 0, behavior: 'smooth' });
setTimeout(() => { responseMessage.textContent = ''; }, 2000);
})
.catch(error => {
responseMessage.textContent = 'Error: ' + error;
responseMessage.classList.add('error');
});
});
});

function checkEmailVerification(email) {
const statusSpan = document.getElementById('email-verify-status');
if (!email || !email.includes('@')) {
statusSpan.textContent = '';
return;
}
fetch('rating/kontakty_check_email_verification.php?email=' + encodeURIComponent(email))
.then(res => res.json())
.then(data => {
if (data.verified) {
statusSpan.textContent = 'verified';
statusSpan.style.color = 'green';
} else {
statusSpan.textContent = 'Verify by sending the files via email.';
statusSpan.style.color = 'red';
}
})
.catch(() => {
statusSpan.textContent = 'error checking';
statusSpan.style.color = 'gray';
});
}
</script>
<!-- Add Block Update Detekce Adblockeru -->


<!-- Overlay s efektem blur na pozadí (vždy vloženo do stránky) -->
<div id="popupOverlay" style="display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(1px); z-index: 9998;"></div>

<!-- Vyskakovací okno s informací o aktivním adblocku (vždy vloženo do stránky) -->
<div id="adblockPopup" style="display: none; position: fixed; top: 50%; left: 50%; width: 300px; height: 410px; margin-top: -205px; margin-left: -150px; background: rgba(5, 5, 5, 0.66); color: #fff; z-index: 9999; padding: 20px; border-radius: 10px;">
<div style="position: absolute; top: 1px; right: 7px; background: none; border: none; font-size: 18px; color: #fff; cursor: pointer;"
onclick="document.getElementById('adblockPopup').style.display='none'; document.getElementById('popupOverlay').style.display='none';">
×
</div>
<div>
<p style="text-align: justify; font-size: 18px;color:red;margin-top:-10px;text-align:center;">AdBlock?</p>
<p style="text-align: justify; font-size: 16px;">We greatly appreciate that you have chosen our service. It appears that your browser has an ad blocker enabled, or another add-on is active that prevents our sponsors' ads from being displayed. Our sponsors are vital to us because they support our website by placing advertisements, which enables us to provide completely free access to all users. Please try disabling your ad blocker, or consider temporarily using a different browser for DataTransfer.com that allows ads to be displayed.</p>
</div>
</div>

<script>
// Funkce pro zobrazení popupu
function showPopup() {
document.getElementById('popupOverlay').style.display = 'block';
document.getElementById('adblockPopup').style.display = 'block';
}

// Funkce pro kontrolu stavu adblocku pomocí AJAX dotazu
function checkAdblock() {
fetch('rating/adblock/checkAdblock.php') // Upravte cestu k souboru checkAdblock.php podle potřeby
.then(response => response.json())
.then(data => {
// Pokud server vrátí hodnotu 1, zobraz popup
if (data.adblock == 1) {
showPopup();
}
})
.catch(error => console.error('Chyba při kontrole adblocku:', error));
}

// Opakovaná kontrola každých 20 sekund
setInterval(checkAdblock, 20000);

// Kontrola hned při načtení stránky – pokud je počáteční hodnota 1, zobrazíme hned popup
</script>

<!-- Add Block Update Detekce Adblockeru END -->
<!-- Pop -->
<style>
body { margin: 0; user-select: none }
.popup { position: absolute; top: 43%; left: 68px; transform: translateY(-40%); background: #05050569; color: #fff; border-radius: 15px; padding: 20px; width: 280px; text-align: left; display: none; z-index: 1000; cursor: grab }
.popup:active { cursor: grabbing }
.close-button { position: absolute; top: 1px; right: 1px; background: none; border: none; font-size: 18px; color: #fff; cursor: pointer }
.close-button:hover { color: #fff }
</style>

<script>
document.addEventListener('DOMContentLoaded', function(){
const popup = document.getElementById('popup');
const closeButton = document.getElementById('close-button');
function setCookie(name, value, days) {
const date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
document.cookie = `${name}=${value};expires=${date.toUTCString()};path=/`
}
function getCookie(name) {
const cookies = document.cookie.split(';');
for(let i = 0; i < cookies.length; i++){
const cookie = cookies[i].trim();
if(cookie.startsWith(name+'=')){
return cookie.substring(name.length+1)
}
}
return null;
}
function showPopup(){ popup.style.display = 'none' }
function hidePopup(){ popup.style.display = 'none' }
function handlePopup(){
let popupCount = parseInt(getCookie('popupCount')) || 0;
if(popupCount < 111183){
setTimeout(() => { showPopup() }, 0);
setCookie('popupCount', popupCount+1, 7)
}
}
closeButton.addEventListener('click', hidePopup);
let isDragging = false;
let offsetX = 0, offsetY = 0;
popup.addEventListener('mousedown', function(e){
isDragging = true;
offsetX = e.clientX - popup.offsetLeft;
offsetY = e.clientY - popup.offsetTop;
popup.style.cursor = 'grabbing';
e.preventDefault();
});
document.addEventListener('mousemove', function(e){
if(isDragging){
popup.style.left = `${e.clientX - offsetX}px`;
popup.style.top = `${e.clientY - offsetY}px`;
}
});
document.addEventListener('mouseup', function(){
if(isDragging){
isDragging = false;
popup.style.cursor = 'grab';
}
});
handlePopup();
});
</script>

<!-- Hlavni Pop -->
<div class="popup hidden-sm" id="popup" style="display: none !important; justify-content: space-between;">
<script>
// Po načtení celé stránky počkáme 1 sekundu a poté zobrazíme div.
window.addEventListener("load", function() {
setTimeout(function() {
document.getElementById("popup").style.display = "flex";
}, 1000); // 1000 ms = 1 sekunda
});
</script>

<button class="close-button" id="close-button">&times;</button>

<!-- Right Pop Inside -->
<div style="flex: 1; padding: 10px; border: 1px solid #000; width:230px">
<!-- Kontejner pro rating tlačítko a průměrné hodnocení -->
<div id="ratingContainer" style="display: flex; justify-content: center; align-items: center; gap: 10px;">
<button id="openPopup" style="background-color: transparent; border: none; border-radius: 4px; color: #fff; font-size: 1em; padding: 10px 0px; cursor: pointer; transition: background 0.3s ease; line-height: 2;">
Rate us😄
</button>
<div id="averageRating" style="display: flex; align-items: center; gap: 11px;">
<!-- Místo hvězd se zde zobrazí průměrné rating emoji -->
<span id="avgRatingText" style="font-size: 2em; line-height: 2;">0.00 😐</span>
</div>
</div>
<!-- Kontejner pro rating tlačítko a průměrné hodnocení END -->
<p style="font-size: 13px;">Let us know what we should improve.</p>
</div>
<!-- Right Pop Inside END -->
</div>
<!-- Pop END -->

<!-- Zbytek pro hodnoceni -->
<style>
/* Modal Popup Styles */
.modal {
display: none; /* Hidden by default */
position: fixed;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0,0,0,0.8);
transition: opacity 0.3s ease;
}
.modal.active {
display: flex;
justify-content: center;
align-items: center;
}
.modal-content {
background: #fff;
border: 2px solid #000;
border-radius: 8px;
padding: 30px;
max-width: 450px;
width: 90%;
text-align: center;
position: relative;
animation: scaleIn 0.4s ease forwards;
transform: scale(0.7);
}
@keyframes scaleIn {
from { opacity: 0; transform: scale(0.7); }
to { opacity: 1; transform: scale(1); }
}
.close {
position: absolute;
top: 10px;
right: 10px;
font-size: 28px;
font-weight: bold;
color: #000;
cursor: pointer;
transition: color 0.3s ease;
}
.close:hover { color: #555; }

/* Emoji Rating Styles */
.star-rating {
font-size: 2.5em;
display: inline-block;
}
/* Skryjeme radio inputy mimo obrazovku */
.star-rating input {
position: absolute;
left: -9999px;
}
.star-rating label {
cursor: pointer;
transition: transform 0.2s;
margin: 0 5px;
}
/* Zvýraznění při hoveru a po výběru */
.star-rating label:hover,
.star-rating input:checked + label {
transform: scale(1.2);
}

.emoji-rating label {
cursor: pointer;
filter: grayscale(100%);
transition: filter 0.2s, transform 0.2s;
margin: 0 5px;
transform: rotate(180deg);
}
/* Při hoveru odstraníme grayscale a zvětšíme emoji */
.emoji-rating label:hover,
.emoji-rating label:hover ~ label {
filter: none !important;
transform: rotate(180deg) scale(1.2) !important;
}
/* Po kliknutí (zaškrtnutý input) odstraníme grayscale a zvětšíme emoji */
.emoji-rating input:checked ~ label {
filter: none !important;
transform: rotate(180deg) scale(1.2) !important;
}
</style>

<!-- Popup Modal -->
<div id="ratingModal" class="modal">
<div class="modal-content">
<span class="close">&times;</span>
<!-- Zde se zobrazí hláška -->
<div id="modalMessage" style="display: none; font-size: 1em; margin-bottom: 10px;"></div>
<h2>Rate DataTransfer</h2>
<!-- Emoji Rating pro popup -->
<div class="emoji-rating" style="direction: rtl; unicode-bidi: bidi-override; font-size: 2.5em; margin-top: 12px;">
<!-- Vstupy jsou skryté mimo obrazovku -->
<input type="radio" id="rate5" name="rating" value="5" style="position: absolute; left: -9999px;">
<label for="rate5" style="cursor: pointer; filter: grayscale(100%); transition: filter 0.2s, transform 0.2s; transform: rotate(180deg); margin: 0 5px;">😄</label>

<input type="radio" id="rate4" name="rating" value="4" style="position: absolute; left: -9999px;">
<label for="rate4" style="cursor: pointer; filter: grayscale(100%); transition: filter 0.2s, transform 0.2s; transform: rotate(180deg); margin: 0 5px;">🙂</label>

<input type="radio" id="rate3" name="rating" value="3" style="position: absolute; left: -9999px;">
<label for="rate3" style="cursor: pointer; filter: grayscale(100%); transition: filter 0.2s, transform 0.2s; transform: rotate(180deg); margin: 0 5px;">😐</label>

<input type="radio" id="rate2" name="rating" value="2" style="position: absolute; left: -9999px;">
<label for="rate2" style="cursor: pointer; filter: grayscale(100%); transition: filter 0.2s, transform 0.2s; transform: rotate(180deg); margin: 0 5px;">🙁</label>

<input type="radio" id="rate1" name="rating" value="1" style="position: absolute; left: -9999px;">
<label for="rate1" style="cursor: pointer; filter: grayscale(100%); transition: filter 0.2s, transform 0.2s; transform: rotate(180deg); margin: 0 5px;">😠</label>
</div>

<!-- CSS pravidla pro interaktivitu -->
<style>
/* Při hoveru zrušíme grayscale a zvětšíme emoji */
.emoji-rating label:hover,
.emoji-rating label:hover ~ label {
filter: grayscale(0%);
transform: rotate(180deg) scale(1.2);
}

/* Po kliknutí se zabarví emoji (a všechny předcházející) */
.emoji-rating input:checked ~ label {
filter: grayscale(0%);
transform: rotate(180deg) scale(1.2);
}
</style>
<br>
<!-- Textarea pro komentář (max 300 znaků) -->
<textarea id="comment" name="comment" maxlength="300" placeholder="What should we improve? (max 300 characters)" style="width: 90%; height: 120px; margin-top: 10px; padding: 10px;"></textarea>
<br>
<button id="submitRating" style="margin-top:30px; background-color: #fff; border: none; border-radius: 4px; color: #000; font-size: 1em; padding: 10px 20px; cursor: pointer; transition: background 0.3s ease;">
Submit Rating
</button>
</div>
</div>

<script>
// Získání elementů modalu
var modal = document.getElementById("ratingModal");
var openBtn = document.getElementById("openPopup");
var closeBtn = document.getElementsByClassName("close")[0];
var modalMessageEl = document.getElementById("modalMessage");

// Funkce pro zobrazení hlášky v modálním okně
function showModalMessage(text, isError) {
modalMessageEl.textContent = text;
modalMessageEl.style.color = isError ? "red" : "green";
modalMessageEl.style.display = "block";
}

// Otevření modalu po kliknutí
openBtn.onclick = function() {
modal.classList.add("active");
// Při otevření vyčistíme předchozí hlášku
modalMessageEl.style.display = "none";
modalMessageEl.textContent = "";
};

// Zavření modalu po kliknutí na (X)
closeBtn.onclick = function() {
modal.classList.remove("active");
};

// Zavření modalu při kliknutí mimo obsah
window.onclick = function(event) {
if (event.target == modal) {
modal.classList.remove("active");
}
};

// Odeslání ratingu pomocí AJAXu
document.getElementById("submitRating").addEventListener("click", function(){
var ratingEl = document.querySelector('input[name="rating"]:checked');
if (!ratingEl) {
showModalMessage("Please select a rating", true);
return;
}
var ratingValue = ratingEl.value;
var comment = document.getElementById("comment").value;

var xhr = new XMLHttpRequest();
xhr.open("POST", "rating/hodnoceni/hodnoceni_submit_rating.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
console.log("Response:", xhr.responseText);
if (xhr.status === 200) {
if (xhr.responseText.indexOf("Error:") !== -1) {
showModalMessage(xhr.responseText, true);
} else {
showModalMessage("Rating submitted successfully!", false);
}
updateAverageRating();
} else {
showModalMessage("Error submitting rating.", true);
}
}
};
xhr.send("rating=" + encodeURIComponent(ratingValue) + "&comment=" + encodeURIComponent(comment));
});

// Funkce pro aktualizaci průměrného ratingu
function updateAverageRating() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "rating/hodnoceni/hodnoceni_fetch_average_rating.php", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
try {
var data = JSON.parse(xhr.responseText);
var avgRating = parseFloat(data.avg_rating);
// Mapování průměrného ratingu na emoji
var emoji;
if (avgRating < 1.5) {
emoji = "😠";
} else if (avgRating < 2.5) {
emoji = "🙁";
} else if (avgRating < 3.5) {
emoji = "😐";
} else if (avgRating < 4.5) {
emoji = "🙂";
} else {
emoji = "😄";
}
document.getElementById("avgRatingText").textContent = avgRating.toFixed(2) + " " + emoji;
} catch (e) {
console.error("Error parsing response:", e);
}
}
};
xhr.send();
}

// Aktualizace průměrného ratingu při načtení a každých 10 sekund
updateAverageRating();
setInterval(updateAverageRating, 35000);
</script>

<!-- Add Block Update Navstevy a Kontakty a Adbloc END -->
<!-- Add Block Update END -->





<div class="upload-block" style="">

<!-- Main Block -->
<div class="upload-block-inner" style="min-width: 336px !important;max-width: 338px !important;" >


<div class="upload-block-content start-top active" id="upload">
<div class="upload-form">
<!-- UPDATE -->
<div class="select-first-files" style="margin-top: -5px;">
<div class="outside-container" style="text-align: center;display: flex;align-items: center;">
<div class="filesfolder" style="background: #f6f6f6;width:150px;height:100px;border-radius: 15px;display: inline-block;">
<lord-icon
src="https://datatransfer.b-cdn.net/assets/themes/modern/img/icons/upload.png"
trigger="click"
colors="primary:black,secondary:black"
scale="100"
style="width:120px;height:90px;min-width:100%;background-image: url(https://datatransfer.b-cdn.net/assets/img/upload.png);background-position: center 5px;background-size: 100px;background-repeat: no-repeat;alt="DataTransfer file upload"">
</lord-icon>
<span class="description files" style="margin-top: -22px;font-size: 16px;">Add files</span>
</div>
<div class="filesfolder" style="background: #fff;width:150px;height:100px;border-radius: 15px;display: inline-block;">

<span class="folder-select"><img src="https://datatransfer.b-cdn.net/assets/themes/modern/img/icons/select-folder.png" style="width: 41px;height: 32px;vertical-align:baseline;margin-top: 25px;" alt="DataTransfer folder upload" title="Click to select a folder"><span class="description" style="margin-top: 5px;font-size: 16px;cursor: pointer;">Add a folder</span></span>

</div>
</div>
</div>
<!-- UPDATE -->
<!-- UPDATE -->
<p style="font-size:11px;padding-left:20px;padding-right:20px;margin-top:-10px;text-align:left;">Advertisement</p>
<!-- UPDATE -->

<!-- UPDATE -->
<!-- Ads Index Panel Main -->
<!-- /30408232/DT_INDEX_300x100 -->
<div id='div-gpt-ad-1662815517026-0' style='text-align:center;width:100%;max-height: 120px !important;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1662815517026-0'); });
</script>
</div>
<!-- /30408232/DT_INDEX_300x100 -->
<!-- Ads Index Panel Main END -->
<!-- UPDATE END -->

<div class="selected-files" id="selected-files">
<ul></ul>

<div class="bottom">
<div class="stats">
<span><b id="stats-total"></b><br>
files selected</span>
<span><b id="stats-selected"></b><br>
selected</span>
<span><b id="stats-remaining"></b><br>
remaining</span>
</div>
<div class="add-buttons">
<button class="button is-small is-info" id="add-files">Add file(s)</button>
<button class="button is-small is-info" id="add-folders">Add folder(s)</button>
</div>
</div>
</div>

<form enctype="multipart/form-data" id="upload-form" class="uploadForm">
<input type="hidden" name="share" id="share" value="mail">
<input type="hidden" name="destruct" id="destruct" value="no">
<input type="file" name="files[]" id="file-selector" multiple="multiple">
<input type="file" name="files[]" id="folder-selector" multiple="multiple" webkitdirectory="true" directory>

<div id="email-fields">
<div class="input-group">
<div class="recipients"></div>
<input class="input" type="text" name="email_to[]" id="email-to" placeholder="Email to" autocomplete="none" onfocus="this.setAttribute('autocomplete', 'none');"> </div>
<div class="input-group" style="margin-top:-4px !important;">
<input class="input" type="text" name="email_from" id="email-from" placeholder="Email from" required="required">
</div>
</div>
<div class="input-group">
<textarea class="input" name="message" placeholder="Message"></textarea>
</div>

<!-- UPDATE -->
<!-- Ads Index Panel Main -->
<!-- /30408232/DT_INDEX_OPTIONS_300x100 -->
<div id='div-gpt-ad-1743584373831-0' style='text-align:center;width:100%;max-height: 120px !important;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1743584373831-0'); });
</script>
</div>
<!-- Ads Index Panel Main END -->
<!-- UPDATE -->

<div class="advanced-options">
<div class="input-group" data-help="You can share the upload by email so the recipients will receive an email or share by link and copy the url and share it with everyone you want.">
<span class="label">How to share the file? <i class="lni lni-question-circle"></i></span>
<div class="radio-group share-options">
<label class="radio selected" id="mail">
Send using email </label>
<label class="radio " id="link">
Get a sharable link </label>
</div>
</div>
<div class="input-group" data-help="The upload will destruct itself after all the recipients have downloaded the file.">
<span class="label">Enable self destruct? <i class="lni lni-question-circle"></i></span>
<div class="radio-group destruct-options">
<label class="radio selected" id="no">
No </label>
<label class="radio " id="yes">
Yes </label>
</div>
</div>
<div class="input-group" data-help="Your upload can only be downloaded by entering a password.">
<span class="label">Protect the upload with a password <i class="lni lni-question-circle"></i></span>
<input class="input" type="text" name="password" placeholder="Password" autocomplete="off" autofill="no">
</div>
<div class="input-group">
<span class="label">When should the file expire?</span>
<select name="expire">
<option value='3600'>1 hour</option><option value='28800'>8 hours</option><option value='43200'>12 hours</option><option value='86400'>1 day</option><option value='259200'>3 days</option><option value='432000'>5 days</option><option value='604800'>1 week</option> </select>
<script>$('select[name="expire"]').val("604800");</script> </div>
</div>
</form>
</div>
<div class="button-block">

<button class="button is-info is-rounded" id="submit-upload"style="margin-left: 15px; border-radius: 10px !important;!;" >Send</button>
<div id="trigger" class="hidden-sm" data-help="A personal space to store your thoughts, ideas, notes, and email addresses." style="margin-left: 5px;font-size: 5px;font-size: 13px;text-align: center;line-height: 34px;background-color: #f8f8f8 !important;border-radius: 10px !important;;width: 20% !important;">Notes</div>
<button class="button is-info is-rounded options" aria-label="Upload options" style="margin-left: 2px !important;font-size: 13px;width: 20%;margin-right: 15px;border-radius: 10px !important;">Options</button>
</div>
</div>

<div class="upload-block-content" id="upload-verify">

<img src="https://datatransfer.b-cdn.net/assets/themes/modern/img/icons/upload.png" alt="datatransfer upload files" title="Upload your files" style="width:120px;height:85px">


<div class="upload-verify-details">
<h4 style="font-size: 26px;font-weight: 700;">Verify your email</h4>

<p>We'll need to know it's really you, so we've sent a verification code to <span id="email-to-verify"></span></p>

<input type="number" class="input is-normal" placeholder="Enter verification code">
</div>

<div class="button-block">
<button class="button is-info is-rounded">Verify</button>
</div>
</div>

<div class="upload-block-content" id="upload-progress">

<!-- UPDATE -->
<div style="width:100%;margin-left:10px;"><p>Sending...</p></div>
<!-- UPDATE -->

<div class="upload-progress-bar" id="progress-bar"></div>

<div class="upload-progress-details" style="padding-top: 10px;padding-bottom: 10px;">
<span class="size"></span>
<span class="time"></span>
</div>


<!-- UPDATE -->
<div class="upload-block-logo">
<p style="font-size:11px;padding-left:20px;padding-right:20px;margin-top:-10px;text-align:left;"></p>
<!-- /30408232/DT_PROGRESS_300x100 -->
<div id='div-gpt-ad-1662817897654-0' style='text-align:center;width:100%;max-height: 120px !important;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1662817897654-0'); });
</script>
</div>
<!-- /30408232/DT_PROGRESS_300x100 -->
</div>
<!-- UPDATE -->




<div class="button-block">
<button class="button is-info is-rounded" id="cancel-upload">Cancel</button>
</div>
</div>
<div class="upload-block-content" id="upload-finished">


<!-- UPDATE -->
<img src="https://datatransfer.b-cdn.net/assets/themes/modern/img/icons/success.png" alt="datatransfer file transfer" style="height:35px">
<!-- UPDATE -->


<div class="upload-finished-details" style="height:90px;width:100%;">
<h4 style="font-size:16px;font-weight:700;margin-top:-5px;">Success!</h4>

<div class="upload-finished-message" id="link">
<p style="margin-top: -11px;">File(s) have been uploaded, use the link below.</p>
<input type="text" class="input is-normal" value="" readonly="readonly" style="margin-top: -23px;border: none;color: #003e95;">
</div>
<div class="upload-finished-message" id="mail" style="line-height: 17px;">
<p>All set! The file(s) have been sent. Keep an eye out for an email soon.</p>
</div>
</div>



<!-- UPDATE -->
<div class="upload-block-logo" style="margin-top: -15px;">
<!-- <p style="font-size:11px;padding-left:20px;padding-right:20px;margin-top:-30px;text-align:left;">Advertisement</p> -->
<!-- /30408232/DT_SUCCESS_300x100 -->
<div id='div-gpt-ad-1663231230538-0' style='min-width: 300px; min-height: 100px;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1663231230538-0'); });
</script>
</div>
<!-- /30408232/DT_SUCCESS_300x100 -->
</div>
<!-- UPDATE -->

<div class="button-block" style="height: 60px !important;">
<button class="button is-info is-rounded">Copy URL</button>
</div>
</div>
</div>

<div class="upload-block-tooltip">
<div class="content error">
<img src="https://datatransfer.b-cdn.net/assets/themes/modern/img/icons/error-icon-white.png" alt="DataTransfer file upload">
<p></p>
</div>
<div class="content help">
<img src="https://datatransfer.b-cdn.net/assets/themes/modern/img/icons/question.png" alt="DataTransfer file upload">
<p></p>
</div>
</div>
</div>






<!-- Loading tools -->
<script src="https://code.jquery.com/ui/1.13.3/jquery-ui.min.js"></script>
<script src="assets/js/vegas.js?v=2.6.5"></script>
<script src="assets/themes/modern/js/progressbar.min.js"></script>
<script src="assets/themes/modern/js/lord-icon-2.0.2.js"></script>
<script src="assets/js/jquery.fileupload.js"></script>

<!-- Inline JS variables -->
<script>
var mobileVersion = "no";
var maxSize = 10000;
var maxFiles = 10000;
var maxSizeBytes = maxSize * 1024 * 1024;
var maxChunkSize = 50;
var maxConcurrentUploads = 3;
var maxRecipients = 5;
var disallowedFiles = "exe,bat";
var process_activate = false;
var siteUrl = "https://www.datatransfer.com/";
var themeColor = "black";
var themeColorSec = "black";

$(document).ready(function() {
var backgrounds = [
{ src: "assets/backgrounds/Backg.png", clickurl: "", delay: 5000}, ];

// Randomize backgrounds
backgrounds.shuffle();

$(".background").vegas({
slides: backgrounds,
transition: 'fade',
preloadImage: true,
timer: true,
shuffle: true
});
});
</script>

<!-- Loading the javascript -->
<script src="assets/themes/modern/js/droppy.js?v=2.6.5"></script>

<script>Form.pickShareOption('mail');</script>

<!-- Google Adsense -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
(adsbygoogle = window.adsbygoogle || []).push({
google_ad_client: "ca-pub-7740240375137244",
enable_page_level_ads: true
});
</script>
<!-- Google Adsense -->

<!-- Google Adsense DT_INDEX -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/DT_INDEX_300x100', [[300, 75], [300, 100], [300, 50]], 'div-gpt-ad-1662815517026-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
<!-- Google Adsense DT_INDEX -->

<!-- Google Adsense Download ST_DOWN -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(function() {
googletag.defineSlot('/30408232/ST_DOWN_336x280_1', [336, 280], 'div-gpt-ad-1730929014979-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
<!-- Google Adsense Download ST_DOWN -->

<!-- DataTransfer V2.6.5 -->
</body>
</html>

Ads.Txt Alerts - A trading name of Red Volcano Limited

Waterloo Buildings, Second Floor Rear, 53 London Road, Southampton, Hampshire, United Kingdom, SO15 2AD

© Red Volcano 2020. All Rights Reserved.