summaryrefslogtreecommitdiff
path: root/html
diff options
context:
space:
mode:
Diffstat (limited to 'html')
-rwxr-xr-xhtml/import.php25
-rw-r--r--html/import/import_renderer-ctf.php30
-rw-r--r--html/import/import_renderer-dm.php31
-rw-r--r--html/import/import_renderer-dom.php32
-rw-r--r--html/import/import_renderer-preconfig.php17
-rwxr-xr-xhtml/includes/config.php65
-rw-r--r--html/includes/css/themes/tooltipster-light.css12
-rw-r--r--html/includes/css/themes/tooltipster-noir.css12
-rw-r--r--html/includes/css/themes/tooltipster-punk.css12
-rw-r--r--html/includes/css/themes/tooltipster-shadow.css12
-rw-r--r--html/includes/css/tooltipster.css283
-rw-r--r--html/includes/encoding.php304
-rwxr-xr-xhtml/includes/footer.php2
-rwxr-xr-xhtml/includes/ftptimestamp.php2
-rwxr-xr-xhtml/includes/header.php25
-rw-r--r--html/includes/js/adapters/standalone-framework.js18
-rw-r--r--html/includes/js/clickrows.js8
-rw-r--r--html/includes/js/clocks.js561
-rw-r--r--html/includes/js/highcharts-3d.js45
-rw-r--r--html/includes/js/highcharts-all.js471
-rw-r--r--html/includes/js/highcharts-functions.js1
-rw-r--r--html/includes/js/highcharts-more.js53
-rw-r--r--html/includes/js/highcharts.js308
-rw-r--r--html/includes/js/jquery-1.11.1.min.js4
-rw-r--r--html/includes/js/jquery.tooltipster.min.js1
-rw-r--r--html/includes/js/modules/canvas-tools.js133
-rw-r--r--html/includes/js/modules/data.js24
-rw-r--r--html/includes/js/modules/drilldown.js15
-rw-r--r--html/includes/js/modules/exporting.js23
-rw-r--r--html/includes/js/modules/funnel.js13
-rw-r--r--html/includes/js/modules/heatmap.js23
-rw-r--r--html/includes/js/modules/multicolor_series.js567
-rw-r--r--html/includes/js/modules/no-data-to-display.js12
-rw-r--r--html/includes/js/modules/solid-gauge.js13
-rw-r--r--html/includes/js/themes/dark-blue.js254
-rw-r--r--html/includes/renderer-ctf.php264
-rw-r--r--html/includes/renderer-dm.php252
-rw-r--r--html/includes/renderer-dom.php396
-rw-r--r--html/includes/renderer-general-import.php168
-rw-r--r--html/includes/renderer-general-output.php195
-rwxr-xr-xhtml/includes/teamstats.php12
-rwxr-xr-xhtml/pages/admin/check.php81
-rwxr-xr-xhtml/pages/admin/emptydb.php75
-rwxr-xr-xhtml/pages/credits.php4
-rwxr-xr-xhtml/pages/match_info.php17
-rw-r--r--html/pages/match_info_charts.php85
-rwxr-xr-xhtml/pages/match_info_server.php19
47 files changed, 4920 insertions, 59 deletions
diff --git a/html/import.php b/html/import.php
index f811d92..c2bcfe6 100755
--- a/html/import.php
+++ b/html/import.php
@@ -740,6 +740,7 @@ $t0info, $t1info, $t2info, $t3info, $t0score, $t1score, $t2score, $t3score);";
echo "Done\n";
if ($html) echo'</td></tr>';
+ include('import/import_renderer-preconfig.php');
$updategameinfo = false;
if (count($ignored_players) > 0) {
@@ -757,6 +758,30 @@ $t0info, $t1info, $t2info, $t3info, $t0score, $t1score, $t2score, $t3score);";
mysql_query("UPDATE uts_match SET gameinfo = '$gameinfo' WHERE id = '$matchid'");
$updategameinfo = false;
}
+ if ($gamename == "Domination" || $gamename == "Domination (insta)" ) {
+ if ($html) echo '<tr><td class="smheading" align="left" width="350">';
+ echo "Generating dom graphs: ";
+ if ($html) echo '</td><td class="grey" align="left" width="200">';
+ include("import/import_renderer-dom.php");
+ echo "Done\n";
+ if ($html) echo'</td></tr>';
+ }
+ else if ($gamename == "Tournament DeathMatch" || $gamename == "Tournament DeathMatch (insta)" || $gamename == "Tournament Team Game" || $gamename == "Tournament Team Game (insta)" ) {
+ if ($html) echo '<tr><td class="smheading" align="left" width="350">';
+ echo "Generating dm graphs: ";
+ if ($html) echo '</td><td class="grey" align="left" width="200">';
+ include("import/import_renderer-dm.php");
+ echo "Done\n";
+ if ($html) echo'</td></tr>';
+ }
+ else if ($gamename == "Capture the Flag" || $gamename == "Capture the Flag (insta)" ) {
+ if ($html) echo '<tr><td class="smheading" align="left" width="350">';
+ echo "Generating ctf graphs: ";
+ if ($html) echo '</td><td class="grey" align="left" width="200">';
+ include("import/import_renderer-ctf.php");
+ echo "Done\n";
+ if ($html) echo'</td></tr>';
+ }
}
}
diff --git a/html/import/import_renderer-ctf.php b/html/import/import_renderer-ctf.php
new file mode 100644
index 0000000..3e49bf5
--- /dev/null
+++ b/html/import/import_renderer-ctf.php
@@ -0,0 +1,30 @@
+
+<?php
+ include_once('includes/renderer-dm.php');
+ include_once('includes/renderer-ctf.php');
+
+ // Only run script if at least 5 minutes were played
+ if(($time_gameend-$time_gamestart)>300 && count(array_unique($playernames))>=2) {
+
+ try {
+ $safe_uid = mysql_real_escape_string($uid);
+
+ prepCTFdata($safe_uid);
+
+ renderScoreGraph($safe_uid);
+
+ // Get relevant data
+ list($datafrags, $derivfrags, $topFraggers,$counter,$datafragsteam,$derivfragsteam,$topTeams) = parseDMdata($safe_uid);
+
+ renderFragBarsTeams($datafragsteam,$derivfragsteam,$topTeams,$counter);
+
+ if($playernumberofteams == 2)
+ renderDataPickups($safe_uid);
+
+ } catch (Exception $e) {
+
+ // Do nothing, but simply do not block import
+
+ }
+ }
+?> \ No newline at end of file
diff --git a/html/import/import_renderer-dm.php b/html/import/import_renderer-dm.php
new file mode 100644
index 0000000..e680bbf
--- /dev/null
+++ b/html/import/import_renderer-dm.php
@@ -0,0 +1,31 @@
+
+<?php
+ include_once('includes/renderer-dm.php');
+
+
+ // Only run script if at least 5 minutes were played
+ if(($time_gameend-$time_gamestart)>300 && count(array_unique($playernames))>=2) {
+
+ try {
+ $safe_uid = mysql_real_escape_string($uid);
+
+ // Get relevant data
+ list($datafrags, $derivfrags, $topFraggers,$counter,$datafragsteam,$derivfragsteam,$topTeams) = parseDMdata($safe_uid);
+
+ if($playernumberofteams > 1 && count(array_unique($playernames)) > 3 &&($gamename == "Tournament Team Game" || $gamename == "Tournament Team Game (insta)" || $gamename == "2v2v2v2 iTDM"))
+ renderFragBarsTeams($datafragsteam,$derivfragsteam,$topTeams,$counter);
+
+ renderFragBars($datafrags, $derivfrags, $topFraggers,$counter);
+
+ if(count($playernames) == 2)
+ renderDataPickups($safe_uid,false,($playerteams[$topFraggers[0]]==0),$topFraggers);
+ else if($playernumberofteams == 2)
+ renderDataPickups($safe_uid);
+
+ } catch (Exception $e) {
+
+ // Do nothing, but simply do not block import
+
+ }
+ }
+?> \ No newline at end of file
diff --git a/html/import/import_renderer-dom.php b/html/import/import_renderer-dom.php
new file mode 100644
index 0000000..d680d49
--- /dev/null
+++ b/html/import/import_renderer-dom.php
@@ -0,0 +1,32 @@
+
+<?php
+ include_once('includes/renderer-dom.php');
+ include_once('includes/renderer-dm.php');
+
+ // Only run script if at least 5 minutes were played
+ if(($time_gameend-$time_gamestart)>300 && count(array_unique($playernames))>=8) {
+
+ $tableTempIdom = generateTempTable($safe_uid);
+ $ampTimes = generateAmpTimes($safe_uid);
+
+ try {
+
+ renderDataTotal($safe_uid,$tableTempIdom);
+ renderDataCPs($safe_uid,$tableTempIdom);
+
+ renderDataPickups($safe_uid);
+ renderAmpBars($safe_uid,$tableTempIdom);
+
+ list($datafrags, $derivfrags, $topFraggers,$counter,$datafragsteam,$derivfragsteam,$topTeams) = parseDMdata($safe_uid);
+ renderFragBarsTeams($datafragsteam,$derivfragsteam,$topTeams,$counter);
+
+ } catch (Exception $e) {
+
+ // Do nothing, but simply do not block import
+
+ }
+
+ // drop table
+ mysql_query("DROP TABLE $tableTempIdom") or die(mysql_error());
+ }
+?> \ No newline at end of file
diff --git a/html/import/import_renderer-preconfig.php b/html/import/import_renderer-preconfig.php
new file mode 100644
index 0000000..bb83526
--- /dev/null
+++ b/html/import/import_renderer-preconfig.php
@@ -0,0 +1,17 @@
+<?php
+ require_once 'includes/renderer-general-import.php';
+
+ $safe_uid = mysql_real_escape_string($uid);
+
+ // Get relevant info
+ $playerinfo = getPlayerTeam($uid);
+ $playernames = $playerinfo[0];
+ $playerteams = $playerinfo[1];
+ $playernumberofteams = $playerinfo[2];
+
+ $time_gameinfo = getGameStartEndRatio($uid);
+ $time_gamestart = $time_gameinfo[0];
+ $time_gameend = $time_gameinfo[1];
+ $time_ratio_correction = $time_gameinfo[2];
+
+?> \ No newline at end of file
diff --git a/html/includes/config.php b/html/includes/config.php
index 7b086f6..11f069b 100755
--- a/html/includes/config.php
+++ b/html/includes/config.php
@@ -16,7 +16,8 @@ $import_homedir = '';
// Use the MySQL temporary tables feature?
// Available since MySQL 3.23 - requires CREATE TEMPORARY TABLE privilege since 4.0.2
-$import_use_temporary_tables = true; // set to true if available
+// No longer supported from UTStats version 4.3 onwards. Left here for historical purposes.
+$import_use_temporary_tables = false; // DON'T USE IF YOU DON'T KNOW WHAT YOU'RE DOING!
// Use temporary heap tables?
// This will (at any cost) keep the entire table in RAM and may speed and/or fuck things up
@@ -41,7 +42,6 @@ $import_log_backup = "yes";
// Purge old logs after x days. 0 to disable.
$import_log_backups_purge_after = 0;
-
// After how many seconds should we reload the import page?
// This is to prevent the 'maximum execution time exeeded' error. It will reload
// the page after the amount of seconds you specify in order to bypass php's time limit.
@@ -140,6 +140,7 @@ $pic_enable = true;
// FTP Connection Details
$ftp_use = false; // Whether to auto get the log files
$ftp_interval = 0; // How often in minutes to allow stats update
+$ftp_debug = false; // Debugging output that may help you to resolve ftp problems
$ftp_type = 'sockets'; // Which FTP module do you want to use?
// sockets - (recommended)
// Use PHP's socket extension to connect to the FTP server
@@ -150,9 +151,6 @@ $ftp_type = 'sockets'; // Which FTP module do you want to use?
// Debugging will not be available with this module and
// error handling may not be as good as with the other modules
-$ftp_debug = false; // Debugging output that may help you to resolve ftp problems
-
-
// UT Server 1
$i = 0;
$ftp_hostname[$i] = ''; // FTP server location here
@@ -183,4 +181,61 @@ $ftp_passive[$i] = true; // Use passive transfer mode for this connection?
$ftp_delete[$i] = true; // Delete logs after download?
*/
+// This section is for stats graphs as of version 4.3
+$renderer_folder = "renderings";
+$renderer_width = 350;
+$renderer_heigth = 250;
+$renderer_color['team'][0][0] = '#ff3333'; // team red color 1
+$renderer_color['team'][0][1] = '#cc0000'; // team red color 2
+$renderer_color['team'][1][0] = '#0080ff'; // team blue color 1
+$renderer_color['team'][1][1] = '#0000cc'; // team blue color 2
+$renderer_color['team'][2][0] = '#88d8b0'; // team green color 1
+$renderer_color['team'][2][1] = '#009f50'; // team green color 2
+$renderer_color['team'][3][0] = '#ffeead'; // team gold color 1
+$renderer_color['team'][3][1] = '#e5b021'; // team gold color 2
+$renderer_color['player'][0][0] = '#a7d848'; // player 1 color 1
+$renderer_color['player'][0][1] = '#98be44'; // player 1 color 2
+$renderer_color['player'][1][0] = '#6ccdd0'; // player 2 color 1
+$renderer_color['player'][1][1] = '#66af9f'; // player 2 color 2
+$renderer_color['player'][2][0] = '#ffce59'; // player 3 color 1
+$renderer_color['player'][2][1] = '#ffa65a'; // player 3 color 2
+$renderer_color['player'][3][0] = '#fba263'; // player 4 color 1
+$renderer_color['player'][3][1] = '#eb7254'; // player 4 color 2
+$renderer_color['player'][4][0] = '#fb6370 '; // player 5 color 1
+$renderer_color['player'][4][1] = '#fb6363'; // player 5 color 2
+$renderer_color['background'] = '#262626';// background color 1
+$renderer_color['band'][0] = '#666666';// band color 1
+$renderer_color['band'][1] = '#515151';// band color 2
+$renderer_color['heading'] = '#bbdeff';// font heading
+$renderer_color['font'] = '#999999';// font other
+$renderer_color['amp'] = '#aa02db';// color amp
+$renderer_color_transparancy = 0.3;// color amp
+
+define("TIMERATIO", 1.09863333333333333333333333333333333333333333333333333333333);
+
+define("RENDERER_CHARTTYPE_LINE", "line");
+define("RENDERER_CHARTTYPE_COLUMN", "column");
+define("RENDERER_CHARTTYPE_BAR", "bar");
+define("RENDERER_CHARTTYPE_LINESTEP", "linestep");
+define("RENDERER_CHARTTYPE_LINECOLUMN", "linecolumn");
+define("RENDERER_CHARTTYPE_LINESTEPCOLUMN", "linestepcolumn");
+define("RENDERER_CHARTTYPE_RADAR", "radar");
+
+define("RENDERER_CHART_CTF_TEAMSCORE", 10);
+define("RENDERER_CHART_CTF_GRABBREAKDOWN", 11);
+
+define("RENDERER_CHART_DOM_SCOREDERIV", 21);
+
+define("RENDERER_CHART_FRAGS_TEAMSCORE", 90);
+define("RENDERER_CHART_FRAGS_TEAMDERIV", 91);
+define("RENDERER_CHART_FRAGS_TEAMNORMAL", 92);
+define("RENDERER_CHART_FRAGS_PLAYERSCORE", 93);
+define("RENDERER_CHART_FRAGS_PLAYERDERIV", 94);
+define("RENDERER_CHART_FRAGS_PLAYERNORMAL", 95);
+define("RENDERER_CHART_FRAGS_PLAYERSCORE5", 96);
+define("RENDERER_CHART_FRAGS_PLAYERNORMAL5", 97);
+
+define("RENDERER_CHART_ITEMS_TEAMPICKUPS", 100);
+define("RENDERER_CHART_ITEMS_PLAYERPICKUPS", 101);
+define("RENDERER_CHART_ITEMS_AMPRUNS", 102);
?>
diff --git a/html/includes/css/themes/tooltipster-light.css b/html/includes/css/themes/tooltipster-light.css
new file mode 100644
index 0000000..945aa69
--- /dev/null
+++ b/html/includes/css/themes/tooltipster-light.css
@@ -0,0 +1,12 @@
+.tooltipster-light {
+ border-radius: 5px;
+ border: 1px solid #cccccc;
+ background: #ededed;
+ color: #666666;
+}
+.tooltipster-light .tooltipster-content {
+ font-family: Arial, sans-serif;
+ font-size: 14px;
+ line-height: 16px;
+ padding: 8px 10px;
+} \ No newline at end of file
diff --git a/html/includes/css/themes/tooltipster-noir.css b/html/includes/css/themes/tooltipster-noir.css
new file mode 100644
index 0000000..548b245
--- /dev/null
+++ b/html/includes/css/themes/tooltipster-noir.css
@@ -0,0 +1,12 @@
+.tooltipster-noir {
+ border-radius: 0px;
+ border: 3px solid #2c2c2c;
+ background: #fff;
+ color: #2c2c2c;
+}
+.tooltipster-noir .tooltipster-content {
+ font-family: 'Georgia', serif;
+ font-size: 14px;
+ line-height: 16px;
+ padding: 8px 10px;
+} \ No newline at end of file
diff --git a/html/includes/css/themes/tooltipster-punk.css b/html/includes/css/themes/tooltipster-punk.css
new file mode 100644
index 0000000..0b7362c
--- /dev/null
+++ b/html/includes/css/themes/tooltipster-punk.css
@@ -0,0 +1,12 @@
+.tooltipster-punk {
+ border-radius: 5px;
+ border-bottom: 3px solid #f71169;
+ background: #2a2a2a;
+ color: #fff;
+}
+.tooltipster-punk .tooltipster-content {
+ font-family: 'Courier', monospace;
+ font-size: 14px;
+ line-height: 16px;
+ padding: 8px 10px;
+} \ No newline at end of file
diff --git a/html/includes/css/themes/tooltipster-shadow.css b/html/includes/css/themes/tooltipster-shadow.css
new file mode 100644
index 0000000..e869c5e
--- /dev/null
+++ b/html/includes/css/themes/tooltipster-shadow.css
@@ -0,0 +1,12 @@
+.tooltipster-shadow {
+ border-radius: 5px;
+ background: #fff;
+ box-shadow: 0px 0px 14px rgba(0,0,0,0.3);
+ color: #2c2c2c;
+}
+.tooltipster-shadow .tooltipster-content {
+ font-family: 'Arial', sans-serif;
+ font-size: 14px;
+ line-height: 16px;
+ padding: 8px 10px;
+} \ No newline at end of file
diff --git a/html/includes/css/tooltipster.css b/html/includes/css/tooltipster.css
new file mode 100644
index 0000000..14c70d0
--- /dev/null
+++ b/html/includes/css/tooltipster.css
@@ -0,0 +1,283 @@
+/* This is the default Tooltipster theme (feel free to modify or duplicate and create multiple themes!): */
+.tooltipster-default {
+ border-radius: 5px;
+ border: 1px solid #1e1e1e;
+ background: -webkit-linear-gradient(#3b383b, #1e1e1e); /* For Safari 5.1 to 6.0 */
+ background: -o-linear-gradient(#3b383b, #1e1e1e); /* For Opera 11.1 to 12.0 */
+ background: -moz-linear-gradient(#3b383b, #1e1e1e); /* For Firefox 3.6 to 15 */
+ background: linear-gradient(#3b383b, #1e1e1e); /* Standard syntax */
+ color: #fff;
+ cursor: pointer;
+ -webkit-box-shadow: 10px 10px 26px -10px rgba(0,0,0,0.75);
+ -moz-box-shadow: 10px 10px 26px -10px rgba(0,0,0,0.75);
+ box-shadow: 10px 10px 26px -10px rgba(0,0,0,0.75);
+ max-width: 400px;
+}
+
+/* Use this next selector to style things like font-size and line-height: */
+.tooltipster-default .tooltipster-content {
+ font-family: GothamLight, sans-serif;
+ font-size: 14px;
+ line-height: 16px;
+ padding: 8px 10px;
+ overflow: hidden;
+}
+
+/* This next selector defines the color of the border on the outside of the arrow. This will automatically match the color and size of the border set on the main tooltip styles. Set display: none; if you would like a border around the tooltip but no border around the arrow */
+.tooltipster-default .tooltipster-arrow .tooltipster-arrow-border {
+ /* border-color: ... !important; */
+}
+
+
+/* If you're using the icon option, use this next selector to style them */
+.tooltipster-icon {
+ cursor: pointer;
+ margin-left: 4px;
+}
+
+
+
+
+
+
+
+
+/* This is the base styling required to make all Tooltipsters work */
+.tooltipster-base {
+ padding: 0;
+ font-size: 0;
+ line-height: 0;
+ position: absolute;
+ left: 0;
+ top: 0;
+ z-index: 9999999;
+ pointer-events: none;
+ width: auto;
+ overflow: visible;
+
+}
+.tooltipster-base .tooltipster-content {
+ overflow: hidden;
+}
+
+
+/* These next classes handle the styles for the little arrow attached to the tooltip. By default, the arrow will inherit the same colors and border as what is set on the main tooltip itself. */
+.tooltipster-arrow {
+ display: block;
+ text-align: center;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+}
+.tooltipster-arrow span, .tooltipster-arrow-border {
+ display: block;
+ width: 0;
+ height: 0;
+ position: absolute;
+}
+.tooltipster-arrow-top span, .tooltipster-arrow-top-right span, .tooltipster-arrow-top-left span {
+ border-left: 8px solid transparent !important;
+ border-right: 8px solid transparent !important;
+ border-top: 8px solid;
+ bottom: -7px;
+}
+.tooltipster-arrow-top .tooltipster-arrow-border, .tooltipster-arrow-top-right .tooltipster-arrow-border, .tooltipster-arrow-top-left .tooltipster-arrow-border {
+ border-left: 9px solid transparent !important;
+ border-right: 9px solid transparent !important;
+ border-top: 9px solid;
+ bottom: -7px;
+}
+
+.tooltipster-arrow-bottom span, .tooltipster-arrow-bottom-right span, .tooltipster-arrow-bottom-left span {
+ border-left: 8px solid transparent !important;
+ border-right: 8px solid transparent !important;
+ border-bottom: 8px solid;
+ top: -7px;
+}
+.tooltipster-arrow-bottom .tooltipster-arrow-border, .tooltipster-arrow-bottom-right .tooltipster-arrow-border, .tooltipster-arrow-bottom-left .tooltipster-arrow-border {
+ border-left: 9px solid transparent !important;
+ border-right: 9px solid transparent !important;
+ border-bottom: 9px solid;
+ top: -7px;
+}
+.tooltipster-arrow-top span, .tooltipster-arrow-top .tooltipster-arrow-border, .tooltipster-arrow-bottom span, .tooltipster-arrow-bottom .tooltipster-arrow-border {
+ left: 0;
+ right: 0;
+ margin: 0 auto;
+}
+.tooltipster-arrow-top-left span, .tooltipster-arrow-bottom-left span {
+ left: 6px;
+}
+.tooltipster-arrow-top-left .tooltipster-arrow-border, .tooltipster-arrow-bottom-left .tooltipster-arrow-border {
+ left: 5px;
+}
+.tooltipster-arrow-top-right span, .tooltipster-arrow-bottom-right span {
+ right: 6px;
+}
+.tooltipster-arrow-top-right .tooltipster-arrow-border, .tooltipster-arrow-bottom-right .tooltipster-arrow-border {
+ right: 5px;
+}
+.tooltipster-arrow-left span, .tooltipster-arrow-left .tooltipster-arrow-border {
+ border-top: 8px solid transparent !important;
+ border-bottom: 8px solid transparent !important;
+ border-left: 8px solid;
+ top: 50%;
+ margin-top: -7px;
+ right: -7px;
+}
+.tooltipster-arrow-left .tooltipster-arrow-border {
+ border-top: 9px solid transparent !important;
+ border-bottom: 9px solid transparent !important;
+ border-left: 9px solid;
+ margin-top: -8px;
+}
+.tooltipster-arrow-right span, .tooltipster-arrow-right .tooltipster-arrow-border {
+ border-top: 8px solid transparent !important;
+ border-bottom: 8px solid transparent !important;
+ border-right: 8px solid;
+ top: 50%;
+ margin-top: -7px;
+ left: -7px;
+}
+.tooltipster-arrow-right .tooltipster-arrow-border {
+ border-top: 9px solid transparent !important;
+ border-bottom: 9px solid transparent !important;
+ border-right: 9px solid;
+ margin-top: -8px;
+}
+
+
+/* Some CSS magic for the awesome animations - feel free to make your own custom animations and reference it in your Tooltipster settings! */
+
+.tooltipster-fade {
+ opacity: 0;
+ -webkit-transition-property: opacity;
+ -moz-transition-property: opacity;
+ -o-transition-property: opacity;
+ -ms-transition-property: opacity;
+ transition-property: opacity;
+}
+.tooltipster-fade-show {
+ opacity: 1;
+}
+
+.tooltipster-grow {
+ -webkit-transform: scale(0,0);
+ -moz-transform: scale(0,0);
+ -o-transform: scale(0,0);
+ -ms-transform: scale(0,0);
+ transform: scale(0,0);
+ -webkit-transition-property: -webkit-transform;
+ -moz-transition-property: -moz-transform;
+ -o-transition-property: -o-transform;
+ -ms-transition-property: -ms-transform;
+ transition-property: transform;
+ -webkit-backface-visibility: hidden;
+}
+.tooltipster-grow-show {
+ -webkit-transform: scale(1,1);
+ -moz-transform: scale(1,1);
+ -o-transform: scale(1,1);
+ -ms-transform: scale(1,1);
+ transform: scale(1,1);
+ -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+ -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+}
+
+.tooltipster-swing {
+ opacity: 0;
+ -webkit-transform: rotateZ(4deg);
+ -moz-transform: rotateZ(4deg);
+ -o-transform: rotateZ(4deg);
+ -ms-transform: rotateZ(4deg);
+ transform: rotateZ(4deg);
+ -webkit-transition-property: -webkit-transform, opacity;
+ -moz-transition-property: -moz-transform;
+ -o-transition-property: -o-transform;
+ -ms-transition-property: -ms-transform;
+ transition-property: transform;
+}
+.tooltipster-swing-show {
+ opacity: 1;
+ -webkit-transform: rotateZ(0deg);
+ -moz-transform: rotateZ(0deg);
+ -o-transform: rotateZ(0deg);
+ -ms-transform: rotateZ(0deg);
+ transform: rotateZ(0deg);
+ -webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 1);
+ -webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
+ -moz-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
+ -ms-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
+ -o-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
+ transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4);
+}
+
+.tooltipster-fall {
+ top: 0;
+ -webkit-transition-property: top;
+ -moz-transition-property: top;
+ -o-transition-property: top;
+ -ms-transition-property: top;
+ transition-property: top;
+ -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+ -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+}
+.tooltipster-fall-show {
+}
+.tooltipster-fall.tooltipster-dying {
+ -webkit-transition-property: all;
+ -moz-transition-property: all;
+ -o-transition-property: all;
+ -ms-transition-property: all;
+ transition-property: all;
+ top: 0px !important;
+ opacity: 0;
+}
+
+.tooltipster-slide {
+ left: -40px;
+ -webkit-transition-property: left;
+ -moz-transition-property: left;
+ -o-transition-property: left;
+ -ms-transition-property: left;
+ transition-property: left;
+ -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
+ -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+ transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15);
+}
+.tooltipster-slide.tooltipster-slide-show {
+}
+.tooltipster-slide.tooltipster-dying {
+ -webkit-transition-property: all;
+ -moz-transition-property: all;
+ -o-transition-property: all;
+ -ms-transition-property: all;
+ transition-property: all;
+ left: 0px !important;
+ opacity: 0;
+}
+
+
+/* CSS transition for when contenting is changing in a tooltip that is still open. The only properties that will NOT transition are: width, height, top, and left */
+.tooltipster-content-changing {
+ opacity: 0.5;
+ -webkit-transform: scale(1.1, 1.1);
+ -moz-transform: scale(1.1, 1.1);
+ -o-transform: scale(1.1, 1.1);
+ -ms-transform: scale(1.1, 1.1);
+ transform: scale(1.1, 1.1);
+}
diff --git a/html/includes/encoding.php b/html/includes/encoding.php
new file mode 100644
index 0000000..a559a3b
--- /dev/null
+++ b/html/includes/encoding.php
@@ -0,0 +1,304 @@
+<?php
+/*
+Copyright (c) 2008 Sebastián Grignoli
+All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitte