Index: trunk/FACT++/src/InterpreterV8.cc
===================================================================
--- trunk/FACT++/src/InterpreterV8.cc	(revision 14496)
+++ trunk/FACT++/src/InterpreterV8.cc	(revision 14497)
@@ -257,4 +257,17 @@
         if (*str)
             JsPrint(*str);
+    }
+    return Undefined();
+}
+
+Handle<Value> InterpreterV8::FuncAlarm(const Arguments& args)
+{
+    for (int i=0; i<args.Length(); i++)
+    {
+        const HandleScope handle_scope;
+
+        const String::Utf8Value str(args[i]);
+        if (*str)
+            JsAlarm(*str);
     }
     return Undefined();
@@ -683,4 +696,5 @@
     Handle<ObjectTemplate> dim = ObjectTemplate::New();
     dim->Set(String::New("print"),    FunctionTemplate::New(WrapPrint),    ReadOnly);
+    dim->Set(String::New("alarm"),    FunctionTemplate::New(WrapAlarm),    ReadOnly);
     dim->Set(String::New("out"),      FunctionTemplate::New(WrapOut),      ReadOnly);
     dim->Set(String::New("wait"),     FunctionTemplate::New(WrapWait),     ReadOnly);
Index: trunk/FACT++/src/InterpreterV8.h
===================================================================
--- trunk/FACT++/src/InterpreterV8.h	(revision 14496)
+++ trunk/FACT++/src/InterpreterV8.h	(revision 14497)
@@ -35,4 +35,5 @@
     v8::Handle<v8::Value> FuncSleep(const v8::Arguments& args);
     v8::Handle<v8::Value> FuncPrint(const v8::Arguments& args);
+    v8::Handle<v8::Value> FuncAlarm(const v8::Arguments& args);
     v8::Handle<v8::Value> FuncOut(const v8::Arguments& args);
     v8::Handle<v8::Value> FuncInclude(const v8::Arguments& args);
@@ -50,4 +51,5 @@
     static v8::Handle<v8::Value> WrapInclude(const v8::Arguments &args)  { if (This) return This->FuncInclude(args);  else return v8::Undefined(); }
     static v8::Handle<v8::Value> WrapPrint(const v8::Arguments &args)    { if (This) return This->FuncPrint(args);    else return v8::Undefined(); }
+    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> WrapWait(const v8::Arguments &args)     { if (This) return This->FuncWait(args);     else return v8::Undefined(); }
@@ -84,4 +86,5 @@
     virtual void  JsEnd(const std::string &) { }
     virtual void  JsPrint(const std::string &) { }
+    virtual void  JsAlarm(const std::string &) { }
     virtual void  JsOut(const std::string &) { }
     virtual void  JsResult(const std::string &) { }
Index: trunk/FACT++/src/MessageImp.cc
===================================================================
--- trunk/FACT++/src/MessageImp.cc	(revision 14496)
+++ trunk/FACT++/src/MessageImp.cc	(revision 14497)
@@ -92,4 +92,5 @@
 //!     kWarn:     yellow     W>
 //!     kError:    red        E>
+//!     kAlarm     red        E>
 //!     kFatal:    red-blink  !>
 //!     kDebug:    blue
@@ -117,5 +118,6 @@
     case kInfo:    fOut << kGreen         << " I> "; break;
     case kWarn:    fOut << kYellow        << " W> "; break;
-    case kError:   fOut << kRed           << " E> "; break;
+    case kError:
+    case kAlarm:   fOut << kRed           << " E> "; break;
     case kFatal:   fOut << kRed << kBlink << " !> "; break;
     case kDebug:   fOut << kBlue          << "    "; break;
Index: trunk/FACT++/src/MessageImp.h
===================================================================
--- trunk/FACT++/src/MessageImp.h	(revision 14496)
+++ trunk/FACT++/src/MessageImp.h	(revision 14497)
@@ -18,4 +18,5 @@
         kWarn    = 30, ///< A warning, things that somehow might result in unexpected or unwanted bahaviour
         kError   = 40, ///< Error, something unexpected happened, but can still be handled by the program
+        kAlarm   = 45, ///< Error, something unexpected happened, but needs user intervention (i.e. it needs a signal to the user)
         kFatal   = 50, ///< An error which cannot be handled at all happend, the only solution is program termination
         kComment = 90, ///< A comment which is always printed
@@ -44,4 +45,5 @@
     int Warn(const std::string &str)     { return Update(str, kWarn);    }
     int Error(const std::string &str)    { return Update(str, kError);   }
+    int Alarm(const std::string &str)    { return Update(str, kAlarm);   }
     int Fatal(const std::string &str)    { return Update(str, kFatal);   }
     int Comment(const std::string &str)  { return Update(str, kComment); }
@@ -52,4 +54,5 @@
     int Warn(const char *txt)    { return Warn(std::string(txt));    }
     int Error(const char *txt)   { return Error(std::string(txt));   }
+    int Alarm(const char *txt)   { return Alarm(std::string(txt));   }
     int Fatal(const char *txt)   { return Fatal(std::string(txt));   }
     int Comment(const char *txt) { return Comment(std::string(txt)); }
@@ -59,4 +62,5 @@
     int Info(const std::ostringstream &str)    { return Info(str.str());    }
     int Warn(const std::ostringstream &str)    { return Warn(str.str());    }
+    int Alarm(const std::ostringstream &str)   { return Alarm(str.str());   }
     int Error(const std::ostringstream &str)   { return Error(str.str());   }
     int Fatal(const std::ostringstream &str)   { return Fatal(str.str());   }
Index: trunk/FACT++/src/RemoteControl.h
===================================================================
--- trunk/FACT++/src/RemoteControl.h	(revision 14496)
+++ trunk/FACT++/src/RemoteControl.h	(revision 14497)
@@ -167,4 +167,5 @@
     virtual void  JsOut(const std::string &msg)       { lout << msg << endl; }
     virtual void  JsPrint(const std::string &msg)     { if (fImp) fImp->Comment(msg.empty()?" ":msg); }
+    virtual void  JsAlarm(const std::string &msg)     { if (fImp) fImp->Alarm(msg.empty()?" ":msg); }
     virtual void  JsException(const std::string &str) { if (fImp) fImp->Error(str.empty()?" ":str); }
 
