summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheo Chatzimichos <tampakrap@gentoo.org>2013-10-12 13:39:14 +0200
committerTheo Chatzimichos <tampakrap@gentoo.org>2013-10-12 13:39:44 +0200
commit27f763976598769d7aac498090057ea8ca1d6b9f (patch)
tree3d6bf2ea7c9ef316a780d1cc00b22d991265733e /plugins/easy-table/js
parentAdd public-post-preview plugin (diff)
downloadblogs-gentoo-27f763976598769d7aac498090057ea8ca1d6b9f.tar.gz
blogs-gentoo-27f763976598769d7aac498090057ea8ca1d6b9f.tar.bz2
blogs-gentoo-27f763976598769d7aac498090057ea8ca1d6b9f.zip
Add easy-table plugin, requested by hwoarang
Diffstat (limited to 'plugins/easy-table/js')
-rw-r--r--plugins/easy-table/js/easy-table-script.js39
-rw-r--r--plugins/easy-table/js/index.html0
-rw-r--r--plugins/easy-table/js/ttooltip/script/index.html0
-rw-r--r--plugins/easy-table/js/ttooltip/script/jquery-ttooltip.js250
-rw-r--r--plugins/easy-table/js/ttooltip/script/jquery-ttooltip.min.js12
-rw-r--r--plugins/easy-table/js/ttooltip/style/index.html0
-rw-r--r--plugins/easy-table/js/ttooltip/style/jquery-ttooltip.css109
7 files changed, 410 insertions, 0 deletions
diff --git a/plugins/easy-table/js/easy-table-script.js b/plugins/easy-table/js/easy-table-script.js
new file mode 100644
index 00000000..8df48a66
--- /dev/null
+++ b/plugins/easy-table/js/easy-table-script.js
@@ -0,0 +1,39 @@
+/*
+ * Metadata - jQuery plugin for parsing metadata from elements
+ *
+ * Copyright (c) 2006 John Resig, Yehuda Katz, J?örn Zaefferer, Paul McLanahan
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * Version: 2.1
+ *
+ */
+(function($,window,undefined){$.extend({metadata:{defaults:{type:"class",name:"metadata",cre:/({.*})/,single:"metadata"},setType:function(a,b){this.defaults.type=a;this.defaults.name=b},get:function(elem,opts){function getData(data){if("string"!==typeof data){return data}if(data.indexOf("{")<0){data=eval("("+data+")")}}function getObject(data){if("string"===typeof data){data=eval("("+data+")")}return data}var settings=$.extend({},this.defaults,opts),object={},data,match,attr;if(!settings.single.length){settings.single="metadata"}data=$.data(elem,settings.single);if(data){return data}data="{}";if(settings.type=="html5"){$(elem.attributes).each(function(){var a=this.nodeName;if(a.match(/^data-/)){a=a.replace(/^data-/,"");object[a]=getObject(this.nodeValue)}})}else{if(settings.type=="class"){match=settings.cre.exec(elem.className);if(match){data=match[1]}}else if(settings.type=="elem"){if(!elem.getElementsByTagName){return}match=elem.getElementsByTagName(settings.name);if(match.length){data=$.trim(match[0].innerHTML)}}else if(undefined!==elem.getAttribute){attr=elem.getAttribute(settings.name);if(attr){data=attr}}object=getObject(data.indexOf("{")<0?"{"+data+"}":data)}if(data!=="{}"){$.data(elem,settings.single,object)}return object}}});$.fn.metadata=function(a){return $.metadata.get(this[0],a)}})(jQuery,this);
+
+/*!
+* TableSorter 2.10.8 - Client-side table sorting with ease!
+* @requires jQuery v1.2.6+
+*
+* Copyright (c) 2007 Christian Bach
+* Examples and docs at: http://tablesorter.com
+* Dual licensed under the MIT and GPL licenses:
+* http://www.opensource.org/licenses/mit-license.php
+* http://www.gnu.org/licenses/gpl.html
+*
+* @type jQuery
+* @name tablesorter
+* @cat Plugins/Tablesorter
+* @author Christian Bach/christian.bach@polyester.se
+* @contributor Rob Garrison/https://github.com/Mottie/tablesorter
+*/
+
+!function(e){"use strict";e.extend({tablesorter:new function(){function n(e){if(typeof console!=="undefined"&&typeof console.log!=="undefined"){console.log(e)}else{alert(e)}}function r(e,t){n(e+" ("+((new Date).getTime()-t.getTime())+"ms)")}function i(t,n,r){if(!n){return""}var i=t.config,s=i.textExtraction,o="";if(s==="simple"){if(i.supportsTextContent){o=n.textContent}else{o=e(n).text()}}else{if(typeof s==="function"){o=s(n,t,r)}else if(typeof s==="object"&&s.hasOwnProperty(r)){o=s[r](n,t,r)}else{o=i.supportsTextContent?n.textContent:e(n).text()}}return e.trim(o)}function s(e,r,s,o){var u,a=t.parsers.length,f=false,l="",c=true;while(l===""&&c){s++;if(r[s]){f=r[s].cells[o];l=i(e,f,o);if(e.config.debug){n("Checking if value was empty on row "+s+", column: "+o+': "'+l+'"')}}else{c=false}}while(--a>=0){u=t.parsers[a];if(u&&u.id!=="text"&&u.is&&u.is(l,e,f)){return u}}return t.getParserById("text")}function o(e){var r=e.config,i=r.$tbodies=r.$table.children("tbody:not(."+r.cssInfoBlock+")"),o,u,a,f,l,c,h,p="";if(i.length===0){return r.debug?n("*Empty table!* Not building a parser cache"):""}o=i[0].rows;if(o[0]){u=[];a=o[0].cells.length;for(f=0;f<a;f++){l=r.$headers.filter(":not([colspan])");l=l.add(r.$headers.filter('[colspan="1"]')).filter('[data-column="'+f+'"]:last');c=r.headers[f];h=t.getParserById(t.getData(l,c,"sorter"));r.empties[f]=t.getData(l,c,"empty")||r.emptyTo||(r.emptyToBottom?"bottom":"top");r.strings[f]=t.getData(l,c,"string")||r.stringTo||"max";if(!h){h=s(e,o,-1,f)}if(r.debug){p+="column:"+f+"; parser:"+h.id+"; string:"+r.strings[f]+"; empty: "+r.empties[f]+"\n"}u.push(h)}}if(r.debug){n(p)}r.parsers=u}function u(s){var o=s.tBodies,u=s.config,a,f,l=u.parsers,c,h,p,d,v,m,g,y,b=[];u.cache={};if(!l){return u.debug?n("*Empty table!* Not building a cache"):""}if(u.debug){y=new Date}if(u.showProcessing){t.isProcessing(s,true)}for(v=0;v<o.length;v++){u.cache[v]={row:[],normalized:[]};if(!e(o[v]).hasClass(u.cssInfoBlock)){a=o[v]&&o[v].rows.length||0;f=o[v].rows[0]&&o[v].rows[0].cells.length||0;for(p=0;p<a;++p){m=e(o[v].rows[p]);g=[];if(m.hasClass(u.cssChildRow)){u.cache[v].row[u.cache[v].row.length-1]=u.cache[v].row[u.cache[v].row.length-1].add(m);continue}u.cache[v].row.push(m);for(d=0;d<f;++d){c=i(s,m[0].cells[d],d);h=l[d].format(c,s,m[0].cells[d],d);g.push(h);if((l[d].type||"").toLowerCase()==="numeric"){b[d]=Math.max(Math.abs(h)||0,b[d]||0)}}g.push(u.cache[v].normalized.length);u.cache[v].normalized.push(g)}u.cache[v].colMax=b}}if(u.showProcessing){t.isProcessing(s)}if(u.debug){r("Building cache for "+a+" rows",y)}}function a(n,i){var s=n.config,o=n.tBodies,u=[],a=s.cache,f,l,c,h,p,d,v,m,g,y,b,w;if(!a[0]){return}if(s.debug){w=new Date}for(g=0;g<o.length;g++){p=e(o[g]);if(p.length&&!p.hasClass(s.cssInfoBlock)){d=t.processTbody(n,p,true);f=a[g].row;l=a[g].normalized;c=l.length;h=c?l[0].length-1:0;for(v=0;v<c;v++){b=l[v][h];u.push(f[b]);if(!s.appender||!s.removeRows){y=f[b].length;for(m=0;m<y;m++){d.append(f[b][m])}}}t.processTbody(n,d,false)}}if(s.appender){s.appender(n,u)}if(s.debug){r("Rebuilt table",w)}if(!i){t.applyWidget(n)}e(n).trigger("sortEnd",n)}function f(t){var n=[],r={},i=0,s=e(t).find("thead:eq(0), tfoot").children("tr"),o,u,a,f,l,c,h,p,d,v,m,g;for(o=0;o<s.length;o++){c=s[o].cells;for(u=0;u<c.length;u++){l=c[u];h=l.parentNode.rowIndex;p=h+"-"+l.cellIndex;d=l.rowSpan||1;v=l.colSpan||1;if(typeof n[h]==="undefined"){n[h]=[]}for(a=0;a<n[h].length+1;a++){if(typeof n[h][a]==="undefined"){m=a;break}}r[p]=m;i=Math.max(m,i);e(l).attr({"data-column":m});for(a=h;a<h+d;a++){if(typeof n[a]==="undefined"){n[a]=[]}g=n[a];for(f=m;f<m+v;f++){g[f]="x"}}}}t.config.columns=i;return r}function l(e){return/^d/i.test(e)||e===1}function c(i){var s=f(i),o,u,a,c,h,d,v,m=i.config;m.headerList=[];m.headerContent=[];if(m.debug){v=new Date}c=m.cssIcon?'<i class="'+m.cssIcon+'"></i>':"";m.$headers=e(i).find(m.selectorHeaders).each(function(n){u=e(this);o=m.headers[n];m.headerContent[n]=this.innerHTML;h=m.headerTemplate.replace(/\{content\}/g,this.innerHTML).replace(/\{icon\}/g,c);if(m.onRenderTemplate){a=m.onRenderTemplate.apply(u,[n,h]);if(a&&typeof a==="string"){h=a}}this.innerHTML='<div class="tablesorter-header-inner">'+h+"</div>";if(m.onRenderHeader){m.onRenderHeader.apply(u,[n])}this.column=s[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=l(t.getData(u,o,"sortInitialOrder")||m.sortInitialOrder)?[1,0,2]:[0,1,2];this.count=-1;this.lockedOrder=false;d=t.getData(u,o,"lockedOrder")||false;if(typeof d!=="undefined"&&d!==false){this.order=this.lockedOrder=l(d)?[1,1,1]:[0,0,0]}u.addClass(m.cssHeader);m.headerList[n]=this;u.parent().addClass(m.cssHeaderRow);u.attr("tabindex",0)});p(i);if(m.debug){r("Built headers:",v);n(m.$headers)}}function h(e,t,n){var r=e.config;r.$table.find(r.selectorRemove).remove();o(e);u(e);E(r.$table,t,n)}function p(n){var r,i=n.config;i.$headers.each(function(n,s){r=t.getData(s,i.headers[n],"sorter")==="false";s.sortDisabled=r;e(s)[r?"addClass":"removeClass"]("sorter-false")})}function d(t){var n,r,i,s,o=t.config,u=o.sortList,a=[o.cssAsc,o.cssDesc],f=e(t).find("tfoot tr").children().removeClass(a.join(" "));o.$headers.removeClass(a.join(" "));s=u.length;for(r=0;r<s;r++){if(u[r][1]!==2){n=o.$headers.not(".sorter-false").filter('[data-column="'+u[r][0]+'"]'+(s===1?":last":""));if(n.length){for(i=0;i<n.length;i++){if(!n[i].sortDisabled){n.eq(i).addClass(a[u[r][1]]);if(f.length){f.filter('[data-column="'+u[r][0]+'"]').eq(i).addClass(a[u[r][1]])}}}}}}}function v(t){if(t.config.widthFixed&&e(t).find("colgroup").length===0){var n=e("<colgroup>"),r=e(t).width();e(t.tBodies[0]).find("tr:first").children("td").each(function(){n.append(e("<col>").css("width",parseInt(e(this).width()/r*1e3,10)/10+"%"))});e(t).prepend(n)}}function m(t,n){var r,i,s,o=t.config,u=n||o.sortList;o.sortList=[];e.each(u,function(t,n){r=[parseInt(n[0],10),parseInt(n[1],10)];s=o.headerList[r[0]];if(s){o.sortList.push(r);i=e.inArray(r[1],s.order);s.count=i>=0?i:r[1]%(o.sortReset?3:2)}})}function g(e,t){return e&&e[t]?e[t].type||"":""}function y(n,r,i){var s,o,u,f,l,c=n.config,h=!i[c.sortMultiSortKey],p=e(n);p.trigger("sortStart",n);r.count=i[c.sortResetKey]?2:(r.count+1)%(c.sortReset?3:2);if(c.sortRestart){o=r;c.$headers.each(function(){if(this!==o&&(h||!e(this).is("."+c.cssDesc+",."+c.cssAsc))){this.count=-1}})}o=r.column;if(h){c.sortList=[];if(c.sortForce!==null){s=c.sortForce;for(u=0;u<s.length;u++){if(s[u][0]!==o){c.sortList.push(s[u])}}}f=r.order[r.count];if(f<2){c.sortList.push([o,f]);if(r.colSpan>1){for(u=1;u<r.colSpan;u++){c.sortList.push([o+u,f])}}}}else{if(c.sortAppend&&c.sortList.length>1){if(t.isValueInArray(c.sortAppend[0][0],c.sortList)){c.sortList.pop()}}if(t.isValueInArray(o,c.sortList)){for(u=0;u<c.sortList.length;u++){l=c.sortList[u];f=c.headerList[l[0]];if(l[0]===o){l[1]=f.order[f.count];if(l[1]===2){c.sortList.splice(u,1);f.count=-1}}}}else{f=r.order[r.count];if(f<2){c.sortList.push([o,f]);if(r.colSpan>1){for(u=1;u<r.colSpan;u++){c.sortList.push([o+u,f])}}}}}if(c.sortAppend!==null){s=c.sortAppend;for(u=0;u<s.length;u++){if(s[u][0]!==o){c.sortList.push(s[u])}}}p.trigger("sortBegin",n);setTimeout(function(){d(n);b(n);a(n)},1)}function b(t){var n=0,i=t.config,s=i.sortList,o=s.length,u=t.tBodies.length,a,f,l,c,h,p,d,v,m,y;if(i.serverSideSorting||!i.cache[0]){return}if(i.debug){a=new Date}for(l=0;l<u;l++){h=i.cache[l].colMax;p=i.cache[l].normalized;d=p.length;y=p&&p[0]?p[0].length-1:0;p.sort(function(r,u){for(f=0;f<o;f++){c=s[f][0];m=s[f][1];v=/n/i.test(g(i.parsers,c))?"Numeric":"Text";v+=m===0?"":"Desc";if(/Numeric/.test(v)&&i.strings[c]){if(typeof i.string[i.strings[c]]==="boolean"){n=(m===0?1:-1)*(i.string[i.strings[c]]?-1:1)}else{n=i.strings[c]?i.string[i.strings[c]]||0:0}}var a=e.tablesorter["sort"+v](t,r[c],u[c],c,h[c],n);if(a){return a}}return r[y]-u[y]})}if(i.debug){r("Sorting on "+s.toString()+" and dir "+m+" time",a)}}function w(e,t){e.trigger("updateComplete");if(typeof t==="function"){t(e[0])}}function E(e,t,n){if(t!==false&&!e[0].isProcessing){e.trigger("sorton",[e[0].config.sortList,function(){w(e,n)}])}else{w(e,n)}}function S(n){var r=n.config,s=r.$table,f,l;r.$headers.find(r.selectorSort).add(r.$headers.filter(r.selectorSort)).unbind("mousedown.tablesorter mouseup.tablesorter sort.tablesorter keypress.tablesorter").bind("mousedown.tablesorter mouseup.tablesorter sort.tablesorter keypress.tablesorter",function(t,i){if((t.which||t.button)!==1&&!/sort|keypress/.test(t.type)||t.type==="keypress"&&t.which!==13){return false}if(t.type==="mouseup"&&i!==true&&(new Date).getTime()-l>250){return false}if(t.type==="mousedown"){l=(new Date).getTime();return t.target.tagName==="INPUT"?"":!r.cancelSelection}if(r.delayInit&&!r.cache){u(n)}var s=/TH|TD/.test(this.tagName)?e(this):e(this).parents("th, td").filter(":first"),o=s[0];if(!o.sortDisabled){y(n,o,t)}});if(r.cancelSelection){r.$headers.attr("unselectable","on").bind("selectstart",false).css({"user-select":"none",MozUserSelect:"none"})}s.unbind("sortReset update updateRows updateCell updateAll addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(".tablesorter ")).bind("sortReset.tablesorter",function(e){e.stopPropagation();r.sortList=[];d(n);b(n);a(n)}).bind("updateAll.tablesorter",function(e,r,i){e.stopPropagation();t.refreshWidgets(n,true,true);t.restoreHeaders(n);c(n);S(n);h(n,r,i)}).bind("update.tablesorter updateRows.tablesorter",function(e,t,r){e.stopPropagation();p(n);h(n,t,r)}).bind("updateCell.tablesorter",function(t,o,u,a){t.stopPropagation();s.find(r.selectorRemove).remove();var f,l,c,h=s.find("tbody"),p=h.index(e(o).parents("tbody").filter(":first")),d=e(o).parents("tr").filter(":first");o=e(o)[0];if(h.length&&p>=0){l=h.eq(p).find("tr").index(d);c=o.cellIndex;f=r.cache[p].normalized[l].length-1;r.cache[p].row[n.config.cache[p].normalized[l][f]]=d;r.cache[p].normalized[l][c]=r.parsers[c].format(i(n,o,c),n,o,c);E(s,u,a)}}).bind("addRows.tablesorter",function(e,t,u,a){e.stopPropagation();var l,c=t.filter("tr").length,h=[],p=t[0].cells.length,d=s.find("tbody").index(t.parents("tbody").filter(":first"));if(!r.parsers){o(n)}for(l=0;l<c;l++){for(f=0;f<p;f++){h[f]=r.parsers[f].format(i(n,t[l].cells[f],f),n,t[l].cells[f],f)}h.push(r.cache[d].row.length);r.cache[d].row.push([t[l]]);r.cache[d].normalized.push(h);h=[]}E(s,u,a)}).bind("sorton.tablesorter",function(e,t,r,i){e.stopPropagation();s.trigger("sortStart",this);m(n,t);d(n);s.trigger("sortBegin",this);b(n);a(n,i);if(typeof r==="function"){r(n)}}).bind("appendCache.tablesorter",function(e,t,r){e.stopPropagation();a(n,r);if(typeof t==="function"){t(n)}}).bind("applyWidgetId.tablesorter",function(e,i){e.stopPropagation();t.getWidgetById(i).format(n,r,r.widgetOptions)}).bind("applyWidgets.tablesorter",function(e,r){e.stopPropagation();t.applyWidget(n,r)}).bind("refreshWidgets.tablesorter",function(e,r,i){e.stopPropagation();t.refreshWidgets(n,r,i)}).bind("destroy.tablesorter",function(e,r,i){e.stopPropagation();t.destroy(n,r,i)})}var t=this;t.version="2.10.8";t.parsers=[];t.widgets=[];t.defaults={theme:"default",widthFixed:false,showProcessing:false,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:true,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:true,delayInit:false,serverSideSorting:false,headers:{},ignoreCase:true,sortForce:null,sortList:[],sortAppend:null,sortInitialOrder:"asc",sortLocaleCompare:false,sortReset:false,sortRestart:false,emptyTo:"bottom",stringTo:"max",textExtraction:"simple",textSorter:null,widgets:[],widgetOptions:{zebra:["even","odd"]},initWidgets:true,initialized:null,tableClass:"tablesorter",cssAsc:"tablesorter-headerAsc",cssChildRow:"tablesorter-childRow",cssDesc:"tablesorter-headerDesc",cssHeader:"tablesorter-header",cssHeaderRow:"tablesorter-headerRow",cssIcon:"tablesorter-icon",cssInfoBlock:"tablesorter-infoOnly",cssProcessing:"tablesorter-processing",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:false,headerList:[],empties:{},strings:{},parsers:[]};t.log=n;t.benchmark=r;t.construct=function(r){return this.each(function(){if(!this.tHead||this.tBodies.length===0||this.hasInitialized===true){return this.config&&this.config.debug?n("stopping initialization! No thead, tbody or tablesorter has already been initialized"):""}var i=e(this),s=this,a,f="",l=e.metadata;s.hasInitialized=false;s.isProcessing=true;s.config={};a=e.extend(true,s.config,t.defaults,r);e.data(s,"tablesorter",a);if(a.debug){e.data(s,"startoveralltimer",new Date)}a.supportsTextContent=e("<span>x</span>")[0].textContent==="x";a.supportsDataObject=parseFloat(e.fn.jquery)>=1.4;a.string={max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:true,bottom:false};if(!/tablesorter\-/.test(i.attr("class"))){f=a.theme!==""?" tablesorter-"+a.theme:""}a.$table=i.addClass(a.tableClass+f);a.$tbodies=i.children("tbody:not(."+a.cssInfoBlock+")");c(s);v(s);o(s);if(!a.delayInit){u(s)}S(s);if(a.supportsDataObject&&typeof i.data().sortlist!=="undefined"){a.sortList=i.data().sortlist}else if(l&&i.metadata()&&i.metadata().sortlist){a.sortList=i.metadata().sortlist}t.applyWidget(s,true);if(a.sortList.length>0){i.trigger("sorton",[a.sortList,{},!a.initWidgets])}else if(a.initWidgets){t.applyWidget(s)}if(a.showProcessing){i.unbind("sortBegin.tablesorter sortEnd.tablesorter").bind("sortBegin.tablesorter sortEnd.tablesorter",function(e){t.isProcessing(s,e.type==="sortBegin")})}s.hasInitialized=true;s.isProcessing=false;if(a.debug){t.benchmark("Overall initialization time",e.data(s,"startoveralltimer"))}i.trigger("tablesorter-initialized",s);if(typeof a.initialized==="function"){a.initialized(s)}})};t.isProcessing=function(n,r,i){n=e(n);var s=n[0].config,o=i||n.find("."+s.cssHeader);if(r){if(s.sortList.length>0){o=o.filter(function(){return this.sortDisabled?false:t.isValueInArray(parseFloat(e(this).attr("data-column")),s.sortList)})}o.addClass(s.cssProcessing)}else{o.removeClass(s.cssProcessing)}};t.processTbody=function(t,n,r){var i;if(r){t.isProcessing=true;n.before('<span class="tablesorter-savemyplace"/>');i=e.fn.detach?n.detach():n.remove();return i}i=e(t).find("span.tablesorter-savemyplace");n.insertAfter(i);i.remove();t.isProcessing=false};t.clearTableBody=function(t){e(t)[0].config.$tbodies.empty()};t.restoreHeaders=function(t){var n=t.config;n.$table.find(n.selectorHeaders).each(function(t){if(e(this).find(".tablesorter-header-inner").length){e(this).html(n.headerContent[t])}})};t.destroy=function(n,r,i){n=e(n)[0];if(!n.hasInitialized){return}t.refreshWidgets(n,true,true);var s=e(n),o=n.config,u=s.find("thead:first"),a=u.find("tr."+o.cssHeaderRow).removeClass(o.cssHeaderRow),f=s.find("tfoot:first > tr").children("th, td");u.find("tr").not(a).remove();s.removeData("tablesorter").unbind("sortReset update updateAll updateRows updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave keypress sortBegin sortEnd ".split(" ").join(".tablesorter "));o.$headers.add(f).removeClass(o.cssHeader+" "+o.cssAsc+" "+o.cssDesc).removeAttr("data-column");a.find(o.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter keypress.tablesorter");t.restoreHeaders(n);if(r!==false){s.removeClass(o.tableClass+" tablesorter-"+o.theme)}n.hasInitialized=false;if(typeof i==="function"){i(n)}};t.regex=[/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,/^0x[0-9a-f]+$/i];t.sortText=function(e,n,r,i){if(n===r){return 0}var s=e.config,o=s.string[s.empties[i]||s.emptyTo],u=t.regex,a,f,l,c,h,p,d,v;if(n===""&&o!==0){return typeof o==="boolean"?o?-1:1:-o||-1}if(r===""&&o!==0){return typeof o==="boolean"?o?1:-1:o||1}if(typeof s.textSorter==="function"){return s.textSorter(n,r,e,i)}a=n.replace(u[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");l=r.replace(u[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");f=parseInt(n.match(u[2]),16)||a.length!==1&&n.match(u[1])&&Date.parse(n);c=parseInt(r.match(u[2]),16)||f&&r.match(u[1])&&Date.parse(r)||null;if(c){if(f<c){return-1}if(f>c){return 1}}v=Math.max(a.length,l.length);for(d=0;d<v;d++){h=isNaN(a[d])?a[d]||0:parseFloat(a[d])||0;p=isNaN(l[d])?l[d]||0:parseFloat(l[d])||0;if(isNaN(h)!==isNaN(p)){return isNaN(h)?1:-1}if(typeof h!==typeof p){h+="";p+=""}if(h<p){return-1}if(h>p){return 1}}return 0};t.sortTextDesc=function(e,n,r,i){if(n===r){return 0}var s=e.config,o=s.string[s.empties[i]||s.emptyTo];if(n===""&&o!==0){return typeof o==="boolean"?o?-1:1:o||1}if(r===""&&o!==0){return typeof o==="boolean"?o?1:-1:-o||-1}if(typeof s.textSorter==="function"){return s.textSorter(r,n,e,i)}return t.sortText(e,r,n)};t.getTextValue=function(e,t,n){if(t){var r,i=e?e.length:0,s=t+n;for(r=0;r<i;r++){s+=e.charCodeAt(r)}return n*s}return 0};t.sortNumeric=function(e,n,r,i,s,o){if(n===r){return 0}var u=e.config,a=u.string[u.empties[i]||u.emptyTo];if(n===""&&a!==0){return typeof a==="boolean"?a?-1:1:-a||-1}if(r===""&&a!==0){return typeof a==="boolean"?a?1:-1:a||1}if(isNaN(n)){n=t.getTextValue(n,s,o)}if(isNaN(r)){r=t.getTextValue(r,s,o)}return n-r};t.sortNumericDesc=function(e,n,r,i,s,o){if(n===r){return 0}var u=e.config,a=u.string[u.empties[i]||u.emptyTo];if(n===""&&a!==0){return typeof a==="boolean"?a?-1:1:a||1}if(r===""&&a!==0){return typeof a==="boolean"?a?1:-1:-a||-1}if(isNaN(n)){n=t.getTextValue(n,s,o)}if(isNaN(r)){r=t.getTextValue(r,s,o)}return r-n};t.characterEquivalents={a:"áàâãäąå",A:"ÁÀÂÃÄĄÅ",c:"çćč",C:"ÇĆČ",e:"éèêëěę",E:"ÉÈÊËĚĘ",i:"íìİîïı",I:"ÍÌİÎÏ",o:"óòôõö",O:"ÓÒÔÕÖ",ss:"ß",SS:"ẞ",u:"úùûüů",U:"ÚÙÛÜŮ"};t.replaceAccents=function(e){var n,r="[",i=t.characterEquivalents;if(!t.characterRegex){t.characterRegexArray={};for(n in i){if(typeof n==="string"){r+=i[n];t.characterRegexArray[n]=new RegExp("["+i[n]+"]","g")}}t.characterRegex=new RegExp(r+"]")}if(t.characterRegex.test(e)){for(n in i){if(typeof n==="string"){e=e.replace(t.characterRegexArray[n],n)}}}return e};t.isValueInArray=function(e,t){var n,r=t.length;for(n=0;n<r;n++){if(t[n][0]===e){return true}}return false};t.addParser=function(e){var n,r=t.parsers.length,i=true;for(n=0;n<r;n++){if(t.parsers[n].id.toLowerCase()===e.id.toLowerCase()){i=false}}if(i){t.parsers.push(e)}};t.getParserById=function(e){var n,r=t.parsers.length;for(n=0;n<r;n++){if(t.parsers[n].id.toLowerCase()===e.toString().toLowerCase()){return t.parsers[n]}}return false};t.addWidget=function(e){t.widgets.push(e)};t.getWidgetById=function(e){var n,r,i=t.widgets.length;for(n=0;n<i;n++){r=t.widgets[n];if(r&&r.hasOwnProperty("id")&&r.id.toLowerCase()===e.toLowerCase()){return r}}};t.applyWidget=function(n,i){n=e(n)[0];var s=n.config,o=s.widgetOptions,u=[],a,f,l,c;if(s.debug){a=new Date}if(s.widgets.length){s.widgets=e.grep(s.widgets,function(t,n){return e.inArray(t,s.widgets)===n});e.each(s.widgets||[],function(e,n){c=t.getWidgetById(n);if(c&&c.id){if(!c.priority){c.priority=10}u[e]=c}});u.sort(function(e,t){return e.priority<t.priority?-1:e.priority===t.priority?0:1});e.each(u,function(t,r){if(r){if(i){if(r.hasOwnProperty("options")){o=n.config.widgetOptions=e.extend(true,{},r.options,o)}if(r.hasOwnProperty("init")){r.init(n,r,s,o)}}else if(!i&&r.hasOwnProperty("format")){r.format(n,s,o,false)}}})}if(s.debug){l=s.widgets.length;r("Completed "+(i===true?"initializing ":"applying ")+l+" widget"+(l!==1?"s":""),a)}};t.refreshWidgets=function(r,i,s){r=e(r)[0];var o,u=r.config,a=u.widgets,f=t.widgets,l=f.length;for(o=0;o<l;o++){if(f[o]&&f[o].id&&(i||e.inArray(f[o].id,a)<0)){if(u.debug){n("Refeshing widgets: Removing "+f[o].id)}if(f[o].hasOwnProperty("remove")){f[o].remove(r,u,u.widgetOptions)}}}if(s!==true){t.applyWidget(r,i)}};t.getData=function(t,n,r){var i="",s=e(t),o,u;if(!s.length){return""}o=e.metadata?s.metadata():false;u=" "+(s.attr("class")||"");if(typeof s.data(r)!=="undefined"||typeof s.data(r.toLowerCase())!=="undefined"){i+=s.data(r)||s.data(r.toLowerCase())}else if(o&&typeof o[r]!=="undefined"){i+=o[r]}else if(n&&typeof n[r]!=="undefined"){i+=n[r]}else if(u!==" "&&u.match(" "+r+"-")){i=u.match(new RegExp("\\s"+r+"-([\\w-]+)"))[1]||""}return e.trim(i)};t.formatFloat=function(t,n){if(typeof t!=="string"||t===""){return t}var r,i=n&&n.config?n.config.usNumberFormat!==false:typeof n!=="undefined"?n:true;if(i){t=t.replace(/,/g,"")}else{t=t.replace(/[\s|\.]/g,"").replace(/,/g,".")}if(/^\s*\([.\d]+\)/.test(t)){t=t.replace(/^\s*\(/,"-").replace(/\)/,"")}r=parseFloat(t);return isNaN(r)?e.trim(t):r};t.isDigit=function(e){return isNaN(e)?/^[\-+(]?\d+[)]?$/.test(e.toString().replace(/[,.'"\s]/g,"")):true}}});var t=e.tablesorter;e.fn.extend({tablesorter:t.construct});t.addParser({id:"text",is:function(){return true},format:function(n,r){var i=r.config;if(n){n=e.trim(i.ignoreCase?n.toLocaleLowerCase():n);n=i.sortLocaleCompare?t.replaceAccents(n):n}return n},type:"text"});t.addParser({id:"digit",is:function(e){return t.isDigit(e)},format:function(n,r){var i=t.formatFloat((n||"").replace(/[^\w,. \-()]/g,""),r);return n&&typeof i==="number"?i:n?e.trim(n&&r.config.ignoreCase?n.toLocaleLowerCase():n):n},type:"numeric"});t.addParser({id:"currency",is:function(e){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test((e||"").replace(/[,. ]/g,""))},format:function(n,r){var i=t.formatFloat((n||"").replace(/[^\w,. \-()]/g,""),r);return n&&typeof i==="number"?i:n?e.trim(n&&r.config.ignoreCase?n.toLocaleLowerCase():n):n},type:"numeric"});t.addParser({id:"ipAddress",is:function(e){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(e)},format:function(e,n){var r,i=e?e.split("."):"",s="",o=i.length;for(r=0;r<o;r++){s+=("00"+i[r]).slice(-3)}return e?t.formatFloat(s,n):e},type:"numeric"});t.addParser({id:"url",is:function(e){return/^(https?|ftp|file):\/\//.test(e)},format:function(t){return t?e.trim(t.replace(/(https?|ftp|file):\/\//,"")):t},type:"text"});t.addParser({id:"isoDate",is:function(e){return/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/.test(e)},format:function(e,n){return e?t.formatFloat(e!==""?(new Date(e.replace(/-/g,"/"))).getTime()||"":"",n):e},type:"numeric"});t.addParser({id:"percent",is:function(e){return/(\d\s*?%|%\s*?\d)/.test(e)&&e.length<15},format:function(e,n){return e?t.formatFloat(e.replace(/%/g,""),n):e},type:"numeric"});t.addParser({id:"usLongDate",is:function(e){return/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i.test(e)||/^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i.test(e)},format:function(e,n){return e?t.formatFloat((new Date(e.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",n):e},type:"numeric"});t.addParser({id:"shortDate",is:function(e){return/(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/.test((e||"").replace(/\s+/g," ").replace(/[\-.,]/g,"/"))},format:function(e,n,r,i){if(e){var s=n.config,o=s.headerList[i],u=o.dateFormat||t.getData(o,s.headers[i],"dateFormat")||s.dateFormat;e=e.replace(/\s+/g," ").replace(/[\-.,]/g,"/");if(u==="mmddyyyy"){e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$1/$2")}else if(u==="ddmmyyyy"){e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$2/$1")}else if(u==="yyyymmdd"){e=e.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,"$1/$2/$3")}}return e?t.formatFloat((new Date(e)).getTime()||"",n):e},type:"numeric"});t.addParser({id:"time",is:function(e){return/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i.test(e)},format:function(e,n){return e?t.formatFloat((new Date("2000/01/01 "+e.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",n):e},type:"numeric"});t.addParser({id:"metadata",is:function(){return false},format:function(t,n,r){var i=n.config,s=!i.parserMetadataName?"sortValue":i.parserMetadataName;return e(r).metadata()[s]},type:"numeric"});t.addWidget({id:"zebra",priority:90,format:function(n,r,i){var s,o,u,a,f,l,c,h,p=new RegExp(r.cssChildRow,"i"),d=r.$tbodies;if(r.debug){l=new Date}for(c=0;c<d.length;c++){s=d.eq(c);h=s.children("tr").length;if(h>1){a=0;o=s.children("tr:visible");o.each(function(){u=e(this);if(!p.test(this.className)){a++}f=a%2===0;u.removeClass(i.zebra[f?1:0]).addClass(i.zebra[f?0:1])})}}if(r.debug){t.benchmark("Applying Zebra widget",l)}},remove:function(t,n,r){var i,s,o=n.$tbodies,u=(r.zebra||["even","odd"]).join(" ");for(i=0;i<o.length;i++){s=e.tablesorter.processTbody(t,o.eq(i),true);s.children().removeClass(u);e.tablesorter.processTbody(t,s,false)}}})}(jQuery)
+
+/*easy table*/
+jQuery(document).ready(function($) {
+ $("table.tablesorter").tablesorter({
+ cssHeader:'easy-table-header'
+ })
+}); \ No newline at end of file
diff --git a/plugins/easy-table/js/index.html b/plugins/easy-table/js/index.html
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/plugins/easy-table/js/index.html
diff --git a/plugins/easy-table/js/ttooltip/script/index.html b/plugins/easy-table/js/ttooltip/script/index.html
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/plugins/easy-table/js/ttooltip/script/index.html
diff --git a/plugins/easy-table/js/ttooltip/script/jquery-ttooltip.js b/plugins/easy-table/js/ttooltip/script/jquery-ttooltip.js
new file mode 100644
index 00000000..6b9ccf1e
--- /dev/null
+++ b/plugins/easy-table/js/ttooltip/script/jquery-ttooltip.js
@@ -0,0 +1,250 @@
+/*!
+ * tTooltip v0.1
+ *
+ * Copyright 2012 Takien, No Inc
+ * http://takien.com
+ *
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * follow @cektkp and @perdanaweb
+ */
+(function($) {
+ function arrow_pos(el){
+ var pos = el.position();
+ var top = pos.top-$(window).scrollTop();
+ var left = pos.left-$(window).scrollLeft();
+ var right = $(window).width()-(left+el.width());
+ var bottom = $(window).height()-(top+el.height());
+ var ret = 'topleft';
+ if(top > bottom){
+ ret = 'bottom';
+ } else {
+ ret = 'top';
+ }
+
+ if(left > right){
+ ret += 'right';
+ }
+ else{
+ ret += 'left';
+ }
+
+ return ret;
+ }
+
+ $.fn.ttooltip = function(customOptions) {
+ var o = $.extend({}, $.fn.ttooltip.defaultOptions, customOptions);
+ var tp = $(o.template);
+ var c = tp.find('.ttooltip-content');
+ var t = tp.find('.ttooltip-title');
+ var f = tp.find('.ttooltip-footer');
+ var timeout = 0;
+ var times = 0;
+ var tooltip;
+ var source;
+
+ tp.css({
+ 'position':'absolute',
+ 'max-width':o.maxwidth
+ });
+
+ return this.each(function(index) {
+ var tt = $(this);
+ tt.bind(o.trigger,function(e){
+
+
+ clearInterval(timeout);
+
+ /* append template to body*/
+ tp.appendTo(document.body);
+
+ /* update tp object to the newest dom */
+ tp = $('.ttooltip-wrap');
+
+ c = tp.find('.ttooltip-content');
+ t = tp.find('.ttooltip-title');
+ f = tp.find('.ttooltip-footer');
+
+ /* collect data from data attribute */
+ source = tt.data();
+ if(source.href==undefined){
+ source.href=tt.attr('href');
+ }
+
+ /* if no content, nothing to do here */
+ if(source.content == undefined){
+ return false;
+ }
+ /* set the content */
+ /* if content is ajax, get data from data-href if any or from href attribute */
+
+ if(source.content == 'ajax'){
+ $.get(source.href,function(data){
+ tp.find('.ttooltip-inner').html(data);
+ o.onload(tp,tt);
+ });
+ }
+ else {
+ t.show().html(source.title);
+ c.show().html(source.content);
+ f.show().html(source.footer);
+
+ o.onload(tp,tt);
+
+ /* hide footer if empty */
+ if(source.footer==undefined){
+ f.empty().hide();
+ }
+ /* hide title if empty */
+ if(source.title==undefined){
+ t.empty().hide();
+ }
+ }
+
+
+
+ /* add clearfix to the footer */
+ c.addClass('clearfix');
+ f.addClass('clearfix');
+
+ /* remove any position class, then update with new position class */
+ tp
+ .removeClass()
+ .addClass('ttooltip-wrap ttooltip-'+arrow_pos(tt))
+ .fadeIn();
+
+
+
+ var arrow = tp.find('.ttooltip-arrow');
+ var mouseleft = (e.pageX-((arrow.outerWidth()*0.5)+arrow.position().left));
+ var distance = 25;
+ var mousetop;
+ /* do not overlap mouse cursor with arrow */
+ mouseleft = mouseleft - distance;
+
+ arrow.removeClass('tooltip-arrow-gray');
+
+ /* update top position */
+ /* mousetop = tt.position().top+tt.outerHeight()+arrow.outerHeight();
+ if((arrow_pos(tt) == 'bottomright') || (arrow_pos(tt) == 'bottomleft')){
+ mousetop = tt.position().top-tp.outerHeight()-arrow.outerHeight();
+ mouseleft = mouseleft - distance;
+ distance = 0;
+
+ if(tp.find('.ttooltip-footer').html() !=''){
+ arrow.addClass('tooltip-arrow-gray');
+ }
+ } */
+ mousetop = tt.offset().top+tt.outerHeight()+arrow.outerHeight();
+ if((arrow_pos(tt) == 'bottomright') || (arrow_pos(tt) == 'bottomleft')){
+ mousetop = tt.offset().top-tp.outerHeight()-arrow.outerHeight();
+ mouseleft = mouseleft - distance;
+ distance = 0;
+
+ if(tp.find('.ttooltip-footer').html() !=''){
+ arrow.addClass('tooltip-arrow-gray');
+ }
+ }
+
+ tp
+ .css({
+ 'top' : mousetop,
+ 'left' : mouseleft,
+ 'width': source.width?source.width:'auto',
+ 'opacity':1
+ })
+ .fadeIn();
+
+
+
+
+ /* follow mouse movement, horizontal only */
+ if(o.followmouse) {
+ $(this).mousemove(function(x){
+ tp.css({
+ 'top':mousetop,
+ 'left':x.pageX-arrow.position().left-distance
+ })
+ });
+ }
+
+ /* close on mouseleave*/
+
+ if(o.autohide){
+ /* define times, to prevent event triggered twice*/
+ closewhat($(this));
+ closewhat(tp);
+ }
+
+
+ function closewhat(what){
+ what.bind(o.close,function(){
+ times++;
+ if(times==1){
+ timeout = setTimeout(function(){
+ close(tp);
+ },o.timeout);
+
+ tp.bind('mouseenter',function(){
+ times=0;
+ clearTimeout(timeout);
+ });
+ /*updated 30/09/2012*/
+ tt.bind('mouseenter',function(){
+ times=0;
+ clearTimeout(timeout);
+ });
+ }
+ });
+ }
+
+ /* close on esc */
+ if(o.closeonesc){
+ document.onkeydown = function(evt) {
+ evt = evt || window.event;
+ if (evt.keyCode == 27) {
+ close(tp);
+ }
+ };
+ }
+ /*updated 30/09/2012*/
+ tp.find('.close').click(function(e){
+ close(tp);
+ e.preventDefault();
+ });
+
+ function close(what){
+ what.fadeOut(o.fadeoutspeed,function(){
+ what.remove();
+ /*call onclose callback*/
+ o.onclose(what,tt);
+ });
+ clearTimeout(timeout);
+ times=0;
+ }
+
+ e.preventDefault();
+
+ });
+
+ }); /* end loop*/
+
+ };
+
+ $.fn.ttooltip.defaultOptions = {
+ autohide : true,
+ followmouse : true,
+ closeonesc : true,
+ content : '',
+ title : '',
+ trigger : 'mouseenter',
+ close : 'mouseleave',
+ maxwidth : 300,
+ timeout : 500,
+ fadeoutspeed: 'fast',
+ onload : function(){},
+ onclose : function(){},/*updated 30/09/2012*/
+ template : '<div class="ttooltip-wrap"><div class="ttooltip-arrow ttooltip-arrow-border"></div><div class="ttooltip-arrow"></div><div class="ttooltip-inner"><button type="button" class="close">&times;</button><h3 class="ttooltip-title"></h3><div class="ttooltip-content"><p></p></div><div class="ttooltip-footer"></div></div></div>'
+ };/*updated 30/09/2012*/
+})(jQuery); \ No newline at end of file
diff --git a/plugins/easy-table/js/ttooltip/script/jquery-ttooltip.min.js b/plugins/easy-table/js/ttooltip/script/jquery-ttooltip.min.js
new file mode 100644
index 00000000..f87cfd45
--- /dev/null
+++ b/plugins/easy-table/js/ttooltip/script/jquery-ttooltip.min.js
@@ -0,0 +1,12 @@
+/*!
+ * tTooltip v0.1
+ *
+ * Copyright 2012 Takien, No Inc
+ * http://takien.com
+ *
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * follow @cektkp and @perdanaweb
+ */
+(function(e){function t(t){var n=t.position();var r=n.top-e(window).scrollTop();var i=n.left-e(window).scrollLeft();var s=e(window).width()-(i+t.width());var o=e(window).height()-(r+t.height());var u="topleft";if(r>o){u="bottom"}else{u="top"}if(i>s){u+="right"}else{u+="left"}return u}e.fn.ttooltip=function(n){var r=e.extend({},e.fn.ttooltip.defaultOptions,n);var i=e(r.template);var s=i.find(".ttooltip-content");var o=i.find(".ttooltip-title");var u=i.find(".ttooltip-footer");var a=0;var f=0;var l;var c;i.css({position:"absolute","max-width":r.maxwidth});return this.each(function(n){var l=e(this);l.bind(r.trigger,function(n){function m(e){e.bind(r.close,function(){f++;if(f==1){a=setTimeout(function(){g(i)},r.timeout);i.bind("mouseenter",function(){f=0;clearTimeout(a)});l.bind("mouseenter",function(){f=0;clearTimeout(a)})}})}function g(e){e.fadeOut(r.fadeoutspeed,function(){e.remove();r.onclose(e,l)});clearTimeout(a);f=0}clearInterval(a);i.appendTo(document.body);i=e(".ttooltip-wrap");s=i.find(".ttooltip-content");o=i.find(".ttooltip-title");u=i.find(".ttooltip-footer");c=l.data();if(c.href==undefined){c.href=l.attr("href")}if(c.content==undefined){return false}if(c.content=="ajax"){e.get(c.href,function(e){i.find(".ttooltip-inner").html(e);r.onload(i,l)})}else{o.show().html(c.title);s.show().html(c.content);u.show().html(c.footer);r.onload(i,l);if(c.footer==undefined){u.empty().hide()}if(c.title==undefined){o.empty().hide()}}s.addClass("clearfix");u.addClass("clearfix");i.removeClass().addClass("ttooltip-wrap ttooltip-"+t(l)).fadeIn();var h=i.find(".ttooltip-arrow");var p=n.pageX-(h.outerWidth()*.5+h.position().left);var d=25;var v;p=p-d;h.removeClass("tooltip-arrow-gray");v=l.offset().top+l.outerHeight()+h.outerHeight();if(t(l)=="bottomright"||t(l)=="bottomleft"){v=l.offset().top-i.outerHeight()-h.outerHeight();p=p-d;d=0;if(i.find(".ttooltip-footer").html()!=""){h.addClass("tooltip-arrow-gray")}}i.css({top:v,left:p,width:c.width?c.width:"auto",opacity:1}).fadeIn();if(r.followmouse){e(this).mousemove(function(e){i.css({top:v,left:e.pageX-h.position().left-d})})}if(r.autohide){m(e(this));m(i)}if(r.closeonesc){document.onkeydown=function(e){e=e||window.event;if(e.keyCode==27){g(i)}}}i.find(".close").click(function(e){g(i);e.preventDefault()});n.preventDefault()})})};e.fn.ttooltip.defaultOptions={autohide:true,followmouse:true,closeonesc:true,content:"",title:"",trigger:"mouseenter",close:"mouseleave",maxwidth:300,timeout:500,fadeoutspeed:"fast",onload:function(){},onclose:function(){},template:'<div class="ttooltip-wrap"><div class="ttooltip-arrow ttooltip-arrow-border"></div><div class="ttooltip-arrow"></div><div class="ttooltip-inner"><button type="button" class="close"></button><h3 class="ttooltip-title"></h3><div class="ttooltip-content"><p></p></div><div class="ttooltip-footer"></div></div></div>'}})(jQuery); \ No newline at end of file
diff --git a/plugins/easy-table/js/ttooltip/style/index.html b/plugins/easy-table/js/ttooltip/style/index.html
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/plugins/easy-table/js/ttooltip/style/index.html
diff --git a/plugins/easy-table/js/ttooltip/style/jquery-ttooltip.css b/plugins/easy-table/js/ttooltip/style/jquery-ttooltip.css
new file mode 100644
index 00000000..58e52f95
--- /dev/null
+++ b/plugins/easy-table/js/ttooltip/style/jquery-ttooltip.css
@@ -0,0 +1,109 @@
+/*!
+ * tTooltip v0.1
+ *
+ * Copyright 2012 Takien, No Inc
+ * http://takien.com
+ *
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * follow @cektkp and @perdanaweb
+ */
+.clearfix {
+ *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ content: "";
+}
+.clearfix:after {
+ clear: both;
+}
+a.ttooltip{
+ text-decoration:none;
+ border-bottom:1px dotted #0079be;
+ color:#0079be
+}
+.ttooltip-wrap{
+ background:#f5f5f5;
+ border:1px solid #b3b3b3;
+ z-index:2000;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ box-shadow: 0pt 2px 4px rgba(0, 0, 0, 0.2);
+}
+.ttooltip-inner{
+ position:relative;
+}
+.ttooltip-title{
+ font-size:1.1em;
+ font-weight:bold;
+ padding:10px;
+ background:#fff;
+ color:#333333;
+ margin:0;
+}
+.ttooltip-content{
+ padding:5px 10px;
+ background:#fff;
+ box-shadow: 0pt 2px 4px rgba(0, 0, 0, 0.12);
+}
+.ttooltip-content p{
+ margin:0 0 10px;
+}
+.ttooltip-arrow{
+ position:absolute;
+ background:transparent;
+ width:0;
+ height:0;
+ z-index:2001
+}
+.ttooltip-topleft .ttooltip-arrow{
+ left:20px;
+ top: -10px;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-bottom: 10px solid #fff;
+}
+.ttooltip-topright .ttooltip-arrow{
+ right:20px;
+ top: -10px;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-bottom: 10px solid #fff;
+}
+.ttooltip-topright .ttooltip-arrow-border,
+.ttooltip-topleft .ttooltip-arrow-border{
+ top:-11px;
+ border-bottom-color:#b3b3b3
+}
+.ttooltip-bottomleft .ttooltip-arrow{
+ left:20px;
+ bottom: -10px;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-top: 10px solid #fff;
+}
+.ttooltip-bottomright .ttooltip-arrow{
+ right:20px;
+ bottom: -10px;
+ border-left: 10px solid transparent;
+ border-right: 10px solid transparent;
+ border-top: 10px solid #fff;
+}
+.ttooltip-bottomleft .ttooltip-arrow.tooltip-arrow-gray,
+.ttooltip-bottomright .ttooltip-arrow.tooltip-arrow-gray{
+ border-top-color:#f5f5f5
+}
+
+.ttooltip-bottomleft .ttooltip-arrow-border,
+.ttooltip-bottomright .ttooltip-arrow-border{
+ bottom:-11px;
+ border-top-color:#b3b3b3
+}
+
+.ttooltip-footer{
+ padding:10px;
+}