plustransfer.com Ads.txt file


<!DOCTYPE html>
<html style="scrollbar-width: none;">
<html lang="en">
<head>

<!-- Add Block Update dns-prefetch -->
<link rel="dns-prefetch" href="//www.datatransfer.com">
<link rel="preconnect" href="https://pagead2.googlesyndication.com" crossorigin>
<link rel="dns-prefetch" href="//pagead2.googlesyndication.com">
<link rel="preconnect" href="https://securepubads.g.doubleclick.net" crossorigin>
<link rel="dns-prefetch" href="//securepubads.g.doubleclick.net">
<link rel="preload" href="/assets/css/style.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="/assets/css/style.css"></noscript>
<link rel="preload" as="image" href="https://www.datatransfer.com/assets/img/datatransfer-logo.webp" fetchpriority="high">

<link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<!-- All fonts merged into one request -->
<link href="https://fonts.googleapis.com/css2?family=Roboto+Flex:wght@100;300;400;700&family=Raleway:wght@300;400;600;800;900&family=Source+Sans+Pro:wght@300;400;500;600;700&family=Indie+Flower&display=swap" rel="stylesheet">

<link rel="preload" href="/css/bulma.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="/css/bulma.min.css"></noscript>

<!-- stylesheet -->
<link rel="preload"
href="https://datatransfer.b-cdn.net/assets/themes/modern/css/style.css?v=2.6.5"
as="style"
crossorigin="anonymous"
onload="this.onload=null;this.rel='stylesheet'">
<noscript>
<link rel="stylesheet" href="https://datatransfer.b-cdn.net/assets/themes/modern/css/style.css?v=2.6.5" crossorigin="anonymous">
</noscript>

<!-- Style overwrite -->
<style>
#page-tabs {
min-height: 40px; /* přizpůsob podle layoutu */
}
.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>

<!-- stylesheet -->


<!-- Add Block Update dns-prefetch END -->

<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="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 -->
<!-- Preconnect, aby se zrychlil DNS + SSL handshake -->
<!-- <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">
<link href="https://cdn.lineicons.com/3.0/lineicons.css" rel="stylesheet">
<!-- Preload icons -->

<!-- Add Block Update -->
<!-- Schema -->
<!-- Schema -->
<!-- Favicon -->
<link rel="icon" href="/favicon.ico" sizes="32x32" type="image/x-icon">
<link rel="icon" href="/favicon.png" sizes="48x48" type="image/png">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180">
<!-- Favicon END -->
<script src="https://datatransfer.b-cdn.net/assets/js/jquery-3.6.0.min.js"></script>

<link rel="canonical" href="https://www.datatransfer.com/">
<link rel="image_src" type="image/png" href="https://www.datatransfer.com/img/logo.png"/>

<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;
}
</style>
<style>
.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 Flex,"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 -->
<!-- font family Roboto -->
<!-- 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 -->
<!-- AdSense -->
<!-- Auto Ads: include ONCE -->
<script async src="https://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 Publisher Tag: include ONCE -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
window.googletag = window.googletag || { cmd: [] };
window.__gptInitDone = window.__gptInitDone || false;

googletag.cmd.push(function () {
if (window.__gptInitDone) return; // prevent duplicate init on re-renders/SPAs
window.__gptInitDone = true;

const defs = [
{unit:'/30408232/DT_INDEX_300x100', sizes:[[320,100],[300,100],[300,75]], id:'div-gpt-ad-1662815517026-0'},
{unit:'/30408232/DT_INDEX_OPTIONS_300x100', sizes:[[320,100],[300,100],[300,75]], id:'div-gpt-ad-1743584373831-0'},
{unit:'/30408232/DT_PROGRESS_300x100', sizes:[[320,100],[300,100],[300,75]], id:'div-gpt-ad-1662817897654-0'},
{unit:'/30408232/DT_SUCCESS_300x100', sizes:[[336,280],[300,100]], id:'div-gpt-ad-1663231230538-0'},
{unit:'/30408232/ST_DOWN_336x280_1', sizes:[336,280], id:'div-gpt-ad-1732802672358-0'},
{unit:'/30408232/PT_DOWNLOAD_336x280', sizes:[336,280], id:'div-gpt-ad-1730966601524-0'},
{unit:'/30408232/DT_DOWN_NOT_FOUND_300x250', sizes:[336,280], id:'div-gpt-ad-1730967717399-0'},
{unit:'/30408232/DT_UPLOAD_IS_PROCESSING_336x280',sizes:[336,280], id:'div-gpt-ad-1731086349417-0'},
];

// Define only if the DIV exists; guard against null slot
defs.forEach(d => {
if (!document.getElementById(d.id)) return;
const slot = googletag.defineSlot(d.unit, d.sizes, d.id);
if (slot) slot.addService(googletag.pubads());
});

googletag.pubads().enableSingleRequest();
googletag.pubads().collapseEmptyDivs();
googletag.enableServices();

// Optionally display all present slots
defs.forEach(d => {
if (document.getElementById(d.id)) googletag.display(d.id);
});
});

