/**
* 所有系统的core-extension.js都是临时的，需要移植到resource/core.js中
* @Author danson
*/
//浮点数加法运算                                                                
Math.add = function(arg1, arg2) {                                                  
	var r1,r2,m;                                                                 
	try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}                   
	try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}                   
	m=Math.pow(10,Math.max(r1,r2))                                               
	return (arg1*m+arg2*m)/m                                                     
}                                                                             
                                                                                
//浮点数减法运算                                                               
Math.sub = function(arg1, arg2) {                                                  
	var r1,r2,m,n;                                                                 
	try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}                     
	try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}                     
	m=Math.pow(10,Math.max(r1,r2));                                                
	//动态控制精度长度                                                             
	n=(r1>=r2)?r1:r2;                                                              
	return ((arg1*m-arg2*m)/m).toFixed(n);                                         
}                                                                              
                                                                                
//浮点数乘法运算                                                               
Math.mul = function(arg1, arg2) {                                                                              
	var m=0,s1=arg1.toString(),s2=arg2.toString();                                
	try{m+=s1.split(".")[1].length}catch(e){}                                     
	try{m+=s2.split(".")[1].length}catch(e){}                                     
	return Number(s1.replace(".","")) * Number(s2.replace(".",""))/Math.pow(10,m)   
}                                                                             
                                                                                
                                                                                
//浮点数除法运算                                                                
Math.div = function(arg1, arg2) {                                                   
	var t1 = 0, t2 = 0, r1, r2;                                                            
	try{
		t1 = arg1.toString().split(".")[1].length
	}catch(e){}                          
	try{
		t2 = arg2.toString().split(".")[1].length
	}catch(e){}                          
	with(Math) {                                                                     
		r1 = Number(arg1.toString().replace(".", ""))
		r2 = Number(arg2.toString().replace(".", ""))
		return (r1 / r2) * pow(10,t2 - t1);                                                   
	}                                                                               
}

MapUtils = {};
MapUtils.putToMap = function(map, a, b, c, d, v) {
	if (!map.contains(a)) {
		map.put(a, new Map());
	}
	var map1 = map.get(a);
	if (!map1.contains(b)) {
		map1.put(b, new Map());
	}
	var map2 = map1.get(b);
	if (!map2.contains(c)) {
		map2.put(c, new Map());
	}
	var map3 = map2.get(c);
	map3.put(d, v);
}

MapUtils.emptyIfNotExists = function(map, a, b, c) {
	var map1 = map.get(a);
	if (map1 == undefined) {
		return new Map();
	}
	var map2 = map1.get(b);
	if (map2 == undefined) {
		return new Map();
	}
	var map3 = map2.get(c);
	return map3 != undefined ? map3 : new Map();
}





