aStatement->BindInt64Parameter(aParamIndex, msec);
for (i = 0; i < aNumIndexes; i++) aStatement->BindInt64Parameter(aParamIndexes[i], msec);
JSValStorageStatementBinder (JSContext *cx,                             mozIStorageStatement *aStatement,                             PRUint32 aParamIndex,                             jsval val){    if (JSVAL_IS_INT(val)) {        int v = JSVAL_TO_INT(val);        aStatement->BindInt32Parameter(aParamIndex, v);    } else if (JSVAL_IS_DOUBLE(val)) {        double d = *JSVAL_TO_DOUBLE(val);        aStatement->BindDoubleParameter(aParamIndex, d);    } else if (JSVAL_IS_STRING(val)) {        JSString *str = JSVAL_TO_STRING(val);        aStatement->BindWStringParameter(aParamIndex, NS_REINTERPRET_CAST(PRUnichar*, JS_GetStringChars(str)));    } else if (JSVAL_IS_BOOLEAN(val)) {        if (val == JSVAL_TRUE) {            aStatement->BindInt32Parameter(aParamIndex, 1);        } else {            aStatement->BindInt32Parameter(aParamIndex, 0);        }    } else if (JSVAL_IS_NULL(val)) {        aStatement->BindNullParameter(aParamIndex);    } else if (JSVAL_IS_OBJECT(val)) {        JSObject *obj = JSVAL_TO_OBJECT(val);        // some special things        if (js_DateIsValid (cx, obj)) {            double msecd = js_DateGetMsecSinceEpoch(cx, obj);            msecd *= 1000.0;            PRInt64 msec;            LL_D2L(msec, msecd);            aStatement->BindInt64Parameter(aParamIndex, msec);        } else {            return PR_FALSE;        }    } else {        return PR_FALSE;    }    return PR_TRUE;}