
/*//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//													I N D E X																				  //
//////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
/*

	01.	trim(StringParam) -

	02.	isEmpty(p_ObjectName, p_ErrorMsg) - 

	03.	dateCheck(sDateFrom, sDateTo) - 

	04.	isValidFormat(sDateValue)
	
	05.	isMatching(StringParam1, StringParam2)
	
	06.	maxLengthCheckForTextArea(obj, maxLen)	
	
	07.	allowAlphaNumericChar() -
	
	08.	isValidEmail(EmailString) -
	
	09.	allowNumbersOnly() -
	
	10.	isSQLSafe(oField)
	
	11.	allowAddressCharsOnly() -
	
	12.	allowPhoneFaxCharsOnly() -
	
	13.	allowEmailCharsOnly() -
	
	14.	allowDateCharsOnly() -
	
	15.	AddOptions(p_Object, p_Code, p_Description)
	
	16.	RemoveOptions(p_Object)
	
	17.	IsDirty(eForm)
	
	18.	selectAll(pObj,oTable,ChkBox)
	
	19.	DeleteselectedRow(pObj, oTable, oCtrlBox)
	
	20.	isValidDate(oDateValue)
	
	21.	checkTextAreaMaxLen(oTextArea)

    22.	isProperEmail(Email)
   
    23.	allowDecimals()-
    
    24.	allowContractNoteChars()
    
    25.	isAllowedCombination(oUserNameField, oPasswordField)
    
    26.	hasMinPasswordLength(oPasswordField)
    
    27.	isAllowedHistory(txtOldPass, txtNewPass)
    
    28.	CompareDates(objDateFrom, objDateTo, strErrMsg, objFocusField) -
    
    29.	TrapEnterKey()
    
    30.	allowSettlementNoChars()
   
    31.	allowAlphabetsOnly() -
   
    32.	allowAlphabetsAndNumbersOnly()
   
    33.	checkDatesForDownloadLimit()
   
    34.	DeleteselectedTradeRows()
   
    35.	openHelpFile()
   
    36.	closeHelpWindows()
   
    37.	getCheckedString(oChkBox)
   
    38.	getCheckedStringForDB(InitString, FinalString)

    39.	trapContentPasteKey()

    40.	trapContentPasteMouse()
   
    41. allowTimeCharsOnly()
   
    42. isValidTime()
   
    43. isValidTimeFormat()
   
    44. isAfterToday(oEnteredDate,oToDay)
   
    45. allowDecimal(oDecimal)
   
    46. allowAlphabetDotSpaceBracketOnly()
    
    47. exactLengthCheckForTextArea(ctrlName,maxLength)
    
    48. NumericOnlyForUpdated()
    
    49. NumericOnlyForCareers()
    
    50. ValidateForTradeVerification()
    
    51. IsNumber(string)
		
*/


///////////////////////////////////			G E N E R A L		////////////////////////////////////////////////

//var forbiddenElements	=	"INPUT TEXTAREA";
var forbiddenElements	=	new Array("INPUT", "TEXTAREA");

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
<script language="javascript" type="text/javascript">
//--------------- LOCALIZEABLE GLOBALS ---------------
var d=new Date();
var monthname=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
//Ensure correct for language. English is "January 1, 2004"
var TODAY = monthname[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear();
//---------------   END LOCALIZEABLE   ---------------
		</script>*/
		
		
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------------added by kalpan---------------------------------------------
function isNumeric(oObject)       
{
    if (isNaN(oObject.value))
    {
        alert("Please enter a numeric value !");
		oObject.focus();
		return false;
	}
}
//--------------------------------------------End Kalpan-------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------------added by kalpan---------------------------------------------
function convertToUpper(fieldobject) 
{                                                                 
     var newWord=false;                                                                 
     var newName="";                                                                 
     var name=fieldobject.value;                                                                 
     for (i=0;i<name.length;i++) {                                                                 
	    if (i==0 || newWord==true)                                                                 
          newName=newName+name.charAt(i).toUpperCase();                                                                 
          else
          newName=newName+name.charAt(i).toLowerCase();                                                                 
          if (name.charAt(i)==" ")                                                                 
          newWord=true;                                                                 
          else                                                                 
          newWord=false;                                                                 
	    }                                                                 
        fieldobject.value=newName;                                                                 
}
//--------------------------------------------End Kalpan-------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////////////////////////////////		
		
		////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------------added by arshad---------------------------------------------
function SetOption(optNo)
{
    document.all("mLblAnswer").style.visibility='hidden';  
    if(optNo==1)
    {
       document.all("mHdnOptionSelected").value='1';
    }
    else if(optNo==2)
    {
       document.all("mHdnOptionSelected").value='2';
    }
    else if(optNo==3)
    {
        document.all("mHdnOptionSelected").value='3';
    }
    else
    {
       document.all("mHdnOptionSelected").value='4';
    }
}

function ResetValue()
{
    document.all("Opt1").style.backgroundColor =  "";
    document.all("Opt2").style.backgroundColor =  "";
    document.all("Opt3").style.backgroundColor =  "";
    document.all("Opt4").style.backgroundColor =  "";
    document.all("Opt1").disabled = false;
    document.all("Opt2").disabled = false;
    document.all("Opt3").disabled = false;
    document.all("Opt4").disabled = false;
    document.all("mRbtOption1").checked = false;
    document.all("mRbtOption2").checked = false;
    document.all("mRbtOption3").checked = false;
    document.all("mRbtOption4").checked = false;
    document.all("mLblAnswer").style.visibility='hidden';
}
function ShowCurrentAns(actualAns,optSelected)
{


    if(actualAns==optSelected)
    {
        document.all("mLblAnswer").style.visibility='visible';
        document.all("mLblAnswer").innerText='Correct Answer';        
    }
        
    if(actualAns== 1)
    {
        document.all("Opt1").style.backgroundColor = '#70A2F3';//blue colour
    }
    else if(actualAns== 2)
    {
        document.all("Opt2").style.backgroundColor = '#70A2F3';//blue colour
    }
    else if(actualAns== 3)
    {
        document.all("Opt3").style.backgroundColor = '#70A2F3';//blue colour
    }
    else
    {
        document.all("Opt4").style.backgroundColor = '#70A2F3';//blue colour
    }
        document.all("Opt1").disabled = true;
        document.all("Opt2").disabled = true;
        document.all("Opt3").disabled = true;
        document.all("Opt4").disabled = true;
   
}

function SetVisibilityFalse()
{
    document.all("mLblAnswer").style.visibility='hidden';   
}
//--------------------------------------------End Arshad-------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#1
	
	Function to trim (remove leading and trailing white spaces) the string passed.
	
	Parameters				:	1) The string to be trimmed.
	
	Return value			:	The resultant string after trimming.
*/

function trim(objTxtValue) {

	txtValue	= new String();
	txtValue1	= new String();
	var i		= 0;
		
	txtValue	= objTxtValue;
	
	if (txtValue.length == 0) {
		return txtValue;
	} else {
		while (((txtValue.lastIndexOf(' ') + 1) == txtValue.length) && (txtValue.lastIndexOf(' ') != 0)) {
			txtValue1	= (txtValue.slice(0,txtValue.lastIndexOf(' ')));
			txtValue	= txtValue1;
		}
		while (txtValue.indexOf(' ') == 0) {
			txtValue1	= (txtValue.slice(1,txtValue.length));
			txtValue	= txtValue1;
		}
		return txtValue;
	}
}
	
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#2
	
	This function checks where a mandatory field is left blank or not
	
	Parameters				:	1) Object (eg: textfield) to be validated
								2) Error message to be displayed if field is found null.
*/

function isEmpty(p_ObjectName, p_ErrorMsg) 
{
	if (p_ObjectName.value.length == 0 ) 
	{
		alert(p_ErrorMsg);
		p_ObjectName.focus();
		return false;
	}
	else
	{
	    return true;
	}
}

function isselected(p_chkObjectName,p_ObjectName,p_ErrorMsg)
{
	if (p_chkObjectName.checked == true)
	{
		if (p_ObjectName.value == '-1' )
		{
			alert(p_ErrorMsg);
			//p_ObjectName.focus();
			return true;
		}	
	}
	return false;
	
}





////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#3
	
	This function checks for the validity of the dates passed.
	
	Validations performed:
		
		1. If dates are in valid format ie, dd/mm/yyyy.
		2. From date is not greater that To date
		3. Check for months with 30 and 31 days.
		4. Date check for the month of February.
		
	Called by				:	
	Reasons to be called	:	
	
	Calls					:	isValidFormat(DateString)
	Reason to call			:	Since date values are entered(typed) manually and not selected 
								from a drop-down or datepicker, it needs to be ensured that the dates
								are entered in dd/mm/yyyy format. This function checks this condition
	
*/

