http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
index c1788f7..64409b7 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/FormatHelper.java
@@ -1,81 +1,81 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.util;
-
-import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
-
-import java.util.regex.Pattern;
-
-import org.apache.openmeetings.db.entity.user.User;
-
-public class FormatHelper {
-       /**
-        * taken from BidiUtils
-        * 
-        * A regular expression for matching right-to-left language codes. See
-        * {@link #isRtlLanguage} for the design.
-        */
-       private static final Pattern RtlLocalesRe = 
Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
-                                       + 
"(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
-
-       /**
-        * Check if a BCP 47 / III language code indicates an RTL language, i.e.
-        * either: - a language code explicitly specifying one of the 
right-to-left
-        * scripts, e.g. "az-Arab", or
-        * <p>
-        * - a language code specifying one of the languages normally written 
in a
-        * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
-        * specifying Latin or Cyrillic script (which are the usual LTR
-        * alternatives).
-        * <p>
-        * The list of right-to-left scripts appears in the 100-199 range in
-        * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic 
and
-        * Hebrew are by far the most widely used. We also recognize Thaana, 
N'Ko,
-        * and Tifinagh, which also have significant modern usage. The rest 
(Syriac,
-        * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
-        * usage and are not recognized. The languages usually written in a
-        * right-to-left script are taken as those with Suppress-Script:
-        * Hebr|Arab|Thaa|Nkoo|Tfng in
-        * http://www.iana.org/assignments/language-subtag-registry, as well as
-        * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
-        * language code, e.g. regions like EG (Egypt), is ignored.
-        */
-       public static boolean isRtlLanguage(String languageString) {
-               return languageString != null && 
RtlLocalesRe.matcher(languageString).find();
-       }
-
-       public static String formatUser(User u) {
-               return formatUser(u, false);
-       }
-
-       // TODO check RIGHTS here (email might need to be hidden)
-       public static String formatUser(User u, boolean isHTMLEscape) {
-               String user = "";
-               if (u != null) {
-                       String email = u.getAddress() == null ? "" : 
u.getAddress().getEmail();
-                       if (u.getFirstname() == null && u.getLastname() == 
null) {
-                               user = email;
-                       } else {
-                               user = String.format("\"%s %s\" <%s>", 
u.getFirstname(), u.getLastname(), email);
-                       }
-                       user = isHTMLEscape ? escapeHtml4(user) : user;
-               }
-               return user;
-       }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.util;
+
+import static org.apache.commons.lang3.StringEscapeUtils.escapeHtml4;
+
+import java.util.regex.Pattern;
+
+import org.apache.openmeetings.db.entity.user.User;
+
+public class FormatHelper {
+       /**
+        * taken from BidiUtils
+        * 
+        * A regular expression for matching right-to-left language codes. See
+        * {@link #isRtlLanguage} for the design.
+        */
+       private static final Pattern RtlLocalesRe = 
Pattern.compile("^(ar|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))"
+                                       + 
"(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)");
+
+       /**
+        * Check if a BCP 47 / III language code indicates an RTL language, i.e.
+        * either: - a language code explicitly specifying one of the 
right-to-left
+        * scripts, e.g. "az-Arab", or
+        * <p>
+        * - a language code specifying one of the languages normally written 
in a
+        * right-to-left script, e.g. "fa" (Farsi), except ones explicitly
+        * specifying Latin or Cyrillic script (which are the usual LTR
+        * alternatives).
+        * <p>
+        * The list of right-to-left scripts appears in the 100-199 range in
+        * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic 
and
+        * Hebrew are by far the most widely used. We also recognize Thaana, 
N'Ko,
+        * and Tifinagh, which also have significant modern usage. The rest 
(Syriac,
+        * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern
+        * usage and are not recognized. The languages usually written in a
+        * right-to-left script are taken as those with Suppress-Script:
+        * Hebr|Arab|Thaa|Nkoo|Tfng in
+        * http://www.iana.org/assignments/language-subtag-registry, as well as
+        * Sindhi (sd) and Uyghur (ug). The presence of other subtags of the
+        * language code, e.g. regions like EG (Egypt), is ignored.
+        */
+       public static boolean isRtlLanguage(String languageString) {
+               return languageString != null && 
RtlLocalesRe.matcher(languageString).find();
+       }
+
+       public static String formatUser(User u) {
+               return formatUser(u, false);
+       }
+
+       // TODO check RIGHTS here (email might need to be hidden)
+       public static String formatUser(User u, boolean isHTMLEscape) {
+               String user = "";
+               if (u != null) {
+                       String email = u.getAddress() == null ? "" : 
u.getAddress().getEmail();
+                       if (u.getFirstname() == null && u.getLastname() == 
null) {
+                               user = email;
+                       } else {
+                               user = String.format("\"%s %s\" <%s>", 
u.getFirstname(), u.getLastname(), email);
+                       }
+                       user = isHTMLEscape ? escapeHtml4(user) : user;
+               }
+               return user;
+       }
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-db/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/site/site.xml 
b/openmeetings-db/src/site/site.xml
index c26954e..0d9f35c 100644
--- a/openmeetings-db/src/site/site.xml
+++ b/openmeetings-db/src/site/site.xml
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
- -->
-<project xmlns="http://maven.apache.org/DECORATION/1.7.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 
http://maven.apache.org/xsd/decoration-1.7.0.xsd";
-  name="Apache OpenMeetings Project">
-
-       <body>
-               <menu ref="parent"/>
-               <menu name="Project">
-                       <item name="About" href="/index.html" />
-                       <item name="Info" href="/project-info.html" />
-                       <item name="Summary" href="/project-summary.html" />
-                       <item name="License" href="/license.html" />
-                       <item name="Dependencies" href="/dependencies.html" />
-                       <item name="Dependency Convergence" 
href="/dependency-convergence.html" />
-                       <item name="RAT Report" href="/rat-report.html" />
-                       <item name="JavaDoc" href="/apidocs/index.html" 
target="_blank" />
-               </menu>
-       </body>
-       <custom>
-               <reflowSkin>
-                       <bottomNav maxSpan="12">
-                               <column>Parent Project</column>
-                               <column>Project</column>
-                       </bottomNav>
-               </reflowSkin>
-       </custom>
-</project>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+ -->
+<project xmlns="http://maven.apache.org/DECORATION/1.7.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+  xsi:schemaLocation="http://maven.apache.org/DECORATION/1.7.0 
http://maven.apache.org/xsd/decoration-1.7.0.xsd";
+  name="Apache OpenMeetings Project">
+
+       <body>
+               <menu ref="parent"/>
+               <menu name="Project">
+                       <item name="About" href="/index.html" />
+                       <item name="Info" href="/project-info.html" />
+                       <item name="Summary" href="/project-summary.html" />
+                       <item name="License" href="/license.html" />
+                       <item name="Dependencies" href="/dependencies.html" />
+                       <item name="Dependency Convergence" 
href="/dependency-convergence.html" />
+                       <item name="RAT Report" href="/rat-report.html" />
+                       <item name="JavaDoc" href="/apidocs/index.html" 
target="_blank" />
+               </menu>
+       </body>
+       <custom>
+               <reflowSkin>
+                       <bottomNav maxSpan="12">
+                               <column>Parent Project</column>
+                               <column>Project</column>
+                       </bottomNav>
+               </reflowSkin>
+       </custom>
+</project>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx 
b/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
index 747c0ea..6b06435 100644
--- a/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/miniIcons.lzx
@@ -1,67 +1,67 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-<library>
-
-<class name="miniIcons" extends="view" stretches="both">
-       <attribute name="showhandcursor" value="true" type="boolean" />
-    <handler name="onmouseover">
-       if (this.showhandcursor) {
-               this.setAttribute("x",this.x-1);
-               this.setAttribute("y",this.y-1);
-               this.setAttribute("height",this.height+2);
-               this.setAttribute("width",this.width+2);
-       }
-        parent.parent.onmouseover.sendEvent();
-    </handler>
-    <handler name="onmouseout">
-       if (this.showhandcursor) {
-               this.setAttribute("x",this.x+1);
-            this.setAttribute("y",this.y+1);
-            this.setAttribute("height",this.height-2);
-            this.setAttribute("width",this.width-2);
-       }
-        parent.parent.onmouseout.sendEvent();
-    </handler>
-</class>
-
-<class name="miniIconsImage" extends="omImage" stretches="both">
-       <attribute name="showhandcursor" value="true" type="boolean" />
-    <handler name="onmouseover">
-       if (this.showhandcursor) {
-               this.setAttribute("x",this.x-1);
-               this.setAttribute("y",this.y-1);
-               this.setAttribute("height",this.height+2);
-               this.setAttribute("width",this.width+2);
-       }
-        parent.parent.onmouseover.sendEvent();
-    </handler>
-    <handler name="onmouseout">
-       if (this.showhandcursor) {
-               this.setAttribute("x",this.x+1);
-            this.setAttribute("y",this.y+1);
-            this.setAttribute("height",this.height-2);
-            this.setAttribute("width",this.width-2);
-       }
-        parent.parent.onmouseout.sendEvent();
-    </handler>
-</class>
-
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<library>
+
+<class name="miniIcons" extends="view" stretches="both">
+       <attribute name="showhandcursor" value="true" type="boolean" />
+    <handler name="onmouseover">
+       if (this.showhandcursor) {
+               this.setAttribute("x",this.x-1);
+               this.setAttribute("y",this.y-1);
+               this.setAttribute("height",this.height+2);
+               this.setAttribute("width",this.width+2);
+       }
+        parent.parent.onmouseover.sendEvent();
+    </handler>
+    <handler name="onmouseout">
+       if (this.showhandcursor) {
+               this.setAttribute("x",this.x+1);
+            this.setAttribute("y",this.y+1);
+            this.setAttribute("height",this.height-2);
+            this.setAttribute("width",this.width-2);
+       }
+        parent.parent.onmouseout.sendEvent();
+    </handler>
+</class>
+
+<class name="miniIconsImage" extends="omImage" stretches="both">
+       <attribute name="showhandcursor" value="true" type="boolean" />
+    <handler name="onmouseover">
+       if (this.showhandcursor) {
+               this.setAttribute("x",this.x-1);
+               this.setAttribute("y",this.y-1);
+               this.setAttribute("height",this.height+2);
+               this.setAttribute("width",this.width+2);
+       }
+        parent.parent.onmouseover.sendEvent();
+    </handler>
+    <handler name="onmouseout">
+       if (this.showhandcursor) {
+               this.setAttribute("x",this.x+1);
+            this.setAttribute("y",this.y+1);
+            this.setAttribute("height",this.height-2);
+            this.setAttribute("width",this.width-2);
+       }
+        parent.parent.onmouseout.sendEvent();
+    </handler>
+</class>
+
 </library>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx 
b/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
index 2e4a1a2..30e2e17 100644
--- a/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/miniIconsNew.lzx
@@ -1,47 +1,47 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-<library>
-
-       <class name="miniIconsNew" extends="view" >
-               <attribute name="innerResource" value="" type="string" />
-               <handler name="onmouseover">
-               if (this.showhandcursor) {
-                       this.innnerView.setAttribute("x",this.innnerView.x-1);
-                       this.innnerView.setAttribute("y",this.innnerView.y-1);
-                       
this.innnerView.setAttribute("height",this.innnerView.height+2);
-                       
this.innnerView.setAttribute("width",this.innnerView.width+2);
-               }
-           </handler>
-           <handler name="onmouseout">
-               if (this.showhandcursor) {
-                       this.innnerView.setAttribute("x",this.innnerView.x+1);
-                   this.innnerView.setAttribute("y",this.innnerView.y+1);
-                   
this.innnerView.setAttribute("height",this.innnerView.height-2);
-                   
this.innnerView.setAttribute("width",this.innnerView.width-2);
-               }
-           </handler>
-               <view name="innnerView" resource="$once{ parent.innerResource 
}" stretches="both"
-                               width="$once{ parent.width }" height="$once{ 
parent.height }">
-                   
-               </view>
-       </class>
-       
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<library>
+
+       <class name="miniIconsNew" extends="view" >
+               <attribute name="innerResource" value="" type="string" />
+               <handler name="onmouseover">
+               if (this.showhandcursor) {
+                       this.innnerView.setAttribute("x",this.innnerView.x-1);
+                       this.innnerView.setAttribute("y",this.innnerView.y-1);
+                       
this.innnerView.setAttribute("height",this.innnerView.height+2);
+                       
this.innnerView.setAttribute("width",this.innnerView.width+2);
+               }
+           </handler>
+           <handler name="onmouseout">
+               if (this.showhandcursor) {
+                       this.innnerView.setAttribute("x",this.innnerView.x+1);
+                   this.innnerView.setAttribute("y",this.innnerView.y+1);
+                   
this.innnerView.setAttribute("height",this.innnerView.height-2);
+                   
this.innnerView.setAttribute("width",this.innnerView.width-2);
+               }
+           </handler>
+               <view name="innnerView" resource="$once{ parent.innerResource 
}" stretches="both"
+                               width="$once{ parent.width }" height="$once{ 
parent.height }">
+                   
+               </view>
+       </class>
+       
 </library>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/omImage.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/omImage.lzx 
