Index: trunk/FACT++/src/InterpreterV8.cc
===================================================================
--- trunk/FACT++/src/InterpreterV8.cc	(revision 16059)
+++ trunk/FACT++/src/InterpreterV8.cc	(revision 16071)
@@ -677,4 +677,15 @@
         if (*str)
             JsOut(*str);
+    }
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncWarn(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const String::AsciiValue str(args[i]);
+        if (*str)
+            JsWarn(*str);
     }
     return Undefined();
@@ -2420,4 +2431,5 @@
     Handle<ObjectTemplate> console = ObjectTemplate::New();
     console->Set(String::New("out"), FunctionTemplate::New(WrapOut), ReadOnly);
+    console->Set(String::New("warn"), FunctionTemplate::New(WrapWarn), ReadOnly);
 
     Handle<ObjectTemplate> onchange = ObjectTemplate::New();
Index: trunk/FACT++/src/InterpreterV8.h
===================================================================
--- trunk/FACT++/src/InterpreterV8.h	(revision 16059)
+++ trunk/FACT++/src/InterpreterV8.h	(revision 16071)
@@ -78,4 +78,5 @@
     v8::Handle<v8::Value> FuncAlarm(const v8::Arguments& args);
     v8::Handle<v8::Value> FuncOut(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncWarn(const v8::Arguments& args);
     v8::Handle<v8::Value> FuncFile(const v8::Arguments& args);
     v8::Handle<v8::Value> FuncSendMail(const v8::Arguments& args);
@@ -132,4 +133,5 @@
     static v8::Handle<v8::Value> WrapAlarm(const v8::Arguments &args)    { if (This) return This->FuncAlarm(args);    else return v8::Undefined(); }
     static v8::Handle<v8::Value> WrapOut(const v8::Arguments &args)      { if (This) return This->FuncOut(args);      else return v8::Undefined(); }
+    static v8::Handle<v8::Value> WrapWarn(const v8::Arguments &args)     { if (This) return This->FuncWarn(args);     else return v8::Undefined(); }
     static v8::Handle<v8::Value> WrapWait(const v8::Arguments &args)     { if (This) return This->FuncWait(args);     else return v8::Undefined(); }
     static v8::Handle<v8::Value> WrapSend(const v8::Arguments &args)     { if (This) return This->FuncSend(args);     else return v8::Undefined(); }
@@ -187,4 +189,5 @@
     virtual void  JsAlarm(const std::string & = "") { }
     virtual void  JsOut(const std::string &) { }
+    virtual void  JsWarn(const std::string &) { }
     virtual void  JsResult(const std::string &) { }
     virtual void  JsException(const std::string &) { }
Index: trunk/FACT++/src/RemoteControl.h
===================================================================
--- trunk/FACT++/src/RemoteControl.h	(revision 16059)
+++ trunk/FACT++/src/RemoteControl.h	(revision 16071)
@@ -166,5 +166,6 @@
     void  JsEnd(const std::string &)          { UnsubscribeAll(); InterpreterV8::JsEnd(); SetSection(-4); }
     bool  JsSend(const std::string &str)      { return ProcessCommand(str, false); }
-    void  JsOut(const std::string &msg)       { lin << msg << endl; }
+    void  JsOut(const std::string &msg)       { lin << kDefault << msg << endl; }
+    void  JsWarn(const std::string &msg)      { lin << kYellow << msg << endl; }
     void  JsResult(const std::string &msg)    { if (msg!="use strict") lin << kBlue << " = " << msg << '\n' << endl; }
     void  JsPrint(const std::string &msg)     { if (fImp) fImp->Comment(msg); }
