removed old stuff, moved libraries, corrected paths

This commit is contained in:
Naeltard 2015-04-02 00:09:14 +02:00
parent 71d4efd0eb
commit 5b515c750b
13 changed files with 11 additions and 1608 deletions

View File

@ -1,5 +1,5 @@
<?php
require_once 'system/autoload.inc.php'; //SYSTEM Classes
require_once 'lib/system/autoload.inc.php'; //SYSTEM Classes
require_once 'slingit/autoload.inc'; //Project Classes
require_once 'config.php';

View File

@ -12,7 +12,7 @@ $slingit_config=array(array(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_ERRORREPORTING
array(\SYSTEM\CONFIG\config_ids::SYS_SAI_CONFIG_BASEURL, 'http://www.slingit.org/sai.php?'),
array(\SYSTEM\CONFIG\config_ids::SYS_SAI_CONFIG_TITLE, 'Slingit - Admin Bereich'),
array(\SYSTEM\CONFIG\config_ids::SYS_SAI_CONFIG_COPYRIGHT, '<a href="http://www.slingit.org/" target="_blank"></a> &copy; WebCraft Media 2013'),
array(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_PATH_SYSTEMPATHREL, 'system/'),
array(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_PATH_SYSTEMPATHREL, 'lib/system/'),
array(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_LANGS, array('deDE')),
array(\SYSTEM\CONFIG\config_ids::SYS_CONFIG_DEFAULT_LANG, 'deDE'),
array(\SYSTEM\CONFIG\config_ids::SYS_CRON_LOG2SQLITE_PATH, '/home/web/webdir/slingit/slingit/files/log/'));

View File

@ -1,5 +1,5 @@
<?php
require_once 'system/autoload.inc.php'; //SYSTEM Classes
require_once 'lib/system/autoload.inc.php'; //SYSTEM Classes
require_once 'slingit/autoload.inc'; //Project Classes
require_once 'config.php';

View File

@ -1,5 +1,5 @@
<?php
require_once 'system/autoload.inc.php'; //SYSTEM Classes
require_once 'lib/system/autoload.inc.php'; //SYSTEM Classes
require_once 'slingit/autoload.inc'; //Project Classes
require_once 'config.php'; //Server config

View File

@ -1,51 +0,0 @@
/*custom_button------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
.btn-green {
background-color: hsl(97, 69%, 25%) !important;
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#68d326", endColorstr="#356b13");
background-image: -khtml-gradient(linear, left top, left bottom, from(#68d326), to(#356b13));
background-image: -moz-linear-gradient(top, #68d326, #356b13);
background-image: -ms-linear-gradient(top, #68d326, #356b13);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #68d326), color-stop(100%, #356b13));
background-image: -webkit-linear-gradient(top, #68d326, #356b13);
background-image: -o-linear-gradient(top, #68d326, #356b13);
background-image: linear-gradient(#68d326, #356b13);
border-color: #356b13 #356b13 hsl(97, 69%, 19%);
color: #fff !important;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.39);
-webkit-font-smoothing: antialiased;
}
.btn-red {
background-color: hsl(0, 100%, 35%) !important;
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#fe2d2d", endColorstr="#b20000");
background-image: -khtml-gradient(linear, left top, left bottom, from(#fe2d2d), to(#b20000));
background-image: -moz-linear-gradient(top, #fe2d2d, #b20000);
background-image: -ms-linear-gradient(top, #fe2d2d, #b20000);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fe2d2d), color-stop(100%, #b20000));
background-image: -webkit-linear-gradient(top, #fe2d2d, #b20000);
background-image: -o-linear-gradient(top, #fe2d2d, #b20000);
background-image: linear-gradient(#fe2d2d, #b20000);
border-color: #b20000 #b20000 hsl(0, 100%, 29%);
color: #fff !important;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.39);
-webkit-font-smoothing: antialiased;
}
.btn-grey {
background-color: hsl(70, 0%, 32%) !important;
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#999999", endColorstr="#515151");
background-image: -khtml-gradient(linear, left top, left bottom, from(#999999), to(#515151));
background-image: -moz-linear-gradient(top, #999999, #515151);
background-image: -ms-linear-gradient(top, #999999, #515151);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #999999), color-stop(100%, #515151));
background-image: -webkit-linear-gradient(top, #999999, #515151);
background-image: -o-linear-gradient(top, #999999, #515151);
background-image: linear-gradient(#999999, #515151);
border-color: #515151 #515151 hsl(70, 0%, 25%);
color: #fff !important;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.46);
-webkit-font-smoothing: antialiased;
}

View File

@ -1,61 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>HashMask - Demo</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.js"></script>
<script type="text/javascript" src="jquery.sha1.js"></script>
<script type="text/javascript" src="jquery.sparkline.js"></script>
<script type="text/javascript" src="jquery.hashmask.js"></script>
<style type="text/css">
/* <![CDATA[ */
body {
text-align: center;
font-family: "Myriad Pro", Arial, Helvetica, sans-serif;
}
label {
display: block;
color: #666;
font-size: .8em;
}
#username, #password
{
font-size: 2em;
width: 350px;
}
/* ]]> */
</style>
</head>
<body>
<h1>Login to HashMask Demo</h1>
<form id="loginForm" action="login" method="post">
<p>
<label for="username">Username</label>
<input type="text" name="username" id="username" value="" size="20" />
</p>
<p>
<label for="password">Password</label>
<input type="password" name="password" id="password" value="" size="20" />
</p>
<p class="submit">
<input type="submit" name="submit" id="submit" value="Login" />
</p>
</form>
<div id="hello"></div>
<script type="text/javascript">
// <![CDATA[
$(function() {
$("#password").hashmask();
});
// ]]>
</script>
</body>
</html>

View File

@ -1,105 +0,0 @@
/**
* HashMask - a new approach to password masking security
*
* REQUIRES:
* jquery.sparkline.js
* a one way hashing method, currently sha1, provided by jquery.sha1.js
*
* @author Chris Dary <umbrae@gmail.com>
* @copyright Copyright (c) 2009 {@link http://arc90.com Arc90 Inc.}
* @license http://www.opensource.org/licenses/bsd-license.php
**/
(function($) {
$.hashmask = {
settings: {
hashFunction: $.sha1,
useColorAsHint: true,
sparkInterval: 500,
sparklineOptions: {
width: '100px',
height: 'auto',
lineColor: '#69C',
spotColor: false,
minSpotColor: false,
maxSpotColor: false
}
}
};
$.fn.hashmask = function(settings) {
/**
* @var object Contains an associative array of all settings for hashmask.
**/
settings = $.extend({}, $.hashmask.settings, settings);
/**
* Add hashmask hint to an input. The input must be of type password.
*
* @param selector string A jquery capable selector, as defined here: http://docs.jquery.com/Selectors
* @return void
**/
return this.each(function() {
var $sparkline, sparkTimeout, i;
var $this = $(this);
if(!$this.is('input[type="password"]'))
{
throw new Error('HashMask may only be used on inputs of type password.');
}
$sparkline = $('<div id="' + this.id + '-jquery-hashmask-sparkline"></div>');
$sparkline.css({
position: 'absolute',
top: $this.offset().top + parseInt($this.css('borderTopWidth'), 10),
left: $this.offset().left + $this.outerWidth() - parseInt($this.css('borderRightWidth'), 10) - parseInt(settings.sparklineOptions.width, 10),
width: settings.sparklineOptions.width,
height: $this.outerHeight()
});
$sparkline.click(function() { $this.focus(); });
$this.parents('form').append($sparkline);
$this.keyup(function(e) {
window.clearTimeout(sparkTimeout);
var inputVal = $this.val();
if(inputVal === "")
{
$sparkline.html("");
return;
}
var inputHash = settings.hashFunction($this.val()).substr(0,20);
var inputHexArr = inputHash.split('');
var inputDecArr = [];
/* Convert our hex string array into decimal numbers for sparkline consumption */
for(i=0; i < inputHexArr.length; i++)
{
inputDecArr.push(parseInt(inputHexArr[i], 16));
}
var fillColor;
if(settings.useColorAsHint)
{
fillColor = '#' + inputHash.substr(0,6);
}
else
{
fillColor = settings.sparklineOptions.fillColor
}
sparkTimeout = window.setTimeout(function() {
$sparkline.sparkline(inputDecArr, $.extend( settings.sparklineOptions, {
height: (settings.sparklineOptions.height == 'auto' ? $this.outerHeight() - parseInt($this.css('borderBottomWidth'), 10) - parseInt($this.css('borderTopWidth'), 10): settings.sparklineOptions.height),
fillColor: fillColor
}));
}, settings.sparkInterval);
});
});
};
})(jQuery);

View File

@ -1,269 +0,0 @@
/*
* jQuery MD5 Plugin 1.2.1
* https://github.com/blueimp/jQuery-MD5
*
* Copyright 2010, Sebastian Tschan
* https://blueimp.net
*
* Licensed under the MIT license:
* http://creativecommons.org/licenses/MIT/
*
* Based on
* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
* Digest Algorithm, as defined in RFC 1321.
* Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
* Distributed under the BSD License
* See http://pajhome.org.uk/crypt/md5 for more info.
*/
/*jslint bitwise: true */
/*global unescape, jQuery */
(function ($) {
'use strict';
/*
* Add integers, wrapping at 2^32. This uses 16-bit operations internally
* to work around bugs in some JS interpreters.
*/
function safe_add(x, y) {
var lsw = (x & 0xFFFF) + (y & 0xFFFF),
msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
/*
* Bitwise rotate a 32-bit number to the left.
*/
function bit_rol(num, cnt) {
return (num << cnt) | (num >>> (32 - cnt));
}
/*
* These functions implement the four basic operations the algorithm uses.
*/
function md5_cmn(q, a, b, x, s, t) {
return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}
function md5_ff(a, b, c, d, x, s, t) {
return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t) {
return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t) {
return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t) {
return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}
/*
* Calculate the MD5 of an array of little-endian words, and a bit length.
*/
function binl_md5(x, len) {
/* append padding */
x[len >> 5] |= 0x80 << ((len) % 32);
x[(((len + 64) >>> 9) << 4) + 14] = len;
var i, olda, oldb, oldc, oldd,
a = 1732584193,
b = -271733879,
c = -1732584194,
d = 271733878;
for (i = 0; i < x.length; i += 16) {
olda = a;
oldb = b;
oldc = c;
oldd = d;
a = md5_ff(a, b, c, d, x[i], 7, -680876936);
d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
b = md5_gg(b, c, d, a, x[i], 20, -373897302);
a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
d = md5_hh(d, a, b, c, x[i], 11, -358537222);
c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
a = md5_ii(a, b, c, d, x[i], 6, -198630844);
d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
a = safe_add(a, olda);
b = safe_add(b, oldb);
c = safe_add(c, oldc);
d = safe_add(d, oldd);
}
return [a, b, c, d];
}
/*
* Convert an array of little-endian words to a string
*/
function binl2rstr(input) {
var i,
output = '';
for (i = 0; i < input.length * 32; i += 8) {
output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
}
return output;
}
/*
* Convert a raw string to an array of little-endian words
* Characters >255 have their high-byte silently ignored.
*/
function rstr2binl(input) {
var i,
output = [];
output[(input.length >> 2) - 1] = undefined;
for (i = 0; i < output.length; i += 1) {
output[i] = 0;
}
for (i = 0; i < input.length * 8; i += 8) {
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);
}
return output;
}
/*
* Calculate the MD5 of a raw string
*/
function rstr_md5(s) {
return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
}
/*
* Calculate the HMAC-MD5, of a key and some data (raw strings)
*/
function rstr_hmac_md5(key, data) {
var i,
bkey = rstr2binl(key),
ipad = [],
opad = [],
hash;
ipad[15] = opad[15] = undefined;
if (bkey.length > 16) {
bkey = binl_md5(bkey, key.length * 8);
}
for (i = 0; i < 16; i += 1) {
ipad[i] = bkey[i] ^ 0x36363636;
opad[i] = bkey[i] ^ 0x5C5C5C5C;
}
hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
}
/*
* Convert a raw string to a hex string
*/
function rstr2hex(input) {
var hex_tab = '0123456789abcdef',
output = '',
x,
i;
for (i = 0; i < input.length; i += 1) {
x = input.charCodeAt(i);
output += hex_tab.charAt((x >>> 4) & 0x0F) +
hex_tab.charAt(x & 0x0F);
}
return output;
}
/*
* Encode a string as utf-8
*/
function str2rstr_utf8(input) {
return unescape(encodeURIComponent(input));
}
/*
* Take string arguments and return either raw or hex encoded strings
*/
function raw_md5(s) {
return rstr_md5(str2rstr_utf8(s));
}
function hex_md5(s) {
return rstr2hex(raw_md5(s));
}
function raw_hmac_md5(k, d) {
return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d));
}
function hex_hmac_md5(k, d) {
return rstr2hex(raw_hmac_md5(k, d));
}
$.md5 = function (string, key, raw) {
if (!key) {
if (!raw) {
return hex_md5(string);
} else {
return raw_md5(string);
}
}
if (!raw) {
return hex_hmac_md5(key, string);
} else {
return raw_hmac_md5(key, string);
}
};
}(typeof jQuery === 'function' ? jQuery : this));

