// 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/resource.h"

CFX_WideString JSGetStringFromID(CJS_Context* pContext, FX_UINT id)
{
    switch (id)
    {
    case IDS_STRING_JSALERT:
        return L"Alert";
    case IDS_STRING_JSPARAMERROR:
        return L"Incorrect number of parameters passed to function.";
    case IDS_STRING_JSAFNUMBER_KEYSTROKE:
        return L"The input value is invalid.";
    case IDS_STRING_JSPARAM_TOOLONG:
        return L"The input value is too long.";
    case IDS_STRING_JSPARSEDATE:
        return L"The input value can't be parsed as a valid date/time (%s).";
    case IDS_STRING_JSRANGE1:
        return L"The input value must be greater than or equal to %s"
               L" and less than or equal to %s.";
    case IDS_STRING_JSRANGE2:
        return L"The input value must be greater than or equal to %s.";
    case IDS_STRING_JSRANGE3:
        return L"The input value must be less than or equal to %s.";
    case IDS_STRING_NOTSUPPORT:
        return L"Operation not supported.";
    case IDS_STRING_JSBUSY:
        return L"System is busy.";
    case IDS_STRING_JSEVENT:
        return L"Duplicate formfield event found.";
    case IDS_STRING_RUN:
        return L"Script ran successfully.";
    case IDS_STRING_JSPRINT1:
        return L"The second parameter can't be converted to a Date.";
    case IDS_STRING_JSPRINT2:
        return L"The second parameter is an invalid Date!";
    case IDS_STRING_JSNOGLOBAL:
        return L"Global value not found.";
    case IDS_STRING_JSREADONLY:
        return L"Cannot assign to readonly property.";
    case IDS_STRING_JSTYPEERROR:
        return L"Incorrect parameter type.";
    case IDS_STRING_JSVALUEERROR:
        return L"Incorrect parameter value.";
    default:
        return L"";
    }
}

CFX_WideString JSFormatErrorString(const char* class_name,
                                   const char* property_name,
                                   const CFX_WideString& details) {
    CFX_WideString result = CFX_WideString::FromLocal(class_name);
    if (property_name) {
        result += L".";
        result += CFX_WideString::FromLocal(property_name);
    }
    result += L": ";
    result += details;
    return result;
}