hook up switchctrl all/local
diff --git a/web/ons-demo/RELEASE_NOTES.txt b/web/ons-demo/RELEASE_NOTES.txt
index 725dd23..41f4fcd 100644
--- a/web/ons-demo/RELEASE_NOTES.txt
+++ b/web/ons-demo/RELEASE_NOTES.txt
@@ -1,4 +1,11 @@
 ** April 8, 2013 **
+- map view
+- onos nodes at top
+- count only active switches in header
+- hook up switchctrl all and local actions
+
+
+** April 8, 2013 **
 - add explicit timeout logic so that the GUI doesn't have to be refreshed if the API misbehaves
 
 ** April 8, 2013 **
diff --git a/web/ons-demo/css/layout.default.css b/web/ons-demo/css/layout.default.css
index 2aa16fe..297e31b 100644
--- a/web/ons-demo/css/layout.default.css
+++ b/web/ons-demo/css/layout.default.css
@@ -102,15 +102,20 @@
 	width: 100%;
 }
 
-#controllerList {
+#onos {
 	display: -webkit-box;
-	-webkit-box-orient: horizontal;
-	overflow: scroll;
+}
+
+#actions {
+	display: -webkit-box;
 }
 
 #controllers {
 	display: -webkit-box;
+	overflow: scroll;
+	-webkit-box-flex: 1.0;
 }
+
 .controller {
 	margin: .25em;
 	background-color: blue;
diff --git a/web/ons-demo/css/skin.default.css b/web/ons-demo/css/skin.default.css
index 843fa4a..ae7dc4a 100644
--- a/web/ons-demo/css/skin.default.css
+++ b/web/ons-demo/css/skin.default.css
@@ -98,7 +98,7 @@
 	background-color: black;
 }
 
-.header, #controllers {
+.header, #onos {
 	border-bottom: 1px solid #AAA;;
 }
 
@@ -194,8 +194,20 @@
 	padding: .25em;
 	padding-left: 2.5em;
 	position: relative;
+	border: 1px solid #444;
+	color: white;
+	position: relative;
 }
 
+.controller:hover {
+	border: 1px solid white;
+}
+
+.action, .controller {
+	font-size: 20px;
+}
+
+
 .black-eye {
 	position: absolute;
 	top: 0px;
@@ -295,6 +307,7 @@
 
 .color2 {
 	opacity: .15;
+	pointer-events: none;
 	fill: #FFBA00;
 	background-color: #FFBA00;
 }
@@ -343,6 +356,7 @@
 
 .color9 {
 	opacity: .2;
+	pointer-events: none;
 	fill: #F53D65;
 	background-color: #F53D65;
 }
@@ -368,6 +382,27 @@
 	background-color: #6949D7;
 }
 
+.action {
+	margin: .25em;
+	padding: .25em;
+	padding-left: 1em;
+	padding-right: 1em;
+	border: 1px solid #AAA;
+	background-color: #444;
+	display: -webkit-box;
+	-webkit-box-pack: center;
+	-webkit-box-align: center;
+	color: white;
+}
+
+.action:hover {
+	border: 1px solid #FFF;
+}
+
+.action:active {
+	background-color: #222;
+}
+
 
 @-webkit-keyframes pending {
 	from {
diff --git a/web/ons-demo/index.html b/web/ons-demo/index.html
index 4663262..ca930ec 100644
--- a/web/ons-demo/index.html
+++ b/web/ons-demo/index.html
@@ -19,7 +19,14 @@
 		<div id='lastUpdated' class='status'><span class='static'>Last updated:</span><span id='lastUpdate' class='dynamic'>Mon Mar 18 11:11:12 PDT 2013</span></div>
 	</div>
 
-	<div id='controllers'></div>
+	<div id='onos'>
+		<div id='controllers'></div>
+		<div id='actions'>
+			<div id='action-all' class='action'>ALL</div>
+			<div id='action-local' class='action'>LOCAL</div>
+			<div id='action-scale' class='action'>SCALE</div>
+		</div>
+	</div>
 
 	<div id='topologyArea'>
 		<div id='svg-container'></div>
diff --git a/web/ons-demo/js/controller.js b/web/ons-demo/js/controller.js
index fbc381e..211fa97 100644
--- a/web/ons-demo/js/controller.js
+++ b/web/ons-demo/js/controller.js
@@ -50,6 +50,10 @@
 		var flowId = parseInt(flow.flowId, 16);
 		var url = '/proxy/gui/iperf/rate/' + flowId;
 		callURL(url, cb);
+	},
+	switchControllerCmd: function (cmd) {
+		var url = '/proxy/gui/switchctrl/' + cmd;
+		callURL(url);
 	}
 };
 
@@ -92,3 +96,12 @@
 function getIPerfData(flow, cb) {
 	controllerFunctions.getIPerfDataCmd(flow, cb);
 }
+
+function switchLocal() {
+	controllerFunctions.switchControllerCmd('local');
+}
+
+function switchAll() {
+	controllerFunctions.switchControllerCmd('all');
+}
+
diff --git a/web/ons-demo/js/init.js b/web/ons-demo/js/init.js
index 2fc897d..dd11bf8 100644
--- a/web/ons-demo/js/init.js
+++ b/web/ons-demo/js/init.js
@@ -7,5 +7,23 @@
 		showFlowChooser();
 	});
 
+	d3.select('#action-all').on('click', function () {
+		var prompt = "Switch controllers to all?"
+		if (confirm(prompt)) {
+			switchAll();
+		}
+	});
+
+	d3.select('#action-local').on('click', function () {
+		var prompt = "Switch controllers to local?"
+		if (confirm(prompt)) {
+			switchLocal();
+		}
+	});
+
+	d3.select('#action-scale').on('click', function () {
+		alert('scale')
+	});
+
 	createTopologyView(cb);
 }
diff --git a/web/topology_rest.py b/web/topology_rest.py
index 9181248..036776f 100755
--- a/web/topology_rest.py
+++ b/web/topology_rest.py
@@ -197,6 +197,19 @@
   resp = Response(result, status=200, mimetype='application/json')
   return resp
 
+@app.route("/proxy/gui/switchctrl/<cmd>")
+def proxy_switch_controller_setting(cmd):
+  try:
+    command = "curl -s %s/gui/switchctrl/%s" % (ONOS_GUI3_CONTROL_HOST, cmd)
+    print command
+    result = os.popen(command).read()
+  except:
+    print "REST IF has issue"
+    exit
+
+  resp = Response(result, status=200, mimetype='application/json')
+  return resp
+
 
 ###### ONOS RESET API ##############################
 ## Worker Func ###