/*
 * Number.js : ¼ýÀÚ °ü·Ã ÇÔ¼ö ¸ðÀ½
 * 
 * Version 1.0
 * 
 * Created  : 2006/08/30  °³¹ßÀÚ
 * Updated  : 2006/08/30  °³¹ßÀÚ
 */

//
// ÀÔ·ÂµÈ ¹®ÀÚ¿­¿¡¼­ 0-9, +, -, . ¸¦ Á¦¿ÜÇÑ ¸ðµç ¹®ÀÚ¸¦ Á¦°ÅÇÏ°í ¼ýÀÚ°ªÀ» ¸®ÅÏ
// ÇÑ´Ù. ¸¸¾à ÃÖÁ¾ °á°ú°¡ ¼ýÀÚ°ªÀÌ ¾Æ´Ï¶ó¸é 0 À» ¸®ÅÏÇÑ´Ù.
//
// 1. ´Ü¼øÇÏ°Ô ¼ýÀÚ°ª¸¸ ¸®ÅÏ      -> var iResult = nm_ToFloat("123.456");
// 2. ÁöÁ¤ÇÑ °ª¸¸Å­ ¼Ò¼ýÁ¡ ¹Ý¿Ã¸² -> var iResult = nm_ToFloat("123.456", 2);
function nm_ToFloat(strSource)
{
    var nScale    = arguments[1];
    var trgNumber = parseFloat(strSource.replace(/[^0-9\+\-\.]+/g,""));
    
    if (isNaN(trgNumber)) trgNumber = 0;
    
    if (nScale || nScale == 0) 
    {
        var nScaleNumber = Math.pow(10, nScale);
        trgNumber = Math.round(trgNumber * nScaleNumber) / nScaleNumber;
    }
    
    return trgNumber;
}

//
// ÀÔ·ÂµÈ ¹®ÀÚ¿­¿¡¼­ 0-9, +, -, . ¸¦ Á¦¿ÜÇÑ ¸ðµç ¹®ÀÚ¸¦ Á¦°ÅÇÑ ´ÙÀ½, ´Ù½Ã , ¸¦ 
// Ãß°¡ÇÑ´Ù. ¸¸¾à ¿Ã¹Ù¸¥ ¼ýÀÚ°ªÀÌ ¾Æ´Ï¶ó¸é 0 À» ¸®ÅÏÇÑ´Ù.
function nm_InsertComma(strSource)
{
    var strResult    = "";
    var strPrecision = "";
    var strSign      = "";
    
    strSource = nm_ToFloat(strSource.toString()).toString();
    
    // ¹®ÀÚ¿­ÀÇ Ã¹ ±ÛÀÚ°¡ - ¸é strSign º¯¼ö¿¡ ÀÌ¸¦ ÀúÀåÇØµÎ°í ÀÛ¾÷´ë»ó ¹®ÀÚ¿­¿¡¼­´Â Á¦°ÅÇÑ´Ù.
    // ¹®ÀÚ¿­ÀÇ Ã¹ ±ÛÀÚ°¡ + ÀÎ °æ¿ì´Â ¹Ù·Î À§ÀÇ nm_ToFloat() ÇÔ¼ö¸¦ °ÅÄ¡¸é¼­ Á¦°ÅµÈ´Ù.
    if (strSource.charAt(0) == "-") 
    {
        strSign   = strSource.charAt(0);  
        strSource = strSource.substr(1);
    }
    
    // ¼Ò¼öÁ¡ÀÌ Á¸ÀçÇÏ´Â °æ¿ì strPoint º¯¼ö¿¡ ¼Ò¼öÁ¡°ú ±× ÀÌÇÏÀÇ ¹®ÀÚ¸¦ ÀúÀåÇØµÎ°í ÀÛ¾÷´ë»ó ¹®ÀÚ¿­¿¡¼­´Â Á¦°ÅÇÑ´Ù. 
    var nPosition = strSource.indexOf(".");
    if (nPosition > 0)
    {
        strPrecision = strSource.substr(nPosition);
        strSource    = strSource.substr(0, nPosition);
    }

    // ·çÇÁ¸¦ µ¹¸é¼­ ¼Ò¼ýÁ¡À» »ðÀÔÇÑ´Ù.    
    var nLength = strSource.length;
    while (nLength > 3) 
    {
        nLength  -= 3;
        strResult = "," + strSource.substr(nLength, 3) + strResult;
    }
    
    strResult = strSign + strSource.substr(0, nLength) + strResult + strPrecision;
    return strResult;
}

//
// ÀÔ·ÂµÈ ¼öÀÇ Àý´ë°ªÀ» ±¸ÇÑ´Ù.
function nm_Abs(numberValue)
{
  if (isNaN(numberValue))
    return 0;

  return Math.abs(numberValue);
}
