/* ======================================================================
	Function	: trim
	Input		: obj	  : Any Form Object 				  
	Retrieval	: String  : removes spaces from both the sides of the String and will return
	Explanation : Used to trim the data contain by specified object
	========================================================================== */
function trim(obj)
{
	var strVal = obj.value;

	obj.value = trimValue(strVal);
}

/* ======================================================================
	Function	: trimValue
	Input		: strVal  : String
	Retrieval	: String  : removes spaces from both the sides of the String and will return
	Explanation : Used to trim the data in a string 
	========================================================================== */
function trimValue(strVal)
{
	var newstr="";

	var retstr="";

	var strlen=strVal.length;

	for(var start=0; start<strlen; start++)
	{
		if(strVal.substring(start,start+1)!=" ")
		{ 
			newstr = strVal.substring(start,strlen);
			break;
		}
	}

	strlen = newstr.length;
	
	for(start=strlen; start>0; start--)
	{
		if(newstr.substring(start-1,start)!=" ")
		{ 
			retstr=newstr.substring(0,start);
			break;
		}
	}
	return retstr;
}
/* ======================================================================
	Function	: trimTA
	Input		: obj  : Any Form Object 	
	Retrieval	: String  : removes spaces from both the sides of the String and enter key from textarea(If text has no string value) will return
	Explanation : Used to trim the data contain by specified object
	========================================================================== */
function trimTA(obj)
{
	var strVal = obj.value;
	var retstr=trimValue(strVal);

	var objVal = retstr;
    var strSpecialChars = "`~!@#$%^&*()_-+=|{[}]\\\";:',\\\\<.>/?";
    var strFlagAlpha = 0;
    var strFlagNum = 0;
    var strFlagSpecial = 0;
    
    for(var j=0; j<objVal.length; j++)
    {
         var alphaa = objVal.charAt(j);
         var hh = alphaa.charCodeAt(0);
         if((hh > 64 && hh < 91) || (hh > 96 && hh < 123))
         {
              strFlagAlpha = 1;
         }
         if((hh > 47 && hh < 59))
         {
              strFlagNum = 1;
         }
         if(strSpecialChars.indexOf(alphaa)!=-1)
         {
              strFlagSpecial = 1;
         }
    }
    if(strFlagAlpha==0 && strFlagNum==0 && strFlagSpecial==0)
    {
       objVal = '';
    }
    obj.value= objVal;
}

/* ======================================================================
	Function	: replaceSpecialChars
	Input		: obj	  : Any Form Object 				  
	Retrieval	: String  
	Explanation : Used to replace special characters from data contain by specified object 
				  replace  ' , ", \, < by ` , ` , / , <space  respectivaly 	
	========================================================================== */
function replaceSpecialChars(obj)
{
	var strValue = obj.value;
	var iLen = strValue.length;

	if(iLen > MAX_COUNT)
	{
		strValue =  checkMaxSpace(replaceSpecialCharsValue(strValue),MAX_COUNT);
		var iMaxLength = obj.maxLength;
		if(iMaxLength)
		{
			if(strValue.length >= iMaxLength)
			{
				strValue = trimValue(strValue.substr(0,iMaxLength-1));
			}
		}
	}
	else
	{
		strValue =  trimValue(replaceSpecialCharsValue(strValue));
	}
	obj.value = strValue;
}

/* ======================================================================
	Function	: replaceSpecialCharacters
	Input		: obj	  : Any Form Object 				  
	Retrieval	: String  
	Explanation : Used to replace special characters from data contain by specified object 
				  replace  ' , ", \, < by ` , ` , / , <space  respectivaly. this method doesnot inserts blank space after continuous occurence of characters without space
	========================================================================== */
function replaceSpecialCharacters(obj)
{
	var strValue = obj.value;

	//This function is called to insert spaces if length of word is too long. Modified by Bhupinder
	obj.value =  replaceSpecialCharsValue(strValue);
}

/* ======================================================================
	Function	: replaceSpecialCharsCF
	Input		: obj	  : Any Form Object 				  
	Retrieval	: String  
	Explanation : Used to replace special characters from data contain by specified object 
				  replace  ' , ", \, < by ` , ` , / , <space  respectivaly 	
	========================================================================== */
function replaceSpecialCharsCF(obj, iCount)
{
	var strValue = obj.value;
	var iLen = strValue.length;
	
	//This function is called to insert spaces if length of word is too long. Modified by Bhupinder
	if(iLen > iCount)
	{
		//strValue =  replaceContChars(replaceSpecialCharsValue(strValue));
		strValue =  checkMaxSpace(replaceSpecialCharsValueCF(strValue),iCount);
		var iMaxLength = obj.maxLength;
		if(iMaxLength)
		{
			if(strValue.length > iMaxLength)
			{
				strValue = trimValue(strValue.substr(0,iMaxLength));
			}
		}
	}
	else
	{
		strValue =  replaceSpecialCharsValueCF(strValue);
	}
	obj.value = strValue;
}

