VBScript-to-JavaScript Functions (转)

来源:岁月联盟 编辑:exp 时间:2003-07-11
FormatNumber(Expression, NumDigitsAfterDecimal, IncludeLeadingDigit,
             UseParensForNegativeNumbers, GroupDigits)
======================================================================

function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
    IN:
        NUM - the number to format
        decimalNum - the number of decimal places to format the number to
        bolLeadingZero - true / false - display a leading zero for
                                        numbers between -1 and 1
        bolParens - true / false - use parenthesis around negative numbers
        bolCommas - put commas as number separators.

    RETVAL:
        The formatted number!
**********************************************************************/
{
        if (isNaN(parseInt(num))) return "NaN";

    var tmpNum = num;
    var iSign = num < 0 ? -1 : 1;        // Get sign of number
    
    // Adjust number so only the specified number of numbers after
    // the decimal point are shown.
    tmpNum *= Math.pow(10,decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10,decimalNum);
    tmpNum *= iSign;                    // Readjust for sign
    
    
    // Create a string object to do our formatting on
    var tmpNumStr = new String(tmpNum);

    // See if we need to strip out the leading zero or not.
    if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
        if (num > 0)
            tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
        else
            tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
        
    // See if we need to put in the commas
    if (bolCommas && (num >= 1000 || num <= -1000)) {
        var iStart = tmpNumStr.indexOf(".");
        if (iStart < 0)
            iStart = tmpNumStr.length;

        iStart -= 3;
        while (iStart >= 1) {
            tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
            iStart -= 3;
        }        
    }

    // See if we need to use parenthesis
    if (bolParens && num < 0)
        tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

    return tmpNumStr;        // Return our formatted string!
}

FormatPercent(Expression, NumDigitsAfterDecimal, IncludeLeadingDigit,
               UseParensForNegativeNumbers, GroupDigits)
- Returns an expression formatted as a percentage (multiplied by 100)
   with a trailing % character.

(NOTE!! This function MUST have FormatNumber
also provided.)

========================================================================


