Icon set_image function removed when transitioning to central Map repo fixed master
Icon set_image function removed when transitioning to central Map repo fixed
Added IE Compatability for Reactive UI

--- a/src/www/js/Map/Icon.js
+++ b/src/www/js/Map/Icon.js
@@ -49,6 +49,12 @@
 				//this.visible;
 
 			}
+
+		};
+
+		Icon.prototype.set_image = function(image){
+
+			this.image = image;
 
 		};
 

--- a/src/www/js/main/iss_sample.js
+++ b/src/www/js/main/iss_sample.js
@@ -18,7 +18,6 @@
 
 		iss_sample.running = false;
 		iss_sample.raw_data = null;
-
 
 		// Decode ISS Test data
 		iss_sample.start = function(){

--- a/src/www/js/main/remote.js
+++ b/src/www/js/main/remote.js
@@ -34,6 +34,18 @@
 				// if self just connect to local host
 				if(host == "self")
 					host = window.location.host;
+
+				// Check for Websockets
+				if(!("WebSocket" in window)){
+
+					errorMessage = "<div style=\"font-size:10px\">Your web browser dosent support websockets...<br>Try a better one...</div>";
+
+					console.log(errorMessage);				// Console the error
+					ui.toast(errorMessage, {ttl: 5000});	// Toast the error					
+
+					return;
+
+				}
 
 				var location = 'ws://' + host + ":8080";
 				remote.decoder_socket = new WebSocket(location, ['soap']);

--- a/src/www/js/reactive/React_Button.js
+++ b/src/www/js/reactive/React_Button.js
@@ -12,7 +12,12 @@
  */
 
 define(
-	function(){
+	[
+	 	'util/dom'
+	],
+	function(
+		dom
+	){
 
 		/**
 		 * @constructor
@@ -43,7 +48,7 @@
 
 			};
 
-			this.self.classList.add('react-button');
+			dom.addClass(this.self, 'react-button');
 
 		};
 

--- a/src/www/js/reactive/React_Image_Button.js
+++ b/src/www/js/reactive/React_Image_Button.js
@@ -1,9 +1,11 @@
 define(
 	[
-	 	'reactive/React_Button'
+	 	'reactive/React_Button',
+	 	'util/dom'
 	],
 	function(
-		React_Button
+		React_Button,
+		dom
 	){
 
 		var React_Image_Button = function(image, callback){
@@ -32,7 +34,7 @@
 
 			};
 
-			this.self.classList.add('react-image-button');
+			dom.addClass(this.self, 'react-image-button');
 
 		};
 

--- a/src/www/js/reactive/React_Input.js
+++ b/src/www/js/reactive/React_Input.js
@@ -12,7 +12,8 @@
  */
 
 define(
-	function(){
+	['util/dom'],
+	function(dom){
 
 		/**
 		 * @constructor
@@ -24,7 +25,7 @@
 			this.self = document.createElement('div');
 
 			this.self.style.padding = '5px';
-			this.self.classList.add('react-input');
+			dom.addClass(this.self, 'react-input');
 
 			this.properties = properties;
 			this.display_settings = properties.display_settings;
@@ -123,7 +124,7 @@
 
 			};
 
-			this.input.classList.add('react-input');
+			dom.addClass(this.input, 'react-input');
 
 			if(properties.display_settings.position && properties.display_settings.position == 'right')
 				this.input.style.cssFloat = 'right';

--- a/src/www/js/reactive/React_Table.js
+++ b/src/www/js/reactive/React_Table.js
@@ -12,7 +12,8 @@
  */
 
 define(
-	function(){
+	['util/dom'],
+	function(dom){
 
 		/**
 		 * Width of the Page Changer
@@ -37,7 +38,7 @@
 
 			this.page_changer = document.createElement('div');
 
-			this.page_changer.classList.add('react-page-change');
+			dom.addClass(this.page_changer, 'react-page-change');
 
 			this.page_changer.style.height = '100%';
 			this.page_changer.width = PAGE_CHANGER_WIDTH + 'px';
@@ -79,7 +80,7 @@
 
 			this.head = head;
 
-			this.table.classList.add('react-table');
+			dom.addClass(this.table, 'react-table');
 
 			this.self = document.createElement('div');
 			this.self.appendChild(this.table);

--- a/src/www/js/reactive/React_Tabs.js
+++ b/src/www/js/reactive/React_Tabs.js
@@ -12,7 +12,8 @@
  */
 
 define(
-	function(){
+	['util/dom'],
+	function(dom){
 
 		/**
 		 * @constructor
@@ -67,7 +68,7 @@
 				tab_name.style.verticalAlign = 'middle';
 				tab_name.style.lineHeight = React_Tabs.TAB_HEIGHT + 'px';
 
-				tab_name.classList.add('react-tab');
+				dom.addClass(tab_name, 'react-tab');
 
 				(function(div, txt){
 					div.onclick = function(e){

--- a/src/www/js/reactive/React_Title.js
+++ b/src/www/js/reactive/React_Title.js
@@ -12,7 +12,8 @@
  */
 
 define(
-	function(){
+	['util/dom'],
+	function(dom){
 
 		/**
 		 * @constructor
@@ -33,7 +34,7 @@
 			 */
 			this.font_size = font_size;
 
-			this.self.classList.add('react-title');
+			dom.addClass(this.self, 'react-title');
 
 			// Set text and font
 			this.self.style.fontSize = font_size + 'px';

--- a/src/www/js/util/audio.js
+++ b/src/www/js/util/audio.js
@@ -22,7 +22,11 @@
 		 * @property audio_context
 		 * @type AudioContext
 		 */
-		audio.audio_context =  new (window.AudioContext||window.webkitAudioContext);
+		if(window.AudioContext)
+			audio.audio_context = new window.AudioContext;
+		else if(window.webkitAudioContext)
+			audio.audio_context = new window.webkitAudioContext;
+
 		/**
 		 * Default buffer size to use for processing nodes
 		 * @property buffer_size

--- a/src/www/js/util/dom.js
+++ b/src/www/js/util/dom.js
@@ -19,7 +19,12 @@
 		return {x: box.left + (window.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0), y: box.top  + (window.pageYOffset || docElem.scrollTop)  - (docElem.clientTop  || 0)};
 
 	};
-	
+
+	dom.addClass = function(div, className){
+		if(div.classList) div.classList.add(className);
+		else div.className += ' ' + className;
+	}
+
 	dom.multiple_callback = function(){
 
 		function callbacks(e){

--- a/src/www/js/util/ui.js
+++ b/src/www/js/util/ui.js
@@ -7,7 +7,8 @@
  */
 
 define(
-	function(){
+	['util/dom'],
+	function(dom){
 
 		/**
 		 * Containts functions for creating UI elements in the DOM
@@ -37,9 +38,9 @@
 
 			var nd = document.createElement('div');
 			if(settings.css_class)
-				nd.classList.add(settings.css_class);
+				dom.addClass(nd, settings.css_class);
 			else
-				nd.classList.add('ui_default_toast');
+				dom.addClass(nd, 'ui_default_toast');
 			nd.innerHTML = message;
 			toaster.appendChild(nd);