{"version":3,"sources":["CareersForm.js","ContactUsForm.js","NewsletterForm.js","StartTrialForm.js","Default.js","Vimeo.js"],"names":["resumeFileData","careersWidget","contactUsWidget","newsletterWidget","startTrialWidget","CareersRecaptchaCallback","token","console","log","$","find","val","grecaptcha","reset","CareersPost","form","formData","serialize","_arrayBufferToBase64","ajax","type","attr","url","data","dataType","done","trigger","hide","animate","height","opacity","removeClass","hj","window","sendPageView","fail","jqXhr","status","alert","always","prop","parent","buffer","binary","bytes","Uint8Array","len","byteLength","i","String","fromCharCode","btoa","ContactUsRecaptchaCallback","ContactUsPost","guid","s4","Math","floor","random","toString","substring","NewletterRecaptchaCallback","NewsletterPost","StartTrialRecaptchaCallback","StartTrialPost","document","ready","fields","name","identifier","rules","prompt","email","phone","coverLetter","resume","interest","terms","submit","event","preventDefault","this","addClass","uuid","append","render","sitekey","callback","size","badge","execute","fileData","input","getElementById","getBuffer","resolve","reader","FileReader","readAsArrayBuffer","onload","arrayBuffer","result","length","addEventListener","evt","files","Blob","Promise","then","catch","err","comment","on","targetDate","Date","setFullYear","getFullYear","cookie","toUTCString","transition","checkbox","dropdown","not","click","target","location","pathname","replace","hostname","hash","slice","scrollTop","offset","top","visibility","duration","closest","comms","company","license","postcode","professional","fn","PlaceVimeoThumbnail","each","vimeoId","encodeURIComponent","success","thumbnail_url"],"mappings":"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","file":"build.js","sourcesContent":["// A global for our file upload\r\nvar resumeFileData;\r\nvar careersWidget;\r\n\r\n$(document).ready(function () {\r\n\r\n // smantic ui validation\r\n $('.ui.form.careers')\r\n .form({\r\n fields: {\r\n name: {\r\n identifier: 'name',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your name'\r\n }\r\n ]\r\n },\r\n email: {\r\n identifier: 'email',\r\n rules: [\r\n {\r\n type: 'email',\r\n prompt: 'Please enter your email address'\r\n }\r\n ]\r\n },\r\n phone: {\r\n identifier: 'phone',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your phone number'\r\n }\r\n ]\r\n },\r\n coverLetter: {\r\n identifier: 'coverLetter',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'You must include a cover letter'\r\n }\r\n ]\r\n },\r\n resume: {\r\n identifier: 'resume',\r\n rules: [\r\n {\r\n type: 'contains[.pdf]',\r\n prompt: 'You must attach your CV in PDF format'\r\n }\r\n ]\r\n },\r\n interest: {\r\n identifier: 'interest',\r\n rules: [\r\n {\r\n type: 'checked',\r\n prompt: 'You must express your interest in a career with Zenith'\r\n }\r\n ]\r\n },\r\n terms: {\r\n identifier: 'terms',\r\n rules: [\r\n {\r\n type: 'checked',\r\n prompt: 'You must agree to the terms and conditions'\r\n }\r\n ]\r\n }\r\n }\r\n }).submit(function (event) {\r\n event.preventDefault();\r\n\r\n console.log('form is submitting...');\r\n\r\n if ($(this).form('is valid')) {\r\n\r\n console.log('validation successful');\r\n\r\n // disable submit & show spinner\r\n $($(this)).find(':submit').prop('disabled', true);\r\n $($(this)).parent().find('.dimmer').addClass('active');\r\n\r\n var uuid = guid();\r\n console.log(uuid);\r\n $('#g-recaptcha-container').append('
');\r\n careersWidget = grecaptcha.render(uuid, { 'sitekey': '6LeAs1IUAAAAADgtl2MEdH0TOEM_tJTbXeBYq8Xo', 'callback': 'CareersRecaptchaCallback', 'size': 'invisible', 'badge': 'inline' });\r\n\r\n // call recaptcha -- which then calls the ajax submit\r\n grecaptcha.execute(careersWidget);\r\n\r\n } else {\r\n\r\n console.log('validation failed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/careers/invalid');\r\n\r\n }\r\n\r\n return false;\r\n });\r\n\r\n});\r\n\r\nfunction CareersRecaptchaCallback(token) {\r\n\r\n console.log(token);\r\n\r\n // we need to pass the token to the server for validation\r\n $('.ui.form.careers').find('input#GoogleRecaptchaResponse').val(token);\r\n\r\n // reset recpatch so it can be re-used (multiple form posts)\r\n grecaptcha.reset(careersWidget);\r\n\r\n // re-submit the form with the token\r\n CareersPost();\r\n}\r\n\r\nfunction CareersPost() {\r\n\r\n var form = $('.ui.form.careers');\r\n\r\n // serialize the form - this doesn't include the file\r\n var formData = $(form).serialize();\r\n\r\n // Convert resume to base64\r\n var resumeAsBase64 = _arrayBufferToBase64(resumeFileData);\r\n\r\n // add the file to the form data\r\n formData = formData + \"&resume=\" + resumeAsBase64;\r\n\r\n // send to server\r\n $.ajax({\r\n type: $(form).attr('method'),\r\n url: $(form).attr('action'),\r\n data: formData,\r\n dataType: \"json\"\r\n }).done(function (data) {\r\n\r\n // job done\r\n if (data) {\r\n\r\n console.log('data indicates post success');\r\n\r\n // reset the form\r\n $('.ui.form.careers').trigger('reset');\r\n\r\n // show success message\r\n $('.ui.form.careers').find('.positive.message')\r\n .hide()\r\n .animate({\r\n height: \"toggle\",\r\n opacity: \"toggle\"\r\n })\r\n .removeClass('hidden');\r\n\r\n // notify hotjar of success\r\n hj('formSubmitSuccessful');\r\n\r\n // send google page view\r\n window.sendPageView('/form/careers/submit');\r\n\r\n // failed\r\n } else {\r\n\r\n console.log('data indicates post failed');\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/careers/exception');\r\n\r\n }\r\n\r\n }).fail(function (jqXhr, status) {\r\n\r\n console.log('submit failed');\r\n\r\n // exception\r\n alert(\"Sorry! An error occurred. Please try again, or contact us for assistance.\");\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/careers/exception');\r\n\r\n }).always(function () {\r\n\r\n console.log('submit completed');\r\n\r\n // HACK spiner staying on when multi-forms submitted\r\n // enable submit & show spinner\r\n $('.ui.form').find(':submit').prop('disabled', false);\r\n $('.ui.form').parent().find('.dimmer').removeClass('active');\r\n\r\n });\r\n\r\n}\r\n\r\nfunction _arrayBufferToBase64(buffer) {\r\n var binary = '';\r\n var bytes = new Uint8Array(buffer);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n return window.btoa(binary);\r\n}\r\n\r\n(function (document) {\r\n\r\n var input = document.getElementById(\"resume\");\r\n\r\n var fileData; // We need fileData to be visible to getBuffer.\r\n\r\n // Eventhandler for file input. \r\n function openfile(evt) {\r\n var files = input.files;\r\n // Pass the file to the blob, not the input[0].\r\n fileData = new Blob([files[0]]);\r\n // Pass getBuffer to promise.\r\n var promise = new Promise(getBuffer);\r\n // Wait for promise to be resolved, or log error.\r\n promise.then(function (data) {\r\n // Here you can pass the bytes to another function.\r\n //console.log(data);\r\n // Hack the fiel data into our global var\r\n resumeFileData = data;\r\n }).catch(function (err) {\r\n console.log('Error: ', err);\r\n });\r\n }\r\n\r\n /* \r\n Create a function which will be passed to the promise\r\n and resolve it when FileReader has finished loading the file.\r\n */\r\n function getBuffer(resolve) {\r\n var reader = new FileReader();\r\n reader.readAsArrayBuffer(fileData);\r\n reader.onload = function () {\r\n var arrayBuffer = reader.result\r\n var bytes = new Uint8Array(arrayBuffer);\r\n resolve(bytes);\r\n }\r\n }\r\n\r\n // Eventlistener for file input.\r\n if ($(\"#resume\").length == 1) {\r\n input.addEventListener('change', openfile, false);\r\n }\r\n\r\n}(document));\r\n","var contactUsWidget;\r\n\r\n$(document).ready(function () {\r\n\r\n $('.ui.form.contact-us')\r\n .form({\r\n fields: {\r\n name: {\r\n identifier: 'name',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your name'\r\n }\r\n ]\r\n },\r\n email: {\r\n identifier: 'email',\r\n rules: [\r\n {\r\n type: 'email',\r\n prompt: 'Please enter your email address'\r\n }\r\n ]\r\n },\r\n comment: {\r\n identifier: 'comment',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your comments or questions for us'\r\n }\r\n ]\r\n },\r\n terms: {\r\n identifier: 'terms',\r\n rules: [\r\n {\r\n type: 'checked',\r\n prompt: 'You must agree to the terms and conditions'\r\n }\r\n ]\r\n }\r\n }\r\n }).submit(function (event) {\r\n event.preventDefault();\r\n\r\n console.log('form is submitting...');\r\n\r\n if ($(this).form('is valid')) {\r\n\r\n console.log('validation successful');\r\n\r\n // disable submit & show spinner\r\n $($(this)).find(':submit').prop('disabled', true);\r\n $($(this)).parent().find('.dimmer').addClass('active');\r\n\r\n var uuid = guid();\r\n console.log(uuid);\r\n $('#g-recaptcha-container').append('');\r\n contactUsWidget = grecaptcha.render(uuid, { 'sitekey': '6LcWsVIUAAAAAAeoTfQJdZIrLGLnFEi13ObfijM0', 'callback': 'ContactUsRecaptchaCallback', 'size': 'invisible', 'badge': 'inline' });\r\n\r\n // call recaptcha -- which then calls the ajax submit\r\n grecaptcha.execute(contactUsWidget);\r\n\r\n } else {\r\n\r\n console.log('validation failed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/contact-us/invalid');\r\n\r\n }\r\n\r\n return false;\r\n });\r\n\r\n});\r\n\r\nfunction ContactUsRecaptchaCallback(token) {\r\n\r\n console.log(token);\r\n\r\n // we need to pass the token to the server for validation\r\n $('.ui.form.contact-us').find('input#GoogleRecaptchaResponse').val(token);\r\n\r\n // reset recpatch so it can be re-used (multiple form posts)\r\n grecaptcha.reset(contactUsWidget);\r\n\r\n // re-submit the form with the token\r\n ContactUsPost();\r\n}\r\n\r\nfunction ContactUsPost() {\r\n\r\n var form = $('.ui.form.contact-us');\r\n\r\n // send to server\r\n $.ajax({\r\n type: $(form).attr('method'),\r\n url: $(form).attr('action'),\r\n data: $(form).serialize(),\r\n dataType: \"json\"\r\n }).done(function (data) {\r\n\r\n // job done\r\n if (data) {\r\n\r\n console.log('data indicates post success');\r\n\r\n // reset the form\r\n $('.ui.form.contact-us').trigger('reset');\r\n\r\n // show success message\r\n $('.ui.form.contact-us').find('.positive.message')\r\n .hide()\r\n .animate({\r\n height: \"toggle\",\r\n opacity: \"toggle\"\r\n })\r\n .removeClass('hidden');\r\n\r\n // notify hotjar of success\r\n hj('formSubmitSuccessful');\r\n\r\n // send google page view\r\n window.sendPageView('/form/contact-us/submit');\r\n\r\n // failed\r\n } else {\r\n\r\n console.log('data indicates post failed');\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/contact-us/exception');\r\n\r\n }\r\n\r\n }).fail(function (jqXhr, status) {\r\n\r\n console.log('submit failed');\r\n\r\n // exception\r\n alert(\"Sorry! An error occurred. Please try again, or contact us for assistance.\");\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/contact-us/exception');\r\n\r\n }).always(function () {\r\n\r\n console.log('submit completed');\r\n\r\n // HACK spiner staying on when multi-forms submitted\r\n // enable submit & show spinner\r\n $('.ui.form').find(':submit').prop('disabled', false);\r\n $('.ui.form').parent().find('.dimmer').removeClass('active');\r\n\r\n });\r\n\r\n}\r\n","var newsletterWidget;\r\n\r\n$(document).ready(function () {\r\n\r\n $('.ui.form.newsletter')\r\n .form({\r\n fields: {\r\n name: {\r\n identifier: 'name',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your name'\r\n }\r\n ]\r\n },\r\n email: {\r\n identifier: 'email',\r\n rules: [\r\n {\r\n type: 'email',\r\n prompt: 'Please enter your email address'\r\n }\r\n ]\r\n },\r\n comms: {\r\n identifier: 'comms',\r\n rules: [\r\n {\r\n type: 'checked',\r\n prompt: 'To stay informed you must agree to future communications'\r\n }\r\n ]\r\n },\r\n terms: {\r\n identifier: 'terms',\r\n rules: [\r\n {\r\n type: 'checked',\r\n prompt: 'You must agree to the terms and conditions'\r\n }\r\n ]\r\n }\r\n }\r\n }).submit(function (event) {\r\n event.preventDefault();\r\n\r\n console.log('form is submitting...');\r\n\r\n if ($(this).form('is valid')) {\r\n\r\n console.log('validation successful');\r\n\r\n // disable submit & show spinner\r\n $($(this)).find(':submit').prop('disabled', true);\r\n $($(this)).parent().find('.dimmer').addClass('active');\r\n\r\n var uuid = guid();\r\n console.log(uuid);\r\n $('#g-recaptcha-container').append('');\r\n newsletterWidget = grecaptcha.render(uuid, { 'sitekey': '6LcUsVIUAAAAAFV86wYtrU_kHv4zxWhpizrVPgkd', 'callback': 'NewletterRecaptchaCallback', 'size': 'invisible', 'badge': 'inline' });\r\n\r\n // call recaptcha -- which then calls the ajax submit\r\n grecaptcha.execute(newsletterWidget);\r\n\r\n } else {\r\n\r\n console.log('validation failed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/newsletter/invalid');\r\n\r\n }\r\n\r\n return false;\r\n });\r\n\r\n});\r\n\r\nfunction NewletterRecaptchaCallback(token) {\r\n\r\n console.log(token);\r\n\r\n // we need to pass the token to the server for validation\r\n $('.ui.form.newsletter').find('input#GoogleRecaptchaResponse').val(token);\r\n\r\n // reset recpatch so it can be re-used (multiple form posts)\r\n grecaptcha.reset(newsletterWidget);\r\n\r\n // re-submit the form with the token\r\n NewsletterPost();\r\n}\r\n\r\nfunction NewsletterPost() {\r\n\r\n var form = $('.ui.form.newsletter');\r\n\r\n // send to server\r\n $.ajax({\r\n type: $(form).attr('method'),\r\n url: $(form).attr('action'),\r\n data: $(form).serialize(),\r\n dataType: \"json\"\r\n }).done(function (data) {\r\n\r\n // job done\r\n if (data) {\r\n\r\n console.log('data indicates post success');\r\n\r\n // reset the form\r\n $('.ui.form.newsletter').trigger('reset');\r\n\r\n // show success message\r\n $('.ui.form.newsletter').find('.positive.message')\r\n .hide()\r\n .animate({\r\n height: \"toggle\",\r\n opacity: \"toggle\"\r\n })\r\n .removeClass('hidden');\r\n\r\n // notify hotjar of success\r\n hj('formSubmitSuccessful');\r\n\r\n // send google page view\r\n window.sendPageView('/form/newsletter/submit');\r\n\r\n // failed\r\n } else {\r\n\r\n console.log('data indicates post failed');\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/newsletter/exception');\r\n\r\n }\r\n\r\n }).fail(function (jqXhr, status) {\r\n\r\n console.log('submit failed');\r\n\r\n // exception\r\n alert(\"Sorry! An error occurred. Please try again, or contact us for assistance.\");\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/newsletter/exception');\r\n\r\n }).always(function () {\r\n\r\n console.log('submit completed');\r\n\r\n // HACK spiner staying on when multi-forms submitted\r\n // enable submit & show spinner\r\n $('.ui.form').find(':submit').prop('disabled', false);\r\n $('.ui.form').parent().find('.dimmer').removeClass('active');\r\n\r\n console.log('done');\r\n\r\n });\r\n\r\n}\r\n","var startTrialWidget;\r\n\r\n$(document).ready(function () {\r\n\r\n // smantic ui validation\r\n $('.ui.form.start-trial')\r\n .form({\r\n fields: {\r\n name: {\r\n identifier: 'name',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your name'\r\n }\r\n ]\r\n },\r\n email: {\r\n identifier: 'email',\r\n rules: [\r\n {\r\n type: 'email',\r\n prompt: 'Please enter your email address'\r\n }\r\n ]\r\n },\r\n company: {\r\n identifier: 'company',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your company name'\r\n }\r\n ]\r\n },\r\n license: {\r\n identifier: 'license',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your license number or dealer group name'\r\n }\r\n ]\r\n },\r\n phone: {\r\n identifier: 'phone',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your phone number'\r\n }\r\n ]\r\n },\r\n postcode: {\r\n identifier: 'postcode',\r\n rules: [\r\n {\r\n type: 'empty',\r\n prompt: 'Please enter your post code'\r\n }\r\n ]\r\n },\r\n professional: {\r\n identifier: 'professional',\r\n rules: [\r\n {\r\n type: 'checked',\r\n prompt: 'You must be a financial services professional to start a trial'\r\n }\r\n ]\r\n },\r\n terms: {\r\n identifier: 'terms',\r\n rules: [\r\n {\r\n type: 'checked',\r\n prompt: 'You must agree to the terms and conditions'\r\n }\r\n ]\r\n }\r\n }\r\n }).submit(function (event) {\r\n event.preventDefault();\r\n\r\n console.log('form is submitting...');\r\n\r\n if ($(this).form('is valid')) {\r\n\r\n console.log('validation successful');\r\n\r\n // disable submit & show spinner\r\n $($(this)).find(':submit').prop('disabled', true);\r\n $($(this)).parent().find('.dimmer').addClass('active');\r\n\r\n var uuid = guid();\r\n console.log(uuid);\r\n $('#g-recaptcha-container').append('');\r\n startTrialWidget = grecaptcha.render(uuid, { 'sitekey': '6Le9slIUAAAAAOCgWkHBhm6tL006aMcWADfUyElq', 'callback': 'StartTrialRecaptchaCallback', 'size': 'invisible', 'badge': 'inline' });\r\n\r\n // call recaptcha -- which then calls the ajax submit\r\n grecaptcha.execute(startTrialWidget);\r\n\r\n } else {\r\n\r\n console.log('validation failed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/start-a-trial/invalid');\r\n\r\n }\r\n\r\n return false;\r\n });\r\n\r\n});\r\n\r\nfunction StartTrialRecaptchaCallback(token) {\r\n\r\n console.log(token);\r\n\r\n // we need to pass the token to the server for validation\r\n $('.ui.form.start-trial').find('input#GoogleRecaptchaResponse').val(token);\r\n\r\n // reset recpatch so it can be re-used (multiple form posts)\r\n grecaptcha.reset(startTrialWidget);\r\n\r\n // re-submit the form with the token\r\n StartTrialPost();\r\n}\r\n\r\nfunction StartTrialPost() {\r\n\r\n var form = $('.ui.form.start-trial');\r\n\r\n // send to server\r\n $.ajax({\r\n type: $(form).attr('method'),\r\n url: $(form).attr('action'),\r\n data: $(form).serialize(),\r\n dataType: \"json\"\r\n }).done(function (data) {\r\n\r\n // job done\r\n if (data) {\r\n\r\n console.log('data indicates post success');\r\n\r\n // reset the form\r\n $('.ui.form.start-trial').trigger('reset');\r\n\r\n // show success message\r\n $('.ui.form.start-trial').find('.positive.message')\r\n .hide()\r\n .animate({\r\n height: \"toggle\",\r\n opacity: \"toggle\"\r\n })\r\n .removeClass('hidden');\r\n\r\n // notify hotjar of success\r\n hj('formSubmitSuccessful');\r\n\r\n // send google page view\r\n window.sendPageView('/form/start-a-trial/submit');\r\n\r\n // failed\r\n } else {\r\n\r\n console.log('data indicates post failed');\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/start-a-trial/exception');\r\n\r\n }\r\n\r\n }).fail(function (jqXhr, status) {\r\n\r\n console.log('submit failed');\r\n\r\n // exception\r\n alert(\"Sorry! An error occurred. Please try again, or contact us for assistance.\");\r\n\r\n // notify hotjar of failure\r\n hj('formSubmitFailed');\r\n\r\n // send google page view\r\n window.sendPageView('/form/start-a-trial/exception');\r\n\r\n }).always(function () {\r\n\r\n console.log('submit completed');\r\n\r\n // HACK spiner staying on when multi-forms submitted\r\n // enable submit & show spinner\r\n $('.ui.form').find(':submit').prop('disabled', false);\r\n $('.ui.form').parent().find('.dimmer').removeClass('active');\r\n\r\n });\r\n\r\n}\r\n","$(document).ready(function () {\r\n\r\n $(\"#btnCookieAck\").on('click', function () {\r\n //get date 1 year from now\r\n var targetDate = new Date();\r\n targetDate.setFullYear(targetDate.getFullYear() + 1);\r\n\r\n //apply cookie then fade away modal\r\n document.cookie = 'ckAck=1;expires=' + targetDate.toUTCString() + ';path=/';\r\n $('#cookie').transition('fade');\r\n });\r\n\r\n $('.ui.checkbox').checkbox();\r\n $('.ui.radio.checkbox').checkbox();\r\n $('select.dropdown').dropdown();\r\n\r\n // Select all links with hashes\r\n $('a[href*=\"#\"]')\r\n // Remove links that don't actually link to anything\r\n .not('[href=\"#\"]')\r\n .not('[href=\"#0\"]')\r\n .click(function (event) {\r\n // On-page links\r\n if (\r\n location.pathname.replace(/^\\//, '') == this.pathname.replace(/^\\//, '')\r\n &&\r\n location.hostname == this.hostname\r\n ) {\r\n // Figure out element to scroll to\r\n var target = $(this.hash);\r\n target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');\r\n // Does a scroll target exist?\r\n if (target.length) {\r\n // Only prevent default if animation is actually gonna happen\r\n event.preventDefault();\r\n $('html, body').animate({\r\n scrollTop: target.offset().top\r\n }, 800, function () {\r\n // nada\r\n });\r\n }\r\n }\r\n });\r\n\r\n // Lazy load images\r\n $('img.lazy')\r\n .visibility({\r\n type: 'image',\r\n transition: 'fade in',\r\n duration: 2000\r\n });\r\n\r\n // more menu on mobile\r\n $(\"#more-menu\").on('click', function () {\r\n\r\n $(\"#main-menu-more-container\").animate({\r\n height: \"toggle\",\r\n opacity: \"toggle\"\r\n });\r\n\r\n });\r\n\r\n // close messages\r\n $('.message .close')\r\n .on('click', function () {\r\n $(this)\r\n .closest('.message')\r\n .transition('fade');\r\n });\r\n\r\n});\r\n\r\nfunction guid() {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\r\n}\r\n"," $.fn.PlaceVimeoThumbnail = function () {\r\n\r\n return this.each(function () {\r\n\r\n var vimeoId = $(this).attr(\"id\");\r\n\r\n var url = 'https://player.vimeo.com/video/' + vimeoId;\r\n\r\n $.ajax({\r\n type: 'GET',\r\n url: 'https://vimeo.com/api/oembed.json?url=' + encodeURIComponent(url),\r\n dataType: 'json',\r\n success: function (data) {\r\n $('#' + vimeoId).attr(\"src\", data.thumbnail_url);\r\n }\r\n });\r\n });\r\n };\r\n \r\n $(function () {\r\n\r\n $(\".image.vimeo\").find(\"img:not(.overlay)\").PlaceVimeoThumbnail();\r\n\r\n }); \r\n"]}