
function isValidMail(val)
{	
/*Function Email Validation
parameter : Email String
Return Type : Boolean
*/

  var wildchar="~!#$%^&*()+=|\\/?<>;:'\"\¥\£`{}[] "
  var m1;
  var m2;
  var i=0;
  var count=0;
  m1 = val
  for (i=0;i<wildchar.length;i++)
  {
    if(m1.indexOf(wildchar.charAt(i)) != -1)
    {
      if (wildchar.charAt(i)==" ")
      {
        alert("Email address must not contain spaces");
        return false;
      }
      else
      {
        alert("Email address must not contain \" " + wildchar.charAt(i) + " \" character");
        return false;
      }
    }
  }
  
  if(m1.charAt(0)=="" || m1.charAt(0)=="@" || m1.charAt(0)==".")
  {
    alert("Please enter a valid Email address.")
    return false;
  }
  else if(m1.charAt(m1.length)=="." || m1.charAt(m1.length)=="@" || m1.charAt(m1.length)==" " || m1.indexOf(" ")!="-1")
  {
    alert("Please enter a valid Email address.")
    return false;
  }
  else 
  {
    if(m1.indexOf("@")==-1)
    {
      alert("Please enter a valid Email address.");
      return false;
    }
    else
    {
      for(i=0; i<m1.length; i++)
      {
        if(m1.charAt(i)=="@")
          count++;
      }
      if(count>1)
      {
        alert ("Please enter a valid Email address.");
        return false;
      }
      else
      {
        if(count==1)
        {
          m2 = m1.substring(m1.indexOf("@")+1, m1.length)
          if(m2.indexOf(".")==-1)
          {
            alert ("Please enter a valid Email address.");
            return false;
          }
          else
          {
            for(i=0; i<1; i++)
            {
              if(m2.charAt(i)==".")
              {
                alert ("Please enter a valid Email address.");
                return false;
              }
            }
            return true;
          }
        }
      }
    }
  }
}



function checkCCNumber(CardNumber)
{
/*Function Credit Card Validation
  Parameter : Creditcard Number 
  Return type : Boolean
*/

//Calling the fixNumber function to fix the number ie. removing - and etc.

  CardNumber=fixNumber(CardNumber);
  if (isNaN(CardNumber))
  {
    alert ("Enter Valid Credit Card Number");
    return false
  }
  if (CardNumber==0)
  {
    alert ("Credit Card Number Is Required");
    return false
  }
  var sum = 0
  var toggle = false
  if ((CardNumber.length%2)==0)
    toggle=true
  for (var count = 0; count < CardNumber.length; count++)
  {
    var digit = parseInt(CardNumber.charAt(count));
    if (toggle)
    {
      digit *= 2;
      if (digit > 9)
        digit -= 9;
    }
    sum += digit;
    toggle= !toggle;
  }	
  if (sum % 10 == 0)
    return true
  else
  {
    alert ("Enter Valid Credit Card Number");
    return false
  }
}


function checkCCExpiry(Month,Year)
{
/*Function CreditCard Expiry Validation
   Parameter : Month and Year
   Return Type : Boolean
*/

  var curMonth = new Date().getMonth()+1;
  var curYear  = new Date().getFullYear();
  if(parseInt(curYear,10)==parseInt(Year,10))
  {
    if(parseInt(curMonth,10)>=parseInt(Month,10))
    {
      alert("Credit Card Has Expired And Hence Cannot Purchase");
      return false
    }
    else
	return true;
  }
  else if(parseInt(Year,10)<parseInt(curYear,10))
  {
		alert("Credit Card Has Expired And Hence Cannot Purchase");
		return false;
  }
  else
    return true
}



function hyphenTrimmer(val)
{

/*Function hyphenTrimmer - removing the hypens
   Parameter : String
   Return type : String without Hyphen
*/

  var val
  if(val.indexOf("-"))
  {
    val = val.split("-");
    val = val.join("");
  }
  return val
}


function fixNumber(val)
{

/*Function fixNumber - removing hyphen and space
   Parameter : String
   Return type : String 
*/

  val=spaceTrimmer(val);
  val=hyphenTrimmer(val);
  return val

}


