/**
 * 去除特殊字符，并限制总字符数
 * @param	Object      obj: 对象
 * @param	Event     event: 事件
 * @param	Boolean is_down: 是否keydown事件
 * @return	Integer 剩余字符数
 */
function strip_name(obj,event,is_down){
	try{
		if(is_down==undefined) is_down = false;
		if(!event) var event = window.event;
		var code = get_key_code(event);
	
		if(code==16||code==17||code==37||code==38||code==39||code==40||code==46||code==8||code==18||
			( true==event.ctrlKey && (code==67||code==65||code==88||code==90) )
			){
			/* ctrl/shift up/left/right/down/delete/backspace/alt/ctrl+c/ctrl+a/ctrl+x */
			var leftover = getLeftOver(obj);
			return leftover>0?leftover:0;
		}else{
			if(222==code || true==event.shiftKey && (222==code || 190==code || 188==code || 55==code)){
				/* prevent special characters: ' " > < & */
				preventDefaultEvent(event);
			}
			if(false==is_down){//key up event
				if(true==event.ctrlKey && code==86){// Ctrl + V
					strip_down(obj,obj.value,function (value){
						value = strip(value);
						var maxlen = obj.getAttribute("maxlength");
						return (null != maxlen)?value.substr(0,maxlen):value;
						//return value;
					});
				}
			}
			//now count left overs
			var leftover = getLeftOver(obj);window.status = leftover;
			if(0>=leftover){
				preventDefaultEvent(event);
				leftover = 0;
			}
			return leftover;
		}
	}catch(E){}
}
/**
 * 绑定控件去除特殊字符，并限制总字符数
 * @param	Object      obj: 对象
 * @param	Object     mess: 显示剩余字符数的对象
 * @return	null
 */
function bind_strip_name(obj,mess){
	if(typeof(obj)=="string") obj = $(obj);
	if(typeof(mess)=="string") mess = $(mess);
	var old_key_down = obj.onkeydown;
	obj.onkeydown = function (event){
		var leftover = strip_name(obj,event,true);
		try{
			mess.innerHTML = leftover;
		}catch(E){}
		try{
			if(typeof(old_key_down) == "function")
				old_key_down();
		}catch(E){}
	};
	var old_key_up = obj.onkeyup;
	obj.onkeyup = function (event){
		var leftover = strip_name(obj,event,false);
		try{
			mess.innerHTML = leftover;
		}catch(E){}
		try{
			if(typeof(old_key_up) == "function")
				old_key_up();
		}catch(E){}
		return leftover>0?true:false;
	};
	var old_focus = obj.onfocus;
	obj.onfocus = function (){
		document.oncontextmenu = function (){ return false; };
		try{
			if(typeof(old_focus) == "function")
				old_focus();
		}catch(E){}
	};
	var old_blur = obj.onblur;
	obj.onblur = function (){
		obj.value = strip(obj.value);
		var maxlen = obj.getAttribute("maxlength");
		if(null != maxlen)
			obj.value = obj.value.substr(0,maxlen);
		document.oncontextmenu = null;
		try{
			if(typeof(old_blur) == "function")
				old_blur();
		}catch(E){}
	};
}
