GUI -- Removed dependence on jQuery -- it turns out that angular implements extend().

Change-Id: I0cca98975873aa6fa1bf8258a2bedbc508d3c7d7
diff --git a/web/gui/src/main/webapp/app/fw/svg/geodata.js b/web/gui/src/main/webapp/app/fw/svg/geodata.js
index 98e0724..63fa4ce 100644
--- a/web/gui/src/main/webapp/app/fw/svg/geodata.js
+++ b/web/gui/src/main/webapp/app/fw/svg/geodata.js
@@ -130,7 +130,7 @@
             // converts given TopoJSON-format data into corresponding GeoJSON
             //  data, and creates a path generator for that data.
             function createPathGenerator(topoData, opts) {
-                var settings = $.extend({}, defaultGenSettings, opts),
+                var settings = angular.extend({}, defaultGenSettings, opts),
                     topoObject = topoData.objects[settings.objectTag],
                     geoData = topojson.feature(topoData, topoObject),
                     proj = settings.projection,
diff --git a/web/gui/src/main/webapp/app/fw/svg/zoom.js b/web/gui/src/main/webapp/app/fw/svg/zoom.js
index 8995cad..dc0e32a 100644
--- a/web/gui/src/main/webapp/app/fw/svg/zoom.js
+++ b/web/gui/src/main/webapp/app/fw/svg/zoom.js
@@ -60,7 +60,7 @@
             function createZoomer(opts) {
                 var cz = 'ZoomService.createZoomer(): ',
                     d3s = ' (D3 selection) property defined',
-                    settings = $.extend({}, defaultSettings, opts),
+                    settings = angular.extend({}, defaultSettings, opts),
                     zoom = d3.behavior.zoom()
                         .translate([0, 0])
                         .scale(1)
diff --git a/web/gui/src/main/webapp/app/fw/util/fn.js b/web/gui/src/main/webapp/app/fw/util/fn.js
index cf9e737..10cb6ff 100644
--- a/web/gui/src/main/webapp/app/fw/util/fn.js
+++ b/web/gui/src/main/webapp/app/fw/util/fn.js
@@ -21,11 +21,12 @@
     'use strict';
 
     function isF(f) {
-        return $.isFunction(f) ? f : null;
+        return typeof f === 'function' ? f : null;
     }
 
     function isA(a) {
-        return $.isArray(a) ? a : null;
+        // NOTE: Array.isArray() is part of EMCAScript 5.1
+        return Array.isArray(a) ? a : null;
     }
 
     function isS(s) {
@@ -33,7 +34,7 @@
     }
 
     function isO(o) {
-        return $.isPlainObject(o) ? o : null;
+        return (o && typeof o === 'object' && o.constructor === Object) ? o : null;
     }
 
     function contains(a, x) {
diff --git a/web/gui/src/main/webapp/app/fw/util/keys.js b/web/gui/src/main/webapp/app/fw/util/keys.js
index d163292..81d0bc3 100644
--- a/web/gui/src/main/webapp/app/fw/util/keys.js
+++ b/web/gui/src/main/webapp/app/fw/util/keys.js
@@ -92,7 +92,7 @@
     }
 
     function setupGlobalKeys() {
-        $.extend(keyHandler, {
+        angular.extend(keyHandler, {
             globalKeys: {
                 backSlash: [quickHelp, 'Show / hide Quick Help'],
                 slash: [quickHelp, 'Show / hide Quick Help'],
diff --git a/web/gui/src/main/webapp/app/index.html b/web/gui/src/main/webapp/app/index.html
index 7dfcdbd..abb9053 100644
--- a/web/gui/src/main/webapp/app/index.html
+++ b/web/gui/src/main/webapp/app/index.html
@@ -27,7 +27,6 @@
 
     <script src="../tp/d3.js"></script>
     <script src="../tp/topojson.v1.min.js"></script>
-    <script src="../tp/jquery-2.1.1.min.js"></script>
 
     <!-- ONOS UI Framework included here -->
     <!-- TODO: use a single catenated-minified file here -->
diff --git a/web/gui/src/main/webapp/tests/karma.conf.js b/web/gui/src/main/webapp/tests/karma.conf.js
index a08167a..9c9af41 100644
--- a/web/gui/src/main/webapp/tests/karma.conf.js
+++ b/web/gui/src/main/webapp/tests/karma.conf.js
@@ -21,7 +21,6 @@
         '../tp/angular-route.js',
         '../tp/d3.js',
         '../tp/topojson.v1.min.js',
-        '../tp/jquery-2.1.1.min.js',
 
         // production code...
         // make sure modules are defined first...