//var effect = new PopupEffect($('popupFocus'), {className: 'desktopDockWindowsPopupEffect'});

// Overide WindowUtilities getPageSize to remove dock height (for maximized windows)
WindowUtilities._oldGetPageSize = WindowUtilities.getPageSize;
WindowUtilities.getPageSize = function() {
	var size = WindowUtilities._oldGetPageSize();
	var dockHeight = 0;
	
	size.pageHeight -= dockHeight;
	size.windowHeight -= dockHeight;
	
	return size;
};

// blur focused window if click on document
Event.observe(document, "click", function(event) {   
	var e = Event.element(event);
	var win = e.up(".dialog");
	var dock = e == $('euDock_0') || e.up("#euDock_0");
	var windowDock = e == $('desktopDockWindows') || e.up("#desktopDockWindows");
	if (!win && !dock && !windowDock && Windows.focusedWindow) {
		Windows.blur(Windows.focusedWindow.getId());                    
	}
});


Object.extend(Windows, {
	// Overide Windows minimize to hide the window 
	minimize: function(id, event) {
		var win = this.getWindow(id);
		
		if (win && win.visible) {
			
			//use a different hide effect
			//var oldHideEffect = win.options.hideEffect;
			//win.options.hideEffect = Element.hide; 
			
			// Hide current window
			Windows.blur(win.getId());
			win.hide();
			
			//reset hide effect
			//win.options.hideEffect = oldHideEffect;
		}
	},                 

	restore: function(event) { 
		var element = Event.element(event);
		
		//use a new showEffect
		var oldShowEffect = element.win.options.showEffect;	

		if(element.win.visible) {
			element.win.options.showEffect = Element.show;
		}
		// Show window
		element.win.show();
		
		//reset show effect
		element.win.options.showEffect = oldShowEffect;
	}
});

minimizeAllWindows = function() {
	Windows.windows.each(function(win) {
		
	    Windows.minimize(win.getId());
  });
}

var dockWindow = {
	onShow: function(eventName, win) {
		// Create a dock element
		var element = $("desktopDockWindowsItem_" + win.getId());
		
		if(!element) {
			element = document.createElement("div");
			element.className 		= 'desktopDockWindowsItem'; 
			element.id 				= 'desktopDockWindowsItem_' + win.getId(); 
			element.style.display 	= 'none';
			element.win				= win;
			$('desktopDockWindows').appendChild(element);
			$(element).update('<table class="desktopDockWindowsItemTable" id="desktopDockWindowsItemTable_' + win.getId() + '"><tr><td class="desktopDockWindowsItemCellL desktopDockWindowsItemCellL_Focus" id="desktopDockWindowsItemCellL_' + win.getId() + '"></td><td class="desktopDockWindowsItemCellM desktopDockWindowsItemCellM_Focus" id="desktopDockWindowsItemCellM_' + win.getId() + '"><div id="desktopDockWindowsItemButton_' + win.getId() + '"><img src="' + iconos + './'+ icons[win.getId()] + '" class="desktopDockWindowsItemIcon" id="desktopDockWindowsItemIcon_' + win.getId() + '">' + win.getTitle() + '</div></td><td class="desktopDockWindowsItemCellR desktopDockWindowsItemCellR_Focus" id="desktopDockWindowsItemCellR_' + win.getId() + '"></td></tr></table>');
	
			win.dock				= $(element);
			
			$('desktopDockWindowsItemButton_' + win.getId()).win 	= win;
			$('desktopDockWindowsItemIcon_' + win.getId()).win		= win;
			
			Event.observe($('desktopDockWindowsItemButton_' + win.getId()), "mouseup", Windows.restore);
			Event.observe($('desktopDockWindowsItemIcon_' + win.getId()), 	"mouseup", Windows.restore);
			
			new Effect.Appear(element,{duration:0.1});
		}
		
		win.toFront();
	},
	
	onClose: function(eventName, win) {
		var element = win.dock;	
		
		if(element) {
			new Effect.Fade(element, {duration:0.1,afterFinish: function() {element.remove()}});
		}
	},
	
	onDestroy: function(eventName, win) {
		var element = win.dock;	
		alert('destroy');
		if(element) {
			new Effect.Fade(element, {duration:0.1,afterFinish: function() {element.remove()}});
		}
	},

	onFocus: function(eventName, win) {
		var element = win.dock;
		
		if(element) {
			$('desktopDockWindowsItemCellL_' + win.getId()).addClassName("desktopDockWindowsItemCellL_Focus");
			$('desktopDockWindowsItemCellM_' + win.getId()).addClassName("desktopDockWindowsItemCellM_Focus");
			$('desktopDockWindowsItemCellR_' + win.getId()).addClassName("desktopDockWindowsItemCellR_Focus");
		}
	},

	onBlur: function(eventName, win) {
		var element = win.dock;
		if(element) {
			$('desktopDockWindowsItemCellL_' + win.getId()).removeClassName("desktopDockWindowsItemCellL_Focus");
			$('desktopDockWindowsItemCellM_' + win.getId()).removeClassName("desktopDockWindowsItemCellM_Focus");
			$('desktopDockWindowsItemCellR_' + win.getId()).removeClassName("desktopDockWindowsItemCellR_Focus");
		}
	}
}

Windows.addObserver(dockWindow);