/*

*/

if (typeof(HTTP) == "undefined") { HTTP = {}; }

HTTP.Push = {};
HTTP.Push.VERSION = '0.04';

/*

*/

HTTP.Push = function(args) {
  if (args == undefined) { throw "Push must be passed an argument hash!"; }
  if (args.uri == undefined) { throw "Must specify push URI!"; }
  if (args.onPush == undefined) { throw "Must specify onPush handler!"; }
  if (args.interval == undefined) { args.interval = 100; }


  var body = document.getElementsByTagName("body")[0];
  var iframe = document.createElement("iframe");
  iframe.style.border = "0px";
  iframe.style.height = "0px";
  iframe.style.width = "0px";
  iframe.src = args.uri;

  var interval = undefined;

/*

*/

  this.start = function() {
    body.appendChild(iframe);
    interval = setInterval(function() { flushIframe(); }, args.interval);
  }


// TODO: make the stop function work in IE
//   this.stop = function() {
//     body.removeChild(iframe);
//     clearInterval(interval);
//   }


  function flushIframe() {
    var doc;
    if (iframe.contentDocument) {          // For NS6
      doc = iframe.contentDocument;
    } else if (iframe.contentWindow) {     // For IE5.5 and IE6
      doc = iframe.contentWindow.document;
    } else if (iframe.document) {          // For IE5
      doc = iframe.document;
    } else {
      return;
    }
  
    var body = doc.body;
  
    while (body && body.hasChildNodes()) {
      var node = body.firstChild;
      try {
         args.onPush(node);
      }
      catch (e) { };
      body.removeChild(node);
    }
  }

  return this;
}

/*

*/