//XML檔案 //不常變動的 var fbo2XML = "BigOld2Data.xml?v=2017012401"; var ffantanXML = "fmjData_20130305.xml?v=2017012401"; var fmjXML = "fmjData.xml?v=2020020401"; var anniversaryLinkXML = "anniversaryLinkSet_20130121.xml"; var texasXML = "texasData_20130730.xml?v=2017012401"; var MillionSlamXML = "XML/MillionSlamData_20130618.xml?v=2017012401"; var bankLinkXML = "bankLinkSet_20110614.xml"; var GuildXML = "XML/guildData_20120904.xml"; //有異動到修改日期即可 var SlotXML = "XML/SlotData.xml?v=20180424"; //-------------------------------------------------------- //XML檔案 //常變動的 //廣告頁 var shareXML = "shareData.xml?v=2021010501"; var bankXML = "bankData.xml?v=2021010501"; //儲值轉盤 var anniversaryXML = "activeData.xml?v=2020112401"; //比賽框 var entryXML = "entryData.xml?v=2021010501"; //水果盤 var FruitXML = "XML/FruitData.xml?v=2018050801"; //-------------------------------------------------------- //SWF檔案 //不常變動的 var fmjSWF = "login_FMJ.swf?v=2017050903"; var entrySWF = "login_entry.swf?v=2017050901"; var fbo2SWF = "login_BigOld2.swf?v=2017050902"; var ffantanSWF = "login_Fantan.swf?v=2017050903"; var anniversarySWF = "anniversary_20130618.swf?v=20130625"; var texasSWF = "login_Texas.swf?v=2017050902"; var MillionSlamSWF = "login_MillionSlam.swf?v=2017050903"; var bankSWF = "BANK.swf?v=20150901"; var GuildSWF = "ChannelClient_20121204.swf"; var SlotSWF = "login_Slot.swf?v=2017050903"; //-------------------------------------------------------- //SWF檔案 //常變動的 //水果盤 var FruitSWF = "login_Fruit.swf?v=2018050801"; //前導路徑 var rootPath = "https://fmjpatch.uj.com.tw/"; //資料夾路徑 var shareFolder = "Share/"; var packageFolder = "Package/"; var entryFolder = "Entry/"; var fmjFolder = "fmj/"; var fbo2Folder = "FBigOld2/"; var ffantanFolder = "FFantanClient/"; var anniversaryFolder = "Anniversary/"; var texasFolder = "Texas/"; var MillionSlamFolder = "MillionSlam/"; var bankFolder = "Bank/"; var FruitFolder = "Fruit/"; var GuildFolder = "Guild/"; var SlotFolder = "Slot/"; var fmjtestFolder = "fmjtest/";function $G(){ var Url=document.URL; var u,g,StrBack=''; if(arguments[arguments.length-1]=="#") u=Url.split("#"); else u=Url.split("?"); if (u.length==1) g=''; else g=u[1]; if(g!=''){ gg=g.split("&"); var MaxI=gg.length; str = arguments[0]+"="; for(i=0;i is released under the MIT License */ var swfobject = function() { var UNDEF = "undefined", OBJECT = "object", SHOCKWAVE_FLASH = "Shockwave Flash", SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash", FLASH_MIME_TYPE = "application/x-shockwave-flash", EXPRESS_INSTALL_ID = "SWFObjectExprInst", ON_READY_STATE_CHANGE = "onreadystatechange", win = window, doc = document, nav = navigator, plugin = false, domLoadFnArr = [main], regObjArr = [], objIdArr = [], listenersArr = [], storedAltContent, storedAltContentId, storedCallbackFn, storedCallbackObj, isDomLoaded = false, isExpressInstallActive = false, dynamicStylesheet, dynamicStylesheetMedia, autoHideShow = true, /* Centralized function for browser feature detection - User agent string detection is only used when no good alternative is possible - Is executed directly for optimal performance */ ua = function() { var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF, u = nav.userAgent.toLowerCase(), p = nav.platform.toLowerCase(), windows = p ? /win/.test(p) : /win/.test(u), mac = p ? /mac/.test(p) : /mac/.test(u), webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html playerVersion = [0,0,0], d = null; if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) { d = nav.plugins[SHOCKWAVE_FLASH].description; if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+ plugin = true; ie = false; // cascaded feature detection for Internet Explorer d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10); playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10); playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0; } } else if (typeof win.ActiveXObject != UNDEF) { try { var a = new ActiveXObject(SHOCKWAVE_FLASH_AX); if (a) { // a will return null when ActiveX is disabled d = a.GetVariable("$version"); if (d) { ie = true; // cascaded feature detection for Internet Explorer d = d.split(" ")[1].split(","); playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; } } } catch(e) {} } return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac }; }(), /* Cross-browser onDomLoad - Will fire an event as soon as the DOM of a web page is loaded - Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/ - Regular onload serves as fallback */ onDomLoad = function() { if (!ua.w3) { return; } if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically callDomLoadFunctions(); } if (!isDomLoaded) { if (typeof doc.addEventListener != UNDEF) { doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false); } if (ua.ie && ua.win) { doc.attachEvent(ON_READY_STATE_CHANGE, function() { if (doc.readyState == "complete") { doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee); callDomLoadFunctions(); } }); if (win == top) { // if not inside an iframe (function(){ if (isDomLoaded) { return; } try { doc.documentElement.doScroll("left"); } catch(e) { setTimeout(arguments.callee, 0); return; } callDomLoadFunctions(); })(); } } if (ua.wk) { (function(){ if (isDomLoaded) { return; } if (!/loaded|complete/.test(doc.readyState)) { setTimeout(arguments.callee, 0); return; } callDomLoadFunctions(); })(); } addLoadEvent(callDomLoadFunctions); } }(); function callDomLoadFunctions() { if (isDomLoaded) { return; } try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span")); t.parentNode.removeChild(t); } catch (e) { return; } isDomLoaded = true; var dl = domLoadFnArr.length; for (var i = 0; i < dl; i++) { domLoadFnArr[i](); } } function addDomLoadEvent(fn) { if (isDomLoaded) { fn(); } else { domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+ } } /* Cross-browser onload - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/ - Will fire an event as soon as a web page including all of its assets are loaded */ function addLoadEvent(fn) { if (typeof win.addEventListener != UNDEF) { win.addEventListener("load", fn, false); } else if (typeof doc.addEventListener != UNDEF) { doc.addEventListener("load", fn, false); } else if (typeof win.attachEvent != UNDEF) { addListener(win, "onload", fn); } else if (typeof win.onload == "function") { var fnOld = win.onload; win.onload = function() { fnOld(); fn(); }; } else { win.onload = fn; } } /* Main function - Will preferably execute onDomLoad, otherwise onload (as a fallback) */ function main() { if (plugin) { testPlayerVersion(); } else { matchVersions(); } } /* Detect the Flash Player version for non-Internet Explorer browsers - Detecting the plug-in version via the object element is more precise than using the plugins collection item's description: a. Both release and build numbers can be detected b. Avoid wrong descriptions by corrupt installers provided by Adobe c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports - Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available */ function testPlayerVersion() { var b = doc.getElementsByTagName("body")[0]; var o = createElement(OBJECT); o.setAttribute("type", FLASH_MIME_TYPE); var t = b.appendChild(o); if (t) { var counter = 0; (function(){ if (typeof t.GetVariable != UNDEF) { var d = t.GetVariable("$version"); if (d) { d = d.split(" ")[1].split(","); ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; } } else if (counter < 10) { counter++; setTimeout(arguments.callee, 10); return; } b.removeChild(o); t = null; matchVersions(); })(); } else { matchVersions(); } } /* Perform Flash Player and SWF version matching; static publishing only */ function matchVersions() { var rl = regObjArr.length; if (rl > 0) { for (var i = 0; i < rl; i++) { // for each registered object element var id = regObjArr[i].id; var cb = regObjArr[i].callbackFn; var cbObj = {success:false, id:id}; if (ua.pv[0] > 0) { var obj = getElementById(id); if (obj) { if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match! setVisibility(id, true); if (cb) { cbObj.success = true; cbObj.ref = getObjectById(id); cb(cbObj); } } else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported var att = {}; att.data = regObjArr[i].expressInstall; att.width = obj.getAttribute("width") || "0"; att.height = obj.getAttribute("height") || "0"; if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); } if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); } // parse HTML object param element's name-value pairs var par = {}; var p = obj.getElementsByTagName("param"); var pl = p.length; for (var j = 0; j < pl; j++) { if (p[j].getAttribute("name").toLowerCase() != "movie") { par[p[j].getAttribute("name")] = p[j].getAttribute("value"); } } showExpressInstall(att, par, id, cb); } else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF displayAltContent(obj); if (cb) { cb(cbObj); } } } } else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content) setVisibility(id, true); if (cb) { var o = getObjectById(id); // test whether there is an HTML object element or not if (o && typeof o.SetVariable != UNDEF) { cbObj.success = true; cbObj.ref = o; } cb(cbObj); } } } } } function getObjectById(objectIdStr) { var r = null; var o = getElementById(objectIdStr); if (o && o.nodeName == "OBJECT") { if (typeof o.SetVariable != UNDEF) { r = o; } else { var n = o.getElementsByTagName(OBJECT)[0]; if (n) { r = n; } } } return r; } /* Requirements for Adobe Express Install - only one instance can be active at a time - fp 6.0.65 or higher - Win/Mac OS only - no Webkit engines older than version 312 */ function canExpressInstall() { return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312); } /* Show the Adobe Express Install dialog - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 */ function showExpressInstall(att, par, replaceElemIdStr, callbackFn) { isExpressInstallActive = true; storedCallbackFn = callbackFn || null; storedCallbackObj = {success:false, id:replaceElemIdStr}; var obj = getElementById(replaceElemIdStr); if (obj) { if (obj.nodeName == "OBJECT") { // static publishing storedAltContent = abstractAltContent(obj); storedAltContentId = null; } else { // dynamic publishing storedAltContent = obj; storedAltContentId = replaceElemIdStr; } att.id = EXPRESS_INSTALL_ID; if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; } if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; } doc.title = doc.title.slice(0, 47) + " - Flash Player Installation"; var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn", fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title; if (typeof par.flashvars != UNDEF) { par.flashvars += "&" + fv; } else { par.flashvars = fv; } // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work if (ua.ie && ua.win && obj.readyState != 4) { var newObj = createElement("div"); replaceElemIdStr += "SWFObjectNew"; newObj.setAttribute("id", replaceElemIdStr); obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf obj.style.display = "none"; (function(){ if (obj.readyState == 4) { obj.parentNode.removeChild(obj); } else { setTimeout(arguments.callee, 10); } })(); } createSWF(att, par, replaceElemIdStr); } } /* Functions to abstract and display alternative content */ function displayAltContent(obj) { if (ua.ie && ua.win && obj.readyState != 4) { // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work var el = createElement("div"); obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content el.parentNode.replaceChild(abstractAltContent(obj), el); obj.style.display = "none"; (function(){ if (obj.readyState == 4) { obj.parentNode.removeChild(obj); } else { setTimeout(arguments.callee, 10); } })(); } else { obj.parentNode.replaceChild(abstractAltContent(obj), obj); } } function abstractAltContent(obj) { var ac = createElement("div"); if (ua.win && ua.ie) { ac.innerHTML = obj.innerHTML; } else { var nestedObj = obj.getElementsByTagName(OBJECT)[0]; if (nestedObj) { var c = nestedObj.childNodes; if (c) { var cl = c.length; for (var i = 0; i < cl; i++) { if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) { ac.appendChild(c[i].cloneNode(true)); } } } } } return ac; } /* Cross-browser dynamic SWF creation */ function createSWF(attObj, parObj, id) { var r, el = getElementById(id); if (ua.wk && ua.wk < 312) { return r; } if (el) { if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content attObj.id = id; } if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML var att = ""; for (var i in attObj) { if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries if (i.toLowerCase() == "data") { parObj.movie = attObj[i]; } else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword att += ' class="' + attObj[i] + '"'; } else if (i.toLowerCase() != "classid") { att += ' ' + i + '="' + attObj[i] + '"'; } } } var par = ""; for (var j in parObj) { if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries par += ''; } } el.outerHTML = '' + par + ''; objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only) r = getElementById(attObj.id); } else { // well-behaving browsers var o = createElement(OBJECT); o.setAttribute("type", FLASH_MIME_TYPE); for (var m in attObj) { if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword o.setAttribute("class", attObj[m]); } else if (m.toLowerCase() != "classid") { // filter out IE specific attribute o.setAttribute(m, attObj[m]); } } } for (var n in parObj) { if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element createObjParam(o, n, parObj[n]); } } el.parentNode.replaceChild(o, el); r = o; } } return r; } function createObjParam(el, pName, pValue) { var p = createElement("param"); p.setAttribute("name", pName); p.setAttribute("value", pValue); el.appendChild(p); } /* Cross-browser SWF removal - Especially needed to safely and completely remove a SWF in Internet Explorer */ function removeSWF(id) { var obj = getElementById(id); if (obj && obj.nodeName == "OBJECT") { if (ua.ie && ua.win) { obj.style.display = "none"; (function(){ if (obj.readyState == 4) { removeObjectInIE(id); } else { setTimeout(arguments.callee, 10); } })(); } else { obj.parentNode.removeChild(obj); } } } function removeObjectInIE(id) { var obj = getElementById(id); if (obj) { for (var i in obj) { if (typeof obj[i] == "function") { obj[i] = null; } } obj.parentNode.removeChild(obj); } } /* Functions to optimize JavaScript compression */ function getElementById(id) { var el = null; try { el = doc.getElementById(id); } catch (e) {} return el; } function createElement(el) { return doc.createElement(el); } /* Updated attachEvent function for Internet Explorer - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks */ function addListener(target, eventType, fn) { target.attachEvent(eventType, fn); listenersArr[listenersArr.length] = [target, eventType, fn]; } /* Flash Player and SWF content version matching */ function hasPlayerVersion(rv) { var pv = ua.pv, v = rv.split("."); v[0] = parseInt(v[0], 10); v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0" v[2] = parseInt(v[2], 10) || 0; return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; } /* Cross-browser dynamic CSS creation - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php */ function createCSS(sel, decl, media, newStyle) { if (ua.ie && ua.mac) { return; } var h = doc.getElementsByTagName("head")[0]; if (!h) { return; } // to also support badly authored HTML pages that lack a head element var m = (media && typeof media == "string") ? media : "screen"; if (newStyle) { dynamicStylesheet = null; dynamicStylesheetMedia = null; } if (!dynamicStylesheet || dynamicStylesheetMedia != m) { // create dynamic stylesheet + get a global reference to it var s = createElement("style"); s.setAttribute("type", "text/css"); s.setAttribute("media", m); dynamicStylesheet = h.appendChild(s); if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) { dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1]; } dynamicStylesheetMedia = m; } // add style rule if (ua.ie && ua.win) { if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) { dynamicStylesheet.addRule(sel, decl); } } else { if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) { dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}")); } } } function setVisibility(id, isVisible) { if (!autoHideShow) { return; } var v = isVisible ? "visible" : "hidden"; if (isDomLoaded && getElementById(id)) { getElementById(id).style.visibility = v; } else { createCSS("#" + id, "visibility:" + v); } } /* Filter to avoid XSS attacks */ function urlEncodeIfNecessary(s) { var regex = /[\\\"<>\.;]/; var hasBadChars = regex.exec(s) != null; return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s; } /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only) */ var cleanup = function() { if (ua.ie && ua.win) { window.attachEvent("onunload", function() { // remove listeners to avoid memory leaks var ll = listenersArr.length; for (var i = 0; i < ll; i++) { listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]); } // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect var il = objIdArr.length; for (var j = 0; j < il; j++) { removeSWF(objIdArr[j]); } // cleanup library's main closures to avoid memory leaks for (var k in ua) { ua[k] = null; } ua = null; for (var l in swfobject) { swfobject[l] = null; } swfobject = null; }); } }(); return { /* Public API - Reference: http://code.google.com/p/swfobject/wiki/documentation */ registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) { if (ua.w3 && objectIdStr && swfVersionStr) { var regObj = {}; regObj.id = objectIdStr; regObj.swfVersion = swfVersionStr; regObj.expressInstall = xiSwfUrlStr; regObj.callbackFn = callbackFn; regObjArr[regObjArr.length] = regObj; setVisibility(objectIdStr, false); } else if (callbackFn) { callbackFn({success:false, id:objectIdStr}); } }, getObjectById: function(objectIdStr) { if (ua.w3) { return getObjectById(objectIdStr); } }, embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) { var callbackObj = {success:false, id:replaceElemIdStr}; if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) { setVisibility(replaceElemIdStr, false); addDomLoadEvent(function() { widthStr += ""; // auto-convert to string heightStr += ""; var att = {}; if (attObj && typeof attObj === OBJECT) { for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs att[i] = attObj[i]; } } att.data = swfUrlStr; att.width = widthStr; att.height = heightStr; var par = {}; if (parObj && typeof parObj === OBJECT) { for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs par[j] = parObj[j]; } } if (flashvarsObj && typeof flashvarsObj === OBJECT) { for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs if (typeof par.flashvars != UNDEF) { par.flashvars += "&" + k + "=" + flashvarsObj[k]; } else { par.flashvars = k + "=" + flashvarsObj[k]; } } } if (hasPlayerVersion(swfVersionStr)) { // create SWF var obj = createSWF(att, par, replaceElemIdStr); if (att.id == replaceElemIdStr) { setVisibility(replaceElemIdStr, true); } callbackObj.success = true; callbackObj.ref = obj; } else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install att.data = xiSwfUrlStr; showExpressInstall(att, par, replaceElemIdStr, callbackFn); return; } else { // show alternative content setVisibility(replaceElemIdStr, true); } if (callbackFn) { callbackFn(callbackObj); } }); } else if (callbackFn) { callbackFn(callbackObj); } }, switchOffAutoHideShow: function() { autoHideShow = false; }, ua: ua, getFlashPlayerVersion: function() { return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] }; }, hasFlashPlayerVersion: hasPlayerVersion, createSWF: function(attObj, parObj, replaceElemIdStr) { if (ua.w3) { return createSWF(attObj, parObj, replaceElemIdStr); } else { return undefined; } }, showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) { if (ua.w3 && canExpressInstall()) { showExpressInstall(att, par, replaceElemIdStr, callbackFn); } }, removeSWF: function(objElemIdStr) { if (ua.w3) { removeSWF(objElemIdStr); } }, createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) { if (ua.w3) { createCSS(selStr, declStr, mediaStr, newStyleBoolean); } }, addDomLoadEvent: addDomLoadEvent, addLoadEvent: addLoadEvent, getQueryParamValue: function(param) { var q = doc.location.search || doc.location.hash; if (q) { if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark if (param == null) { return urlEncodeIfNecessary(q); } var pairs = q.split("&"); for (var i = 0; i < pairs.length; i++) { if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1))); } } } return ""; }, // For internal usage only expressInstallCallback: function() { if (isExpressInstallActive) { var obj = getElementById(EXPRESS_INSTALL_ID); if (obj && storedAltContent) { obj.parentNode.replaceChild(storedAltContent, obj); if (storedAltContentId) { setVisibility(storedAltContentId, true); if (ua.ie && ua.win) { storedAltContent.style.display = "block"; } } if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); } } isExpressInstallActive = false; } } }; }(); function ResetWindow() { // 將視窗移到左上角放到最大,用來計算工具列大小 MoveWindow( 0, 0 ); ResizeWindow( screen.availWidth, screen.availHeight ); } function MoveWindow( X, Y ) { try { top.moveTo( X, Y ); } catch( TopResizeError ) { try { window.moveTo( X, Y ); } catch( WindowResizeError ) {} } } function ResizeWindow( Width, Height ) { try { top.resizeTo( Width, Height ); } catch( TopResizeError ) { try { window.resizeTo( Width, Height ); } catch( WindowResizeError ) {} } } function GetInnerSize() { var InnerX, InnerY; InnerX = $(window).width(); InnerY = $(window).height(); if ( InnerX > screen.availWidth ) InnerX = screen.availWidth; if ( InnerY > screen.availHeight ) InnerY = screen.availHeight; return [ InnerX, InnerY ]; } function GetFrameSize() { var Browser = getBrowserName(); // 玩家使用的 Browser var WindowInnerSize = GetInnerSize(); // 視窗內可顯示網頁部分的大小(實際使用的畫面大小) var ScreenWidth = screen.availWidth; // 取得目前玩家螢幕解析度 寬 (去除 Windows 工作列後) var ScreenHeight = screen.availHeight; // 取得目前玩家螢幕解析度 高 (去除 Windows 工作列後) var FrameWidth = ScreenWidth - WindowInnerSize[0]; // 視窗內不可顯示網頁部分的 寬 var FrameHeight = ScreenHeight - WindowInnerSize[1]; // 視窗內不可顯示網頁部分的 高 // Chrome 要開稍微大一點點 if ( Browser == "chrome" ) { FrameWidth = FrameWidth + 17; } return [ FrameWidth, FrameHeight ]; } function GetFinalSize() { var TargetAspect = FlashWidth/FlashHeight; // 希望的視窗比例 var CurrentAspect = FlashWidth/FlashHeight; // 目前的視窗比例大小 var WindowInnerSize = GetInnerSize(); // 視窗內可顯示網頁部分的大小(實際使用的畫面大小) // 目前的視窗比例大小 CurrentAspect = WindowInnerSize[0] / WindowInnerSize[1]; // 如果太寬 if( CurrentAspect - TargetAspect > 0.01 ) { FinalWidth = WindowInnerSize[1]*TargetAspect; FinalHeight = WindowInnerSize[1]; } // 如果太長 else if( TargetAspect - CurrentAspect > 0.01 ) { FinalWidth = WindowInnerSize[0]; FinalHeight = WindowInnerSize[0]/TargetAspect; } // 如果比例差不多 else { FinalWidth = WindowInnerSize[0]; FinalHeight = WindowInnerSize[1]; } // 修正大小 ( 最大 1000x665 ) if ( FinalWidth > FlashWidth && FinalHeight > FlashHeight ) { FinalWidth = FlashWidth; FinalHeight = FlashHeight; } return [ FinalWidth, FinalHeight ]; }function favority() { if ( window.sidebar ) window.sidebar.addPanel( BookmarkTitle, BookmarkURL, "" ); else if ( window.external ) window.external.AddFavorite( BookmarkURL, BookmarkTitle ); return false; } function openLimitPage( URL, WindowName, width, height ) { window.open( URL, "", 'height='+height+',width='+width+',toolbar=no,resizable=no'); } function openPage( URL ) { window.open( URL,"" ); } function gotoPage( URL, WindowName, Message ) { saveMSG(Message); window.open( URL, WindowName ); } function saveMSG( Message ) { if(typeof Message != 'undefined'){ createCookie("msgArray", Message, 1); } } function getBrowserName() { if ( navigator.userAgent.toLowerCase().indexOf("firefox") != -1 ) return "firefox"; else if ( navigator.userAgent.toLowerCase().indexOf("msie") != -1 ) return "msie"; else if ( navigator.appVersion.toLowerCase().indexOf("chrome") != -1 ) return "chrome"; else if ( navigator.userAgent.toLowerCase().indexOf("opera") != -1 ) return "opera"; else return "Unknow"; } // 變換標題 function changeTitle( nMsg ) { if( nMsg > 0 ) document.title = "(" + nMsg + ")"+BookmarkTitle; else document.title = BookmarkTitle; } function CloseFlashSocket() { try { var FlashSwf = swfobject.getObjectById("login"); FlashSwf.closeSocket(); } catch( error ) {} } //隨視窗縮放變換大小 function reloadFlash() { var mywidth = $(window).width(); if( document.URL.indexOf('_fb') > -1 ){ //fb視窗不縮放寬度 if(Folder=="Slot/"){ $('#Div_Flash').height( mywidth * 768 / 1024); }else{ $('#Div_Flash').height( mywidth * 665 / 1000); } }else if(Folder=="Slot/"){ //Slot視窗縮放尺寸1024*768 if (mywidth>1024) { mywidth = 1024; }else if (mywidth<800) { mywidth = 800; } $('#Div_Flash').width( mywidth ); $('#Div_Flash').height( mywidth * 768 / 1024); }else{ //非fb視窗,如果視窗大於1000則設定寬度上限 if (mywidth>1000) { mywidth = 1000; }else if (mywidth<800) { mywidth = 800; } $('#Div_Flash').width( mywidth ); $('#Div_Flash').height( mywidth * 665 / 1000); } }//建立一個Cookie function createCookie( name, value, min) { if (min) { var date = new Date(); date.setTime(date.getTime() + min * 1000 * 60 ); var expires = ""; expires=""+date.toGMTString(); } else var expires = ""; //寫入Cookie中,並把字串的編碼改為utf-8,避免中文變為亂碼 document.cookie = name + "=" + encodeURIComponent(value) + "; expires=" + expires + "; path=/"; } //讀取Cookie的原始值 function GetCookie() { var arg = "msgArray" + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return GetCookieVal(j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } //獲得Cookie解碼後的值 function GetCookieVal(offset) { var endstr = document.cookie.indexOf(";", offset); if (endstr == -1) endstr = document.cookie.length; // 回傳解碼後正確的字串 return decodeURIComponent(document.cookie.substring(offset, endstr)); } //刪除Cookie function DeleteCookie() { createCookie("msgArray","",-1); }var fb_param = {}; fb_param.pixel_id = '6007726148406'; fb_param.value = '0.00'; fb_param.currency = 'USD'; function trace_feed() { var fpw = document.createElement('script'); fpw.async = true; fpw.src = '//connect.facebook.net/en_US/fp.js'; var ref = document.getElementsByTagName('script')[0]; ref.parentNode.insertBefore(fpw, ref); };// 一般 var BookmarkTitle = "搓麻將網頁版"; var FlashContainer = "Div_Flash"; var ExitMsg = "提醒您,若您是在遊戲進行中離開,\n將會從您的U幣中扣除一筆斷線懲罰金喔!\n(湊桌中等同於遊戲進行中喔)"; var ExitMsg_Lobby = "您確定要離開搓麻將Online嗎?\n\n跟你說喔,7-11禮券,高階手機,不定時的現金比賽,通通都在新搓麻將。首次登入馬上送你U幣1000,快點遊戲大廳右下角的「新搓麻將」按鈕去拿好禮喔"; var WebGameCode = 15; // 嵌入Flash var shareSetName = rootPath + shareFolder + shareXML; // Flash 檔案的 Size var FlashWidth = 1000; var FlashHeight = 665;var Folder = entryFolder; var SWF = entrySWF; var XML = entryXML; var outSetName = rootPath + Folder + XML; var ShowMsg = $G("ShowMsg"); var GameServer = $G("GameServer"); // 要帶入Flash的參數 (login_fb.html) var FlashArgument = { "BrowserName": getBrowserName(), "gamePath":rootPath + Folder, "sharePath":rootPath + shareFolder, "PackagePath": rootPath + packageFolder, "XmlSet":outSetName, "ShareSet":shareSetName, "ShowMsg":ShowMsg, "GameServer":GameServer }; var BookmarkURL = "http://mj.uj.com.tw/default.html"; $(function() { $('html').css('overflow','scroll'); $(window).resize(function() { reloadFlash(); }); window.onbeforeunload = beforeExit; $(window).unload( function () { onExit(); } ); // 載入共用大廳,發現版本不到11,則跳出該訊息 if( !swfobject.hasFlashPlayerVersion( "10" ) && Folder=="Entry/") { $('#Dialog_FPlayerVer').html( "
您的 FlashPlayer 版本需要更新
將引導您至 FlashPlayer 官網。
" ); $('#Dialog_FPlayerVer').dialog({ modal: true, autoOpen: false, draggable: false, resizable: false, position: ['center', 100], width: 500, buttons: { "確定": function() { window.open( "http://get.adobe.com/flashplayer/", "FlashPlayer", "width=800, height=600, top=0, left=0, toolbar=Yes, menubar=Yes, scrollbars=Yes, resizable=Yes,location=Yes, status=Yes" ); top.close(); } } }); $('#Dialog_FPlayerVer').dialog("open"); } else if( !swfobject.hasFlashPlayerVersion( "11" ) && Folder=="Entry/" ) { $('#Dialog_FPlayerVer').html( "
唉呀呀呀呀,您的Flash Player不是最新的版本捏。
可能會造成甜心拉霸無法遊戲喔 。
(但對其他遊戲暫時還沒有影響)

