Replaced doubled variable ads with queue
[openx] / jquery.openx.js
index 5495538..3f3669f 100644 (file)
@@ -30,7 +30,6 @@
   count = 0,
   slots = {},
   queue = [],
-  ads = [],
   output = [];
 
 
    *                        (only needed, when it is not the default-value 443).
    *
    *
+   * Seldom needed special Server-Settings (these parameters are only needed,
+   * if the default delivery-configration of the OpenX-Server was changed):
+   *
+   * path:          string  Path to delivery-scripts. DEFAULT: "/www/delivery".
+   * fl:            string  Flash-Include-Script. DEFAULT: "fl.js".
+   *
+   *
    * Delivery-Options (for details and explanations see the see:
    * http://www.openx.com/docs/2.8/userguide/single%20page%20call):
    *
    * charset:       string  Charset used, when delivering the banner-codes.
    *                        If empty, the charset is guessed by OpenX. Examples
    *                        for sensible values: "UTF-8", "ISO-8859-1".
+   *
+   *
+   * Other settings:
+   *
+   * selector:      string  A selector for selecting the DOM-elements, that
+   *                        should display ad-banners. DEFAULT: ".oa".
+   *                        See: http://api.jquery.com/category/selectors/
    */
   $.openx = function( options ) {
 
     settings = $.extend(
       {
         'protocol': document.location.protocol,
+        'delivery': '/www/delivery',
+        'fl': 'fl.js',
+        'selector': '.oa',
         'cache': true
       },
       options
     $.ajaxSetup({ 'cache': true });
 
 
-    src = domain + '/www/delivery/spc.php';
+    src = domain + settings.delivery + '/spc.php';
 
     /**
      * jQuery.openx only works with "named zones", because it does not know,
      */
     src += '?zones=';
     for(name in OA_zones) {
-      $('.oa').each(function() {
+      $(settings.selector).each(function() {
         var
         node = $(this),
         id;
     if (settings.blockcampaign === 1)
       src += '&blockcampaign=1';
     if (settings.target)
-      src += '&target' + settings.target;
+      src += '&target=' + settings.target;
     if (settings.withtext === 1)
       src += '&withtext=1';
     if (settings.charset)
 
   function load_flash() {
 
-    $.getScript(domain + '/www/delivery/fl.js', init_ads);
+    $.getScript(domain + settings.delivery + '/' + settings.fl, init_ads);
 
   }
 
   function init_ads() {
 
-    var i, id;
+    var i, id, ads = [];
     for (i=0; i<queue.length; i++) {
       id = queue[i];
       if (typeof(OA_output[id]) != 'undefined' && OA_output[id] != '')
         ads.push(id);
     }
+    queue = ads;
 
     document.write = document_write;
     document.writeln = document_write;
 
   function render_ads() {
 
-    while (ads.length > 0) {
+    while (queue.length > 0) {
 
       var result, src, inline;
 
-      id = ads.shift();
+      id = queue.shift();
       node = slots[id];
 
       node.slideDown();
             /** script-tag with src-URL! */
             if (OA_output[id].length > 0)
               /** The banner-code was not rendered completely yet! */
-              ads.unshift(id);
+              queue.unshift(id);
             /** Load the script and halt all work until the script is loaded and executed... */
             $.getScript(result[1], render_ads); // << jQuery.getScript() generates onload-Handler for _all_ browsers ;)
             return;
     for (var i=0; i<arguments.length; i++)
       output.push(arguments[i]);
 
-    if (id != ads[0])
+    if (id != queue[0])
       /**
        * Re-Add the last banner-code to the working-queue, because included
        * scripts had added markup via document.write(), which is not
        * Otherwise the added markup would be falsely rendered together with
        * the markup from the following banner-code.
        */
-      ads.unshift(id);
+      queue.unshift(id);
 
   }