Use stdint.h types throughout PDFium.
[pdfium.git] / fpdfsdk / src / javascript / PublicMethods.cpp
index ff5b9a7..4607fc6 100644 (file)
@@ -1,7 +1,7 @@
 // Copyright 2014 PDFium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
+
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
 #include "../../include/javascript/JavaScript.h"
@@ -36,28 +36,28 @@ static v8::Isolate* GetIsolate(IFXJS_Context* cc)
 #define DOUBLE_CORRECT 0.000000000000001
 
 BEGIN_JS_STATIC_GLOBAL_FUN(CJS_PublicMethods)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Format,6)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Keystroke,6)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Format,2)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Keystroke,2)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_FormatEx,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_KeystrokeEx,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Format,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Keystroke,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_FormatEx,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_KeystrokeEx,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Format,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Keystroke,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Format,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Keystroke,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_KeystrokeEx,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple,3)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFMakeNumber,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple_Calculate,2)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFRange_Validate,4)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFMergeChange,1)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFParseDateEx,2)
-       JS_STATIC_GLOBAL_FUN_ENTRY(AFExtractNums,1)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Format)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFNumber_Keystroke)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Format)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFPercent_Keystroke)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_FormatEx)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_KeystrokeEx)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Format)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFDate_Keystroke)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_FormatEx)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_KeystrokeEx)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Format)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFTime_Keystroke)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Format)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_Keystroke)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFSpecial_KeystrokeEx)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFMakeNumber)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFSimple_Calculate)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFRange_Validate)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFMergeChange)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFParseDateEx)
+       JS_STATIC_GLOBAL_FUN_ENTRY(AFExtractNums)
 END_JS_STATIC_GLOBAL_FUN()
 
 IMPLEMENT_JS_STATIC_GLOBAL_FUN(CJS_PublicMethods)
@@ -96,15 +96,15 @@ static FX_LPCWSTR months[] =
        L"Jan", L"Feb", L"Mar", L"Apr", L"May", L"Jun", L"Jul", L"Aug", L"Sep", L"Oct", L"Nov", L"Dec"
 };
 
