/*
	jsontbl.js ver0.5 <http://distraid.co.jp/webjade/jsontable.html>
		require: dutils.js, MooTools 1.2<http://mootools.net>

	copyright (c) 2009- distraid Inc. <http://distraid.co.jp/>

	$Id: jsontbl.js 41 2010-12-15 06:37:40Z ksy $
*/
var JSONTbl={};
JSONTbl.STRTABLE={DEFDTNAME:"JSONTbl",ERRJSON:"%DTNAME%のデータ形式が正しくありません。",ERRLOAD:"%DTNAME%のデータを取得出来ませんでした。",SRCHNOTFOUND:"検索条件に一致するデータがありません。",LOADING:"%DTNAME%のデータを取得中･･･",DATABUILD:"%DTNAME%のデータを構成中･･･",DATATITLE:"%DTNAME%のデータ",TIPSORT:"%SORT%でソートを実行",TIPSORTREV:"ソート順を<br/>%SORT%に変更",TIPSORTLIMIT:"ソート対象をこれ以上追加出来ません",TIPSORTASC:"%TYPE% : 昇順<br/>",TIPSORTDESC:"%TYPE% : 降順<br/>",TIPSORTTYPE:"%TYPE%<br/>",TIPSORTADD:"%TYPE%<br/>をソート対象に追加",TIPSORTSEL:"%SORT%での集計表示",TIPEXTALL:"データ全体から、<br/>%TYPE%が<br/>%DATA%<br/>のデータを表示",TIPEXCALL:"データ全体から、<br/>%TYPE%が<br/>%DATA%<br/>以外のデータを表示",TIPEXTRACT:"%TYPE%が<br/>%DATA%<br/>のデータを表示",TIPEXCLUDE:"%TYPE%が<br/>%DATA%<br/>のデータを非表示",TIPDISPVAL:"%DISPVAL%<br />[%VALUE%]",TIPRESTORE:"%DTNAME%のデータを再表示",TIPREVEAL:"%DTNAME%の非表示設定のデータも含めて再表示",TIPRELOAD:"%DTNAME%のデータを再ロード",PAGE:{FIRST:{title:"最初のページを表示",mark:"|‹"},LAST:{title:"最後のページを表示",mark:"›|"},BACK:{title:"ページを戻る",mark:"‹‹"},FOR:{title:"ページを進める",mark:"››"},PREV:{title:"前のページ",mark:"‹"},NEXT:{title:"次のページ",mark:"›"},LINK:{title:"%PAGE%ページを表示",mark:"%PAGE%"},PAGE:{mark:'<a title="%TITLE%" class="%CLASS%">%PAGE%</a>'},CURPAGE:{mark:"<b>%PAGE%</b>"},_CLSPREFIX:"page",_PAGETAG:"a"}};
JSONTbl.EvType=new Hash({NONE:0,LOAD:(1<<0),AJAX:(1<<1),FILTER:(1<<2),DISPLAY:(1<<3),LOADED:(1<<4),PAGE:(1<<5),SORT:(1<<6),EXTRACT:(1<<7),EXCLUDE:(1<<8),COUNTTYPE:(1<<9),SEARCH:(1<<10),RESTORE:(1<<11),SETUP:(1<<14),HALT:(1<<15)});
JSONTbl.EvState=new Hash({UNKNOWN:0,PREPARE:(1<<0),START:(1<<1),DONE:(1<<2),CANCEL:(1<<3),FAILED:(1<<4)});(function(){var a=JSONTbl.EvType,b=JSONTbl.EvState;[a,b].each(function(c){var d=0;c.each(function(e){d|=e
});c.ALL=d})})();JSONTbl.TipCtrl=new Class({options:{tipCtrl:{posGap:{x:15,y:5},css:null}},_initTip:function(d,e,c,a){if($type(d)!="element"){return false}this._tipCtrl={};this._tipCtrl.elem=d;this._tipCtrl.posGap=(e&&e.x!=null&&e.y!=null?e:this.options.tipCtrl.posGap);
if($type(c)!="object"){this._tipCtrl.css=null}else{this._tipCtrl.css={};for(var b in c){type=$type(c[b]);if(type=="string"){this._tipCtrl.css[b]={def:c[b]}}else{if(type=="object"){this._tipCtrl.css[b]=c[b];
if(c[b]["def"]==null){this._tipCtrl.css[b]["def"]=""}}else{this._tipCtrl.css[b]=null}}}}this._tipCtrl.duStyle=Du.Style.Setup.createDuStyle(this._tipCtrl.elem,(a?a:Du.Style.Setup.block()));if(!this._tipCtrl.duStyle){false
}this._tipCtrl.duStyle.deactivate(null,true);this._tipCtrl.prevTip="";this._tipCtrl.prevCheck=null;this._tipCtrl.curCSS=null;this._tipCtrl.state=false;return true},checkTipState:function(b){var a=this._tipCtrl.prevCheck;
if(!b||!a){this._tipCtrl.prevCheck=b;return true}b=($type(b)!="object"?{state:b}:b);for(var c in b){if(a[c]===undefined||b[c]!=a[c]){this._tipCtrl.prevCheck=b;return true}}return false},resetTipCheck:function(){this._tipCtrl.prevCheck=null
},_checkTipCSS:function(d){if(!this._tipCtrl.css){return}if(!d||!this._tipCtrl.css[d.targ]){if(this._tipCtrl.curCSS){this._tipCtrl.elem.removeClass(this._tipCtrl.curCSS);this._tipCtrl.curCSS=null}return
}var c=d.targ,e=d.id,b=this._tipCtrl.css,a="";if(!b[c]){return}a=(b[c][e]==null?b[c]["def"]:b[c][e]);if(a!=this._tipCtrl.curCSS){if(this._tipCtrl.curCSS){this._tipCtrl.elem.removeClass(this._tipCtrl.curCSS)
}this._tipCtrl.elem.addClass(a);this._tipCtrl.curCSS=a}},_tip:function(b,c,a){if(!this._tipCtrl.elem){return false}a=(a?a:null);if(b==null){if(!this._tipCtrl.state){return}}else{if(b==""){if(this._tipCtrl.state){this.checkTipState(a);
this._tipCtrl.duStyle.deactivate();this._tipCtrl.state=false}return null}else{if(b!=this._tipCtrl.prevTip){this._checkTipCSS(a);this._tipCtrl.elem.set("html",b);this._tipCtrl.prevTip=b}}}if(c){this._tipCtrl.elem.setStyles({top:c.y+this._tipCtrl.posGap["y"],left:c.x+this._tipCtrl.posGap["x"]})
}if(!this._tipCtrl.state){this._tipCtrl.duStyle.activate();this._tipCtrl.state=true;this._checkTipCSS(a);return true}return null}});JSONTbl.EventCtrl=new Class({_evAccept:{},_evQueue:[],_evProc:{},_TIMEOUT:300*1000,getEventType:function(){var b=0;
for(var a in this._evAccept){b|=a}return b},updateState:function(a,c,d,e){if(c!=JSONTbl.EvType.HALT&&!this._evAccept[c]){return null}var b=this._getEvent(a);if(d==JSONTbl.EvState.PREPARE){if(b){this._deleteEvent(a)
}this._checkExpire();b={id:a,type:c,state:d,time:new Date().getTime()};this._evQueue.push(b);if(!(this._evAccept[c]&d)){return true}}else{if(!b){return null}if(d&(JSONTbl.EvState.DONE|JSONTbl.EvState.CANCEL|JSONTbl.EvState.FAILED)){this._deleteEvent(a,true)
}else{b.state=d}}if(this._evProc[b.type]&&this._evProc[b.type][d]){this._evProc[b.type][d]({id:a,type:b.type,state:d,time:b.time},e,this)}if(JSONTbl.EvState.keyOf(d)==null||!(this._evAccept[c]&d)){if(d==JSONTbl.EvState.START){return this._updateDone(a,true)
}else{return null}}return this._updateState(a,c,d,e)},_checkExpire:function(){var a=new Date().getTime();this._evQueue=this._evQueue.filter(function(b){if(b&&a-b.time<this._TIMEOUT){return true}return false
},this)},_deleteEvent:function(b,a){if(b==null){return}this._evQueue=this._evQueue.filter(function(c){if(c&&c.id!=b){return true}if(!a){this._sendResult(c.id,false)}return false},this)},_getEvent:function(a){var c;
for(var b=0;b<this._evQueue.length;b++){c=this._evQueue[b];if(c.id==a){return c}}return null},_updateState:function(a,b,c,d){if(c==JSONTbl.EvState.START){return this._updateDone(a,true)}},_updateDone:function(b,a){if(b==null){return a
}this._sendResult(b,a);return a},_sendResult:function(b,a){if(!this._coreObj){return null}this._coreObj.receiveResult.delay(10,this._coreObj,[this,b,a]);return true},_chargeEvent:function(a,b){if(!this._coreObj){return null
}this._coreObj.receiveEvent.delay(10,this._coreObj,[this,a,b]);return true},_initEventType:function(b){this._evAccept={};if($type(b)=="object"){for(var a in b){if(!JSONTbl.EvType[a]){continue}this._evAccept[JSONTbl.EvType[a]]=((JSONTbl.EvState.ALL&b[a])?b[a]:JSONTbl.EvState.ALL)
}}}});JSONTbl.ModuleBase=new Class({Implements:[JSONTbl.EventCtrl,Events,Options],options:{eventProc:null},initialize:function(a){this._coreObj=null;this._halt=false;if(!this._mdName){this._mdName="ModuleBase"
}this.setOptions(a);this._evProc={};if($type(this.options.eventProc)=="object"){for(var b in this.options.eventProc){if(!JSONTbl.EvType[b]||$type(this.options.eventProc[b])!="object"){continue}for(var c in this.options.eventProc[b]){if(!JSONTbl.EvState[c]||$type(this.options.eventProc[b][c])!="function"){continue
}if(!this._evProc[JSONTbl.EvType[b]]){this._evProc[JSONTbl.EvType[b]]={}}this._evProc[JSONTbl.EvType[b]][JSONTbl.EvState[c]]=this.options.eventProc[b][c]}}}},getModuleName:function(){return this._mdName
},setCore:function(a){if($type(a)!="object"||$type(a.addModule)!="function"){return false}this._coreObj=a;return true},getCore:function(){return this._coreObj},_retrieveTargElem:function(b,c,a){if($type(b)!="element"){return null
}c=($type(c)!="array"?[c]:c);b=$(b);var d=b.nodeName.toLowerCase();while(b&&b!=a&&!c.contains(d)){b=b.getParent();if(b){d=b.nodeName.toLowerCase()}}return b}});JSONTbl.Page=new Class({Extends:JSONTbl.ModuleBase,_DEFTMPL:"%DATA_S%-%DATA_E%/%NUMDATA% (%CURPAGE%/%NUMPAGE%) %PG_FIRST%%PG_BACK%%PG_PREV%%PG_LINK%%PG_NEXT%%PG_FOR%%PG_LAST%",options:{dpp:50,maxPageLinks:5,link:null,baseArea:null,pageTmpl:{src:null,dataS:"DATA_S",dataE:"DATA_E",numData:"NUMDATA",curPage:"CURPAGE",numPage:"NUMPAGE",first:"PG_FIRST",back:"PG_BACK",prev:"PG_PREV",link:"PG_LINK",next:"PG_NEXT","for":"PG_FOR",last:"PG_LAST"},pageProc:null,onPageDone:null,clickScroll:{viewElem:null,idxArea:null}},initialize:function(c){if(!this._mdName){this._mdName="Page"
}this.parent(c);this._initEventType({DISPLAY:null});this._pageStat={};this._dpp=parseInt(this.options.dpp);this._maxPageLinks=parseInt(this.options.maxPageLinks);if(!this._dpp||this._dpp<0){this._dpp=50
}if(!this._maxPageLinks||this._maxPageLinks<0){this._maxPageLinks=5}this._link=$merge(JSONTbl.STRTABLE.PAGE,this.options.link);for(var d in this._link){if(d=="_CLSPREFIX"){this._link[d]=this._link[d].escapeTag();
continue}if(this._link[d]["title"]){this._link[d]["title"]=this._link[d]["title"].escapeTag()}}["PAGE","CURPAGE"].each(function(g){this._link[g]=(!this._link[g]||!this._link[g]["mark"]?{mark:""}:this._link[g])
},this);this._link._CLSPREFIX=this._link._CLSPREFIX||"";this._link._PAGETAG=this._link._PAGETAG||"a";this._baseElems=[];var b=null;if(this.options.root){b=document.getElement(this.options.root)}b=(b?b:document);
var a=function(h){if($type(h)=="array"){return h.each(a,this)}if($type(h)=="element"){return this._baseElems.push(h)}var g=b.getElements(h);if(g.length<1&&b!=document){g=document.getElements(h)}if(g.length>0){this._baseElems=this._baseElems.concat(g)
}}.bind(this);if(this.options.baseArea){a(this.options.baseArea)}this._baseElems.each(function(h,g){h.addEvent("click",this.onPageClick.bindWithEvent(this,[h,g]))},this);this._pageTmpl=Du.Hash.copyObj(this.options.pageTmpl);
if(this._pageTmpl.src===null&&this._baseElems[0]){this._pageTmpl.src=this._baseElems[0].get("html")}if(!this._pageTmpl.src){this._pageTmpl.src=this._DEFTMPL}this._pageProc=($type(this.options.pageProc)=="function"?this.options.pageProc:null);
this._clickScroll=null;var e,f=function(g){if(g<0||g>=this._baseElems.length){return null}return g}.bind(this);if(this.options.clickScroll&&this.options.clickScroll.viewElem){this._clickScroll={viewElem:$(this.options.clickScroll.viewElem),idxArea:[]};
if(!this._clickScroll.viewElem){this._clickScroll=null}else{if(this.options.clickScroll.idxArea!=null){if($type(this.options.clickScroll.idxArea)=="array"){this.options.clickScroll.idxArea.each(function(g){e=f(g);
if(e!=null){this._clickScroll.idxArea.push(e)}},this)}else{if(this.options.clickScroll.idxArea!=null){e=f(this.options.clickScroll.idxArea);if(e!=null){this._clickScroll.idxArea.push(e)}}}if(this._clickScroll.idxArea.length<=0){for(e=0;
e<this._baseElems.length;e++){this._clickScroll.idxArea.push(e)}}}}}},onPageClick:function(c,f,e){c.preventDefault();if(this._halt){return}var a=this._retrieveTargElem($(c.target),[this._link._PAGETAG],f);
if(!a||a.nodeName.toLowerCase()!=this._link._PAGETAG){return}var d=0;var b=a.className.match(new RegExp("\\b"+this._link._CLSPREFIX+"(\\d+)\\b"));if(b&&b[1]){d=b[1]}if(!(d>0)){return}var g=this._dpp*(d-1);
if(this._clickScroll&&this._clickScroll.idxArea.indexOf(e)>=0){this._clickScroll.viewElem.scrollIntoView(true)}this._chargeEvent(JSONTbl.EvType.PAGE,{index:g})},_updateState:function(a,c,d,e){if(c!=JSONTbl.EvType.DISPLAY){return null
}var b=false;switch(d){case JSONTbl.EvState.PREPARE:return true;case JSONTbl.EvState.START:b=this.updatePage(a,e);break;default:return true}this._updateDone(a,b)},updatePage:function(a,f){if(this._halt){return null
}if($type(f)!="object"||!(f.index>=0)||!(f.numData>=0)){return false}var b=null;if(this._pageProc){try{b=this._pageProc(f);if(!b&&b!=""){return this._updateDone(a,(b===null?true:false))}}catch(d){this._updateDone(a,false);
return false}}var c=this._formPageStat(f);if(!c){return false}this._pageStat=c;if($type(b)!="string"){b=this._makePageStr(f,c)}this._baseElems.each(function(e){e.set("html",b)});this.fireEvent("pageDone",c,10);
return true},_makePageStr:function(g,c){if(!this._pageTmpl.src){return""}var e={dataS:c.idxStart+1,dataE:c.idxEnd+1,numData:g.numData,curPage:c.curPage,numPage:c.pages};if(g.numData>0){["first","back","prev","next","for","last"].each(function(h){if(c[h]){e[h]=this._createPageLink(h,c[h])
}},this);var f="";for(var d=c.pgStart;d<=c.pgEnd;d++){f+=this._createPageLink("LINK",d,d==c.curPage)}e.link=f}var a=new Hash();for(var b in e){if(!this._pageTmpl[b]){continue}a.set(this._pageTmpl[b],e[b])
}return this._pageTmpl.src.replace(/%([A-Z\d_]+)%/g,function(i,h){return(a[h]?a[h]:"")})},_createPageLink:function(b,c,d){b=b.toUpperCase();if(!this._link[b]){return""}var a=(d?this._link.CURPAGE["mark"]:this._link.PAGE["mark"]);
if(!a){return""}return a.replace(/%([A-Z\d_]+)%/g,function(f,e){switch(e){case"TITLE":return this._link[b]["title"].replace(/%PAGE%/g,c);break;case"CLASS":return this._link._CLSPREFIX+c;break;case"PAGE":return this._link[b]["mark"].replace(/%PAGE%/g,c);
break;default:return""}}.bind(this))},getPageConfig:function(){return{dpp:this._dpp,maxPageLinks:this._maxPageLinks}},_formPageStat:function(c){if(!this._dpp){return null}var a={},b=parseInt(this._maxPageLinks/2);
a.pages=parseInt(c.numData/this._dpp)+(c.numData%this._dpp?1:0);a.curPage=parseInt(c.index/this._dpp)+1;a.idxStart=(a.curPage-1)*this._dpp;a.idxEnd=a.idxStart+this._dpp-1;a.idxEnd=(a.idxEnd>=c.numData?c.numData-1:a.idxEnd);
if(a.curPage-b<=0){a.pgStart=1}else{if(a.curPage+b>=a.pages){a.pgStart=a.pages-this._maxPageLinks+1}else{a.pgStart=a.curPage-b+(this._maxPageLinks%2?0:1)}}if(a.pgStart<1){a.pgStart=1}a.pgEnd=a.pgStart+this._maxPageLinks-1;
a.pgEnd=(a.pgEnd>a.pages?a.pages:a.pgEnd);a.first=(a.curPage>1?1:null);a.back=(a.pgStart>1&&this._maxPageLinks>1?a.pgStart-1:null);a.prev=(a.curPage>1?a.curPage-1:null);a.next=(a.curPage<a.pages?a.curPage+1:null);
a["for"]=(a.pgEnd<a.pages&&this._maxPageLinks>1?a.pgEnd+1:null);a.last=(a.curPage<a.pages?a.pages:null);return a}});JSONTbl.Surface=new Class({Extends:JSONTbl.ModuleBase,Implements:JSONTbl.TipCtrl,options:{selector:{root:"",base:"",body:"",head:"",tip:"",notice:""},feature:{sort:true,countType:false,extract:true,exclude:true,search:true,restore:true,tip:true,notice:true,search:false},dispOrder:[],css:{dataEven:"",sort:{prefix:"sort",sorted:"",select:"Sel",desc:"Desc"},notice:{loading:"loading",restore:"restore"}},strTable:null,duStyle:{tip:null},pageModule:null,dpp:50},initialize:function(a){if(!this._mdName){this._mdName="Surface"
}this.parent(a);this._initEventType({DISPLAY:null,LOAD:null});this._pageModule=this.options.pageModule;if(this._pageModule){this._associatePage(this._pageModule)}this._dpp=(this.options.dpp?this.options.dpp:50);
this._feature=this.options.feature;this._duStyle=this.options.duStyle;this._css={};this._elems={};this._strTable=$merge(JSONTbl.STRTABLE,this.options.strTable);this._typeName={};this._coreData=null;this._idxStart=0;
if(this._feature.sort){this._sort=new JSONTbl.SortCtrl({maxSort:(this._feature.sort===true?null:this._feature.sort)})}this._feature.search=this._initSearch(this._feature.search);this._dispOrder=[];this._prevOrder=null;
this._dispInfo={};this.setDispOrder(this.options.dispOrder);this._curOrder=this._dispOrder.map(function(b){return b.id});this._initCSS(this.options.css);this._initElems(this.options.selector);this._initEvent();
if(this._feature.tip&&this._elems.tip){this._initTip(this._elems.tip,this.options.tipCtrl.posGap,this.options.tipCtrl.css,this._duStyle.tip)}this._coreData=null},setDispOrder:function(a){if(!a||$type(a)!="array"){return false
}this._dispOrder=[];this._dispInfo={};try{a.each(function(c){if($type(c)!="object"){throw"not object:"+c}var e=JSONTbl.Utils.normalizeTypeID(c.id);if(!e){throw"invalid ID"}if(this._dispInfo[c.id]){throw"duplicative id:"+c.id
}var d={id:e,name:($type(c.name)=="string"?c.name:null),proc:($type(c.proc)=="function"?c.proc:null),disable:($type(c.disable)=="object"?c.disable:{}),html:(c.html?true:false),css:(c.css?c.css:null),tip:(c.tip?c.tip:null)};
this._dispOrder.push(d);this._dispInfo[c.id]=d},this)}catch(b){return false}return true},_resetCurOrder:function(){this._prevOrder=null;this._curOrder=this._dispOrder.map(function(a){return a.id})},_initSearch:function(b){if($type(b)!="object"){return null
}var a={},d=b.selector,g=b.freq,c;try{if($type(d)!="object"){throw"invalid selector"}c=document.getElement(d.input);if(!c){throw"invalid input selector"}a.input=c;if(d.submit){if(!(c=document.getElement(d.submit))){throw"invalid submit selector"
}c.addEvent("click",this.onSearchClick.bindWithEvent(this));a.submit=c}else{if(g==null){throw"need submit selector if freq is null"}}if(g!=null){g=parseInt(g)||0;a.input.addEvent("keyup",this.onSearchUpd.bindWithEvent(this))
}}catch(f){return null}return{elems:a,freq:g,interval:null}},_initCSS:function(b){this._css={};this._css.dataEven=(b.dataEven?b.dataEven:null);if(this._feature.sort){this._css.sort={};if($type(b.sort)!="object"){return false
}if(!b.sort["prefix"]){return false}for(var a in b.sort){if(a=="prefix"){this._css.sort["prefix"]=b.sort["prefix"];continue}this._css.sort[a]=b.sort["prefix"]+b.sort[a]}}if(this._feature.notice){this._css.notice={};
if($type(b.notice)!="object"){return false}["loading","restore"].each(function(c){this._css.notice[c]=(b.notice[c]?b.notice[c]:null)},this)}return true},_initElems:function(a){this._elems={};if($type(a)!="object"){return false
}var b=null;if(a.root){b=document.getElement(a.root)}b=(b?b:document);[{name:"base",multi:false},{name:"body",multi:false},{name:"head",multi:true},{name:"tip",multi:false},{name:"notice",multi:true}].each(function(d){var c=null;
if(a[d.name]){c=b.getElements(a[d.name]);if(c.length<1&&b!=document){c=document.getElements(a[d.name])}}if(!c||c.length<1){return false}this._elems[d.name]=(d.multi?c:c[0])},this);if(!this._elems.body){return false
}return true},_initEvent:function(){if(!this._elems.tip){this._feature.tip=false}if(!this._elems.notice){this._feature.notice=false}if(!this._elems.head){this._feature.sort=this._feature.countType=false
}if(this._feature.tip&&this._elems.base){this._elems.base.addEvent("mouseleave",this._tip.bind(this,""))}if(this._feature.extract||this._feature.exclude){this._elems.body.addEvent("click",this.onBdyClick.bindWithEvent(this));
if(this._feature.tip){this._elems.body.addEvent("mousemove",this.onBdyMove.bindWithEvent(this))}}if(this._feature.sort||this._feature.countType){($type(this._elems.head)=="array"?this._elems.head:[this._elems.head]).each(function(a){a.addEvent("click",this.onHdClick.bindWithEvent(this));
if(this._feature.tip){a.addEvent("mousemove",this.onHdMove.bindWithEvent(this))}},this)}if(this._feature.notice){($type(this._elems.notice)=="array"?this._elems.notice:[this._elems.notice]).each(function(a){a.addEvent("click",this.onNtcClick.bindWithEvent(this));
if(this._feature.tip){a.addEvent("mousemove",this.onNtcMove.bindWithEvent(this));a.addEvent("mouseleave",this._tip.bind(this,""))}},this)}},onSearchClick:function(a){},onSearchUpd:function(a){},onHdClick:function(a){},onHdMove:function(a){},onBdyClick:function(a){},onBdyMove:function(a){},onNtcClick:function(a){if(this._halt||!this._feature.notice||!this._coreData){return
}this._restoreData((a.control?"reload":(a.shift?"reveal":false)))},onNtcMove:function(a){if(this._halt||!this._feature.notice||!this._coreData){return}var b="";if(a.control){b=this._strTable.TIPRELOAD}else{if(a.shift&&this._coreData.dataFilter){b=this._strTable.TIPREVEAL
}else{b=this._strTable.TIPRESTORE}}this._tip(b.replace(/%DTNAME%/,this._coreData.dataName),a.page,{targ:"notice"})},_restoreData:function(b){this._resetCurOrder();var a={};if(b=="reload"){a.reload=true
}else{if(b=="reveal"){a.reveal=true}}this._chargeEvent(JSONTbl.EvType.RESTORE,a)},_sortCheck:function(c,d,b){if($type(b)!="array"){b=[b]}if((this._feature.sort&&!this._dispInfo[d]["disable"]["sort"])||(this._feature.countType&&!this._dispInfo[d]["disable"]["countType"])){if(c.control){if(!this._sort.isAppend()){this._clearSortCls();
this._sort.clear()}if(!this._sort.isRegist(d)){if(this._sort.addSort(d)){b.each(function(e){if(!e){return}e.removeClass(this._css.sort["sorted"]);e.addClass(this._css.sort["sorted"]);e.addClass(this._css.sort["sorted"]+this._sort.length);
e.addClass(this._css.sort["select"])},this)}}else{var a=this._sort.revSort(d);b.each(function(e){if(!e){return}if(a){e.addClass(this._css.sort["desc"])}else{e.removeClass(this._css.sort["desc"])}},this)
}return null}if(!this._sort.isRegist(d)){this._sort.setSort(d)}else{if(!this._sort.isAppend()){this._sort.setSort(d,!this._sort.getDesc(d))}}}if(c.shift&&this._feature.countType&&!this._dispInfo[d]["disable"]["countType"]){return this._selectType()
}if(this._feature.sort&&!this._dispInfo[d]["disable"]["sort"]){return this._sortLog()}return true},_sortLog:function(){this._chargeEvent(JSONTbl.EvType.SORT,{sort:this._sort})},_tipHead:function(b,e){if(!b||!e||!this._feature.tip){return
}var c={targ:"head",shift:b.shift,control:b.control,alt:b.alt,id:e};if(!this.checkTipState(c)){return this._tip(null,b.page)}var d="",a=this._strTable.TIPSORT;if(b.control){if(this._feature.sort&&!this._dispInfo[e]["disable"]["sort"]){if(!this._sort.isAppend()||!this._sort.isRegist(e)){if(this._sort.isAppend()&&this._sort.isSortLimit()){a=this._strTable.TIPSORTLIMIT
}else{a=this._strTable.TIPSORTADD}d=a.replace(/%TYPE%/,this._typeName[e])}else{a=(!this._sort.getDesc(e)?this._strTable.TIPSORTDESC:this._strTable.TIPSORTASC);a=a.replace(/%TYPE%/,this._typeName[e]);d=this._strTable.TIPSORTREV.replace(/%SORT%/,a)
}}}else{if(b.shift){if(this._feature.countType&&!this._dispInfo[e]["disable"]["countType"]){if(!this._sort.isAppend()||!this._sort.isRegist(e)){a=this._strTable.TIPSORTTYPE.replace(/%TYPE%/,this._typeName[e]);
d=this._strTable.TIPSORTSEL.replace(/%SORT%/,a)}else{this._sort.each(function(f){d+=this._strTable.TIPSORTTYPE.replace(/%TYPE%/,this._typeName[f.key])},this);d=this._strTable.TIPSORTSEL.replace(/%SORT%/,d)
}}}else{if(this._feature.sort&&!this._dispInfo[e]["disable"]["sort"]){if(this._sort.isRegist(e)){if(!this._sort.isAppend()){a=(!this._sort.getDesc(e)?this._strTable.TIPSORTDESC:this._strTable.TIPSORTASC);
a=a.replace(/%TYPE%/,this._typeName[e]);d=this._strTable.TIPSORT.replace(/%SORT%/,a)}else{this._sort.each(function(f){a=(f.desc?this._strTable.TIPSORTDESC:this._strTable.TIPSORTASC);d+=a.replace(/%TYPE%/,this._typeName[f.key])
},this);d=this._strTable.TIPSORT.replace(/%SORT%/,d)}}else{a=this._strTable.TIPSORTASC.replace(/%TYPE%/,this._typeName[e]);d=this._strTable.TIPSORT.replace(/%SORT%/,a)}}}}this._tip(d,b.page,c)},_tipBody:function(e,b,g){if(!e||!b||g==null||!this._feature.tip){return
}var a={targ:"body",shift:e.shift,control:e.control,alt:e.alt,id:b,idxData:g};if(!this.checkTipState(a)){return this._tip(null,e.page,a)}if(!this._dispInfo[b]["tip"]&&((this._dispInfo[b]["disable"]["extract"]||(!e.control&&!e.alt))&&(this._dispInfo[b]["disable"]["exclude"]||!e.shift))){return this._tip("",null,a)
}var f="",i,h,d,c=this._getTargStr(g,b,true);if(!c){return}h=String(c.value);i=String(c.dispVal);if(this._dispInfo[b]["html"]){h=h.replace(/<[^>]*?>/g,"");i=i.replace(/<[^>]*?>/g,"")}else{h=h.escapeTag();
i=i.escapeTag()}d=i;if(this._feature.tip["dispOrgVal"]&&h!=i){d=this._strTable.TIPDISPVAL.replace(/%DISPVAL%/g,i);d=d.replace(/%VALUE%/g,h)}if(e.shift){if(this._feature.exclude&&!this._dispInfo[b]["disable"]["exclude"]){f=(e.alt?this._strTable.TIPEXCALL:this._strTable.TIPEXCLUDE)
}}else{if(e.control||e.alt){if(this._feature.extract&&!this._dispInfo[b]["disable"]["extract"]){f=(e.alt?this._strTable.TIPEXTALL:this._strTable.TIPEXTRACT)}}}if(!f){if(this._dispInfo[b]["tip"]){if(this._dispInfo[b]["tip"]==true){return this._tip(c.value,e.page,a)
}else{if($type(this._dispInfo[b]["tip"])=="function"){return this._tip(this._dispInfo[b]["tip"](b,g,this._coreData.data[g],this._coreData),e.page,a)}}}return this._tip("",null,a)}f=f.replace(/%TYPE%/,this._typeName[b]);
d=f.replace(/%DATA%/,d);this._tip(d,e.page,a)},_exCheck:function(a,c,b){if(this._halt){return null}if(!this._feature.extract&&!this._feature.exclude){return null}if(a.shift){if(this._feature.exclude&&!this._dispInfo[c]["disable"]["exclude"]){this._exData(c,b,true,(a.alt?true:false))
}}else{if(a.control||a.alt){if(this._feature.extract&&!this._dispInfo[c]["disable"]["extract"]){this._exData(c,b,false,(a.alt?true:false))}}}return true},_exData:function(d,b,a,c){this._sort.clear();this._chargeEvent((a?JSONTbl.EvType.EXCLUDE:JSONTbl.EvType.EXTRACT),{exTarg:{id:d,idxData:b,targDef:c}})
},_notice:function(b,c,a){if(!this._feature.notice){return}this._elems.notice.set("html",b);if(c){this._elems.notice.addClass(c)}if(a){this._elems.notice.removeClass(a)}},_buildSurface:function(c){var a=this._coreObj.getCoreData();
if(!a||!a.typeInfo||!a.data||!a.refData){return false}this._coreData=a;this._idxStart=parseInt(c.index/this._dpp)*this._dpp;this._typeName={};this._dispOrder.each(function(e){this._typeName[e.id]=this._dispInfo[e.id]["name"]||this._coreData.typeInfo[e.id]["name"]
},this);if(this._feature.sort){if(c&&(c.evSrc==JSONTbl.EvType.SORT||c.evSrc==JSONTbl.EvType.PAGE)){this._sort.setAppend(false)}else{this._sort.clear();if((c.evSrc==JSONTbl.EvType.LOADED||c.evSrc==JSONTbl.EvType.RESTORE)&&$type(c.sort)=="array"){c.sort.each(function(e){this._sort.addSort(e.key,e.desc)
},this);this._sort.setAppend(false)}}}if(this._feature.tip){this._tip("")}this._displayData(c);if(this._feature.notice){var b=this._strTable.DATATITLE.replace(/%DTNAME%/g,this._coreData.dataName),d="";
if(this._coreData.updated){d=JSONTbl.Utils.toDateStr(this._coreData.updated)}b=b.replace(/%UPDATED%/g,d);this._notice(b,this._css.notice["restore"],this._css.notice["loading"])}},_displayData:function(a){},_clearSortCls:function(a){},_getTargStr:function(d,f,c){if(d==null||!f){return""
}var b,a=this._coreData.data[d];if(!a){return""}b=a[this._coreData.typeInfo[f]["index"]];if(b==null){return null}if(this._coreData.refData[f]){b=this._coreData.refData[f][b]}var e=b;if(this._dispInfo[f]["proc"]){e=this._dispInfo[f].proc(b,f,d,a,this._coreData)
}return(c?{dispVal:String(e),value:String(b)}:e)},associatePage:function(a){if(!a||!a.getPageConfig){return null}this._pageModule=a;var b=a.getPageConfig();if(!b){return false}this._dpp=b.dpp;return true
},_updateState:function(a,b,c,d){if(this._feature.notice){this._updateNotice(b,c,d)}switch(c){case JSONTbl.EvState.PREPARE:return true;case JSONTbl.EvState.START:if(b==JSONTbl.EvType.DISPLAY){this._buildSurface(d)
}this._updateDone(a,d);break}return true},_updateNotice:function(b,d,e){if(!this._feature.notice){return}var a=(e&&e.dataName?e.dataName:this._strTable.DEFDTNAME);switch(d){case JSONTbl.EvState.START:if(b==JSONTbl.EvType.LOAD){this._notice(this._strTable.LOADING.replace(/%DTNAME%/g,a),this._css.notice["loading"],this._css.notice["restore"])
}break;case JSONTbl.EvState.DONE:if(b==JSONTbl.EvType.LOAD){this._notice(this._strTable.DATABUILD.replace(/%DTNAME%/g,a),null,this._css.notice["loading"])}break;case JSONTbl.EvState.CANCEL:if(b==JSONTbl.EvType.LOAD){if(this._coreData){var c=this._strTable.DATATITLE.replace(/%DTNAME%/g,this._coreData.dataName),f="";
if(this._coreData.updated){f=JSONTbl.Utils.toDateStr(this._coreData.updated)}c=c.replace(/%UPDATED%/g,f);this._notice(c,this._css.notice["restore"],this._css.notice["loading"])}else{this._notice("",null,this._css.notice["loading"])
}}break;case JSONTbl.EvState.FAILED:if(b==JSONTbl.EvType.LOAD){this._notice(this._strTable.ERRLOAD.replace(/%DTNAME%/g,a),this._css.notice["restore"],this._css.notice["loading"])}break}}});JSONTbl.Surface.Table=new Class({Extends:JSONTbl.Surface,options:{},initialize:function(a){if(!this._mdName){this._mdName="Surface.Table"
}this.parent(a);this._idxFirstRow=0},_retrieveTargInfo:function(d,b,e){if(!d){return false}b=(b=="th"||b=="td"?b:"th");var a=this._retrieveTargElem(d.target,b,this._elems.base);if(!a){return null}var f=this._curOrder[a.cellIndex];
if(!f){return null}if(!e){return{cellIndex:a.cellIndex,id:f}}var c=this._retrieveTargElem(a,"tr",this._elems.base);if(!c){return null}return{cellIndex:a.cellIndex,id:f,rowIndex:c.rowIndex,idxData:this._idxStart+c.rowIndex-this._idxFirstRow}
},_retrieveThElems:function(b){if(!this._elems.head){return[]}if(!b){b=0}var a=[];this._elems.head.each(function(c){if(!c.rows[0]){return}a.push(c.rows[0].cells[b])},this);return a},onHdClick:function(c){if(this._halt){return
}var b=this._retrieveTargInfo(c,"th");if(!b){return}var a=this._retrieveThElems(b.cellIndex);if(!a){return}this._sortCheck(c,b.id,a)},onHdMove:function(b){if(this._halt||!this._feature.tip){return}var a=this._retrieveTargInfo(b,"th");
if(!a){return}this._tipHead(b,a.id)},onBdyClick:function(b){if(this._halt){return}var a=this._retrieveTargInfo(b,"td",true);if(!a){return}this._exCheck(b,a.id,a.idxData)},onBdyMove:function(b){if(this._halt||!this._feature.tip){return
}var a=this._retrieveTargInfo(b,"td",true);if(!a){return}this._tipBody(b,a.id,a.idxData)},_displayData:function(a){this._elems.head.each(function(b){this._buildTblHead(b,a)},this);this._buildTblBody(a);
this._prevOrder=this._curOrder;return true},_buildTblHead:function(b,d){var a,c;if(!b||!this._coreData){return false}if(this._feature.sort){this._clearSortCls(b)}if(this._curOrder!=this._prevOrder){if(b.rows[0]){b.deleteRow(0)
}a=document.createElement("tr");this._curOrder.each(function(g,e){var f=this._dispInfo[g];if(!f){return}c=$(document.createElement("th"));if(f.css){c.addClass(f.css)}c.set("html",this._typeName[g]);a.appendChild(c)
},this);b.appendChild(a)}else{a=b.rows[0]}if(this._feature.sort){this._curOrder.each(function(f,e){c=a.cells[e];if(this._sort.isRegist(f)){c.addClass(this._css.sort["sorted"]);c.addClass((this._sort.length>1?this._css.sort["sorted"]+(this._sort.getOrd(f)+1):"")+" "+(this._sort.getDesc(f)?this._css.sort["desc"]:""))
}},this)}return true},_buildTblBody:function(g){if(!g||!this._coreData){return false}var f=this._elems.body,d,c,b,a,e=this._dpp;e=(!e?g.numData:e);if(this._idxStart+e>g.numData){e=g.numData-this._idxStart
}if(this._curOrder!=this._prevOrder){for(b=f.rows.length-1;b>=0;b--){f.deleteRow(-1)}}c=this._makeTblRow();for(b=0,a=e;b<a;b++){d=f.rows[b];if(!d){d=c.clone(true);f.appendChild(d)}if(b==0){this._idxFirstRow=d.rowIndex
}this._setTblData(d,b,this._idxStart+b)}for(a=f.rows.length;b<a;b++){f.deleteRow(-1)}c.destroy()},_makeTblRow:function(){var b=$(document.createElement("tr")),c,d;for(var a=0;a<this._curOrder.length;a++){c=$(document.createElement("td"));
if(!c){continue}d=this._curOrder[a];if(this._dispInfo[d]["css"]){c.addClass(this._dispInfo[d]["css"])}b.appendChild(c)}return b},_setTblData:function(b,c,e){if(!b){return}var h,f,d,g;for(var a=0;a<this._curOrder.length;
a++){d=$(b.cells[a]);if(!d){continue}h=this._curOrder[a];g=this._dispInfo[h];f=this._getTargStr(e,h);if(g.html){d.set("html",(f!=null?f:""))}else{d.set("text",(f!=null?f:""))}}if(this._css.dataEven&&(c&1)){b.addClass(this._css.dataEven)
}},_clearSortCls:function(d){if(!this._feature.sort){return null}if(!d){this._elems.head.each(this._clearSortCls,this);return}if(!d.rows[0]){return false}var b=d.rows[0],e,c=new RegExp("\\b"+this._css.sort["prefix"]+"\\w*","g");
if($type(b)!="element"){return false}for(var a=0;a<this._curOrder.length;a++){e=b.cells[a];if(!e){continue}e.className=e.className.replace(c,"")}}});JSONTbl.Search=new Class({Extends:JSONTbl.ModuleBase,options:{searchProc:null},initialize:function(a){if(!this._mdName){this._mdName="Search"
}this.parent(a);this._initEventType({SEARCH:null});this._searchProc=($type(this.options.searchProc)=="function"?this.options.searchProc:null)},searchData:function(a,c){var b;if(this._searchProc){b=this._searchProc(c.word);
return(!b?false:true)}},_updateState:function(a,c,d,e){if(c!=JSONTbl.EvType.SEARCH){return null}var b=false;switch(d){case JSONTbl.EvState.PREPARE:return true;case JSONTbl.EvState.START:b=this.searchData(a,e);
break;default:return true}this._updateDone(a,b)}});JSONTbl.DataLoad=new Class({Extends:JSONTbl.ModuleBase,options:{defSort:null},initialize:function(a){if(!this._mdName){this._mdName="DataLoad"}this.parent(a);
this._defSort=null;if(this.options.defSort){this._defSort=[];this.options.defSort=($type(this.options.defSort)=="array"?this.options.defSort:[this.options.defSort]);this.options.defSort.each(function(b){if($type(b)=="object"&&b.key){this._defSort.push({key:b.key,desc:(b.desc?true:false)})
}},this);if(this._defSort.length<=0){this._defSort=null}}this._initEventType({LOAD:null})},_updateState:function(a,b,d,e){if(b!=JSONTbl.EvType.LOAD){return null}if(d==JSONTbl.EvState.PREPARE){var c=[];
this._evQueue.each(function(f){if(f.type==JSONTbl.EvType.LOAD&&f.id!=a){c.push(f.id)}},this);c.each(function(f){this._cancelLoad(f)},this)}switch(d){case JSONTbl.EvState.PREPARE:return true;case JSONTbl.EvState.START:return this._loadData(a,e);
default:return true}return true},_loadData:function(a,b){},_cancelLoad:function(a){this._deleteEvent(a)}});JSONTbl.DataLoad.JSData=new Class({Extends:JSONTbl.DataLoad,options:{defData:null},initialize:function(a){if(!this._mdName){this._mdName="DataLoad.JSData"
}this.parent(a);this._defData=this.options.defData},_loadData:function(a,d){var c=(d&&d.data)||this._defData;var b=(c?true:false);this._updateDone(a,b);if(b){this._chargeEvent(JSONTbl.EvType.LOADED,{data:c,defSort:this._defSort})
}}});JSONTbl.DataLoad.Ajax=new Class({Extends:JSONTbl.DataLoad.JSData,options:{url:"",method:"GET",param:"id",query:null,renewal:null,retType:"json",objName:"JSONData"},initialize:function(a){if(!this._mdName){this._mdName="DataLoad.Ajax"
}this.parent(a);this._param=this.options.param;this._query=this.options.query;this._ajax=new Du.Ajax(this.options.url,{jsonize:(this.options.retType=="json"?true:false),method:(this.options.method=="GET"?"get":"post"),renewal:this.options.renewal,callback:this._ajaxProc.bind(this)})
},_loadData:function(a,c){if(this._defData){this.parent(a,c);this._defData=null;return}var b=this._query||{};this._ajax.cancel();if(c.url){if(c.url!=this._ajax.getURL()){this._ajax.setURL(c.url)}}if(c.id){if(this._param){b[this._param]=c.id
}else{b[c.id]=true}}this._ajax.sendRequest(b)},_ajaxProc:function(a,c,d){this._evQueue.some(function(e){if(e.type==JSONTbl.EvType.LOAD){this._updateDone(e.id,a);return true}return false},this);if(a){if(this.options.retType=="json"){this._chargeEvent(JSONTbl.EvType.LOADED,{data:c.json,defSort:this._defSort})
}else{if(this.options.retType=="jsonFile"){var b=Du.JSON.decodeVar(c.text);if(b&&b[this.options.objName]){this._chargeEvent(JSONTbl.EvType.LOADED,{data:b[this.options.objName],defSort:this._defSort})}}}}},_cancelLoad:function(a){if(this._ajax){this._ajax.cancel()
}this.parent(a)}});JSONTbl.CoreBase=new Class({_TIMEOUT:300*1000,initialize:function(){this._modules=[];this._idEvent=0;this._evStore=new Hash()},addModule:function(a){if(arguments.length>1){return $A(arguments).every(function(b){return this.addModule(b)
},this)}else{if($type(a)=="array"){return a.every(function(b){return this.addModule(b)},this)}}if($type(a)!="object"||$type(a.setCore)!="function"){return false}this._modules.erase(a);this._modules.push(a);
a.setCore(this);return true},removeModule:function(a){if(arguments.length>1){return $A(arguments).every(function(b){return this.removeModule(b)},this)}else{if($type(a)=="array"){return a.every(function(b){return this.removeModule(b)
},this)}}if($type(a)!="object"||$type(a.setCore)!="function"){return false}this._modules.erase(a);return true},_startEvent:function(b,c){var a=this._notifyEvent(null,b,JSONTbl.EvState.PREPARE,c);if(!a){return null
}if(a.id==null){return false}a=this._notifyEvent(a.id,b,JSONTbl.EvState.START,c);return a},_notifyEvent:function(d,g,h,b){var e=null,i={};if(h==JSONTbl.EvState.PREPARE){this._checkExpire();if(!g){return null
}d=this._idEvent++;i.time=new Date().getTime();i.evType=g;i.module=[];this._evStore[d]=i}else{if(d==null||!this._evStore[d]){return null}i=this._evStore[d];g=i.evType;e=i.module;if(h==JSONTbl.EvState.START){i.info=b
}}if(this._modules.length<=0){return null}var f,c=[];this._modules.every(function(j){if(j.getEventType()&g&&(!e||e.contains(j))){if(h==JSONTbl.EvState.PREPARE){f=j.updateState(d,g,h,b);c.push({module:j,ret:f});
if(f===false){return false}}else{if(h==JSONTbl.EvState.START){j.updateState.delay(10,j,[d,g,h,b])}else{c.push({module:j,ret:j.updateState(d,g,h,b)})}}}return true},this);if(h==JSONTbl.EvState.PREPARE){var a=0;
c.each(function(j){if(j.ret===false){this._cancelEvent(d);return{id:null,response:c}}else{if(j.ret){i.module.push(j.module);a++}}},this);if(a<=0){i=null;delete this._evStore[d];return null}i.queue=i.module.concat()
}return{id:d,response:c,module:i.module}},_checkExpire:function(){var a=new Date().getTime();this._evStore=this._evStore.filter(function(b,c){if(b&&a-b.time<this._TIMEOUT){return true}this._cancelEvent(c);
return false},this)},_cancelEvent:function(a){if(!this._evStore[a]){return false}this._notifyEvent(a,null,JSONTbl.EvState.CANCEL,null)},receiveResult:function(d,b,a){var c=this._evStore[b];if(!c){return false
}c.queue=c.queue.filter(function(e){if(e==d){return false}return true},this);if(!a||c.queue.length<=0){if(!a){this._notifyEvent(b,null,JSONTbl.EvState.FAILED,c.info)}else{this._notifyEvent(b,null,JSONTbl.EvState.DONE,c.info)
}c=null;delete this._evStore[b]}return true},receiveEvent:function(a,b,c){this._proceedEvent(a,b,c)},_proceedEvent:function(){}});JSONTbl.Core=new Class({Extends:JSONTbl.CoreBase,Implements:Options,options:{dataFilter:null,allowMetaData:false,metaKey:"_meta",dataName:"",typeDef:{dataKey:"data",dataNameKey:"dataName",typeOrder:[]},proc:{restore:null}},initialize:function(a){this.parent();
this.setOptions(a);this._data=[];this._defData=[];this._defSort=null;this._refData={};this._dataName=this.options.dataName||JSONTbl.STRTABLE.DEFDTNAME;this._metaKey=this.options.metaKey;this._allowMetaData=(this._metaKey&&this.options.allowMetaData?true:false);
this._dataFilter=($type(this.options.dataFilter)=="function"?this.options.dataFilter:null);this._uncensored=[];this._typeDef={};this._typeDef.dataKey="";this._typeDef.dataNameKey="";this._typeDef.updated="";
this._typeDef.typeOrder=[];this._typeDef.typeInfo={};this._proc={};if(this.options.proc){this._proc.restore=($type(this.options.proc.restore)=="function"?this.options.proc.restore:null)}this._initMeta(this.options.typeDef)
},_initMeta:function(a){if($type(a)!="object"){return false}if(a.dataKey){this._typeDef.dataKey=String(a.dataKey)}if(a.dataNameKey){this._typeDef.dataNameKey=String(a.dataNameKey)}if(a.updated){this._typeDef.updated=a.updated
}if(a.defSort){this._defSort=a.defSort}if(a.typeOrder){this._typeDef.typeOrder=[];this._typeDef.typeInfo={};a.typeOrder.each(function(g,b){try{if($type(g)!="object"){throw""}var f=JSONTbl.Utils.normalizeTypeID(g.id);
if(!f){throw""}}catch(d){return this._typeDef.typeOrder.push(null)}var c={id:f,index:b,key:(!g.key||$type(g.key)!="string"?null:g.key),name:($type(g.name)=="string"?g.name:f),filterProc:($type(g.filterProc)=="function"?g.filterProc:null),resort:(g.resort===true||$type(g.resort)=="function"?g.resort:null)};
this._typeDef.typeOrder.push(c);this._typeDef.typeInfo[f]=c},this)}return true},_initData:function(b){var d=[],a={};if(this._allowMetaData){if(b[this._typeDef.dataNameKey]){this._dataName=b[this._typeDef.dataNameKey]
}}try{var c={};if(!b[this._typeDef.dataKey]){throw"dataKey"}d=b[this._typeDef.dataKey];this._typeDef.typeOrder.each(function(g,e){if(c[g.id]){throw"duplicative id:"+g.id}c[g.id]=true;if(g.key){if(!b[g.key]){throw g.id
}a[g.id]=b[g.key].concat()}},this)}catch(f){return false}this._filterData(d,a);this._defData=this._data.concat();if(this._dataFilter){this._uncensored=this._defData;this._data=this._dataFilter(this._data,this._refData,this._typeDef);
this._defData=this._data.concat()}return true},_filterData:function(g,k){this._data=[];this._refData={};var h,c,j,b,a=null;var m={};this._typeDef.typeOrder.each(function(r,i){b=k[r.id];if(!b){return}if(r.filterProc){if(!a){a={}
}a[i]={};m[r.id]=[];var o;for(h=0,j=b.length;h<j;h++){o=r.filterProc(b[h]);if(o===undefined){a[i][h]=null}m[r.id].push(o)}}else{m[r.id]=b.splice(0,b.length)}if(r.resort){if(!a){a={}}if(!a[i]){a[i]={}}var q=undefined,p=[],n=(r.resort===true?function(t,s){if(t<s){return -1
}else{if(t>s){return 1}else{return 0}}}:r.resort);b=m[r.id];for(h=0,j=b.length;h<j;h++){if(b[h]===undefined){a[i][h]=null}else{p.push({val:b[h],idx:h})}}p.sort(function(t,s){return n(t.val,s.val)});b=[];
for(h=0,c=-1,j=p.length;h<j;h++){if(p[h]["val"]!=q){b[++c]=p[h]["val"];q=p[h]["val"]}a[i][p[h]["idx"]]=c}m[r.id]=b}},this);this._refData=m;if(!a){this._data=Du.Hash.copyObj(g);return}var d,f,l,e=[];for(h=0,j=g.length;
h<j;h++){d=false;l=g[h];f=l.concat();for(c in a){if(a[c][l[c]]===null){d=true;break}else{if(a[c][l[c]]!==undefined){f[c]=a[c][g[h][c]]}}}if(!d){this._data.push(f)}}},invoke:function(b){b=($type(b)!="object"?{}:b);
b.dataName=this._dataName;var a=this._startEvent(JSONTbl.EvType.LOAD,b)},getCoreData:function(){if(!this._typeDef||!this._typeDef.typeOrder||!this._data){return null}return{typeOrder:this._typeDef.typeOrder,typeInfo:this._typeDef.typeInfo,updated:this._typeDef.updated,data:this._data,refData:this._refData,dataFilter:this._dataFilter,dataName:this._dataName}
},getDataTypeVals:function(c){if(!c){return false}try{var f=[],b=this._typeDef.typeInfo[c]["index"];for(var g=0,a=this._data.length;g<a;g++){f.push(this._data[g][b])}return f}catch(d){return false}},_proceedEvent:function(a,b,c){switch(b){case JSONTbl.EvType.LOADED:this._loadedProc(c);
break;case JSONTbl.EvType.PAGE:this._pageProc(c);break;case JSONTbl.EvType.SORT:this._sortProc(c);break;case JSONTbl.EvType.EXTRACT:this._exProc(c);break;case JSONTbl.EvType.EXCLUDE:this._exProc(c,true);
break;case JSONTbl.EvType.SEARCH:this._searchProc(c);break;case JSONTbl.EvType.RESTORE:this._restoreProc(c);break}},_loadedProc:function(b){if(!b||!b.data){return false}if(b.defSort){this._defSort=b.defSort
}else{this._defSort=null}if(this._allowMetaData){this._initMeta(b.data[this._metaKey])}this._initData(b.data);var c={index:0,numData:this._data.length,dataName:this._dataName,evSrc:JSONTbl.EvType.LOADED};
if(this._defSort){c.sort=this._defSort}var a=this._startEvent(JSONTbl.EvType.DISPLAY,c)},_pageProc:function(b){if(!b||b.index==null){return false}var c={index:b.index,numData:this._data.length,dataName:this._dataName,evSrc:JSONTbl.EvType.PAGE};
var a=this._startEvent(JSONTbl.EvType.DISPLAY,c)},_sortProc:function(b){if(!b||!b.sort){return false}this._sortData(b.sort);var c={index:0,numData:this._data.length,dataName:this._dataName,sort:b.sort.getSort().concat(),evSrc:JSONTbl.EvType.SORT};
var a=this._startEvent(JSONTbl.EvType.DISPLAY,c)},_sortData:function(d){if(!this._data||d.length<=0){return}var c,a=null;for(var b=d.length-1;b>=0;b--){c=d.getSort(b);if(!c||!this._typeDef.typeInfo[c.key]){continue
}a=this._createSortProc(a,this._typeDef.typeInfo[c.key]["index"],c.desc)}if(!a){return}this._data.sort(a)},_createSortProc:function(b,a,c){return function(e,d){var f=e[a]-d[a];f=(c?-f:f);return(f==0&&b?b(e,d):f)
}},_exProc:function(c,a){if(!c||!c.exTarg||!c.exTarg["id"]||!(c.exTarg["idxData"]>=0)){return false}a=!!a;var h=c.exTarg,j=this._typeDef.typeInfo[h.id]["index"],l=this._data[h.idxData][j];var f=(h.targDef?this._defData:this._data),d;
if(h.idxData<0||h.idxData>=f.length){return}var e=[];for(var k=0,g=f.length;k<g;k++){d=f[k];if((!a&&d[j]==l)||(a&&d[j]!=l)){e.push(d)}}this._data=e;var b={index:0,numData:this._data.length,dataName:this._dataName,exInfo:{id:c.exTarg["id"],idxData:c.exTarg["idxData"],targDef:c.exTarg["targDef"]},evSrc:(a?JSONTbl.EvType.EXCLUDE:JSONTbl.EvType.EXTRACT)};
var i=this._startEvent(JSONTbl.EvType.DISPLAY,b)},_searchProc:function(b){if(!b||!b.sort){return false}this._searchData(b.search);var c={index:0,numData:this._data.length,dataName:this._dataName,evSrc:JSONTbl.EvType.SEARCH};
var a=this._startEvent(JSONTbl.EvType.DISPLAY,c)},_searchData:function(a){if(!this._data||!a){return}return},_restoreProc:function(b){var c="restore";if(b){c=(b.reload?"reload":(b.reveal?"reveal":c))}if(this._proc.restore&&this._proc.restore(c)===false){return
}if(b&&b.reload){return this._startEvent(JSONTbl.EvType.LOAD,{dataName:this._dataName})}if(b&&b.reveal&&this._dataFilter){this._data=this._uncensored.concat()}else{this._data=this._defData.concat()}var d={index:0,numData:this._data.length,dataName:this._dataName,evSrc:JSONTbl.EvType.RESTORE};
if(this._defSort){d.sort=this._defSort}var a=this._startEvent(JSONTbl.EvType.DISPLAY,d)}});JSONTbl.SortCtrl=new Class({Implements:Options,options:{maxSort:4},initialize:function(a){this.setOptions(a);this.length=0;
this._maxSort=(this.options.maxSort&&this.options.maxSort>0?this.options.maxSort:(this.options.maxSort===null?null:4));this._append=false;this._sortSet=[];this._sortOrd=new Hash()},each:function(b,c){if(!b){return
}for(var a=0;a<this.length;a++){b.call(c,this._sortSet[a],a,this)}},getMaxSort:function(){return this._maxSort},isSortLimit:function(){return(this._maxSort==null||this.length<this._maxSort?false:true)},isAppend:function(){return this._append
},setAppend:function(a){this._append=!!a},isRegist:function(a){return(this._sortOrd.get(a)!=null?true:false)},getSort:function(a){if(a==null){return this._sortSet}if(a>=0&&a<this.length){return this._sortSet[a]
}return null},getOrd:function(a){if(!this.isRegist(a)){return null}return this._sortOrd.get(a)},getDesc:function(a){if(!this.isRegist(a)){return null}return this._sortSet[this._sortOrd.get(a)]["desc"]},removeSort:function(b){if(!this.isRegist(b)){return null
}var a=this._sortSet.splice(this._sortOrd.get(b),1);this._sortOrd.erase(b);this.length--;return a},clear:function(){this.length=0;this._append=false;this._sortSet=[];this._sortOrd.empty()},setSort:function(a,b){this.clear();
return this.addSort(a,b)},addSort:function(a,b){a=String(a);if(!a||this.isRegist(a)){return false}if(this._maxSort!==null&&this._sortSet.length>=this._maxSort){return null}this.length=this._sortSet.push({key:a,desc:!!b});
this._sortOrd.set(a,this.length-1);this._append=true;return this.length},revSort:function(b){if(!this.isRegist(b)){return false}var a=this._sortOrd.get(b);this._sortSet[a]["desc"]=!this._sortSet[a]["desc"];
return this._sortSet[a]["desc"]}});JSONTbl.Utils=new Hash({toLocalDate:function(a){var b=JSONTbl.Utils.getDateValue(a);if(!b){return""}return b.month+"/"+b.date+" "+b.hours+":"+b.minutes+":"+b.seconds},toDateStr:function(a){var b=JSONTbl.Utils.getDateValue(a),d,c=new Date();
if(!b){return""}d=b.month+"/"+b.date+" "+b.hours+":"+b.minutes;if(c.getFullYear()!=b.year){d=b.year+"/"+d}return d},getDateValue:(function(){var a=function(b){b="0"+String(b);return b.substring(b.length-2,b.length)
};return function(b){if(b==""){return null}date=new Date(Number(b)*1000);return{year:date.getFullYear(),month:a(date.getMonth()+1),date:a(date.getDate()),hours:a(date.getHours()),minutes:a(date.getMinutes()),seconds:a(date.getSeconds())}
}})(),normalizeTypeID:function(a){if(!a){return""}return String(a).replace(/[^\w\-]/g,"")}});
