$.fn.extend({
	
	/**
	 * 绑定内容变更的响应到每一次按键
	 */
	pressChange: function (callback) {
		return this.bind('keyup', function () {
			$(this).trigger('change');
		}).bind('blur', function () {
			$(this).trigger('change');
		}).change(callback);
	}
	
});


$.extend(Number.prototype, {

	/**
	 * 格式化数字
	 * http://topic.csdn.net/u/20080417/16/1b0ab200-cff7-41c9-83e4-594d1aef31a4.html
	 */
	format: function (formatString) {
		var val = this;
			var re=/%/;
				if(re.test(formatString))
			 {
			 val=val*100;
			 }
			 
			var patterns = formatString.split("."); 
			var numbers = (val+"").split("."); 
			var lpatterns = patterns[0].split(""); 
			var lpatternsbak = patterns[0].split(""); 
		
			
			var lkeep = ""; 
			var rkeep = ""; 
		 
		 
				 //小数点后大于样式长度进行四舍五入
			if (numbers[1]){ 
			var rnumbers=numbers[1].split("");
			var count=0;
			 if(patterns[1]){
			 var rpatterns = patterns[1].split(""); 
				
				for(var i=0;i< rpatterns.length;i++){
				 if(rpatterns[i]=="#"|| rpatterns[i]=="0"){
						count++;
					 }
				 }
			 }
				if(rnumbers.length>count){
				 numbers = ( val.toFixed(count)+"").split("."); 
				}
					 
			 }
				var lnumbers = numbers[0].split(""); 


			//得到左侧要替换的部分 
			var lplaces = [];
			for(var i=0;i <lpatterns.length;i++){ 
					var parternchar = lpatterns[i];
					 
					if (parternchar == "#" || parternchar == "0"){ 
							lplaces.push(i); 
					} 
			} 
	


			//替换左侧，左侧有数字才要替换，以避免v = .99型的数字而产生错误 
			if (lnumbers[0] && lnumbers[0].length>0){ 
					var numberIndex = lnumbers.length - 1; 
					var replaced = 0; 
					for(var i=lplaces.length - 1;i>=0;i--){ 
							replaced ++;    //被替换的字符数量 
							var place = lplaces[i]; 
							lpatterns[place] = lnumbers[numberIndex]; 
							
							if (numberIndex == 0) { 
									break; 
							} 
							numberIndex--; 
					} 
					
					//处理以#为第一个格式（#前可能有非0的其他串也在此范围）的格式串，对于以#开头的格式串，将不会截取数字串，要补齐 
					var lstartIdx = lplaces[0]; 
					
					//补漏
			var nlen=lnumbers.length;
			var plen=lplaces.length;
			if(nlen>plen)
			 lpatternsbak.splice(lstartIdx,0,"#");
					
					
					if (lpatternsbak[lstartIdx]=="#"){ 
							if (lnumbers.length > replaced){ 
									var idx = lnumbers.length - replaced; 
									for(var i=0;i <idx;i++){ 
											lkeep += lnumbers[i]; 
									} 
									
									lpatterns[lstartIdx] = lkeep + lpatterns[lstartIdx]; 
							} 
					} 
			} 
			
			//替换右侧 
			if (patterns[1] && patterns[1].length > 0){ 
					var rpatterns = patterns[1].split(""); 
					 if (numbers[1] && numbers[1].length>0){ 
							var rnumbers = numbers[1].split(""); 

							//得到右侧将要替换的部分 
							var rplaces = []; 
							for(var i=0;i <rpatterns.length;i++){ 
									var parternchar = rpatterns[i]; 
									if (parternchar == "#" || parternchar == "0"){ 
											rplaces.push(i); 
									} 
							} 
							
							var replaced = 0; 
							for(var i=0;i <rplaces.length;i++){ 
									replaced ++;    //被替换的字符数量 
									var place = rplaces[i]; 
									rpatterns[place] = rnumbers[i]; 
									
									if (i==rnumbers.length - 1){ 
											break; 
									} 
							} 
							
						
					 
					} 
			} 
			
			for(var i=0;i <lpatterns.length;i++){ 
					if (lpatterns[i]=="#"){ 
							lpatterns[i] = ""; 
					} 
			} 
			
			var result = lpatterns.join(""); 
			if (patterns[1]){ 
					for(var i=0;i <rpatterns.length;i++){ 
							if (rpatterns[i] == "#"){ 
									rpatterns[i] = ""; 
							} 
					} 
					result += "." + rpatterns.join(""); 
			} 
			
			//第一位不能为,号 
			if (result.substring(0,1)==","){ 
					result = result.substring(1); 
			} 
			
			//最后一位也不能为,号 
			if (result.substring(result.length-1)==","){ 
					result = result.substring(0,result.length); 
			} 
			return result; 
	} 

});
