// JavaScript Document
// 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){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression)){
		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;
	}
}
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

//check selected listbox
function isSelected(elem){
	/*if(elem.selectedIndex==-1){ 
	// if non selection, return -1. else return selected option index*/
	if(elem.value==""){
		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,cond){
	var cond=cond||0;
	var urlExp = new Array();
	urlExp[0]=/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z0-9]{1,6}((:[0-9]{1,5})?\/.*)?$/i;
	urlExp[1]=/^[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[cond])){		return true;
	}else{		return false;	}
}

//check HTML TAG pattern
function isTag(elem){
	var tagExp = new RegExp("</?[ a-zA-Z][a-zA-Z0-9]*[^<>]*>");
	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
   	}
}	
//check Username validate
function isUsername(elem){
	var usExp =  /^[a-zA-Z]+[a-zA-z0-9_-]{3,20}$/;
	elem.value=elem.value.trim();
	if(elem.value.match(usExp))	
		return true;
	else
		return false;
}
function checkTag(f){
	var elm=f.elements; 
	var reg = new RegExp("</?[ a-zA-Z][a-zA-Z0-9]*[^<>]*>");
	var chk=true;
	for(i=0; i<elm.length; i++){ 
		if(elm[i].value.match(reg)){
			elm[i].focus();
			chk=elm[i].value.match(reg);
			break;
		}
	}
	return chk;
}
function checkSpam(f){
	var elm=f.elements; 
	var reg = new RegExp("/content-type|bcc:|cc:|document.cookie|onclick|onload|javascript|alert|http/i");
	var chk=true;
	for(i=0; i<elm.length; i++){ 
		if(elm[i].value.toLowerCase().match(reg)){
			elm[i].focus();
			chk=elm[i].value.toLowerCase().match(reg);
			break;
		}
	}
	return chk;
}
/*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 (format: yyyy-mm-dd
*/
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 chkisPastDate(dayval,monthval,yearval){
	if(isCorrectDate(dayval,monthval,yearval)){
		today=new Date(); // get today date
		myDate = new Date(yearval,monthval,dayval); // create date object
				
		if(myDate<today) return true;
		else return false;
	}else{ 			
		return false;
	}
}
function chkisFutureDate(dayval,monthval,yearval){
	if(isCorrectDate(dayval,monthval,yearval)){
		today=new Date(); // get today date
		myDate = new Date(yearval,monthval,dayval); // create date object
				
		if(myDate>today) return true;
		else return false;
	}else{ 			
		return false;
	}
}

function isCorrectDate(dayval,monthval,yearval){
	//date format for this function is 20-12-2009 , d-m-Y
   // Regular expression used to check if date is in correct format
   var pattern = new RegExp('[0-3][0-9]-(0|1)[0-9]-(19|20)[0-9]{2}');
   var dateval = dayval+'-'+monthval+'-'+yearval;
   if(dateval.match(pattern)){
      var date_array = dateval.split('-');
      var day = date_array[0];

      // Attention! Javascript consider months in the range 0 - 11
      var month = date_array[1] - 1;
      var year = date_array[2];

      // This instruction will create a date object
      source_date = new Date(year,month,day);
	  var err =0;
      if(year != source_date.getFullYear()){
         //alert('Year is not valid!');
		 //return false;
		 err++;
      }

      if(month != source_date.getMonth()){
         //alert('Month is not valid!');
         //return false;
		 err++;
      }

      if(day != source_date.getDate()){
         //alert('Day is not valid!');
         //return false;
		 err++;
      }
	  
	  if(err>0) return false;
	 // else return true;
   }
   else
   {
      alert('Date format is not valid!');
      return false;
   }
   return true;
}

