diff --git a/js.js b/js.js
index 6f7331e..3f95782 100644
--- a/js.js
+++ b/js.js
@@ -20,7 +20,9 @@ exports.format=function(n,s){
 //Unformat numbers
 exports.unformat=function(n){
 	if(!n) return n;
-	if (typeof n!='object') return numeral(n).unformat();
+	if (typeof n=='number') return n;
+	if (typeof n=='string') return parseFloat(n.replace(/[^0-9.-]/g,""))
+	if (typeof n!='object') return null;
 	var o={};
 	for (i in n){
 		o[i]=exports.unformat(n[i]);
@@ -256,7 +258,7 @@ exports.safeFunctionEval=function(functionString,input,callback){
 			
 			e+="var func="+f+"; var output=null; try{output=func(input);}catch(e){throw new Error(e);}";
 			
-			utilities.js.safeEval(e,function(err,data){
+			exports.safeEval(e,function(err,data){
 				if (err){
 					 debug("Error executing string function, with input:");
 					 debug(util.inspect(input));
@@ -420,10 +422,16 @@ exports.getUnique=function(arr){
 /*
 	Function that supports relative date calculations, like "-3d" for 3 days ago, etc
 */
-exports.relativeDate=function(s){
+exports.relativeDate=function(s,initialDate){
 	if (!s || s=="none") return null;
 	if (typeof s.getMonth === 'function') return s;
 	
+	if (initialDate){
+		initialDate=new Date(initialDate);
+	}else{
+		initialDate=new Date();
+	}
+	
 	var r=s.match(/^([+-]{1})([0-9]+)([YyMwdhms]{1})([.a-z]*)$/);
 	if (r){
 		var period=null;
@@ -438,8 +446,13 @@ exports.relativeDate=function(s){
 			case "m": period="minutes"; break;
 			case "s": period="seconds"; break;
 		}
-		var d=moment().subtract(parseInt(r[2]),period)
-		if (r[1]=="+") d=moment().add(parseInt(r[2]),period)
+		var d=moment.utc(initialDate);
+		
+		if (r[1]=="+"){
+			 d=d.add(parseInt(r[2]),period)
+		}else{
+			d=d.subtract(parseInt(r[2]),period)
+		}
 		if (d.toDate()=='Invalid Date') throw "Invalid date configuration:"+r;
 		if (r[4]){
 			var opts=r[4].split(".").filter(Boolean);
@@ -610,6 +623,10 @@ exports.msdate=function(n,ignoreTimezone){
 	return returnDateTime.toString().substr(0,20);
 }
 
+exports.fromMSDate=function(date){
+  return new Date(Math.round((Number(date) - 25569)*86400*1000));
+}
+
 
 
 
