function mask(obj,exp,isCur){
	var C=/[a-zA-ZÂ-ÖÙ-Ýà-öù-ýÿ]/;
	var N=/[0-9]/;
	var A=/[a-zA-ZÂ-ÖÙ-Ýà-öù-ýÿ0-9]/;
	var S=/[^a-zA-ZÂ-ÖÙ-Ýà-öù-ýÿ0-9]/;
	var Z=/[.]/;

	if(!document.all || !obj) return;
	if(!obj.maxlength||obj.maxLength>exp.length)obj.maxLength=exp.length;
	if(isCur){
		obj.style.textAlign="right";
		obj.onkeyup=maskNumber;
	}else{
		obj.onkeypress=maskString;
	}
	function maskString(){
		var p=getCaret();
		var k=window.event.keyCode;
		var m=exp.charAt(p);
		if(m!=""){
			var sf = String.fromCharCode(k);
			if("CNASZ".indexOf(m)!=-1 && !eval(m).test(sf)){
				event.returnValue=false;
			}else{
				if("CNASZ".indexOf(m)==-1){
					if(obj.value.charAt(p)!=m)
						obj.value=obj.value.substr(0,p)+m+obj.value.substr(p,obj.value.length);
					setCaret(p+1);
					maskString();
				}
			}
		}
	}
	function maskNumber() {
		var negative=(obj.value.indexOf("-") != -1)?1:0;
		var STR=obj.value.replace(/[^0-9]+/gi,"");
		var eL=exp.length-1, vL=STR.length-1, res="", c, m;
		while (vL>=0){
			c = STR.charAt(vL--);
			m = exp.charAt(eL--);
			if (m != "N" && m != c){
				res = c + m + res;
				eL--;
			}else{
				res = c + res;
			}
		}
		obj.value = ((negative)?"-":"") + res;	
		setCaret(obj.value.length);
	}
	function setCaret(i){
		var r=obj.createTextRange();
		r.moveStart("character",i+1);
		r.moveEnd("character",i-obj.value.length);
		r.select();
	}
	function getCaret(){
		var t=document.selection.createRange().duplicate();
		t.moveEnd("character",obj.value.length);
		return(t.text=="")?obj.value.length:obj.value.lastIndexOf(t.text);
	}
}