-static FX_LPCWSTR fullmonths[] = 
-{ 
-       L"January", L"February", L"March", L"April", L"May", L"June", L"July", L"August", L"September", L"October", L"November", L"December" 
+static FX_LPCWSTR fullmonths[] =
+{
+       L"January", L"February", L"March", L"April", L"May", L"June", L"July", L"August", L"September", L"October", L"November", L"December"
 };
 
 FX_BOOL CJS_PublicMethods::IsNumber(FX_LPCWSTR string)
 {
        CFX_WideString sTrim = StrTrim(string);
-       FX_LPCWSTR pTrim = sTrim;
+       FX_LPCWSTR pTrim = sTrim.c_str();
        FX_LPCWSTR p = pTrim;
 
 
@@ -174,13 +174,13 @@ FX_BOOL CJS_PublicMethods::maskSatisfied(wchar_t c_Change,wchar_t c_Mask)
        switch (c_Mask)
        {
        case L'9':
-        return IsDigit(c_Change);              
+        return IsDigit(c_Change);
     case L'A':
-        return IsAlphabetic(c_Change);         
+        return IsAlphabetic(c_Change);
     case L'O':
-        return IsAlphaNumeric(c_Change);               
+        return IsAlphaNumeric(c_Change);
     case L'X':
-        return TRUE;           
+        return TRUE;
        default:
         return (c_Change == c_Mask);
        }
@@ -231,7 +231,7 @@ CFX_WideString CJS_PublicMethods::StrRTrim(FX_LPCWSTR pStr)
 
 CFX_WideString CJS_PublicMethods::StrTrim(FX_LPCWSTR pStr)
 {
-       return StrRTrim(StrLTrim(pStr));
+       return StrRTrim(StrLTrim(pStr).c_str());
 }
 
 CFX_ByteString CJS_PublicMethods::StrLTrim(FX_LPCSTR pStr)
@@ -300,7 +300,7 @@ double CJS_PublicMethods::ParseNumber(FX_LPCWSTR swSource, FX_BOOL& bAllDigits,
        CFX_WideString swDigits;
 
        while (p <= pEnd)
-       {       
+       {
                c = *p;
 
                if (IsDigit(c))
@@ -308,7 +308,7 @@ double CJS_PublicMethods::ParseNumber(FX_LPCWSTR swSource, FX_BOOL& bAllDigits,
                        swDigits += c;
                        bDigitExist = TRUE;
                }
-               else 
+               else
                {
                        switch (c)
                        {
@@ -454,11 +454,11 @@ CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(v8::Isolate* isolate, CJS_Valu
 
                        StrArray.SetElement(nIndex, CJS_Value(isolate, StrTrim(pSub).c_str()));
                        delete []pSub;
-                       
+
                        nIndex ++;
                        p = ++pTemp;
                }
-               
+
        }
        return StrArray;
 }
@@ -477,7 +477,7 @@ int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& string,int nStar
                {
                        nRet = nRet * 10 + (c - '0');
                        nSkip = i - nStart + 1;
-                       if (nSkip >= nMaxStep) 
+                       if (nSkip >= nMaxStep)
                                break;
                }
                else
@@ -531,7 +531,7 @@ double CJS_PublicMethods::ParseNormalDate(const CFX_WideString & value, FX_BOOL&
                if (IsDigit((wchar_t)c))
                {
                        number[nIndex++] = ParseStringInteger(value, i, nSkip, 4);
-                       i += nSkip;                     
+                       i += nSkip;
                }
                else
                {
@@ -591,7 +591,7 @@ double CJS_PublicMethods::ParseNormalDate(const CFX_WideString & value, FX_BOOL&
 
        CFX_WideString swTemp;
        swTemp.Format(L"%d/%d/%d %d:%d:%d",nMonth,nDay,nYear,nHour,nMin,nSec);
-       return JS_DateParse(swTemp);
+       return JS_DateParse(swTemp.c_str());
 }
 
 double CJS_PublicMethods::MakeRegularDate(const CFX_WideString & value, const CFX_WideString & format, FX_BOOL& bWrongFormat)
@@ -796,7 +796,7 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString & value, const CF
                                                                                CFX_WideString sFullMonths = fullmonths[m];
                                                                                sFullMonths.MakeLower();
 
-                                                                               if (sFullMonths.Find(sMonth, 0) != -1)
+                                                                               if (sFullMonths.Find(sMonth.c_str(), 0) != -1)
                                                                                {
                                                                                        nMonth = m + 1;
                                                                                        i += 4;
@@ -888,7 +888,7 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString & value, const CF
 
                if (JS_PortIsNan(dRet))
                {
-                       dRet = JS_DateParse(value);
+                       dRet = JS_DateParse(value.c_str());
                }
        }
 
@@ -1066,42 +1066,42 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete
        }
        if(!pEvent->m_pValue)
                return FALSE;
-       CFX_WideString& Value = pEvent->Value();        
+       CFX_WideString& Value = pEvent->Value();
        CFX_ByteString strValue = StrTrim(CFX_ByteString::FromUnicode(Value));
-       
+
        if (strValue.IsEmpty()) return TRUE;
-       
+
        int iDec = params[0].ToInt();
        int iSepStyle = params[1].ToInt();
        int iNegStyle = params[2].ToInt();
        // params[3] is iCurrStyle, it's not used.
-       std::wstring wstrCurrency(params[4].ToCFXWideString());
+       std::wstring wstrCurrency(params[4].ToCFXWideString().c_str());
        FX_BOOL bCurrencyPrepend = params[5].ToBool();
-       
+
        if (iDec < 0) iDec = -iDec;
-       
+
        if (iSepStyle < 0 || iSepStyle > 3)
                iSepStyle = 0;
-       
+
        if (iNegStyle < 0 || iNegStyle > 3)
                iNegStyle = 0;
-       
-       
+
+
        //////////////////////////////////////////////////////
        //for processing decimal places
        strValue.Replace(",", ".");
        double dValue = atof(strValue);
        if (iDec > 0)
-               dValue += DOUBLE_CORRECT;//
-                   
+               dValue += DOUBLE_CORRECT;
+
        int iDec2;
-       FX_BOOL bNagative = FALSE;
+       FX_BOOL bNegative = FALSE;
 
-       strValue = fcvt(dValue,iDec,&iDec2,&bNagative);
+       strValue = fcvt(dValue,iDec,&iDec2,&bNegative);
        if (strValue.IsEmpty())
        {
                dValue = 0;
-               strValue = fcvt(dValue,iDec,&iDec2,&bNagative);
+               strValue = fcvt(dValue,iDec,&iDec2,&bNegative);
                if (strValue.IsEmpty())
                {
                        strValue = "0";
@@ -1117,7 +1117,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete
                        strValue = "0" + strValue;
                }
                iDec2 = 0;
-               
+
        }
        int iMax = strValue.GetLength();
        if (iDec2 > iMax)
@@ -1126,7 +1126,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete
                {
                        strValue += "0";
                }
-               iMax = iDec2+1;                 
+               iMax = iDec2+1;
        }
        ///////////////////////////////////////////////////////
     //for processing seperator style
@@ -1142,7 +1142,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete
                        strValue.Insert(iDec2, ',');
                        iMax++;
                }
-               
+
                if (iDec2 == 0)
                        strValue.Insert(iDec2, '0');
        }
@@ -1153,35 +1153,33 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete
                        cSeperator = ',';
                else
                        cSeperator = '.';
-               
-               int iDecPositive,iDecNagative;
+
+               int iDecPositive;
                iDecPositive = iDec2;
-               iDecNagative = iDec2;           
-               
+
                for (iDecPositive = iDec2 -3; iDecPositive > 0;iDecPositive -= 3)
                {
                        strValue.Insert(iDecPositive, cSeperator);
                        iMax++;
                }
        }
-       
+
        //////////////////////////////////////////////////////////////////////
     //for processing currency string
 
        Value = CFX_WideString::FromLocal(strValue);
-       
-       std::wstring strValue2(Value);
+       std::wstring strValue2 = Value.c_str();
 
        if (bCurrencyPrepend)
                strValue2 = wstrCurrency + strValue2;
        else
                strValue2 = strValue2 + wstrCurrency;
-       
-       
-       
+
+
+
        /////////////////////////////////////////////////////////////////////////
        //for processing negative style
-       if (bNagative)
+       if (bNegative)
        {
                if (iNegStyle == 0)
                {
@@ -1204,9 +1202,9 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete
                                arColor.SetElement(1,vColElm);
                                vColElm = 0;
                                arColor.SetElement(2,vColElm);
-                               
+
                                arColor.SetElement(3,vColElm);
-                               
+
                                CJS_PropValue vProp(isolate);
                                vProp.StartGetting();
                                vProp<<arColor;
@@ -1229,11 +1227,11 @@ FX_BOOL CJS_PublicMethods::AFNumber_Format(IFXJS_Context* cc, const CJS_Paramete
                                arColor.SetElement(1,vColElm);
                                arColor.SetElement(2,vColElm);
                                arColor.SetElement(3,vColElm);
-                               
+
                                CJS_PropValue vProp(isolate);
                                vProp.StartGetting();
                                fTarget->textColor(cc,vProp,sError);
-                               
+
                                CJS_Array aProp(isolate);
                                vProp.ConvertToArray(aProp);
 
@@ -1265,41 +1263,40 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Param
        ASSERT(pContext != NULL);
        CJS_EventHandler* pEvent = pContext->GetEventHandler();
        ASSERT(pEvent != NULL);
-       
+
        if(params.size() < 2)
                return FALSE;
        int iSepStyle = params[1].ToInt();
-       
+
        if (iSepStyle < 0 || iSepStyle > 3)
                iSepStyle = 0;
        if(!pEvent->m_pValue)
                return FALSE;
-       CFX_WideString & val = pEvent->Value(); 
+       CFX_WideString & val = pEvent->Value();
        CFX_WideString & w_strChange = pEvent->Change();
     CFX_WideString w_strValue = val;
 
        if (pEvent->WillCommit())
        {
                CFX_WideString wstrChange = w_strChange;
-               CFX_WideString wstrValue = StrLTrim(w_strValue);
+               CFX_WideString wstrValue = StrLTrim(w_strValue.c_str());
                if (wstrValue.IsEmpty())
                        return TRUE;
-               
+
                CFX_WideString swTemp = wstrValue;
                swTemp.Replace(L",", L".");
-               if (!IsNumber(swTemp)) //!(IsNumber(wstrChange) && 
+               if (!IsNumber(swTemp.c_str()))
                {
                        pEvent->Rc() = FALSE;
                        sError = JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE);
-                       Alert(pContext, sError);
+                       Alert(pContext, sError.c_str());
                        return TRUE;
                }
                return TRUE; // it happens after the last keystroke and before validating,
        }
-       
-       std::wstring w_strValue2 (w_strValue);
-       std::wstring w_strChange2(w_strChange);
-       
+
+       std::wstring w_strValue2 = w_strValue.c_str();
+       std::wstring w_strChange2 = w_strChange.c_str();
        std::wstring w_strSelected;
        if(-1 != pEvent->SelStart())
                w_strSelected = w_strValue2.substr(pEvent->SelStart(),(pEvent->SelEnd() - pEvent->SelStart()));
@@ -1328,7 +1325,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Param
                cSep = L',';
                break;
        }
-       
+
        FX_BOOL bHasSep = (w_strValue2.find(cSep) != -1);
        for (std::wstring::iterator it = w_strChange2.begin(); it != w_strChange2.end(); it++)
        {
@@ -1369,16 +1366,16 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Param
                        bHasSign = TRUE;
                        continue;
                }
-               
+
                if (!IsDigit(*it))
-               {                       
+               {
                        FX_BOOL &bRc = pEvent->Rc();
                        bRc = FALSE;
                        return TRUE;
                }
        }
-       
-       
+
+
        std::wstring w_prefix = w_strValue2.substr(0,pEvent->SelStart());
        std::wstring w_postfix;
        if (pEvent->SelEnd()<(int)w_strValue2.length())
@@ -1386,8 +1383,8 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(IFXJS_Context* cc, const CJS_Param
        w_strValue2 = w_prefix + w_strChange2 + w_postfix;
        w_strValue = w_strValue2.c_str();
        val = w_strValue;
-       return TRUE;            
-       
+       return TRUE;
+
 }
 
 //function AFPercent_Format(nDec, sepStyle)
@@ -1428,12 +1425,12 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Paramet
                dValue += DOUBLE_CORRECT;//УÕý
 
        int iDec2;
-       FX_BOOL bNagative = FALSE;
-       strValue = fcvt(dValue,iDec,&iDec2,&bNagative);
+       FX_BOOL bNegative = FALSE;
+       strValue = fcvt(dValue,iDec,&iDec2,&bNegative);
     if (strValue.IsEmpty())
        {
                dValue = 0;
-               strValue = fcvt(dValue,iDec,&iDec2,&bNagative);
+               strValue = fcvt(dValue,iDec,&iDec2,&bNegative);
        }
 
        if (iDec2 < 0)
@@ -1443,7 +1440,7 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Paramet
                        strValue = "0" + strValue;
                }
                iDec2 = 0;
-               
+
        }
        int iMax = strValue.GetLength();
        if (iDec2 > iMax)
@@ -1452,7 +1449,7 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Paramet
                {
                        strValue += "0";
                }
-               iMax = iDec2+1;                 
+               iMax = iDec2+1;
        }
        ///////////////////////////////////////////////////////
     //for processing seperator style
