Effect.ResizeCentered = Class.create();
Object.extend(Object.extend(Effect.ResizeCentered.prototype,Effect.Base.prototype),{
    



    
 initialize:function(element,targetWidth,targetHeight,opacity){
     var options = arguments[4] || {};
     this.element = $(element);
     this.startWidth = parseFloat(Element.getStyle(element, 'width'));
     this.startHeight = parseFloat(Element.getStyle(element, 'height'));
     
     /*
     this.extraWidth = parseFloat(Element.getStyle(element, 'padding-right'));
     this.extraWidth += parseFloat(Element.getStyle(element, 'padding-left'));
     this.extraWidth += parseFloat(Element.getStyle(element, 'border-right-width'));
     this.extraWidth += parseFloat(Element.getStyle(element, 'border-left-width'));

     this.extraHeight = parseFloat(Element.getStyle(element, 'padding-top'));
     this.extraHeight += parseFloat(Element.getStyle(element, 'padding-bottom'));
     this.extraHeight += parseFloat(Element.getStyle(element, 'border-top-width'));
     this.extraHeight += parseFloat(Element.getStyle(element, 'border-bottom-width'));
     */

     this.startTop = parseFloat(Element.getStyle(element, 'top'));
     this.startLeft = parseFloat(Element.getStyle(element, 'left'));
     
     this.startOpacity = parseFloat(Element.getStyle(element, 'opacity'));

     if(isNaN(this.startTop)){
	 this.startTop = 0;
     }
     
     if(isNaN(this.startLeft)){
	 this.startLeft = 0;
     }
     
     
     

     this.targetOpacity = opacity;
     this.targetWidth = targetWidth;
     this.targetHeight = targetHeight;
     
     
     this.widthDelta = this.targetWidth - this.startWidth;
     this.heightDelta = this.targetHeight - this.startHeight;
     this.opacityDelta = this.targetOpacity - this.startOpacity;
     
     
     this.targetLeft = Math.round(this.startLeft - (this.widthDelta / 2));
     this.targetTop = Math.round(this.startTop - (this.heightDelta / 2));
     
     this.topDelta = this.targetTop - this.startTop;
     this.leftDelta = this.targetLeft - this.startLeft;
     
     //log('startSize ' + this.startWidth + ' ' + this.startHeight);
     //log('startPosition ' + this.startTop + ' ' + this.startLeft);

     //log('targetSize ' + this.targetWidth + ' ' + this.targetHeight);
     //log('targetPosition ' + this.targetLeft + ' ' + this.targetTop);

     //log('size delta = ' + this.widthDelta + ' ' + this.heightDelta);
     //log('position delta = ' + this.leftDelta + ' ' + this.topDelta);
     
     
     this.start(options);
     
     
 },
		
		update: function(position){
		    var newWidth = this.startWidth + (this.widthDelta * position);
		    var newHeight = this.startHeight + (this.heightDelta * position);
		    
		    
		    this.element.style.width = Math.round(newWidth) + 'px';
		    this.element.style.height = Math.round(newHeight) + 'px';
		    
		    //log('size = ' + Math.round(newWidth) + ' ' + Math.round(newHeight));
		    
		    var newLeft = this.startLeft + (this.leftDelta * position);
		    var newTop = this.startTop + (this.topDelta * position);
		    //log('old position = ' + this.startLeft + ' ' + this.startTop);
		    //log('position = ' + Math.round(newLeft) + ' ' + Math.round(newTop));


		    this.element.style.left = Math.round(newLeft) + 'px';
		    this.element.style.top = Math.round(newTop) + 'px';
		    
		    var newOpacity = this.startOpacity + (this.opacityDelta * position);
		    this.element.style.opacity = newOpacity;
		    this.element.style.filter="alpha(opacity="+ (newOpacity * 100) +")";
		    
		}
 
 
 
 
});
