<!--  $Id: PortValidator.js,v 1.11 2005/09/01 09:55:35 shakeela Exp $  -->
function validation()
{
	f=document.hostForm;
	inputType = f.inputType.value;
        if(inputType=='startEndIPInputs')
	{
		portrange=f.MPortList.value;
		if(!validate())
		{
			return false;
		}
		if(!ValidPort(inputType,portrange))
		{
                        f.MPortList.focus();
			return false;
		}
                //timeout=f.MIPSec.value;
                //if(!isValidTimeout(timeout))
                //{
                 // return false;
                //}
	}
	if(inputType=='networkIPInputs')
	{
		portrange=f.SPortList.value;

		if(!isValidIP())
		{
			f.IPAddress.focus();
			return false;
		}

		if(!ValidPort(inputType,portrange))
		{
                        f.SPortList.focus();
			return false;
		}
                //timeout=f.SIPSec.value;
               //if(!isValidTimeout(timeout))
	       //{
		//       return false;
	       //}
	}
	return true;
}
function isValidIP()
{
      IPAddress=document.hostForm.IPAddress.value;
      IPAddress=trim(IPAddress);
      if(IPAddress.length == 0 )
	{
		alert("Please enter the IP Address.");
		return false;
	}
	var parts = IPAddress.split(".");

	if(parts[0].length == 0)
	{
		alert("Please enter a valid IP Address.");
        return false;
	}

	if (isNumber(parts[0]))
	{
	        if(!isValidIPAddress(IPAddress))
        	{
                	alert("Please enter a valid IP Address.");
                	return false;
        	}
	}
	else
	{
		if(!isSpecialCharacter(IPAddress))
		{
			alert("Please enter the hostname without special characters.");
			return false;
		}
	}
    return true;
}
function isExists(inputType,portarray,portno)
{
	var contains = false;
	for(var k=0;k<portarray.length;k++)
	{
		if(portarray[k]==portno)
		{

			contains = true;
		}
	}

	if(!contains)
	{
		if(portarray.length == 5 && inputType=='startEndIPInputs')
		{
			alert("Please configure maximum of 5 ports");
			return false;
		}
		else
		      	portarray[portarray.length] = portno;
	}
	return true;
}
function regExpCheck(parts2)
{

	var regexp1=/^[0-9]+$/;
	var regexp2=/^[0-9]{1,4}$|^[0-6][0-5][0-5][0-3][0-5]$/;
	       for(var j=0;j<parts2.length;j++)
	       {
		       if(!regexp1.test(parts2[j]))
		       {
			       alert("Invalid PortRange");
			       return false;
		       }
		       if(!regexp2.test(parts2[j]))
		       {
			       alert("Port number should be between 1 and 65535");
			       return false;
		       }
		       if(parseInt(parts2[j],10)==0)
		       {
		       		alert("Port number should be between 1 and 65535");
		       		return false;
		       }
	       }
     return true;
}

function ValidPort(inputType,portrange)
{

	if(portrange.length==0)
	{
		alert("Please enter a Port Range.");
		return false;
	}
	var parts1=portrange.split(",");
	var portarray=new Array();
	for(var i=0;i<parts1.length;i++)
	{

		var parts2=parts1[i].split("-");

                 if(parts2.length>2)
		 {
                   alert("Invalid Port Range");
                   return false;
		 }
		if(!regExpCheck(parts2))
		{

			return false;
		}
		if(parts2.length==1)
		{
			if(!isExists(inputType,portarray,parts2[0]))
				return false;
		}
		if(parts2.length==2)
		{
			if(parts2[0]>parts2[1])
			{
				alert("Starting Port should be lesser than Ending Port");
				return false;
			}
			if(inputType=='startEndIPInputs')
			{
				for(var j=parts2[0];j<=parts2[1];j++)
				{
					if(!isExists(inputType,portarray,j))
						return false;				
				}
			}
		}
	}    
    return true;
} 
function isValidTimeout(sec)
{
        if(sec.length==0)
	{
          alert("Please Enter the Timeout ");
          return false;
	}
	var regexp1=/^[0-9]$|^[1-5][0-9]$/;
	if(!regexp1.test(sec))
	{
		alert("Seconds Should be 0 to 59");
		return false;  
	}
	
	return true;
}
function setListeningPortData(elementID,v)
{
    var port ='port'+elementID;
    var str = "document.hostForm." + port
    //eval(str).value = v;
  
}

function setPortStatus(elementID,v)
{
	var image = document.getElementById(elementID);
	if(image == null) 
	{
		return;
	}
	if(v == 'Listening')
	{
		image.src = "/images/port_listening.gif";
		image.alt="Port is Listening";
		image.title="Port is Listening";
	}
	else if(v == 'Not Listening')
	{
		image.src = "/images/port_not_listening.gif";
		image.alt="Port is not Listening";
		image.title="Port is not Listening";
	}
	else
	{
		image.src = "/images/sys_down.gif";
	}
}

function setPortData(elementID , v)
{
	
	if(elementID == 'resolvedPortCount')
	{
		if(obj = document.hostForm.resolvedPortCount)
				obj.value = v;
	}
	if(elementID == 'respPortCount')
	{
		if(obj = document.hostForm.respPortCount)
				obj.value = v;
	}
	if(elementID == 'notRespPortCount')
	{
		if(obj = document.hostForm.notRespPortCount)
				obj.value = v;
	}
	
	if(elementID == 'totalPortCount')
	{
		if(obj = document.hostForm.totalPortCount)
				obj.value = v;
	}

}

function loadGraph()
{
	if(document.getElementById("graphframe"))
	{
		window.open("/network/PortScanGraph.jsp?isComplete=true", 'graphframe');
	}	
}