@@ -1468,7 +1465,7 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Paramet
                        strValue.Insert(iDec2, ',');
                        iMax++;
                }
-               
+
                if (iDec2 == 0)
                        strValue.Insert(iDec2, '0');
        }
@@ -1479,11 +1476,10 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Paramet
                        cSeperator = ',';
                else
                        cSeperator = '.';
-               
-               int iDecPositive,iDecNagative;
+
+               int iDecPositive;
                iDecPositive = iDec2;
-               iDecNagative = iDec2;
-                       
+
                for (iDecPositive = iDec2 -3; iDecPositive > 0; iDecPositive -= 3)
                {
                        strValue.Insert(iDecPositive,cSeperator);
@@ -1491,8 +1487,8 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(IFXJS_Context* cc, const CJS_Paramet
                }
        }
        ////////////////////////////////////////////////////////////////////
-       //nagative mark
-       if(bNagative)
+       //negative mark
+       if(bNegative)
                strValue = "-" + strValue;
        strValue += "%";
        Value = CFX_WideString::FromLocal(strValue);
@@ -1544,8 +1540,8 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IFXJS_Context* cc, const CJS_Paramete
        if (JS_PortIsNan(dDate))
        {
                CFX_WideString swMsg;
-               swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
-               Alert(pContext, swMsg);
+               swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), sFormat.c_str());
+               Alert(pContext, swMsg.c_str());
                return FALSE;
        }
 
