function isIP(ipaddress) {

  var octet;
  var x;

  octet = ipaddress.split(".");
  x = new Boolean(true);

  if (octet.length != 4) {
    return(false);
    exit;
  }

  for (i=0; i < 4; i++) {
    if (octet[i] >= 0 && octet[i] <= 255) {
      x = x & true;
    } else {
      x = x & false;
    }
  }
  
  return x;
   
}



function isCIDR(cidr) {

  if (isNaN(cidr)) {
    return(false);
    exit;
  }
  
  if (cidr >= 0 && cidr <= 32) {
    return(true);
  } else {
    return(false);
  }
   
}



function isSubnet(subnetmask) {

  octet = subnetmask.split(".");

  for (i=0; i < 4; i++) {
    if ((Math.log(256 - octet[i]) / Math.log(2)) % 1 != 0) {
      return(false);
      exit;
    }
  }
  
  return(true);
   
}



function cidr2subnet(cidr) {

  octet = new Array(4);
  zw = cidr;
  
  for (i = 3; i >= 0; i--) {
    if ((zw / 8) > 1) {
      octet[i] = 255;
      zw = zw - 8;
    } else {
      if (zw == 0) {
        octet[i] = 0;
      } else {
        octet[i] = 256 - Math.pow(2, (8 - (zw % 8)) % 8);
        zw = 0;
      }
    }
  }

  return octet[3] + "." + octet[2] + "." + octet[1] + "." + octet[0];

}



function subnet2cidr(subnetmask) {

  octet = subnetmask.split(".");
  x = 0;

  for (i = 0; i < 4; i++) {
    zw = octet[i];
    for (j = 7; j >= 0; j--) {
      if (Math.floor(zw / Math.pow(2, j)) == 1) {
        x++;
        zw = zw % Math.pow(2, j);
      } else {
        return x;
        exit;
      }
    }
  }

  return x;

}



function dec2oct(dec) {

  var basis;
  var octet;
  
  basis = 256;
  
  if (dec < 0 || dec >= Math.pow(basis,4)) {
    return "Keine gültige Dezimalzahl";
    exit;
  }

  octet = new Array(4);
  for (i=0; i<4; i++) {
    octet[i] = dec % basis;
    dec = Math.floor(dec / basis);
  }
  
  return octet[3] + "." + octet[2] + "." + octet[1] + "." + octet[0];

}



function oct2dec(ipaddress) {

  var basis;
  var octet;
  var x;
  
  basis = 256;
  octet = ipaddress.split(".");
  x = 0;
    
  if (octet.length == 4) {
    for (i=0; i<4; i++) {
      if (octet[i] > 255) {
        return "keine gültige IP";
        exit;
      } else {
        x += octet[3 - i] * Math.pow(basis,i);
      }
    }
  
  } else {
    return "keine IP-Adresse";
  }

  return x;

}



function BitwiseAND(ipaddress1, ipaddress2) {

  var octet1;
  var octet2;
  var octet3;
  var x;
  
  octet1 = ipaddress1.split(".");
  octet2 = ipaddress2.split(".");
  octet3 = new Array(4);

  for (i = 0; i < 4; i++) {
    octet3[i] = octet1[i] & octet2[i];
  }

  x = octet3[0] + "." + octet3[1] + "." + octet3[2] + "." + octet3[3];
  return x;

}



function ClientTime() {

  var zeit = new Date();
  var Std = zeit.getHours();
  var Min = zeit.getMinutes();
  var StdAusgabe  = ((Std < 10) ? "0" + Std : Std);
  var MinAusgabe  = ((Min < 10) ? "0" + Min : Min);
 
  return(StdAusgabe + ":" + MinAusgabe);

}

