// JavaScript Document

/* Add method trim() into string object*/
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

/**----------------------------------------------------------------
Begin Function for Validatae Form
*/

// If the element's string matches the regular expression it is all numbers
function isNumeric(elem,sign){
	var sign = sign!='undefined'?sign:false; //default is false,
	var numericExpression = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
	if(sign==true)	
	    numericExpression = /^(((\+|-)?\d+(\.\d*)?)|((\+|-)?(\d*\.)?\d+))$/;
	if(elem.value.match(numericExpression)){
		return true;
	}else{

		return false;
	}
}

// If the element's string matches the regular expression it is all integer
// secound agrument. if true the allowed -,+ in front
function isInt(elem,sign){
	var sign = sign!='undefined'?sign:false; //default is false,
	var intExpression =	/^\d+$/;
	if(sign==true)	
	    intExpression =	/^(\+|-)?\d+$/
	if(elem.value.match(intExpression)){
		return true;
	}else{

		return false;
	}
}

// If the element's string matches the regular expression it is all float
function isFloat(elem,sign){
	var sign = sign!='undefined'?sign:false; //default is false,
	var floatExpression = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
	if(sign==true)	
	    floatExpression = /^(((\+|-)?\d+(\.\d*)?)|((\+|-)?(\d*\.)?\d+))$/;
	if(elem.value.match(floatExpression)){
		return true;
	}else{

		return false;
	}
}
// If the element's string matches the regular expression it is all letters
function isAlphabet(elem){
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// If the element's string matches the regular expression it is numbers and letters
function isAlphanumeric(elem){
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// If the element's string matches the regular expression for zip code 
//it is numbers and letters and space
function isZip(elem){
	var alphaExp = /^[0-9a-zA-Z-+\s]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// If the element's string matches the regular expression for telephone number
//it is numbers and letters and space
function isTel(elem){
	var alphaExp = /^[0-9-+\s]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}

// check length of element value
function isLength(elem, lmin, lmax){
	var uInput = elem.value;
	if(uInput.length >= lmin && uInput.length <= lmax){ //correct
		return true;
	}else{//incorrect

		return false;
	}
}

//check Checked Checkbox
function isChecked(elem){
	var len= elem.length;
	var c=false;
	for(var i=0; i<len; i++){
		if(elem[i].checked==true){
			c=true; break;
		}
	}
	if(c==true){
		return true;
	}else{
		return false;
	}
}

//check selected listbox
function isSelected(elem){
	if(elem.value == "" || elem.value=='undefined'){ //empty selected value
		return false;
	}else if(elem.selectedIndex==0){//first option be selected
		//The most form is no value for first option
		return false;
	}else{
		return true;
	}
}

//check email pattern
function isEmail(elem){
	var emailExp = /^[a-zA-Z_]+[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	elem.value=elem.value.trim();
	if(elem.value.match(emailExp)){

		return true;
	}else{

		return false;
	}
}

//check URL pattern
function isURL(elem){
	var urlExp=/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z0-9]{1,6}((:[0-9]{1,5})?\/.*)?$/i;
	elem.value=elem.value.trim();
	if(elem.value.match(urlExp)){		return true;
	}else{		return false;	}
}

//check HTML TAG pattern
function isTag(elem){
	var tagExp = /[<>]/;
	elem.value=elem.value.trim();
	if(elem.value.match(tagExp)){		return true;
	}else{		return false;	}
}

//check empty field  . if empty return true
function isEmpty(elem) {
	elem.value=elem.value.trim();
   	if ((elem.value.length==0) || (elem.value=="") || (elem.value==null))  
		return true;  //empty field return true
   	else { 
   	  	return false; //not empty return false
   	}
}	

/*Function for comparetion date
  option '=' : d1==d2
  		 '>' : d1>d2
		 '<' : d1<d2
  Return true when pasted input date form today
*/
function dateCompare(d1,d2,opt){
	var rs=false;
		Date1=new Date(); 
		var temp = new Array(); // create array object
		temp = d1.split('-'); 
		Date1.setFullYear(temp[2],(temp[1]-1),temp[0]);//set value to myDate object
		
		Date2=new Date(); 
		var temp = new Array(); // create array object
		temp = d2.split('-'); 
		Date2.setFullYear(temp[2],(temp[1]-1),temp[0]);
		
		if(opt==null) opt='=';
		switch(opt){
			case '=' : 
					if(Date1==Date2) rs=true;
					break;
			case '>' :  
					if(Date1>Date2)	rs=true;
					break;
			case '<' : 
					if(Date1<Date2)	rs=true;
					break;
			default : rs=false;
					break;
		}
	return rs;

}

/*Function for check date is the past date or not
  Return true when pasted input date form today
*/
function isPastDate(elem){
	if(!isEmpty(elem)){
		curDate=new Date(); // get today date
		myDate = new Date(); // create date object
		
		uDate=elem.value;
		var temp = new Array(); // create array object
		temp = uDate.split('-'); 
		myDate.setFullYear(temp[2],(temp[1]-1),temp[0]);//set value to myDate object
		
		if(myDate<curDate){
		
			return true;
		}else {
		
			return false;
			
		}
	}else 	{
		
		return false;
		}
}

function isFutureDate(elem){
	if(!isEmpty(elem)){
		curDate=new Date(); // get today date
		myDate = new Date(); // create date object
		
		uDate=elem.value;
		var temp = new Array(); // create array object
		temp = uDate.split('-'); 
		myDate.setFullYear(temp[2],(temp[1]-1),temp[0]);//set value to myDate object
		
		if(myDate>=curDate){
		
			return true;
		}else {
		
			return false;
		}
	}else{ 	
		
		return false;
	}
}

function isUsername(elem){
	var usExp =  /^[a-zA-Z0-9_-]{3,20}$/;
	elem.value=elem.value.trim();
	if(elem.value.match(usExp))	
		return true;
	else
		return false;
}

