/******************************************************************************************
Function Name : f_isEmpty
Input : String 
Output : true or false
Description : This function returns true if string is not empty o.w. returns false.
******************************************************************************************/
function f_isEmpty(msStr)
{   

    var   msTemp=msStr;
    for(mnI=0;mnI<msTemp.length;mnI++)
    {
     // find out ascii value of each character   
     temp=msTemp.charCodeAt(mnI);
    if ( temp != 10 &&  temp != 13 &&  temp != "@" &&  temp != 32)
                    {
                        return false;
                    }
    }
    msStr.value="";
    return true;
}

/******************************************************************************************
Function Name : f_isNumber
Input : String 
Output : true or false
Description : This function returns true if string is numeric o.w. returns false.
******************************************************************************************/
function f_isNumber(str)
{
	nstr = '0123456789';
    err = 0;
    for (f=0;f<str.length;f++){
      if (nstr.indexOf(str.charAt(f)) == -1) err++;
    }
    if (err!=0) return false;
    else return true;
}

/******************************************************************************************
Function Name : f_isFloatNumber
Input : String 
Output : true or false
Description : This function returns true if string is numeric o.w. returns false.
******************************************************************************************/
function f_isFloatNumber(sStr)
{
var msStr = "0123456789.";
var d1 = sStr.indexOf(".");
var d2 = sStr.lastIndexOf(".");

if ((d1 >= 0 && d2 >= 0) && d1 != d2)
{
return false;
}
for (i=0;i<sStr.length;i++)
{
if ( msStr.indexOf(sStr.charAt(i)) == -1 )
{
return false; // Not Numeric....
}
}
return true; // string is Numeric....
}

/******************************************************************************************
Function Name : f_isValidPhone
Input : String i.e. an email address
Output : true or false
Description : This function returns true if email id is valid o.w. returns false.
******************************************************************************************/
function IsValidphone(phone)
{
 var list="0123456789- + _.()";
  var str = phone
  for(var i=0; i<str.length; i++){
	if(list.indexOf(str.charAt(i))<0){      
      return false;
	}
   }
	return true;
 }

/******************************************************************************************
Function Name : IsValidName
Input : String 
Output : true or false
Description : This function returns true if name is valid o.w. returns false.
******************************************************************************************/
function IsValidName(Name)
{
  var list="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ~!@#$%^&*()_+=\|]}[{';:/?.,><";
  var str = Name
  err = 0;
  for(i=0; i<str.length; i++){
  	if(list.indexOf(str.charAt(i))==-1)
  		err++;
  	}
  		if(err!=0) return true;
  	else return false;
 }
 
 
 