@@ -1571,7 +1567,7 @@ double CJS_PublicMethods::MakeInterDate(CFX_WideString strValue)
        {
                FX_WCHAR c = strValue.GetAt(i);
                if(c == L' ' || c == L':')
-               {       
+               {
                        wsArray.Add(sTemp);
                        sTemp = L"";
                        continue;
@@ -1579,7 +1575,7 @@ double CJS_PublicMethods::MakeInterDate(CFX_WideString strValue)
 
                sTemp += c;
        }
-       
+
        wsArray.Add(sTemp);
        if(wsArray.GetSize() != 8)return 0;
 
@@ -1597,19 +1593,19 @@ double CJS_PublicMethods::MakeInterDate(CFX_WideString strValue)
        if(sTemp.Compare(L"Nov") == 0) nMonth = 11;
        if(sTemp.Compare(L"Dec") == 0) nMonth = 12;
 
-       nDay = (int)ParseStringToNumber(wsArray[2]);
-       nHour = (int)ParseStringToNumber(wsArray[3]);
-       nMin = (int)ParseStringToNumber(wsArray[4]);
-       nSec = (int)ParseStringToNumber(wsArray[5]);
-       nYear = (int)ParseStringToNumber(wsArray[7]);
+       nDay = (int)ParseStringToNumber(wsArray[2].c_str());
+       nHour = (int)ParseStringToNumber(wsArray[3].c_str());
+       nMin = (int)ParseStringToNumber(wsArray[4].c_str());
+       nSec = (int)ParseStringToNumber(wsArray[5].c_str());
+       nYear = (int)ParseStringToNumber(wsArray[7].c_str());
 
        double dRet = JS_MakeDate(JS_MakeDay(nYear,nMonth - 1,nDay),JS_MakeTime(nHour, nMin, nSec, 0));
 
        if (JS_PortIsNan(dRet))
        {
-               dRet = JS_DateParse(strValue);
+               dRet = JS_DateParse(strValue.c_str());
        }
-       
+
        return dRet;
 }
 
@@ -1641,8 +1637,8 @@ FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(IFXJS_Context* cc, const CJS_Param
                if (bWrongFormat || JS_PortIsNan(dRet))
                {
                        CFX_WideString swMsg;
-                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
-                       Alert(pContext, swMsg);
+                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), sFormat.c_str());
+                       Alert(pContext, swMsg.c_str());
                        pEvent->Rc() = FALSE;
                        return TRUE;
                }
