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 const_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<=const_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 all
function doCheckAll(objForm,strCheckbox){
	if (typeof(objForm)=="undefined" || typeof(objForm.elements[strCheckbox])=="undefined") return false;
    if (typeof(objForm.elements[strCheckbox].length)!="undefined")
    	for(var i=0;i<objForm.elements[strCheckbox].length;i++) objForm.elements[strCheckbox][i].checked=true;
    else objForm.elements[strCheckbox].checked=true;
}

// Uncheck all
function doClearAll(objForm,strCheckbox){
	if (typeof(objForm)=="undefined" || typeof(objForm.elements[strCheckbox])=="undefined") return false;
    if (typeof(objForm.elements[strCheckbox].length)!="undefined")
    	for(var i=0;i<objForm.elements[strCheckbox].length;i++) objForm.elements[strCheckbox][i].checked=false;
    else objForm.elements[strCheckbox].checked=false;
}

function checkempty(theform, strError){
	var returnval=true //by default, allow form submission
	for (i=0; i<theform.elements.length; i++){
		if (theform.elements[i].type=="text" || theform.elements[i].type=="textarea"){
			if (theform.elements[i].value==""){ //if empty field
				alert(strError) //alert error message
				returnval=false //disallow form submission
				break //end loop. No need to continue.
			}
		}
	}
	return returnval
}