/***************************************************************************************/

// General functions

/***************************************************************************************/



/////////////////////////////////////////////////////////////////////////////////////////

// Checks whether a date entered is a valid date or not.

/////////////////////////////////////////////////////////////////////////////////////////

function checkDate(ddVal, mmVal, yyVal) {

	if(ddVal <= 0 || ddVal > 31 || mmVal <= 0 || mmVal > 12 || yyVal <= 0 || yyVal.length != 4) {

		alert("Please enter a valid date");

		return false;

	}

	monthArray = new Array("January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

	if(mmVal == 2) {

		if(yyVal % 4 == 0) {

			if(ddVal > 29) {

				alert("February " + yyVal + " has only 29 days");

				return false;

			}

		}

		else {

			if(ddVal > 28) {

				alert("February " + yyVal + " has only 28 days");

				return false;

			}

		}

	}

	else {

		if(mmVal == 4 || mmVal == 6 || mmVal == 9 || mmVal == 11) {

			if(ddVal > 30) {

				alert(monthArray[mmVal-1] + " has only 30 days");

				return false;

			}

		}

	}

	return true;

}



/////////////////////////////////////////////////////////////////////////////////////////

// Checks whether a string is a valid email address.

/////////////////////////////////////////////////////////////////////////////////////////

function checkEmail(emailString) {

	splitVal = emailString.split('@');

	if(splitVal.length <= 1) {

		alert("Please enter a valid email address");

		return false;

	}

	if(splitVal[0].length <= 0 || splitVal[1].length <= 0) {

		alert("Please enter a valid email address");

		return false;

	}

	

	splitDomain = splitVal[1].split('.');

	if(splitDomain.length <= 1) {

		alert("Please enter a valid email address");

		return false;

	}

	if(splitDomain[0].length <= 0 || splitDomain[1].length <= 1) {

		alert("Please enter a valid email address");

		return false;

	}

	return true;

}



/////////////////////////////////////////////////////////////////////////////////////////

// Removes the leading and trailing spaces in a strings and returns the trimmed string

/////////////////////////////////////////////////////////////////////////////////////////

function trimSpaces(stringValue) {

	// Checks the first occurance of spaces and removes them

	for(i = 0; i < stringValue.length; i++) {

		if(stringValue.charAt(i) != " ") {

			break;

		}

	}

	if(i > 0) {

		stringValue = stringValue.substring(i);

	}

	

	// Checks the last occurance of spaces and removes them

	strLength = stringValue.length - 1;

	for(i = strLength; i >= 0; i--) {

		if(stringValue.charAt(i) != " ") {

			break;

		}

	}

	if(i < strLength) {

		stringValue = stringValue.substring(0, i + 1);

	}

	

	// Returns the string after removing leading and trailing spaces.

	return stringValue;

}



/////////////////////////////////////////////////////////////////////////////////////////

// Check whether a string contain permitted characters only

/////////////////////////////////////////////////////////////////////////////////////////

function checkAllowedChars(strToCheck, allowedChars)

{

     var acLen     = allowedChars.length;

     var stcLen     = strToCheck.length;

     strToCheck     = strToCheck.toLowerCase();

     var i;

     var j;

	 var flag	= false;

	 var flagCount	= 0;

     var rightCount = 0;
    
     var alphCount = 0;

	 var numCount = 0; 

     for(i = 0; i < acLen; i++)

     {

          switch(allowedChars.charAt(i))

          {

          case 'A':

               for(j = 0; j< stcLen; j++)

               {

                    alphCount += strToCheck.charAt(j) >= 'a' && strToCheck.charAt(j) <= 'z';

               }

               break;

          case 'N':

               for(j = 0; j< stcLen; j++)

               {

                    numCount += strToCheck.charAt(j) >= '0' && strToCheck.charAt(j) <= '9';

               }

               break;

          default:

               for(j = -1; -1 != (j = strToCheck.indexOf(allowedChars.charAt(i), j + 1)); rightCount++);

               break;

          }

     }

     if((alphCount+numCount) == stcLen)

     {

         flag	= true;

		 // return true;

     } 

	if (flag) {

		for (i = 0; i < stcLen; i++) {

			if (!isNaN(strToCheck.charAt(i)))

				flagCount	+= 1;

		}

	}

	if (flagCount >= 2 && alphCount >=4)

		return true;

    return false;

}



//**********************************************************************************

// Check whether the provided data contain only numeric values.

// Accepts the form name, field name and display name.

//**********************************************************************************

function isNumeric(formname, fieldname, displayname)

{

        itemvalue = eval("document." + formname + "." + fieldname + ".value");

        if(itemvalue.length <= 0)

        {

                alert("Please enter a numeric value in \"" + displayname + "\"");

                eval("document." + formname + "." + fieldname + ".focus()");

                return false;

        }

        if(parseInt(itemvalue) <= 0)

        {

                alert("Please enter a numeric value greater than zero in \"" + displayname + "\"");

                eval("document." + formname + "." + fieldname + ".focus()");

                return false;

        }

        if(itemvalue.indexOf(' ') >= 0)

        {

                alert("Only numbers are allowed in \"" + displayname + "\"");

                eval("document." + formname + "." + fieldname + ".focus()");

                return false;

        }

        if(isNaN(itemvalue))

        {

                alert("Only numbers are allowed in \"" + displayname + "\"");

                eval("document." + formname + "." + fieldname + ".focus()");

                return false;

        }

        return true;

}

