var EvtModuleManager = {};
EvtModuleManager.Manager = Class.create();
Object.extend(EvtModuleManager.Manager.prototype, ModuleManager.Manager.prototype);
Object.extend(EvtModuleManager.Manager.prototype, {
	baseWindowOptions: new $H({
		// window options		
		className: 'evite',
		zIndex:150,
		overflow: 'hidden',
		resizable: false,
		draggable: false,
		modal: true,
		title: '<h2>Evite</h2>',
		showHeaderCloseButton: true,
		waitText: '<b>Loading...</b><br /><img src="/images/06/evite/status_dots.gif" style="vertical-align: middle;"/>'
	}),
	initialize: function(url) {
		this.baseInitialize(url);
	},
	// override constructWindow to use evt window
	constructWindow: function(winId, options) {
		var mergedOptions = new $H().merge(this.baseWindowOptions);
		var callOnClose = options.callOnClose || false;
		mergedOptions = mergedOptions.merge(options);
		mergedOptions['headerCloseOnClick'] = (function() {
			this.closeModuleWindow(winId, {resetWindow: true, callOnClose: callOnClose, validate: false})
		}).bind(this);
		
		var win = new EviteWindow(winId, mergedOptions);		
		return win;
	},
	openModuleWindow: function(moduleId, params, windowOptions) {
		windowOptions['refreshFromServer'] = true;
		this._openModuleWindow(moduleId, params, windowOptions);			
	},
	closeModuleWindow: function(moduleId, options) {
		// only if this is a cancel or a valid save then resume the tab manager
		var noValidate = options['validate'] != null && options['validate'] == false;
		if( noValidate ) {

		} else {
			var win = this.getModuleWindow(moduleId);
			if( win != null ) {  
				// need to add the resume to the onClose method
				var origOnClose = win.onClose;
				var onClose = (function() {
					if( this.hasErrors() == false) {
						tabManager.resume();
					}		
			
					if( origOnClose != null ) {
						origOnClose();
					}
				}).bind(this);
				win.onClose = onClose;
			}
		}
		this._closeModuleWindow(moduleId, options); 
	},
	cancelModuleWindow: function(moduleId, options) {
		this._cancelModuleWindow(moduleId, options);
	}	
}
);