jscript: Added JSGlobal typelib.
diff --git a/.gitignore b/.gitignore
index 56e6721..0f2152c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,6 +36,7 @@
 dlls/display.drv16
 dlls/gdi.exe16
 dlls/imm.dll16
+dlls/jscript/jsglobal.tlb
 dlls/kernel32/nls/winerr_deu.mc.rc
 dlls/kernel32/nls/winerr_enu.mc.rc
 dlls/kernel32/nls/winerr_fra.mc.rc
diff --git a/dlls/jscript/Makefile.in b/dlls/jscript/Makefile.in
index 04cc952..ecf6ffe 100644
--- a/dlls/jscript/Makefile.in
+++ b/dlls/jscript/Makefile.in
@@ -11,6 +11,8 @@
 	jscript.c \
 	jscript_main.c
 
+IDL_TLB_SRCS = jsglobal.idl
+
 @MAKE_DLL_RULES@
 
 @DEPENDENCIES@  # everything below this line is overwritten by make depend
diff --git a/dlls/jscript/jsglobal.idl b/dlls/jscript/jsglobal.idl
new file mode 100644
index 0000000..bd91a60
--- /dev/null
+++ b/dlls/jscript/jsglobal.idl
@@ -0,0 +1,1051 @@
+/*
+ * Copyright 2008 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "jsglobal_dispid.h"
+
+import "oaidl.idl";
+
+[
+    uuid(3eef9759-35fc-11d1-8ce4-00c04fc2b085),
+    version(1.0),
+]
+library JSGlobal
+{
+    importlib("stdole2.tlb");
+
+    interface StringInstance;
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00C04fc2b086)
+    ]
+    dispinterface GlobalObj {
+    properties:
+        [id(DISPID_GLOBAL_NAN), readonly]
+        VARIANT NaN;
+
+        [id(DISPID_GLOBAL_INFINITY), readonly]
+        VARIANT Infinity;
+
+    methods:
+        [id(DISPID_GLOBAL_ARRAY)]
+        VARIANT Array();
+
+        [id(DISPID_GLOBAL_BOOLEAN)]
+        VARIANT Boolean();
+
+        [id(DISPID_GLOBAL_DATE)]
+        VARIANT Date();
+
+        [id(DISPID_GLOBAL_FUNCTION)]
+        VARIANT Function();
+
+        [id(DISPID_GLOBAL_NUMBER)]
+        VARIANT Number();
+
+        [id(DISPID_GLOBAL_OBJECT)]
+        VARIANT Object();
+
+        [id(DISPID_GLOBAL_STRING)]
+        VARIANT String();
+
+        [id(DISPID_GLOBAL_REGEXP)]
+        VARIANT RegExp();
+
+        [id(DISPID_GLOBAL_ACTIVEXOBJ)]
+        VARIANT ActiveXObject();
+
+        [id(DISPID_GLOBAL_VBARRAY)]
+        VARIANT VBArray();
+
+        [id(DISPID_GLOBAL_ENUMERATOR)]
+        VARIANT Enumerator();
+
+        [id(DISPID_GLOBAL_ESCAPE)]
+        VARIANT escape(VARIANT String);
+
+        [id(DISPID_GLOBAL_EVAL)]
+        VARIANT eval(VARIANT x);
+
+        [id(DISPID_GLOBAL_ISNAN)]
+        VARIANT isNaN(VARIANT Number);
+
+        [id(DISPID_GLOBAL_ISFINITE)]
+        VARIANT isFinite(VARIANT Number);
+
+        [id(DISPID_GLOBAL_PARSEINT)]
+        VARIANT parseInt(
+                VARIANT String,
+                VARIANT radix);
+
+        [id(DISPID_GLOBAL_PARSEFLOAT)]
+        VARIANT parseFloat(VARIANT String);
+
+        [id(DISPID_GLOBAL_UNESCAPE)]
+        VARIANT unescape(VARIANT String);
+
+        [id(DISPID_GLOBAL_GETOBJECT)]
+        VARIANT GetObject(
+                [optional] VARIANT path,
+                [optional] VARIANT classname);
+
+        [id(DISPID_GLOBAL_SCRIPTENGINE)]
+        VARIANT ScriptEngine();
+
+        [id(DISPID_GLOBAL_MAJORVER)]
+        VARIANT ScriptEngineMajorVersion();
+
+        [id(DISPID_GLOBAL_MINORVER)]
+        VARIANT ScriptEngineMinorVersion();
+
+        [id(DISPID_GLOBAL_BUILDVER)]
+        VARIANT ScriptEngineBuildVersion();
+
+        [id(DISPID_GLOBAL_COLLECT)]
+        VARIANT CollectGarbage();
+
+        [id(DISPID_GLOBAL_MATH)]
+        VARIANT Math();
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b087)
+    ]
+    dispinterface DateObj {
+    properties:
+    methods:
+        [id(DISPID_DATEOBJ_PARSE)]
+        VARIANT parse(VARIANT String);
+
+        [id(DISPID_DATEOBJ_UTC)]
+        VARIANT UTC(
+                VARIANT year,
+                [optional] VARIANT month,
+                [optional] VARIANT Date,
+                [optional] VARIANT hours,
+                [optional] VARIANT minutes,
+                [optional] VARIANT seconds,
+                [optional] VARIANT ms);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00C04fc2b088)
+    ]
+    dispinterface MathObj {
+    properties:
+        [id(DISPID_MATHOBJ_E), readonly]
+        VARIANT E;
+
+        [id(DISPID_MATHOBJ_LOG2E), readonly]
+        VARIANT LOG2E;
+
+        [id(DISPID_MATHOBJ_LOG10E), readonly]
+        VARIANT LOG10E;
+
+        [id(DISPID_MATHOBJ_LN2), readonly]
+        VARIANT LN2;
+
+        [id(DISPID_MATHOBJ_LN10), readonly]
+        VARIANT LN10;
+
+        [id(DISPID_MATHOBJ_PI), readonly]
+        VARIANT PI;
+
+        [id(DISPID_MATHOBJ_SQRT2), readonly]
+        VARIANT SQRT2;
+
+        [id(DISPID_MATHOBJ_SQRT1_2), readonly]
+        VARIANT SQRT1_2;
+
+    methods:
+        [id(DISPID_MATHOBJ_ABS)]
+        VARIANT abs(VARIANT x);
+
+        [id(DISPID_MATHOBJ_ACOS)]
+        VARIANT acos(VARIANT x);
+
+        [id(DISPID_MATHOBJ_ASIN)]
+        VARIANT asin(VARIANT x);
+
+        [id(DISPID_MATHOBJ_ATAN)]
+        VARIANT atan(VARIANT x);
+
+        [id(DISPID_MATHOBJ_ATAN2)]
+        VARIANT atan2(VARIANT x, VARIANT y);
+
+        [id(DISPID_MATHOBJ_CEIL)]
+        VARIANT ceil(VARIANT x);
+
+        [id(DISPID_MATHOBJ_COS)]
+        VARIANT cos(VARIANT x);
+
+        [id(DISPID_MATHOBJ_EXP)]
+        VARIANT exp(VARIANT x);
+
+        [id(DISPID_MATHOBJ_FLOOR)]
+        VARIANT floor(VARIANT x);
+
+        [id(DISPID_MATHOBJ_LOG)]
+        VARIANT log(VARIANT x);
+
+        [id(DISPID_MATHOBJ_MAX)]
+        VARIANT max(VARIANT x, VARIANT y);
+
+        [id(DISPID_MATHOBJ_MIN)]
+        VARIANT min(VARIANT x, VARIANT y);
+
+        [id(DISPID_MATHOBJ_POW)]
+        VARIANT pow(VARIANT x, VARIANT y);
+
+        [id(DISPID_MATHOBJ_RANDOM)]
+        VARIANT random();
+
+        [id(DISPID_MATHOBJ_ROUND)]
+        VARIANT round(VARIANT x);
+
+        [id(DISPID_MATHOBJ_SIN)]
+        VARIANT sin(VARIANT x);
+
+        [id(DISPID_MATHOBJ_SQRT)]
+        VARIANT sqrt(VARIANT x);
+
+        [id(DISPID_MATHOBJ_TAN)]
+        VARIANT tan(VARIANT x);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b089)
+    ]
+    dispinterface NumberObj {
+    properties:
+        [id(DISPID_NUMBEROBJ_MAX_VALUE), readonly]
+        VARIANT MAX_VALUE;
+
+        [id(DISPID_NUMBEROBJ_MIN_VALUE), readonly]
+        VARIANT MIN_VALUE;
+
+        [id(DISPID_NUMBEROBJ_NAN), readonly]
+        VARIANT NaN;
+
+        [id(DISPID_NUMBEROBJ_NEGATIVE_INFINITY), readonly]
+        VARIANT NEGATIVE_INFINITY;
+
+        [id(DISPID_NUMBEROBJ_POSITIVE_INFINITY), readonly]
+        VARIANT POSITIVE_INFINITY;
+
+    methods:
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b090)
+    ]
+    dispinterface RegExpObj {
+    properties:
+        [id(DISPID_REGEXPOBJ_INDEX), readonly]
+        VARIANT index;
+
+        [id(DISPID_REGEXPOBJ_INPUT), readonly]
+        VARIANT input;
+
+        [id(DISPID_REGEXPOBJ_LASTINDEX), readonly]
+        VARIANT lastIndex;
+
+    methods:
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b091)
+    ]
+    dispinterface StringObj {
+    properties:
+    methods:
+        [id(DISPID_STRINGOBJ_FROMCHARCODE)]
+        VARIANT fromCharCode(VARIANT char0);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b092)
+    ]
+    dispinterface ArrayInstance {
+    properties:
+        [id(DISPID_ARRAY_LENGTH)]
+        VARIANT length;
+
+    methods:
+        [id(DISPID_ARRAY_CONCAT)]
+        ArrayInstance *concat(VARIANT Array);
+
+        [id(DISPID_ARRAY_JOIN)]
+        StringInstance *join(VARIANT separator);
+
+        [id(DISPID_ARRAY_POP)]
+        VARIANT pop();
+
+        [id(DISPID_ARRAY_PUSH)]
+        VARIANT push(VARIANT value);
+
+        [id(DISPID_ARRAY_REVERSE)]
+        ArrayInstance *reverse();
+
+        [id(DISPID_ARRAY_SHIFT)]
+        VARIANT shift();
+
+        [id(DISPID_ARRAY_SLICE)]
+        ArrayInstance *slice(
+                VARIANT start,
+                VARIANT end);
+
+        [id(DISPID_ARRAY_SORT)]
+        ArrayInstance *sort(VARIANT sortfunction);
+
+        [id(DISPID_ARRAY_SPLICE)]
+        ArrayInstance *splice(
+                VARIANT start,
+                VARIANT deletecount);
+
+        [id(DISPID_ARRAY_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ARRAY_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ARRAY_VALUEOF)]
+        ArrayInstance *valueOf();
+
+        [id(DISPID_ARRAY_UNSHIFT)]
+        VARIANT unshift(VARIANT value);
+
+        [id(DISPID_ARRAY_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ARRAY_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ARRAY_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b093)
+    ]
+    dispinterface FunctionInstance {
+    properties:
+        [id(DISPID_FUNCTION_LENGTH)]
+        VARIANT length;
+    methods:
+        [id(DISPID_FUNCTION_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_FUNCTION_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_FUNCTION_VALUEOF)]
+        FunctionInstance *valueOf();
+
+        [id(DISPID_FUNCTION_APPLY)]
+        VARIANT apply(
+                VARIANT thisValue,
+                VARIANT argArray);
+
+        [id(DISPID_FUNCTION_CALL)]
+        VARIANT call(VARIANT thisValue);
+
+        [id(DISPID_FUNCTION_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_FUNCTION_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_FUNCTION_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b094)
+    ]
+    dispinterface StringInstance {
+    properties:
+        [id(DISPID_STRING_LENGTH)]
+        VARIANT length;
+    methods:
+        [id(DISPID_STRING_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_STRING_VALUEOF)]
+        StringInstance *valueOf();
+
+        [id(DISPID_STRING_ANCHOR)]
+        StringInstance *anchor(VARIANT anchorString);
+
+        [id(DISPID_STRING_BIG)]
+        StringInstance *big();
+
+        [id(DISPID_STRING_BLINK)]
+        StringInstance *blink();
+
+        [id(DISPID_STRING_BOLD)]
+        StringInstance *bold();
+
+        [id(DISPID_STRING_CHARAT)]
+        StringInstance *charAt(VARIANT index);
+
+        [id(DISPID_STRING_CHARCODEAT)]
+        VARIANT charCodeAt(VARIANT index);
+
+        [id(DISPID_STRING_CONCAT)]
+        StringInstance *concat(VARIANT String);
+
+        [id(DISPID_STRING_FIXED)]
+        StringInstance *fixed();
+
+        [id(DISPID_STRING_FONTCOLOR)]
+        StringInstance *fontcolor(VARIANT colorval);
+
+        [id(DISPID_STRING_FONTSIZE)]
+        StringInstance *fontsize(VARIANT size);
+
+        [id(DISPID_STRING_INDEXOF)]
+        VARIANT indexOf(
+                VARIANT substring,
+                VARIANT startindex);
+
+        [id(DISPID_STRING_ITALICS)]
+        StringInstance *italics();
+
+        [id(DISPID_STRING_LASTINDEXOF)]
+        VARIANT lastIndexOf(
+                VARIANT substring,
+                VARIANT startindex);
+
+        [id(DISPID_STRING_LINK)]
+        StringInstance *link(VARIANT linkstring);
+
+        [id(DISPID_STRING_MATCH)]
+        VARIANT match(VARIANT RegExp);
+
+        [id(DISPID_STRING_REPLACE)]
+        StringInstance *replace(
+                VARIANT RegExp,
+                VARIANT replacetext);
+
+        [id(DISPID_STRING_SEARCH)]
+        VARIANT search(VARIANT RegExp);
+
+        [id(DISPID_STRING_SLICE)]
+        StringInstance *slice(
+                VARIANT start,
+                VARIANT end);
+
+        [id(DISPID_STRING_SMALL)]
+        StringInstance *_small(); /* FIXME */
+
+        [id(DISPID_STRING_SPLIT)]
+        ArrayInstance *split(VARIANT RegExp);
+
+        [id(DISPID_STRING_STRIKE)]
+        StringInstance *strike();
+
+        [id(DISPID_STRING_SUB)]
+        StringInstance *sub();
+
+        [id(DISPID_STRING_SUBSTRING)]
+        StringInstance *substring(
+                VARIANT start,
+                VARIANT end);
+
+        [id(DISPID_STRING_SUBSTR)]
+        StringInstance *substr(
+                VARIANT start,
+                VARIANT length);
+
+        [id(DISPID_STRING_SUP)]
+        StringInstance *sup();
+
+        [id(DISPID_STRING_TOLOWERCASE)]
+        StringInstance *toLowerCase();
+
+        [id(DISPID_STRING_TOUPPERCASE)]
+        StringInstance *toUpperCase();
+
+        [id(DISPID_STRING_TOLOCLOWERCASE)]
+        StringInstance *toLocaleLowerCase();
+
+        [id(DISPID_STRING_TOLOCUPPERCASE)]
+        StringInstance *toLocaleUpperCase();
+
+        [id(DISPID_STRING_LOCCOMPARE)]
+        VARIANT localeCompare(VARIANT that);
+
+        [id(DISPID_STRING_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_STRING_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_STRING_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b095)
+    ]
+    dispinterface BoolInstance {
+    properties:
+    methods:
+        [id(DISPID_BOOL_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_BOOL_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_BOOL_VALUEOF)]
+        VARIANT valueOf();
+
+        [id(DISPID_BOOL_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_BOOL_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_BOOL_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00C04fc2b096)
+    ]
+    dispinterface NumberInstance {
+    properties:
+    methods:
+        [id(DISPID_NUMBER_TOSTRING)]
+        StringInstance *toString(VARIANT radix);
+
+        [id(DISPID_NUMBER_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_NUMBER_TOFIXED)]
+        StringInstance *toFixed(VARIANT fractionDigits);
+
+        [id(DISPID_NUMBER_TOEXPONENTIAL)]
+        StringInstance *toExponential(VARIANT fractionDigits);
+
+        [id(DISPID_NUMBER_TOPRECISION)]
+        StringInstance *toPrecision(VARIANT precision);
+
+        [id(DISPID_NUMBER_VALUEOF)]
+        VARIANT valueOf();
+
+        [id(DISPID_NUMBER_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_NUMBER_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_NUMBER_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b097)
+    ]
+    dispinterface ObjectInstance {
+    properties:
+    methods:
+        [id(DISPID_OBJECT_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_OBJECT_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_OBJECT_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_OBJECT_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_OBJECT_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+
+        [id(DISPID_OBJECT_VALUEOF)]
+        ObjectInstance *valueOf();
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00C04fc2b098)
+    ]
+    dispinterface DateInstance {
+    properties:
+    methods:
+        [id(DISPID_DATE_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_DATE_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_DATE_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_DATE_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_DATE_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+
+        [id(DISPID_DATE_VALUEOF)]
+        DateInstance *valueOf();
+
+        [id(DISPID_DATE_TOUTCSTRING)]
+        StringInstance *toUTCString();
+
+        [id(DISPID_DATE_TODATESTRING)]
+        StringInstance *toDateString();
+
+        [id(DISPID_DATE_TOTIMESTRING)]
+        StringInstance *toTimeString();
+
+        [id(DISPID_DATE_TOLOCDATESTRING)]
+        StringInstance *toLocaleDateString();
+
+        [id(DISPID_DATE_TOLOCTIMESTRING)]
+        StringInstance *toLocaleTimeString();
+
+        [id(DISPID_DATE_GETTIME)]
+        VARIANT getTime();
+
+        [id(DISPID_DATE_GETFULLYEAR)]
+        VARIANT getFullYear();
+
+        [id(DISPID_DATE_GETUTCFULLYEAR)]
+        VARIANT getUTCFullYear();
+
+        [id(DISPID_DATE_GETMONTH)]
+        VARIANT getMonth();
+
+        [id(DISPID_DATE_GETUTCMONTH)]
+        VARIANT getUTCMonth();
+
+        [id(DISPID_DATE_GETDATE)]
+        VARIANT getDate();
+
+        [id(DISPID_DATE_GETUTCDATE)]
+        VARIANT getUTCDate();
+
+        [id(DISPID_DATE_GETDAY)]
+        VARIANT getDay();
+
+        [id(DISPID_DATE_GETUTCDAY)]
+        VARIANT getUTCDay();
+
+        [id(DISPID_DATE_GETHOURS)]
+        VARIANT getHours();
+
+        [id(DISPID_DATE_GETUTCHOURS)]
+        VARIANT getUTCHours();
+
+        [id(DISPID_DATE_GETMINUTES)]
+        VARIANT getMinutes();
+
+        [id(DISPID_DATE_GETUTCMINUTES)]
+        VARIANT getUTCMinutes();
+
+        [id(DISPID_DATE_GETSECONDS)]
+        VARIANT getSeconds();
+
+        [id(DISPID_DATE_GETUTCSECONDS)]
+        VARIANT getUTCSeconds();
+
+        [id(DISPID_DATE_GETMILLISECONDS)]
+        VARIANT getMilliseconds();
+
+        [id(DISPID_DATE_GETUTCMILLISECONDS)]
+        VARIANT getUTCMilliseconds();
+
+        [id(DISPID_DATE_GETTIMEZONEOFFSET)]
+        VARIANT getTimezoneOffset();
+
+        [id(DISPID_DATE_SETTIME)]
+        DateInstance *setTime(VARIANT time);
+
+        [id(DISPID_DATE_SETMILLISECONDS)]
+        DateInstance *setMilliseconds(VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETUTCMILLISECONDS)]
+        DateInstance *setUTCMilliseconds(VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETSECONDS)]
+        DateInstance *setSeconds(
+                VARIANT seconds,
+                [optional] VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETUTCSECONDS)]
+        DateInstance *setUTCSeconds(
+                VARIANT seconds,
+                [optional] VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETMINUTES)]
+        DateInstance *setMinutes(
+                VARIANT minutes,
+                [optional] VARIANT seconds,
+                [optional] VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETUTCMINUTES)]
+        DateInstance *setUTCMinutes(
+                VARIANT minutes,
+                [optional] VARIANT seconds,
+                [optional] VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETHOURS)]
+        DateInstance *setHours(
+                VARIANT hours,
+                [optional] VARIANT minutes,
+                [optional] VARIANT seconds,
+                [optional] VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETUTCHOURS)]
+        DateInstance *setUTCHours(
+                VARIANT hours,
+                [optional] VARIANT minutes,
+                [optional] VARIANT seconds,
+                [optional] VARIANT milliseconds);
+
+        [id(DISPID_DATE_SETDATE)]
+        DateInstance *setDate(VARIANT Date);
+
+        [id(DISPID_DATE_SETUTCDATE)]
+        DateInstance *setUTCDate(VARIANT Date);
+
+        [id(DISPID_DATE_SETMONTH)]
+        DateInstance *setMonth(
+                VARIANT month,
+                [optional] VARIANT Date);
+
+        [id(DISPID_DATE_SETUTCMONTH)]
+        DateInstance *setUTCMonth(
+                VARIANT month,
+                [optional] VARIANT Date);
+
+        [id(DISPID_DATE_SETFULLYEAR)]
+        DateInstance *setFullYear(
+                VARIANT year,
+                [optional] VARIANT month,
+                [optional] VARIANT Date);
+
+        [id(DISPID_DATE_SETUTCFULLYEAR)]
+        DateInstance *setUTCFullYear(
+                VARIANT year,
+                [optional] VARIANT month,
+                [optional] VARIANT Date);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04Fc2b099)
+    ]
+    dispinterface RegExpInstance {
+    properties:
+        [id(DISPID_REGEXP_SOURCE)]
+         StringInstance *source;
+
+        [id(DISPID_REGEXP_GLOBAL)]
+        VARIANT global;
+
+        [id(DISPID_REGEXP_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_REGEXP_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_REGEXP_LASTINDEX)]
+        VARIANT lastIndex;
+    methods:
+        [id(DISPID_REGEXP_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_REGEXP_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_REGEXP_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_REGEXP_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_REGEXP_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+
+        [id(DISPID_REGEXP_EXEC)]
+        ArrayInstance *exec(VARIANT String);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b09a)
+    ]
+    dispinterface ErrorInstance {
+    properties:
+        [id(DISPID_ERROR_NAME)]
+        StringInstance *name;
+
+        [id(DISPID_ERROR_MESSAGE)]
+        StringInstance *message;
+
+        [id(DISPID_ERROR_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_ERROR_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_ERROR_LASTINDEX)]
+        VARIANT lastIndex;
+
+    methods:
+        [id(DISPID_ERROR_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ERROR_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ERROR_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ERROR_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ERROR_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b09b)
+    ]
+    dispinterface EvalErrorInstance {
+    properties:
+        [id(DISPID_ERROR_NAME)]
+        StringInstance *name;
+
+        [id(DISPID_ERROR_MESSAGE)]
+        StringInstance *message;
+
+        [id(DISPID_ERROR_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_ERROR_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_ERROR_LASTINDEX)]
+        VARIANT lastIndex;
+
+    methods:
+        [id(DISPID_ERROR_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ERROR_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ERROR_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ERROR_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ERROR_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b09c)
+    ]
+    dispinterface RangeErrorInstance {
+    properties:
+        [id(DISPID_ERROR_NAME)]
+        StringInstance *name;
+
+        [id(DISPID_ERROR_MESSAGE)]
+        StringInstance *message;
+
+        [id(DISPID_ERROR_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_ERROR_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_ERROR_LASTINDEX)]
+        VARIANT lastIndex;
+
+    methods:
+        [id(DISPID_ERROR_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ERROR_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ERROR_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ERROR_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ERROR_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b09d)
+    ]
+    dispinterface ReferenceErrorInstance {
+    properties:
+        [id(DISPID_ERROR_NAME)]
+        StringInstance *name;
+
+        [id(DISPID_ERROR_MESSAGE)]
+        StringInstance *message;
+
+        [id(DISPID_ERROR_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_ERROR_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_ERROR_LASTINDEX)]
+        VARIANT lastIndex;
+
+    methods:
+        [id(DISPID_ERROR_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ERROR_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ERROR_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ERROR_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ERROR_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b09e)
+    ]
+    dispinterface SyntaxErrorInstance {
+    properties:
+        [id(DISPID_ERROR_NAME)]
+        StringInstance *name;
+
+        [id(DISPID_ERROR_MESSAGE)]
+        StringInstance *message;
+
+        [id(DISPID_ERROR_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_ERROR_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_ERROR_LASTINDEX)]
+        VARIANT lastIndex;
+
+    methods:
+        [id(DISPID_ERROR_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ERROR_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ERROR_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ERROR_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ERROR_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b09f)
+    ]
+    dispinterface TypeErrorInstance {
+    properties:
+        [id(DISPID_ERROR_NAME)]
+        StringInstance *name;
+
+        [id(DISPID_ERROR_MESSAGE)]
+        StringInstance *message;
+
+        [id(DISPID_ERROR_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_ERROR_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_ERROR_LASTINDEX)]
+        VARIANT lastIndex;
+
+    methods:
+        [id(DISPID_ERROR_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ERROR_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ERROR_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ERROR_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ERROR_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+
+    [
+        uuid(3eef9758-35fc-11d1-8ce4-00c04fc2b0a0)
+    ]
+    dispinterface URIErrorInstance {
+    properties:
+        [id(DISPID_ERROR_NAME)]
+        StringInstance *name;
+
+        [id(DISPID_ERROR_MESSAGE)]
+        StringInstance *message;
+
+        [id(DISPID_ERROR_IGNORECASE)]
+        VARIANT ignoreCase;
+
+        [id(DISPID_ERROR_MULTILINE)]
+        VARIANT multiline;
+
+        [id(DISPID_ERROR_LASTINDEX)]
+        VARIANT lastIndex;
+
+    methods:
+        [id(DISPID_ERROR_TOSTRING)]
+        StringInstance *toString();
+
+        [id(DISPID_ERROR_TOLOCSTRING)]
+        StringInstance *toLocaleString();
+
+        [id(DISPID_ERROR_HASOWNPROP)]
+        VARIANT hasOwnProperty(VARIANT propertyName);
+
+        [id(DISPID_ERROR_PROPISENUM)]
+        VARIANT propertyIsEnumerable(VARIANT propertyName);
+
+        [id(DISPID_ERROR_ISPROTOF)]
+        VARIANT isPrototypeOf(VARIANT obj);
+    }
+}
diff --git a/dlls/jscript/jsglobal_dispid.h b/dlls/jscript/jsglobal_dispid.h
new file mode 100644
index 0000000..3922622
--- /dev/null
+++ b/dlls/jscript/jsglobal_dispid.h
@@ -0,0 +1,273 @@
+/*
+ * Copyright 2008 Jacek Caban for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* GlobalObj */
+#define DISPID_GLOBAL_NAN           0x0000
+#define DISPID_GLOBAL_INFINITY      0x0001
+#define DISPID_GLOBAL_ARRAY         0x0002
+#define DISPID_GLOBAL_BOOLEAN       0x0003
+#define DISPID_GLOBAL_DATE          0x0004
+#define DISPID_GLOBAL_FUNCTION      0x0005
+#define DISPID_GLOBAL_NUMBER        0x0006
+#define DISPID_GLOBAL_OBJECT        0x0007
+#define DISPID_GLOBAL_STRING        0x0008
+#define DISPID_GLOBAL_REGEXP        0x0009
+#define DISPID_GLOBAL_ACTIVEXOBJ    0x000a
+#define DISPID_GLOBAL_VBARRAY       0x000b
+#define DISPID_GLOBAL_ENUMERATOR    0x000c
+#define DISPID_GLOBAL_ESCAPE        0x000d
+#define DISPID_GLOBAL_EVAL          0x000e
+#define DISPID_GLOBAL_ISNAN         0x000f
+#define DISPID_GLOBAL_ISFINITE      0x0010
+#define DISPID_GLOBAL_PARSEINT      0x0011
+#define DISPID_GLOBAL_PARSEFLOAT    0x0012
+#define DISPID_GLOBAL_UNESCAPE      0x0013
+#define DISPID_GLOBAL_GETOBJECT     0x0014
+#define DISPID_GLOBAL_SCRIPTENGINE  0x0015
+#define DISPID_GLOBAL_MAJORVER      0x0016
+#define DISPID_GLOBAL_MINORVER      0x0017
+#define DISPID_GLOBAL_BUILDVER      0x0018
+#define DISPID_GLOBAL_COLLECT       0x0019
+#define DISPID_GLOBAL_MATH          0x001a
+
+
+/* DateObj */
+#define DISPID_DATEOBJ_PARSE  0x0064
+#define DISPID_DATEOBJ_UTC    0x0065
+
+
+/* MathObj */
+#define DISPID_MATHOBJ_E        0x00c8
+#define DISPID_MATHOBJ_LOG2E    0x00c9
+#define DISPID_MATHOBJ_LOG10E   0x00ca
+#define DISPID_MATHOBJ_LN2      0x00cb
+#define DISPID_MATHOBJ_LN10     0x00cc
+#define DISPID_MATHOBJ_PI       0x00cd
+#define DISPID_MATHOBJ_SQRT2    0x00ce
+#define DISPID_MATHOBJ_SQRT1_2  0x00cf
+#define DISPID_MATHOBJ_ABS      0x00d0
+#define DISPID_MATHOBJ_ACOS     0x00d1
+#define DISPID_MATHOBJ_ASIN     0x00d2
+#define DISPID_MATHOBJ_ATAN     0x00d3
+#define DISPID_MATHOBJ_ATAN2    0x00d4
+#define DISPID_MATHOBJ_CEIL     0x00d5
+#define DISPID_MATHOBJ_COS      0x00d6
+#define DISPID_MATHOBJ_EXP      0x00d7
+#define DISPID_MATHOBJ_FLOOR    0x00d8
+#define DISPID_MATHOBJ_LOG      0x00d9
+#define DISPID_MATHOBJ_MAX      0x00da
+#define DISPID_MATHOBJ_MIN      0x00db
+#define DISPID_MATHOBJ_POW      0x00dc
+#define DISPID_MATHOBJ_RANDOM   0x00dd
+#define DISPID_MATHOBJ_ROUND    0x00de
+#define DISPID_MATHOBJ_SIN      0x00df
+#define DISPID_MATHOBJ_SQRT     0x00e0
+#define DISPID_MATHOBJ_TAN      0x00e1
+
+
+/* NumberObj */
+#define DISPID_NUMBEROBJ_MAX_VALUE          0x012c
+#define DISPID_NUMBEROBJ_MIN_VALUE          0x012d
+#define DISPID_NUMBEROBJ_NAN                0x012e
+#define DISPID_NUMBEROBJ_NEGATIVE_INFINITY  0x012f
+#define DISPID_NUMBEROBJ_POSITIVE_INFINITY  0x0130
+
+
+/* RegExpObj */
+#define DISPID_REGEXPOBJ_INDEX      0x0190
+#define DISPID_REGEXPOBJ_INPUT      0x0191
+#define DISPID_REGEXPOBJ_LASTINDEX  0x0192
+
+
+/* StringObj */
+#define DISPID_STRINGOBJ_FROMCHARCODE  0x01f4
+
+
+/* ArrayInstance */
+#define DISPID_ARRAY_LENGTH       0x0258
+#define DISPID_ARRAY_CONCAT       0x0259
+#define DISPID_ARRAY_JOIN         0x025a
+#define DISPID_ARRAY_POP          0x025b
+#define DISPID_ARRAY_PUSH         0x025c
+#define DISPID_ARRAY_REVERSE      0x025d
+#define DISPID_ARRAY_SHIFT        0x025e
+#define DISPID_ARRAY_SLICE        0x025f
+#define DISPID_ARRAY_SORT         0x0260
+#define DISPID_ARRAY_SPLICE       0x0261
+#define DISPID_ARRAY_TOSTRING     0x0262
+#define DISPID_ARRAY_TOLOCSTRING  0x0263
+#define DISPID_ARRAY_VALUEOF      0x0264
+#define DISPID_ARRAY_UNSHIFT      0x0265
+#define DISPID_ARRAY_HASOWNPROP   0x0266
+#define DISPID_ARRAY_PROPISENUM   0x0267
+#define DISPID_ARRAY_ISPROTOF     0x0268
+
+
+/* FunctionInstance */
+#define DISPID_FUNCTION_LENGTH       0x02bc
+#define DISPID_FUNCTION_TOSTRING     0x02bd
+#define DISPID_FUNCTION_TOLOCSTRING  0x02be
+#define DISPID_FUNCTION_VALUEOF      0x02bf
+#define DISPID_FUNCTION_APPLY        0x02c0
+#define DISPID_FUNCTION_CALL         0x02c1
+#define DISPID_FUNCTION_HASOWNPROP   0x02c2
+#define DISPID_FUNCTION_PROPISENUM   0x02c3
+#define DISPID_FUNCTION_ISPROTOF     0x02c4
+
+
+/* StringInstance */
+#define DISPID_STRING_LENGTH          0x0320
+#define DISPID_STRING_TOSTRING        0x0321
+#define DISPID_STRING_VALUEOF         0x0322
+#define DISPID_STRING_ANCHOR          0x0323
+#define DISPID_STRING_BIG             0x0324
+#define DISPID_STRING_BLINK           0x0325
+#define DISPID_STRING_BOLD            0x0326
+#define DISPID_STRING_CHARAT          0x0327
+#define DISPID_STRING_CHARCODEAT      0x0328
+#define DISPID_STRING_CONCAT          0x0329
+#define DISPID_STRING_FIXED           0x032a
+#define DISPID_STRING_FONTCOLOR       0x032b
+#define DISPID_STRING_FONTSIZE        0x032c
+#define DISPID_STRING_INDEXOF         0x032d
+#define DISPID_STRING_ITALICS         0x032e
+#define DISPID_STRING_LASTINDEXOF     0x032f
+#define DISPID_STRING_LINK            0x0330
+#define DISPID_STRING_MATCH           0x0331
+#define DISPID_STRING_REPLACE         0x0332
+#define DISPID_STRING_SEARCH          0x0333
+#define DISPID_STRING_SLICE           0x0334
+#define DISPID_STRING_SMALL           0x0335
+#define DISPID_STRING_SPLIT           0x0336
+#define DISPID_STRING_STRIKE          0x0337
+#define DISPID_STRING_SUB             0x0338
+#define DISPID_STRING_SUBSTRING       0x0339
+#define DISPID_STRING_SUBSTR          0x033a
+#define DISPID_STRING_SUP             0x033b
+#define DISPID_STRING_TOLOWERCASE     0x033c
+#define DISPID_STRING_TOUPPERCASE     0x033d
+#define DISPID_STRING_TOLOCLOWERCASE  0x033e
+#define DISPID_STRING_TOLOCUPPERCASE  0x033f
+#define DISPID_STRING_LOCCOMPARE      0x0340
+#define DISPID_STRING_HASOWNPROP      0x0341
+#define DISPID_STRING_PROPISENUM      0x0342
+#define DISPID_STRING_ISPROTOF        0x0343
+
+
+/* BoolInstance */
+#define DISPID_BOOL_TOSTRING     0x0384
+#define DISPID_BOOL_TOLOCSTRING  0x0385
+#define DISPID_BOOL_VALUEOF      0x0386
+#define DISPID_BOOL_HASOWNPROP   0x0387
+#define DISPID_BOOL_PROPISENUM   0x0388
+#define DISPID_BOOL_ISPROTOF     0x0389
+
+
+/* NumberInstance */
+#define DISPID_NUMBER_TOSTRING       0x03e8
+#define DISPID_NUMBER_TOLOCSTRING    0x03e9
+#define DISPID_NUMBER_TOFIXED        0x03ea
+#define DISPID_NUMBER_TOEXPONENTIAL  0x03eb
+#define DISPID_NUMBER_TOPRECISION    0x03ec
+#define DISPID_NUMBER_VALUEOF        0x03ed
+#define DISPID_NUMBER_HASOWNPROP     0x03ee
+#define DISPID_NUMBER_PROPISENUM     0x03ef
+#define DISPID_NUMBER_ISPROTOF       0x03f0
+
+
+/* ObjectInstance */
+#define DISPID_OBJECT_TOSTRING     0x044c
+#define DISPID_OBJECT_TOLOCSTRING  0x044d
+#define DISPID_OBJECT_HASOWNPROP   0x044e
+#define DISPID_OBJECT_PROPISENUM   0x044f
+#define DISPID_OBJECT_ISPROTOF     0x0450
+#define DISPID_OBJECT_VALUEOF      0x0451
+
+
+/* DateInstance */
+#define DISPID_DATE_TOSTRING            0x04b0
+#define DISPID_DATE_TOLOCSTRING         0x04b1
+#define DISPID_DATE_HASOWNPROP          0x04b2
+#define DISPID_DATE_PROPISENUM          0x04b3
+#define DISPID_DATE_ISPROTOF            0x04b4
+#define DISPID_DATE_VALUEOF             0x04b5
+#define DISPID_DATE_TOUTCSTRING         0x04b6
+#define DISPID_DATE_TODATESTRING        0x04b7
+#define DISPID_DATE_TOTIMESTRING        0x04b8
+#define DISPID_DATE_TOLOCDATESTRING     0x04b9
+#define DISPID_DATE_TOLOCTIMESTRING     0x04ba
+#define DISPID_DATE_GETTIME             0x04bb
+#define DISPID_DATE_GETFULLYEAR         0x04bc
+#define DISPID_DATE_GETUTCFULLYEAR      0x04bd
+#define DISPID_DATE_GETMONTH            0x04be
+#define DISPID_DATE_GETUTCMONTH         0x04bf
+#define DISPID_DATE_GETDATE             0x04c0
+#define DISPID_DATE_GETUTCDATE          0x04c1
+#define DISPID_DATE_GETDAY              0x04c2
+#define DISPID_DATE_GETUTCDAY           0x04c3
+#define DISPID_DATE_GETHOURS            0x04c4
+#define DISPID_DATE_GETUTCHOURS         0x04c5
+#define DISPID_DATE_GETMINUTES          0x04c6
+#define DISPID_DATE_GETUTCMINUTES       0x04c7
+#define DISPID_DATE_GETSECONDS          0x04c8
+#define DISPID_DATE_GETUTCSECONDS       0x04c9
+#define DISPID_DATE_GETMILLISECONDS     0x04ca
+#define DISPID_DATE_GETUTCMILLISECONDS  0x04cb
+#define DISPID_DATE_GETTIMEZONEOFFSET   0x04cc
+#define DISPID_DATE_SETTIME             0x04cd
+#define DISPID_DATE_SETMILLISECONDS     0x04ce
+#define DISPID_DATE_SETUTCMILLISECONDS  0x04cf
+#define DISPID_DATE_SETSECONDS          0x04d0
+#define DISPID_DATE_SETUTCSECONDS       0x04d1
+#define DISPID_DATE_SETMINUTES          0x04d2
+#define DISPID_DATE_SETUTCMINUTES       0x04d3
+#define DISPID_DATE_SETHOURS            0x04d4
+#define DISPID_DATE_SETUTCHOURS         0x04d5
+#define DISPID_DATE_SETDATE             0x04d6
+#define DISPID_DATE_SETUTCDATE          0x04d7
+#define DISPID_DATE_SETMONTH            0x04d8
+#define DISPID_DATE_SETUTCMONTH         0x04d9
+#define DISPID_DATE_SETFULLYEAR         0x04da
+#define DISPID_DATE_SETUTCFULLYEAR      0x04db
+
+
+/* RegExpInstance */
+#define DISPID_REGEXP_SOURCE       0x0514
+#define DISPID_REGEXP_GLOBAL       0x0515
+#define DISPID_REGEXP_IGNORECASE   0x0516
+#define DISPID_REGEXP_MULTILINE    0x0517
+#define DISPID_REGEXP_LASTINDEX    0x0518
+#define DISPID_REGEXP_TOSTRING     0x0519
+#define DISPID_REGEXP_TOLOCSTRING  0x051a
+#define DISPID_REGEXP_HASOWNPROP   0x051b
+#define DISPID_REGEXP_PROPISENUM   0x051c
+#define DISPID_REGEXP_ISPROTOF     0x051d
+#define DISPID_REGEXP_EXEC         0x051e
+
+
+/* ErrorInstance */
+#define DISPID_ERROR_NAME         0x0578
+#define DISPID_ERROR_MESSAGE      0x0579
+#define DISPID_ERROR_IGNORECASE   0x057a
+#define DISPID_ERROR_MULTILINE    0x057b
+#define DISPID_ERROR_LASTINDEX    0x057c
+#define DISPID_ERROR_TOSTRING     0x057d
+#define DISPID_ERROR_TOLOCSTRING  0x057e
+#define DISPID_ERROR_HASOWNPROP   0x057f
+#define DISPID_ERROR_PROPISENUM   0x0580
+#define DISPID_ERROR_ISPROTOF     0x0581
diff --git a/dlls/jscript/rsrc.rc b/dlls/jscript/rsrc.rc
index 7a08b79..cb0f31a 100644
--- a/dlls/jscript/rsrc.rc
+++ b/dlls/jscript/rsrc.rc
@@ -18,3 +18,6 @@
 
 /* @makedep: jscript.inf */
 REGINST REGINST jscript.inf
+
+/* @makedep: jsglobal.tlb */
+1 TYPELIB LOADONCALL DISCARDABLE jsglobal.tlb