<?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>