{"version":3,"sources":["host.js"],"names":["_jg","widget","init","widgetName","contentLoaded","window","makeWidget","win","fn","done","top","doc","document","root","documentElement","modern","addEventListener","add","rem","pre","e","type","readyState","call","poll","doScroll","setTimeout","frameElement","Host","options","this","prototype","widgetContainer","getElementById","widgetHostName","getWidgetHostName","widgetBaseUrl","widgetUrl","buildWidget","bindListeners","self","delegateMessage","attachEvent","message","parseMessage","key","value","setWidgetHeight","origin","removeTrailingSlash","data","messageHash","split","forEach","msg","pair","contentHeight","expectedOrigin","postingWidget","script","scripts","getElementsByTagName","hostName","length","i","src","pop","indexOf","replace","getWidgetConfig","getAttribute","trim","config","createElement","referrer","frameBorder","style","border","width","height","appendChild","str","charAt"],"mappings":"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","file":"host.js","sourcesContent":["'use strict';\t\r\n\r\n//Global\r\nvar _jg = _jg || {};\r\n_jg.widget = _jg.widget || {};\r\n\r\n_jg.widget.init = function ( widgetName ) {\r\n\t_jg.widget[widgetName] = _jg.widget[widgetName] || {};\r\n\t_jg.widget[widgetName].widgetName = widgetName;\r\n\t_jg.widget.contentLoaded( window, function() {\r\n\t\t_jg.widget.makeWidget( widgetName );\r\n\t});\r\n};\r\n_jg.widget.contentLoaded = function ( win, fn ) {\r\n\tvar done = false, top = true,\r\n\tdoc = win.document,\r\n\troot = doc.documentElement,\r\n\tmodern = doc.addEventListener,\r\n\tadd = modern ? 'addEventListener' : 'attachEvent',\r\n\trem = modern ? 'removeEventListener' : 'detachEvent',\r\n\tpre = modern ? '' : 'on',\r\n\tinit = function(e) {\r\n\t\tif (e.type === 'readystatechange' && doc.readyState !== 'complete') { \r\n\t\t\treturn;\r\n\t\t}\r\n\t\t(e.type === 'load' ? win : doc)[rem](pre + e.type, init, false);\r\n\t\tif (!done && (done = true)) { \r\n\t\t\tfn.call(win, e.type || e);\r\n\t\t}\t\r\n\t},\r\n\tpoll = function() {\r\n\t\ttry { root.doScroll('left'); } catch(e) { setTimeout(poll, 50); return; }\r\n\t\tinit('poll');\r\n\t};\r\n\tif (doc.readyState === 'complete') { \r\n\t\tfn.call(win, 'lazy'); \r\n\t} else {\r\n\t\tif (!modern && root.doScroll) {\r\n\t\t\ttry { top = !win.frameElement; } catch(e) { }\r\n\t\t\tif (top) { \r\n\t\t\t\tpoll();\r\n\t\t\t}\t\r\n\t\t}\r\n\t\tdoc[add](pre + 'DOMContentLoaded', init, false);\r\n\t\tdoc[add](pre + 'readystatechange', init, false);\r\n\t\twin[add](pre + 'load', init, false);\r\n\t}\r\n};\t\r\n_jg.widget.makeWidget = function ( widgetName ) {\r\n\t_jg.widget[widgetName].widget = new _jg.widget.Host({\r\n\t\twidgetName: widgetName\r\n\t});\r\n};\r\n\r\n/*++++++++++++++++++++++++\r\n+ Host\r\n+++++++++++++++++++++++++*/\r\n_jg.widget.Host = function ( options ) {\r\n\tif ( !options ) {\r\n\t\treturn;\r\n\t}\r\n\t//Kill widgets in IE8 or below\r\n\tif ( !('querySelector' in document && 'localStorage' in window && 'addEventListener' in window) ) {\r\n\t\treturn;\r\n }\r\n this.widgetName = options.widgetName;\r\n\tthis.init();\r\n};\r\n/*++++++++++++++++++++++++\r\n+ Initialize\r\n+++++++++++++++++++++++++*/\r\n_jg.widget.Host.prototype.init = function () {\r\n\tthis.widgetContainer = document.getElementById('jg-' + this.widgetName);\r\n\tvar widgetHostName = this.getWidgetHostName();\r\n\tthis.widgetBaseUrl = 'https://' + widgetHostName;\r\n\tthis.widgetUrl = this.widgetBaseUrl + '/' + this.widgetName + '/'; \r\n\t\r\n\tif ( !this.widgetContainer ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.buildWidget();\r\n\t\tthis.bindListeners();\r\n};\r\n_jg.widget.Host.prototype.bindListeners = function () {\r\n\tvar self = this;\r\n\tif ( window.addEventListener ) {\r\n\t window.addEventListener('message', function( e ) {\r\n\t \tself.delegateMessage.call(self, e);\r\n\t });\t\r\n\t} else {\r\n\t window.attachEvent('onmessage', function( e ) {\r\n\t \tself.delegateMessage.call(self, e);\r\n\t });\t\r\n\t}\r\n};\r\n\r\n/*++++++++++++++++++++++++\r\n+ Incoming messages\r\n+++++++++++++++++++++++++*/\r\n_jg.widget.Host.prototype.delegateMessage = function ( e ) {\r\n\tvar message = this.parseMessage( e );\r\n\t\tif ( !message ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar key = message[0];\r\n\t\tvar value = message[1];\r\n\r\n\tswitch ( key ) {\r\n\t\tcase 'contentHeight':\r\n\t\t\tthis.setWidgetHeight( value );\r\n\t\tbreak;\r\n\t\tdefault:\r\n\t\tbreak;\r\n\t}\t\r\n};\r\n_jg.widget.Host.prototype.parseMessage = function ( e ) {\r\n\tvar origin = this.removeTrailingSlash( e.origin );\r\n\tvar message = e.data;\r\n\tvar messageHash = {};\r\n\t//Hashify the message\r\n\tmessage.split('&').forEach(function( msg ) {\r\n\t\tvar pair = msg.split('=');\r\n \t\tmessageHash[pair[0]] = pair[1]; \r\n\t});\r\n\t//check if our message hash has relevant data\r\n\tif ( !messageHash.widgetName || !messageHash.contentHeight ) {\r\n\t\treturn;\r\n\t}\r\n\t//Only continue if the message is from the expected domain and the same widget type as this widget instance\r\n\tvar expectedOrigin = this.removeTrailingSlash( this.widgetBaseUrl );\r\n\tvar postingWidget = messageHash.widgetName;\r\n\tif ( postingWidget !== this.widgetName || origin !== expectedOrigin ) {\r\n\t\treturn;\r\n\t}\r\n\treturn ['contentHeight', messageHash.contentHeight];\r\n};\r\n\r\n/*++++++++++++++++++++++++\r\n+ Build widget\r\n+++++++++++++++++++++++++*/\r\n_jg.widget.Host.prototype.getWidgetHostName = function () {\r\n\tvar scripts = document.getElementsByTagName('script');\r\n var hostName ='widgets.justgiving.com';\r\n var script; \r\n if( scripts && scripts.length > 0 ) {\r\n for ( var i = 0; i < scripts.length; i++ ) {\r\n \t\tscript = scripts[i];\r\n \t\tif ( script.src && script.src.split('/').pop() === 'host.js' && script.src.indexOf('justgiving') > -1 ) {\r\n \t\t\tif ( script.src.indexOf('://') > -1 ) {\r\n \t\t\thostName = script.src.split('/')[2];\r\n \t\t\t} else {\r\n\t\t\t hostName = script.src.split('/')[0];\r\n\t\t\t }\r\n\t\t\t break;\r\n \t\t}\r\n }\r\n hostName = hostName.replace('8080', '8181');\r\n return hostName;\r\n }\r\n};\r\n_jg.widget.Host.prototype.getWidgetConfig = function () {\r\n\treturn this.widgetContainer.getAttribute('data-config') && \r\n\t\tthis.widgetContainer\r\n\t\t\t.getAttribute('data-config')\r\n\t\t\t.replace(/:/gi, '=')\r\n\t\t\t.replace(/,/gi, '&')\r\n\t\t\t.trim();\r\n};\r\n_jg.widget.Host.prototype.buildWidget = function () {\r\n\tvar config = this.getWidgetConfig();\r\n\tthis.widget = document.createElement('iframe');\r\n\tthis.widget.src = config ? this.widgetUrl + '?' + config + '&parentReferrer=' + document.referrer : \r\n\t\tthis.widgetUrl + '?parentReferrer=' + document.referrer;\r\n\tthis.widget.frameBorder = 0;\r\n\tthis.widget.style.border = 0;\r\n\tthis.widget.style.width = '100%';\r\n\tthis.widget.style.height = 0;\r\n\tthis.widgetContainer.appendChild( this.widget );\r\n};\r\n\r\n/*++++++++++++++++++++++++\r\n+ Message handlers\r\n+++++++++++++++++++++++++*/\r\n_jg.widget.Host.prototype.setWidgetHeight = function( height ) {\r\n\tthis.widget.style.height = '100%';\r\n\tthis.widgetContainer.style.height = height + 'px';\r\n};\r\n\r\n/*++++++++++++++++++++++++\r\n+ Utils\r\n+++++++++++++++++++++++++*/\r\n_jg.widget.Host.prototype.removeTrailingSlash = function ( str ) {\r\n\treturn str.charAt(str.length - 1) === '/' ? str.replace(/\\/$/, '') : str;\r\n};\n'use strict';\t\r\n\r\nwindow._jg.widget.init( 'crowdfunding-pledge-box' );\r\n"]}