@@ -1795,24 +1791,24 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Format(IFXJS_Context* cc, const CJS_Paramet
 
        if(!pEvent->m_pValue)
                return FALSE;
-       CFX_WideString& Value = pEvent->Value();        
+       CFX_WideString& Value = pEvent->Value();
        std::string strSrc = CFX_ByteString::FromUnicode(Value).c_str();
-       
-       switch (iIndex) 
+
+       switch (iIndex)
        {
-       case 0:                         
+       case 0:
                cFormat = "99999";
                break;
-       case 1:                         
+       case 1:
                cFormat = "99999-9999";
                break;
-       case 2:                         
+       case 2:
                {
                        std::string NumberStr;
-                       util::printx("9999999999", strSrc,NumberStr); 
+                       util::printx("9999999999", strSrc,NumberStr);
                        if (NumberStr.length() >= 10 )
                                cFormat = "(999) 999-9999";
-                       else 
+                       else
                                cFormat = "999-9999";
                        break;
                }
@@ -1820,7 +1816,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Format(IFXJS_Context* cc, const CJS_Paramet
                cFormat = "999-99-9999";
                break;
        }
-       
+
        std::string strDes;
        util::printx(cFormat,strSrc,strDes);
        Value = CFX_WideString::FromLocal(strDes.c_str());
@@ -1851,7 +1847,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa
        if (wstrMask.IsEmpty())
                return TRUE;
 
-       std::wstring wstrValue(valEvent);
+       std::wstring wstrValue = valEvent.c_str();
 
        if (pEvent->WillCommit())
        {
@@ -1868,14 +1864,14 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa
 
                if (iIndexMask != wstrMask.GetLength() || (iIndexMask != wstrValue.size() && wstrMask.GetLength() != 0))
                {
-                       Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE));
+                       Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSAFNUMBER_KEYSTROKE).c_str());
                        pEvent->Rc() = FALSE;
                }
                return TRUE;
        }
 
        CFX_WideString &wideChange = pEvent->Change();