function dateCheck(oDateFrom,oDateTo) 
{
    alert('Hello');
	var sDateFrom = oDateFrom.value;
	var sDateTo   = oDateTo.value;
    
  	var ALERT_FROMDATE_INVALID = 'Date of joining is either out of range or not in a vaild format.\nPlease enter it in the format (dd/mm/yyyy).\n\nValid Range: 01/01/' + MIN_YEAR_LIMIT + ' to 31/12/' + MAX_YEAR_LIMIT;
	var ALERT_TODATE_INVALID = 'Date of releaving is either out of range or not in a vaild format.\nPlease enter it in the format (dd/mm/yyyy).\n\nValid Range: 01/01/' + MIN_YEAR_LIMIT + ' to 31/12/' + MAX_YEAR_LIMIT;
	
	// array to split the date values passed as dd/mm/yyyy
	var dateStrArr;	
	
	// day, month, year and date {FROM}
	var FromDay, FromMonth, FromYear, FromDate;
	
	// day, month, year and date {TO}
	var ToDay, ToMonth, ToYear, ToDate;
	
	if (!isValidFormat(sDateFrom)) {
	    
		alert(ALERT_FROMDATE_INVALID);
		oDateFrom.focus();
		return false;
	} else if (!isValidFormat(sDateTo)) {
		alert(ALERT_TODATE_INVALID);
		oDateTo.focus();
		return false;
	}

	// Splitting the FROM date into variables.
	dateStrArr = sDateFrom.split('/');
	FromDay		= dateStrArr[0];
	FromMonth	= dateStrArr[1];
	FromYear	= dateStrArr[2];
	
	// Splitting the TO date into variables.
	dateStrArr = sDateTo.split('/');
	ToDay		= dateStrArr[0];
	ToMonth		= dateStrArr[1];
	ToYear		= dateStrArr[2];
    alert(FromDay+FromMonth+FromYear);	
    alert(ToDay+ToMonth+ToYear);	
	//Checking for validity of the FROM and TO dates.

	if ((FromMonth == 4 || FromMonth == 6 || FromMonth == 9 || FromMonth == 11) && (FromDay > 30)) {
		//Date validation for the months of April, June, September and November.
		alert("The specified month cannot have more than 30 days. Please Check the Date of joining.");
		oDateFrom.focus();
		return false;
	} else if ((FromMonth == 2) && ((FromYear)% (4) != 0) && (FromDay > 28))	{
		//Date validation for February in an year other than a Leap year.
		alert("February cannot have more than 28 days, except for a leap year.Please Check the Date of releving.");
		oDateFrom.focus();
		return false;
	} else if ((FromMonth == 2) && (FromDay > 29)) {
		//Date validation for February in a Leap Year.
		alert("February cannot have more than 29 days.Please Check the Date of joining.");
		oDateFrom.focus();
		return false;
	} else if ((ToMonth == 4 || ToMonth == 6 || ToMonth == 9 || ToMonth == 11) && (ToDay > 30)) {
		//Similar Date validations for the TO date.
		alert("The specified month cannot have more than 30 days. Please Check the Date of releving.");
		oDateTo.focus();
		return false;
	} else if ((ToMonth == 2) && ((ToYear)% (4) != 0) && (ToDay > 28)) {
		alert("February cannot have more than 28 days, except for a leap year.Please Check the Date of releving.");
		oDateTo.focus();
		return false;
	} else if ((ToMonth == 2) && (ToDay > 29)) {
		alert("February cannot have more than 29 days.Please Check the Date of releving.");
		oDateTo.focus();
		return false;
	} else {

		if (parseInt(FromDay) < 10 && FromDay.length < 2) 
			FromDay = '0' + FromDay;
		if (parseInt(FromMonth) < 10 && FromMonth.length < 2) 
			FromMonth = '0' + FromMonth;
		if (parseInt(ToDay) < 10 && ToDay.length < 2) 
			ToDay = '0' + ToDay;
		if (parseInt(ToMonth) < 10 && ToMonth.length < 2) 
			ToMonth = '0' + ToMonth;
		
		FromDate	=	parseInt(FromYear + FromMonth + FromDay);
		ToDate		=	parseInt(ToYear + ToMonth + ToDay);
				
		//alert('FromDate=' + FromDate + ', ToDate=' + ToDate);
		var diff;

		diff		=	(ToDate - FromDate);
		alert(diff);
		if (diff < 0) {
			alert ("Date of joining cannot be greater than Date of releving");
			oDateFrom.focus();
			return false;
		} else {	
			//Getting the FROM and TO dates in two variable strings.
			FromDate = FromMonth + "/" + FromDay + "/" + FromYear	
			ToDate = ToMonth + "/" + ToDay + "/" + ToYear
			
			oDateFrom.value = FromDay + "/" + FromMonth + "/" + FromYear
			oDateTo.value = ToDay + "/" + ToMonth + "/" + ToYear 
			return true;
		}
	}
} // end function dateCheck

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#4
	
	This function checks for the format of the date string passed.
	
	Validations performed:
		
		1. If the date string is in dd/mm/yyyy.
		2. If non-numeric values are entered in any of the sections. (dd or mm or yyyy)
		3. If dd is between 1 to 31 and mm is between 1 to 12
		4. If year is entered compulsory as four 'y's (yyyy)
		
	Called by				:	dateCheck
	Reasons to be called	:	To ensure valid format (dd/mm/yyyy) of the dates entered (typed) by the user.
	
	Calls					:	
	Reason to call			:	
	
*/

function isValidFormat(sDateValue) {
	
	var dateStrArr;	
	
	dateStrArr = sDateValue.split('/');	
	
	if (dateStrArr.length < 3) {
		//alert("if #1");
		return false;
	}
	
	/*
	var test1;
	test1 = "009987";
	alert(parseInt("009987"));
	*/   
	//alert(dateStrArr.length); 
	for (i = 0; i < dateStrArr.length; i++) {
		if (isNaN(dateStrArr[i]) || trim(dateStrArr[i]) == "" ) {
			//alert('if #2');
			return false;
		} 
		else if (((parseInt(dateStrArr[i], 10) < 1) || (parseInt(dateStrArr[i], 10) > 12)) && (i == 0))
		{   
		    alert(parseInt(dateStrArr[i], 10));
		//} else if (((dateStrArr[i] < 1) || (dateStrArr[i] > 12)) && (i == 1)) {
			//alert('if #4');
			return false;
		} 
		else if (((parseInt(dateStrArr[i], 10) < 1) || (parseInt(dateStrArr[i], 10) > 31)) && (i == 1)) {
		//} else if (((dateStrArr[i] < 1) || (dateStrArr[i] > 31)) && (i == 0)) {
			//alert(sDateValue + ', ' + dateStrArr[i] + ', ' + i);
			//alert('if #3');
			return false;
		} 
		else if (((dateStrArr[i].length != 4) || (parseInt(dateStrArr[i], 10) < MIN_YEAR_LIMIT) || (parseInt(dateStrArr[i], 10) > MAX_YEAR_LIMIT)) && (i == 2) ) {
			//alert('if #f5');
			return false;
		}
	}

	return true;
	
} // end function isValidFormat

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#5
	
	This function compares 2 strings passed.
	
	Parameters				:	Objects [text] to be compared
	
	Return value			:	True	-	if matching
								False	-	on mismatch

	Calls					:	trim(StringParam)
	Reason to call			:	To trim the stringvalues passed if they are not trimmed already.

	Comments				:	Can be used to check whether the 'password' and 'confirm password' are matching
*/

function isMatching(oString1, oString2) {

	//var ALERT_MSG_MISMATCH = 'The passwords entered does not match.\n\nNOTE: Passwords are case sensitive\ni.e,\'Pass1\' IS NOT EQUAL TO \'pass1\'.';	
	var ALERT_MSG_MISMATCH = 'The Password and Confirm Password entered does not match.';
	//var ALERT_MSG_MINLEN = 'Passwords should be atleast 8 characters in length.';
	var ALERT_MSG_MINLEN = "The password is not valid.\nPasswords are a minimum of " + MIN_PWD_LEN + " characters in length.";

	var StringParam1 = new String(trim(oString1.value));
	var StringParam2 = new String(trim(oString2.value));

	var len1 = parseInt(StringParam1.length);
	var len2 = parseInt(StringParam2.length);

	var retval = true;

	if ((len2 - len1) != 0) {

		alert(ALERT_MSG_MISMATCH);
		oString1.value = '';
		oString2.value = '';
		oString1.focus();
		retval = false;

	} else if (len1 < MIN_PWD_LEN) {

		alert(ALERT_MSG_MINLEN);
		oString1.value = '';
		oString2.value = '';
		oString1.focus();
		retval = false;

	} else {
	
		var i = 0;
		//alert(len1);
		for (i = 0; i < len1 ; i++) {
			//alert(i + ' = ' + StringParam1.charCodeAt(i) + ' = ' + StringParam2.charCodeAt(i));
			if (StringParam1.charCodeAt(i) != StringParam2.charCodeAt(i)) {
				alert(ALERT_MSG_MISMATCH);
				oString1.value = '';
				oString2.value = '';
				oString1.focus();
				retval = false;
				break;
			}
		}

	}
	
	return retval;
	
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#6
	
	Function to check the length of the value entered in a textarea.
	
	Parameters				:	1) The textarea object.
								2) Maximum length allowed for the textarea

*/


function maxLengthCheckForTextArea(oTextArea, maxLen) {

	if(oTextArea.value.length > maxLen-1) {	
		alert("Maximum " + maxLen + " characters are allowed in this field.");
		oTextArea.focus();
		event.keyCode = 0;
		return false;
	}	
	return true;
}

function exactLengthCheckForTextArea(ctrlName,maxLength)
{
    var strtemp;
    strtemp=document.all(ctrlName).value;
    if(strtemp.length!=maxLength)
    {
     alert("Please enter exact " + maxLength + "-charactered alpha-numeric value !");
     document.all(ctrlName).focus();
    }
}   
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#7
	
	Triggered on the keypress event on any user control. 
	Will allow only characters [A-Z][a-z][0-9][space, comma, period, underscore] to be entered.

*/

function allowAlphaNumericChar() 
{
    var ls_Char;
    ls_Char= event.keyCode;
    if(( ls_Char<48 || ls_Char>57 ) && (ls_Char<65 || ls_Char>90)&&(ls_Char <97 || ls_Char>122)) 
    {
        if ((ls_Char != 32) && (ls_Char != 38) && (ls_Char != 44 &&  ls_Char != 46) && (ls_Char!= 95)&& (ls_Char!= 13))
        {
             event.keyCode = 0;
             alert('Only alphabet and numeric characters are allowed !');
        }
   } 
}




      
function allowSebiRegNo() {

    var ls_Char;
    ls_Char= event.keyCode;

    //Char between 0-1, A-Z and a-z
    if (( ls_Char<46 || ls_Char>57 ) && (ls_Char<65 || ls_Char>90) && (ls_Char <97 || ls_Char>122)) {
		//Char space, comma, dot and underscore
		if ((ls_Char != 32) && (ls_Char != 44) && (ls_Char != 45) && (ls_Char != 46) && (ls_Char!= 95))
			event.keyCode = 0;
    }
    
}
	
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#_OLD_8
	
	Function to validate the email strings (comma separated) passed.
	
	Parameters				:	1) Comma separated e-mail strings that are to be validated.

	Return value			:	True	-	if all e-mail strings are valid
								False	-	otherwise
*/

