/* This Validation Includes

Title			: validate.js
Author			: Anandhi.P
Description		: This Javascript File Validates the Following
					1.Trims Leading Spaces
					2.Trims Trailing Spaces
					3.Check for Mandatory Fields
					4.Date Validation
					5.Number only Validation
					6.Character only Validation
					7.Simple Email Validation
					8.At least one check box clicked
					9.Replaces the Inverted Comma with null
Usage			:
					1.Trim Leading/Trailing Space : Pass the Form Name as a parameter
					2.Mandatory Field Validation : Pass the FieldName as a parameter. This
					function has to be called up before submiting the form. And before that
					call remove_TrailingSpace(), remove_LeadingSpace(), functions.
					3.Date/Number/Character/Email Validation : On the Blur event pass the Field Name to the
					Check_Field()/Check_OnlyCharc()/Check_OnlyNumber()/checkEmail() function.







*/
function replace_InvertedComma(fieldObj){
	var fieldType;
	fieldType = fieldObj.type.toLowerCase();
	if( (fieldType == "text") || (fieldType  == "password") || (fieldType == "textarea"))
	{
		while(fieldObj.value.toString().indexOf("'") >=0)
		fieldObj.value = fieldObj.value.toString().replace("'","`");
	}
}
function remove_TrailingSpace(which)
{
	var i;
	var tempobj;

	for (i=0;i<which.length;i++)
	{
		tempobj=which.elements[i];
		if (tempobj.type.toLowerCase() == "text" || tempobj.type.toLowerCase() == "textarea")
		{
			while(tempobj.value.charAt(tempobj.value.length-1)==' ')
			tempobj.value=tempobj.value.substring(0,tempobj.value.length-1);
		}
	}
}

function remove_LeadingSpace(which)
{
	var i;
	var tempobj
	for (i=0;i<which.length;i++) {
		tempobj=which.elements[i];
		if (tempobj.type.toLowerCase() == "text" || tempobj.type.toLowerCase() == "textarea")
		{
			while(''+tempobj.value.charAt(0)==' ')
			tempobj.value=tempobj.value.substring(1,tempobj.value.length);
		}
	}
}



function Check_MandatoryFields(fldName,msg)
{
	var SelOrList;
	SelOrList = fldName.name.substring(0,3)

	if (((fldName.type=="text"||fldName.type=="textarea" || fldName.type=="password")&& fldName.value=='')||((SelOrList =="sel" || SelOrList == "lst")&& (fldName.selectedIndex==0 || fldName.selectedIndex == -1)))
		return false;
	return true;
}



function check_date(field)
{
	var checkstr = "0123456789";
	var DateField = field;
	var Datevalue = "";
	var DateTemp = "";
	var seperator = "/";
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	var ErrMsg;
	var i;
	err = 0;
	ErrMsg ="";
	DateValue = DateField.value;
	/* Delete all chars except 0..9 */
	for (i = 0; i < DateValue.length; i++)
	{
		if (checkstr.indexOf(DateValue.substr(i,1)) >= 0)
		{
			DateTemp = DateTemp + DateValue.substr(i,1);
		}
	}
	DateValue = DateTemp;
	/* Always change date to 8 digits - string*/
	/* if year is entered as 2-digit / always assume 20xx */
	if (DateValue.length == 6)
	{
		DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2);
	}
	if (DateValue.length != 8)
	{
		err = 19;
		ErrMsg = "Please Enter in (01/12/2000)dd/mm/yyyy format";
	}
	/* year is wrong if year = 0000 */
	year = DateValue.substr(4,4);
	if (year == 0)
	{
		err = 20;
		ErrMsg = "Year is Invalid"
	}
	/* Validation of month*/
	month = DateValue.substr(2,2);
	if ((month < 1) || (month > 12))
	{
		err = 21;
		ErrMsg = "Month is Invalid";
	}
	/* Validation of day*/
	day = DateValue.substr(0,2);
	if (day < 1)
	{
		err = 22;
		ErrMsg = "Day is Invalid"
	}
	/* Validation leap-year / february / day */
	if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0))
	{
		leap = 1;
	}
	if ((month == 2) && (leap == 1) && (day > 29))
	{
		err = 23;
		ErrMsg = "Day in Invalid";
	}
	if ((month == 2) && (leap != 1) && (day > 28))
	{
		err = 24;
		ErrMsg = "Day in Invalid";
	}
	/* Validation of other months */
	if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12")))
	{
		err = 25;
		ErrMsg = "Day in Invalid!! Check Month and Day";
	}
	if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11")))
	{
		err = 26;
		ErrMsg = "Day in Invalid!! Check Month and Day";
	}
	/* if 00 ist entered, no error, deleting the entry */
	if ((day == 0) && (month == 0) && (year == 00))
	{
		err = 0; day = ""; month = ""; year = ""; seperator = "";
	}
	/* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
	if (err == 0)
	{
		DateField.value = day + seperator + month + seperator + year;
	}
	/* Error-message if err != 0 */
	else
	{
		// alert(ErrMsg);
		DateField.select();
		//DateField.focus();
	}
}

