(function(){


function quoted(str) {
  return (str != null) ? '"' + str + '"' : '""';
}

function textads_encodeURIComponent(str) {
  if (typeof(encodeURIComponent) == 'function') {
    return encodeURIComponent(str);
  } else {
    return escape(str);
  }
}

function textads_write_tracker(d, ad_url, tracker_event) {
  var qloc = ad_url.indexOf('?');
  var img_src = 'http://show.textads.lv/images/0.gif?event=';
  img_src += tracker_event;
  if (qloc != -1 && qloc + 1 < ad_url.length) {
    img_src += '&' + ad_url.substring(qloc + 1);
  }
  //alert(''+img_src);
  var img_tag = '<img height="1" width="1" border="0" ' +
                'src=' + quoted(img_src) +
                ' />';
  d.write(img_tag);
}

function textads_append_url(param, value) {
  if (value) {
    window.textads_ad_url += '&' + param + '=' + value;
    //alert(window.textads_ad_url);
  }
}

function textads_append_url_esc(param, value) {
  if (value) {
    textads_append_url(param, textads_encodeURIComponent(value));
  }
}

function textads_append_color(param, value, random) {
  if (value && typeof(value) == 'object') {
    value = value[random % value.length];
  }
  textads_append_url('color_' + param, value);
}

function textads_get_user_data(w, date) {
  var screen = w.screen;
  var javaEnabled = navigator.javaEnabled();
  var tz = -date.getTimezoneOffset();

  if (screen) {
    textads_append_url("u_h", screen.height);
    textads_append_url("u_w", screen.width);
    textads_append_url("u_ah", screen.availHeight);
    textads_append_url("u_aw", screen.availWidth);
    textads_append_url("u_cd", screen.colorDepth);
  }

  textads_append_url("u_tz", tz);
  textads_append_url("u_his", history.length);
  textads_append_url("u_java", javaEnabled);

  if (navigator.plugins) {
    textads_append_url("u_nplug", navigator.plugins.length);
  }
  if (navigator.mimeTypes) {
    textads_append_url("u_nmime", navigator.mimeTypes.length);
  }
}

function textads_modify_client(client) {
  client = client.toLowerCase();
  /*if (client.substring(0, 3) != 'ca-') {
     client = 'ca-' + client;
  }*/
  return client;
}

function textads_write_iframe(w, d, ad_url) {
  ad_url = ad_url.substring(0, 1000);
  ad_url = ad_url.replace(/%\w?$/, '');

  if (w.textads_ad_output == 'js' &&
      (w.textads_ad_request_done || w.textads_radlink_request_done)) {
    d.write('<script language="JavaScript1.1"' +
            ' src=' + quoted(ad_url) + '></' + 'script>');
  } else if (w.textads_ad_output == 'html') {
    if (w.name == 'textads_ads_frame') {
      textads_write_tracker(d, ad_url, 'reboundredirect');
    } else {
      d.write('<iframe' +
              ' name="textads_ads_frame"' +
              ' width=' + quoted(w.textads_ad_width) +
              ' height=' + quoted(w.textads_ad_height) +
              ' frameborder=' + quoted(w.textads_ad_frameborder) +
              ' src=' + quoted(ad_url) +
              ' marginwidth="0"' +
              ' marginheight="0"' +
              ' vspace="0"' +
              ' hspace="0"' +
              ' allowtransparency="true"' +
              ' scrolling="no">');
      textads_write_tracker(d, ad_url, 'noiframe');
      d.write('</iframe>');
    }
  }
}

function textads_show_ad() {
  var nullvalue = null;
  var w = window;
  var d = document;
  var date = new Date();
  var random = date.getTime();
  var num_slots_by_client = w.textads_num_slots_by_client;
  var num_slots_by_channel = w.textads_num_slots_by_channel;
  var prev_ad_formats = w.textads_prev_ad_formats_by_region;
  var format = w.textads_ad_format;

  w.onerror = w.textads_org_error_handler;

  if (w.textads_ad_region == nullvalue && w.textads_ad_section != nullvalue) {
    w.textads_ad_region = w.textads_ad_section;
  }

  var region = (w.textads_ad_region == nullvalue) ? '' : w.textads_ad_region;

  var is_zero_ad_format = false;
  if (format) {
    is_zero_ad_format = ((format).indexOf('_0ads')) > 0;
  }

  if (is_zero_ad_format) {
    if (w.textads_num_0ad_slots) {
      w.textads_num_0ad_slots = w.textads_num_0ad_slots + 1;
    } else {
      w.textads_num_0ad_slots = 1;
    }

    if (w.textads_num_0ad_slots > 1) {
      return;
    }
  } else {
    if (w.textads_num_ad_slots) {
      w.textads_num_ad_slots = w.textads_num_ad_slots + 1;
    } else {
      w.textads_num_ad_slots = 1;
    }

    if (w.textads_num_slots_to_rotate) {
      prev_ad_formats[region] = nullvalue;
      if (w.textads_num_slot_to_show == nullvalue) {
        w.textads_num_slot_to_show = random % w.textads_num_slots_to_rotate + 1;
      }
      if (w.textads_num_slot_to_show != w.textads_num_ad_slots) {
        return;
      }
    } else if (w.textads_num_ad_slots > 3 && region == '') {
      return;
    }
  }

  w.textads_ad_url = 'http://show.textads.lv/ads.php?';
  w.textads_ad_url += 'client=' + 
                     escape(textads_modify_client(w.textads_ad_client));
                     
  textads_append_url('category', w.textads_ad_category);
  textads_append_url('width', w.textads_ad_width);
  textads_append_url('height', w.textads_ad_height);
  textads_append_url('color_id', w.textads_ad_color_id);
  textads_append_url('no_calc', w.no_calc);
  
  textads_append_url('dt', date.getTime());
  textads_append_url('hl', w.textads_language);
  if (w.textads_country) {
    textads_append_url('gl', w.textads_country);
  } else {
    textads_append_url('gl', w.textads_gl);
  }
  textads_append_url('gr', w.textads_region);
  textads_append_url_esc('gcs', w.textads_city);
  textads_append_url_esc('hints', w.textads_hints);
  textads_append_url('adsafe', w.textads_safe);
  textads_append_url('oe', w.textads_encoding);
  textads_append_url('lmt', w.textads_last_modified_time);
  textads_append_url_esc('alternate_ad_url', 
                                 w.textads_alternate_ad_url);
  textads_append_url('alt_color', w.textads_alternate_color);
  textads_append_url("skip", w.textads_skip);

  var client = w.textads_ad_client;
  if (!num_slots_by_client[client]) {
    num_slots_by_client[client] = 1;
    num_slots_by_client.length += 1;
  } else {
    num_slots_by_client[client] += 1;
  }

  if (prev_ad_formats[region]) {
    textads_append_url_esc('prev_fmts',
                          prev_ad_formats[region].toLowerCase());
    if (num_slots_by_client.length > 1) {
      textads_append_url('slot', num_slots_by_client[client]);
    }
  }

  if (format) {
    textads_append_url_esc('format', format.toLowerCase());
    if (prev_ad_formats[region]) {
      prev_ad_formats[region] = prev_ad_formats[region] + ',' + format;
    } else {
      prev_ad_formats[region] = format;
    }
  }

  textads_append_url('num_ads', w.textads_max_num_ads);
  textads_append_url('output', w.textads_ad_output);
  textads_append_url('adtest', w.textads_adtest);

  if (w.textads_ad_channel) {
    var chnl = w.textads_ad_channel.toLowerCase();
    textads_append_url_esc('channel', chnl);
    var pv_ch = '';
    var arr = chnl.split('+');
    for (var i = 0; i < arr.length; i++) {
      var ch = arr[i];
      if (!num_slots_by_channel[ch]) {
        num_slots_by_channel[ch] = 1;
      } else {
        pv_ch += ch + '+';
      }
    }
    textads_append_url_esc('pv_ch', pv_ch);
  }

  textads_append_url_esc('url', w.textads_page_url);
  textads_append_color('bg', w.textads_color_bg, random);
  textads_append_color('text', w.textads_color_text, random);
  textads_append_color('link', w.textads_color_link, random);
  textads_append_color('url', w.textads_color_url, random);
  textads_append_color('border', w.textads_color_border, random);
  textads_append_color('line', w.textads_color_line, random);
  textads_append_url('kw_type', w.textads_kw_type);
  textads_append_url_esc('kw', w.textads_kw);
  textads_append_url_esc('contents', w.textads_contents);
  textads_append_url('num_radlinks', w.textads_num_radlinks);
  textads_append_url('max_radlink_len', w.textads_max_radlink_len);
  textads_append_url('rl_filtering', w.textads_rl_filtering);
  textads_append_url('rl_mode', w.textads_rl_mode);
  textads_append_url('rt', w.textads_rt);
  textads_append_url('ad_type', w.textads_ad_type);
  textads_append_url('image_size', w.textads_image_size);
  textads_append_url('region', w.textads_ad_region);
  textads_append_url('feedback_link', w.textads_feedback);
  textads_append_url_esc('ref', w.textads_referrer_url);
  textads_append_url_esc('loc', w.textads_page_location);
  textads_append_url('bid', w.textads_bid);

  if (textads_onpage(w, d) && d.body) {
    var scr_h = d.body.scrollHeight;
    var clt_h = d.body.clientHeight;
    if (clt_h && scr_h) {
      textads_append_url_esc('cc', Math.round(clt_h * 100 / scr_h));
    }
  }

  textads_get_user_data(w, date);
  //alert(''+w.textads_ad_url);
  textads_write_iframe(w, d, w.textads_ad_url);

  w.textads_ad_frameborder = nullvalue;
  w.textads_ad_format = nullvalue;
  w.textads_page_url = nullvalue;
  w.textads_language = nullvalue;
  w.textads_gl = nullvalue;
  w.textads_country = nullvalue;
  w.textads_region = nullvalue;
  w.textads_city = nullvalue;
  w.textads_hints = nullvalue;
  w.textads_safe = nullvalue;
  w.textads_encoding = nullvalue;
  w.textads_ad_output = nullvalue;
  w.textads_max_num_ads = nullvalue;
  w.textads_ad_channel = nullvalue;
  w.textads_contents = nullvalue;
  w.textads_alternate_ad_url = nullvalue;
  w.textads_alternate_color = nullvalue;
  w.textads_color_bg = nullvalue;
  w.textads_color_text = nullvalue;
  w.textads_color_link = nullvalue;
  w.textads_color_url = nullvalue;
  w.textads_color_border = nullvalue;
  w.textads_color_line = nullvalue;
  w.textads_adtest = nullvalue;
  w.textads_kw_type = nullvalue;
  w.textads_kw = nullvalue;
  w.textads_num_radlinks = nullvalue;
  w.textads_max_radlink_len = nullvalue;
  w.textads_rl_filtering = nullvalue;
  w.textads_rl_mode = nullvalue;
  w.textads_rt = nullvalue;
  w.textads_ad_type = nullvalue;
  w.textads_image_size = nullvalue;
  w.textads_feedback = nullvalue;
  w.textads_skip = nullvalue;
  w.textads_page_location = nullvalue;
  w.textads_referrer_url = nullvalue;
  w.textads_ad_region = nullvalue;
  w.textads_ad_section = nullvalue;
  w.textads_bid = nullvalue;
}

function textads_error_handler(message, url, line) {
  textads_show_ad();
  return true;
}

function textads_onpage(w, d) {
  return w.top.location == d.location;
}

function textads_in_adframe(w, d) {
  var documentElement = d.documentElement;

  if (textads_onpage(w, d)) return false;

  if (w.textads_ad_width && w.textads_ad_height) {
    var wd = 1;
    var ht = 1;
    if (w.innerHeight) {
      wd = w.innerWidth;
      ht = w.innerHeight;
    } else if (documentElement && documentElement.clientHeight) {
      wd = documentElement.clientWidth;
      ht = documentElement.clientHeight;
    } else if (d.body) {
      wd = d.body.clientWidth;
      ht = d.body.clientHeight;
    }

    if (ht > 2 * w.textads_ad_height || wd > 2 * w.textads_ad_width) {
      return false;
    }
  }

  return true;
}

function textads_init_globals() {
  var w = window;
  var d = document;
  var location = d.location;
  var referrer = d.referrer;
  var nullvalue = null;

  w.textads_org_error_handler = w.onerror;
  w.onerror = textads_error_handler;

  if (w.textads_ad_frameborder == nullvalue) {
    w.textads_ad_frameborder = 0;
  }

  if (w.textads_ad_output == nullvalue) {
    w.textads_ad_output = 'html';
  }

  if (w.textads_ad_format == nullvalue && w.textads_ad_output == 'html') {
    w.textads_ad_format = w.textads_ad_width + 'x' + w.textads_ad_height;
  }

  if (w.textads_page_url == nullvalue) {
    w.textads_page_url = referrer;
    if (!textads_in_adframe(w, d)) {
      w.textads_page_url = location;
      w.textads_last_modified_time = Date.parse(d.lastModified) / 1000;
      w.textads_referrer_url = referrer;
    }
  } else {
    w.textads_page_location = referrer;
    if (!textads_in_adframe(w, d)) {
      w.textads_page_location = location;
    }
  }

  if (w.textads_num_slots_by_channel == nullvalue) {
    w.textads_num_slots_by_channel = new Array();
  }

  if (w.textads_num_slots_by_client == nullvalue) {
    w.textads_num_slots_by_client = new Array();
  }

  if (w.textads_prev_ad_formats_by_region == nullvalue) {
    w.textads_prev_ad_formats_by_region = new Array();
  }
} 

textads_init_globals();
textads_show_ad();
})()