/* ======================================================================
	Function	: replaceSpecialCharsCF
	Input		: obj	  : Any Form Object 				  
	Retrieval	: String  
	Explanation : Used to replace special characters from data contain by specified object 
				  replace  ' , ", \, < by ` , ` , / , <space  respectivaly 	
	========================================================================== */
function replaceSpecialCharactersCF(obj)
{
	obj.value = replaceSpecialCharsValueCF(obj.value);
}

/* ======================================================================
	Function	: checkCustomFields
	Input		: obj	  : Any Form Object 				  
	Explanation : Used to check whether space has been inserted for 'n' consecutive characters
	========================================================================== */
function checkMaxSpaceCount(obj,iCount)
{
	obj.value = checkMaxSpace(obj.value,iCount);
}

/* ======================================================================
	Function	: checkCustomFields
	Input		: strValue	 
	Explanation : Used to check whether space has been inserted for 'n' consecutive characters
	========================================================================== */
function checkMaxSpace(objValue,iCount)
{
	var strVal = objValue;
	var iLen=strVal.length;
	if(iLen>iCount)
	{
		for(var ctr=0, index=0; ctr<iLen; ctr++)		
		{
			if(strVal.charAt(ctr) == " " || strVal.charCodeAt(ctr) == 13 || strVal.charCodeAt(ctr) == 10 )
			{
				index = 0;
			}
			else
			{
				if(index == iCount)
				{
					strVal = strVal.substr(0,ctr)+" "+strVal.substr(ctr,iLen);
					iLen=strVal.length;
					index = 0;
				}
			}
			index++;
		}
	}
	return strVal;
}

/* ======================================================================
	Function	: replaceSpecialCharsValue
	Input		: strValue	  : String 				  
	Retrieval	: String  
	Explanation : Used to replace special characters from data contain by specified object 
				  replace  ' , ", \, < by ` , ` , / , <space  respectivaly 	
	========================================================================== */
function replaceSpecialCharsValue(strValue)
{
	var str=""; 

	var j=0;

	var strReturn = "";

	for(var i=0; i< strValue.length;i++) 
	{
		if(strValue.charAt(i) == '<' && strValue.charAt(i+1) != ' ')
		{  
			str += strValue.substring(j,i)+'< ';
			j=i+1;		
		}
		else if(strValue.charAt(i) == '&' && strValue.charAt(i+1) != ' ')
		{  
			str += strValue.substring(j,i)+'& ';
			j=i+1;		
		}
		else if(strValue.charCodeAt(i) == 8211)//for copy paste text.
	    {
	    	str=str+strValue.substring(j,i)+"-";
	    	j=i+1;
	    }
	    else if(strValue.charCodeAt(i) == 8220 || strValue.charCodeAt(i) == 8221)//for copy paste text.
	    {
	    	str=str+strValue.substring(j,i)+"`";  
	    	j=i+1;
	    }
	}

	strReturn = str + strValue.substring(j);	

	return strReturn;
}


/* ======================================================================
	Function	: replaceEmailChars
	Input		: strValue	  : String 				  
	Retrieval	: String  
	Explanation : 
	========================================================================== */
function replaceEmailChars(strValue)
{
	var str=""; 
	var j=0;
	for(var i=0; i< strValue.length;i++) 
	{
		if(strValue.charAt(i) == '<' && strValue.charAt(i+1) != ' ')
		{  
			str= str+strValue.substring(j,i)+'< '
			j=i+1		
		}
		if((strValue.charAt(i) == "\"") || (strValue.charAt(i) == "~")) 
		{
			str= str+strValue.substring(j,i)+"`"
			j=i+1		
		}

		if((strValue.charAt(i) =="\\")) 	{
			str= str+strValue.substring(j,i)+"/"
			j=i+1		
		}
	}
	return str + strValue.substring(j)
}
/* ======================================================================
	Function	: checkValidCode
	Input		: obj	  : Any Form Object 				  
	Retrieval	: boolean : if Data contains only alphabets, numbers, dot & underscore then returns true else false
	Explanation : Used To validate Data contain by specified object 
				  i.e Data should only alphabets, numbers & underscore
	========================================================================== */
function checkValidCode(obj)
{
	var theinput = obj.value;
	var thelength = theinput.length;
	var thechar = "";
	var blnReturn = false;

	for(ctr=0;ctr<thelength;ctr++)
	{
		thechar	=	theinput.substring(ctr,ctr+1);

		if(thechar	>=	"0" && thechar	<=	"9" || thechar	>=	"a" && thechar	<=	"z" || thechar	>=	"A" && thechar	<=	"Z" || thechar == "_" || thechar == ".") 
		{
			blnReturn = true;
		}
		else 
		{
			blnReturn = false;
		}
	}

	return blnReturn;
} 

/* ======================================================================
	Function	: checkEmail
	Input		: emailstr	  : Any String Value 				  
	Retrieval	: boolean : if Data contains only valid Email id then returns true else false
	Explanation : Used To validate Email Id
	========================================================================== */
