(function( openx, $, undefined ) {
- var body = document.getElementsByTagName('body')[0];
+ var
- var id;
- var node;
+ id,
+ node,
- var count = 0;
- var slots = {};
- var ads = [];
+ count = 0,
+ slots = {},
+ ads = [];
openx.show_ads = function(server, zones) {
+ var
+ domain = document.location.protocol == 'https:' ? 'https://' + server + ':8443':'http://' + server,
+ src = domain;
+
document.write = render;
document.writeln = render;
- var domain = document.location.protocol == 'https:' ? 'https://' + server + ':8443':'http://' + server;
-
- var spc = document.createElement('script');
-
- spc.type = 'text/javascript';
- spc.async = false;
- spc.defer = false;
-
- spc.src = domain;
- spc.src += "/www/delivery/spc.php?zones=";
+ src += "/www/delivery/spc.php?zones=";
/** Only fetch banners, that are really included in this page */
$('.oa').each(function() {
- var node = $(this);
- for(var name in zones) {
+ var
+ node = $(this),
+ name, id;
+ for(name in zones) {
if (node.hasClass(name)) {
- var id = 'oa_' + ++count;
+ id = 'oa_' + ++count;
slots[id] = node;
- spc.src += escape(id + '=' + zones[name] + "|");
+ src += escape(id + '=' + zones[name] + "|");
}
}
});
- spc.src += "&nz=1&source=" + escape(OA_source);
- spc.src += "&r=" + Math.floor(Math.random()*99999999);
- spc.src += "&block=1&charset=UTF-8";
-
- if (window.location) spc.src += "&loc=" + escape(window.location);
- if (document.referrer) spc.src += "&referer=" + escape(document.referrer);
-
- spc.onload = init_ads;
-
- body.appendChild(spc);
+ src += "&nz=1&source=" + escape(OA_source);
+ src += "&r=" + Math.floor(Math.random()*99999999);
+ src += "&block=1&charset=UTF-8";
+ if (window.location) src += "&loc=" + escape(window.location);
+ if (document.referrer) src += "&referer=" + escape(document.referrer);
- var fl = document.createElement('script');
+ $.getScript(src, init_ads);
- fl.type = 'text/javascript';
- fl.async = false;
- fl.defer = false;
-
- fl.src = domain + '/www/delivery/fl.js';
-
- body.appendChild(fl);
+ src = domain + '/www/delivery/fl.js';
+ $.getScript(src);
}
// node.append(id + ": " + node.attr('class'));
- var result;
- var script;
- var src;
- var inline;
+ var result, src, inline;
while ((result = /<script/i.exec(OA_output[id])) != null) {
node.append(OA_output[id].slice(0,result.index));
result = /src\s*=\s*['"]([^'"]*)['"]/i.exec(src);
if (result == null) {
/** script-tag with inline-code: execute inline-code! */
- eval(inline);
+ result = /^\s*<.*$/m.exec(inline);
+ if (result != null) {
+ /** Remove leading HTML-comments, because IE will stumble otherwise */
+ inline = inline.slice(result[0].length,inline.length);
+ }
+ $.globalEval(inline);
}
else {
/** script-tag with src-URL! */
- script = document.createElement('script');
- script.type = 'text/javascript';
- script.async = false;
- script.defer = false;
- script.src = result[1];
- script.onload = render_ad;
- /** The banner might not be rendered fully, or include more calls to document.write(). */
- ads.push(id);
+ ads.push(id); // << The banner might not be rendered fully, or include more calls to document.write().
/** Load the script and halt all work until the script is loaded and executed... */
- body.appendChild(script); // << The onload-event is only fired when appendChild is used!
+ $.getScript(result[1], render_ad); // << jQuery.getScript() generates onload-Handler for _all_ browsers ;)
return;
}
}
if (id == undefined)
return;
- var str = "";
- for (var i=0; i < arguments.length; i++)
+ var
+ str = "",
+ i;
+
+ for (i=0; i < arguments.length; i++)
str += arguments[i];
OA_output[id] = str + OA_output[id];
}
} ( window.openx = window.openx || {}, jQuery ));
+
+var OA_output = {}; // << Needed, because IE will complain loudly otherwise!