| 
									
										
										
										
											2015-09-07 18:44:10 +03:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | **********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | define(function(require){ var module = {} | 
					
						
							|  |  |  | console.log('>>> overlay') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //var DEBUG = DEBUG != null ? DEBUG : true
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var object = require('../../object') | 
					
						
							|  |  |  | var widget = require('./widget') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var OverlayClassPrototype = { | 
					
						
							|  |  |  | 	make: function(client, options){ | 
					
						
							|  |  |  | 		var that = this | 
					
						
							|  |  |  | 		var overlay = $('<div>') | 
					
						
							| 
									
										
										
										
											2015-09-07 18:51:42 +03:00
										 |  |  | 			.addClass('overlay-widget') | 
					
						
							| 
									
										
										
										
											2015-09-08 01:01:06 +03:00
										 |  |  | 			.on(options.nonPropagatedEvents.join(' '), function(){ | 
					
						
							| 
									
										
										
										
											2015-09-07 18:44:10 +03:00
										 |  |  | 				event.stopPropagation() | 
					
						
							|  |  |  | 			}) | 
					
						
							|  |  |  | 			.append($('<div>') | 
					
						
							|  |  |  | 				.addClass('content') | 
					
						
							|  |  |  | 				.click(function(){ | 
					
						
							|  |  |  | 					event.stopPropagation() | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 				.append(client)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return overlay | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var OverlayPrototype = { | 
					
						
							|  |  |  | 	dom: null, | 
					
						
							| 
									
										
										
										
											2015-09-08 01:01:06 +03:00
										 |  |  | 	options: { | 
					
						
							|  |  |  | 		nonPropagatedEvents: [ | 
					
						
							|  |  |  | 			'clik', | 
					
						
							|  |  |  | 			//'keydown',
 | 
					
						
							|  |  |  | 		], | 
					
						
							|  |  |  | 	}, | 
					
						
							| 
									
										
										
										
											2015-09-07 18:44:10 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// XXX triggering events from here and from jQuery/dom has a 
 | 
					
						
							|  |  |  | 	// 		different effect...
 | 
					
						
							|  |  |  | 	trigger: widget.triggerEventWithSource, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// proxy event api...
 | 
					
						
							|  |  |  | 	on: widget.proxyToDom('on'), | 
					
						
							|  |  |  | 	one: widget.proxyToDom('one'), | 
					
						
							|  |  |  | 	off: widget.proxyToDom('off'), | 
					
						
							|  |  |  | 	bind: widget.proxyToDom('bind'), | 
					
						
							|  |  |  | 	unbind: widget.proxyToDom('unbind'), | 
					
						
							|  |  |  | 	deligate: widget.proxyToDom('deligate'), | 
					
						
							|  |  |  | 	undeligate: widget.proxyToDom('undeligate'), | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// custom events...
 | 
					
						
							|  |  |  | 	close: function(handler){ | 
					
						
							|  |  |  | 		// trigger the event...
 | 
					
						
							|  |  |  | 		if(handler == null){ | 
					
						
							|  |  |  | 			this.dom.detach() | 
					
						
							| 
									
										
										
										
											2015-09-07 18:51:42 +03:00
										 |  |  | 			if(this.parent.children('.overlay-widget').length == 0){ | 
					
						
							| 
									
										
										
										
											2015-09-07 18:44:10 +03:00
										 |  |  | 				this.parent.removeClass('blur') | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			this.trigger('close') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// register a handler...
 | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			this.on('close', handler) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	__init__: function(parent, client, options){ | 
					
						
							|  |  |  | 		var that = this | 
					
						
							|  |  |  | 		parent = this.parent = $(parent || 'body') | 
					
						
							| 
									
										
										
										
											2015-09-08 01:01:06 +03:00
										 |  |  | 		options = options || {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// merge options...
 | 
					
						
							|  |  |  | 		var opts = Object.create(this.options) | 
					
						
							|  |  |  | 		Object.keys(options).forEach(function(n){ opts[n] = options[n] }) | 
					
						
							|  |  |  | 		options = this.options = opts | 
					
						
							| 
									
										
										
										
											2015-09-07 18:44:10 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		var dom = this.dom = this.constructor.make(client, options) | 
					
						
							|  |  |  | 			.click(function(){ | 
					
						
							|  |  |  | 				that.close() | 
					
						
							|  |  |  | 			}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		parent | 
					
						
							|  |  |  | 			.addClass('blur') | 
					
						
							|  |  |  | 			.append(dom) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		return this | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var Overlay =  | 
					
						
							|  |  |  | module.Overlay =  | 
					
						
							|  |  |  | object.makeConstructor('Overlay',  | 
					
						
							|  |  |  | 		OverlayClassPrototype,  | 
					
						
							|  |  |  | 		OverlayPrototype) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /********************************************************************** | 
					
						
							|  |  |  | * vim:set ts=4 sw=4 :                                                */ | 
					
						
							|  |  |  | return module }) |