var ssc = new function () { this.copyright = "Copyright (c) Seatics.com"; this.version = "B-0102 2010-08-24 18:33"; this.actionHistory = ""; var n = "", b = -1, D = false, G = { buyTixFunc: "", dynMapMinTgMapHitPct: 60, jsTrace: 0, loadTime: (new Date()).getTime(), mapShellURL: "http://maps.seatics.com/mapShell_tn.swf", mapTrace: 0, showDynamicMap: 1, showListGroupHeaders: 1, showStdSectionNames: false, secNamePatterns: "{level} {number};{level} {number}", showTGsInNotSelectedSections: true, showTGsNotOnMap: "bottom", sortArrows: ["&#9660", "&#9660", "&#9650"], staticMapURL: "", swfMapURL: "", tgListFilterPricePoints: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150, 200, 250, 300, 350, 400, 450, 500, 600, 700, 800, 900, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 10000, 20000, 50000, 100000, 200000, 500000, 1000000], tgCanonSecIX: 0, tgUserSecIX: 1, tgUserRowIX: 2, tgQtyIX: 3, tgPriceIX: 4, tgTGcodeIX: 5, tgNotesIX: 6, tgTpsIX: 7, tgUserSeatIX: 8, tgMarkIX: 9, dText: { lstAsH1: "NOTE: Seller lists section as", vfsH1: "Click here to see an approximate view from this section", noFl: "An interactive map is available but you need Adobe's Flash player 9 or above to see it.<br/>Enable Flash if it's installed on your system or <a href=\"http://www.adobe.com/go/getflashplayer\">click here to get Flash.</a>", noShl: "The interactive map is temporarily unavailable. Here is a plain version.", noSC: "Sorry, we are unable to display a seating chart.", noMap: "Our interactive map is temporarily unavailable. Here is a plain version.", secSrtH1: "Sort list by section from closest-to to farthest-from the action", noTGs: "There are NO ticket choices matching your search."} }, L = 0, h = false, Q = {}, I = 0, a = "", c = "", R, o = { reqQty: 0, offerPlus1: 0, showReqQtyPlus1: 0, minPrice: 0, maxPrice: 0, selectedMapSections: "", okPricePoints: [], loPricePoints: [], hiPricePoints: [], currencySymbol: "", columnSortArrows: {}, groupCts: [], hiQty: 0, hiQtyNxt: 0 }, f = 0, w, J = "", ag = [], v = "", x = 0, Y = "", i = "", K = G.loadTime, p = 0, l = "", ah = {}, y = 0, N = function (ak, aj) { var t = ab(ak.tgUserRow).toUpperCase(), al = ab(aj.tgUserRow).toUpperCase(); return t == al ? 0 : y * (t > al ? 1 : -1) }, B = function (ak, aj) { var t = ab(ak.tgCanonSec).toUpperCase(), al = ab(aj.tgCanonSec).toUpperCase(); return t == al ? 0 : y * (t > al ? 1 : -1) }, F = function (ak, aj) { var t = (ab(ak.tgCanonSec) + "." + ak.tgUserRow).toUpperCase(), al = (ab(aj.tgCanonSec) + "." + aj.tgUserRow).toUpperCase(); return t == al ? 0 : y * (t > al ? 1 : -1) }, ab = function (ak) { var aj = ak.toUpperCase().replace(/([^\d])(\d)/g, "$1 $2").replace(/(\d)([^\d])/g, "$1 $2").replace(/([A-Z])([^A-Z])/g, "$1 $2").replace(/([^A-Z])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").replace(/^\s+/, "").replace(/\s+$/, "").split(" "), t; for (t = 0; t < aj.length; t++) { if (!isNaN(aj[t])) { aj[t] = ("00000000" + aj[t]).substr(-8) } if (aj[t].match(/^([A-Z])\1*$/)) { aj[t] = ("^^^^^^^^" + aj[t]).substr(-8) } } return aj.toString() }, O = function (aj, t) { return y * ((aj.tgCritGroup == 1 ? 1000 + aj.tgQty : aj.tgQty) - (t.tgCritGroup == 1 ? 1000 + t.tgQty : t.tgQty)) }, W = function (aj, t) { return y * (Number(aj.tgPrice.replace(/,/g, "")) - Number(t.tgPrice.replace(/,/g, ""))) }, k = function (ak, aj) { var t = ("undefined" != typeof ak.tgMark) ? (isNaN(ak.tgMark) ? ak.tgMark : ("00000000" + String(ak.tgMark)).substr(-8)) : "", al = ("undefined" != typeof aj.tgMark) ? (isNaN(aj.tgMark) ? aj.tgMark : ("00000000" + String(aj.tgMark)).substr(-8)) : ""; return t == al ? 0 : y * (t > al ? 1 : -1) }, ae = { SEC: { rule: B, ad: 0 }, ROW: { rule: N, ad: 0 }, SECROW: { rule: F, ad: 0 }, QTY: { rule: O, ad: 0 }, PRICE: { rule: W, ad: 0 }, MARK: { rule: k, ad: 1} }, s = [], ad = -1, P = this, u, H = "", e = 0, ai = 0; var ac = function () { P.tt("AsgnTgGps-Start"); P.EH.assignTgsToGroups({ LC: o, tgArr: s }); P.EH.invoke("afterAssignTgs"); P.tt("AsgnTgGps-End: Cts=" + o.groupCts.toString()) }; var E = function () { P.tt("List-Start: S+1=" + o.showReqQtyPlus1); var al = { anyCriteriaAreSet: (o.reqQty || o.minPrice || o.maxPrice), secsAreSelected: o.selectedMapSections ? true : false, listBuckets: [[], [], []], listBucketCts: [0, 0, 0], listBucketOddEvens: [1, 1, 1], listColHdr: P.EH.tgListHdrHTML(o), i: 0, tGroup: [], secsWithTxBox: P.EH.secsWithTxBox(G.sectionInListColor), selSecsWithTxBox: P.EH.selSecsWithTxBox({ SIL: G.sectionInListColor, SSC: G.sectionSelectColor }), showDynamicMap: G.showDynamicMap, mapStatus: x, dText: G.dText }, ak; o.offerPlus1 = false; for (al.i = 0; al.i < s.length; al.i++) { al.tGroup = s[al.i]; P.EH.invoke("customBuildList", al, s); d(al) } P.EH.invoke("afterBuildList"); al.listCriteria = o; P.pushToPage("ssc_filterDiv", P.EH.tgListFilterHTML(o)); P.tt("List-EndLoop: " + al.listBucketCts.toString() + " NotSel=" + G.showTGsInNotSelectedSections + " OffMap=" + G.showTGsNotOnMap); if (G.showListGroupHeaders) { l = "<div class='ssc_selectedBktHdrTxt'>" + P.EH.selBktHdrTxt(al) + "</div>" } else { l = "" } al.selectedBktHdrDiv = l; al.notSelBktHdrDiv = Y = "<div class='ssc_notSelBktHdrTxt'>" + P.EH.notSelBktHdrTxt(al) + "</div>"; al.notOnMapBktHdrDiv = i = "<div class='ssc_notOnMapBktHdrTxt'>" + P.EH.notOnMapBktHdrTxt(al) + "</div>"; P.EH.tgListReady(o, { listBucketCts: al.listBucketCts }); $("#ssc_listBktHdr").html(l); $("#ssc_listColHdr").html(al.listColHdr); var aj = { lhm: Number(f), bkt: $("#ssc_listBktHdr").outerHeight(), col: $("#ssc_listColHdr").outerHeight(), mods: P.EH.invoke("customListHgtMods") }, t = aj.lhm - aj.bkt - aj.col + aj.mods; $("#ssc_tktGroups").height(t); P.tt("List-Hgts: " + P.propsOf(aj) + "--> " + t + " css(height):" + $("#ssc_tktGroups").css("height")); ak = $("#ssc_tktGroups").scrollTop(); P.tt("List-testScroll: " + ak); if (ak > 0) { $("#ssc_tktGroups").scrollTop(0); P.tt("List-setScroll=0") } document.getElementById("ssc_tktGroups").innerHTML = "xxxxx"; P.tt("List-cleared."); document.getElementById("ssc_tktGroups").innerHTML = P.EH.showTktGroups(al); P.EH.invoke("afterShowList"); P.tt("List-filled") }; var d = function (al) { var aj = 0, ak = (!al.secsAreSelected) || ("," + o.selectedMapSections + ",").toUpperCase().replace(/[^\dA-Z,]/g, "").indexOf(("," + al.tGroup.tgCanonSec.toUpperCase().replace(/[^\dA-Z]/g, "") + ",")) >= 0, t; if (x >= 3) { if (al.tGroup.tgOnMap) { if (!ak) { aj = 1 } } else { switch (G.showTGsNotOnMap) { case "hidden": return; case "merged": if (al.secsAreSelected) { aj = 1 } break; default: aj = 2 } } } if (aj == 1 && !G.showTGsInNotSelectedSections) { return } if (al.tGroup.tgCritGroup == 1) { o.offerPlus1 = true } if (!(al.tGroup.tgCritGroup == 0 || al.tGroup.tgCritGroup == 1 && o.showReqQtyPlus1)) { return } t = "ssc_lr" + ["Odd", "Even"][(al.listBucketOddEvens[aj] = 1 - al.listBucketOddEvens[aj])] + ["OnMap", "NotSel", "OffMap"][aj]; al.listBuckets[aj][al.listBucketCts[aj]++] = "<div class='" + t + "' id='ssc_TG_" + al.i + "' onclick='ssc.listRowClicked(" + al.i + ")' onMouseOver='ssc.listRowEntered(this," + al.i + ")' onMouseOut= 'ssc.listRowExited(this," + al.i + ")'>" + P.EH.tgListRowHTML(o, al.i, al.tGroup) + "</div>" }; var M = function () { P.EH.defaultPageSkeleton(); P.EH.invoke("customSkeleton"); $("#ssc_mapCell").bind("mousewheel DOMMouseScroll", V); f = $("#ssc_tktGroups").height(); I = $("#ssc_filterDiv").outerHeight() }; var X = function (ak, aj) { var t; if (Number(ak) > o.hiQty) { o.hiQtyNxt = o.hiQty; o.hiQty = Number(ak) } else { if (Number(ak) < o.hiQty && Number(ak) > o.hiQtyNxt) { o.hiQtyNxt = Number(ak) } } aj = Number(aj.replace(/,/g, "")); for (t = 1; t < o.okPricePoints.length; t++) { if (o.okPricePoints[t] > Number(aj)) { o.loPricePoints[t - 1] = true; break } } for (t = 1; t < o.okPricePoints.length; t++) { if (o.okPricePoints[t] >= Number(aj)) { o.hiPricePoints[t] = true; break } } }; var A = function (ak) { a = ak.substr(0, 1); c = ak.substr(1, 1); var aj = [], an = [], am = {}, t = ak.indexOf(a, 2), al; o.currencySymbol = ak.substring(2, t); aj = ak.substr(t + 1).split(a); o.loPricePoints = []; if (!aj[0].split(c)[G.tgCanonSecIX].replace(/ /g, "")) { G.tgCanonSecIX = G.tgUserSecIX } for (al = 0; al < aj.length; al++) { an = aj[al].split(c); if (an.length > 1) { s[al] = am = g(an); if (an.length < 7) { P.tt("short tGroup. #=" + al + " L=" + an.length + " TG=" + an) } else { X(am.tgQty, am.tgPrice) } } } P.ra("D" + aj.length) }; this.buyClicked = function (t, aj) { D = true; P.ra("B"); if (G.buyTixFunc) { G.buyTixFunc(af(t, aj)) } else { P.EH.invoke("buyTickets", af(t, aj)) } }; var af = function (al, an) { var t = s[al], ak = t.mapSectionLevel, aj = t.mapSectionNumber, am = { tgId: t.tgTGcode, tgSection: t.tgUserSec, tgRow: t.tgUserRow, tgSeat: t.tgUserSeat, tgQty: t.tgQty, tgPrice: t.tgPrice, tgSds: t.tgTps, tgNotes: t.tgNotes, tgMark: t.tgMark, buyQty: an, actionHistory: n }; if (G.showStdSectionNames && ak) { am.stdSection = ak && (ak + (aj && " " + aj)); if (t.mid) { am.mid = t.mid } } return am }; this.criteriaChanged = function (an) { C("set"); var t = an.split("&"), am = "C", al, ak, aj; for (al in t) { ak = t[al].split("="); aj = Number(ak[1]); switch (ak[0]) { case "ReqQty": o.reqQty = aj; am += "q" + aj; break; case "MinPrice": o.minPrice = aj; am += "l" + aj; break; case "MaxPrice": o.maxPrice = aj; am += "h" + aj; break; case "ClrSelSec": if (x > 1) { R = true; U("id=CC&clearSectionSelect=*"); R = false } break; default: } } P.ra(am); P.tt("CritChg: Q:" + o.reqQty + " +1:" + o.showReqQtyPlus1 + " Mn:" + o.minPrice + " Mx:" + o.maxPrice); ac(); ag = P.EH.getMapGroupLabels(o); if (ah.QTY) { P.sortTgList("QTY", ["DESC", , "ASC"][ah.QTY + 1]) } else { E() } if (x >= 2) { Z(); P.tt("CritChg: Gps, TGs reloaded.") } }; this.fetchWebParms = function (t) { var aj; for (aj in t) { if (G.hasOwnProperty(aj)) { t[aj] = G[aj] } } }; this.getMapProps = function () { return { MapStatus: x, FltrHgtMem: I, ListHgtMem: f} }; var z = function (t) { P.tt("IMD by: " + t); U("id=IMD-" + t + "&activeGroup=" + (o.showReqQtyPlus1 ? 1 : 0) + "&currencySymbol=" + encodeURIComponent(o.currencySymbol) + "&mapColors=" + J + "&secNamePatterns=" + encodeURIComponent(G.secNamePatterns) + P.EH.invoke("customMapCtrls") + "&eventID=" + encodeURIComponent(window.location)); P.tt("MapCtlsSent."); ad = Z(); P.ra("Ml" + ad); if (t != "opts" && (ad < G.dynMapMinTgMapHitPct || !G.showDynamicMap)) { P.setMapOptions("showDynamicMap=0"); x = 2; P.ra("Md" + G.dynMapMinTgMapHitPct) } E(); P.EH.invoke("onMapInit", { mapStatus: [-4, -3, -2, -1, 0, 0, 1, 2, 2][x + 4] }); P.tt("IMD-Done.") }; this.listRowClicked = function (t) { if (D) { D = false } else { P.tt("TG click on " + s[t].tgCanonSec); P.EH.invoke("customListRowClicked", { tg: s[t] }) } }; this.listRowEntered = function (am, ak) { w = am.className; if (C()) { return } am.className = "ssc_lrHilite"; var al = s[ak], aj = (al.tgOnMap && G.showStdSectionNames) ? G.dText.lstAsH1 + " '" + al.tgUserSec + "'." : ""; aj += ((al.tgHasVFS && G.vfsEnable) ? (aj ? " \r\n" : "") + G.dText.vfsH1 : ""); if (!$("#" + am.id).attr("title") && aj) { $("#" + am.id).attr("title", aj) } if (x >= 3) { document.ssc_map.sendSecEnteredToMap(al.tgCanonSec, al.tgUserRow) } }; this.listRowExited = function (aj, t) { aj.className = w; if (x >= 3) { document.ssc_map.sendSecExitedToMap(s[t].tgCanonSec) } }; var q = function () { if (G.swfMapURL) { if (h) { Q.domain = document.domain; var t = {}, aj = { allowScriptAccess: "always", menu: false, quality: "autohigh", wmode: "opaque" }; u = window.setTimeout('ssc.loadMapCheck({success:false, id:"timeOut"})', 5000); swfobject.embedSWF(G.mapShellURL, "ssc_map", $("#ssc_mapCell").width() || 500, $("#ssc_mapCell").height() || 500, "9.0.0", false, Q, aj, t); P.tt("After SWF load:" + G.mapShellURL + " with:" + G.swfMapURL) } else { P.ra("Mf"); r('<span class="ssc_onMapMsg">' + G.dText.noFl + " </span>") } } else { P.ra("Min"); r("") } }; this.loadMapCheck = function (t) { P.tt("ckShellLoad. e.success:" + t.success + " id:" + t.id + " mStat:" + x); if (x > 0 || t.success) { return } r('<span class="ssc_onMapMsg">' + G.dText.noShl + "</span>"); P.ra("Mot"); x = -2; E(); P.EH.invoke("onMapInit", { mapStatus: x }) }; var r = function (t) { P.tt("Load Static:" + G.staticMapURL + " mapStatus=" + x + " msg=" + t); P.pushToPage("ssc_mapCell", "<center>" + ((t) ? t + "<br />" : "") + '<img id="ssc_staticMap" src="' + G.staticMapURL + "\" onload=\"ssc.ra('Ms')\" onerror=\"ssc.ra('Mse');ssc.pushToPage('ssc_mapCell','" + G.dText.noSC + "')\"></center>") }; var T = function (aj) { for (var t in aj) { G[t] = aj[t] } P.EH.tgListFilterHTML = G.tgListFilterHTML || P.EH.tgListFilterHTML; P.EH.tgListHdrHTML = G.tgListHdrHTML || P.EH.tgListHdrHTML; P.EH.tgListRowHTML = G.tgListRowHTML || P.EH.tgListRowHTML; P.EH.tgListReady = G.tgListReady || P.EH.tgListReady; P.EH.getMapGroupLabels = G.getMapGroupLabels || P.EH.getMapGroupLabels; if (G.listAndMapLoaded) { P.EH.subscribe("onMapInit", function (ak) { G.listAndMapLoaded(ak.mapStatus) }) } J = " inList:" + G.sectionInListColor + "; notInList:" + G.sectionNotInListColor + "; noSeats:" + G.sectionNoSeatsColor + "; rowHilite:FFFF00; sectionHilite:" + G.sectionHiliteColor + "; sectionSelect:" + G.sectionSelectColor; o.okPricePoints = G.tgListFilterPricePoints; o.showStdSectionNames = G.showStdSectionNames; o.dText = G.dText; ag = P.EH.getMapGroupLabels(o); P.EH.invoke("customInits") }; this.loadTgList = function (ao, aj) { if (aj.loadTime) { e = ai = aj.loadTime } G.jsTrace = aj.jsTrace = /jstrace/.test(window.location.search) || aj.jsTrace; G.mapTrace = aj.mapTrace = /maptrace/.test(window.location.search) || aj.mapTrace; P.tt("LoadTgList-St"); var an = '<div id="ssc_colorDiv"></div>', aq, ap, am, al = "section", t = "Color", ak = ["Select", "FF0000", "Hilite", "EEEE66", "InList", "00CC33", "NotInList", "AAFFAA", "NoSeats", "FFFFFF"]; ssc.pushToPage("ssc_listAndMapDiv", an) || ssc.pushToPage("ssc_map", an); for (an = 0; an < ak.length; an = an + 2) { $("#ssc_colorDiv").attr("class", "ssc_" + al + ak[an] + t); aq = $("#ssc_colorDiv").css("color").toLowerCase(); if (aq.substr(0, 1) === "#") { aq = aq.substr(1); if (aq.length == 3) { aq = aq.replace(/(.)/g, "$1$1") } } else { if (aq.substr(0, 3) === "rgb") { ap = aq.replace(/[^\d,]/g, "").split(","); aq = 1; for (am = 0; am < 3; am++) { aq = aq * 256 + Number(ap[am]) } aq = aq.toString(16).substr(1) } } G[al + ak[an] + t] = (aq == "000000" || aq == "black") ? ak[an + 1] : aq } T(aj); m(); M(); P.tt("LoadTgList-AfterSkel. CellDims: $Lst W=" + $("#ssc_tktListDiv").width() + " Map W=" + $("#ssc_mapCell").width() + " H=" + $("#ssc_mapCell").height()); Q.innerMap = G.swfMapURL; Q.tt = G.mapTrace ? 1 : 0; h = (swfobject.getFlashPlayerVersion().major >= 9); L = 1; q(); A(ao); P.tt("LoadTgList-AfterDOM SWF: " + P.propsOf(swfobject.getFlashPlayerVersion())); ac(); if (h && G.swfMapURL) { if (x == 3) { z("load") } } else { x = G.swfMapURL ? (h ? x : -4) : -3; E(); P.EH.invoke("onMapInit", { mapStatus: x }) } L = 2; P.tt("LoadTgList-End") }; var V = function (aj) { var t = aj.wheelDelta || -aj.detail; if (x >= 2) { U("id=Whl&mouseWheel=" + t) } return false }; this.pushToPage = function (aj, t) { if (document.getElementById(aj) != null) { document.getElementById(aj).innerHTML = t; return true } else { P.tt("pTp did not find: " + aj); return false } }; this.ra = function (aj, al) { var ak = S() - K, t = String(Math.round(ak / 10) / 100); if (ak < 1000) { t = t.substr(1) } else { t = t.substr(0, Math.max(t.indexOf(".") - 1, 3)) } P.actionHistory = n += t + aj + String(al || "") + ";"; P.tt("AH: " + aj + String(al || "")); K += ak }; var U = function (t) { document.ssc_map.sendControlsToMap(t) }; var C = function (ak) { var aj = (new Date()).getTime(); if (ak) { p = aj } else { return aj < p + 500 } }; this.setOptions = function (t) { P.tt("setOptions-St: " + P.propsOf(t)); T(t); if (x == 2 && G.showDynamicMap || x >= 3 && !G.showDynamicMap) { x = G.showDynamicMap ? 3 : 2; U("id=SLO&clearSectionSelect=*&showDynamicMap=" + G.showDynamicMap) } if (x >= 2) { z("opts") } P.tt("setOptions-End") }; this.setMapOptions = function (t) { if (x > 1) { U("id=SMO&" + t) } else { v += "&" + t } }; this.showPlus1 = function (t) { o.showReqQtyPlus1 = t; if (x >= 3) { U("id=SP1&activeGroup=" + (t ? "1" : "0")) } P.ra("Cp", t); E() }; var m = function () { for (var t in ae) { o.columnSortArrows[t] = '<span class="ssc_sortNoArrow">' + G.sortArrows[1] + "</span>" } }; this.sortTgList = function (t, aj) { var al = { ASC: 1, DESC: -1, REV: 0}[(aj && aj.toUpperCase()) || "REV"] || 0, ak = t.toUpperCase(); if (ae[ak]) { y = al || (ah[ak] || ae[ak].ad) <= 0 ? 1 : -1; ah = {}; ah[ak] = y; m(); o.columnSortArrows[ak] = ['<span class="ssc_sortDnArrow">', '<span class="ssc_sortNoArrow">', '<span class="ssc_sortUpArrow">'][y + 1] + G.sortArrows[y + 1] + "</span>"; P.ra(["Sd", "", "Sa"][y + 1], ak); s.sort(ae[ak].rule); P.tt("Sort-End. col:" + t + " adx:" + al + " ad:" + y + " mst:" + x); if (x != 0 && x != 1) { E() } } }; var Z = function (t) { return document.ssc_map.sendTGsToMap(ag, aa()) }; var S = function () { return (new Date()).getTime() }; this.tgBucketHdrCheck = function () { if (!G.showListGroupHeaders) { return } var t = 0; if ($("#ssc_notOnMapBktHdr").position() && $("#ssc_notOnMapBktHdr").position().top < $("#ssc_tktGroups").position().top) { t = 2 } else { if ($("#ssc_notSelBktHdr").position() && $("#ssc_notSelBktHdr").position().top < $("#ssc_tktGroups").position().top) { t = 1 } } if (b != t) { $("#ssc_listBktHdr").html([l, Y, i][t]); b = t } }; var g = function (t) { var aj = { tgCanonSec: t[G.tgCanonSecIX], tgUserSec: t[G.tgUserSecIX], tgUserRow: t[G.tgUserRowIX], tgQty: t[G.tgQtyIX], tgPrice: t[G.tgPriceIX], tgTGcode: t[G.tgTGcodeIX], tgNotes: t[G.tgNotesIX], tgTps: t[G.tgTpsIX], tgUserSeat: t[G.tgUserSeatIX], tgMark: t[G.tgMarkIX], tgOnMap: true }; P.EH.invoke("customTGFromTokens", { tg: aj, tokens: t, cp: G }); return aj }; this.testFunc1 = function () { P.displayTT() }; var aa = function () { P.tt("StFrAr-St #tgs=" + s.length); var al = [], aj = "", ak = {}, t; for (t = 0; t < s.length; t++) { ak = s[t]; al[t] = ak.tgCanonSec + c + ak.tgUserSec + c + ak.tgUserRow + c + ak.tgQty + c + ak.tgPrice + c + ak.tgCritGroup + c + ak.tgUserSeat + a } aj = a + c + o.currencySymbol + a + al.join(""); P.tt("StFrAr-End StLen=" + aj.length); return aj }; this.propsOf = function (ak) { var aj = "", t; for (t in ak) { aj += " " + t + ":" + (ak[t] && ak[t]) } return aj.substr(1) }; this.tt = function (ak) { if (!G.jsTrace) { return } var t = new Date(), aj = t.valueOf(); if (e == 0) { ai = e = aj } if (!H) { H = "<start> " + P.version + " " + j() + " " + t.toString() } H += String.fromCharCode(10) + ("____" + String(aj - e)).slice(-5) + " " + ("____" + String(aj - ai)).slice(-5) + ": " + ak; ai = aj }; this.testFunc2 = function (t) { }; this.displayTT = function () { if (!confirm(H)) { H = "" } e = 0 }; var j = function () { var al = navigator.userAgent, aj = ["Chrome", "Safari", "MSIE", "Opera", "Firefox"], ak; for (ak = 0; ak <= 4; ak++) { if (al.match(aj[ak])) { return aj[ak] } } return "????" }; this.onMapLoaded = function (t) { x = t; P.tt("mapLoad " + t + "-St: docStat=" + L); switch (t) { case -1: P.ra("Mie"); r('<span class="ssc_onMapMsg">' + G.dText.noMap + "</span>"); E(); P.EH.invoke("onMapInit", { mapStatus: -1 }); break; case 1: P.ra("Mo"); window.clearTimeout(u); break; case 3: P.ra("Mi"); if ($("#ssc_staticMap").attr("src")) { $("#ssc_staticMap").remove() } U("id=ML&mouseWheel=-1" + v); v = ""; if (L >= 2) { z("map") } break; default: } P.tt("mapLoad " + t + "-End") }; this.onUpdateTGs = function (aj) { P.tt("updateTGs-Start: #=" + aj.length); var am, al, ak, t, an = ["tgCanonSec", "mapSectionLevel", "mapSectionNumber", "tgHasVFS", "mid"]; for (t in aj) { am = aj[t]; al = am.index; for (ak in an) { s[al][an[ak]] = am[an[ak]] } s[al].tgOnMap = (typeof am.tgOnMap == "undefined") ? true : am.tgOnMap } P.tt("updateTGs-End") }; this.onSetSelectedSections = function (t) { o.selectedMapSections = t || ""; if (t) { P.ra("Cs" + (t.replace(/[^,]/g, "").length + 1)) } else { P.ra("Cs0") } P.EH.invoke("customReset"); if (!R) { E() } return "OK" } }; function updateTGs(a) { ssc.onUpdateTGs(a) } function setSelectedSections(a) { ssc.onSetSelectedSections(a) } function mapLoaded(a) { ssc.onMapLoaded(a) } ssc.EH = new function () { this.getMapGroupLabels = function (k) { var c = [], e = "tickets", g = "", f, d = k.currencySymbol + String(k.minPrice), j = k.currencySymbol + String(k.maxPrice), h = ["", " at " + d + " and up", " at " + j + " or less", " at " + d + " - " + j][((k.minPrice > 0) ? 1 : 0) + ((k.maxPrice > 0) ? 2 : 0)]; if (k.reqQty > 0) { e = String(k.reqQty) + ((k.reqQty == 1) ? " ticket" : " tickets"); g = String(k.reqQty + 1) + " tickets" } if (k.reqQty == 0) { for (f = 0; f <= 2; f++) { c[f] = { type: "#tkts"} } c[0].pattern = ["No tickets" + h, "1 ticket, {range}", "{#tkts} tickets, up to {#cozy} together, {range}"]; c[1].pattern = ["", "", ""]; c[2].pattern = ["", "1 ticket, {range}", "{#tkts} tickets, up to {#cozy} together, {range}"] } else { for (f = 0; f <= 2; f++) { c[f] = { type: "#gps"} } c[0].pattern = ["No choices of " + e + h, "1 choice of " + e + ", {range}", "{#gps} choices of " + e + ", {range}"]; c[1].pattern = ["", "1 choice of " + g + ", {range}", "{#gps} choices of " + g + ", {range}"]; c[2].pattern = ["", "1 other choice of tickets, {range}", "{#gps} other choices of tickets, {range}"] } return c }; this.invoke = function (f) { var d, c, e; if (typeof this[f] === "object") { e = this[f]; for (c = 0; c < e.length; c++) { if (typeof e[c] === "function") { if (!d) { d = e[c](arguments[1]) } else { d += e[c](arguments[1]) } } } } if (typeof this[f] === "function") { d = this[f](arguments[1]) } return d }; this.subscribe = function (c, d) { ssc.tt("Subscribe: " + c + " as " + ssc.propsOf(d)); this[c][this[c].length] = d }; this.afterAssignTgs = []; this.afterBuildList = []; this.afterShowList = []; this.customBuildList = []; this.customListRowClicked = []; this.customInits = []; this.customListHgtMods = [function () { return 0 } ]; this.customMapClick = []; this.customMapCtrls = [function () { return "" } ]; this.customReset = []; this.customSkeleton = []; this.customTGFromTokens = []; this.onMapInit = []; this.buyTickets = []; this.assignTgsToGroups = function (e) { var h, g, f = e.LC, c = e.tgArr, d; f.groupCts = [0, 0, 0]; for (d = 0; d < c.length; d++) { g = c[d]; if (Number(g.tgQty) < f.reqQty || Number(g.tgPrice.replace(/,/g, "")) < f.minPrice || (f.maxPrice > 0 && Number(g.tgPrice.replace(/,/g, "")) > f.maxPrice)) { h = 2 } else { h = ((Number(g.tgQty) - f.reqQty == 1 && f.reqQty > 0) || (Number(g.tgQty) == 4 && f.reqQty == 1)) ? 1 : 0 } c[d].tgCritGroup = h; f.groupCts[h]++ } }; this.defaultPageSkeleton = function () { ssc.pushToPage("ssc_listAndMapDiv", '<table class="ssc_listAndMap" cellspacing="0" cellpadding="0" valign=top border="1"><tr><td id="ssc_filterAndListCell" valign=top><div id="ssc_filterDiv"></div><div id="ssc_tktListDiv"></div></td><td id="ssc_mapCell"><div id="ssc_map"></div></td></tr></table>'); ssc.pushToPage("ssc_tktListDiv", '<div id="ssc_listBktHdr" style="display:block;"></div><div id="ssc_listColHdr" style="display:block;"></div><div id="ssc_tktGroups" onscroll="ssc.tgBucketHdrCheck()"></div>') }; this.notOnMapBktHdrTxt = function (c) { return (((c.listBucketCts[2] == 1) ? "Ticket choice" : "Ticket choices")) + " we couldn't locate accurately on the map." }; this.notSelBktHdrTxt = function (c) { return (((c.listBucketCts[1] == 1) ? "Ticket choice" : "Ticket choices")) + " in sections you DID NOT SELECT (" + c.secsWithTxBox + "&nbsp;on the map)" }; this.secsWithTxBox = function (c) { return "<div  style='border:1px solid #000000; padding:6px; display:inline; font-size:0px;position:relative; top:-3px; background-color:#" + c + "; color:#" + c + ";'>M</div>" }; this.selBktHdrTxt = function (c) { return ("Tickets below " + (c.anyCriteriaAreSet ? "match your search and " : "") + (c.mapStatus >= 3 ? "are in sections marked&nbsp;" + (c.secsAreSelected ? c.selSecsWithTxBox : c.secsWithTxBox) + "&nbsp;on the map" : "are available for this event.")) }; this.selSecsWithTxBox = function (c) { return "<div  style='border:1px solid #000000; padding:6px; display:inline; font-size:0px;position:relative; top:-3px; background-color:#" + c.SIL + ";'>M<div style='border:2px solid #ffffff; font-size:0px; display:inline; padding:2px; margin:2px; position:absolute; top:0; left:0;background-color:#" + c.SSC + "; color:#" + c.SSC + ";'>..</div></div>" }; this.showTktGroups = function (c) { return ((c.listBucketCts[0] == 0) ? "<div class='ssc_noneInCritHdrTxt'>" + c.dText.noTGs + "</div>" : c.listBuckets[0].join("")) + ((c.listBucketCts[1] == 0) ? "" : "<div id='ssc_notSelBktHdr'>" + c.notSelBktHdrDiv + "</div>" + c.listBuckets[1].join("")) + ((c.listBucketCts[2] == 0) ? "" : "<div id='ssc_notOnMapBktHdr'>" + c.notOnMapBktHdrDiv + "</div>" + c.listBuckets[2].join("")) }; var b = "<span class='ssc_qtyAsk'>How many tickets do you want?</span> ", a = "<span class='ssc_priceAsk'>What's your price range?</span>"; this.tgListFilterHTML = function (h) { ssc.tt("Filter-Start: width=" + $("#ssc_filterDiv").width()); var g = '<table class="ssc_filterTbl" border="0" cellpadding="0" cellspacing="0"><tr><td NOWRAP colspan="2">', f, e, d, c; if (h.reqQty == 0) { c = ""; d = "13em" } else { d = (String(h.reqQty).length * 0.6 + 2.5) + "em"; b = "<span class='ssc_qtyTell'>You've selected </span>"; c = "<span class='ssc_qtyTell'> ticket" + ((h.reqQty == 1) ? "" : "s") + "</span>"; if (h.offerPlus1) { c += " <sub><input type='checkbox' id='ssc_showPlus1' " + (h.showReqQtyPlus1 ? "checked" : "") + " onclick='ssc.showPlus1(+(this.checked?1:0));'></sub><label for='ssc_showPlus1' class='ssc_offerPlus1' onmouseover='$(\"#ssc_whyPlus1\").show()' onmouseout='$(\"#ssc_whyPlus1\").hide()'> Include sets of " + String(h.reqQty + 1) + " tickets <u>why?</u></label><span id='ssc_whyPlus1'>There are sets of tickets for this event where the owner will not sell " + String(h.reqQty) + " but <i>will</i> sell " + String(h.reqQty + 1) + ".<br/>Even though you would have to buy one extra ticket, the price might be attractive.<br/>Check this box to include those sets of tickets.</span>" } } g += b + ' <select size="1" id="ssc_reqQtySel" style="width:' + d + '" onchange="ssc.                    criteriaChanged(\'ReqQty=\'+this.value)"><option value="0"' + ((h.reqQty == 0) ? " selected" : "") + ">I'll decide at checkout</option>"; for (f = 1; f <= h.hiQty; f++) { if (f == h.hiQty - 1 && f != h.hiQtyNxt) { continue } g += '<option class="ssc_qtyValues" value="' + f + '" ' + ((h.reqQty == f) ? "selected" : "") + ">" + f + "</option>" } g += "</select>" + c + "</td></tr><tr><td NOWRAP>"; if (h.minPrice != 0 || h.maxPrice != 0) { a = "<span class='ssc_priceTell'>Price should be from </span>" } g += a + '&nbsp;<select size="1" id="ssc_minPriceSel" onchange="ssc.criteriaChanged(\'MinPrice=\' + this.value);">\n<option value="0" ' + ((h.minPrice == 0) ? "selected" : "") + ">No minimum</option>\n"; for (e = 1; e < h.okPricePoints.length; e++) { if (h.loPricePoints[e] && (h.okPricePoints[e] < h.maxPrice || h.maxPrice == 0)) { g += '<option class="ssc_priceValues" value="' + h.okPricePoints[e] + '" ' + ((h.minPrice == h.okPricePoints[e]) ? "selected" : "") + ">" + h.currencySymbol + h.okPricePoints[e] + "</option>\n" } } g += "</select>"; g += '&nbsp;to&nbsp;<select size="1" id="ssc_maxPriceSel" onchange="ssc.criteriaChanged(\'MaxPrice=\'+ this.value);">\n<option value="0" ' + ((h.maxPrice == 0) ? "selected" : "") + ">No maximum</option>\n"; for (e = 1; e < h.okPricePoints.length; e++) { if (h.hiPricePoints[e] && h.okPricePoints[e] > h.minPrice) { g += '<option class="ssc_priceValues" value="' + h.okPricePoints[e] + '" ' + ((h.maxPrice == h.okPricePoints[e]) ? "selected" : "") + ">" + h.currencySymbol + h.okPricePoints[e] + "</option>\n" } } g += "</select></td><td>"; if (h.reqQty || h.minPrice || h.maxPrice || h.selectedMapSections) { g += '<input type="button" id="ssc_resetBtn" value="Show All" onClick=\'ssc.criteriaChanged("MinPrice=0&MaxPrice=0&ReqQty=0&ClrSelSec");\'>' } g += "</td></tr></table>"; ssc.tt("Filter-End."); return g }; this.tgListHdrHTML = function (c) { return '<table class="ssc_lhTable" cellspacing="0" cellpadding="0"><tr valign="bottom"><td class="ssc_lhSec" onclick="ssc.sortTgList(\'sec\');" title="' + c.dText.secSrtH1 + '">Section' + c.columnSortArrows.SEC + '</td><td class="ssc_lhRow" onclick="ssc.sortTgList(\'row\')">Row' + c.columnSortArrows.ROW + '</td><td class="ssc_lhQty" onclick="ssc.sortTgList(\'qty\')">' + ((c.reqQty > 0) ? "# to Buy" : "# Avail") + c.columnSortArrows.QTY + '</td><td class="ssc_lhPri" onclick="ssc.sortTgList(\'price\')">Price (each)' + c.columnSortArrows.PRICE + '</td><td class="ssc_lhBuy"></td></tr></table>' }; this.tgListReady = function () { }; this.tgListRowHTML = function (i, f, h) { var g, c = "", e = "", d = h.tgNotes != ""; if (i.reqQty <= 0 || h.tgCritGroup >= 2) { c = ["", "", "", "1 or ", "2 or ", "1-" + String(Number(h.tgQty) - 2) + " or "][Math.min(Number(h.tgQty), 5)] + String(h.tgQty); g = /1|3/.test(h.tgQty) ? 1 : 2 } else { c = Number(i.reqQty); if (h.tgCritGroup == 1) { e = "Plus1"; c++ } g = c } return "<table class='ssc_lrTable' cellpadding='0' cellspacing='0'><tr><td class='ssc_lrSec'>" + ((i.showStdSectionNames && h.tgOnMap && h.mapSectionLevel) ? h.mapSectionLevel + " " + h.mapSectionNumber : h.tgUserSec) + "</td><td class='ssc_lrRow'>" + h.tgUserRow + "</td><td class='ssc_lrQty" + e + "'>" + c + "</td><td class='ssc_lrPri'>" + i.currencySymbol + h.tgPrice + "</td><td class='ssc_lrBuy' rowspan='" + ((d) ? 2 : 1) + "'><input type=button class='ssc_lrBuyBtn' onclick='ssc.buyClicked(" + f + "," + g + ")' id='ssc_BB_" + f + "' value='Buy'></td></tr>" + ((d) ? "<tr><td colspan=4 class='ssc_lrNotes'><b>Note</b>: " + h.tgNotes + "</td></tr>" : "") + "</table>" } }; ssc.vfs = new function () { var h = this, f, a = false, d = ["#ssc_vfsImageDiv1", "#ssc_vfsImageDiv0"], g = 0, c = {}, i, e = { SeatData: "http://vfs.seatics.com/SD/<cf>/800x600/<ic>.jpg", Fanvenues: "http://fanvenues1.appspot.com/ticketnetwork/<cf>/500x296/<ic>.jpg" }, j = { vfsEnable: 0, vfsFilterAnimate: "vertical-list", vfsImageAnimate: "vertical-list", vfsMsecs: 800, vfsImageSet: "*" }; this.Open = function () { var k = ssc.getMapProps(), l = { lhm: k.ListHgtMem, ihm: f, fhm: k.FltrHgtMem, bh: $("#ssc_listBktHdr").outerHeight(), ch: $("#ssc_listColHdr").outerHeight(), ia: j.vfsImageAnimate, fa: j.vfsFilterAnimate, t: j.vfsMsecs }; l.nlh = l.lhm + (l.fa.match(/list/i) ? l.fhm : 0) - (l.ia.match(/list/i) ? l.ihm : 0) - l.bh - l.ch; ssc.tt("VFS O: " + ssc.propsOf(l)); b("Ob   "); $(d[0]).css({ opacity: "0" }); if (l.fa.match(/list/) || l.ia.match(/list/)) { g = $("#ssc_tktGroups").scrollTop(); $("#ssc_tktGroups").animate({ height: (l.nlh) }, j.vfsMsecs, null, h.OpenDoneList) } switch (l.ia) { case "vertical": case "vertical-list": $("#ssc_vfsDiv").height(1).css({ opacity: 1 }).show().animate({ height: f }, j.vfsMsecs, null, h.OpenDoneImage); break; case "corner": $("#ssc_vfsDiv").hide().height(f).css({ opacity: 1 }); $("#ssc_vfsDiv").show(j.vfsMsecs); break; case "fade": $("#ssc_vfsDiv").css({ opacity: 0 }); $("#ssc_vfsDiv").show(); $("#ssc_vfsDiv").animate({ opacity: 1 }, j.vfsMsecs); break; default: $("#ssc_vfsDiv").height(f).css({ opacity: 1 }).show() } if ((l.fa).match(/vertical/)) { $("#ssc_filterDiv").animate({ height: 0 }, j.vfsMsecs, null, h.OpenDoneFilter) } a = true }; this.OpenDoneFilter = function () { b("OeF1"); $("#ssc_filterDiv").hide(); b("OeF2") }; this.OpenDoneImage = function () { b("OeI1") }; this.OpenDoneList = function () { b("OeL1"); $("#ssc_tktGroups").css("overflow", "auto"); ssc.tgBucketHdrCheck(); b("OeL2") }; this.Close = function () { var k = ssc.getMapProps(); b("Cb   "); if (!a) { return } switch (j.vfsImageAnimate.toLowerCase()) { case "vertical": case "vertical-list": $("#ssc_vfsDiv").animate({ height: 1 }, j.vfsMsecs, null, h.CloseDoneImage); break; case "corner": $("#ssc_vfsDiv").hide(j.vfsMsecs); break; case "fade": $("#ssc_vfsDiv").animate({ opacity: 0 }, j.vfsMsecs, null, h.CloseDoneImage); break; default: $("#ssc_vfsDiv").hide() } if ((j.vfsFilterAnimate).match(/vertical/i)) { $("#ssc_filterDiv").animate({ height: k.FltrHgtMem }, j.vfsMsecs, null, h.CloseDoneFilter) } if (j.vfsFilterAnimate.match(/list/i) || j.vfsImageAnimate.match(/list/i)) { g = $("#ssc_tktGroups").scrollTop(); $("#ssc_tktGroups").animate({ height: (k.ListHgtMem - $("#ssc_listBktHdr").outerHeight() - $("#ssc_listColHdr").outerHeight()) }, j.vfsMsecs, null, h.CloseDoneList) } a = false; ssc.ra("V", "C") }; this.CloseDoneFilter = function () { var k = ssc.getMapProps(); b("CeF1"); $("#ssc_filterDiv").height(k.FltrHgtMem); b("CeF2") }; this.CloseDoneImage = function () { b("CeI1"); $("#ssc_vfsDiv").css("display", "none"); b("CeI2") }; this.CloseDoneList = function () { b("CeL1"); ssc.tgBucketHdrCheck(); $("#ssc_tktGroups").scrollTop(h.scrollMemory); b("CeL2") }; var b = function (k) { ssc.tt(" vfs" + k + " IW:" + $("#ssc_vfsDiv").width() + " IH:" + $("#ssc_vfsDiv").height() + " ID:" + $("#ssc_vfsDiv").css("display") + " FW:" + $("#ssc_filterDiv").width() + " FH:" + $("#ssc_filterDiv").height() + " FD:" + $("#ssc_filterDiv").css("display") + " LW:" + $("#ssc_tktGroups").width() + " LH:" + $("#ssc_tktGroups").height() + " LO:" + $("#ssc_tktGroups").css("overflow") + " LD:" + $("#ssc_tktGroups").css("display")) }; this.imageEntered = function () { if (ssc.getMapProps().MapStatus >= 3 && this.secInfo.sectionName) { document.ssc_map.sendSecEnteredToMap(this.secInfo.sectionName, "") } }; this.imageExited = function () { if (ssc.getMapProps().MapStatus >= 3 && this.secInfo.sectionName) { document.ssc_map.sendSecExitedToMap(this.secInfo.sectionName) } }; this.Pan = function (k) { h.imageExited(); h.show((k == "L") ? this.secInfo.leftSectionName : this.secInfo.rightSectionName, k, h.panOnload) }; this.panOnload = function () { h.imageEntered(); $(d[1]).animate({ opacity: 1 }, j.vfsMsecs, "linear", h.showFinish); $(d[0]).animate({ opacity: 0 }, j.vfsMsecs) }; this.show = function (l, n, k) { ssc.tt("showVFS:" + l + " cd:" + n); var m; if (ssc.getMapProps().MapStatus < 2) { return } m = document.ssc_map.getSectionInfo(l); ssc.tt("   ..SN:" + m.sectionName + " LN:" + m.longName + " IS:" + m.vfsImageSet + " ISs:" + m.vfsImageSets + " CF:" + m.vfsConfig + " IC:" + m.vfsImageCode + " L:" + m.leftSectionName + " R:" + m.rightSectionName); if (m.vfsImageCode) { ssc.tt("   ..URL:" + (m.URL = e[m.vfsImageSet].replace(/<cf>/, m.vfsConfig).replace(/<ic>/, m.vfsImageCode))); if (n) { this.secInfo = m; i = k; d.reverse(); $(d[1]).css({ opacity: "0" }).html("<img class='ssc_vfsImage' onload='ssc.vfs.showLoaded(true)' onerror='ssc.vfs.showLoaded(false)' src='" + m.URL + "'/>"); ssc.ra("V", n) } } else { if (n) { h.Close() } } return m }; this.showLoaded = function (k) { if (!k) { $(d[1]).html("<table class='ssc_vfsImageError'><tr><td>Sorry, we are unable to locate<br/>the view from this section.</td></tr></table>"); ssc.ra("Ve", this.secInfo.vfsImageSet + ":" + this.secInfo.vfsConfig + "." + this.secInfo.vfsImageCode) } if (i) { i() } else { $(d[1]).css({ opacity: "1" }); $(d[0]).css({ opacity: "0" }); h.showFinish() } }; this.showFinish = function () { var k = "Approximate view from " + h.secInfo.longName; $("#ssc_vfsCaption").html(k); $("#ssc_vfsImageCell").attr("title", k); $("#ssc_vfsLeftArrow").css({ visibility: (h.secInfo.leftSectionName ? "visible" : "hidden") }); $("#ssc_vfsRightArrow").css({ visibility: (h.secInfo.rightSectionName ? "visible" : "hidden") }); if (!a) { h.Open() } }; this.skeleton = function () { if ($("#ssc_vfsDiv").length === 0) { $("#ssc_filterAndListCell").prepend('<div id="ssc_vfsDiv"></div>') } ssc.tt("vfsBldSkel. vfsDiv.display=" + $("#ssc_vfsDiv").css("display")); if ($("#ssc_vfsDiv").css("display") !== "none") { return } ssc.pushToPage("ssc_vfsDiv", '<table  id="ssc_vfsTbl" cellpadding=0 cellspacing=0><tr onMouseOver="ssc.vfs.imageEntered()"  onMouseOut="ssc.vfs.imageExited()"><td class="ssc_vfsPanCell" title="Click to see typical view from one section to the left" onclick="ssc.vfs.Pan(\'L\');"  id="ssc_vfsLeftArrow">&#9668;</td><td id="ssc_vfsImageCell" align="center"><div id="ssc_vfsImageDiv0"></div><div id="ssc_vfsImageDiv1"></div></td><td class="ssc_vfsPanCell" onclick="ssc.vfs.Pan(\'R\');" title="Click to see typical view from one section to the right" id="ssc_vfsRightArrow">&#9658;</td></tr></table><div id="ssc_vfsHdr"><table width="100%"><tr><td ID="ssc_vfsCaption" align=left></td><td width="15px"><input  type="button" id="ssc_vfsClose" value="[X]"title="Close view-from-section pane;"onclick="ssc.vfs.Close(); return false;"></td></tr></table></div>'); f = $("#ssc_vfsDiv").height() }; ssc.tt("subscribing to customMapCtls"); ssc.EH.subscribe("customListRowClicked", function (k) { ssc.tt("vfsRowClick"); if (k.tg.tgOnMap && j.vfsEnable) { ssc.vfs.show(k.tg.tgCanonSec, "G") } }); ssc.EH.subscribe("customInits", function () { ssc.tt("vfsInit"); ssc.fetchWebParms(j) }); ssc.EH.subscribe("customListHgtMods", function () { var k = ssc.getMapProps(); ssc.tt("vfsCLHM"); if (!a) { return 0 } return (j.vfsFilterAnimate.match(/list/i) ? k.FltrHgtMem : 0) - (j.vfsImageAnimate == "vertical-list" ? f : 0) }); ssc.EH.subscribe("customSkeleton", function () { ssc.tt("vfsSkel"); if (j.vfsEnable) { ssc.vfs.skeleton() } }); ssc.EH.subscribe("customMapCtrls", function () { ssc.tt("vfsCMC: "); return "&vfsImageSet=" + encodeURIComponent(j.vfsImageSet) + "&vfsEnable=" + encodeURIComponent(j.vfsEnable) }) }; function showVFS(a) { return ssc.vfs.show(a, "M") };