function checkEmail(emailStr) 
{
   if (emailStr.length == 0) 
   {
       return true;
   }
   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) 
   {
       return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];
   if (user.match(userPat) == null) 
   {
       return false;
   }
   var IPArray = domain.match(ipDomainPat);
   if (IPArray != null) 
   {
       for (var i = 1; i <= 4; i++) 
   {
          if (IPArray[i] > 255) 
      {
             return false;
          }
       }
       return true;
   }
   var domainArray=domain.match(domainPat);
   if (domainArray == null) 
   {
       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)) 
   {
       return false;
   }
   if (len < 2) 
   {
       return false;
   }
   return true;
}

/* ======================================================================
Function	: checkURL
Input		: str	  : Any String Value
			  pattern : String Value having Regular Exp.
Retrieval	: boolean : if Data matches then returns true else false
Explanation : Used To validate that Data is in particular format or not.
========================================================================== */
function checkURL(strUrl) 
{
	if (strUrl.length == 0) 
    {
       return true;
    }
	var regexp = /^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\~\`\[\]\|\<\>\{\}\!\@\#\%\^\&\*\(\)\=\-\.\?\,\'\/\\\+&amp;\$#_]*)?$/;
	if (regexp.test(strUrl)) 
	{
		return true;
	} 
	else
	{
		return false;
	}
}


/* ======================================================================
	Function	: checkPattern
	Input		: str	  : Any String Value
				  pattern : String Value having Regular Exp.
	Retrieval	: boolean : if Data matches then returns true else false
	Explanation : Used To validate that Data is in particular format or not.
	========================================================================== */
function checkPattern(str,pattern) 
{
	var re=new RegExp(pattern);
	if (str.match(re)) 
	{
		return true;
	} 
}

/* ======================================================================
	Function	: checkRule
	Input		: str	  : Any String Value
				  value   : Any String Value
				  rule    : String value rule apply between first two parameters.
	Retrieval	: boolean : if condition satisfies then returns true else false
	Explanation : Used To compare value of two components.
	========================================================================== */
function checkRule(str,value,rule)
{
	if(eval("str"+rule+"value"))
		return true;
	else
		return false;
}		

/* ======================================================================
	Function	: checkMinLength
	Input		: str	     : Any String Value
				  iminLength : Condition minimum length
	Retrieval	: boolean : if length of string is less than iminLength then returns true else false
	Explanation : Used To validate that Data is not too small.
	========================================================================== */
function checkMinLength(str,iminLength)
{
	var ilen=str.length;
	if(ilen<iminLength)
	{	
		return true;
	}
}

/* ======================================================================
	Function	: checkMaxLength
	Input		: str	     : Any String Value
				  imaxLength : Condition maximum length
	Retrieval	: boolean : if length of string is greater than imaxLength then returns true else false
	Explanation : Used To validate that Data is not too small.
	========================================================================== */
function checkMaxLength(str,imaxLength)
{
	var ilen=str.length;
	if(ilen>imaxLength)
	{	
		return true;
	}
}

/* ======================================================================
	Function	: checkComboMaxSelect
	Input		: objCmb	: Combo Object
	Retrieval	: boolean : if selected length of the combo is greater than giMaxSelectCount then false
	Explanation : Used To validate the selected count of combo is not greater than giMaxSelectCount.
	========================================================================== */

function checkComboMaxSelect(objCmb)
{
	var iLength = objCmb.length;
	var iCount = 0;
	var blnFlag = true;
	if(iLength > MAX_SELECT_COUNT)
	{
		var iCnt=0;
		for(;iCnt<iLength;iCnt++)
		{
			if(objCmb.options[iCnt].selected == true)
			{
				if(iCount >= MAX_SELECT_COUNT)
				{
					showAlert(MAX_COMBO_SELECT_COUNT, MAX_SELECT_COUNT);
					objCmb.options[iCnt].selected = false;
					blnFlag = false;
					break;
				}
				iCount++;
			}
		}
		if(!blnFlag)
		{
			for(var iCtr=iCnt;iCtr<iLength;iCtr++)
			{
				objCmb.options[iCtr].selected = false;
			}
		}
	}
	return blnFlag;
}

function trimReplace(objForm,obj)
{
	var iLength = obj.length;
	for(iCnt=0;iCnt<iLength;iCnt++)
	{
		trim(objForm[obj[iCnt]]);
		replaceSpecialChars(objForm[obj[iCnt]]);
	}
}

function replaceSpecialCharsURL(obj)
{
	var strValue = obj.value;
	var iLen = strValue.length;

	strValue =  trimValue(replaceSpecialCharsURLValue(strValue));
	
	obj.value = strValue;
}

function replaceSpecialCharsURLValue(strValue)
{
	var str=""; 

	var j=0;

	var strReturn = "";

	for(var i=0; i< strValue.length;i++) 
	{
		if(strValue.charCodeAt(i) == 8211)//for copy paste text.
	    {
	    	str=str+strValue.substring(j,i)+"-";
	    	j=i+1;
	    }
	    else if(strValue.charCodeAt(i) == 8220 || strValue.charCodeAt(i) == 8221)//for copy paste text.
	    {
	    	str=str+strValue.substring(j,i)+"`";  
	    	j=i+1;
	    }
	}

	strReturn = str + strValue.substring(j);	

	return strReturn;
}