function FormatPercent(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
    IN:
        NUM - the number to format
        decimalNum - the number of decimal places to format the number to
        bolLeadingZero - true / false - display a leading zero for
                                        numbers between -1 and 1
        bolParens - true / false - use parenthesis around negative numbers
        bolCommas - put commas as number separators.                                        

    RETVAL:
        The formatted number!        
**********************************************************************/
{
    var tmpStr = new String(FormatNumber(num*100,decimalNum,bolLeadingZero,bolParens,bolCommas));

    if (tmpStr.indexOf(")") != -1) {
        // We know we have a negative number, so place '%' inside of ')'
        tmpStr = tmpStr.substring(0,tmpStr.length - 1) + "%)";
        return tmpStr;
    }
    else
        return tmpStr + "%";            // Return formatted string!
}

FormatCurrency(Expression, NumDigitsAfterDecimal, IncludeLeadingDigit,
               UseParensForNegativeNumbers, GroupDigits)

(NOTE!! This function MUST have FormatNumber
also provided.)
========================================================================

function FormatCurrency(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
/**********************************************************************
    IN:
        NUM - the number to format
        decimalNum - the number of decimal places to format the number to
        bolLeadingZero - true / false - display a leading zero for
                                        numbers between -1 and 1
        bolParens - true / false - use parenthesis around negative numbers
        bolCommas - put commas as number separators.                                        

    RETVAL:
        The formatted number!        
**********************************************************************/
{
    var tmpStr = new String(FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas));

    if (tmpStr.indexOf("(") != -1 || tmpStr.indexOf("-") != -1) {
        // We know we have a negative number, so place '$' inside of '(' / after '-'
        if (tmpStr.charAt(0) == "(")
            tmpStr = "($"  + tmpStr.substring(1,tmpStr.length);
        else if (tmpStr.charAt(0) == "-")
            tmpStr = "-$" + tmpStr.substring(1,tmpStr.length);
            
        return tmpStr;
    }
    else
        return "$" + tmpStr;        // Return formatted string!
}

FormatDateTime(datetime, FormatType) : Returns an expression formatted
                                       as a date or time
========================================================================



function FormatDateTime(datetime, FormatType)
/*
     FomatType takes the following values
        1 - General Date = Friday, October 30, 1998
        2 - Typical Date = 10/30/98
        3 - Standard Time = 6:31 PM
        4 - Military Time = 18:31
*/
{
    var strDate = new String(datetime);

    if (strDate.toUpperCase() == "NOW") {
        var myDate = new Date();
        strDate = String(myDate);
    } else {
        var myDate = new Date(datetime);
        strDate = String(myDate);
    }


    // Get the date variable parts
    var Day = new String(strDate.substring(0,3));
    if (Day == "Sun") Day = "Sunday";
    if (Day == "Mon") Day = "Monday";
    if (Day == "Tue") Day = "Tuesday";
    if (Day == "Wed") Day = "Wednesday";
    if (Day == "Thu") Day = "Thursday";
    if (Day == "Fri") Day = "Friday";
    if (Day == "Sat") Day = "Saturday";    
    
    var Month = new String(strDate.substring(4,7)), MonthNumber = 0;
    if (Month == "Jan") { Month = "January"; MonthNumber = 1; }
    if (Month == "Feb") { Month = "February"; MonthNumber = 2; }
    if (Month == "Mar") { Month = "March"; MonthNumber = 3; }
    if (Month == "Apr") { Month = "April"; MonthNumber = 4; }
    if (Month == "May") { Month = "May"; MonthNumber = 5; }
    if (Month == "Jun") { Month = "June"; MonthNumber = 6; }
    if (Month == "Jul") { Month = "July"; MonthNumber = 7; }
    if (Month == "Aug") { Month = "August"; MonthNumber = 8; }
    if (Month == "Sep") { Month = "September"; MonthNumber = 9; }
    if (Month == "Oct") { Month = "October"; MonthNumber = 10; }
    if (Month == "Nov") { Month = "November"; MonthNumber = 11; }
    if (Month == "Dec") { Month = "December"; MonthNumber = 12; }
    
    var curPos = 11;
    var MonthDay = new String(strDate.substring(8,10));
    if (MonthDay.charAt(1) == " ") {
        MonthDay = "0" + MonthDay.charAt(0);
        curPos--;
    }    
    
    var MilitaryTime = new String(strDate.substring(curPos,curPos + 5));
    
    var Year = new String(strDate.substring(strDate.length - 4, strDate.length));    
    
    document.write(strDate + "");    

    // Format Type decision time!
    if (FormatType == 1)
        strDate = Day + ", " + Month + " " + MonthDay + ", " + Year;
    else if (FormatType == 2)
        strDate = MonthNumber + "/" + MonthDay + "/" + Year.substring(2,4);
    else if (FormatType == 3) {
        var AMPM = MilitaryTime.substring(0,2) >= 12 && MilitaryTime.substring(0,2) != "24" ? " PM" : " AM";
        if (MilitaryTime.substring(0,2) > 12)
            strDate = (MilitaryTime.substring(0,2) - 12) + ":" + MilitaryTime.substring(3,MilitaryTime.length) + AMPM;
        else {
            if (MilitaryTime.substring(0,2) < 10)
                strDate = MilitaryTime.substring(1,MilitaryTime.length) + AMPM;
            else
                strDate = MilitaryTime + AMPM;
        }
    }    
    else if (FormatType == 4)
        strDate = MilitaryTime;


    return strDate;
}

LTrim(string) : Returns a copy of a string without leading spaces.
==================================================================
        function LTrim(str)
        /***
                PURPOSE: Remove leading blanks from our string.
                IN: str - the string we want to LTrim

                RETVAL: An LTrimmed string!
        ***/
        {
                var whitespace = new String(" /t/n/r");

                var s = new String(str);

                if (whitespace.indexOf(s.charAt(0)) != -1) {
                    // We have a string with leading blank(s)...

                    var j=0, i = s.length;

                    // Iterate from the far left of string until we
                    // don't have any more whitespace...
                    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
                        j++;


                    // Get the substring from the first non-whitespace
                    // character to the end of the string...
                    s = s.substring(j, i);
                }

                return s;
        }

RTrim(string) : Returns a copy of a string without trailing spaces.
==================================================================
        function RTrim(str)
        /***
                PURPOSE: Remove trailing blanks from our string.
                IN: str - the string we want to RTrim

                RETVAL: An RTrimmed string!
        ***/
        {
                // We don't want to trip JUST spaces, but also tabs,
                // line feeds, etc.  Add anything else you want to
                // "trim" here in Whitespace
                var whitespace = new String(" /t/n/r");

                var s = new String(str);

                if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
                    // We have a string with trailing blank(s)...

                    var i = s.length - 1;       // Get length of string

                    // Iterate from the far right of string until we
                    // don't have any more whitespace...
                    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
                        i--;


                    // Get the substring from the front of the string to
                    // where the last non-whitespace character is...
                    s = s.substring(0, i+1);
                }

                return s;
        }