// msg added by Vijaya on 16/07/02

function Check_OnlyCharc(fieldObj,loginFld,msg,loginFld)
{
	if(loginFld)
		var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	else
		var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,#/-+&():;[]` ";

	var ok = true;
	var temp;

	replace_InvertedComma(fieldObj)

	for (var i=0; i<fieldObj.value.length; i++)
	{
		temp = "" + fieldObj.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1")
			ok = false;
	}
	if (!ok)
		fieldObj.focus();
	return ok;
}



// TrimAll FieldValues

function trimAllFieldValues(formName)
{
	var formString=eval("document." + formName);
	remove_LeadingSpace(formString);
	remove_TrailingSpace(formString);
	for(var i=0; i<formString.elements.length; i++)
		replace_InvertedComma(formString.elements[i]);
}




// msg added by Vijaya on 16/07/02

function Check_OnlyNumber(fieldObj,msg)
{
	var valid = "0123456789"
	var ok = "yes";
	var temp;

	for (var i=0; i<fieldObj.value.length; i++)
	{
		temp = "" + fieldObj.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no")
	{
		//alert(msg);   // Added by Vijaya on 16/07/02
		//alert("Invalid entry!  Only numbers are accepted!");
		//fieldObj.focus();
		return false;   // Modified by Vijaya on 16/07/02
	}
	return true;
}




function anyCheck(formObj)
{
	var total = 0;
	var max = formObj.ckbox.length;

	for (var idx = 0; idx < max; idx++)
	{
		if (eval("formObj.ckbox[" + idx + "].checked") == true)
			total += 1;
	}
	if (total == 0)
		alert("Select atleast one CheckBox.");
}

function checkEmail(fieldObj)
{
	if(fieldObj.value.indexOf("@")!=-1&&fieldObj.value.indexOf(".")!=-1)
	{
		if(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(fieldObj.value))
			return true;
		else
			return false;
	}
}

function formatData(fieldDay, fieldMonth, fieldyear, frmStr)
{
	var fmtDate = fieldDay.options[fieldDay.selectedIndex].value + frmStr + fieldMonth.options[fieldMonth.selectedIndex].value + frmStr + fieldyear.options[fieldyear.selectedIndex].value;
	return fmtDate;
}


function checkConfrmPwd(fieldpwd, fieldCnfrmPwd)
{

    /*remove_TrailingSpace(fieldpwd);
    remove_TrailingSpace(fieldCnfrmPwd);
    remove_LeadingSpace(fieldpwd);
    remove_LeadingSpace(fieldCnfrmPwd);*/

     var pwdVal;
     var cnfrmPwdVal;
	if((Check_MandatoryFields(fieldpwd, ""))  &&  (Check_MandatoryFields(fieldCnfrmPwd, "")))
	{
		pwdVal  = fieldpwd.value ;
		cnfrmPwdVal = fieldCnfrmPwd.value;
		if((pwdVal.length <=10 && cnfrmPwdVal.length<=10) &&
			(fieldpwd.value == fieldCnfrmPwd.value) &&
			(pwdVal.length >=5 && cnfrmPwdVal.length>=5))
		return true;
	}
	else
		return false;
}



var bValidFlag;
var bFirstField;

function highLightRow(fieldName)
{
	if(bFirstField == true)
	{
		eval(fieldName).focus();
		bFirstField = false;
		//eval(hiLightDiv).style.visibility = "visible"
	}
	eval(fieldName).style.background = "#ffffcc"
	bValidFlag = false;

	/*var obj = document.frmCandReg.txtPwd.parentElement.parentElement ;
	for( var i = 0; i < obj.cells.length; i++ )
	document.frmCandReg.txtPwd.parentElement.parentElement.cells.item( i ).style.backgroundColor = "yellow";
	var obj = eval(fieldName).parentElement.parentElement ;
	for( var i = 0; i < obj.cells.length; i++ )
	eval(fieldName).parentElement.parentElement.cells.item( i ).style.backgroundColor = "#ffffcc";
	*/
}

function defaultColour(submitButn, resetButn,frmName)
{
/*	for (var i = 0; i< eval(frmName).elements.length; i++)
	{
		if((eval(frmName).elements[i].name != submitButn ) && (eval(frmName).elements[i].name != resetButn))
			eval(frmName).elements[i].style.background = "#ffffff";

	}
*/
	for (var i = 0; i< eval(frmName).elements.length; i++)
	{
		if (eval(frmName).elements[i].type=="text" ||
		eval(frmName).elements[i].type=="password" ||
		eval(frmName).elements[i].type=="list" ||
		eval(frmName).elements[i].type=="radio" ||
		eval(frmName).elements[i].type=="checkbox" ||
		eval(frmName).elements[i].type=="select-multiple" ||
		eval(frmName).elements[i].type=="select-one")
			eval(frmName).elements[i].style.background = "#ffffff";
	}

}



// Function Related to Date Contents to be


function addDateOption(object,text,value)
{
	var defaultSelected = false;
	var selected = false;
	var optionName = new Option(text, value, defaultSelected, selected)
	object.options[object.length] = optionName;
	object.options[object.length-1].selected = false;
}

function updateDate(triField, formName)
{
	datefield = triField + 'D';
	monthfield = triField + 'M';
	yearfield = triField + 'Y';
	arrList = new Array(4,6,9,11);
	intYearSelected = document[formName][yearfield].options[document[formName][yearfield].selectedIndex].value;
	intMonthSelected = document[formName][monthfield].options[document[formName][monthfield].selectedIndex].value;
	intDaySelected = document[formName][datefield].options[document[formName][datefield].selectedIndex].value;
	intDayCount = 0;



	if (intDayCount == 0)
	{
		if (intMonthSelected != 2)
		{
			for (i=0;i < arrList.length;i++)
			{
				if (intMonthSelected == arrList[i])
					intDayCount = 30;
			}
			if (intDayCount == 0)
				intDayCount = 31;
		}else
		{
			intYear = Math.ceil(intYearSelected / 4);
			realYear = intYearSelected / 4;
			if (intYear == realYear)
				intDayCount = 29;
			else
				intDayCount = 28;
		}
	}

	document[formName][datefield].length = 0;

	for (r=1;r <= intDayCount;r++)
		addDateOption(document[formName][datefield],r,r)

	if (intDaySelected != "" && intDaySelected <= intDayCount)
		document[formName][datefield].selectedIndex = intDaySelected - 1;
	else
		document[formName][datefield].selectedIndex = intDayCount - 1;
}




function checkDecimal(fieldObj)
{
	var d;
	var bNotDecimal=false;
	var allowedCharacters;
	allowedCharacters = "0123456789."  ;
	for (var j=0;j < fieldObj.value.length ;j++)
	{
		if (allowedCharacters.indexOf(fieldObj.value.substring(j,j+1))==-1)
		{
			bNotDecimal=true;
			break;
		}
	}
	return bNotDecimal;
}

/*else {
flag = false;
}
}
if (flag == false){
 count=1;
alert(pfieldName + "  contains invalid characters. Please re-enter
return false;
}
}*/


function isSpecialChar(objField, bEmail, bNeedsSpace)
{
	var inString=eval(objField).value;
	var outString="";
	var strLen=inString.length;
	if(strLen>0)
    {
		for(var i=0; i<strLen; i++)
		{
			echar = inString.substring(i,  i+1);
			if ((echar > 'z' || echar  < 'A')&&(echar > '9' || echar  < '0'))
			{
				if((bEmail)&&(echar=="@" || echar==".")){
					outString+=echar;
				}else if((bNeedsSpace)&&(echar==" ")){
					outString+=echar;
				}else{
					outString+="";
				}
			}
			else
				outString+=echar;
		}
		eval(objField).value=outString;
	}
}

function Check_OnlyCharc2(fieldObj,msg)
{
	var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz :/."
	var ok = "yes";
	var temp;
	for (var i=0; i<fieldObj.value.length; i++)
	{
		temp = "" + fieldObj.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no")
	{		
		fieldObj.focus();
		return false;   
	}
	return true;
}
function Check_OnlyCharc1(fieldObj,msg)
{
	var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz "
	var ok = "yes";
	var temp;
	for (var i=0; i<fieldObj.value.length; i++)
	{
		temp = "" + fieldObj.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no")
	{		
		fieldObj.focus();
		return false;   
	}
	return true;
}