請問要立刻更新程式,或是繼續玩呢?
" ); $('#Dialog_FPlayerVer').dialog({ modal: true, autoOpen: false, draggable: false, resizable: false, position: ['center', 100], width: 500, buttons: { "我要更新": function() { window.open( "http://get.adobe.com/flashplayer/", "FlashPlayer", "width=800, height=600, top=0, left=0, toolbar=Yes, menubar=Yes, scrollbars=Yes, resizable=Yes,location=Yes, status=Yes" ); top.close(); }, "繼續": function(){ // 繼續載入 swf 檔案 callSwfObjLoadSwf(); } } }); $('#Dialog_FPlayerVer').dialog("open"); } else { // 執行初始化程式 //init(); callSwfObjLoadSwf(); } }); function callSwfObjLoadSwf(){ var params = {}; params.allowScriptAccess = 'always'; params.wmode = 'direct'; $('#Dialog_FPlayerVer').dialog("close"); swfobject.embedSWF( rootPath + Folder + SWF, FlashContainer, "100%", "100%", "10", null, FlashArgument, params, { name: FlashContainer }, function( e ) { reloadFlash(); if( e.success == false ) $('#Dialog_FPlayerVer').dialog("open"); } ); } function beforeExit() { try { var FlashSwf = document.getElementById( FlashContainer ); if ( FlashSwf == null || FlashSwf == undefined ) FlashSwf = swfobject.getObjectById( FlashContainer ); if ( FlashSwf == null || FlashSwf == undefined ) FlashSwf = null; if ( $('#Dialog_FPlayerVer').dialog( 'isOpen' ) != true ) { //if( WebGameCode == 15 ) //{ var showLeaveMsg = FlashSwf.ShowLeaveMsg(); switch (showLeaveMsg) { case -1: // 斷線不跳訊息 break; case 0: // 大廳離開訊息 // if (confirm('送不完的獎品,拿不完的現金,10/8日「新搓麻將」震撼引爆!\n快點遊戲大廳右下角的「新搓麻將」按鈕去拿好禮喔')) { // } // else{ // if ( window.event ) { window.event.returnValue = ExitMsg_Lobby; } //for ie and firefox // return ExitMsg_Lobby; //for safari and chrome // } if ( /Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) { alert('確定要離開了嗎?偷偷告訴你,搓麻將的新平台 -- 「新搓麻將之雀王擂臺」已經開始封測囉,現在登入還馬上送你U幣1000,與新搓麻將銀幣4000,快點遊戲大廳右下角的「新搓麻將」按鈕去拿好禮喔'); return ExitMsg_Lobby; } else{ return ExitMsg_Lobby; } break; case 1: case 2: // 湊桌中 // 遊戲中離開訊息 if ( window.event ) { window.event.returnValue = ExitMsg; } return ExitMsg; break; } //} /*else { if( FlashSwf.ShowLeaveMsg() == true ) { // 遊戲中離開 if ( window.event ) { window.event.returnValue = ExitMsg; } return ExitMsg; } else { // 大廳離開 if ( window.event ) { window.event.returnValue = ExitMsg_Lobby; } return ExitMsg_Lobby; } }*/ } } catch( error ) {} } function onExit() { CloseFlashSocket(); }