/*
** Desc: Creates a masked textbox.
** Version: 1.0
** Date: 2006.08.29
*/
var _MASKTXT_JS_ = true;

function TextMask(txtid,maskk){
	var box,mask;
	var checkcode=function(key){
		if(key==null) return false;
		if(key>31&&key<127) return true;
		return false;
	};
	var MaskChar=function(v,b){
		this.val=v;
		this.literal=b;
	};
	var makemask=function(m){
		var buf=[];
		var i=0;
		var len=m.length;
		while(i<len){
			var c=m.charAt(i);
			if(c=="#") buf.push(new MaskChar(/\d{1}/,false));
			else if(c=="$") buf.push(new MaskChar(/\D{1}/,false));
			else if(c=="*") buf.push(new MaskChar(/\w{1}/,false));
			else if(c=="@") buf.push(new MaskChar(m.charAt(++i),true));
			else buf.push(new MaskChar(c,true));
			i++;
		}
		return buf;
	};
	var addliterals=function(cval){
		var buf=cval;
		for(var i=cval.length; i<mask.length; i++){
			var c=mask[i];
			if(c.literal) buf+=c.val;
			else break;
		}
		return buf;
	};
	var validate=function(evnt){
		var ev=evnt||window.event;
		var code=ev.which||ev.keyCode;
		if(!checkcode(code)) return true;
		var buf=box.value;
		var n=String.fromCharCode(code);
		buf+=n;
		var len=buf.length;
		if(len>mask.length) return false;
		for(var i=0; i<len; i++){
			var m=mask[i];
			var c=buf.charAt(i);
			if(m.literal){
				if(m.val!=c) return false;
			}
			else{
				if(!m.val.test(c)) return false;
			}
		}
		box.value=addliterals(buf);
		return false;
	};
	box=$get(txtid);
	if(box==null) throw new Error("Could not locate element with id "+txtid);
	mask=makemask(maskk);
	try{box.maxlength=mask.length;}catch(e){}
	box.value=addliterals(box.value);
	box.onkeypress=box.onpaste=validate;
}

/* Places a length limit on a textarea control. */
function TextLimit(name, limit)
{
	var textarea = $get(name);
	var max = limit;
	
	if(!textarea)
		throw new Error("Could not find element with id " + name);
	if(textarea.tagName.toLowerCase() != "textarea")
		throw new Error("Invalid element passed to TextLimit constructor. Only TEXTAREA is allowed.");
	
	function validate(e)
	{
		e = e || window.event;
		if(textarea.value.length >= max)
		{
			try { e.returnValue = false; } catch(ex) {}
			return false;
		}
		return true;
	};
	
	textarea.onkeypress = validate;
}
