var separated_ip = new Array();

function sepIp()
{
    separated_ip = ip.split(".");     //puts each word into an array element
    document.getElementById('entry1').value = separated_ip[0];
    document.getElementById('entry2').value = separated_ip[1];
    document.getElementById('entry3').value = separated_ip[2];
    document.getElementById('entry4').value = separated_ip[3]; 
}

// validity check to verify an entry has been made
function isEmpty(inputStr) 
{
	if (inputStr == "" || inputStr == null) 
	{
		return true
	}
	return false
}

// clears field of default value
function clear_field(field) 
{
    //field.value=''
}

// convert decimal to hex
function d2h(decnum)
{
    var j=decnum;
    var hexchars =  "0123456789ABCDEF";
    var hv = "";
    for (var i=0; i< 4; i++)
    {
        k = j & 15;
        hv = hexchars.charAt(k) + hv;
        j = j >> 4;
    }
    hexnum = hv;
	return hexnum; 
}

// convert decimal to octal
function d2o(decnum)
{
   var j = parseInt(decnum, 10);
   octnum = (j.toString(8));
   return octnum;
}

// validity check to verify entry is a positive integer
function isNumber(inputStr) 
{
	for (var i = 0; i < inputStr.length; i++) 
	{
		var oneChar = inputStr.substring(i, i + 1)
		if (oneChar < "0" || oneChar > "9") 
		{
			return false
		}
	}
	return true
}

// validity check to verify entry is within 0 - 255
function inRange(inputStr) 
{
	num = parseInt(inputStr)
	if ((num < 0) || (num > 255)) 
	{
		return false
	}
	return true
}

function isValid(field) 
{
    inputStr = field.value
	if (isEmpty(inputStr)) 
	{
		alert("Please enter a number")
		field.focus();
		return false
	} 
	else 
    {
		if (!isNumber(inputStr)) 
		{
			alert("Please enter numbers only")
			field.focus();
			return false

		} 
		else 
		{
			if (!inRange(inputStr)) 
			{
				alert("Valid range is 0 - 255")
				field.focus();
				return false
			}
		}
	}
	return true
}

function finalCalc() 
{
    var inputStr1 = document.getElementById('entry1').value
    var inputStr2 = document.getElementById('entry2').value
    var inputStr3 = document.getElementById('entry3').value
    var inputStr4 = document.getElementById('entry4').value
    
    var doneVal
    var ok2Cont   = true

    if ( isEmpty(inputStr1) || isEmpty(inputStr2) || isEmpty(inputStr3) || isEmpty(inputStr4) ) 
    {
        ok2Cont = false ;
        alert("All fields need to be filled in")	;
	}

    if (ok2Cont) 
    {
        document.getElementById('octet1').value = toBin(inputStr1);
        document.getElementById('octet2').value = toBin(inputStr2);
        document.getElementById('octet3').value = toBin(inputStr3);
        document.getElementById('octet4').value = toBin(inputStr4);
        document.getElementById('oct1').value = d2o(inputStr1);
        document.getElementById('oct2').value = d2o(inputStr2);
        document.getElementById('oct3').value = d2o(inputStr3);
        document.getElementById('oct4').value = d2o(inputStr4);
        document.getElementById('hex1').value = d2h(inputStr1);
        document.getElementById('hex2').value = d2h(inputStr2);
        document.getElementById('hex3').value = d2h(inputStr3);
        document.getElementById('hex4').value = d2h(inputStr4);

        // Concatenate binary characters
        doneVal = toBin(inputStr1) + toBin(inputStr2) + toBin(inputStr3) + toBin(inputStr4) ;
        document.getElementById('all4').value = doneVal

        // strip any leading zero
        doneVal = stripZeros(doneVal) ;

        // convert binary to decimal
        document.getElementById('result').value = parseInt(doneVal, 2) ;    } 
    else 
    {
        document.getElementById('octet1').value = "";
        document.getElementById('octet2').value = "";
        document.getElementById('octet3').value = "";
        document.getElementById('octet4').value = "";
        document.getElementById('oct1').value = "";
        document.getElementById('oct2').value = "";
        document.getElementById('oct3').value = "";
        document.getElementById('oct4').value = "";
        document.getElementById('hex1').value = "";
        document.getElementById('hex2').value = "";
        document.getElementById('hex3').value = "";
        document.getElementById('hex4').value = "";
        document.getElementById('result').value = "";
    }
}

// Decimal to binary, returns an eight character string
function toBin(inVal) 
{
   base = 2 ;
   num = parseInt(inVal);
   binNum = num.toString(base);

   // pad leading spaces with "0"
   binNum = padTextPrefix(binNum, "0", 8) ;
   return binNum
}

// equiv to padl()
function padTextPrefix (InString, PadChar, DefLength)  
{
    if (InString.length >= DefLength)
        return (InString);

   OutString = InString
   for (Count = InString.length; Count < DefLength; Count++)  
   {
      OutString = PadChar + OutString;
   }

   return (OutString);
}

// JavaScript often sees numbers with leading zeros as octal values, so strip zeros
function stripZeros(inputStr) 
{
	var result = inputStr
	while (result.substring(0,1) == "0") 
	{
		result = result.substring(1,result.length)
	}
	return result
}
