<!--
  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="addAttendee" extends="labelExplorerBox" labelid="574"
	 closable="true" width="500" x="$once{ parent.width/2-this.width/2 + 10 }" 
	 y="110" height="310" >
    
    <attribute name="isSuperModerator" value="false" type="boolean"/>
    
	<!-- resizeable="false" -->
	<attribute name="refObj" value="null"/>
	
	<method name="chooseAndClose">
		<![CDATA[
		
			if (this._turnoverlist._selected == null) {
				new lz.labelerrorPopup(canvas,{errorlabelid:811});
				return;
			}
			
			var jNameTimeZone = canvas.jNameTimeZone;
			
			if (this._turnoverlist._selected.omTimeZone != null) {
				jNameTimeZone = this._turnoverlist._selected.omTimeZone.jname;
			}
			
            this.refObj.addListItem(
                              this._turnoverlist._selected.userId, 
                              this._turnoverlist._selected.firstname, 
                              this._turnoverlist._selected.lastname, 
                              this._turnoverlist._selected.email,
                              0,
                              jNameTimeZone
                          );

						      
			this.close();
		]]>
	</method>
	
	<view name="_search" layout="axis:x;spacing:2;inset:4" y="24" x="0">
		
		<labelText width="70" resize="false" labelid="809" />
		
		<customEdittext name="_criteria" width="220" height="20">
            <handler name="onkeyup" args="key">
                <![CDATA[
	                // 13 is return
	                if (key==13) {
	                	parent.parent._turnoverlist.getAllUserBySearchRange.doCall();
	                }
                ]]>
            </handler>
		</customEdittext>
		
		<simpleLabelButton labelid="628" width="200" >
			<handler name="onclick">			
    			//parent.parent.getUserContactsBySearchByList.doCall();
    			parent.parent._turnoverlist.getAllUserBySearchRange.doCall();
			</handler>
		</simpleLabelButton >
		
		
	</view>
	
	
	<turnOverList name="_turnoverlist" width="${ parent.width - 4 }" 
                  height="$once{ (parent.isSuperModerator) ? parent.height-144 : parent.height-94 }" x="2" y="46" 
		orderby="u.lastname" step="50" asc="false" bgcolor="0xFFFFFF">

		<handler name="oninit">
			this.addHeaderItemOrdered(146,70,"u.user_id",false,false); //labelid,width,orderBy,asc,isSelected
			this.addHeaderItemOrdered(148,136,"u.firstname",false,false);
			this.addHeaderItemOrdered(149,136,"u.lastname",false,true);
			this.addHeaderItemOrdered(137,138,"u.adresses.email",false,false);
			this.getAllUserBySearchRange.doCall();
		</handler>
		
		<handler name="onUpdateOrder" args="refObj">
			this.getAllUserBySearchRange.doCall();
		</handler>
		
		<handler name="oncallnext" >
			this.getAllUserBySearchRange.doCall();
		</handler>
		
		<handler name="oncallpre" >		
			this.getAllUserBySearchRange.doCall();
		</handler>
		
		<handler name="onclickedItem" args="obj">
			if ($debug) Debug.write("onclickedItem",obj,obj.obj);
		</handler>
		
		<handler name="ondblclickedItem" args="obj">
			if ($debug) Debug.write("ondblclickedItem",obj,obj.obj);
			parent.chooseAndClose();
		</handler>
		
		<!--
		   Get all users by range and parse result List into View
		 -->
	 	<netRemoteCallHib name="getAllUserBySearchRange" funcname="userservice.getAllUserBySearchRange" 
	                      remotecontext="$once{ canvas.thishib }" showLoading="false">
	        
	        <netparam><method name="getValue">return canvas.sessionId;</method></netparam>
	        <netparam><method name="getValue">return parent.parent.parent._search._criteria.getText();</method></netparam>
	        <netparam><method name="getValue">return parent.parent.start;</method></netparam>
	        <netparam><method name="getValue">return parent.parent.step;</method></netparam>
	        <netparam><method name="getValue">return parent.parent.orderby;</method></netparam>
	        <netparam><method name="getValue">return parent.parent.asc;</method></netparam>
	        
	        <handler name="ondata" args="valueList">
	            <![CDATA[
		            if ($debug) Debug.write("getAllUserBySearchRange ",valueList);
		            this.parent.initValues(valueList.records);
		    		this.parent.renderContent(valueList.result);
	            ]]>
	        </handler>
	    </netRemoteCallHib>			
	    
	    <method name="renderContent" args="records">
	    	<![CDATA[
		    	this.clearList();
		    	for (var i=0;i<records.length;i++){
		    		new lz.attendeItemListItem(this._innerlist._inn._inn,{
			    					obj:records[i],
			    					userId:records[i].user_id,
			    					login:records[i].login,
			    					email:records[i].adresses.email,
			    					firstname:records[i].firstname,
			    					lastname:records[i].lastname,
			    					omTimeZone:records[i].omTimeZone
		    					});
		    	}
		    	this.sendInitialWidthUpdate();
	    	]]>
	    </method>

	</turnOverList>
    
    <view resource="messagebox_info_rsc" x="10" 
          y="$once{ parent.height-96 }"
          visibility="$once{ (!parent.isSuperModerator) ? 'hidden' : 'visible' }" />
    
    <labelText labelid="824" x="34" y="$once{ parent.height-94 }" multiline="true" 
               visibility="$once{ (!parent.isSuperModerator) ? 'hidden' : 'visible' }" 
               width="$once{ parent.width-60 }" />
    
    <labelCheckbox x="4" y="$once{ parent.height-63 }" 
           visibility="$once{ (!parent.isSuperModerator) ? 'hidden' : 'visible' }"
           fontsize="11" name="_savelogindata" labelid="825" />
	
	<simpleLabelButton labelid="629" visibility="$once{ (parent.isSuperModerator) ? 'hidden' : 'visible' }"
                       width="240" x="4" y="$once{ parent.height - 24 }">
		<handler name="onclick">
			<![CDATA[			
    			//parent.parent.getUserContactsBySearchByList.doCall();
    			//parent.parent.getAllUserBySearchRange.doCall();
    			new lz.addExternalAttendee(parent.parent, {
        			         refObj:parent.refObj, 
        			         x:parent.x+parent.width/2, 
        			         y:parent.y+40
    			         });
            ]]>
		</handler>
	</simpleLabelButton >
	
	<simpleLabelButton labelid="810" x="$once{ parent.width - 250 }"
                       y="$once{ parent.height - 24 }" width="120">
        <handler name="onclick">
            //parent.parent.parent.delTermin.doCall();
            parent.chooseAndClose();
        </handler>     
    </simpleLabelButton>    	
	     
	     
    <simpleLabelButton labelid="697" x="$once{ parent.width - 125 }"
                       y="$once{ parent.height - 24 }" width="120">
        <handler name="onclick">
            //parent.parent.parent.delTermin.doCall();
            parent.close();
        </handler>     
    </simpleLabelButton>    	
	     


</class>

<class name="attendeItemListItem" extends="baseContentListItem"> 
    
	<attribute name="userId" value="0" type="number" /> 
	<attribute name="login" value="" type="string" />
	<attribute name="firstname" value="" type="string" />
	<attribute name="lastname" value="" type="string" />
	<attribute name="email" value="" type="string" />
	<attribute name="omTimeZone" value="null" />
	
	<turnOverTextItem text="$once{ parent.userId }" width="60" />
	<turnOverTextItem text="$once{ parent.firstname }" width="100" />
	<turnOverTextItem text="$once{ parent.lastname }" width="132" />
	<turnOverTextItem text="$once{ parent.email }" width="132" />
	
</class>

</library>
