/**
	This is the global file to form validation. 

	Form attributes using by the file is as follows
	1)	 valid
	2)	 errname
	3)	 filetype

	Syntax of the each attribute is as follows
	1)	 valid
	-----------
		This attribute is used to define that element is mandatory or not and also to define that element hold only
		integer or real or date or alphanumeric or file or any characters. General syntax of this attribute is
		{1}_{2}
		here 
		{1} -> m | n
		m -> Mandatory
		n ->	Non Mandatory

		{2} -> i | r | d | f | a | s
		i ->	Integer
		r ->	Real
		d ->	Date
		f ->	File
		a ->	Alpha Numeric
		s ->	Special Char

	2)	 errname
	---------------
		This attribute is used to display the element name to show in the alert box. It contain any string value.

	3)	 filetype
	--------------
		This attribute is used which type of file can be accepted in file element. Now they are three type of files 
		are declared here those values are

			(1)	image :	 For all the image file.
			(2	)	doc     :	 For all the documents.
			(3)	html    : For all the html files.
		
*/

/**
	Some of the constants and error message is prefixed here
*/

var MANDATORY_ERROR = " Please [1] [2]";
var INTEGER_ERROR = "* Please Enter Only Integer Values in [1]";
var HTML_ERROR = "* Invalid characters such as > or < or < > are not allowed";
var MULTIPLELISTBOX_ERROR="Please Select a value in [2]";
var ET_ERROR = "* Please Enter Only Integer Values in [1].The Range is [1-60].";
var NAME_ERROR = "* Please Enter Only Alphabets,Numbers and Special Characters \ - ( , ) . / ' in [1]";
var NAME_ERRORS="*Please Enter Only alphabets, numbers, dot and space , ( and ) in [1]";
var NAME_ERROR_SC="*Please Enter Only alphabets, numbers and special character like dot, \, -, &, @, (, ) and , in [1]";
var NAME_ERROR_SC_F="*Please Enter Only alphabets, numbers and special character like &,-,.,@ in [1]";
var NAME_ERRORDOT="*Please Enter Only alphabets, dot and space in [1]";
var NAME_ERRORI="*Please Enter Only alphabets, numbers and Special Character - in [1]";
var REAL_ERROR = "* Please Enter Only Real Values in [1]";
var DATE_ERROR = "* Please Enter Valid Calendar Date in [1]. Format is DD-MM-YYYY";
var ALPHA_ERROR = "* Please Enter Only Alpha Numeric Characters With .,- Special Characters in [1]";
var ALPHA_ERROR_sl= "* Please Enter Only Alpha Numeric Characters and Special Character / in [1]";
var EMAIL_ERROR = "* Please Enter Valid Email Id";
var DOMAIN_ERROR = "* Please Enter Valid Email domain";
var URL_ERROR = "* Please Enter Valid URL";
var URL_ERRORs="* Please Enter Valid URL";
var ZIP_ERROR = "* Please Enter Valid Pincode";
var TIME_ERROR = "* [1] Accepts Alpha Numeric,Colon and Hyphen";


var ACCPAC_ERROR = "* Please Enter Only Alphabets,Numbers and Special Characters \\ - / in [1]";

var NAMEHYPENBACKSLASH_ERROR = "* Please Enter Only Alphabets,Numbers,Space and Special Characters like  dot, @, &, -, (, )  in [1]";

var SPECIAL_ERROR = "* Some of the Special Characters are not Allowed in [1]";

var IMAGE_FILE_ERROR = "* [1] Accepts Only Jpeg/Jpg/Bmp/gif Files";
var DOC_FILE_ERROR = "* Please Choose Only Pdf or Word Document File in [1]";
var HTML_FILE_ERROR = "* Please Choose Only Html File in [1]";
var TEXT_FILE_ERROR = "* Please Choose Only Text File in [1]";
var EXCEL_FILE_ERROR = "* Please Choose Only Excel File in [1]";

var IMAGE_FILE = /\.(gif|jpeg|jpg|bmp)$/gi;
var DOC_FILE = /\.(doc|pdf)$/gi;
var HTML_FILE = /\.(htm|html)$/gi;
var TEXT_FILE = /\.(txt|csv)$/gi;
var EXCEL_FILE = /\.(xls|csv)$/gi;

var MAX_LENGTH_ERROR = "* Maximum No of Character is Allowed in [1] is [2]";
var MONEYVALUE_ERROR = " * [1]  Accepts Only Numbers and Two Decimal Points. Ex[XXXXXXXX.XX]."; 
var NAMEALPHABET_ERROR = " * [1] Accepts Alphabets and Space.It should start with Alphabet.";
var MINIMUM_ERROR="* Minimum No of Character in [1] should be [2] Characters";
var MAXIMUM_ERROR="Maximum No of Character in [1] is [2] Characters ";
var MINIMUM_ONE_NUMERIC_ERROR="* [1] Accepts Alphabet with minimum one Numeric character";
var MINIMUM_ONE_SPECIAL_CHARACTER="* [1] Accepts Minimum One Special Character";
var MINIMUM_ONE_UPPERCASECHARACTER="* [1] Accepts Minimum One Uppercase Character";
var MINIMUM_ONE_ALPHABET="* [1] Accepts Minimum one Alphabet";
var MINIMUM_ONE_SPECIALCHARACTER="* [1] Accepts Minimum one Special Character";
var COMPARISION_ERROR="* [1] and [2] Must be same";
//var CODE_ERROR="[1] Accepts only AlphaNumeric, First Character must be Alphabet";
var NEWCODE_ERROR="[1] Accepts only AlphaNumeric.";
var NAME_ERROR="[1] Accepts alphabets, Underscore, spaces and Hypen, First Character must be Alphabet";

var CODE_ERROR="Invalid [1] Accepts only alphanumeric, first character must be alphabet.";

var NA_ERROR="[1] Accepts alphabets and spaces, First Character must be Alphabet";
var ANA_ERROR="[1] Accepts alphabets, numbers and spaces, First Character must be Alphabet";
var ANAU_ERROR="[1] Accepts alphabets, number and underscore. First character should always be an alphabet";
var CONA_ERROR="[1] Accepts alphabets and space.";
var DEP_ERROR="[1] Accepts AlphaNumeric and space.";
var DEPT_ERROR="[1] Accepts only alphabets and numbers.";
var ALPHA_SPL_ERROR="[1] Accepts AlphaNumeric,-,/ and \\";
var LCP_ERROR="[1] Accepts AlphaNumeric,space,dot,( and )";
var CNV_ERROR="[1] Accepts AlphaNumeric,space,dot,&,-,( and )";
var ALNC_ERROR ="[1] Accepts AlphaNumeric,space,&,-,( ) comma and dot";
var CURR_ERROR="[1] Accepts alphabets Only.";
var COMM_ERROR="[1] Accepts AlphaNumeric and Special Characters.";
var DEP_ERROR = "[1] Accepts AlphaNumeric and spaces."; 
var DOT_ERROR = "[1] Accepts Numeric and Dots. Only two digits after Decimal";
var FOURDIGIT_ERROR =  "[1] Accepts only 12 digits with Four Decimal place.";
var TELEPHONE_ERROR  = "[1] Accepts only Numeric,(  ) and -";
var RETWODIGIT_ERROR =  "[1] Accepts only 18 digits with two Decimal place.";
var TAXPER_ERROR =  "[1] Accepts only 2 digits with Two Decimal place.";
var SN_ERROR="[1] Accepts AlphaNumeric only.";
var ANSPL_NO_ERROR = "* Please Enter Only Alphabets,Numbers,Space and Special Characters like  &, -, \\, /  in [1]";

var FirstANSPL_NO_ERROR = "* Please Enter Only Alphabets,Numbers,Space and Special Characters like  &, -, \\, /  in [1].First Character must be Alphabet or Numeric";

