
//methods for converting measurement units

var IMS2_LengthUnitInfo =
[
["meters","m",1]
,["meter","m",1]
,["feet","ft",0.3048]
,["foot","ft",0.3048]
,["inch","in",0.0254]
,["inches","in",0.0254]
,["mile","mi",1609.344]
,["kilometer","km",1000]
,["yard","yd",0.9144]
,["metre","m",1]
,["inches","in",0.0254]
,["kilometre","km",1000]
,["fathom","fm",1.8288] // its un fathomable this is a unit of measure.... groan.
,["nautical mile","nm",1852]
,["pixel","px",0.000264583333] // at 96dpi
];

function IMS2_GetLengthUnitScale(unitName){
    if(unitName){
        var l = IMS2_LengthUnitInfo.length;
        for(var i=0;i<l;i++){
            var u = IMS2_LengthUnitInfo[i];
            if(unitName == u[0] || unitName == u[1]){
                return(u[2]);
            }
        }
    }
    return(null);
}

function IMS2_GetLengthUnitAbbr(unitName){
    if(unitName){
        var l = IMS2_LengthUnitInfo.length;
        for(var i=0;i<l;i++){
            var u = IMS2_LengthUnitInfo[i];
            if(unitName == u[0] || unitName == u[1]){
                return(u[1]);
            }
        }
    }
}

function IMS2_GetLengthUnitName(unitName){
    if(unitName){
        var l = IMS2_LengthUnitInfo.length;
        for(var i=0;i<l;i++){
            var u = IMS2_LengthUnitInfo[i];
            if(unitName == u[0] || unitName == u[1]){
                return(u[0]);
            }
        }
    }
}

function IMS2_ConvertValueLengthScales(val,sf,st){
    if(val && sf && st){
        return((sf == st)?(val):((st != 0)?((val * sf)/st):(null)));
    }
    return(null);
}

function IMS2_ConvertValueLengthUnit(val,uf,ut){
    if(val && uf && ut){
        if(uf == ut){
            return(val);
        }
        var sf = IMS2_GetLengthUnitScale(uf);
        var st = IMS2_GetLengthUnitScale(ut);
        return(IMS2_ConvertValueLengthScales(val,sf,st));
    }
    return(null);
}