/*! SWFObject v2.2
is released under the MIT License
*/
// 0) {
for (var i = 0; i < rl; i++) { // for each registered object element
var id = regObjArr[i].id;
var cb = regObjArr[i].callbackFn;
var cbObj = {success:false, id:id};
if (ua.pv[0] > 0) {
var obj = getElementById(id);
if (obj) {
if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match!
setVisibility(id, true);
if (cb) {
cbObj.success = true;
cbObj.ref = getObjectById(id);
cb(cbObj);
}
}
else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported
var att = {};
att.data = regObjArr[i].expressInstall;
att.width = obj.getAttribute("width") || "0";
att.height = obj.getAttribute("height") || "0";
if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); }
if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); }
// parse HTML object param element's name-value pairs
var par = {};
var p = obj.getElementsByTagName("param");
var pl = p.length;
for (var j = 0; j < pl; j++) {
if (p[j].getAttribute("name").toLowerCase() != "movie") {
par[p[j].getAttribute("name")] = p[j].getAttribute("value");
}
}
showExpressInstall(att, par, id, cb);
}
else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF
displayAltContent(obj);
if (cb) { cb(cbObj); }
}
}
}
else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content)
setVisibility(id, true);
if (cb) {
var o = getObjectById(id); // test whether there is an HTML object element or not
if (o && typeof o.SetVariable != UNDEF) {
cbObj.success = true;
cbObj.ref = o;
}
cb(cbObj);
}
}
}
}
}
function getObjectById(objectIdStr) {
var r = null;
var o = getElementById(objectIdStr);
if (o && o.nodeName == "OBJECT") {
if (typeof o.SetVariable != UNDEF) {
r = o;
}
else {
var n = o.getElementsByTagName(OBJECT)[0];
if (n) {
r = n;
}
}
}
return r;
}
/* Requirements for Adobe Express Install
- only one instance can be active at a time
- fp 6.0.65 or higher
- Win/Mac OS only
- no Webkit engines older than version 312
*/
function canExpressInstall() {
return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312);
}
/* Show the Adobe Express Install dialog
- Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75
*/
function showExpressInstall(att, par, replaceElemIdStr, callbackFn) {
isExpressInstallActive = true;
storedCallbackFn = callbackFn || null;
storedCallbackObj = {success:false, id:replaceElemIdStr};
var obj = getElementById(replaceElemIdStr);
if (obj) {
if (obj.nodeName == "OBJECT") { // static publishing
storedAltContent = abstractAltContent(obj);
storedAltContentId = null;
}
else { // dynamic publishing
storedAltContent = obj;
storedAltContentId = replaceElemIdStr;
}
att.id = EXPRESS_INSTALL_ID;
if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; }
if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; }
doc.title = doc.title.slice(0, 47) + " - Flash Player Installation";
var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn",
fv = "MMredirectURL=" + win.location.toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title;
if (typeof par.flashvars != UNDEF) {
par.flashvars += "&" + fv;
}
else {
par.flashvars = fv;
}
// IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
if (ua.ie && ua.win && obj.readyState != 4) {
var newObj = createElement("div");
replaceElemIdStr += "SWFObjectNew";
newObj.setAttribute("id", replaceElemIdStr);
obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf
obj.style.display = "none";
(function(){
if (obj.readyState == 4) {
obj.parentNode.removeChild(obj);
}
else {
setTimeout(arguments.callee, 10);
}
})();
}
createSWF(att, par, replaceElemIdStr);
}
}
/* Functions to abstract and display alternative content
*/
function displayAltContent(obj) {
if (ua.ie && ua.win && obj.readyState != 4) {
// IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it,
// because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work
var el = createElement("div");
obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content
el.parentNode.replaceChild(abstractAltContent(obj), el);
obj.style.display = "none";
(function(){
if (obj.readyState == 4) {
obj.parentNode.removeChild(obj);
}
else {
setTimeout(arguments.callee, 10);
}
})();
}
else {
obj.parentNode.replaceChild(abstractAltContent(obj), obj);
}
}
function abstractAltContent(obj) {
var ac = createElement("div");
if (ua.win && ua.ie) {
ac.innerHTML = obj.innerHTML;
}
else {
var nestedObj = obj.getElementsByTagName(OBJECT)[0];
if (nestedObj) {
var c = nestedObj.childNodes;
if (c) {
var cl = c.length;
for (var i = 0; i < cl; i++) {
if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) {
ac.appendChild(c[i].cloneNode(true));
}
}
}
}
}
return ac;
}
/* Cross-browser dynamic SWF creation
*/
function createSWF(attObj, parObj, id) {
var r, el = getElementById(id);
if (ua.wk && ua.wk < 312) { return r; }
if (el) {
if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content
attObj.id = id;
}
if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML
var att = "";
for (var i in attObj) {
if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries
if (i.toLowerCase() == "data") {
parObj.movie = attObj[i];
}
else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
att += ' class="' + attObj[i] + '"';
}
else if (i.toLowerCase() != "classid") {
att += ' ' + i + '="' + attObj[i] + '"';
}
}
}
var par = "";
for (var j in parObj) {
if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries
par += '';
}
}
el.outerHTML = '';
objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only)
r = getElementById(attObj.id);
}
else { // well-behaving browsers
var o = createElement(OBJECT);
o.setAttribute("type", FLASH_MIME_TYPE);
for (var m in attObj) {
if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries
if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword
o.setAttribute("class", attObj[m]);
}
else if (m.toLowerCase() != "classid") { // filter out IE specific attribute
o.setAttribute(m, attObj[m]);
}
}
}
for (var n in parObj) {
if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element
createObjParam(o, n, parObj[n]);
}
}
el.parentNode.replaceChild(o, el);
r = o;
}
}
return r;
}
function createObjParam(el, pName, pValue) {
var p = createElement("param");
p.setAttribute("name", pName);
p.setAttribute("value", pValue);
el.appendChild(p);
}
/* Cross-browser SWF removal
- Especially needed to safely and completely remove a SWF in Internet Explorer
*/
function removeSWF(id) {
var obj = getElementById(id);
if (obj && obj.nodeName == "OBJECT") {
if (ua.ie && ua.win) {
obj.style.display = "none";
(function(){
if (obj.readyState == 4) {
removeObjectInIE(id);
}
else {
setTimeout(arguments.callee, 10);
}
})();
}
else {
obj.parentNode.removeChild(obj);
}
}
}
function removeObjectInIE(id) {
var obj = getElementById(id);
if (obj) {
for (var i in obj) {
if (typeof obj[i] == "function") {
obj[i] = null;
}
}
obj.parentNode.removeChild(obj);
}
}
/* Functions to optimize JavaScript compression
*/
function getElementById(id) {
var el = null;
try {
el = doc.getElementById(id);
}
catch (e) {}
return el;
}
function createElement(el) {
return doc.createElement(el);
}
/* Updated attachEvent function for Internet Explorer
- Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks
*/
function addListener(target, eventType, fn) {
target.attachEvent(eventType, fn);
listenersArr[listenersArr.length] = [target, eventType, fn];
}
/* Flash Player and SWF content version matching
*/
function hasPlayerVersion(rv) {
var pv = ua.pv, v = rv.split(".");
v[0] = parseInt(v[0], 10);
v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0"
v[2] = parseInt(v[2], 10) || 0;
return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false;
}
/* Cross-browser dynamic CSS creation
- Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php
*/
function createCSS(sel, decl, media, newStyle) {
if (ua.ie && ua.mac) { return; }
var h = doc.getElementsByTagName("head")[0];
if (!h) { return; } // to also support badly authored HTML pages that lack a head element
var m = (media && typeof media == "string") ? media : "screen";
if (newStyle) {
dynamicStylesheet = null;
dynamicStylesheetMedia = null;
}
if (!dynamicStylesheet || dynamicStylesheetMedia != m) {
// create dynamic stylesheet + get a global reference to it
var s = createElement("style");
s.setAttribute("type", "text/css");
s.setAttribute("media", m);
dynamicStylesheet = h.appendChild(s);
if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) {
dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1];
}
dynamicStylesheetMedia = m;
}
// add style rule
if (ua.ie && ua.win) {
if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) {
dynamicStylesheet.addRule(sel, decl);
}
}
else {
if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) {
dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}"));
}
}
}
function setVisibility(id, isVisible) {
if (!autoHideShow) { return; }
var v = isVisible ? "visible" : "hidden";
if (isDomLoaded && getElementById(id)) {
getElementById(id).style.visibility = v;
}
else {
createCSS("#" + id, "visibility:" + v);
}
}
/***************** INCLUDE EQ CODE *****************/
// 1 && match[1] != '') {
output += match[1];
x += match[1].length;
} else {
if (clearString[x] == ' ')
output += '+';
else {
var charCode = clearString.charCodeAt(x);
var hexVal = charCode.toString(16);
output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
}
x++;
}
}
return output;
}
function apvMediaBarObj( apvVars ) {
var movieUrlEncoded = apvURLEncode( apvVars.initialMovieName );
var accountName = apvGetAccountName('', apvVars.accountName);
var campaignName = apvGetCampaignName('', apvVars.campaignName);
var barUsePrompt = apvGetBarVar('', apvVars.barUsePrompt);
var barPrompt = apvGetBarVar('', apvVars.barPrompt);
var barExpandable = apvGetBarVar('', apvVars.barExpandable);
var barExpandDirection = apvGetBarVar('', apvVars.barExpandDirection);
var barExpandedHeight = apvGetBarVar('', apvVars.barExpandedHeight);
var highlightColor = apvGetBarVar('', apvVars.barHighlightColor);
var fromAddress = apvGetBarVar('', apvVars.fromAddress);
var embedGenId = apvGetBarVar('0', apvVars.embedGenId);
var barWidth = apvGetBarVarWithDefault('', apvVars.barWidth, '450');
var barHeight = apvGetBarVarWithDefault('', apvVars.barHeight, '50');
var vspread = apvVars.vspread;
var pageUrl = apvVars.pageUrl;
if ( !vspread )
{
vspread = "false";
}
if ( !pageUrl )
{
pageUrl = window.location.href;
}
var baseUrl = "http://" + apvVars.barHost;
if ( apvVars.barPort != "80" ) {
baseUrl += (":" + apvVars.barPort);
}
baseUrl += "/bar/flexapp/";
// Taking care of intermin oldSchool crap:
var divToReplace = apvVars.barFlashObjectId;
var flashVars = {};
flashVars.playerMode = 'embedded';
flashVars.APVWebHost = apvVars.barHost;
flashVars.APVWebContextRoot = '/bar';
flashVars.APVWebPort = apvVars.barPort;
flashVars.accountName = accountName;
flashVars.campaignName = campaignName;
flashVars.barObjectId = apvVars.barFlashObjectId;
flashVars.enclosingDivId = divToReplace;
flashVars.movieUrl = movieUrlEncoded;
flashVars.pageUrl = pageUrl;
flashVars.clientIp = '38.107.191.86';
flashVars.viral = vspread;
flashVars.embedGenId = embedGenId;
if ( barWidth != null && barWidth != '' ) {
flashVars.barWidth = barWidth;
}
if ( barHeight != null && barHeight != '' ) {
flashVars.barHeight = barHeight;
}
if ( barUsePrompt != null && barUsePrompt != '' ) {
flashVars.usePrompt = barUsePrompt;
}
if ( barPrompt != null && barPrompt != '' ) {
flashVars.prompt = barPrompt;
}
if ( barExpandDirection != null && barExpandDirection != '' ) {
flashVars.expandDirection = barExpandDirection;
}
if ( barExpandedHeight != null && barExpandedHeight != '' ) {
flashVars.expandedHeight = barExpandedHeight;
}
if ( barExpandable != null && barExpandable != '' ) {
flashVars.expandable = barExpandable;
}
if ( highlightColor != null && highlightColor != '' ) {
flashVars.highlightColor = highlightColor;
}
if ( fromAddress != null && fromAddress != '' ) {
flashVars.fromAddress = fromAddress;
}
var params = {};
params.width = barWidth;
params.height = barHeight;
params.title = 'APV MediaBar';
params.quality = 'best';
params.loop = 'false';
params.allowfullscreen = 'false';
params.allowscriptaccess = 'always';
params.base = baseUrl;
params.scale = 'noScale';
params.salign = 'TL';
params.wmode = 'opaque';
var attributes = {};
attributes.id = apvVars.barFlashObjectId;
attributes.name = "APV MediaBar";
var requestingDevice = "flashEnabled";
if ( requestingDevice != "flashEnabled" ) {
displayNonFlashHTML(flashVars, requestingDevice, apvURLEncode( flashVars.movieUrl ));
} else {
eqApvCode.embedSWF(baseUrl + 'DeliveryBar-1.0.swf', divToReplace, barWidth, "50", "9.0.0", false, flashVars, params, attributes);
}
this.movieUrlEncoded = movieUrlEncoded;
this.flashVars = flashVars;
this.barWidth = barWidth;
this.params = params;
this.attributes = attributes;
this.requestingDevice = requestingDevice;
this.expandHeight = ;
if(eqApvCode.mediaBars == undefined) {
eqApvCode.mediaBars = {};
}
eqApvCode.mediaBars[divToReplace] = this;
}
function apvSetVideoUrl( flashObjectId, movieURL ) {
var theBar = eqApvCode.getObjectById(flashObjectId);
if ( theBar ) {
theBar.setMovieUrl( movieURL );
}
var mediaBar = eqApvCode.mediaBars[flashObjectId];
// Only call this if not flash enabled.
if ( mediaBar.requestingDevice != "flashEnabled" ) {
displayNonFlashHTML( mediaBar.flashVars, mediaBar.requestingDevice, apvURLEncode( movieURL ) );
}
}
function apvAlert(theMsg)
{
alert(theMsg);
}
//
//FlexXI Interface
//This interface is stuff that gets called from in Flex
//using the ExternalInterface object
//
//Utility routine that finds the absolute position coordinates
//of a given node
function findPos(obj)
{
var curleft = curtop = 0;
if (obj.offsetParent)
{
do
{
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);
}
return [curleft,curtop];
}
//Set an arbitrary elements display to any allowed css value
//Most useful with "block" || "none"
function apvSetElementDisplay(id, display) {
var el = document.getElementById(id);
if(el)
el.style.display = display;
}
//Make the bar float above the page
//Put a spacer into the layout at it's old position
function apvFloatBar(flashObjectId)
{
var spacer = document.getElementById(flashObjectId + "-spacer");
if(spacer == null)
{
var flobj = document.getElementById(flashObjectId);
var spacer = document.createElement("div");
spacer.id = flashObjectId + "-spacer";
var x = findPos(flobj)[0];
var y = findPos(flobj)[1];
spacer.style.left = x + "px";
spacer.style.top = y + "px";
spacer.style.width = flobj.width + "px";
spacer.style.height = flobj.height + "px";
flobj.parentNode.insertBefore(spacer, flobj);
flobj.style.position = "absolute";
flobj.style.left = spacer.style.left;
flobj.style.top = spacer.style.top;
flobj.style.zindex = 1000;
flobj.style.visibility = "visible";
}
return spacer;
}
function apvAddEvent(obj, evType, fn)
{
if (obj.addEventListener)
{
obj.addEventListener(evType, fn, false);
return true;
}
else if (obj.attachEvent)
{
var r = obj.attachEvent("on"+evType, fn);
return r;
}
else
{
return false;
}
}
function apvMDBExpand(objId, barHeight, expandDirection)
{
var spacer = apvFloatBar(objId);
var el = document.getElementById(objId);
if(el)
{
if(expandDirection == "up")
{
var oldTop = el.style.top.substring(0, (el.style.top.length - 2));
var spacerHeight = spacer.style.height.substring(0, (spacer.style.height.length - 2));
el.style.verticalalign = "bottom";
el.style.height = barHeight + "px";
el.style.top = oldTop - (barHeight - spacerHeight) + "px";
}
else
el.style.height = barHeight + "px";
}
}
function apvMDBContract( objId )
{
setEnclosingDivViewState(objId, 'restore');
}
function setEnclosingDivViewState(objId, state) {
var el = document.getElementById(objId);
var mediaBar = eqApvCode.mediaBars[objId];
if(el)
{
if (state == "minimize")
{
el.style.height = "0px";
el.firstChild.title = "Ad-Per-View temporarily unavailable";
}
else if (state == "restore")
{
var expDir = mediaBar.flashVars.expandDirection;
el.style.height = mediaBar.params.height + "px";
if ( expDir == 'up' ) {
el.style.top = parseInt(el.style.top) + parseInt(mediaBar.expandHeight) - parseInt(mediaBar.params.height) + "px";
}
el.firstChild.title = "";
}
else if (state == "maximize")
{
el.style.height = mediaBar.params.expandHeight + "px";
el.firstChild.title = "";
}
}
}
function apvPreparePage()
{
var u = navigator.userAgent.toLowerCase();
webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false;
if(webkit)
{
apvFloatAllBars();
}
else
{
eqApvCode.apvAddEvent(window, 'load', eqApvCode.apvFloatAllBars);
}
}
function apvFloatAllBars()
{
var requestingDevice = "flashEnabled";
if ( eqApvCode.mediaBars && requestingDevice == 'flashEnabled')
{
for ( var aBar in eqApvCode.mediaBars )
{
var barObj = eqApvCode.mediaBars[aBar];
if ( barObj.flashVars.expandable && barObj.flashVars.expandable == "true" )
{
apvFloatBar(aBar);
}
}
}
}
function apvGetAccountName(serverVar, jsVar) {
var accountName;
if ( jsVar && jsVar != '') {
accountName = jsVar;
}
else if ( serverVar && serverVar != '' ) {
accountName = serverVar;
} else {
accountName = "JoesPizza";
}
return accountName;
}
function apvGetCampaignName(serverVar, jsVar) {
var campaignName;
if ( jsVar && jsVar != '') {
campaignName = jsVar;
}
else if ( serverVar && serverVar != '' ) {
campaignName = serverVar;
} else {
campaignName = "APVDemo";
}
return campaignName;
}
function apvGetBarVar(serverVar, jsVar) {
var barVar;
if ( typeof jsVar == 'boolean' ) {
if ( jsVar ) {
barVar = 'true';
} else {
barVar = 'false';
}
} else if ( typeof jsVar == 'number' ) {
barVar == "" + jsVar;
} else if ( jsVar && typeof jsVar == 'string' && jsVar != '') {
barVar = jsVar;
} else if ( typeof serverVar == 'boolean' ) {
if ( serverVar ) {
barVar = 'true';
} else {
barVar = 'false';
}
} else if ( typeof serverVar == 'number' ) {
barVar = "" + serverVar;
} else if ( serverVar && typeof serverVar == 'string' && serverVar != '') {
barVar = serverVar;
} else {
barVar = '';
}
return barVar;
}
function apvGetBarVarWithDefault(serverVar, jsVar, aDefault) {
var barVar = apvGetBarVar(serverVar, jsVar);
if ( jsVar == '' ) {
barVar = aDefault;
}
return barVar;
}
function getmetaTag(mn) {
var m = document.getElementsByTagName('meta');
for(var i in m) {
if(m[i].name == mn ) {
return m[i];
}
}
return null;
}
function displayNonFlashHTML( flashVars, deviceType, movieUrl ) {
var portStr;
if ( flashVars.APVWebPort == '80' ) {
portStr = '';
} else {
portStr = ':' + flashVars.APVWebPort;
}
var pageUrl = apvURLEncode( flashVars.pageUrl );
var theDiv = document.getElementById(flashVars.enclosingDivId);
var link = 'http://' + flashVars.APVWebHost + portStr + '/dr.html' +
'?an=' + flashVars.accountName +
'&cn=' + flashVars.campaignName +
'&device=' + deviceType +
'&pageUrl=' + pageUrl +
'&cip=' + flashVars.clientIp +
'&murl=' + movieUrl +
'&mode=pf';
if ( deviceType == "iPhone" ) {
var viewportMetaTag = getmetaTag("viewport");
// We don't want to stomp on other's viewport tags, so if there is already one there,
// leave it.
if ( viewportMetaTag == null )
{
// Otherwise, make a new one for the iPhone.
var viewportMetaTag = document.createElement('meta');
viewportMetaTag.name = "viewport";
viewportMetaTag.content = "width=320;height=420;user-scalable=no;initial-scale=1.0;";
document.getElementsByTagName('head')[0].appendChild(viewportMetaTag);
}
}
theDiv.innerHTML = "
";
theDiv.style.visibility = "visible";
theDiv.style.width = theDiv.parentNode.style.width;
theDiv.style.paddingTop = "10px";
theDiv.style.fontSize = "30px";
}
//]]>
/***************** INCLUDE EQ CODE *****************/
/* Filter to avoid XSS attacks
*/
function urlEncodeIfNecessary(s) {
var regex = /[\\\"<>\.;]/;
var hasBadChars = regex.exec(s) != null;
return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s;
}
/* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only)
*/
var cleanup = function() {
if (ua.ie && ua.win) {
window.attachEvent("onunload", function() {
// remove listeners to avoid memory leaks
var ll = listenersArr.length;
for (var i = 0; i < ll; i++) {
listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
}
// cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect
var il = objIdArr.length;
for (var j = 0; j < il; j++) {
removeSWF(objIdArr[j]);
}
// cleanup library's main closures to avoid memory leaks
for (var k in ua) {
ua[k] = null;
}
ua = null;
for (var l in eqApvCode) {
eqApvCode[l] = null;
}
eqApvCode = null;
});
}
}();
return {
/***************** INCLUDE EQ CODE *****************/
apvMediaBarObj: function( apvVars ) {
return apvMediaBarObj( apvVars );
},
apvSetMovieUrl: function( flashObjectId, movieURL ) {
apvSetVideoUrl( flashObjectId, movieURL );
},
apvSetVideoUrl: function( flashObjectId, movieURL ) {
apvSetVideoUrl( flashObjectId, movieURL );
},
apvAlert: function(theMsg) {
alert(theMsg);
},
apvAddEvent: function(obj, evType, fn) {
apvAddEvent(obj, evType, fn);
},
apvMDBExpand: function(objId, barHeight, expandDirection) {
apvMDBExpand(objId, barHeight, expandDirection);
},
apvMDBContract: function(objId) {
apvMDBContract(objId);
},
apvFloatAllBars: function() {
apvFloatAllBars();
},
apvPreparePage: function() {
apvPreparePage();
},
apvSetElementDisplay: function(id, display) {
apvSetElementDisplay(id, display);
},
/***************** INCLUDE EQ CODE *****************/
/* Public API
- Reference: http://code.google.com/p/swfobject/wiki/documentation
*/
registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) {
if (ua.w3 && objectIdStr && swfVersionStr) {
var regObj = {};
regObj.id = objectIdStr;
regObj.swfVersion = swfVersionStr;
regObj.expressInstall = xiSwfUrlStr;
regObj.callbackFn = callbackFn;
regObjArr[regObjArr.length] = regObj;
setVisibility(objectIdStr, false);
}
else if (callbackFn) {
callbackFn({success:false, id:objectIdStr});
}
},
getObjectById: function(objectIdStr) {
if (ua.w3) {
return getObjectById(objectIdStr);
}
},
embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) {
var callbackObj = {success:false, id:replaceElemIdStr};
if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) {
setVisibility(replaceElemIdStr, false);
addDomLoadEvent(function() {
widthStr += ""; // auto-convert to string
heightStr += "";
var att = {};
if (attObj && typeof attObj === OBJECT) {
for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs
att[i] = attObj[i];
}
}
att.data = swfUrlStr;
att.width = widthStr;
att.height = heightStr;
var par = {};
if (parObj && typeof parObj === OBJECT) {
for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs
par[j] = parObj[j];
}
}
if (flashvarsObj && typeof flashvarsObj === OBJECT) {
for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs
if (typeof par.flashvars != UNDEF) {
par.flashvars += "&" + k + "=" + flashvarsObj[k];
}
else {
par.flashvars = k + "=" + flashvarsObj[k];
}
}
}
if (hasPlayerVersion(swfVersionStr)) { // create SWF
var obj = createSWF(att, par, replaceElemIdStr);
if (att.id == replaceElemIdStr) {
setVisibility(replaceElemIdStr, true);
}
callbackObj.success = true;
callbackObj.ref = obj;
}
else if (xiSwfUrlStr && canExpressInstall()) { // show Adobe Express Install
att.data = xiSwfUrlStr;
showExpressInstall(att, par, replaceElemIdStr, callbackFn);
return;
}
else { // show alternative content
setVisibility(replaceElemIdStr, true);
}
if (callbackFn) { callbackFn(callbackObj); }
});
}
else if (callbackFn) { callbackFn(callbackObj); }
},
switchOffAutoHideShow: function() {
autoHideShow = false;
},
ua: ua,
getFlashPlayerVersion: function() {
return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
},
hasFlashPlayerVersion: hasPlayerVersion,
createSWF: function(attObj, parObj, replaceElemIdStr) {
if (ua.w3) {
return createSWF(attObj, parObj, replaceElemIdStr);
}
else {
return undefined;
}
},
showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) {
if (ua.w3 && canExpressInstall()) {
showExpressInstall(att, par, replaceElemIdStr, callbackFn);
}
},
removeSWF: function(objElemIdStr) {
if (ua.w3) {
removeSWF(objElemIdStr);
}
},
createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {
if (ua.w3) {
createCSS(selStr, declStr, mediaStr, newStyleBoolean);
}
},
addDomLoadEvent: addDomLoadEvent,
addLoadEvent: addLoadEvent,
getQueryParamValue: function(param) {
var q = doc.location.search || doc.location.hash;
if (q) {
if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark
if (param == null) {
return urlEncodeIfNecessary(q);
}
var pairs = q.split("&");
for (var i = 0; i < pairs.length; i++) {
if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {
return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1)));
}
}
}
return "";
},
// For internal usage only
expressInstallCallback: function() {
if (isExpressInstallActive) {
var obj = getElementById(EXPRESS_INSTALL_ID);
if (obj && storedAltContent) {
obj.parentNode.replaceChild(storedAltContent, obj);
if (storedAltContentId) {
setVisibility(storedAltContentId, true);
if (ua.ie && ua.win) { storedAltContent.style.display = "block"; }
}
if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); }
}
isExpressInstallActive = false;
}
}
};
}();
//]]>
// For backward compatibility some of these needed to be included.
function setApvMovieUrl( flashObjectId, movieURL ) {
eqApvCode.apvSetVideoUrl(flashObjectId, movieURL);
}
function apvAlert( param ) {
alert(param);
}
function setApvElementDisplay(id, display) {
eqApvCode.apvSetElementDisplay(id, display);
}
function apvMDBExpand(objId, barHeight, expandDirection) {
eqApvCode.apvMDBExpand(objId, barHeight, expandDirection);
}
function apvMDBContract(objId) {
eqApvCode.apvMDBContract( objId );
}