var NAME_ANSlBsOpCpAmHyComDotSp_ERROR = "* Please Enter Only Alphabets,Numbers, Space and Special Characters like /, (, ), \\, &, -, Comma and Dot in [1].First Character must be Alphabet";
var NAME_ANSlBsOpCpAmHyComDot_ERROR = "* Please Enter Only Alphabets,Numbers and Special Characters like /, (, ), \\, &, -, Comma and Dot with no space in [1].First Character must be Alphabet";

var NAME_FirstANSlBsOpCpAmHyComDotSp_ERROR = "* Please Enter Only Alphabets,Numbers, Space and Special Characters like /, (, ), \\, &, -, Comma and Dot in [1]. First character should always be an alphabet";

var NAME_FirstAorNumNSlBsOpCpAmHyComDotSp_ERROR = "* Please Enter Only Alphabets,Numbers, Space and Special Characters like /, (, ), \\, &, -, Comma and Dot in [1]. First character should always be an alphabet or Number";

/*
	This function takes user form as an input parameter and it traverse one by one form element according 
	to attributes it will pass the control to other functions. If any function returns false then it will display
	alert message to the user and control will return to the caller.
	
	@input	form		user form
	@output	false if it user enters any wrong character or true
*/

function passwordvalidation(objElement)
{


		if(objElement.value.length<objElement.getAttribute("minlength"))
		{

		jsfDisplayErrorMessage(MINIMUM_ERROR,objElement.getAttribute("errname"),objElement.getAttribute("minlength"));
		return false;
		
		}
		if(objElement.getAttribute("comparefield")!=null)
		{
		
		var comparefield=objElement.getAttribute("comparefield");
		if(document.getElementById(comparefield).value!=objElement.value)
		{
		jsfDisplayErrorMessage(COMPARISION_ERROR,objElement.getAttribute("errname"),document.getElementById(comparefield).getAttribute("errname"));
		return false;
		}
		
		}
		
		var complexity=objElement.getAttribute("complexity");
	
	   switch (parseInt(complexity))
				{
				case 1 :
						//return jsfCheckAlphaNumeric(objElement);
						return jsfCheckMinimumOneAlphabet_OneNumeric(objElement);
						break;
				case 2 :
						return jsfCheckInteger(objElement);
						break;
				case 4:
						return jsfCheckNotSpecialChar(objElement);
						break;
				case 9 :
						return jsfCheckAlphaNumericwithOneNumeric(objElement);	
						break;
						
						
				case 12 :
						return jsfCheckAlphaNumeric_specialCharacter_OneNumeric(objElement);
						break;	
				case 17 :
						return jsfCheckMinimumOneUpperCaseCharacter(objElement);
						break;
				case 20 :
						return jsfCheckMinimumOneUpper_CaseCharacter_Special(objElement);
						break;
				case 25 :
						return jsfCheckMinimumOneUpper_OneNumeric(objElement);	
						break;
				case 28	:
						return jsfCheckMinimumOneUpper_OneNumeric_special(objElement);
						break;
				case 33 :
						return jsfCheckMinimumOneAlphabet(objElement);
						break;
				case 36 :
						return jsfCheckMinimumOneAlphabet_Special(objElement);
						break;
				
				case 41 :
						return jsfCheckMinimumOneAlphabet_OneNumeric(objElement);
						break;
				case 44:
						return jsfCheckMinimumOneAlphabet_OneNumeric_special(objElement);
						break;
						
				case 49 :
						return jsfCheckMinimumOneUpperCase_Alphabet(objElement);
						break;
						
				case 52 :
						return jsfCheckMinimumOneUpperCase_Alphabet_special(objElement);
						break;
				case 57 :
						return jsfCheckMinimumOneUpperCase_Alphabet_Numeric(objElement);
						break;
						
				case 60 :
						return jsfCheckMinimumOneUpperCase_Alphabet_Numeric_Special(objElement);
						break;
				default :
						return true;
				}
	
	return true;	
		
}
function jsfValidateForm(form) {
	var attValid;
	var objElement;
	var controls = jsfChildElements(form);
	for(var i = 0; i < controls.length; i++) {
		objElement = controls[i];
		
		attValid = objElement.getAttribute("valid");
		if (attValid)
		  {
			if (!jsfCheckFormElement(objElement, attValid) ) {
		
				return false;
			}
			else if(objElement.getAttribute("type")=="password")
			{
			
			 if( !(passwordvalidation(objElement)))
			 {
				return false;
			 }
			else
			{
			}
			}
		
		}
	}
	return true;
}

function jsfRestrcitHtmlTags(objElement) {
    var imgheader = Trim(objElement.value);
    var len = imgheader.length;
	if (imgheader != "")
	{
	    for(var j=0;j<len;j++)
		{
			if(imgheader.charAt(j) == "<" || imgheader.charAt(j)== ">")   
			{
			    jsfDisplayErrorMessage(HTML_ERROR, objElement.getAttribute("errname"));
				objElement.focus(); 
				return false;
			}
		}
		return true;
	}
}

function jsfChildElements(inputCtl) {
	if(inputCtl.tagName == "FORM" ) {
		return inputCtl.elements;
	}else {
		var isSortNedded = (arguments.length > 1) ? arguments[1] : true;
		arrObject = new Array();
		var re = /INPUT|SELECT|TEXTAREA|hidden/gi;
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("INPUT"));
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("SELECT"));
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("TEXTAREA"));
		arrObject = jsfAddObjectToArray(arrObject, inputCtl.getElementsByTagName("HIDDEN"));
		if(arrObject.length > 0 && isSortNedded) {
			arrObject = jsfSortArrayElements(arrObject, arrObject[0].form.elements);
		}
		return arrObject;
	}
}

//	Sort elements in the form order by given 

function jsfSortArrayElements(divArr, formArr) {
	var arrElements = new Array();
	for(var i = 0; i < formArr.length; i++) {
		if( jsfIsArrayValueExist(divArr, formArr[i]) ) {
			arrElements[arrElements.length] = formArr[i];
		}
	}
	return arrElements;
}

function jsfAddObjectToArray(array, object) {
	for(var i=0; i < object.length; i++) {
		array[array.length] = object[i];
	}
	return array;
}

function jsfClearValues(inputCtl) {
	var controls = jsfChildElements(inputCtl);
	for(var i = 0; i < controls.length; i++) {
		if(controls[i].type == "text" || controls[i].type.match("^select")) {
			controls[i].value = "";
		}
	}
}

function jsfDisableCtls(inputCtl, disable){
	var controls = jsfChildElements(inputCtl);
	var controltypes = "";
	for(var i=0;i<controls.length;i++){
		if(controls[i].type == "text" || controls[i].type.match("^select") || controls[i].type == "checkbox" || controls[i].type == "radio"){
			controls[i].disabled = disable;
		}
		controltypes += controls[i].type + "\n";
	}
}

/**
	This function check the giving form element according to their valid parameter

	@input objElement Form element
	@input	attValid	Attribute in each form element
	@output	false if it user enters any wrong character or true

*/

