// function to trim leading & trailing spaces
function trim(strText) { 
    // this will get rid of leading spaces 
    while (strText.substring(0,1) == ' ') 
        strText = strText.substring(1, strText.length);

    // this will get rid of trailing spaces 
    while (strText.substring(strText.length-1,strText.length) == ' ')
        strText = strText.substring(0, strText.length-1);

   return strText;
} 

function getSelectedIndex(radgroup)
{
	/* Returns back the id of selected radio button in a radio button group  */
	var re = -1;
 	if(radgroup.length)   
	{
		for( pe=0; pe < radgroup.length; pe++ )
		{
			if(radgroup[pe].checked)
			{
				re = pe;
			}
		}
	}
	return re;
}


/*
16. isValidEntry

Usage:
	Element  name of the control like frm.password.
	Message  Field Name that we want to display in alert message.

if(!isValidEntry(frm.name, "Name"))
return;
*/
function isValidEntry(element,msg) 
{
	if(element.value.length == 0)
	{
		alert("Please enter the "+ msg);
		element.focus();
		return false;
	}
	return true;
} // closing the function isValidEntry()

/*
2. FUNTION SELECTALL CHECK BOXES

Usage:
frm  name of the form
SelectAll(frm);
*/

 // closing the function SelectAll()
	
/*

/*
3. SELETC VALIDATION

Usage:
Element  name of the control, like frm.firstname
Message  Field Name that we want to display in alert message.

if(!isValidSelect(frm.country,'Country'))
return;
*/
function isValidSelect(element,msg) 
{
	if(element.value == "") 
	{
		alert("Please select "+msg+" from the list");
		element.focus();
		return false;
	}
	return true;
}

/*

7. URL VALIDATION

Usage:
Element  name of the control, like frm.url
Message  Field Name that we want to display in alert message.
Required  Set this to yes if the field is mandatory, otherwise no.

	 if(!isValidURL(frm.url, "URL", "yes")) 
	 return;
*/
function isvalidurl(url)//url=document.formname.fieldname.value
{
	var urlRegxp = /^(http:\/\/www. |https:\/\/www. |ftp:\/\/www. |www.){1}([\w]+)(.[\w]+){1,2}$/;
	if (!urlRegxp.test(url.value))
	{ 
		alert("You must supply a valid URL."); 
		url.focus();
		return false; 
	}
	return true;
}
    

function isValidPhone(element, msg, required)
{	
	var VarPhone = element.value;
	if (VarPhone== "")
	{	
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if (VarPhone != "")
	{
		var Phno;
		Phno=VarPhone;
		var valid = "-0123456789()";
		var hyphencount = 0;
		for (var i=0; i < Phno.length; i++) 
		{
			temp = "" + Phno.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
				alert("Invalid characters in your "+msg+". Please try again.");
				element.focus();
				return false;
			}
		}
     } 
	 return true;      
}

/*
 EMAIL ADDRESS VALIDATION

Usage: 
Element  name of the control, like frm.email
Required  Set this to yes if the field is mandatory, otherwise no.

	 if(!isValidEmail(frm.email,'yes'))
	 return;
*/