-       std::wstring wChange(wideChange);
+       std::wstring wChange = wideChange.c_str();
        if (wChange.empty())
                return TRUE;
 
@@ -1883,14 +1879,14 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa
 
        if (wstrValue.length() - (pEvent->SelEnd()-pEvent->SelStart()) + wChange.length() > (FX_DWORD)wstrMask.GetLength())
        {
-               Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG));
+               Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
                pEvent->Rc() = FALSE;
                return TRUE;
        }
 
        if (iIndexMask >= wstrMask.GetLength() && (!wChange.empty()))
        {
-               Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG));
+               Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
                pEvent->Rc() = FALSE;
                return TRUE;
        }
@@ -1899,7 +1895,7 @@ FX_BOOL CJS_PublicMethods::AFSpecial_KeystrokeEx(IFXJS_Context* cc, const CJS_Pa
        {
                if (iIndexMask >= wstrMask.GetLength())
                {
-                       Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG));
+                       Alert(pContext, JSGetStringFromID(pContext, IDS_STRING_JSPARAM_TOOLONG).c_str());
                        pEvent->Rc() = FALSE;
                        return TRUE;
                }
@@ -1946,25 +1942,25 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IFXJS_Context* cc, const CJS_Para
        //CJS_Value val = pEvent->Value();
        CFX_WideString& val = pEvent->Value();
        std::string strSrc = CFX_ByteString::FromUnicode(val).c_str();
