/************************************************************************************
**		|=======================================================|		
**		|		Copyright 2006 - 2007  Infoz Software Solution.	|
**		|		Url	   :theinfoz.com							|
**		|		Author : Mahesh Chimankar						|		
**		|		email  : mahesh_chimankar@yahoo.co.in			|
**		|			   : mahesh@theinfoz.com			|	
**		|		Date   : 10 Aug 2006							|
**		|		File   : validate.js							|
**		|=======================================================|
**1.isLetter(c)  =>	Check For character.
**2.isNum(Num) 	 =>	Check For Number.
**3.isNumberString (InString) => Check Number In String.	
**4.make_readonly()	=> Make Form field read only.
**5.checkExt(ctl) => Check extension for uploaded file etc.
**6.getExtension(fileName)  => Get File extension.
**7.minChar(ctl,msgName) => Check Minimum Character length in text box.
**8.isDate(strDate) =>Check Date Format.
**9.isFloat (s) =>Check For Floating Number.
**10.isDigit (c) =>Check For Digit 0-9 .
**11.isEmpty(s) =>Check For Empty Value.
**12.checkMoney(ctl,msgName)	=> Check Mony Format.
**13.checkBlank(ctl,msgName)	=> Check Blank value.
**14.checkSelect(ctl,msgName)	=> Check Selected value of Select control. 	
**15.ValidateEmail(ctl)			=> 	Validate email.
**16.deleteitem(theMessage,theTarget)	=>	Take Confirmation at the time of delete.
**17.radio_validate(formObj)	=>	Validate radio button.
**18.isAlpha(s, AllowSpace, AllowUnderscore) =>Check For alfanumeric character.
**19.Trim(s)  => Trim string 
**20.checkURL(sUrl) => Check Url 
**21.charCount(ctl)	=> Count number for character in text box
**22.check_select_checkbox_1(frm, chk_name, msg, name_length) =>
**23.DateDiff(date1, date2)  =>Date Difference between two date
**********************************************************************************/
// Returns true if character c is an English letter (A .. Z, a..z)

