Index: /issm/trunk-jpl/src/m/plot/webgl.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/webgl.js	(revision 20770)
+++ /issm/trunk-jpl/src/m/plot/webgl.js	(revision 20771)
@@ -47,12 +47,12 @@
 	canvas.gl = gl;
 	canvas.zoomBounds = options.getfieldvalue('zoomlim',[0.001,100.0]);
-	canvas.zoomFactor = clamp(options.getfieldvalue('zoom',1.0), canvas.zoomBounds[0], canvas.zoomBounds[1]);
-	canvas.zoomLast = canvas.zoomFactor;
+	canvas.zoom = clamp(options.getfieldvalue('zoom',1.0), canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	canvas.zoomLast = canvas.zoom;
 	canvas.cameraMatrix = mat4.create();
 	canvas.translation = options.getfieldvalue('origin',[0,0,0.0]);
 	canvas.rotationAzimuthBounds = options.getfieldvalue('azlim',[0,360]);
 	canvas.rotationElevationBounds = options.getfieldvalue('ellim',[-180,180]);
-	canvas.rotationDefault = options.getfieldvalue('view',[0,90]); //0 azimuth - up is north, 90 elevation - looking straight down
-	canvas.rotation = canvas.rotationDefault;
+	canvas.view = options.getfieldvalue('view',[0,90]); //0 azimuth - up is north, 90 elevation - looking straight down
+	canvas.rotation = canvas.view;
 	canvas.controlsensitivity = options.getfieldvalue('controlsensitivity',1);
 	canvas.twod = options.getfieldvalue('2d','off') == 'on';
@@ -180,17 +180,10 @@
 	return Math.max(min, Math.min(value, max));
 } //}}}
-function recoverview(canvasid,defaultview) { //{{{
+function recover(canvasid,name,defaultvalue) { //{{{
 	var canvas  = document.getElementById(canvasid);
-	if (canvas && canvas.hasOwnProperty("rotation")) {
-		return canvas.rotation;
-	}
-	return defaultview;
-} //}}}
-function recovercenteroffset(canvasid,defaultcenter) { //{{{
-	var canvas  = document.getElementById(canvasid);
-	if (canvas && canvas.hasOwnProperty("translation")) {
-		return canvas.translation;
-	}
-	return defaultcenter;
+	if (canvas && canvas.hasOwnProperty(name)) {
+		return canvas[name];
+	}
+	return defaultvalue;
 } //}}}
 //}}}
@@ -339,6 +332,6 @@
 	}
 	if (ev.srcEvent.shiftKey || ev.pointers.length == 2) {
-		var deltaX = (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoomFactor * -2 * canvas.controlsensitivity;
-		var deltaY = (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoomFactor * -2 * canvas.controlsensitivity;
+		var deltaX = (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoom * -2 * canvas.controlsensitivity;
+		var deltaY = (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoom * -2 * canvas.controlsensitivity;
 		
 		canvas.translation[0] += Math.cos(radians(canvas.rotation[0])) * deltaX - Math.sin(radians(canvas.rotation[0])) * deltaY;
@@ -346,6 +339,6 @@
 	}
 	else {
-		canvas.rotation[0] += degrees((canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoomFactor * -2 * canvas.controlsensitivity);
-		canvas.rotation[1] += degrees((canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoomFactor * -2 * canvas.controlsensitivity);
+		canvas.rotation[0] += degrees((canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoom * -2 * canvas.controlsensitivity);
+		canvas.rotation[1] += degrees((canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoom * -2 * canvas.controlsensitivity);
 		
 		if (canvas.rotation[0] > 360) {canvas.rotation[0] -= 360};
@@ -365,17 +358,17 @@
 	ev.preventDefault();
 	if (ev.type == 'pinchstart') {
-		canvas.zoomLast = canvas.zoomFactor;
+		canvas.zoomLast = canvas.zoom;
 	}
 	else {
-		canvas.zoomFactor = clamp(ev.scale * canvas.zoomLast, canvas.zoomBounds[0], canvas.zoomBounds[1]);
-		if (displaylog) console.log(canvas.zoomFactor);
+		canvas.zoom = clamp(ev.scale * canvas.zoomLast, canvas.zoomBounds[0], canvas.zoomBounds[1]);
+		if (displaylog) console.log(canvas.zoom);
 	}
 } //}}}
 function onZoom(ev,canvas,displaylog) { //{{{
 	ev.preventDefault();
-	var delta = clamp(clamp(ev.scale || ev.wheelDelta || -ev.detail, -1, 1) * canvas.controlsensitivity * canvas.zoomFactor / 20, -1.0, 1.0);
-	canvas.zoomFactor = clamp(canvas.zoomFactor + delta, canvas.zoomBounds[0], canvas.zoomBounds[1]);
-	
-	if (displaylog) console.log(canvas.zoomFactor);
+	var delta = clamp(clamp(ev.scale || ev.wheelDelta || -ev.detail, -1, 1) * canvas.controlsensitivity * canvas.zoom / 20, -1.0, 1.0);
+	canvas.zoom = clamp(canvas.zoom + delta, canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	
+	if (displaylog) console.log(canvas.zoom);
 } //}}}
 //}}}
@@ -392,5 +385,5 @@
 
 	if (canvas.twod) {
-		mat4.ortho(pMatrix, -1*aspectRatio/canvas.zoomFactor, 1*aspectRatio/canvas.zoomFactor, -1*aspectRatio/canvas.zoomFactor, 1*aspectRatio/canvas.zoomFactor, -1.0, 10000.0);
+		mat4.ortho(pMatrix, -aspectRatio/canvas.zoom, aspectRatio/canvas.zoom, -1/canvas.zoom, 1/canvas.zoom, -1.0, 10000.0);
 	}
 	else {
@@ -404,13 +397,13 @@
 	//Calculate rotation around camera focal point about worldspace origin
 	if (canvas.twod) {
+		mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(0), [0, 1, 0]);
+		mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(90), [1, 0, 0]);
+		mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
+	}
+	else {
 		mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(canvas.rotation[0]), [0, 1, 0]);
 		mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(canvas.rotation[1]), [1, 0, 0]);
 		mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
 	}
-	else {
-		mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(0), [0, 1, 0]);
-		mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(90), [1, 0, 0]);
-		mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
-	}
 	
 	//Apply rotation and scaling transform
@@ -419,5 +412,5 @@
 	//Apply screenspace translation
 	mat4.identity(translateMatrix);
-	mat4.translate(translateMatrix, translateMatrix, [0.0, 0.0, -1/canvas.zoomFactor]);
+	mat4.translate(translateMatrix, translateMatrix, [0.0, 0.0, -1/canvas.zoom]);
 	mat4.multiply(vMatrix, translateMatrix, vMatrix);
 