-       std::wstring wstrChange(pEvent->Change());
-       
-       switch (iIndex) 
+       std::wstring wstrChange = pEvent->Change().c_str();
+
+       switch (iIndex)
        {
-       case 0:                         
+       case 0:
                cFormat = "99999";
                break;
-       case 1:                         
+       case 1:
                //cFormat = "99999-9999";
                cFormat = "999999999";
                break;
-       case 2:                         
+       case 2:
                {
                        std::string NumberStr;
-                       util::printx("9999999999", strSrc,NumberStr); 
+                       util::printx("9999999999", strSrc,NumberStr);
                        if (strSrc.length() + wstrChange.length() > 7 )
                                //cFormat = "(999) 999-9999";
                                cFormat = "9999999999";
-                       else 
+                       else
                                //cFormat = "999-9999";
                                cFormat = "9999999";
                        break;
@@ -1974,11 +1970,11 @@ FX_BOOL CJS_PublicMethods::AFSpecial_Keystroke(IFXJS_Context* cc, const CJS_Para
                cFormat = "999999999";
                break;
        }
-    
+
        CJS_Parameters params2;
        CJS_Value vMask(isolate, cFormat.c_str());
        params2.push_back(vMask);
-       
+
     return AFSpecial_KeystrokeEx(cc,params2,vRet,sError);
 }
 
@@ -2001,7 +1997,7 @@ FX_BOOL CJS_PublicMethods::AFMergeChange(IFXJS_Context* cc, const CJS_Parameters
 
        if (pEventHandler->WillCommit())
        {
-               vRet = swValue;
+               vRet = swValue.c_str();
                return TRUE;
        }
 
@@ -2017,7 +2013,7 @@ FX_BOOL CJS_PublicMethods::AFMergeChange(IFXJS_Context* cc, const CJS_Parameters
                postfix = swValue.Mid(pEventHandler->SelEnd(), swValue.GetLength() - pEventHandler->SelEnd());
        else postfix = L"";
 
-       vRet = prefix + pEventHandler->Change() + postfix;
+       vRet = (prefix + pEventHandler->Change() + postfix).c_str();
 
        return TRUE;
 }
@@ -2042,8 +2038,8 @@ FX_BOOL CJS_PublicMethods::AFParseDateEx(IFXJS_Context* cc, const CJS_Parameters
        if (JS_PortIsNan(dDate))
        {
                CFX_WideString swMsg;
-               swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE), sFormat.c_str());
-               Alert((CJS_Context *)cc, swMsg);
+               swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(), sFormat.c_str());
+               Alert((CJS_Context *)cc, swMsg.c_str());
                return FALSE;
        }
 
@@ -2062,7 +2058,7 @@ FX_BOOL CJS_PublicMethods::AFSimple(IFXJS_Context* cc, const CJS_Parameters& par
                return FALSE;
        }
 
-       vRet = (double)AF_Simple(params[0].ToCFXWideString(), params[1].ToDouble(), params[2].ToDouble());
+       vRet = (double)AF_Simple(params[0].ToCFXWideString().c_str(), params[1].ToDouble(), params[2].ToDouble());
        return TRUE;
 }
 
@@ -2076,7 +2072,7 @@ FX_BOOL CJS_PublicMethods::AFMakeNumber(IFXJS_Context* cc, const CJS_Parameters&
                sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
                return FALSE;
        }
-       vRet = ParseStringToNumber(params[0].ToCFXWideString());
+       vRet = ParseStringToNumber(params[0].ToCFXWideString().c_str());
        return TRUE;
 }
 
@@ -2112,7 +2108,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param
 
        double dValue;
        CFX_WideString sFunction = params[0].ToCFXWideString();
-       if (wcscmp(sFunction, L"PRD") == 0)
+       if (wcscmp(sFunction.c_str(), L"PRD") == 0)
        dValue = 1.0;
        else
                dValue = 0.0;
@@ -2138,7 +2134,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param
                                case FIELDTYPE_TEXTFIELD:
                                case FIELDTYPE_COMBOBOX:
                                        {
-                                               dTemp = ParseStringToNumber(pFormField->GetValue());
+                                               dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
                                                break;
                                        }
                                case FIELDTYPE_PUSHBUTTON:
