| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | /********************************************************************** | 
					
						
							|  |  |  | *  | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | * | 
					
						
							|  |  |  | **********************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //var DEBUG = DEBUG != null ? DEBUG : true
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-02 02:54:52 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /********************************************************************** | 
					
						
							|  |  |  | * Utils... | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // NOTE: this expects a certain structure, this it is not generic...
 | 
					
						
							| 
									
										
										
										
											2013-06-02 05:33:27 +04:00
										 |  |  | //function makeDrawerToggler(contentRenderer, root, element_class, mode_class){
 | 
					
						
							|  |  |  | function makeDrawerToggler(contentRenderer, root){ | 
					
						
							|  |  |  | 	var element_class = '.drawer-block' | 
					
						
							|  |  |  | 	var toggler = createCSSClassToggler(root, 'drawer-mode overlay', | 
					
						
							| 
									
										
										
										
											2013-06-02 02:54:52 +04:00
										 |  |  | 			function(action){ | 
					
						
							|  |  |  | 				// XXX
 | 
					
						
							|  |  |  | 				var body = $(document.body) | 
					
						
							|  |  |  | 				var win = $(window) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// on...
 | 
					
						
							|  |  |  | 				if(action == 'on'){ | 
					
						
							|  |  |  | 					// remove helo when we scroll to the top...
 | 
					
						
							|  |  |  | 					var scroll_handler = function(){ | 
					
						
							|  |  |  | 						if(body.scrollTop() <= 0){ | 
					
						
							|  |  |  | 							toggler('off') | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// prepare and cleanup...
 | 
					
						
							|  |  |  | 					$(element_class).remove() | 
					
						
							|  |  |  | 					$(root).addClass('overlay') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// build the help...
 | 
					
						
							|  |  |  | 					var doc = contentRenderer() | 
					
						
							|  |  |  | 						.addClass(element_class.replace('.', ' ')) | 
					
						
							|  |  |  | 						.on('click', function(){ | 
					
						
							|  |  |  | 							event.stopImmediatePropagation() | 
					
						
							|  |  |  | 							return false | 
					
						
							|  |  |  | 						}) | 
					
						
							|  |  |  | 						.css({ | 
					
						
							|  |  |  | 							cursor: 'auto', | 
					
						
							|  |  |  | 						}) | 
					
						
							|  |  |  | 						// XXX depends on body...
 | 
					
						
							|  |  |  | 						.appendTo(body) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// add exit by click...
 | 
					
						
							|  |  |  | 					// XXX depends on body...
 | 
					
						
							|  |  |  | 					body | 
					
						
							|  |  |  | 						.one('click', function(){ | 
					
						
							|  |  |  | 							toggler('off') | 
					
						
							|  |  |  | 						}) | 
					
						
							|  |  |  | 						.css({ | 
					
						
							|  |  |  | 							cursor: 'hand', | 
					
						
							|  |  |  | 						}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// scroll to the help...
 | 
					
						
							|  |  |  | 					// NOTE: need to set the scroll handler AFTER we 
 | 
					
						
							|  |  |  | 					// 		scroll down, or it will be more of a 
 | 
					
						
							|  |  |  | 					// 		tease than a help...
 | 
					
						
							|  |  |  | 					var t = getRelativeVisualPosition($(root), doc).top | 
					
						
							|  |  |  | 					body | 
					
						
							|  |  |  | 						.animate({ | 
					
						
							|  |  |  | 							scrollTop: Math.abs(t) - 40, | 
					
						
							|  |  |  | 						}, function(){ | 
					
						
							|  |  |  | 							// XXX depends on window...
 | 
					
						
							|  |  |  | 							win | 
					
						
							|  |  |  | 								.on('scroll', scroll_handler) | 
					
						
							|  |  |  | 						}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// off...
 | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					// things to cleanup...
 | 
					
						
							|  |  |  | 					var _cleanup = function(){ | 
					
						
							|  |  |  | 						$(element_class).remove() | 
					
						
							|  |  |  | 						$(root).removeClass('overlay') | 
					
						
							|  |  |  | 						// XXX depends on body...
 | 
					
						
							|  |  |  | 						body.click() | 
					
						
							|  |  |  | 						win.off('scroll', scroll_handler) | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// animate things if we are not at the top...
 | 
					
						
							|  |  |  | 					if(body.scrollTop() > 0){ | 
					
						
							|  |  |  | 							// XXX depends on body...
 | 
					
						
							|  |  |  | 							body | 
					
						
							|  |  |  | 								.css({ | 
					
						
							|  |  |  | 									cursor: '', | 
					
						
							|  |  |  | 								}) | 
					
						
							|  |  |  | 								.animate({ | 
					
						
							|  |  |  | 									scrollTop: 0, | 
					
						
							|  |  |  | 								}, _cleanup)  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// if we are at the top do things fast...
 | 
					
						
							|  |  |  | 					} else { | 
					
						
							|  |  |  | 						_cleanup() | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			}) | 
					
						
							|  |  |  | 	return toggler | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /********************************************************************** | 
					
						
							|  |  |  | * Modes | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | // XXX make this save and restore settings...
 | 
					
						
							|  |  |  | var toggleSingleImageMode = createCSSClassToggler('.viewer',  | 
					
						
							|  |  |  | 		'single-image-mode', | 
					
						
							| 
									
										
										
										
											2013-06-01 20:16:45 +04:00
										 |  |  | 		function(action){ | 
					
						
							|  |  |  | 			// prevent reiniting...
 | 
					
						
							|  |  |  | 			if(action == toggleSingleImageMode('?')){ | 
					
						
							|  |  |  | 				return false | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}, | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 		function(action){ | 
					
						
							| 
									
										
										
										
											2013-05-24 00:09:13 +04:00
										 |  |  | 			var w = getScreenWidthInImages() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// single image mode...
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 			if(action == 'on'){ | 
					
						
							|  |  |  | 				TRANSITION_MODE_DEFAULT = 'css' | 
					
						
							| 
									
										
										
										
											2013-05-24 00:09:13 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				// save things...
 | 
					
						
							|  |  |  | 				SETTINGS['screen-images-ribbon-mode'] = w | 
					
						
							| 
									
										
										
										
											2013-05-30 07:29:07 +04:00
										 |  |  | 				SETTINGS['image-info-ribbon-mode'] = toggleImageInfo('?') | 
					
						
							| 
									
										
										
										
											2013-05-24 00:09:13 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				// load things...
 | 
					
						
							|  |  |  | 				w = SETTINGS['screen-images-single-image-mode'] | 
					
						
							|  |  |  | 				w = w == null ? 1 : w | 
					
						
							|  |  |  | 				var p = SETTINGS['single-image-mode-proportions'] | 
					
						
							|  |  |  | 				p = p == null ? 'square' : p | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// set stuff...
 | 
					
						
							|  |  |  | 				toggleImageProportions(p) | 
					
						
							|  |  |  | 				fitNImages(w) | 
					
						
							| 
									
										
										
										
											2013-05-30 07:29:07 +04:00
										 |  |  | 				toggleImageInfo('off') | 
					
						
							| 
									
										
										
										
											2013-05-24 00:09:13 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			// ribbon mode...
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 			} else { | 
					
						
							|  |  |  | 				TRANSITION_MODE_DEFAULT = 'animate' | 
					
						
							| 
									
										
										
										
											2013-05-24 00:09:13 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				// save things...
 | 
					
						
							|  |  |  | 				SETTINGS['screen-images-single-image-mode'] = w | 
					
						
							|  |  |  | 				SETTINGS['single-image-mode-proportions'] = toggleImageProportions('?') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// load things...
 | 
					
						
							|  |  |  | 				w = SETTINGS['screen-images-ribbon-mode'] | 
					
						
							|  |  |  | 				w = w == null ? DEFAULT_SCREEN_IMAGES : w | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-03 17:48:27 +04:00
										 |  |  | 				toggleImageProportions('fit-square') | 
					
						
							| 
									
										
										
										
											2013-05-24 00:09:13 +04:00
										 |  |  | 				fitNImages(w) | 
					
						
							| 
									
										
										
										
											2013-05-30 07:29:07 +04:00
										 |  |  | 				var i = SETTINGS['image-info-ribbon-mode'] == 'on' ? 'on' : 'off' | 
					
						
							|  |  |  | 				toggleImageInfo(i) | 
					
						
							|  |  |  | 				SETTINGS['image-info-ribbon-mode'] = i | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-01 19:54:46 +04:00
										 |  |  | var SLIDESHOW_INTERVAL = 3000 | 
					
						
							|  |  |  | var SLIDESHOW_LOOP = true | 
					
						
							|  |  |  | var SLIDESHOW_DIRECTION = 'next' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // TODO transitions...
 | 
					
						
							|  |  |  | // TODO a real setup UI (instead of prompt)
 | 
					
						
							| 
									
										
										
										
											2013-06-01 20:16:45 +04:00
										 |  |  | var toggleSlideShowMode = createCSSClassToggler('.viewer',  | 
					
						
							|  |  |  | 		'.slideshow-mode', | 
					
						
							| 
									
										
										
										
											2013-06-01 19:54:46 +04:00
										 |  |  | 		function(action){ | 
					
						
							|  |  |  | 			if(action == 'on'){ | 
					
						
							|  |  |  | 				updateStatus('Slideshow...').show() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// interval from user...
 | 
					
						
							|  |  |  | 				// XXX make this a real UI...
 | 
					
						
							|  |  |  | 				var interval = prompt('Slideshow interval (sec):', SLIDESHOW_INTERVAL/1000) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// user cancelled...
 | 
					
						
							|  |  |  | 				if(interval == null){ | 
					
						
							|  |  |  | 					showStatus('Slideshow: cencelled...') | 
					
						
							|  |  |  | 					toggleSlideShowMode('off') | 
					
						
							|  |  |  | 					return  | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				SLIDESHOW_INTERVAL = isNaN(interval) ? 3000 : interval*1000 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-01 20:16:45 +04:00
										 |  |  | 				showStatus('Slideshow: starting', SLIDESHOW_LOOP ? 'looped...' : 'unlooped...') | 
					
						
							| 
									
										
										
										
											2013-06-01 19:54:46 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				toggleSingleImageMode('on') | 
					
						
							|  |  |  | 				_slideshow_timer = setInterval(function(){ | 
					
						
							|  |  |  | 					var cur = getImage() | 
					
						
							|  |  |  | 					// advance the image...
 | 
					
						
							|  |  |  | 					var next = SLIDESHOW_DIRECTION == 'next' ? nextImage() : prevImage() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// handle slideshow end...
 | 
					
						
							|  |  |  | 					if(getImageGID(cur) == getImageGID(next)){ | 
					
						
							|  |  |  | 						if(SLIDESHOW_LOOP){ | 
					
						
							|  |  |  | 							SLIDESHOW_DIRECTION == 'next' ? firstImage() : lastImage() | 
					
						
							|  |  |  | 						} else { | 
					
						
							|  |  |  | 							toggleSlideShowMode('off') | 
					
						
							|  |  |  | 							return  | 
					
						
							|  |  |  | 						} | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					// center and trigger load events...
 | 
					
						
							|  |  |  | 					centerRibbon() | 
					
						
							|  |  |  | 				}, SLIDESHOW_INTERVAL) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			} else { | 
					
						
							|  |  |  | 				window._slideshow_timer != null && clearInterval(_slideshow_timer) | 
					
						
							|  |  |  | 				showStatus('Slideshow: stopped...') | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 17:58:23 +04:00
										 |  |  | var toggleTheme = createCSSClassToggler('.viewer', | 
					
						
							|  |  |  | 		[ | 
					
						
							|  |  |  | 			'gray', | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 			'dark', | 
					
						
							| 
									
										
										
										
											2013-05-17 17:58:23 +04:00
										 |  |  | 			'light' | 
					
						
							| 
									
										
										
										
											2013-05-24 00:32:42 +04:00
										 |  |  | 		], | 
					
						
							| 
									
										
										
										
											2013-06-01 21:06:10 +04:00
										 |  |  | 		// XXX does this get called for default state (gray)???
 | 
					
						
							| 
									
										
										
										
											2013-05-24 00:32:42 +04:00
										 |  |  | 		function(action){ | 
					
						
							|  |  |  | 			SETTINGS['theme'] = action | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2013-05-17 17:58:23 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-01 18:43:14 +04:00
										 |  |  | var toggleImageInfo = createCSSClassToggler('.viewer', | 
					
						
							|  |  |  | 		'.image-info-visible', | 
					
						
							|  |  |  | 		function(action){ | 
					
						
							|  |  |  | 			if(toggleSingleImageMode('?') == 'off'){ | 
					
						
							|  |  |  | 				SETTINGS['image-info-ribbon-mode'] = action | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2013-05-30 03:26:49 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-30 19:15:38 +04:00
										 |  |  | var toggleInlineImageInfo = createCSSClassToggler('.viewer',  | 
					
						
							|  |  |  | 		'.image-info-inline-visible', | 
					
						
							|  |  |  | 		function(action){ | 
					
						
							|  |  |  | 			if(action == 'on'){ | 
					
						
							|  |  |  | 				$(document) | 
					
						
							|  |  |  | 					.on('mouseover', inlineImageInfoHoverHandler) | 
					
						
							|  |  |  | 			} else { | 
					
						
							|  |  |  | 				$(document) | 
					
						
							|  |  |  | 					.off('mouseover', inlineImageInfoHoverHandler) | 
					
						
							|  |  |  | 					$('.inline-image-info').remove() | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | // NOTE: this confirmsto the css toggler protocol, but is not implemented 
 | 
					
						
							|  |  |  | // 		via createCSSClassToggler as we do not need to set any classes,
 | 
					
						
							|  |  |  | // 		al least at this point...
 | 
					
						
							|  |  |  | // XXX should we use the createCSSClassToggler for this?
 | 
					
						
							|  |  |  | // XXX revise: does extra stuff...
 | 
					
						
							| 
									
										
										
										
											2013-06-03 17:48:27 +04:00
										 |  |  | /* | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | function toggleImageProportions(mode){ | 
					
						
							| 
									
										
										
										
											2013-05-23 18:58:45 +04:00
										 |  |  | 	// normal images...
 | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 	var image = $('.image') | 
					
						
							|  |  |  | 	var h = image.outerHeight(true) | 
					
						
							|  |  |  | 	var w = image.outerWidth(true) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if(mode == '?'){ | 
					
						
							|  |  |  | 		return h != w ? 'viewer' : 'square' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// square...
 | 
					
						
							|  |  |  | 	} else if(h != w || mode == 'square'){ | 
					
						
							| 
									
										
										
										
											2013-06-01 21:06:10 +04:00
										 |  |  | 		mode = 'square' | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 		var size = Math.min(w, h) | 
					
						
							|  |  |  | 		image.css({ | 
					
						
							|  |  |  | 			width: size, | 
					
						
							|  |  |  | 			height: size | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2013-05-23 18:58:45 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		// account for rotation...
 | 
					
						
							|  |  |  | 		correctImageProportionsForRotation(image) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 		centerView(null, 'css') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// viewer size...
 | 
					
						
							|  |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2013-06-01 21:06:10 +04:00
										 |  |  | 		mode = 'viewer' | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 		var viewer = $('.viewer') | 
					
						
							|  |  |  | 		var W = viewer.innerWidth() | 
					
						
							|  |  |  | 		var H = viewer.innerHeight() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if(W > H){ | 
					
						
							|  |  |  | 			image.css('width', W * h/H) | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			image.css('height', H * w/W) | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2013-05-23 18:58:45 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		// account for rotation...
 | 
					
						
							|  |  |  | 		correctImageProportionsForRotation(image) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 		centerView(null, 'css') | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-06-01 21:06:10 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-03 17:48:27 +04:00
										 |  |  | 	return mode | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2013-06-03 17:48:27 +04:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var toggleImageProportions = createCSSClassToggler('.viewer', | 
					
						
							|  |  |  | 		[ | 
					
						
							|  |  |  | 			'fit-square', | 
					
						
							|  |  |  | 			'fit-viewer' | 
					
						
							|  |  |  | 		], | 
					
						
							|  |  |  | 		function(action){ | 
					
						
							|  |  |  | 			var image = $('.image') | 
					
						
							|  |  |  | 			var h = image.outerHeight(true) | 
					
						
							|  |  |  | 			var w = image.outerWidth(true) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// viewer proportions...
 | 
					
						
							|  |  |  | 			if(action == 'fit-image-to-viewer'){ | 
					
						
							|  |  |  | 				var viewer = $('.viewer') | 
					
						
							|  |  |  | 				var W = viewer.innerWidth() | 
					
						
							|  |  |  | 				var H = viewer.innerHeight() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				if(W > H){ | 
					
						
							|  |  |  | 					image.css('width', W * h/H) | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					image.css('height', H * w/W) | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// account for rotation...
 | 
					
						
							|  |  |  | 				correctImageProportionsForRotation(image) | 
					
						
							|  |  |  | 				centerView(null, 'css') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			// square proportions...
 | 
					
						
							|  |  |  | 			} else { | 
					
						
							|  |  |  | 				var size = Math.min(w, h) | 
					
						
							|  |  |  | 				image.css({ | 
					
						
							|  |  |  | 					width: size, | 
					
						
							|  |  |  | 					height: size | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				// account for rotation...
 | 
					
						
							|  |  |  | 				correctImageProportionsForRotation(image) | 
					
						
							|  |  |  | 				centerView(null, 'css') | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-02 02:54:52 +04:00
										 |  |  | var toggleHelp = makeDrawerToggler( | 
					
						
							|  |  |  | 		function(){ | 
					
						
							| 
									
										
										
										
											2013-06-02 04:55:10 +04:00
										 |  |  | 			// XXX populate...
 | 
					
						
							|  |  |  | 			// 		...load from file.
 | 
					
						
							| 
									
										
										
										
											2013-06-02 02:54:52 +04:00
										 |  |  | 			return $('<h1>Help</h1>') | 
					
						
							| 
									
										
										
										
											2013-06-02 05:33:27 +04:00
										 |  |  | 		}, '.viewer') | 
					
						
							| 
									
										
										
										
											2013-06-02 02:54:52 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var toggleKeyboardHelp = makeDrawerToggler( | 
					
						
							|  |  |  | 		function(){ | 
					
						
							|  |  |  | 			return buildKeybindingsHelpHTML(KEYBOARD_CONFIG) | 
					
						
							| 
									
										
										
										
											2013-06-02 05:33:27 +04:00
										 |  |  | 		}, '.viewer') | 
					
						
							| 
									
										
										
										
											2013-06-02 02:54:52 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var toggleOptionsUI = makeDrawerToggler( | 
					
						
							|  |  |  | 		function(){ | 
					
						
							| 
									
										
										
										
											2013-06-02 04:55:10 +04:00
										 |  |  | 			// XXX populate...
 | 
					
						
							| 
									
										
										
										
											2013-06-02 02:54:52 +04:00
										 |  |  | 			return $('<h1>Options</h1>') | 
					
						
							| 
									
										
										
										
											2013-06-02 05:33:27 +04:00
										 |  |  | 		}, '.viewer') | 
					
						
							| 
									
										
										
										
											2013-05-23 16:13:10 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-02 05:33:27 +04:00
										 |  |  | // XXX needs styling and cleanup...
 | 
					
						
							|  |  |  | // XXX add a preview...
 | 
					
						
							|  |  |  | var toggleImageInfoDrawer = makeDrawerToggler( | 
					
						
							|  |  |  | 		function(){ | 
					
						
							|  |  |  | 			var gid = getImageGID(getImage()) | 
					
						
							|  |  |  | 			var r = getRibbonIndex(getRibbon()) | 
					
						
							|  |  |  | 			var data = IMAGES[gid] | 
					
						
							|  |  |  | 			var orientation = data.orientation | 
					
						
							|  |  |  | 			orientation = orientation == null ? 0 : orientation | 
					
						
							|  |  |  | 			var order = DATA.order.indexOf(gid) | 
					
						
							|  |  |  | 			var name = data.path.split('/').pop() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			return $('<div>'+ | 
					
						
							|  |  |  | 					'<h1>"'+ name +'"</h1>'+ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					'Orientation: '+ orientation +'deg<br>'+ | 
					
						
							|  |  |  | 					'GID: '+ gid +'<br>'+ | 
					
						
							|  |  |  | 					'Path: "'+ data.path +'"<br>'+ | 
					
						
							|  |  |  | 					'Order: '+ order +'<br>'+ | 
					
						
							|  |  |  | 					'Position (ribbon): '+ (DATA.ribbons[r].indexOf(gid)+1) + | 
					
						
							|  |  |  | 						'/'+ DATA.ribbons[r].length +'<br>'+ | 
					
						
							|  |  |  | 					'Position (global): '+ (order+1) +'/'+ DATA.order.length +'<br>'+ | 
					
						
							|  |  |  | 				'</div>') | 
					
						
							|  |  |  | 		}, '.viewer') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-23 16:13:10 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | /********************************************************************** | 
					
						
							|  |  |  | * vim:set ts=4 sw=4 :                                                */ |