function jsfCheckFormElement(objElement, attValid) {
	
	if ( attValid.match( /^m/i ) )  {
		if ( !jsfCheckMandatory(objElement) ) {
			return false;
		}
	}
	
	if ( trim(objElement.value) != "" ) {

		var result = new String(attValid.match(/_\w+$/gi));
		result = result.substr(1, result.length - 1);
	
		switch (result) {
			case "html":
			if ( !jsfRestrcitHtmlTags(objElement) ) {
				return false;
			}
			break;
			case "i":
				if ( !jsfCheckInteger(objElement) ) {
					return false;
				}
				break;

			case "si":
				if ( !jsfCheckSignedInteger(objElement) ) {
					return false;
				}
				break;

		
			case "r":
				if ( !jsfCheckReal(objElement) ) {
					return false;
				}
				break;

			case "sr":
				if ( !jsfCheckSignedReal(objElement) ) {
					return false;
				}
				break;
			
			case "d":
				if ( !jsfCheckDate(objElement) ) {
					return false;
				}
				break;

			case "a":
				if ( !jsfCheckAlphaNumeric(objElement) ) {
					return false;
				}
				break;

             case "asl":
				if ( !jsfCheckAlphaNumeric_Slash(objElement) ) {
					return false;
				}
				break;
			case "s":
				if ( !jsfCheckSpecialChar(objElement) ) {
					return false;
				}
				break;

			case "f":
				if ( !jsfCheckFile(objElement) ) {
					return false;
				}
				break;

			case "n":
				if ( !jsfCheckName(objElement) ) {
					return false;
				}
				break;
				
			case "accpac":
				
				if ( !jsfCheckAccPac(objElement) ) {
					return false;
				}
				break;
				
			case "nhypsplchr":
				
				if ( !jsfCheckNameHypenSlashBack(objElement) ) {
					return false;
				}
				break;
				
			case "ANSpl":
				if ( !jsfCheckANSplNo(objElement) ) {
					return false;
				}
				break;
				
			case "FAORNSpl":
				if ( !jsfCheckFirstAlphaOrNumSplNo(objElement) ) {
					return false;
				}
				break;
				
				
			case "ANSplChars":
				if ( !jsfCheckANSlBsOpCpAmHyComDotSp(objElement) ) {
					return false;
				}
				break;	
				
				
				
				case "FANSplChars":
				if ( !jsfCheckFirstANSlBsOpCpAmHyComDotSp(objElement) ) {
					return false;
				}
				break;	
				
					case "FNANSplChars":
				if ( !jsfCheckFirstAorNumNSlBsOpCpAmHyComDotSp(objElement) ) {
					return false;
				}
				break;	
				
				
				
			case "ANSplCharsNoSp":
				if ( !jsfCheckANSlBsOpCpAmHyComDot(objElement) ) {
					return false;
				}
				break;	
				
			case "nn":
				if ( !jsfCheck_Name(objElement) ) {
					return false;
				}
				break;
			case "ns":
				if ( !jsfCheck_Name_spChar(objElement) ) {
					return false;
				}
				break;	
				
			case "nss":
				if ( !jsfCheck_Name_spChars(objElement) ) {
					return false;
				}
				break;				
			case "nd":
				if ( !jsfCheck_NameWithDot(objElement) ) {
					return false;
				}
				break;
			case "ani":
				if ( !jsfCheck_NameWithI(objElement) ) {
					return false;
				}
				break;
				
			
			case "e":
				if ( !jsfCheckEmail(objElement) ) {
					return false;
				}
				break;
			case "domain":
				if(!jsfCheckEmailDomain(objElement))
				{
					return false;
				}
				break;
			case "t":
				if ( !jsfCheckTime(objElement) ) {
					return false;
				}
				break;

			case "mo":
					if(!jsfCheckMoneyValue(objElement) ) {						
						return false;
					}
					break;
			case "et":
					if(!jsfCheckEstimatedTime(objElement) ) {						
						return false;
					}
					break;
			case "na":
					if(!jsfCheckAlphaName(objElement) ) {						
						return false;
					}
					break;
			case "ml":
				if(!jsfCheckmultiplelistbox(objElement))
				{
				return false;
				}
				break;

			case "code":
					if(!(jsfCheckCode(objElement)))
					return false;
					break;
			case "dot":
					if(!(jsfCheckdot(objElement)))
					return false;
					break;
		    case "Fourdigit":
					if(!(jsfCheckFourDigit(objElement)))
					return false;
					break;
			case "RETaxPer":
					if(!(jsfRegExpTaxPer(objElement)))
					return false;
					break;
			 case "RETwoDigit":
					if(!(jsfRegExpTwoDigit(objElement)))
					return false;
					break;
					
			case "Newcode":
			       if(!(jsfCheckNewCode(objElement)))
					return false;
					break;
			case "tele":
				if ( !(jsfChecktele(objElement)) )
					return false;
					break;	
			case "name":
					if(!(jsfCheckNaame(objElement)))
					return false;
					break;
			case "Ans":
					if(!(jsfCheckNaameNum(objElement)))
					return false;
					break;
			case "sn":
					if(!(jsfCheckShortName(objElement)))
					return false;
					break;
			case "Anu":
					if(!(jsfCheckNaame_Num(objElement)))
					return false;
					break;
			case "countryname":
					if(!(jsfCheckCountryName(objElement)))
					return false;
					break;
			case "depname":
					if(!(jsfCheckdepName(objElement)))
					return false;
					break;
					
			case "An":
					if(!(jsfCheckdeptName(objElement)))
					return false;
					break;
					
			case "AlphaSpl":
					if(!(jsfCheckAlphaNumericWithSpecial(objElement)))
					return false;
					break;
			
			case "LCP":
					if(!(jsfCheckLCP(objElement)))
					return false;
					break;
					
			case "CNV":
					if(!(jsfCheckCNV(objElement)))
					return false;
					break;
					
			case "ALNC":
					if(!(jsfCheckALNC(objElement)))
					return false;
					break;
					
			case "currencyname":
					if(!(jsfCheckCurrencyName(objElement)))
					return false;
					break;
		   case "cname":
					if(!(jsfCheckCurrencyNameNospace(objElement)))
					return false;
					break;
			case "comments":
					if(!(jsfCheckComments(objElement)))
					return false;
					break;
			case "phone":
				if ( !jsfCheckPhone(objElement) )
					return false;
					break;
			case "url":
				if ( !jsfCheckValidURL(objElement) )
					return false;
					break;
			case "urls":
				if ( !jsfCheckValid_URL(objElement) )
					return false;
					break;
			case "httpurl":
				if ( !jsfCheckValid_URL_HTTP(objElement) )
					return false;
					break;		
					
			case "zip":
				if ( !jsfCheckValidZipCode(objElement) )
					return false;
					break;
        }
	
	}

	if ( !jsfCheckMaxLength(objElement) ) {
		return false;
	}
	return true;
}

/**
	This function checks whether the given form element contains any value or not

	@input objElement as Form Element
	@output value boolean true if it contains any value otherwise false
*/
//Checks for Code
function jsfCheckCode(objElement)
{
var re=/^[a-zA-Z][a-zA-Z0-9]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(CODE_ERROR,objElement.getAttribute("errname"));
objElement.focus();
return false;
}
return true;
}
//Checks for New Code
function jsfCheckNewCode(objElement)
{
var re=/^[a-zA-Z0-9][a-zA-Z0-9]*$/gi
//var re=/^[a-zA-Z0-9\,\.\(\)\\\/\-\&\s]$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(NEWCODE_ERROR,objElement.getAttribute("errname"));
objElement.focus();
return false;
}
return true;
}



function jsfCheckALNC(objElement)
{
	
	var re=/^[a-zA-Z0-9\,\.\(\)\-\&\s\/\\]*$/gi
	if(objElement.value.match(re)!=objElement.value)
	{
		jsfDisplayErrorMessage(ALNC_ERROR,objElement.getAttribute("errname"));
		objElement.focus();
	return false;
	}
  return true;
}



//Checks for Name
function jsfCheckNaame(objElement)
{
var re=/^[a-zA-Z][a-zA-Z\s]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(NA_ERROR,objElement.getAttribute("errname"));
objElement.focus();
return false;
}
return true;
}

//Checks for Short Name

function jsfCheckShortName(objElement)
{
	var re=/^[a-zA-Z0-9]*$/gi
	if(objElement.value.match(re)!=objElement.value)
	{
		jsfDisplayErrorMessage(SN_ERROR,objElement.getAttribute("errname"));
		return false;
	}
	return true;
}
// End of Short Name


