Clean up topo2 initialization.  (WIP)

Change-Id: I417800019a5ebdf90da0f29ef11e7c05a4999b77
diff --git a/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js b/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
index 7dcf325..d52154c 100644
--- a/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
+++ b/web/gui/src/main/webapp/app/view/topo2/topo2Zoom.js
@@ -15,48 +15,44 @@
  */
 
 /*
- ONOS GUI -- Topology Breadcrumb Module.
- Module that renders the breadcrumbs for regions
+ ONOS GUI -- Topology Zoom Module.
+ Module that handles Zoom events.
  */
 
 (function () {
-
     'use strict';
 
-    var zs, ps;
+    // injected references
+    var fs, zs, ps;
 
+    // internal state
     var zoomer,
         zoomEventListeners = [];
 
+    function createZoomer(options) {
+        // need to wrap the original zoom callback to extend its behavior
+        var origCallback = fs.isF(options.zoomCallback) || function () {};
+
+        options.zoomCallback = function () {
+            origCallback();
+
+            angular.forEach(zoomEventListeners, function (ev) {
+                ev(zoomer);
+            });
+        };
+
+        zoomer = zs.createZoomer(options);
+        return zoomer;
+    }
+
     function getZoomer() {
         return zoomer;
     }
 
-    function createZoomer(options) {
-        var settings = angular.extend({}, options, {
-            zoomCallback: zoomCallback
-        });
-
-        zoomer = zs.createZoomer(settings);
-        return zoomer;
-    }
-
-    function zoomCallback() {
-        var sc = zoomer.scale(),
-            tr = zoomer.translate();
-
-        ps.setPrefs('topo_zoom', { tx: tr[0], ty: tr[1], sc: sc });
-
-        angular.forEach(zoomEventListeners, function (ev) {
-            ev(zoomer);
-        });
-    }
-
     function findZoomEventListener(ev) {
-        for (var i = 0, l = zoomEventListeners.length; i < l; i++) {
+        for (var i = 0, len = zoomEventListeners.length; i < len; i++) {
             if (zoomEventListeners[i] === ev) return i;
         }
-
         return -1;
     }
 
@@ -65,7 +61,6 @@
     }
 
     function removeZoomEventListener(callback) {
-
         var evIndex = findZoomEventListener(callback);
 
         if (evIndex !== -1) {
@@ -83,9 +78,10 @@
 
     angular.module('ovTopo2')
     .factory('Topo2ZoomService', [
-        'ZoomService', 'PrefsService',
-        function (_zs_, _ps_) {
+        'FnService', 'ZoomService', 'PrefsService',
+        function (_fs_, _zs_, _ps_) {
 
+            fs = _fs_;
             zs = _zs_;
             ps = _ps_;