View File

@ -1,170 +0,0 @@
/**
* jQuery SHA1 hash algorithm function
*
* <code>
* Calculate the sha1 hash of a String
* String $.sha1 ( String str )
* </code>
*
* Calculates the sha1 hash of str using the US Secure Hash Algorithm 1.
* SHA-1 the Secure Hash Algorithm (SHA) was developed by NIST and is specified in the Secure Hash Standard (SHS, FIPS 180).
* This script is used to process variable length message into a fixed-length output using the SHA-1 algorithm. It is fully compatible with UTF-8 encoding.
* If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag).
* This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin.
*
* Example
* Code
* <code>
* $.sha1("I'm Persian.");
* </code>
* Result
* <code>
* "1d302f9dc925d62fc859055999d2052e274513ed"
* </code>
*
* @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
* @link http://www.semnanweb.com/jquery-plugin/sha1.html
* @see http://www.webtoolkit.info/
* @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
* @param {jQuery} {sha1:function(string))
* @return string
*/
(function($){
var rotateLeft = function(lValue, iShiftBits) {
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
}
var lsbHex = function(value) {
var string = "";
var i;
var vh;
var vl;
for(i = 0;i <= 6;i += 2) {
vh = (value>>>(i * 4 + 4))&0x0f;
vl = (value>>>(i*4))&0x0f;
string += vh.toString(16) + vl.toString(16);
}
return string;
};
var cvtHex = function(value) {
var string = "";
var i;
var v;
for(i = 7;i >= 0;i--) {
v = (value>>>(i * 4))&0x0f;
string += v.toString(16);
}
return string;
};
var uTF8Encode = function(string) {
string = string.replace(/\x0d\x0a/g, "\x0a");
var output = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
output += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
output += String.fromCharCode((c >> 6) | 192);
output += String.fromCharCode((c & 63) | 128);
} else {
output += String.fromCharCode((c >> 12) | 224);
output += String.fromCharCode(((c >> 6) & 63) | 128);
output += String.fromCharCode((c & 63) | 128);
}
}
return output;
};
$.extend({
sha1: function(string) {
var blockstart;
var i, j;
var W = new Array(80);
var H0 = 0x67452301;
var H1 = 0xEFCDAB89;
var H2 = 0x98BADCFE;
var H3 = 0x10325476;
var H4 = 0xC3D2E1F0;
var A, B, C, D, E;
var tempValue;
string = uTF8Encode(string);
var stringLength = string.length;
var wordArray = new Array();
for(i = 0;i < stringLength - 3;i += 4) {
j = string.charCodeAt(i)<<24 | string.charCodeAt(i + 1)<<16 | string.charCodeAt(i + 2)<<8 | string.charCodeAt(i + 3);
wordArray.push(j);
}
switch(stringLength % 4) {
case 0:
i = 0x080000000;
break;
case 1:
i = string.charCodeAt(stringLength - 1)<<24 | 0x0800000;
break;
case 2:
i = string.charCodeAt(stringLength - 2)<<24 | string.charCodeAt(stringLength - 1)<<16 | 0x08000;
break;
case 3:
i = string.charCodeAt(stringLength - 3)<<24 | string.charCodeAt(stringLength - 2)<<16 | string.charCodeAt(stringLength - 1)<<8 | 0x80;
break;
}
wordArray.push(i);
while((wordArray.length % 16) != 14 ) wordArray.push(0);
wordArray.push(stringLength>>>29);
wordArray.push((stringLength<<3)&0x0ffffffff);
for(blockstart = 0;blockstart < wordArray.length;blockstart += 16) {
for(i = 0;i < 16;i++) W[i] = wordArray[blockstart+i];
for(i = 16;i <= 79;i++) W[i] = rotateLeft(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);
A = H0;
B = H1;
C = H2;
D = H3;
E = H4;
for(i = 0;i <= 19;i++) {
tempValue = (rotateLeft(A, 5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
E = D;
D = C;
C = rotateLeft(B, 30);
B = A;
A = tempValue;
}
for(i = 20;i <= 39;i++) {
tempValue = (rotateLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
E = D;
D = C;
C = rotateLeft(B, 30);
B = A;
A = tempValue;
}
for(i = 40;i <= 59;i++) {
tempValue = (rotateLeft(A, 5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
E = D;
D = C;
C = rotateLeft(B, 30);
B = A;
A = tempValue;
}
for(i = 60;i <= 79;i++) {
tempValue = (rotateLeft(A, 5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
E = D;
D = C;
C = rotateLeft(B, 30);
B = A;
A = tempValue;
}
H0 = (H0 + A) & 0x0ffffffff;
H1 = (H1 + B) & 0x0ffffffff;
H2 = (H2 + C) & 0x0ffffffff;
H3 = (H3 + D) & 0x0ffffffff;
H4 = (H4 + E) & 0x0ffffffff;
}
var tempValue = cvtHex(H0) + cvtHex(H1) + cvtHex(H2) + cvtHex(H3) + cvtHex(H4);
return tempValue.toLowerCase();
}
});
})(jQuery);

View File

@ -1,936 +0,0 @@
/**
*
* jquery.sparkline.js
*
* v1.4.2
* (c) Splunk, Inc
* Contact: Gareth Watts (gareth@splunk.com)
* http://omnipotent.net/jquery.sparkline/
*
* Generates inline sparkline charts from data supplied either to the method
* or inline in HTML
*
* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag
* (Firefox 2.0+, Safari, Opera, etc)
*
* License: New BSD License
*
* Copyright (c) 2009, Splunk Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* * Neither the name of Splunk Inc nor the names of its contributors may
* be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
* Usage:
* $(selector).sparkline(values, options)
*
* If values is undefined or set to 'html' then the data values are read from the specified tag:
* <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p>
* $('.sparkline').sparkline();
* There must be no spaces in the enclosed data set
*
* Otherwise values must be an array of numbers
* <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p>
* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])
*
* For line charts, x values can also be specified:
* <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>
* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])
*
* Supported options:
* lineColor - Color of the line used for the chart
* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart
* width - Width of the chart - Defaults to 3 times the number of values in pixels
* height - Height of the chart - Defaults to the height of the containing element
* chartRangeMin - Specify the minimum value to use for the range of the chart - Defaults to the minimum value supplied
* chartRangeMax - Specify the maximum value to use for the range of the chart - Defaults to the maximum value supplied
* composite - If true then don't erase any existing chart attached to the tag, but draw
* another chart over the top - Note that width and height are ignored if an
* existing chart is detected.
*
* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default),
* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'
* line - Line chart. Options:
* spotColor - Set to '' to not end each line in a circular spot
* minSpotColor - If set, color of spot at minimum value
* maxSpotColor - If set, color of spot at maximum value
* spotRadius - Radius in pixels
* normalRangeMin
* normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal"
* or expected range of values
* normalRangeColor - Color to use for the above bar
* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart
*
* bar - Bar chart. Options:
* barColor - Color of bars for postive values
* negBarColor - Color of bars for negative values
* barWidth - Width of bars in pixels
* barSpacing - Gap between bars in pixels
* zeroAxis - Centers the y-axis around zero if true
*
* tristate - Charts values of win (>0), lose (<0) or draw (=0)
* posBarColor - Color of win values
* negBarColor - Color of lose values
* zeroBarColor - Color of draw values
* barWidth - Width of bars in pixels
* barSpacing - Gap between bars in pixels
* colorMap - Optional mappnig of values to colors to override the *BarColor values above
*
* discrete - Options:
* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height
* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor
* thresholdColor
*
* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...
* options:
* targetColor - The color of the vertical target marker
* targetWidth - The width of the target marker in pixels
* performanceColor - The color of the performance measure horizontal bar
* rangeColors - Colors to use for each qualitative range background color
*
* pie - Pie chart. Options:
* sliceColors - An array of colors to use for pie slices
* offset - Angle in degrees to offset the first slice - Try -90 or +90
*
* box - Box plot. Options:
* raw - Set to true to supply pre-computed plot points as values
* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier
* When set to false you can supply any number of values and the box plot will
* be computed for you. Default is false.
* showOutliers - Set to true (default) to display outliers as circles
* outlierIRQ - Interquartile range used to determine outliers. Default 1.5
* boxLineColor - Outline color of the box
* boxFillColor - Fill color for the box
* whiskerColor - Line color used for whiskers
* outlierLineColor - Outline color of outlier circles
* outlierFillColor - Fill color of the outlier circles
* spotRadius - Radius of outlier circles
* medianColor - Line color of the median line
* target - Draw a target cross hair at the supplied value (default undefined)
*
*
*
* Examples:
* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });
* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });
* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):
* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });
* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });
* $('#pie').sparkline([1,1,2], { type:'pie' });
*/
(function($) {
// Provide a cross-browser interface to a few simple drawing primitives
$.fn.simpledraw = function(width, height, use_existing) {
if (use_existing && this[0].vcanvas) return this[0].vcanvas;
if (width==undefined) width=$(this).innerWidth();
if (height==undefined) height=$(this).innerHeight();
if ($.browser.hasCanvas) {
return new vcanvas_canvas(width, height, this);
} else if ($.browser.msie) {
return new vcanvas_vml(width, height, this);
} else {
return false;
}
};
var pending = [];
$.fn.sparkline = function(uservalues, options) {
var options = $.extend({
type : 'line',
lineColor : '#00f',
fillColor : '#cdf',
defaultPixelsPerValue : 3,
width : 'auto',
height : 'auto',
composite : false
}, options ? options : {});
return this.each(function() {
var render = function() {
var values = (uservalues=='html' || uservalues==undefined) ? $(this).text().split(',') : uservalues;
var width = options.width=='auto' ? values.length*options.defaultPixelsPerValue : options.width;
if (options.height == 'auto') {
if (!options.composite || !this.vcanvas) {
// must be a better way to get the line height
var tmp = document.createElement('span');
tmp.innerHTML = 'a';
$(this).html(tmp);
height = $(tmp).innerHeight();
$(tmp).remove();
}
} else {
height = options.height;
}
$.fn.sparkline[options.type].call(this, values, options, width, height);
}
// jQuery 1.3.0 completely changed the meaning of :hidden :-/
if (($(this).html() && $(this).is(':hidden')) || ($.fn.jquery < "1.3.0" && $(this).parents().is(':hidden'))) {
pending.push([this, render]);
} else {
render.call(this);
}
});
};
$.sparkline_display_visible = function() {
for (var i=pending.length-1; i>=0; i--) {
var el = pending[i][0];
if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {
pending[i][1].call(el);
pending.splice(i, 1);
}
}
};
$.fn.sparkline.line = function(values, options, width, height) {
var options = $.extend({
spotColor : '#f80',
spotRadius : 1.5,
minSpotColor : '#f80',
maxSpotColor : '#f80',
normalRangeMin : undefined,
normalRangeMax : undefined,
normalRangeColor : '#ccc',
chartRangeMin : undefined,
chartRangeMax : undefined
}, options ? options : {});
var xvalues = [], yvalues = [];
for (i=0; i<values.length; i++) {
var isstr = typeof(values[i])=='string';
var isarray = typeof(values[i])=='object' && values[i] instanceof Array;
var sp = isstr && values[i].split(':');
if (isstr && sp.length == 2) { // x:y
xvalues.push(Number(sp[0]));
yvalues.push(Number(sp[1]));
} else if (isarray) {
xvalues.push(values[i][0]);
yvalues.push(values[i][1]);
} else {
xvalues.push(i);
yvalues.push(Number(values[i]));
}
}
if (options.xvalues) {
xvalues = options.xvalues;
}
var maxy = Math.max.apply(Math, yvalues);
var maxyval = maxy;
var miny = Math.min.apply(Math, yvalues);
var minyval = miny;
var maxx = Math.max.apply(Math, xvalues);
var maxxval = maxx;
var minx = Math.min.apply(Math, xvalues);
var minxval = minx;
if (options.normalRangeMin!=undefined) {
if (options.normalRangeMin<miny)
miny = options.normalRangeMin;
if (options.normalRangeMax>maxy)
maxy = options.normalRangeMax;
}
if (options.chartRangeMin!=undefined && options.chartRangeMin<miny) {
miny = options.chartRangeMin;
}
if (options.chartRangeMax!=undefined && options.chartRangeMax>maxy) {
maxy = options.chartRangeMax;
}
var rangex = maxx-minx == 0 ? 1 : maxx-minx;
var rangey = maxy-miny == 0 ? 1 : maxy-miny;
var vl = yvalues.length-1;
if (vl<1) {
this.innerHTML = '';
return;
}
var target = $(this).simpledraw(width, height, options.composite);
if (target) {
var canvas_width = target.pixel_width;
var canvas_height = target.pixel_height;
var canvas_top = 0;
var canvas_left = 0;
if (options.spotRadius && (canvas_width < (options.spotRadius*4) || canvas_height < (options.spotRadius*4))) {
options.spotRadius = 0;
}
if (options.spotRadius) {
// adjust the canvas size as required so that spots will fit
if (options.minSpotColor || (options.spotColor && yvalues[vl]==miny))
canvas_height -= Math.ceil(options.spotRadius);
if (options.maxSpotColor || (options.spotColor && yvalues[vl]==maxy)) {
canvas_height -= Math.ceil(options.spotRadius);
canvas_top += Math.ceil(options.spotRadius);
}
if (options.minSpotColor || options.maxSpotColor && (yvalues[0]==miny || yvalues[0]==maxy)) {
canvas_left += Math.ceil(options.spotRadius);
canvas_width -= Math.ceil(options.spotRadius);
}
if (options.spotColor || (options.minSpotColor || options.maxSpotColor && (yvalues[vl]==miny||yvalues[vl]==maxy)))
canvas_width -= Math.ceil(options.spotRadius);
}
canvas_height--;
if (options.normalRangeMin!=undefined) {
var ytop = canvas_top+Math.round(canvas_height-(canvas_height*((options.normalRangeMax-miny)/rangey)));
var height = Math.round((canvas_height*(options.normalRangeMax-options.normalRangeMin))/rangey);
target.drawRect(canvas_left, ytop, canvas_width, height, undefined, options.normalRangeColor);
}
var path = [ [canvas_left, canvas_top+canvas_height] ];
for(var i=0; i<yvalues.length; i++) {
var x=xvalues[i], y=yvalues[i];
path.push([canvas_left+Math.round((x-minx)*(canvas_width/rangex)), canvas_top+Math.round(canvas_height-(canvas_height*((y-miny)/rangey)))]);
}
if (options.fillColor) {
path.push([canvas_left+canvas_width, canvas_top+canvas_height-1]);
target.drawShape(path, undefined, options.fillColor);
path.pop();
}
path[0] = [ canvas_left, canvas_top+Math.round(canvas_height-(canvas_height*((yvalues[0]-miny)/rangey))) ];
target.drawShape(path, options.lineColor);
if (options.spotRadius && options.spotColor) {
target.drawCircle(canvas_left+canvas_width, canvas_top+Math.round(canvas_height-(canvas_height*((yvalues[vl]-miny)/rangey))), options.spotRadius, undefined, options.spotColor);
}
if (maxy!=minyval) {
if (options.spotRadius && options.minSpotColor) {
var x = xvalues[yvalues.indexOf(minyval)];
target.drawCircle(canvas_left+Math.round((x-minx)*(canvas_width/rangex)), canvas_top+Math.round(canvas_height-(canvas_height*((minyval-miny)/rangey))), options.spotRadius, undefined, options.minSpotColor);
}
if (options.spotRadius && options.maxSpotColor) {
var x = xvalues[yvalues.indexOf(maxyval)];
target.drawCircle(canvas_left+Math.round((x-minx)*(canvas_width/rangex)), canvas_top+Math.round(canvas_height-(canvas_height*((maxyval-miny)/rangey))), options.spotRadius, undefined, options.maxSpotColor);
}
}
} else {
// Remove the tag contents if sparklines aren't supported
this.innerHTML = '';
}
};
$.fn.sparkline.bar = function(values, options, width, height) {
values = $.map(values, Number);
var options = $.extend({
type : 'bar',
barColor : '#00f',
negBarColor : '#f44',
zeroColor: undefined,
zeroAxis : undefined,
barWidth : 4,
barSpacing : 1,
chartRangeMax: undefined,
chartRangeMin: undefined
}, options ? options : {});
var width = (values.length * options.barWidth) + ((values.length-1) * options.barSpacing);
var max = Math.max.apply(Math, values);
var min = Math.min.apply(Math, values);
if (options.chartRangeMin!=undefined && options.chartRangeMin<min) {
min = options.chartRangeMin;
}
if (options.chartRangeMax!=undefined && options.chartRangeMax>max) {
max = options.chartRangeMax;
}
if (options.zeroAxis == undefined) options.zeroAxis = min<0;
var range = max-min == 0 ? 1 : max-min;
var target = $(this).simpledraw(width, height);
if (target) {
var canvas_width = target.pixel_width;
var canvas_height = target.pixel_height;
var yzero = min<0 && options.zeroAxis ? canvas_height-Math.round(canvas_height * (Math.abs(min)/range))-1 : canvas_height-1;
for(var i=0; i<values.length; i++) {
var x = i*(options.barWidth+options.barSpacing);
var val = values[i];
var color = (val < 0) ? options.negBarColor : options.barColor;
if (options.zeroAxis && min<0) {
var height = Math.round(canvas_height*((Math.abs(val)/range)))+1;
var y = (val < 0) ? yzero : yzero-height;
} else {
var height = Math.round(canvas_height*((val-min)/range))+1;
var y = canvas_height-height;
}
if (val==0 && options.zeroColor!=undefined) {
color = options.zeroColor;
}
target.drawRect(x, y, options.barWidth-1, height-1, color, color);
}
} else {
// Remove the tag contents if sparklines aren't supported
this.innerHTML = '';
}
};
$.fn.sparkline.tristate = function(values, options, width, height) {
values = $.map(values, Number);
var options = $.extend({
barWidth : 4,
barSpacing : 1,
posBarColor: '#6f6',
negBarColor : '#f44',
zeroBarColor : '#999',
colorMap : {}
}, options);
var width = (values.length * options.barWidth) + ((values.length-1) * options.barSpacing);
var target = $(this).simpledraw(width, height);
if (target) {
var canvas_width = target.pixel_width;
var canvas_height = target.pixel_height;
var half_height = Math.round(canvas_height/2);
for(var i=0; i<values.length; i++) {
var x = i*(options.barWidth+options.barSpacing);
if (values[i] < 0) {
var y = half_height;
var height = half_height-1;
var color = options.negBarColor;
} else if (values[i] > 0) {
var y = 0;
var height = half_height-1;
var color = options.posBarColor;
} else {
var y = half_height-1;
var height = 2;
var color = options.zeroBarColor;
}
if (options.colorMap[values[i]]) {
color = options.colorMap[values[i]];
}
target.drawRect(x, y, options.barWidth-1, height-1, color, color);
}
} else {
// Remove the tag contents if sparklines aren't supported
this.innerHTML = '';
}
};
$.fn.sparkline.discrete = function(values, options, width, height) {
values = $.map(values, Number);
var options = $.extend({
lineHeight: 'auto',
thresholdColor: undefined,
thresholdValue : 0,
chartRangeMax: undefined,
chartRangeMin: undefined
}, options);
width = options.width=='auto' ? values.length*2 : width;
var interval = Math.floor(width / values.length);
var target = $(this).simpledraw(width, height);
if (target) {
var canvas_width = target.pixel_width;
var canvas_height = target.pixel_height;
var line_height = options.lineHeight == 'auto' ? Math.round(canvas_height * 0.3) : options.lineHeight;
var pheight = canvas_height - line_height;
var min = Math.min.apply(Math, values);
var max = Math.max.apply(Math, values);
if (options.chartRangeMin!=undefined && options.chartRangeMin<min) {
min = options.chartRangeMin;
}
if (options.chartRangeMax!=undefined && options.chartRangeMax>max) {
max = options.chartRangeMax;
}
var range = max-min;
for(var i=0; i<values.length; i++) {
var val = values[i];
var x = (i*interval);
var ytop = Math.round(pheight-pheight*((val-min)/range));
target.drawLine(x, ytop, x, ytop+line_height, (options.thresholdColor && val < options.thresholdValue) ? options.thresholdColor : options.lineColor);
}
} else {
// Remove the tag contents if sparklines aren't supported
this.innerHTML = '';
}
};
$.fn.sparkline.bullet = function(values, options, width, height) {
values = $.map(values, Number);
// target, performance, range1, range2, range3
var options = $.extend({
targetColor : 'red',
targetWidth : 3, // width of the target bar in pixels
performanceColor : 'blue',
rangeColors : ['#D3DAFE', '#A8B6FF', '#7F94FF' ],
base : undefined // set this to a number to change the base start number
}, options);
width = options.width=='auto' ? '4.0em' : width;
var target = $(this).simpledraw(width, height);
if (target && values.length>1) {
var canvas_width = target.pixel_width-Math.ceil(options.targetWidth/2);
var canvas_height = target.pixel_height;
var min = Math.min.apply(Math, values);
var max = Math.max.apply(Math, values);
if (options.base == undefined) {
var min = min < 0 ? min : 0;
} else {
min = options.base;
}
var range = max-min;
// draw range values
for(i=2; i<values.length; i++) {
var rangeval = parseInt(values[i]);
var rangewidth = Math.round(canvas_width*((rangeval-min)/range));
target.drawRect(0, 0, rangewidth-1, canvas_height-1, options.rangeColors[i-2], options.rangeColors[i-2]);
}
// draw the performance bar
var perfval = parseInt(values[1]);
var perfwidth = Math.round(canvas_width*((perfval-min)/range));
target.drawRect(0, Math.round(canvas_height*0.3), perfwidth-1, Math.round(canvas_height*0.4)-1, options.performanceColor, options.performanceColor);
// draw the target linej
var targetval = parseInt(values[0]);
var x = Math.round(canvas_width*((targetval-min)/range)-(options.targetWidth/2));
var targettop = Math.round(canvas_height*0.10);
var targetheight = canvas_height-(targettop*2);
target.drawRect(x, targettop, options.targetWidth-1, targetheight-1, options.targetColor, options.targetColor);
} else {
// Remove the tag contents if sparklines aren't supported
this.innerHTML = '';
}
};
$.fn.sparkline.pie = function(values, options, width, height) {
values = $.map(values, Number);
var options = $.extend({
sliceColors : ['#f00', '#0f0', '#00f']
}, options);
width = options.width=='auto' ? height : width;
var target = $(this).simpledraw(width, height);
if (target && values.length>1) {
var canvas_width = target.pixel_width;
var canvas_height = target.pixel_height;
var radius = Math.floor(Math.min(canvas_width, canvas_height)/2);
var total = 0;
for(var i=0; i<values.length; i++)
total += values[i];
var next = 0;
if (options.offset) {
next += (2*Math.PI)*(options.offset/360);
}
var circle = 2*Math.PI;
for(var i=0; i<values.length; i++) {
var start = next;
var end = next;
if (total > 0) { // avoid divide by zero
end = next + (circle*(values[i]/total));
}
target.drawPieSlice(radius, radius, radius, start, end, undefined, options.sliceColors[i % options.sliceColors.length]);
next = end;
}
}
};
function quartile(values, q) {
if (q==2) {
var vl2 = Math.floor(values.length/2);
return values.length % 2 ? values[vl2] : (values[vl2]+values[vl2+1])/2;
} else {
var vl4 = Math.floor(values.length/4);
return values.length % 2 ? (values[vl4*q]+values[vl4*q+1])/2 : values[vl4*q];
}
};
$.fn.sparkline.box = function(values, options, width, height) {
values = $.map(values, Number);
var options = $.extend({
raw: false,
boxLineColor: 'black',
boxFillColor: '#cdf',
whiskerColor: 'black',
outlierLineColor: '#333',
outlierFillColor: 'white',
medianColor: 'red',
showOutliers: true,
outlierIQR: 1.5,
spotRadius: 1.5,
target: undefined,
targetColor: '#4a2',
chartRangeMax: undefined,
chartRangeMin: undefined
}, options);
width = options.width=='auto' ? '4.0em' : width;
minvalue = options.chartRangeMin==undefined ? Math.min.apply(Math, values) : options.chartRangeMin;
maxvalue = options.chartRangeMax==undefined ? Math.max.apply(Math, values) : options.chartRangeMax;
var target = $(this).simpledraw(width, height);
if (target && values.length>1) {
var canvas_width = target.pixel_width;
var canvas_height = target.pixel_height;
if (options.raw) {
if (options.showOutliers && values.length>5) {
var loutlier=values[0], lwhisker=values[1], q1=values[2], q2=values[3], q3=values[4], rwhisker=values[5], routlier=values[6];
} else {
var lwhisker=values[0], q1=values[1], q2=values[2], q3=values[3], rwhisker=values[4];
}
} else {
values.sort(function(a, b) { return a-b; });
var q1 = quartile(values, 1);
var q2 = quartile(values, 2);
var q3 = quartile(values, 3);
var iqr = q3-q1;
if (options.showOutliers) {
var lwhisker=undefined, rwhisker=undefined;
for(var i=0; i<values.length; i++) {
if (lwhisker==undefined && values[i] > q1-(iqr*options.outlierIQR))
lwhisker = values[i];
if (values[i] < q3+(iqr*options.outlierIQR))
rwhisker = values[i];
}
var loutlier = values[0];
var routlier = values[values.length-1];
} else {
var lwhisker = values[0];
var rwhisker = values[values.length-1];
}
}
var unitsize = canvas_width / (maxvalue-minvalue+1);
var canvas_left = 0;
if (options.showOutliers) {
canvas_left = Math.ceil(options.spotRadius);
canvas_width -= 2*Math.ceil(options.spotRadius);
var unitsize = canvas_width / (maxvalue-minvalue+1);
if (loutlier < lwhisker)
target.drawCircle((loutlier-minvalue)*unitsize+canvas_left, canvas_height/2, options.spotRadius, options.outlierLineColor, options.outlierFillColor);
if (routlier > rwhisker)
target.drawCircle((routlier-minvalue)*unitsize+canvas_left, canvas_height/2, options.spotRadius, options.outlierLineColor, options.outlierFillColor);
}
// box
target.drawRect(
Math.round((q1-minvalue)*unitsize+canvas_left),
Math.round(canvas_height*0.1),
Math.round((q3-q1)*unitsize),
Math.round(canvas_height*0.8),
options.boxLineColor,
options.boxFillColor);
// left whisker
target.drawLine(
Math.round((lwhisker-minvalue)*unitsize+canvas_left),
Math.round(canvas_height/2),
Math.round((q1-minvalue)*unitsize+canvas_left),
Math.round(canvas_height/2),
options.lineColor);
target.drawLine(
Math.round((lwhisker-minvalue)*unitsize+canvas_left),
Math.round(canvas_height/4),
Math.round((lwhisker-minvalue)*unitsize+canvas_left),
Math.round(canvas_height-canvas_height/4),
options.whiskerColor);
// right whisker
target.drawLine(Math.round((rwhisker-minvalue)*unitsize+canvas_left),
Math.round(canvas_height/2),
Math.round((q3-minvalue)*unitsize+canvas_left),
Math.round(canvas_height/2),
options.lineColor);
target.drawLine(
Math.round((rwhisker-minvalue)*unitsize+canvas_left),
Math.round(canvas_height/4),
Math.round((rwhisker-minvalue)*unitsize+canvas_left),
Math.round(canvas_height-canvas_height/4),
options.whiskerColor);
// median line
target.drawLine(
Math.round((q2-minvalue)*unitsize+canvas_left),
Math.round(canvas_height*0.1),
Math.round((q2-minvalue)*unitsize+canvas_left),
Math.round(canvas_height*0.9),
options.medianColor);
if (options.target) {
var size = Math.ceil(options.spotRadius);
target.drawLine(
Math.round((options.target-minvalue)*unitsize+canvas_left),
Math.round((canvas_height/2)-size),
Math.round((options.target-minvalue)*unitsize+canvas_left),
Math.round((canvas_height/2)+size),
options.targetColor);
target.drawLine(
Math.round((options.target-minvalue)*unitsize+canvas_left-size),
Math.round(canvas_height/2),
Math.round((options.target-minvalue)*unitsize+canvas_left+size),
Math.round(canvas_height/2),
options.targetColor);
}
} else {
// Remove the tag contents if sparklines aren't supported
this.innerHTML = '';
}
};
// IE doesn't provide an indexOf method for arrays :-(
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(entry) {
for(var i=0; i<this.length; i++) {
if (this[i] == entry)
return i;
}
return -1;
}
}
// Setup a very simple "virtual canvas" to make drawing the few shapes we need easier
// This is accessible as $(foo).simpledraw()
if ($.browser.msie && !document.namespaces['v']) {
document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');
}
if ($.browser.hasCanvas == undefined) {
var t = document.createElement('canvas');
$.browser.hasCanvas = t.getContext!=undefined;
}
var vcanvas_base = function(width, height, target) {
};
vcanvas_base.prototype = {
init : function(width, height, target) {
this.width = width;
this.height = height;
this.target = target;
if (target[0]) target=target[0];
target.vcanvas = this;
},
drawShape : function(path, lineColor, fillColor) {
alert('drawShape not implemented');
},
drawLine : function(x1, y1, x2, y2, lineColor) {
return this.drawShape([ [x1,y1], [x2,y2] ], lineColor);
},
drawCircle : function(x, y, radius, lineColor, fillColor) {
alert('drawCircle not implemented');
},
drawPieSlice : function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
alert('drawPieSlice not implemented');
},
drawRect : function(x, y, width, height, lineColor, fillColor) {
alert('drawRect not implemented');
},
getElement : function() {
return this.canvas;
},
_insert : function(el, target) {
$(target).html(el);
}
};
var vcanvas_canvas = function(width, height, target) {
return this.init(width, height, target);
};
vcanvas_canvas.prototype = $.extend(new vcanvas_base, {
_super : vcanvas_base.prototype,
init : function(width, height, target) {
this._super.init(width, height, target);
this.canvas = document.createElement('canvas');
if (target[0]) target=target[0];
target.vcanvas = this;
$(this.canvas).css({ display:'inline-block', width:width, height:height, verticalAlign:'top' });
this._insert(this.canvas, target);
this.pixel_height = $(this.canvas).height();
this.pixel_width = $(this.canvas).width();
this.canvas.width = this.pixel_width;
this.canvas.height = this.pixel_height;
$(this.canvas).css({width: this.pixel_width, height: this.pixel_height});
},
_getContext : function(lineColor, fillColor) {
var context = this.canvas.getContext('2d');
if (lineColor != undefined)
context.strokeStyle = lineColor;
context.lineWidth = 1;
if (fillColor != undefined)
context.fillStyle = fillColor;
return context;
},
drawShape : function(path, lineColor, fillColor) {
var context = this._getContext(lineColor, fillColor);
context.beginPath();
context.moveTo(path[0][0]+0.5, path[0][1]+0.5);
for(var i=1; i<path.length; i++) {
context.lineTo(path[i][0]+0.5, path[i][1]+0.5); // the 0.5 offset gives us crisp pixel-width lines
}
if (lineColor != undefined) {
context.stroke();
}
if (fillColor != undefined) {
context.fill();
}
},
drawCircle : function(x, y, radius, lineColor, fillColor) {
var context = this._getContext(lineColor, fillColor);
context.beginPath();
context.arc(x, y, radius, 0, 2*Math.PI, false);
if (lineColor != undefined) {
context.stroke();
}
if (fillColor != undefined) {
context.fill();
}
},
drawPieSlice : function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
var context = this._getContext(lineColor, fillColor);
context.beginPath();
context.moveTo(x, y);
context.arc(x, y, radius, startAngle, endAngle, false);
context.lineTo(x, y);
context.closePath();
if (lineColor != undefined) {
context.stroke();
}
if (fillColor) {
context.fill();
}
},
drawRect : function(x, y, width, height, lineColor, fillColor) {
return this.drawShape([ [x,y], [x+width, y], [x+width, y+height], [x, y+height], [x, y] ], lineColor, fillColor);
}
});
var vcanvas_vml = function(width, height, target) {
return this.init(width, height, target);
};
vcanvas_vml.prototype = $.extend(new vcanvas_base, {
_super : vcanvas_base.prototype,
init : function(width, height, target) {
this._super.init(width, height, target);
if (target[0]) target=target[0];
target.vcanvas = this;
this.canvas = document.createElement('span');
$(this.canvas).css({ display:'inline-block', position: 'relative', overflow:'hidden', width:width, height:height, margin:'0px', padding:'0px', verticalAlign: 'top'});
this._insert(this.canvas, target);
this.pixel_height = $(this.canvas).height();
this.pixel_width = $(this.canvas).width();
this.canvas.width = this.pixel_width;
this.canvas.height = this.pixel_height;;
var groupel = '<v:group coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'"'
+' style="position:absolute;top:0;left:0;width:'+this.pixel_width+'px;height='+this.pixel_height+'px;"></v:group>';
this.canvas.insertAdjacentHTML('beforeEnd', groupel);
this.group = $(this.canvas).children()[0];
},
drawShape : function(path, lineColor, fillColor) {
var vpath = [];
for(var i=0; i<path.length; i++) {
vpath[i] = ''+(path[i][0])+','+(path[i][1]);
}
var initial = vpath.splice(0,1);
var stroke = lineColor == undefined ? ' stroked="false" ' : ' strokeWeight="1" strokeColor="'+lineColor+'" ';
var fill = fillColor == undefined ? ' filled="false"' : ' fillColor="'+fillColor+'" filled="true" ';
var closed = vpath[0] == vpath[vpath.length-1] ? 'x ' : '';
var vel = '<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'" '
+ stroke
+ fill
+' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+'px;width:'+this.pixel_width+'px;padding:0px;margin:0px;" '
+' path="m '+initial+' l '+vpath.join(', ')+' '+closed+'e">'
+' </v:shape>';
this.group.insertAdjacentHTML('beforeEnd', vel);
},
drawCircle : function(x, y, radius, lineColor, fillColor) {
x -= radius+1;
y -= radius+1;
var stroke = lineColor == undefined ? ' stroked="false" ' : ' strokeWeight="1" strokeColor="'+lineColor+'" ';
var fill = fillColor == undefined ? ' filled="false"' : ' fillColor="'+fillColor+'" filled="true" ';
var vel = '<v:oval '
+ stroke
+ fill
+' style="position:absolute;top:'+y+'px; left:'+x+'px; width:'+(radius*2)+'px; height:'+(radius*2)+'px"></v:oval>';
this.group.insertAdjacentHTML('beforeEnd', vel);
},
drawPieSlice : function(x, y, radius, startAngle, endAngle, lineColor, fillColor) {
if (startAngle == endAngle) {
return; // VML seems to have problem when start angle equals end angle.
}
if ((endAngle - startAngle) == (2*Math.PI)) {
startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0
endAngle = (2*Math.PI);
}
var startx = x + Math.round(Math.cos(startAngle) * radius);
var starty = y + Math.round(Math.sin(startAngle) * radius);
var endx = x + Math.round(Math.cos(endAngle) * radius);
var endy = y + Math.round(Math.sin(endAngle) * radius);
var vpath = [ x-radius, y-radius, x+radius, y+radius, startx, starty, endx, endy ];
var stroke = lineColor == undefined ? ' stroked="false" ' : ' strokeWeight="1" strokeColor="'+lineColor+'" ';
var fill = fillColor == undefined ? ' filled="false"' : ' fillColor="'+fillColor+'" filled="true" ';
var vel = '<v:shape coordorigin="0 0" coordsize="'+this.pixel_width+' '+this.pixel_height+'" '
+ stroke
+ fill
+' style="position:absolute;left:0px;top:0px;height:'+this.pixel_height+'px;width:'+this.pixel_width+'px;padding:0px;margin:0px;" '
+' path="m '+x+','+y+' wa '+vpath.join(', ')+' x e">'
+' </v:shape>';
this.group.insertAdjacentHTML('beforeEnd', vel);
},
drawRect : function(x, y, width, height, lineColor, fillColor) {
return this.drawShape( [ [x, y], [x, y+height], [x+width, y+height], [x+width, y], [x, y] ], lineColor, fillColor);
}
});
})(jQuery);

View File

@ -2,8 +2,8 @@
class default_page extends \SYSTEM\PAGE\Page {
private function js(){
return '<script type="text/javascript" language="JavaScript" src="'.SYSTEM\WEBPATH(new PLIB(),'jquery/jquery-1.9.1.min.js').'"></script>'.
'<script type="text/javascript" language="JavaScript" src="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/js/bootstrap.min.js').'"></script>'.
'<script src="'.SYSTEM\WEBPATH(new PTOR(),'webtorrent.min.js').'"></script>'.
//'<script type="text/javascript" language="JavaScript" src="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/js/bootstrap.min.js').'"></script>'.
'<script src="'.SYSTEM\WEBPATH(new PLIB(),'webtorrent/webtorrent.min.js').'"></script>'.
//'<script type="text/javascript" language="JavaScript" src="'.SYSTEM\WEBPATH(new PLIB(),'jqbootstrapvalidation/jqBootstrapValidation.js').'"></script>'.
//'<script type="text/javascript" language="JavaScript" src="'.SYSTEM\WEBPATH(new PLIB(),'hashmask/jquery.md5.js').'"></script>'.
//'<script type="text/javascript" language="JavaScript" src="'.SYSTEM\WEBPATH(new PLIB(),'hashmask/jquery.sha1.js').'"></script>'.
@ -13,10 +13,10 @@ class default_page extends \SYSTEM\PAGE\Page {
}
private function css(){
return '<link href="'.SYSTEM\WEBPATH(new PPAGE(),'default_page/css/default_page.css').'" rel="stylesheet">'.
'<link href="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/css/bootstrap.min.css').'" rel="stylesheet">'.
'<link href="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/css/bootstrap-theme.min.css').'" rel="stylesheet">'.
'<link href="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/css/bootstrap-responsive.min.css').'" rel="stylesheet">';
return '<link href="'.SYSTEM\WEBPATH(new PPAGE(),'default_page/css/default_page.css').'" rel="stylesheet">';
//'<link href="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/css/bootstrap.min.css').'" rel="stylesheet">'.
//'<link href="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/css/bootstrap-theme.min.css').'" rel="stylesheet">'.
//'<link href="'.SYSTEM\WEBPATH(new PLIB(),'bootstrap/css/bootstrap-responsive.min.css').'" rel="stylesheet">';
}
public function html(){

View File

@ -1,5 +1,5 @@
<?php
class PLIB extends \SYSTEM\PATH {
public static function getPath(){
return \SYSTEM\C_ROOT.'slingit/lib/'.\SYSTEM\C_SUBPATH;}
return \SYSTEM\C_ROOT.'lib/'.\SYSTEM\C_SUBPATH;}
}

View File

@ -1,5 +0,0 @@
<?php
class PTOR extends \SYSTEM\PATH {
public static function getPath(){
return \SYSTEM\C_ROOT.'webtorrent/'.\SYSTEM\C_SUBPATH;}
}