/*********************
lib for regexp of JavaScript
**********************/

/*
check for digit
*/
function regexp_isDigit(s){
	var patrn = new RegExp("^[0-9]+$");
	if (!patrn.exec(s)) 
		return false; 
	return true;
}

/*
check for digit of given size
*/
function regexp_isDigit(s,size){
	var patrn = new RegExp("^[0-9]{1,"+size+"}$");
	if(!patrn.exec(s))
		return false;
	return true;
}

/*
check for alpha char
*/
function regexp_isAlphaChar(s){
	var patrn = new RegExp("^[0-9A-Za-z]+$");
	if(!patrn.exec(s))
		return false;
	return true;
}

/*
check for alpha char of given size
*/
function regexp_isAlphaChar(s,size){
	var patrn = new RegExp("^[0-9A-Za-z]{1,"+size+"}$");
	if(!patrn.exec(s))
		return false;
	return true;
}


/*
check for alphanumeric characters of given size
Includes: 0-9, a-z, A-Z, "_ -,.:;'"?!&()/" 
*/
function regexp_isAlphaNumericString(s, size){
	var patrn = new RegExp("^[0-9A-Za-z_\,\.:;'\"\?\!&\(\)\/ \-]{1,"+size+"}$");
	if(!patrn.exec(s))
		return false;
	return true;
}

/*
check for alphanumeric characters of given size
Includes: 0-9,a-z,A-Z,_,(,),-
*/
function regexp_isAlphaCharExt(s,size){
	var patrn = new RegExp("^['0-9A-Za-z_\(\) \-]{1,"+size+"}$");
	if(!patrn.exec(s))
		return false;
	return true;
}

/*
check for alphanumeric characters of given size
Includes: 0-9,a-z,A-Z,_,.
*/
function regexp_isAlphaCharForAccountName(s,size){
	var patrn = new RegExp("^[0-9A-Za-z_\. ]{1,"+size+"}$");
	if(!patrn.exec(s))
		return false;
	return true;
}

/*
check for password
Include: 0-9,a-z,A-Z,*
*/
function regexp_isPassword(s,size){
	var patrn = new RegExp("^[0-9A-Za-z\*]{1,"+size+"}$");
	if(!patrn.exec(s))
		return false;
	return true;
}


/*
check for email of given size
*/
function regexp_isEmail(s,size){
	var patrn = new RegExp("^[0-9A-Za-z]+([-+.][0-9A-Za-z]+)*@[0-9A-Za-z]+([-.][0-9A-Za-z]+)*\.[0-9A-Za-z]+([-.][0-9A-Za-z]+)*$");
	if(!patrn.exec(s))
		return false;
	if(s.length>size)
		return false;
	return true;
}

/*
check for date 
format: mm/dd/yyyy
*/
function regexp_isDate(s){
	var patrn = new RegExp("^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$");
	if(!patrn.exec(s))
		return false;
	
	var arr = s.split("/");
	if (arr.length != 3)
		return false;
	
	var tmpDate = new Date(arr[2],arr[0]-1,arr[1]);
	if (parseInt(arr[0],10)==(tmpDate.getMonth()+1) && parseInt(arr[1],10)==tmpDate.getDate()){
		return true;
	}else{
		return false;
	}

	
}

/*
check for date 
format: mm/dd/yyyy OR mm/dd
*/
function regexp_isValidDueDate(s){
	var patrn = new RegExp("^[0-9]{1,2}/[0-9]{1,2}(/([0-9]{2,4}))?$");
	if(!patrn.exec(s)){
		return false;
	}
	
	var arr = s.split("/");
	if (arr.length != 3 && arr.length != 2)
		return false;
	
	var tmpDate;
	if(arr.length == 2){
		tmpDate = new Date(new Date.getFullYear(),arr[0]-1,arr[1]);
	}else{
		if(arr[2]<100){
			if(arr[2]<=50)
				arr[2] = "20" + arr[2];
			else
				arr[2] = "19" + arr[2];
		}
		tmpDate = new Date(arr[2],arr[0]-1,arr[1]);
	}
	
	if (parseInt(arr[0],10)==(tmpDate.getMonth()+1) && parseInt(arr[1],10)==tmpDate.getDate()){
		if((tmpDate - new Date())<0){
			return false;
		}
		return true;
	}else{
		
		return false;
	}

	
}