	YAHOO.ext.MinimizableDialog = function(el, config){
		YAHOO.ext.MinimizableDialog.superclass.constructor.call(this,el,config);
		var dh = YAHOO.ext.DomHelper;
		this.events['minimize']=new YAHOO.util.CustomEvent('minimize');
		this.events['minimize']=new YAHOO.util.CustomEvent('restore');
		this.events['beforeminimize']=new YAHOO.util.CustomEvent('beforeminimize');
		this.events['beforerestore']=new YAHOO.util.CustomEvent('beforerestore');
	    if(this.minimizable !== false){
			this.minimized=false;
			this.el.addClass('ydlg-minimizable');
			this.minimizeDiv = dh.append(this.el.dom, {tag: 'div', cls:'ydlg-minimize'}, true);
			this.minimizeDiv.mon('click', this.minimize, this, true);
	    }
	};
	
	YAHOO.extendX(YAHOO.ext.MinimizableDialog, YAHOO.ext.BasicDialog);
	
	YAHOO.ext.MinimizableDialog.prototype.minimize=function() {
	   this.fireEvent('beforeminimize', this);
	   this.minimized=true;
	          
	   if(this.shadow)
	      this.shadow.hide();
	   if(this.shim)
	      this.shim.hide(); 
	   
	   if(this.minimizeTarget){
	        var b = getEl(this.minimizeTarget, true).getBox();
	        this.proxy.show();
	        this.proxy.setBounds(this.xy[0], this.xy[1], this.size.width, this.size.height);
	        this.el.hide();
	        this.proxy.setBounds(b.x, b.y, b.width, b.height, true, .35,this.minimizeEnd.createDelegate(this));
	        this.minimizeTarget=null;
	   } else
	        this.el.hide();
	          
	   this.fireEvent('minimize', this);
	   return this;
	};

	YAHOO.ext.MinimizableDialog.prototype.minimizeEnd=function() {
	    this.proxy.hide();  
	};

	YAHOO.ext.MinimizableDialog.prototype.restoreEnd=function() {
	    this.proxy.hide();  
	    this.showEl();
	};

	YAHOO.ext.MinimizableDialog.prototype.restore=function(restoreSource) {
	   this.fireEvent('beforerestore', this);
	   this.minimized=false;
	   if(restoreSource){
	        var b = restoreSource.getBox();
	        this.proxy.show();
	        this.proxy.setSize(b.width, b.height);
	        this.proxy.setLocation(b.x, b.y);
	        this.proxy.setBounds(this.xy[0], this.xy[1], this.size.width, this.size.height, 
	                    true, .35, this.restoreEnd.createDelegate(this));
	        
	   } else
	        this.showEl();
		this.fireEvent('restore', this);
	};
	
	
	
		
	Dockbar = function(name,container){
	    this.container=container;
		
		this.dialogs={};
	    var dockDiv=document.createElement('div');
		dockDiv.id='dockbar'+this.name;
		dockDiv.className='dockbar';
		this.container.appendChild(dockDiv);
	};
	
	Dockbar.prototype= {
		/**
		 *Draws the dockbar. 
		 * @return {void}
		 */
		draw: function() {
		    var html='';
		    for(var uid in this.dialogs) {
		        var dialog=this.dialogs[uid];
		        html+='<div class="dockbaritem" id="dockbaritem'+uid+'">'+dialog.header.dom.innerHTML+' <img src="images/maximize.png" width="10" height="10"></div>';
		    }
		  
		    getEl('dockbar'+this.name).update(html);
			
			for(var uid in this.dialogs) {
				var but=getEl('dockbaritem'+uid);
				but.mon('click', this.restore.createDelegate(this,[uid]), this, true);
			}
		},
		
		/**
		 * Adds a popup to the dockbar. 
		 * @param {Popup} dialog dialog to minimize
		 * @return {void}
		 */
		minimize: function(dialog) {
			var uid=(new Date()).getTime();
		    this.dialogs[uid]=dialog;
		    this.draw();
			
		    return getEl('dockbaritem'+uid).dom;
		},
		
		/**
		 * Restores a minimized dialog. 
		 * @param {string} uid id of the dialog to restore
		 * @return {void}
		 */
		restore: function(uid) {
		    var dialog=this.dialogs[uid];
		    if(dialog) {
		        dialog.restore(getEl('dockbaritem'+uid));
		        delete this.dialogs[uid];
		        this.draw();		        
		    }
		    
		}
	};
	
	
	Example = function(){
		var dockbar, dialog1, dialogRotate, dialogOilPaint, dialogEqualize, dialogRaise, dialogBlur, dialogSharpen, dialogSpread, dialogFrame, dialogGrayscale, dialogBrightness, dialogContrast, dialogPolaroid, dialogBrush, dialogText, dialogUpload, showResizeBtn, showRotateBtn, showOilPaintBtn, showEqualizeBtn, showRaiseBtn, showBlurBtn, showSharpenBtn, showSpreadBtn, showFrameBtn, showGrayscaleBtn, showBrightnessBtn, showContrastBtn, showPolaroidBtn, showBrushBtn, showTextBtn, showUploadBtn, RotateDialog1;
	       return {
	            init : function(){
				dockbar=new Dockbar('example',getEl('dockbar').dom);
				showResizeBtn = getEl('resizeshow');
				showResizeBtn.on('click', this.showResize, this, true);
                                showRotateBtn = getEl('rotateshow');
                                showRotateBtn.on('click', this.showRotate, this, true);
                                showOilPaintBtn = getEl('oilpaintshow');
                                showOilPaintBtn.on('click', this.showOilPaint, this, true);
                                //showEqualizeBtn = getEl('equalizeshow');
                                //showEqualizeBtn.on('click', this.showEqualize, this, true);
                                showRaiseBtn = getEl('raiseshow');
                                showRaiseBtn.on('click', this.showRaise, this, true);
                                showBlurBtn = getEl('blurshow');
                                showBlurBtn.on('click', this.showBlur, this, true);
                                
                                showSharpenBtn = getEl('sharpenshow');
                                showSharpenBtn.on('click', this.showSharpen, this, true);
                                showGrayscaleBtn = getEl('grayscaleshow');
                                showGrayscaleBtn.on('click', this.showGrayscale, this, true);  
                                showSpreadBtn = getEl('spreadshow');
                                showSpreadBtn.on('click', this.showSpread, this, true); 
                                
                                showFrameBtn = getEl('frameshow');
                                showFrameBtn.on('click', this.showFrame, this, true);  
                                showBrightnessBtn = getEl('brightnessshow');
                                showBrightnessBtn.on('click', this.showBrightness, this, true);
                                showContrastBtn = getEl('contrastshow');
                                showContrastBtn.on('click', this.showContrast, this, true);
                                showPolaroidBtn = getEl('polaroidshow');
                                showPolaroidBtn.on('click', this.showPolaroid, this, true);
                                showBrushBtn = getEl('brushshow');
                                showBrushBtn.on('click', this.showBrush, this, true);
                                showTextBtn = getEl('textshow');
                                showTextBtn.on('click', this.showText, this, true);
				showUploadBtn = getEl('uploadshow');
				showUploadBtn.on('click', this.showUpload, this, true);
				preHide();

		    },

		    showResize : function(){
			if(!dialog1){
				dialog1 = new YAHOO.ext.MinimizableDialog("exampleDialog1", { 
						       
					resizable:true,
					x:250,
					y:200,
					width:300,
			                height:280,
			                shadow:true,
			                minWidth:100,
			                minHeight:100,
			                constraintoviewport: false,
			                minimizable:true,
			                proxyDrag: true,
			                shim:false
				                
				    });
                                dialog1.on('beforeminimize',function(dialog) {dialog1.minimizeTarget=dockbar.minimize(dialog)},null);
				dialog1.show(showResizeBtn);

				}
			else{
				if(!dialog1.minimized){
					if(dialog1.isVisible()){
						dialog1.hide();
					}
					else{
						dialog1.toFront();
						dialog1.show(showResizeBtn);

					}
				}
				else{
					alert('This tool is currently minimized');
				}
			}
			preHide();
	           },

                    showRotate : function(){
                        if(!dialogRotate){
                                dialogRotate = new YAHOO.ext.MinimizableDialog("RotateDialog", {
                                        resizable:true,
                                        x:275,
                                        y:225,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogRotate.on('beforeminimize',function(dialog) {dialogRotate.minimizeTarget=dockbar.minimize(dialog)},null);
                                dialogRotate.show(showRotateBtn);
                                }
                        else{
                                if(!dialogRotate.minimized){
                                        if(dialogRotate.isVisible()){
                                                dialogRotate.hide();
                                        }
                                        else{

						dialogRotate.toFront();
        	                                dialogRotate.show(showRotateBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },

                    showOilPaint : function(){
                        if(!dialogOilPaint){
                                dialogOilPaint = new YAHOO.ext.MinimizableDialog("OilPaintDialog", {
                                        resizable:true,
                                        x:300,
                                        y:250,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogOilPaint.on('beforeminimize',function(dialog) {dialogOilPaint.minimizeTarget=dockbar.minimize(dialog)},null);
				//dialogOilPaint.on('click', function(dialog){YAHOO.util.Dom.setStyle('RotateDialog', 'opacity', 0.5), this, true);
				dialogOilPaint.show(showOilPaintBtn);
                                }
                        else{
                                if(!dialogOilPaint.minimized){
                                        if(dialogOilPaint.isVisible()){
                                                dialogOilPaint.hide();
                                        }
                                        else{

					dialogOilPaint.toFront();
                                       dialogOilPaint.show(showOilPaintBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                   
                    showEqualize : function(){
                        if(!dialogEqualize){
                                dialogEqualize = new YAHOO.ext.MinimizableDialog("EqualizeDialog", {
                                        resizable:true,
                                        x:325,
                                        y:275,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogEqualize.on('beforeminimize',function(dialog) {dialogEqualize.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogEqualize.show(showEqualizeBtn);
                                }
                        else{
                                if(!dialogEqualize.minimized){
                                        if(dialogEqualize.isVisible()){
                                                dialogEqualize.hide();
                                        }
                                        else{
					dialogEqualize.toFront();
                                       dialogEqualize.show(showEqualizeBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showRaise : function(){
                        if(!dialogRaise){
                                dialogRaise = new YAHOO.ext.MinimizableDialog("RaiseDialog", {
                                        resizable:true,
                                        x:350,
                                        y:300,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogRaise.on('beforeminimize',function(dialog) {dialogRaise.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogRaise.show(showRaiseBtn);
                                }
                        else{
                                if(!dialogRaise.minimized){
                                        if(dialogRaise.isVisible()){
                                                dialogRaise.hide();
                                        }
                                        else{
					dialogRaise.toFront();
                                       dialogRaise.show(showRaiseBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showBlur : function(){
                        if(!dialogBlur){
                                dialogBlur = new YAHOO.ext.MinimizableDialog("BlurDialog", {
                                        resizable:true,
                                        x:550,
                                        y:175,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogBlur.on('beforeminimize',function(dialog) {dialogBlur.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogBlur.show(showBlurBtn);
                                }
                        else{
                                if(!dialogBlur.minimized){
                                        if(dialogBlur.isVisible()){
                                                dialogBlur.hide();
                                        }
                                        else{
					dialogBlur.toFront();
                                       dialogBlur.show(showBlurBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showSharpen : function(){
                        if(!dialogSharpen){
                                dialogSharpen = new YAHOO.ext.MinimizableDialog("SharpenDialog", {
                                        resizable:true,
                                        x:575,
                                        y:200,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogSharpen.on('beforeminimize',function(dialog) {dialogSharpen.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogSharpen.show(showSharpenBtn);
                                }
                        else{
                                if(!dialogSharpen.minimized){
                                        if(dialogSharpen.isVisible()){
                                                dialogSharpen.hide();
                                        }
                                        else{
					dialogSharpen.toFront();
                                       dialogSharpen.show(showSharpenBtn);
}                                
}
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },   
                   
                    showGrayscale : function(){
                        if(!dialogGrayscale){
                                dialogGrayscale = new YAHOO.ext.MinimizableDialog("GrayscaleDialog", {
                                        resizable:true,
                                        x:600,
                                        y:225,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogGrayscale.on('beforeminimize',function(dialog) {dialogGrayscale.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogGrayscale.show(showGrayscaleBtn);
                                }
                        else{
                                if(!dialogGrayscale.minimized){
                                        if(dialogGrayscale.isVisible()){
                                                dialogGrayscale.hide();
                                        }
                                        else{

					dialogGrayscale.toFront();
                                       dialogGrayscale.show(showGrayscaleBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showSpread : function(){
                        if(!dialogSpread){
                                dialogSpread = new YAHOO.ext.MinimizableDialog("SpreadDialog", {
                                        resizable:true,
                                        x:625,
                                        y:250,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogSpread.on('beforeminimize',function(dialog) {dialogSpread.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogSpread.show(showSpreadBtn);
                                }
                        else{
                                if(!dialogSpread.minimized){
                                        if(dialogSpread.isVisible()){
                                                dialogSpread.hide();
                                        }
                                        else{

					dialogSpread.toFront();
                                       dialogSpread.show(showSpreadBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showFrame : function(){
                        if(!dialogFrame){
                                dialogFrame = new YAHOO.ext.MinimizableDialog("FrameDialog", {
                                        resizable:true,
                                        x:650,
                                        y:275,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogFrame.on('beforeminimize',function(dialog) {dialogFrame.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogFrame.show(showFrameBtn);
                                }
                        else{
                                if(!dialogFrame.minimized){
                                        if(dialogFrame.isVisible()){
                                                dialogFrame.hide();
                                        }
                                        else{
					dialogFrame.toFront();
                                       dialogFrame.show(showFrameBtn);
                                }
}
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showBrightness : function(){
                        if(!dialogBrightness){
                                dialogBrightness = new YAHOO.ext.MinimizableDialog("BrightnessDialog", {
                                        resizable:true,
                                        x:325,
                                        y:275,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogBrightness.on('beforeminimize',function(dialog) {dialogBrightness.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogBrightness.show(showBrightnessBtn);
                                }
                        else{
                                if(!dialogBrightness.minimized){
                                        if(dialogBrightness.isVisible()){
                                                dialogBrightness.hide();
                                        }
                                        else{
					dialogBrightness.toFront();
                                       dialogBrightness.show(showBrightnessBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showContrast : function(){
                        if(!dialogContrast){
                                dialogContrast = new YAHOO.ext.MinimizableDialog("ContrastDialog", {
                                        resizable:true,
                                        x:350,
                                        y:300,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogContrast.on('beforeminimize',function(dialog) {dialogContrast.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogContrast.show(showContrastBtn);
                                }
                        else{
                                if(!dialogContrast.minimized){
                                        if(dialogContrast.isVisible()){
                                                dialogContrast.hide();
                                        }
                                        else{
					dialogContrast.toFront();
                                       dialogContrast.show(showContrastBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },

                    showPolaroid : function(){
                        if(!dialogPolaroid){
                                dialogPolaroid = new YAHOO.ext.MinimizableDialog("PolaroidDialog", {
                                        resizable:true,
                                        x:350,
                                        y:300,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogPolaroid.on('beforeminimize',function(dialog) {dialogPolaroid.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogPolaroid.show(showPolaroidBtn);
                                }
                        else{
                                if(!dialogPolaroid.minimized){
                                        if(dialogPolaroid.isVisible()){
                                                dialogPolaroid.hide();
                                        }
                                        else{
					dialogPolaroid.toFront();
                                       dialogPolaroid.show(showPolaroidBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   },
                    showBrush : function(){
			if(current_pic == ''){
				alert('Please upload a picture first');
			}
			else{
                        if(!dialogBrush){
                                dialogBrush = new YAHOO.ext.MinimizableDialog("BrushDialog", {
                                        resizable:true,
                                        x:350,
                                        y:300,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogBrush.on('beforeminimize',function(dialog) {dialogBrush.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogBrush.show(showBrushBtn);

                                var doHide = function(e, obj) {
					preHide();

                                }
                                dialogBrush.on('hide',doHide);
                                dialogBrush.on('minimize',doHide);

                                }
                        else{
                                if(!dialogBrush.minimized){
                                        if(dialogBrush.isVisible()){
                                                dialogBrush.hide();
                                        }
                                        else{

					dialogBrush.toFront();
                                       dialogBrush.show(showBrushBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        brush();
			}
                   },
                    showText : function(){
                        if(!dialogText){
                                dialogText = new YAHOO.ext.MinimizableDialog("TextDialog", {
                                        resizable:true,
                                        x:350,
                                        y:300,
                                        width:300,
                                        height:280,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogText.on('beforeminimize',function(dialog) {dialogText.minimizeTarget=dockbar.minimize(dialog)},null);
				dialogText.show(showTextBtn);
                                }
                        else{
                                if(!dialogText.minimized){
                                        if(dialogText.isVisible()){
                                                dialogText.hide();
                                        }
                                        else{
					dialogText.toFront();
                                       dialogText.show(showTextBtn);
}
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
			preHide();
                   },
                    showUpload : function(){
                        if(!dialogUpload){
                                dialogUpload = new YAHOO.ext.MinimizableDialog("UploadDialog", {
                                        resizable:true,
                                        x:300,
                                        y:200,
                                        width:500,
                                        height:200,
                                        shadow:true,
                                        minWidth:100,
                                        minHeight:100,
                                        constraintoviewport: false,
                                        minimizable:true,
                                        proxyDrag: true,
                                        shim:true
                                    });
                                dialogUpload.on('beforeminimize',function(dialog) {dialogUpload.minimizeTarget=dockbar.minimize(dialog)},null);
                                dialogUpload.show(showUploadBtn);
                                }
                        else{
                                if(!dialogUpload.minimized){
                                        if(dialogUpload.isVisible()){
                                                dialogUpload.hide();
                                        }
                                        else{
                                                dialogUpload.toFront();
                                                dialogUpload.show(showUploadBtn);

                                        }
                                }
                                else{
                                        alert('This tool is currently minimized');
                                }
                        }
                        preHide();
                   }
	     }



	}();
	YAHOO.ext.EventManager.onDocumentReady(Example.init, Example, true);