// If you re-render page sections later, destroy before redefining:
// googletag.cmd.push(() => googletag.destroySlots());
</script>
<!-- AdSense -->

<!-- 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 -->

//
//
//
//
//
<!-- 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="" 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="https://www.datatransfer.com/assets/img/datatransfer-logo.webp"
class="main-logo"
alt="Transfer big files"
fetchpriority="high"
decoding="async">
</a>

<!-- Page tabs -->
<style>
.tab{display:none;}
.tab.is-active{display:block;}
</style>
<!-- END Page tabs -->
<!-- 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 -->
<!-- Page tabs -->
<script>
(function(){
function idFromLink(a){
// Preferuj data-target (už obsahuje plné ID panelu, např. "tab-language")
const dt = a.getAttribute('data-target');
if (dt) return dt;

// Jinak si přečti href="#slug" a převeď na "tab-slug"
const href = a.getAttribute('href') || '';
if (href.startsWith('#')) return 'tab-' + href.slice(1);

return null;
}

function openById(id, push){
const panel = document.getElementById(id);
if (!panel) return false;

// Přepni panely
document.querySelectorAll('.tab').forEach(t => t.classList.remove('is-active'));
panel.classList.add('is-active');

// Aktivní stav v navigaci
document.querySelectorAll('a[data-target]').forEach(a => {
const active = (a.getAttribute('data-target') === id);
a.closest('li')?.classList.toggle('is-active', active);
a.setAttribute('aria-current', active ? 'page' : 'false');
});

// Uprav hash (bez poskakování)
if (push){
const slug = id.replace(/^tab-/, '');
if (location.hash !== '#'+slug) history.pushState(null, '', '#'+slug);
}
return true;
}

// Delegovaný click na všechny odkazy s data-target (funguje i pro dynamické)
document.addEventListener('click', function(e){
const a = e.target.closest('a[data-target]');
if (!a) return;

const id = idFromLink(a) || a.getAttribute('data-target');
if (!id) return;

// Interní tab → neprováděj default (žádný scroll/reload)
e.preventDefault();
openById(id, true);
});

// Po načtení: otevři podle hash (#contact → tab-contact), jinak první panel
document.addEventListener('DOMContentLoaded', function(){
const slug = (location.hash || '').replace('#','');
if (slug && openById('tab-'+slug, false)) return;

const first = document.querySelector('.tab');
if (first) openById(first.id, false);
});

// Podpora zpět/vpřed v prohlížeči
window.addEventListener('hashchange', function(){
const slug = (location.hash || '').replace('#','');
if (slug) openById('tab-'+slug, false);
});
})();
</script>
<!-- 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 adDiv5 = document.getElementById("div-gpt-ad-1663231230538-0"); // nový div

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 (adDiv5 && adDiv5.offsetHeight > 5) { adDisplayed = 1; } // přidána kontrola

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 Flex';
}
.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 Flex;
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: 320px;
text-align: left;
display: none;
z-index: 1000;
cursor: grab;
height: 450px !important;
display: flex;
flex-direction: column;
}
.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 }

.user-ratings {
flex: 1;
overflow-y: auto;
margin-top: 10px;
}
.user-ratings::-webkit-scrollbar { width: 0px; background: transparent; }
.user-ratings { scrollbar-width: none; }

