var stradBaseURL = "http://richads.startribune.com/"; /** * @author Kelly Anderson */ var stradData = null; var stradQueue = []; var stradIsReady = false; var adHolder = new Object; var stradBeconQueue = new Array; stjQuery(document).ready(function(){ stradIsReady = true; }); function placeAd(adID){ stradData = null; var script_filename = stradBaseURL + 'd/getAdInfo.php?aid=' + adID; document.write(""); } function beconPop(){ if(stradBeconQueue.length > 0){ stjQuery("#vtimg").load(beconPop); stjQuery("#vtimg").attr("src", stradBeconQueue.shift()); } } function executeAdQueue(){ stjQuery.each(stradQueue, function(qIndex, qItem){ placeAd(qItem); }); } function drawAD(data){ fullDeliveryString = "
"; stjQuery.each(data.items, function(i,item){ if(!document.getElementById("vtimg" + data.stradID)){ strBecon = ""; document.write(strBecon); } curElement = stjQuery("
"); deliveryString = ""; deliveryString += "
"; switch(item.content.type){ case "swf": deliveryString += ""; break; case "img": deliveryString += ""; break; } insturmentationScript = ""; adHolder[item.container.id] = new Object; adHolder[item.container.id].ad_id = data.stradID; adHolder[item.container.id].placementInfo = item; if(item.container.position.relative == "document"){ insturmentationScript += "stjQuery(\"body\").prepend(stjQuery(\""+ item.container.id +"\").replaceWith(\"\"));"; } insturmentationScript += "\n"; stjQuery.each(item.events, function(ei, event){ if(event.handler == 'immediate'){ insturmentationScript += "executeAction(stjQuery(\"#" + item.container.id + "\"), eval(" + stjQuery.toJSON(event) + "));\n"; }else{ insturmentationScript += "stjQuery(\"" + item.container.id + "\").bind(\"" + event.handler + "\", " + stjQuery.toJSON(event) + ", handleEvent ); \n" } }); stjQuery.each(data.events, function(ei, event){ if(event.handler == 'immediate'){ insturmentationScript += "executeAction(stjQuery(\"#" + event.target + "\"), eval(" + stjQuery.toJSON(event) + "));\n"; }else{ insturmentationScript += "stjQuery(\"#stradID" + data.stradID + "\").bind(\"" + event.handler + "\", " + stjQuery.toJSON(event) + ", handleEvent);\n"; } }); deliveryString += "
"; deliveryString = "" + deliveryString + ""; fullDeliveryString += deliveryString; }); fullDeliveryString += "
"; if(!document.getElementById("vtimg" + data.stradID)){ document.write(strBecon); } document.write(fullDeliveryString); document.write(""); } function handleEvent(e){ element = stjQuery("#" + e.data.target); executeAction(element, e.data); } function trackEvent(ad_id, item, event){ var strTrackParams = ""; if(strTrackParams.length < 1){ strTrackParams += "?"; }else{ strTrackParams += "&"; } if(event.action == "show"){ strTrackParams += "do=i"; }else{ //strTrackParams += "do=c"; return; } strTrackParams += "&ad_id=" + ad_id; if(event.targetCID){ strTrackParams += "&creative_id=" + event.targetCID; }else{ strTrackParams += "&creative_id=" + item.id; } if(item.actions[event.action].trackingEventID != null){ strTrackParams += "&event_id=" + item.actions[event.action].trackingEventID; } stjQuery("#vtimg"+ad_id).attr("src", stradBaseURL + "adTrack/track.php" + strTrackParams); } function executeAction(element, event){ if(!element.attr("id")){ return; } var elementData = adHolder[element.attr("id")].placementInfo; var curAction = elementData.actions[event.action]; element.css(curAction.preCSS).animate({ 'background-color': element.css('background-color') }, curAction.delay).animate(curAction.cssParameters, curAction.duration, "linear", function(){ element.css(curAction.postCSS) } ); if(curAction.flashAction == "restart"){ document.getElementById(elementData.content.id).StopPlay(); document.getElementById(elementData.content.id).Rewind(); document.getElementById(elementData.content.id).Play(); } trackEvent(adHolder[element.attr("id")].ad_id, elementData, event); } /** * flashembed 1.0.0. Adobe Flash embedding script * * Copyright (c) 2009 Tero Piirainen * http://flowplayer.org/tools/flash-embed.html * * Dual licensed under MIT and GPL 2+ licenses * http://www.opensource.org/licenses * * Launch : March 2008 * Version : 1.0.0 - Tue Feb 03 2009 10:48:14 GMT-0000 (GMT+00:00) */ (function() { /* http://code.google.com/p/swfobject/source/browse/tags/swfobject_2_1/src/swfobject.js */ //{{{ utility functions var jQ = typeof stjQuery == 'function'; // from "Pro JavaScript techniques" by John Resig function isDomReady() { if (domReady.done) { return false; } var d = document; if (d && d.getElementsByTagName && d.getElementById && d.body) { clearInterval(domReady.timer); domReady.timer = null; for (var i = 0; i < domReady.ready.length; i++) { domReady.ready[i].call(); } domReady.ready = null; domReady.done = true; } } // if stjQuery is present, use it's more effective domReady method var domReady = jQ ? stjQuery : function(f) { if (domReady.done) { return f(); } if (domReady.timer) { domReady.ready.push(f); } else { domReady.ready = [f]; domReady.timer = setInterval(isDomReady, 13); } }; // override extend opts function function extend(to, from) { if (from) { for (key in from) { if (from.hasOwnProperty(key)) { to[key] = from[key]; } } } return to; } // JSON.asString() function function asString(obj) { switch (typeOf(obj)){ case 'string': obj = obj.replace(new RegExp('(["\\\\])', 'g'), '\\$1'); // flash does not handle %- characters well. transforms "50%" to "50pct" (a dirty hack, I admit) obj = obj.replace(/^\s?(\d+)%/, "$1pct"); return '"' +obj+ '"'; case 'array': return '['+ map(obj, function(el) { return asString(el); }).join(',') +']'; case 'function': return '"function()"'; case 'object': var str = [];