function emiCalculation(Principal,Rateofint,Instalments)
{

/*Function EmiCalculation
   Parameter : Principal Amount, Rate of Interest, Number of Instalments
   Return Type : Boolean or EMI Value
*/

  var pri = Principal;
  var rint = Rateofint;
  var instt = Instalments;
  var n="";
  var count=0;

  if((isNaN(pri)) || pri.charAt(0)=="" || pri.charAt(0)=="0" || pri.charAt(0)==".")
  {
    alert("Enter The Principal");
    return false;
  }
  else if((isNaN(rint)) || rint.charAt(0)=="" || rint.charAt(0)=="0" || rint.charAt(0)==".")
  {
    alert("Enter Rate Of Interest");
    return false;
  }
  else if((isNaN(instt)) || instt.charAt(0)=="" || instt.charAt(0)=="0" || instt.charAt(0)==".")
  {
    alert("Enter No. Of Instalments");
    return false;
  }
  if((pri!="")&&(rint!="")&&(instt!=""))
  {
    n = pri+""+rint+""+instt;
  }	
  nr = pri*(rint/1200);
  pr = 1+(rint/1200);
  pwr= Math.pow(pr,instt);
  bl=1-(1/pwr);
  emi=nr/bl;
  emi=emi*100;
  emi=(Math.round(emi)/100);
  return (emi);
}		


function isNull(value)
{
/*Function Null Value checking
  Parameter : String
  Return type : boolean
*/

  value=spaceTrimmer(value);

  if(value=="") 
  {
    //alert("Missing Required Field");
    return true;
  }
  return false;
}




function spaceTrimmer(value)
{
/*Function Space Trimmer
  Parameter : String
  Return type : String without Space
*/
  var val;
  for(var i=0;i<value.length;i++)
	{
		if (value.charAt(i)!=" ")
			break;
	}
  val=value.substring(i,value.length);

  return val;
}


function isAlphaNumeric(value)
{
/*Function AlphaNumeric Validation
parameter :  String
Return Type : Boolean
*/
	var wildchar="~#$%^*()+='|\\?<>;:\"\¥\£`{}[]"
	
	if (isNull(value))
		{
			return false;
		}
	else
		{
			var i;
			for(i=0;i<wildchar.length;i++)
				{
					if (value.indexOf(wildchar.charAt(i))!=-1)
						{
							alert("Special Characters not Allowed");
							return false;
						}
				}
		}

	return true;
}


function isDDMMDate(val)
	{

/* Date Validation 
Parameter : Date string
return type : boolean
*/
		var dt, mon, yr, dt1, maxday,strDate1,strDate2
		dt1 = val
		
		//find the first slash position
		slashIndex=dt1.indexOf('/');
		if (slashIndex=="-1")
		{
			alert('Enter Valid Date (DD/MM/YYYY)');			
			return false;
		}
		//find the second slash position		
		slashIndex1=dt1.lastIndexOf("/");
		if (slashIndex1==slashIndex)
		{
			alert('Enter Valid Date (DD/MM/YYYY)');			
			return false;
		}

		dt  = parseInt(dt1.substring(0,slashIndex), 10)
		mon = parseInt(dt1.substring(slashIndex+1,slashIndex1), 10)
		yr  = parseInt(dt1.substring(slashIndex1+1,10), 10)
		
		if (checkDate(mon,dt,yr))
			return true;
		else
			alert('Enter Valid Date (DD/MM/YYYY)');
			return false;

		
	}


function isMMDDDate(val)
	{

/* Date Validation 
Parameter : Date string
return type : boolean
*/
		var dt, mon, yr, dt1, maxday,strDate1,strDate2
		dt1 = val
		
		//find the first slash position
		slashIndex=dt1.indexOf('/');
		if (slashIndex=="-1")
		{
			alert('Enter Valid Date (MM/DD/YYYY)');
			return false;
		}
		//find the second slash position		
		slashIndex1=dt1.lastIndexOf("/");
		if (slashIndex1==slashIndex)
		{
			alert('Enter Valid Date (MM/DD/YYYY)');
			return false;
		}

		mon  = parseInt(dt1.substring(0,slashIndex), 10)
		if (isNaN(mon))
			{
			   alert('Enter Valid Date (MM/DD/YYYY)');
			return false;					
			}
		dt = parseInt(dt1.substring(slashIndex+1,slashIndex1), 10)
		if (isNaN(dt))
			{
			   alert('Enter Valid Date (MM/DD/YYYY)');
			return false;					
			}
		yr  = parseInt(dt1.substring(slashIndex1+1,10), 10)

		if (isNaN(yr))
			{
			   alert('Enter Valid Date (MM/DD/YYYY)');
			return false;					
			}

		if (checkDate(mon,dt,yr))
			return true;
		else
		{
			alert('Enter Valid Date (MM/DD/YYYY)');
			return false;
		}
		
	}



function checkDate(mon,dt,yr)
{
/*Date Validation sub function
Parameter : month, day, year
return type : boolean
*/
		var MinMilli = 1000 * 60
  		var HrMilli = MinMilli * 60
  		var DyMilli = HrMilli * 24

		mon1=parseInt(mon)+1
		
		if(mon < 1 || mon > 12)
		{
			return false
		}				
		if(yr < 1 || yr > 9999)
		{
			return false
		}		
		strDate1 = new Date(yr,mon-1,'1');
		strDate2 = new Date(yr,mon1-1,'1')
		//Find the number of days for a given month
		maxday=(Math.round((strDate2-strDate1)/DyMilli))

		if (parseInt(dt,10)>parseInt(maxday,10))
			return false;
		else
			return true;


}