b/openmeetings-flash/src/main/swf/base/components/omImage.lzx
index 8694db1..f3ec381 100644
--- a/openmeetings-flash/src/main/swf/base/components/omImage.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/omImage.lzx
@@ -1,52 +1,52 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-<library>
-
-<class name="omImage" extends="image">
-       <handler name="onsrc" method="loadOmSrc" />
-       <handler name="oninit" method="loadOmImage" />
-
-       <method name="loadOmImage" args="ignore">
-       <![CDATA[
-               if (this.src != '' && this.src != null) {
-                       canvas.loadImgBySrc(this, this.src, completeCallback);
-               }
-       ]]>
-       </method>
-
-       <method name="completeCallback" args="event">
-               //if($debug) Debug.write("[width, height] ", this.src, 
this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, 
this.height);
-               this.sprite.imgLoader.width = this.width;
-               this.sprite.imgLoader.height = this.height;
-       </method>
-       
-       <method name="loadOmSrc" args="src">
-       <![CDATA[
-               //if ($debug) Debug.write("omImage::loadOmSrc src  ", src);
-               if (src != null) {
-                       this.setSource(src);
-                       loadOmImage(null);
-               }
-       ]]>
-       </method>
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<library>
+
+<class name="omImage" extends="image">
+       <handler name="onsrc" method="loadOmSrc" />
+       <handler name="oninit" method="loadOmImage" />
+
+       <method name="loadOmImage" args="ignore">
+       <![CDATA[
+               if (this.src != '' && this.src != null) {
+                       canvas.loadImgBySrc(this, this.src, completeCallback);
+               }
+       ]]>
+       </method>
+
+       <method name="completeCallback" args="event">
+               //if($debug) Debug.write("[width, height] ", this.src, 
this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, 
this.height);
+               this.sprite.imgLoader.width = this.width;
+               this.sprite.imgLoader.height = this.height;
+       </method>
+       
+       <method name="loadOmSrc" args="src">
+       <![CDATA[
+               //if ($debug) Debug.write("omImage::loadOmSrc src  ", src);
+               if (src != null) {
+                       this.setSource(src);
+                       loadOmImage(null);
+               }
+       ]]>
+       </method>
+</class>
+
+</library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx 
b/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
index 7dfed47..44484cd 100644
--- a/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/omMiniIcon.lzx
@@ -1,37 +1,37 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-<library>
-
-<class name="omMiniIcon">
-       <attribute name="imgUrl" value="" type="string" />
-       
-       <handler name="oninit">
-               canvas.loadImgBySrc(this, imgUrl, completeCallback);
-       </handler>
-       
-       <method name="completeCallback" args="event">
-               //if ($debug) Debug.info("omMiniIcon::completeCallback: ", 
imgUrl, this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, 
this.height);
-               this.sprite.imgLoader.width = this.width;
-               this.sprite.imgLoader.height = this.height;
-       </method>
-</class>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<library>
+
+<class name="omMiniIcon">
+       <attribute name="imgUrl" value="" type="string" />
+       
+       <handler name="oninit">
+               canvas.loadImgBySrc(this, imgUrl, completeCallback);
+       </handler>
+       
+       <method name="completeCallback" args="event">
+               //if ($debug) Debug.info("omMiniIcon::completeCallback: ", 
imgUrl, this.sprite.imgLoader.width, this.sprite.imgLoader.height, this.width, 
this.height);
+               this.sprite.imgLoader.width = this.width;
+               this.sprite.imgLoader.height = this.height;
+       </method>
+</class>
+
+</library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
----------------------------------------------------------------------
diff --git 
a/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx 
b/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
index 9ee00e1..a0af972 100644
--- a/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/scrollbars/library.lzx
@@ -1,44 +1,44 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-<library>
-
-       <!-- APL Author sebawagner -->
-       <resource name="omscrolltrack_y_rsc" src="resources/y_scrolltrack.swf" 
/>
-       
-       <!-- APL Author sebawagner -->
-    <resource name="omscrollbar_ythumbmiddle_rsc" 
src="resources/scrollthumb_y_mid.swf" />
-    <!-- APL Author sebawagner -->
-    <resource name="omscrollbar_ythumbtop_rsc" 
src="resources/scrollthumb_y_top.swf" />
-    <!-- APL Author sebawagner -->
-    <resource name="omscrollbar_ythumbbottom_rsc" 
src="resources/scrollthumb_y_bottom.swf" />
-    <!-- APL Author sebawagner -->
-       <resource name="omscrolltrack_x_rsc" src="resources/x_scrolltrack.swf" 
/>
-       <!-- APL Author sebawagner -->
-    <resource name="omscrollbar_xthumbmiddle_rsc" 
src="resources/scrollthumb_x_mid.swf" />
-    <!-- APL Author sebawagner -->
-    <resource name="omscrollbar_xthumbleft_rsc" 
src="resources/scrollthumb_x_left.swf" />
-    <!-- APL Author sebawagner -->
-    <resource name="omscrollbar_xthumbright_rsc" 
src="resources/scrollthumb_x_right.swf" />
-
-       <include href="om_vscrollbar.lzx"/>
-       <include href="om_hscrollbar.lzx"/>
-
-</library>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<library>
+
+       <!-- APL Author sebawagner -->
+       <resource name="omscrolltrack_y_rsc" src="resources/y_scrolltrack.swf" 
/>
+       
+       <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbmiddle_rsc" 
src="resources/scrollthumb_y_mid.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbtop_rsc" 
src="resources/scrollthumb_y_top.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_ythumbbottom_rsc" 
src="resources/scrollthumb_y_bottom.swf" />
+    <!-- APL Author sebawagner -->
+       <resource name="omscrolltrack_x_rsc" src="resources/x_scrolltrack.swf" 
/>
+       <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbmiddle_rsc" 
src="resources/scrollthumb_x_mid.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbleft_rsc" 
src="resources/scrollthumb_x_left.swf" />
+    <!-- APL Author sebawagner -->
+    <resource name="omscrollbar_xthumbright_rsc" 
src="resources/scrollthumb_x_right.swf" />
+
+       <include href="om_vscrollbar.lzx"/>
+       <include href="om_hscrollbar.lzx"/>
+
+</library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
----------------------------------------------------------------------
diff --git 
a/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
 
