function YearValidation(year,month,day)
{
	var date="";
	var flag=0;
	if(year > 0 )
	{
		flag++;
		if(month>0 && month<=12)
			flag++;
		dayspermonth=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
		//alert("dayspermonths-->"+dayspermonth[month]+" dayspermonths-->"+dayspermonth[3]);
		if(day>0 && day <= dayspermonth[month])
		{
			flag++;
		} else if(month==2 && day==29 && ((year % 4 == 0) || (year % 4 == 0 && year % 100 == 0 && year % 400 == 0)))	{
			flag++;
		} 
	}
	if(flag==3)
		date=year+"-"+month+"-"+day;
	else
		date="";
	
	return date;
}

function trim(sStr)
{    
	return sStr.replace(/^\s+|\s+$/g,"");
}

function checkAlphaNumerics(checkString) {
    var regExp = /^[A-Za-z]$/;
	var isAlpha = false;
	var isNumeric = false;
	if(checkString!= null && checkString!= "")
    {
		for(var i = 0; i < checkString.length; i++)
        {
			if (!isNaN(checkString.charAt(i)))
            	isNumeric = true;
            else
			{
				if (checkString.charAt(i).match(regExp))
					isAlpha = true;
				else
					isAlpha = false;
			}
				
		}
	}

	//alert("isAlpha :"+isAlpha+" ->isNumeric :"+isNumeric);
	if(isAlpha== true && isNumeric==true)
		return true;
	else 
		return false;
        
}

function checkisAlpha(checkString) {
    var regExp = /^[A-Za-z]$/;
	if(checkString!= null && checkString!= "")
    {
		for(var i = 0; i < checkString.length; i++)
        {
			if (!checkString.charAt(i).match(regExp))
            {
              return false;
            }
        }
    }
    else
    {
		return false;
    }
    return true;
}

function checkisNumeric(checkString) {
    var regExp = /^[0-9]$/;
	if(checkString!= null && checkString!= "")
    {
		for(var i = 0; i < checkString.length; i++)
        {
			if (!checkString.charAt(i).match(regExp))
            {
              return false;
            }
        }
    }
    else
    {
		return false;
    }
    return true;
}

function emailCheck(emailStr) 
{
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

	var matchArray=emailStr.match(emailPat)
	if (matchArray==null){
		alert("Email address seems incorrect (check @ and .'s)")
			return false;
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) {
	   alert("The username doesn't seem to be valid in Email Address.")
							return false;
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid in Email!")
										return false;
			}
		}
		return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("The domain name doesn't seem to be valid in Email Address.")
								return false;
	}
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 ||
		domArr[domArr.length-1].length>4) {
	   alert("The address must end in a three-letter domain, or two letter country in Email.")
							return false;
	}
	if (len<2) {
	   var errStr="This address is missing a hostname! in Email Address"
	   alert(errStr);
						return false;
	}
	return true;
}




function trim(s)
{
	if(null == s)
		return '';
		
	var l=0; var r=s.length -1;
	
	while(l < s.length && s[l] == ' ')
	{	l++; }
	
	while(r > l && s[r] == ' ')
	{	r-=1;	}
	
	return s.substring(l, r+1);
}



/*
 *
 *  check the the field is not empty. 
 *           If it is then return false and alert(alertMsg). 
 *           If it is not then return confirm(cfmMsg)
 *
 */
function confirmNonEmpty( id, alertMsg, cfmMsg) {
	var field = document.getElementById( id );
	var value = (null == field) ? '' : trim( field.value );
	
	if( null == value || '' == value) {
		alert(alertMsg);
		return false;
	}
	
	return confirm(cfmMsg);	
}


function centsOnly( field, event ) {
	
	var unicode = event.charCode ? event.charCode : event.keyCode;
	
	//if the key isn't the backspace key (which we should allow)
	if( unicode == 8 )
		return true;
		
	if( ! decimalOnly( field, event ) )
		return false;

	var start = field.value.indexOf('.');
	
	if( 0 > start )
		return true;
	
	var decimal = field.value.substring( start );
	
	return (null == decimal || 3 > decimal.length); //including the '.' ==> actual length >= 2

}
	


function decimalOnly( field, event ) {
	var unicode = event.charCode ? event.charCode : event.keyCode;
	
	//if the key isn't the backspace key (which we should allow)
	if( unicode == 8 )
		return true;

	if( unicode == 46 && 0 > field.value.indexOf('.') ) // decimal point '.'
		return true;
		
	return numbersOnly( field, event );
		
}


function numbersOnly( field, event )
{
	var unicode = event.charCode ? event.charCode : event.keyCode;

	//if the key isn't the backspace key (which we should allow)
	if( unicode == 8 )
		return true;
	
	//if not a number disable key press
	if( unicode < 48 || unicode > 57 )
		return false;

	// enable keypress
	return true;

}//end function

function poptastic(url)
{
	
	var newwindow=window.open(url,'name','height=600,width=800,scrollbars=yes,resizable=yes');
	if (window.focus) {newwindow.focus();}
}


//based on: http://en.wikipedia.org/wiki/Routing_transit_number#Internal_checksums
function checkABAMod10( routingNumber ) {
	var valid  = "0123456789";
	var sABA   = routingNumber.toString();
	var iTotal = 0;
	
	iTotal = ( ( 3* (parseInt(sABA.charAt(0),10) + parseInt(sABA.charAt(3),10) + parseInt(sABA.charAt(6),10)) ) + 
	           ( 7* (parseInt(sABA.charAt(1),10) + parseInt(sABA.charAt(4),10) + parseInt(sABA.charAt(7),10)) ) +
	           (    (parseInt(sABA.charAt(2),10) + parseInt(sABA.charAt(5),10) + parseInt(sABA.charAt(8),10)) ) );

	//alert('here : ' + iTotal);

	return (iTotal != 0 && iTotal % 10 == 0);
}


