<?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="videoUserProfilePicSWF10" extends="view" x="1" y="2" width="${parent.width-2}" height="${parent.height-3}" 
	   clip="true" bgcolor="white">
	<attribute name="value" value="null" />
	<handler name="oninit">
		<![CDATA[
			if (this.value.picture_uri==null || this.value.picture_uri.length==0){
				this.value.picture_uri = "d.jpg";
			} else {
				this.value.picture_uri = "_profile_"+value.picture_uri;
			}
	        var downloadurl = 'http://'+canvas.rtmphostlocal+':'+canvas.red5httpport
	        		+canvas.httpRootKey+'DownloadHandler?fileName='+value.picture_uri
	        		+'&moduleName=remoteuserprofile&parentPath=&room_id='
	        		+'&remoteUserid='+this.value.user_id
	        		+'&sid='+canvas.sessionId;
	        if ($debug) Debug.write(downloadurl);
	        this._userpic.setAttribute('src',downloadurl);	
        ]]>
	</handler>	
	<image name="_userpic" stretches="both" width="${parent.width}" height="${parent.height}" />
</class>

</library>