Trim(string) : Returns a copy of a string without leading or
               trailing spaces
=============================================================
        function Trim(str)
        /***
                PURPOSE: Remove trailing and leading blanks from our string.
                IN: str - the string we want to Trim

                RETVAL: A Trimmed string!
        ***/
        {
                return RTrim(LTrim(str));
        }

Len(String) : Returns the number of characters in a string
===========================================================

        function Len(str)
        /***
                IN: str - the string whose length we are interested in

                RETVAL: The number of characters in the string
        ***/
        {  return String(str).length;  }

Left(string, length): Returns a specified number of characters from the
                      left side of a string
========================================================================

        function Left(str, n)
        /***
                IN: str - the string we are LEFTing
                    n - the number of characters we want to return

                RETVAL: n characters from the left side of the string
        ***/
        {
                if (n <= 0)     // Invalid bound, return blank string
                        return "";
                else if (n > String(str).length)   // Invalid bound, return
                        return str;                // entire string
                else // Valid bound, return appropriate substring
                        return String(str).substring(0,n);
        }

Right(string, length): Returns a specified number of characters from the
                       right side of a string
========================================================================

        function Right(str, n)
        /***
                IN: str - the string we are RIGHTing
                    n - the number of characters we want to return

                RETVAL: n characters from the right side of the string
        ***/
        {
                if (n <= 0)     // Invalid bound, return blank string
                   return "";
                else if (n > String(str).length)   // Invalid bound, return
                   return str;                     // entire string
                else { // Valid bound, return appropriate substring
                   var iLen = String(str).length;
                   return String(str).substring(iLen, iLen - n);
                }
        }

Mid(string, start, length): Returns a specified number of characters from a
                            string
============================================================================

        function Mid(str, start, len)
        /***
                IN: str - the string we are LEFTing
                    start - our string's starting position (0 based!!)
                    len - how many characters from start we want to get

                RETVAL: The substring from start to start+len
        ***/
        {
                // Make sure start and len are within proper bounds
                if (start < 0 || len < 0) return "";

                var iEnd, iLen = String(str).length;
                if (start + len > iLen)
                        iEnd = iLen;
                else
                        iEnd = start + len;

                return String(str).substring(start,iEnd);
        }


// Keep in mind that strings in JavaScript are zero-based, so if you ask
// for Mid("Hello",1,1), you will get "e", not "H".  To get "H", you would
// simply type in Mid("Hello",0,1)

// You can alter the above function so that the string is one-based.  Just
// check to make sure start is not <= 0, alter the iEnd = start + len to
// iEnd = (start - 1) + len, and in your final return statement, just
// return ...substring(start-1,iEnd)

InStr(str, SearchForStr) : Returns the location a character (charSearchFor)
                           was found in the string str
========================================================================

// InStr function written by: Steve Bamelis - steve.bamelis@pandora.be

function InStr(strSearch, charSearchFor)
/*
InStr(strSearch, charSearchFor) : Returns the first location a substring (SearchForStr)
                           was found in the string str.  (If the character is not
                           found, -1 is returned.)
                           
Requires use of:
    Mid function
    Len function
*/
{
    for (i=0; i < Len(strSearch); i++)
    {
        if (charSearchFor == Mid(strSearch, i, 1))
        {
            return i;
        }
    }
    return -1;
}