
var lookup_progress;
var lookup_tlds;
var lookup_abort;
var result_name;
var result_count;
var result_active;
var result_tbody;

function do_lookup() {   
   var j=0;
   result_name = $('name').value;
   lookup_tlds=new Array();

   var tlds = document.forms["lookup"].elements["tld[]"];
   if(result_name.indexOf(".")==-1) {
      for(var i=0; i<tlds.length; i++) {
         if(tlds[i].checked==true) {
            lookup_tlds[j] = tlds[i].value;
            j++;
         }
      }
   } else {
      $('name').value = result_name.substr(0, result_name.indexOf("."));
      lookup_tlds[0]=result_name.substr((result_name.indexOf(".")+1));
      var tld_available=false;
      for(var i=0; i<tlds.length; i++) {
         if(tlds[i].value==lookup_tlds[0]) {
            tlds[i].checked=true;
            tld_available=true;
         } else {
            tlds[i].checked=false;
         }
      }
      if(tld_available==false) {
         result_count=0;
         progress();
         $('result_div').innerHTML="";
         $('text_progress').innerHTML="";
         alert("Die TLD \""+result_name.substr((result_name.indexOf(".")+1))+"\" ist nicht verfuegbar!");
         if($('div_tlds') && $('div_tlds').style.display=="none") {
            Effect.toggle('div_tlds', 'appear');
         }
         if($('div_subtlds') && $('div_subtlds').style.display=="none") {
            Effect.toggle('div_subtlds', 'appear');
         }
         return;
      }
      j++;
   }

   if(lookup_progress===true) {
      return;
   } else {
      lookup_progress=true;
   }
   
   if(j>0) {
      if($('div_tlds') && $('div_tlds').style.display!="none") {
         Effect.toggle('div_tlds', 'appear');
      }
      if($('div_subtlds') && $('div_subtlds').style.display!="none") {
         Effect.toggle('div_subtlds', 'appear');
      }
      $('result_div').innerHTML="";
      result_name = $('name').value;
      lookup_abort=false;
      result_count=0;
      result_active = new Array();
      $('whois_loading').style.display="";
      $('whois_button').style.display="none";
      make_table();
      request_lookup(0);
   } else {
      $('result_div').innerHTML="";
      $('text_progress').innerHTML="";
      result_count=0;
      progress();
      alert("Keine TLDs gewaehlt!");
   }
}

function do_abort() {
   lookup_abort=true;
   lookup_progress=false;
   $('whois_loading').style.display="none";
   $('whois_button').style.display="";
}

function request_lookup(i) {
   progress();
   add_row(result_name+"."+lookup_tlds[i]);
   new Ajax.Request("/index.php?do=lookup", {
         method: 'post',
         parameters: 'domain='+encodeURIComponent(result_name)+"."+lookup_tlds[i],
         asynchronous: true,
         onComplete:function(r) {
            var json = r.responseText.evalJSON();

            var img = "";
            var title = "";
            var color = "";
            switch(json.result) {
               case 0: img="_link"; title="Domain vergeben!"; color="red"; break;
               case 1: img=""; title="Domain frei!"; color="green"; break;
               case 2: img="_error"; title="Abfrage nicht möglich"; color="black"; break;
               default: img="_delete"; title="Serverfehler! "+json.whois_server; color="black"; break;
            }
            result_active['img'].src = "img/server"+img+".png";
            result_active['img'].title = title;
            result_active['domain'].style.fontWeight="bold";
            result_active['domain'].style.color=color;

            if(json.result===0) {
               result_active['actions'].innerHTML="[<a href='http://"+encodeURIComponent(result_name)+"."+lookup_tlds[i]+"' target='_blank'>website</a>]";
               result_active['actions'].innerHTML+="&nbsp;&nbsp;[<a href='?do=whois&amp;domain="+encodeURIComponent(result_name)+"."+lookup_tlds[i]+"' target='_blank'>whois</a>]";
            }

            i++;
            result_count++;
            if(lookup_tlds[i] && lookup_abort==false) {
               window.setTimeout("request_lookup("+i+")", 1500);
            }
            progress();
         },
         onFailure:function(r) {
            alert("Lookup fehlgeschlagen!");
         }
      }
   );
}

function make_table() {
   result_tbody = document.createElement("tbody");
   var table = document.createElement("table");
      table.className="result_table";
      table.appendChild(result_tbody);
      table.cellPadding="0";
      table.cellSpacing="0";
   $('result_div').appendChild(table);
}

function add_row(str) {
   var domain = document.createElement("td");
      domain.innerHTML = str;
   var img = document.createElement("img");
      img.src = "img/server_connect.png";
      img.style.border="0px none";
      img.title="In Arbeit...";
   var status = document.createElement("td");
      status.style.width="30px";
      status.style.textAlign="center";
      status.appendChild(img)
   var actions = document.createElement("td");
      actions.style.textAlign="right";
      actions.style.width="150px";
   var tr = document.createElement("tr");
      tr.appendChild(domain);
      tr.appendChild(status);
      tr.appendChild(actions);
      tr.onmouseover = function() { tr.className="hover"; };
      tr.onmouseout = function() { tr.className=""; };

   result_active['domain'] = domain;
   result_active['img'] = img;
   result_active['actions'] = actions;
   result_tbody.appendChild(tr);
}

function ckeckbox_toggle(what, dimension) {
   var classname = "tld_"+dimension;
   var tlds = document.forms["lookup"].elements["tld[]"];
   for(var i=0; i<tlds.length; i++) {
      if(tlds[i].className==classname) {
         tlds[i].checked=what;
      }
   }
}

function progress() {
   var proc = Math.round((100/lookup_tlds.length*result_count));
   document.title = "("+proc+"%) "+result_name+" - "+site_title;
   $('progress').style.width = proc+"%";
   if(proc<=100) {
      $('progress').style.backgroundColor="green";
   }
   if(proc<80) {
      $('progress').style.backgroundColor="orange";
   }
   if(proc<50) {
      $('progress').style.backgroundColor="red";
   }
   if(lookup_abort==false || proc==100) {
      $('text_progress').innerHTML = "("+proc+"%) "+result_count+" von "+lookup_tlds.length+" abgeschlossen!";
   } else {
      $('text_progress').innerHTML = "("+proc+"%) "+result_count+" von "+lookup_tlds.length+" abgeschlossen! <span style='color:red; font-weight:bold;'>Abgebrochen!</span>";
   }

   if(proc==100) {
      $('whois_loading').style.display="none";
      $('whois_button').style.display="";
      lookup_progress=false;
   }
}