function isValidEmail_Old(oEMailField) {

    if(oEMailField.value == "")
    {
        alert("Please enter email address.");
        return false;
    }
	var good_chars_arr	= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

	var MailArray		= oEMailField.value.split(",");
	var iMailIndex		= 0;
	var retval			= true;
	
	for (iMailIndex = 0; iMailIndex < MailArray.length; iMailIndex++) {

		if (MailArray[iMailIndex].substring(MailArray[iMailIndex].length - 1, MailArray[iMailIndex].length) == "@") {
			alert("The Email address should not end with '@'");
			oEMailField.focus();
			retval = false;
		} else if (MailArray[iMailIndex].substring(0, 1) == "@") {
			alert("The Email address should not begin with '@'");
			oEMailField.focus();
			retval = false;
		} else if (MailArray[iMailIndex].substring(0, 1) == ".") {
			alert("The Email address should not begin with '.'");
			oEMailField.focus();
			retval = false;
		} else if (MailArray[iMailIndex].substring(MailArray[iMailIndex].length - 1, MailArray[iMailIndex].length) == ".") {
			alert("The Email address should not end with '.'");
			oEMailField.focus();		
			retval = false;
		} else {
			var flag1 = 1;
			if (MailArray[iMailIndex] != "") {
				var flag = 0;
				for (var i = 0; i < MailArray[iMailIndex].length; i++) {
					if (MailArray[iMailIndex].substring(i, i + 1) == "@") {
						flag = 1;
					}
				}
				if (flag == 0) {
					flag1 = 0;
					alert("The Email Address field does not contain an @.");
					oEMailField.focus();
				} else {
					flag = 0;
					for (var i = 0; i < MailArray[iMailIndex].length; i++) {
						if (MailArray[iMailIndex].substring(i, i + 1) == ".") {
							flag = 1;
						}
					}
					if (flag == 0) {
						flag1 = 0;
						alert("The Email Address field does not contain a dot.");
						oEMailField.focus();
					}
				}
				if (flag != 0) {
					if (MailArray[iMailIndex].indexOf('@') !=  MailArray[iMailIndex].lastIndexOf('@')) {
						flag1 = 0;
						alert("The Email address contains more than one @ characters");
						oEMailField.focus();
					} else if ((MailArray[iMailIndex].charAt(MailArray[iMailIndex].indexOf('@') + 1) ==  '.') || 
							   (MailArray[iMailIndex].charAt(MailArray[iMailIndex].indexOf('@') - 1) ==  '.')) {
						flag1 = 0;
						alert("The Email address cannot contain '@' and '.' in sequence");
						oEMailField.focus();
					} else if (MailArray[iMailIndex].indexOf('@') > MailArray[iMailIndex].lastIndexOf('.')) {
						flag1 = 0;
						alert("The Email address should not contain a '@' after the last '.'");
						oEMailField.focus();
					} else if (MailArray[iMailIndex].indexOf('..') > 0) {
						flag1 = 0;
						alert("The Email address should not contain consecutive '.'s.");
						oEMailField.focus();
					}
				}
			}

			if (flag1 == 0) {
				retval = retval && false;
				//return false;
			} else {
				retval = retval && true;
				//return true;
			}

		}
	}
	//alert('retval from email check=' + retval);
	return retval;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#8
	
	Function to validate the email strings (comma separated) passed.
	
	Parameters				:	1) Comma separated e-mail strings that are to be validated.

	Return value			:	True	-	if all e-mail strings are valid
								False	-	otherwise
*/

