Index: accounts.php
===================================================================
--- accounts.php	(revision c7c91bded5c7b8970a4ca74a3f5e06884d8bd41b)
+++ accounts.php	(revision 328c604ffc25812aa4372700f0d5093dfe26b939)
@@ -5,5 +5,5 @@
 $page_header = preg_replace ( '/PAGE_NAME/', $page_name, $page_header );
 
-if ( !isset ( $_GET['action'] ) || $_GET['action'] == "" ) {
+if ( !isset ( $_POST['action'] ) || $_POST['action'] == "" ) {
 	echo ( $page_header );
 	new_request();
@@ -66,5 +66,5 @@
 		</div>
 		<script>
-			var admin_sort_by = "org";
+			var page = "admins_by_org";
 		</script>
 
@@ -89,5 +89,5 @@
 		</div>
 		<script>
-			var admin_sort_by = "admin";
+			var page = "orgs_by_admin";
 		</script>
 <?php }
@@ -128,35 +128,31 @@
 		<div class="orgs_by_admin" id="orgs_by_admin">
 			<h2>Add Administrator</h2>
-			<div class="meraki_container">
-				<div class="meraki_row meraki_key">
-					<div class="meraki_left meraki_key">
-							<label for="api-key">Your API Key: </label>
+			<div id="meraki_status"><pre>Current status: Awaiting user input</pre></div>
+			<div class="meraki_container meraki_form">
+			
+				<?php ro_key_fields(); ?> <!--TODO:  needs to be RW ONLY-->
+				
+				<div class="meraki_row">
+					<div class="meraki_left">
+						<label for="meraki_full_name">Full name: </label>
 					</div>
-					<div class="meraki_right meraki_key">
-						<input type="password" name="api-key" id="api-key" length="40" />
+					<div class="meraki_right">
+						<input type="text" name="meraki_full_name" id="meraki_full_name" length="40" />
 					</div>
 				</div>
 				<div class="meraki_row">
 					<div class="meraki_left">
-						<label for="fullname">Full name: </label>
+						<label for="meraki_email">Email Address: </label>
 					</div>
 					<div class="meraki_right">
-						<input type="text" name="fullname" id="fullname" length="40" />
+						<input type="text" name="meraki_email" id="meraki_email" length="40" />
 					</div>
 				</div>
 				<div class="meraki_row">
 					<div class="meraki_left">
-						<label for="fullname">Email Address: </label>
+						<label for="meraki_access">Access Level: </label>
 					</div>
 					<div class="meraki_right">
-						<input type="text" name="email" id="email" length="40" />
-					</div>
-				</div>
-				<div class="meraki_row">
-					<div class="meraki_left">
-						<label for="fullname">Access Level: </label>
-					</div>
-					<div class="meraki_right">
-						<select name="access"id="access">
+						<select name="meraki_access" id="meraki_access">
 							<option value="full">Full</option>
 							<option value="full">Read-Only</option>
@@ -164,9 +160,9 @@
 					</div>
 				</div>
+				<input type="button" class="meraki_button" name="meraki_next1" id="meraki_next1" value="Next" onclick="get_admins_by_org();">
 			</div>
 			
-			<input type="button" name="next1" id="next1" value="Next" onclick="get_orgs_add_admin()">
-			
-			<div class="orgsOutput" id="orgsOutput">
+
+			<div class="meraki_org_checkboxes meraki_container meraki_form2" id="meraki_orgsOutput">
 				<!-- Checkboxes for orgs -->
 				<!-- Add -->
@@ -176,5 +172,5 @@
 			
 		<script>
-			
+			var page = "add_admin";
 		</script>
 
Index: api.php
===================================================================
--- api.php	(revision c7c91bded5c7b8970a4ca74a3f5e06884d8bd41b)
+++ api.php	(revision 328c604ffc25812aa4372700f0d5093dfe26b939)
@@ -1,5 +1,5 @@
 <?php
 include ('include.php');
-if ( !isset ( $_GET['action'] ) || $_GET['action'] == "" ) {
+if ( !isset ( $_POST['action'] ) || $_POST['action'] == "" ) {
 	die ('We shouldn\'t be here - something bad is happening');
 }
Index: include.js
===================================================================
--- include.js	(revision c7c91bded5c7b8970a4ca74a3f5e06884d8bd41b)
+++ include.js	(revision 328c604ffc25812aa4372700f0d5093dfe26b939)
@@ -17,8 +17,10 @@
 
 
-//GET ADMINS BY ORG
+//ADMIN FUNCTIONS
 
 function get_admins_by_org() {
     status_update("Fetching organisations...");
+	$(".meraki_form").hide();
+	set_key();
     get_organisations(on_get_organisations_success_admins, on_get_organisations_error);
 }
@@ -33,5 +35,11 @@
         $.ajax({
             dataType: "json",
-            url: "api.php?action=get_org_admins&orgid="+data[org].id+"&key=" + key,
+            url: "api.php",
+			method: "post",
+			data: {
+				action: "get_org_admins",
+				orgid: 	data[org].id,
+				key: 	key
+			},
             success: function (r) {on_get_admin_sucess(r, org);},
             error: function (x, s, e) {on_get_admin_error(e, org);}
@@ -58,9 +66,17 @@
 
 function print_admins_output() {
-	if ( admin_sort_by == "admin" ){
+	if ( page == "orgs_by_admin" ){
 		print_admins_output_by_admin();
 	}
+	else if ( page == "admins_by_org" ) {
+		print_admins_output_by_org();
+	}
+	else if ( page == "add_admin" ) {
+		print_orgs_to_add_admin();
+	}
+	else if ( page == "remove_admin" ) {
+	}
 	else {
-		print_admins_output_by_org();
+		status_update("Errrrrr - this shouldn't ever be reached - something went very wrong!");
 	}
 }
@@ -69,15 +85,44 @@
 	status_update('Sorting and generating output...');
 	sorted = orgs.sort(function(a, b) { return a.name - b.name; });
-	$("#meraki_admins_output").html('<table class="meraki_output_table" id="meraki_admins_output_table">		<tr><td class="meraki_output_header_group"><b>Organisation</b></td><td class="meraki_output_header"><b>Name</b></td><td class="meraki_output_header"><b>Email Address</b></td><td class="meraki_output_header"><b>Access Level</b></td></tr></table>');
+	$("#meraki_admins_output").html('\
+		<table class="meraki_output_table" id="meraki_admins_output_table">\
+			<tr>\
+				<td class="meraki_output_header_group"><b>Organisation</b></td>\
+				<td class="meraki_output_header"><b>Name</b></td>\
+				<td class="meraki_output_header"><b>Email Address</b></td>\
+				<td class="meraki_output_header"><b>Access Level</b></td>\
+			</tr>\
+		</table>\
+	');
 	$.each(sorted, function(data) {
 		if ( sorted[data].administrator[0] != "ERROR" ) {
 			number_of_admins = sorted[data].administrator.length;
-			$("#meraki_admins_output_table").append('<tr><td rowspan="'+number_of_admins+'" class="meraki_output_group">' + sorted[data].name + '</td><td>' + sorted[data].administrator[0].name + '</td><td>' + sorted[data].administrator[0].email + '</td><td>' + sorted[data].administrator[0].orgAccess + '</td></tr>');
+			$("#meraki_admins_output_table").append('\
+				<tr>\
+					<td rowspan="'+number_of_admins+'" class="meraki_output_group">' + sorted[data].name + '</td>\
+					<td>' + sorted[data].administrator[0].name + '</td>\
+					<td>' + sorted[data].administrator[0].email + '</td>\
+					<td>' + sorted[data].administrator[0].orgAccess + '</td>\
+				</tr>\
+			');
 			for (i=1; i<number_of_admins; i++) {
-				$("#meraki_admins_output_table").append('<tr><td>' + sorted[data].administrator[i].name + '</td><td>' + sorted[data].administrator[i].email + '</td><td>' + sorted[data].administrator[i].orgAccess + '</td></tr>');
+				$("#meraki_admins_output_table").append('\
+					<tr>\
+						<td>' + sorted[data].administrator[i].name + '</td>\
+						<td>' + sorted[data].administrator[i].email + '</td>\
+						<td>' + sorted[data].administrator[i].orgAccess + '</td>\
+					</tr>\
+				');
 			}
 		}
 		else {
-			$("#meraki_admins_output_table").append('<tr><td class="meraki_output_group">' + sorted[data].name + '</td><td>ERROR</td><td>ERROR</td><td>ERROR</td></tr>');
+			$("#meraki_admins_output_table").append('\
+				<tr>\
+					<td class="meraki_output_group">' + sorted[data].name + '</td>\
+					<td>ERROR</td>\
+					<td>ERROR</td>\
+					<td>ERROR</td>\
+				</tr>\
+			');
 		}
 	});
@@ -87,40 +132,35 @@
 function print_admins_output_by_admin() {
 	status_update('Sorting and generating output...');
-	var admins = {};
-	
-	$.each (orgs, function(j) {
-		$.each (orgs[j].administrator, function (k) {
-			if (orgs[j].administrator[k] != "ERROR") {
-				if (!admins[orgs[j].administrator[k].email]) {
-
-					admins[orgs[j].administrator[k].email]=[];
-					
-					admins[orgs[j].administrator[k].email].name = orgs[j].administrator[k].name;
-
-				}
-				
-				var next_org = admins[orgs[j].administrator[k].email].length;
-				
-				admins[orgs[j].administrator[k].email][next_org] = orgs[j];
-
-				
-				admins[orgs[j].administrator[k].email][next_org].orgAccess = orgs[j].administrator[k].orgAccess;
-			}
-			
-			
-		});
-	});
-	
-	
-	
-	
+	
+	admins = group_orgs_by_admin();
 	
 	sorted = admins; //.sort(function(a, b) { return a.name - b.name; });
-	$("#meraki_admins_output").html('<table class="meraki_output_table" id="meraki_admins_output_table">		<tr><td class="meraki_output_header_group"><b>Email Address</b></td><td class="meraki_output_header_group"><b>Name</b></td><td class="meraki_output_header"><b>Organisation</b></td><td class="meraki_output_header"><b>Access Level</b></td></tr></table>');
+	$("#meraki_admins_output").html('\
+		<table class="meraki_output_table" id="meraki_admins_output_table">\
+			<tr>\
+				<td class="meraki_output_header_group"><b>Email Address</b></td>\
+				<td class="meraki_output_header_group"><b>Name</b></td>\
+				<td class="meraki_output_header"><b>Organisation</b></td>\
+				<td class="meraki_output_header"><b>Access Level</b></td>\
+			</tr>\
+		</table>\
+	');
 	$.each(sorted, function(j) {
 		number_of_admins = sorted[j].length;
-		$("#meraki_admins_output_table").append('<tr>			<td rowspan="'+number_of_admins+'" class="meraki_output_group">' + j + '</td>			<td rowspan="'+number_of_admins+'" class="meraki_output_group">' + sorted[j].name + '</td>			<td>' + sorted[j][0].name + '</td>			<td>' + sorted[j][0].orgAccess + '</td>			</tr>');
+		$("#meraki_admins_output_table").append('\
+			<tr>\
+				<td rowspan="'+number_of_admins+'" class="meraki_output_group">' + j + '</td>\
+				<td rowspan="'+number_of_admins+'" class="meraki_output_group">' + sorted[j].name + '</td>\
+				<td>' + sorted[j][0].name + '</td>\
+				<td>' + sorted[j][0].orgAccess + '</td>\
+			</tr>\
+		');
 		for (i=1; i<number_of_admins; i++) {
-			$("#meraki_admins_output_table").append('<tr>				<td>' + sorted[j][i].name + '</td>				<td>' + sorted[j][i].orgAccess + '</td></tr>');
+			$("#meraki_admins_output_table").append('\
+				<tr>\
+					<td>' + sorted[j][i].name + '</td>\
+					<td>' + sorted[j][i].orgAccess + '</td>\
+				</tr>\
+			');
 		}
 	});
@@ -128,4 +168,97 @@
 }
 
+function print_orgs_to_add_admin() {
+	status_update('Sorting and generating output...');
+	
+	admins = group_orgs_by_admin();
+	
+	//check if admin exists - if not we can skip the per org checks
+	var admin_to_add = $('#meraki_email').val();
+	var admin_exists;
+	if ( ! (admins[admin_to_add] ) ){
+		admin_exists=false;
+	}
+	else {
+		admin_exists = true;
+	}
+	
+	$('#meraki_orgsOutput').append('\
+		<p><div class="meraki_row">Please select the organisations to add this user to:</p></div>\
+	');
+	
+	$.each (orgs, function (k) {
+		$('#meraki_orgsOutput').append('<div class="meraki_row" id="meraki_orgs_'+k+'"></div>');
+		$('#meraki_orgs_'+k).append('\
+			<div class="meraki_left">\
+				<label for="meraki_org_'+orgs[k].id+'">\
+					'+orgs[k].name+'\
+				</label>\
+			</div>\
+		');
+		$('#meraki_orgs_'+k).append('\
+			<div class="meraki_middle">\
+				<input type="checkbox" name="org_checkboxes[]" value="'+orgs[k].id+'" id="meraki_org_'+orgs[k].id+'" />\
+			</div>\
+		');
+		
+		$('#meraki_orgs_'+k).append('<div class="meraki_right" id="meraki_org_output_'+orgs[k].id+'" ></div>');
+		
+		if ( orgs[k].administrator == "ERROR") {
+			$('#meraki_org_'+orgs[k].id).attr('disabled','disabled');
+		}
+		
+		if ( admin_exists ) {
+			$.each ( admins[admin_to_add], function (j) {
+				if ( admins[admin_to_add][j].id == orgs[k].id ) {
+					$('#meraki_org_'+orgs[k].id).attr('disabled','disabled');
+				}
+			});
+		}
+	});
+	$('#meraki_orgsOutput').append('\
+		<div class="meraki_row">\
+			<input type="button" class="meraki_button" name="meraki_go" id="meraki_go" value="Add to Selected Organisations" onclick="add_admin();">\
+		</div>\
+	');
+	status_update('Waiting for user input...');
+}
+	
+function add_admin() {
+    status_update("Adding admins...");
+	$("#meraki_go").hide();
+	
+
+	var fname = $("#meraki_full_name").val();
+	var email = $("#meraki_email").val();
+	var orgaccess = $("#meraki_access").val();
+	
+	$(':checkbox[name="org_checkboxes[]"]:checked').each( function () {
+	var org_id = this.value;
+	$('#meraki_org_output_'+org_id).html('Adding...');
+		$.ajax({
+			dataType: "json",
+			url: "api.php",
+			method: "post",
+			data: {
+				action: 	"add_org_admin",
+				orgid:		org_id,
+				key: 		key,
+				fname: 		fname,
+				email: 		email,
+				orgaccess:	orgaccess
+			},
+			success: function (r) {on_add_admin_success(r, org_id);},
+			error: function (x, s, e) {on_add_admin_error(e, org_id);}
+		});
+	});
+}
+
+function on_add_admin_success(r, org_id) {
+	$('#meraki_org_output_'+org_id).html('Success')
+}
+
+function on_add_admin_error(e, org_id) {
+	$('#meraki_org_output_'+org_id).html('Error: '+e)
+}
 
 //GET LICENCES
@@ -148,5 +281,11 @@
         $.ajax({
             dataType: "json",
-            url: "api.php?action=get_org_licences&orgid="+data[org].id+"&key=" + key,
+            url: "api.php",
+			method: "post",
+			data: {
+				action:	"get_org_licences",
+				orgid:	data[org].id,
+				key:	key
+			},
             success: function (r) {on_get_licence_sucess(r, org);},
             error: function (x, s, e) {on_get_licence_error(e, org);}
@@ -167,5 +306,5 @@
 function on_get_licence_error(error, org_index) {
 	orgs[org_index].licStatus = "ERROR";
-	orgs[org_index].licExpirationDate = "ERROR";
+	orgs[org_index].licExpirationDate = Date.parse(0);
 	orgs[org_index].licLicensedDeviceCounts = "ERROR";
 	orgs_completed++;
@@ -178,9 +317,25 @@
 	status_update('Sorting and generating output...');
 	sorted = orgs.sort(function(a, b) { return a.licExpirationDate - b.licExpirationDate; });
-	$("#meraki_licence_output").html('<table id="licenceOutputTable">		<tr><td><b>Organisation</b></td><td><b>Status</b></td><td><b>Expiration Date</b></td><td><b>Devices</b></td></tr></table>');
+	$("#meraki_licence_output").html('\
+		<table id="licenceOutputTable">\
+			<tr>\
+				<td><b>Organisation</b></td>\
+				<td><b>Status</b></td>\
+				<td><b>Expiration Date</b></td>\
+				<td><b>Devices</b></td>\
+			</tr>\
+		</table>\
+	');
 	$.each(sorted, function(data) {
 		d = new Date(sorted[data].licExpirationDate);
 		n = d.toDateString();
-		$("#licenceOutputTable").append('<tr><td>' + sorted[data].name + '</td><td>' + sorted[data].licStatus + '</td><td>' + n + '</td><td>'+ dump_licenced_devices(sorted[data].licLicensedDeviceCounts) + '</td></tr>');		
+		$("#licenceOutputTable").append('\
+			<tr>\
+				<td>' + sorted[data].name + '</td>\
+				<td>' + sorted[data].licStatus + '</td>\
+				<td>' + n + '</td>\
+				<td>'+ dump_licenced_devices(sorted[data].licLicensedDeviceCounts) + '</td>\
+			</tr>\
+		');		
 	});
 	status_update("Done...");
@@ -225,5 +380,10 @@
         $.ajax({
             dataType: "json",
-            url: "api.php?action=get_orgs&key=" + key,
+            url: "api.php",
+			method: "post",
+			data: {
+				action:	"get_orgs",
+				key:	key
+			},
             success: function(r) {callback_success(r);},
             error: function(x, s, e) {callback_error(e);}
@@ -235,4 +395,33 @@
 }
 
+function group_orgs_by_admin () {
+	var admins = {};
+	$.each (orgs, function(j) {
+		$.each (orgs[j].administrator, function (k) {
+			if (orgs[j].administrator[k] != "ERROR") {
+				var current_admin = orgs[j].administrator[k];
+				if (!admins[current_admin.email]) {
+
+					admins[current_admin.email]=[];
+					
+					admins[current_admin.email].name = current_admin.name;
+				}
+
+				var next_org = admins[current_admin.email].length;
+
+				admins[current_admin.email][next_org]= { id: 			orgs[j].id,
+														 name:			orgs[j].name,
+														 orgAdminId: 	current_admin.id,
+														orgAccess: 	current_admin.orgAccess
+														};
+				
+			}
+			
+			
+		});
+	});
+	return admins;
+}
+
 function status_update(t) {
     $("#meraki_status").html("<pre>Current status: " + t + "</pre>");
Index: include.php
===================================================================
--- include.php	(revision c7c91bded5c7b8970a4ca74a3f5e06884d8bd41b)
+++ include.php	(revision 328c604ffc25812aa4372700f0d5093dfe26b939)
@@ -30,19 +30,22 @@
 		global $RO_API_KEY;
 		
-		if ( !isset ( $_GET['key'] ) || $_GET['key'] == "" || $_GET['key'] == "rokey" ) {
+		if ( !isset ( $_POST['key'] ) || $_POST['key'] == "" || $_POST['key'] == "rokey" ) {
 			$key = $RO_API_KEY;
 		}
 		else {
-			$key = $_GET['key'];
-		}
-		switch ($_GET['action']) {
+			$key = $_POST['key'];
+		}
+		switch ($_POST['action']) {
 			case "get_orgs":
 				echo ( get_orgs($key) );
 				break;
 			case "get_org_licences":
-				echo ( get_org_licences($_GET['orgid'], $key) );
+				echo ( get_org_licences($_POST['orgid'], $key) );
 				break;
 			case "get_org_admins":
-				echo ( get_org_admins($_GET['orgid'], $key) );
+				echo ( get_org_admins($_POST['orgid'], $key) );
+				break;
+			case "add_org_admin":
+				echo ( add_org_admin($_POST['orgid'], $_POST['fname'], $_POST['email'], $_POST['orgaccess'], $key) );
 				break;
 			default:
@@ -106,5 +109,9 @@
 	//POST /organizations/[organization_id]/admins
 	//sample post data:
-	//{"name":"Miles Meraki", "email":"miles@meraki.com", "orgAccess":"none", "tags":[{"tag":"west", "access":"read-only"}]}
+	function add_org_admin($orgid, $name, $email, $access, $key) {
+		$data = array ("name" => $name, "email" => $email, "orgAccess" => $access);
+		$call = "/organizations/" . $orgid . "/admins/";
+		return post_request($call, $data, $key);
+	}
 	
 	//Delete an admin from an organisation
@@ -112,5 +119,5 @@
 		return delete_request('/organizations/' . $orgid . '/admins/' . $adminid, $key);
 	}
-	
+
 	
 	
@@ -138,12 +145,13 @@
 
 	//General function to submit a POST call
-	function post_request($call, $post_data, $key) {
+	function post_request($call, $data, $key) {
 		global $SERVER;
 		global $API_VERSION;
+		$post_data = json_encode($data);
 		$opts = array(
 			'http'=>array(
 				'method'	=>	"POST",
 				'header'	=>	"X-Cisco-Meraki-API-Key: " . $key . "\r\n" .
-								"Content-type: application/x-www-form-urlencoded\r\n",
+								"Content-type: application/json\r\n",
 				'content'	=>	$post_data
 			)
@@ -155,6 +163,27 @@
 		$json = file_get_contents($SERVER . $API_VERSION . $call, false, $context);
 		//TODO:  Catch exceptions and return errors
+		if ( $json === false ) {
+			header('HTTP/1.1 400 Bad Request');
+		}
 		$resp = preg_replace ( '/"id":([0-9]+),/', '"id":"$1",', $json );
 		return $resp;
+		/*
+		$ch = curl_init();
+		curl_setopt($ch, CURLOPT_URL,$SERVER . $API_VERSION . $call);
+		curl_setopt($ch, CURLOPT_POST, 1);
+		curl_setopt($ch, CURLOPT_POSTFIELDS,$data);  //Post Fields
+		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+		$headers = [	"X-Cisco-Meraki-API-Key: " . $key,
+						"Content-type: application/x-www-form-urlencoded"
+					];
+		curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+
+		$json = curl_exec ($ch);
+		$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+		
+		$resp = preg_replace ( '/"id":([0-9]+),/', '"id":"$1",', $json );
+		curl_close ($ch);
+		header('HTTP/1.1 ' . $httpcode);
+		return $resp;*/
 	}
 	
Index: licences.php
===================================================================
--- licences.php	(revision c7c91bded5c7b8970a4ca74a3f5e06884d8bd41b)
+++ licences.php	(revision 328c604ffc25812aa4372700f0d5093dfe26b939)
@@ -5,5 +5,5 @@
 $page_header = preg_replace ( '/PAGE_NAME/', $page_name, $page_header );
 
-if ( !isset ( $_GET['action'] ) || $_GET['action'] == "" ) {
+if ( !isset ( $_POST['action'] ) || $_POST['action'] == "" ) {
 	echo ( $page_header );
 	new_request();
