/* Flags */
var tk_g_init = false;
var tk_g_debug = true;
var tk_g_isCSS = false;
var tk_g_isW3C = false;
var tk_g_isIE4 = false;
var tk_g_isNN4 = false;
var tk_g_isIE6CSS = false;
var tk_g_isIE = false;
var tk_g_isOpera = false;
/* Initializer */
function TKInit() {
if(document.images) {
tk_g_isIE = navigator.appVersion.match(/MSIE (\d\.\d)/);
tk_g_isOpera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
tk_g_isCSS = (document.body && document.body.style) ? true : false;
tk_g_isW3C = (tk_g_isCSS && document.getElementById) ? true : false;
tk_g_isIE4 = (tk_g_isCSS && document.all) ? true : false;
tk_g_isNN4 = (document.layers) ? true : false;
tk_g_isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0 ) ? true : false;
}
tk_g_init = true;
}
/* Size, Position Function */
function TKCoord() {
}
TKCoord.prototype = {
getLeft: function(obj){
var ost = $(obj);
var osl = 0;
while(ost){
osl += ost.offsetLeft;
ost = ost.offsetParent;
}
if(navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined" ) {
osl += document.body.leftMargin;
}
return parseInt(osl);
},
getTop: function(obj){
var ost = $(obj);
var ost = 0;
while(ost){
ost += ost.offsetTop;
ost = ost.offsetParent;
}
if(navigator.userAgent.indexOf("Mac") != -1
&& typeof document.body.leftMargin != "undefined" ) {
ost += document.body.topMargin;
}
return parseInt(ost);
},
getWidth: function(obj){
var e = $(obj);
var r = 0;
if(e.offsetWidth) {
r = e.offsetWidth;
}
else if(e.clip && e.clip.width) {
r = e.clip.width;
}
else if(e.style && e.style.pixelWidth) {
r = e.style.pixelWidth;
}
return parseInt(r);
},
getHeight: function(obj){
var e = $(obj);
var r = 0;
if(e.offsetHeight) {
r = e.offsetHeight;
}
else if(e.clip && e.clip.height) {
r = e.clip.height;
}
else if(e.style && e.style.pixelHeight) {
r = e.style.pixelHeight;
}
return parseInt(r);
},
getScrollLeft: function() {
if (typeof window.pageXOffset != 'undefined') {
return window.pageXOffset;
}
else if (typeof document.documentElement.scrollLeft
!= 'undefined' && document.documentElement.scrollLeft > 0) {
return document.documentElement.scrollLeft;
}
else if (typeof document.body.scrollLeft != 'undefined') {
return document.body.scrollLeft;
}
return 0;
},
getScrollTop: function(){
if (typeof window.pageYOffset != 'undefined') {
return window.pageYOffset;
}
else if (typeof document.documentElement.scrollTop
!= 'undefined' && document.documentElement.scrollTop > 0) {
return document.documentElement.scrollTop;
}
else if (typeof document.body.scrollTop != 'undefined') {
return document.body.scrollTop;
}
return 0;
},
getClientWidth: function(){
if (typeof window.innerWidth != 'undefined') {
return window.innerWidth;
}
else if (typeof document.documentElement != 'undefined'
&& typeof document.documentElement.clientWidth != 'undefined'
&& document.documentElement.clientWidth != 0) {
return document.documentElement.clientWidth;
}
else {
return document.getElementsByTagName('body')[0].clientWidth;
}
},
getClientHeight: function(){
if (typeof window.innerHeight != 'undefined') {
return window.innerHeight;
}
else if (typeof document.documentElement != 'undefined'
&& typeof document.documentElement.clientHeight != 'undefined'
&& document.documentElement.clientHeight != 0) {
return document.documentElement.clientHeight;
}
else {
return document.getElementsByTagName('body')[0].clientHeight;
}
}
}
/* Date */
Date.prototype.addHours = function (n) {this.setHours (this.getHours () + n)}
/* Visibility */
function TKStyle(){
}
TKStyle.prototype = {
getStyle: function(obj){
var elm = $(obj);
if(elm && tk_g_isCSS) {
elm = elm.style;
}
return elm;
}
}
/* Node Manipulation */
function TKDom() {
}
TKDom.prototype = {
removeElement: function(obj) {
var elm = $(obj);
if(elm){
elm.parentNode.removeChild(elm);
}
}
}
/* HTML Element */
function TKHtmlElement(){
}
TKHtmlElement.prototype = {
setFocus: function(obj){
var elm = $(obj);
if(elm){
elm.focus();
}
}
}
/* Formatter */
function TKFormatter() {
}
TKFormatter.prototype = {
getPhone : function(s) {
var __ptn = /\b(\d{3})(\d{3})(\d{4})\b/;
var m = s.match(__ptn);
if(m){
return '(' + m[1] + ') ' + m[2] + '-' + m[3];
}
return s;
},
getUTCDateTime : function(t) {
var m ;
if(t.getUTCMinutes() < 9) {
m = '0' + t.getUTCMinutes();
}
else {
m = t.getUTCMinutes();
}
return (t.getUTCMonth()+1) + '/' + t.getUTCDate() + '/' + t.getUTCFullYear()
+ ' ' + t.getUTCHours() + ':' + m;
},
getLink : function(s){
if(!s){
return '';
}
var re_url = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
var re_mail = /(^((?:\w+\.?)*\w+@(?:\w+\.)+\w+)$)/gi;
s = s.replace( re_url, '$1' );
s = s.replace( re_mail, '$1');
return s;
},
unescapeHTML : function(s){
if(!s){
return '';
}
s = s.replace(/\\'/gi, "'");
s = s.replace(/\\'/gi, "'");
return s;
},
toabc : function(s){
s = s.replace(/A/g, "A");
s = s.replace(/B/g, "B");
s = s.replace(/C/g, "C");
s = s.replace(/D/g, "D");
s = s.replace(/E/g, "E");
s = s.replace(/F/g, "F");
s = s.replace(/G/g, "G");
s = s.replace(/H/g, "H");
s = s.replace(/I/g, "I");
s = s.replace(/J/g, "J");
s = s.replace(/K/g, "K");
s = s.replace(/L/g, "L");
s = s.replace(/M/g, "M");
s = s.replace(/N/g, "N");
s = s.replace(/O/g, "O");
s = s.replace(/P/g, "P");
s = s.replace(/Q/g, "Q");
s = s.replace(/R/g, "R");
s = s.replace(/S/g, "S");
s = s.replace(/T/g, "T");
s = s.replace(/U/g, "U");
s = s.replace(/V/g, "V");
s = s.replace(/W/g, "W");
s = s.replace(/X/g, "X");
s = s.replace(/Y/g, "Y");
s = s.replace(/Z/g, "Z");
s = s.replace(/a/g, "a");
s = s.replace(/b/g, "b");
s = s.replace(/c/g, "c");
s = s.replace(/d/g, "d");
s = s.replace(/e/g, "e");
s = s.replace(/f/g, "f");
s = s.replace(/g/g, "g");
s = s.replace(/h/g, "h");
s = s.replace(/i/g, "i");
s = s.replace(/j/g, "j");
s = s.replace(/k/g, "k");
s = s.replace(/l/g, "l");
s = s.replace(/m/g, "m");
s = s.replace(/n/g, "n");
s = s.replace(/o/g, "o");
s = s.replace(/p/g, "p");
s = s.replace(/q/g, "q");
s = s.replace(/r/g, "r");
s = s.replace(/s/g, "s");
s = s.replace(/t/g, "t");
s = s.replace(/u/g, "u");
s = s.replace(/v/g, "v");
s = s.replace(/w/g, "w");
s = s.replace(/x/g, "x");
s = s.replace(/y/g, "y");
s = s.replace(/z/g, "z");
return s;
}
}
/* StringBuilder */
function TKStringBuffer() {
this.__buffer = new Array();
}
TKStringBuffer.prototype = {
clear : function() { this.__buffer = new Array(); },
append : function(s) { this.__buffer.push(s); },
appendn : function(s) { this.append(s); this.append('\n'); },
toString : function() { return this.__buffer.join(''); },
/* Alias */
a : function(s) { this.append(s); },
an : function(s) { this.appendn(s); }
}
/* Utilities */
function TKUrl(){
}
TKUrl.prototype = {
getFileName: function(){
var parts = document.location.pathname.split('/');
if(parts==null){
return null;
}
return parts[parts.length-1].split('.')[0];
},
getArgs: function(){
var args = new Object();
var query = location.search.substring(1);
var pairs = query.split('&');
for(var i=0; i');
// Build HTML
for(var i=0; i');
sb.a('');
sb.a('');
break;
case tk_g_circle:
opacity = 1 - (parseFloat(s.opacity));
left = parseFloat(s.x) - parseFloat(s.r);
top = parseFloat(s.y) - parseFloat(s.r);
width = 2 * parseFloat(s.r);
height = width;
sb.a('');
if(s.fill){
sb.a('');
}
sb.a('');
sb.a('');
break;
case tk_g_rect:
opacity = 1 - (parseFloat(s.opacity));
if(s.endcap.toUpperCase() == 'ROUND'){
tag = 'roundrect';
}
else{
tag = 'rect';
}
sb.a('');
if(s.fill){
sb.a('');
}
sb.a('');
sb.a('');
break;
case tk_g_triangle:
opacity = 1 - (parseFloat(s.opacity));
sb.a('');
if(s.fill){
sb.a('');
}
sb.a('');
sb.a('');
break;
}
}
sb.a('');
this.__canvas.innerHTML = sb.toString();
}// End Of IE flush()
else{
var elm = $('canvas' + this.__canvas_id);
var ctx = elm.getContext('2d');
var c;
for(var i=0;i