<?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="innerlistViewparticipantsTable" extends="view" width="258" >
    <simplelayout name="_layout" axis="y" spacing="0" />
</class>
    
<class name="participantsTable" extends="view" height="${ parent.height-20 }" 
    	bgcolor="0xFFFFFF" x="2" y="6" clip="true" width="$once{ parent.width-4 }" >
        <innerlistViewparticipantsTable name="innerList" />
    <om_vscrollbar />
</class>

<class name="participantList" extends="view"  width="$once{ parent.width }" height="${ parent.height-22 }" 
       bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" y="22">
    <!-- clip="true" -->
    
    <attribute name="sortType" value="alphabetical" type="string" />    
    
    <view width="$once{ parent.width-2 }" height="${ parent.height-2 }" 
        x="1" y="1" bgcolor="0xFFFFFF" />
        
    <handler name="oninit">
        <![CDATA[
            var items = this._table.innerList.subnodes;
            canvas.videoComp_lc.lc_setSoundMuted = function(publicSID,isMuted) {
                if ($debug) Debug.write("lc_setSoundMuted: publicSID, isMuted",publicSID, isMuted);

                for (var i=1; i<items.length; i++) {
                    var listItem = items[i];
                    if (listItem.refObj.publicSID == publicSID) {
                        var muteView = listItem._miniIcons._mute;
                        if (isMuted) {
                            muteView.setAttribute('frame', 2);
                            muteView._tip.setAttribute('labelid', 1075);
                        } else {
                            muteView.setAttribute('frame', 1);
                            muteView._tip.setAttribute('labelid', 1074);
                        }
                        break;
                    }
                }
            };
        ]]>
    </handler>

    <method name="addItem" args="object">
        <![CDATA[
            if ($debug) Debug.write("participantList addItem: ",object,object.publicSID);
            
            for (var i=0;i<this._table.innerList.subviews.length;i++) {
                if (this._table.innerList.subviews[i].refObj.publicSID == object.publicSID) {
                    //if ($debug) Debug.warn("Already on List, do not add twice");
                    return;
                }
            }
            
            var lastname = object.lastname == null ? "" : object.lastname;
            
            if ($debug) Debug.write("object.isSuperModerator ",object.isSuperModerator);
            
            if (object.isSuperModerator) {
                lastname += " *";
            }
            
            new lz.participantListItem(this._table.innerList,{
                    user_id:object.user_id,
                    isSuperModerator:object.isSuperModerator,
                    firstname:object.firstname,
                    lastname:lastname,
                    width:this.width-17,
                    refObj:object,
                    connectedSince:object.connectedSince,
                    isMod:object.isMod,
                    streamid:object.streamid,
                    username:object.username,
                    formatedDate:object.formatedDate
                });
            
            this.sortUserList();
        ]]>
    </method>
    
    <method name="sortUserList">
        <![CDATA[ 
        
            if (this.sortType == "alphabetical") {
                function sortByName(a,b) {
                   
                    if(a.firstname.toLowerCase() < b.firstname.toLowerCase()) return -1;
                    else if(a.firstname.toLowerCase() > b.firstname.toLowerCase()) return 1;
                    else return 0;
                
                }
            
                this._table.innerList.subviews.sort(sortByStreamId);
                this._table.innerList._layout.subviews.sort(sortByStreamId);
            } else {
                function sortByStreamId(a,b) {
                   
                    if(Number(a.streamid) == Number(b.streamid)) return 0;
                    else if(Number(a.streamid) > Number(b.streamid)) return 1;
                    else return -1;
                
                }
            
                this._table.innerList.subviews.sort(sortByStreamId);
                this._table.innerList._layout.subviews.sort(sortByStreamId);
            }
            
            this._table.innerList._layout.update();  
        ]]>
    </method>    
    
    <method name="clearList">
        this._table.destroy();
        new lz.participantsTable(this,{name:'_table'});
    </method>
    
    <method name="disconnectclient" args="publicSID">
        <![CDATA[
            for (var i=0;i<this._table.innerList.subviews.length;i++){
                if (this._table.innerList.subviews[i].refObj.publicSID==publicSID){
                    var item = this._table.innerList.subviews[i];
                    item.destroy();
                    break;
                }
            }
        ]]>
    </method>
    
    <!--- get a Objects List Item
        @param string publicSID publicSID
     -->
	<method name="getUserListItemByPublicSID" args="publicSID">
	<![CDATA[
		var v = null;
		var lst = this._table.innerList;
		for (var i = 0; i < lst.subviews.length; i++) {
			if (lst.subviews[i].refObj.publicSID == publicSID) {
				v = lst.subviews[i];
				break;
			}
		}
		return v;
	]]>
	</method>
    
    <participantsTable name="_table" y="20" /> 

    <view name="_miniIcons" x="112" y="0" height="18">
        
        <view width="1" height="${ parent.parent.height }" x="0"
            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
        <view name="_icon_mod" x="2" y="3" resource="participants_isMod_rsc" onclick="" showhandcursor="false">
            <labelTooltip labelid="608" />
        </view>
        
        <view width="1" height="${ parent.parent.height }" x="20"
            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
        <view name="_icon_draw" x="22" y="3" resource="participants_allow_drawing_rsc" onclick="" showhandcursor="false">
            <labelTooltip labelid="609" />
        </view>
        
        <view width="1" height="${ parent.parent.height }" x="40"
            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
        <view name="_icon_share" x="42" y="3" resource="screen_allow_rsc" onclick="" showhandcursor="false">
            <labelTooltip labelid="1073" />
        </view>
        
        <view width="1" height="${ parent.parent.height }" x="60"
            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
        <view name="_icon_remote" x="62" y="3" resource="remote_allow_rsc" onclick="" showhandcursor="false">
            <labelTooltip labelid="1084" />
        </view>
    
        <view width="1" height="${ parent.parent.height }" x="80"
            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
        <view name="_icon_exclusive_audio" x="82" y="3" resource="participants_exclusive_audio_rsc" onclick="" showhandcursor="false">
            <labelTooltip labelid="1423" />
        </view>
        
        <view width="1" height="${ parent.parent.height }" x="100"
            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
        <view name="_icon_av_allow" x="102" y="3" resource="av_allow_rsc" onclick="" showhandcursor="false">
            <labelTooltip labelid="610" />
        </view>
        
        <view width="1" height="${ parent.parent.height }" x="142"
            bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" />
    </view>
    
    <view name="headerDivisionLine" width="${ parent.width }" 
          bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" height="1" y="20" />
    
</class>

</library>