function isValidEmail(element, required)
{
	var VarEmail = element.value;
	if(VarEmail == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter Email Address");
			element.focus();
			return false;
		}
	}	
	if(VarEmail != "")
	{
		var emailStr = VarEmail;
		 
		var emailPat=/^(.+)@(.+)$/
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars="\[^\\s" + specialChars + "\]"
		var firstChars=validChars
		var quotedUser="(\"[^\"]*\")"
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		var atom="(" + firstChars + 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 to be incorrect (check @ and .'s)");
			 element.focus();
			 return false;
		}
		var user=matchArray[1]
		var domain=matchArray[2]
		if (user.match(userPat)==null) 
		{
			alert("The username doesn't seem to be valid.");
			element.focus();
			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!");
					 element.focus();
					 return false;
				}
			}
		}
		var domainArray=domain.match(domainPat)
		if (domainArray==null) 
		{
			alert("The domain name doesn't seem to be valid.");
			element.focus();
			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.");
		   element.focus();
		   return false;
		}
		if (domArr[domArr.length-1].length==2 && len<3) 
		{
			var errStr = "This address ends in two characters, which is a country";
			errStr    += " code.  Country codes must be preceded by ";
			errStr	  += "a hostname and category (like com, co, pub, pu, etc.)";
			alert(errStr);
			element.focus();
			return false;
		}
		if (domArr[domArr.length-1].length==3 && len<2) 
		{
			 var errStr="This address is missing a hostname!";
			 alert(errStr);
			 element.focus();
			 return false;
		}
	}
	return true;
}

function isValidURL(element, msg, required)
{
	if(element.value == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if(element.value != "")
	{
		var oRegExp = /[^:]+:\/\/[^:\/]+(:[0-9]+)?\/?.*/;
		if (!oRegExp.test(element.value))
		{
			alert('\r\n The URL you have entered is invalid.\n Please check it for accuracy.');
			element.focus();
			element.select();
			return false;
		}
	}
	return true;
}

function isValidConfirmPassword(element1,element2) 
{
	if(element1.value != element2.value)
	{
		alert("Confirm Password doesn't match");
		element2.focus();
		return false;
	}
	else
		return true;
} 

// closing the function PassValidation()
function isValidAlphabet(element, msg, required)
{
	var i=0;
	var ValidData="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz._-&@#%$ ";
	var Data=element.value;
	if(element.value == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}	
	if(element.value != "")
	{
		for(i=0;i<Data.length;i++)
		{
			if(ValidData.indexOf(Data.charAt(i))==-1)
			{
				alert("PLease enter Non-Numeric Data Only");
				element.focus();
				return false;
			}
		}
	}
    return true;
}
/*
17.  FUNCTION SPLCHARACTERS(element)
No speaicl Characters
This function will not accept any special characters.
Valid entries for this function are [a-z][A-Z][0-9][ _ ].
Usage:
	Element  name of the control like frm.password.

if(!noSplChars(frm.name))
return;
*/
function noSplChars(element) 
{
	var alp = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_ ";
	for (var i=0;i<element.value.length;i++)
	{
		temp=element.value.substring(i,i+1);
		var name = element.name;
if(name == "rfq_title")
name = "RFQ Title";
		if (alp.indexOf(temp)==-1)
		{
			alert("No special characters allowed in " + name + "\r\nValid entries are [a-z][A-Z][0-9][ _ ][ space ]");
			element.focus();
			return false;
		}
	} // closing the for loop
	 return true;
}

/*
2. NUMBER VALIDATION
Usage:
Element  name of the control, like frm.number
Message  Field Name that we want to display in alert message.
Required  Set this to yes if the field is mandatory, otherwise no.

 if(!isValidNumber(frm.num,'Roll Number','yes'))
 return;
*/
function isValidNumber1(element, msg, required)
{  
	var VarNumber = element.value;
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789.";
		var hyphencount = 0;
		
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
	   } 
    }   // end if
    return true; 
}  
function isValidNumber(element, msg, required)
{  
	var VarNumber = element.value;
	if(VarNumber == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789.";
		var hyphencount = 0;
		
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
	   } 
    }   // end if
    return true; 
}  // end function

function isValidNumberFax(element, msg, required)
{  
	var VarNumber = element.value;
	if(VarNumber == "")
	{	
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789.-";
		var hyphencount = 0;
		
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
	   } 
    }   // end if
    return true; 
}  // end function

function isValidNum(element, msg, required)
{  
	var VarNumber = element.value;
	if(VarNumber == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if(VarNumber == 0)
	{
		alert(msg+ " Should be greater than Zero.");
		element.focus();
		return false;
	}
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789";
		var hyphencount = 0;
		
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
	   } 
    }   // end if
    return true; 
}  // end function

