﻿var njs;
if (!njs) njs = {};

njs.Converter = {}

njs.Converter.IntToPercent = function(formatValue){
    var formatedValue = formatValue+"%"; 
    return formatedValue;
}

njs.Converter.PercentToInt = function(formatValue){
    var formatedValue = formatValue.replace(/%/,""); 
    return formatedValue; 
}

njs.Converter.PercentToFloat = function(formatValue){
    var formatedValue = formatValue.replace(/%/,"");
    formatedValue = (parseFloat(formatedValue))/100;
    return formatedValue; 
}

njs.Converter.FloatToPercent = function(formatValue){
    var formatedValue = (formatValue * 100) + "%"; 
    return formatedValue;
}

///Converts a string that is formatted as money $0.00 to value of type number 0.00
njs.Converter.MoneyToNumber = function(formatValue){
    var formatedValue;
    //Test that formatValue is valid Money String
    var valueToFormat = formatValue.replace(/[^\d\.]/g,"");
    formatedValue = parseFloat(valueToFormat);
    return formatedValue;
}

njs.Converter.StringToMoney = function(formatValue){
    var formatedValue = this.NumberToMoney(this.MoneyToNumber(formatValue));
    return formatedValue;
}

///Converts value of type number 0.00  to a string that is formatted as money $0.00
njs.Converter.NumberToMoney = function(formatValue){
    var formatedValue;
    var valueToFormat = formatValue;
    var isNegative = false;
    if(typeof valueToFormat == "number"){
        valueToFormat = (Math.round(valueToFormat*100))/100;
        if(valueToFormat < 0){
            isNegative = true;
            valueToFormat = Math.abs(valueToFormat);
        }
        valueToFormat = valueToFormat.toString();
    }
    else{
        alert("njs.Converter.NumberToMoney does not support this type!\nType passed: "+typeof formatValue+
                "\n\nFunction calling this function:\n\n "+ arguments.callee.caller.toSource());
    }
     
    if(valueToFormat.match(/\d*\.\d\d$/) == null){
        if(valueToFormat.match(/\d*\.\d$/) != null){
            formatedValue = valueToFormat+"0";
        }
        else if(valueToFormat.match(/\d*\./) != null){
            formatedValue = valueToFormat+"00";
        }
        else if(valueToFormat.match(/\d*\./) == null){
            formatedValue = valueToFormat+".00";
        }
    }
    else{
        formatedValue = valueToFormat
    }
    
    var cents = formatedValue.substring(formatedValue.length-3,formatedValue.length);
    var dollars = formatedValue.substring(0,formatedValue.length-3);
    var dollarsSplit = dollars.split(/\B/);
    var dollarSplitReverse = dollarsSplit.reverse();
    var finalDollarReverse = "";
    var finalDollar = "";
    for(var i=0; i < dollarSplitReverse.length; i++){
        if(i%3==0 && i!=0){
            finalDollarReverse+=","+dollarSplitReverse[i];
        }
        else{
            finalDollarReverse+=dollarSplitReverse[i];
        }
    }
    var finalDollarSplitReverse = finalDollarReverse.split(/\B|\b/);
    for(var i=finalDollarSplitReverse.length-1; i > -1 ; i--){
        finalDollar += finalDollarSplitReverse[i];
    }
    finalDollar += cents;
    formatedValue = "$"+finalDollar;
    if(isNegative == true) 
        formatedValue = "("+formatedValue+")";
    return formatedValue;
}