var __wdm_test_objects=new Array();

function WDM (site,code) {
  this.site=site;
  this.code=code;
  this.version='1';
  this.timeoutMsec=100000; // 100 sec
  this.no_check_interval=86400000; // 1 day
  this.timeout=false;
  this.domainSuffix='.wdm.sg.ripe.net';
  // r=rr's returned,t=transport , 4=ipv6,6=ipv6,d=dual stack
  this.tests = ['r4.t4','r4.t6','rd.td','r6.t6'];
  this.now = new Date();
  this.test_time=this.now.getTime()+(this.now.getTimezoneOffset()*60000);
  this.test_id=Math.floor(Math.random()*Math.pow(2,31));

  // cookie parsing
  this.cookie_last_run=undefined;
  this.cookie_client_id=undefined;

  var a_all_cookies=document.cookie.split(';');
  for(i=0;i<a_all_cookies.length;i++) {
    var a_temp_cookie=a_all_cookies[i].split('=');
    var cookie_name=a_temp_cookie[0].replace(/^\s+|\s+$/g,'');
    if(cookie_name=='wdm_last_run'){ 
      this.cookie_last_run = parseInt(unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g,'')));
    }
    if(cookie_name=='wdm_client_id'){ 
      this.cookie_client_id = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g,''));
    }
  }
  __wdm_test_objects[this.test_id]=this;
}

WDM.prototype.setCookies=function(){
  // set last_run cookie
  var expire=new Date(this.now.getTime()+ this.no_check_interval );
  document.cookie='wdm_last_run='+this.now.getTime()+';expires='+expire.toGMTString()+';path=/';
}

WDM.prototype.getClientID=function(){
  if (this.cookie_client_id === undefined) {
    // generate new clientID
    this.cookie_client_id = Math.floor(Math.random()*Math.pow(2,31));
    var id_expire=new Date(this.now.getTime()+(86400000*365));
    document.cookie='wdm_client_id='+this.cookie_client_id+';expires='+id_expire.toGMTString()+';path=/';
  }
  return this.cookie_client_id; 
}

WDM.prototype.run=function(forced){
  if(!forced && this.cookie_last_run ) { return };
  this.writeHtml();
  var oldonload=window.onload;
  var me=this;
  window.onload=function(){
    if(typeof oldonload=='function') oldonload();
    me.startTest();
  }
  this.setCookies(); // set regardless of fail or not
}

WDM.prototype.writeHtml=function(){
  var test_id = '__wdm_'+this.test_id;
  document.writeln('<div style="visibility: hidden;">');
  for(i=0;i<this.tests.length;i++) {
    document.writeln('<img height="1" width="1" src="" id="'+test_id+'.'+this.tests[i]+'" />');
  }
  document.writeln('</div>');
}

WDM.prototype.startTest=function(){
  var test_id = '__wdm_'+this.test_id;
  var client_id = this.getClientID();
  var prefix = 'u' +this.test_time + '.' + 
               'c' + client_id + '.' + 
               's' + this.test_id + '.' + 
               'v' + this.version;
  var infix = '/1x1.gif?'+prefix;
  // http://c1234.s1234.v1.r4.t4.wdm.ripe.net?1x1.gif?c1234.s1234.v1.r4.t4
  for(i=0;i<this.tests.length;i++) {
    var doc_id = test_id+'.'+this.tests[i];
    document.getElementById(doc_id).src="http://"+prefix+'.'+this.tests[i]+this.domainSuffix + infix + '.u'+this.test_time;
  }
//  .rs.ripe.net/ipv6mon/testimg.php?site="+this.site+"&code="+this.code+"&time="+this.test_time+"&id="+this.test_id;
  this.timeout=window.setTimeout('__wdm_test_objects['+this.test_id+'].cleanUp()',this.timeoutMsec);
}

WDM.prototype.cleanUp=function(){
  if(this.timeout){
    window.clearTimeout(this.timeout);
  }
  for(i=0;i<this.tests.length;i++) {
    document.getElementById('__wdm_'+this.test_id+'.'+this.tests[i]).src="";
  }
}


var wdm_test = new WDM('www.emileaben.com', '8b354e40ccbda3fe05c441efd27c5f97060facf5e8cff98e7ca7ae5ac8f6e685');  
wdm_test.run();
