'use strict'; (function(){ var isDescendantOf = function(element, tagName){ tagName = tagName.toUpperCase(); var isDescendant = false; var parentElement; while ( parentElement = element.parentElement ){ isDescendant = isDescendant || parentElement.nodeName === tagName; element = parentElement; } return isDescendant; } if ( typeof dmnConfig === 'undefined' || !dmnConfig.fields ){ var dmnFormHtml = '
'; if ( typeof dmnElement !== 'undefined' && dmnElement ){ dmnElement.insertAdjacentHTML('beforeend', dmnFormHtml); } else { var scripts = document.getElementsByTagName('script'); var numScripts = scripts.length; var written = false; for ( var i = 0; i < numScripts; i++ ){ var currentScript = scripts[i]; if ( !written && decodeURIComponent(currentScript.src).indexOf("designmynight.com/pw?v=3&r=3065679") > -1 ){ if ( isDescendantOf(currentScript, 'body') ){ currentScript.insertAdjacentHTML('afterend', '
'); written = true; } } } if ( !written ){ document.write('
'); } } } })(); var DMN = DMN || {}; DMN.baseUrl = 'https://www.designmynight.com'; DMN.partnersUrl = 'https://partners.designmynight.com'; DMN.formConfig = DMN.formConfig || {}; DMN.formConfig[3065679] = {"type":"tonic","eventIds":[],"format":false,"stage":false,"showContent":false,"params":"?v=3&r=3065679","title":false,"logo":"\/\/static.designmynight.com\/images\/design-my-night.png"}; 'use strict'; // Polyfill for String.trim() ''.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g,'')}) // Polyfill for indexOf() if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt /*, from*/) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; } DMN.loadScript = function(url, callback){ var script = document.createElement("script"); script.type = "text/javascript"; if (script.readyState){ //IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(); } } } else { //Others script.onload = function(){ callback(); } } script.src = url; document.getElementsByTagName("head")[0].appendChild(script); } DMN.loadCss = function(url){ var fileref=document.createElement("link") fileref.setAttribute("rel", "stylesheet") fileref.setAttribute("type", "text/css") fileref.setAttribute("href", url) if (typeof fileref!="undefined") { document.getElementsByTagName("head")[0].appendChild(fileref) } }; DMN.ready = (function () { var ready_event_fired = false; var ready_event_listener = function (fn) { // Create an idempotent version of the 'fn' function var idempotent_fn = function () { if (ready_event_fired) { return; } ready_event_fired = true; return fn(); } // The DOM ready check for Internet Explorer var do_scroll_check = function () { if (ready_event_fired) { return; } // If IE is used, use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ try { document.documentElement.doScroll('left'); } catch(e) { setTimeout(do_scroll_check, 1); return; } // Execute any waiting functions return idempotent_fn(); } // If the browser ready event has already occured if (document.readyState === "complete") { return idempotent_fn() } // Mozilla, Opera and webkit nightlies currently support this event if (document.addEventListener) { // Use the handy event callback document.addEventListener("DOMContentLoaded", idempotent_fn, false); // A fallback to window.onload, that will always work window.addEventListener("load", idempotent_fn, false); // If IE event model is used } else if (document.attachEvent) { // ensure firing before onload; maybe late but safe also for iframes document.attachEvent("onreadystatechange", idempotent_fn); // A fallback to window.onload, that will always work window.attachEvent("onload", idempotent_fn); // If IE and not a frame: continually check to see if the document is ready var toplevel = false; try { toplevel = window.frameElement == null; } catch (e) {} if (document.documentElement.doScroll && toplevel) { return do_scroll_check(); } } }; return ready_event_listener; })(); DMN.getFormScope = function(formId){ // Get the first form if none specified if ( !formId ){ var forms = DMN.formConfig; var formId; angular.forEach( forms, function(config, id){ if ( !formId ){ formId = id; } }); } var form = angular.element(document.getElementById('dmn-form-' + formId)); var formScope = form.scope(); return formScope; } DMN.val = function(){ if (!arguments.length){ return false; } if ( !angular.isObject(arguments[0]) ){ arguments[0] = { field: arguments[0], value: arguments[1] }; } var defaults = { formId: false } var options = angular.extend({}, defaults, arguments[0]); // Stop if no input specified if ( !options.field ){ return false; } // Get the form scope var formScope = DMN.getFormScope(options.formId); // Stop if no form scope if ( !formScope ){ return false; } // Return the current value if no value specified if ( typeof options.value === 'undefined' ){ return formScope[options.field]; } // Try to get the type from the name if it's not a known type ID if ( options.field === 'type' && !formScope.currentVenue.booking_types[options.value] ){ var found = false; angular.forEach( formScope.currentVenue.booking_types, function(type){ if ( type.name.trim() == options.value.trim() ){ options.value = type.id; found = true; } }); // Return false if we didn't find the type if ( !found ){ return false; } } // Try to get the venue from the name if it's not a Mongo ID else if ( options.field === 'venue_id' && !(options.value.length == 24 && options.value.match(/[^0-9a-f]/)) ){ var found = false; angular.forEach( formScope.venues, function(venue, index){ if ( venue.title.trim() == options.value.trim() ){ options.value = venue._id; found = true; } }); // Return false if we didn't find the venue if ( !found ){ return false; } } formScope.$apply(function(){ formScope[options.field] = options.value; }); return this; } DMN.toggleInput = function(){ if (!arguments.length){ return false; } if ( !angular.isObject(arguments[0]) ){ arguments[0] = { input: arguments[0], visible: arguments[1] }; } var defaults = { formId: false } var options = angular.extend({}, defaults, arguments[0]); // Stop if no input specified if ( !options.input ){ return false; } // Get the form scope var formScope = DMN.getFormScope(options.formId); // Stop if no form scope if ( !formScope ){ return false; } formScope.$apply(function(){ formScope.hiddenInputs = formScope.hiddenInputs || {}; if ( typeof options.visible === 'undefined' ){ formScope.hiddenInputs[options.input] = !formScope.hiddenInputs[options.input]; } else { formScope.hiddenInputs[options.input] = !options.visible; } }); return this; } DMN.showInput = function(input){ return DMN.toggleInput.call(this, input, true); } DMN.hideInput = function(input){ return DMN.toggleInput.call(this, input, false); } DMN.addCustomData = function(key, value){ var defaults = { formId: false } var options = angular.extend({}, defaults, arguments[0]); // Get the form scope var formScope = DMN.getFormScope(options.formId); formScope.customData = formScope.customData || {}; formScope.customData[key] = value; return this; } var DMN=DMN||{},tonicPartnerWidget=void 0;DMN.getFormConfig=function(){var e=void 0;if(angular.forEach(DMN.formConfig,function(n,t){DMN.formId||n.rendered||"tonic"!==n.type||(DMN.formId=t,e=n)}),DMN.formId)return e},DMN.getFormScriptNode=function(e){DMN.pwScript=void 0;for(var n=document.getElementsByTagName("script"),t=0;t-1&&(DMN.pwScript=n[t])}return DMN.pwScript},DMN.getConfigFromAttr=function(e,n){var t=void 0;return DMN.pwScript&&(t=DMN.pwScript.attributes[e]?DMN.pwScript.attributes[e].value:n?n:"",t="no"!=t&&("yes"==t||t)),t},DMN.setAsRendered=function(){DMN.formId&&(DMN.formConfig[DMN.formId].rendered=!0)},DMN.getConfigFromJson=function(e){var n={},t=document.getElementById(e);return t&&(n=JSON.parse(document.getElementById(e).textContent)),n},DMN.ready(function(){var e=function(){DMN.angular=angular;var e=DMN.partnersUrl+"/js/partner-ticket-widget-vendor-v3.min.js?v=1.8.18";DMN.loadScript(e,DMN.pwInit)},n=function(){DMN.loadScript("https://ajax.googleapis.com/ajax/libs/angularjs/1.5.11/angular-sanitize.min.js",e)};DMN.loadScript("https://ajax.googleapis.com/ajax/libs/angularjs/1.5.11/angular.min.js",n)}),DMN.pwInit=function(){console.log(DMN);var e=DMN.getFormConfig();DMN.getFormScriptNode(e.params),DMN.moment.updateLocale("en",{week:{dow:1}}),tonicPartnerWidget=DMN.angular.module("tonic.PartnerTicketWidget",["ngSanitize","ngDMN.DmnUtils","ngDMN.EnvironmentConfig","ngDMN.MomentService","ngDMN.RecurrenceFactory","ngDMN.DateRestrictionFactory","ngDMN.anchorSmoothScroll","tonic.ticketWidget.package"]).service("APIInterceptor",[function(){this.request=function(e){return e.headers["X-DMN-APP-NAME"]="tonic_partner_ticket_widget",e}}]).config(["$httpProvider",function(e){e.interceptors.push("APIInterceptor")}]).config(["$windowProvider","TonicWidgetConfig",function(e,n){var t=e.$get(),r=t.DMN.baseUrl.indexOf("//")+2,o=t.DMN.baseUrl.substr(r),i=o.split(".");switch(i[0]){case"dev":n.environment="dev";break;case"qa":n.environment="qa";break;default:n.environment="prod"}var a=t.DMN.getConfigFromAttr("item-ids","");t.DMN.setAsRendered(),n.eventId=a,n.source="partner",n.checkoutMode="modal",n.poweredBy={logo:"https://static.designmynight.com/images/powered-by-small.png",title:"Powered by DesignMyNight",url:"https://www.designmynight.com"};var c=t.DMN.getConfigFromJson("tonic-widget-config-"+DMN.formId);angular.forEach(c,function(e,t){switch(t){case"source":n.source=e;break;default:n.customOptions[t]=e}})}]).config(["$localeProvider",function(e){e.$get=function(){return{id:"en-gb",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"£"}}}}]),tonicPartnerWidget.controller("PartnerTicketWidgetController",["$scope","EnvironmentConfig","TonicWidgetConfig",function(e,n,t){n.setEnvironment(t.environment)}]);var n=document.getElementById("tonic-widget-"+DMN.formId);DMN.angular.bootstrap(n,["tonic.PartnerTicketWidget"])};