| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | <html> | 
					
						
							|  |  |  | <head> | 
					
						
							|  |  |  | <title>ImageGrid.Viewer</title> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <style> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-03 02:27:54 +04:00
										 |  |  | /*  | 
					
						
							|  |  |  | * XXX move the CSS to a separate file... | 
					
						
							|  |  |  | * XXX split-off styling/coloring from layout... | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 21:49:05 +04:00
										 |  |  | body { | 
					
						
							|  |  |  | 	font-family: sans-serif; | 
					
						
							|  |  |  | 	padding: 0px; | 
					
						
							|  |  |  | 	margin: 0px; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | .viewer { | 
					
						
							|  |  |  | 	position: relative; | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 	width: 100%; | 
					
						
							|  |  |  | 	height: 100%; | 
					
						
							| 
									
										
										
										
											2013-04-29 01:59:59 +04:00
										 |  |  | 	overflow: hidden; | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 	/*border: solid blue 1px;*/ | 
					
						
							|  |  |  | 	box-sizing: border-box; | 
					
						
							| 
									
										
										
										
											2013-05-14 21:49:05 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	-moz-user-select: none; | 
					
						
							|  |  |  | 	-webkit-user-select: none; | 
					
						
							|  |  |  | 	-o-user-select: none; | 
					
						
							|  |  |  | 	-ms-user-select: none; | 
					
						
							|  |  |  | 	user-select: none; | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .ribbon-set { | 
					
						
							| 
									
										
										
										
											2013-04-29 01:59:59 +04:00
										 |  |  | 	position: absolute; | 
					
						
							| 
									
										
										
										
											2013-05-14 16:04:57 +04:00
										 |  |  | 	display: block; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 18:35:09 +04:00
										 |  |  | 	/* NOTE: this needs for scaling/zooming to behave correctly and not  | 
					
						
							|  |  |  | 			shift the element, when its dimensions change...  | 
					
						
							|  |  |  | 			...this is because .ribbon-set will both be used for scaling  | 
					
						
							|  |  |  | 			and aligning... */ | 
					
						
							| 
									
										
										
										
											2013-05-14 16:04:57 +04:00
										 |  |  | 	transform-origin: top left; | 
					
						
							|  |  |  | 	-ms-transform-origin: top left; | 
					
						
							|  |  |  | 	-webkit-transform-origin: top left; /* Safari and Chrome */ | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | } | 
					
						
							|  |  |  | .ribbon-set:empty:after { | 
					
						
							|  |  |  | 	display: block; | 
					
						
							|  |  |  | 	top: 0px; | 
					
						
							|  |  |  | 	left: 0px; | 
					
						
							|  |  |  | 	width: 100%; | 
					
						
							|  |  |  | 	height: 100%; | 
					
						
							|  |  |  | 	content: "Empty"; | 
					
						
							|  |  |  | 	text-align: center; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .ribbon { | 
					
						
							|  |  |  | 	position: relative; | 
					
						
							|  |  |  | 	display: block; | 
					
						
							|  |  |  | 	height: auto; | 
					
						
							|  |  |  | 	min-width: 0px; | 
					
						
							|  |  |  | 	overflow: visible; | 
					
						
							|  |  |  | 	white-space: nowrap; | 
					
						
							|  |  |  | 	font-size: 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	margin-top: 20px; | 
					
						
							|  |  |  | 	margin-bottom: 20px; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-04-30 00:28:47 +04:00
										 |  |  | .ribbon:empty { | 
					
						
							|  |  |  | 	display: none; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | .ribbon:first-child { | 
					
						
							|  |  |  | 	margin-top: 0px; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .ribbon:last-child { | 
					
						
							|  |  |  | 	margin-bottom: 0px; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .image { | 
					
						
							|  |  |  | 	position: relative; | 
					
						
							|  |  |  | 	display: inline-block; | 
					
						
							|  |  |  | 	vertical-align: middle; | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 	text-align:left; | 
					
						
							| 
									
										
										
										
											2013-04-29 19:12:19 +04:00
										 |  |  | 	width: 300px; | 
					
						
							|  |  |  | 	height: 300px; | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 	font-size: 12pt; | 
					
						
							| 
									
										
										
										
											2013-04-29 23:07:47 +04:00
										 |  |  | 	overflow: hidden; | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-29 19:12:19 +04:00
										 |  |  | 	box-sizing: border-box; | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 	color: white; | 
					
						
							| 
									
										
										
										
											2013-05-12 14:31:03 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 	text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-12 14:31:03 +04:00
										 |  |  | 	background: no-repeat 50% black; | 
					
						
							|  |  |  | 	background-size: contain; | 
					
						
							|  |  |  | 	/* XXX do we need this? */ | 
					
						
							|  |  |  | 	border: solid black 5px; | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | } | 
					
						
							|  |  |  | .current.image { | 
					
						
							| 
									
										
										
										
											2013-05-12 14:31:03 +04:00
										 |  |  | 	background: no-repeat 50% black; | 
					
						
							|  |  |  | 	background-size: contain; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* XXX remove this... */ | 
					
						
							|  |  |  | 	border: solid red 5px; | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-29 23:07:47 +04:00
										 |  |  | /* dot mark... */ | 
					
						
							| 
									
										
										
										
											2013-05-17 04:52:43 +04:00
										 |  |  | .marks-visible.viewer .marked.image:after { | 
					
						
							| 
									
										
										
										
											2013-04-29 19:12:19 +04:00
										 |  |  | 	display: block; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	content: ""; | 
					
						
							|  |  |  | 	font-size: 0pt; | 
					
						
							|  |  |  | 	border: none; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-29 23:07:47 +04:00
										 |  |  | 	width: 15px; | 
					
						
							|  |  |  | 	height: 15px; | 
					
						
							| 
									
										
										
										
											2013-04-29 19:12:19 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bottom: 5px; | 
					
						
							|  |  |  | 	right: 5px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	border-radius: 50%; | 
					
						
							|  |  |  | 	background: blue; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-29 23:07:47 +04:00
										 |  |  | /* corner mark... (a-la bookmarks in PortableMag) */ | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  | .marked.image:after { | 
					
						
							|  |  |  | 	display: block; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	content: ""; | 
					
						
							|  |  |  | 	font-size: 0pt; | 
					
						
							|  |  |  | 	border: none; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	width: 30px; | 
					
						
							|  |  |  | 	height: 30px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	top: -15px; | 
					
						
							|  |  |  | 	right: -15px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	background: blue; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	-webkit-transform: rotate(45deg); | 
					
						
							|  |  |  | 	-moz-transform: rotate(45deg); | 
					
						
							|  |  |  | 	-o-transform: rotate(45deg); | 
					
						
							|  |  |  | 	-ms-transform: rotate(45deg); | 
					
						
							|  |  |  | 	transform: rotate(45deg); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-30 00:28:47 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 04:52:43 +04:00
										 |  |  | .marks-visible.viewer:after { | 
					
						
							|  |  |  | 	display: block; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	content: "Marks visible"; | 
					
						
							|  |  |  | 	font-size: 11pt; | 
					
						
							|  |  |  | 	border: none; | 
					
						
							|  |  |  | 	color: blue; | 
					
						
							|  |  |  | 	width: auto; | 
					
						
							|  |  |  | 	height: auto; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	top: 10px; | 
					
						
							|  |  |  | 	right: 10px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .marked-only-view.viewer:after { | 
					
						
							| 
									
										
										
										
											2013-04-30 00:28:47 +04:00
										 |  |  | 	display: block; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	content: "Showing marked images only"; | 
					
						
							| 
									
										
										
										
											2013-05-17 04:52:43 +04:00
										 |  |  | 	font-size: 11pt; | 
					
						
							| 
									
										
										
										
											2013-04-30 00:28:47 +04:00
										 |  |  | 	border: none; | 
					
						
							|  |  |  | 	color: blue; | 
					
						
							|  |  |  | 	width: auto; | 
					
						
							|  |  |  | 	height: auto; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	top: 10px; | 
					
						
							|  |  |  | 	right: 10px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-05-17 04:52:43 +04:00
										 |  |  | .marked-only-view.marks-visible.viewer:after { | 
					
						
							|  |  |  | 	content: "Showing marked images only (marks visible)"; | 
					
						
							| 
									
										
										
										
											2013-04-30 00:28:47 +04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2013-05-17 04:52:43 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* XXX should we use opacity??? */ | 
					
						
							|  |  |  | .marked-only-view.viewer:not(.marks-visible) .image:not(.marked) { | 
					
						
							|  |  |  | 	opacity: 0.3; | 
					
						
							| 
									
										
										
										
											2013-04-30 00:28:47 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | .up-indicator, | 
					
						
							| 
									
										
										
										
											2013-05-03 19:24:06 +04:00
										 |  |  | .down-indicator, | 
					
						
							|  |  |  | .start-indicator, | 
					
						
							|  |  |  | .end-indicator { | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 	display: block; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	content: ""; | 
					
						
							|  |  |  | 	top: 0px; | 
					
						
							|  |  |  | 	left: 50%; | 
					
						
							|  |  |  | 	height: 50px; | 
					
						
							|  |  |  | 	width: 100px; | 
					
						
							|  |  |  | 	margin-left: -50px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	overflow: hidden; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	cursor: hand; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .up-indicator:after, | 
					
						
							|  |  |  | .down-indicator:after { | 
					
						
							|  |  |  | 	display: inline-block; | 
					
						
							|  |  |  | 	position: absolute; | 
					
						
							|  |  |  | 	content: ""; | 
					
						
							|  |  |  | 	width: 50px; | 
					
						
							|  |  |  | 	height: 50px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	bottom: -25px; | 
					
						
							|  |  |  | 	left: 25px; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-30 01:30:02 +04:00
										 |  |  | 	background: yellow; | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	-webkit-transform: rotate(45deg); | 
					
						
							|  |  |  | 	-moz-transform: rotate(45deg); | 
					
						
							|  |  |  | 	-o-transform: rotate(45deg); | 
					
						
							|  |  |  | 	-ms-transform: rotate(45deg); | 
					
						
							|  |  |  | 	transform: rotate(45deg); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .down-indicator { | 
					
						
							|  |  |  | 	top: auto; | 
					
						
							|  |  |  | 	bottom: 0px; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .down-indicator:after { | 
					
						
							|  |  |  | 	top: -25px; | 
					
						
							|  |  |  | 	bottom: auto; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-05-03 19:24:06 +04:00
										 |  |  | .start-indicator, | 
					
						
							|  |  |  | .end-indicator { | 
					
						
							|  |  |  | 	left: 0px; | 
					
						
							|  |  |  | 	width: 10px; | 
					
						
							|  |  |  | 	height: 100%; | 
					
						
							|  |  |  | 	margin: 0px; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	background: yellow; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .end-indicator { | 
					
						
							|  |  |  | 	left: auto; | 
					
						
							|  |  |  | 	right: 0px; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | /* default state */ | 
					
						
							|  |  |  | .up-indicator, | 
					
						
							| 
									
										
										
										
											2013-05-03 19:24:06 +04:00
										 |  |  | .down-indicator, | 
					
						
							|  |  |  | .start-indicator, | 
					
						
							|  |  |  | .end-indicator { | 
					
						
							|  |  |  | 	display: none; | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | .single-image-mode.viewer .image { | 
					
						
							|  |  |  | 	background-color: transparent; | 
					
						
							| 
									
										
										
										
											2013-05-17 16:03:40 +04:00
										 |  |  | 	/* NOTE: need to keep a distance from screen borders... */ | 
					
						
							|  |  |  | 	border: solid transparent 2px; | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | } | 
					
						
							|  |  |  | .single-image-mode.viewer .image:not(.current) { | 
					
						
							|  |  |  | 	/* XXX for some reason this breaks the alignment on large magnifications... | 
					
						
							|  |  |  | 	display: none; | 
					
						
							|  |  |  | 	*/ | 
					
						
							| 
									
										
										
										
											2013-05-17 15:48:39 +04:00
										 |  |  | 	/* XXX this makes images pass through the :visible filter... | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 	opacity: 0; | 
					
						
							| 
									
										
										
										
											2013-05-17 15:48:39 +04:00
										 |  |  | 	*/ | 
					
						
							| 
									
										
										
										
											2013-05-17 16:03:40 +04:00
										 |  |  | 	visibility: hidden; | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 18:20:38 +04:00
										 |  |  | /* XXX this is by no means final... */ | 
					
						
							|  |  |  | .viewer, | 
					
						
							|  |  |  | .light.viewer { | 
					
						
							|  |  |  | 	background: white; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .gray.viewer { | 
					
						
							|  |  |  | 	background: #333; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .dark.viewer { | 
					
						
							| 
									
										
										
										
											2013-05-20 02:49:14 +04:00
										 |  |  | 	background: #0a0a0a; | 
					
						
							| 
									
										
										
										
											2013-05-17 18:20:38 +04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | </style> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <script src="jquery.js"></script> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 23:07:07 +04:00
										 |  |  | <script src="lib/jli.js"></script> | 
					
						
							|  |  |  | <script src="lib/keyboard.js"></script> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 17:42:17 +04:00
										 |  |  | <script src="base.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | <script src="modes.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-17 06:57:35 +04:00
										 |  |  | <script src="marks.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-14 17:42:17 +04:00
										 |  |  | <script src="data.js"></script> | 
					
						
							|  |  |  | <script src="ui.js"></script> | 
					
						
							| 
									
										
										
										
											2013-05-03 01:29:43 +04:00
										 |  |  | <script src="keybindings3.js"></script> | 
					
						
							| 
									
										
										
										
											2013-04-29 02:31:01 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-14 21:49:05 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | <!-- XXX STUB --> | 
					
						
							|  |  |  | <script src="images.js"></script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-02 19:47:04 +04:00
										 |  |  | <script> | 
					
						
							| 
									
										
										
										
											2013-04-29 02:31:01 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-17 18:20:38 +04:00
										 |  |  | //DEBUG = true | 
					
						
							| 
									
										
										
										
											2013-05-14 21:49:05 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-15 00:24:33 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | // setup... | 
					
						
							|  |  |  | $(function(){ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-18 01:16:56 +04:00
										 |  |  | 	toggleTheme('gray') | 
					
						
							| 
									
										
										
										
											2013-05-17 17:58:23 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 	// NOTE: this is global so as to not to add any extra complexity to  | 
					
						
							|  |  |  | 	//		the internal workings... | 
					
						
							| 
									
										
										
										
											2013-05-03 17:08:59 +04:00
										 |  |  | 	$('.viewer') | 
					
						
							|  |  |  | 		.click(clickHandler) | 
					
						
							| 
									
										
										
										
											2013-05-17 15:34:45 +04:00
										 |  |  | 		// XXX for some reason this messes up alignment on initial view... | 
					
						
							|  |  |  | 		//.dblclick(dblClickHandler) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	$(window) | 
					
						
							|  |  |  | 		.resize(function() { | 
					
						
							|  |  |  | 			// XXX should this be animated or not? | 
					
						
							|  |  |  | 			centerView() | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 		 | 
					
						
							| 
									
										
										
										
											2013-05-02 23:22:43 +04:00
										 |  |  | 	$(document) | 
					
						
							|  |  |  | 		.keydown(makeKeyboardHandler( | 
					
						
							|  |  |  | 			KEYBOARD_CONFIG, | 
					
						
							| 
									
										
										
										
											2013-05-15 00:24:33 +04:00
										 |  |  | 			function(k){ | 
					
						
							|  |  |  | 				window.DEBUG && console.log(k) | 
					
						
							|  |  |  | 			})) | 
					
						
							| 
									
										
										
										
											2013-05-03 17:08:59 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-13 02:24:36 +04:00
										 |  |  | 	setupDataBindings() | 
					
						
							| 
									
										
										
										
											2013-05-03 17:08:59 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	//setElementOrigin($('.ribbon-set'), 'top', 'left') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// we have an image file... | 
					
						
							|  |  |  | 	if((DATA_ATTR + '_IMAGES_FILE') in localStorage){ | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 		var loading = loadFileImages(localStorage[DATA_ATTR + '_IMAGES_FILE']) | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 			.done(function(){ | 
					
						
							|  |  |  | 				DATA = loadLocalStorageData() | 
					
						
							|  |  |  | 				loadData() | 
					
						
							|  |  |  | 			}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		// everything is in localStorage... | 
					
						
							|  |  |  | 		if('DATA' in localStorage){ | 
					
						
							|  |  |  | 			loadLocalStorage() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		// legacy default data... | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			DATA = convertDataGen1(image_list) | 
					
						
							|  |  |  | 			DATA = DATA.data | 
					
						
							|  |  |  | 			IMAGES = DATA.images | 
					
						
							|  |  |  | 			loadData() | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 		var loading = $.Deferred().resolve() | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 	loading | 
					
						
							|  |  |  | 		.done(function(){ | 
					
						
							|  |  |  | 			// XXX this will reload everything... | 
					
						
							|  |  |  | 			if('MARKED' in localStorage){ | 
					
						
							|  |  |  | 				loadLocalStorageMarks() | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-22 03:41:51 +04:00
										 |  |  | 			// XXX stub... | 
					
						
							|  |  |  | 			//centerView(focusImage($('.image').first()), 'css') | 
					
						
							|  |  |  | 			updateImages() | 
					
						
							|  |  |  | 		}) | 
					
						
							| 
									
										
										
										
											2013-05-22 03:00:38 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-02 23:22:43 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | </head> | 
					
						
							|  |  |  | <body> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <!-- This is the basic viewer structure...
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Unpopulated | 
					
						
							|  |  |  | NOTE: there can be only .ribbon-set element. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <div class="viewer"> | 
					
						
							|  |  |  | 	<div class="ribbon-set"></div> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Populated | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <div class="viewer"> | 
					
						
							|  |  |  | 	<div class="ribbon-set"> | 
					
						
							|  |  |  | 		<div class="ribbon"> | 
					
						
							|  |  |  | 			<div class="image"></div> | 
					
						
							|  |  |  | 			<div class="image"></div> | 
					
						
							|  |  |  | 		</div> | 
					
						
							|  |  |  | 		<div class="ribbon"> | 
					
						
							|  |  |  | 			<div class="image"></div> | 
					
						
							|  |  |  | 			<div class="current image"></div> | 
					
						
							|  |  |  | 			<div class="image"></div> | 
					
						
							|  |  |  | 			<div class="image"></div> | 
					
						
							|  |  |  | 		</div> | 
					
						
							|  |  |  | 	</div> | 
					
						
							|  |  |  | </div> | 
					
						
							|  |  |  | --> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <div class="viewer"> | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | 	<div class="ribbon-set"></div> | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-30 01:34:26 +04:00
										 |  |  | 	<!-- XXX should these be here??? --> | 
					
						
							| 
									
										
										
										
											2013-04-30 00:54:32 +04:00
										 |  |  | 	<div class="up-indicator"></div> | 
					
						
							|  |  |  | 	<div class="down-indicator"></div> | 
					
						
							| 
									
										
										
										
											2013-05-03 19:24:06 +04:00
										 |  |  | 	<div class="start-indicator"></div> | 
					
						
							|  |  |  | 	<div class="end-indicator"></div> | 
					
						
							| 
									
										
										
										
											2013-04-26 05:30:56 +04:00
										 |  |  | </div> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <!-- vim:set ts=4 sw=4 spell : --> | 
					
						
							|  |  |  | </body> | 
					
						
							|  |  |  | </html> |