var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
// whitespace characters
var whitespace = " \t\n\r";
// decimal point character differs by language and culture
var decimalPointDelimiter = "."

function isNull(aStr)
{
	aStr = trim(aStr)
	var index;
	for (index=0; index < aStr.length; index++)
         if (aStr.charAt(index) != ' ')
	     return false;
                               
    return true;
}

function fnValidateEmailFormat(emailAddress)
{	
	emailAddress = trim(emailAddress);
     var part1,part2,part3;
     part1 = (emailAddress.indexOf("@"))
     if(part1 > 0)
     {
            part2 = (emailAddress.indexOf("."))
            if(part2 > 0)
			{
				part3=emailAddress.length-1;
				if (part3 > part2 && part3 > part1)
				{
					return true;
				}
				return false;
			}
	}
	return false;
}

function ltrim(s)
{
	return s.replace(/^\s*/, "")
}

function rtrim(s)
{
	return s.replace(/\s*$/, "");
}
function trim(s)
{		
	return rtrim(ltrim(s));
}

//---------------------------------------------------------------------
// isInteger (STRING s [, BOOLEAN emptyOK])
// 
// Returns true if all characters in string s are numbers.
//
// Accepts non-signed integers only. Does not accept floating 
// point, exponential notation, etc.
//
// We don't use parseInt because that would accept a string
// with trailing non-numeric characters.
//
// By default, returns defaultEmptyOK if s is empty.
// There is an optional second argument called emptyOK.
// emptyOK is used to override for a single function call
//      the default behavior which is specified globally by
//      defaultEmptyOK.
// If emptyOK is false (or any value other than true), 
//      the function will return false if s is empty.
// If emptyOK is true, the function will return true if s is empty.


var defaultEmptyOK = false

function isInteger (s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}

// Returns true if character c is a digit 
// (0 .. 9).

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}


function isEmpty(s)
{
	return ((s == null) || (s.length == 0))
}


function validateMultipleTextBox(txt){

	for(var a=0;a<=txt.length-1;a++)
	{
		if(!isNull(txt[a].value)){
			return true;
		}
	}
	return false;		
}


function validateCheckBox(chk){
	if (isNaN(chk.length) == false){
		for(var a=0;a<=chk.length-1;a++){
			if(chk[a].checked==true){
				return true;
			}
		}
		return false;
	}else{
		return chk.checked;
	}
}

//--------------------------------------------------------------------------
function checkTextAreaLength(fieldObj,maxChars)
{
	if (fieldObj.value.length > maxChars)
	{
		fieldObj.focus();
		return false;
	}
	return true;
}

function checkTextAreaLengthByArray(strform,arrayElements)
{
	for(i=0;i<strform.elements.length;i++)
	{
		if (strform.elements[i].type=="textarea")
		{
			for(j=0;j<arrayElements.length;j++)
			{			
				arrValName = arrayElements[j].split(":");
				//alert(arrayNotNullElements[j]+"-"+strform.elements[i].name)
				if (arrValName[0].toUpperCase()==strform.elements[i].name.toUpperCase())
				{
					if (!isEmpty(trim(strform.elements[i].value)))
					{
						if (!checkTextAreaLength(strform.elements[i],arrValName[2]))
						{	
							alert("\"" + arrValName[1] + "\" should be of Maximum "+ arrValName[2] + " Characters only..Please Check");
							strform.elements[i].focus();
							return false;
						}
					}		
				}
		     }
		 }
	}
	return true;
}

//-------------------------------------------------------------------------
function LimitText(fieldObj,maxChars)
{
	var result = true;
	if (fieldObj.value.length >= maxChars)
	    result = false;  
	if (window.event)
	    window.event.returnValue = result;
	return result;
}


function isValidDate(objRecd) 
{
// Checks for the following valid date formats:
// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY DD/MM/YYYY
// Also separates date into month, day, and year variables

//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

// To require a 4 digit year entry, use this line instead:
	
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

//document.placeadd.Validitydate.focus();
	
dateStr=objRecd.value;
	
var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null) {
//		alert("Date is not in a valid format.")
		//document.frmPostCompany.txtDateStart.focus();
		objRecd.focus();
		return false;
	}

	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
		
	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		//document.frmPostCompany.txtDateStart.focus();
		objRecd.focus();
		return false;
	}
	if (month < 1 || month > 12) { // check month range
		alert("Month must be between 1 and 12.");
		//document.frmPostCompany.txtDateStart.focus();
		objRecd.focus();
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn't have 31 days!")
		//document.frmPostCompany.txtDateStart.focus();
		objRecd.focus();
		return false
	}
	if (month == 2) { // check for february 29th
		var g = parseInt(year / 4);
		if (day > 29 || (day == 29 && (year / 4) != g)) {
			alert("February in "+year+" doesn't have "+day+" days!")
			//document.frmPostCompany.txtDateStart.focus();
			objRecd.focus();
			return false;
		}
	}
		return true;  // date is valid
}



// isFloat (STRING s [, BOOLEAN emptyOK])
// 
// True if string s is an unsigned floating point (real) number. 
//
// Also returns true for unsigned integers. If you wish
// to distinguish between integers and floating point numbers,
// first call isInteger, then call isFloat.
//
// Does not accept exponential notation.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isFloat (s)

{   var i;
    var seenDecimalPoint = false;

    if (isEmpty(s)) 
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}


//=================================================================================================
function checkIsEmpty(strform,arrayNotNullElements){
	for(i=0;i<strform.elements.length;i++){
		for(j=0;j<arrayNotNullElements.length;j++){
			
			arrValName = arrayNotNullElements[j].split(":");			

			//alert(arrayNotNullElements[j]+"-"+strform.elements[i].name)
			if (arrValName[0].toUpperCase()==strform.elements[i].name.toUpperCase()){
				if (isEmpty(trim(strform.elements[i].value))){
					alert("Please Enter " + arrValName[1])
					strform.elements[i].value = trim(strform.elements[i].value)
					strform.elements[i].focus()
					return false;
				}		
			}
		}
	}
	return true
}
//==================================================================================================
function checkIsNumber(strform,arrayIntegerElements)
{
	for(i=0;i<strform.elements.length;i++)
		{
			for(j=0;j<arrayIntegerElements.length;j++)
				{	//alert(arrayIntegerElements[j])
					//alert(strform.elements[i].name)
					arrValName = arrayIntegerElements[j].split(":");
					if (arrValName[0].toUpperCase()==strform.elements[i].name.toUpperCase())
					{
						if (!isFloat(strform.elements[i].value)) 
								{	
									//alert(strform.elements[i].value)
									alert(arrValName[1] + " should be a Number")
									strform.elements[i].focus()
									strform.elements[i].select()
									return false;
								
								}
					}
						
				}				
		}
	return true
}
//==================================================================================================
function checkIsDate(strform,arrayDateElements)
{
	for(i=0;i<strform.elements.length;i++)
	{
			for(j=0;j<arrayDateElements.length;j++)
				{	//alert(arrayIntegerElements[j])
					//alert(strform.elements[i].name)
					arrValName = arrayDateElements[j].split(":");
					if (arrValName[0].toUpperCase()==strform.elements[i].name.toUpperCase())
					{				
						if (!isValidDate(strform.elements[i]))
						{
							//alert(strform.elements[i].value)
							alert(arrValName[1] + " should be a Valid Date");
							strform.elements[i].focus();
							strform.elements[i].select();
							return false;							
						}
					}
				}
	}
	return true;
}
//==================================================================================================
