function isEmpty(s){
	s=deleteSpaces(s);
	return s.length==0;
}
function deleteSpaces(s){
	var re=/\s/g;
	s=s.replace(re,"");
	return s;
}
function trim(s){
	var re=/^\s+/;
	s=s.replace(re,"");
	re=/\s+$/;
	s=s.replace(re,"");
	return s;
}
function deleteFirstZero(s){
	s=""+s;
	var re=/^0+/;
	s=s.replace(re,"");
	return s;
}
function isNativeNumber(s){
	s = trim(s);
	var re=/[\D]/g;
	var r=s.replace(re,"");
	return r==s && r!="" ;
}
function isNumber(s){
	s = trim(s);
	return !isNaN(Number(s)) && s!="";
}
function isEmail(s){
	s = trim(s);
	emailPat=/^(.+)@(.+)\.(.+)$/;
	var a=s.match(emailPat);
	if (a==null){
		emailPat = /^(.+)@(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
		a=s.match(emailPat);
	}
	return (a!=null);
}
var days = [0,31,28,31,30,31,30,31,31,30,31,30,31];
function isDate(d, m, y){
	d = deleteFirstZero(d);
	m = deleteFirstZero(m);
	y = deleteFirstZero(y);
	b = isNativeNumber(d) && isNativeNumber(m) && isNativeNumber(y) && m>0 && m<13 && d>0 && y>0;
	if (b){
		b = (d<=days[m]) || (m==2 && d==29 && (y%4==0))
	}
	return b;
}
/**
* check date and return the right dates
* using: var ret=["","", ""]
* isDMYDate("12-12-2001", ret)
*/
function isDMYDate(s, ret){
	s = deleteSpaces(s);
	var re=/-/g;
	s = s.replace(re, "/");
	dmy=s.split("/");
	b = dmy.length==3
	if (b){
		b = isDate(dmy[0],dmy[1],dmy[2]);
		if (b){
			ret[0] = s;
			ret[1] =dmy[0]+"-"+dmy[1]+"-"+dmy[2];
			ret[2] =dmy[2]+"-"+dmy[1]+"-"+dmy[0];
		}
	}
	return b;
}
/**
* check date and return the right dates
* using: var ret=["","",""]
* isMDYDate("12-12-2001", ret)
*/
function isMDYDate(s, ret){
	s = deleteSpaces(s);
	var re=/-/g;
	s = s.replace(re, "/");
	dmy=s.split("/");
	b = dmy.length==3
	if (b){
		b = isDate(dmy[1],dmy[0],dmy[2]);
		if (b){
			ret[0] = s;
			ret[1] =dmy[0]+"-"+dmy[1]+"-"+dmy[2];
			ret[2] =dmy[2]+"-"+dmy[0]+"-"+dmy[1];
		}
	}
	return b;
}

/**
* check phone and fax number with 10 digits
*/
function isPhoneFax(num){
	num = deleteSpaces(num);
	reg = /\./g;
	num = num.replace(reg, "-");
	var patterns = new Array();
	i=0;
	patterns[i++] = /^(\d{10})$/;
	patterns[i++] = /^(\d{3})-(\d{3})-(\d{4})$/;
	patterns[i++] = /^(\d{6})-(\d{4})$/;
	patterns[i++] = /^(\d{3})-(\d{7})$/;

	patterns[i++] = /^\+(\d{10})$/;
	patterns[i++] = /^\+(\d{3})-(\d{3})-(\d{4})$/;
	patterns[i++] = /^\+(\d{6})-(\d{4})$/;
	patterns[i++] = /^\+(\d{3})-(\d{7})$/;

	patterns[i++] = /^\((\d{3})\)-(\d{7})$/;
	patterns[i++] = /^\((\d{3})\)(\d{7})$/;
	patterns[i++] = /^\((\d{3})\)-(\d{3})-(\d{4})$/;
	patterns[i++] = /^\((\d{3})\)(\d{3})-(\d{4})$/;

	for (k=0; k<i; k++)
	{
		if (num.match(patterns[k])!=null)
		{
			return true;
		}
	}
	return false;
}
function checkphone(phone) {
	var RegObj = new RegExp('\\s+','g');
	phone = phone.replace(RegObj,'');

	re = /^\(?(\d{3})\)?[\.\-\/ ]?(\d{3})[\.\-\/ ]?(\d{4,})$/;
//	regphone = "/^$/";
	validPhone = re.exec(phone);
//	alert(validPhone);
	if (validPhone) {
		phone= "(" + validPhone[1] + ") " + validPhone[2] + "-" + validPhone[3];
		return phone;
	}
	else {
		return "";
	}

}
function isZipCode(zipcode, countrycode){
	us_pattern = /^\d{5}([\-|(\s)+]?\d{4})?$/;
	can_pattern =/^([A-Z]|[a-z])\d{1}([A-Z]|[a-z])\s\d{1}([A-Z]|[a-z])\d{1}$/;
	jap_pattern = /^\d{3}[[\-| ]?\d{4}]?$/;
	
	var pattern ='' ;
	var RegObj = new RegExp('\\s+','g');
//	zipcode = zipcode.replace(RegObj,'');

	switch (countrycode)
	{
	case '38':  //Canada
		pattern = can_pattern; 
		break;
	case '107': //Japan
		pattern = jap_pattern;
		break;
	case '172': //puerto rico
		pattern = us_pattern;
		break;
	case '223':  //US
		pattern = us_pattern;
		break;
	default: return true;
	}

	isValidZipCode = pattern.exec(zipcode);

	if (isValidZipCode != null) return true;
	return false
}