Added posibility to change the source-tag in accordance to the page-width
authorKai Moritz <kai@juplo.de>
Mon, 4 Mar 2013 17:02:37 +0000 (18:02 +0100)
committerKai Moritz <kai@juplo.de>
Mon, 4 Mar 2013 17:20:29 +0000 (18:20 +0100)
jquery.openx.js

index 5029248..6001b75 100644 (file)
    *
    * Other settings:
    *
+   * source:        array   An optional array of JavaScript-Objects, that
+   *                        define prefixes and suffixes, that should be
+   *                        added to source-tag defined in OA_source. Each
+   *                        object can (should) specify the properties "min"
+   *                        and "max". OA_source will only be altered, when
+   *                        min <= page-width <= max is true. If this is the
+   *                        case, the property "prefix" will be prepended to
+   *                        OA_source and the property "suffix" will be
+   *                        appended.
    * selector:      string  A selector for selecting the DOM-elements, that
    *                        should display ad-banners. DEFAULT: ".oa".
    *                        See: http://api.jquery.com/category/selectors/
       });
     }
 
+    /** Cleanup data for responsive source-tag's */
+    for (i=0; i<settings.source.length; i++) {
+      if (!settings.source[i].min) settings.source[i].min = 0;
+      if (!settings.source[i].max) settings.source[i].max = Number.MAX_VALUE;
+      if (!settings.source[i].prefix) settings.source[i].prefix = '';
+      if (!settings.source[i].suffix) settings.source[i].suffix = '';
+    }
+
     /** Add resize-event */
     $(window).resize(function() {
       clearTimeout(resize_timer);
     if (settings.debug && console.debug)
       console.debug('Starting recalculation of visible banners for width ' + pagewidth);
 
-    var name, width, src = domain + settings.delivery + '/spc.php';
+    var
+    name,
+    width,
+    i,
+    source_prefix = '',
+    source_suffix = '',
+    src = domain + settings.delivery + '/spc.php';
 
     /** Order banners for all zones that were found on the page */
     src += '?zones=';
     if (settings.charset)
       src += '&charset=' + settings.charset;
 
+    /** Calculate responsive source-tag's */
+    for (i=0; i<settings.source.length; i++) {
+      if (pagewidth >= settings.source[i].min
+          && pagewidth <= settings.source[i].max
+          ) {
+        source_prefix = settings.source[i].prefix + source_prefix;
+        source_suffix = source_suffix + settings.source[i].suffix;
+      }
+    }
+
     /** Add the source-code - if present */
-    if (typeof OA_source !== 'undefined')
-      src += "&source=" + escape(OA_source);
+    if (typeof OA_source !== 'undefined'
+        || source_prefix != ''
+        || source_suffix != ''
+        ) {
+      if (settings.debug && console.debug)
+        console.debug('OA_source: ' + source_prefix + OA_source + source_suffix);
+      src += "&source=" + escape(source_prefix + OA_source + source_suffix);
+    }
 
     /** Signal, that this task is done / in progress */
     pagewidth = undefined;