function isValidEmail(oEMailField) {

	if(oEMailField.value == "")	{
		return true;
	}

	var good_chars_arr	= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

	var MailArray		= oEMailField.value.split(",");
	var iMailIndex		= 0;
	var retval			= true;
	
	for (iMailIndex = 0; iMailIndex < MailArray.length; iMailIndex++) {

		if (trim(MailArray[iMailIndex]).length == 0) {
			alert("Each of the string literals separated by commas should be valid e-mail ids.");
			oEMailField.focus();
			return false;
		} else if (MailArray[iMailIndex].substring(MailArray[iMailIndex].length - 1, MailArray[iMailIndex].length) == "@") {
			alert("The Email address should not end with '@'");
			oEMailField.focus();
			//retval = false;
			return false;
		} else if (MailArray[iMailIndex].substring(0, 1) == "@") {
			alert("The Email address should not begin with '@'");
			oEMailField.focus();
			//retval = false;
			return false;
		} else if (MailArray[iMailIndex].substring(0, 1) == ".") {
			alert("The Email address should not begin with '.'");
			oEMailField.focus();
			//retval = false;
			return false;
		} else if (MailArray[iMailIndex].substring(MailArray[iMailIndex].length - 1, MailArray[iMailIndex].length) == ".") {
			alert("The Email address should not end with '.'");
			oEMailField.focus();		
			//retval = false;
			return false;
		} else {
			var flag1 = 1;
			if (MailArray[iMailIndex] != "") {
				var flag = 0;
				for (var i = 0; i < MailArray[iMailIndex].length; i++) {
					if (MailArray[iMailIndex].substring(i, i + 1) == "@") {
						flag = 1;
					}
				}
				if (flag == 0) {
					flag1 = 0;
					alert("The Email Address field does not contain an @.");
					oEMailField.focus();
				} else {
					flag = 0;
					for (var i = 0; i < MailArray[iMailIndex].length; i++) {
						if (MailArray[iMailIndex].substring(i, i + 1) == ".") {
							flag = 1;
						}
					}
					if (flag == 0) {
						flag1 = 0;
						alert("The Email Address field does not contain a dot.");
						oEMailField.focus();
					}
				}
				if (flag != 0) {
					if (MailArray[iMailIndex].indexOf('@') !=  MailArray[iMailIndex].lastIndexOf('@')) {
						flag1 = 0;
						alert("The Email address contains more than one @ characters");
						oEMailField.focus();
					} else if ((MailArray[iMailIndex].charAt(MailArray[iMailIndex].indexOf('@') + 1) ==  '.') || 
							   (MailArray[iMailIndex].charAt(MailArray[iMailIndex].indexOf('@') - 1) ==  '.')) {
						flag1 = 0;
						alert("The Email address cannot contain '@' and '.' in sequence");
						oEMailField.focus();
					} else if (MailArray[iMailIndex].indexOf('@') > MailArray[iMailIndex].lastIndexOf('.')) {
						flag1 = 0;
						alert("The Email address should not contain a '@' after the last '.'");
						oEMailField.focus();
					} else if (MailArray[iMailIndex].indexOf('..') > 0) {
						flag1 = 0;
						alert("The Email address should not contain consecutive '.'s.");
						oEMailField.focus();
					}
				}
			}

			if (flag1 == 0) {
				//retval = retval && false;
				return false;
			} else {
				retval = retval && true;
				//return true;
			}

		}
	}
	//alert('retval from email check=' + retval);
	return retval;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#9
	
	Triggered on the keypress event on any user control. Will allow only numeric values to be entered.

*/

function allowNumbersOnly() {

   if (!((event.keyCode > 47  && event.keyCode < 58 ) || event.keyCode == 8 ))
		event.keyCode =0;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*
	#10
	
	This function validates the value of the field passed against SQL Injection. 
	(Refer #Security in I-Gate\B-Documents\Z-Standards\TECHSTDS-IGATE-01112002.doc)
	
	Parameters				:	1) Field which has to be validated against SQL Injection

	Return value			:	True	-	if the value in the field passed is SQL safe.
								False	-	if unsafe

*/

function isSQLSafe(oField) {

	var known_bad_arr	= new Array("selECT", "INSERT", "UPDATE", "DELETE", "DROP", "SHUTDOWN", ";", "'", "--");

	var value_2_check	= oField.value.toUpperCase();

	var i = 0;
	var retval1 = true;
	
	for (i = 0; i < known_bad_arr.length; i++) {
		if (value_2_check.indexOf(known_bad_arr[i].toUpperCase()) != -1) {
			alert('Literals sequences like \'' + known_bad_arr[i] + '\' are not allowed as input.\nPlease correct this.');
			oField.focus();
			retval1 = false;
			break;
		}
	}

	return retval1;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#11
	
	Triggered on the keypress event on any user control. Characters recognized as valid charaters for address
	fields, ie, [A-Z][a-z][0-9][space, comma, period, underscore, hiphen, stroke] only will be allowed to be 
	entered.

*/

function allowAddressCharsOnly() {

    var ls_Char;
    ls_Char= event.keyCode;

    //Char between 0-1, A-Z and a-z
    if (( ls_Char<48 || ls_Char>57 ) && (ls_Char<65 || ls_Char>90) && (ls_Char <97 || ls_Char>122)) {
		//Char space, comma, dot, underscore, hiphen and stroke
		//added for hash, Ampersand, open and close bracket Delia 31/03/2003 CR 172
		if ((ls_Char != 32) && (ls_Char != 44 &&  ls_Char != 46) && (ls_Char!= 95) && (ls_Char!= 45) && (ls_Char!= 47) && (ls_Char != 35) && (ls_Char != 38) && (ls_Char != 40) && (ls_Char != 41))
			event.keyCode = 0;
    }
    
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#12
	
	Triggered on the keypress event on any user control. Characters recognized as valid telephone/fax fields, 
	ie, [A-Z][a-z][0-9][space, plus] only will be allowed to be 
	entered.

*/

function allowPhoneFaxCharsOnly() {

    var ls_Char;
    ls_Char= event.keyCode;
    alert(ls_Char);
    //Char between 0-1, A-Z and a-z
    if (( ls_Char<48 || ls_Char>57 )) {
		//Char space, plus and hiphen, open brackets, close brackets
		if ((ls_Char != 39) && (ls_Char!= 43) && (ls_Char!= 45) && (ls_Char!= 40) && (ls_Char!= 41) && (ls_Char!= 32) && (ls_Char!= 47))
			event.keyCode = 0;
    }
    
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#13
	
	Triggered on the keypress event on any user control. Characters recognized as valid e-mail characters, 
	ie, [A-Z][a-z][0-9][hiphen, underscore, period, @] only will be allowed to be entered.

*/

function allowEmailCharsOnly() {

    var ls_Char;
    ls_Char= event.keyCode;

    //Char between 0-1, A-Z and a-z
    if (( ls_Char<48 || ls_Char>57 ) && (ls_Char<65 || ls_Char>90) && (ls_Char <97 || ls_Char>122)) {
		//Char hiphen, underscore, period, @
		if ((ls_Char != 45) && (ls_Char!= 95) && (ls_Char!= 46) && (ls_Char!= 64) && (ls_Char!= 44))
			event.keyCode = 0;
    }
    
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#14
	
	Triggered on the keypress event on any user control. Characters recognized as valid date characters, 
	ie, [0-9][stroke] only will be allowed to be entered.

*/

function allowDateCharsOnly() {

    var ls_Char;
    ls_Char= event.keyCode;
    //Char between 0-1, A-Z and a-z
    if (( ls_Char<48 || ls_Char>57 )) {
		//stroke
		if ((ls_Char!= 47))
			event.keyCode = 0;
    }
    
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#15
	
	Function for adding options in a drop down.
	
	Parameters				:	1) 

	Return value			:	
*/

function AddOptions(p_Object, p_Code, p_Description) {

    oOption			= document.createElement("OPTION") ;  
    oOption.value	= p_Code ; 
    oOption.text	= p_Description;
    p_Object.add(oOption);   

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#16
	
	Function for deleting options in a drop down.
	
	Parameters				:	1) 

	Return value			:	
*/

function RemoveOptions(p_Object) {

	var l = p_Object.length;
	var k;
	  
	for(k = 0; k < l; k++) {
		p_Object.remove(p_Object.options(0).index);
	}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#17
	
	Find whether Form is dirty or not. If its dirty (contents are changed) then 
	save data else don't do anything
	
	Parameters				:	1) Form to check

	Return value			:	
*/

function IsDirty(eForm) {
	// Get the total no of elements in the form

	var iNumElems = eForm.elements.length;

	for (var i=0; i<iNumElems; i++) {
		var eElem = eForm.elements[i];

		if ("text" == eElem.type || "TEXTAREA" == eElem.tagName) {
			// if element type is Text and textarea
			if (eElem.value != eElem.defaultValue) 
				return true;
		} else if ("checkbox" == eElem.type || "radio" == eElem.type) {
			// if its chechbox or radio button then 
		    if (eElem.checked != eElem.defaultChecked) 
		  	return true;
		} else if ("selECT" == eElem.tagName) {
			// if its drop down then
			var cOpts = eElem.options;
			var iNumOpts = cOpts.length;
			for (var j=0; j<iNumOpts; j++) {
				var eOpt = cOpts[j];
				if (eOpt.selected != eOpt.defaultselected) 
	  				return true;
			}
		}
	}

	return false;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#18
	
	Code for selecting all checkboxes
	
	Parameters				:	1) 

	Return value			:	
*/

function selectAll(pObj,oTable,ChkBox) {

    var l_flag, l_value,ln_i;
 
    l_flag = pObj.checked;
    
    if (oTable.rows.length<2) {
     pObj.checked=false;
     return true;
    }       
 	
    if (l_flag==1) {
      l_value="Y"; 
      pObj.title="Click to unselect all records." 
    } else {
      l_value="N";
      pObj.title="Click to select all records."
    }

     for (ln_i=0;ln_i<ChkBox.length;ln_i++)
         ChkBox(ln_i).checked=l_flag;      

       if (ln_i==0)
         ChkBox.checked=l_flag;      
 }  

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#19
	
	Delete selected Records
	
	Parameters				:	1) 

	Return value			:	
*/

function DeleteselectedRow(pObj, oTable, oCtrlBox) {

	var	oRow, oCell, ln_i, ln_Cntr, ln_TotalCnt;     
	
	if (oCtrlBox.length ==undefined)
	{	 
	  ln_Cntr = 1;	 
	 } 
	else
	{		
	  ln_Cntr = oCtrlBox.length;
	 } 
	

   ln_TotalCnt =  ln_Cntr;
	for(ln_i = 1; ln_i < ln_TotalCnt+1; ln_i++) {		
		if (ln_Cntr > 1 )
		 { 	
				if (oCtrlBox(ln_i - 1).checked) {

				//If its last row then delete it else hide it
				if (ln_i == ln_Cntr ) {

					oTable.deleteRow(ln_i+1); 
					ln_Cntr--;
					/*	If last row is deleted , it looks for rows to be deleted 
						from last if last row is hidden then will be deleted else 
						exited from the loop.
					*/
	
					while (ln_Cntr > 1) {
	
						if (oTable.rows(ln_Cntr-1+1).style.display == "none")
						{
							oTable.deleteRow(ln_Cntr-1+1);                 
							ln_Cntr--;
						}
						else
							break;
					}
				} else {
					oCtrlBox(ln_i - 1).value = "N";
					oTable.rows(ln_i+1).style.display ="none";
				}
			}
		} else {
			if (oCtrlBox.length > 0) {
				if (oCtrlBox(0).checked) {
					//If its last row then delete it else hide it
					oTable.deleteRow(ln_i+1);
			} else {        
					if (oCtrlBox.checked)
						//If its last row then delete it else hide it
						oTable.deleteRow(ln_i+1);

				}
			}
		}
	}  //end of loop
	
} //end of function

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#20
	
	This function checks if the date passed is valid.
	
	Validations performed:
		
		1. If date passed is in the valid format ie, dd/mm/yyyy.
		2. Check for months with 30 and 31 days.
		3. Date check for the month of February.
		
	Called by				:	
	Reasons to be called	:	
	
	Calls					:	isValidFormat(DateString)
	Reason to call			:	Since date values are entered(typed) manually and not selected 
								from a drop-down or datepicker, it needs to be ensured that the dates
								are entered in dd/mm/yyyy format. This function checks this condition
	
*/

function isValidDate(oDateFrom) {

	var sDateFrom = oDateFrom.value;
	
	var ALERT_FROMDATE_INVALID = 'The date is either out of range or not in a vaild format.\nPlease enter it in the format (dd/mm/yyyy).\n\nAllowed Range: 01/01/' + MIN_YEAR_LIMIT + ' to 31/12/' + MAX_YEAR_LIMIT;
	
	// array to split the date values passed as dd/mm/yyyy
	var dateStrArr;	
	
	// day, month, year and date {FROM}
	var FromDay, FromMonth, FromYear, FromDate;
	
	if (!isValidFormat(sDateFrom)) {
		alert(ALERT_FROMDATE_INVALID);
		oDateFrom.focus();
		return false;
	}

	// Splitting the FROM date into variables.
	dateStrArr = sDateFrom.split('/');
	FromDay		= dateStrArr[0];
	FromMonth	= dateStrArr[1];
	FromYear	= dateStrArr[2];
		
	//Checking for validity of the FROM and TO dates.

	if ((FromMonth == 4 || FromMonth == 6 || FromMonth == 9 || FromMonth == 11) && (FromDay > 30)) {
		//Date validation for the months of April, June, September and November.
		alert("The specified month cannot have more than 30 days.");
		oDateFrom.focus();
		return false;
	} else if ((FromMonth == 2) && ((FromYear)% (4) != 0) && (FromDay > 28))	{
		//Date validation for February in an year other than a Leap year.
		alert("February cannot have more than 28 days, except for a leap year.");
		oDateFrom.focus();
		return false;
	} else if ((FromMonth == 2) && (FromDay > 29)) {
		//Date validation for February in a Leap Year.
		alert("February cannot have more than 29 days.");
		oDateFrom.focus();
		return false;
	}
	
	return true;
	
} // end function isValidDate

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#21
	
	This function limits the characters entered in a textarea based on the constant
	TEXTAREA_MAXLEN. Has to be called on the keypress event of a textarea.
	
	Validations performed:
		
	Called by				:	
	Reasons to be called	:	
	
	Calls					:	
	Reason to call			:	
	
*/

function checkTextAreaMaxLen(oTextArea) {

	if(oTextArea.value.length > TEXTAREA_MAXLEN) {	
		alert("Only " + TEXTAREA_MAXLEN + " characters are allowed.");
		oTextArea.focus();
		event.keyCode = 0;
		return false;
	}	
	return true;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////


/*
	#24
	
	Triggered on the keypress event on any user control. 
	Will allow only characters [A-Z][a-z][0-9][comma, period, underscore, forward slash] to be entered.

*/

function allowContractNoteChars() {

    var ls_Char;
    ls_Char= event.keyCode;

    //Char between 0-1, A-Z and a-z
    if (( ls_Char<48 || ls_Char>57 ) && (ls_Char<65 || ls_Char>90) && (ls_Char <97 || ls_Char>122)) {
		//Char comma, dot, underscore and forward slash
		if ((ls_Char != 44 &&  ls_Char != 46) && (ls_Char!= 95) && (ls_Char!= 45) && (ls_Char!= 47)) 
			event.keyCode = 0;
    }
    
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#25
	
	Triggered on the keypress event on any user control. 
	Will allow only characters [A-Z][a-z][0-9][space, comma, period, underscore] to be entered.

*/

function isAllowedCombination(oUserName, oPassword) {

	var strUserName		=	trim(oUserName.value).toUpperCase();
	var strPassword		=	trim(oPassword.value).toUpperCase();
	
	var ALERT_SAME_USERNAME_PASSWORD = "The Username and Password cannot be the same.";

	if (strUserName == strPassword) {
		alert(ALERT_SAME_USERNAME_PASSWORD);
		oPassword.focus();
	    return false;
	}
	return true;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#26
	
	Checks if the password in the password field passed meets the minimum
	password length criteria.

*/

function hasMinPasswordLength(oPassword) {

	var strPassword		=	trim(oPassword.value);
	
	var ALERT_MIN_PWD_LENGTH = "The password is not valid.\nPasswords are a minimum of " + MIN_PWD_LEN + " characters in length.";

	if (strPassword.length < MIN_PWD_LEN) {
		alert(ALERT_MIN_PWD_LENGTH);
		oPassword.focus();
	    return false;
	}
	return true;
}
	
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#27
	
	Checks if the new password and old password are matching.

*/

function isAllowedHistory(oOldPass, oNewPass) {

	var ALERT_PWD_HiSTORY = "The new password cannot be same as the old password.";

	var strOldPassword	=	trim(oOldPass.value);
	var strNewPassword	=	trim(oNewPass.value);

	if (strOldPassword.length != strNewPassword.length) {
		return true;
	}
	if (strOldPassword == strNewPassword) {
		alert(ALERT_PWD_HiSTORY);
		oNewPass.focus();
	    return false;
	}
	return true;
}
	
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#28
	
	Compares dates.

*/

function CompareDates (pDateFrom, pDateTo, ErrMsg, pFocusField) {

  var dateStrArr,sDateFrom, sDateTo;	
  var FromDay, FromMonth, FromYear, FromDate;
  var ToDay, ToMonth, ToYear, ToDate;
  
  sDateFrom = pDateFrom.value
  sDateTo   = pDateTo.value
  if (isValidDate(pDateFrom)==false )
     return false;
  
  if (isValidDate(pDateTo)==false )
     return false; 
  
   	// Splitting the FROM date into variables.
	dateStrArr = sDateFrom.split('/');
	FromDay		= dateStrArr[0];
	FromMonth	= dateStrArr[1];
	FromYear	= dateStrArr[2];
		
	// Splitting the TO date into variables.
	dateStrArr = sDateTo.split('/');
	ToDay		= dateStrArr[0];
	ToMonth		= dateStrArr[1];
	ToYear		= dateStrArr[2];
	
	if (parseInt(FromDay) < 10 && FromDay.length < 2) 
		FromDay = '0' + FromDay;
	
	if (parseInt(FromMonth) < 10 && FromMonth.length < 2) 
		FromMonth = '0' + FromMonth;
	
	if (parseInt(ToDay) < 10 && ToDay.length < 2) 
		ToDay = '0' + ToDay;
	
	if (parseInt(ToMonth) < 10 && ToMonth.length < 2) 
		ToMonth = '0' + ToMonth;
		
	FromDate		=	parseInt(FromYear + FromMonth + FromDay);
	ToDate		=	parseInt(ToYear + ToMonth + ToDay);
			
	var diff;
	
	diff		=	(ToDate - FromDate);
	
	if (diff < 0) {
	   alert (ErrMsg);
		pFocusField.focus();
		return false;
	}

	return true;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#29
	
	Trap enter key press.

*/

function TrapEnterKey() {
	if(window.event.keyCode == 13) {
		if(trim(event.srcElement.tagName.toUpperCase()) != "A") {
			return true;
		}
	}
	return false;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#30
	
	Allow only characters appropriate for settlement date.

*/

function allowSettlementNoChars() {

    var ls_Char;
    ls_Char= event.keyCode;

    //Char between 0-1, A-Z and a-z
    if (( ls_Char<48 || ls_Char>57 ) && (ls_Char<65 || ls_Char>90) && (ls_Char <97 || ls_Char>122)) {
		//Char space, comma, dot and underscore
		if ((ls_Char != 32) && (ls_Char != 44 &&  ls_Char != 46) && (ls_Char!= 95) && (ls_Char!= 47) && (ls_Char!= 45)) 
			event.keyCode = 0;
    }
    
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#31
	
	Triggered on the keypress event on any user control. 
	Will allow only characters [A-Z][a-z] to be entered.

*/

function allowAlphabetsOnly(/*Item*/) {

	//var ls_Char= Item;
	ls_Char	=	event.keyCode;

	//Char between A-Z and a-z
	if ( (ls_Char < 65 || ls_Char > 90) && (ls_Char < 97 || ls_Char > 122) ) 
	{	    
		event.keyCode = 0;
		alert('Please enter only alphabet characters !');
	}
	    
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#32
	
	Triggered on the keypress event on any user control. 
	Will allow only characters [A-Z][a-z][0-9] to be entered.

*/

function allowAlphabetsAndNumbersOnly() {

	var ls_Char;
	ls_Char	=	event.keyCode;
	//alert(ls_Char);
	//Char between 0-1, A-Z and a-z and Space
	//if ((( ls_Char < 48 || ls_Char > 57 ) && (ls_Char >= 65 && ls_Char<= 90) || (ls_Char < 97 || ls_Char > 122)|| (ls_Char==32) || (ls_Char==40)|| (ls_Char==41)||(ls_Char==45)||(ls_Char==46))  || (( ls_Char>=97 && ls_Char <=122) || (ls_Char==32)|| (ls_Char==40)|| (ls_Char==41)||(ls_Char==45) || (ls_Char==46)))
	if (( ls_Char < 48 || ls_Char > 57 ) && (ls_Char < 65 || ls_Char > 90) && (ls_Char < 97 || ls_Char > 122) || (ls_Char==32))
	 {
		event.keyCode = 0;
	}
		    
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////////////////


/*
	#33
	
	Compares dates for downloading activity/file logs.

*/

function checkDatesForDownloadLimit(pDateFrom, sDateTo, ErrMsg, pFocusField) {
   //alert(pDateFrom + sDateTo + ErrMsg + pFocusField);
   var dateStrArr;
  //,sDateFrom, sDateTo;	
  var FromDay, FromMonth, FromYear, FromDate;
  var ToDay, ToMonth, ToYear, ToDate;
  
  sDateFrom = pDateFrom.value
  /*
  sDateTo   = pDateTo.value
  */
  
  if (isValidDate(pDateFrom) == false)
     return false;
  
  
   	// Splitting the FROM date into variables.
	dateStrArr	= sDateFrom.split('/');
	FromDay		= dateStrArr[0];
	FromMonth	= dateStrArr[1];
	FromYear		= dateStrArr[2];
		
	// Splitting the TO date into variables.
	dateStrArr	= sDateTo.split('/');
	ToDay			= dateStrArr[0];
	ToMonth		= dateStrArr[1];
	ToYear		= dateStrArr[2];
	
	if (parseInt(FromDay) < 10 && FromDay.length < 2) 
		FromDay = '0' + FromDay;
	
	if (parseInt(FromMonth) < 10 && FromMonth.length < 2) 
		FromMonth = '0' + FromMonth;
	
	if (parseInt(ToDay) < 10 && ToDay.length < 2) 
		ToDay = '0' + ToDay;
	
	if (parseInt(ToMonth) < 10 && ToMonth.length < 2) 
		ToMonth = '0' + ToMonth;
		
	FromDate		=	parseInt(FromYear + FromMonth + FromDay);
	ToDate		=	parseInt(ToYear + ToMonth + ToDay);
	//alert(FromDate)		;
	//alert(ToDate + "," +sDateTo +","+ ToDay +","+ToMonth+","+ToYear);
	//alert(ToDate);
	var diff;
	
	//diff		=	(ToDate - FromDate);
	diff		=	(FromDate - ToDate);
	//alert(diff);
	if (diff < 0) {
	   alert (ErrMsg);
		pFocusField.focus();
		return false;
	}
	
	return true;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#34
	
	Delete selected Trade Records
	
	Parameters				:	1) 

	Return value			:	
*/

function DeleteselectedTradeRows(pObj, oTable, oCtrlBox, iMandatoryRows) {

	var	oRow, oCell, ln_i, ln_Cntr, ln_TotalCnt;
	
	if (oCtrlBox.length == undefined) {	 
		ln_Cntr = 1;	 
	} else {		
		ln_Cntr = oCtrlBox.length;
	} 

   ln_TotalCnt =  ln_Cntr;
	for(ln_i = 1; ln_i < ln_TotalCnt+1; ln_i++) {
		if (ln_Cntr > iMandatoryRows) {
			if (oCtrlBox.length == undefined) {
				if (!(oCtrlBox.checked))
					continue;
			} else {
				if (!(oCtrlBox(ln_i - 1).checked))
					continue;
			}
			//If its last row then delete it else hide it
			if (ln_i == ln_Cntr ) {
				oTable.deleteRow(ln_i+1); 
				ln_Cntr--;
				/*	If last row is deleted , it looks for rows to be deleted 
					from last if last row is hidden then will be deleted else 
					exited from the loop.
				*/
				while (ln_Cntr > 1) {
					if (oTable.rows(ln_Cntr-1+1).style.display == "none") {
						oTable.deleteRow(ln_Cntr-1+1);
						ln_Cntr--;
					} else {
						break;
					}
				}
			} else {
				oCtrlBox(ln_i - 1).value = "N";
				oTable.rows(ln_i+1).style.display = "none";
			}
		} else {
			if (oCtrlBox.length > 0) {
				if (oCtrlBox(0).checked) {
					//If its last row then delete it else hide it
					oTable.deleteRow(ln_i + 1);
			} else {        
				if (oCtrlBox.checked)
					//If its last row then delete it else hide it
					oTable.deleteRow(ln_i + 1);
				}
			}
		}
	}  //end of loop
} //end of function

function TestDeleteselectedTradeRows(pObj, oTable, oCtrlBox, iMandatoryRows) {
	
	var	oRow, oCell, ln_i, ln_Cntr, ln_TotalCnt;
	
	if (oCtrlBox.length == undefined) {	 
		ln_Cntr = 1;	 
	} else {		
		ln_Cntr = oCtrlBox.length;
	} 

   
   ln_TotalCnt =  ln_Cntr;
	for(ln_i = 1; ln_i < ln_TotalCnt+1; ln_i++) {
		if (ln_Cntr > iMandatoryRows) {
			if (oCtrlBox.length == undefined) {
				if (!(oCtrlBox.checked))
					continue;
			} else {
				if (!(oCtrlBox(ln_i - 1).checked))
					continue;
			}
			//If its last row then delete it else hide it
			if (ln_i == ln_Cntr ) {
				oTable.deleteRow(ln_i+1); 
				ln_Cntr--;
				/*	If last row is deleted , it looks for rows to be deleted 
					from last if last row is hidden then will be deleted else 
					exited from the loop.
				*/
				while (ln_Cntr > 1) {
					if (oTable.rows(ln_Cntr-1+1).style.display == "none") {
						oTable.deleteRow(ln_Cntr-1+1);
						ln_Cntr--;
					} else {
						break;
					}
				}
			} else {
				oCtrlBox(ln_i - 1).value = "N";
				oTable.rows(ln_i+1).style.display = "none";
			}
		} else {
			if (oCtrlBox.length > 0) {
				if (oCtrlBox(0).checked) {
					//If its last row then delete it else hide it
					oTable.deleteRow(ln_i + 1);
			} else {        
				if (oCtrlBox.checked)
					//If its last row then delete it else hide it
					oTable.deleteRow(ln_i + 1);
				}
			}
		}
	}  //end of loop
} //end of function

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#35
	
	Open Help File for the page
	
	Parameters				:	1) 

	Return value			:	
*/

function openHelpFile() {
	window.top.WinHelp = window.open("OpenHelpFile.asp?ReferPageURL=" + escape(window.document.URL),'wndHelp',',menubar=no,left=300,top=100,scrollbars=yes,status=no,width=450,height=300');

} //end of function

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#36
	
	Close Help Windows
	
	Parameters				:	1) 

	Return value			:	
*/

function closeHelpWindows()
{			
	window.open('Close.htm', 'wndHelp', 'width=1, height=1, top=1000 , left=0 , menubar=no , titlebar=no , toolbar=no , statusbar=no');

} //end of function

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#37
	
	Form a string with the checked items in a checkbox array, and return the string.
	
	Parameters				:	1) oChkBox	-	Checkbox Object

	Return value			:	1) String containing character separated values of checked items in a checkbox.
*/

function getCheckedString(oChkBox) {

	var strReturn	=	"";

	//alert("oChkBox.length = " + oChkBox.length);
	if (oChkBox.length == undefined) {	//	single checkbox
		if (oChkBox.checked) {
			strReturn	=	oChkBox.value;
		}
	} else {	//	multiple checkbox
		for (iCount = 0; iCount < oChkBox.length; iCount++) {
			//alert("oChkBox[" + iCount + "].checked = " + oChkBox[iCount].checked + "\noChkBox[" + iCount + "].value = " + oChkBox[iCount].value);
			if (oChkBox[iCount].checked) {
				strReturn	=	strReturn + oChkBox[iCount].value + "~";
				//alert("strReturn = " + strReturn);
			}
		}
		strReturn	=	strReturn.slice(0, -1);
	}
	
	//alert("strReturn = " + strReturn);
	return strReturn;

} //end of function

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#38
	
	Receives initial string and final string and make Add and Del String out of these parameters.
	
	Parameters				:	1) Initial String ( the string returned at the time of page download from fn.#37)
									2) Final String ( the string returned at the time of submit from fn.#37)

	Return value			:	1) # separated string, first part is the "AddString", part 2 is "DelString"
*/

function getCheckedStringForDB(InitString, FinalString) {

	var strReturn	=	"";
	var strAdd		=	"";
	var strDel		=	"";
	var bFound;
	
	var arrInit		=	InitString.split("~");
	var arrFinal	=	FinalString.split("~");
	
	//alert("InitString = " + InitString + "\nFinalString = " + FinalString);
	var i = 0, j = 0;
	
	for (i = 0; i < arrInit.length; i++) {
		bFound	=	false;
		for (j = 0; j < arrFinal.length; j++) {
			//alert ("arrInit[" + i + "] = " + arrInit[i] + ", arrFinal[" + j + "] = " + arrFinal[j]);
			if (arrInit[i] == arrFinal[j]) {
				bFound	=	true;
				break;
			}
		}
		//alert("bFound = " + bFound);
		if (!bFound) {
			strDel	=	strDel + arrInit[i] + "~";
			//alert("strDel = " + strDel);
		}
	}
	strDel		=	strDel.slice(0, -1);
	if (strDel != "") {
		 strDel	=	strDel + "|";
	}
	
	for (j = 0; j < arrFinal.length; j++) {
		bFound	=	false;
		for (i = 0; i < arrInit.length; i++) {
			//alert ("arrFinal[" + j + "] = " + arrFinal[j] + ", arrInit[" + i + "] = " + arrInit[i]);
			if (arrFinal[j] == arrInit[i]) {
				bFound	=	true;
				break;
			}
		}
		//alert("bFound = " + bFound);
		if (!bFound) {
			strAdd	=	strAdd + arrFinal[j] + "~";
			//alert("strAdd = " + strAdd);
		}
	}
	strAdd		=	strAdd.slice(0, -1)
	if (strAdd != "") {
		 strAdd	=	strAdd + "|";
	}
	
	strReturn	=	strAdd + "#" + strDel;

	return strReturn;

} //end of function

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#39
	
	Traps paste event across pages using the keyboard. The function is called along with the 
	declaration to avoid code changes in all the pages.
	
	If any user messages are to be given at the time of blocking paste, uncomment the alert
	statement in the code below and give a custom message.
	
	Parameters				:	

	Return value			:	
*/

function trapContentPasteKey() {
	var kc = window.event.keyCode;

	if ((window.event.ctrlKey  && (kc == 86  || kc == 118)) ||	/*	Ctrl - V					*/
		(window.event.shiftKey &&  kc == 45               ) ||	/*	Shift - Insert				*/
		(window.event.shiftKey &&  kc == 121              ) ||	/*	Shift - F10					*/
		(kc == 93							              )		/*	Windows Key - Right Click	*/
	   ) {
		alert("This functionality is not allowed.");
		window.event.returnValue = false;
	}
}

document.onkeydown = trapContentPasteKey;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#40
	
	Traps mouse right click.
	
	If any user messages are to be given at the time of blocking paste, uncomment the alert
	statement in the code below and give a custom message.
	
	Parameters				:	

	Return value			:	
*/

function trapContentPasteMouse() {
	
	var mb					=	window.event.button;
	var triggerElement		=	window.event.srcElement.tagName;
	
	//	variable forbiddenElements is declare in the general section, 
	//	at the beginning of this file
	
	if (mb == 2 && (triggerElement == forbiddenElements[0] || triggerElement == forbiddenElements[1])) {
		alert("This functionality is not allowed.");
		window.event.returnValue = false;
		
	}
}

document.onmousedown = trapContentPasteMouse;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function clearClientClipBoard() {
	window.clipboardData.clearData();
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function attachTrapContentPasteIEMenuEvent()
{
	
	var iCount, oColl;
	var oTrig;
	
	oColl		=	document.all;
	if (oColl == null) return;
	
	for (iCount = 0; iCount < oColl.length; iCount++) 
	{
		oTrig	=	oColl.item(iCount);
		if (oTrig.tagName == forbiddenElements[0] || oTrig.tagName == forbiddenElements[1]) 
		{
			oTrig.attachEvent("onbeforepaste", clearClientClipBoard);
		}
	}
}

/*
document.onload			=	clearClientClipBoard();
//document.onfocus			=	clearClientClipBoard();
//document.onbeforepaste	=	clearClientClipBoard();
document.onbeforepaste	=	clearClientClipBoard();
document.onfocus		=	attachTrapContentPasteIEMenuEvent();
*/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////


/*
	#
	
	Get No of Visible Rows in table
*/

//************************************* Get No of Visible Rows in table ********************//
//Added by Anil on 14th Dec 2001 to synchronize value of TotalNoOfRec in header part with NoOfVisileRows.

function GetNoOfVisibleRow(oTable)
{
 var ln_TotalNoOfRec=0;
  for(var ln_i=1;ln_i<oTable.rows.length;ln_i++)
  {
    if (oTable.rows(ln_i).style.display =="")
    ln_TotalNoOfRec++;
  }
  return ln_TotalNoOfRec;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	#
*/

//*************************************  select Single CheckBox ****************************//

function fn_checkbox(pObj)
{
  if (pObj.checked)
    pObj.title="Click to unselect.";
  else
    pObj.title="Click to select.";
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function isProperEmail(ObjEmail)
{
    var j;    
    // This function is used to validate a given e-mail 
    // address for the proper syntax
	email=ObjEmail.value;
	if (email == "")
	{
	   return true;
	}

	badStuff = ";:/,' \"\\";
	for (j=0; j<badStuff.length; j++)
	{
	  badCheck = badStuff.charAt(j)
	  if (email.indexOf(badCheck,0) != -1)
        {
          alert ("Please enter proper email address");
          ObjEmail.focus();
          return false;     
        }
      }
 	posOfAtSign = email.indexOf("@",1)
	if (posOfAtSign == -1) 
      {
          alert ("Please enter proper email address");
          ObjEmail.focus();
          return false;     
      }

 	if (email.indexOf("@",posOfAtSign+1) != -1) 
      {
          alert ("Please enter proper email address");
          ObjEmail.focus();
          return false;     
      }

	posOfPeriod = email.indexOf(".", posOfAtSign)
	if (posOfPeriod == -1) 
      {
          alert ("Please enter proper email address");
          ObjEmail.focus();
          return false;     
      }


      if (posOfPeriod+2 > email.length) 
      {
          alert ("Please enter proper email address");
          ObjEmail.focus();
          return false;     
      }

	return true
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
	Triggered on the keypress event on any user control. In addition to numeric values, it will allow 'dot' to be entered.
*/

function allowDecimals() {

   if (!((event.keyCode > 47  && event.keyCode < 58 ) || event.keyCode == 8 || event.keyCode == 46 ))
		event.keyCode =0;

}

// ******************************************Manali Javascript**************************

//Decimals

       function allowDecimalsM(objName)
       {
            if(event.keyCode == 13)
			{
				event.keyCode = 0;
				//alert('Please press submit button to get the results');
				return false;
			}
            else if (!((event.keyCode > 47  && event.keyCode < 58 ) || event.keyCode == 46 ))
			{
				event.keyCode =0;
				alert('Please enter only digits.');
				document.all(objName).focus();
			}    
			else
			{
				if ((event.keyCode > 47  && event.keyCode < 58 ) || (event.keyCode == 46 ))
				{
				// if '.'
					if(event.keyCode == 46)
					{
						if(document.all(objName).value.length == 0)
						{ 
							event.keyCode = 0;
							alert('Please enter Trade Price in a valid format. e.g.1234.00') ;
							document.all(objName).focus();
							return false;
						}
						else 
						{
							if (document.all(objName).value.lastIndexOf('.') > 0)
							{
								event.keyCode = 0;
								alert('Please enter Trade Price in a valid format. e.g.1234.00');
								document.all(objName).focus();
								return false;
							}
						}  
					}
					// if 0 - 9
					else if (event.keyCode > 47  && event.keyCode < 58) 
					{
						if(document.all(objName).value != '')
						{
							var txtValue = document.all(objName).value;
							if (txtValue.lastIndexOf('.') <= 0)
							{                         
								if(document.all(objName).value.length >= 6)
								{
									event.keyCode = 0;
								} 
							}  
						}
					}    
				}
           }
       }

 
      function IsNumberM(str)
	  {
		//var str = document.all(ctrlName).value;
		var charCode;
		for(l = 0; l< str.length; l++)
		{
			charCode = str.charCodeAt(l);
			if(!(charCode > 47  && charCode < 58))
			{
				return false;
			}
	    }
	    return true;
      }
     
     //Check If Decimal
     function IsDecimalM(str)
     {
		//var str = document.all(ctrlName).value;
		var charCode;
		for(m = 0; m< str.length; m++)
		{
			charCode = str.charCodeAt(m);
			if(!((charCode > 47  && charCode < 58) || charCode == 46))
			{
				return false;
			}
		}
		return true;
     }
     
     //*******************************************End of Manali Javascript*****************************************
////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function isTodaysDate(oCurrentDate,oEnteredDate){

var sCurrentDate = oCurrentDate.value;
var sEnteredDate = oEnteredDate.value;
var sCurrentDay, sCurrentMonth, sCurrentYear;
var sEnteredDay, sEnteredMonth, sEnteredYear;
// array to split the date values passed as dd/mm/yyyy
var dateStrArr;	

// Splitting the FROM date into variables.
dateStrArr = sCurrentDate.split('/');
sCurrentDay	    = dateStrArr[0];
sCurrentMonth	= dateStrArr[1];
sCurrentYear	= dateStrArr[2];

// Splitting the FROM date into variables.
dateStrArr = sEnteredDate.split('/');
sEnteredDay	    = dateStrArr[0];
sEnteredMonth	= dateStrArr[1];
sEnteredYear	= dateStrArr[2];

if (((sCurrentDay - sEnteredDay) != 0 ) || ((sCurrentMonth - sEnteredMonth) != 0 ) || ((sCurrentYear - sEnteredYear) != 0 )) 
{
	alert("Please enter today's date");
	oEnteredDate.focus();
	return false;
}
return true;
}

////////////////////////////////////////////////////////////////////////
/* 
 #41.
 */ 
 
function allowTimeCharsOnly()
			{
			var ls_Char;
			ls_Char= event.keyCode;
			//alert(ls_Char)
			//Char between 0-1, A-Z and a-z
			if (( ls_Char<48 || ls_Char>58 )) {
				//stroke
				//if ((ls_Char!= 47))
					event.keyCode = 0;
			}
			}
/////////////////////////////////////////////////////////////////////////
/*
#42.
*/
function isValidTime(oTimeFrom) {

		var sTimeFrom = oTimeFrom.value;
			
		var ALERT_FROMTime_INVALID = 'The time is either out of range or not in a vaild format.\nPlease enter it in the format (hh:min:ss).\n\nAllowed Range:00:00:00 to 23:59:59';
			
		// array to split the time values passed as hh:min:ss
		var timeStrArr;	
		//alert(sTimeFrom);
		// Hour, Min, Sec and date {FROM}
		var FromHour, FromMin, FromSec, FromDate;
			
		if(sTimeFrom==""){
		return true;
		}
		if (!isValidTimeFormat(sTimeFrom)) {
			alert( ALERT_FROMTime_INVALID);
			oTimeFrom.focus();
			return false;
		}

		/*// Splitting the FROM time into variables.
		timeStrArr = sTimeFrom.split(':');
		FromHour		= timeStrArr[0];
		FromMin			= timeStrArr[1];
		FromSec			= timeStrArr[2];
				
		//Checking for validity of the FROM and TO dates.

		if ((FromMonth == 4 || FromMonth == 6 || FromMonth == 9 || FromMonth == 11) && (FromDay > 30)) {
			//Date validation for the months of April, June, September and November.
			alert("The specified month cannot have more than 30 days.");
			oDateFrom.focus();
			return false;
		} else if ((FromMonth == 2) && ((FromYear)% (4) != 0) && (FromDay > 28))	{
			//Date validation for February in an year other than a Leap year.
			alert("February cannot have more than 28 days, except for a leap year.");
			oDateFrom.focus();
			return false;
		} else if ((FromMonth == 2) && (FromDay > 29)) {
			//Date validation for February in a Leap Year.
			alert("February cannot have more than 29 days.");
			oDateFrom.focus();
			return false;
		}*/
			
		return true;
			
	} // end function isValidTime			
	
/////////////////////////////////////////////////////////////////////////////////
/*
43.
*/

function isValidTimeFormat(sTimeValue) {
	
			var timeStrArr;
		    //alert(sTimeValue)
			timeStrArr =sTimeValue.split(':');
		
			if (timeStrArr.length < 3) {
				//alert('if #1');
				return false;
			}
			for (i = 0; i < timeStrArr.length; i++) {
				if (isNaN(timeStrArr[i]) || trim(timeStrArr[i]) == "" ) {
					//alert('if #2');
					return false;
				} else if (((parseInt(timeStrArr[i], 10) < 0) || (parseInt(timeStrArr[i], 10) > 23)) && (i == 0)) {
				//} else if (((dateStrArr[i] < 1) || (dateStrArr[i] > 31)) && (i == 0)) {
					//alert(sDateValue + ', ' + dateStrArr[i] + ', ' + i);
					//alert('if #3');
					return false;
				} else if (((parseInt(timeStrArr[i], 10) < 0) || (parseInt(timeStrArr[i], 10) > 59)) && (i == 1)) {
				//} else if (((dateStrArr[i] < 1) || (dateStrArr[i] > 12)) && (i == 1)) {
					//alert('if #4');
					return false;
				} else if (((parseInt(timeStrArr[i], 10) < 0) || (parseInt(timeStrArr[i], 10) > 59)) && (i == 2)) {
					//alert('if #f5');
					return false;
				}
			}

			return true;
		
	     } // end function isValidTimeFormat
////////////////////////////////////////////////////////////////////////////////////////////////
function chkExpDecimal()
{
	if(document.RegisEdu.txtEduPer.value != "") 
	{
	a=parseFloat(document.RegisEdu.txtEduPer.value);
	document.RegisEdu.txtEduPer.value=a;
	}
}


///////////////////////////////////////////////////////////////////////////////////////////////	



////////////////////////////////////////////////////////////////////////////////////////////////
function ValidateNumWithDecimal()
		{
			var intCharCode=window.event.keyCode;
			
			if ((intCharCode >= 48 && intCharCode <= 57) || (intCharCode >= 96 && intCharCode <= 105)  || intCharCode == 110  || intCharCode == 46 || intCharCode == 190 || intCharCode == 8 || intCharCode == 9 || intCharCode == 16)
			{
			;
			}
			else{
				document.parentWindow.event.returnValue = false
				window.event.returnValue = false;
				event.keyCode = 0
			}

		}
////////////////////////////////////////////////////////////////////////////////////////////////     
	 
////////////////////////////////////////////////////////////////////////////////////////////////     
function ValidateNum()
		{
			var intCharCode=document.parentWindow.event.keyCode;
			
			if ((intCharCode >=48 && intCharCode<=57 ) || ( intCharCode>=97 && intCharCode <=122) || event.keyCode == 8 || (intCharCode==32) ||(intCharCode==37) || (intCharCode==39) || (intCharCode==46))
			{
			;
			}
			else{
			document.parentWindow.event.returnValue = false;
			}
		}
////////////////////////////////////////////////////////////////////////////////////////////////     

////////////////////////////////////////////////////////////////////////////////////////////////     
function ValidateWithSpace()
		{
		alert('Edit');
		
			var intCharCode=document.parentWindow.event.keyCode;
			
			if (((intCharCode >= 65 && intCharCode<= 90) || ( intCharCode>=97 && intCharCode <=122) || (intCharCode==32) ||(intCharCode==37) || (intCharCode==39) || (intCharCode==40)|| (intCharCode==41)||(intCharCode==45)||(intCharCode==46))  || (( intCharCode>=97 && intCharCode <=122) || (intCharCode==32)|| (intCharCode==40)|| (intCharCode==41)||(intCharCode==45) || (intCharCode==46) ||  event.keyCode == 8))
			{
				return true;	
			}
			else{
				document.parentWindow.event.returnValue = false;
			}
		}
////////////////////////////////////////////////////////////////////////////////////////////////     
function Validate()
		{
			
			var intCharCode=document.parentWindow.event.keyCode;
			
			if ((intCharCode >=65 && intCharCode<=90) || ( intCharCode>=97 && intCharCode <=122) ||  event.keyCode == 8)
			{
			;	
			}
			else{
			document.parentWindow.event.returnValue = false;
			}
		}     
//////////////////////////////////////////////////////////////////////////////////////////////// 

//////////////////////////////////////////////////////////////////////////////////////////////// 
function allowPhoneFaxCharsOnly()
	 {

    var ls_Char;
    ls_Char= event.keyCode;

    //Char between 0-1, A-Z and a-z
    if (( ls_Char<48 || ls_Char>57 )) {
		//Char space, plus and hiphen, open brackets, close brackets
		if ((ls_Char != 32) && (ls_Char!= 43) && (ls_Char!= 45) && (ls_Char!= 40) && (ls_Char!= 41))
			event.keyCode = 0;
    }
    
}  
//////////////////////////////////////////////////////////////////////////////////////////////// 
/*
 44. Function isAfterToday(oDateFrom,oDateTo)
 
oDateFrom  ----- object containing actual date
oDateTo    ----- Object containing current date

*/
////////////////////////////////////////////////////////////////////////////////////////////////

function isAfterToday(oDateFrom,oDateTo)
{
    var sDateFrom = oDateFrom.value;    
	var sDateTo   = oDateTo.value;
    var dateStrArr;	
	
	// day, month, year and date {FROM}
	var FromDay, FromMonth, FromYear, FromDate;
	
	// day, month, year and date {TO}
	var ToDay, ToMonth, ToYear, ToDate;
	
	if (!isValidFormat(sDateFrom)) {
		alert("Date is not in correct format");
		oDateFrom.focus();
		return false;
	} 
	// Splitting the FROM date into variables.
	dateStrArr = sDateFrom.split('/');
	
	FromMonth	= dateStrArr[0];
	FromDay		= dateStrArr[1];
	FromYear	= dateStrArr[2];
		
	// Splitting the TO date into variables.
	dateStrArr = sDateTo.split('/');
	
	ToMonth		= dateStrArr[1];
	ToDay		= dateStrArr[0];
	ToYear		= dateStrArr[2];
    if (parseInt(FromDay) < 10 && FromDay.length < 2) 
			FromDay = '0' + FromDay;
		if (parseInt(FromMonth) < 10 && FromMonth.length < 2) 
			FromMonth = '0' + FromMonth;
		if (parseInt(ToDay) < 10 && ToDay.length < 2) 
			ToDay = '0' + ToDay;
		if (parseInt(ToMonth) < 10 && ToMonth.length < 2) 
			ToMonth = '0' + ToMonth;
		
		FromDate	=	parseInt(FromYear + FromMonth + FromDay);
		ToDate		=	parseInt(ToYear + ToMonth + ToDay);
				
		//alert('FromDate=' + FromDate + ', ToDate=' + ToDate);
		var diff;

		diff		=	(ToDate - FromDate);
		if (diff < 0) {
			alert ("Please give atleast today's date");
			oDateFrom.focus();
			return false;
		}
		return true;
}
///////////////////////////////////////////////////////////////////////////////////////////
/* #45 alloDecimal(oDecimal)   won't allow dot once again
    oDecimal ---->  object which is to be validated    
*/
///////////////////////////////////////////////////////////////////////////////////////////

function allowDecimal(oDecimal)
{
   if (!((event.keyCode > 47  && event.keyCode < 58 ) || event.keyCode == 8 || event.keyCode == 46 ))
		event.keyCode =0;
    if(oDecimal.value!=null)
    {
       var decimalval=oDecimal.value;
       var x,i,flag,len=decimalval.length;
       flag=0;  
       for(i=0;i<len;i++)
       {           
           x=decimalval.substr(i,1);
           if(x==".")
              flag=1;
       } 
       if(flag==1 && event.keyCode == 46)
            event.keyCode =0;
    }
}
///////////////////////////////////////////////////////////////////////////////////////////
/*
Get Month Name  "January 1, 2004"
*/
///////////////////////////////////////////////////////////////////////////////////////////
function monthDDYear(oDisplay)
{
    var d=new Date();
    var monthname=new Array("January","February","March","April","May","June","July","August","September","October","November","December");   
    var TODAY = monthname[d.getMonth()] + " " + d.getDate() + ", " + d.getFullYear();
    oDisplay.value = TODAY
}
///////////////////////////////////////////////////////////////////////////////////////////
/*
    Allows  -Alphabets, Dot, Space, Brackets, Underscore
*/
///////////////////////////////////////////////////////////////////////////////////////////
function allowAlphabetDotSpaceBracketOnly(Item)
{

	var ls_Char= Item;
	ls_Char	=	event.keyCode;

	//Char between A-Z and a-z
	if( !((ls_Char > 64 && ls_Char < 91) || (ls_Char > 96 && ls_Char < 123) || (ls_Char == 40) || (ls_Char == 41) || (ls_Char == 46) || (ls_Char == 32) || (ls_Char == 95)) )
	{	    
		event.keyCode = 0;
	}
	    
}

//////////// Functions from common.js //////////////////////////

    function TrimAndCheckBlank(objFieldNameValue)
	{ 
		try
		{
		  
		  txtCtrValue = new String();
		  if(objFieldNameValue.length > 0)
		  {
		  
			   txtCtrValue = trim(objFieldNameValue);
		  }
		  else 
		  {
			   txtCtrValue = objFieldNameValue ;
		  }	
		 
		  return txtCtrValue;
        }//try end
		catch(Exception)
		{
		}
  }
  
  //FUNCTION WHICH IS CALLED ON LOGOUT

		function Logout()
		{
			if (window.confirm("Are You Sure u want To Logout?")==true)
			{
				window.close();
				window.opener.close(); 
			}
					
		}
		
		    var counter = 0;
			function checkSBox(sAllID,sID)
			{
				var chkItem;
				var chkAll;
				
				chkAll = document.getElementById(sAllID);
				chkItem = document.getElementById(sID);
				
				if ( chkItem.status )
				{
					counter = counter + 1;
				}
				else
				{
					counter = counter - 1;
					chkAll.checked = false;
				}
			}
			
	function ValidateWithoutSpace()
	{
		 var ls_Char;
         ls_Char=event.keyCode;
      
            //Char between 0-1, A-Z and a-z
            if ((ls_Char<48 || ls_Char>57) && (ls_Char<65 || ls_Char>90) && (ls_Char <97 || ls_Char>122))
             {
		        //Char space, comma, dot and underscore
		        if ((ls_Char == 32) && (ls_Char != 44 &&  ls_Char != 46) && (ls_Char!= 95))
		        event.keyCode = 0;
		        return false;
            }
            else
            {
	            return true;
            }	
	}
	
	/*	
	Traps paste event across pages using the keyboard. The function is called along with the 
	declaration to avoid code changes in all the pages.
	
	If any user messages are to be given at the time of blocking paste, uncomment the alert
	statement in the code below and give a custom message.*/		
	function trapContentPasteKey() 
	{
//	    var kc = window.event.keyCode;

//	    if ((window.event.ctrlKey  && (kc == 86  || kc == 118)) ||	/*	Ctrl - V					*/
//		(window.event.shiftKey &&  kc == 45               ) ||	/*	Shift - Insert				*/
//		(window.event.shiftKey &&  kc == 121              ) ||	/*	Shift - F10					*/
//		(kc == 93							              ))		/*	Windows Key - Right Click	*/
//	    {
//		    alert("This functionality is not allowed.");
//		    window.event.returnValue = false;
//	    }
    }
    
    /* Traps mouse right click.
	If any user messages are to be given at the time of blocking paste, uncomment the alert	statement in the code below and give a custom message.*/
    function trapContentPasteMouse() 
    {	
//	    var mb					=	window.event.button;
//	    var triggerElement		=	window.event.srcElement.tagName;
//	
//	//	variable forbiddenElements is declare in the general section, 
//	//	at the beginning of this file
//	
//	    if (mb == 2 && (triggerElement == forbiddenElements[0] || triggerElement == forbiddenElements[1]))
//	    {
//		    alert("This functionality is not allowed.");
//		    window.event.returnValue = false;		
//	    }
    }
    
        function trapBackspace() 
		{
			var kc = window.event.keyCode;
			for (i = 1 ; i<= 255 ; i++)
			{
				if (kc == i)
				{
				window.event.keyCode = 0;
				alert("This functionality is not allowed");
				document.parentWindow.event.returnValue = false
				window.event.returnValue = false;
				event.keyCode = 0
				return false;
				}
			}
		    window.event.returnValue = false;
		    return ;
		}
		
		
		function traprightclick()
		{
		    var mb = window.event.button;
		    var triggerElement=window.event.srcElement.tagName;
		    if (mb == 2)
		    {
		        alert("Right click functionality is not allowed.Please use the keys"); 
		        window.event.returnValue=false;
		    }
		}
		
		function ConvertToCaps()
        {	
            var ls_Char;
            ls_Char=event.keyCode;
              
            //Char between 0-1, A-Z and a-z
            if ((ls_Char<48 || ls_Char>57) && (ls_Char<65 || ls_Char>90) && (ls_Char <97 || ls_Char>122))
            {
		        //Char comma, dot and underscore
		        if ((ls_Char == 32) && (ls_Char != 44 &&  ls_Char != 46) && (ls_Char!= 95))
		        event.keyCode = 0;
		        return false;
            }
            else
            {
		        /*if ((ls_Char>64 && ls_Char<91) || (ls_Char >96 && ls_Char<123)
		        {
		        event.keyCode = event.keyCode + 32
		        }*/
		        if (window.event.keyCode >= 97 && window.event.keyCode <= 122) 
		        {
		        window.event.keyCode = window.event.keyCode -32 ; 
		        }
	            return true;
            }	 
        }
        
        function OnBrowserClose() 
	    {
		    // on pressing Alt+F4 or closing the browser with mouse	
		    if ((window.event.altKey && window.event.keyCode==115) || (window.event.clientX < 0)) 
		    {
					    window.open("../Login/Logout.aspx?BrowserClose=1");
			    //window.location.href("Logout.aspx?BrowserClose=1", "hdlLogoutWindow", "top= 800, width =0, height=0");
		    }
	    }
	    
	    function NumericOnlyForUpdated() 
        {
	        var add_Char;
	        add_Char= event.keyCode;
	        if ( add_Char<48 || add_Char>57 ) 
	        {
		        if ((add_Char != 32) && (add_Char!= 45) && (add_Char != 44 &&  add_Char != 46) && (add_Char != 40 &&  add_Char != 41) && (add_Char!= 95) && (add_Char!= 47))
		        event.keyCode = 0;
	        }
        }
        
        function  NumericOnlyForCareers()
	    {    
	        var add_Char;
	        add_Char= event.keyCode;
	        if ( add_Char<48 || add_Char>57 ) 
		    {
			    if (add_Char != 13)
				    {						
					    event.keyCode = 0;
				    }
		    }
	    }
	    
	   function ValidateForTradeVerification()
       {
		
         //ClearLabels(); 
		 var ddlTradeDt;
         var txtOrderNo;
         var txtTradeNo;
         var ddlBuySell;
         var ddlSymbol;
         var ddlExpiry;
         var txtQuantity;
         var txtPrice; 
         var num;
         var anyEntry = false;
         var blank;
           
         for(i=1;i<= 10;i++)
         {
             num = i.toString();
             blank = false;
               
             ddlTradeDt = document.getElementById('mDdlTradeDate' + num);
             txtOrderNo = document.getElementById('mTbOrderNumber' + num);
             txtTradeNo = document.getElementById('mTbTradeNumber' + num);
             ddlBuySell = document.getElementById('mDdlBuyOrSell' + num);
             ddlSymbol = document.getElementById('mDdlSymbol' + num);
             ddlExpiry = document.getElementById('mDdlExpiryDate' + num);
             txtQuantity = document.getElementById('mTbQuantity' + num);
             txtPrice = document.getElementById('mTbPrice' + num);
             
             document.all('mLblStatus' + num).innerText = "";
             
             if(!(ddlTradeDt.selectedIndex == 0 && txtOrderNo.value == "" && txtTradeNo.value == "" && txtQuantity.value == "" && txtPrice.value == ""))
             { 
                  anyEntry = true;

                  if(ddlTradeDt.selectedIndex == 0)
                  {
                      alert('Please select a valid Trade Date in row ' + (i ) + '.');
                      ddlTradeDt.focus();
                      return false;
                  }
                  
                  else 
                  {
                      if(txtOrderNo.value == "")
                      {
                          alert('Please enter a 15 digit valid Order Number in row ' + (i) + '.');
                          txtOrderNo.focus();
                          return false;
                      }
                      else
                      {
                          if(txtOrderNo.value.length == 15)
                          {
                             if(IsNumber(txtOrderNo.value))
                             {
								if(txtTradeNo.value == "")
								{
									alert('Please enter a valid Trade Number in row ' + (i) + '.');
									txtTradeNo.focus();
									return false;
								}
								else
								{
									if(IsNumber(txtTradeNo.value))
									{
										if(ddlBuySell.selectedIndex <= 0)
										{
											alert('Please select a valid Trade Type in row ' + (i) + '.');
											ddlBuySell.focus();
											return false;
										}
										else
										{
											if(ddlSymbol.selectedIndex <= 0)
											{
												alert('Please select a valid Symbol in row ' + (i ) + '.');
												ddlSymbol.focus();
												return false;
											}
											else
											{
												if(ddlExpiry.selectedIndex <= 0)
												{
													alert('Please enter a valid Expiry Date in row ' + (i ) + '.');
													ddlExpiry.focus();
													return false;
												}
												else
												{
													if(txtQuantity.value == "")
													{
														alert('Please enter Quantity in row ' + (i) + '.');
														txtQuantity.focus();
														return false;
													}
													else
													{
														if(IsNumber(txtQuantity.value))
														{
															if(txtPrice.value == "")
															{
																alert('Please enter a valid Trade Price in row ' + (i ) + '.');
																txtPrice.focus();
																return false;
															}
															else
															{
																if (IsDecimalM(txtPrice.value))
																{
																	if((txtPrice.value.lastIndexOf('.') + 1) == txtPrice.value.length)
																	{
																		txtPrice.value += "00";  
																	} 
																	else if(txtPrice.value.lastIndexOf('.') == -1)
																	{
																		txtPrice.value += ".00";  
																	}
																	else if(txtPrice.value.substring(txtPrice.value.lastIndexOf('.')).length == 2)
																	{
																		txtPrice.value += "0";  
																	}
																	else if(txtPrice.value.substring(txtPrice.value.lastIndexOf('.')).length != 3)
																	{
																		alert('Please enter Trade Price in a valid format. e.g.1234.00');
																		txtPrice.focus();
																		return false;
																	}
																}
																else
																{
																	alert('Please enter a valid Trade Price in row ' + (i ) + '.');
																	txtPrice.value="";
																	txtPrice.focus();
																	return false;
																}
															} //txtPrice
														}
														else
														{
															alert('Please enter Quantity in row ' + (i ) + '.');
															txtQuantity.value="";
															txtQuantity.focus();
															return false;
														}
													}//txtQuantity
												}//ddlExpiry
											}//ddlSymbol
										}//ddlBuySell
									}//txtTradeNo IsNumber
									else
									{
										alert('Please enter a valid Trade Number in row ' + (i ) + '.');
										txtTradeNo.value="";
										txtTradeNo.focus();
										return false;
									}
								}//txtTradeNo
							}//txtOrderNo IsNumber
							else
							{
								alert('Please enter a 15 digit valid Order Number in row ' + (i ) + '.');
							    txtOrderNo.value="";
							    txtOrderNo.focus();
								return false;
							}
                          }//txtOrderNo = 15
                          else if(txtOrderNo.value.length < 15)
                          {
                              alert('Order number should be only 15 digit in row ' + (i ) + '.');
                              txtOrderNo.value="";
                              txtOrderNo.focus();
                              return false;
                          }//txtOrderNo < 15
                          else
                          {
                              alert('Order number should be only 15 digit in row ' + (i ) + '.');
                              return false;
                          }//txtOrderNo > 15
                      }//txtOrderNo
                  }//ddlTradeDt
             }//Not all blank
             else
             {
                if(ddlSymbol.selectedIndex != 0)
                {
                  anyEntry = true;
                  alert('All fields in  row ' + (i ) + ' are mandatory.');
                  ddlTradeDt.focus();
                  return false;
                }
             }             
         }//for
         
         if(anyEntry) // some entry full or partial
               return true;
         else // no entry
         {
               alert('Please enter information for atleast one Trade.');
               return false;
               
         } 
         
     }    
	    
	    
	 
	 function IsNumber(str)
	  {
		//var str = document.all(ctrlName).value;
		var charCode;
		for(l = 0; l< str.length; l++)
		{
			charCode = str.charCodeAt(l);
			if(!(charCode > 47  && charCode < 58))
			{
				return false;
			}
	    }
	    return true;
	    
      } 
	    
	    