//Check Alphanumeric and Space
//Checks for Name
function jsfCheckNaameNum(objElement)
{
var re=/^[a-zA-Z][a-zA-Z0-9\s]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(ANA_ERROR,objElement.getAttribute("errname"));
objElement.focus();
return false;
}
return true;
}
//End
//Check Alphanumeric and underscore
//Checks for Name
function jsfCheckNaame_Num(objElement)
{
var re=/^[a-zA-Z][a-zA-Z0-9\_\\]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(ANAU_ERROR,objElement.getAttribute("errname"));
objElement.focus();
return false;
}
return true;
}
//End
//jsfCheckdot
//Checks for Numbers with Dot
function jsfCheckdot(objElement)
{
	var re = /^[0-9]*[.]?[0-9]?[0-9]?$/;
	if(objElement.value.match(re)!=objElement.value)
	{
	jsfDisplayErrorMessage(DOT_ERROR,objElement.getAttribute("errname"));
	objElement.focus();
	return false;
	}
	return true;
 
}
function jsfCheckFourDigit(objElement)
{
	//var re = /^[0-9]*[.]?[0-9]?[0-9]?[0-9]?[0-9]?$/;
	var re  = /(^\d{1,7}\.\d{1,4}$)|(^\d{1,7}$)|(^\.\d{1,4}$)/;
	if(!re.test(objElement.value))
	{
		jsfDisplayErrorMessage(FOURDIGIT_ERROR,objElement.getAttribute("errname"));
		return false;
	}
	return true;
 
}

function jsfCheckValidZipCode(objElement)
{
	var re  = /(^\d{6}$)/;
	if(!re.test(objElement.value))
	{
		jsfDisplayErrorMessage(ZIP_ERROR,objElement.getAttribute("errname"));
		return false;
	}
	return true;
}

function jsfRegExpTaxPer(objElement)
{
	//var re = /^[0-9]*[.]?[0-9]?[0-9]?[0-9]?[0-9]?$/;
	var re  = /(^\d{1,2}\.\d{1,2}$)|(^\d{1,2}$)|(^\.\d{1,2}$)|(100)$/;
	if(!re.test(objElement.value))
	{
		jsfDisplayErrorMessage(TAXPER_ERROR,objElement.getAttribute("errname"));
		return false;
	}
	return true;
 
}
function jsfRegExpTwoDigit(objElement)
{
	//var re = /^[0-9]*[.]?[0-9]?[0-9]?[0-9]?[0-9]?$/;
	
	var re  = /(^\d{1,15}\.\d{1,2}$)|(^\d{1,15}$)|(^\.\d{1,2}$)/;
	if(!re.test(objElement.value))
	{
		jsfDisplayErrorMessage(RETWODIGIT_ERROR,objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
 
}

//Checks for Alphanumeric and space
function jsfCheckdepName(objElement)
{
	var re=/^[a-zA-Z0-9\s]*$/gi
	if(objElement.value.match(re)!=objElement.value)
	{
	jsfDisplayErrorMessage(DEP_ERROR,objElement.getAttribute("errname"));
	objElement.focus();
	return false;
	}
	return true;
}
//Checks for Alphanumeric 
function jsfCheckdeptName(objElement)
{
	var re=/^[a-zA-Z0-9]*$/gi
	if(objElement.value.match(re)!=objElement.value)
	{
	jsfDisplayErrorMessage(DEPT_ERROR,objElement.getAttribute("errname"));
	objElement.focus();
	return false;
	}
	return true;
}

function jsfCheckAlphaNumericWithSpecial(objElement) 
{
	var re = /^[a-zA-Z0-9-/\\]*/gi;
	if(objElement.value.match(re)!=objElement.value)
	{
	jsfDisplayErrorMessage(ALPHA_SPL_ERROR,objElement.getAttribute("errname"));
	objElement.focus();
	return false;
	}
	return true;
}

function jsfCheckLCP(objElement) 
{
	var re = /^[a-zA-Z0-9\s\.\(\)]*/gi;
	if(objElement.value.match(re)!=objElement.value)
	{
	jsfDisplayErrorMessage(LCP_ERROR,objElement.getAttribute("errname"));
	objElement.focus();
	return false;
	}
	return true;
}

function jsfCheckCNV(objElement) 
{
	var re = /^[a-zA-Z0-9\-\&\.\(\)\s]*/gi;
	if(objElement.value.match(re)!=objElement.value)
	{
	jsfDisplayErrorMessage(CNV_ERROR,objElement.getAttribute("errname"));
	objElement.focus();
	return false;
	}
	return true;
}


//Checks for Country Name   
function jsfCheckCountryName(objElement)
{
var re=/^[a-zA-Z\s]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(CONA_ERROR,objElement.getAttribute("errname"));
objElement.focus();
return false;
}
return true;
}

//Checks for dep Name   
function jsfCheckdepName(objElement)
{
var re=/^[a-zA-Z0-9\s]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(DEP_ERROR,objElement.getAttribute("errname"));
return false;
}
return true;
}
//Checks for Currency Name
function jsfCheckCurrencyName(objElement)
{
var re=/^[a-zA-Z\s]*$/gi
//var re=/^[a-zA-Z]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(CURR_ERROR,objElement.getAttribute("errname"));
return false;
}
return true;
}
//alpabets with out space
//Checks for Currency Name
function jsfCheckCurrencyNameNospace(objElement)
{
//var re=/^[a-zA-Z\s]*$/gi
var re=/^[a-zA-Z]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(CURR_ERROR,objElement.getAttribute("errname"));
objElement.focus();
return false;
}
return true;
}

