// JavaScript Document

function isEmailAddress (string) {
  var addressPattern = 
    /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
  return addressPattern.test(string);
}

function isTelOrMobile(string){
   var pattern = /^([0]\d{2}(-|\s)[1-9]\d{6})|([0]\d{3}(-|\s)[1-9]\d{5})|([0]\d{9})|(06(-|\s)?[1-9][0-9]{7})$/;
    return pattern.test(string);
}

function isTel (string) {
  var addressPattern = 
  /^(([0]\d{2}(-|\s)[1-9]\d{6})|([0]\d{3}(-|\s)[1-9]\d{5})|([0]\d{9}))$/;
  return addressPattern.test(string);
}

function isMobile (string) {
  var addressPattern = 
    /^06(-|\s)?[1-9][0-9]{7}$/;
  return addressPattern.test(string);
}

function isPostcode (obj) {
  string = obj.value;
  var addressPattern = /^\d{4}\s[A-Za-z]{2}$/;
  if(addressPattern.test(string)){
	return true;
  }
  addressPattern = /^\d{4}[A-Za-z]{2}$/;
  if(addressPattern.test(string)){
	obj.value = string.substr(0,4) + ' ' + string.substr(4,2);
	return true;
  }
  return false;
}

function isNum (string) {
  var addressPattern =  /^\d+$/;
  return addressPattern.test(string);
}

function chkage(obj, format) {
 t    = new Date();	// get current date 
 year = t.getFullYear();	// get year of current
 mon  = t.getMonth() + 1;	// get month of current
 day  = t.getDate();	// get date of current
 
  dateBits = DateComponents(obj.value, format);
  DD = dateBits[0];
  MM = dateBits[1];
  YY = dateBits[2];
 
  age = year - YY;
  if ((MM > mon) || (MM == mon && day < DD)) age --;
   return age;
}

function ValiDate(obj, format){
   dateBits = DateComponents(obj.value, format);
   
   if (dateBits == null) return false;

   day = dateBits[0];
   month = dateBits[1];
   year = dateBits[2];

   if ((month < 1 || month > 12) || (day < 1 || day > 31)) { // check month range 
        return false;
   } 
   
   if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        return false;
   }
	      
   if (month == 2) {
	testyear = year;
       // check for february 29th 
       if(year < 20){
       	testyear = 20 + year;
   }else if(year<100){
      	testyear = 19 + year;
   }	       
   var isleap = (testyear % 4 == 0 && (testyear % 100 != 0 || testyear % 400 == 0)); 
       if (day>29 || (day==29 && !isleap)) {
           return false;
          }
       } 
	   
   return true;
}

function DateComponents(dateStr, morfat) {
  var splitChar = (morfat.indexOf('-')>0?'-':(morfat.indexOf('/')>0?'/':(morfat.indexOf('.')>0?'.':'')));
  var morfatArr = morfat.split(splitChar);
  var dateArr = dateStr.split(splitChar);
  var retArr = new Array(morfatArr.length);  
    
  if(dateArr.length == morfatArr.length){
	  for(i=0;i<morfatArr.length;i++){
		if(morfatArr[i]=="dd" && dateArr[i]<=31){			
			retArr[0] = dateArr[i];
		}else if(morfatArr[i]=="mm" && dateArr[i]<=12){
			retArr[1] = dateArr[i];
		}else if(morfatArr[i]=="yyyy" && dateArr[i]<3000 && dateArr[i]>999){
			retArr[2] = dateArr[i];
		}else if(morfatArr[i]=="yy" && dateArr[i]<100 && dateArr[i]>=0){
			retArr[2] = dateArr[i];
		}else{
			return null;
		}
	  }	  
	  return retArr;
  }else{
    return null;
  }
}

function isUrl(theUrl)
{
	return /^(https?):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(theUrl);
}