function isValidNum1(element, msg, required)
{  
	var VarNumber = element.value;
	if(VarNumber == "0")
	{
		alert(msg+ " Should be greater than Zero.");
		element.focus();
		return false;
	}
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789";
		var hyphencount = 0;
		
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
			
	   } 
    }   // end if
    return true; 
}
function isValidDate1(element, msg, required) 
{
	var dateStr = element.value;
	var valid = "0123456789-/.";
	var temp = "";
	var hyphencount = 0;
	var slashcount = 0;
	var dotcount = 0;
	if(element.value == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if(element.value != "")
	{
		for (var i=0; i < dateStr.length; i++)
		{
			temp = "" + dateStr.substring(i, i+1);
			 if  (temp == "-")  { hyphencount++; }
				else  if (temp == "/")  {  slashcount++; }
				   else  if (temp == ".") { dotcount++; }
			if ( ( hyphencount == 2 ) || ( slashcount == 2 ) || ( dotcount == 2 ) )
			{
				t=dateStr.substring(6,10);
				if(t.length==4)
				{
					if(t<1900)
					 {
						alert("the century of date should be greater than or equal to 1900.");
						element.focus();
						return false;
					 }
					
					 var now    = new Date();
					 var monthnumber = now.getMonth();
					 var monthday    = now.getDate();
				var year  = now.getFullYear();
				var month  = (monthnumber)+1;
				
				
				if(month<10)
				{ month = "0"+month;
				}
				if(monthday<10)
				{ monthday = "0"+monthday;
				}
			
				
					var x=month+"-"+monthday+"-"+year;
					
					 if(element.value<=x)
					 {
						 alert("Date should be greater than today's date");
						 element.focus();
						 return false;
					 }
						 
					 
					 
				}
			    
			
			}          
			if (valid.indexOf(temp) == "-1")
			{
				alert("Invalid characters in your date.  Please try again.");
				element.focus();
				return false;
			}
		} //end of for loop   
		//alert ( "hyphen  " + hyphencount + " slash " + slashcount + " dot " + dotcount )  ; 
		if ( ( hyphencount== 2) & (slashcount !=2) && (dotcount !=2) ) {}
		else if ( ( hyphencount!= 2) & (slashcount ==2) && (dotcount !=2) ) {}
		else if ( ( hyphencount!= 2) & (slashcount !=2) && (dotcount ==2) ) {}
		else 
		{	
			alert("The hyphen character should be used with a properly formatted. Please try again.");
			element.focus();
			return false;
		}
		   
		if (dateStr.length == 8 || dateStr.length == 10 )
		{
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
			var matchArray = dateStr.match(datePat); // is the format ok?
			if (matchArray == null) 
				return true;
	
			month = matchArray[1]; // parse date into variables
			day = matchArray[3];
			year = matchArray[4];
			//alert(matchArray[1]);
			//alert(matchArray[3]);
			//alert(matchArray[4]);
			
			if (month < 1 || month > 12) 
			{ // check month range
				alert("Month must be between 1 and 12.");
				element.focus();
				return false; 
			}
			if (day < 1 || day > 31) 
			{
				alert("Day must be between 1 and 31.");
				element.focus();
				return false; 
			}
			if ((month==4 || month==6 || month==9 || month==11) && day==31) 
			{
				alert("Month "+month+" doesn't have 31 days!")
				element.focus();
				return false; 
			}
			if (month == 2) 
			{ // check for february 29th
				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!");
					element.focus();
					return false;
				}
			} // end of month = 2 condition
		} // end of date string length = 8 or length = 10 condition
		else 
		{
		   alert("Entered date is invalid format, Date should be 8 to 10 chars. length.");
		   element.focus();
		   return false;
		} 
	}
	return true;  
}
function isValidDate(element, msg, required) 
{
	var dateStr = element.value;
	var valid = "0123456789-/.";
	var temp = "";
	var hyphencount = 0;
	var slashcount = 0;
	var dotcount = 0;
	if(element.value == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if(element.value != "")
	{
		for (var i=0; i < dateStr.length; i++)
		{
			temp = "" + dateStr.substring(i, i+1);
			 if  (temp == "-")  { hyphencount++; }
				else  if (temp == "/")  {  slashcount++; }
				   else  if (temp == ".") { dotcount++; }
			if ( ( hyphencount == 2 ) || ( slashcount == 2 ) || ( dotcount == 2 ) )
			{
				t=dateStr.substring(6,10);
				if(t.length==4)
				{
					if(t<1900)
					 {
						alert("the century of date should be greater than or equal to 1900.");
						element.focus();
						return false;
					 }
				}
			}          
			if (valid.indexOf(temp) == "-1")
			{
				alert("Invalid characters in your date.  Please try again.");
				element.focus();
				return false;
			}
		} //end of for loop   
		//alert ( "hyphen  " + hyphencount + " slash " + slashcount + " dot " + dotcount )  ; 
		if ( ( hyphencount== 2) & (slashcount !=2) && (dotcount !=2) ) {}
		else if ( ( hyphencount!= 2) & (slashcount ==2) && (dotcount !=2) ) {}
		else if ( ( hyphencount!= 2) & (slashcount !=2) && (dotcount ==2) ) {}
		else 
		{	
			alert("The hyphen character should be used with a properly formatted. Please try again.");
			element.focus();
			return false;
		}
		   
		if (dateStr.length == 8 || dateStr.length == 10 )
		{
			var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
			var matchArray = dateStr.match(datePat); // is the format ok?
			if (matchArray == null) 
				return true;
	
			month = matchArray[1]; // parse date into variables
			day = matchArray[3];
			year = matchArray[4];
			//alert(matchArray[1]);
			//alert(matchArray[3]);
			//alert(matchArray[4]);
			
			if (month < 1 || month > 12) 
			{ // check month range
				alert("Month must be between 1 and 12.");
				element.focus();
				return false; 
			}
			if (day < 1 || day > 31) 
			{
				alert("Day must be between 1 and 31.");
				element.focus();
				return false; 
			}
			if ((month==4 || month==6 || month==9 || month==11) && day==31) 
			{
				alert("Month "+month+" doesn't have 31 days!")
				element.focus();
				return false; 
			}
			if (month == 2) 
			{ // check for february 29th
				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!");
					element.focus();
					return false;
				}
			} // end of month = 2 condition
		} // end of date string length = 8 or length = 10 condition
		else 
		{
		   alert("Entered date is invalid format, Date should be 8 to 10 chars. length.");
		   element.focus();
		   return false;
		} 
	}
	return true;  
}

function isValidPrice(element, msg, required)
{  
	var VarNumber = element.value;
	if(VarNumber == "")
	{
		var rval = trim(required);
		if (rval.toLowerCase() == "yes" || rval == 1)
		{
			alert("Please enter "+msg);
			element.focus();
			return false;
		}
	}
	if (VarNumber != "")
	{
		var Num;
		Num=VarNumber;
		var valid = "0123456789.";
		var hyphencount = 0;
		for (var i=0; i < Num.length; i++) 
		{
			temp = "" + Num.substring(i, i+1);
			if (valid.indexOf(temp) == "-1")
			{
			  alert("Invalid characters in your "+msg+".  Please try again.");
			  element.focus();
			  return false;
			}
	   } // end for loop
	   
		if(VarNumber <= 0)
		{
			alert(msg+" is not a valid number");
			element.focus();
			return false;
		}
    }   // end if
    return true; 
}  // end

function closeToolTips(){
	document.getElementById( 'tool-tips-box' ).style.display = 'none';
}