.rating-stars { margin-bottom: 2px; }
.rating-comment { font-size: 13px; margin-bottom: 10px; }
</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>

<!-- Main Popup -->
<div class="popup hidden-sm" id="popup" style="display: none !important;">
<script>
window.addEventListener("load", function() {
setTimeout(function() {
document.getElementById("popup").style.display = "flex";
}, 1000);
});
</script>

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

<!-- Top panel (always visible) -->
<div style="padding: 5px; border: 1px solid #000; width:100%; flex-shrink: 0;">
<div id="ratingContainer" style="display: flex; justify-content: center; align-items: center; gap: 44px;">
<button id="openPopup" style="background-color: ffffff; border: 1px white solid; border-radius: 4px; color: #000; font-size: 1em; padding: 1px 10px; cursor: pointer; transition: background 0.3s ease; line-height: 2;">
<b>Rate us 😄</b>
</button>
<div id="averageRating" style="display: flex; align-items: center; gap: 11px;">
<span id="avgRatingText" style="font-size: 2em; line-height: 2; color:#fff;">0.00 😐</span>
</div>
</div>
<p style="font-size: 13px;">Let us know what we should improve.</p>
<p style="font-size: 12px;">(The upload and download speed depends on the speed of your internet connection.)</p>
</div>

<!-- Reviews (only this scrolls) -->
<div class="user-ratings" id="userRatings" style="padding: 5px;">
<div style="margin-top:5px; color:#fff;font-size:13px;text-align:center;">Latest reviews</div>
<div id="ratingsList" style="font-size:13px;">Loading reviews...</div>
</div>
</div>
<!-- Popup END -->

<!-- Modal Popup -->
<style>
.modal {
display: none;
position: fixed;
z-index: 99999;
left: 0; top: 0;
width: 100%; height: 100%;
overflow: auto;
background-color: rgba(0,0,0,0.85);
}
.modal.active {
display: flex;
justify-content: center;
align-items: center;
}
.modal-content {
background: #050505;
color: #fff;
border-radius: 6px;
padding: 30px;
max-width: 450px;
width: 90%;
text-align: center;
position: relative;
border: 1px solid #333;
}
.close {
position: absolute;
top: 10px; right: 15px;
font-size: 28px;
font-weight: bold;
color: #fff;
cursor: pointer;
}
.close:hover { color: #aaa; }

.emoji-rating input { position: absolute; left: -9999px; }
.emoji-rating label {
cursor: pointer;
filter: grayscale(100%);
transition: filter 0.2s, transform 0.2s;
margin: 0 5px;
font-size: 2.5em;
}
.emoji-rating label:hover,
.emoji-rating label:hover ~ label {
filter: grayscale(0%);
transform: scale(1.2);
}
.emoji-rating input:checked + label,
.emoji-rating input:checked ~ label {
filter: grayscale(0%);
transform: scale(1.2);
}

#comment {
width: 90%;
height: 120px;
margin-top: 15px;
padding: 10px;
background:#111;
color:#fff;
border:1px solid #444;
border-radius: 6px;
resize: none;
}
#comment::placeholder {
color: #888;
}

#submitRating {
margin-top: 25px;
background-color: transparent;
border: 1px solid #2b2b2b;
border-radius: 6px;
color: #fff;
font-size: 1em;
cursor: pointer;
transition: all 0.3s ease;
}
#submitRating:hover {
background-color: #fff;
color: #000;
}
</style>

<div id="ratingModal" class="modal">
<div class="modal-content">
<span class="close">&times;</span>
<div id="modalMessage" style="display: none; font-size: 1em; margin-bottom: 10px;"></div>
<h2 style="margin-bottom:15px;">Rate DataTransfer</h2>

<div class="emoji-rating" style="direction: rtl; unicode-bidi: bidi-override; margin-top: 12px;">
<input type="radio" id="rate5" name="rating" value="5"><label for="rate5">😄</label>
<input type="radio" id="rate4" name="rating" value="4"><label for="rate4">🙂</label>
<input type="radio" id="rate3" name="rating" value="3"><label for="rate3">😐</label>
<input type="radio" id="rate2" name="rating" value="2"><label for="rate2">🙁</label>
<input type="radio" id="rate1" name="rating" value="1"><label for="rate1">😠</label>
</div>

