diff --git a/airtime_mvc/application/controllers/EmbeddableplayerController.php b/airtime_mvc/application/controllers/EmbeddableplayerController.php index f30683b79..4536d7e18 100644 --- a/airtime_mvc/application/controllers/EmbeddableplayerController.php +++ b/airtime_mvc/application/controllers/EmbeddableplayerController.php @@ -9,12 +9,13 @@ class EmbeddablePlayerController extends Zend_Controller_Action public function indexAction() { - $CC_CONFIG = Config::getConfig(); - $baseUrl = Application_Common_OsPath::getBaseDir(); - $this->view->headLink()->appendStylesheet($baseUrl.'css/embed-player.css?'.$CC_CONFIG['airtime_version']); - $form = new Application_Form_EmbeddablePlayer(); $this->view->form = $form; } + + public function embedCodeAction() + { + $this->view->layout()->disableLayout(); + } } \ No newline at end of file diff --git a/airtime_mvc/application/forms/EmbeddablePlayer.php b/airtime_mvc/application/forms/EmbeddablePlayer.php index 00f49384a..4b9353aad 100644 --- a/airtime_mvc/application/forms/EmbeddablePlayer.php +++ b/airtime_mvc/application/forms/EmbeddablePlayer.php @@ -11,7 +11,7 @@ class Application_Form_EmbeddablePlayer extends Zend_Form_SubForm $embedSrc = new Zend_Form_Element_Text('player_embed_src'); $embedSrc->setAttrib("readonly", "readonly"); $embedSrc->setAttrib("class", "player_embed_src"); - $embedSrc->setValue(''); + $embedSrc->setValue(''); $embedSrc->removeDecorator('label'); $this->addElement($embedSrc); diff --git a/airtime_mvc/application/views/scripts/embeddableplayer/embed-code.phtml b/airtime_mvc/application/views/scripts/embeddableplayer/embed-code.phtml new file mode 100644 index 000000000..74da31357 --- /dev/null +++ b/airtime_mvc/application/views/scripts/embeddableplayer/embed-code.phtml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/form/embeddableplayer.phtml b/airtime_mvc/application/views/scripts/form/embeddableplayer.phtml index f1ca8d478..568540d7f 100644 --- a/airtime_mvc/application/views/scripts/form/embeddableplayer.phtml +++ b/airtime_mvc/application/views/scripts/form/embeddableplayer.phtml @@ -8,6 +8,6 @@ element->getElement('player_stream_url'); ?>
-
player preview holder
+ \ No newline at end of file diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean.xml b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean.xml new file mode 100644 index 000000000..57d7c3eab --- /dev/null +++ b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/bg.png b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/bg.png new file mode 100644 index 000000000..a399e16be Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/bg.png differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/holder.png b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/holder.png new file mode 100644 index 000000000..8b61d2345 Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/holder.png differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/play.gif b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/play.gif new file mode 100644 index 000000000..150591ffc Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/play.gif differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/playclick.jpg b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/playclick.jpg new file mode 100644 index 000000000..48bbd4954 Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/playclick.jpg differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/statusplay.png b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/statusplay.png new file mode 100644 index 000000000..d751aac25 Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/statusplay.png differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/statusstop.png b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/statusstop.png new file mode 100644 index 000000000..e0cce0d1a Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/statusstop.png differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/stop.jpg b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/stop.jpg new file mode 100644 index 000000000..c7fda38d8 Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/stop.jpg differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/stopclick.jpg b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/stopclick.jpg new file mode 100644 index 000000000..a25e025be Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/ffmp3-mcclean/stopclick.jpg differ diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/mrp.js b/airtime_mvc/public/js/airtime/embeddableplayer/mrp.js new file mode 100644 index 000000000..74bc30836 --- /dev/null +++ b/airtime_mvc/public/js/airtime/embeddableplayer/mrp.js @@ -0,0 +1,3012 @@ +(function(n) { + function w(a, c) { + function r() {} + r.prototype = a; + var b = new r, + f; + for (f in c) b[f] = c[f]; + c.toString !== Object.prototype.toString && (b.toString = c.toString); + return b + } + + function B(a) { + return a instanceof Array ? function() { + return m.iter(a) + } : "function" == typeof a.iterator ? p(a, a.iterator) : a.iterator + } + + function p(a, c) { + if (null == c) return null; + null == c.__id__ && (c.__id__ = G++); + var b; + null == a.hx__closures__ ? a.hx__closures__ = {} : b = a.hx__closures__[c.__id__]; + null == b && (b = function() { + return b.method.apply(b.scope, arguments) + }, + b.scope = a, b.method = c, a.hx__closures__[c.__id__] = b); + return b + } + n.muses = n.muses || {}; + var s = function(a, c) { + c = c.split("u").join(""); + this.r = new RegExp(a, c) + }; + s.__name__ = !0; + s.prototype = { + r: null, + match: function(a) { + this.r.global && (this.r.lastIndex = 0); + this.r.m = this.r.exec(a); + this.r.s = a; + return null != this.r.m + }, + matched: function(a) { + if (null != this.r.m && 0 <= a && a < this.r.m.length) return this.r.m[a]; + throw "EReg::matched"; + }, + __class__: s + }; + var m = function() {}; + m.__name__ = !0; + m.cca = function(a, c) { + var b = a.charCodeAt(c); + return b != b ? void 0 : + b + }; + m.substr = function(a, c, b) { + if (null != c && 0 != c && null != b && 0 > b) return ""; + null == b && (b = a.length); + 0 > c ? (c = a.length + c, 0 > c && (c = 0)) : 0 > b && (b = a.length + b - c); + return a.substr(c, b) + }; + m.indexOf = function(a, c, b) { + var e = a.length; + 0 > b && (b += e, 0 > b && (b = 0)); + for (; b < e;) { + if (a[b] === c) return b; + b++ + } + return -1 + }; + m.remove = function(a, c) { + var b = m.indexOf(a, c, 0); + if (-1 == b) return !1; + a.splice(b, 1); + return !0 + }; + m.iter = function(a) { + return { + cur: 0, + arr: a, + hasNext: function() { + return this.cur < this.arr.length + }, + next: function() { + return this.arr[this.cur++] + } + } + }; + var x = + function() {}; + x.__name__ = !0; + x.exists = function(a, c) { + for (var b = B(a)(); b.hasNext();) { + var e = b.next(); + if (c(e)) return !0 + } + return !1 + }; + var A = function() { + this.length = 0 + }; + A.__name__ = !0; + A.prototype = { + h: null, + length: null, + iterator: function() { + return { + h: this.h, + hasNext: function() { + return null != this.h + }, + next: function() { + if (null == this.h) return null; + var a = this.h[0]; + this.h = this.h[1]; + return a + } + } + }, + __class__: A + }; + var g = n.MRP = function() {}; + g.__name__ = !0; + g.setObject = function() { + eval("MRP.instance = document." + g.objectId + ";"); + null == g.instance && + (g.instance = document.getElementById(g.objectId)) + }; + g.setElementId = function(a) { + g.elementId = a + }; + g.setObjectId = function(a) { + g.objectId = a; + g.setObject() + }; + g.play = function() { + g.instance.playSound() + }; + g.stop = function() { + g.instance.stopSound() + }; + g.setVolume = function(a) { + g.instance.setVolume(a / 100) + }; + g.showInfo = function(a) { + g.instance.showInfo(a) + }; + g.setTitle = function(a) { + g.instance.setTitle(a) + }; + g.setUrl = function(a) { + g.instance.setUrl(a) + }; + g.setFallbackUrl = function(a) { + g.instance.setFallbackUrl(a) + }; + g.setCallbackFunction = + function(a) { + musesCallback = a + }; + g.callbackExists = function() { + var a = "error", + a = typeof musesCallback; + return "undefined" != a && "error" != a + }; + g.getScriptBaseHREF = function() { + return ("https:" == window.document.location.protocol ? "https://" : "http://") + "hosted.muses.org" + }; + g.getSkin = function(a, c) { + return -1 != a.indexOf("/") || c && ("original" == a || "tiny" == a) ? a : g.getScriptBaseHREF() + "/muses-" + a + ".xml" + }; + g.insert = function(a) { + null == a.elementId && null != g.elementId && (a.elementId = g.elementId); + FlashDetect.versionAtLeast(10, 1) ? g.flashInsert(a) : + g.jsInsert(a) + }; + g.jsInsert = function(a) { + a.autoplay = !1; + g.playerCounter++; + var c = "MusesRadioPlayer-HTML5-player-" + g.playerCounter, + b = '
'; + null == a.elementId ? window.document.write(b) : window.document.getElementById(a.elementId).innerHTML = b; + a.elementId = c; + a.skin = g.getSkin(a.skin, !1); + new d.Muses(a) + }; + g.flashInsert = function(a) { + null == a.wmode && (a.wmode = "window"); + null == a.id && (a.id = g.objectId); + var c = "url=" + a.url, + c = c + ("&lang=" + (null != a.lang ? a.lang : + "auto")), + c = c + ("&codec=" + a.codec), + c = c + "&tracking=true" + ("&volume=" + (null != a.volume ? a.volume : 100)); + null != a.introurl && (c += "&introurl=" + a.introurl); + null != a.autoplay && (c += "&autoplay=" + (a.autoplay ? "true" : "false")); + null != a.jsevents && (c += "&jsevents=" + (a.jsevents ? "true" : "false")); + null != a.buffering && (c += "&buffering=" + a.buffering); + null != a.metadataProxy && (c += "&metadataproxy=" + a.metadataProxy); + null != a.reconnectTime && (c += "&reconnecttime=" + a.reconnectTime); + null != a.fallbackUrl && (c += "&fallback=" + a.fallbackUrl); + var c = + c + ("&skin=" + g.getSkin(a.skin, !0)), + c = c + ("&title=" + a.title), + c = c + ("&welcome=" + a.welcome), + b = g.getScriptBaseHREF() + "/muses-hosted.swf", + e = 'width="' + a.width + '" height="' + a.height + '" '; + null != a.bgcolor && (e += 'bgcolor="' + a.bgcolor + '" '); + var f = '", + f = f + ('') + (''), + f = f + (''), + f = f + '', + f = f + ''; + null != a.bgcolor && (f += ''); + f += ''; + f += ""; + null != a.callbackFunction ? g.setCallbackFunction(a.callbackFunction) : 1 != a.jsevents || g.callbackExists() || g.setCallbackFunction(function(a, c) {}); + null == a.elementId ? window.document.write(f) : window.document.getElementById(a.elementId).innerHTML = + f; + g.setObject() + }; + g.main = function() { + g.getScriptBaseHREF() + }; + var z = function() {}; + z.__name__ = !0; + z.prototype = { + exists: null, + remove: null, + iterator: null, + __class__: z + }; + Math.__name__ = !0; + var v = function() {}; + v.__name__ = !0; + v.field = function(a, c) { + try { + return a[c] + } catch (b) { + return null + } + }; + v.setField = function(a, c, b) { + a[c] = b + }; + v.isFunction = function(a) { + return "function" == typeof a && !(a.__name__ || a.__ename__) + }; + var y = function() {}; + y.__name__ = !0; + y.string = function(a) { + return u.Boot.__string_rec(a, "") + }; + y.parseInt = function(a) { + var c = parseInt(a, + 10); + 0 != c || 120 != m.cca(a, 1) && 88 != m.cca(a, 1) || (c = parseInt(a)); + return isNaN(c) ? null : c + }; + var C = function() { + this.b = "" + }; + C.__name__ = !0; + C.prototype = { + b: null, + add: function(a) { + this.b += y.string(a) + }, + addSub: function(a, c, b) { + this.b = null == b ? this.b + m.substr(a, c, null) : this.b + m.substr(a, c, b) + }, + __class__: C + }; + var t = function() {}; + t.__name__ = !0; + t.urlEncode = function(a) { + return encodeURIComponent(a) + }; + t.isSpace = function(a, c) { + var b = m.cca(a, c); + return 8 < b && 14 > b || 32 == b + }; + t.ltrim = function(a) { + for (var c = a.length, b = 0; b < c && t.isSpace(a, b);) b++; + return 0 < b ? m.substr(a, b, c - b) : a + }; + t.rtrim = function(a) { + for (var c = a.length, b = 0; b < c && t.isSpace(a, c - b - 1);) b++; + return 0 < b ? m.substr(a, 0, c - b) : a + }; + t.trim = function(a) { + return t.ltrim(t.rtrim(a)) + }; + t.replace = function(a, c, b) { + return a.split(c).join(b) + }; + t.fastCodeAt = function(a, c) { + return a.charCodeAt(c) + }; + var D = function() {}; + D.__name__ = !0; + D.getInstanceFields = function(a) { + var c = [], + b; + for (b in a.prototype) c.push(b); + m.remove(c, "__class__"); + m.remove(c, "__properties__"); + return c + }; + var h = function() {}; + h.__name__ = !0; + h.parse = function(a) { + return q.xml.Parser.parse(a) + }; + h.createElement = function(a) { + var c = new h; + c.nodeType = h.Element; + c._children = []; + c._attributes = new q.ds.StringMap; + c.set_nodeName(a); + return c + }; + h.createPCData = function(a) { + var c = new h; + c.nodeType = h.PCData; + c.set_nodeValue(a); + return c + }; + h.createCData = function(a) { + var c = new h; + c.nodeType = h.CData; + c.set_nodeValue(a); + return c + }; + h.createComment = function(a) { + var c = new h; + c.nodeType = h.Comment; + c.set_nodeValue(a); + return c + }; + h.createDocType = function(a) { + var c = new h; + c.nodeType = h.DocType; + c.set_nodeValue(a); + return c + }; + h.createProcessingInstruction = + function(a) { + var c = new h; + c.nodeType = h.ProcessingInstruction; + c.set_nodeValue(a); + return c + }; + h.createDocument = function() { + var a = new h; + a.nodeType = h.Document; + a._children = []; + return a + }; + h.prototype = { + nodeType: null, + _nodeName: null, + _nodeValue: null, + _attributes: null, + _children: null, + _parent: null, + get_nodeName: function() { + if (this.nodeType != h.Element) throw "bad nodeType"; + return this._nodeName + }, + set_nodeName: function(a) { + if (this.nodeType != h.Element) throw "bad nodeType"; + return this._nodeName = a + }, + set_nodeValue: function(a) { + if (this.nodeType == + h.Element || this.nodeType == h.Document) throw "bad nodeType"; + return this._nodeValue = a + }, + get: function(a) { + if (this.nodeType != h.Element) throw "bad nodeType"; + return this._attributes.get(a) + }, + set: function(a, c) { + if (this.nodeType != h.Element) throw "bad nodeType"; + this._attributes.set(a, c) + }, + exists: function(a) { + if (this.nodeType != h.Element) throw "bad nodeType"; + return this._attributes.exists(a) + }, + attributes: function() { + if (this.nodeType != h.Element) throw "bad nodeType"; + return this._attributes.keys() + }, + elements: function() { + if (null == + this._children) throw "bad nodetype"; + return { + cur: 0, + x: this._children, + hasNext: function() { + for (var a = this.cur, c = this.x.length; a < c && this.x[a].nodeType != h.Element;) a += 1; + this.cur = a; + return a < c + }, + next: function() { + for (var a = this.cur, c = this.x.length; a < c;) { + var b = this.x[a], + a = a + 1; + if (b.nodeType == h.Element) return this.cur = a, b + } + return null + } + } + }, + addChild: function(a) { + if (null == this._children) throw "bad nodetype"; + null != a._parent && m.remove(a._parent._children, a); + a._parent = this; + this._children.push(a) + }, + __class__: h + }; + var b = { + Campaign: function(a) { + this.responseCount = + 0; + "direct" != a && "organic" != a && "referral" != a && b.Tracker._raiseError("Campaign type has to be one of the Campaign::TYPE_* constant values.", "Campaign.new"); + this.type = a; + switch (a) { + case "direct": + this.source = this.name = "(direct)"; + this.medium = "(none)"; + break; + case "referral": + this.name = "(referral)"; + this.medium = "referral"; + break; + case "organic": + this.name = "(organic)", this.medium = "organic" + } + this.creationTime = new b.DateTime + } + }; + b.Campaign.__name__ = !0; + b.Campaign.createFromReferrer = function(a) { + var c = new b.Campaign("referral"); + a = new b.URLParser(a); + c.source = a.host; + c.content = a.path; + return c + }; + b.Campaign.prototype = { + type: null, + creationTime: null, + responseCount: null, + id: null, + source: null, + gClickId: null, + dClickId: null, + name: null, + medium: null, + term: null, + content: null, + validate: function() { + null == this.source && b.Tracker._raiseError('Campaigns need to have at least the "source" attribute defined.', "Campaign.validate") + }, + setType: function(a) { + this.type = a + }, + getType: function() { + return this.type + }, + setCreationTime: function(a) { + this.creationTime = a + }, + getCreationTime: function() { + return this.creationTime + }, + setResponseCount: function(a) { + this.responseCount = a + }, + getResponseCount: function() { + return this.responseCount + }, + increaseResponseCount: function(a) { + null == a && (a = 1); + this.responseCount += a + }, + setId: function(a) { + this.id = a + }, + getId: function() { + return this.id + }, + setSource: function(a) { + this.source = a + }, + getSource: function() { + return this.source + }, + setGClickId: function(a) { + this.gClickId = a + }, + getGClickId: function() { + return this.gClickId + }, + setDClickId: function(a) { + this.dClickId = a + }, + getDClickId: function() { + return this.dClickId + }, + setName: function(a) { + this.name = + a + }, + getName: function() { + return this.name + }, + setMedium: function(a) { + this.medium = a + }, + getMedium: function() { + return this.medium + }, + setTerm: function(a) { + this.term = a + }, + getTerm: function() { + return this.term + }, + setContent: function(a) { + this.content = a + }, + getContent: function() { + return this.content + }, + __class__: b.Campaign + }; + b.Config = function(a) { + null == a && (a = !1); + this.sitespeedSampleRate = 1; + this.endPointPath = "/__utm.gif"; + this.endPointHost = "www.google-analytics.com"; + this.urlScheme = "http"; + this.requestTimeout = 1; + this.sendOnShutdown = this.fireAndForget = !1; + this.errorSeverity = 2; + this.setUrlScheme("http" + (a ? "s" : "")) + }; + b.Config.__name__ = !0; + b.Config.prototype = { + errorSeverity: null, + sendOnShutdown: null, + fireAndForget: null, + loggingCallback: null, + requestTimeout: null, + urlScheme: null, + endPointHost: null, + endPointPath: null, + sitespeedSampleRate: null, + getErrorSeverity: function() { + return this.errorSeverity + }, + setErrorSeverity: function(a) { + this.errorSeverity = a + }, + getSendOnShutdown: function() { + return this.sendOnShutdown + }, + setSendOnShutdown: function(a) { + this.sendOnShutdown = a + }, + getFireAndForget: function() { + return this.fireAndForget + }, + setFireAndForget: function(a) { + this.fireAndForget = a + }, + getLoggingCallback: function() { + return this.loggingCallback + }, + setLoggingCallback: function(a) { + this.loggingCallback = a + }, + getRequestTimeout: function() { + return this.requestTimeout + }, + setRequestTimeout: function(a) { + this.requestTimeout = a + }, + getUrlScheme: function() { + return this.urlScheme + }, + setUrlScheme: function(a) { + return this.urlScheme = a + }, + getEndPointHost: function() { + return this.endPointHost + }, + setEndPointHost: function(a) { + this.endPointHost = a + }, + getEndPointPath: function() { + return this.endPointPath + }, + setEndPointPath: function(a) { + this.endPointPath = a + }, + getSitespeedSampleRate: function() { + return this.sitespeedSampleRate + }, + setSitespeedSampleRate: function(a) { + 0 > a || 100 < a ? b.Tracker._raiseError("For consistency with ga.js, sample rates must be specified as a number between 0 and 100.", "config.setSitespeedSampleRate") : this.sitespeedSampleRate = a + }, + __class__: b.Config + }; + b.CustomVariable = function(a, c, b, e) { + null == e && (e = 0); + null == a && (a = 0); + this.scope = 3; + 0 != a && this.setIndex(a); + null != c && this.setName(c); + null != b && this.setValue(b); + 0 != e && this.setScope(e) + }; + b.CustomVariable.__name__ = !0; + b.CustomVariable.prototype = { + index: null, + name: null, + value: null, + scope: null, + validate: function() { + 128 < (this.name + y.string(this.value)).length && b.Tracker._raiseError("Custom Variable combined name and value length must not be larger than 128 bytes.", "CustomVariable.validate") + }, + getIndex: function() { + return this.index + }, + setIndex: function(a) { + (1 > a || 5 < a) && b.Tracker._raiseError("Custom Variable index has to be between 1 and 5.", "CustomVariable.setIndex"); + this.index = + a + }, + getName: function() { + return this.name + }, + setName: function(a) { + this.name = a + }, + getValue: function() { + return this.value + }, + setValue: function(a) { + this.value = a + }, + getScope: function() { + return this.scope + }, + setScope: function(a) { + 3 != a && 2 != a && 1 != a && b.Tracker._raiseError("Custom Variable scope has to be one of the CustomVariable::SCOPE_* constant values.", "CustomVariable.setScope"); + this.scope = a + }, + __class__: b.CustomVariable + }; + b.DateTime = function(a) { + this.date = null == a ? Math.round((new Date).getTime()) + "" : a + }; + b.DateTime.__name__ = !0; + b.DateTime.prototype = { + date: null, + toString: function() { + return this.date + }, + __class__: b.DateTime + }; + b.Event = function(a, c, b, e, f) { + null == f && (f = !1); + null == e && (e = 0); + this.noninteraction = !1; + null != a && this.setCategory(a); + null != c && this.setAction(c); + null != b && this.setLabel(b); + this.setValue(e); + this.setNoninteraction(f) + }; + b.Event.__name__ = !0; + b.Event.prototype = { + category: null, + action: null, + label: null, + value: null, + noninteraction: null, + validate: function() { + null != this.category && null != this.action || b.Tracker._raiseError("Events need at least to have a category and action defined.", + "Event.validate") + }, + getCategory: function() { + return this.category + }, + setCategory: function(a) { + this.category = a + }, + getAction: function() { + return this.action + }, + setAction: function(a) { + this.action = a + }, + getLabel: function() { + return this.label + }, + setLabel: function(a) { + this.label = a + }, + getValue: function() { + return this.value + }, + setValue: function(a) { + this.value = a + }, + getNoninteraction: function() { + return this.noninteraction + }, + setNoninteraction: function(a) { + this.noninteraction = a + }, + __class__: b.Event + }; + b.Item = function() { + this.quantity = 1 + }; + b.Item.__name__ = !0; + b.Item.prototype = { + orderId: null, + sku: null, + name: null, + variation: null, + price: null, + quantity: null, + validate: function() { + null == this.sku && b.Tracker._raiseError("Items need to have a sku/product code defined.", "Item.validate") + }, + getOrderId: function() { + return this.orderId + }, + setOrderId: function(a) { + this.orderId = a + }, + getSku: function() { + return this.sku + }, + setSku: function(a) { + this.sku = a + }, + getName: function() { + return this.name + }, + setName: function(a) { + this.name = a + }, + getVariation: function() { + return this.variation + }, + setVariation: function(a) { + this.variation = + a + }, + getPrice: function() { + return this.price + }, + setPrice: function(a) { + this.price = a + }, + getQuantity: function() { + return this.quantity + }, + setQuantity: function(a) { + this.quantity = a + }, + __class__: b.Item + }; + b.Page = function(a) { + this.setPath(a) + }; + b.Page.__name__ = !0; + b.Page.prototype = { + path: null, + title: null, + charset: null, + referrer: null, + loadTime: null, + setPath: function(a) { + null != a && "/" != a.charAt(0) && b.Tracker._raiseError('The page path should always start with a slash ("/").', "Page.setPath"); + this.path = a + }, + getPath: function() { + return this.path + }, + setTitle: function(a) { + this.title = a + }, + getTitle: function() { + return this.title + }, + setCharset: function(a) { + this.charset = a + }, + getCharset: function() { + return this.charset + }, + setReferrer: function(a) { + this.referrer = a + }, + getReferrer: function() { + return this.referrer + }, + setLoadTime: function(a) { + this.loadTime = a + }, + getLoadTime: function() { + return this.loadTime + }, + __class__: b.Page + }; + b.Session = function() { + this.setSessionId(this.generateSessionId()); + this.setTrackCount(0); + this.setStartTime(new b.DateTime) + }; + b.Session.__name__ = !0; + b.Session.prototype = { + sessionId: null, + trackCount: null, + startTime: null, + fromUtmb: function(a) { + a = a.split("."); + if (4 != a.length) return b.Tracker._raiseError('The given "__utmb" cookie value is invalid.', "Session.fromUtmb"), this; + this.setTrackCount(b.internals.Util.parseInt(a[1], 0)); + this.setStartTime(new b.DateTime(a[3])); + return this + }, + generateSessionId: function() { + return b.internals.Util.generate32bitRandom() + }, + getSessionId: function() { + return this.sessionId + }, + setSessionId: function(a) { + this.sessionId = a + }, + getTrackCount: function() { + return this.trackCount + }, + setTrackCount: function(a) { + this.trackCount = a + }, + increaseTrackCount: function(a) { + null == a && (a = 1); + this.trackCount += a + }, + getStartTime: function() { + return this.startTime + }, + setStartTime: function(a) { + this.startTime = a + }, + __class__: b.Session + }; + b.SocialInteraction = function(a, c, b) { + null != a && this.setNetwork(a); + null != c && this.setAction(c); + null != b && this.setTarget(b) + }; + b.SocialInteraction.__name__ = !0; + b.SocialInteraction.prototype = { + network: null, + action: null, + target: null, + validate: function() { + null != this.network && null != this.action || b.Tracker._raiseError('Social interactions need to have at least the "network" and "action" attributes defined.', + "SocialInteraction.validate") + }, + setNetwork: function(a) { + this.network = a + }, + getNetwork: function() { + return this.network + }, + setAction: function(a) { + this.action = a + }, + getAction: function() { + return this.action + }, + setTarget: function(a) { + this.target = a + }, + getTarget: function() { + return this.target + }, + __class__: b.SocialInteraction + }; + b.Stats = function() {}; + b.Stats.__name__ = !0; + b.Stats.init = function(a, c) { + null == b.Stats.accountId && (b.Stats.accountId = a, b.Stats.domainName = c, b.Stats.tracker = new b.Tracker(a, c), b.Stats.cache = new q.ds.StringMap, + b.Stats.session = new b.Session, b.Stats.loadVisitor()) + }; + b.Stats.trackPageview = function(a, c) { + var r = "page:" + a; + if (!b.Stats.cache.exists(r)) { + var e = new b.Page(a); + null != c && e.setTitle(c); + e = new b._Stats.GATrackObject(e, null); + b.Stats.cache.set(r, e) + } + b.Stats.track(r) + }; + b.Stats.trackEvent = function(a, c, r, e) { + null == e && (e = 0); + var f = "event:" + a + "/" + c + "/" + r + ":" + e; + b.Stats.cache.exists(f) || (a = new b._Stats.GATrackObject(null, new b.Event(a, c, r, e)), b.Stats.cache.set(f, a)); + b.Stats.track(f) + }; + b.Stats.track = function(a) { + b.Stats.cache.get(a).track(b.Stats.tracker, + b.Stats.visitor, b.Stats.session); + b.Stats.persistVisitor() + }; + b.Stats.loadVisitor = function() { + b.Stats.visitor = new b.Visitor; + b.Stats.visitor.setUserAgent("-not-set- [haxe]"); + b.Stats.visitor.setScreenResolution("1024x768"); + b.Stats.visitor.setLocale("en_US"); + b.Stats.visitor.getUniqueId(); + b.Stats.visitor.addSession(b.Stats.session); + b.Stats.persistVisitor() + }; + b.Stats.persistVisitor = function() {}; + b._Stats = {}; + b._Stats.GATrackObject = function(a, c) { + this.page = a; + this.event = c + }; + b._Stats.GATrackObject.__name__ = !0; + b._Stats.GATrackObject.prototype = { + event: null, + page: null, + track: function(a, c, b) { + null != this.page && a.trackPageview(this.page, b, c); + null != this.event && a.trackEvent(this.event, b, c) + }, + __class__: b._Stats.GATrackObject + }; + b.Tracker = function(a, c, r) { + this.allowHash = !0; + this.customVariables = []; + b.Tracker.setConfig(null != r ? r : new b.Config); + this.setAccountId(a); + this.setDomainName(c) + }; + b.Tracker.__name__ = !0; + b.Tracker.getConfig = function() { + return b.Tracker.config + }; + b.Tracker.setConfig = function(a) { + b.Tracker.config = a + }; + b.Tracker._raiseError = function(a, c) { + a = c + "(): " + + a; + switch (null != b.Tracker.config ? b.Tracker.config.getErrorSeverity() : 0) { + case 1: + console.log(a); + break; + case 2: + throw a; + } + }; + b.Tracker.prototype = { + accountId: null, + domainName: null, + allowHash: null, + customVariables: null, + campaign: null, + setAccountId: function(a) { + (new s("^(UA|MO)-[0-9]*-[0-9]*$", "")).match(a) || b.Tracker._raiseError('"' + a + '" is not a valid Google Analytics account ID.', "Tracker.setAccountId"); + this.accountId = a + }, + getAccountId: function() { + return this.accountId + }, + setDomainName: function(a) { + this.domainName = a + }, + getDomainName: function() { + return this.domainName + }, + setAllowHash: function(a) { + this.allowHash = a + }, + getAllowHash: function() { + return this.allowHash + }, + addCustomVariable: function(a) { + a.validate(); + this.customVariables[a.getIndex()] = a + }, + getCustomVariables: function() { + return this.customVariables + }, + removeCustomVariable: function(a) { + m.remove(this.customVariables, this.customVariables[a]) + }, + setCampaign: function(a) { + null != a && a.validate(); + this.campaign = a + }, + getCampaign: function() { + return this.campaign + }, + trackPageview: function(a, + c, r) { + var e = new b.internals.request.PageviewRequest(b.Tracker.config); + e.setPage(a); + e.setSession(c); + e.setVisitor(r); + e.setTracker(this); + e.send() + }, + trackEvent: function(a, c, r) { + a.validate(); + var e = new b.internals.request.EventRequest(b.Tracker.config); + e.setEvent(a); + e.setSession(c); + e.setVisitor(r); + e.setTracker(this); + e.send() + }, + trackTransaction: function(a, c, r) { + a.validate(); + var e = new b.internals.request.TransactionRequest(b.Tracker.config); + e.setTransaction(a); + e.setSession(c); + e.setVisitor(r); + e.setTracker(this); + e.send(); + for (a = a.getItems().iterator(); a.hasNext();) { + e = a.next(); + e.validate(); + var f = new b.internals.request.ItemRequest(b.Tracker.config); + f.setItem(e); + f.setSession(c); + f.setVisitor(r); + f.setTracker(this); + f.send() + } + }, + trackSocial: function(a, c, r, e) { + var f = new b.internals.request.SocialInteractionRequest(b.Tracker.config); + f.setSocialInteraction(a); + f.setPage(c); + f.setSession(r); + f.setVisitor(e); + f.setTracker(this); + f.send() + }, + __class__: b.Tracker + }; + b.Transaction = function() { + this.items = new q.ds.StringMap + }; + b.Transaction.__name__ = !0; + b.Transaction.prototype = { + orderId: null, + affiliation: null, + total: null, + tax: null, + shipping: null, + city: null, + region: null, + country: null, + items: null, + validate: function() { + null == this.items && b.Tracker._raiseError("Transactions need to consist of at least one item.", "Transaction.validate") + }, + addItem: function(a) { + a.setOrderId(this.orderId); + var c = a.getSku(); + this.items.set(c, a) + }, + getItems: function() { + return this.items + }, + getOrderId: function() { + return this.orderId + }, + setOrderId: function(a) { + this.orderId = a; + for (var c = this.items.iterator(); c.hasNext();) c.next().setOrderId(a) + }, + getAffiliation: function() { + return this.affiliation + }, + setAffiliation: function(a) { + this.affiliation = a + }, + getTotal: function() { + return this.total + }, + setTotal: function(a) { + this.total = a + }, + getTax: function() { + return this.tax + }, + setTax: function(a) { + this.tax = a + }, + getShipping: function() { + return this.shipping + }, + setShipping: function(a) { + this.shipping = a + }, + getCity: function() { + return this.city + }, + setCity: function(a) { + this.city = a + }, + getRegion: function() { + return this.region + }, + setRegion: function(a) { + this.region = a + }, + getCountry: function() { + return this.country + }, + setCountry: function(a) { + this.country = a + }, + __class__: b.Transaction + }; + b.URLParser = function(a) { + this.url = a; + var c = new s("^(?:(?![^:@]+:[^:@/]*@)([^:/?#.]+):)?(?://)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:/?#]*)(?::(\\d*))?)(((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[?#]|$)))*/?)?([^?#/]*))(?:\\?([^#]*))?(?:#(.*))?)", ""); + c.match(a); + a = 0; + for (var r = b.URLParser.parts.length; a < r;) { + var e = a++; + v.setField(this, b.URLParser.parts[e], c.matched(e)) + } + }; + b.URLParser.__name__ = !0; + b.URLParser.parse = function(a) { + return new b.URLParser(a) + }; + b.URLParser.prototype = { + url: null, + source: null, + protocol: null, + authority: null, + userInfo: null, + user: null, + password: null, + host: null, + port: null, + relative: null, + path: null, + directory: null, + file: null, + query: null, + anchor: null, + toString: function() { + for (var a = "For Url -> " + this.url + "\n", c = 0, r = b.URLParser.parts.length; c < r;) var e = c++, + a = a + (b.URLParser.parts[e] + ": " + y.string(v.field(this, b.URLParser.parts[e])) + (e == b.URLParser.parts.length - 1 ? "" : "\n")); + return a + }, + __class__: b.URLParser + }; + b.Visitor = function() { + var a = new b.DateTime; + this.uniqueId = + 0; + this.setFirstVisitTime(a); + this.setPreviousVisitTime(a); + this.setCurrentVisitTime(a); + this.setVisitCount(1) + }; + b.Visitor.__name__ = !0; + b.Visitor.prototype = { + uniqueId: null, + firstVisitTime: null, + previousVisitTime: null, + currentVisitTime: null, + visitCount: null, + ipAddress: null, + userAgent: null, + locale: null, + flashVersion: null, + javaEnabled: null, + screenColorDepth: null, + screenResolution: null, + fromUtma: function(a) { + a = a.split("."); + if (6 != a.length) return b.Tracker._raiseError('The given "__utma" cookie value is invalid.', "Visitor.fromUtma"), + this; + this.setUniqueId(b.internals.Util.parseInt(a[1], 0)); + this.setFirstVisitTime(new b.DateTime(a[2])); + this.setPreviousVisitTime(new b.DateTime(a[3])); + this.setCurrentVisitTime(new b.DateTime(a[4])); + this.setVisitCount(b.internals.Util.parseInt(a[5], 0)); + return this + }, + generateHash: function() { + return b.internals.Util.generateHash(this.userAgent + this.screenResolution + this.screenColorDepth) + }, + generateUniqueId: function() { + return (b.internals.Util.generate32bitRandom() ^ this.generateHash()) & 2147483647 + }, + setUniqueId: function(a) { + (0 > + a || 2147483647 < a) && b.Tracker._raiseError("Visitor unique ID has to be a 32-bit integer between 0 and 2147483647.", "Visitor.setUniqueId"); + this.uniqueId = a + }, + getUniqueId: function() { + 0 == this.uniqueId && (this.uniqueId = this.generateUniqueId()); + return this.uniqueId + }, + addSession: function(a) { + a = a.getStartTime(); + a != this.currentVisitTime && (this.previousVisitTime = this.currentVisitTime, this.currentVisitTime = a, ++this.visitCount) + }, + setFirstVisitTime: function(a) { + this.firstVisitTime = a + }, + getFirstVisitTime: function() { + return this.firstVisitTime + }, + setPreviousVisitTime: function(a) { + this.previousVisitTime = a + }, + getPreviousVisitTime: function() { + return this.previousVisitTime + }, + setCurrentVisitTime: function(a) { + this.currentVisitTime = a + }, + getCurrentVisitTime: function() { + return this.currentVisitTime + }, + setVisitCount: function(a) { + this.visitCount = a + }, + getVisitCount: function() { + return this.visitCount + }, + setIpAddress: function(a) { + this.ipAddress = a + }, + getIpAddress: function() { + return this.ipAddress + }, + setUserAgent: function(a) { + this.userAgent = a + }, + getUserAgent: function() { + return this.userAgent + }, + setLocale: function(a) { + this.locale = a + }, + getLocale: function() { + return this.locale + }, + setFlashVersion: function(a) { + this.flashVersion = a + }, + getFlashVersion: function() { + return this.flashVersion + }, + setJavaEnabled: function(a) { + this.javaEnabled = a + }, + getJavaEnabled: function() { + return this.javaEnabled + }, + setScreenColorDepth: function(a) { + this.screenColorDepth = a + }, + getScreenColorDepth: function() { + return this.screenColorDepth + }, + setScreenResolution: function(a) { + this.screenResolution = a + }, + getScreenResolution: function() { + return this.screenResolution + }, + __class__: b.Visitor + }; + b.internals = {}; + b.internals.ParameterHolder = function() { + this.utmwv = "5.2.5"; + this.utmr = this.utmcs = this.utmfl = this.utmje = "0" + }; + b.internals.ParameterHolder.__name__ = !0; + b.internals.ParameterHolder.prototype = { + utmwv: null, + utmac: null, + utmhn: null, + utmvid: null, + utmt: null, + utms: null, + utmn: null, + utmcc: null, + utme: null, + utmni: null, + utmu: null, + utmp: null, + utmdt: null, + utmcs: null, + utmr: null, + utmip: null, + utmul: null, + utmfl: null, + utmje: null, + utmsc: null, + utmsr: null, + __utma: null, + utmhid: null, + __utmb: null, + __utmc: null, + utmipc: null, + utmipn: null, + utmipr: null, + utmiqt: null, + utmiva: null, + utmtid: null, + utmtst: null, + utmtto: null, + utmttx: null, + utmtsp: null, + utmtci: null, + utmtrg: null, + utmtco: null, + utmcn: null, + utmcr: null, + utmcid: null, + utmcsr: null, + utmgclid: null, + utmdclid: null, + utmccn: null, + utmcmd: null, + utmctr: null, + utmcct: null, + utmcvr: null, + __utmz: null, + utmsn: null, + utmsa: null, + utmsid: null, + __utmx: null, + __utmv: null, + toHashTable: function() { + for (var a = new q.ds.StringMap, c = 0, r = D.getInstanceFields(b.internals.ParameterHolder); c < r.length;) { + var e = r[c]; + ++c; + if ("_" != e.charAt(0) && + !v.isFunction(v.field(this, e))) { + var f = v.field(this, e); + a.set(e, f) + } + } + return a + }, + toQueryString: function() { + for (var a = "", c = 0, r = D.getInstanceFields(b.internals.ParameterHolder); c < r.length;) { + var e = r[c]; + ++c; + "_" == e.charAt(0) || v.isFunction(v.field(this, e)) || null == v.field(this, e) || "null" == v.field(this, e) || (a += e + "=" + t.replace(y.string(v.field(this, e)) + "", "&", "%26") + "&") + } + return a + }, + __class__: b.internals.ParameterHolder + }; + b.internals.Util = function() {}; + b.internals.Util.__name__ = !0; + b.internals.Util.encodeUriComponent = + function(a) { + return b.internals.Util.convertToUriComponentEncoding(t.urlEncode(a)) + }; + b.internals.Util.stringReplaceArray = function(a, c, b) { + for (var e = 0, f = c.length; e < f;) { + var d = e++; + null != c[d] && (a = t.replace(a + " ", c[d], b[d])) + } + return t.trim(a) + }; + b.internals.Util.parseInt = function(a, c) { + return null == a ? c : y.parseInt(a) + }; + b.internals.Util.convertToUriComponentEncoding = function(a) { + return b.internals.Util.stringReplaceArray(a, "!*'() +".split(""), "%21 %2A %27 %28 %29 %20 %20".split(" ")) + }; + b.internals.Util.generate32bitRandom = + function() { + return Math.round(2147483647 * Math.random()) + }; + b.internals.Util.generateHash = function(a) { + var c = 1, + b; + if (null != a && "" != a) + for (var c = 0, e = a.length - 1; 0 <= e;) b = m.cca(a, e), c = (c << 6 & 268435455) + b + (b << 14), b = c & 266338304, 0 != b && (c ^= b >> 21), e--; + return c + }; + b.internals.X10 = function() { + this.projectData = new q.ds.StringMap; + this.KEY = "k"; + this.VALUE = "v"; + this.SET = ["k", "v"]; + this.DELIM_BEGIN = "("; + this.DELIM_END = ")"; + this.DELIM_SET = "*"; + this.DELIM_NUM_VALUE = "!"; + this.MINIMUM = 1; + this.ESCAPE_CHAR_MAP = new q.ds.StringMap; + this.ESCAPE_CHAR_MAP.set("'", + "'0"); + this.ESCAPE_CHAR_MAP.set(")", "'1"); + this.ESCAPE_CHAR_MAP.set("*", "'2"); + this.ESCAPE_CHAR_MAP.set("!", "'3") + }; + b.internals.X10.__name__ = !0; + b.internals.X10.prototype = { + projectData: null, + KEY: null, + VALUE: null, + SET: null, + DELIM_BEGIN: null, + DELIM_END: null, + DELIM_SET: null, + DELIM_NUM_VALUE: null, + ESCAPE_CHAR_MAP: null, + MINIMUM: null, + hasProject: function(a) { + return this.projectData.exists(a) + }, + setKey: function(a, c, b) { + this.setInternal(a, this.KEY, c, b) + }, + getKey: function(a, c) { + return this.getInternal(a, this.KEY, c) + }, + clearKey: function(a) { + this.clearInternal(a, + this.KEY) + }, + setValue: function(a, c, b) { + this.setInternal(a, this.VALUE, c, b) + }, + getValue: function(a, c) { + return this.getInternal(a, this.VALUE, c) + }, + clearValue: function(a) { + this.clearInternal(a, this.VALUE) + }, + setInternal: function(a, c, b, e) { + if (!this.projectData.exists(a)) { + var f = new q.ds.StringMap; + this.projectData.set(a, f) + } + a = this.projectData.get(a); + a.exists(c) || a.set(c, []); + a.get(c)[b] = e + }, + getInternal: function(a, c, b) { + if (!this.projectData.exists(a)) return null; + a = this.projectData.get(a); + if (!a.exists(c)) return null; + c = a.get(c); + return null == c[b] ? null : c[b] + }, + clearInternal: function(a, c) { + var b; + if (b = this.projectData.exists(a)) b = this.projectData.get(a).exists(c); + b && this.projectData.get(a).remove(c) + }, + escapeExtensibleValue: function(a) { + for (var c = "", b = 0, e = a.length; b < e;) var f = b++, + f = a.charAt(f), + c = this.ESCAPE_CHAR_MAP.exists(f) ? c + this.ESCAPE_CHAR_MAP.get(f) : c + f; + return c + }, + SORT_NUMERIC: function(a, c) { + return a == c ? 0 : a > c ? 1 : -1 + }, + renderDataType: function(a) { + for (var c = [], b = 0, e = 0, f = a.length; e < f;) { + var d = e++, + g = a[d]; + if (null != g) { + var k = ""; + d != this.MINIMUM && + d - 1 != b && (k += d, k += this.DELIM_NUM_VALUE); + k += this.escapeExtensibleValue(g); + c.push(k) + } + b = d + } + return this.DELIM_BEGIN + c.join(this.DELIM_SET) + this.DELIM_END + }, + renderProject: function(a) { + for (var c = "", b = !1, e = 0, f = this.SET.length; e < f;) { + var d = e++; + a.exists(this.SET[d]) ? (b && (c += this.SET[d]), c += this.renderDataType(a.get(this.SET[d])), b = !1) : b = !0 + } + return c + }, + renderUrlString: function() { + for (var a = "", c = this.projectData.keys(); c.hasNext();) var b = c.next(), + a = a + (b + this.renderProject(this.projectData.get(b))); + return a + }, + __class__: b.internals.X10 + }; + b.internals.request = {}; + b.internals.request.Request = function(a) { + this.setConfig(null != a ? a : new b.Config) + }; + b.internals.request.Request.__name__ = !0; + b.internals.request.Request.onError = function(a) {}; + b.internals.request.Request.prototype = { + type: null, + config: null, + userAgent: null, + tracker: null, + visitor: null, + session: null, + getConfig: function() { + return this.config + }, + setConfig: function(a) { + this.config = a + }, + setUserAgent: function(a) { + this.userAgent = a + }, + getTracker: function() { + return this.tracker + }, + setTracker: function(a) { + this.tracker = + a + }, + getVisitor: function() { + return this.visitor + }, + setVisitor: function(a) { + this.visitor = a + }, + getSession: function() { + return this.session + }, + setSession: function(a) { + this.session = a + }, + increaseTrackCount: function() { + this.session.increaseTrackCount(); + 500 < this.session.getTrackCount() && b.Tracker._raiseError("Google Analytics does not guarantee to process more than 500 requests per session.", "Request.buildHttpRequest"); + null != this.tracker.getCampaign() && this.tracker.getCampaign().increaseResponseCount() + }, + send: function() { + if (null != + this.config.getEndPointHost()) { + var a = this.buildParameters(); + null != this.visitor && (this.setUserAgent(this.visitor.getUserAgent()), a.utmvid = this.visitor.getUniqueId()); + a = b.internals.Util.convertToUriComponentEncoding(a.toQueryString()); + a = this.config.getUrlScheme() + "://" + this.config.getEndPointHost() + this.config.getEndPointPath() + "?" + a; + this.increaseTrackCount(); + (new Image).src = a + } + }, + getType: function() { + return null + }, + buildParameters: function() { + var a = new b.internals.ParameterHolder; + a.utmac = this.tracker.getAccountId(); + a.utmhn = this.tracker.getDomainName(); + a.utmt = "" + this.getType(); + a.utmn = b.internals.Util.generate32bitRandom(); + a.utmip = this.visitor.getIpAddress(); + a.utmhid = this.session.getSessionId(); + a.utms = this.session.getTrackCount(); + a = this.buildVisitorParameters(a); + a = this.buildCustomVariablesParameter(a); + a = this.buildCampaignParameters(a); + return a = this.buildCookieParameters(a) + }, + buildVisitorParameters: function(a) { + null != this.visitor.getLocale() && (a.utmul = t.replace(this.visitor.getLocale(), "_", "-").toLowerCase()); + null != + this.visitor.getFlashVersion() && (a.utmfl = this.visitor.getFlashVersion()); + this.visitor.getJavaEnabled() ? a.utmje = "1" : a.utmje = "0"; + null != this.visitor.getScreenColorDepth() && (a.utmsc = this.visitor.getScreenColorDepth() + "-bit"); + a.utmsr = this.visitor.getScreenResolution(); + return a + }, + buildCustomVariablesParameter: function(a) { + var c = this.tracker.getCustomVariables(); + if (null == c) return a; + 5 < c.length && b.Tracker._raiseError("The sum of all custom variables cannot exceed 5 in any given request.", "Request.buildCustomVariablesParameter"); + var r = new b.internals.X10, + e, f; + r.clearKey("8"); + r.clearKey("9"); + r.clearKey("11"); + for (var d = 0; d < c.length;) { + var g = c[d]; + ++d; + e = b.internals.Util.encodeUriComponent(g.getName()); + f = b.internals.Util.encodeUriComponent(g.getValue()); + r.setKey("8", g.getIndex(), e); + r.setKey("9", g.getIndex(), f); + 3 != g.getScope() && r.setKey("11", g.getIndex(), g.getScope()) + } + c = r.renderUrlString(); + null != c && (a.utme = null == a.utme ? c : a.utme + c); + return a + }, + buildCookieParameters: function(a) { + var c = this.generateDomainHash(); + a.__utma = c + "."; + a.__utma += + this.visitor.getUniqueId() + "."; + a.__utma += this.visitor.getFirstVisitTime().toString() + "."; + a.__utma += this.visitor.getPreviousVisitTime().toString() + "."; + a.__utma += this.visitor.getCurrentVisitTime().toString() + "."; + a.__utma += this.visitor.getVisitCount(); + a.__utmb = c + "."; + a.__utmb += this.session.getTrackCount() + "."; + a.__utmb += "10."; + a.__utmb += this.session.getStartTime().toString(); + a.__utmc = c; + c = "__utma=" + a.__utma + ";"; + null != a.__utmz && (c += "+__utmz=" + a.__utmz + ";"); + null != a.__utmv && (c += "+__utmv=" + a.__utmv + ";"); + a.utmcc = + c; + return a + }, + buildCampaignParameters: function(a) { + var c = this.tracker.getCampaign(); + if (null == c) return a; + a.__utmz = this.generateDomainHash() + "."; + a.__utmz += c.getCreationTime().toString() + "."; + a.__utmz += this.visitor.getVisitCount() + "."; + a.__utmz += c.getResponseCount() + "."; + c = "utmcid=" + c.getId() + "|utmcsr=" + c.getSource() + "|utmgclid=" + c.getGClickId() + "|utmdclid=" + c.getDClickId() + "|utmccn=" + c.getName() + "|utmcmd=" + c.getMedium() + "|utmctr=" + c.getTerm() + "|utmcct=" + c.getContent(); + a.__utmz += t.replace(t.replace(c, "+", + "%20"), " ", "%20"); + return a + }, + generateDomainHash: function() { + var a = 1; + this.tracker.getAllowHash() && (a = b.internals.Util.generateHash(this.tracker.getDomainName())); + return a + }, + __class__: b.internals.request.Request + }; + b.internals.request.EventRequest = function(a) { + b.internals.request.Request.call(this, a) + }; + b.internals.request.EventRequest.__name__ = !0; + b.internals.request.EventRequest.__super__ = b.internals.request.Request; + b.internals.request.EventRequest.prototype = w(b.internals.request.Request.prototype, { + event: null, + getType: function() { + return "event" + }, + buildParameters: function() { + var a = b.internals.request.Request.prototype.buildParameters.call(this), + c = new b.internals.X10; + c.clearKey("5"); + c.clearValue("5"); + c.setKey("5", 1, this.event.getCategory()); + c.setKey("5", 2, this.event.getAction()); + null != this.event.getLabel() && c.setKey("5", 3, this.event.getLabel()); + 0 != this.event.getValue() && c.setValue("5", 1, this.event.getValue()); + c = c.renderUrlString(); + null != c && (a.utme = null == a.utme ? c : a.utme + c); + this.event.getNoninteraction() && (a.utmni = + 1); + return a + }, + getEvent: function() { + return this.event + }, + setEvent: function(a) { + this.event = a + }, + __class__: b.internals.request.EventRequest + }); + b.internals.request.ItemRequest = function(a) { + b.internals.request.Request.call(this, a) + }; + b.internals.request.ItemRequest.__name__ = !0; + b.internals.request.ItemRequest.__super__ = b.internals.request.Request; + b.internals.request.ItemRequest.prototype = w(b.internals.request.Request.prototype, { + item: null, + getType: function() { + return "item" + }, + buildParameters: function() { + var a = b.internals.request.Request.prototype.buildParameters.call(this); + a.utmtid = this.item.getOrderId(); + a.utmipc = this.item.getSku(); + a.utmipn = this.item.getName(); + a.utmiva = this.item.getVariation(); + a.utmipr = this.item.getPrice(); + a.utmiqt = this.item.getQuantity(); + return a + }, + buildVisitorParameters: function(a) { + return a + }, + buildCustomVariablesParameter: function(a) { + return a + }, + getItem: function() { + return this.item + }, + setItem: function(a) { + this.item = a + }, + __class__: b.internals.request.ItemRequest + }); + b.internals.request.PageviewRequest = function(a) { + b.internals.request.Request.call(this, a) + }; + b.internals.request.PageviewRequest.__name__ = !0; + b.internals.request.PageviewRequest.__super__ = b.internals.request.Request; + b.internals.request.PageviewRequest.prototype = w(b.internals.request.Request.prototype, { + page: null, + getType: function() { + return null + }, + buildParameters: function() { + var a = b.internals.request.Request.prototype.buildParameters.call(this); + a.utmp = this.page.getPath(); + a.utmdt = this.page.getTitle(); + null != this.page.getCharset() && (a.utmcs = this.page.getCharset()); + null != this.page.getReferrer() && (a.utmr = this.page.getReferrer()); + 0 != this.page.getLoadTime() && + a.utmn % 100 < this.config.getSitespeedSampleRate() && (a.utme = null == a.utme ? "0" : a.utme + 0); + return a + }, + getPage: function() { + return this.page + }, + setPage: function(a) { + this.page = a + }, + __class__: b.internals.request.PageviewRequest + }); + b.internals.request.SocialInteractionRequest = function(a) { + b.internals.request.PageviewRequest.call(this, a) + }; + b.internals.request.SocialInteractionRequest.__name__ = !0; + b.internals.request.SocialInteractionRequest.__super__ = b.internals.request.PageviewRequest; + b.internals.request.SocialInteractionRequest.prototype = + w(b.internals.request.PageviewRequest.prototype, { + socialInteraction: null, + getType: function() { + return "social" + }, + buildParameters: function() { + var a = b.internals.request.PageviewRequest.prototype.buildParameters.call(this); + a.utmsn = this.socialInteraction.getNetwork(); + a.utmsa = this.socialInteraction.getAction(); + a.utmsid = this.socialInteraction.getTarget(); + null == a.utmsid && (a.utmsid = this.page.getPath()); + return a + }, + getSocialInteraction: function() { + return this.socialInteraction + }, + setSocialInteraction: function(a) { + this.socialInteraction = + a + }, + __class__: b.internals.request.SocialInteractionRequest + }); + b.internals.request.TransactionRequest = function(a) { + b.internals.request.Request.call(this, a) + }; + b.internals.request.TransactionRequest.__name__ = !0; + b.internals.request.TransactionRequest.__super__ = b.internals.request.Request; + b.internals.request.TransactionRequest.prototype = w(b.internals.request.Request.prototype, { + transaction: null, + getType: function() { + return "tran" + }, + buildParameters: function() { + var a = b.internals.request.Request.prototype.buildParameters.call(this); + a.utmtid = this.transaction.getOrderId(); + a.utmtst = this.transaction.getAffiliation(); + a.utmtto = this.transaction.getTotal(); + a.utmttx = this.transaction.getTax(); + a.utmtsp = this.transaction.getShipping(); + a.utmtci = this.transaction.getCity(); + a.utmtrg = this.transaction.getRegion(); + a.utmtco = this.transaction.getCountry(); + return a + }, + buildVisitorParameters: function(a) { + return a + }, + buildCustomVariablesParameter: function(a) { + return a + }, + getTransaction: function() { + return this.transaction + }, + setTransaction: function(a) { + this.transaction = + a + }, + __class__: b.internals.request.TransactionRequest + }); + var q = { + Http: function(a) { + this.url = a; + this.headers = new A; + this.params = new A; + this.async = !0 + } + }; + q.Http.__name__ = !0; + q.Http.requestUrl = function(a) { + a = new q.Http(a); + a.async = !1; + var c = null; + a.onData = function(a) { + c = a + }; + a.onError = function(a) { + throw a; + }; + a.request(!1); + return c + }; + q.Http.prototype = { + url: null, + responseData: null, + async: null, + postData: null, + headers: null, + params: null, + req: null, + request: function(a) { + var c = this; + c.responseData = null; + var b = this.req = u.Browser.createXMLHttpRequest(), + e = function(a) { + if (4 == b.readyState) { + var e; + try { + e = b.status + } catch (f) { + e = null + } + void 0 == e && (e = null); + if (null != e) c.onStatus(e); + if (null != e && 200 <= e && 400 > e) c.req = null, c.onData(c.responseData = b.responseText); + else if (null == e) c.req = null, c.onError("Failed to connect or resolve host"); + else switch (e) { + case 12029: + c.req = null; + c.onError("Failed to connect to host"); + break; + case 12007: + c.req = null; + c.onError("Unknown host"); + break; + default: + c.req = null, c.responseData = b.responseText, c.onError("Http Error #" + b.status) + } + } + }; + this.async && + (b.onreadystatechange = e); + var f = this.postData; + if (null != f) a = !0; + else + for (var d = this.params.iterator(); d.hasNext();) var g = d.next(), + f = null == f ? "" : f + "&", + f = f + (encodeURIComponent(g.param) + "=" + encodeURIComponent(g.value)); + try { + if (a) b.open("POST", this.url, this.async); + else if (null != f) { + var k = 1 >= this.url.split("?").length; + b.open("GET", this.url + (k ? "?" : "&") + f, this.async); + f = null + } else b.open("GET", this.url, this.async) + } catch (h) { + c.req = null; + this.onError(h.toString()); + return + }!x.exists(this.headers, function(a) { + return "Content-Type" == + a.header + }) && a && null == this.postData && b.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + for (a = this.headers.iterator(); a.hasNext();) d = a.next(), b.setRequestHeader(d.header, d.value); + b.send(f); + this.async || e(null) + }, + onData: function(a) {}, + onError: function(a) {}, + onStatus: function(a) {}, + __class__: q.Http + }; + q.Timer = function(a) { + var c = this; + this.id = setInterval(function() { + c.run() + }, a) + }; + q.Timer.__name__ = !0; + q.Timer.delay = function(a, c) { + var b = new q.Timer(c); + b.run = function() { + b.stop(); + a() + }; + return b + }; + q.Timer.prototype = { + id: null, + stop: function() { + null != this.id && (clearInterval(this.id), this.id = null) + }, + run: function() {}, + __class__: q.Timer + }; + q.ds = {}; + q.ds.StringMap = function() { + this.h = {} + }; + q.ds.StringMap.__name__ = !0; + q.ds.StringMap.__interfaces__ = [z]; + q.ds.StringMap.prototype = { + h: null, + set: function(a, c) { + this.h["$" + a] = c + }, + get: function(a) { + return this.h["$" + a] + }, + exists: function(a) { + return this.h.hasOwnProperty("$" + a) + }, + remove: function(a) { + a = "$" + a; + if (!this.h.hasOwnProperty(a)) return !1; + delete this.h[a]; + return !0 + }, + keys: function() { + var a = [], + c; + for (c in this.h) this.h.hasOwnProperty(c) && a.push(c.substr(1)); + return m.iter(a) + }, + iterator: function() { + return { + ref: this.h, + it: this.keys(), + hasNext: function() { + return this.it.hasNext() + }, + next: function() { + var a = this.it.next(); + return this.ref["$" + a] + } + } + }, + __class__: q.ds.StringMap + }; + q.io = {}; + q.io.Eof = function() {}; + q.io.Eof.__name__ = !0; + q.io.Eof.prototype = { + toString: function() { + return "Eof" + }, + __class__: q.io.Eof + }; + q.xml = {}; + q.xml.Parser = function() {}; + q.xml.Parser.__name__ = !0; + q.xml.Parser.parse = function(a) { + var c = h.createDocument(); + q.xml.Parser.doParse(a, 0, c); + return c + }; + q.xml.Parser.doParse = function(a, c, b) { + null == c && (c = 0); + for (var e = null, f = 1, d = 1, g = null, k = 0, p = 0, n = 0, l = a.charCodeAt(c), s = new C; l == l;) { + switch (f) { + case 0: + switch (l) { + case 10: + case 13: + case 9: + case 32: + break; + default: + f = d; + continue + } + break; + case 1: + switch (l) { + case 60: + f = 0; + d = 2; + break; + default: + k = c; + f = 13; + continue + } + break; + case 13: + 60 == l ? (d = h.createPCData(s.b + m.substr(a, k, c - k)), s = new C, b.addChild(d), p++, f = 0, d = 2) : 38 == l && (s.addSub(a, k, c - k), f = 18, d = 13, k = c + 1); + break; + case 17: + 93 == l && 93 == a.charCodeAt(c + 1) && + 62 == a.charCodeAt(c + 2) && (f = h.createCData(m.substr(a, k, c - k)), b.addChild(f), p++, c += 2, f = 1); + break; + case 2: + switch (l) { + case 33: + if (91 == a.charCodeAt(c + 1)) { + c += 2; + if ("CDATA[" != m.substr(a, c, 6).toUpperCase()) throw "Expected = l || 65 <= l && 90 >= l || 48 <= l && 57 >= l || 58 == l || 46 == l || 95 == l || 45 == l)) { + if (c == k) throw "Expected node name"; + e = h.createElement(m.substr(a, k, c - k)); + b.addChild(e); + f = 0; + d = 4; + continue + } + break; + case 4: + switch (l) { + case 47: + f = 11; + p++; + break; + case 62: + f = 9; + p++; + break; + default: + f = 5; + k = c; + continue + } + break; + case 5: + if (!(97 <= l && 122 >= l || 65 <= l && 90 >= l || 48 <= l && 57 >= l || 58 == l || 46 == l || 95 == l || 45 == l)) { + if (k == c) throw "Expected attribute name"; + g = m.substr(a, + k, c - k); + if (e.exists(g)) throw "Duplicate attribute"; + f = 0; + d = 6; + continue + } + break; + case 6: + switch (l) { + case 61: + f = 0; + d = 7; + break; + default: + throw "Expected ="; + } + break; + case 7: + switch (l) { + case 34: + case 39: + f = 8; + k = c; + break; + default: + throw 'Expected "'; + } + break; + case 8: + l == a.charCodeAt(k) && (d = m.substr(a, k + 1, c - k - 1), e.set(g, d), f = 0, d = 4); + break; + case 9: + k = c = q.xml.Parser.doParse(a, c, e); + f = 1; + break; + case 11: + switch (l) { + case 62: + f = 1; + break; + default: + throw "Expected >"; + } + break; + case 12: + switch (l) { + case 62: + return 0 == p && b.addChild(h.createPCData("")), c; + default: + throw "Expected >"; + } + case 10: + if (!(97 <= l && 122 >= l || 65 <= l && 90 >= l || 48 <= l && 57 >= l || 58 == l || 46 == l || 95 == l || 45 == l)) { + if (k == c) throw "Expected node name"; + if (m.substr(a, k, c - k) != b.get_nodeName()) throw "Expected "; + f = 0; + d = 12; + continue + } + break; + case 15: + 45 == l && 45 == a.charCodeAt(c + 1) && 62 == a.charCodeAt(c + 2) && (b.addChild(h.createComment(m.substr(a, k, c - k))), c += 2, f = 1); + break; + case 16: + 91 == l ? n++ : 93 == l ? n-- : 62 == l && 0 == n && (b.addChild(h.createDocType(m.substr(a, k, c - k))), f = 1); + break; + case 14: + 63 == l && 62 == a.charCodeAt(c + 1) && (c++, f = m.substr(a, + k + 1, c - k - 2), b.addChild(h.createProcessingInstruction(f)), f = 1); + break; + case 18: + 59 == l && (k = m.substr(a, k, c - k), 35 == k.charCodeAt(0) ? (k = 120 == k.charCodeAt(1) ? y.parseInt("0" + m.substr(k, 1, k.length - 1)) : y.parseInt(m.substr(k, 1, k.length - 1)), s.add(String.fromCharCode(k))) : q.xml.Parser.escapes.exists(k) ? s.add(q.xml.Parser.escapes.get(k)) : s.b += y.string("&" + k + ";"), k = c + 1, f = d) + } + l = t.fastCodeAt(a, ++c) + } + 1 == f && (k = c, f = 13); + if (13 == f) return c == k && 0 != p || b.addChild(h.createPCData(s.b + m.substr(a, k, c - k))), c; + throw "Unexpected end"; + }; + var u = { + Boot: function() {} + }; + u.Boot.__name__ = !0; + u.Boot.getClass = function(a) { + return a instanceof Array && null == a.__enum__ ? Array : a.__class__ + }; + u.Boot.__string_rec = function(a, c) { + if (null == a) return "null"; + if (5 <= c.length) return "<...>"; + var b = typeof a; + "function" == b && (a.__name__ || a.__ename__) && (b = "object"); + switch (b) { + case "object": + if (a instanceof Array) { + if (a.__enum__) { + if (2 == a.length) return a[0]; + b = a[0] + "("; + c += "\t"; + for (var e = 2, d = a.length; e < d;) var g = e++, + b = 2 != g ? b + ("," + u.Boot.__string_rec(a[g], c)) : b + u.Boot.__string_rec(a[g], + c); + return b + ")" + } + b = a.length; + e = "["; + c += "\t"; + for (d = 0; d < b;) g = d++, e += (0 < g ? "," : "") + u.Boot.__string_rec(a[g], c); + return e + "]" + } + try { + e = a.toString + } catch (h) { + return "???" + } + if (null != e && e != Object.toString && (b = a.toString(), "[object Object]" != b)) return b; + b = null; + e = "{\n"; + c += "\t"; + d = null != a.hasOwnProperty; + for (b in a) d && !a.hasOwnProperty(b) || "prototype" == b || "__class__" == b || "__super__" == b || "__interfaces__" == b || "__properties__" == b || (2 != e.length && (e += ", \n"), e += c + b + " : " + u.Boot.__string_rec(a[b], c)); + c = c.substring(1); + return e + + ("\n" + c + "}"); + case "function": + return ""; + case "string": + return a; + default: + return String(a) + } + }; + u.Boot.__interfLoop = function(a, c) { + if (null == a) return !1; + if (a == c) return !0; + var b = a.__interfaces__; + if (null != b) + for (var e = 0, d = b.length; e < d;) { + var g = e++, + g = b[g]; + if (g == c || u.Boot.__interfLoop(g, c)) return !0 + } + return u.Boot.__interfLoop(a.__super__, c) + }; + u.Boot.__instanceof = function(a, c) { + if (null == c) return !1; + switch (c) { + case H: + return (a | 0) === a; + case E: + return "number" == typeof a; + case F: + return "boolean" == typeof a; + case String: + return "string" == + typeof a; + case Array: + return a instanceof Array && null == a.__enum__; + case I: + return !0; + default: + if (null != a) { + if ("function" == typeof c && (a instanceof c || u.Boot.__interfLoop(u.Boot.getClass(a), c))) return !0 + } else return !1; + return c == J && null != a.__name__ || c == K && null != a.__ename__ ? !0 : a.__enum__ == c + } + }; + u.Browser = function() {}; + u.Browser.__name__ = !0; + u.Browser.createXMLHttpRequest = function() { + if ("undefined" != typeof XMLHttpRequest) return new XMLHttpRequest; + if ("undefined" != typeof ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); + throw "Unable to create XMLHttpRequest object."; + }; + var d = {}; + d.Muses = n.muses.Muses = function(a) { + this.src = this.name = this.lastMessage = null; + this.progress = 0; + this.lastAudioName = null; + this.playURL = ""; + this.playTimeout = this.bufferingTimeout = 0; + this.desiredStatus = "stop"; + this.audio = this.lastAudioStatus = this.lastAudioSrc = null; + this.src = a.url; + this.name = a.title; + this.audio = new Audio; + this.ui = new d.UI(this, a); + a.autoplay && (a = window.navigator.userAgent.toLowerCase(), -1 == a.indexOf("iphone") && -1 == a.indexOf("ipad") && -1 == a.indexOf("ipod") && + this.playAudio()) + }; + d.Muses.__name__ = !0; + d.Muses.initTimer = function(a) { + -1 == m.indexOf(d.Muses.instances, a, 0) && d.Muses.instances.push(a); + null == d.Muses.statusTimer && (d.Muses.statusTimer = new q.Timer(500), d.Muses.statusTimer.run = function() { + for (var a = 0, b = d.Muses.instances; a < b.length;) { + var e = b[a]; + ++a; + try { + e.checkAudioStatus() + } catch (f) { + if (u.Boot.__instanceof(f, String)) console.log("Error: " + f); + else throw f; + } + } + }) + }; + d.Muses.prototype = { + audio: null, + lastAudioStatus: null, + lastAudioSrc: null, + desiredStatus: null, + playTimeout: null, + bufferingTimeout: null, + playURL: null, + lastAudioName: null, + progress: null, + src: null, + name: null, + lastMessage: null, + ui: null, + playAudio: function() { + d.Muses.initTimer(this); + this.stopAudio(!1); + this.playURL = this.src; + this.desiredStatus = "play"; + this.playTimeout = 3600; + this.bufferingTimeout = 40; + this.lastAudioSrc = this.audio.src = this.src; + this.lastAudioName = this.name; + this.lastAudioStatus = null; + this.audio.autoplay = !0; + this.audio.play(); + this.ui.setPlaying(); + d.Tracker.track(this.src, this.name, this.ui, !0) + }, + stopAudio: function(a) { + this.desiredStatus = + "stop"; + null != this.audio && (this.audio.pause(), this.audio.src = ""); + a && (this.lastAudioStatus = 4) + }, + retryAudio: function() { + var a = this; + this.lastAudioStatus = -1; + q.Timer.delay(function() { + -1 == a.lastAudioStatus && a.playAudio() + }, 2E3) + }, + setVolume: function(a) { + this.audio.volume = a; + null != this.ui && this.ui.setVolume(a) + }, + checkAudioStatus: function() { + var a = "", + a = null; + if (null != this.audio) { + a = this.audio.networkState; + y.string(this.audio.error); + if (2 == a || 1 == a) a = 0 == this.audio.played.length ? 1 : 2; + if (null != this.audio.error || 4 == this.lastAudioStatus) a = + 3 + } + 0 == a ? (a = "Error al conectar", this.lastMessage != a && this.ui.setError()) : -1 == a ? a = "retry..." : null == a ? a = "init" : 1 == a ? (this.bufferingTimeout--, 0 == this.bufferingTimeout && this.retryAudio(), a = "Buffering... " + Math.round(this.bufferingTimeout / 2), this.lastMessage != a && this.ui.setBuffering()) : 2 == a ? (this.playTimeout--, 0 == this.playTimeout && this.retryAudio(), a = "Playing... ", this.lastMessage != a && this.ui.setPlaying()) : 4 == a || 3 == a ? "play" == this.desiredStatus ? (a = "Error de red", this.retryAudio(), this.lastMessage != a && this.ui.setError()) : + (a = "Stopped.", this.lastMessage != a && this.ui.setStopped()) : (a = "ERROR: " + a, console.log(a)); + this.lastMessage = a + }, + __class__: d.Muses + }; + d.Tracker = function() {}; + d.Tracker.__name__ = !0; + d.Tracker.track = function(a, c, g, e) { + d.Tracker.enabled && (null == d.Tracker.tracked && (d.Tracker.tracked = new q.ds.StringMap, b.Stats.init("UA-12297597-1", "hosted.musesradioplayer.com")), e && d.Tracker.tracked.get(a) || (b.Stats.trackPageview("/tracker/track.php?version=0.2 beta&url=" + a + "&player=HTML5&skin=" + g.skin, "Muses - HTML5 Tracking [Radio: " + + c + "]"), d.Tracker.tracked.set(a, !0))) + }; + d.UI = n.muses.UI = function(a, c) { + this.skinFolder = this.baseURL = this.skinDomain = ""; + this.togglePlayStopEnabled = this.lastToggleValue = !1; + this.mainDiv = this.playButton = this.stopButton = this.volumeControl = this.bg = this.statusText = this.artistText = this.songTitleText = this.statusLed = null; + this.skin = ""; + var b = this; + this.title = c.title; + this.skin = c.skin; + this.muses = a; + this.mainDiv = window.document.getElementById(c.elementId); + this.mainDiv.style.position = "relative"; + this.statusText = new d.skin.TitleText(this); + this.artistText = new d.skin.TitleText(this); + this.songTitleText = new d.skin.TitleText(this); + this.statusLed = new d.skin.StatusLed(this); + this.volumeControl = new d.skin.VolumeControl(this, this.muses); + this.volumeControl.setVolume(c.volume / 100); + this.playButton = new d.skin.Button(this, "play"); + this.stopButton = new d.skin.Button(this, "stop"); + this.loadSkin(this.skin); + this.statusLed.configured && this.mainDiv.appendChild(this.statusLed.container); + this.statusText.configured && this.mainDiv.appendChild(this.statusText.container); + this.artistText.configured && this.mainDiv.appendChild(this.artistText.container); + this.songTitleText.configured && this.mainDiv.appendChild(this.songTitleText.container); + this.volumeControl.configured && this.mainDiv.appendChild(this.volumeControl.container); + this.mainDiv.appendChild(this.playButton.container); + this.mainDiv.appendChild(this.stopButton.container); + this.stopButton.container.onclick = function(a) { + b.muses.stopAudio(!1) + }; + this.playButton.container.onclick = function(a) { + b.muses.playAudio() + }; + this.showInfo(c.welcome) + }; + d.UI.__name__ = !0; + d.UI.parseInt = function(a, c) { + return null == a ? c : y.parseInt(a) + }; + d.UI.prototype = { + skin: null, + mainDiv: null, + playButton: null, + stopButton: null, + volumeControl: null, + bg: null, + statusText: null, + artistText: null, + songTitleText: null, + statusLed: null, + togglePlayStopEnabled: null, + lastToggleValue: null, + skinFolder: null, + baseURL: null, + skinDomain: null, + title: null, + titleTimer: null, + muses: null, + XmlToLower: function(a) { + for (var c = a.attributes(); c.hasNext();) { + var b = c.next(); + a.set(b.toLowerCase(), a.get(b)) + } + }, + enablePlayStopToggle: function() { + this.togglePlayStopEnabled = !0; + this.togglePlayStop(this.lastToggleValue) + }, + togglePlayStop: function(a) { + this.lastToggleValue = a; + this.togglePlayStopEnabled && (this.playButton.setVisible(!a), this.stopButton.setVisible(a)) + }, + makeAbsolute: function(a) { + return -1 != a.indexOf("://") ? a : "/" == a.charAt(0) ? this.skinDomain + a : this.baseURL + a + }, + getDomainName: function(a) { + a += "/"; + var c = a.indexOf("://"); + if (-1 == c) return ""; + c = a.indexOf("/", c + 3); + return m.substr(a, 0, c) + }, + getDirName: function(a) { + var c = a.lastIndexOf("/"); + return -1 == c ? "" : m.substr(a, 0, c + 1) + }, + loadSkin: function(a) { + var c = + q.Http.requestUrl(a); + this.baseURL = this.getDirName(a); + this.skinDomain = this.getDomainName(a); + a = !1; + for (c = h.parse(c).elements(); c.hasNext();) { + var b = c.next(); + if ("ffmp3-skin" != b.get_nodeName().toLowerCase() && "muses-skin" != b.get_nodeName().toLowerCase()) break; + this.XmlToLower(b); + null == b.get("folder") ? this.skinFolder = "" : this.skinFolder = b.get("folder"); + (a = null == b.get("toggleplaystop") ? !1 : "true" == b.get("toggleplaystop")) && this.enablePlayStopToggle(); + 0 < this.skinFolder.length && "/" != this.skinFolder.charAt(this.skinFolder.length - + 1) && (this.skinFolder += "/"); + this.skinFolder = this.makeAbsolute(this.skinFolder); + for (a = b.elements(); a.hasNext();) switch (b = a.next(), this.XmlToLower(b), b.get_nodeName().toLowerCase()) { + case "bg": + this.configureBG(b); + break; + case "play": + this.playButton.configure(b); + break; + case "stop": + this.stopButton.configure(b); + break; + case "text": + this.statusText.configureText(b, "left"); + break; + case "status": + this.statusLed.configure(b); + break; + case "volume": + this.volumeControl.configure(b); + break; + case "artist": + this.artistText.configureText(b, + "left"); + break; + case "songtitle": + this.songTitleText.configureText(b, "left") + } + } + }, + loadImage: function(a, c) { + a.src = this.skinFolder + c + }, + configureBG: function(a) { + this.bg = new Image; + this.loadImage(this.bg, a.get("image")); + this.bg.style.position = "absolute"; + this.bg.style.left = d.UI.parseInt(a.get("x"), 0) + "px"; + this.bg.style.top = d.UI.parseInt(a.get("y"), 0) + "px"; + this.mainDiv.appendChild(this.bg) + }, + configureButton: function(a, c) { + a.src = this.skinFolder + c.get("image"); + a.style.position = "absolute"; + a.style.left = d.UI.parseInt(c.get("x"), + 0) + "px"; + a.style.top = d.UI.parseInt(c.get("y"), 0) + "px" + }, + setPlaying: function() { + this.showInfo("Play"); + this.statusLed.on(); + this.togglePlayStop(!0) + }, + setStopped: function() { + this.showInfo("Stop"); + this.statusLed.off(); + this.togglePlayStop(!1) + }, + setBuffering: function() { + this.showInfo("Buffering"); + this.statusLed.on(); + this.togglePlayStop(!0) + }, + setError: function() { + this.showInfo("Error"); + this.statusLed.off() + }, + setVolume: function(a) { + this.volumeControl.setVolume(a); + this.showInfo("Volume: " + Math.round(100 * a) + "%") + }, + showInfo: function(a, + c) { + null == c && (c = !0); + null == a ? this.restoreTitle() : (null != this.titleTimer && this.titleTimer.stop(), this.statusText.setText(a), c && (this.titleTimer = new q.Timer(2E3), this.titleTimer.run = p(this, this.restoreTitle))) + }, + restoreTitle: function() { + null != this.titleTimer && this.titleTimer.stop(); + this.statusText.setText(this.title) + }, + __class__: d.UI + }; + d.skin = {}; + d.skin.UIComponent = function(a) { + this.ui = a; + this.configured = !1; + this.container = window.document.createElement("div"); + this.container.style.position = "absolute" + }; + d.skin.UIComponent.__name__ = !0; + d.skin.UIComponent.prototype = { + container: null, + configured: null, + ui: null, + setVisible: function(a) { + this.container.style.display = a ? "block" : "none" + }, + configure: function(a) { + this.configured = !0; + this.container.style.left = d.UI.parseInt(a.get("x"), 0) + "px"; + this.container.style.top = d.UI.parseInt(a.get("y"), 0) + "px"; + null != a.get("width") && (this.container.style.width = d.UI.parseInt(a.get("width"), 0) + "px"); + null != a.get("height") && (this.container.style.height = d.UI.parseInt(a.get("height"), 0) + "px") + }, + appendChild: function(a, + c) { + null == c && (c = !0); + a.style.position = "absolute"; + a.style.left = a.style.top = "0px"; + a.style.display = c ? "block" : "none"; + this.container.appendChild(a) + }, + __class__: d.skin.UIComponent + }; + d.skin.Button = function(a, c) { + var b = this; + d.skin.UIComponent.call(this, a); + this.mouseOverState = new Image; + this.mouseDownState = new Image; + this.noMouseState = new Image; + this.container.title = c; + this.mouseDownState.style.opacity = "0"; + this.mouseOverState.style.opacity = "0"; + this.container.onmouseup = function(a) { + b.mouseDownState.style.opacity = "0"; + b.mouseOverState.style.opacity = "1" + }; + this.container.onmousedown = function(a) { + b.mouseDownState.style.opacity = "1"; + b.mouseOverState.style.opacity = "0" + }; + this.container.onmouseover = function(a) { + b.mouseOverState.style.opacity = "1" + }; + this.container.onmouseout = function(a) { + b.mouseDownState.style.opacity = "0"; + b.mouseOverState.style.opacity = "0" + } + }; + d.skin.Button.__name__ = !0; + d.skin.Button.__super__ = d.skin.UIComponent; + d.skin.Button.prototype = w(d.skin.UIComponent.prototype, { + mouseOverState: null, + mouseDownState: null, + noMouseState: null, + configure: function(a) { + d.skin.UIComponent.prototype.configure.call(this, a); + null != a.get("bgimage") && (this.ui.loadImage(this.noMouseState, a.get("bgimage")), this.appendChild(this.noMouseState)); + null != a.get("clickimage") && (this.ui.loadImage(this.mouseDownState, a.get("clickimage")), this.appendChild(this.mouseDownState)); + this.ui.loadImage(this.mouseOverState, a.get("image")); + this.appendChild(this.mouseOverState) + }, + __class__: d.skin.Button + }); + d.skin.StatusLed = function(a) { + d.skin.UIComponent.call(this, a); + this.playMC = + new Image; + this.stopMC = new Image + }; + d.skin.StatusLed.__name__ = !0; + d.skin.StatusLed.__super__ = d.skin.UIComponent; + d.skin.StatusLed.prototype = w(d.skin.UIComponent.prototype, { + playMC: null, + stopMC: null, + configure: function(a) { + d.skin.UIComponent.prototype.configure.call(this, a); + null != a.get("imageplay") && -1 == a.get("imageplay").indexOf(".swf") && (this.ui.loadImage(this.playMC, a.get("imageplay")), this.appendChild(this.playMC, !1)); + null != a.get("imagestop") && -1 == a.get("imagestop").indexOf(".swf") && (this.ui.loadImage(this.stopMC, + a.get("imagestop")), this.appendChild(this.stopMC, !0)) + }, + on: function() { + this.playMC.style.display = "block"; + this.stopMC.style.display = "none" + }, + off: function() { + this.playMC.style.display = "none"; + this.stopMC.style.display = "block" + }, + __class__: d.skin.StatusLed + }); + d.skin.TitleText = function(a) { + d.skin.UIComponent.call(this, a); + this.container.style.fontFamily = "Silkscreen"; + this.container.style.fontSize = "12px" + }; + d.skin.TitleText.__name__ = !0; + d.skin.TitleText.__super__ = d.skin.UIComponent; + d.skin.TitleText.prototype = w(d.skin.UIComponent.prototype, { + configureText: function(a, b) { + this.configure(a); + switch (a.get("align")) { + case "center": + this.container.style.textAlign = "center"; + break; + case "right": + this.container.style.textAlign = "right"; + break; + default: + this.container.style.textAlign = b + } + this.container.style.padding = "2px"; + this.container.style.whiteSpace = "nowrap"; + this.container.style.fontFamily = a.get("font"); + this.container.style.fontSize = d.UI.parseInt(a.get("size"), 12) + "px"; + this.container.style.color = a.get("color"); + this.container.style.overflow = "hidden" + }, + setText: function(a) { + this.container.innerHTML = + a + }, + __class__: d.skin.TitleText + }); + d.skin.VolumeControl = function(a, b) { + d.skin.UIComponent.call(this, a); + this.muses = b; + this.firstDraw = !0; + this.bars = null; + this.mousePressed = !1; + this.volume = 1; + this.setMode("bars"); + this.draw(this.container); + this.vertMargin = this.horizMargin = this.height = this.width = 0; + this.barStep = 2; + this.barWidth = 1; + this.barColors = this.bgColors = null + }; + d.skin.VolumeControl.__name__ = !0; + d.skin.VolumeControl.__super__ = d.skin.UIComponent; + d.skin.VolumeControl.prototype = w(d.skin.UIComponent.prototype, { + volume: null, + width: null, + height: null, + horizMargin: null, + horizDesp: null, + vertMargin: null, + vertDesp: null, + barStep: null, + barWidth: null, + bgColors: null, + barColors: null, + bars: null, + cover: null, + spriteBar: null, + firstDraw: null, + mode: null, + holder: null, + mousePressed: null, + muses: null, + draw: function(a) {}, + setMode: function(a) { + switch (a.toLowerCase()) { + case "bars": + this.draw = p(this, this.drawBars); + break; + case "holder": + this.draw = p(this, this.drawHolder); + break; + case "vholder": + this.draw = p(this, this.drawVHolder) + } + this.mode = a + }, + drawHolder: function(a) { + this.holder.style.left = + this.volume * (this.width - this.holder.width) + "px" + }, + drawVHolder: function(a) { + this.holder.style.top = (1 - this.volume) * (this.height - this.holder.height) + "px" + }, + drawBars: function(a) { + if (null != this.barColors && 0 != this.barStep && (a = Math.round((this.width - 2 * this.horizMargin) / this.barStep), 0 != a)) { + var b = (this.height - 2 * this.vertMargin + 1) / a, + d = this.height - this.vertMargin, + e = this.horizMargin; + if (null == this.bars) { + this.bars = []; + for (var f = 0; f < a;) { + var g = f++, + h; + h = window.document.createElement("div"); + this.bars.push(h); + this.appendChild(h); + h.style.left = e + g * this.barStep + "px"; + h.style.top = d - g * b + "px"; + h.style.width = Math.round(this.barWidth) + "px"; + h.style.height = Math.ceil(g * b) + "px" + } + } + b = 0; + for (d = Math.round(this.volume * a); b < d;) e = b++, this.bars[e].style.backgroundColor = this.barColors[0]; + for (b = Math.round(this.volume * a); b < a;) d = b++, this.bars[d].style.backgroundColor = this.barColors[1] + } + }, + setVolume: function(a) { + this.volume != a && (this.volume = a, 1 < this.volume && (this.volume = 1), 0 > this.volume && (this.volume = 0), this.muses.setVolume(this.volume), this.draw(this.container)) + }, + getVolume: function() { + return this.volume + }, + mouseDown: function(a) { + var b; + this.mousePressed = !0; + "vholder" != this.mode ? (a = a.layerX, b = this.width) : (a = this.height - a.layerY, b = this.height); + a -= .06 * b; + 0 > a && (a = 0); + a = Math.round(1.06 * a); + a > b && (a = b); + this.setVolume(a / (b - 2)) + }, + mouseUp: function(a) { + this.mousePressed = !1 + }, + mouseMove: function(a) { + this.mousePressed && this.mouseDown(a) + }, + mouseWheel: function(a) { + 0 < a.wheelDelta ? this.setVolume(this.volume + .025) : this.setVolume(this.volume - .025) + }, + configure: function(a) { + d.skin.UIComponent.prototype.configure.call(this, + a); + this.width = d.UI.parseInt(a.get("width"), 0); + this.height = d.UI.parseInt(a.get("height"), 0); + this.barColors = [a.get("color1"), a.get("color2")]; + this.barStep = d.UI.parseInt(a.get("barstep"), 2); + this.barWidth = d.UI.parseInt(a.get("barwidth"), 1); + var b; + b = null != a.get("mode") ? a.get("mode").toLowerCase() : null; + this.setMode(b); + if ("holder" == b || "vholder" == b) this.holder = new Image, this.holder.onload = p(this, this.holderLoad), this.ui.loadImage(this.holder, a.get("holderimage")), this.appendChild(this.holder); + this.draw(this.container); + this.cover = window.document.createElement("div"); + this.cover.onmousedown = p(this, this.mouseDown); + this.cover.onmousemove = p(this, this.mouseMove); + this.cover.onmousewheel = p(this, this.mouseWheel); + this.cover.onmouseup = p(this, this.mouseUp); + this.cover.onmouseout = p(this, this.mouseUp); + this.cover.style.width = this.container.style.width; + this.cover.style.height = this.container.style.height; + this.appendChild(this.cover) + }, + holderLoad: function(a) { + this.holder.style.left = .5 * (this.width - this.holder.width) + "px"; + this.holder.style.top = + .5 * (this.height - this.holder.height) + "px"; + this.draw(this.container) + }, + __class__: d.skin.VolumeControl + }); + var G = 0; + Array.prototype.indexOf && (m.indexOf = function(a, b, d) { + return Array.prototype.indexOf.call(a, b, d) + }); + Math.NaN = Number.NaN; + Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; + Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; + Math.isFinite = function(a) { + return isFinite(a) + }; + Math.isNaN = function(a) { + return isNaN(a) + }; + String.prototype.__class__ = String; + String.__name__ = !0; + Array.__name__ = !0; + Date.prototype.__class__ = + Date; + Date.__name__ = ["Date"]; + var H = { + __name__: ["Int"] + }, + I = { + __name__: ["Dynamic"] + }, + E = Number; + E.__name__ = ["Float"]; + var F = Boolean; + F.__ename__ = ["Bool"]; + var J = { + __name__: ["Class"] + }, + K = {}; + h.Element = "element"; + h.PCData = "pcdata"; + h.CData = "cdata"; + h.Comment = "comment"; + h.DocType = "doctype"; + h.ProcessingInstruction = "processingInstruction"; + h.Document = "document"; + g.objectId = "MRPObject"; + g.playerCounter = 0; + g.__hostPrefix = "hosted"; + g.__hostMidfix = "muses"; + b.Campaign.TYPE_DIRECT = "direct"; + b.Campaign.TYPE_ORGANIC = "organic"; + b.Campaign.TYPE_REFERRAL = + "referral"; + b.Config.ERROR_SEVERITY_SILENCE = 0; + b.Config.ERROR_SEVERITY_TRACE = 1; + b.Config.ERROR_SEVERITY_EXCEPTIONS = 2; + b.CustomVariable.SCOPE_VISITOR = 1; + b.CustomVariable.SCOPE_SESSION = 2; + b.CustomVariable.SCOPE_PAGE = 3; + b.Page.REFERRER_INTERNAL = "0"; + b.Tracker.VERSION = "5.2.5"; + b.URLParser.parts = "source protocol authority userInfo user password host port relative path directory file query anchor".split(" "); + b.internals.X10.OBJECT_KEY_NUM = 1; + b.internals.X10.TYPE_KEY_NUM = 2; + b.internals.X10.LABEL_KEY_NUM = 3; + b.internals.X10.VALUE_VALUE_NUM = + 1; + b.internals.request.Request.TYPE_EVENT = "event"; + b.internals.request.Request.TYPE_TRANSACTION = "tran"; + b.internals.request.Request.TYPE_ITEM = "item"; + b.internals.request.Request.TYPE_SOCIAL = "social"; + b.internals.request.Request.TYPE_CUSTOMVARIABLE = "var"; + b.internals.request.Request.X10_CUSTOMVAR_NAME_PROJECT_ID = "8"; + b.internals.request.Request.X10_CUSTOMVAR_VALUE_PROJECT_ID = "9"; + b.internals.request.Request.X10_CUSTOMVAR_SCOPE_PROJECT_ID = "11"; + b.internals.request.Request.CAMPAIGN_DELIMITER = "|"; + b.internals.request.EventRequest.X10_EVENT_PROJECT_ID = + "5"; + q.xml.Parser.escapes = function(a) { + a = new q.ds.StringMap; + a.set("lt", "<"); + a.set("gt", ">"); + a.set("amp", "&"); + a.set("quot", '"'); + a.set("apos", "'"); + a.set("nbsp", String.fromCharCode(160)); + return a + }(this); + d.Muses.VERSION = "0.2 beta"; + d.Muses.instances = []; + d.Tracker.enabled = !0; + g.main() +})("undefined" != typeof window ? window : exports); +var FlashDetect = new function() { + var n = this; + n.installed = !1; + n.raw = ""; + n.major = -1; + n.minor = -1; + n.revision = -1; + n.revisionStr = ""; + var w = [{ + name: "ShockwaveFlash.ShockwaveFlash.7", + version: function(p) { + return B(p) + } + }, { + name: "ShockwaveFlash.ShockwaveFlash.6", + version: function(p) { + var n = "6,0,21"; + try { + p.AllowScriptAccess = "always", n = B(p) + } catch (m) {} + return n + } + }, { + name: "ShockwaveFlash.ShockwaveFlash", + version: function(p) { + return B(p) + } + }], + B = function(p) { + var n = -1; + try { + n = p.GetVariable("$version") + } catch (m) {} + return n + }; + n.majorAtLeast = function(p) { + return n.major >= + p + }; + n.minorAtLeast = function(p) { + return n.minor >= p + }; + n.revisionAtLeast = function(p) { + return n.revision >= p + }; + n.versionAtLeast = function(p) { + var s = [n.major, n.minor, n.revision], + m = Math.min(s.length, arguments.length); + for (i = 0; i < m; i++) + if (s[i] >= arguments[i]) { + if (!(i + 1 < m && s[i] == arguments[i])) return !0 + } else return !1 + }; + n.FlashDetect = function() { + var p, s, m, x, A; + if (navigator.plugins && 0 < navigator.plugins.length) { + var g = navigator.mimeTypes; + if (g && g["application/x-shockwave-flash"] && g["application/x-shockwave-flash"].enabledPlugin && + g["application/x-shockwave-flash"].enabledPlugin.description) { + p = g = g["application/x-shockwave-flash"].enabledPlugin.description; + var g = p.split(/ +/), + z = g[2].split(/\./), + g = g[3]; + s = parseInt(z[0], 10); + m = parseInt(z[1], 10); + x = g; + A = parseInt(g.replace(/[a-zA-Z]/g, ""), 10) || n.revision; + n.raw = p; + n.major = s; + n.minor = m; + n.revisionStr = x; + n.revision = A; + n.installed = !0 + } + } else if (-1 == navigator.appVersion.indexOf("Mac") && window.execScript) + for (g = -1, z = 0; z < w.length && -1 == g; z++) { + p = -1; + try { + p = new ActiveXObject(w[z].name) + } catch (v) { + p = { + activeXError: !0 + } + } + p.activeXError || + (n.installed = !0, g = w[z].version(p), -1 != g && (p = g, x = p.split(","), s = parseInt(x[0].split(" ")[1], 10), m = parseInt(x[1], 10), A = parseInt(x[2], 10), x = x[2], n.raw = p, n.major = s, n.minor = m, n.revision = A, n.revisionStr = x)) + } + }() +}; +FlashDetect.JS_RELEASE = "1.0.4"; \ No newline at end of file diff --git a/airtime_mvc/public/js/airtime/embeddableplayer/muses.swf b/airtime_mvc/public/js/airtime/embeddableplayer/muses.swf new file mode 100644 index 000000000..0a23f07cf Binary files /dev/null and b/airtime_mvc/public/js/airtime/embeddableplayer/muses.swf differ