<?php

$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/components/check.php";
include_once($path);

?>
<!--
 =========================================================
* Black Dashboard PRO - v1.1.1
=========================================================

* Product Page: https://themes.getbootstrap.com/product/black-dashboard-pro-premium-bootstrap-4-admin/
* Copyright 2019 Creative Tim (https://www.creative-tim.com)

* Coded by Creative Tim

=========================================================

* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-->

<!DOCTYPE html>
<html lang="en">
<head>
			
	<?php 

		$path = $_SERVER['DOCUMENT_ROOT'];
		$path .= "/components/header.php";
		include_once($path);

	?>

<style>
.scroll-pane
{
    width: 100%;
    height: 200px;
    overflow: auto;
}
.scroll-pane p
{
    margin: 5px 0;
}

 .navbar-collapse::-webkit-scrollbar {
    width: 20px;
}
.navbar-collapse::-webkit-scrollbar-track {
    background-color: lightgray;
}
.navbar-collapse::-webkit-scrollbar-thumb {
    background-color: lightblue;
}

.graph-row {
}
</style>


<script>
	    var conf = <?php echo $_GET["conf"]; ?>;
	    var dev_id = <?php echo $_GET["dev_id"]; ?>;
	    var pos = 0;
	    var c = 0;
	    var sdfdsfsdf = [];
	    var old_t = 0;
	    
	    var charts = [];
	    
	    function renderLoop() {
	    	for ( var x = 0; x < charts.length; x++ ) {
	    		charts[ x ].graph.render();
	    	}
	    }
	    
		function addData(chart, data10, times, id) {
			//console.log( times );
	    	
	    	data1 = data10;
	    	pos = 0;
	    	for( i of data1 ) {
	    	
	    		while ( chart.dataSeriesSource.length > 250 ){
	    			chart.dataSeriesSource.shift();
	    		}

	         	if ( sdfdsfsdf.hasOwnProperty( id ) == false ) {
    	         	sdfdsfsdf[ id ] = 0;
				}else{
					sdfdsfsdf[ id ] = parseInt( sdfdsfsdf[ id ] ) + 10;
				}	    		
				
	         	chart.dataSeriesSource.push( { "x":parseInt( sdfdsfsdf[ id ] ), "y": i } );

	         }
	         
	         //chart.graph.render();
		     //chart.update();
			 return c;
		}
		
		function addDatas(chart, data10, times) {
			//console.log( times );
    		while ( chart.dataSeriesSource.length > 250 ){
    			chart.dataSeriesSource.shift();
    		}

	         	chart.dataSeriesSource.push( { "x": parseInt(times*1000) , "y": data10 } );
	         	
	         
	         chart.graph.render();
		     //chart.update();
			 return c;
		}
		
		var sampl_r = 0;
		var time_t = 0;
		var arr_sample = [];
		var arr_sample_time = [];
		var wss_port = 18892;
		var addr = "wss://rbf.nanodesign.sk:" + wss_port + "/websocket/";
		var global_socket_wrapper = new SocketWrapper( addr );
		
		var test = new PPGAnalysis();
		
		function handleMsgs( type, device_type, data, coin_id ) {
			
			if ( device_type == 2 ) {
				if ( type == 2 ) {
					//report data
					
				}
				
				if ( type == 1 ) {
					//data
	    		
	    			
	    		
	    			addData( ir1_graph, data["ir_2"], data["time"], 5 );
	    			addData( r1_graph, data["r_2"], data["time"], 6 );
	    
	    			addData( g1_graph, data["g_2"], data["time"], 4 );
	    			addData( x_graph, data["x"], data["time"], 7 );
	    			
	    			
	    			for( var x = 0; x < data["g_1"].length;x++ ) {
	    			
	    				addData( g_graph, [test.g_led], data["time"], 1 );
	    				addData( ir_graph, [test.ir_led], data["time"], 2 );
	    				addData( r_graph, [test.r_led], data["time"], 3 );

	    				
	    				var r = test.step( data["g_1"][x]  , data["ir_1"][x] , data["r_1"][x] , data["x"][x], data["y"][x], data["z"][x] );
	    				
	    				if ( r == 1 ) { 
    	    				console.log( test.spo2 );
    	    				var ss = test.spo2;
    	    				if ( ss < 87 )
    	    					ss = 97;
    	    				
    	    			}
    	    			
	    			}
	    				addData( z_graph,[test.x], data["time"], 9 );
	    				addData( y_graph, [test.breath], data["time"], 8 );
	    			c += 85;
	    			
					if ( ( data[ "time" ] - time_t) > 1 ) {
						if ( ( sampl_r/(data[ "time" ]- time_t ) ) < 1  ) {
							
						}else{
							arr_sample.push( ( sampl_r/(data[ "time" ]- time_t ) ) );
							arr_sample_time.push( parseInt( data[ "time" ] ) );
							addDatas( sample_graph, ( sampl_r/(data[ "time" ]- time_t ) ), data[ "time" ] );
							
							
						}
								
							
						
						addDatas( buffer_graph,  data[ "resp" ], data[ "time" ] );
						sampl_r = 0;
						time_t = data[ "time" ];
					}
					
					if ( data[ "buffer_size" ] != 0 ) 
						addDatas( snr_graph,  data[ "buffer_size" ], data[ "time" ] );
					
				}
				
				if ( type == 7 ) {
					//markers
				}
				
				if ( type == 6 ) {
					createSettingsBoard( { "result": [[0, data["memory"]]] }  );
					//memory type
				}
				
				if ( type == 10 ) {
					//errors
				}
				
			} 
			
			if ( device_type == 1 ) {
				if ( type == 0 ) {
					addData( ir_graph, data["red"], data["time"] );
				}
				if ( type == 1 ) {
				
				    
				}
				
					
				if ( type == 9 ) {
				}
				
				if ( type == 2 ) {
				}
				
				if ( type == 7 ) {
				}
				
				if ( type == 8 ) {
				}
				
				if ( type == 10 ) {
				}
				
				if ( type == 6 ) {
    				createSettingsBoard( { "result": [[0, data["memory"]]] }  );
				}				
				
			} 
			
		}
		
		function liveUpdate() {

			this.handleLive = function( data ) {
				if ( global_init == 0 )
					return 0;
				
				if ( data["coin_id"] != dev_id )
					return 1;
				
				
				for ( msg in data["data"] ) {
					
					if ( "type" in data["data"][ msg ] ) {
					}else{
						continue;
					}
					
					handleMsgs( data["data"][ msg ]["type"], data["device_type"], data["data"][ msg ], data["coin_id"]  );
				}
				
				
			}

		}
		

		var g_graph = 0;
		var ir_graph = 0;
		var r_graph = 0;
		
		var g1_graph = 0;
		var ir1_graph = 0;
		var r1_graph = 0;
		
		var x_graph = 0;
		var y_graph = 0;
		var z_graph = 0;
		
		var x_graph = 0;
		var y_graph = 0;
		var z_graph = 0;
		
		var snr_graph = 0;
		var buffer_graph = 0;
		var sample_r_graph = 0;
		
		
		function createNewGraph( data ) {
        	data =  data["result"];
        	datas1 = [];
        	var last_f = 0;
			var ff = 0;
        	
        	data.forEach(function(rowArray) {
				if ( last_f != rowArray[ 3 ] ) {
        			last_f = rowArray[ 3 ];
            		datas1.push( rowArray );
            		
				}else{
					
					
 				}
				if (ff == rowArray[ 3 ] ) {
					//console.log( "sdasdasd" );
					
				} else if ( ff - 1 != rowArray[ 3 ] ) {
					//console.log( ff + " " + rowArray[ 3 ] );
				}
				ff = rowArray[ 3 ];
        		
			});
			data = datas1;
			files_for_download = datas1;
        	
        	temp_graph.clears();
        	bat_graph1.clears();
        	acc_graph1.clears();
        	rot_graph1.clears();
        	ir_graph1.clears();
        	red_graph1.clears();
		
			var ff = 0;
			var offset = 0;
			data = data.reverse();
			var time_arr = [];
			var coeficient_c = {};
			for( var x = 0; x < data.length; x++) {
				var time = data[ x ][2]*1000;
				time_arr.push( data[ x ][ 2 ]*1000 );
				if ( time != ff ) {
					ff = time;
					offset = 0;
    				coeficient_c[ data[ x ][ 2 ]*1000 ] = 1000/data[x][0].length;
				}else{
					offset++;
    				coeficient_c[ data[ x ][ 2 ]*1000 ] = 1000/(data[x][0].length*( offset+1 ));
				}
			}
			ff = 0;

			var bts_count = -1;
			
			var bts_counted = [ ];
			var bts_vals = [ ];
			var old_unique_id = -1;

			var ggh = 1;
			for( var x = 0; x < data.length-1; x++) {
				var time = data[ x ][2]*1000;
				if ( time != ff ) {
					ff = time;
					offset = 0;
				}else{
					offset++;
				}
				if ( x != 0 )
					missing_pack.pushData( time, data[ x ][3]-old_unique_id,  data[ x ][3] - old_unique_id );
				
				if ( data[x][3] == old_unique_id )
					ggh++;
				
				if ( old_unique_id != data[x][3] ) { 
					n_pcket.pushData( time, ggh,  ggh );
					ggh = 1;
				}
					
				if ( old_unique_id != -1 ) { 
					
					//if ( parseInt( data[ x ][ 3 ] ) > (old_unique_id+100) ) {
					//	continue;
						
					//}else{
					//	old_unique_id = data[ x ][ 3 ];
					//	
					//}
					old_unique_id = data[ x ][ 3 ];
					
				}else{
					old_unique_id = data[ x ][ 3 ];
				}

				
				
				//if ( data[ x ][4] != 0 && (data[ x ][4]/100) < 45 ) 
					temp_graph.pushData( time, data[ x ][4]/100,  data[ x ][3] );
				
				bat_graph1.pushData( time, data[ x ][7],  data[ x ][3] );
				acc_graph1.pushData( time, data[ x ][6] & 0b00111111,  data[ x ][3] );
				rot_graph1.pushData( time, data[ x ][5],  data[ x ][3] );

				power_c_graph.pushData( time, ( data[ x ][6]& 0b00000000 ) >> 7,  data[ x ][3] );
				charger_graph.pushData( time, ( data[ x ][6]& 0b10000000 ) >> 6,  data[ x ][3] );
				
				
					if ( bts_counted.includes( data[ x ][9] ) == 0 ) {
						bts_vals[ data[ x ][9] ] = [];
						bts_count++;
						bts_counted.push( data[ x ][9] );
					}
					
				if ( data[ x ][8] != 0 ) { 
					bts_vals[ data[ x ][9] ].push( [ time, data[ x ][8] ] );
				}
				
				for( var y = 0; y < data[x][0].length; y++) {

						
					ir_graph1.pushData( (time+(y*coeficient_c[ time ]) + (offset*data[x][0].length*coeficient_c[ time ])), data[ x ][0][ y ] );
					red_graph1.pushData( (time+(y*coeficient_c[ time ])+ (offset*data[x][0].length*coeficient_c[ time ])), data[ x ][1][ y ] );
 					
				}
						
			}

			
			temp_graph.displayData();
			bat_graph1.displayData();
			acc_graph1.displayData();
			rot_graph1.displayData();
			ir_graph1.displayData();
			red_graph1.displayData();
			user_graph1.displayData();
			missing_pack.displayData();
			n_pcket.displayData();

			charger_graph.displayData();
			power_c_graph.displayData();
			
			$("#snr-container").empty();
			snr_graph1 = {};
			
			//console.log( bts_count ); 
			for (const key in bts_vals) {
			
				var name_graph = "BTS ID: " + key;
				var id_graph = "BTS-ID- " + key;
				var template_graph_modified = template_graph.replace('{TITLE}', name_graph );
				template_graph_modified = template_graph_modified.replace('{GRAPH_ID}', id_graph );
				$("#snr-container").append( template_graph_modified );
				
				snr_graph1[ key ] =  new Graph( id_graph, name_graph );
				
				for( var xx = 0; xx < bts_vals[ key ].length; xx++ ) {
					snr_graph1[ key ].pushData( bts_vals[ key ][ xx ][0], bts_vals[ key ][ xx ][1] );
				}
				snr_graph1[ key].displayData();
			}
			load.clear();
    	}

		var datasource = 0;
		var data_table = 0;
		var global_tables = {};
		var config_string = 0;
		
        ToBase64 = function (u8) {
            return btoa(String.fromCharCode.apply(null, u8));
        }
        
        FromBase64 = function (str) {
            return atob(str).split('').map(function (c) { return c.charCodeAt(0); });
        }
        
        var u8 = new Uint8Array(256);
        for (var i = 0; i < 256; i++)
            u8[i] = i;
        

		function informUser() {
			showInfoMsg("Prikaz odoslany", 2);
		}	

		function createNewConfig( created_on, config,                  lastUpdate, status, btsId, json, dev_type ) {
			createNewCommands( "task", { "task_name": "CreateCommand", "params": { "coinId": dev_id, "commandType": 0, "data": config, "lastUpdate": lastUpdate, "status": status, "btsId": 0, "jsonText": json, "createdOn": lastUpdate, "dt": dev_type, "sentBTS": []  } }, informUser ); 
		}

       	function requestCurrentSettings( coin_id ) {
			
			createNewCommands( "task", { "task_name": "GetData", "params": {"query": 'SELECT data FROM public."Memory_state" where coin_id = ' + coin_id + ' timestamp = (Select MAX(timestamp) as timestamp from public."Memory_state"  )'  } }, processCoinNameIdTable ); 
       	}
       	
		function getCoin2Settings(){
			var json_str = {};
		
			var ledg = parseInt( $("#ledg").val()  );
			var ledi = parseInt( $("#ledi").val()  );
			var ledr = parseInt( $("#ledr").val()  );
			
			var ledg1 = parseInt( $("#ledg1").val()  );
			var ledi1 = parseInt( $("#ledi1").val()  );
			var ledr1 = parseInt( $("#ledr1").val()  );
			
			var call = parseInt( $("#call").val()  );
			var sart = parseInt( $("#sart").val()  );
			var matrix = parseInt( $("#matrix").val(), 2 );
			var mode = parseInt( $("#op_mode").val() );
			
			
			json_str["ledr"] = ledr;
    		json_str["ledg"] = ledg;
			json_str["ledi"] = ledi;
			
			
			json_str["matrix"] = matrix;
			json_str["call"] = call;
			json_str["sart"] = sart << 3;
			json_str["mode"] = mode;
			
			
			var arr = new Uint8Array( 24 );
			
			var p = 0;

			arr[ p++ ] = 10;
			
			arr[ p++ ] = mode;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			
			arr[ p++ ] = ledr;
			arr[ p++ ] = ledg;
			arr[ p++ ] = ledi;

			arr[ p++ ] = ledr1;
			arr[ p++ ] = ledg1;
			arr[ p++ ] = ledi1;
			
			
			arr[ p++ ] = call;
			arr[ p++ ] = sart << 3;
			
			arr[ p++ ] = matrix >> 8;
			arr[ p++ ] = matrix & 0xFF;
		
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			
			return { "bin": arr, "json": json_str };
		}
		
		function getBTSSettings(){
			var json_str = {};
		
			var hostname = btoa( $("#hostname").val()  );
			var port = parseInt( $("#port").val()  );
			
			var backup_hostname = btoa( $("#backup-hostname").val()  );
			var backup_port  = parseInt( $("#backup-port").val()  );
			
			var op_mode  = parseInt( $("#op-mode").val()  );
			var blacklist_m  = parseInt( $("#blacklist-mode").val()  );
			var config_m  = parseInt( $("#config-mode").val()  );
			
			var wifi_name = btoa( $("#wifi-name").val()  );
			var wifi_password = btoa( $("#wifi-password").val()  );

			var debug_channel = btoa( $("#config-mode").val()  );
			
			var json_str = {};
			
			
			json_str["hostname"] = hostname;
			json_str["port"] = port;

			json_str["backup_hostname"] = backup_hostname;
			json_str["backup_port"] = backup_port;
			
			json_str["op_mode"] = op_mode;
			json_str["blacklist_m"] = blacklist_m;
			json_str["config_m"] = config_m;

			json_str["wifi_name"] = wifi_name;
			json_str["wifi_password"] = wifi_password;
			
			var arr = new Uint8Array( hostname.length + 3 + 2 + 2 +  backup_hostname.length + backup_port.length );
			
			var cc = 0;
			arr[ cc++ ] = 0x03;
			
			for (var i = 0; i < hostname.length; i++) {
				arr[ cc++ ] = hostname.charAt(i);
            }
			
			for (var i = 0; i < 80-hostname.length; i++) {
				arr[ cc++ ] = 0;
            }
			
			arr[ cc++ ] = port & 0xFF;
            arr[ cc++ ] = ( port >> 8 ) & 0xFF;
            
            
			for (var i = 0; i < backup_hostname.length; i++) {
				arr[ cc++ ] = backup_hostname.charAt(i);
            }
			
			for (var i = 0; i < 80-backup_hostname.length; i++) {
				arr[ cc++ ] = 0;
            }
			
            arr[ cc++ ] = backup_port & 0xFF;
            arr[ cc++ ] = ( backup_port >> 8 ) & 0xFF;
            
            for (var i = 0; i < wifi_name.length; i++) {
				arr[ cc++ ] = wifi_name.charAt(i);
            }
			
			for (var i = 0; i < 80-wifi_name.length; i++) {
				arr[ cc++ ] = 0;
            }
			
			for (var i = 0; i < wifi_password.length; i++) {
				arr[ cc++ ] = wifi_password.charAt(i);
            }
			
			for (var i = 0; i < 80-wifi_password.length; i++) {
				arr[ cc++ ] = 0;
            }
			
            arr[ cc++ ] = blacklist_m & 0xFF;
            
            var element = document.getElementById("blacklist-view");
            var numberOfChildren = element.getElementsByTagName('li').length;
            
            arr[ cc++ ] = numberOfChildren & 0xFF;
            arr[ cc++ ] = debug_channel & 0xFF;
            
			for (var i = 0; i < numberOfChildren; i++) {
				arr[ cc++ ] = ( parseInt( document.getElementById("blacklist-view").children[ i ].id ) ) & 0xFF;
				arr[ cc++ ] = ( parseInt( document.getElementById("blacklist-view").children[ i ].id ) >> 8 ) & 0xFF;
				arr[ cc++ ] = ( parseInt( document.getElementById("blacklist-view").children[ i ].id ) >> 16 ) & 0xFF;
				arr[ cc++ ] = ( parseInt( document.getElementById("blacklist-view").children[ i ].id ) >> 24 ) & 0xFF;
            }

			json_str["blacklist_size"] = numberOfChildren;
			json_str["debug_channel"] = debug_channel;
			
			return { "bin": arr, "json": json_str };
		}
		
		
		function deleteConfig( id ) {
			createNewCommands( "task", { "task_name": "GetData", "params": {"query": "DELETE FROM public.\"Commands\" WHERE id = " + id } }, refresh ); 
			
		}

		
		function refresh() {
			window.location = window.location;
			return 1;
		}
		
        function getCoin1Settings() {
        	var json_str = {};

			var op_mode = parseInt( $("#op-mode").val()  );
			var spo2_agc = parseInt( $("#spo2-agc").val()  );
        	
			var spo2_r_current = parseInt( $("#ledr").val()  );
			var spo2_i_current = parseInt( $("#ledi").val()  );
			var spo2_pulse_width = parseInt( $("#spo2_pulse_width").val()  );

			var spo2_frequency = parseInt( $("#sart").val()  );
			
			var spo2_mode = parseInt( $("#spo2-mode").val()  );
			var acc_frequency = parseInt( $("#acc-freq").val()  );

			var report_interval = parseInt( $("#report-interval").val()  );
			var temp_freq_sending = parseInt( $("#temp-freq-sending").val()  )/20;
			
			var radio_mode = parseInt( $("#radio-mode").val()  );
			var debug_mode = parseInt( $("#debug-mode").val()  );

			json_str["op_mode"] = op_mode;
			json_str["spo2_agc"] = spo2_agc;
			
			json_str["spo2_r_current"] = spo2_r_current;
			json_str["spo2_i_current"] = spo2_i_current;
			json_str["spo2_pulse_width"] = spo2_pulse_width;
			
			json_str["spo2_frequency"] = spo2_frequency;
			
			json_str["spo2_mode"] = spo2_mode;
			json_str["acc_frequency"] = acc_frequency;

			json_str["temp_freq_sending"] = temp_freq_sending;
			json_str["report_interval"] = report_interval;

			json_str["radio_mode"] = radio_mode;
			json_str["debug_mode"] = debug_mode;

			var arr = new Uint8Array( 21 );
			
			var p = 0;
			arr[ p++ ] = 10;

			arr[ p++ ] = op_mode & 0xFF;
			
			arr[ p++ ] = spo2_agc & 0xFF;
			
			arr[ p++ ] = ( spo2_r_current ) & 0xFF;
			arr[ p++ ] = ( spo2_i_current  ) & 0xFF;
			arr[ p++ ] = ( spo2_pulse_width ) & 0xFF;
			arr[ p++ ] = ( spo2_mode ) & 0xFF;
								
			arr[ p++ ] = ( spo2_frequency ) & 0xFF;
			arr[ p++ ] = ( acc_frequency ) & 0xFF;
			
			arr[ p++ ] = ( temp_freq_sending ) & 0xFF;
			arr[ p++ ] = ( temp_freq_sending >> 8 ) & 0xFF;
			
			arr[ p++ ] = ( report_interval ) & 0xFF;
			arr[ p++ ] = ( report_interval >> 8 ) & 0xFF;
			arr[ p++ ] = ( report_interval >> 16 ) & 0xFF;
			arr[ p++ ] = ( report_interval >> 24 ) & 0xFF;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			arr[ p++ ] = 0;
			
			arr[ p++ ] = ( radio_mode ) & 0xFF;
			arr[ p++ ] = ( debug_mode ) & 0xFF;

			console.log( arr );
			
			return { "bin": arr, "json": json_str };
        }
		
		
		
		function newSettingsCreation() {
			var created_on = Date.now();
			var lastUpdate = Date.now();
			var status = 0;
			var data;
			
			if ( config_string == 1 ) {
				data = getCoin1Settings();
				
			}else if ( config_string == 2 ) {
				data = getCoin2Settings();
				
			}else if ( config_string == 3 ) {
				data = getCoin3Settings();
				
			}else if ( config_string == 999 ) {
				data = getBTSSettings();
				
			}
			
			createNewConfig( created_on, ToBase64( data["bin"] ), lastUpdate, status, 0 ,  data["json"], config_string );
		}
       	
       	function newLedCreation() {
       		var created_on = Date.now();
			var lastUpdate = Date.now();
			var status = 0;
			var data = "Cw==";
       		createNewConfig( created_on, data, lastUpdate, status, 0 ,  "", config_string );
       	}
       	
       	function newRestartCreation() {
       	    var created_on = Date.now();
			var lastUpdate = Date.now();
			var status = 0;
			var data = "DA==";
       		createNewConfig( created_on, data, lastUpdate, status, 0 ,  "", config_string );
       	}
       	   	
        function createPage( response ) {
			$("#main-cont").append( response );
		}
        
        var types = parseInt( <?php echo $_GET["conf"];  ?> );
        var device_id = <?php echo $_GET["dev_id"];  ?>;
        
        function loadOldSettings() {
        	/*
    		for( var x = 0; x < 10; x++ ) {
        		$("#blacklist-view").html( $("#blacklist-view").html() + "<li id='" + id + "' onlick='removeElement( " + id + " )'></li>" );
        		$("#hostname").val( "-" );
        		$("#port").val( "-" );
    		}
    		*/
    		$("#op-mode").val( "-" );
    		$("#blacklist-mode").val( "-" );
    		$("#port").val( "-" );
    		
        	
        }
        
        
        
        
        function handlePostLoad() {
        	initElems();
        	if ( types == 2 ) {
        	
            	for( var x = 1; x < 256; x++ ) {
    				var o = new Option( (parseInt(x)*0.5) + " mA", x);
    				
    				$("#ledg").append(o);
    				var o = new Option( (parseInt(x)*0.5) + " mA", x);
    				$("#ledi").append(o);
    				var o = new Option( (parseInt(x)*0.5) + " mA", x);
    				$("#ledr").append(o);
    				var o = new Option( (parseInt(x)*0.5) + " mA", x);
    				$("#ledg1").append(o);
    				var o = new Option( (parseInt(x)*0.5) + " mA", x);
    				$("#ledi1").append(o);
    				var o = new Option( (parseInt(x)*0.5) + " mA", x);
    				$("#ledr1").append(o);
    				
    				
    			}
            	$("#ledg").val( 254 );
            	$("#ledr").val( 254 );
            	$("#ledi").val( 254 );
            	
        	} else if ( types == 999 ) {

        		
        	}
        	
        	loadOldSettings();
        } 
        
        function _base64ToArrayBuffer(base64) {
            var binary_string = window.atob(base64);
            var len = binary_string.length;
            var bytes = new Uint8Array(len);
            for (var i = 0; i < len; i++) {
                bytes[i] = binary_string.charCodeAt(i);
            }
            return bytes.buffer;
        }
        
        function _base64ToArray(base64) {
            var binary_string = window.atob(base64);
            var len = binary_string.length;
            var bytes = [];
            for (var i = 0; i < len; i++) {
                bytes.push( binary_string.charCodeAt(i) );
            }
            return bytes;
        }
        
        function createSettingsBoard( data ) {

        	if ( data["result"].length <= 0 )
        		return;
        	if ( config_string == 2 ) {
        		console.log( data );
	        	data = data["result"][0];
	        	
	        	var timestamp = data[ 0 ];
	        	
	        	var b_array = _base64ToArray( data[1] );
	        	
	        	console.log( b_array[0] );
	        	
	        	$("#op-mode-mem").html( b_array[ 0 ] );
	        	
	        	$("#ledr-mem").html( b_array[ 5 ] );
	        	$("#ledg-mem").html( b_array[ 6 ] );
	        	$("#ledi-mem").html( b_array[ 7 ] );
	        	
	        	$("#ledr1-mem").html( b_array[ 8 ] );
	        	$("#ledg1-mem").html( b_array[ 9 ] );
	        	$("#ledi1-mem").html( b_array[ 10 ] );
	        	
	        	
	        	$("#call-mem").html( b_array[ 11 ] );
	        	$("#frekvencia-mem").html( b_array[ 12 ] );
	        	
	        	var bin_string1 =  b_array[ 13 ].toString(2);
	        	while ( bin_string1.length < 8 ) {
	        		bin_string1 = "0" + bin_string1; 
	        	}
	        	
	        	var bin_string2 = b_array[ 14 ].toString(2);
	        	while ( bin_string2.length < 8 ) {
	        		bin_string2 = "0" + bin_string2; 
	        	}
	        	
	        	$("#matrix-mem").html( bin_string2 + bin_string1 );
	        	
        	}else if ( config_string == 1 ) {
        		console.log( data );
	        	data = data["result"][0];
	        	
	        	var timestamp = data[ 0 ];
	        	
	        	var b_array = _base64ToArray( data[1] );
	        	
    			$("#op-mode").val( b_array[ 0 ] );
    			$("#spo2-agc").val( b_array[ 1 ] );
            	
    			$("#ledr").val( b_array[2] );
    			$("#ledi").val( b_array[3] );
    			$("#spo2_pulse_width").val( b_array[4] );
    
    			$("#spo2-mode").val( b_array[5] );
    			
    			$("#sart").val( b_array[6] );
    			
    			$("#acc-freq").val( b_array[7] );
    
    			$("#temp-freq-sending").val( (b_array[8] + ( b_array[9] << 8 ))* 20 );
    			$("#report-interval").val( b_array[10] + ( b_array[11] << 8 ) + ( b_array[12] << 16 ) + ( b_array[13] << 24 ) + ( b_array[14] << 32 ) + ( b_array[15] << 40 ) + ( b_array[16] << 48 ) + ( b_array[17] << 56 )  );
    			
    			
    			$("#stream-mode-mem").val( b_array[ 18 ] );
    			$("#radio-mode-mem").val( b_array[ 19 ] );
	
				$("#op-mode-mem").html( b_array[ 0 ] );
    			$("#spo2-agc-mem").html( b_array[ 1 ] );
            	
    			$("#ledr-mem").html( b_array[2] );
    			$("#ledi-mem").html( b_array[3] );
    			$("#spo2_pulse_width-mem").html( b_array[4] );
    
    			$("#sart-mem").html( b_array[6] );
    			
    			$("#spo2-mode-mem").html( b_array[5] );
    			$("#acc-freq-mem").html( b_array[7] );
    
    			$("#temp-freq-sending-mem").html( (b_array[8] + ( b_array[9] << 8 )) * 20 );
    			$("#report-interval-mem").html( b_array[10] + ( b_array[11] << 8 ) + ( b_array[12] << 16 ) + ( b_array[13] << 24 ) + ( b_array[14] << 32 ) + ( b_array[15] << 40 ) + ( b_array[16] << 48 ) + ( b_array[17] << 56 )  );
    			
    			$("#debug-mode-mem").html( b_array[ 18 ] );
    			$("#radio-mode-mem").html( b_array[ 19 ] );
	        	        	
	        	
        	}else if ( config_string == 999 ) {
        		
 				data = data["result"][0];
	        	
	        	var timestamp = data[ 0 ];
	        	
	        	var b_array = _base64ToArray( data[1] );
	        	
	        	console.log( b_array[0] );
	        	
	        	var hostname = "";
	        	
	        	var pos = 3;
	        	
	        	for ( var x = 0; x < b_array.length; x++ ) {
	        		if ( b_array[ pos + x ] != 0 ) {
	        			hostname = hostname + b_array[ pos + x ]; 
	        		}
	        		
	        	}
	        	
				pos = 43;
				var wifi_name = "";
	        	for ( var x = 0; x < b_array.length; x++ ) {
	        		if ( b_array[ pos + x ] != 0 ) {
	        			wifi_name = wifi_name + b_array[ pos + x ]; 
	        		}
	        	}
	        	
				pos = 43;
				var wifi_password = "";
	        	for ( var x = 0; x < b_array.length; x++ ) {
	        		if ( b_array[ pos + x ] != 0 ) {
	        			wifi_password = wifi_password + b_array[ pos + x ]; 
	        		}
	        	}	
	        	
	        	port = b_array[ 0 ] + ( b_array[ 1 ] << 8 ); 
	        	type = b_array[ 2 ];
	        	
	        	console.log( "Hostname:" );
	        	console.log( hostname );
	        	
	        	console.log( "Port:" );
	        	console.log( port );
	        	
	        	console.log( "Type:" );
	        	console.log( type );
	        	
	        	console.log( "Wifi name:" );
	        	console.log( wifi_name );
	        	
	        	console.log( "Wifi password:" );
	        	console.log( wifi_password );
	        	
	        	
	        	var port = 0;
	        	
	        	
	        	
        		$("#hostname").val( hostname );
        		$("#port").val( port );
        	
        		$("#op-mode").val( type );
        		$("#wifi-name").val( wifi_name );
        		$("#wifi-password").val( wifi_password );
        		
        	
        	}
        	
        }
        
        function createTrialContainer( data ) {
        	console.log( data["result"] );
        	data = JSON.parse( data["result"] );
        	var found = 0;
        	var id = 0;
        	
        	for ( trial in data ) {
        		console.log(data);
        		if ( parseInt( dev_id ) == parseInt( data[trial]["coin_id"] ) &&  data[trial]["done"] == 0  ) {
        		 	parseInt( dev_id ) 
        			found = data[trial];
        			id = trial;
        		}  
        	}
        	
        	if ( config_string != 999 ) {
	        	if ( found != 0 ) {
	        		$("#manual-meas").show();
	        		$( "#trial-cont-new" ).hide();
	        		$( "#tria-cont-cont" ).show();
	        		
	        		$("#trial-cont-name").val( data[id]["name"] );
	        		$("#trial-cont-comment").val( data[id]["note"] );
	        		$("#trial-cont-tags").val( data[id]["tag"] );
	        		$("#trial-cont-id").val( id );
	        		$("#active-meas").val( id );
	        		
	        		
	        	}else{
	        		$( "#tria-cont-cont" ).hide();
	        		$( "#trial-cont-new" ).show();
	        		$("#active-meas").val( "-" );
	        		
	        	}
        	}
        	
        	load.clear();
        }
        
        var global_init = 0;
        
        
        function createAuxContainer( data ) {
        	

        }
        
        function createAuxContainerBTS( data ) {
        
        }
        
        function isAlphaNumeric(str) {
        	  var code, i, len;

        	  for (i = 0, len = str.length; i < len; i++) {
        	    code = str.charCodeAt(i);
        	    if (!(code > 47 && code < 58) && // numeric (0-9)
        	        !(code > 64 && code < 91) && // upper alpha (A-Z)
        	        !(code > 96 && code < 123) &&
        	        !(code != ' ')) { // lower alpha (a-z)
        	      return false;
        	    }
        	  }
        	  return true;
        }
        
		function start() {
	
			global_socket_wrapper.init();
			
			config_string = <?php echo $_GET["conf"] ?>;

			var element_to_load = "";
			
			if ( conf == 999 ) {
				element_to_load = "coin_settings_bts.php";
			}else if ( conf == 1 ) {
				element_to_load = "coin_settings_coin1.php";
			}else if ( conf == 2 ) {
				element_to_load = "coin_settings_coin2.php";
			}else if ( conf == 3 ) {
				element_to_load = "coin_settings_coin3.php";
			}   
			
			if ( conf != 999 ) {
				g_graph = new Graph( "g_graph_container", "ADC" );
				ir_graph = new Graph( "ir_graph_container", "ADC" );
				r_graph = new Graph( "r_graph_container", "ADC" );
				
				
				g1_graph = new Graph( "g1_graph_container", "ADC" );
				ir1_graph = new Graph( "ir1_graph_container", "ADC" );
				r1_graph = new Graph( "r1_graph_container", "ADC" );
	
				x_graph = new Graph( "x_graph_container", "ADC" );
				y_graph = new Graph( "y_graph_container", "ADC" );
				z_graph = new Graph( "z_graph_container", "ADC" );
				
				snr_graph = new Graph( "snr_graph_container", "RSSI" );
				buffer_graph = new Graph( "buffer_graph_container", "count" );
				sample_graph = new Graph( "sample_graph_container", "ADC" );
			}	
				
				charts.push( x_graph );
				charts.push( z_graph );
				charts.push( y_graph );

				charts.push( r_graph );
				charts.push( ir_graph );
				charts.push( g_graph );

				charts.push( r1_graph );
				charts.push( ir1_graph );
				charts.push( g1_graph );
				
				
				setInterval( renderLoop, 200 );
    				
    	    $.ajax({
                url: "parts/" + element_to_load, 
                context: document.body,
                success: function(response) {
                	load_done = 1;
                    cont = response;
                    createPage( response );
                }
            });
    	    
            var ff = new liveUpdate();

			global_socket_wrapper.registerLiveUpdater("new_coin_data", ff);
			
			var dev_t = 0;
			
			if ( config_string != 999 ) {
				dev_t = 0;
			}else{
				dev_t = 999;
				$("#main-cont1").hide();
				$("#graph-row-1").hide();
				$("#graph-row-2").hide();
				$("#graph-row-3").hide();
				$("#graph-row-4").hide();
			}
			
   			var cc1 = createNewCommands( "task", { "task_name": "GetData", "params": {"query": 'Select timestamp,"data" From public."Memory_state" WHERE coin_id=' + <?php echo $_GET["dev_id"] ?> + ' ORDER BY timestamp DESC LIMIT 1' } }, createSettingsBoard );
   			
   			var cc1 = createNewCommands( "task", { "task_name": "GetDataFromModel", "params": {"model": 'TrialStorage' } }, createTrialContainer );
   			global_init = 1;
   			
   			var cc2 = createNewCommands( "task", { "task_name": "GetDataFromModel", "params": {"model": 'LiveViewStorage' } }, createAuxContainer );
   			
   			var cc3 = createNewCommands( "task", { "task_name": "GetDataFromModel", "params": {"model": 'DashboardBTS' } }, createAuxContainerBTS );
   			
   			$("#manual-meas").hide();
				
   			
   			
		}

		
		function deleteCommand( id ){
			setNewCommand( 1, 2, "" );
			setNewCommand()  ;
		}
		
		//var uint8ToBase64=function(r){"use strict";function n(r){return r.charCodeAt(0)}var e=String.fromCharCode;return r.decode=function(r){return Uint8Array.from(atob(r),n)},r.encode=function(r){for(var n=[],t=0,o=r.length;t<o;t++)n.push(e(r[t]));return btoa(n.join(""))},r}({});
		
		var elems_t = "0000000000000000";
		var elemets = {};
		elemets[ 0 ] = { "x": 190, "y": 80 }; //d1
		
		elemets[ 1 ] = { "x": 137, "y": 80 }; //d2
		
		elemets[ 2 ] = { "x": 190, "y": 119 }; //d3
		
		elemets[ 3 ] = { "x": 190, "y": 155 }; //d4
		
		elemets[ 4 ] = { "x": 137, "y": 155 };//d5
		
		elemets[ 5 ] = { "x": 190, "y": 193 };//d6
		
		elemets[ 6 ] = { "x": 190, "y": 232 };//d7
		
		elemets[ 7 ] = { "x": 137, "y": 232 };//d8
		
		elemets[ 8 ] = { "x": 137, "y": 42 };//d9
		
		elemets[ 9 ] = { "x": 84, "y": 80 };//d10
		
		elemets[ 10 ] = { "x": 84, "y": 119 };//d11
		
		elemets[ 11 ] = { "x": 84, "y": 155 };//d12
		
		elemets[ 12 ] = { "x": 84, "y": 193 };//d13
		
		elemets[ 13 ] = { "x": 84, "y": 232 };//d14
		
		elemets[ 14 ] = { "x": 137, "y": 269 };//d15
		
        function setCharAt(str,index,chr) {
            if(index > str.length-1) return str;
            return str.substring(0,index) + chr + str.substring(index+1);
        }
        
        function setImgStatus( index, status ) {
        	if ( status == 1 ) {
        		$("#led" + (index+1)).show();
        	}
        	
        	if ( status == 0 ) {
        		$("#led" + (index+1)).hide();
        	}
        		
        }
        
		function setStatus(index, status) {
			var x = 0;
			x = setCharAt( elems_t, index, status );
			setImgStatus( index, status );
			elems_t = x; 
		}
		function getStatus(index, status) {
			return elems_t.at( index  ); 
		}
		function initElems() {
			
			for ( var xx = 0; xx < 15; xx++ ) {
				var pass_x = 0;
				var pass_y = 0;
								
				$("#led"+(xx+1)).css("top", elemets[ xx ]["y"]+12 );
				$("#led"+(xx+1)).css("left", elemets[ xx ]["x"]+16 );
				$("#led"+(xx+1)).css("pointer-events", "none" );
				
			}

		}
		var active_trial = 0;
		
		function newMeasCreating() {
			var datas = {};
			
			var coin_id = dev_id;
			var name = $("#trial-new-name").val();
			var tags = $("#trial-new-tags").val();
			var comment = $("#trial-new-comment").val();
			if ( isAlphaNumeric( name ) == true ) {
			}else if ( isAlphaNumeric( name ) == false ) {
				alert( "PRE KRISTABOHA VYMAZ TU VYJEBANU DIAKRITIKU" );
				return 0;
			}
			
			datas["name"] = name;
			datas["tag"] = tags;
			datas["note"] = comment;
			datas["from_t"] = 0;
			datas["to_t"] = 0;
			datas["coin_id"] = coin_id;
			datas["done"] = 0;
			active_trial = datas;
			

			var cc1 = createNewCommands( "task", { "task_name": "CreateTrial", "params":  datas }, showCommands );
		}
		
		function endMeas() {
			var datas = {};
			
			var coin_id = dev_id;
			var name = $("#trial-cont-name").val();
			var tags = $("#trial-cont-tags").val();
			var comment = $("#trial-cont-comment").val();
			

			
			datas["name"] = name;
			datas["tag"] = tags;
			datas["note"] = comment;
			datas["from_t"] = 0;
			datas["to_t"] = 0;
			datas["coin_id"] = parseInt(coin_id);
			datas["done"] = parseInt(1);
			datas["id"] = parseInt( $("#trial-cont-id").val() );
			
			
			active_trial = datas;
				
			var cc1 = createNewCommands( "task", { "task_name": "CreateTrial", "params":  datas }, showCommands );
		}
		
		function showCommands() {
			showInfoMsg("Prikaz vykonany", 2);
			var cc1 = createNewCommands( "task", { "task_name": "GetDataFromModel", "params": {"model": 'TrialStorage' } }, createTrialContainer );
		}
		
		function getIndex( x, y ) {
			var elem_x = 24;
			var elem_y = 15;
			
		
			var active_index = 0;
			for ( var xx = 0; xx < 15; xx++ ) {
				var pass_x = 0;
				var pass_y = 0;
								
				if ( x >= elemets[ xx ][ "x" ] && x <= ( elem_x + elemets[ xx ][ "x" ] ) ) {
					pass_x = 1;
				}
				
				if ( y >= elemets[ xx ][ "y" ] && y <= ( elem_y + elemets[ xx ][ "y" ] ) ) {
					pass_y = 1;
				}
				active_index = xx;
				if ( pass_x == 1 && pass_y == 1 ) {
					return active_index;
				}
			}

			return -1;
		}
		var load = new Loader();
		
		function changeDataInsert() {
			var eel = $("#type-meas").val();
			$("#spo2-insert").hide();
			$("#press-insert").hide();
			$("#temp-insert").hide();
			$("#alc-insert").hide();
			
			
			if ( eel == 0 ) {
			
				$("#spo2-insert").show();
				
			}else if ( eel == 1 ) {
			
				$("#press-insert").show();
				
			}else if ( eel == 2 ) {
			
    			$("#temp-insert").show();
    			
			}else if ( eel == 4 ) {
			
    			$("#alc-insert").show();
    			
			}
			
			
			
		}
		
		function processCoinBTS( data ) {
		
		}
		
		function insertNewValue() {
		
			var time = new Date().getTime()/1000;
			var data = "";
			var note = $("#man-comment").val();
			var type = $("#type-meas").val();
			var trial_id =  $("#trial-cont-id").val();
			
			if ( type == 0 ) {
			
				data = $("#meas-spo2-spo2").val() + " " +  $("#meas-spo2-pulz").val()  + " " +  $("#meas-spo2-pi").val() ;
				
			}else if ( type == 1 ) {
			
				data = $("#meas-bp-sys").val() + " " + $("#meas-bp-dia").val() + " " + $("#meas-bp-tep").val() + " " + $("#meas-bp-type").val();
				
			}else if ( type == 2 ) {
			
    			data = $("#meas-temp").val();
				
			}else if ( type == 4 ) {
			
    			data = $("#meas-alc").val();
				
			}
			
			
			
			createNewCommands( "task", { "task_name": "GetData", "params": {"query": "INSERT INTO public.\"Trial_measurement_manual\"( time, data, note, type, trial_id ) VALUES( '" + parseInt(time) + "', '" + data + "', '" + note + "', '" + type + "', '" + trial_id + "' )"  } }, processCoinBTS ); 
		
		}
		
</script>		
</head>

<body class="" onload="start();" style="overflow:hidden;" >
  <div class="wrapper">
    <div class="navbar-minimize-fixed">
      <button class="minimize-sidebar btn btn-link btn-just-icon">
        <i class="tim-icons icon-align-center visible-on-sidebar-regular text-muted"></i>
        <i class="tim-icons icon-bullet-list-67 visible-on-sidebar-mini text-muted"></i>
      </button>
    </div>
      	<?php 
		
		$path = $_SERVER['DOCUMENT_ROOT'];
		$path .= "/components/sidebar.php";
		include_once($path);
		
		?>
    <div class="main-panel scroll-pane" style="overflow: scroll !important;" >
      <!-- Navbar -->
		       	<?php 
		
		$path = $_SERVER['DOCUMENT_ROOT'];
		$path .= "/components/plugin.php";
		include_once($path);
		
		?>
     			       	<?php 
		
		$path = $_SERVER['DOCUMENT_ROOT'];
		$path .= "/components/navbar.php";
		include_once($path);
		
		?>
     	
      <!-- End Navbar -->
      <div style="" class="content">
        <div class="col-md-8 ml-auto mr-auto">
          <h4 class="text-center">Informácie o zariadeniach</h4>
          <p class="text-center">Podrobné informácia o fungovaní zariadenia najdete na stránke
            <a href="https://datatables.net/" target="_blank">dokumentácia.</a>
          </p>
        </div>
     
        <div class="row mt-12" id="coin_conf_0" >
          <div class="col mb-8">
            <div class="card"  id="manual-meas">
                <div class="card-body">
                    <h4 class="text-left">Manualne merania</h4>
                    
                    <p><span style="width:300px;display:inline-block;">Typ:</span>
                		<select id="type-meas" class="form-control" style="width:200px;display:inline-block;background:rgba(100, 100, 100);" onchange="changeDataInsert();" >
                			<option value="0" >Spo2 Prst</option>
                			<option value="1" >Tlak</option>
                			<option value="2" >Teplota</option>
                			<option value="3" >Zadrzanie dychu</option>
                			<option value="4" >Chlast</option>
                			
                		</select>
                	</p>
					<input onclick="insertNewValue();" class="btn btn-fill btn-primary" type="submit" value="Pridat zaznam">					    					    					
                	

                		    					    					
                </div>
              <!-- end content-->
            </div>
            <!--  end card  -->
          </div>
		  <div class="col mb-8">
            <div class="card"  id="manual-meas">
                <div class="card-body">
                    <h4 class="text-left">Large coin</h4>
                	<div id="temp-insert" style="" >
                    	<p><span style="width:300px;display:inline-block;">Temp:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>
						<p><span style="width:300px;display:inline-block;">Spo2:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>
						<p><span style="width:300px;display:inline-block;">HR:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>
						<p><span style="width:300px;display:inline-block;">Tlak sys:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>
						<p><span style="width:300px;display:inline-block;">Tlak dia:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>				
						<p><span style="width:300px;display:inline-block;">Breath:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>	
						<p><span style="width:300px;display:inline-block;">HRV:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>			
    				</div>

                		    					    					
                </div>
              <!-- end content-->
            </div>
            <!--  end card  -->
          </div>

		  <div class="col mb-8">
            <div class="card"  id="manual-meas">
                <div class="card-body">
                    <h4 class="text-left">EKG sensor</h4>
                	<div id="temp-insert" style="" >
                    	<p><span style="width:300px;display:inline-block;">Temp:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>
						<p><span style="width:300px;display:inline-block;">Mag:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>		
						<p><span style="width:300px;display:inline-block;">Press:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>
						<p><span style="width:300px;display:inline-block;">HRV:</span>
            				<input id="meas-temp" type="text" style="width:200px;display:inline-block; background: rgba(100, 100, 100);" class="form-control" name="temp"/>
            				
        				</p>			
    				</div>

                		    					    					
                </div>
              <!-- end content-->
            </div>
            <!--  end card  -->
          </div>
		  
        </div>


		<!-- wrapper -->
       </div>

      </div>
		
		<?php 
		
		$path = $_SERVER['DOCUMENT_ROOT'];
		$path .= "/components/footer.php";
		include_once($path);
		
		?>
	
	
</div>
  <!--   Core JS Files   -->
  		<?php 
		
		$path = $_SERVER['DOCUMENT_ROOT'];
		$path .= "/components/code_footer.php";
		include_once($path);
		
		?>
  
</body>

</html>