<textarea id="comment" name="comment" maxlength="300" placeholder="What should we improve? (max 300 characters)"></textarea>
<br>
<button id="submitRating" type="button">Submit Rating</button>
</div>
</div>

<script>
var modal = document.getElementById("ratingModal");
var openBtn = document.getElementById("openPopup");
var closeBtn = document.getElementsByClassName("close")[0];
var modalMessageEl = document.getElementById("modalMessage");

function showModalMessage(text, isError) {
modalMessageEl.textContent = text;
modalMessageEl.style.color = isError ? "red" : "lightgreen";
modalMessageEl.style.display = "block";
}

openBtn.onclick = function() {
modal.classList.add("active");
modalMessageEl.style.display = "none";
modalMessageEl.textContent = "";
};

closeBtn.onclick = function() {
modal.classList.remove("active");
};

window.onclick = function(event) {
if (event.target == modal) {
modal.classList.remove("active");
}
};

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) {
if (xhr.status === 200) {
if (xhr.responseText.indexOf("Error:") !== -1) {
showModalMessage(xhr.responseText, true);
} else {
showModalMessage("Rating submitted successfully!", false);
}
updateAverageRating();
loadComments();
} else {
showModalMessage("Error submitting rating.", true);
}
}
};
xhr.send("rating=" + encodeURIComponent(ratingValue) + "&comment=" + encodeURIComponent(comment));
});

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);
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();
}
updateAverageRating();
setInterval(updateAverageRating, 35000);

function loadComments() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "rating/hodnoceni/hodnoceni_fetch_comments.php", true);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
try {
var data = JSON.parse(xhr.responseText);
var list = document.getElementById("ratingsList");
list.innerHTML = "";
if (data.comments && data.comments.length > 0) {
data.comments.forEach(function(item) {
var emoji;
if (item.rating < 1.5) emoji = "😠";
else if (item.rating < 2.5) emoji = "🙁";
else if (item.rating < 3.5) emoji = "😐";
else if (item.rating < 4.5) emoji = "🙂";
else emoji = "😄";
var div = document.createElement("div");
div.className = "rating-item";
div.style.marginBottom = "8px";
div.innerHTML = "<div class='rating-line'><span style='color:#fff; font-weight:bold;'>"
+ item.rating + "</span> " + emoji
+ (item.comment ? " <span class='rating-comment'>"
+ item.comment + "</span>" : "") + "</div>";

list.appendChild(div);
});
} else {
list.innerHTML = "<p>No reviews yet.</p>";
}
} catch(e) { console.error("Parsing error:", e, xhr.responseText); }
}
};
xhr.send();
}
loadComments();
setInterval(loadComments, 30000);
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "DataTransfer",
"operatingSystem": "Web",
"applicationCategory": "WebApplication",
"url": "https://www.datatransfer.com",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.94,
"bestRating": "5",
"ratingCount": 329
}
}</script>

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

<!-- Zabrani dvojimu odeslani hodnoceni do DB -->
<script>
(function(){
if (window.__submitRatingBound) return; // navázat jen jednou
window.__submitRatingBound = true;

document.addEventListener('click', async function(e){
const btn = e.target.closest('#submitRating');
if (!btn) return;

const form = btn.closest('form'); // najde obalující formulář
if (!form || btn.disabled) return;

btn.disabled = true; // pojistka proti dvojkliku
try {
await fetch('/rating/hodnoceni/hodnoceni_submit_rating.php', {
method: 'POST',
body: new FormData(form),
headers: {'X-Bypass-Cache':'1'}
});
// případně: const data = await res.json(); form.reset(); atd.
} catch (err) {
console.warn('Submit failed', err);
} finally {
setTimeout(()=>btn.disabled=false, 1500);
}
}, true);
})();
</script>

<!-- Zabrani dvojimu odeslani hodnoceni do DB 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-send.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 = 10;
var maxConcurrentUploads = 5;
var maxRecipients = 10;
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>



<!-- 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.