Index: /issm/trunk-jpl/src/m/plot/applyoptions.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/applyoptions.js	(revision 20510)
+++ /issm/trunk-jpl/src/m/plot/applyoptions.js	(revision 20511)
@@ -11,5 +11,5 @@
 		if (options.getfieldvalue('colorbar')==1) {
 			//Handle movie data {{{
-			if (typeof data == 'string') {
+				if (typeof data == 'string') {
 				//throw Error('plot error message: data of type string');
 				return;
@@ -25,8 +25,10 @@
 					})
 				});
-				data = data[node['movieFrame']].slice(0,-1);
+				data = data[0].slice(0,-1);
 			} //}}}
 			//Variable options initialization {{{
+			
 			var caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			//if (options.exist('log')) options.changefieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
 			var canvassize = options.getfieldvalue('canvassize',480);
 			var cheight;
@@ -49,10 +51,10 @@
 			if (options.exist('log')) {
 				for (var i = cdivisions; i >= 0; i--) {
-					if (caxisdelta*i/cdivisions==min) {
+					if (caxisdelta*i/cdivisions==caxis[0]) {
 						labels[i] = (caxis[0]).toPrecision(precision);
 					}
 					else {
-						labels[i] = (Math.exp(Math.log(caxisdelta)*i/cdivisions)+caxis[0]).toPrecision(precision);
-					}	
+						labels[i] = (Math.exp(Math.log(caxisdelta)*(cdivisions-i)/cdivisions)+caxis[0]).toPrecision(precision);
+					}
 				}
 			} else {
@@ -228,8 +230,16 @@
 	var cmap = options.getfieldvalue('cmap','jet');
 	var colorbar = colorbars[cmap];
-	for (var i = 0; i < colorbar.length; i++) {
-		color = colorbar[colorbar.length-i-1];
-		color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
-		tgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
+	if (options.exist('log')) {
+		for (var i = 0; i < colorbar.length; i++) {
+			color = colorbar[colorbar.length-i-1];
+			color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+			tgradient.addColorStop(1.0-Math.exp(Math.log((colorbar.length-i)/colorbar.length)/Math.log(options.getfieldvalue('log',Math.E))*i/colorbar.length),'rgba('+color.toString()+',1.0)');
+		}
+	} else {
+		for (var i = 0; i < colorbar.length; i++) {
+			color = colorbar[colorbar.length-i-1];
+			color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+			tgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
+		}
 	}
 	
Index: /issm/trunk-jpl/src/m/plot/plot_unit.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/plot_unit.js	(revision 20510)
+++ /issm/trunk-jpl/src/m/plot/plot_unit.js	(revision 20511)
@@ -96,4 +96,5 @@
 			else{ //triangular elements	
 				caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+				if (options.exist('log')) caxis = [Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log')),Math.log10(caxis[1])/Math.log10(options.getfieldvalue('log'))];
 				datamin = caxis[0];
 				datamax = caxis[1];
@@ -196,13 +197,14 @@
 					})
 				});
-				
-				for(var i = 0; i < data.length; i++){
-					//Prevent evaluation of datasubarray min/max if caxis exists
-					if (options.exist('caxis')) {
-						caxis = options.getfieldvalue('caxis');
-					}
-					else {
-						caxis = [ArrayMin(data[i]),ArrayMax(data[i].slice(0,-1))];
-					}
+				//Prevent evaluation of datasubarray min/max if caxis exists
+				if (options.exist('caxis')) {
+					caxis = options.getfieldvalue('caxis');
+				}
+				else {
+					caxis = [ArrayMin(data[0]),ArrayMax(data[0].slice(0,-1))];
+				}
+				if (options.exist('log')) caxis = [Math.log10(caxis[0])/Math.log10(options.getfieldvalue('log')),Math.log10(caxis[1])/Math.log10(options.getfieldvalue('log'))];
+				
+				for(var i = 0; i < data.length; i++){					
 					datamin = caxis[0];
 					datamax = caxis[1];
Index: /issm/trunk-jpl/src/m/plot/processdata.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/processdata.js	(revision 20510)
+++ /issm/trunk-jpl/src/m/plot/processdata.js	(revision 20511)
@@ -191,7 +191,7 @@
 				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
 			}
-		   for(var i=0;i<md.mesh.numberofvertices;i++){
+			for(var i=0;i<md.mesh.numberofvertices;i++){
 			   data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log'));
-		   }
+			}
 		}
 	}
@@ -200,4 +200,31 @@
     if (datasize==md.mesh.numberofvertices+1){
         datatype=5;
+		
+		//log?	
+		if (options.exist('log')){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<bounds[0])data[i][j]=bounds[0];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]>bounds[1])data[i][j]=bounds[1];
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++) {
+				for(var j=0;j<data[i].length;j++) {
+					if(data[i][j]<=0) {
+						throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+					}
+				}
+			}
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<data[i].length;j++) {
+					data[i][j]=Math.log10(data[i][j])/Math.log10(options.getfieldvalue('log'));
+				}
+			}
+		}
     }
 	
