var undoValue;

function valfield(exp) {
	var srcEL,re,x; 
	srcEL = (valfield.arguments.length>1) ? valfield.arguments[1] : window.event.srcElement;
	x = exp;
	// macro definition
	re = /<empty>/gi; x = x.replace(re,"(<f>.value!=='')");
	re = /<numeric>/gi; x = x.replace(re,"(!(isNaN(<f>.value)))");
	re = /<quantity>/gi; x = x.replace(re,"(!((isNaN(<f>.value)) || (Math.round(<f>.value)!=<f>.value) || (<f>.value<=0)))");
	re = /<date>/gi; x = x.replace(re,"(isDate(<f>.value))");
	
	// replace the field property
	re = /<f>/gi;	x = x.replace(re,"srcEL");
	if (!(eval(x))) {
		alert("ערך לא תקין");
		srcEL.value=undoValue
		return false;
	}
	return true;
}
																												
function setUndoValue() {
	var v;
	v = (setUndoValue.arguments.length>0) ? setUndoValue.arguments[1] : window.event.srcElement.value;
	undoValue=v;
}

function isDate(dt) {
	var s,d;
	s = /(-|\.|[ ])/gi; dt = dt.replace(s,'/');
	d = dt.split("/");
	if (d.length!=3) return false;
	if ((d[0]<1) || (d[0]>31) || (d[1]<1) || (d[1]>12) || ((d[2].length % 2)==1)  || (d[2].length>4)) return false;
	if (d[2].length==2) d[2] = ((d[2]>30) ? '19' : '20') + d[2];
	var  ok = new Boolean ;
	ok = (((d[1]==1) || (d[1]==3) ||  (d[1]==5) || (d[1]==7) || (d[1]==8) || (d[1]==10) || (d[1]==12)) && (d[0]<=31));
	ok = ok || (((d[1]==4) || (d[1]==6) || (d[1]==9) || (d[1]==11)) && (d[0]<=30));
	ok = ok || ((d[1]==2) && (d[0]<=(((d[2] % 4)==0) ? 29 : 28)));
	return ok;
}
function win_op(pid){
	//alert();
		window.open("mess_show.asp?pid="+pid,null,"width=400,height=270,status=0");
	}
