/*<![CDATA[ */
function refreshHostname()
{

 var deny = true;
 var num = new Array();

 /* zero */
 for (i = 0; i < 32; ++i)
  num[i] = 0;

 /* get policy */
 for (i = 0; i < document.rform.policy.length; ++i)
  if (document.rform.policy[i].checked && document.rform.policy[i].value == "ALLOW")
   deny = false;

 /* get mask for all countries */
 for (i = 0; i < document.rform.AF.length; ++i)
  if (deny ? document.rform.AF[i].checked : !document.rform.AF[i].checked) 
   num[parseInt(document.rform.AF[i].id / 8)] |= (1 << + document.rform.AF[i].id % 8);
                                                                                     
 for (i = 0; i < document.rform.AS.length; ++i)                                      
  if (deny ? document.rform.AS[i].checked : !document.rform.AS[i].checked)                                                  
   num[parseInt(document.rform.AS[i].id / 8)] |= (1 << + document.rform.AS[i].id % 8);
                                                                                     
 for (i = 0; i < document.rform.EU.length; ++i)                                      
  if (deny ? document.rform.EU[i].checked : !document.rform.EU[i].checked)                                                  
   num[parseInt(document.rform.EU[i].id / 8)] |= (1 << + document.rform.EU[i].id % 8);
                                                                                     
 for (i = 0; i < document.rform.NA.length; ++i)                                      
  if (deny ? document.rform.NA[i].checked : !document.rform.NA[i].checked)                                                  
   num[parseInt(document.rform.NA[i].id / 8)] |= (1 << + document.rform.NA[i].id % 8);
                                                                                     
 for (i = 0; i < document.rform.SA.length; ++i)                                      
  if (deny ? document.rform.SA[i].checked : !document.rform.SA[i].checked) 
   num[parseInt(document.rform.SA[i].id / 8)] |= (1 << + document.rform.SA[i].id % 8);
                                                                                     
 for (i = 0; i < document.rform.PA.length; ++i)                                      
  if (deny ? document.rform.PA[i].checked : !document.rform.PA[i].checked)                                                  
   num[parseInt(document.rform.PA[i].id / 8)] |= (1 << + document.rform.PA[i].id % 8);
                                                                                     
 for (i = 0; i < document.rform.OT.length; ++i)                                      
  if (deny ? document.rform.OT[i].checked : !document.rform.OT[i].checked)                                                  
   num[parseInt(document.rform.OT[i].id / 8)] |= (1 << + document.rform.OT[i].id % 8);

 var h16= document.getElementById("h16");

 h16.firstChild.nodeValue="";

 /* build 64-bytes of base-16 */
 for (i = 0, x = 0; i < 32; i++, ++x) {
  if (parseInt(num[i]) < 16)
   h16.firstChild.nodeValue += "0";
  h16.firstChild.nodeValue += parseInt(num[i]).toString(16);
  if (x == 7) {
   h16.firstChild.nodeValue += ".";
   x = -1;
  }
 }

 /* deal with IP address */
 if (document.rform.monitoring.checked) {
  var ip = new Array(); 

  ip[3] = parseInt(document.rform.ip32.value);
  ip[2] = parseInt(document.rform.ip24.value);
  ip[1] = parseInt(document.rform.ip16.value);
  ip[0] = parseInt(document.rform.ip8.value);

  for (i = 0; i < 4; ++i) {
   if (parseInt(ip[i]) < 0 || parseInt(ip[i]) > 255 || isNaN(parseInt(ip[i]))) {
    ip[i] = 255;
    switch (i) {
     case 0:
     document.rform.ip32.value = "255";
      break;
     case 1:
     document.rform.ip24.value = "255";
      break;
     case 2:
      document.rform.ip16.value = "255";
      break;
     case 3:
      document.rform.ip8.value = "255";
      break;
    }
   }

   if (parseInt(ip[i]) < 16) 
    h16.firstChild.nodeValue += "0";
    h16.firstChild.nodeValue += ip[i].toString(16);
  }  

  h16.firstChild.nodeValue +=  ".";
 }

 /* get rid of leading zeros (horror)*/
 var tmp;
 tmp = h16.firstChild.nodeValue;
 h16.firstChild.nodeValue = tmp.replace(/^0{1,15}/gi, "");
 tmp = h16.firstChild.nodeValue;
 h16.firstChild.nodeValue = tmp.replace(/\.0{1,15}/gi, ".");

 /* append suffix */
 h16.firstChild.nodeValue += "geobl.spamanalysis.org";

 var ca=document.getElementsByName("hn");

 for (i = 0; i < ca.length; ++i)
   ca[i].firstChild.nodeValue = h16.firstChild.nodeValue;


}

function checkAll(srcbutton,field)
{
 for (i = 0; i < field.length; ++i)
  field[i].checked = true;

 srcbutton.value="uncheck all";
 srcbutton.onclick=function() {uncheckAll(srcbutton,field)};
 refreshHostname();
}

function uncheckAll(srcbutton,field)
{
 for (i = 0; i < field.length; ++i)
  field[i].checked = false;

 srcbutton.value="check all";
 srcbutton.onclick=function() {checkAll(srcbutton,field)};
 refreshHostname();
}

function enableMonitoring()
{
 document.rform.e.disabled = false; 
 document.rform.p.disabled = false; 
 document.rform.register.disabled = false; 
 document.rform.ip32.disabled = false; 
 document.rform.ip24.disabled = false; 
 document.rform.ip16.disabled = false; 
 document.rform.ip8.disabled = false; 
 document.rform.monitoring.onchange = function() {disableMonitoring()};

 refreshHostname();
}

function disableMonitoring()
{
 document.rform.e.disabled = true; 
 document.rform.p.disabled = true; 
 document.rform.register.disabled = true; 
 document.rform.ip32.disabled = true; 
 document.rform.ip32.value = ""; 
 document.rform.ip24.disabled = true; 
 document.rform.ip24.value = ""; 
 document.rform.ip16.disabled = true; 
 document.rform.ip16.value = ""; 
 document.rform.ip8.disabled = true; 
 document.rform.ip8.value = ""; 
 document.rform.monitoring.onchange = function() {enableMonitoring()};

 refreshHostname();
}

function refreshed()
{
 refreshHostname();

 if (!document.rform.monitoring.checked)
  disableMonitoring();
 else
  enableMonitoring();

}
/* ]]> */