@@ -2156,7 +2152,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param
                                                        {
                                                                if (pFormCtrl->IsChecked())
                                                                {
-                                                                       dTemp += ParseStringToNumber(pFormCtrl->GetExportValue());
+                                                                       dTemp += ParseStringToNumber(pFormCtrl->GetExportValue().c_str());
                                                                        break;
                                                                }
                                                                else
@@ -2172,7 +2168,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param
                                                        break;
                                                else
                                                {
-                                                       dTemp = ParseStringToNumber(pFormField->GetValue());
+                                                       dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
                                                        break;
                                                }
                                        }
@@ -2180,17 +2176,17 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param
                                        break;
                                }
 
-                               if (i == 0 && j == 0 && (wcscmp(sFunction,L"MIN") == 0 || wcscmp(sFunction, L"MAX") == 0))
+                               if (i == 0 && j == 0 && (wcscmp(sFunction.c_str(), L"MIN") == 0 || wcscmp(sFunction.c_str(), L"MAX") == 0))
                                        dValue = dTemp;
 
-                               dValue = AF_Simple(sFunction, dValue, dTemp);
+                               dValue = AF_Simple(sFunction.c_str(), dValue, dTemp);
 
                                nFieldsCount++;
                        }
                }
        }
 
-       if (wcscmp(sFunction, L"AVG") == 0 && nFieldsCount > 0)
+       if (wcscmp(sFunction.c_str(), L"AVG") == 0 && nFieldsCount > 0)
                dValue /= nFieldsCount;
 
        dValue = (double)floor(dValue * FXSYS_pow((double)10,(double)6) + 0.49) / FXSYS_pow((double)10,(double)6);
@@ -2201,7 +2197,7 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(IFXJS_Context* cc, const CJS_Param
        return TRUE;
 }
 
-/* This function validates the current event to ensure that its value is 
+/* This function validates the current event to ensure that its value is
 ** within the specified range. */
 
 FX_BOOL CJS_PublicMethods::AFRange_Validate(IFXJS_Context* cc, const CJS_Parameters& params, CJS_Value& vRet, CFX_WideString& sError)
@@ -2211,7 +2207,7 @@ FX_BOOL CJS_PublicMethods::AFRange_Validate(IFXJS_Context* cc, const CJS_Paramet
        CJS_EventHandler* pEvent = pContext->GetEventHandler();
        ASSERT(pEvent != NULL);
 
-       if (params.size() != 4) 
+       if (params.size() != 4)
        {
                sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
                return FALSE;
@@ -2231,26 +2227,26 @@ FX_BOOL CJS_PublicMethods::AFRange_Validate(IFXJS_Context* cc, const CJS_Paramet
        if (bGreaterThan && bLessThan)
        {
                if (dEentValue < dGreaterThan || dEentValue > dLessThan)
-                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1),
+                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE1).c_str(),
                                                 params[1].ToCFXWideString().c_str(),
                                                 params[3].ToCFXWideString().c_str());
        }
        else if (bGreaterThan)
        {
                if (dEentValue < dGreaterThan)
-                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2),
+                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE2).c_str(),
                                                 params[1].ToCFXWideString().c_str());
        }
        else if (bLessThan)
        {
                if (dEentValue > dLessThan)
-                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3),
+                       swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSRANGE3).c_str(),
                                                 params[3].ToCFXWideString().c_str());
        }
 
        if (!swMsg.IsEmpty())
        {
-               Alert(pContext, swMsg);
+               Alert(pContext, swMsg.c_str());
                pEvent->Rc() = FALSE;
        }
        return TRUE;
@@ -2262,7 +2258,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IFXJS_Context* cc, const CJS_Parameters
        CJS_Context* pContext = (CJS_Context*)cc;
        ASSERT(pContext != NULL);
 
-       if (params.size() != 1) 
+       if (params.size() != 1)
        {
                sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
                return FALSE;
@@ -2297,7 +2293,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IFXJS_Context* cc, const CJS_Parameters
 
        if (sPart.GetLength() > 0)
        {
-               nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));       
+               nums.SetElement(nIndex,CJS_Value(isolate,sPart.c_str()));
        }
 
        if (nums.GetLength() > 0)