/** * @author https://apps.platyhouse.com/admin/board/ */ var ptyboard = new (function () { var obj = this; var ptyboard_api_url = 'request->appUrl?>/ptyboard/scriptA/get/'; var ptyboard_plugin_xdm_url = ''; var ptyboard_base64 = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (e) { var t = ""; var n, r, i, s, o, u, a; var f = 0; e = ptyboard_base64._utf8_encode(e); while (f < e.length) { n = e.charCodeAt(f++); r = e.charCodeAt(f++); i = e.charCodeAt(f++); s = n >> 2; o = (n & 3) << 4 | r >> 4; u = (r & 15) << 2 | i >> 6; a = i & 63; if (isNaN(r)) { u = a = 64 } else if (isNaN(i)) { a = 64 } t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a) } return t }, decode: function (e) { var t = ""; var n, r, i; var s, o, u, a; var f = 0; e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (f < e.length) { s = this._keyStr.indexOf(e.charAt(f++)); o = this._keyStr.indexOf(e.charAt(f++)); u = this._keyStr.indexOf(e.charAt(f++)); a = this._keyStr.indexOf(e.charAt(f++)); n = s << 2 | o >> 4; r = (o & 15) << 4 | u >> 2; i = (u & 3) << 6 | a; t = t + String.fromCharCode(n); if (u != 64) { t = t + String.fromCharCode(r) } if (a != 64) { t = t + String.fromCharCode(i) } } t = ptyboard_base64._utf8_decode(t); return t }, _utf8_encode: function (e) { e = e.replace(/\r\n/g, "\n"); var t = ""; for (var n = 0; n < e.length; n++) { var r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r) } else if (r > 127 && r < 2048) { t += String.fromCharCode(r >> 6 | 192); t += String.fromCharCode(r & 63 | 128) } else { t += String.fromCharCode(r >> 12 | 224); t += String.fromCharCode(r >> 6 & 63 | 128); t += String.fromCharCode(r & 63 | 128) } } return t }, _utf8_decode: function (e) { var t = ""; var n = 0; var r = c1 = c2 = 0; while (n < e.length) { r = e.charCodeAt(n); if (r < 128) { t += String.fromCharCode(r); n++ } else if (r > 191 && r < 224) { c2 = e.charCodeAt(n + 1); t += String.fromCharCode((r & 31) << 6 | c2 & 63); n += 2 } else { c2 = e.charCodeAt(n + 1); c3 = e.charCodeAt(n + 2); t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); n += 3 } } return t } } var is_mobile = function () { var mobile = new Array('iPhone', 'iPad', 'iPod', 'BlackBerry', 'Android', 'Windows CE', 'LG', 'MOT', 'SAMSUNG', 'SonyEricsson', 'Opera Mini', 'IEMobile'); for (var word in mobile) { if (typeof mobile[word] === 'string') { if (navigator.userAgent.match(mobile[word]) != null) return true; } } return false; } var plugin_id = 0; var callback_index = 0; var api = function (command, data, callback) { callback_name = '_ptyboard_callback_' + (new Date()).getTime() + '_' + callback_index++; if (typeof callback !== 'function') callback = function (res) { }; window[callback_name] = callback; js = document.createElement('script'); js.src = ptyboard_api_url + escape(command) + '?' + data + '&callback=' + callback_name + '&plugin_id=' + plugin_id; js.type = 'text/javascript'; console.log("append js = " + js); document.getElementsByTagName('head')[0].appendChild(js); } setTimeout(function () { var comments = document.getElementById(''); if (comments) { comments.innerHTML = ''; // comments.style.width = "100%"; // comments.style.margin = "0px"; /* var obj = {}; var v = ""; $.each(comments.attributes, function () { if (this.name == 'value') return; // Avoid someone (optional) if (this.specified) { v += "&" + this.name + "=" + encodeURI(this.value); obj[this.name] = this.value; } }); */ var data_module = encodeURIComponent(comments.getAttribute('data-module') || ''); var data_class = encodeURIComponent(comments.getAttribute('data-class') || ''); var data_function = encodeURIComponent(comments.getAttribute('data-function') || ''); var itemsPerPage = parseInt(comments.getAttribute('data-items-per-page') || 10); var comments_row = parseInt(comments.getAttribute('data-row') || 10); var comments_width = parseInt(comments.getAttribute('data-width')) || '100'; var comments_href = ptyboard_base64.encode(encodeURIComponent((comments.getAttribute('data-href') || location.href).replace(/^\s+|\s+$/gm, ''))); var apiKey = encodeURIComponent(comments.getAttribute('data-apiKey') || ''); var accessToken = encodeURIComponent(comments.getAttribute('data-accessToken') || ''); var userAccessToken = encodeURIComponent(comments.getAttribute('data-userAccessToken') || ''); var boardName = encodeURIComponent(comments.getAttribute('data-boardName') || ''); var categoryName = encodeURIComponent(comments.getAttribute('data-categoryName') || ''); var info = encodeURIComponent(comments.getAttribute('data-info') || ''); var id = encodeURIComponent(comments.getAttribute('data-id') || ''); var comments_host = location.host; if (is_mobile() || comments_width == 100) comments_width = '100%'; var remote = "request->appUrl?>/common/scriptA/get/?module=" + data_module + "&class=" + data_class + "&function=" + data_function + "&host=" + comments_host + "&apiKey=" + apiKey + "&href=" + comments_href + "&width=" + encodeURI(comments_width) + "&userAccessToken=" + userAccessToken + "&accessToken=" + accessToken + "&boardName=" + boardName + "&categoryName=" + categoryName + "&id=" + id + "&info=" + info + "&itemsPerPage=" + itemsPerPage; var socket = new easyXDM.Socket({ remote: remote, x_swf: ptyboard_plugin_xdm_url + "/easyxdm.swf", container: "", onReady: function () { // console.log("onReady. comments_width = " + comments_width); var comments_iframe = comments.getElementsByTagName('iframe')[0]; comments_iframe.setAttribute('width', comments_width); comments_iframe.setAttribute('scrolling', 'no'); comments_iframe.setAttribute('seamless', 'seamless'); comments_iframe.style.margin = 0; }, props: { style: { xborder: "0px dotted red", width: "100%", scrolling: "no", x_height: "50px", margin: "0px", seamless: "seamless" } }, onMessage: function (height, origin) { if (origin == 'request->appUrl?>') { var comments_iframe = comments.getElementsByTagName('iframe')[0]; var s = $("#"); comments_iframe.setAttribute('height', height); } } }); } }, 0); obj.init = function (optinos) { plugin_id = optinos.plugin_id; } obj.count = function (url, callback) { api('/count', 'url=' + ptyboard_base64.encode(encodeURIComponent(url)), callback); } obj.latest = function (optinos, callback) { api('/latest', 'url=' + ptyboard_base64.encode(encodeURIComponent(optinos.url)) + '&limit=' + parseInt(optinos.limit), callback); } return obj; })(); /** * easyXDM * http://easyxdm.net/ * Copyright(c) 2009-2011, 횠yvind Sean Kinsey, oyvind@kinsey.no. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ (function (N, d, p, K, k, H) { var b = this; var n = Math.floor(Math.random() * 10000); var q = Function.prototype; var Q = /^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/; var R = /[\-\w]+\/\.\.\//; var F = /([^:])\/\//g; var I = ""; var o = {}; var M = N.easyXDM; var U = "easyXDM_"; var E; var y = false; var i; var h; function C(X, Z) { var Y = typeof X[Z]; return Y == "function" || (!!(Y == "object" && X[Z])) || Y == "unknown" } function u(X, Y) { return !!(typeof (X[Y]) == "object" && X[Y]) } function r(X) { return Object.prototype.toString.call(X) === "[object Array]" } function c() { var Z = "Shockwave Flash", ad = "application/x-shockwave-flash"; if (!t(navigator.plugins) && typeof navigator.plugins[Z] == "object") { var ab = navigator.plugins[Z].description; if (ab && !t(navigator.mimeTypes) && navigator.mimeTypes[ad] && navigator.mimeTypes[ad].enabledPlugin) { i = ab.match(/\d+/g) } } if (!i) { var Y; try { Y = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); i = Array.prototype.slice.call(Y.GetVariable("$version").match(/(\d+),(\d+),(\d+),(\d+)/), 1); Y = null } catch (ac) { } } if (!i) { return false } var X = parseInt(i[0], 10), aa = parseInt(i[1], 10); h = X > 9 && aa > 0; return true } var v, x; if (C(N, "addEventListener")) { v = function (Z, X, Y) { Z.addEventListener(X, Y, false) }; x = function (Z, X, Y) { Z.removeEventListener(X, Y, false) } } else { if (C(N, "attachEvent")) { v = function (X, Z, Y) { X.attachEvent("on" + Z, Y) }; x = function (X, Z, Y) { X.detachEvent("on" + Z, Y) } } else { throw new Error("Browser not supported") } } var W = false, J = [], L; if ("readyState" in d) { L = d.readyState; W = L == "complete" || (~navigator.userAgent.indexOf("AppleWebKit/") && (L == "loaded" || L == "interactive")) } else { W = !!d.body } function s() { if (W) { return } W = true; for (var X = 0; X < J.length; X++) { J[X]() } J.length = 0 } if (!W) { if (C(N, "addEventListener")) { v(d, "DOMContentLoaded", s) } else { v(d, "readystatechange", function () { if (d.readyState == "complete") { s() } }); if (d.documentElement.doScroll && N === top) { var g = function () { if (W) { return } try { d.documentElement.doScroll("left") } catch (X) { K(g, 1); return } s() }; g() } } v(N, "load", s) } function G(Y, X) { if (W) { Y.call(X); return } J.push(function () { Y.call(X) }) } function m() { var Z = parent; if (I !== "") { for (var X = 0, Y = I.split("."); X < Y.length; X++) { Z = Z[Y[X]] } } return Z.easyXDM } function e(X) { N.easyXDM = M; I = X; if (I) { U = "easyXDM_" + I.replace(".", "_") + "_" } return o } function z(X) { return X.match(Q)[3] } function f(X) { return X.match(Q)[4] || "" } function j(Z) { var X = Z.toLowerCase().match(Q); var aa = X[2], ab = X[3], Y = X[4] || ""; if ((aa == "http:" && Y == ":80") || (aa == "https:" && Y == ":443")) { Y = "" } return aa + "//" + ab + Y } function B(X) { X = X.replace(F, "$1/"); if (!X.match(/^(http||https):\/\//)) { var Y = (X.substring(0, 1) === "/") ? "" : p.pathname; if (Y.substring(Y.length - 1) !== "/") { Y = Y.substring(0, Y.lastIndexOf("/") + 1) } X = p.protocol + "//" + p.host + Y + X } while (R.test(X)) { X = X.replace(R, "") } return X } function P(X, aa) { var ac = "", Z = X.indexOf("#"); if (Z !== -1) { ac = X.substring(Z); X = X.substring(0, Z) } var ab = []; for (var Y in aa) { if (aa.hasOwnProperty(Y)) { ab.push(Y + "=" + H(aa[Y])) } } return X + (y ? "#" : (X.indexOf("?") == -1 ? "?" : "&")) + ab.join("&") + ac } var S = (function (X) { X = X.substring(1).split("&"); var Z = {}, aa, Y = X.length; while (Y--) { aa = X[Y].split("="); Z[aa[0]] = k(aa[1]) } return Z }(/xdm_e=/.test(p.search) ? p.search : p.hash)); function t(X) { return typeof X === "undefined" } var O = function () { var Y = {}; var Z = {a: [1, 2, 3]}, X = '{"a":[1,2,3]}'; if (typeof JSON != "undefined" && typeof JSON.stringify === "function" && JSON.stringify(Z).replace((/\s/g), "") === X) { return JSON } if (Object.toJSON) { if (Object.toJSON(Z).replace((/\s/g), "") === X) { Y.stringify = Object.toJSON } } if (typeof String.prototype.evalJSON === "function") { Z = X.evalJSON(); if (Z.a && Z.a.length === 3 && Z.a[2] === 3) { Y.parse = function (aa) { return aa.evalJSON() } } } if (Y.stringify && Y.parse) { O = function () { return Y }; return Y } return null }; function T(X, Y, Z) { var ab; for (var aa in Y) { if (Y.hasOwnProperty(aa)) { if (aa in X) { ab = Y[aa]; if (typeof ab === "object") { T(X[aa], ab, Z) } else { if (!Z) { X[aa] = Y[aa] } } } else { X[aa] = Y[aa] } } } return X } function a() { var Y = d.body.appendChild(d.createElement("form")), X = Y.appendChild(d.createElement("input")); X.name = U + "TEST" + n; E = X !== Y.elements[X.name]; d.body.removeChild(Y) } function A(Y) { if (t(E)) { a() } var ac; if (E) { ac = d.createElement('< iframe name = "' + Y.props.name + '" / > ') } else { ac = d.createElement("IFRAME"); ac.name = Y.props.name } ac.id = ac.name = Y.props.name; delete Y.props.name; if (typeof Y.container == "string") { Y.container = d.getElementById(Y.container) } if (!Y.container) { T(ac.style, {position: "absolute", top: "-2000px", left: "0px"}); Y.container = d.body } var ab = Y.props.src; Y.props.src = "javascript:false"; T(ac, Y.props); ac.border = ac.frameBorder = 0; ac.allowTransparency = true; Y.container.appendChild(ac); if (Y.onLoad) { v(ac, "load", Y.onLoad) } if (Y.usePost) { var aa = Y.container.appendChild(d.createElement("form")), X; aa.target = ac.name; aa.action = ab; aa.method = "POST"; if (typeof (Y.usePost) === "object") { for (var Z in Y.usePost) { if (Y.usePost.hasOwnProperty(Z)) { if (E) { X = d.createElement('') } else { X = d.createElement("INPUT"); X.name = Z } X.value = Y.usePost[Z]; aa.appendChild(X) } } } aa.submit(); aa.parentNode.removeChild(aa) } else { ac.src = ab } Y.props.src = ab; return ac } function V(aa, Z) { if (typeof aa == "string") { aa = [aa] } var Y, X = aa.length; while (X--) { Y = aa[X]; Y = new RegExp(Y.substr(0, 1) == "^" ? Y : ("^" + Y.replace(/(\*)/g, ".$1").replace(/\?/g, ".") + "$")); if (Y.test(Z)) { return true } } return false } function l(Z) { var ae = Z.protocol, Y; Z.isHost = Z.isHost || t(S.xdm_p); y = Z.hash || false; if (!Z.props) { Z.props = {} } if (!Z.isHost) { Z.channel = S.xdm_c.replace(/["'<>\\]/g, ""); Z.secret = S.xdm_s; Z.remote = S.xdm_e.replace(/["'<>\\]/g, ""); ae = S.xdm_p; if (Z.acl && !V(Z.acl, Z.remote)) { throw new Error("Access denied for " + Z.remote) } } else { Z.remote = B(Z.remote); Z.channel = Z.channel || "default" + n++; Z.secret = Math.random().toString(16).substring(2); if (t(ae)) { if (j(p.href) == j(Z.remote)) { ae = "4" } else { if (C(N, "postMessage") || C(d, "postMessage")) { ae = "1" } else { if (Z.swf && C(N, "ActiveXObject") && c()) { ae = "6" } else { if (navigator.product === "Gecko" && "frameElement" in N && navigator.userAgent.indexOf("WebKit") == -1) { ae = "5" } else { if (Z.remoteHelper) { ae = "2" } else { ae = "0" } } } } } } } Z.protocol = ae; switch (ae) { case"0": T(Z, {interval: 100, delay: 2000, useResize: true, useParent: false, usePolling: false}, true); if (Z.isHost) { if (!Z.local) { var ac = p.protocol + "//" + p.host, X = d.body.getElementsByTagName("img"), ad; var aa = X.length; while (aa--) { ad = X[aa]; if (ad.src.substring(0, ac.length) === ac) { Z.local = ad.src; break } } if (!Z.local) { Z.local = N } } var ab = {xdm_c: Z.channel, xdm_p: 0}; if (Z.local === N) { Z.usePolling = true; Z.useParent = true; Z.local = p.protocol + "//" + p.host + p.pathname + p.search; ab.xdm_e = Z.local; ab.xdm_pa = 1 } else { ab.xdm_e = B(Z.local) } if (Z.container) { Z.useResize = false; ab.xdm_po = 1 } Z.remote = P(Z.remote, ab) } else { T(Z, { channel: S.xdm_c, remote: S.xdm_e, useParent: !t(S.xdm_pa), usePolling: !t(S.xdm_po), useResize: Z.useParent ? false : Z.useResize }) } Y = [new o.stack.HashTransport(Z), new o.stack.ReliableBehavior({}), new o.stack.QueueBehavior({ encode: true, maxLength: 4000 - Z.remote.length }), new o.stack.VerifyBehavior({initiate: Z.isHost})]; break; case"1": Y = [new o.stack.PostMessageTransport(Z)]; break; case"2": if (Z.isHost) { Z.remoteHelper = B(Z.remoteHelper) } Y = [new o.stack.NameTransport(Z), new o.stack.QueueBehavior(), new o.stack.VerifyBehavior({initiate: Z.isHost})]; break; case"3": Y = [new o.stack.NixTransport(Z)]; break; case"4": Y = [new o.stack.SameOriginTransport(Z)]; break; case"5": Y = [new o.stack.FrameElementTransport(Z)]; break; case"6": if (!i) { c() } Y = [new o.stack.FlashTransport(Z)]; break } Y.push(new o.stack.QueueBehavior({lazy: Z.lazy, remove: true})); return Y } function D(aa) { var ab, Z = { incoming: function (ad, ac) { this.up.incoming(ad, ac) }, outgoing: function (ac, ad) { this.down.outgoing(ac, ad) }, callback: function (ac) { this.up.callback(ac) }, init: function () { this.down.init() }, destroy: function () { this.down.destroy() } }; for (var Y = 0, X = aa.length; Y < X; Y++) { ab = aa[Y]; T(ab, Z, true); if (Y !== 0) { ab.down = aa[Y - 1] } if (Y !== X - 1) { ab.up = aa[Y + 1] } } return ab } function w(X) { X.up.down = X.down; X.down.up = X.up; X.up = X.down = null } T(o, {version: "2.4.19.3", query: S, stack: {}, apply: T, getJSONObject: O, whenReady: G, noConflict: e}); o.DomHelper = { on: v, un: x, requiresJSON: function (X) { if (!u(N, "JSON")) { d.write('< script type = "text/javascript" src = "' + X + '" > <\/script>') } } } ; (function () { var X = {}; o.Fn = { set: function (Y, Z) { X[Y] = Z }, get: function (Z, Y) { if (!X.hasOwnProperty(Z)) { return } var aa = X[Z]; if (Y) { delete X[Z] } return aa } } }()); o.Socket = function (Y) { var X = D(l(Y).concat([{ incoming: function (ab, aa) { Y.onMessage(ab, aa) }, callback: function (aa) { if (Y.onReady) { Y.onReady(aa) } } }])), Z = j(Y.remote); this.origin = j(Y.remote); this.destroy = function () { X.destroy() }; this.postMessage = function (aa) { X.outgoing(aa, Z) }; X.init() }; o.Rpc = function (Z, Y) { if (Y.local) { for (var ab in Y.local) { if (Y.local.hasOwnProperty(ab)) { var aa = Y.local[ab]; if (typeof aa === "function") { Y.local[ab] = {method: aa} } } } } var X = D(l(Z).concat([new o.stack.RpcBehavior(this, Y), { callback: function (ac) { if (Z.onReady) { Z.onReady(ac) } } }])); this.origin = j(Z.remote); this.destroy = function () { X.destroy() }; X.init() }; o.stack.SameOriginTransport = function (Y) { var Z, ab, aa, X; return (Z = { outgoing: function (ad, ae, ac) { aa(ad); if (ac) { ac() } }, destroy: function () { if (ab) { ab.parentNode.removeChild(ab); ab = null } }, onDOMReady: function () { X = j(Y.remote); if (Y.isHost) { T(Y.props, { src: P(Y.remote, { xdm_e: p.protocol + "//" + p.host + p.pathname, xdm_c: Y.channel, xdm_p: 4 }), name: U + Y.channel + "_provider" }); ab = A(Y); o.Fn.set(Y.channel, function (ac) { aa = ac; K(function () { Z.up.callback(true) }, 0); return function (ad) { Z.up.incoming(ad, X) } }) } else { aa = m().Fn.get(Y.channel, true)(function (ac) { Z.up.incoming(ac, X) }); K(function () { Z.up.callback(true) }, 0) } }, init: function () { G(Z.onDOMReady, Z) } }) }; o.stack.FlashTransport = function (aa) { var ac, X, ab, ad, Y, ae; function af(ah, ag) { K(function () { ac.up.incoming(ah, ad) }, 0) } function Z(ah) { var ag = aa.swf + "?host=" + aa.isHost; var aj = "easyXDM_swf_" + Math.floor(Math.random() * 10000); o.Fn.set("flash_loaded" + ah.replace(/[\-.]/g, "_"), function () { o.stack.FlashTransport[ah].swf = Y = ae.firstChild; var ak = o.stack.FlashTransport[ah].queue; for (var al = 0; al < ak.length; al++) { ak[al]() } ak.length = 0 }); if (aa.swfContainer) { ae = (typeof aa.swfContainer == "string") ? d.getElementById(aa.swfContainer) : aa.swfContainer } else { ae = d.createElement("div"); T(ae.style, h && aa.swfNoThrottle ? { height: "20px", width: "20px", position: "fixed", right: 0, top: 0 } : {height: "1px", width: "1px", position: "absolute", overflow: "hidden", right: 0, top: 0}); d.body.appendChild(ae) } var ai = "callback=flash_loaded" + H(ah.replace(/[\-.]/g, "_")) + "&proto=" + b.location.protocol + "&domain=" + H(z(b.location.href)) + "&port=" + H(f(b.location.href)) + "&ns=" + H(I); ae.innerHTML = "
" } return (ac = { outgoing: function (ah, ai, ag) { Y.postMessage(aa.channel, ah.toString()); if (ag) { ag() } }, destroy: function () { try { Y.destroyChannel(aa.channel) } catch (ag) { } Y = null; if (X) { X.parentNode.removeChild(X); X = null } }, onDOMReady: function () { ad = aa.remote; o.Fn.set("flash_" + aa.channel + "_init", function () { K(function () { ac.up.callback(true) }) }); o.Fn.set("flash_" + aa.channel + "_onMessage", af); aa.swf = B(aa.swf); var ah = z(aa.swf); var ag = function () { o.stack.FlashTransport[ah].init = true; Y = o.stack.FlashTransport[ah].swf; Y.createChannel(aa.channel, aa.secret, j(aa.remote), aa.isHost); if (aa.isHost) { if (h && aa.swfNoThrottle) { T(aa.props, {position: "fixed", right: 0, top: 0, height: "20px", width: "20px"}) } T(aa.props, { src: P(aa.remote, { xdm_e: j(p.href), xdm_c: aa.channel, xdm_p: 6, xdm_s: aa.secret }), name: U + aa.channel + "_provider" }); X = A(aa) } }; if (o.stack.FlashTransport[ah] && o.stack.FlashTransport[ah].init) { ag() } else { if (!o.stack.FlashTransport[ah]) { o.stack.FlashTransport[ah] = {queue: [ag]}; Z(ah) } else { o.stack.FlashTransport[ah].queue.push(ag) } } }, init: function () { G(ac.onDOMReady, ac) } }) }; o.stack.PostMessageTransport = function (aa) { var ac, ad, Y, Z; function X(ae) { if (ae.origin) { return j(ae.origin) } if (ae.uri) { return j(ae.uri) } if (ae.domain) { return p.protocol + "//" + ae.domain } throw"Unable to retrieve the origin of the event" } function ab(af) { var ae = X(af); if (ae == Z && af.data.substring(0, aa.channel.length + 1) == aa.channel + " ") { ac.up.incoming(af.data.substring(aa.channel.length + 1), ae) } } return (ac = { outgoing: function (af, ag, ae) { Y.postMessage(aa.channel + " " + af, ag || Z); if (ae) { ae() } }, destroy: function () { x(N, "message", ab); if (ad) { Y = null; ad.parentNode.removeChild(ad); ad = null } }, onDOMReady: function () { Z = j(aa.remote); if (aa.isHost) { var ae = function (af) { if (af.data == aa.channel + "-ready") { Y = ("postMessage" in ad.contentWindow) ? ad.contentWindow : ad.contentWindow.document; x(N, "message", ae); v(N, "message", ab); K(function () { ac.up.callback(true) }, 0) } }; v(N, "message", ae); T(aa.props, { src: P(aa.remote, {xdm_e: j(p.href), xdm_c: aa.channel, xdm_p: 1}), name: U + aa.channel + "_provider" }); ad = A(aa) } else { v(N, "message", ab); Y = ("postMessage" in N.parent) ? N.parent : N.parent.document; Y.postMessage(aa.channel + "-ready", Z); K(function () { ac.up.callback(true) }, 0) } }, init: function () { G(ac.onDOMReady, ac) } }) }; o.stack.FrameElementTransport = function (Y) { var Z, ab, aa, X; return (Z = { outgoing: function (ad, ae, ac) { aa.call(this, ad); if (ac) { ac() } }, destroy: function () { if (ab) { ab.parentNode.removeChild(ab); ab = null } }, onDOMReady: function () { X = j(Y.remote); if (Y.isHost) { T(Y.props, { src: P(Y.remote, {xdm_e: j(p.href), xdm_c: Y.channel, xdm_p: 5}), name: U + Y.channel + "_provider" }); ab = A(Y); ab.fn = function (ac) { delete ab.fn; aa = ac; K(function () { Z.up.callback(true) }, 0); return function (ad) { Z.up.incoming(ad, X) } } } else { if (d.referrer && j(d.referrer) != S.xdm_e) { N.top.location = S.xdm_e } aa = N.frameElement.fn(function (ac) { Z.up.incoming(ac, X) }); Z.up.callback(true) } }, init: function () { G(Z.onDOMReady, Z) } }) }; o.stack.NameTransport = function (ab) { var ac; var ae, ai, aa, ag, ah, Y, X; function af(al) { var ak = ab.remoteHelper + (ae ? "#_3" : "#_2") + ab.channel; ai.contentWindow.sendMessage(al, ak) } function ad() { if (ae) { if (++ag === 2 || !ae) { ac.up.callback(true) } } else { af("ready"); ac.up.callback(true) } } function aj(ak) { ac.up.incoming(ak, Y) } function Z() { if (ah) { K(function () { ah(true) }, 0) } } return (ac = { outgoing: function (al, am, ak) { ah = ak; af(al) }, destroy: function () { ai.parentNode.removeChild(ai); ai = null; if (ae) { aa.parentNode.removeChild(aa); aa = null } }, onDOMReady: function () { ae = ab.isHost; ag = 0; Y = j(ab.remote); ab.local = B(ab.local); if (ae) { o.Fn.set(ab.channel, function (al) { if (ae && al === "ready") { o.Fn.set(ab.channel, aj); ad() } }); X = P(ab.remote, {xdm_e: ab.local, xdm_c: ab.channel, xdm_p: 2}); T(ab.props, {src: X + "#" + ab.channel, name: U + ab.channel + "_provider"}); aa = A(ab) } else { ab.remoteHelper = ab.remote; o.Fn.set(ab.channel, aj) } var ak = function () { var al = ai || this; x(al, "load", ak); o.Fn.set(ab.channel + "_load", Z); (function am() { if (typeof al.contentWindow.sendMessage == "function") { ad() } else { K(am, 50) } }()) }; ai = A({props: {src: ab.local + "#_4" + ab.channel}, onLoad: ak}) }, init: function () { G(ac.onDOMReady, ac) } }) }; o.stack.HashTransport = function (Z) { var ac; var ah = this, af, aa, X, ad, am, ab, al; var ag, Y; function ak(ao) { if (!al) { return } var an = Z.remote + "#" + (am++) + "_" + ao; ((af || !ag) ? al.contentWindow : al).location = an } function ae(an) { ad = an; ac.up.incoming(ad.substring(ad.indexOf("_") + 1), Y) } function aj() { if (!ab) { return } var an = ab.location.href, ap = "", ao = an.indexOf("#"); if (ao != -1) { ap = an.substring(ao) } if (ap && ap != ad) { ae(ap) } } function ai() { aa = setInterval(aj, X) } return (ac = { outgoing: function (an, ao) { ak(an) }, destroy: function () { N.clearInterval(aa); if (af || !ag) { al.parentNode.removeChild(al) } al = null }, onDOMReady: function () { af = Z.isHost; X = Z.interval; ad = "#" + Z.channel; am = 0; ag = Z.useParent; Y = j(Z.remote); if (af) { T(Z.props, {src: Z.remote, name: U + Z.channel + "_provider"}); if (ag) { Z.onLoad = function () { ab = N; ai(); ac.up.callback(true) } } else { var ap = 0, an = Z.delay / 50; (function ao() { if (++ap > an) { throw new Error("Unable to reference listenerwindow") } try { ab = al.contentWindow.frames[U + Z.channel + "_consumer"] } catch (aq) { } if (ab) { ai(); ac.up.callback(true) } else { K(ao, 50) } }()) } al = A(Z) } else { ab = N; ai(); if (ag) { al = parent; ac.up.callback(true) } else { T(Z, { props: {src: Z.remote + "#" + Z.channel + new Date(), name: U + Z.channel + "_consumer"}, onLoad: function () { ac.up.callback(true) } }); al = A(Z) } } }, init: function () { G(ac.onDOMReady, ac) } }) }; o.stack.ReliableBehavior = function (Y) { var aa, ac; var ab = 0, X = 0, Z = ""; return (aa = { incoming: function (af, ad) { var ae = af.indexOf("_"), ag = af.substring(0, ae).split(","); af = af.substring(ae + 1); if (ag[0] == ab) { Z = ""; if (ac) { ac(true) } } if (af.length > 0) { aa.down.outgoing(ag[1] + "," + ab + "_" + Z, ad); if (X != ag[1]) { X = ag[1]; aa.up.incoming(af, ad) } } }, outgoing: function (af, ad, ae) { Z = af; ac = ae; aa.down.outgoing(X + "," + (++ab) + "_" + af, ad) } }) }; o.stack.QueueBehavior = function (Z) { var ac, ad = [], ag = true, aa = "", af, X = 0, Y = false, ab = false; function ae() { if (Z.remove && ad.length === 0) { w(ac); return } if (ag || ad.length === 0 || af) { return } ag = true; var ah = ad.shift(); ac.down.outgoing(ah.data, ah.origin, function (ai) { ag = false; if (ah.callback) { K(function () { ah.callback(ai) }, 0) } ae() }) } return (ac = { init: function () { if (t(Z)) { Z = {} } if (Z.maxLength) { X = Z.maxLength; ab = true } if (Z.lazy) { Y = true } else { ac.down.init() } }, callback: function (ai) { ag = false; var ah = ac.up; ae(); ah.callback(ai) }, incoming: function (ak, ai) { if (ab) { var aj = ak.indexOf("_"), ah = parseInt(ak.substring(0, aj), 10); aa += ak.substring(aj + 1); if (ah === 0) { if (Z.encode) { aa = k(aa) } ac.up.incoming(aa, ai); aa = "" } } else { ac.up.incoming(ak, ai) } }, outgoing: function (al, ai, ak) { if (Z.encode) { al = H(al) } var ah = [], aj; if (ab) { while (al.length !== 0) { aj = al.substring(0, X); al = al.substring(aj.length); ah.push(aj) } while ((aj = ah.shift())) { ad.push({data: ah.length + "_" + aj, origin: ai, callback: ah.length === 0 ? ak : null}) } } else { ad.push({data: al, origin: ai, callback: ak}) } if (Y) { ac.down.init() } else { ae() } }, destroy: function () { af = true; ac.down.destroy() } }) }; o.stack.VerifyBehavior = function (ab) { var ac, aa, Y, Z = false; function X() { aa = Math.random().toString(16).substring(2); ac.down.outgoing(aa) } return (ac = { incoming: function (af, ad) { var ae = af.indexOf("_"); if (ae === -1) { if (af === aa) { ac.up.callback(true) } else { if (!Y) { Y = af; if (!ab.initiate) { X() } ac.down.outgoing(af) } } } else { if (af.substring(0, ae) === Y) { ac.up.incoming(af.substring(ae + 1), ad) } } }, outgoing: function (af, ad, ae) { ac.down.outgoing(aa + "_" + af, ad, ae) }, callback: function (ad) { if (ab.initiate) { X() } } }) }; o.stack.RpcBehavior = function (ad, Y) { var aa, af = Y.serializer || O(); var ae = 0, ac = {}; function X(ag) { ag.jsonrpc = "2.0"; aa.down.outgoing(af.stringify(ag)) } function ab(ag, ai) { var ah = Array.prototype.slice; return function () { var aj = arguments.length, al, ak = {method: ai}; if (aj > 0 && typeof arguments[aj - 1] === "function") { if (aj > 1 && typeof arguments[aj - 2] === "function") { al = {success: arguments[aj - 2], error: arguments[aj - 1]}; ak.params = ah.call(arguments, 0, aj - 2) } else { al = {success: arguments[aj - 1]}; ak.params = ah.call(arguments, 0, aj - 1) } ac["" + (++ae)] = al; ak.id = ae } else { ak.params = ah.call(arguments, 0) } if (ag.namedParams && ak.params.length === 1) { ak.params = ak.params[0] } X(ak) } } function Z(an, am, ai, al) { if (!ai) { if (am) { X({id: am, error: {code: -32601, message: "Procedure not found."}}) } return } var ak, ah; if (am) { ak = function (ao) { ak = q; X({id: am, result: ao}) }; ah = function (ao, ap) { ah = q; var aq = {id: am, error: {code: -32099, message: ao}}; if (ap) { aq.error.data = ap } X(aq) } } else { ak = ah = q } if (!r(al)) { al = [al] } try { var ag = ai.method.apply(ai.scope, al.concat([ak, ah])); if (!t(ag)) { ak(ag) } } catch (aj) { ah(aj.message) } } return (aa = { incoming: function (ah, ag) { var ai = af.parse(ah); if (ai.method) { if (Y.handle) { Y.handle(ai, X) } else { Z(ai.method, ai.id, Y.local[ai.method], ai.params) } } else { var aj = ac[ai.id]; if (ai.error) { if (aj.error) { aj.error(ai.error) } } else { if (aj.success) { aj.success(ai.result) } } delete ac[ai.id] } }, init: function () { if (Y.remote) { for (var ag in Y.remote) { if (Y.remote.hasOwnProperty(ag)) { ad[ag] = ab(Y.remote[ag], ag) } } } aa.down.init() }, destroy: function () { for (var ag in Y.remote) { if (Y.remote.hasOwnProperty(ag) && ad.hasOwnProperty(ag)) { delete ad[ag] } } aa.down.destroy() } }) }; b.easyXDM = o }) (window, document, location, window.setTimeout, decodeURIComponent, encodeURIComponent);