{ "log":{ "version":"1.1", "creator":{ "name":"Firebug", "version":"1.7.3" }, "browser":{ "name":"Firefox", "version":"3.6.26" }, "pages":[{ "startedDateTime":"2015-07-02T14:29:56.022-04:00", "id":"page_29350", "title":"Sailonline.org - Tristan TIMED Race 2015", "pageTimings":{ "onContentLoad":29438, "onLoad":339317 } } ], "entries":[{ "pageref":"page_29350", "startedDateTime":"2015-07-02T14:29:56.022-04:00", "time":11742, "request":{ "method":"GET", "url":"http://sailonline.org/windy/run/848/", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"csrftoken", "value":"4jf6u9O1ogcGYsXwNK1L85rpWvghoFla" }, { "name":"sessionid", "value":"f58f0670d1cf94786fded00d95789447" }, { "name":"messages", "value":"\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"" } ], "headers":[{ "name":"Host", "value":"sailonline.org" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Referer", "value":"http://sailonline.org/" }, { "name":"Cookie", "value":"csrftoken=4jf6u9O1ogcGYsXwNK1L85rpWvghoFla; sessionid=f58f0670d1cf94786fded00d95789447; messages=\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":620, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"nginx/1.1.19" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:30:03 GMT" }, { "name":"Content-Type", "value":"text/html; charset=utf-8" }, { "name":"Transfer-Encoding", "value":"chunked" }, { "name":"Connection", "value":"keep-alive" }, { "name":"Vary", "value":"Cookie,Accept-Language,Accept-Encoding" }, { "name":"Content-Language", "value":"en" }, { "name":"Pragma", "value":"no-store" }, { "name":"Cache-Control", "value":"no-cache" }, { "name":"Content-Encoding", "value":"gzip" } ], "content":{ "size":7989, "mimeType":"text/html", "text":"\u000a\u000a\u000a\u000a\u000aSailonline.org - Tristan TIMED Race 2015\u000a\u000a\u000a \u000a\u0009\u0009\u000a\u0009\u0009\u000a \u000a\u0009\u0009 \u000a \u000a \u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a
\u000a\u0009

\u000a \u0009To view this page ensure that Adobe Flash Player version \u000a\u0009\u000910.0.0 or greater is installed. \u000a\u0009

\u000a\u0009 \u000a
\u000a\u0009 \u0009\u000a\u0009\u0009\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a\u000a" }, "redirectURL":"", "headersSize":305, "bodySize":3050 }, "cache":{}, "timings":{ "dns":11, "connect":7483, "blocked":0, "send":0, "wait":1423, "receive":2825 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:07.632-04:00", "time":9882, "request":{ "method":"GET", "url":"http://sailonline.org/static/windy/beta/swfobject.js", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"csrftoken", "value":"4jf6u9O1ogcGYsXwNK1L85rpWvghoFla" }, { "name":"sessionid", "value":"f58f0670d1cf94786fded00d95789447" }, { "name":"messages", "value":"\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"" } ], "headers":[{ "name":"Host", "value":"sailonline.org" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"*/*" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Referer", "value":"http://sailonline.org/windy/run/848/" }, { "name":"Cookie", "value":"csrftoken=4jf6u9O1ogcGYsXwNK1L85rpWvghoFla; sessionid=f58f0670d1cf94786fded00d95789447; messages=\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":590, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"nginx/1.1.19" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:30:10 GMT" }, { "name":"Content-Type", "value":"application/x-javascript" }, { "name":"Last-Modified", "value":"Fri, 11 May 2012 17:45:04 GMT" }, { "name":"Transfer-Encoding", "value":"chunked" }, { "name":"Connection", "value":"keep-alive" }, { "name":"Content-Encoding", "value":"gzip" } ], "content":{ "size":25574, "mimeType":"application/x-javascript", "text":"/*!\u0009SWFObject v2.2 \u000a\u0009is released under the MIT License \u000a*/\u000a\u000avar swfobject = function() {\u000a\u0009\u000a\u0009var UNDEF = \"undefined\",\u000a\u0009\u0009OBJECT = \"object\",\u000a\u0009\u0009SHOCKWAVE_FLASH = \"Shockwave Flash\",\u000a\u0009\u0009SHOCKWAVE_FLASH_AX = \"ShockwaveFlash.ShockwaveFlash\",\u000a\u0009\u0009FLASH_MIME_TYPE = \"application/x-shockwave-flash\",\u000a\u0009\u0009EXPRESS_INSTALL_ID = \"SWFObjectExprInst\",\u000a\u0009\u0009ON_READY_STATE_CHANGE = \"onreadystatechange\",\u000a\u0009\u0009\u000a\u0009\u0009win = window,\u000a\u0009\u0009doc = document,\u000a\u0009\u0009nav = navigator,\u000a\u0009\u0009\u000a\u0009\u0009plugin = false,\u000a\u0009\u0009domLoadFnArr = [main],\u000a\u0009\u0009regObjArr = [],\u000a\u0009\u0009objIdArr = [],\u000a\u0009\u0009listenersArr = [],\u000a\u0009\u0009storedAltContent,\u000a\u0009\u0009storedAltContentId,\u000a\u0009\u0009storedCallbackFn,\u000a\u0009\u0009storedCallbackObj,\u000a\u0009\u0009isDomLoaded = false,\u000a\u0009\u0009isExpressInstallActive = false,\u000a\u0009\u0009dynamicStylesheet,\u000a\u0009\u0009dynamicStylesheetMedia,\u000a\u0009\u0009autoHideShow = true,\u000a\u0009\u000a\u0009/* Centralized function for browser feature detection\u000a\u0009\u0009- User agent string detection is only used when no good alternative is possible\u000a\u0009\u0009- Is executed directly for optimal performance\u000a\u0009*/\u0009\u000a\u0009ua = function() {\u000a\u0009\u0009var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF,\u000a\u0009\u0009\u0009u = nav.userAgent.toLowerCase(),\u000a\u0009\u0009\u0009p = nav.platform.toLowerCase(),\u000a\u0009\u0009\u0009windows = p ? /win/.test(p) : /win/.test(u),\u000a\u0009\u0009\u0009mac = p ? /mac/.test(p) : /mac/.test(u),\u000a\u0009\u0009\u0009webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\\/(\\d+(\\.\\d+)?).*$/, \"$1\")) : false, // returns either the webkit version or false if not webkit\u000a\u0009\u0009\u0009ie = !+\"\\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\u000a\u0009\u0009\u0009playerVersion = [0,0,0],\u000a\u0009\u0009\u0009d = null;\u000a\u0009\u0009if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {\u000a\u0009\u0009\u0009d = nav.plugins[SHOCKWAVE_FLASH].description;\u000a\u0009\u0009\u0009if (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+\u000a\u0009\u0009\u0009\u0009plugin = true;\u000a\u0009\u0009\u0009\u0009ie = false; // cascaded feature detection for Internet Explorer\u000a\u0009\u0009\u0009\u0009d = d.replace(/^.*\\s+(\\S+\\s+\\S+$)/, \"$1\");\u000a\u0009\u0009\u0009\u0009playerVersion[0] = parseInt(d.replace(/^(.*)\\..*$/, \"$1\"), 10);\u000a\u0009\u0009\u0009\u0009playerVersion[1] = parseInt(d.replace(/^.*\\.(.*)\\s.*$/, \"$1\"), 10);\u000a\u0009\u0009\u0009\u0009playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, \"$1\"), 10) : 0;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009\u0009else if (typeof win.ActiveXObject != UNDEF) {\u000a\u0009\u0009\u0009try {\u000a\u0009\u0009\u0009\u0009var a = new ActiveXObject(SHOCKWAVE_FLASH_AX);\u000a\u0009\u0009\u0009\u0009if (a) { // a will return null when ActiveX is disabled\u000a\u0009\u0009\u0009\u0009\u0009d = a.GetVariable(\"$version\");\u000a\u0009\u0009\u0009\u0009\u0009if (d) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009ie = true; // cascaded feature detection for Internet Explorer\u000a\u0009\u0009\u0009\u0009\u0009\u0009d = d.split(\" \")[1].split(\",\");\u000a\u0009\u0009\u0009\u0009\u0009\u0009playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009catch(e) {}\u000a\u0009\u0009}\u000a\u0009\u0009return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac };\u000a\u0009}(),\u000a\u0009\u000a\u0009/* Cross-browser onDomLoad\u000a\u0009\u0009- Will fire an event as soon as the DOM of a web page is loaded\u000a\u0009\u0009- Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/\u000a\u0009\u0009- Regular onload serves as fallback\u000a\u0009*/ \u000a\u0009onDomLoad = function() {\u000a\u0009\u0009if (!ua.w3) { return; }\u000a\u0009\u0009if ((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 \u000a\u0009\u0009\u0009callDomLoadFunctions();\u000a\u0009\u0009}\u000a\u0009\u0009if (!isDomLoaded) {\u000a\u0009\u0009\u0009if (typeof doc.addEventListener != UNDEF) {\u000a\u0009\u0009\u0009\u0009doc.addEventListener(\"DOMContentLoaded\", callDomLoadFunctions, false);\u000a\u0009\u0009\u0009}\u0009\u0009\u000a\u0009\u0009\u0009if (ua.ie && ua.win) {\u000a\u0009\u0009\u0009\u0009doc.attachEvent(ON_READY_STATE_CHANGE, function() {\u000a\u0009\u0009\u0009\u0009\u0009if (doc.readyState == \"complete\") {\u000a\u0009\u0009\u0009\u0009\u0009\u0009doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee);\u000a\u0009\u0009\u0009\u0009\u0009\u0009callDomLoadFunctions();\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009});\u000a\u0009\u0009\u0009\u0009if (win == top) { // if not inside an iframe\u000a\u0009\u0009\u0009\u0009\u0009(function(){\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (isDomLoaded) { return; }\u000a\u0009\u0009\u0009\u0009\u0009\u0009try {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009doc.documentElement.doScroll(\"left\");\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009catch(e) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009setTimeout(arguments.callee, 0);\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009return;\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009callDomLoadFunctions();\u000a\u0009\u0009\u0009\u0009\u0009})();\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009if (ua.wk) {\u000a\u0009\u0009\u0009\u0009(function(){\u000a\u0009\u0009\u0009\u0009\u0009if (isDomLoaded) { return; }\u000a\u0009\u0009\u0009\u0009\u0009if (!/loaded|complete/.test(doc.readyState)) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009setTimeout(arguments.callee, 0);\u000a\u0009\u0009\u0009\u0009\u0009\u0009return;\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009callDomLoadFunctions();\u000a\u0009\u0009\u0009\u0009})();\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009addLoadEvent(callDomLoadFunctions);\u000a\u0009\u0009}\u000a\u0009}();\u000a\u0009\u000a\u0009function callDomLoadFunctions() {\u000a\u0009\u0009if (isDomLoaded) { return; }\u000a\u0009\u0009try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early\u000a\u0009\u0009\u0009var t = doc.getElementsByTagName(\"body\")[0].appendChild(createElement(\"span\"));\u000a\u0009\u0009\u0009t.parentNode.removeChild(t);\u000a\u0009\u0009}\u000a\u0009\u0009catch (e) { return; }\u000a\u0009\u0009isDomLoaded = true;\u000a\u0009\u0009var dl = domLoadFnArr.length;\u000a\u0009\u0009for (var i = 0; i < dl; i++) {\u000a\u0009\u0009\u0009domLoadFnArr[i]();\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009function addDomLoadEvent(fn) {\u000a\u0009\u0009if (isDomLoaded) {\u000a\u0009\u0009\u0009fn();\u000a\u0009\u0009}\u000a\u0009\u0009else { \u000a\u0009\u0009\u0009domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009/* Cross-browser onload\u000a\u0009\u0009- Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/\u000a\u0009\u0009- Will fire an event as soon as a web page including all of its assets are loaded \u000a\u0009 */\u000a\u0009function addLoadEvent(fn) {\u000a\u0009\u0009if (typeof win.addEventListener != UNDEF) {\u000a\u0009\u0009\u0009win.addEventListener(\"load\", fn, false);\u000a\u0009\u0009}\u000a\u0009\u0009else if (typeof doc.addEventListener != UNDEF) {\u000a\u0009\u0009\u0009doc.addEventListener(\"load\", fn, false);\u000a\u0009\u0009}\u000a\u0009\u0009else if (typeof win.attachEvent != UNDEF) {\u000a\u0009\u0009\u0009addListener(win, \"onload\", fn);\u000a\u0009\u0009}\u000a\u0009\u0009else if (typeof win.onload == \"function\") {\u000a\u0009\u0009\u0009var fnOld = win.onload;\u000a\u0009\u0009\u0009win.onload = function() {\u000a\u0009\u0009\u0009\u0009fnOld();\u000a\u0009\u0009\u0009\u0009fn();\u000a\u0009\u0009\u0009};\u000a\u0009\u0009}\u000a\u0009\u0009else {\u000a\u0009\u0009\u0009win.onload = fn;\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009/* Main function\u000a\u0009\u0009- Will preferably execute onDomLoad, otherwise onload (as a fallback)\u000a\u0009*/\u000a\u0009function main() { \u000a\u0009\u0009if (plugin) {\u000a\u0009\u0009\u0009testPlayerVersion();\u000a\u0009\u0009}\u000a\u0009\u0009else {\u000a\u0009\u0009\u0009matchVersions();\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009/* Detect the Flash Player version for non-Internet Explorer browsers\u000a\u0009\u0009- Detecting the plug-in version via the object element is more precise than using the plugins collection item's description:\u000a\u0009\u0009 a. Both release and build numbers can be detected\u000a\u0009\u0009 b. Avoid wrong descriptions by corrupt installers provided by Adobe\u000a\u0009\u0009 c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports\u000a\u0009\u0009- Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available\u000a\u0009*/\u000a\u0009function testPlayerVersion() {\u000a\u0009\u0009var b = doc.getElementsByTagName(\"body\")[0];\u000a\u0009\u0009var o = createElement(OBJECT);\u000a\u0009\u0009o.setAttribute(\"type\", FLASH_MIME_TYPE);\u000a\u0009\u0009var t = b.appendChild(o);\u000a\u0009\u0009if (t) {\u000a\u0009\u0009\u0009var counter = 0;\u000a\u0009\u0009\u0009(function(){\u000a\u0009\u0009\u0009\u0009if (typeof t.GetVariable != UNDEF) {\u000a\u0009\u0009\u0009\u0009\u0009var d = t.GetVariable(\"$version\");\u000a\u0009\u0009\u0009\u0009\u0009if (d) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009d = d.split(\" \")[1].split(\",\");\u000a\u0009\u0009\u0009\u0009\u0009\u0009ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009else if (counter < 10) {\u000a\u0009\u0009\u0009\u0009\u0009counter++;\u000a\u0009\u0009\u0009\u0009\u0009setTimeout(arguments.callee, 10);\u000a\u0009\u0009\u0009\u0009\u0009return;\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009b.removeChild(o);\u000a\u0009\u0009\u0009\u0009t = null;\u000a\u0009\u0009\u0009\u0009matchVersions();\u000a\u0009\u0009\u0009})();\u000a\u0009\u0009}\u000a\u0009\u0009else {\u000a\u0009\u0009\u0009matchVersions();\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009/* Perform Flash Player and SWF version matching; static publishing only\u000a\u0009*/\u000a\u0009function matchVersions() {\u000a\u0009\u0009var rl = regObjArr.length;\u000a\u0009\u0009if (rl > 0) {\u000a\u0009\u0009\u0009for (var i = 0; i < rl; i++) { // for each registered object element\u000a\u0009\u0009\u0009\u0009var id = regObjArr[i].id;\u000a\u0009\u0009\u0009\u0009var cb = regObjArr[i].callbackFn;\u000a\u0009\u0009\u0009\u0009var cbObj = {success:false, id:id};\u000a\u0009\u0009\u0009\u0009if (ua.pv[0] > 0) {\u000a\u0009\u0009\u0009\u0009\u0009var obj = getElementById(id);\u000a\u0009\u0009\u0009\u0009\u0009if (obj) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match!\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009setVisibility(id, true);\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009if (cb) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009cbObj.success = true;\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009cbObj.ref = getObjectById(id);\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009cb(cbObj);\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009var att = {};\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009att.data = regObjArr[i].expressInstall;\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009att.width = obj.getAttribute(\"width\") || \"0\";\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009att.height = obj.getAttribute(\"height\") || \"0\";\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009if (obj.getAttribute(\"class\")) { att.styleclass = obj.getAttribute(\"class\"); }\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009if (obj.getAttribute(\"align\")) { att.align = obj.getAttribute(\"align\"); }\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009// parse HTML object param element's name-value pairs\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009var par = {};\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009var p = obj.getElementsByTagName(\"param\");\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009var pl = p.length;\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009for (var j = 0; j < pl; j++) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009if (p[j].getAttribute(\"name\").toLowerCase() != \"movie\") {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009par[p[j].getAttribute(\"name\")] = p[j].getAttribute(\"value\");\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009showExpressInstall(att, par, id, cb);\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009else { // 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\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009displayAltContent(obj);\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009if (cb) { cb(cbObj); }\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009else {\u0009// 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)\u000a\u0009\u0009\u0009\u0009\u0009setVisibility(id, true);\u000a\u0009\u0009\u0009\u0009\u0009if (cb) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009var o = getObjectById(id); // test whether there is an HTML object element or not\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (o && typeof o.SetVariable != UNDEF) { \u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009cbObj.success = true;\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009cbObj.ref = o;\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009cb(cbObj);\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009function getObjectById(objectIdStr) {\u000a\u0009\u0009var r = null;\u000a\u0009\u0009var o = getElementById(objectIdStr);\u000a\u0009\u0009if (o && o.nodeName == \"OBJECT\") {\u000a\u0009\u0009\u0009if (typeof o.SetVariable != UNDEF) {\u000a\u0009\u0009\u0009\u0009r = o;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009var n = o.getElementsByTagName(OBJECT)[0];\u000a\u0009\u0009\u0009\u0009if (n) {\u000a\u0009\u0009\u0009\u0009\u0009r = n;\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009\u0009return r;\u000a\u0009}\u000a\u0009\u000a\u0009/* Requirements for Adobe Express Install\u000a\u0009\u0009- only one instance can be active at a time\u000a\u0009\u0009- fp 6.0.65 or higher\u000a\u0009\u0009- Win/Mac OS only\u000a\u0009\u0009- no Webkit engines older than version 312\u000a\u0009*/\u000a\u0009function canExpressInstall() {\u000a\u0009\u0009return !isExpressInstallActive && hasPlayerVersion(\"6.0.65\") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312);\u000a\u0009}\u000a\u0009\u000a\u0009/* Show the Adobe Express Install dialog\u000a\u0009\u0009- Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75\u000a\u0009*/\u000a\u0009function showExpressInstall(att, par, replaceElemIdStr, callbackFn) {\u000a\u0009\u0009isExpressInstallActive = true;\u000a\u0009\u0009storedCallbackFn = callbackFn || null;\u000a\u0009\u0009storedCallbackObj = {success:false, id:replaceElemIdStr};\u000a\u0009\u0009var obj = getElementById(replaceElemIdStr);\u000a\u0009\u0009if (obj) {\u000a\u0009\u0009\u0009if (obj.nodeName == \"OBJECT\") { // static publishing\u000a\u0009\u0009\u0009\u0009storedAltContent = abstractAltContent(obj);\u000a\u0009\u0009\u0009\u0009storedAltContentId = null;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else { // dynamic publishing\u000a\u0009\u0009\u0009\u0009storedAltContent = obj;\u000a\u0009\u0009\u0009\u0009storedAltContentId = replaceElemIdStr;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009att.id = EXPRESS_INSTALL_ID;\u000a\u0009\u0009\u0009if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = \"310\"; }\u000a\u0009\u0009\u0009if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = \"137\"; }\u000a\u0009\u0009\u0009doc.title = doc.title.slice(0, 47) + \" - Flash Player Installation\";\u000a\u0009\u0009\u0009var pt = ua.ie && ua.win ? \"ActiveX\" : \"PlugIn\",\u000a\u0009\u0009\u0009\u0009fv = \"MMredirectURL=\" + encodeURI(window.location).toString().replace(/&/g,\"%26\") + \"&MMplayerType=\" + pt + \"&MMdoctitle=\" + doc.title;\u000a\u0009\u0009\u0009if (typeof par.flashvars != UNDEF) {\u000a\u0009\u0009\u0009\u0009par.flashvars += \"&\" + fv;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009par.flashvars = fv;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009// 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,\u000a\u0009\u0009\u0009// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work\u000a\u0009\u0009\u0009if (ua.ie && ua.win && obj.readyState != 4) {\u000a\u0009\u0009\u0009\u0009var newObj = createElement(\"div\");\u000a\u0009\u0009\u0009\u0009replaceElemIdStr += \"SWFObjectNew\";\u000a\u0009\u0009\u0009\u0009newObj.setAttribute(\"id\", replaceElemIdStr);\u000a\u0009\u0009\u0009\u0009obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf\u000a\u0009\u0009\u0009\u0009obj.style.display = \"none\";\u000a\u0009\u0009\u0009\u0009(function(){\u000a\u0009\u0009\u0009\u0009\u0009if (obj.readyState == 4) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009obj.parentNode.removeChild(obj);\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009\u0009\u0009setTimeout(arguments.callee, 10);\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009})();\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009createSWF(att, par, replaceElemIdStr);\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009/* Functions to abstract and display alternative content\u000a\u0009*/\u000a\u0009function displayAltContent(obj) {\u000a\u0009\u0009if (ua.ie && ua.win && obj.readyState != 4) {\u000a\u0009\u0009\u0009// 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,\u000a\u0009\u0009\u0009// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work\u000a\u0009\u0009\u0009var el = createElement(\"div\");\u000a\u0009\u0009\u0009obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content\u000a\u0009\u0009\u0009el.parentNode.replaceChild(abstractAltContent(obj), el);\u000a\u0009\u0009\u0009obj.style.display = \"none\";\u000a\u0009\u0009\u0009(function(){\u000a\u0009\u0009\u0009\u0009if (obj.readyState == 4) {\u000a\u0009\u0009\u0009\u0009\u0009obj.parentNode.removeChild(obj);\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009\u0009setTimeout(arguments.callee, 10);\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009})();\u000a\u0009\u0009}\u000a\u0009\u0009else {\u000a\u0009\u0009\u0009obj.parentNode.replaceChild(abstractAltContent(obj), obj);\u000a\u0009\u0009}\u000a\u0009} \u000a\u000a\u0009function abstractAltContent(obj) {\u000a\u0009\u0009var ac = createElement(\"div\");\u000a\u0009\u0009if (ua.win && ua.ie) {\u000a\u0009\u0009\u0009ac.innerHTML = obj.innerHTML;\u000a\u0009\u0009}\u000a\u0009\u0009else {\u000a\u0009\u0009\u0009var nestedObj = obj.getElementsByTagName(OBJECT)[0];\u000a\u0009\u0009\u0009if (nestedObj) {\u000a\u0009\u0009\u0009\u0009var c = nestedObj.childNodes;\u000a\u0009\u0009\u0009\u0009if (c) {\u000a\u0009\u0009\u0009\u0009\u0009var cl = c.length;\u000a\u0009\u0009\u0009\u0009\u0009for (var i = 0; i < cl; i++) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (!(c[i].nodeType == 1 && c[i].nodeName == \"PARAM\") && !(c[i].nodeType == 8)) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009ac.appendChild(c[i].cloneNode(true));\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009\u0009return ac;\u000a\u0009}\u000a\u0009\u000a\u0009/* Cross-browser dynamic SWF creation\u000a\u0009*/\u000a\u0009function createSWF(attObj, parObj, id) {\u000a\u0009\u0009var r, el = getElementById(id);\u000a\u0009\u0009if (ua.wk && ua.wk < 312) { return r; }\u000a\u0009\u0009if (el) {\u000a\u0009\u0009\u0009if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content\u000a\u0009\u0009\u0009\u0009attObj.id = id;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML\u000a\u0009\u0009\u0009\u0009var att = \"\";\u000a\u0009\u0009\u0009\u0009for (var i in attObj) {\u000a\u0009\u0009\u0009\u0009\u0009if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (i.toLowerCase() == \"data\") {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009parObj.movie = attObj[i];\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009else if (i.toLowerCase() == \"styleclass\") { // 'class' is an ECMA4 reserved keyword\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009att += ' class=\"' + attObj[i] + '\"';\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009else if (i.toLowerCase() != \"classid\") {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009att += ' ' + i + '=\"' + attObj[i] + '\"';\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009var par = \"\";\u000a\u0009\u0009\u0009\u0009for (var j in parObj) {\u000a\u0009\u0009\u0009\u0009\u0009if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries\u000a\u0009\u0009\u0009\u0009\u0009\u0009par += '';\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009el.outerHTML = '' + par + '';\u000a\u0009\u0009\u0009\u0009objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only)\u000a\u0009\u0009\u0009\u0009r = getElementById(attObj.id);\u0009\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else { // well-behaving browsers\u000a\u0009\u0009\u0009\u0009var o = createElement(OBJECT);\u000a\u0009\u0009\u0009\u0009o.setAttribute(\"type\", FLASH_MIME_TYPE);\u000a\u0009\u0009\u0009\u0009for (var m in attObj) {\u000a\u0009\u0009\u0009\u0009\u0009if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (m.toLowerCase() == \"styleclass\") { // 'class' is an ECMA4 reserved keyword\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009o.setAttribute(\"class\", attObj[m]);\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009else if (m.toLowerCase() != \"classid\") { // filter out IE specific attribute\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009o.setAttribute(m, attObj[m]);\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009for (var n in parObj) {\u000a\u0009\u0009\u0009\u0009\u0009if (parObj[n] != Object.prototype[n] && n.toLowerCase() != \"movie\") { // filter out prototype additions from other potential libraries and IE specific param element\u000a\u0009\u0009\u0009\u0009\u0009\u0009createObjParam(o, n, parObj[n]);\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009el.parentNode.replaceChild(o, el);\u000a\u0009\u0009\u0009\u0009r = o;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009\u0009return r;\u000a\u0009}\u000a\u0009\u000a\u0009function createObjParam(el, pName, pValue) {\u000a\u0009\u0009var p = createElement(\"param\");\u000a\u0009\u0009p.setAttribute(\"name\", pName);\u0009\u000a\u0009\u0009p.setAttribute(\"value\", pValue);\u000a\u0009\u0009el.appendChild(p);\u000a\u0009}\u000a\u0009\u000a\u0009/* Cross-browser SWF removal\u000a\u0009\u0009- Especially needed to safely and completely remove a SWF in Internet Explorer\u000a\u0009*/\u000a\u0009function removeSWF(id) {\u000a\u0009\u0009var obj = getElementById(id);\u000a\u0009\u0009if (obj && obj.nodeName == \"OBJECT\") {\u000a\u0009\u0009\u0009if (ua.ie && ua.win) {\u000a\u0009\u0009\u0009\u0009obj.style.display = \"none\";\u000a\u0009\u0009\u0009\u0009(function(){\u000a\u0009\u0009\u0009\u0009\u0009if (obj.readyState == 4) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009removeObjectInIE(id);\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009\u0009\u0009setTimeout(arguments.callee, 10);\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009})();\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009obj.parentNode.removeChild(obj);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009function removeObjectInIE(id) {\u000a\u0009\u0009var obj = getElementById(id);\u000a\u0009\u0009if (obj) {\u000a\u0009\u0009\u0009for (var i in obj) {\u000a\u0009\u0009\u0009\u0009if (typeof obj[i] == \"function\") {\u000a\u0009\u0009\u0009\u0009\u0009obj[i] = null;\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009obj.parentNode.removeChild(obj);\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009/* Functions to optimize JavaScript compression\u000a\u0009*/\u000a\u0009function getElementById(id) {\u000a\u0009\u0009var el = null;\u000a\u0009\u0009try {\u000a\u0009\u0009\u0009el = doc.getElementById(id);\u000a\u0009\u0009}\u000a\u0009\u0009catch (e) {}\u000a\u0009\u0009return el;\u000a\u0009}\u000a\u0009\u000a\u0009function createElement(el) {\u000a\u0009\u0009return doc.createElement(el);\u000a\u0009}\u000a\u0009\u000a\u0009/* Updated attachEvent function for Internet Explorer\u000a\u0009\u0009- Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks\u000a\u0009*/\u0009\u000a\u0009function addListener(target, eventType, fn) {\u000a\u0009\u0009target.attachEvent(eventType, fn);\u000a\u0009\u0009listenersArr[listenersArr.length] = [target, eventType, fn];\u000a\u0009}\u000a\u0009\u000a\u0009/* Flash Player and SWF content version matching\u000a\u0009*/\u000a\u0009function hasPlayerVersion(rv) {\u000a\u0009\u0009var pv = ua.pv, v = rv.split(\".\");\u000a\u0009\u0009v[0] = parseInt(v[0], 10);\u000a\u0009\u0009v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. \"9\" instead of \"9.0.0\"\u000a\u0009\u0009v[2] = parseInt(v[2], 10) || 0;\u000a\u0009\u0009return (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;\u000a\u0009}\u000a\u0009\u000a\u0009/* Cross-browser dynamic CSS creation\u000a\u0009\u0009- Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php\u000a\u0009*/\u0009\u000a\u0009function createCSS(sel, decl, media, newStyle) {\u000a\u0009\u0009if (ua.ie && ua.mac) { return; }\u000a\u0009\u0009var h = doc.getElementsByTagName(\"head\")[0];\u000a\u0009\u0009if (!h) { return; } // to also support badly authored HTML pages that lack a head element\u000a\u0009\u0009var m = (media && typeof media == \"string\") ? media : \"screen\";\u000a\u0009\u0009if (newStyle) {\u000a\u0009\u0009\u0009dynamicStylesheet = null;\u000a\u0009\u0009\u0009dynamicStylesheetMedia = null;\u000a\u0009\u0009}\u000a\u0009\u0009if (!dynamicStylesheet || dynamicStylesheetMedia != m) { \u000a\u0009\u0009\u0009// create dynamic stylesheet + get a global reference to it\u000a\u0009\u0009\u0009var s = createElement(\"style\");\u000a\u0009\u0009\u0009s.setAttribute(\"type\", \"text/css\");\u000a\u0009\u0009\u0009s.setAttribute(\"media\", m);\u000a\u0009\u0009\u0009dynamicStylesheet = h.appendChild(s);\u000a\u0009\u0009\u0009if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {\u000a\u0009\u0009\u0009\u0009dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1];\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009dynamicStylesheetMedia = m;\u000a\u0009\u0009}\u000a\u0009\u0009// add style rule\u000a\u0009\u0009if (ua.ie && ua.win) {\u000a\u0009\u0009\u0009if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) {\u000a\u0009\u0009\u0009\u0009dynamicStylesheet.addRule(sel, decl);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009\u0009else {\u000a\u0009\u0009\u0009if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) {\u000a\u0009\u0009\u0009\u0009dynamicStylesheet.appendChild(doc.createTextNode(sel + \" {\" + decl + \"}\"));\u000a\u0009\u0009\u0009}\u000a\u0009\u0009}\u000a\u0009}\u000a\u0009\u000a\u0009function setVisibility(id, isVisible) {\u000a\u0009\u0009if (!autoHideShow) { return; }\u000a\u0009\u0009var v = isVisible ? \"visible\" : \"hidden\";\u000a\u0009\u0009if (isDomLoaded && getElementById(id)) {\u000a\u0009\u0009\u0009getElementById(id).style.visibility = v;\u000a\u0009\u0009}\u000a\u0009\u0009else {\u000a\u0009\u0009\u0009createCSS(\"#\" + id, \"visibility:\" + v);\u000a\u0009\u0009}\u000a\u0009}\u000a\u000a\u0009/* Filter to avoid XSS attacks\u000a\u0009*/\u000a\u0009function urlEncodeIfNecessary(s) {\u000a\u0009\u0009var regex = /[\\\\\\\"<>\\.;]/;\u000a\u0009\u0009var hasBadChars = regex.exec(s) != null;\u000a\u0009\u0009return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s;\u000a\u0009}\u000a\u0009\u000a\u0009/* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)\u000a\u0009*/\u000a\u0009var cleanup = function() {\u000a\u0009\u0009if (ua.ie && ua.win) {\u000a\u0009\u0009\u0009window.attachEvent(\"onunload\", function() {\u000a\u0009\u0009\u0009\u0009// remove listeners to avoid memory leaks\u000a\u0009\u0009\u0009\u0009var ll = listenersArr.length;\u000a\u0009\u0009\u0009\u0009for (var i = 0; i < ll; i++) {\u000a\u0009\u0009\u0009\u0009\u0009listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009// cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect\u000a\u0009\u0009\u0009\u0009var il = objIdArr.length;\u000a\u0009\u0009\u0009\u0009for (var j = 0; j < il; j++) {\u000a\u0009\u0009\u0009\u0009\u0009removeSWF(objIdArr[j]);\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009// cleanup library's main closures to avoid memory leaks\u000a\u0009\u0009\u0009\u0009for (var k in ua) {\u000a\u0009\u0009\u0009\u0009\u0009ua[k] = null;\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009ua = null;\u000a\u0009\u0009\u0009\u0009for (var l in swfobject) {\u000a\u0009\u0009\u0009\u0009\u0009swfobject[l] = null;\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009swfobject = null;\u000a\u0009\u0009\u0009});\u000a\u0009\u0009}\u000a\u0009}();\u000a\u0009\u000a\u0009return {\u000a\u0009\u0009/* Public API\u000a\u0009\u0009\u0009- Reference: http://code.google.com/p/swfobject/wiki/documentation\u000a\u0009\u0009*/ \u000a\u0009\u0009registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) {\u000a\u0009\u0009\u0009if (ua.w3 && objectIdStr && swfVersionStr) {\u000a\u0009\u0009\u0009\u0009var regObj = {};\u000a\u0009\u0009\u0009\u0009regObj.id = objectIdStr;\u000a\u0009\u0009\u0009\u0009regObj.swfVersion = swfVersionStr;\u000a\u0009\u0009\u0009\u0009regObj.expressInstall = xiSwfUrlStr;\u000a\u0009\u0009\u0009\u0009regObj.callbackFn = callbackFn;\u000a\u0009\u0009\u0009\u0009regObjArr[regObjArr.length] = regObj;\u000a\u0009\u0009\u0009\u0009setVisibility(objectIdStr, false);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else if (callbackFn) {\u000a\u0009\u0009\u0009\u0009callbackFn({success:false, id:objectIdStr});\u000a\u0009\u0009\u0009}\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009getObjectById: function(objectIdStr) {\u000a\u0009\u0009\u0009if (ua.w3) {\u000a\u0009\u0009\u0009\u0009return getObjectById(objectIdStr);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {\u000a\u0009\u0009\u0009var callbackObj = {success:false, id:replaceElemIdStr};\u000a\u0009\u0009\u0009if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {\u000a\u0009\u0009\u0009\u0009setVisibility(replaceElemIdStr, false);\u000a\u0009\u0009\u0009\u0009addDomLoadEvent(function() {\u000a\u0009\u0009\u0009\u0009\u0009widthStr += \"\"; // auto-convert to string\u000a\u0009\u0009\u0009\u0009\u0009heightStr += \"\";\u000a\u0009\u0009\u0009\u0009\u0009var att = {};\u000a\u0009\u0009\u0009\u0009\u0009if (attObj && typeof attObj === OBJECT) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009att[i] = attObj[i];\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009att.data = swfUrlStr;\u000a\u0009\u0009\u0009\u0009\u0009att.width = widthStr;\u000a\u0009\u0009\u0009\u0009\u0009att.height = heightStr;\u000a\u0009\u0009\u0009\u0009\u0009var par = {}; \u000a\u0009\u0009\u0009\u0009\u0009if (parObj && typeof parObj === OBJECT) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009par[j] = parObj[j];\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009if (flashvarsObj && typeof flashvarsObj === OBJECT) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009if (typeof par.flashvars != UNDEF) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009par.flashvars += \"&\" + k + \"=\" + flashvarsObj[k];\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009\u0009par.flashvars = k + \"=\" + flashvarsObj[k];\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009if (hasPlayerVersion(swfVersionStr)) { // create SWF\u000a\u0009\u0009\u0009\u0009\u0009\u0009var obj = createSWF(att, par, replaceElemIdStr);\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (att.id == replaceElemIdStr) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009\u0009setVisibility(replaceElemIdStr, true);\u000a\u0009\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009\u0009callbackObj.success = true;\u000a\u0009\u0009\u0009\u0009\u0009\u0009callbackObj.ref = obj;\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install\u000a\u0009\u0009\u0009\u0009\u0009\u0009att.data = xiSwfUrlStr;\u000a\u0009\u0009\u0009\u0009\u0009\u0009showExpressInstall(att, par, replaceElemIdStr, callbackFn);\u000a\u0009\u0009\u0009\u0009\u0009\u0009return;\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009else { // show alternative content\u000a\u0009\u0009\u0009\u0009\u0009\u0009setVisibility(replaceElemIdStr, true);\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009if (callbackFn) { callbackFn(callbackObj); }\u000a\u0009\u0009\u0009\u0009});\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else if (callbackFn) { callbackFn(callbackObj);\u0009}\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009switchOffAutoHideShow: function() {\u000a\u0009\u0009\u0009autoHideShow = false;\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009ua: ua,\u000a\u0009\u0009\u000a\u0009\u0009getFlashPlayerVersion: function() {\u000a\u0009\u0009\u0009return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009hasFlashPlayerVersion: hasPlayerVersion,\u000a\u0009\u0009\u000a\u0009\u0009createSWF: function(attObj, parObj, replaceElemIdStr) {\u000a\u0009\u0009\u0009if (ua.w3) {\u000a\u0009\u0009\u0009\u0009return createSWF(attObj, parObj, replaceElemIdStr);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009else {\u000a\u0009\u0009\u0009\u0009return undefined;\u000a\u0009\u0009\u0009}\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) {\u000a\u0009\u0009\u0009if (ua.w3 && canExpressInstall()) {\u000a\u0009\u0009\u0009\u0009showExpressInstall(att, par, replaceElemIdStr, callbackFn);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009removeSWF: function(objElemIdStr) {\u000a\u0009\u0009\u0009if (ua.w3) {\u000a\u0009\u0009\u0009\u0009removeSWF(objElemIdStr);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {\u000a\u0009\u0009\u0009if (ua.w3) {\u000a\u0009\u0009\u0009\u0009createCSS(selStr, declStr, mediaStr, newStyleBoolean);\u000a\u0009\u0009\u0009}\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009addDomLoadEvent: addDomLoadEvent,\u000a\u0009\u0009\u000a\u0009\u0009addLoadEvent: addLoadEvent,\u000a\u0009\u0009\u000a\u0009\u0009getQueryParamValue: function(param) {\u000a\u0009\u0009\u0009var q = doc.location.search || doc.location.hash;\u000a\u0009\u0009\u0009if (q) {\u000a\u0009\u0009\u0009\u0009if (/\\?/.test(q)) { q = q.split(\"?\")[1]; } // strip question mark\u000a\u0009\u0009\u0009\u0009if (param == null) {\u000a\u0009\u0009\u0009\u0009\u0009return urlEncodeIfNecessary(q);\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009var pairs = q.split(\"&\");\u000a\u0009\u0009\u0009\u0009for (var i = 0; i < pairs.length; i++) {\u000a\u0009\u0009\u0009\u0009\u0009if (pairs[i].substring(0, pairs[i].indexOf(\"=\")) == param) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf(\"=\") + 1)));\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009}\u000a\u0009\u0009\u0009return \"\";\u000a\u0009\u0009},\u000a\u0009\u0009\u000a\u0009\u0009// For internal usage only\u000a\u0009\u0009expressInstallCallback: function() {\u000a\u0009\u0009\u0009if (isExpressInstallActive) {\u000a\u0009\u0009\u0009\u0009var obj = getElementById(EXPRESS_INSTALL_ID);\u000a\u0009\u0009\u0009\u0009if (obj && storedAltContent) {\u000a\u0009\u0009\u0009\u0009\u0009obj.parentNode.replaceChild(storedAltContent, obj);\u000a\u0009\u0009\u0009\u0009\u0009if (storedAltContentId) {\u000a\u0009\u0009\u0009\u0009\u0009\u0009setVisibility(storedAltContentId, true);\u000a\u0009\u0009\u0009\u0009\u0009\u0009if (ua.ie && ua.win) { storedAltContent.style.display = \"block\"; }\u000a\u0009\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009\u0009if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); }\u000a\u0009\u0009\u0009\u0009}\u000a\u0009\u0009\u0009\u0009isExpressInstallActive = false;\u000a\u0009\u0009\u0009} \u000a\u0009\u0009}\u000a\u0009};\u000a}();\u000a" }, "redirectURL":"", "headersSize":240, "bodySize":8908 }, "cache":{}, "timings":{ "dns":0, "connect":2231, "blocked":0, "send":0, "wait":2976, "receive":4675 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:17.534-04:00", "time":7280, "request":{ "method":"GET", "url":"http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"s_fid", "value":"58FFBEADD53FEEF7-0C763CE15C3762E5" }, { "name":"s_pers", "value":"%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B" }, { "name":"UID", "value":"744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A" }, { "name":"s_vi", "value":"[CS]v1|273138D405078E31-60000101E0008082[CE]" } ], "headers":[{ "name":"Host", "value":"www.adobe.com" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"image/png,image/*;q=0.8,*/*;q=0.5" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Referer", "value":"http://sailonline.org/windy/run/848/" }, { "name":"Cookie", "value":"s_fid=58FFBEADD53FEEF7-0C763CE15C3762E5; s_pers=%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B; UID=744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A; s_vi=[CS]v1|273138D405078E31-60000101E0008082[CE]" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":829, "bodySize":-1 }, "response":{ "status":301, "statusText":"Moved Permanently", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"Apache" }, { "name":"Location", "value":"http://wwwimages.adobe.com/www.adobe.com/images/shared/download_buttons/get_flash_player.gif" }, { "name":"Cache-Control", "value":"max-age=900" }, { "name":"Keep-Alive", "value":"timeout=2" }, { "name":"Content-Type", "value":"text/html; charset=iso-8859-1" }, { "name":"Accept-Ranges", "value":"bytes" }, { "name":"Connection", "value":"Keep-Alive" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:30:22 GMT" }, { "name":"Expires", "value":"Thu, 02 Jul 2015 18:45:22 GMT" }, { "name":"Age", "value":"0" }, { "name":"Content-Length", "value":"300" } ], "content":{ "size":300, "mimeType":"text/html" }, "redirectURL":"http://wwwimages.adobe.com/www.adobe.com/images/shared/download_buttons/get_flash_player.gif", "headersSize":402, "bodySize":300 }, "cache":{}, "timings":{ "dns":2901, "connect":1979, "blocked":0, "send":0, "wait":2400, "receive":0 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:20.448-04:00", "time":4993, "request":{ "method":"GET", "url":"http://sifomedia.hamnen.se/RealMedia/ads/adstream_mjx.ads/hamnen/1569252729@TopRight?XE&Sajt=hamnen.se&Sektion=sailonline&tax23_RefDocLoc=http://sailonline.org/&if_nt_CookieAccept=Y&XE", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"OAX", "value":"0awV2E882JoAA/Dw" } ], "headers":[{ "name":"Host", "value":"sifomedia.hamnen.se" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"*/*" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Referer", "value":"http://sailonline.org/windy/run/848/" }, { "name":"Cookie", "value":"OAX=0awV2E882JoAA/Dw" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[{ "name":"Sajt", "value":"hamnen.se" }, { "name":"Sektion", "value":"sailonline" }, { "name":"XE", "value":"" }, { "name":"XE", "value":"" }, { "name":"if_nt_CookieAccept", "value":"Y" }, { "name":"tax23_RefDocLoc", "value":"http://sailonline.org/" } ], "headersSize":541, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"OAX", "value":"0awV2E882JoAA/Dw", "path":"/", "expires":"NaN-NaN-NaNTNaN:NaN:NaN.NaN+NaN:NaN", "domain":".hamnen.se" }, { "name":"NSC_fd1efm_qppm_iuuq", "value":"ffffffff09099edc45525d5f4f58455e445a4a423660;path" } ], "headers":[{ "name":"Date", "value":"Thu, 02 Jul 2015 18:30:23 GMT" }, { "name":"Server", "value":"Apache/2.2.3 (Red Hat)" }, { "name":"Set-Cookie", "value":"OAX=0awV2E882JoAA/Dw; path=/; expires=Tue, 02-Aug-16 18:30:23 GMT; domain=.hamnen.se\u000aNSC_fd1efm_qppm_iuuq=ffffffff09099edc45525d5f4f58455e445a4a423660;path=/;httponly" }, { "name":"P3P", "value":"CP=\"NON NID PSAa PSDa OUR IND UNI COM NAV STA\",policyref=\"/w3c/p3p.xml\"" }, { "name":"Cache-Control", "value":"no-cache,no-store,private, no-cache,no-store,private" }, { "name":"Pragma", "value":"no-cache, no-cache" }, { "name":"Expires", "value":"Tue, 25 Apr 1995 09:30:27 -0700, Fri, 30 Oct 1998 14:19:41 GMT" }, { "name":"Content-Length", "value":"332" }, { "name":"Keep-Alive", "value":"timeout=60" }, { "name":"Connection", "value":"Keep-Alive" }, { "name":"Content-Type", "value":"application/x-javascript" } ], "content":{ "size":332, "mimeType":"application/x-javascript", "text":"function OAS_RICH(position) {\u000aif (position == 'TopRight') {\u000adocument.write ('\"\"');\u000a}\u000a}\u000a" }, "redirectURL":"", "headersSize":625, "bodySize":332 }, "cache":{}, "timings":{ "dns":0, "connect":2468, "blocked":0, "send":0, "wait":2525, "receive":0 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:24.820-04:00", "time":10891, "request":{ "method":"GET", "url":"http://wwwimages.adobe.com/www.adobe.com/images/shared/download_buttons/get_flash_player.gif", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"s_fid", "value":"58FFBEADD53FEEF7-0C763CE15C3762E5" }, { "name":"s_pers", "value":"%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B" }, { "name":"UID", "value":"744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A" }, { "name":"s_vi", "value":"[CS]v1|273138D405078E31-60000101E0008082[CE]" } ], "headers":[{ "name":"Host", "value":"wwwimages.adobe.com" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Referer", "value":"http://sailonline.org/windy/run/848/" }, { "name":"Cookie", "value":"s_fid=58FFBEADD53FEEF7-0C763CE15C3762E5; s_pers=%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B; UID=744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A; s_vi=[CS]v1|273138D405078E31-60000101E0008082[CE]" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" }, { "name":"If-Modified-Since", "value":"Thu, 11 Jun 2015 16:51:09 GMT" }, { "name":"If-None-Match", "value":"\"17d117c-6b8-51840cc5a5940\"" } ], "queryString":[], "headersSize":973, "bodySize":-1 }, "response":{ "status":304, "statusText":"Not Modified", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Content-Type", "value":"image/gif" }, { "name":"Expires", "value":"Thu, 02 Jul 2015 18:44:01 GMT" }, { "name":"Last-Modified", "value":"Thu, 11 Jun 2015 16:51:09 GMT" }, { "name":"Etag", "value":"\"17d117c-6b8-51840cc5a5940\"" }, { "name":"Cache-Control", "value":"max-age=900, s-maxage=300" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:30:31 GMT" }, { "name":"Connection", "value":"keep-alive" } ], "content":{ "size":1720, "mimeType":"image/gif" }, "redirectURL":"", "headersSize":278, "bodySize":1720 }, "cache":{ "afterRequest":{ "expires":"2015-07-02T18:45:20.000Z", "lastAccess":"2015-07-02T18:30:35.000Z", "eTag":"", "hitCount":7 } }, "timings":{ "dns":2701, "connect":3967, "blocked":0, "send":0, "wait":4223, "receive":0 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:25.491-04:00", "time":309845, "request":{ "method":"GET", "url":"http://sailonline.org/static/windy/Windy5.swf", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"csrftoken", "value":"4jf6u9O1ogcGYsXwNK1L85rpWvghoFla" }, { "name":"sessionid", "value":"f58f0670d1cf94786fded00d95789447" }, { "name":"messages", "value":"\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"" }, { "name":"OAS_SC1", "value":"1435861817539" } ], "headers":[{ "name":"Host", "value":"sailonline.org" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Referer", "value":"http://sailonline.org/windy/run/848/" }, { "name":"Cookie", "value":"csrftoken=4jf6u9O1ogcGYsXwNK1L85rpWvghoFla; sessionid=f58f0670d1cf94786fded00d95789447; messages=\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"; OAS_SC1=1435861817539" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":666, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"nginx/1.1.19" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:30:25 GMT" }, { "name":"Content-Type", "value":"application/x-shockwave-flash" }, { "name":"Content-Length", "value":"487038" }, { "name":"Last-Modified", "value":"Mon, 30 Sep 2013 20:13:20 GMT" }, { "name":"Connection", "value":"keep-alive" }, { "name":"Accept-Ranges", "value":"bytes" } ], "content":{ "size":487038, "mimeType":"application/x-shockwave-flash" }, "redirectURL":"", "headersSize":239, "bodySize":487038 }, "cache":{}, "timings":{ "dns":0, "connect":0, "blocked":0, "send":0, "wait":3221, "receive":306624 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:54.876-04:00", "time":15, "request":{ "method":"GET", "url":"http://fpdownload.adobe.com/pub/swz/crossdomain.xml", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"s_fid", "value":"58FFBEADD53FEEF7-0C763CE15C3762E5" }, { "name":"s_pers", "value":"%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B" }, { "name":"UID", "value":"744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A" }, { "name":"s_vi", "value":"[CS]v1|273138D405078E31-60000101E0008082[CE]" } ], "headers":[{ "name":"Host", "value":"fpdownload.adobe.com" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Cookie", "value":"s_fid=58FFBEADD53FEEF7-0C763CE15C3762E5; s_pers=%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B; UID=744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A; s_vi=[CS]v1|273138D405078E31-60000101E0008082[CE]" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":-1, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"Apache" }, { "name":"Last-Modified", "value":"Wed, 08 Apr 2009 14:45:28 GMT" }, { "name":"Etag", "value":"\"d1-4670c2eb93200\"" }, { "name":"Accept-Ranges", "value":"bytes" }, { "name":"Content-Length", "value":"209" }, { "name":"Content-Type", "value":"text/x-cross-domain-policy" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:13:33 GMT" } ], "content":{ "size":209, "mimeType":"text/x-cross-domain-policy" }, "redirectURL":"", "headersSize":-1, "bodySize":209 }, "cache":{ "afterRequest":{ "expires":"2016-02-15T08:58:16.000Z", "lastAccess":"2015-07-02T18:30:54.000Z", "eTag":"", "hitCount":4 } }, "timings":{ "dns":0, "connect":0, "blocked":0, "send":0, "wait":15, "receive":0 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:54.943-04:00", "time":3, "request":{ "method":"GET", "url":"http://fpdownload.adobe.com/crossdomain.xml", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"s_fid", "value":"58FFBEADD53FEEF7-0C763CE15C3762E5" }, { "name":"s_pers", "value":"%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B" }, { "name":"UID", "value":"744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A" }, { "name":"s_vi", "value":"[CS]v1|273138D405078E31-60000101E0008082[CE]" } ], "headers":[{ "name":"Host", "value":"fpdownload.adobe.com" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Cookie", "value":"s_fid=58FFBEADD53FEEF7-0C763CE15C3762E5; s_pers=%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B; UID=744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A; s_vi=[CS]v1|273138D405078E31-60000101E0008082[CE]" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":-1, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"Apache" }, { "name":"Last-Modified", "value":"Mon, 04 May 2009 20:29:46 GMT" }, { "name":"Etag", "value":"\"8d-4691c05e90280\"" }, { "name":"Accept-Ranges", "value":"bytes" }, { "name":"Content-Length", "value":"141" }, { "name":"Content-Type", "value":"text/x-cross-domain-policy" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:13:35 GMT" } ], "content":{ "size":141, "mimeType":"text/x-cross-domain-policy" }, "redirectURL":"", "headersSize":-1, "bodySize":141 }, "cache":{ "afterRequest":{ "expires":"2016-02-12T17:59:55.000Z", "lastAccess":"2015-07-02T18:30:54.000Z", "eTag":"", "hitCount":4 } }, "timings":{ "dns":0, "connect":0, "blocked":0, "send":0, "wait":3, "receive":0 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:30:54.950-04:00", "time":128735, "request":{ "method":"GET", "url":"http://fpdownload.adobe.com/pub/swz/tlf/1.1.0.604/textLayout_1.1.0.604.swz", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"s_fid", "value":"58FFBEADD53FEEF7-0C763CE15C3762E5" }, { "name":"s_pers", "value":"%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B" }, { "name":"UID", "value":"744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A" }, { "name":"s_vi", "value":"[CS]v1|273138D405078E31-60000101E0008082[CE]" } ], "headers":[{ "name":"Host", "value":"fpdownload.adobe.com" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Cookie", "value":"s_fid=58FFBEADD53FEEF7-0C763CE15C3762E5; s_pers=%20s_fid%3D79C6D32F47EE4E6C-2095F7CA25F3970B%7C1457219415523%3B%20s_nr%3D1405720662587-Repeat%7C1437256662587%3B%20gpv%3Dhelpx.adobe.com%253Aflash-player%253Akb%253Aarchived-flash-player-versions%7C1405722462595%3B%20s_vs%3D1%7C1405722865859%3B; UID=744BCA7A%2DD44D%2D021E%2DA0A95D0F6D21431A; s_vi=[CS]v1|273138D405078E31-60000101E0008082[CE]" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":814, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"Apache" }, { "name":"Last-Modified", "value":"Thu, 27 Jan 2011 03:52:27 GMT" }, { "name":"Etag", "value":"\"2654a-49acbe0c6b4c0\"" }, { "name":"Accept-Ranges", "value":"bytes" }, { "name":"Content-Length", "value":"157002" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:30:59 GMT" }, { "name":"Connection", "value":"keep-alive" } ], "content":{ "size":157002, "mimeType":"application/octet-stream" }, "redirectURL":"", "headersSize":217, "bodySize":157002 }, "cache":{}, "timings":{ "dns":0, "connect":3789, "blocked":0, "send":0, "wait":5000, "receive":119946 } }, { "pageref":"page_29350", "startedDateTime":"2015-07-02T14:33:03.696-04:00", "time":138070, "request":{ "method":"GET", "url":"http://sailonline.org/static/windy/textLayout_1.1.0.604.swz", "httpVersion":"HTTP/1.1", "cookies":[{ "name":"csrftoken", "value":"4jf6u9O1ogcGYsXwNK1L85rpWvghoFla" }, { "name":"sessionid", "value":"f58f0670d1cf94786fded00d95789447" }, { "name":"messages", "value":"\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"" }, { "name":"OAS_SC1", "value":"1435861817539" } ], "headers":[{ "name":"Host", "value":"sailonline.org" }, { "name":"User-Agent", "value":"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.26) Gecko/20120128 Firefox/3.6.26" }, { "name":"Accept", "value":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }, { "name":"Accept-Language", "value":"en-us,en;q=0.5" }, { "name":"Accept-Encoding", "value":"gzip,deflate" }, { "name":"Accept-Charset", "value":"UTF-8,*" }, { "name":"Keep-Alive", "value":"115" }, { "name":"Cookie", "value":"csrftoken=4jf6u9O1ogcGYsXwNK1L85rpWvghoFla; sessionid=f58f0670d1cf94786fded00d95789447; messages=\"6ed3939b33029516e599b88fe239db343246d66d$[[\\\"__json_message\\\"\\05425\\054\\\"Post edited successfully.\\\"]]\"; OAS_SC1=1435861817539" }, { "name":"DNT", "value":"1" }, { "name":"Connection", "value":"keep-alive" } ], "queryString":[], "headersSize":633, "bodySize":-1 }, "response":{ "status":200, "statusText":"OK", "httpVersion":"HTTP/1.1", "cookies":[], "headers":[{ "name":"Server", "value":"nginx/1.1.19" }, { "name":"Date", "value":"Thu, 02 Jul 2015 18:33:12 GMT" }, { "name":"Content-Type", "value":"application/octet-stream" }, { "name":"Content-Length", "value":"156998" }, { "name":"Last-Modified", "value":"Wed, 15 Feb 2012 05:25:18 GMT" }, { "name":"Connection", "value":"keep-alive" }, { "name":"Accept-Ranges", "value":"bytes" } ], "content":{ "size":156998, "mimeType":"application/octet-stream" }, "redirectURL":"", "headersSize":234, "bodySize":156998 }, "cache":{}, "timings":{ "dns":4601, "connect":4142, "blocked":0, "send":0, "wait":5000, "receive":124327 } } ] } }