if (typeof(quad_events) === 'undefined')
  quad_events = {};

quad_events.getQuadPlacements = function(syso, full) {
  syso('parsing new placements started.');
  var t = (new Date()).getTime();
  var ret = {forms: []};
  var processNode = function(node, attr) {
    if (node[attr].indexOf('QAPS_LT') < 0)
      return;
    try {
      if (node.used) {
        syso('skipping used node: ' + node[attr]);
        return;
      }
      syso('found an ad form: ' + node[attr]);
      var str = node[attr].split('QAPS_LT')[1].split('--')[1].split('-');
      if (ret.prid != undefined && (ret.prid != str[0] || ret.caid != str[1]))
        syso('diffrent channels - prid: ' + ret.prid + ',' + str[0]
          + ' caid: ' + ret.caid + ',' + str[1]);
      ret.prid = str[0];
      ret.caid = str[1];
      ret.forms.push([node, str[2]]);
    } catch(e) {
      syso('error parsing ad form: ' + node[attr]);
    }
  }
  var scripts = document.getElementsByTagName('script');
  for (var i=0; i<scripts.length; i++)
    processNode(scripts[i], 'src');
  if (full) {
    var forms = ret.forms;
    ret.forms = [];
    for (var i=0; i<forms.length; i++) {
      var form = forms[i];
      if (form[0].used1) {
        syso('skipping used node #' + i);
        continue;
      }
      var nn = document.createElement('div');
      form[0].used1 = true;
      form[0].parentNode.insertBefore(nn, form[0]);
      form[0] = nn;
      ret.forms.push(form);
    }
  }
  t = (new Date()).getTime() - t;
  syso('parsing new placements completed: ' + ret.forms.length + ' forms, ' + t + ' ms.');
  return ret;
}

quad_events.onformsparsed = function() {
  return quad_events.getQuadPlacements(syso, true).forms;
}

quad_events.initNextPlacement = function() {
  try {adp_forms.ok} catch(e) {
    var qp = quad_events.getQuadPlacements(function() {});
    var adp_d = document.createElement('script');
    adp_d.src = 'http://show.textads.lt/quad/spliter/?prid='+qp.prid
      +'&caid='+qp.caid+'&nc='+(new Date()).getTime();
    adp_d.charset = 'UTF-8';
    adp_d.defer = false;
    adp_forms = [];
    document.getElementsByTagName('head')[0].appendChild(adp_d);
  }
}

quad_events.initNextPlacement();