/******************************************************************************************
Function Name : Check_email
Input : String i.e. an email address
Output : true or false
Description : This function returns true if email id is valid o.w. returns false.
******************************************************************************************/
function Check_email(emailStr) 
{
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	
	if (matchArray==null) 
	{  
		alert("Email address seems incorrect (check @ and .'s)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) 
	{
	    alert("The username doesn't seem to be valid.")
	    return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) 
	{  
		  for (var i=1;i<=4;i++) 
		  {
		    if (IPArray[i]>255) 
			{
		        alert("Destination IP address is invalid!")
				return false
		    }
	    }
	    return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) 
	{
		alert("The domain name doesn't seem to be valid.")
	    return false
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
	{   
	   alert("The address must end in a three-letter domain, or two letter country.")
	   return false
	}
	if (len<2) 
	{
	   var errStr="This address is missing a hostname!"
	   alert(errStr)
	   return false
	}
	return true;
}
/******************************************************************************************/

/******************************************************************************************
Function Name : Compares two dates
Input : accepts two dates - date1, date2
Output : true or false
Description : This function returns        
		0 if two dates are equal
		1 if date1 is greater than date 2 
	   -1 if date1 is less than date2
******************************************************************************************/
function f_DateCompare(nMonth,nDay,nYear,date2)
{
		var str=nMonth+"/"+nDay+"/"+nYear;
		var dateStr1=str;
		var dateStr2=date2;
			
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
		
		var matchArray1 = dateStr1.match(datePat); // is the format ok?
		var ma1=dateStr1
		maarray1=ma1.match(datePat);
		if (matchArray1 == null) 
			{
				alert("Date1 is not in a valid format.")
				return false;
			}
		
		var matchArray2 = dateStr2.match(datePat); // 
		var ma2=date2;
		maarray2=ma2.match(datePat);
		
		if (matchArray2 == null) 
			{
				alert("Date2 is not in a valid format.")
				return false;
			}
	
		month1 = matchArray1[1]; // parse date into variables
		day1 = matchArray1[3];
		year1 = matchArray1[4];
		yea1=year1.length
		if(yea1 < 4)
		{
			alert("Date1 should be in mm/dd/yyyy format");
			return false;
		}
		month2 = matchArray2[1]; // parse date into variables
		day2 = matchArray2[3];
		year2 = matchArray2[4];
		yea2=year2.length
		if(yea2 < 4)
		{
			alert("Date2 should be in mm/dd/yyyy format");
			return false;
		}
	if (month1 < 1 || month1 > 12) 
		{ 
			// check month range
			alert("Date1 Error: Month must be between 1 and 12.");
			return false;
		}
	if (day1 < 1 || day1 > 31) 
		{
			alert("Date1 Error: Day must be between 1 and 31.");
			return false;
		}

	if ((month1==4 || month1==6 || month1==9 || month1==11) && day1==31) 
		{
			alert("Date1 Error: Month in Date1  doesn't have 31 days!");
			return false;
		}
	if (month1 == 2) 
		{ // check for february 29th
			var isleap = (year1 % 4 == 0 && (year1 % 100 != 0 || year1 % 400 == 0));
			if (day1>29 || (day1==29 && !isleap)) 
				{
					alert("Wrong Date1: February " + year1 + " doesn't have " + day1 + " days! \n As it is not a Leap Year");
					return false;
			   }
		}
	
	if (month2 < 1 || month2 > 12) 
		{ 
			// check month range
			alert("Date2 Error: Month must be between 1 and 12.");
			return false;
		}

	if (day2 < 1 || day2 > 31) 
		{
			alert("Date2 Error: Day must be between 1 and 31.");
			return false;
		}

	if ((month2==4 || month2==6 || month2==9 || month2==11) && day2==31) 
		{
			alert("Month in Date2  doesn't have 31 days!");
			return false;
		}
	if (month2 == 2) 
		{ // check for february 29th
			var isleap = (year2 % 4 == 0 && (year2 % 100 != 0 || year2 % 400 == 0));
			if (day2>29 || (day2==29 && !isleap)) 
				{
					alert("Wrong Date1: February " + year2 + " doesn't have " + day2 + " days! \n As it is not a Leap Year");
					return false;
			   }
		}
	
 // Till here both dates are OK... Now actual Comparison starts from here....!!!
		if (year1 == year2)
		{
			if (month1 == month2)
			{
				if (day1 == day2)
				{
					return 0; // dates are equal
				}
				else if (day1 > day2)
				{
					return 1; // date1 > date2
				}
				else 
				{
					return -1; // date1 < date2
				}
			}
			else if (month1 > month2 )
			{                   
				return 1; //date1 > date 2
			}
			else
			{
				return -1; // date1 < date 2
			}
		}
		else if (year1 > year2)
		{
			return 1; // date1 > date 2
		}
		else
		{
			return -1; // date1 < date2
		}
}

/******************************************************************************************
Function Name : Validation of date
Input : accepts date - date1
Output : true or false
Description : This function returns true or fasle if date is not in valid format       
		
******************************************************************************************/
function f_ValidDate(nMonth,nDay,nYear)
{
		var str=nMonth+"/"+nDay+"/"+nYear;
		var dateStr1=str;
					
		var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
		
		var matchArray1 = dateStr1.match(datePat); // is the format ok?
		var ma1=dateStr1
		maarray1=ma1.match(datePat);
		if (matchArray1 == null) 
			{
				alert("Date1 is not in a valid format.")
				return false;
			}
		
		month1 = matchArray1[1]; // parse date into variables
		day1 = matchArray1[3];
		year1 = matchArray1[4];
		yea1=year1.length
		if(yea1 < 4)
		{
			alert("Date1 should be in mm/dd/yyyy format");
			return false;
		}
		
	if (month1 < 1 || month1 > 12) 
		{ 
			// check month range
			alert("Date1 Error: Month must be between 1 and 12.");
			return false;
		}
	if (day1 < 1 || day1 > 31) 
		{
			alert("Date1 Error: Day must be between 1 and 31.");
			return false;
		}

	if ((month1==4 || month1==6 || month1==9 || month1==11) && day1==31) 
		{
			alert("Date1 Error: Month in Date1  doesn't have 31 days!");
			return false;
		}
	if (month1 == 2) 
		{ // check for february 29th
			var isleap = (year1 % 4 == 0 && (year1 % 100 != 0 || year1 % 400 == 0));
			if (day1==29 && !isleap) 
				{
					alert("February " + year1 + " doesn't have " + day1 + " days! \n As it is not a Leap Year");
					return false;
			   }
			if (day1>29) 
				{
					alert("February " + year1 + " doesn't have " + day1 + " days!");
					return false;
			   }   
		}
		return true;
}



function comparedate(value1,value2)
{
   var date1, date2;
   var month1, month2;
   var year1, year2;

   month1 = value1.substring (0, value1.indexOf ("/"));
   date1 = value1.substring (value1.indexOf ("/")+1, value1.lastIndexOf ("/"));
   year1 = value1.substring (value1.lastIndexOf ("/")+1, value1.length);

   month2 = value2.substring (0, value2.indexOf ("/"));
   date2 = value2.substring (value2.indexOf ("/")+1, value2.lastIndexOf ("/"));
   year2 = value2.substring (value2.lastIndexOf ("/")+1, value2.length);

   if (year1 > year2) return 1;
   else if (year1 < year2) return -1;
   else if (month1 > month2) return 1;
   else if (month1 < month2) return -1;
   else if (date1 > date2) return 1;
   else if (date1 < date2) return -1;
   else return 0;
}
/******************************************************************************************/


function validate_qc()
{
if(document.getElementById("r_name").value =='Your Name'){document.getElementById("r_name").value='';}
 if(f_isEmpty(document.getElementById("r_name").value))
 {
	window.alert("Please enter your name");
	document.getElementById("r_name").value='';
	document.getElementById("r_name").focus();
	return false;
 }
 if(IsValidName(document.getElementById("r_name").value))
 {
	window.alert("Please enter valid name");
	document.getElementById("r_name").value='';
	document.getElementById("r_name").focus();
	return false;
 }
 if(f_isEmpty(document.getElementById("r_phone").value))
 {
	window.alert("Please enter your phone number");
	document.getElementById("r_phone").value='';
	document.getElementById("r_phone").focus();
	return false;
 }
 if(!(IsValidphone(document.getElementById("r_phone").value)))
 {
	window.alert("Please enter valid phone number");
	document.getElementById("r_phone").value='';
	document.getElementById("r_phone").focus();
	return false;
 }
 if(f_isEmpty(document.getElementById("re_email").value))
 {
	window.alert("Please enter your email address");
	document.getElementById("re_email").value='';
	document.getElementById("re_email").focus();
	return false;	
 }
 if(!(Check_email(document.getElementById("re_email").value)))
 {
    document.getElementById("re_email").value='';
    document.getElementById("re_email").focus();
    return false;
 } 
 if(document.getElementById("r_Code").value =='Verification Code')
 {
	 	document.getElementById("r_Code").value='';
 }
 if(f_isEmpty(document.getElementById("r_Code").value))
 {
	window.alert("Please enter Valid access code");
	document.getElementById("r_Code").value='';
	document.getElementById("r_Code").focus();
	return false;	
 } 
 
   //alert("Have you entered correct verification code? If not, please re-enter your information.");

}