Index: lib/OpenLayers/Layer/ArcGISCache.js
===================================================================
--- lib/OpenLayers/Layer/ArcGISCache.js	(revision 12268)
+++ lib/OpenLayers/Layer/ArcGISCache.js	(working copy)
@@ -172,6 +172,7 @@
                 
                 this.lods = [];
                 for(var key in info.tileInfo.lods) {
+					if (typeof(info.tileInfo.lods[key]) === 'function') continue;
                     var lod = info.tileInfo.lods[key];
                     if (this.useScales) {
                         this.scales.push(lod.scale);
Index: tests/Layer/ArcGISCache.html
===================================================================
--- tests/Layer/ArcGISCache.html	(revision 12268)
+++ tests/Layer/ArcGISCache.html	(working copy)
@@ -43,6 +43,30 @@
             }
         }        
     }
+
+	/* 
+	 * Test that functions don't end up in the lods of the layer. This messes up zooming when
+	 * resolutions are very small/scales are very large/zoomed waay in.
+	 */
+    function test_Layer_ARCGISCACHE_lods (t) {
+        t.plan( 2 );
+        var layerInfo = capabilitiesObject;
+		
+		lods = layerInfo.tileInfo.lods.length;
+		
+		layerInfo.tileInfo.lods.arrayFn1 = function() { return 'a method on an array, added by some frameworks.'; };
+		layerInfo.tileInfo.lods.arrayFn2 = function() { return "I'm looking at YOU, ExtJS"; };
+		
+		t.ok( lods == layerInfo.tileInfo.lods.length, 'proper number of "Levels of Detail" before initialization' );
+		
+        //initialize the layer using the JSON object from an arcgis server
+        //SEE: ArcGISCache.json
+        var layer = new OpenLayers.Layer.ArcGISCache(name, url, {
+            layerInfo: layerInfo
+        });
+		
+		t.ok( lods == layer.lods.length, 'proper number of "Levels of Detail" after initialization.' );        
+    }
     
     /**
      * lets make sure we're getting the correct urls back with a basic auto-configure setup 