function isPasswordEqual(Password,ConfirmedPassword)
{

/*Function Password Validation and confirmation
   Parameter : Password and Confirm password
   Return Type : Boolean
*/

	if (Password==ConfirmedPassword)
		return true;
	else
		return false;

}		


function isNumber(intValue)
{
/*
Function Number validation
parameter : Number
return type : boolean
*/

	var strNumber="0123456789"
	
	for(var i=0;i<intValue.length;i++)
	{
		if (strNumber.indexOf(intValue.charAt(i))=="-1")
			{alert('Enter Digit Only');
			 return false;}
	}
	return true;

}

function isValidLength(strValue,intVal)
{
/*
Function : check specified length of characters
parameter : check string, number
return type : boolean
*/
	if (strValue.length>=parseInt(intVal,10))
		return true;
	else
		return false;
}

/*function urlValidate(url)
{

//Function : check the url entered
//parameter : check string
//return type : boolean
	

	var urlchk,urlsubstr,urlsubstr1;	
	urlchk=url;
	
	urlsubstr=urlchk.substring(0,4);
	urlsubstr1=urlchk.substring(4,urlchk.length);
					
	if(urlsubstr!="www.")
	{
		alert("Invalid URL, Try again!!");
		return false;
	}
	else if(urlsubstr1.indexOf(".")==-1)
	{
		alert("Invalid URL, Try again!!");
		return false;
	}
	else
	return true;
}*/

function urlValidate(url)
{
	if(url.indexOf("www.")==-1)
	{
		alert("Invalid URL, Enter Again");
		return false;
	}	
	else
	{
		return true;
	}
}
	


function isAlphaNumeric1(value)
{
/*Function AlphaNumeric Validation
parameter :  String
Return Type : Boolean
*/
	
	
		var objRegExp= /^[a-zA-Z0-9]+$/;
		if (value.match(objRegExp))
			return true;
		else
			return false;

}




function isGreaterDateFormat(date1,date2)
{
	
	var diff;
	slashIndex=date1.indexOf('/');
	slashIndex1=date1.lastIndexOf("/");
	dd1  = parseInt(date1.substring(0,slashIndex), 10)
	mm1 = parseInt(date1.substring(slashIndex+1,slashIndex1), 10)
	yy1  = parseInt(date1.substring(slashIndex1+1,10), 10)

	slashIndex=date2.indexOf('/');
	slashIndex1=date2.lastIndexOf("/");
	dd2  = parseInt(date2.substring(0,slashIndex), 10)
	mm2 = parseInt(date2.substring(slashIndex+1,slashIndex1), 10)
	yy2  = parseInt(date2.substring(slashIndex1+1,10), 10)

	strDate1=new Date()
	strDate2=new Date()
	strDate1.setMonth(mm1-1)
	strDate1.setDate(dd1)
	strDate1.setYear(yy1)

	strDate2.setMonth(mm2-1)
	strDate2.setDate(dd2)
	strDate2.setYear(yy2)
	diff=strDate1.getTime()-strDate2.getTime()

	if (diff>=0)
		return true;
	else
		alert("Starting date should be less than End Date");		
		return false;
	
}

function isGreaterDateFormat1(date1,date2)
{
	
	var diff;
	slashIndex=date1.indexOf('/');
	slashIndex1=date1.lastIndexOf("/");
	mm1  = parseInt(date1.substring(0,slashIndex), 10)
	dd1 = parseInt(date1.substring(slashIndex+1,slashIndex1), 10)
	yy1  = parseInt(date1.substring(slashIndex1+1,10), 10)

	slashIndex=date2.indexOf('/');
	slashIndex1=date2.lastIndexOf("/");
	mm2  = parseInt(date2.substring(0,slashIndex), 10)
	dd2 = parseInt(date2.substring(slashIndex+1,slashIndex1), 10)
	yy2  = parseInt(date2.substring(slashIndex1+1,10), 10)

	strDate1=new Date()
	strDate2=new Date()
	strDate1.setMonth(mm1-1)
	strDate1.setDate(dd1)
	strDate1.setYear(yy1)

	strDate2.setMonth(mm2-1)
	strDate2.setDate(dd2)
	strDate2.setYear(yy2)
	diff=strDate1.getTime()-strDate2.getTime()

	if (diff>=0)
		return true;
	else
		alert("Starting date should be less than End Date");		
		return false;
	
}