b/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
index bc08ffe..ed0b7f6 100644
--- 
a/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
+++ 
b/openmeetings-flash/src/main/swf/base/components/scrollbars/scrollbar_yresources.lzx
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-<library>
-
-
-    
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<library>
+
+
+    
 </library>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx 
b/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
index 5c71fb5..7ca59ab 100644
--- a/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
+++ b/openmeetings-flash/src/main/swf/base/remote/baseVideoStream.lzx
@@ -1,385 +1,385 @@
-<library>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-                 
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-
-<!---
-       extends the Video-View with Streaming functions
- -->
-
-<class name="baseVideoStream" extends="baseVideoView">
-
-       <switch>
-       <when property="$as3">
-               <passthrough>
-                       import flash.events.*;
-                       import flash.net.*;
-                       import flash.media.*
-               </passthrough>
-       </when>
-       </switch>
-       
-       <attribute name="yDebug" value="-20" type="number" />
-       
-       <method name="getYDebug">
-               this.yDebug += 20;
-               return this.yDebug;
-       </method>
-
-       <!--- the NetStream Object
-                         @keywords final -->
-       <attribute name="_ns" value="null" />
-
-       <!--- This value does indicate if this stream play or broadcasts
-                         @keywords readonly -->
-       <attribute name="mode" value="play" type="string" />
-
-       <!--- This is the current buffer used, in Live Streaming this MUST be 0
-                         @keywords readonly -->
-       <attribute name="bufferTime" value="0" type="number" />
-
-       <!--- This is a reference to the current microphone, only set if 
broadcasting
-                         @keywords readonly -->
-       <attribute name="micro" value="null" />
-
-       <!--- This is a reference to the current camara, only set if 
broadcasting
-                         @keywords readonly -->
-       <attribute name="camera" value="null" />
-
-       <!--- Reference To the Sound Object
-               @keywords final -->
-       <attribute name="soundRef" value="null" />
-       <!--- Reference To the Sound MovieClip
-               @keywords final -->
-       <attribute name="soundRefMC" value="null" />
-
-       <!--- Default mic gain -->
-       <attribute name="micGain" value="50" type="number"/>
-       
-       <attribute name="micMuted" value="false" />
-
-       <event name="onMetaDataEvent" />
-       <event name="onPlayStatusEvent" />
-       <event name="onCuePointEvent" />
-       <event name="onAsyncError" />
-       <event name="onNetStatus" />
-       <event name="onIoError" />
-
-       <!-- save value for restart -->
-               <attribute name="streamName" type="string"/>
-               <attribute name="delay" />
-       <!--- @keywords private -->
-       <method name="createStream">
-               var tStream = this._findnc();
-               if (!tStream.connected) {
-                       if ($debug) Debug.warn("NetConnection is not 
connected");
-               }
-               this._ns = new NetStream(tStream);
-               //see: 
http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
-               //according to the docs the construct to catch event has to be 
implemented like this.
-               var t = this;
-               var clientObject = new Object();
-               clientObject.onMetaData = function(metadata:Object):void {
-                       t.onMetaData(metadata);
-               };
-               clientObject.onPlayStatus = function(metadata:Object):void {
-                       t.onPlayStatus(metadata);
-               };
-               clientObject.onCuePoint = function(metadata:Object):void {
-                       t.onCuePoint(metadata);
-               };
-               clientObject.ioError = function(error:Object):void {
-                       t.ioError(error);
-               };
-               clientObject.netStatus = function(status:Object):void {
-                       t.netStatus(status);
-               };
-               clientObject.asyncError = function(error:Object):void {
-                       t.asyncError(error);
-               };
-               this._ns.client = clientObject;
-               //this is a workaround, attaching the event to the client 
object does not work
-               this._ns.addEventListener(NetStatusEvent.NET_STATUS, 
onNetStatus2);
-       </method>
-       
-       <method name="onNetStatus2" args="evt">
-               if($debug) Debug.write("netStream_onNetStatus: " , 
evt.info.code, evt.target);
-               this.onNetStatus.sendEvent(evt.info);
-       </method>
-       
-       <method name="asyncError" args="error">
-               if($debug) Debug.write("simpleNetStream asyncError",error);
-               this.onAsyncError.sendEvent(error);
-       </method>
-       
-       <method name="netStatus" args="status">
-               if($debug) Debug.write("simpleNetStream netStatus",status);
-               this.onNetStatus.sendEvent(status);
-       </method>
-       
-       <method name="ioError" args="error">
-               if($debug) Debug.write("simpleNetStream ioError",error);
-               this.onIoError.sendEvent(error);
-       </method>
-
-       <method name="onCuePoint" args="info"><![CDATA[
-               if($debug) Debug.write("simpleNetStream onCuePoint",info);
-               this.onCuePointEvent.sendEvent(info);
-       ]]></method>
-
-       <method name="onPlayStatus" args="info"><![CDATA[
-               if($debug) Debug.write("simpleNetStream onPlayStatus",info);
-               this.onPlayStatusEvent.sendEvent(info);
-       ]]></method>
-
-       <method name="onMetaData" args="info"><![CDATA[
-               if($debug) Debug.write("simpleNetStream onMetaData",info);
-               this.onMetaDataEvent.sendEvent(info);
-       ]]></method>
-
-       <!--- Find the Flash NetConnection object.
-                 @keywords private -->
-       <method name="_findnc">
-               if (canvas.currentNC == null) {
-                       if ($debug) Debug.warn("canvas.currentNC is NULL, maybe 
connection did fail?");
-               }
-               return canvas.currentNC;
-       </method>
-
-       <!---
-               Plays a Video Stream, makes a new Instance of a NetStream, if 
previous NetStream
-               is still open it will first close that, used to subscribe to a 
live-stream
-               @param string streamName the streamname to play
-               @param number delay The time it should seek, for Live-Streams 
this value should be -1
-        -->
-       <method name="playStream" args="_streamName, delay">
-       <![CDATA[
-               this.streamName = "" + _streamName;
-               this.delay = delay;
-               if (this._ns != null){
-                       this._stop();
-               }
-               this.mode = "play";
-               this.createStream();
-               //invokes Method in baseVideoView which shows the stream
-               this.attachVideo(this._ns);
-               //FIXME: Commented out, cause this leads to 
Buffer-Full/Buffer-Empty Events
-               //after re-syncing the stream
-               //this.setBuffer(0.1);
-               if ($debug) Debug.write("Play Stream '" + streamName + "'");
-               if (delay == 0) {
-                       this._ns.play(streamName);
-               } else {
-                       this._ns.play(streamName,delay);
-               }
-       ]]>
-       </method>
-
-       <method name="justPlayStream" args="_streamName, delay">
-               <![CDATA[
-                       this.streamName = "" + _streamName;
-                       this.delay=delay;
-                       if (this._ns!=null){
-                               if ($debug) Debug.write("STOP NS is NOT null ")
-                               this._stop();
-                       }
-                       this.mode = "play";
-                       this.createStream();
-                       //invokes Method in baseVideoView which shows the stream
-                       this.attachVideo(this._ns);
-                       //FIXME: Commented out, cause this leads to 
Buffer-Full/Buffer-Empty Events
-                       //after re-syncing the stream
-
-                       this.setBuffer(6);
-
-                       if ($debug) Debug.write("Just Play Stream "+streamName);
-
-                       this._ns.play(streamName,delay);
-               ]]>
-       </method>
-
-       <method name="prepare" args="mode, streamName, camReference, 
micReference">
-       <![CDATA[
-               if (this._ns != null){
-                       this._stop();
-               }
-               this.mode = mode;
-               this.createStream();
-               
-               if (camReference != null) {
-                       this.setAttribute('camera', camReference);
-                       this._ns.attachCamera(camReference);
-                       //invokes Method in baseVideoView which shows the cam
-                       this.attachCamera(camReference);
-                       
-                       var videoStreamSettings = null;
-                       if ($debug) Debug.write("codecType=" + 
canvas.codecType);
-                       if (canvas.codecType === "h264") {
-                               videoStreamSettings = new 
H264VideoStreamSettings();
-                               
videoStreamSettings.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_3_1);
-                       } else {
-                               videoStreamSettings = new VideoStreamSettings();
-                       }
-                       videoStreamSettings.setQuality(camReference.bandwidth, 
camReference.quality);
-                       
videoStreamSettings.setKeyFrameInterval(camReference.keyFrameInterval);
-                       if ($debug) Debug.write("::keyFrameInterval " + 
camReference.keyFrameInterval);
-                       videoStreamSettings.setMode(camReference.width, 
camReference.height, camReference.fps);
-                       this._ns.videoStreamSettings = videoStreamSettings;
-               }
-               if (micReference != null) {
-                       this.setAttribute('micro', micReference);
-                       this._ns.attachAudio(micReference);
-                       //FIXME TODO muteMicro(this.micMuted);
-               }
-               this._ns.publish("" + streamName, (mode == "broadcast") ? 
"live" : mode);
-       ]]>
-       </method>
-       <!---
-               BroadCasts a Stream
-               @param string streamName the streamname to broadcast
-               @param camera camReference a reference to the Camera-Object to 
stream
-               @param micropone micReference a reference to the Micropohne 
Object to stream
-        -->
-       <method name="broadcast" args="streamName,camReference,micReference">
-               prepare("broadcast", streamName, camReference, micReference);
-       </method>
-
-       <method name="record" args="streamName,camReference,micReference">
-               prepare("record", streamName, camReference, micReference);
-       </method>
-       
-       <!---
-               Stops playing or broadcasting a Stream and clears the 
Video-Object
-        -->
-       <method name="_stop">
-               if ($debug) Debug.write("STOP: ",this.mode,this._ns);
-               //Stop NetStream
-               if (this._ns == null) return;
-               this.camera = null;
-               this.micro = null;
-               this._ns.attachCamera(null);
-               this._ns.attachAudio(null);
-               if (this.mode == "play") {
-                       this.soundRefMC = null;
-                       this.soundRef = null;
-                       this._ns.pause();
-                       this._ns.close();
-                       //remove NetStream from Video-Object
-                       this.clear();
-                       this._ns = null;
-               } else if (this.mode == "broadcast") {
-                       this._ns.publish(false);
-                       //remove NetStream from Video-Object
-                       this.clear();
-                       this._ns.close();
-                       this._ns = null;
-               } else if (this.mode == "record") {
-                       this._ns.publish(false);
-                       //remove NetStream from Video-Object
-                       this.clear();
-                       this._ns.close();
-                       this._ns = null;
-               } else {
-                       this.clear();
-                       this._ns.close();
-                       this._ns = null;
-                       if ($debug) Debug.warn("Not known Mode: 
",this.mode,this);
-               }
-       </method>
-
-       <method name="restart">
-                this._stop();
-                this.playStream(this.streamName ,this.delay);
-       </method>
-       
-       <method name="setBuffer" args="time">
-               if ($debug) Debug.warn("setBuffer has no 1:1 equivalent in AS3 
");
-               return;
-               if(this._ns!=null){
-                       this.bufferTime = time;
-                       this._ns.setBufferTime(time);
-               } else {
-                       if ($debug) Debug.warn("setBuffer but no NetStream 
initialized",this);
-               }
-       </method>
-
-       <!--- sets the Volume of the VideoStream
-               @param number volume Number between 0 and 100
-        -->
-       <method name="setSoundVolume" args="volume">
-               //if ($debug) Debug.write(":: setSoundVolume ", 
parent.parent.publicSID);
-               //this.soundRef.setVolume(volume);
-               if (this._ns!=null){
-                       this._ns.soundTransform = new 
SoundTransform(volume/100.0);
-               }
-       </method>
-
-       <method name="muteMicro" args="mute">
-               if ($debug) Debug.write(":: muteMicro ", mute, 
parent.parent.publicSID);
-               this.micMuted = mute;
-               if(this.micro != null) {
-                       if(mute) {
-                               if (this.micro.gain == 0) {
-                                       return;
-                               }
-                               if ($debug) Debug.write("Make Gain mute again 
from ",this.micro.gain);
-                               this.setAttribute('micGain', this.micro.gain);
-                               this.micro.gain = 0;
-                       } else {
-                               if ($debug) Debug.write("Make Gain loud again 
to ",this.micGain);
-                               this.micro.gain = this.micGain;
-                       }
-               }
-       </method>
-       
-       <!---
-               pause or resumes the NetStream
-               @args pauseStatus true pause, false resume
-        -->
-       <method name="pause" args="pauseStatus">
-               if ($debug) Debug.write("do Pause",pauseStatus);
-               if (this._ns==null){
-                       if ($debug) Debug.warn("No NetStream");
-                       return;
-               }
-               if (pauseStatus) {
-                       this._ns.pause();
-               } else {
-                       this._ns.resume();
-               }
-       </method>
-       
-       <!---
-               Seek the stream to a flvTime
-               this might only work if there are keyframes in the FLV, 
normally it should 
-               try to use the nearest keyframe available for the specified 
time.
-        -->
-       <method name="seekStream" args="flvTime">
-               if ($debug) Debug.write("do seek",flvTime);
-               if (this._ns==null){
-                       if ($debug) Debug.warn("No NetStream");
-                       return;
-               }
-               this._ns.seek(flvTime);
-       </method>
-
-</class>
-
-
-</library>
+<library>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+                 
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+
+<!---
+       extends the Video-View with Streaming functions
+ -->
+
+<class name="baseVideoStream" extends="baseVideoView">
+
+       <switch>
+       <when property="$as3">
+               <passthrough>
+                       import flash.events.*;
+                       import flash.net.*;
+                       import flash.media.*
+               </passthrough>
+       </when>
+       </switch>
+       
+       <attribute name="yDebug" value="-20" type="number" />
+       
+       <method name="getYDebug">
+               this.yDebug += 20;
+               return this.yDebug;
+       </method>
+
+       <!--- the NetStream Object
+                         @keywords final -->
+       <attribute name="_ns" value="null" />
+
+       <!--- This value does indicate if this stream play or broadcasts
+                         @keywords readonly -->
+       <attribute name="mode" value="play" type="string" />
+
+       <!--- This is the current buffer used, in Live Streaming this MUST be 0
+                         @keywords readonly -->
+       <attribute name="bufferTime" value="0" type="number" />
+
+       <!--- This is a reference to the current microphone, only set if 
broadcasting
+                         @keywords readonly -->
+       <attribute name="micro" value="null" />
+
+       <!--- This is a reference to the current camara, only set if 
broadcasting
+                         @keywords readonly -->
+       <attribute name="camera" value="null" />
+
+       <!--- Reference To the Sound Object
+               @keywords final -->
+       <attribute name="soundRef" value="null" />
+       <!--- Reference To the Sound MovieClip
+               @keywords final -->
+       <attribute name="soundRefMC" value="null" />
+
+       <!--- Default mic gain -->
+       <attribute name="micGain" value="50" type="number"/>
+       
+       <attribute name="micMuted" value="false" />
+
+       <event name="onMetaDataEvent" />
+       <event name="onPlayStatusEvent" />
+       <event name="onCuePointEvent" />
+       <event name="onAsyncError" />
+       <event name="onNetStatus" />
+       <event name="onIoError" />
+
+       <!-- save value for restart -->
+               <attribute name="streamName" type="string"/>
+               <attribute name="delay" />
+       <!--- @keywords private -->
+       <method name="createStream">
+               var tStream = this._findnc();
+               if (!tStream.connected) {
+                       if ($debug) Debug.warn("NetConnection is not 
connected");
+               }
+               this._ns = new NetStream(tStream);
+               //see: 
http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/net/NetStream.html
+               //according to the docs the construct to catch event has to be 
implemented like this.
+               var t = this;
+               var clientObject = new Object();
+               clientObject.onMetaData = function(metadata:Object):void {
+                       t.onMetaData(metadata);
+               };
+               clientObject.onPlayStatus = function(metadata:Object):void {
+                       t.onPlayStatus(metadata);
+               };
+               clientObject.onCuePoint = function(metadata:Object):void {
+                       t.onCuePoint(metadata);
+               };
+               clientObject.ioError = function(error:Object):void {
+                       t.ioError(error);
+               };
+               clientObject.netStatus = function(status:Object):void {
+                       t.netStatus(status);
+               };
+               clientObject.asyncError = function(error:Object):void {
+                       t.asyncError(error);
+               };
+               this._ns.client = clientObject;
+               //this is a workaround, attaching the event to the client 
object does not work
+               this._ns.addEventListener(NetStatusEvent.NET_STATUS, 
onNetStatus2);
+       </method>
+       
+       <method name="onNetStatus2" args="evt">
+               if($debug) Debug.write("netStream_onNetStatus: " , 
evt.info.code, evt.target);
+               this.onNetStatus.sendEvent(evt.info);
+       </method>
+       
+       <method name="asyncError" args="error">
+               if($debug) Debug.write("simpleNetStream asyncError",error);
+               this.onAsyncError.sendEvent(error);
+       </method>
+       
+       <method name="netStatus" args="status">
+               if($debug) Debug.write("simpleNetStream netStatus",status);
+               this.onNetStatus.sendEvent(status);
+       </method>
+       
+       <method name="ioError" args="error">
+               if($debug) Debug.write("simpleNetStream ioError",error);
+               this.onIoError.sendEvent(error);
+       </method>
+
+       <method name="onCuePoint" args="info"><![CDATA[
+               if($debug) Debug.write("simpleNetStream onCuePoint",info);
+               this.onCuePointEvent.sendEvent(info);
+       ]]></method>
+
+       <method name="onPlayStatus" args="info"><![CDATA[
+               if($debug) Debug.write("simpleNetStream onPlayStatus",info);
+               this.onPlayStatusEvent.sendEvent(info);
+       ]]></method>
+
+       <method name="onMetaData" args="info"><![CDATA[
+               if($debug) Debug.write("simpleNetStream onMetaData",info);
+               this.onMetaDataEvent.sendEvent(info);
+       ]]></method>
+
+       <!--- Find the Flash NetConnection object.
+                 @keywords private -->
+       <method name="_findnc">
+               if (canvas.currentNC == null) {
+                       if ($debug) Debug.warn("canvas.currentNC is NULL, maybe 
connection did fail?");
+               }
+               return canvas.currentNC;
+       </method>
+
+       <!---
+               Plays a Video Stream, makes a new Instance of a NetStream, if 
previous NetStream
+               is still open it will first close that, used to subscribe to a 
live-stream
+               @param string streamName the streamname to play
+               @param number delay The time it should seek, for Live-Streams 
this value should be -1
+        -->
+       <method name="playStream" args="_streamName, delay">
+       <![CDATA[
+               this.streamName = "" + _streamName;
+               this.delay = delay;
+               if (this._ns != null){
+                       this._stop();
+               }
+               this.mode = "play";
+               this.createStream();
+               //invokes Method in baseVideoView which shows the stream
+               this.attachVideo(this._ns);
+               //FIXME: Commented out, cause this leads to 
Buffer-Full/Buffer-Empty Events
+               //after re-syncing the stream
+               //this.setBuffer(0.1);
+               if ($debug) Debug.write("Play Stream '" + streamName + "'");
+               if (delay == 0) {
+                       this._ns.play(streamName);
+               } else {
+                       this._ns.play(streamName,delay);
+               }
+       ]]>
+       </method>
+
+       <method name="justPlayStream" args="_streamName, delay">
+               <![CDATA[
+                       this.streamName = "" + _streamName;
+                       this.delay=delay;
+                       if (this._ns!=null){
+                               if ($debug) Debug.write("STOP NS is NOT null ")
+                               this._stop();
+                       }
+                       this.mode = "play";
+                       this.createStream();
+                       //invokes Method in baseVideoView which shows the stream
+                       this.attachVideo(this._ns);
+                       //FIXME: Commented out, cause this leads to 
Buffer-Full/Buffer-Empty Events
+                       //after re-syncing the stream
+
+                       this.setBuffer(6);
+
+                       if ($debug) Debug.write("Just Play Stream "+streamName);
+
+                       this._ns.play(streamName,delay);
+               ]]>
+       </method>
+
+       <method name="prepare" args="mode, streamName, camReference, 
micReference">
+       <![CDATA[
+               if (this._ns != null){
+                       this._stop();
+               }
+               this.mode = mode;
+               this.createStream();
+               
+               if (camReference != null) {
+                       this.setAttribute('camera', camReference);
+                       this._ns.attachCamera(camReference);
+                       //invokes Method in baseVideoView which shows the cam
+                       this.attachCamera(camReference);
+                       
+                       var videoStreamSettings = null;
+                       if ($debug) Debug.write("codecType=" + 
canvas.codecType);
+                       if (canvas.codecType === "h264") {
+                               videoStreamSettings = new 
H264VideoStreamSettings();
+                               
videoStreamSettings.setProfileLevel(H264Profile.BASELINE, H264Level.LEVEL_3_1);
+                       } else {
+                               videoStreamSettings = new VideoStreamSettings();
+                       }
+                       videoStreamSettings.setQuality(camReference.bandwidth, 
camReference.quality);
+                       
videoStreamSettings.setKeyFrameInterval(camReference.keyFrameInterval);
+                       if ($debug) Debug.write("::keyFrameInterval " + 
camReference.keyFrameInterval);
+                       videoStreamSettings.setMode(camReference.width, 
camReference.height, camReference.fps);
+                       this._ns.videoStreamSettings = videoStreamSettings;
+               }
+               if (micReference != null) {
+                       this.setAttribute('micro', micReference);
+                       this._ns.attachAudio(micReference);
+                       //FIXME TODO muteMicro(this.micMuted);
+               }
+               this._ns.publish("" + streamName, (mode == "broadcast") ? 
"live" : mode);
+       ]]>
+       </method>
+       <!---
+               BroadCasts a Stream
+               @param string streamName the streamname to broadcast
+               @param camera camReference a reference to the Camera-Object to 
stream
+               @param micropone micReference a reference to the Micropohne 
Object to stream
+        -->
+       <method name="broadcast" args="streamName,camReference,micReference">
+               prepare("broadcast", streamName, camReference, micReference);
+       </method>
+
+       <method name="record" args="streamName,camReference,micReference">
+               prepare("record", streamName, camReference, micReference);
+       </method>
+       
+       <!---
+               Stops playing or broadcasting a Stream and clears the 
Video-Object
+        -->
+       <method name="_stop">
+               if ($debug) Debug.write("STOP: ",this.mode,this._ns);
+               //Stop NetStream
+               if (this._ns == null) return;
+               this.camera = null;
+               this.micro = null;
+               this._ns.attachCamera(null);
+               this._ns.attachAudio(null);
+               if (this.mode == "play") {
+                       this.soundRefMC = null;
+                       this.soundRef = null;
+                       this._ns.pause();
+                       this._ns.close();
+                       //remove NetStream from Video-Object
+                       this.clear();
+                       this._ns = null;
+               } else if (this.mode == "broadcast") {
+                       this._ns.publish(false);
+                       //remove NetStream from Video-Object
+                       this.clear();
+                       this._ns.close();
+                       this._ns = null;
+               } else if (this.mode == "record") {
+                       this._ns.publish(false);
+                       //remove NetStream from Video-Object
+                       this.clear();
+                       this._ns.close();
+                       this._ns = null;
+               } else {
+                       this.clear();
+                       this._ns.close();
+                       this._ns = null;
+                       if ($debug) Debug.warn("Not known Mode: 
",this.mode,this);
+               }
+       </method>
+
+       <method name="restart">
+                this._stop();
+                this.playStream(this.streamName ,this.delay);
+       </method>
+       
+       <method name="setBuffer" args="time">
+               if ($debug) Debug.warn("setBuffer has no 1:1 equivalent in AS3 
");
+               return;
+               if(this._ns!=null){
+                       this.bufferTime = time;
+                       this._ns.setBufferTime(time);
+               } else {
+                       if ($debug) Debug.warn("setBuffer but no NetStream 
initialized",this);
+               }
+       </method>
+
+       <!--- sets the Volume of the VideoStream
+               @param number volume Number between 0 and 100
+        -->
+       <method name="setSoundVolume" args="volume">
+               //if ($debug) Debug.write(":: setSoundVolume ", 
parent.parent.publicSID);
+               //this.soundRef.setVolume(volume);
+               if (this._ns!=null){
+                       this._ns.soundTransform = new 
SoundTransform(volume/100.0);
+               }
+       </method>
+
+       <method name="muteMicro" args="mute">
+               if ($debug) Debug.write(":: muteMicro ", mute, 
parent.parent.publicSID);
+               this.micMuted = mute;
+               if(this.micro != null) {
+                       if(mute) {
+                               if (this.micro.gain == 0) {
+                                       return;
+                               }
+                               if ($debug) Debug.write("Make Gain mute again 
from ",this.micro.gain);
+                               this.setAttribute('micGain', this.micro.gain);
+                               this.micro.gain = 0;
+                       } else {
+                               if ($debug) Debug.write("Make Gain loud again 
to ",this.micGain);
+                               this.micro.gain = this.micGain;
+                       }
+               }
+       </method>
+       
+       <!---
+               pause or resumes the NetStream
+               @args pauseStatus true pause, false resume
+        -->
+       <method name="pause" args="pauseStatus">
+               if ($debug) Debug.write("do Pause",pauseStatus);
+               if (this._ns==null){
+                       if ($debug) Debug.warn("No NetStream");
+                       return;
+               }
+               if (pauseStatus) {
+                       this._ns.pause();
+               } else {
+                       this._ns.resume();
+               }
+       </method>
+       
+       <!---
+               Seek the stream to a flvTime
+               this might only work if there are keyframes in the FLV, 
normally it should 
+               try to use the nearest keyframe available for the specified 
time.
+        -->
+       <method name="seekStream" args="flvTime">
+               if ($debug) Debug.write("do seek",flvTime);
+               if (this._ns==null){
+                       if ($debug) Debug.warn("No NetStream");
+                       return;
+               }
+               this._ns.seek(flvTime);
+       </method>
+
+</class>
+
+
+</library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
----------------------------------------------------------------------
diff --git 
a/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx 
b/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
index da1717b..57073ff 100644
--- a/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
+++ b/openmeetings-flash/src/main/swf/base/remote/baseVideoStreamDevice.lzx
@@ -1,172 +1,172 @@
-<library>
-       <!-- Licensed to the Apache Software Foundation (ASF) under one or more 
-               contributor license agreements. See the NOTICE file distributed 
with this 
-               work for additional information regarding copyright ownership. 
The ASF licenses 
-               this file to you under the Apache License, Version 2.0 (the 
"License"); you 
-               may not use this file except in compliance with the License. 
You may obtain 
-               a copy of the License at 
http://www.apache.org/licenses/LICENSE-2.0 Unless 
-               required by applicable law or agreed to in writing, software 
distributed 
-               under the License is distributed on an "AS IS" BASIS, WITHOUT 
WARRANTIES 
-               OR CONDITIONS OF ANY KIND, either express or implied. See the 
License for 
-               the specific language governing permissions and limitations 
under the License. -->
-
-       <!--- extends the baseVideoStream with functions to catch Device Events 
-               this Class uses Events from the Base Class baseVideoStream 
onmicro and oncamera, 
-               which are thrown, once a device was set -->
-
-       <class name="baseVideoStreamDevice" extends="baseVideoStream">
-               <switch>
-                       <when property="$as3">
-                               <passthrough>
-                                       import flash.events.StatusEvent;
-                                       import flash.events.ActivityEvent;
-                                       import flash.external.ExternalInterface;
-                               </passthrough>
-                       </when>
-               </switch>
-
-               <!--- Shows if there is Activity on the Microphone -->
-               <attribute name="micactive" value="false" type="boolean" />
-
-               <!--- Level delegate, used to track level changes.
-                       @keywords private -->
-               <attribute name="_leveldel"
-                       value="$once{new LzDelegate(this, '_updateLevel')}" />
-
-               <!--- Audio level, 0-100, the amount of sound detected by this 
microphone. 
-                       Reset to 0 when there is no audio (no activity or not 
allowed).
-                       @keywords readonly -->
-               <attribute name="level" type="number" value="0" />
-
-               <!--- Shows if there is Activity on the Camera -->
-               <attribute name="camactive" value="false" type="boolean" />
-
-               <!--- Message to send to Clients -->
-               <attribute name="objMessage" value="null" />
-               <!--- indicates if the message should be send, you can change 
the notification 
-                       level by changing the loudnessAcitviation in the 
public/config.xml -->
-               <attribute name="isgreater" value="false" type="boolean" />
-
-               <attribute name="doSendNotification" value="true" 
type="boolean" />
-
-               <!--- If true the component will send an event via 
LocalConnection when 
-                       sound is louder or less 5% -->
-               <attribute name="sendNotificationViaLocalConnection" 
value="true"
-                       type="boolean" />
-
-               <event name="sendCameraStatus" />
-
-               <event name="sendMicroStatus" />
-
-               <handler name="oncamera" args="c">
-                       //if ($debug) Debug.write("Cam: ",c);
-                       c.addEventListener(ActivityEvent.ACTIVITY, onActivity);
-                       c.addEventListener(StatusEvent.STATUS, onStatus);
-               </handler>
-
-               <method name="onStatus" args="stats">
-                       if ($debug) Debug.write("CamStatus: ",stats);
-                       this.sendCameraStatus.sendEvent(stats.code);
-               </method>
-
-               <method name="onActivity" args="event">
-                       this.setAttribute("camactive", event.activating);
-               </method>
-
-               <handler name="onmicro" args="m">
-                       //if ($debug) Debug.write("onmicro: ",m);
-                       var t = this;
-                       //send mic active to true to start the onActivity 
callback Idle job
-                       this.setAttribute("micactive", true);
-                       m.addEventListener(ActivityEvent.ACTIVITY, 
onMicActivity);
-                       m.addEventListener(StatusEvent.STATUS, onMicStatus);
-               </handler>
-
-               <method name="onMicStatus" args="stats">
-                       if ($debug) Debug.write("onMicStatus 1: ",stats);
-                       this.sendMicroStatus.sendEvent(stats.code);
-               </method>
-
-               <method name="onMicActivity" args="event">
-                       if ($debug) Debug.write("onMicActivity: ",event);
-               </method>
-
-               <!--- Handler for the Flash Microphone onActivity callback.
-                       @keywords private -->
-               <handler name="onmicactive">
-               <![CDATA[
-                       if (this.onlevel) {
-                               if (this.micactive) {
-                                       this._leveldel.register(lz.Idle, 
"onidle");
-                               } else {
-                                       this._leveldel.unregisterAll();
-                                       this.setAttribute("level", 0);
-                               }
-                       }
-               ]]>
-               </handler>
-
-               <!--- Handler for updating the microphone activity level 
attribute.
-                       @keywords private -->
-               <method name="_updateLevel" args="arg">
-               <![CDATA[
-                       if (this.micro == null) {
-                               return;
-                       }
-                       var level = this.micro.activityLevel;
-                       if (level < 0) {
-                               level = 0;
-                       }
-
-                       if (level != this.level) {
-                               this.setAttribute("level", level);
-                       }
-               ]]>
-               </method>
-
-               <!-- these methods send a Notification to all Connected users 
of a Room 
-                       about the onActivity-Change -->
-               <handler name="onlevel" args="level">
-               <![CDATA[
-                       //if ($debug) Debug.write("onlevel ",this.level,level);
-                       
-                       if (!this.doSendNotification) {
-                               return;
-                       }
-                       
-                       //greater 5 means the green dot starts to blink if the 
loudness is greater then 5%
-                       //it makes no sense to set this to zero as there will 
be 1000 of events send
-                       //per minute to change the status just of this icon, 
swagner 12.02.2012
-                       var tVal = (level > 8);
-                       
-                       if (this.isgreater != tVal) {
-                               //if ($debug) Debug.write("Level 
sendNotification ",this.isgreater,tVal,level);
-                               this.isgreater = tVal;
-                               this.sendNotification();
-                       }
-               ]]>
-               </handler>
-
-               <method name="sendNotification">
-                       //if ($debug) Debug.write("Level sendNotification 
",this.isgreater);
-                       if (!this.sendNotificationViaLocalConnection) {
-                               return;
-                       }
-                       if (parent.parent._loudness != null) {
-                               
parent.parent._loudness.setSpeaking(this.isgreater);
-                       }
-                       this.objMessage = new Array ();
-                       this.objMessage[0] = 'audioActivity';
-                       this.objMessage[1] = this.isgreater;
-                       this.objMessage[2] = parent.parent.publicSID;
-                       ExternalInterface.call("audioActivity", 
parent.parent.publicSID, this.isgreater);
-                       //if ($debug) Debug.write("Level sendNotification 
",this.objMessage);
-                       this.sendMessage.doCall();
-               </method>
-
-               <netRemoteCallHib name="sendMessage" funcname="sendMessage"
-                       remotecontext="$once{ canvas.thishib }" 
showLoading="false">
-                       <netparam><method name="getValue"> return 
parent.parent.objMessage; </method></netparam>
-               </netRemoteCallHib>
-       </class>
-</library>
+<library>
+       <!-- Licensed to the Apache Software Foundation (ASF) under one or more 
+               contributor license agreements. See the NOTICE file distributed 
with this 
+               work for additional information regarding copyright ownership. 
The ASF licenses 
+               this file to you under the Apache License, Version 2.0 (the 
"License"); you 
+               may not use this file except in compliance with the License. 
You may obtain 
+               a copy of the License at 
http://www.apache.org/licenses/LICENSE-2.0 Unless 
+               required by applicable law or agreed to in writing, software 
distributed 
+               under the License is distributed on an "AS IS" BASIS, WITHOUT 
WARRANTIES 
+               OR CONDITIONS OF ANY KIND, either express or implied. See the 
License for 
+               the specific language governing permissions and limitations 
under the License. -->
+
+       <!--- extends the baseVideoStream with functions to catch Device Events 
+               this Class uses Events from the Base Class baseVideoStream 
onmicro and oncamera, 
+               which are thrown, once a device was set -->
+
+       <class name="baseVideoStreamDevice" extends="baseVideoStream">
+               <switch>
+                       <when property="$as3">
+                               <passthrough>
+                                       import flash.events.StatusEvent;
+                                       import flash.events.ActivityEvent;
+                                       import flash.external.ExternalInterface;
+                               </passthrough>
+                       </when>
+               </switch>
+
+               <!--- Shows if there is Activity on the Microphone -->
+               <attribute name="micactive" value="false" type="boolean" />
+
+               <!--- Level delegate, used to track level changes.
+                       @keywords private -->
+               <attribute name="_leveldel"
+                       value="$once{new LzDelegate(this, '_updateLevel')}" />
+
+               <!--- Audio level, 0-100, the amount of sound detected by this 
microphone. 
+                       Reset to 0 when there is no audio (no activity or not 
allowed).
+                       @keywords readonly -->
+               <attribute name="level" type="number" value="0" />
+
+               <!--- Shows if there is Activity on the Camera -->
+               <attribute name="camactive" value="false" type="boolean" />
+
+               <!--- Message to send to Clients -->
+               <attribute name="objMessage" value="null" />
+               <!--- indicates if the message should be send, you can change 
the notification 
+                       level by changing the loudnessAcitviation in the 
public/config.xml -->
+               <attribute name="isgreater" value="false" type="boolean" />
+
+               <attribute name="doSendNotification" value="true" 
type="boolean" />
+
+               <!--- If true the component will send an event via 
LocalConnection when 
+                       sound is louder or less 5% -->
+               <attribute name="sendNotificationViaLocalConnection" 
value="true"
+                       type="boolean" />
+
+               <event name="sendCameraStatus" />
+
+               <event name="sendMicroStatus" />
+
+               <handler name="oncamera" args="c">
+                       //if ($debug) Debug.write("Cam: ",c);
+                       c.addEventListener(ActivityEvent.ACTIVITY, onActivity);
+                       c.addEventListener(StatusEvent.STATUS, onStatus);
+               </handler>
+
+               <method name="onStatus" args="stats">
+                       if ($debug) Debug.write("CamStatus: ",stats);
+                       this.sendCameraStatus.sendEvent(stats.code);
+               </method>
+
+               <method name="onActivity" args="event">
+                       this.setAttribute("camactive", event.activating);
+               </method>
+
+               <handler name="onmicro" args="m">
+                       //if ($debug) Debug.write("onmicro: ",m);
+                       var t = this;
+                       //send mic active to true to start the onActivity 
callback Idle job
+                       this.setAttribute("micactive", true);
+                       m.addEventListener(ActivityEvent.ACTIVITY, 
onMicActivity);
+                       m.addEventListener(StatusEvent.STATUS, onMicStatus);
+               </handler>
+
+               <method name="onMicStatus" args="stats">
+                       if ($debug) Debug.write("onMicStatus 1: ",stats);
+                       this.sendMicroStatus.sendEvent(stats.code);
+               </method>
+
+               <method name="onMicActivity" args="event">
+                       if ($debug) Debug.write("onMicActivity: ",event);
+               </method>
+
+               <!--- Handler for the Flash Microphone onActivity callback.
+                       @keywords private -->
+               <handler name="onmicactive">
+               <![CDATA[
+                       if (this.onlevel) {
+                               if (this.micactive) {
+                                       this._leveldel.register(lz.Idle, 
"onidle");
+                               } else {
+                                       this._leveldel.unregisterAll();
+                                       this.setAttribute("level", 0);
+                               }
+                       }
+               ]]>
+               </handler>
+
+               <!--- Handler for updating the microphone activity level 
attribute.
+                       @keywords private -->
+               <method name="_updateLevel" args="arg">
+               <![CDATA[
+                       if (this.micro == null) {
+                               return;
+                       }
+                       var level = this.micro.activityLevel;
+                       if (level < 0) {
+                               level = 0;
+                       }
+
+                       if (level != this.level) {
+                               this.setAttribute("level", level);
+                       }
+               ]]>
+               </method>
+
+               <!-- these methods send a Notification to all Connected users 
of a Room 
+                       about the onActivity-Change -->
+               <handler name="onlevel" args="level">
+               <![CDATA[
+                       //if ($debug) Debug.write("onlevel ",this.level,level);
+                       
+                       if (!this.doSendNotification) {
+                               return;
+                       }
+                       
+                       //greater 5 means the green dot starts to blink if the 
loudness is greater then 5%
+                       //it makes no sense to set this to zero as there will 
be 1000 of events send
+                       //per minute to change the status just of this icon, 
swagner 12.02.2012
+                       var tVal = (level > 8);
+                       
+                       if (this.isgreater != tVal) {
+                               //if ($debug) Debug.write("Level 
sendNotification ",this.isgreater,tVal,level);
+                               this.isgreater = tVal;
+                               this.sendNotification();
+                       }
+               ]]>
+               </handler>
+
+               <method name="sendNotification">
+                       //if ($debug) Debug.write("Level sendNotification 
",this.isgreater);
+                       if (!this.sendNotificationViaLocalConnection) {
+                               return;
+                       }
+                       if (parent.parent._loudness != null) {
+                               
parent.parent._loudness.setSpeaking(this.isgreater);
+                       }
+                       this.objMessage = new Array ();
+                       this.objMessage[0] = 'audioActivity';
+                       this.objMessage[1] = this.isgreater;
+                       this.objMessage[2] = parent.parent.publicSID;
+                       ExternalInterface.call("audioActivity", 
parent.parent.publicSID, this.isgreater);
+                       //if ($debug) Debug.write("Level sendNotification 
",this.objMessage);
+                       this.sendMessage.doCall();
+               </method>
+
+               <netRemoteCallHib name="sendMessage" funcname="sendMessage"
+                       remotecontext="$once{ canvas.thishib }" 
showLoading="false">
+                       <netparam><method name="getValue"> return 
parent.parent.objMessage; </method></netparam>
+               </netRemoteCallHib>
+       </class>
+</library>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx 
b/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
index 4d92d37..aa42c1a 100644
--- a/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
+++ b/openmeetings-flash/src/main/swf/base/remote/baseVideoView.lzx
@@ -1,104 +1,104 @@
-<library>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-
-
-<!---
-       This class provides the basic functions for the video-output
-
-               @START_CODE
-                       <baseVideoView x="20" y="20" width="320" height="240" 
bgcolor="black" />
-               @END_CODE
- -->
-
-<class name="baseVideoView" width="${parent.width}" height="${parent.height}">
-       <passthrough when="$as3">
-               import flash.media.*;
-               import flash.net.NetConnection;
-               import flash.net.NetStream;
-       </passthrough>
-
-       <attribute name="_sound" value="null"/>
-       <attribute name="__LZvideo" value="null"/>
-
-       <method name="init"><![CDATA[
-               super.init();
-               var mc = new Video(this.width, this.height);
-               this.sprite.addChild(mc);
-               this.__LZvideo = mc;
-               this.applySizeToVid();
-       ]]></method>
-
-       <method name="applySizeToVid">
-               var vid = this._getflashvideo();
-               if(vid != null) {
-                       vid.width = this.width;
-                       vid.height = this.height;
-               } else {
-                       if ($debug) Debug.warn("applySizeToVid IS NULL 
",this.width,this.height);
-               }
-       </method>
-
-       <handler name="onwidth" args="w">
-               this.applySizeToVid();
-       </handler>
-
-       <handler name="onheight" args="h">
-               //if ($debug) Debug.info("onheight ",this.width,this.height);
-               this.applySizeToVid();
-       </handler>
-
-       <method name="_getflashvideo">
-       <![CDATA[
-               if (__LZvideo == null) {
-                       init();
-               }
-               //if ($debug) Debug.write("_getflashvideo()");
-               return this.__LZvideo;
-       ]]>
-       </method>
-
-       <method name="attachCamera" args="camera">
-               var vid = this._getflashvideo();
-               vid.attachCamera(camera);
-               //if ($debug) Debug.write("Attaching video :: ", this, vid, 
camera);
-       </method>
-
-       <!--- shows the Video (NetStream) in the View -->
-       <method name="attachVideo" args="video">
-               var vid = this._getflashvideo();
-               vid.attachNetStream(video);
-       </method>
-
-       <method name="clear">
-               if ($debug) Debug.write("Select unattach :3");
-               if (this.__LZvideo != null) {
-                       this.__LZvideo.attachCamera(null);
-                       this.__LZvideo.attachNetStream(null);
-                       this.__LZvideo.clear();
-                       this.sprite.removeChild(this.__LZvideo);
-                       this.__LZvideo = null;
-               }
-               if ($debug) Debug.write("Select unattach : 4");
-       </method>
-</class>
-
-
-</library>
+<library>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+
+
+<!---
+       This class provides the basic functions for the video-output
+
+               @START_CODE
+                       <baseVideoView x="20" y="20" width="320" height="240" 
bgcolor="black" />
+               @END_CODE
+ -->
+
+<class name="baseVideoView" width="${parent.width}" height="${parent.height}">
+       <passthrough when="$as3">
+               import flash.media.*;
+               import flash.net.NetConnection;
+               import flash.net.NetStream;
+       </passthrough>
+
+       <attribute name="_sound" value="null"/>
+       <attribute name="__LZvideo" value="null"/>
+
+       <method name="init"><![CDATA[
+               super.init();
+               var mc = new Video(this.width, this.height);
+               this.sprite.addChild(mc);
+               this.__LZvideo = mc;
+               this.applySizeToVid();
+       ]]></method>
+
+       <method name="applySizeToVid">
+               var vid = this._getflashvideo();
+               if(vid != null) {
+                       vid.width = this.width;
+                       vid.height = this.height;
+               } else {
+                       if ($debug) Debug.warn("applySizeToVid IS NULL 
",this.width,this.height);
+               }
+       </method>
+
+       <handler name="onwidth" args="w">
+               this.applySizeToVid();
+       </handler>
+
+       <handler name="onheight" args="h">
+               //if ($debug) Debug.info("onheight ",this.width,this.height);
+               this.applySizeToVid();
+       </handler>
+
+       <method name="_getflashvideo">
+       <![CDATA[
+               if (__LZvideo == null) {
+                       init();
+               }
+               //if ($debug) Debug.write("_getflashvideo()");
+               return this.__LZvideo;
+       ]]>
+       </method>
+
+       <method name="attachCamera" args="camera">
+               var vid = this._getflashvideo();
+               vid.attachCamera(camera);
+               //if ($debug) Debug.write("Attaching video :: ", this, vid, 
camera);
+       </method>
+
+       <!--- shows the Video (NetStream) in the View -->
+       <method name="attachVideo" args="video">
+               var vid = this._getflashvideo();
+               vid.attachNetStream(video);
+       </method>
+
+       <method name="clear">
+               if ($debug) Debug.write("Select unattach :3");
+               if (this.__LZvideo != null) {
+                       this.__LZvideo.attachCamera(null);
+                       this.__LZvideo.attachNetStream(null);
+                       this.__LZvideo.clear();
+                       this.sprite.removeChild(this.__LZvideo);
+                       this.__LZvideo = null;
+               }
+               if ($debug) Debug.write("Select unattach : 4");
+       </method>
+</class>
+
+
+</library>

Reply via email to