//Checks for Comments
function jsfCheckComments(objElement)
{
var re=/^[a-zA-Z0-9\s,.@#$%&()<>]*$/gi
if(objElement.value.match(re)!=objElement.value)
{
jsfDisplayErrorMessage(COMM_ERROR,objElement.getAttribute("errname"));
return false;
}
return true;
}
function jsfCheckMandatory(objElement) {

	var type = "enter";
	//alert(objElement.selectedIndex);
	
	if((objElement.getAttribute("type")!="text")&&(objElement.getAttribute("type")!="password"))
	{
	if(objElement.selectedIndex==0)
	{
		objElement.focus();
		alert("Please select "+objElement.getAttribute("errname"));
		return false;
	}
	

	
	}
	if ( trim(objElement.value) == "" ) {
		if(objElement.type.match("^select")) type = "Select";
		jsfDisplayErrorMessage(MANDATORY_ERROR, type, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


/**
	This function checks the given value in the form is an integer

	@input objElement as Form Element
	@output value boolean true if it is an integer or false
*/

function jsfCheckInteger(objElement) {
	var re = /^[0-9]\d*|^0$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(INTEGER_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}
function jsfCheckPhone(objElement) {
   //var regExp = /^[+]|[0-9]\d*|^1$/gi
	var regExp = /^\+?\d+$/gi
	//if ( objElement.value.match(regExp) != objElement.value ) {
	 if(!regExp.test(objElement.value)) {
		jsfDisplayErrorMessage(INTEGER_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


function jsfChecktele(objElement) {
	var regExp = /^[\d\(][\d\(\)\-\s\,]*[\d\)]$/;
	 //if(!regExp.test(objElement.value)) {
	 if ( objElement.value.match(regExp) != objElement.value ) {
		jsfDisplayErrorMessage(TELEPHONE_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}
function jsfCheckmultiplelistbox(objElement) {
var cnt=0;
for(var i=0;i<objElement.options.length;i++)
		{
		if ( objElement.options[i].selected ) {
		cnt=cnt+1;
		}
		}
		if (cnt<=0)
		{
		jsfDisplayErrorMessage(MULTIPLELISTBOX_ERROR, objElement.getAttribute("errname"));
		alert("error");
		return false;
		}
		alert("noerror");
	return true;
}

function jsfCheckSignedInteger(objElement) {
	var re = /^[+|\-]?[1-9]\d*|^0$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(INTEGER_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}
/**
	This function checks the given value in the form is an real

	@input objElement as Form Element
	@output value boolean true if it is an real or false
*/

function jsfCheckReal(objElement) {
	var re = /^[1-9]\d*\.?\d*|^0\.\d+|^0$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(REAL_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckSignedReal(objElement) {
	var re = /^[+|\-]?[1-9]\d*\.?\d*|^0\.\d+|^0$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(REAL_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

/**
	This function checks the given value in the form is an valid calendar date

	@input objElement as Form Element
	@output value boolean true if it is an valid calendar date or false
*/

function jsfCheckDate(objElement) {
	if ( !jsfCheckDateByValue(objElement.value) ) {
		jsfDisplayErrorMessage(DATE_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	
	return true;
}

function jsfCheckDateByValue(strInput) {
	var re = /^((29-0?2-\d{2}([13579][26]|[02468][048]))|((0?[1-9]|[1-2]\d|3[0-1])-(0?[13578]|10|12)-\d{4})|((0?[1-9]|[1-2]\d|30)-(0?[469]|11)-\d{4})|((0?[1-9]|1\d|2[0-8])-0?2-\d{4}))/g;
	//strInput = strInput.replace(/\-/g, ".");
	//strInput = strInput.replace(/\//g,"-");
	if (strInput.match(re) == strInput) {
		return true;
	}
	return false;
}

/**
	This function checks the given value in the form is alpha numeric character

	@input objElement as Form Element
	@output value boolean true if it is alpha numeric characters or false
*/

function jsfCheckAlphaNumericwithOneNumeric(objElement)
{
	if(!(jsfCheckAlphaNumeric(objElement)))
	{
	//jsfDisplayErrorMessage(MINIMUM_ONE_NUMERIC_ERROR,objElement.getAttribute("errname"));
	return false;
	}
	var re=/[a-zA-Z]\d{1}|\d{1}[a-zA-Z]/gi
	if(!(re.test(objElement.value)))
	{
	jsfDisplayErrorMessage(MINIMUM_ONE_NUMERIC_ERROR,objElement.getAttribute("errname"));
	return false;
	}
	return true;
}
function jsfCheckMinimumOneAlphabet_OneNumeric(objElement)
{

if((jsfCheckAlphaNumeric(objElement)))
{
	
if(jsfCheckMinimum_OneAlphabet(objElement))
	return (jsfCheckOneNumeric(objElement));
}
else
return false;	
}
function jsfCheckMinimumOneAlphabet_OneNumeric_special(objElement)
{
if(jsfCheckNotSpecialChar(objElement))
{
if(jsfCheckMinimum_OneAlphabet(objElement))
{
	return (jsfCheckOneNumeric(objElement));
	}
	else
	{
	
	return false;
	}
}
else
return false;
}
function jsfCheckMinimumOneUpperCase_Alphabet_Numeric_Special(objElement)
{
if(jsfCheckNotSpecialChar(objElement))
{


if(jsfCheckMinimum_OneAlphabet(objElement))
{

		if (jsfCheckMinimumOneUpper_CaseCharacter(objElement))
		{
		
		return jsfCheckOneNumeric(objElement);
		}
}
else
{
return false;
}

}

else 
return false;
}
function jsfCheckMinimumOneUpperCase_Alphabet_Numeric(objElement)
{

if((jsfCheckAlphaNumeric(objElement)))
{

if(jsfCheckMinimum_OneAlphabet(objElement))
{

		if (jsfCheckMinimumOneUpper_CaseCharacter(objElement))
		{
		
		return jsfCheckOneNumeric(objElement);
		}
}
else
{
return false;
}

}
else
return false;
}
function jsfCheckMinimumOneUpperCase_Alphabet(objElement)
{
if((jsfCheckAlphaNumeric(objElement)))
{
if(jsfCheckMinimum_OneAlphabet(objElement))
{
return jsfCheckMinimumOneUpper_CaseCharacter(objElement);
}
else
{
return false;
}
}
else
return false;
}
function jsfCheckMinimumOneUpperCase_Alphabet_special(objElement)
{

	if(jsfCheckMinimum_OneAlphabet(objElement))
	{
		if(jsfCheckMinimumOneUpper_CaseCharacter(objElement))
		{
			if(jsfCheckOneSpecialCharacter(objElement))
			return true
			else
			return false;
		}
		else
		return false;
	}
	else
	{
	return false;
	}
}
function jsfCheckMinimum_OneAlphabet(objElement)
{

	var re=/[a-zA-Z]/g
	if(!(re.test(objElement.value)))
	{
	jsfDisplayErrorMessage(MINIMUM_ONE_ALPHABET,objElement.getAttribute("errname"));
	return false;
	}
	return true;
}
function jsfCheckMinimumOneAlphabet(objElement)
{
	if((jsfCheckAlphaNumeric(objElement)))
	{
	var re=/[a-zA-Z]/g
	if(!(re.test(objElement.value)))
	jsfDisplayErrorMessage(MINIMUM_ONE_ALPHABET,objElement.getAttribute("errname"));
	else
	return true;
	}

	return false;
}
function jsfCheckMinimumOneAlphabet_Special(objElement)
{
	var re=/[a-zA-Z]/g
		if(!(re.test(objElement.value)))
		{
			jsfDisplayErrorMessage(MINIMUM_ONE_ALPHABET,objElement.getAttribute("errname"));
			return false;
		}
	if(jsfCheckOneSpecialCharacter(objElement))
	{
		return true;
	}
	else
	{
		return false;
	}

	return false;
}
function jsfCheckMinimumOneUpper_CaseCharacter(objElement)
{
	var re=/[A-Z]/g
	if(!(re.test(objElement.value)))
	{
	jsfDisplayErrorMessage(MINIMUM_ONE_UPPERCASECHARACTER,objElement.getAttribute("errname"));
	return false;
	}
	return true;
}
//New function
function jsfCheckMinimumOneUpper_CaseCharacter_Special(objElement)
{
	var re=/[A-Z]/g
	
		if(!(re.test(objElement.value)))
		{
		jsfDisplayErrorMessage(MINIMUM_ONE_UPPERCASECHARACTER,objElement.getAttribute("errname"));
		return false;
		}
		if(jsfCheckOneSpecialCharacter(objElement))
		{
			return true;
		}
		else
		{
			return false;
		}
	
	
	return true;
}
function jsfCheckMinimumOneUpperCaseCharacter(objElement)
{
	if(jsfCheckAlphaNumeric(objElement))
	{
	var re=/[A-Z]/g
	if(!(re.test(objElement.value)))
	{
	jsfDisplayErrorMessage(MINIMUM_ONE_UPPERCASECHARACTER,objElement.getAttribute("errname"));
	return false;
	}
	return true;
	}
	else
	{
	return false;
	}
}
function jsfCheckMinimumOneUpper_OneNumeric_special(objElement)
{
	if(jsfCheckNotSpecialChar(objElement))
	{
		if(jsfCheckMinimumOneUpper_CaseCharacter(objElement))
		{
			if(jsfCheckOneNumeric(objElement))
			return true
			else
			return false;
		}
		else
		return false;
	}
	else
	{
	return false;
	}
}

function jsfCheckMinimumOneUpper_OneNumeric(objElement)
{
	if((jsfCheckAlphaNumeric(objElement)))
	{
	if(jsfCheckMinimumOneUpper_CaseCharacter(objElement))
	{
	if(jsfCheckOneNumeric(objElement))
	return true
	else
	return false;
	}
	else
	return false;
	}
}
function jsfCheckOneNumeric(objElement)
{
	var re=/[0-9]/gi

	if(!(re.test(objElement.value)))
	{

	jsfDisplayErrorMessage(MINIMUM_ONE_NUMERIC_ERROR,objElement.getAttribute("errname"));
	return false;
	}
	return true;
}
function jsfCheckOneSpecialCharacter(objElement)
{
	var re= /[!@#$%^&*()]/gi
	var string =re.exec(objElement.value);

	if(string==null)
	jsfDisplayErrorMessage(MINIMUM_ONE_SPECIAL_CHARACTER,objElement.getAttribute("errname"))
	else
	return true;
}
function jsfCheckAlphaNumeric_specialCharacter_OneNumeric(objElement)
{
	if(jsfCheckOneSpecialCharacter(objElement))
	return jsfCheckOneNumeric(objElement);
	else
	return false;
}
function jsfCheckAlphaNumeric(objElement) 
{
	var re = /^[a-zA-Z0-9_,.\s]*/gi;
	//alert(objElement.value.match(re));
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(ALPHA_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}
function jsfCheckAlphaNumeric_Slash(objElement) 
{
	var re = /^[a-zA-Z0-9/\s]*/gi;
	//alert(objElement.value.match(re));
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(ALPHA_ERROR_sl, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}
function jsfCheck_Name(objElement) {
	//var re = /^[a-z][a-z0-9\(\)\_\-\'\.\,\/\\\s]*$/gi
	
	//var re = /^[a-z][a-zA-Z0-9\(\)\.\,\/\\\s]*$/gi
	var re = /^[a-zA-Z0-9\(\)\.\/\\\s]*$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ERRORS, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


// baiju st
function jsfCheckAccPac(objElement) {

	var re = /^[a-zA-Z0-9\-\/\\]*/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(ACCPAC_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


function jsfCheckANSplNo(objElement) {
	

	var re = /^[a-zA-Z0-9\-\&\/\\\s]*/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(ANSPL_NO_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckFirstAlphaOrNumSplNo(objElement) 
{
	var re = /[a-zA-Z0-9]^[a-zA-Z0-9\-\&\/\\\s]*/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(FirstANSPL_NO_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


//******  New validation 
function jsfCheckANSlBsOpCpAmHyComDotSp(objElement) {
	var re=/^[a-zA-Z][a-zA-Z0-9\(\)\-\&\/\\\,\.\s]*$/gi
	//var re = /^[a-zA-Z][a-zA-Z0-9\(\)\-\&\/\\\,\.\s]*/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ANSlBsOpCpAmHyComDotSp_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


function jsfCheckFirstANSlBsOpCpAmHyComDotSp(objElement) {
	var re=/^[a-zA-Z][a-zA-Z0-9\(\)\-\&\/\\\,\.\s]*$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_FirstANSlBsOpCpAmHyComDotSp_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}



function jsfCheckFirstAorNumNSlBsOpCpAmHyComDotSp(objElement) {
	var re = /^[a-zA-Z0-9][a-zA-Z0-9\(\)\-\&\/\\\,\.\s]*/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_FirstAorNumNSlBsOpCpAmHyComDotSp_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}




function jsfCheckANSlBsOpCpAmHyComDot(objElement) {
	var re = /^[a-zA-Z][a-zA-Z0-9\(\)\-\&\/\\\,\.]*/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ANSlBsOpCpAmHyComDot_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckNameHypenSlashBack(objElement) {
	
	
	var re = /^[a-zA-Z0-9\-\.\,\&\@\(\)\s]*/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAMEHYPENBACKSLASH_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

// baiju end


function jsfCheck_Name_spChar(objElement) {
	//var re = /^[a-z][a-z0-9\(\)\_\-\'\.\,\/\\\s]*$/gi
	
	//var re = /^[a-z][a-zA-Z0-9\(\)\.\,\/\\\s]*$/gi
	//var re = /^[a-zA-Z0-9\(\)\.\&\@\/\\\s]*$/gi - Commented By Srini
	var re = /^[a-z][a-zA-Z0-9\(\)\_\-\'\.\&\@\,\/\\\s]*$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ERROR_SC, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}//g

function jsfCheck_Name_spChars(objElement) {
	//var re = /^[a-z][a-z0-9\(\)\_\-\'\.\,\/\\\s]*$/gi
	
	//var re = /^[a-z][a-zA-Z0-9\(\)\.\,\/\\\s]*$/gi
	var re = /^[a-zA-Z0-9\-\.\&\@\/\\\s]*$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ERROR_SC_F, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}//g
function jsfCheck_NameWithDot(objElement) {
	//var re = /^[a-z][a-z0-9\(\)\_\-\'\.\,\/\\\s]*$/gi
	
	//var re = /^[a-z][a-zA-Z0-9\(\)\.\,\/\\\s]*$/gi
	var re = /^[a-zA-Z\.\/\\\s]*$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ERRORDOT, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}
function jsfCheck_NameWithI(objElement) {
	//var re = /^[a-z][a-z0-9\(\)\_\-\'\.\,\/\\\s]*$/gi
	
	//var re = /^[a-z][a-zA-Z0-9\(\)\.\,\/\\\s]*$/gi
	var re = /^[a-zA-Z0-9\-\/\\\s]*$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ERRORI, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckName(objElement) {
	//var re = /^[a-z][a-z0-9\(\)\_\-\'\.\,\/\\\s]*$/gi
	
	var re = /^[a-z][a-zA-Z\(\)\_\-\'\.\,\/\\\s]*$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(NAME_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckEmail(objElement) {
	//var re = /^[a-zA-Z][a-zA-Z0-9\-_.]+[@][a-zA-Z0-9]+[.][a-zA-Z.]+$/gi;
	var re = /^([a-zA-z])*([a-zA-z\.])\w+([\.\-]\w+)*\@\w+([\-\.]\w+)*\.[a-z]{2,4}$/gi	
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(EMAIL_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckEmailDomain(objElement) {
	//var re = /^[a-zA-Z][a-zA-Z0-9\-_.]+[@][a-zA-Z0-9]+[.][a-zA-Z.]+$/gi;
	var re = /^([\@])\w+([\-\.]\w+)*\.[a-z]{2,4}$/gi	
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(DOMAIN_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckWebUrl(objElement) {
	//var re = /^[a-zA-Z][a-zA-Z0-9\-_.]+[@][a-zA-Z0-9]+[.][a-zA-Z.]+$/gi;
	var re = /^([http\:\/\/])\w+([\-\.]\w+)*\.[a-z]{2,4}$/gi	
	//var re = /^([a-zA-z])*([a-zA-z\.])\w+([\.\-]\w+)*\@\w+([\-\.]\w+)*\.[a-z]{2,4}$/gi	
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(DOMAIN_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


function jsfCheckValidURL(objElement)
{
	//var re = /[\.\/\\]|http/gi
	//var re = /^([\www])\w+([\-\.\/\:]\w+)*\.[a-z]{2,4}$/gi	//ok
	var re =/^([\http\:\/\/\])([\www\-\.\/\:])*\.[a-z]{2,4}$/gi
	if ( objElement.value.match(re) !=  objElement.value) {
		jsfDisplayErrorMessage(URL_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckValid_URL(objElement)
{
	//var re = /[\.\/\\]|http/gi
	var re = /^([\www])\w+([\-\.\/\:]\w+)*\.[a-z]{2,4}$/gi	//ok
	//var re =/^([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)$/gi
	//var re =/^([\http\:\/\/\])([\w\-]+\.)+[\w\-]+(/[\w\- \.\/\?\%\&\=]*)?$/gi
	if ( objElement.value.match(re) !=  objElement.value) {
		jsfDisplayErrorMessage(URL_ERRORs, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckValid_URL_HTTP(objElement)
{
	//var re = /[\.\/\\]|http/gi
	
	//var re = /^([\h\t\t\p\:\w\w\w]\w+)([\-\.\/\:]\w+)*\.[a-z]{2,4}$/gi	//ok
	//var re = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	//var re = /^([\http])+([\www])\w+([\-\.\/\:]\w+)*\.[a-z]{2,4}$/gi	//ok
	//var re = /(http:\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\/+@&amp;#;`~=%!]*)(\.\w{2,})?)*\/?)/i
	var re = /((http:\/\/www)+([\.])+(\w*)+([\.])+(\w*)+([\.])+([a-z]{2,4}))|((http:\/\/www)+([\.])+(\w*)+([\.])+([a-z]{2,4}))$/gi;
	//var re = /^([\www])\w+([\-\.\/\:]\w+)*\.[a-z]{2,4}$/gi	//ok
	//var re =/^([\http\:\/\/\])([\w\-]+\.)+[\w\-]+(/[\w\- \.\/\?\%\&\=]*)?$/gi
	if ( objElement.value.match(re) !=  objElement.value) {
		jsfDisplayErrorMessage(URL_ERRORs, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

function jsfCheckTime(objElement) {
//	var re = /^([01][0-9]|2[0-4]):[0-5][0-9]$/gi;
//	var re = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/gi;
	var re = /^[a-zA-Z0-9][a-zA-Z0-9\:\-\s]*/gi;

	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(TIME_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}
/**
	This function checks the given value in the form is special character

	@input objElement as Form Element
	@output value boolean true if it is special char or false
*/
function jsfCheckNotSpecialChar(objElement) {
	var re = /[!@#$%^&*()_+|?]/gi;
	if ( re.exec(objElement.value)) {
	return true;
	}
			jsfDisplayErrorMessage(MINIMUM_ONE_SPECIALCHARACTER, objElement.getAttribute("errname"));
	
	return false;
}
function jsfCheckSpecialChar(objElement) {
	var re = /^[\w\W]*/gi;
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(SPECIAL_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}

/**
	This function checks the given file is in right format according to the file type attribute

	@input objElement as Form Element
	@output value boolean true if it is in correct format or false
*/

function jsfCheckFile(objElement) {
	var fileType = objElement.getAttribute("filetype");
	switch (fileType) {
		case "image":
			if ( !objElement.value.match(IMAGE_FILE) )  {
				jsfDisplayErrorMessage(IMAGE_FILE_ERROR, objElement.getAttribute("errname"));
				objElement.focus();
				return false;
			}
			break;
		case "doc":
			if ( !objElement.value.match(DOC_FILE) )  {
				jsfDisplayErrorMessage(DOC_FILE_ERROR, objElement.getAttribute("errname"));
				objElement.focus();
				return false;
			}
			break;
		
		case "html":
			if ( !objElement.value.match(HTML_FILE) )  {
				jsfDisplayErrorMessage(HTML_FILE_ERROR, objElement.getAttribute("errname"));
				objElement.focus();
				return false;
			}
			break;
			
		case "text":
			if ( !objElement.value.match(TEXT_FILE) )  {
				jsfDisplayErrorMessage(TEXT_FILE_ERROR, objElement.getAttribute("errname"));
				objElement.focus();
				return false;
			}
			break;
		
		case "excel":
			if ( !objElement.value.match(EXCEL_FILE) )  {
				jsfDisplayErrorMessage(EXCEL_FILE_ERROR, objElement.getAttribute("errname"));
				objElement.focus();
				return false;
			}
			break;
	
	}
	return true;
}


/**
	This function check the maximum length of the particular element and it display error when maxlength is exceed.

	@input formElement 
	@output true if it does not exceed maxlength otherwise false
*/

function jsfCheckMaxLength(objElement) {
	var maxLength = objElement.getAttribute("maxlength");
	if ( !maxLength ) {
		maxLength = objElement.getAttribute("maxlen");
	}
	if (maxLength) {
		maxLength = parseInt(maxLength);
		var length = objElement.value.length;
		if (length > maxLength) {
			jsfDisplayErrorMessage(MAX_LENGTH_ERROR, objElement.getAttribute("errname"), maxLength);
			objElement.focus();
			return false;
		}
	}
	return true;
}


/**
	This function display error message in alert box to the user. This function takes n number of parameters.

	@input errorMsg string which error message has to be displayed
	@params n number of parameter will replace the place holder in the error message

*/

function jsfDisplayErrorMessage(errorMsg) {
	var argv = arguments;
	var argc = arguments.length;
	for ( var i = 0; i < argc ; i++ ) {
		var re = new RegExp("\\["+i+"\\]","g");
		errorMsg = errorMsg.replace(re, argv[i]);
	}
	alert(errorMsg);
	return true;
	
}

/**
	This function replaces the leading and trailing whitespaces
	@input strInput any string value
	@output value after removing leading & trailing whitespaces
*/

function trim(strInput) {
	return strInput.toString().replace(/(^\s*|\s*$)/gi,"");
}

/**
	This function reset whole form parsing one by one element
	@input form to be resetted

*/

function jsfClearForm(form) {
	var type, objElement;
	for(var i=0; i < form.elements.length; i++) {
		objElement = form.elements[i];
		type = objElement.type;
		if  (type.match(/text|textarea/) )	{
			objElement.value = "";
		}
		if (type == "select" ) {
			objElement.selectedIndex = 0;
		}
	}
}




/**
	This function check the URL is correctly given or not
	@input URl to be checked
	@return true it the url is correctly formatted, otherwise false
*/

function jsfCheckUrl(url) {
	var re = /[\.\/\\]|http/gi
	if ( url.match(re) ) {
		return true;
	}
	return false;
}


/**
	This function change date to long
*/
function jsfGetLongDate(dd,mm,yy){
	dd=dd.toString()
	mm=mm.toString()
	yy=yy.toString()
	return parseInt(yy+mm+dd)
}
/**
	Extract date from given form date 
*/
function jsfGetFormDate (date) {
	var re = /^(0?\d{1,2})[\/-]0?\d{1,2}[\/-]\d{4}/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return jsfCheckDateLength( arr[1] );
	return 0;
}

/**	
	Extract month from given form date 
*/
function jsfGetFormMonth (date) {
	var re = /^0?\d{1,2}[\/-](0?\d{1,2})[\/-]\d{4}/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return jsfCheckDateLength( arr[1] );
	return 0;
}

/**
	Extract year from given form date 
*/

function jsfGetFormYear (date) {
	var re = /^0?\d{1,2}[\/-]0?\d{1,2}[\/-](\d{4})/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return arr[1];
	return 0;
}
 
 /**
	This function compare two dates
 */
function jsfCompareDate (date1,date2) {
	var date1 = jsfGetLongDate ( jsfGetFormDate(date1), jsfGetFormMonth(date1), jsfGetFormYear(date1));
	var date2 = jsfGetLongDate ( jsfGetFormDate(date2), jsfGetFormMonth(date2), jsfGetFormYear(date2));
	if (date1 == date2) return 0;
	if (date1 > date2) return 1;
	if (date1 < date2) return -1;
}

function jsfCheckDateLength (date) {
	var strDate = date.toString();
	if ( strDate.length == 1) strDate = "0"+strDate;
	return strDate;
}

function jsfIsArrayValueExist(arr, value) {
	for(var i = 0; i < arr.length; i++) {
		if(arr[i] == value)return true;
	}
	return false;
}

function jsfCancelClicked() {
	 location.href = location.href;
}

function getObject(id) {
	return document.getElementById(id);
}


function jsfReadOnly(inputCtl) {
	
	var controls = jsfChildElements(inputCtl);
	for(var i = 0; i < controls.length; i++) {
		if(controls[i].type == "text" || controls[i].type.match("^select") || controls[i].type.match("^checkbox") || controls[i].type.match("^textarea") ) {
			controls[i].disabled=true;
		}
	}
}

function jsfReleaseReadOnly(inputCtl) {
	var controls = jsfChildElements(inputCtl);
	for(var i = 0; i < controls.length; i++) {
		if(controls[i].type == "text" || controls[i].type.match("^select") || controls[i].type.match("^checkbox") || controls[i].type.match("^textarea") ) {
			controls[i].disabled=false;
		}
	}
}



/*  This Function Checks the Money Value . The Length is 11 for example (12345678.00) */
function jsfCheckMoneyValue(objElement){			
		var re = /^[1-9][0-9]{0,9}(\.[0-9]{1,2})?$/gi
		if(objElement.value.match(re) != objElement.value){
			jsfDisplayErrorMessage(MONEYVALUE_ERROR, objElement.getAttribute("errname"));
			objElement.focus();
			return false;
		}
	return true;
} 


function jsfCheckEstimatedTime(objElement) {
	var re = /^([1-9]|[1-5][0-9]|6[0])$/gi
	if ( objElement.value.match(re) != objElement.value ) {
		jsfDisplayErrorMessage(ET_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


/* This Function checks the valid Name. */

function jsfCheckAlphaName(objElement) {
		var re = /^[a-zA-Z][a-zA-Z\s]*/gi
		if(objElement.value.match(re) != objElement.value)	{				 
			jsfDisplayErrorMessage(NAMEALPHABET_ERROR, objElement.getAttribute("errname"));
			objElement.focus();
			return false;
		}
	return true;
}

function SearchClear(txtSearch,DrSearch)
{
	document.getElementById(DrSearch).selectedIndex=0;
	document.getElementById(txtSearch).value="";
	//document.getElementById(Lblerr).innerHTML = "";
}	

function encodeXml(input) {
	input = input.replace(/&/g, "&amp;");
	input = input.replace(/</g, "&lt;");
	input = input.replace(/>/g, "&gt;");
	input = input.replace(/'/g, "&apos;");
	input = input.replace(/"/g, "&quot;");
	return input;
}

//Dateconversion from 17-03-2007 as 03/17/2007
function DateConversionMMM_MM(gdate)
{
	
	var SDate=gdate.split("/");
	/*
	var arr=new Array();
	arr[1]="Jan";
	arr[2]="Feb";
	arr[3]="Mar";
	arr[4]="Apr";
	arr[5]="May";
	arr[6]="Jun";
	arr[7]="Jul";
	arr[8]="Aug";
	arr[9]="Sep";
	arr[10]="Oct";
	arr[11]="Nov";
	arr[12]="Dec";
	var mon;
	for(i=1;i<=12;i++)
	{
	//alert(SDate[1]);
		if(arr[i]==SDate[1])
		{
			mm=i;
			if(mm<9)
			{
				mon="0"+mm;
			}
			else
			{
				mon=mm;
			}
		}
	}
		*/
		
	return (SDate[1]+"/"+SDate[0]+"/"+SDate[2]);
}
//Dateconversion from 13-Dec-2006 as 13/12/2006
function DateConversionDD_MM(gdate)
{
	var SDate=gdate.split("-");
	var arr=new Array();
	arr[1]="Jan";
	arr[2]="Feb";
	arr[3]="Mar";
	arr[4]="Apr";
	arr[5]="May";
	arr[6]="Jun";
	arr[7]="Jul";
	arr[8]="Aug";
	arr[9]="Sep";
	arr[10]="Oct";
	arr[11]="Nov";
	arr[12]="Dec";
	var mon;
	for(i=1;i<=12;i++)
	{
	//alert(SDate[1]);
		if(arr[i]==SDate[1])
		{
			mm=i;
			if(mm<9)
			{
				mon="0"+mm;
			}
			else
			{
				mon=mm;
			}
		}
	}
	return (SDate[0]+"/"+mon+"/"+SDate[2]);
}
//To get todays Date in 01/01/2006(mm/dd/yy) format
function ToDayDate()
{
		var  TodayDate=new Date();
		 var TodayDay=TodayDate.getDate();
		 var TodayMonth=TodayDate.getMonth();
		 var TodayYear=TodayDate.getYear();
		 TodayMonth=parseInt(TodayMonth)+parseInt(1);
		 if(TodayMonth<9)
		 {
			TodayMonth="0"+TodayMonth;
		 }
		 if(TodayDay<9)
		 {
			TodayDay="0"+TodayDay;
		 }
		 var Tdate=TodayMonth+"/"+TodayDay+"/"+TodayYear;
		 return Tdate;
}


function replaceallfnc1(str)
{
	
	var newstr = str.replace("  "," ");
	if(newstr.indexOf("  ")!= -1)
	{
		//alert(newstr);
		return replaceallfnc1(newstr,"  "," ");
	}
	else
	{
	    //alert(newstr);
	    return newstr
	}
}
//Function to concatenate the selected values from dropdown with comma(,) separator
function DrvalueswithComma(obj)
	{
		//alert(Listvalues);
		//var Listvalues = document.getElementById("LstScope");
		
				var str ="0";
				if(obj.value=="All")
				{
					for(i = 1; i < obj.options.length; i++)
					{
							if(str=="")
							{
								str = obj.options[i].value;
							}
							else
							{
								str+="," +obj.options[i].value;
							}
							
					}
				}
				else
				{
					str=obj.value;
				}
			//alert(str);	
		return str;
		
	
	}
//Trim Function
function Trim(TRIM_VALUE)
	{
		if(TRIM_VALUE.length < 1){
		return"";
		}
		TRIM_VALUE = RTrim(TRIM_VALUE);
		TRIM_VALUE = LTrim(TRIM_VALUE);
		if(TRIM_VALUE==""){
		return "";
		}
		else{
		return TRIM_VALUE;
		}
} //End Function

function RTrim(VALUE)
{
		var w_space = String.fromCharCode(32);
		var v_length = VALUE.length;
		var strTemp = "";
		if(v_length < 0){
		return"";
		}
		var iTemp = v_length -1;

		while(iTemp > -1){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
		strTemp = VALUE.substring(0,iTemp +1);
		break;
		}
		iTemp = iTemp-1;

		} //End While
		return strTemp;

} //End Function

function LTrim(VALUE)
{
		var w_space = String.fromCharCode(32);
		if(v_length < 1){
		return"";
		}
		var v_length = VALUE.length;
		var strTemp = "";

		var iTemp = 0;

		while(iTemp < v_length){
		if(VALUE.charAt(iTemp) == w_space){
		}
		else{
		strTemp = VALUE.substring(iTemp,v_length);
		break;
		}
		iTemp = iTemp + 1;
		} //End While
		return strTemp;
} //End Function


	function DateConversionMMDDYYYYtoDDMMYYYY(Dates)
	{
		var arrDates = Dates.split("/");
		var ddmmyyDATE = arrDates[1] + "-" + arrDates[0] + "-" + arrDates[2]
		return ddmmyyDATE;
	}

function jsfReadOnly(inputCtl) {
	
	var controls = jsfChildElements(inputCtl);
	for(var i = 0; i < controls.length; i++) {
		if(controls[i].type == "text" || controls[i].type.match("^select") || controls[i].type.match("^checkbox") || controls[i].type.match("^textarea") || controls[i].type.match("^radio") ) {
			controls[i].disabled=true;
		}
	}
}

function jsfReadOnlyExceptCheckBox(inputCtl) {
	
	var controls = jsfChildElements(inputCtl);
	for(var i = 0; i < controls.length; i++) {
		if(controls[i].type == "text" || controls[i].type.match("^select") || controls[i].type.match("^textarea") || controls[i].type.match("^radio") ) {
			controls[i].disabled=true;
		}
	}
}

function jsfReleaseReadOnly(inputCtl) {
	var controls = jsfChildElements(inputCtl);
	for(var i = 0; i < controls.length; i++) {
		if(controls[i].type == "text" || controls[i].type.match("^select") || controls[i].type.match("^checkbox") || controls[i].type.match("^textarea") || controls[i].type.match("^radio")) {
			controls[i].disabled=false;
		}
	}
}
