- ID de exploración:
- 7b833bc6-7997-4613-927f-d54b93a63d2dFinalizado
- URL enviada:
- https://www.cpdtag.com/
- Informe finalizado:
Enlaces: 2 encontrados
Los enlaces salientes identificados en la página
Enlace | TEXTO |
---|---|
https://linkedin.com/in/nashderek | Derek Nash |
https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/international-transfers-after-uk-exit/ | ICO.org.uk International Transfers After UK Exit |
Variables JavaScript: 105 encontradas
Las variables JavaScript globales cargadas en el objeto de ventana de una página son variables declaradas fuera de las funciones y a las que se puede acceder desde cualquier lugar del código en el ámbito actual
Nombre | Tipo |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
getsysuid | function |
getCookie | function |
loginToken | string |
sysuid | undefined |
xhr | undefined |
flavID | number |
systemData | string |
Mensajes de registro de la consola: 6 encontrados
Mensajes registrados en la consola web
Tipo | Categoría | Registrar |
---|---|---|
warning | dom |
|
warning | dom |
|
verbose | dom |
|
verbose | dom |
|
verbose | dom |
|
error | network |
|
HTML
El cuerpo HTML sin procesar de la página
<!DOCTYPE html><html lang="en"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="CPD Tag">
<meta name="author" content="Derek Nash">
<meta property="og:title" content="CPD Tag - Making CPD Records Simple">
<meta name="image" property="og:image" content="https://cpdtag.com/img/CPDTagSocial.png">
<meta property="og:description" content="CPDTag is a system to automate building your Continuing Professional Development Record by scanning a QR code at CPD Events.">
<meta property="og:type" content="website">
<meta property="og:locale" content="en_GB">
<meta name="publish_date" property="og:publish_date" content="2022-06-25T00:00:00-0600">
<title>CPD Tag Login</title>
<script>
function getsysuid() {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var txt = 'i9asdm..$#po((^@KbXrww!~cz';
ctx.textBaseline = "top";
//ctx.font = "16px 'Arial'";
ctx.textBaseline = "alphabetic";
ctx.rotate(.05);
ctx.fillStyle = "#f60";
ctx.fillRect(125,1,62,20);
ctx.fillStyle = "#069";
ctx.fillText(txt, 2, 15);
ctx.fillStyle = "rgba(102, 200, 0, 0.7)";
ctx.fillText(txt, 4, 17);
ctx.shadowBlur=10;
ctx.shadowColor="blue";
ctx.fillRect(-20,10,234,5);
var strng=canvas.toDataURL();
var hash=0;
if (strng.length==0) return 'nothing!';
for (i = 0; i < strng.length; i++) {
char = strng.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash;
}
return hash;
}function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
var loginToken = getCookie("eUaT58l1v2uI8vRu6VIZaJV0N6akHx9kmr9RyGoI");
if(loginToken != "")
{
var sysuid = getsysuid();
//console.log("sysuid = " + sysuid);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'php/login.php');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('x-requested-with', 'XMLHttpRequest');
xhr.onload = function()
{
if (xhr.status === 200)
{
var data = JSON.parse(xhr.responseText);
if(data.response == "success")
{
window.location.replace("app.php");
}
}
};
xhr.send(encodeURI('token=' + loginToken + '&sysuid=' + sysuid));
}
var flavID = 0;
var systemData = "";
</script>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/alertAnims.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="css/mdb.css">
<link href="css/style.css" rel="stylesheet">
<link href="css/promo.css" rel="stylesheet">
<style>
html,
body,
header,
.view {
height: 100%;
}
@media (min-width: 560px) and (max-width: 740px) {
html,
body,
header,
.view {
height: 650px;
}
}
@media (min-width: 800px) and (max-width: 850px) {
html,
body,
header,
.view {
height: 650px;
}
}
</style>
<style type="text/css">/* Chart.js */
@-webkit-keyframes chartjs-render-animation{from{opacity:0.99}to{opacity:1}}@keyframes chartjs-render-animation{from{opacity:0.99}to{opacity:1}}.chartjs-render-monitor{-webkit-animation:chartjs-render-animation 0.001s;animation:chartjs-render-animation 0.001s;}</style></head><body class="login-page"><div class="modal fade" id="unconfirmedModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Unconfirmed Email
</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×
</span>
</button>
</div>
<div class="modal-body" id="resendModalText">
<p>
You have not yet confirmed your email address. Please do this before logging in. If you don't have the email, you can resend by clicking the button below. Please check your spam folder if you haven't received the email.
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn primary-button text-white waves-effect waves-light" data-dismiss="modal">Close
<img src="img/icons/dark/times-square.svg" class="svg modal-button-icon" style="display:inline;">
</button>
<button id="resendLinkButton" type="button" class="btn primary-button text-white waves-effect waves-light" onclick="resendLink();">
<span id="resendLinkButtonLoad">
</span> Resend
<img src="img/icons/dark/envelope.svg" class="svg modal-button-icon" style="display:inline;">
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="servMessageModal" tabindex="-1" role="dialog" aria-labelledby="serverMessageHeading" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="serverMessageHeading"></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×
</span>
</button>
</div>
<div class="modal-body" id="serverMessageText">
<p>
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn primary-button text-white waves-effect waves-light" data-dismiss="modal">Close
<img src="img/icons/dark/times-square.svg" class="svg modal-button-icon" style="display:inline;">
</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="nonMemOptsModal" tabindex="-1" role="dialog" aria-labelledby="nonMemOptsHeading" aria-hidden="true">
<div class="modal-dialog cascading-modal" role="document">
<div class="modal-content">
<div class="modal-header darken-3 back-dark white-text">
<span class="table-heading-text" style="font-size:20px; vertical-align: middle;">
<img id="logInCodeModalHeadingIcon" src="img/icons/dark/users-class.svg" class="svg tab-h-icon mono-icon" style="display:inline;">
<span id="logInCodeModalHeadingText" class="unselectable unhittable">
<span id="logInCodeModalPreLabelText">
</span> Event Options
</span>
</span>
<button type="button" class="close waves-effect waves-light" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×
</span>
</button>
</div>
<div class="modal-body" id="nonMemOptsText">
<div class="text-center" style="font-family:'Museo-700'; font-size:20px;color:#000; margin-bottom:10px;">
What would you like to do?
</div>
<div style="padding-top:10px; padding-bottom:10px; background-color:#fff; border:1px solid #aaa; border-radius:10px; margin-bottom:10px;" class="text-center">
<div class="text-center" style="font-family:'Museo-700'; font-size:16px;color:#333; margin-bottom:5px;">
Add To CPD My Record:
</div>
<div class="text-center">
<button class="btn waves-effect z-depth-0 table-toolbar-button btn-rounded round-button" id="pubOptsLogInButton">
<span class="round-button-contents">
<img class="round-button-icon" src="img/icons/light/shield-check.svg">
<span class="round-button-text">Log-In
</span>
</span>
</button>
<button class="btn waves-effect z-depth-0 table-toolbar-button btn-rounded round-button" id="pubOptsRegisterButton">
<span class="round-button-contents">
<img class="round-button-icon" src="img/icons/light/file-signature.svg">
<span class="round-button-text">Register
</span>
</span>
</button>
</div>
</div>
<div style="padding:5px; margin-top:10px; background-color:#fff; border:1px solid #aaa; border-radius:10px; margin-bottom:10px;">
<div class="text-center" style="font-family:'Museo-700'; font-size:16px;color:#333; margin-bottom:0px;">
Get CPD Certificate:
</div>
<div class="md-form">
<i class="prefix">
<img src="img/icons/light/user.svg" class="svg form-icon" style="display:inline;">
</i>
<input type="text" id="cpdCertName" name="cpdCertName" class="form-control">
<label class="unselectable unhittable" style="width:100%" for="cpdCertName">Enter Your Name
</label>
</div>
<div class="text-center">
<button class="btn waves-effect z-depth-0 table-toolbar-button btn-rounded round-button" id="pubOptsCPDCertButton">
<span class="round-button-contents">
<img class="round-button-icon" src="img/icons/light/file-certificate.svg">
<span class="round-button-text">Download
</span>
</span>
</button>
</div>
</div>
<div class="text-center">
<button class="btn waves-effect z-depth-0 table-toolbar-button btn-rounded round-button" id="pubOptsShowEventButton">
<span class="round-button-contents">
<img class="round-button-icon" src="img/icons/light/users-class.svg">
<span class="round-button-text">Show Event Details
</span>
</span>
</button>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn primary-button text-white waves-effect waves-light" data-dismiss="modal">Close
<img src="img/icons/dark/times-square.svg" class="svg modal-button-icon" style="display:inline;">
</button>
</div>
</div>
</div>
</div>
<link rel="icon" href="img/Icon.svg" sizes="any" type="image/svg+xml">
<link href="css/manjari.css" rel="stylesheet">
<link href="css/raleway.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="js/plugins/jquery-realperson/jquery.realperson.css">
<div class="container" style="margin-top:20px;">
<div class="row">
<div class="col-sm-12 text-center">
<img src="img/Logo.svg" class="img-fluid" style="width:100%; max-width:300px; margin-bottom:30px;">
</div>
</div>
<div class="row align-items-center">
<div class="col-sm-12 col-md-6 col-lg-5">
<div style="max-width:500px; margin-top:50px; margin-left:auto;">
<ul class="nav md-tabs nav-justified cyan form-header">
<li class="nav-item waves-effect waves-light">
<a class="nav-link active" data-toggle="tab" href="#login-tab" role="tab" id="login-tab-nav">
<img src="img/icons/dark/shield-check.svg" class="svg modal-icon" style="display:inline;"> Log-In
</a>
</li>
<li class="nav-item waves-effect waves-light">
<a class="nav-link" data-toggle="tab" href="#register-tab" role="tab" id="register-tab-nav">
<img src="img/icons/dark/file-signature.svg" class="svg modal-icon" style="display:inline;"> Register
</a>
</li>
</ul>
<div class="tab-content card">
<div class="tab-pane fade in show active" id="login-tab" role="tabpanel" aria-labelledby="login-tab">
<form id="logInForm" class="" method="post" action="php/login.php">
<input id="logInDataID" name="logInDataID" type="hidden" value="">
<input id="FormIdentifier" name="FormIdentifier" type="hidden" value="logIn">
<div id="logInFormHeaderContent">
</div>
<div id="logInFormMainContent">
<div class="md-form" id="inputContainDivlogInFormEmail">
<i class="prefix">
<img id="logInFormEmailLabelIcon" src="img/icons/light/envelope.svg" class="svg form-icon" style="display:inline;">
</i>
<input type="email" id="logInFormEmail" name="logInFormEmail" class="form-control validate" required="" oninput="clearEmailErrors();">
<label id="logInFormEmailLabel" class="unselectable unhittable" style="width:100%" for="logInFormEmail" data-error="Please check email" data-success="">Please Enter Your Email
</label>
<div id="logInFormEmailFeedback">
</div>
</div>
<div class="md-form" id="inputContainDivlogInFormPassword">
<i class="prefix">
<img id="logInFormPasswordLabelIcon" src="img/icons/light/lock-alt.svg" class="svg form-icon" style="display:inline;">
</i>
<input type="password" id="logInFormPassword" name="logInFormPassword" class="form-control validate" required="" oninput="clearPasswordErrors();">
<label id="logInFormPasswordLabel" class="unselectable unhittable" style="width:100%" for="logInFormPassword" data-error="Please check password" data-success="">Please Enter Your Password
</label>
<div id="logInFormPasswordFeedback">
</div>
</div>
<input type="hidden" id="logInFormSysuid" name="logInFormSysuid" value="1968294527">
<fieldset id="logInFormStayLoggedInWrapDiv" name="logInFormStayLoggedInWrapDiv" class="form-check mt-4" style="margin-left:25px;">
<input class="form-check-input filled-in primary-colors" type="checkbox" id="logInFormStayLoggedIn" name="logInFormStayLoggedIn">
<label class="form-check-label" for="logInFormStayLoggedIn" style="font-size:16px;color:#888;">Remember Me
</label>
</fieldset>
</div>
<div id="logInFormSubmittingContent" style="display:none;">
<div class="text-center">
<div class="lds-ellipsis">
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
</div>
<h6 class="modal-feedback-text">Submitting. Please wait...
</h6>
</div>
</div>
<div id="logInFormSuccessContent" style="display: none;">
</div>
<div id="logInFormErrorContent" style="display: none;">
</div>
<div id="logInFormSubmitContent">
<div id="" class="text-center">
<button id="" type="submit" class="btn btn primary-button text-white waves-effect waves-light">Log In
<img src="img/icons/dark/shield-check.svg" class="svg modal-button-icon" style="display:inline;">
</button>
</div>
<div class="inline-ul text-center d-flex justify-content-center">
<p>Forgotten Password?
<a href="forgotpassword.php">Reset
</a>
</p>
</div>
</div>
<div id="logInFormCloseContent" style="display: none;">
</div>
<div id="logInFormFooterContent">
</div>
</form>
</div>
<div class="tab-pane fade in show" id="register-tab" role="tabpanel" aria-labelledby="register-tab">
<form id="registerForm" class="" method="post" action="php/registration.php" onchange="checkRegFormValidity();">
<input id="registerDataID" name="registerDataID" type="hidden" value="">
<input id="FormIdentifier" name="FormIdentifier" type="hidden" value="register">
<div id="registerFormHeaderContent">
</div>
<div id="registerFormMainContent">
<div class="md-form" id="inputContainDivregisterFormName">
<i class="prefix">
<img id="registerFormNameLabelIcon" src="img/icons/light/user.svg" class="svg form-icon" style="display:inline;">
</i>
<input type="text" id="registerFormName" name="registerFormName" class="form-control validate" required="">
<label id="registerFormNameLabel" class="unselectable unhittable" style="width:100%" for="registerFormName" data-error="Please enter a name" data-success="">Please Enter Your Name
</label>
<div id="registerFormNameFeedback">
</div>
</div>
<div class="md-form" id="inputContainDivregisterFormEmail">
<i class="prefix">
<img id="registerFormEmailLabelIcon" src="img/icons/light/envelope.svg" class="svg form-icon" style="display:inline;">
</i>
<input type="email" id="registerFormEmail" name="registerFormEmail" class="form-control validate" required="" oninput="clearRegEmailErrors();">
<label id="registerFormEmailLabel" class="unselectable unhittable" style="width:100%" for="registerFormEmail" data-error="Please check email" data-success="">Please Enter Your Email
</label>
<div id="registerFormEmailFeedback">
</div>
</div>
<div class="md-form" id="inputContainDivregisterFormPassword">
<i class="prefix">
<img id="registerFormPasswordLabelIcon" src="img/icons/light/lock-alt.svg" class="svg form-icon" style="display:inline;">
</i>
<input type="password" id="registerFormPassword" name="registerFormPassword" class="form-control validate" required="">
<label id="registerFormPasswordLabel" class="unselectable unhittable" style="width:100%" for="registerFormPassword" data-error="Must have 8 characters, and 1 uppercase, 1 lowercase, 1 number and 1 special character (!@#$%^&*)" data-success="">Please Enter a Password
</label>
<div id="registerFormPasswordFeedback">
</div>
</div>
<div class="md-form" id="inputContainDivregisterFormPasswordCheck">
<i class="prefix">
<img id="registerFormPasswordCheckLabelIcon" src="img/icons/light/lock-alt.svg" class="svg form-icon" style="display:inline;">
</i>
<input type="password" id="registerFormPasswordCheck" name="registerFormPasswordCheck" class="form-control validate" required="">
<label id="registerFormPasswordCheckLabel" class="unselectable unhittable" style="width:100%" for="registerFormPasswordCheck" data-error="Password's don't match - please check" data-success="">Please Confirm Your Password
</label>
<div id="registerFormPasswordCheckFeedback">
</div>
</div>
<fieldset class="form-check mt-4" style="margin-bottom:20px; margin-left:-18px;">
<input class="form-check-input filled-in" type="checkbox" id="registerFormTAC" name="registerFormTAC" required="required">
<label class="form-check-label" for="registerFormTAC">
<span style="font-size:16px;">I have read, understood and consent to the
<a href="#termsModal" data-toggle="modal" data-target="#termsModal">Terms and Conditions
</a>
</span>
</label>
</fieldset>
<div class="md-form">
<div class="realperson-challenge"><div class="realperson-text"> ***** ******* ****** ****** ***** * * <br>* * * * * * * * * * * <br>* * * * * * * * * <br>* **** ****** ****** ***** * * <br>* *** * * * * * * * <br>* * * * * * * * * * <br> ***** * ****** * ***** ***** <br></div><div class="realperson-regen">Click to change</div></div><input type="text" style="margin-bottom: 0px !important;" id="registerFormRP" name="registerFormRP" class="form-control validate is-realperson" placeholder="Please Enter Code" required="required" oninput="clearRegRPErrors();">
<label id="registerFormRPLabel" class="unselectable active" style="width:100%" for="registerFormRP" data-error="" data-success="">
</label>
<div id="registerFormRPFeedback" style="display:none; left: 41px; top: 41px;">
<span id="registerFormRPFeedbackText" style="color:#f44336; font-size:16px;">
</span>
</div>
</div>
<input type="hidden" id="registerFormRPHashVal" name="registerFormRPHashVal" value="">
<fieldset id="registerFormStayLoggedInWrapDiv" name="registerFormStayLoggedInWrapDiv" class="form-check mt-4" style="margin-left:25px;">
<input class="form-check-input filled-in primary-colors" type="checkbox" id="registerFormStayLoggedIn" name="registerFormStayLoggedIn">
<label class="form-check-label" for="registerFormStayLoggedIn" style="font-size:16px;color:#888;">Remember Me
</label>
</fieldset>
<input type="hidden" id="registerFormSysuid" name="registerFormSysuid" value="1968294527">
</div>
<div id="registerFormSubmittingContent" style="display:none;">
<div class="text-center">
<div class="lds-ellipsis">
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
</div>
<h6 class="modal-feedback-text">Submitting. Please wait...
</h6>
</div>
</div>
<div id="registerFormSuccessContent" style="display: none;">
<div id="registerFormSuccessMessage">
</div>
</div>
<div id="registerFormErrorContent" style="display: none;">
</div>
<div id="registerFormSubmitContent">
<div id="" class="text-center">
<button id="" type="submit" class="btn btn primary-button text-white waves-effect waves-light">Register
<img src="img/icons/dark/handshake.svg" class="svg modal-button-icon" style="display:inline;">
</button>
</div>
</div>
<div id="registerFormCloseContent" style="display: none;">
</div>
<div id="registerFormFooterContent">
</div>
</form>
</div>
<hr class="mt-4">
<div class="inline-ul text-center d-flex justify-content-center">
<p>By using CPD Tag you agree to our
<a href="#termsModal" data-toggle="modal" data-target="#termsModal">Terms and Conditions
</a>
</p>
</div>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6 col-lg-7">
<div style="font-size:44px; font-family:'ManjariThin'; color:#000;">Making
<span style="font-family:'MuseoSans-500';">CPD Records
</span> Simple
</div>
<div style="font-size:18px; font-family:'ManjariThin'; color:#000;">CPDTag is a system to automate building your
<span style="font-family:'MuseoSans-500';">Continuing Professional Development
</span> Record by scanning a QR code at CPD Events.
</div>
<div style="padding-top:20px; padding-bottom:20px;">
<img src="img/promo/promo1 opt.svg" class="img-fluid" style="width:100%;">
</div>
<div>
<button class="btn waves-effect z-depth-0 table-toolbar-button btn-rounded round-button" id="launchDemoButton">
<span class="round-button-contents">
<img class="round-button-icon" src="img/icons/light/browser.svg">
<span class="round-button-text">Launch Live Demo
</span>
</span>
</button>
</div>
</div>
</div>
<div class="row" style="margin-bottom:10px;">
<div class="col-sm-6 col-md-6 col-lg-3">
<div class="card promo-page-card">
<img class="card-img-top" src="img/promo/promo2 opt.svg" alt="Card image cap">
<div class="card-body text-center">
<div class="promo-page-step">1
</div>
<p class="promo-page-card-text">Scan Event or Resource CPD Tags with your Smartphone
</p>
</div>
</div>
</div>
<div class="col-sm-6 col-md-6 col-lg-3">
<div class="card promo-page-card">
<img class="card-img-top" src="img/promo/promo3 opt.svg" alt="Card image cap">
<div class="card-body text-center">
<div class="promo-page-step">2
</div>
<p class="promo-page-card-text">Automatically add these to your CPD Record.
</p>
</div>
</div>
</div>
<div class="col-sm-6 col-md-6 col-lg-3">
<div class="card promo-page-card">
<img class="card-img-top" src="img/promo/promo4 opt.svg" alt="Card image cap">
<div class="card-body text-center">
<div class="promo-page-step">3
</div>
<p class="promo-page-card-text">Attach these to your CPD Map goals.
</p>
</div>
</div>
</div>
<div class="col-sm-6 col-md-6 col-lg-3">
<div class="card promo-page-card">
<img class="card-img-top" src="img/promo/promo5 opt.svg" alt="Card image cap">
<div class="card-body text-center">
<div class="promo-page-step">4
</div>
<p class="promo-page-card-text">Get a PDF of your CPD Record with 1 click!
</p>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid" style="margin-top:30px; background-color:var(--primary); padding:20px;">
<div class="row" style="margin-bottom:10px;">
<div class="col text-center">
<div class="promo-page-items-head" style="color:#FFF;">
PART OF AN ORGANISATION?
</div>
<div class="promo-page-items-sub-head" style="color:#FFF;">
Whether you’re part of a small business or professional trade body, any organisation can benefit from registering on CPD Tag.
</div>
<div>
<a class="btn btn-white waves-effect z-depth-0" href="#organisations">
Find Out More
</a>
</div>
</div>
</div>
</div>
<div class="container" style="margin-top:20px;">
<div class="row" style="margin-bottom:10px;">
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="card promo-page-card promo-page-card-dark">
<div class="card-body">
<div class="promo-page-items-head">ALL THE TOOLS YOU NEED
</div>
<div class="promo-page-items-sub-head">As well as automatic event recording, CPD Tag has a suite of tools you can use to keep all your CPD progress in one place.
</div>
<hr>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/user.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">PROFESSIONAL PROFILE
</p>
<p class="promo-page-item-sub">Build your profile, including education, workplaces, accreditations, memberships, and voluntary roles.
</p>
</div>
</div>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/sitemap.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">CPD MAP
</p>
<p class="promo-page-item-sub">Structure your CPD by setting up Professional Areas, Skills and Goals (see below).
</p>
</div>
</div>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/briefcase.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">PORTFOLIO
</p>
<p class="promo-page-item-sub">Build a portfolio of your work, such as projects, papers, or initiatives you would like to record for future reference.
</p>
</div>
</div>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/table.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">CPD RECORD
</p>
<p class="promo-page-item-sub">Easy access to a table of all of your CPD Activities.
</p>
</div>
</div>
</div>
</div>
</div>
<div class="col-sm-12 col-md-12 col-lg-6">
<div class="card promo-page-card promo-page-card-dark">
<div class="card-body">
<div class="promo-page-items-head">RECORD ALL YOUR CPD ACTIVITIES
</div>
<div class="promo-page-items-sub-head">Being web-based, you can add any of the four activity types to your CPD record from anywhere anytime.
</div>
<hr>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/users-class.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">EVENT ATTENDANCE
</p>
<p class="promo-page-item-sub">CPD Sessions, meetings, conferences etc.
</p>
</div>
</div>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/book-reader.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">INFORMAL LEARNING
</p>
<p class="promo-page-item-sub">Literature review, reading journals etc.
</p>
</div>
</div>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/file-certificate.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">EDUCATION & TRAINING
</p>
<p class="promo-page-item-sub">Courses, formal training sessions etc.
</p>
</div>
</div>
<div class="row no-gutters align-items-center promo-page-list-item">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/dark/chalkboard-teacher.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-item-lead">CPD DELIVERY
</p>
<p class="promo-page-item-sub">Any CPD Sessions you have delivered.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row" style="margin-bottom:10px;">
<div class="col-sm-12">
<div class="card promo-page-card">
<div class="card-body">
<div class="row no-gutters align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/light/sitemap.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">CPD MAP
</p>
<p class="promo-page-large-item-sub">Build your CPD Map to track where you are and where you're going!
</p>
</div>
</div>
<hr>
<div class="row no-gutters">
<div class="col-auto">
<img style="width:90%; max-width:300px; padding:10px;" src="img/promo/promo6 opt.svg">
</div>
<div class="col">
<p class="promo-page-large-item-para">If you want to get the most out of CPD Tag, you can set up your own CPD Map. You start by setting up the areas of your professional life you want to develop. These might relate to a technical aspect of your job, the management of your team, or administration of your company.
</p>
<p class="promo-page-large-item-para">The next step is to identify the skills or abilities you think you need to develop to support the professional area. In a technical area these might relate to obtaining a high degree of proficiency in a certain type of technical work. A more management-base skill might relate to learning understanding legal obligations, or developing interpersonal skills.
</p>
<p class="promo-page-large-item-para">The last step is to set measurable goals which will develop the skills they relate to. These might be achieving accreditations or qualifications, or some other way to validate that a skill is developing as you would hope.
</p>
<p class="promo-page-large-item-para">Have a look at the live demo to see an example CPD Map!
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row align-items-center text-center" style="margin-top:30px; margin-bottom:30px;" id="organisations" name="organisations">
<div class="col">
</div>
<div class="col-auto">
<img style="width:80px; margin:auto;" src="img/icons/light/university.svg">
</div>
<div class="col-auto">
<span style="font-size:2.5em; font-family:'ManjariThin';">ORGANISATIONS
</span>
</div>
<div class="col">
</div>
</div>
<div class="row">
<div class="col">
<p class="promo-page-large-item-para">Whether you’re part of a small business or professional trade body, any organisation can benefit from registering on CPD Tag.
</p>
<hr>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/black/sync.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">Keep your members up to date with upcoming CPD activities and the latest resources
</p>
<p class="promo-page-large-item-sub">Create CPD events and build up a library of CPD resources for your members. Your members can then see what events are coming up, pledge attendance to your events, and scan these straight into their CPD records.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/black/cogs.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">Streamline your Processes
</p>
<p class="promo-page-large-item-sub">CPD Tag will automatically create CPD certificates for attendees that want them, so you won’t have to do anything after the event. Even attendees that aren’t using CPD tag can directly download CPD certificates at the event by scanning the QR code with any scanning app.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/black/chart-pie.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">Helpful Attendance Data
</p>
<p class="promo-page-large-item-sub">Create different types of attendee, such as ‘in-person’ and ‘online’ to get a breakdown of the different types – both pledged and validated attendees. You can also receive feedback directly from attendees to help guide future events.
</p>
</div>
</div>
<div class="row align-items-center text-center" style="margin-top:30px; margin-bottom:30px;" id="organisations" name="organisations">
<div class="col">
</div>
<div class="col-auto">
<img style="width:80px; margin:auto;" src="img/icons/light/question-circle.svg">
</div>
<div class="col-auto">
<span style="font-size:2.5em; font-family:'ManjariThin';">FREQUENTLY ASKED QUESTIONS
</span>
</div>
<div class="col">
</div>
</div>
<div class="row">
<div class="col">
<p class="promo-page-large-item-para">You'll find the answers to some frequently asked questions below. If you have any other questions feel free to email us at
<a href="mailto:[email protected]">[email protected]
</a>.
</p>
<hr>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/light/question-square.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">Do you have to pay to use CPD Tag?
</p>
<p class="promo-page-large-item-sub">No. CPD Tag is completely free for individuals and organisations. The intention is that it will always be free to use, and free from any advertising. We may implement a way to make donations later if needed, however these would always be made on an entirely voluntary basis.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/light/question-square.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">Will data be shared with anyone?
</p>
<p class="promo-page-large-item-sub">No information you add to your CPD Tag account will ever be shared with any third parties, except for the purpose of running the platform - for example, the server hosting the site is owned by a company (currently GoDaddy) we pay to host it. Information is shared with them by necessity, but would never be shared with anyone else for any other purpose. In addition, CPD Tag will only ever record information you explicitly add to your account for the purposes of tracking your CPD. No other information will ever be recorded other than the information you can see in your account. If you close your account all information realted to you will be permanently removed from the server.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/light/question-square.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">Does CPD Tag Comply with the UK GDPR?
</p>
<p class="promo-page-large-item-sub">Yes, CPD Tag is fully compliant with the UK General Data Protection Regulations. Have a look at our
<a href="#gdpr-complianceModal" data-toggle="modal" data-target="#gdpr-complianceModal">GDPR Compliance Statement
</a> for more information, and feel free contact us at
<a href="mailto:[email protected]">[email protected]
</a> if you have any questions or concerns.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/light/question-square.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">To What Extent can I Use CPD Tag
</p>
<p class="promo-page-large-item-sub">You can use CPD Tag to whatever extent you require. For example, you could purely use it as an easy means of tabulating the CPD events you have attended. Or you could use all of the tools available to build a full CPD Map with professional areas, skills and goals, along with your professional profile and a portfolio of your projects. It's totally up to you.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/light/question-square.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">What if there is no CPD Tag for an event
</p>
<p class="promo-page-large-item-sub">You can manually add a new CPD activity to your record at any time. You just create a new 'event attendance' activity and add the details. You could also ask the host organisation to register on CPD Tag to make it easier in future for their attendees to add their events to their CPD records.
</p>
</div>
</div>
<div class="row align-items-center">
<div class="col-auto">
<img class="promo-page-item-icon" src="img/icons/light/question-square.svg">
</div>
<div class="col" style="padding-left:10px;">
<p class="promo-page-items-head">How do I register a new organisation
</p>
<p class="promo-page-large-item-sub">Once you have registered your own user account using the register form above, you can register a new organisation in the Admin Area. In the Admin -> Organisations section there is a button marked 'Register a New Organisation'. This will open the form to create a new organisation. There is also loads of help documentation in the system, so you should find all the help you need there. You can have a play with the Live Demo by clicking the 'Launch Live Demo' further up the page.
</p>
</div>
</div>
</div>
<div class="">
<footer class="page-footer pt-4 text-md-left" style="background-color:#222;" id="infoPageTFooter">
<div class="container">
<div class="row">
<div class="col-md-6">
<img src="img/cpdtagqrdarkopt.svg" class="img-fluid wow fadeIn animated" style="margin-bottom: 20px; margin-right: 20px; visibility: visible; animation-name: fadeIn;">
</div>
<div class="col-md-6">
<div style="color:rgba(255, 255, 255, .7);">
<p class="promo-page-item-sub">CPD Tag is developed and maintained by Derek Nash.
</p>
<p class="promo-page-item-sub">All system and promotional content © 2022 Copyright: Derek Nash. View our
<a href="#copyrightModal" data-toggle="modal" data-target="#copyrightModal">Copyright Notice
</a>.
</p>
<p class="promo-page-item-sub">By Using CPD Tag you will need to read, understand and agree to our
<a href="#termsModal" data-toggle="modal" data-target="#termsModal">Terms and Conditions
</a>.
</p>
<p class="promo-page-item-sub">For information specific to the UK GDPR, have a look at our
<a href="#gdpr-complianceModal" data-toggle="modal" data-target="#gdpr-complianceModal">GDPR Compliance Statement
</a>.
</p>
</div>
</div>
</div>
</div>
<div class="footer-copyright py-3 text-center">
<div class="container-fluid">
© 2022 Copyright:
<a href="https://linkedin.com/in/nashderek"> Derek Nash
</a>
</div>
</div>
</footer>
<div class="modal fade" id="termsModal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
<div class="modal-dialog cascading-modal modal-xl" role="document">
<div class="modal-content">
<div class="modal-header darken-3 white-text back-dark">
<span class="table-heading-text" style="font-size:20px; vertical-align: middle;">
<img src="img/icons/dark/file-signature.svg" class="svg tab-h-icon mono-icon" style="display:inline;">
<span id="termsModalHeadingText" class="unselectable unhittable">
<span id="termsModalPreLabelText">
</span> Terms & Conditions
</span>
</span>
<button type="button" class="close waves-effect waves-light" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×
</span>
</button>
</div>
<div id="termsModalBodyContentDiv" class="modal-body mb-0" style="height: 80vh; overflow-y: auto;">
<p style="font-size:15px; color:#000; margin-left:50px; text-align: justify;">Please read these Terms and Conditions carefully. All contracts that the Provider enters into for the provision of the Hosted Services and related services shall be governed by these Terms and Conditions, and the Provider will require the User's express acceptance of these Terms and Conditions before providing any such services to the User.
</p>
<table class="table table-borderless legal-table">
<tbody><tr class="legal-heading">
<td class="legal-doc-numbering">1
</td>
<td class="legal-doc-content">Definitions
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.1
</td>
<td class="legal-doc-content">In these Terms and Conditions:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Access Credentials"
</strong> means the email addresses, passwords and other credentials enabling access to the Hosted Services;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Agreement"
</strong> means a contract made under these Terms and Conditions between the Provider and the User;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Data Protection Laws"
</strong> means all applicable laws relating to the processing of Personal Data including, while they are in force and applicable, the United Kingdom's Data Protection Act 2018 and the General Data Protection Regulation (Regulation (EU) 2016/679);
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Documentation"
</strong> means the documentation for the Hosted Services produced by the Provider and delivered or made available by the Provider to the User;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Force Majeure Event"
</strong> means an event, or a series of related events, that is outside the reasonable control of the party affected (including failures of the internet or any public telecommunications network, hacker attacks, denial of service attacks, virus or other malicious software attacks or infections, power failures, industrial disputes affecting any third party, changes to the law, disasters, explosions, fires, floods, riots, terrorist attacks and wars;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Hosted Services"
</strong> means the CPD Tag service, which will be made available by the Provider to each User as a service via the internet in accordance with these Terms and Conditions;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Intellectual Property Rights"
</strong> means all intellectual property rights wherever in the world, whether registrable or unregistrable, registered or unregistered, including any application or right of application for such rights (and these "intellectual property rights" include copyright and related rights, patents, database rights, confidential information, trade secrets, know-how, business names, trade names, trademarks, service marks, passing off rights, unfair competition rights, patents, petty patents, utility models, semi-conductor topography rights and rights in designs);
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Personal Data"
</strong> has the meaning given to it in the Data Protection Laws applicable in the United Kingdom – i.e. information that relates to an identified or identifiable individual;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Platform"
</strong> means the CPD Tag platform managed by the Provider and used by the Provider to provide the Hosted Services, including the application and database software for the Hosted Services, the system and server software used to provide the Hosted Services, and the computer hardware on which that application, database, system and server software is installed;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Provider"
</strong> means CPD Tag;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Registration Form"
</strong> means an online registration form published by the Provider and completed and submitted by the User incorporating these Terms and Conditions by reference;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Services"
</strong> means any services that the Provider provides to the User under these Terms and Conditions;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Supported Web Browser"
</strong> means the current release from time to time of Microsoft Edge, Mozilla Firefox, Google Chrome or Apple Safari, or any other web browser that the Provider agrees in writing shall be supported;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Term"
</strong> means the term of the Agreement, commencing in accordance with Clause 2.1 and ending in accordance with Clause 2.2;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"Terms and Conditions"
</strong> means all the documentation containing the provisions of the Agreement, namely the main body of these Terms and Conditions and Schedule 1 (Acceptable Use Policy), including any amendments to that documentation from time to time; and
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"User"
</strong> means the individual or organisation identified on the Registration Form;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"User Data"
</strong> means all data and materials uploaded to or stored on the Platform by the User; transmitted by the Platform at the instigation of the User; supplied by the User to the Provider for uploading to, transmission by or storage on the Platform; or generated by the Platform as a result of the use of the Hosted Services by the User but excluding analytics data relating to the use of the Platform and server log files;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<strong>"User Interface"
</strong> means the interface for the Hosted Services designed to allow individual human users to access and use the Hosted Services.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">2
</td>
<td class="legal-doc-content">Term
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.1
</td>
<td class="legal-doc-content">The Agreement shall come into force upon the Effective Date.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.2
</td>
<td class="legal-doc-content">The Agreement shall continue in force indefinitely, subject to termination in accordance with Clause 15 or any other provision of these Terms and Conditions.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.3
</td>
<td class="legal-doc-content">Unless the parties expressly agree otherwise in writing, each Registration Form shall create a distinct contract under these Terms and Conditions.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">3
</td>
<td class="legal-doc-content">Hosted Services
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.1
</td>
<td class="legal-doc-content">The Provider hereby grants to the User a non-exclusive license to use the Hosted Services by means of the User Interface for the purposes of assisting in managing the User's (or the User's members where the User is an organisation) Continued Professional Development.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.2
</td>
<td class="legal-doc-content">The license granted by the Provider to the User under Clause 3.1 is subject to the following limitations:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">the User Interface may only be used through a Supported Web Browser;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.3
</td>
<td class="legal-doc-content">Except to the extent expressly permitted in these Terms and Conditions or required by law on a non-excludable basis, the license granted by the Provider to the User under Clause 3.1 is subject to the following prohibitions:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">the User must not make or attempt to make any alteration to the Platform; and
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">the User must not conduct or request that any other person conduct any load testing or penetration testing on the Platform or Hosted Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.4
</td>
<td class="legal-doc-content">The User shall implement and maintain reasonable security measures relating to the Access Credentials to ensure that no unauthorized person or application may gain access to the Hosted Services by means of the Access Credentials.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.5
</td>
<td class="legal-doc-content">Provider shall use all reasonable endeavors to maintain the availability of the Hosted Services to the User at the gateway between the public internet and the network of the hosting services provider for the Hosted Services, but does not guarantee 100% availability.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.6
</td>
<td class="legal-doc-content">The User must comply with Schedule 1 (Acceptable Use Policy), and must ensure that all persons using the Hosted Services with the authority of the User or by means of the Access Credentials comply with Schedule 1 (Acceptable Use Policy).
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.7
</td>
<td class="legal-doc-content">The User must not use the Hosted Services in any way that causes, or may cause, damage to the Hosted Services or Platform or impairment of the availability or accessibility of the Hosted Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.8
</td>
<td class="legal-doc-content">The User must not use the Hosted Services in any way that uses excessive Platform resources and as a result is liable to cause a material degradation in the services provided by the Provider to its other Users using the Platform; and the User acknowledges that the Provider may use reasonable technical measures to limit the use of Platform resources by the User for the purpose of assuring services to its Users generally.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.9
</td>
<td class="legal-doc-content">The User must not use the Hosted Services:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">in any way that is unlawful, illegal, fraudulent or harmful; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">in connection with any unlawful, illegal, fraudulent or harmful purpose or activity.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.10
</td>
<td class="legal-doc-content">For the avoidance of doubt, the User has no right to access the software code (including object code, intermediate code and source code) of the Platform, either during or after the Term.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">4
</td>
<td class="legal-doc-content">User Data
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.1
</td>
<td class="legal-doc-content">The User hereby grants to the Provider a non-exclusive license to copy, reproduce, store, distribute, publish, export, adapt, edit and translate the User Data to the extent reasonably required for the performance of the Provider's obligations and the exercise of the Provider's rights under the Agreement. The User also grants to the Provider the right to sub-license these rights to its hosting, connectivity and telecommunications service providers, subject to any express restrictions elsewhere in the Agreement.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.2
</td>
<td class="legal-doc-content">The User warrants to the Provider that the User Data will not infringe the Intellectual Property Rights or other legal rights of any person, and will not breach the provisions of any law, statute or regulation, in any jurisdiction and under any applicable law.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">7
</td>
<td class="legal-doc-content">No assignment of Intellectual Property Rights
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.1
</td>
<td class="legal-doc-content">Nothing in these Terms and Conditions shall operate to assign or transfer any Intellectual Property Rights from the Provider to the User, or from the User to the Provider.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">10
</td>
<td class="legal-doc-content">Data protection
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.1
</td>
<td class="legal-doc-content">Each party shall comply with the Data Protection Laws with respect to the processing of the User Personal Data.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.2
</td>
<td class="legal-doc-content">The User warrants to the Provider that it has the legal right to disclose all Personal Data that it does in fact disclose to the Provider under or in connection with the Agreement.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.3
</td>
<td class="legal-doc-content">The Provider shall only process the User Personal Data during the Term, subject to the other provisions of this Clause 10.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.4
</td>
<td class="legal-doc-content">The Provider shall only process the User Personal Data on the documented instructions of the User (including with regard to transfers of the User Personal Data to any place outside the United Kingdom), as set out in these Terms and Conditions or any other document agreed by the parties in writing.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.5
</td>
<td class="legal-doc-content">The Provider shall promptly inform the User if, in the opinion of the Provider, an instruction of the User relating to the processing of the User Personal Data infringes the Data Protection Laws.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.6
</td>
<td class="legal-doc-content">Notwithstanding any other provision of the Agreement, the Provider may process the User Personal Data if and to the extent that the Provider is required to do so by applicable law. In such a case, the Provider shall inform the User of the legal requirement before processing, unless that law prohibits such information.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.7
</td>
<td class="legal-doc-content">The Provider shall ensure that persons authorized to process the User Personal Data have committed themselves to confidentiality or are under an appropriate statutory obligation of confidentiality.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.8
</td>
<td class="legal-doc-content">The Provider and the User shall each implement appropriate technical and organizational measures to ensure an appropriate level of security for the User Personal Data, including the measures specified in the Data Protection policy of the Provider (as it may be updated by the Provider from time to time).
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.9
</td>
<td class="legal-doc-content">The Provider must not engage any third party to process the User Personal Data without the prior specific or general written authorization of the User. In the case of a general written authorization, the Provider shall inform the User at least 14 days in advance of any intended changes concerning the addition or replacement of any third party processor, and if the User objects to any such changes before their implementation, then the User may terminate the Agreement on 7 days' written notice to the Provider, providing that such notice must be given within the period of 7 days following the date that the Provider informed the User of the intended changes. The Provider shall ensure that each third party processor is subject to the same legal obligations as those imposed on the Provider by this Clause 10.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.10
</td>
<td class="legal-doc-content">As at the Effective Date, the Provider is hereby authorized by the User to engage, as sub-processors with respect to User Personal Data, The Provider’s hosting, connectivity and telecommunications service providers.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.11
</td>
<td class="legal-doc-content">The Provider shall, insofar as possible and taking into account the nature of the processing, take appropriate technical and organizational measures to assist the User with the fulfilment of the User's obligation to respond to requests exercising a data subject's rights under the Data Protection Laws.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.12
</td>
<td class="legal-doc-content">The Provider shall assist the User in ensuring compliance with the obligations relating to the security of processing of personal data, the notification of personal data breaches to the supervisory authority, the communication of personal data breaches to the data subject, data protection impact assessments and prior consultation in relation to high-risk processing under the Data Protection Laws.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.13
</td>
<td class="legal-doc-content">The Provider must notify the User of any Personal Data breach affecting the User Personal Data without undue delay and, in any case, not later than 72 hours after the Provider becomes aware of the breach.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.14
</td>
<td class="legal-doc-content">The Provider shall make available to the User all information necessary to demonstrate the compliance of the Provider with its obligations under this Clause 10 and the Data Protection Laws.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.15
</td>
<td class="legal-doc-content">The Provider shall, at the choice of the User, delete or return all of the User Personal Data to the User after the provision of services relating to the processing, and shall delete existing copies save to the extent that applicable law requires storage of the relevant Personal Data.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.16
</td>
<td class="legal-doc-content">The Provider shall allow for and contribute to audits, including inspections, conducted by the User or another auditor mandated by the User in respect of the compliance of the Provider's processing of User Personal Data with the Data Protection Laws and this Clause 10.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.17
</td>
<td class="legal-doc-content">If any changes or prospective changes to the Data Protection Laws result or will result in one or both parties not complying with the Data Protection Laws in relation to processing of Personal Data carried out under the Agreement, then the parties shall use their best endeavors promptly to agree such variations to the Agreement as may be necessary to remedy such non-compliance.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">11
</td>
<td class="legal-doc-content">Warranties
</td>
</tr>
<tr>
<td class="legal-doc-numbering">11.1
</td>
<td class="legal-doc-content">The User warrants to the Provider that it has the legal right and authority to enter into the Agreement and to perform its obligations under these Terms and Conditions.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">11.2
</td>
<td class="legal-doc-content">All of the parties' warranties and representations in respect of the subject matter of the Agreement are expressly set out in these Terms and Conditions. To the maximum extent permitted by applicable law, no other warranties or representations concerning the subject matter of the Agreement will be implied into the Agreement or any related contract.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">12
</td>
<td class="legal-doc-content">Acknowledgements and warranty limitations
</td>
</tr>
<tr>
<td class="legal-doc-numbering">12.1
</td>
<td class="legal-doc-content">The User acknowledges that complex software is never wholly free from defects, errors and bugs; and subject to the other provisions of these Terms and Conditions, the Provider gives no warranty or representation that the Hosted Services will be wholly free from defects, errors and bugs.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">12.2
</td>
<td class="legal-doc-content">The User acknowledges that complex software is never entirely free from security vulnerabilities; and subject to the other provisions of these Terms and Conditions, the Provider gives no warranty or representation that the Hosted Services will be entirely secure.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">12.3
</td>
<td class="legal-doc-content">The User acknowledges that the Hosted Services are designed to be compatible only with the supported browsers set out in this document; and the Provider does not warrant or represent that the Hosted Services will be compatible with any other software or systems.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">12.4
</td>
<td class="legal-doc-content">The User acknowledges that the Provider will not provide any legal, financial, accountancy or taxation advice under these Terms and Conditions or in relation to the Hosted Services; and, except to the extent expressly provided otherwise in these Terms and Conditions, the Provider does not warrant or represent that the Hosted Services or the use of the Hosted Services by the User will not give rise to any legal liability on the part of the User or any other person.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">13
</td>
<td class="legal-doc-content">Limitations and exclusions of liability
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.1
</td>
<td class="legal-doc-content">Nothing in these Terms and Conditions will:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">limit or exclude any liability for death or personal injury resulting from negligence;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">limit or exclude any liability for fraud or fraudulent misrepresentation;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">limit any liabilities in any way that is not permitted under applicable law; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(d)
</td>
<td class="legal-doc-content">exclude any liabilities that may not be excluded under applicable law.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.2
</td>
<td class="legal-doc-content">The limitations and exclusions of liability set out in this Clause 13 and elsewhere in these Terms and Conditions:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">are subject to Clause 13.1; and
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">govern all liabilities arising under these Terms and Conditions or relating to the subject matter of these Terms and Conditions, including liabilities arising in contract, in tort (including negligence) and for breach of statutory duty, except to the extent expressly provided otherwise in these Terms and Conditions.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.3
</td>
<td class="legal-doc-content">The Provider will not be liable to the User in respect of the consequences of decisions taken by the User’s while using Hosted Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.4
</td>
<td class="legal-doc-content">The Provider shall not be liable to the User in respect of any losses arising out of a Force Majeure Event.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.5
</td>
<td class="legal-doc-content">The Provider will not be liable to the User in respect of any loss of profits or anticipated savings.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.6
</td>
<td class="legal-doc-content">The Provider will not be liable to the User in respect of any loss of revenue or income.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.7
</td>
<td class="legal-doc-content">The Provider will not be liable to the User in respect of any loss of use or production.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.8
</td>
<td class="legal-doc-content">The Provider will not be liable to the User in respect of any loss of business, contracts or opportunities.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.9
</td>
<td class="legal-doc-content">The Provider will not be liable to the User in respect of any loss or corruption of any data, database or software.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.10
</td>
<td class="legal-doc-content">The Provider will not be liable to the User in respect of any special, indirect or consequential loss or damage.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">14
</td>
<td class="legal-doc-content">Force Majeure Event
</td>
</tr>
<tr>
<td class="legal-doc-numbering">14.1
</td>
<td class="legal-doc-content">If a Force Majeure Event gives rise to a failure or delay in either party performing any obligation under the Agreement, that obligation will be suspended for the duration of the Force Majeure Event.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">15
</td>
<td class="legal-doc-content">Termination
</td>
</tr>
<tr>
<td class="legal-doc-numbering">15.1
</td>
<td class="legal-doc-content">Either party may terminate the Agreement by giving to the other party at least 30 days' written notice of termination.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">15.2
</td>
<td class="legal-doc-content">The User may terminate the Agreement immediately by using the functionality of the Hosted Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">15.3
</td>
<td class="legal-doc-content">Either party may terminate the Agreement immediately by giving written notice of termination to the other party if the other party commits a material breach of these Terms and Conditions.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">15.4
</td>
<td class="legal-doc-content">Either party may terminate the Agreement immediately by giving written notice of termination to the other party if:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">the other party:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(i)
</td>
<td class="legal-doc-content">is dissolved;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(ii)
</td>
<td class="legal-doc-content">ceases to conduct all (or substantially all) of its business;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(iii)
</td>
<td class="legal-doc-content">is or becomes unable to pay its debts as they fall due;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(iv)
</td>
<td class="legal-doc-content">is or becomes insolvent or is declared insolvent; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(v)
</td>
<td class="legal-doc-content">convenes a meeting or makes or proposes to make any arrangement or composition with its creditors;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">an administrator, administrative receiver, liquidator, receiver, trustee, manager or similar is appointed over any of the assets of the other party; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">an order is made for the winding up of the other party, or the other party passes a resolution for its winding up (other than for the purpose of a solvent company reorganization where the resulting entity will assume all the obligations of the other party under the Agreement).
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">16
</td>
<td class="legal-doc-content">Effects of termination
</td>
</tr>
<tr>
<td class="legal-doc-numbering">16.1
</td>
<td class="legal-doc-content">Upon the termination of the Agreement, all of the provisions of these Terms and Conditions shall cease to have effect, save that the following provisions of these Terms and Conditions shall survive and continue to have effect (in accordance with their express terms or otherwise indefinitely): Clauses 1, 3.10, 6, 9, 10, 13, 16, 19 and 20.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">16.2
</td>
<td class="legal-doc-content">Except to the extent that these Terms and Conditions expressly provide otherwise, the termination of the Agreement shall not affect the accrued rights of either party.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">17
</td>
<td class="legal-doc-content">Notices
</td>
</tr>
<tr>
<td class="legal-doc-numbering">17.1
</td>
<td class="legal-doc-content">Any notice from one party to the other party under these Terms and Conditions must be given by one of the following methods:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">sent by email to the relevant email address specified through the Hosted Services, in which case the notice shall be deemed to be received upon receipt of the email by the recipient's email server; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">sent using the contractual notice mechanism incorporated into the Hosted Services, in which case the notice shall be deemed to be received upon dispatch,
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">providing that, if the stated time of deemed receipt is not within Business Hours, then the time of deemed receipt shall be when Business Hours next begin after the stated time.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">18
</td>
<td class="legal-doc-content">Subcontracting
</td>
</tr>
<tr>
<td class="legal-doc-numbering">18.1
</td>
<td class="legal-doc-content">Subject to any express restrictions elsewhere in these Terms and Conditions, the Provider may subcontract any of its obligations under the Agreement, providing that the Provider must give to the User, promptly following the appointment of a subcontractor, a written notice specifying the subcontracted obligations and identifying the subcontractor in question.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">19
</td>
<td class="legal-doc-content">General
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.1
</td>
<td class="legal-doc-content">No breach of any provision of the Agreement shall be waived except with the express written consent of the party not in breach.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.2
</td>
<td class="legal-doc-content">If any provision of the Agreement is determined by any court or other competent authority to be unlawful and/or unenforceable, the other provisions of the Agreement will continue in effect. If any unlawful and/or unenforceable provision would be lawful or enforceable if part of it were deleted, that part will be deemed to be deleted, and the rest of the provision will continue in effect (unless that would contradict the clear intention of the parties, in which case the entirety of the relevant provision will be deemed to be deleted).
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.3
</td>
<td class="legal-doc-content">The Provider may vary the Agreement by giving to the User at least 30 days' written notice of the variation.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.4
</td>
<td class="legal-doc-content">The User hereby agrees that the Provider may assign the Provider's contractual rights and obligations under the Agreement to any successor to all or a substantial part of the business of the Provider from time to time. Save to the extent expressly permitted by applicable law, the User must not without the prior written consent of the Provider assign, transfer or otherwise deal with any of the User's contractual rights or obligations under the Agreement.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.5
</td>
<td class="legal-doc-content">The Agreement is made for the benefit of the parties, and is not intended to benefit any third party or be enforceable by any third party. The rights of the parties to terminate, rescind, or agree any amendment, waiver, variation or settlement under or relating to the Agreement are not subject to the consent of any third party.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.6
</td>
<td class="legal-doc-content">Subject to Clause 13.1, a Registration Form, together with these Terms and Conditions and any Schedules, shall constitute the entire agreement between the parties in relation to the subject matter of that Services Order Form, and shall supersede all previous agreements, arrangements and understandings between the parties in respect of that subject matter.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.7
</td>
<td class="legal-doc-content">The Agreement shall be governed by and construed in accordance with English law.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">19.8
</td>
<td class="legal-doc-content">The courts of England shall have exclusive jurisdiction to adjudicate any dispute arising under or in connection with the Agreement.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">20
</td>
<td class="legal-doc-content">Interpretation
</td>
</tr>
<tr>
<td class="legal-doc-numbering">20.1
</td>
<td class="legal-doc-content">In these Terms and Conditions, a reference to a statute or statutory provision includes a reference to:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">that statute or statutory provision as modified, consolidated and/or re-enacted from time to time; and
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">any subordinate legislation made under that statute or statutory provision.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">20.2
</td>
<td class="legal-doc-content">The Clause headings do not affect the interpretation of these Terms and Conditions.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">20.3
</td>
<td class="legal-doc-content">References in these Terms and Conditions to "calendar months" are to the 12 named periods (January, February and so on) into which a year is divided.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">20.4
</td>
<td class="legal-doc-content">In these Terms and Conditions, general words shall not be given a restrictive interpretation by reason of being preceded or followed by words indicating a particular class of acts, matters or things.
</td>
</tr>
</tbody></table>
<h5>Schedule 1 - Acceptable Use Policy
</h5>
<table class="table table-borderless legal-table">
<tbody><tr class="legal-heading">
<td class="legal-doc-numbering">1
</td>
<td class="legal-doc-content">Introduction
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.1
</td>
<td class="legal-doc-content">This acceptable use policy (the "Policy") sets out the rules governing:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">the use of www.cpdtag.com, any successor website, and the services available on that website or any successor website (the "Services"); and
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">the transmission, storage and processing of content by you, or by any person on your behalf, using the Services ("Content").
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.2
</td>
<td class="legal-doc-content">References in this Policy to "you" are to any User for the Services and any individual user of the Services (and "your" should be construed accordingly); and references in this Policy to "us" are to CPD Tag (and "we" and "our" should be construed accordingly).
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.3
</td>
<td class="legal-doc-content">By using the Services, you agree to the rules set out in this Policy.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.4
</td>
<td class="legal-doc-content">We will ask for your express agreement to the terms of this Policy before you upload or submit any Content or otherwise use the Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.5
</td>
<td class="legal-doc-content">You must be at least 18 years of age to use the Services; and by using the Services, you warrant and represent to us that you are at least 18 years of age.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">2
</td>
<td class="legal-doc-content">General usage rules
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.1
</td>
<td class="legal-doc-content">You must not use the Services in any way that causes, or may cause, damage to the Services or impairment of the availability or accessibility of the Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.2
</td>
<td class="legal-doc-content">You must not use the Services:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">in any way that is unlawful, illegal, fraudulent, deceptive or harmful; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">in connection with any unlawful, illegal, fraudulent, deceptive or harmful purpose or activity.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.3
</td>
<td class="legal-doc-content">You must ensure that all Content complies with the provisions of this Policy.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">3
</td>
<td class="legal-doc-content">Unlawful Content
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.1
</td>
<td class="legal-doc-content">Content must not be illegal or unlawful, must not infringe any person's legal rights, and must not be capable of giving rise to legal action against any person (in each case in any jurisdiction and under any applicable law).
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.2
</td>
<td class="legal-doc-content">Content, and the use of Content by us in any manner licensed or otherwise authorised by you, must not:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">be libellous or maliciously false;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">be obscene or indecent;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">infringe any copyright, moral right, database right, trade mark right, design right, right in passing off, or other intellectual property right;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(d)
</td>
<td class="legal-doc-content">infringe any right of confidence, right of privacy or right under data protection legislation;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(e)
</td>
<td class="legal-doc-content">constitute negligent advice or contain any negligent statement;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(f)
</td>
<td class="legal-doc-content">constitute an incitement to commit a crime, instructions for the commission of a crime or the promotion of criminal activity;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(g)
</td>
<td class="legal-doc-content">be in contempt of any court, or in breach of any court order;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(h)
</td>
<td class="legal-doc-content">constitute a breach of racial or religious hatred or discrimination legislation;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(i)
</td>
<td class="legal-doc-content">be blasphemous;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(j)
</td>
<td class="legal-doc-content">constitute a breach of official secrets legislation; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(k)
</td>
<td class="legal-doc-content">constitute a breach of any contractual obligation owed to any person.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.3
</td>
<td class="legal-doc-content">You must ensure that Content is not and has never been the subject of any threatened or actual legal proceedings or other similar complaint.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">4
</td>
<td class="legal-doc-content">Graphic material
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.1
</td>
<td class="legal-doc-content">Content must be appropriate for all persons who have access to or are likely to access the Content in.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.2
</td>
<td class="legal-doc-content">Content must not depict violence.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.3
</td>
<td class="legal-doc-content">Content must not be pornographic or sexually explicit.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">5
</td>
<td class="legal-doc-content">Factual accuracy
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.1
</td>
<td class="legal-doc-content">Content must not be untrue, false, inaccurate or misleading.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.2
</td>
<td class="legal-doc-content">Statements of fact contained in Content and relating to persons (legal or natural) must be true; and statements of opinion contained in Content and relating to persons (legal or natural) must be reasonable, be honestly held and indicate the basis of the opinion.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">6
</td>
<td class="legal-doc-content">Negligent advice
</td>
</tr>
<tr>
<td class="legal-doc-numbering">6.1
</td>
<td class="legal-doc-content">Content must not consist of or contain any legal, financial, investment, taxation, accountancy, medical or other professional advice, and you must not use the Services to provide any legal, financial, investment, taxation, accountancy, medical or other professional advisory services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">6.2
</td>
<td class="legal-doc-content">Content must not consist of or contain any advice, instructions or other information that may be acted upon and could, if acted upon, cause death, illness or personal injury, damage to property, or any other loss or damage.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">7
</td>
<td class="legal-doc-content">Etiquette
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.1
</td>
<td class="legal-doc-content">Content must be appropriate, civil and tasteful, and accord with generally accepted standards of etiquette and behavior on the internet.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.2
</td>
<td class="legal-doc-content">Content must not be offensive, deceptive, threatening, abusive, harassing, menacing, hateful, discriminatory or inflammatory.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.3
</td>
<td class="legal-doc-content">Content must not be liable to cause annoyance, inconvenience or needless anxiety.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.4
</td>
<td class="legal-doc-content">You must not use the Services to send any hostile communication or any communication intended to insult, including such communications directed at a particular person or group of people.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.5
</td>
<td class="legal-doc-content">You must not use the Services for the purpose of deliberately upsetting or offending others.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.6
</td>
<td class="legal-doc-content">You must not unnecessarily flood the Services with material relating to a particular subject or subject area, whether alone or in conjunction with others.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.7
</td>
<td class="legal-doc-content">You must ensure that Content does not duplicate other content available through the Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.8
</td>
<td class="legal-doc-content">You must ensure that Content is appropriately categorized.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.9
</td>
<td class="legal-doc-content">You should use appropriate and informative titles for all Content.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.10
</td>
<td class="legal-doc-content">You must at all times be courteous and polite to other users of the Services.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">8
</td>
<td class="legal-doc-content">Marketing and spam
</td>
</tr>
<tr>
<td class="legal-doc-numbering">8.1
</td>
<td class="legal-doc-content">You must not use the Services for any purpose relating to the marketing, advertising, promotion, sale or supply of any product, service or commercial offering.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">8.2
</td>
<td class="legal-doc-content">Content must not constitute or contain spam, and you must not use the Services to store or transmit spam - which for these purposes shall include all unlawful marketing communications and unsolicited commercial communications.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">8.3
</td>
<td class="legal-doc-content">You must not send any spam or other marketing communications to any person using any email address or other contact details made available through the Services or that you find using the Services.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">8.4
</td>
<td class="legal-doc-content">You must not use the Services to promote, host or operate any chain letters, Ponzi schemes, pyramid schemes, matrix programs, multi-level marketing schemes, "get rich quick" schemes or similar letters, schemes or programs.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">8.5
</td>
<td class="legal-doc-content">You must not use the Services in any way which is liable to result in the blacklisting of any of our IP addresses.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">9
</td>
<td class="legal-doc-content">Regulated businesses
</td>
</tr>
<tr>
<td class="legal-doc-numbering">9.1
</td>
<td class="legal-doc-content">You must not use the Services for any purpose relating to gambling, gaming, betting, lotteries, sweepstakes, prize competitions or any gambling-related activity.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">9.2
</td>
<td class="legal-doc-content">You must not use the Services for any purpose relating to the offering for sale, sale or distribution of drugs or pharmaceuticals.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">9.3
</td>
<td class="legal-doc-content">You must not use the Services for any purpose relating to the offering for sale, sale or distribution of knives, guns or other weapons.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">10
</td>
<td class="legal-doc-content">Monitoring
</td>
</tr>
<tr>
<td class="legal-doc-numbering">10.1
</td>
<td class="legal-doc-content">You acknowledge that we may actively monitor the Content and the use of the Services.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">11
</td>
<td class="legal-doc-content">Data mining
</td>
</tr>
<tr>
<td class="legal-doc-numbering">11.1
</td>
<td class="legal-doc-content">You must not conduct any systematic or automated data scraping, data mining, data extraction or data harvesting, or other systematic or automated data collection activity, by means of or in relation to the Services.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">12
</td>
<td class="legal-doc-content">Hyperlinks
</td>
</tr>
<tr>
<td class="legal-doc-numbering">12.1
</td>
<td class="legal-doc-content">You must not link to any material using or by means of the Services that would, if it were made available through the Services, breach the provisions of this Policy.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">13
</td>
<td class="legal-doc-content">Harmful software
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.1
</td>
<td class="legal-doc-content">The Content must not contain or consist of, and you must not promote, distribute or execute by means of the Services, any viruses, worms, spyware, adware or other harmful or malicious software, programs, routines, applications or technologies.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">13.2
</td>
<td class="legal-doc-content">The Content must not contain or consist of, and you must not promote, distribute or execute by means of the Services, any software, programs, routines, applications or technologies that will or may have a material negative effect upon the performance of a computer or introduce material security risks to a computer.
</td>
</tr>
</tbody></table>
</div>
<div id="termsModalFooterContentDiv" class="modal-footer">
<div class="text-center mt-1-half">
<button id="" data-dismiss="modal" class="btn back-dark mb-2 unselectable waves-effect waves-light">Done
<img src="img/icons/dark/check-square.svg" class="svg modal-button-icon">
</button>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="copyrightModal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
<div class="modal-dialog cascading-modal modal-xl" role="document">
<div class="modal-content">
<div class="modal-header darken-3 white-text back-dark">
<span class="table-heading-text" style="font-size:20px; vertical-align: middle;">
<img src="img/icons/dark/copyright.svg" class="svg tab-h-icon mono-icon" style="display:inline;">
<span id="copyrightModalHeadingText" class="unselectable unhittable">
<span id="copyrightModalPreLabelText">
</span> Copyright Notice
</span>
</span>
<button type="button" class="close waves-effect waves-light" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×
</span>
</button>
</div>
<div id="copyrightModalBodyContentDiv" class="modal-body mb-0" style="height: 80vh; overflow-y: auto;">
<table class="table table-borderless legal-table">
<tbody><tr class="legal-heading">
<td class="legal-doc-numbering">1
</td>
<td class="legal-doc-content">Copyright notice
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.1
</td>
<td class="legal-doc-content">Copyright (c) 2022 Derek Nash.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.2
</td>
<td class="legal-doc-content">Subject to the express provisions of this notice:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">we, together with our licensors, own and control all the copyright and other intellectual property rights in our website and the material on our website; and
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">all the copyright and other intellectual property rights in our website and the material on our website are reserved.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">2
</td>
<td class="legal-doc-content">Copyright licence
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.1
</td>
<td class="legal-doc-content">Subject to the other provisions of this notice you may:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">view pages from our website in a web browser;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">download pages from our website for caching in a web browser;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">use the web services we provide by means of a web browser,
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.2
</td>
<td class="legal-doc-content">Except as expressly permitted by the other provisions of this notice, you must not download any material from our website or save any such material to your computer.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.3
</td>
<td class="legal-doc-content">You may only use our website for the purposes of the improvement of your own educational organization; you must not use our website for any other purposes.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.4
</td>
<td class="legal-doc-content">Except as expressly permitted by this notice, you must not edit or otherwise modify any material on our website.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.5
</td>
<td class="legal-doc-content">Unless you own or control the relevant rights in the material, you must not:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">republish material from our website (including republication on another website);
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">sell, rent or sub-license material from our website;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">show any material from our website in public;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(d)
</td>
<td class="legal-doc-content">exploit material from our website for a commercial purpose; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(e)
</td>
<td class="legal-doc-content">redistribute material from our website, save to the extent expressly permitted by this notice.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">3
</td>
<td class="legal-doc-content">Acceptable use
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.1
</td>
<td class="legal-doc-content">You must not:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">use our website in any way or take any action that causes, or may cause, damage to the website or impairment of the performance, availability or accessibility of the website;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">use our website in any way that is unlawful, illegal, fraudulent or harmful, or in connection with any unlawful, illegal, fraudulent or harmful purpose or activity;
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">use our website to copy, store, host, transmit, send, use, publish or distribute any material which consists of (or is linked to) any spyware, computer virus, Trojan horse, worm, keystroke logger, rootkit or other malicious computer software; or
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(d)
</td>
<td class="legal-doc-content">conduct any systematic or automated data collection activities (including without limitation scraping, data mining, data extraction and data harvesting) on or in relation to our website without our express written consent.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">4
</td>
<td class="legal-doc-content">Report abuse
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.1
</td>
<td class="legal-doc-content">If you learn of any unlawful material or activity on our website, or any material or activity that breaches this notice, please let us know.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.2
</td>
<td class="legal-doc-content">You can let us know about any such material or activity by emailing [email protected].
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">5
</td>
<td class="legal-doc-content">Enforcement of copyright
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.1
</td>
<td class="legal-doc-content">We take the protection of our copyright very seriously.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.2
</td>
<td class="legal-doc-content">If we discover that you have used our copyright materials in contravention of the licence set out in this notice, we may bring legal proceedings against you, seeking monetary damages and/or an injunction to stop you using those materials. You could also be ordered to pay legal costs.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">6
</td>
<td class="legal-doc-content">Permissions
</td>
</tr>
<tr>
<td class="legal-doc-numbering">6.1
</td>
<td class="legal-doc-content">You may request permission to use the copyright materials on our website by emailing [email protected].
</td>
</tr>
</tbody></table>
</div>
<div id="copyrightModalFooterContentDiv" class="modal-footer">
<div class="text-center mt-1-half">
<button id="" data-dismiss="modal" class="btn back-dark mb-2 unselectable waves-effect waves-light">Done
<img src="img/icons/dark/check-square.svg" class="svg modal-button-icon">
</button>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="gdpr-complianceModal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
<div class="modal-dialog cascading-modal modal-xl" role="document">
<div class="modal-content">
<div class="modal-header darken-3 white-text back-dark">
<span class="table-heading-text" style="font-size:20px; vertical-align: middle;">
<img src="img/icons/dark/shield-check.svg" class="svg tab-h-icon mono-icon" style="display:inline;">
<span id="gdpr-complianceModalHeadingText" class="unselectable unhittable">
<span id="gdpr-complianceModalPreLabelText">
</span> GDPR Compliance Statement
</span>
</span>
<button type="button" class="close waves-effect waves-light" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×
</span>
</button>
</div>
<div id="gdpr-complianceModalBodyContentDiv" class="modal-body mb-0" style="height: 80vh; overflow-y: auto;">
<table class="table table-borderless legal-table">
<tbody><tr class="legal-heading">
<td class="legal-doc-numbering">1
</td>
<td class="legal-doc-content">UK GDPR Compliance Statement
</td>
</tr>
<tr>
<td class="legal-doc-numbering">1.1
</td>
<td class="legal-doc-content">The data privacy and security of users of CPD Tag is taken very seriously, and this document sets out the ways in which the requirements of the GDPR are complied with.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">2
</td>
<td class="legal-doc-content">Contact Details
</td>
</tr>
<tr>
<td class="legal-doc-numbering">2.1
</td>
<td class="legal-doc-content">Please email Derek Nash at [email protected] if you have any questions, concerns, or actions you wish carried out with regards to the GDPR, and CPD Tag’s compliance with it.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">3
</td>
<td class="legal-doc-content">Background
</td>
</tr>
<tr>
<td class="legal-doc-numbering">3.1
</td>
<td class="legal-doc-content">In the United Kingdom, The Data Protection Act 2018 controls how your personal information is used by organisations, businesses or the government. The Data Protection Act 2018 is the UK’s implementation of the General Data Protection Regulation (GDPR). It sets out the key principles, rights and obligations for most processing of personal data in the UK.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">4
</td>
<td class="legal-doc-content">CPD Tag and Your Personal Data
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.1
</td>
<td class="legal-doc-content">In the context of the GDPR, Personal data is information that relates to an identified or identifiable individual, such as your name. In CPD Tag, the following pieces of potentially personal information are collected:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">
<strong>Your name:
</strong> CPD Tag asks you for your name in order to be able to address you by your chosen name when using the system, to attach this information to output you may choose to generate (such as your CPD Record or CPD Certificates), and to be listed as a potential or actual attendee to a CPD event. This information does not need to be accurate, and you are at liberty to choose any collection of alphanumeric characters by which you wish to be addressed. For example, if you prefer to use an alias, there will be no detriment to the functionality which you will experience as a CPD Tag user.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">
<strong>Your email address:
</strong> CPD Tag asks for an email address primarily as a means to correlate the correct CPD Tag account with the user when logging into the platform. It can also be used to send notifications to the user (such as if an event that a user has pledged to attend changes to location), however this functionality can be disabled within the platform.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">
<strong>CPD Activity record:
</strong> The primary function of CPD Tag is to build your CPD Activity record, by either manual entry of activity information, or by scanning QR Codes at CPD Tagged events. Each record contains details about the activity, such as where and when it took place, details about the activity itself, and any debrief information you choose to enter, such as what you learned, and how this aligns with your goals. The collection of this information is necessary to provide you with the core functionality of the platform – i.e. to allow you to view this information in the future, and create a PDF containing it for distribution, should you wish to. Its collection is entirely at the discretion of the user, and without it the platform cannot provide the user with the core functionality it was created to provide.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(d)
</td>
<td class="legal-doc-content">
<strong>Profile Information, CPD Map and Portfolio:
</strong> CPD Tag provides the functionality to add information relating to your professional life, such as your Education, Career, Certifications/ Accreditations, Memberships and Voluntary Roles. CPD Tag also provides the functionality to add potentially personal information to the CPD Map and Portfolio areas of the platform. This information is collected purely as a convenient location for you to be able to access it in the future should you wish to, and to be able to create a PDF containing it, again should you wish to. Its collection is entirely voluntary, and is not needed for the core functionality of the platform, which is to keep track of CPD activities.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.2
</td>
<td class="legal-doc-content">Other than the information and purposes for collecting it outlined above, CPD Tag does not collect any other personal data. No data processing is undertaken other than that specifically required to provide the functionality outlined above. This is reflected in our Terms and Conditions, for example in section 4.1 under User Data, the following is stated:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<i>"The User hereby grants to the Provider a non-exclusive license to copy, reproduce, store, distribute, publish, export, adapt, edit and translate the User Data
<strong>to the extent reasonably required for the performance of the Provider's obligations and the exercise of the Provider's rights under the Agreement.
</strong>"
</i>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.3
</td>
<td class="legal-doc-content">The first part of this paragraph describes to processes necessary to make a web-based platform function by allowing us on behalf of the user to add, edit and remove from a database the user’s information, and create a PDF containing it on behalf of the user for example. The text in bold makes clear that this is only done for CPD Tag (the Provider) to provide the functionality (the performance of our obligations) which we have said we will provide, along with any rights CPD Tag has (such as the need to satisfy any statutory obligations).
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.4
</td>
<td class="legal-doc-content">Paragraph 4.1 goes on to say:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">
<i>"The User also grants to the Provider the right to sub-license these rights to its hosting, connectivity and telecommunications service providers, subject to any express restrictions elsewhere in the Agreement."
</i>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.5
</td>
<td class="legal-doc-content">This is necessary as CPD Tag does not own any servers itself, and so in order to provide the functionality of the platform we need to be able to pass these rights to a web-hosting company for example.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.6
</td>
<td class="legal-doc-content">For context, maintaining the servers that host website content and associated databases requires significant resource, and unlike large commercial entities, CPD Tag as a non-profit goodwill initiative does not have access to that level of resource. As such, this service is provided by a company called GoDaddy, which is one of the largest web-hosting companies on the planet. GoDaddy is ISO 27001 certified, and is able to facilitate websites being fully compliant with the GDPR by hosting data in centers located in EEA (European Economic Area) countries, which in this case of CPD Tag are located in France. Hosting data in an EEA country means that a data transfer between it and the UK is deemed compliant under the GDPR. Have a look here for more information:
<a href="https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/international-transfers-after-uk-exit/">ICO.org.uk International Transfers After UK Exit
</a>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">4.7
</td>
<td class="legal-doc-content">For the avoidance of any doubt, the only purpose CPD Tag collects personal information is to provide users with the functionality that they have sought by registering to use the site in the first place.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">5
</td>
<td class="legal-doc-content">Legal Basis for Collection
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.1
</td>
<td class="legal-doc-content">The GDPR requires anyone processing personal data (such as your name) to have a legal basis for doing so. In the case of CPD Tag, the relevant legal basis is that of consent, i.e. the user explicitly gives consent for us to do so, so that we are able to provide the functionality that the platform provides.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.2
</td>
<td class="legal-doc-content">In our case, the consent is given by the individual at the time of registration. As per the requirements, we don’t use any pre-ticked boxes or any other mechanisms which avoid the need for explicit consent to be given. We have made every effort to make clear to a user registering to use CPD Tag that that they are explicitly giving consent for us to process their personal information so that we can provide the functionality that the platform provides.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.3
</td>
<td class="legal-doc-content">As our basis is consent, this can also be withdrawn by the individual at any time. Closing your CPD Tag account by using the tools provided on the platform will be taken as an immediate withdrawal of your consent. At this time, any personal information held about the individual will be permanently removed from the servers powering the platform. If a user is unable to gain access to the platform for whatever reason, they can email us at [email protected] to request their account be closed. We will then do it for you, and confirm to you that it has been done.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.4
</td>
<td class="legal-doc-content">The GDPR asks that we avoid making consent a precondition of a service. In this regard, we only seek your consent as necessary to provide the core functionality of the platform. Where this can be avoided it has been, for example those who do not wish to register for a CPD Tag account can still have access to some of its functionality, such as instant downloads of CPD Attendance Certificates, and viewing the details of events they are attending on their phone by scanning a CPD Tag QR Code.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">5.5
</td>
<td class="legal-doc-content">We hope that this demonstrates one of the key principle on which the platform is founded: that it is our intention to provide a beneficial service wherever possible to anyone endeavouring to undertake CPD activities, regardless of whether they register for a CPD Tag account or not.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">6
</td>
<td class="legal-doc-content">Individual Rights
</td>
</tr>
<tr>
<td class="legal-doc-numbering">6.1
</td>
<td class="legal-doc-content">Under data protection law, you have rights including:
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(a)
</td>
<td class="legal-doc-content">
<strong>Your right to be informed
</strong> -
<i> You have the right to be informed about the collection and use of your personal data.
</i>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">Please see Section 4.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(b)
</td>
<td class="legal-doc-content">
<strong>Your right of access
</strong> -
<i> You have the right to ask us for copies of your personal information
</i>.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">In the case of CPD Tag, all personal information held about you is visible by logging into CPD Tag using your account details, and navigating the various areas of the platform. CPD Tag does not collect any personal information that you have not explicitly entered into the platform, and all of it is visible to you, and can be instantly and permanently edited and deleted by you. If you have any issues obtaining access, the just contact us using the contact details at the top of this document and we will help you to regain access however we can.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(c)
</td>
<td class="legal-doc-content">
<strong>Your right to rectification
</strong> -
<i> You have the right to ask us to rectify personal information you think is inaccurate. You also have the right to ask us to complete information you think is incomplete.
</i>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">As mentioned above, In the case of CPD Tag, all personal information held about you can be instantly and permanently edited and deleted by you. If there is any information you think is incomplete that you think we are best placed to complete, then by all means contact us using the contact details at the top of this document and we will endeavour to assist wherever possible.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(d)
</td>
<td class="legal-doc-content">
<strong>Your right to erasure
</strong> -
<i>You have the right to ask us to erase your personal information in certain circumstances.
</i></td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">If for any reason you experience any issues erasing your personal information using the tools available on the platform (such as clicking the ‘delete’ icons found throughout the platform, or closing your account to delete everything), then by all means contact us using the contact details at the top of this document and we will delete anything you ask us to.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(e)
</td>
<td class="legal-doc-content">
<strong>Your right to restriction of processing
</strong> -
<i> You have the right to ask us to restrict the processing of your personal information in certain circumstances.
</i>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">CPD Tag doesn’t undertake any processing of your person information except that explicitly initiated by you using the tools available on the platform. If however there is any restriction of the processing of your personal information that you feel needs to be discussed with us, then please contact us using the contact details at the top of this document so we can assist.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(f)
</td>
<td class="legal-doc-content">
<strong>Your right to object to processing
</strong> -
<i> You have the right to object to the processing of your personal information in certain circumstances.
</i>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">As mentioned previously, CPD Tag doesn’t undertake any processing of your person information except that explicitly initiated by you using the tools available on the platform. If however there is any processing of your personal information that you wish to object to, then please contact us using the contact details at the top of this document so we can assist.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(g)
</td>
<td class="legal-doc-content">
<strong>Your right to data portability
</strong> -
<i> You have the right to ask that we transfer the personal information you gave us to another organisation, or to you, in certain circumstances.
</i>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">CPD Tag has the ability to allow users to instantly generate PDF documents containing all of the information contained within their account with a few mouse clicks. This allows users to create a complete record of all information held on their CPD Tag account.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">(h)
</td>
<td class="legal-doc-content">
<strong>Rights related to automated decision making including profiling
</strong>
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">CPD Tag does not undertake any automated decision making or profiling processes.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">6.2
</td>
<td class="legal-doc-content">Cost and Timescales
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">As per the GPDR, you are not required to pay any charge for exercising any of the rights set out above. If you make a request, under the GDPR we have one month to respond to you, but would always endeavour to assist as soon as possible.
</td>
</tr>
<tr class="legal-heading">
<td class="legal-doc-numbering">7
</td>
<td class="legal-doc-content">How to complain
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.1
</td>
<td class="legal-doc-content">If you have any concerns about our use of your personal information, you can make a complaint to us using the contact details at the top of this document.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">7.2
</td>
<td class="legal-doc-content">You can also complain to the ICO if you are unhappy with how we have used your data.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">The ICO’s address: Information Commissioner’s Office, Wycliffe House, Water Lane, Wilmslow, Cheshire, SK9 5AF.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">Helpline number: 0303 123 1113.
</td>
</tr>
<tr>
<td class="legal-doc-numbering">
</td>
<td class="legal-doc-content">ICO website: https://www.ico.org.uk.
</td>
</tr>
</tbody></table>
</div>
<div id="gdpr-complianceModalFooterContentDiv" class="modal-footer">
<div class="text-center mt-1-half">
<button id="" data-dismiss="modal" class="btn back-dark mb-2 unselectable waves-effect waves-light">Done
<img src="img/icons/dark/check-square.svg" class="svg modal-button-icon">
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script type="text/javascript" src="js/mdb.js"></script><div class="hiddendiv common"></div><script type="text/javascript" src="js/plugins/jquery-realperson/jquery.plugin.min.js"></script>
<script type="text/javascript" src="js/plugins/jquery-realperson/jquery.realperson.min.js"></script><script src="js/moment.js"></script><script src="js/pdfmake.min.js"></script>
<script src="js/vfs_fonts.js"></script>
<script>
new WOW().init();var blockSubmit = false;
function initialiseAJAXForms()
{
var request;
var html;
$("form").each(function(index, value)
{
var $form = $("#" + value.id);
$form.submit(function(event)
{
event.preventDefault();
blockSubmit = false;
$form.trigger('formAjaxSubmitting');
if(blockSubmit == false)
{
if (request)
{
request.abort();
}
var $inputs = $form.find("input, select, button, textarea");
//var serializedData = $(this).serialize();
//Form data
var form = $(this),
formData = new FormData(),
formParams = form.serializeArray();
//File data
$.each(form.find('input[type="file"]'), function(i, tag) {
$.each($(tag)[0].files, function(i, file) {
formData.append(tag.name, file);
});
});
$.each(formParams, function(i, val) {
formData.append(val.name, val.value);
});
$inputs.prop("disabled", true);
$("#" + value.id + "ErrorContent").hide();
$("#" + value.id + "SubmittingContent").show();
var formAction = $form.attr('action');
request = $.ajax({
url: formAction,
processData: false,
contentType: false,
type: "post",
data: formData
});
request.done(function (response, textStatus, jqXHR){
$form.trigger('formAjaxDone', [jqXHR, textStatus, response]);
if(response.response == "success")
{
AJAXFormTriggerSuccessActions(value.id, response.message);
}
else if(response.response == "fail")
{
AJAXFormTriggerFailActions(value.id, "Fail: " + response.message);
}
else
{
AJAXFormTriggerErrorActions(value.id, "Error: " + response.message);
}
});
request.fail(function (jqXHR, textStatus, errorThrown){
$form.trigger('formAjaxError', [jqXHR, textStatus, errorThrown]);
AJAXFormTriggerErrorActions(value.id, "AJAX Error: " + textStatus + " " + errorThrown);
});
request.always(function () {
$inputs.prop("disabled", false);
$("#" + value.id + "SubmittingContent").hide();
});
}
});
resetAJAXForm(value.id, false);
});
}
function resetAJAXForm(formName, resetInputs = true)
{
var $form = $('#' + formName);
var $inputs = $form.find("input, select, button, textarea");
$inputs.prop("disabled", false);
$("#" + formName + "MainContent").show();
$("#" + formName + "SubmittingContent").hide();
$("#" + formName + "SuccessContent").hide();
$("#" + formName + "ErrorContent").hide();
$("#" + formName + "SubmitContent").show();
$("#" + formName + "CloseContent").hide();
if(resetInputs == true)
{
$form.trigger("reset");
var $selects = $form.find("select");
for(var i = 0; i < $selects.length; i++)
{
var $sel = $selects[i];
for(var j = 0; j < $sel.length; j++)
{
var opt = $sel[j];
if(opt.selected == true)
{
var valToSet = opt.value;
$('#' + $sel.id).val(valToSet).change();
break;
}
}
}
}
}
function AJAXFormTriggerSuccessActions(formID, message)
{
$("#" + formID + "MainContent").hide();
$("#" + formID + "SubmittingContent").hide();
$("#" + formID + "ErrorContent").hide();
html = `
<div class="f-modal-alert" style="margin-bottom:30px;">
<div class="f-modal-icon f-modal-success animate">
<span class="f-modal-line f-modal-tip animateSuccessTip"></span>
<span class="f-modal-line f-modal-long animateSuccessLong"></span>
<div class="f-modal-placeholder"></div>
<div class="f-modal-fix"></div>
</div>
</div>
<h6 class="text-center modal-feedback-text">` + message + `</h6>`
$("#" + formID + "SuccessContent").html(html);
$("#" + formID + "SuccessContent").show();
$("#" + formID + "SubmitContent").hide();
$("#" + formID + "CloseContent").show();
var $form = $('#' + formID);
var $inputs = $form.find("input, select, button, textarea");
$inputs.prop("disabled", false);
}
function AJAXFormTriggerErrorActions(formID, message)
{
html = `
<div class="f-modal-alert" style="margin-bottom:30px;">
<div class="f-modal-icon f-modal-error animate">
<span class="f-modal-x-mark">
<span class="f-modal-line f-modal-left animateXLeft"></span>
<span class="f-modal-line f-modal-right animateXRight"></span>
</span>
<div class="f-modal-placeholder"></div>
<div class="f-modal-fix"></div>
</div>
</div>
<h6 class="text-center modal-feedback-text">` + message + `</h6>`
$("#" + formID + "ErrorContent").html(html);
$("#" + formID + "ErrorContent").show();
var $form = $('#' + formID);
var $inputs = $form.find("input, select, button, textarea");
$inputs.prop("disabled", false);
}
function AJAXFormTriggerFailActions(formID, message)
{
html = `
<div class="f-modal-alert" style="margin-bottom:30px;">
<div class="f-modal-icon f-modal-warning scaleWarning">
<span class="f-modal-body pulseWarningIns"></span>
<span class="f-modal-dot pulseWarningIns"></span>
</div>
</div>
<h6 class="text-center modal-feedback-text">` + message + `</h6>`
$("#" + formID + "ErrorContent").html(html);
$("#" + formID + "ErrorContent").show();
var $form = $('#' + formID);
var $inputs = $form.find("input, select, button, textarea");
$inputs.prop("disabled", false);
}
function AJAXFormTriggerSubmittingActions(formID)
{
$("#" + formID + "SubmittingContent").show();
$("#" + formID + "ErrorContent").hide();
var $form = $('#' + formID);
var $inputs = $form.find("input, select, button, textarea");
$inputs.prop("disabled", true);
}
var lastErrorCause = "";
$('#logInForm').on({
formAjaxDone: function (e, jqXHR, status, data )
{
if(data.response == "success")
{
logInSuccess(data);
}
else if(data.response == "error")
{
if(data.feedback == "name")
{
$('#logInFormEmailLabel').attr('data-error', 'User details not found. Please try again.');
$('#logInFormEmail').removeClass("valid");
$('#logInFormEmail').addClass("invalid");
logInFormEmail.setCustomValidity("User details not found. Please try again.");
}
else if(data.feedback == "pw")
{
$('#logInFormPasswordLabel').attr('data-error', 'Incorrect Password. Please try again.');
$('#logInFormPassword').removeClass("valid");
$('#logInFormPassword').addClass("invalid");
logInFormPassword.setCustomValidity("Incorrect Password. Please try again.");
}
else if(data.feedback == "unconfirmed")
{
$('#logInFormEmailLabel').attr('data-error', 'Email address has not been confirmed.');
$('#logInFormEmail').removeClass("valid");
$('#logInFormEmail').addClass("invalid");
logInFormEmail.setCustomValidity(`Email address has not been confirmed.`);
$('#unconfirmedModal').modal('show');
}
else if(data.feedback == "unregistered")
{
$('#logInFormEmailLabel').attr('data-error', 'User has not completed registration.');
$('#logInFormEmail').removeClass("valid");
$('#logInFormEmail').addClass("invalid");
logInFormEmail.setCustomValidity(`User has not completed registration.`);
$('#serverMessageHeading').html("User Unregistered");
$('#serverMessageText').html("Registration for the user with this email address has not been completed. You should have been emailed a link from your administrator to register. Please use this, or ask your administrator to resend it.");
$('#servMessageModal').modal('show');
}
}
}
});
function clearEmailErrors()
{
$('#logInFormEmail').removeClass("invalid");
logInFormEmail.setCustomValidity("");
}
function clearPasswordErrors()
{
$('#logInFormPassword').removeClass("invalid");
logInFormPassword.setCustomValidity("");
}
function logInSuccess(data)
{
if(data.token.length > 0)
{
setCookie("eUaT58l1v2uI8vRu6VIZaJV0N6akHx9kmr9RyGoI", data.token);
}
setTimeout(function(){ window.location.href = "app.php" }, 1000);
}
function setCookie(cname, cvalue)
{
document.cookie = cname + "=" + cvalue + "; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/";
}
function resendLink()
{
$('#resendLinkButtonLoad').html(`<span class="spinner-border spinner-border-sm"></span>`);
$('#resendLinkButton').prop("disabled", true);
var emailAddress = $('#logInFormEmail').val();
var sendData = {
emailAddress: emailAddress,
commsCase: "resend"
};
var request = $.ajax(
{
url: "php/commsHelper.php",
type: "post",
data: sendData,
success: function(data)
{
$('#resendModalText').html(`<p>` + data.message + `</p>`);
if(data.response == "success")
{
$('#resendLinkButton').hide();
}
}
}
);
request.always(function () {
$('#resendLinkButton').prop("disabled", false);
$('#resendLinkButtonLoad').html(``);
});
}$('#registerForm').on({
formAjaxSubmitting: function (e)
{
//var myForm = document.getElementById("registerForm");
//clearValidation(myForm);
if(checkRegPWFormat() == false || checkRegPWMatch() == false)
{
blockSubmit = true;
}
}
});
$('#registerForm').on({
formAjaxDone: function (e, jqXHR, status, data )
{
if(data.response == "success")
{
$('#registerFormSuccessMessage').html(data.message);
if(data.token.length > 0)
{
setCookie("eUaT58l1v2uI8vRu6VIZaJV0N6akHx9kmr9RyGoI", data.token);
}
setTimeout(function(){ window.location.href = "app.php" }, 1000);
}
else if(data.response == "fail")
{
if(data.message == "Incorrect Real Person Code.")
{
genUISetTextFieldError("registerFormRP", "Incorrect Code. Please try again.");
}
else if(data.message == "Email already in use. Please use alternative.")
{
genUISetTextFieldError("registerFormEmail", "Email already in use. Please use alternative.");
}
}
}
});
function clearRegNameErrors()
{
genUIClearTextFieldError("registerFormName");
}
function clearRegEmailErrors()
{
genUIClearTextFieldError("registerFormEmail");
}
function clearRegRPErrors()
{
var currHashVal = $("#registerFormRP").realperson('getHash');
$("#registerFormRPHashVal").val(currHashVal);
genUIClearTextFieldError("registerFormRP");
}
function clearRegPWErrors()
{
genUIClearTextFieldError("registerFormPassword");
}
function clearRegPWCheckErrors()
{
genUIClearTextFieldError("registerFormPasswordCheck");
}
function checkRegPWFormat()
{
var valid = true;
var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{8,}$/;
if(regularExpression.test(registerFormPassword.value) == false)
{
valid = false;
}
if(valid == true)
{
genUISetTextFieldValid("registerFormPassword");
/*
$('#registerFormPassword').removeClass("invalid");
$('#registerFormPassword').addClass("valid");
$('#registerFormPasswordFeedback').hide();
$('#registerFormPasswordFeedbackText').html("");
*/
}
else
{
genUISetTextFieldError("registerFormPassword", "Must be at least 8 characters, with 1 uppercase, 1 lowercase, 1 special character (!@#$%^&*), and 1 number");
}
return valid;
}
function checkRegPWMatch()
{
var valid = registerFormPasswordCheck.value == registerFormPassword.value;
if(valid == true)
{
genUISetTextFieldValid("registerFormPasswordCheck");
}
else
{
genUISetTextFieldError("registerFormPasswordCheck", "Password's don't match - please check");
}
return valid;
}
function checkRegFormValidity()
{
registerFormPasswordCheck.setCustomValidity(registerFormPasswordCheck.value != registerFormPassword.value ? "Passwords do not match." : "");
var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{8,}$/;
registerFormPassword.setCustomValidity(!regularExpression.test(registerFormPassword.value) ? "Must have 8 characters, and 1 uppercase, 1 lowercase, 1 number and 1 special character (!@#$%^&*)" : "");
}document.getElementById("pubOptsLogInButton").addEventListener('click', pubOptsLogInButtonClicked);
function pubOptsLogInButtonClicked()
{
$('#nonMemOptsModal').modal('toggle');
$('#login-tab-nav').click();
}
document.getElementById("pubOptsRegisterButton").addEventListener('click', pubOptsRegisterButtonClicked);
function pubOptsRegisterButtonClicked()
{
$('#nonMemOptsModal').modal('toggle');
$('#register-tab-nav').click();
}
document.getElementById("pubOptsCPDCertButton").addEventListener('click', pubOptsCPDCertButtonClicked);
function pubOptsCPDCertButtonClicked()
{
var sendData =
{
eventUID: ' '
};
request = $.ajax(
{
url: "php/getEventDetails.php",
type: "post",
data: sendData,
success: function(data)
{
systemData = data.data;
var certName = $('#cpdCertName').val();
getEventCPDCPDF(systemData.inst_events[0], certName);
}
}
);
}
document.getElementById("pubOptsShowEventButton").addEventListener('click', pubOptsShowEventButtonClicked);
function pubOptsShowEventButtonClicked()
{
// window.location.replace("event.php?event=" + ' ');
window.open("event.php?event=" + ' ');
}function genUISetTextFieldError(inputID, errorMsg)
{
$('#' + inputID).get(0).setCustomValidity(errorMsg);
$('#' + inputID).removeClass("valid");
$('#' + inputID).addClass("invalid");
$('#' + inputID + 'Label').addClass("active");
$('#' + inputID + 'Label').attr('data-error', errorMsg);
}
function genUIClearTextFieldError(inputID, defaultError = "")
{
$('#' + inputID).get(0).setCustomValidity("");
$('#' + inputID).removeClass("invalid");
if(defaultError.length > 0)
{
$('#' + inputID + 'Label').attr('data-error', defaultError);
}
}
function genUIResetTextField(inputID)
{
$('#' + inputID).removeClass("valid");
$('#' + inputID).val("");
$('#' + inputID + 'Label').removeClass("active");
}
function genUISetTextFieldValid(inputID)
{
$('#' + inputID).removeClass("invalid");
$('#' + inputID).addClass("valid");
$('#' + inputID + 'Label').attr('data-error', "");
// $('#' + inputID + 'Label').addClass("active");
}
function dbDTToCollPres(dt, noTime = false)
{
if(dt == "0000-00-00 00:00:00")
{
return "-";
}
else
{
var format = "Do of MMMM YYYY, h:mm a";
if(noTime == true)
{
format = "Do of MMMM YYYY";
}
var local = moment.utc(dt).local().format(format);
return local;
}
}
function getDurationPres(duration)
{
var returnVal = duration;
if(duration == 1)
{
returnVal += " hr";
}
else
{
returnVal += " hrs";
}
return returnVal;
}
function eventsGetFlavourByID(event, flavID)
{
var i;
for(i = 0; i < event.flavours.length; i++)
{
if(event.flavours[i].id == flavID)
{
return event.flavours[i];
}
}
return false;
}
function getSpinnerHTML(message, white = true, spinType = "roller", alignTop = false)
{
var html = `<div class="text-center">`;
if(alignTop == true)
{
html = `<div class="text-center" style="height: 40px;margin-top: -20px;">`;
}
switch(spinType)
{
case "roller":
if(white == true)
{
html += `<div class="lds-roller-white">`;
}
else
{
html += `<div class="lds-roller">`;
}
html += `
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
<div>
</div>
</div>`;
break;
case "ellipsis":
if(white == true)
{
html += `<div class="lds-ellipsis lds-ellipsis-white">`;
}
else
{
html += `<div class="lds-ellipsis">`;
}
html += `<div></div><div></div><div></div><div></div></div>`;
break;
}
if(message.length > 0)
{
html += `<h6>` + message + `</h6>`;
}
html += `</div>`;
return html;
}
document.getElementById("launchDemoButton").addEventListener('click', launchDemo);
function launchDemo()
{
request = $.ajax(
{
url: "php/launchDemo.php",
type: "post",
data: "",
success: function()
{
window.location.replace("app.php");
}
}
);
}var generatingPDF = false;
var currCertDets = "";
function getEventCPDCPDF(eventDets, certName)
{
if(generatingPDF == false)
{
generatingPDF = true;
if(eventDets.orgID > 0)
{
getOrgLogoImage();
}
toastr.info(getSpinnerHTML("", true, "ellipsis", true), "Getting CPD Certificate...", {timeOut: 0, extendedTimeOut: 0, tapToDismiss: false});
setTimeout(function(){
var currDomain = "https://www.cpdtag.com/";
var eventLinkURLBase = currDomain + "index.php?attend=";
currCertDets = eventLinkURLBase + eventDets.uniqueID + String(flavID).padStart(3, '0');
var docContent = [];
var contentArray = [];
docContent.push({text : [ {text: "Certificate of ", fontSize: 28, color: "#000000", bold: false}, {text: "Attendance", fontSize: 28, color: "#000000", bold: true}], margin:[0,10,0,10]});
docContent.push({text : [
{text: "This is to certify that ", fontSize: 14, color: "#000000", bold: false},
{text: certName, fontSize: 14, color: "#000000", bold: true},
{text: " attended the following event:", fontSize: 14, color: "#000000", bold: false}
], margin:[0,0,0,20]}
);
var flav = eventsGetFlavourByID(eventDets, flavID);
var detMarginBot = 10;
docContent.push(getHeadingTypeLabel("Event:", "megaphone", eventDets.headline, "", detMarginBot));
if(eventDets.orgID > 0)
{
var org = systemData.inst_orgs[0];
var orgImg = "";
if(org.img.length > 0)
{
orgImg = logoDataURL;
}
docContent.push(getHeadingTypeLabel("Host Organisation:", "university",org.orgName, orgImg, detMarginBot));
}
docContent.push(getHeadingTypeLabel("Date & Time:", "calendar-day", dbDTToCollPres(eventDets.datetime), "", detMarginBot));
docContent.push(getHeadingTypeLabel("Attendee Type:", "users-class", flav.name, "", detMarginBot));
docContent.push(getHeadingTypeLabel("Event Duration:", "clock", getDurationPres(flav.duration) , "", detMarginBot));
var endContent =
{
margin: [0,0,0,2],
style: 'tableExample',
unbreakable: true,
table: {
widths: [175, 175],
body: [
[
]
]
},
layout: 'noBorders'
};
docContent.push(endContent);
/*
var pageContent = getPrintContent(contentArray);
docContent.push.apply(docContent, pageContent);
*/
if(docContent.length > 0)
{
var docDefinition =
{
pageSize: 'A4',
pageMargins: [ 40, 100, 40, 120],
pageOrientation: 'portrait',
background: function (currentPage, pageSize)
{
return {
canvas: [
{
type: 'rect',
x: 0, y: 0, w: pageSize.width, h: pageSize.height
//color: '#EEEEEE'
}
]
};
},
content: docContent,
styles: {
header: {
fontSize: 18,
bold: true,
margin: [0, 0, 0, 10]
},
subheader: {
fontSize: 16,
bold: true,
margin: [0, 10, 0, 5]
},
tableExample: {
margin: [0, 0, 0, 0]
},
tableHeader: {
bold: true,
fontSize: 13,
color: 'black'
}
},
defaultStyle: {
font: 'Raleway'
},
footer: function(currentPage, pageCount)
{
return getCertFooter();
},
header: function ()
{
return getPageHeader();
}
};
pdfMake.fonts = {
Raleway: {
bolditalics: 'Raleway-BoldItalic.ttf',
bold: 'Raleway-Bold.ttf',
italics: 'Raleway-Italic.ttf',
normal: 'Raleway-Regular.ttf'
}
};
var downloadFileName = eventDets.headline + " CPD Certificate";
pdfMake.createPdf(docDefinition).download(downloadFileName);
toastr.remove();
toastr.success('Done');
generatingPDF = false;
}
},
500);
}
}
var shapeCol = "#888888";
var nameCol = "#3e3e3e";
var labelTypeCol = "#000";
var algCol = "#3e3e3e";
function addHeadingContent(holdingArray, icon, label, heading, image = "")
{
var caseObj =
{
objType: "heading",
icon: icon,
label: label,
heading: heading,
image: image
};
holdingArray.push(caseObj);
}
function getHeadingTypeLabel(label, icon, heading, image, marginBot = 0)
{
var content = [];
var content1 =
{
margin: [0, 0, 0, 5],
style: 'tableExample',
unbreakable: true,
table: {
widths: [22, '*'],
body: [
[
{
svg: getIconSVG(icon), height: 20, width: 20
},
{
text: label, fontSize: 14, color: labelTypeCol, margin:[0,2,0,0]
}
]
]
},
layout: 'noBorders'
};
content.push(content1);
content.push({svg: getLineSVG(), margin: [0,0,0,5]});
content.push(getTitleHeadingText(heading));
if(image.length > 0)
{
content.push({image: image, fit: [175, 60]});
}
content.push({text: "", margin: [0,0,0,marginBot]});
return content;
}
function getQRHeadingTypeLabel(label, icon)
{
var content = [];
var content1 =
{
margin: [0,0,0,5],
style: 'tableExample',
unbreakable: true,
table: {
widths: [25, '*'],
body: [
[
{
svg: getIconSVG(icon), height: 20, width: 20
},
{
text: label, fontSize: 14, color: labelTypeCol, margin:[0,0,0,0]
}
]
]
},
layout: 'noBorders'
};
content.push(content1);
content.push({svg: getLineSVG(), margin: [0,0,0,5]});
return content;
}
function pdfContentGetIconLabel(label, icon, iconSize, fontSize, pageRef = "")
{
var content =
{
margin: [0,0,0,0],
style: 'tableExample',
unbreakable: true,
table: {
widths: [(iconSize + 2), '*'],
body: [
[
{
svg: getIconSVG(icon), height: iconSize, width: iconSize
},
{
text: label, fontSize: fontSize, color: labelTypeCol, margin:[0,0,0,0]
}
]
]
},
layout: 'noBorders'
};
if(pageRef.length > 0)
{
content.table.body[0][1].id = pageRef;
}
return content;
}
function pdfContentGet3ColTableRow(cont1, cont2, cont3, col1 = 100, col2 = 195, col3 = 180)
{
var content =
{
margin: [0,0,0,0],
style: 'tableExample',
unbreakable: true,
table: {
widths: [col1, col2, col3],
body: [
[
]
]
},
layout: 'noBorders'
};
content.table.body[0].push(cont1);
content.table.body[0].push(cont2);
content.table.body[0].push(cont3);
return content;
}
function pdfContentGet2ColTableRow(cont1, cont2, col1 = 100, col2 = 400)
{
var content =
{
margin: [0,0,0,2],
style: 'tableExample',
unbreakable: true,
table: {
widths: [col1, col2],
body: [
[
]
]
},
layout: 'noBorders'
};
content.table.body[0].push(cont1);
content.table.body[0].push(cont2);
return content;
}
function getIconSVG(icon)
{
var i;
for(i = 0; i < systemData.inst_icons.length; i++)
{
if(systemData.inst_icons[i].name == icon)
{
return systemData.inst_icons[i].svg;
}
}
console.log("Icon not found: " + icon);
}
function getLineSVG(length = 480, color = "")
{
var col = shapeCol;
if(color.length > 0)
{
col = color;
}
var svg = `<svg height="5" width="` + length + `">
<line x1="0" y1="0" x2="` + length + `" y2="0" style="stroke:`+ col +`; stroke-width:1" />
</svg> `;
return svg;
}
function getRectSVG(height, width, color)
{
var svg = `<svg height="` + height + `" width="` + width + `">
<rect height="` + height + `" width="` + width + `" style="fill:`+ color +`;stroke-width:0" />
</svg> `;
return svg;
}
function getEmptyCell()
{
var returnObject = {
text: "",
italics: false,
color: nameCol
}
return returnObject;
}
function getTitleHeadingText(text)
{
var returnObj = {
text: text,
fontSize: 20,
//alignment: 'center',
bold: true,
margin: [0,0,0,10],
color: nameCol
}
return returnObj;
}
function pdfContentGetTableDetail(text)
{
var returnObj = {
text: text,
fontSize: detailFontSize,
//alignment: 'center',
bold: false,
margin: [0,0,0,0],
color: detailFontColor
}
return returnObj;
}
function getTitleSubHeadingText(text)
{
var returnObj = {
text: text,
fontSize: 11,
//alignment: 'center',
bold: true,
margin: [0,10,0,5],
color: nameCol
}
return returnObj;
}
function getQRSVG(urlstring, dim = 256)
{
var qr = new QRCode({
msg: urlstring,
pad: 0,
dim: dim,
pal: ["#017093"]
});
var qro = qr.outerHTML;
//console.log(qro);
return qro;
}
function getPageHeader()
{
var content;
content = {
svg: getLogoSVG(), alignment: 'center', fit: [175, 60], margin: [0,30,0,15]
};
return content;
}
function getLogoSVG()
{
var logo =`<svg width="257.74mm" height="101.78mm" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" sodipodi:docname="Icon.svg" version="1.1" viewBox="0 0 257.74 101.78" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd">
<defs>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
</defs>
<sodipodi:namedview id="a" bordercolor="#666666" borderopacity="1.0" fit-margin-bottom="0" fit-margin-left="0" fit-margin-right="0" fit-margin-top="0" inkscape:current-layer="g3029" inkscape:cx="318.49792" inkscape:cy="86.619276" inkscape:document-rotation="0" inkscape:document-units="mm" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="1017" inkscape:window-maximized="1" inkscape:window-width="1920" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:zoom="0.35" pagecolor="#ffffff" showgrid="false"/>
<g transform="translate(-21.564 -125.25)" inkscape:groupmode="layer" inkscape:label="Layer 1">
<path class="fa-secondary" d="m34.263 227.03h79.281c3.368 0 6.598-1.3379 8.98-3.7194l38.189-38.189c4.96-4.9597 4.96-13.001 0-17.961l-38.188-38.188c-2.382-2.3818-5.613-3.7197-8.981-3.7194h-79.28c-7.014 0-12.7 5.6858-12.7 12.7v76.377c0 7.0135 5.686 12.699 12.699 12.7z" fill="#017093" stroke-width=".26458" sodipodi:nodetypes="cccssccsccc"/>
<g transform="matrix(3.3384 0 0 3.3384 -1499 -416.68)" fill="#fff" stroke-width=".26458px" style="shape-inside:url(#rect1195-3-0-6-0-6-3-9-7-8-2-7-3-4-8-3);white-space:pre" aria-label="CPD">
<path d="m457.19 177.1q0-2.6247 1.7611-4.3857 1.778-1.778 4.4196-1.778 0.8128 0 1.5748 0.16933t1.2531 0.4064q0.508 0.23707 0.88054 0.49107 0.38946 0.23706 0.5588 0.40639l0.16933 0.16934-1.0499 1.6256q-0.1524-0.13546-0.44026-0.33866-0.27094-0.22013-1.1345-0.57573-0.8636-0.3556-1.7103-0.3556-1.8457 0-2.9464 1.2023-1.0837 1.1853-1.0837 2.9295 0 1.778 1.1176 3.048 1.1176 1.2531 2.9295 1.2531 0.57573 0 1.1515-0.1524 0.57573-0.16933 0.98213-0.38946 0.4064-0.22014 0.7112-0.44027 0.32173-0.22013 0.49107-0.37253l0.1524-0.16934 1.1515 1.5748q-0.0677 0.0847-0.2032 0.22013-0.11853 0.11854-0.57573 0.4572-0.4572 0.33867-0.9652 0.59267t-1.3208 0.47413q-0.79586 0.2032-1.6595 0.2032-2.7263 0-4.4704-1.7949t-1.7441-4.4704z"/>
<path d="m470.74 183.16v-12.023h4.6397q1.6933 0 2.7601 1.0837t1.0668 2.8279-1.0668 2.8617q-1.0668 1.1007-2.7601 1.1007h-2.4553v4.1487zm2.1844-6.0452h2.0489q0.94826 0 1.4732-0.5588 0.54187-0.5588 0.54187-1.5071 0-0.93133-0.54187-1.4732-0.52493-0.5588-1.4393-0.5588h-2.0828z"/>
<path d="m481.74 183.16v-12.023h4.0979q2.8109 0 4.4704 1.5917t1.6595 4.4027q0 2.8109-1.6595 4.4196t-4.4704 1.6087zm2.1844-1.8796h1.7949q1.8627 0 2.9295-1.0668 1.0668-1.0837 1.0668-3.0819 0-1.9643-1.0837-3.0311-1.0668-1.0837-2.9125-1.0837h-1.7949z"/>
</g>
<g transform="matrix(3.3384 0 0 3.3384 -1356.2 -416.68)" stroke-width=".26458px" style="shape-inside:url(#rect1195-3-0-6-0-6-3-9-7-8-2-7-3-4-8-1-0);white-space:pre" aria-label="TAG">
<path d="m460.51 183.16v-10.143h-3.9455v-1.8796h10.075v1.8796h-3.9455v10.143z"/>
<path d="m475.13 183.16-1.016-3.0819h-4.2164l-1.016 3.0819h-2.2521l4.2333-12.023h2.286l4.2333 12.023zm-3.0988-9.9398h-0.0339q-0.27094 1.1853-0.508 1.8627l-1.0668 3.2173h3.1496l-1.0668-3.2173z"/>
<path d="m478.64 177.13q0-2.6247 1.7611-4.4027 1.778-1.7949 4.4365-1.7949 0.82973 0 1.5917 0.16933 0.76199 0.1524 1.2531 0.37253 0.508 0.22014 0.88053 0.44027 0.38947 0.22013 0.57573 0.37253l0.16934 0.16933-1.0837 1.6256q-0.1524-0.13546-0.42334-0.32173-0.254-0.18627-1.1007-0.508-0.82973-0.32173-1.6764-0.32173-1.9473 0-3.048 1.1853-1.0837 1.1684-1.0837 2.9464 0 1.9135 1.1515 3.1157 1.1515 1.1853 2.8787 1.1853 0.8128 0 1.5579-0.3048 0.76199-0.32173 1.1007-0.64346l0.3556-0.3048v-1.4055h-1.8457v-1.8796h3.81v6.333h-1.8627v-0.57573l0.0169-0.508h-0.0339q-0.0508 0.0508-0.1524 0.13547-0.1016 0.0847-0.44027 0.32173-0.32173 0.22013-0.7112 0.38946-0.37253 0.16934-0.9652 0.3048-0.59266 0.13547-1.2192 0.13547-2.4553 0-4.1825-1.7272-1.7103-1.7441-1.7103-4.5042z"/>
</g>
</g>
</svg>`;
return logo;
}
function getCPDTagQRSVG()
{
var logo =`
<svg width="96.773mm" height="37.42mm" inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" sodipodi:docname="CPDTag QR.svg" version="1.1" viewBox="0 0 96.773 37.42" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd">
<defs>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
<rect x="456.5" y="167.71" width="109.45" height="20.713"/>
<clipPath id="a">
<path d="m0 0h250v250h-250z"/>
</clipPath>
</defs>
<sodipodi:namedview id="b" bordercolor="#666666" borderopacity="1.0" fit-margin-bottom="0" fit-margin-left="0" fit-margin-right="0" fit-margin-top="0" inkscape:current-layer="layer1" inkscape:cx="320.53293" inkscape:cy="198.53692" inkscape:document-rotation="0" inkscape:document-units="mm" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="1017" inkscape:window-maximized="1" inkscape:window-width="1920" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:zoom="1.4" pagecolor="#ffffff" showgrid="false"/>
<g transform="translate(-57.447 -96.951)" inkscape:groupmode="layer" inkscape:label="Layer 1">
<g transform="translate(82.664 95.348)">
<path class="fa-secondary" d="m14.413 33.222h18.488c0.7854 0 1.5387-0.31199 2.0941-0.86735l8.9055-8.9054c1.1567-1.1566 1.1567-3.0317 0-4.1883l-8.9052-8.9054c-0.5555-0.55543-1.309-0.86742-2.0944-0.86735h-18.488l-2.9616 0.00225v23.735z" fill="#017093" stroke-width=".0617" sodipodi:nodetypes="cccsscccccc"/>
<g transform="matrix(.7785 0 0 .7785 -343.15 -116.89)" fill="#fff" stroke-width=".26458px" style="shape-inside:url(#rect1195-3-0-6-0-6-3-9-7-8-2-7-3-4-8-3-7-5);white-space:pre" aria-label="CPD">
<path d="m457.19 177.1q0-2.6247 1.7611-4.3857 1.778-1.778 4.4196-1.778 0.8128 0 1.5748 0.16933t1.2531 0.4064q0.508 0.23707 0.88054 0.49107 0.38946 0.23706 0.5588 0.40639l0.16933 0.16934-1.0499 1.6256q-0.1524-0.13546-0.44026-0.33866-0.27094-0.22013-1.1345-0.57573-0.8636-0.3556-1.7103-0.3556-1.8457 0-2.9464 1.2023-1.0837 1.1853-1.0837 2.9295 0 1.778 1.1176 3.048 1.1176 1.2531 2.9295 1.2531 0.57573 0 1.1515-0.1524 0.57573-0.16933 0.98213-0.38946 0.4064-0.22014 0.7112-0.44027 0.32173-0.22013 0.49107-0.37253l0.1524-0.16934 1.1515 1.5748q-0.0677 0.0847-0.2032 0.22013-0.11853 0.11854-0.57573 0.4572-0.4572 0.33867-0.9652 0.59267t-1.3208 0.47413q-0.79586 0.2032-1.6595 0.2032-2.7263 0-4.4704-1.7949t-1.7441-4.4704z"/>
<path d="m470.74 183.16v-12.023h4.6397q1.6933 0 2.7601 1.0837 1.0668 1.0837 1.0668 2.8279t-1.0668 2.8617q-1.0668 1.1007-2.7601 1.1007h-2.4553v4.1487zm2.1844-6.0452h2.0489q0.94826 0 1.4732-0.5588 0.54187-0.5588 0.54187-1.5071 0-0.93133-0.54187-1.4732-0.52493-0.5588-1.4393-0.5588h-2.0828z"/>
<path d="m481.74 183.16v-12.023h4.0979q2.8109 0 4.4704 1.5917 1.6595 1.5917 1.6595 4.4027 0 2.8109-1.6595 4.4196-1.6595 1.6087-4.4704 1.6087zm2.1844-1.8796h1.7949q1.8627 0 2.9295-1.0668 1.0668-1.0837 1.0668-3.0819 0-1.9643-1.0837-3.0311-1.0668-1.0837-2.9125-1.0837h-1.7949z"/>
</g>
<g transform="matrix(.7785 0 0 .7785 -309.83 -116.89)" stroke-width=".26458px" style="shape-inside:url(#rect1195-3-0-6-0-6-3-9-7-8-2-7-3-4-8-1-0-4-9);white-space:pre" aria-label="TAG">
<path d="m460.51 183.16v-10.143h-3.9455v-1.8796h10.075v1.8796h-3.9455v10.143z"/>
<path d="m475.13 183.16-1.016-3.0819h-4.2164l-1.016 3.0819h-2.2521l4.2333-12.023h2.286l4.2333 12.023zm-3.0988-9.9398h-0.0339q-0.27094 1.1853-0.508 1.8627l-1.0668 3.2173h3.1496l-1.0668-3.2173z"/>
<path d="m478.64 177.13q0-2.6247 1.7611-4.4027 1.778-1.7949 4.4365-1.7949 0.82973 0 1.5917 0.16933 0.76199 0.1524 1.2531 0.37253 0.508 0.22014 0.88053 0.44027 0.38947 0.22013 0.57573 0.37253l0.16934 0.16933-1.0837 1.6256q-0.1524-0.13546-0.42334-0.32173-0.254-0.18627-1.1007-0.508-0.82973-0.32173-1.6764-0.32173-1.9473 0-3.048 1.1853-1.0837 1.1684-1.0837 2.9464 0 1.9135 1.1515 3.1157 1.1515 1.1853 2.8787 1.1853 0.8128 0 1.5579-0.3048 0.76199-0.32173 1.1007-0.64346l0.3556-0.3048v-1.4055h-1.8457v-1.8796h3.81v6.333h-1.8627v-0.57573l0.0169-0.508h-0.0339q-0.0508 0.0508-0.1524 0.13547-0.1016 0.0847-0.44027 0.32173-0.32173 0.22013-0.7112 0.38946-0.37253 0.16934-0.9652 0.3048-0.59266 0.13547-1.2192 0.13547-2.4553 0-4.1825-1.7272-1.7103-1.7441-1.7103-4.5042z"/>
</g>
</g>
<g transform="translate(42.383 -144.95)">
<path d="m18.605 241.9h30.337c1.9619 0 3.5413 1.5794 3.5413 3.5413v30.337c0 1.9619-1.5794 3.5413-3.5413 3.5413h-30.337c-1.9619 0-3.5413-1.5794-3.5413-3.5413v-30.337c0-1.9619 1.5794-3.5413 3.5413-3.5413z" color="#000000" fill="#017093" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<g transform="matrix(.12079 0 0 .12079 18.675 245.52)">
<g clip-path="url(#a)">
<g transform="scale(10)" fill="#fff">
<g fill="#fff">
<path d="m24 24h1v1h-1zm-3 0h1v1h-1zm-5 0h2v1h-2zm-5 0h3v1h-3zm-3 0h2v1h-2zm-8 0h7v1h-7zm22-1h3v1h-3zm-3 0h2v1h-2zm-9 0h4v1h-4zm-4 0h1v1h-1zm-6 0h1v1h-1zm20-1h5v1h-5zm-3 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-3 0h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm23-1h2v1h-2zm-5 0h1v1h-1zm-6 0h4v1h-4zm-4 0h3v1h-3zm-2 0h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm23-1h2v1h-2zm-8 0h6v1h-6zm-2 0h1v1h-1zm-5 0h4v1h-4zm-2 0h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm20-1h1v1h-1zm-5 0h2v1h-2zm-2 0h1v1h-1zm-2 0h1v1h-1zm-3 0h2v1h-2zm-2 0h1v1h-1zm-6 0h1v1h-1zm24-1h1v1h-1zm-4 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-4 0h2v1h-2zm-4 0h2v1h-2zm-8 0h7v1h-7zm22-1h2v1h-2zm-2 0h1v1h-1zm-5 0h2v1h-2zm-2 0h1v1h-1zm-5 0h4v1h-4zm14-1h2v1h-2zm-7 0h6v1h-6zm-4 0h3v1h-3zm-2 0h1v1h-1zm-3 0h2v1h-2zm-4 0h1v1h-1zm-2 0h1v1h-1zm24-1h1v1h-1zm-3 0h2v1h-2zm-2 0h1v1h-1zm-3 0h2v1h-2zm-4 0h1v1h-1zm-2 0h1v1h-1zm-3 0h2v1h-2zm-2 0h1v1h-1zm-2 0h1v1h-1zm-3 0h1v1h-1zm20-1h5v1h-5zm-6 0h5v1h-5zm-6 0h2v1h-2zm-4 0h3v1h-3zm-4 0h2v1h-2zm23-1h1v1h-1zm-3 0h1v1h-1zm-6 0h4v1h-4zm-2 0h1v1h-1zm-3 0h1v1h-1zm-9 0h1v1h-1zm24-1h1v1h-1zm-6 0h1v1h-1zm-3 0h2v1h-2zm-9 0h3v1h-3zm-3 0h1v1h-1zm18-1h4v1h-4zm-2 0h1v1h-1zm-5 0h1v1h-1zm-3 0h1v1h-1zm-2 0h1v1h-1zm-4 0h1v1h-1zm-3 0h1v1h-1zm-2 0h1v1h-1zm24-1h1v1h-1zm-3 0h1v1h-1zm-3 0h2v1h-2zm-7 0h5v1h-5zm-5 0h4v1h-4zm-5 0h2v1h-2zm18-1h5v1h-5zm-2 0h1v1h-1zm-3 0h2v1h-2zm-7 0h6v1h-6zm-3 0h2v1h-2zm-2 0h1v1h-1zm20-1h3v1h-3zm-2 0h1v1h-1zm-3 0h1v1h-1zm-3 0h2v1h-2zm-2 0h1v1h-1zm-9 0h8v1h-8zm-3 0h1v1h-1zm16-1h1v1h-1zm-4 0h3v1h-3zm-3 0h1v1h-1zm9-1h7v1h-7zm-2 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-8 0h7v1h-7zm24-1h1v1h-1zm-6 0h1v1h-1zm-2 0h1v1h-1zm-3 0h2v1h-2zm-2 0h1v1h-1zm-5 0h1v1h-1zm-6 0h1v1h-1zm24-1h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm-2 0h1v1h-1zm-3 0h2v1h-2zm-3 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm24-1h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm-2 0h1v1h-1zm-5 0h4v1h-4zm-2 0h1v1h-1zm-3 0h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm24-1h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm-6 0h5v1h-5zm-2 0h1v1h-1zm-2 0h1v1h-1zm-2 0h1v1h-1zm-4 0h3v1h-3zm-2 0h1v1h-1zm24-1h1v1h-1zm-6 0h1v1h-1zm-2 0h1v1h-1zm-4 0h1v1h-1zm-4 0h1v1h-1zm-2 0h1v1h-1zm-6 0h1v1h-1zm18-1h7v1h-7zm-5 0h2v1h-2zm-5 0h3v1h-3zm-8 0h7v1h-7z" fill="#fff"/>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
`;
return logo;
}
function getCertFooter()
{
var endContent =
{
margin: [0,0,0,2],
style: 'tableExample',
unbreakable: true,
table: {
widths: [250, 300],
body: [
[
]
]
},
layout: 'noBorders'
};
endContent.table.body[0].push({svg: getCPDTagQRSVG(), alignment: 'left', width: 200, margin: [40,0,0,0]});
var footText = [];
footText.push({text: "CPD Tag Attendance Certificates are only available to people who have scanned the QR Code at an event.", fontSize: 9, color: "#000000", bold: false, margin: [0,0,0,5]});
footText.push({text: "If you would like to register on CPD Tag and add this event to your CPD Record, then you can use the link below. ", fontSize: 9, color: "#000000", bold: false, margin: [0,0,0,5]});
footText.push({text: currCertDets, fontSize: 9, color: "#017093", bold: false, margin: [0,0,0,0], link: currCertDets});
endContent.table.body[0].push(footText);
return endContent;
}
var logoDataURL = "";
function getOrgLogoImage()
{
var html = "";
var currOrg = systemData.inst_orgs[0];
var height = `style="max-height:300px;" `;
if(currOrg.img.length > 0)
{
html = `<img ` + height + ` src="img/orgs/` + currOrg.img + `">`;
}
toDataURL('img/orgs/' + currOrg.img,function(dataUrl)
{
logoDataURL = dataUrl;
});
return html;
}
function toDataURL(src, callback, outputFormat)
{
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
var canvas = document.createElement('CANVAS');
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
};
img.src = src;
if (img.complete || img.complete === undefined) {
img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
img.src = src;
}
}
$(document).ready(function(){
initialiseAJAXForms();$('#registerFormRP').realperson(); var sysuidInput = document.getElementById("logInFormSysuid");
sysuidInput.value = getsysuid();
var sysuidInput2 = document.getElementById("registerFormSysuid");
sysuidInput2.value = getsysuid(); if(window.location.href.indexOf('#gdpr-compliance') != -1) {
$('#gdpr-complianceModal').modal('show');
}
});
</script>
</body></html>