function isLetter(c)
  {
  return (((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")));
  }
// Function for checking value of text should be integer
function isNum(Num) {
        var charpos = Num.search("[^0-9]"); 
        if(Num.length > 0 &&  charpos >= 0) 
              { 
                return false; 
              }
        else
			  { 
                return true; 
              }
    }	
function isNumberString (InString)  
{
        if(InString.length==0) 
                return (false);
        RefString="1234567890,.";  
		dot=0
        for (Count=0; Count < InString.length; Count++)  
        {
                TempChar= InString.substring (Count, Count+1);
                if (RefString.indexOf (TempChar, 0)==-1)  
                        return (false);
				if(InString.charAt (Count)=='.')
				{
					dot++;
				}
        }
		if(dot>1)
		{
			return (false);
		}
        return (true);
}
function make_readonly()
{
	alert("Please Use Browse Button");
	return false;
}
///// Checking for image format only gif, jpg ,jpeg & bmp format is accept
//Checking for extension .gif, jpg, jpeg, bmp
function checkExt(ctl)
{
		filename = ctl.value.replace("/", "//");
		if ( (getExtension(filename) != "gif") && (getExtension(filename) != "jpg") && (getExtension(filename)!= "jpeg") && (getExtension(filename) != "bmp"))
			{
				alert("Only files with extension .gif or .jpg or .jpeg or .bmp are allowed to be uploaded");
				return false;
			}
}
function getExtension (filename)
{
	//alert(filename);
	filename = filename.toLowerCase();
	
	fileArr = filename.split("\\");
	
	//alert("length " + fileArr.length);
	
	fname = fileArr[fileArr.length-1];
	
	fnameArr = fname.split(".");
	
	ext = fnameArr[fnameArr.length-1];
	
	//alert(ext);
	
	return ext;
}
/// End here
// Function for checking password length to 8 char
function minChar(ctl,msgName){

		if(ctl.value.length <8)
			{
				alert('"'+msgName+'"' + " Minimum 8 Characters'");
				ctl.focus();
				return false;
			}
		for(i = 0; i < ctl.value.length; i++)
		{
			var c = ctl.value.charAt(i);
			 if(c== " ")
			{
				alert('"'+msgName+'"' + " cannot consist blank spaces'");
				ctl.focus();
				return false;
			}
		}
}
function isDate(strDate)
{
	var datePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = strDate.match(datePattern); //check the date format ok?.
	var blnIsDate = true;
	if (matchArray == null)
	{
		//alert("Please enter date as mm/dd/yyyy ");
		return false;
		blnIsDate=false;
	}
	month=matchArray[1];
	day=matchArray[3];
	year=matchArray[5];
	if (month <1 || month > 12)
	{
		alert("Month must be between 1 and 12");
		return false;
		blnIsDate=false;
	}

	if (day <1 || day > 31)
	{
		alert("Day must be between 1 and 31");
		return false;
		blnIsDate=false;
	}

	if ((month ==4 || month == 6 || month==9 || month==11) && day==31)
	{
		alert("Month "+month+" doesn't have 31 days!");
		return false;
		blnIsDate=false;
	}

	if (month ==2)
	{
		var isleap = (year % 4 ==0 && (year %100 !=0 || year % 400 ==0));
		if (day > 29 || (day==29 && !isleap))
		{
			alert("February " + year + " doesn't have " + day + " days!");
			return false;
			blnIsDate=false;
		}

	}

	return true;
}


function isFloat (s)
{   var i;
	var seenDecimalPoint = false;
	var decimalPointDelimiter = "."
	var defaultEmptyOK = true
	if (isEmpty(s)) 
	   if (isFloat.arguments.length == 1) return defaultEmptyOK;
	   else return (isFloat.arguments[1] == true);

	if (s == decimalPointDelimiter) return false;

	// Search through string's characters one by one
	// until we find a non-numeric character.
	// When we do, return false; if we don't, return true.

	for (i = 0; i < s.length; i++)
	{   
		// Check that current character is number.
		var c = s.charAt(i);

		if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
		else if (!isDigit(c)) return false;
	}

// All characters are numbers.
return true;
}
function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isEmpty(s)
{	return ((s == null) || (s.length == 0))
}

function checkMoney(ctl,msgName){
  if(isFloat(ctl.value)==false)	
    {
      alert('"'+msgName+'"' + " is Invalid. \nPlease Enter only Numeric Data. \nDo not use any characters like ','");
      ctl.focus();
      return (false);
    }
  else
    {
    	return (true);
    }
}

function checkBlank(ctl,msgName){
  if(Trim(ctl.value)=="")	
    {
      alert('"'+msgName+'"' + " Cannot be blank");
      ctl.focus();
      return (false);
    }
  
}

function checkSelect(ctl,msgName){
  if(ctl.selectedIndex<=0)	
    {
      alert('Please Select '+msgName);
      ctl.focus();
      return (false);
    }
  else
    {
    	return (true);
    }
}

function ValidateEmail(ctl){
    	var id=ctl;
	var at=id.value.indexOf('@');
	var lastat=id.value.lastIndexOf('@');
	var dot=id.value.indexOf('.');
	lastdot=id.value.lastIndexOf('.')
	if ( !( (0 < at) && (at < (lastdot-1)) && (lastdot < (id.value.length-1)) && (at == lastat) ) ) {
	  error = 1;
	  alert("Email address is not formatted properly.");
	  ctl.focus();
	  return (false);
	}
}

function deleteitem(theMessage,theTarget)
{	
	var theRadio=form1.item_nbr;
	var strRadio;
	if (theRadio.length)
	{
		for (var i = 0; i < theRadio.length; i++)
		{   if (theRadio[i].checked)
			{
				strRadio=theRadio[i].value;
			}
		}
	}else
	{
		strRadio=theRadio.value;
	}
		if (strRadio > 0)
	{
		var blnConfirm;
		blnConfirm = confirm("Are you sure?");
		if (blnConfirm)
		{
			form1.action=theTarget+'?item_nbr='+strRadio
			form1.submit();
		}
	}else
	{
		alert ("Select "+ theMessage + " To Delete");
	}
}

function radio_validate(formObj) {
    var isOK = false;
    for (i=0;i<formObj.elements.length;i++) {
	currElem = formObj.elements[i]
        if (currElem.type == "radio"  &&  currElem.checked) {
            isOK=true;
	    break;
        }
    }
    if (!isOK) alert("You need to select a option !");
    
    return isOK;
}

// Validetion for Zip code it accept upto 5 no

function Zip(s)
{
	var isNot = "`!@$^*()[{]}\|/;'',<>_" ;
	
	return true;
	/*if (s.length <=15)
	{
		var i;
		var cnt = 0;
		for(i = 0; i < s.length; i++)
		{
			var c = s.charAt(i);
			if (isNot.indexOf(c) != -1)
			  {
				return false ;
			  }
	
		}
		
	}
	else
	{
		return false;
	}*/
}


//function which allow spaces,underscore, "/", "-" and character should start with alphabets only

function isName(s)
{
	var i;
	
	for (i = 0; i < s.length; i++)
	{
		var c = s.charAt(i);
		

			if(i==0)
			{
				
				 if(c == " ")
				{
					return false;
					break;
				}
				/*else if(c == "/")
				{
					return false;
					break;
				}
				else if(c == "-")
				{
					return false;
					break;
				}
				else if(c == "_")
				{
					return false;
					break;
				}*/
			}
			if(isLetter(c))
			{
				
				continue;
			}
			if(isDigit(c))
				{
					
						continue;
				}
			else
			{
				
				switch(c)
				{
					case "." :
						continue;
						

					case "-" :
						continue;
						
					
					case "/" :
						continue;
						
					
					case "@" :
						continue;
					case "_" :
						continue;
									
					default :
						return false;
				}
			}
			
	}  
	return true;
}


function isAlpha(s, AllowSpace, AllowUnderscore)
  {
  var i;
  // Search through string's chars one by one until we find a
  // non-alphanumeric char, then return false; if we don't, return true
  for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if(isLetter(c))
        {
                continue;
        }
		else if(isDigit(c))
		{
			continue;
		}
        else
        {
            switch(c)
            {
                case "_" :
					
                    break;
                case " " :
                    if(AllowSpace==false)
                    {
                        return false;
                    }
                    break ;
                case "-" :

                    break;
                case "." :
					
                    break;
                case "(" :
                    break;
                case ")" :
                    break;
                case "'" :
                    break;
                case "`" :
                    break;
                default :
                    return false;
            }
        }
    }

    // All characters are numbers or letters
    return true;
  }


 function Trim(s) 
{
  // Remove leading spaces and carriage returns
  
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
  {
    s = s.substring(1,s.length);
  }

  // Remove trailing spaces and carriage returns

  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}
  
  
  // Check for URL

 function checkURL(sUrl)
{
  var sUrl=Trim(sUrl);
  var url = false ;
  var isNot = "`!@$^*()[{]}\|;'',<> " ;
  if (sUrl.length =="" )
	{
	  return true;
	}
	else
	{
  {
    if (sUrl.indexOf('://') != -1)
    {
      if (sUrl.indexOf('"') == -1)
      {
        url = true ;
        if (sUrl.length <= 7 )
        {
          url = false ;
        }
        for (i=0;i!=sUrl.length;++i)
        {
          if (isNot.indexOf(sUrl.substring(i,i+1)) != -1)
          {
            url = false ;
          }
        }
      }
    }
  }
  return url;
        }
}

/////  function to count total number of charectors

function charCount(ctl){
	var count_char;

	count_char = ctl.value.length;

	return count_char ;
}


/// /// THIS FUNCTION IS USED TO VALIDET ARRAY NAMED FIELD I.E NAME[]

function check_select_checkbox(frm, chk_name, msg, name_length)
{

ch=0;
chp=0;

		for(i=0;i<frm.elements.length;i++)
			{
				chname=frm.elements[i].name;
				
				if(chname.substring(0,name_length)==chk_name)
				{
					if(Trim(frm.elements[i].value) !="")
						{
							chp=1;
							break;
						}
					}
			}

			if(chp==0)
			{

				for(i=0;i<frm.elements.length;i++)
				{
					chname=frm.elements[i].name;
					if(chname.substring(0,name_length)==chk_name)
					{
						 alert('"'+msg+'"' + " Cannot be blank");
						frm.elements[i].focus();
						break;
					}
				}

			return false;
			}
}

// TO CHECK THE CHECKOBX CHECKED OR NOT USE THIS FUNCTION

function check_select_checkbox_1(frm, chk_name, msg, name_length)
{

ch=0;
chp=0;

		for(i=0;i<frm.elements.length;i++)
			{
				chname=frm.elements[i].name;

				if(chname.substring(0,name_length)==chk_name)
				{
					
					if(frm.elements[i].checked ==true)
						{
							chp=1;
							break;
						}
					}
			}

			if(chp==0)
			{

				for(i=0;i<frm.elements.length;i++)
				{
					chname=frm.elements[i].name;
					if(chname.substring(0,name_length)==chk_name)
					{
						 alert('"'+msg+'"' + " Cannot be blank");
						frm.elements[i].focus();
						break;
					}
				}

			return false;
			}
}

//DATE VALIDATION 
 function DateDiff(date1, date2)
   { 
		var objDate1=new Date(date1);
		var objDate2=new Date(date2);
		return (objDate1.getTime()-objDate2.getTime())/1000;
   }

