var glTable3=new Class({Implements:[Events,Options],options:{id:"",url:"",dfIndexColWidth:34,loadMeta:true},initialize:function(L,K){var I=this;I.pageLoaded=[];I.columns=[];I.query=new Hash({start:0});I.gifloading="/js/img/loading.gif";K.loadMeta==$pick(K.loadMeta,I.options.loadMeta);I.setOptions(K);I.container=$(L)||alert("container "+L+" not found...");if($defined(K.qstr)){if(K.qstr.contains("&")){var G=K.qstr.split("&");G.each(function(B,C){var A=B.split("=");I.query.set(A[0],A[1])})}else{var H=K.qstr.split("=");I.query.set(H[0],H[1])}}if(I.options.loadMeta){I._load_meta()}else{I._set_meta(K);I.totalpage=Math.floor(I.totalRows/I.pageRows);if(I.totalRows%I.pageRows!=0){I.totalpage+=1}if(isNaN(I.totalpage)){I.totalpage=1}I.data=new Array(I.totalpage);I.s=new Array(I.totalRows);I.sortedCol=-1;I.sortUp=false;for(var J=0;J<I.totalRows;J++){I.s[J]=J}I.curp=0;I.k=0;I._init_meta()}},_load_meta:function(){var D=this;var C=new Request.JSON({url:D.options.url,onSuccess:function(B,A){D._set_meta(B);D.totalpage=Math.floor(D.totalRows/D.pageRows);if(D.totalRows%D.pageRows!=0){D.totalpage+=1}if(isNaN(D.totalpage)){D.totalpage=1}D.data=new Array(D.totalpage);D.s=new Array(D.totalRows);D.sortedCol=-1;D.sortUp=false;for(var F=0;F<D.totalRows;F++){D.s[F]=F}D.curp=0;D.k=0;D._init_meta()}}).get({})},_set_meta:function(F){if(F==null){alert("an error has occured due to network failure or invalid URL")}var G=this;G.dataurl=$pick(F.dataurl,G.options.url);G.pageRows=$pick(F.pageRows,15);G.totalRows=$pick(F.totalRows,F.pageRows);G.title=$pick(F.title,null);G.indexColShow=$pick(F.indexColShow,true);G.titleShow=$pick(F.titleShow,true);G.navBarShow=$pick(F.navBarShow,true);G.lang=$pick(F.lang,"zh");G.backgroundShow=$pick(F.backgroundShow,true);if(F.columns){for(var H=0,E=0;H<F.columns.length;H++,E++){G.columns[E]={};G.columns[E].cap=F.columns[H].cap;G.columns[E].id=F.columns[H].id;G.columns[E].width=G.dfcolwidth;G.columns[E].type="text";G.columns[E].classname="dft";G.columns[E].sortable=false;if($defined(F.columns[H].width)){G.columns[E].width=F.columns[H].width}if($defined(F.columns[H].id)){G.columns[E].id=F.columns[H].id}if($defined(F.columns[H].type)){G.columns[E].type=F.columns[H].type}if($defined(F.columns[H].classname)){G.columns[E].classname=F.columns[H].classname}if($defined(F.columns[H].sortable)){G.columns[E].sortable=F.columns[H].sortable}}}},_init_meta:function(){var j=this;if(j.backgroundShow){j.container.setStyles({padding:"0px 0px 0px 10px","background-color":"#eeeeff"})}var v=new Element("div").inject(j.container);j.container=v;if(j.titleShow==true&&j.title!=null){var AR=new Element("div",{id:"tb3_title",styles:{"text-align":"center"},html:j.title}).inject(j.container)}var y=new Element("table",{"class":"gltb2"}).inject(j.container);var p=new Element("tbody").inject(y);var AB=new Element("tr").inject(p);j.totalwidth=0;if(j.indexColShow){var AG=new Element("th",{id:j.options.id+"th::No","class":"th",styles:{width:j.options.dfIndexColWidth}}).inject(AB);var AM=new Element("div",{styles:{cursor:"pointer",width:j.options.dfIndexColWidth,"text-align":"center"}}).inject(AG);AM.set("text",j.getCaption("No."));AM.addEvent("click",function(){j.sort(-1)});j.totalwidth+=AG.getCoordinates().width}for(var AN=0;AN<j.columns.length;AN++){var q=j.columns[AN].cap;var t=j.columns[AN].id;var AG=new Element("th",{id:j.options.id+"th::"+AN,"class":"th",styles:{width:j.columns[AN].width}}).inject(AB);var AM=new Element("div",{"class":"divth",value:AN,styles:{width:j.columns[AN].width}}).inject(AG);AM.set("text",q);if(j.columns[AN].sortable){AM.setStyle("cursor","pointer");var AF=new Element("img",{"class":"imgsort",src:"/js/img/sortable.gif"}).inject(AM);AM.addEvent("click",function(A){A.stop();j.sort(this.value)})}j.totalwidth+=AG.getCoordinates().width}j.container.setStyle("width",j.totalwidth+15);j.loading=new Element("div",{styles:{position:"absolute","z-index":"100"}}).inject(j.container);var AF=new Element("img",{src:j.gifloading}).inject(j.loading);for(var AN=0;AN<j.pageRows;AN++){var AB=new Element("tr").inject(p);AB.addEvent("mouseover",function(){this.addClass("rowmouseover")});AB.addEvent("mouseout",function(){this.removeClass("rowmouseover")});AB.addEvent("click",function(){$(j.container).getElements("tr.rowselected").removeClass("rowselected");this.addClass("rowselected")});AB.addClass(((AN%2)==0)?"even":"odd");if(j.indexColShow){var w=new Element("td",{styles:{width:j.options.dfIndexColWidth}}).inject(AB);var AM=new Element("div",{id:j.id+"__No__"+AN,styles:{width:j.options.dfIndexColWidth,"text-align":"center"}}).inject(w)}for(var AO=0;AO<j.columns.length;AO++){var x=new Element("td",{styles:{width:j.columns[0].width}}).inject(AB);var AQ=new Element("div",{id:j.options.id+"tddiv"+AN+"::"+AO,styles:{width:j.columns[AO].width},"class":j.columns[AO].classname}).inject(x)}}if(j.navBarShow){var AS=new Element("div",{"class":"tb3_tail_padding"}).inject(j.container);var AR=new Element("div",{"class":"tb3_tail"}).inject(j.container);var AU=new Element("span",{id:j.options.id+"tb3_tail_pgnum",styles:{"padding-left":"5px","float":"left"}}).inject(AR);for(var AN=1;AN<j.totalpage+1;AN++){var z=new Element("span",{text:"  "}).inject(AU);if(AN==1){z.set("text","")}var AH=new Element("a").inject(z);AH.set("href","#");AO=AN-1;var AC=new Element("font",{id:j.options.id+"numnav"+AO,"class":"paging_nav",value:AN}).inject(AH);AC.set("text",AN);AC.addEvent("click",function(A){A.stop();j.loadPage(this.value-1)})}var AE=new Element("span",{html:"&nbsp;","class":"tb3_tail_pgnav",styles:{"padding-right":"5px","float":"right"}}).inject(AR);var AT=new Element("span",{id:"tail_nop",styles:{clear:"both"}}).inject(AE);var AK=new Element("span",{html:""}).inject(AT);var s=new Element("a",{href:"#"}).inject(AK);var AI=new Element("font",{"class":"paging_nav",text:j.getCaption("Home")}).inject(s);AI.addEvent("click",function(A){A.stop();$(j.container).getElements("font.nav_selected").removeClass("nav_selected");this.addClass("nav_selected");j.loadPage(0)});var AA=new Element("span",{html:"&nbsp;&nbsp;&nbsp;"}).inject(AT);var AJ=new Element("a",{href:"#"}).inject(AA);var u=new Element("font",{"class":"paging_nav",text:j.getCaption("Prev")}).inject(AJ);u.addEvent("click",function(A){A.stop();$(j.container).getElements("font.nav_selected").removeClass("nav_selected");this.addClass("nav_selected");if(j.curp>=1){j.loadPage(j.curp-1)}});var AP=new Element("span",{html:"&nbsp;&nbsp;&nbsp;"}).inject(AT);var m=new Element("a",{href:"#"}).inject(AP);var AL=new Element("font",{"class":"paging_nav",text:j.getCaption("Next")}).inject(m);AL.addEvent("click",function(A){A.stop();$(j.container).getElements("font.nav_selected").removeClass("nav_selected");this.addClass("nav_selected");if(j.curp<j.totalpage-1){j.loadPage(j.curp+1)}});var r=new Element("span",{html:"&nbsp;&nbsp;&nbsp;"}).inject(AT);var n=new Element("a",{href:"#"}).inject(r);var AD=new Element("font",{"class":"paging_nav",text:j.getCaption("End")}).inject(n);AD.addEvent("click",function(A){A.stop();$(j.container).getElements("font.nav_selected").removeClass("nav_selected");this.addClass("nav_selected");j.loadPage(j.totalpage-1)})}else{if(j.totalRows>j.pageRows){var AS=new Element("div",{"class":"tb3_tail_padding"}).inject(j.container);var AR=new Element("div",{"class":"tb3_tail"}).inject(j.container);var AE=new Element("span",{html:"&nbsp;","class":"tb3_tail_pgnav",styles:{"float":"right","padding-right":"12px"}}).inject(AR);var AA=new Element("span",{html:"&nbsp;"}).inject(AE);var o=new Element("a",{href:"#"}).inject(AA);new Element("span",{"class":"tb3_page_nav_prev",styles:{width:"15px","padding-right":"15px"}}).inject(o);o.addEvent("click",function(A){A.stop();if(j.curp>=1){j.loadPage(j.curp-1)}});var AP=new Element("span",{html:"&nbsp;"}).inject(AE);var m=new Element("a",{href:"#"}).inject(AP);new Element("span",{"class":"tb3_page_nav_next",styles:{width:"15px","padding-left":"15px"}}).inject(m);m.addEvent("click",function(A){A.stop();if(j.curp<j.totalpage-1){j.loadPage(j.curp+1)}})}}j.loadPage(0)},loadPage:function(F,H){var G=this;if(F>=0&&G.pageLoaded.contains(F)){G.refresh(F);return }G.showLoading();G.query.set("start",F*G.pageRows);var E=new Request.JSON({url:G.dataurl,onFailure:G.hideLoading(),onSuccess:function(B,A){if(F>=0){G.data[F]=new Array();B.each(function(C,D){G.data[F][D]=C.data});G.pageLoaded.push(F);G.hideLoading();G.refresh(F)}else{B.each(function(C,K){var L=Math.floor(K/G.pageRows);var D=K%G.pageRows;if(D==0){G.data[L]=new Array();G.pageLoaded.push(L)}G.data[L][D]=C.data});G.hideLoading();G._sort(H)}}}).get(G.query)},sort:function(D){var F=this;for(i=0;i<F.totalpage;i++){if(!F.pageLoaded.contains(i)){F.loadPage(-1,D);return }}if(F.sortedCol==D){F._reverse();if(D>=0){var E=F.container.getElementById(F.options.id+"th::"+D);if(F.sortUp){F.sortUp=false;E.getFirst().getLast().src="/js/img/sorted_up.gif"}else{F.sortUp=true;E.getFirst().getLast().src="/js/img/sorted_down.gif"}}F.refresh(F.curp)}else{F._sort(D)}},refresh:function(page){var t=this;t.curp=page;var dArrayAfterSort=new Array();for(var i=0;i<t.pageRows;i++){var pageSort=Math.floor(t.s[t.curp*t.pageRows+i]/t.pageRows);var rowSort=t.s[t.curp*t.pageRows+i]%t.pageRows;if(pageSort*t.pageRows+rowSort<t.totalRows){dArrayAfterSort[i]=t.data[pageSort][rowSort]}if(t.indexColShow==true){var iel=t.container.getElementById(t.id+"__No__"+i);iel.set("text",page*t.pageRows+i+1)}for(var j=0;j<t.columns.length;j++){var el=t.container.getElementById(t.options.id+"tddiv"+i+"::"+j);el.empty();if(el.getNext()){el.getNext().dispose()}if(i<dArrayAfterSort.length){if(dArrayAfterSort[i][j]==null||dArrayAfterSort[i][j]==""){el.set("html","&nbsp;")}else{if(t.columns[j].type=="html"){var textvalue=dArrayAfterSort[i][j];if(textvalue.toString().contains("\n")){textvalue=textvalue.replace(/\n/g,"<BR/>").replace(/\r/g,"")}var http=textvalue.toString().substring(0,13);if(textvalue!=null&&textvalue!=""&&textvalue!="&nbsp;"&&!http.contains('<a href="http')){textvalue=addHREF(textvalue)}el.set("html",textvalue)}else{if(t.columns[j].type=="text"||t.columns[j].type=="float"){el.set("text",dArrayAfterSort[i][j])}else{if(t.columns[j].type=="int"){if(!isNaN(dArrayAfterSort[i][j])){el.set("text",dArrayAfterSort[i][j])}else{el.set("text","")}}else{if(t.columns[j].type=="url"){el.set("html",'<a href="'+dArrayAfterSort[i][j]+'" >'+dArrayAfterSort[i][j])+"</a>"}else{if(t.columns[j].type=="rating"){var rating=new GLRatings({score:eval(dArrayAfterSort[i][j])});el.empty();el.grab(rating.element)}else{if(t.columns[j].type=="snapshot"){}else{if(t.columns[j].type=="progress"){var progbar=new colorBar({barwidth:180,barheight:14,inPercentage:false,barwidth:t.columns[j].width-5});var s1=dArrayAfterSort[i][j].split("::");var nume=parseInt(s1[0]);var deno=parseInt(s1[1]);if(!isNaN(nume)&&!isNaN(deno)){progbar.set(nume,deno);el.grab(progbar.element)}else{el.set("html","")}}}}}}}}}}else{el.set("html","&nbsp;")}}}if(t.navBarShow){$(t.container).getElements("font.page_selected").removeClass("page_selected");var nav=$(t.container).getElementById(t.options.id+"numnav"+page);if(nav!=null){nav.addClass("page_selected")}}},showLoading:function(){var C=this;var D=C.container.getCoordinates();C.loading.setStyles({visibility:"visible",top:D.top+(D.height/2)-16,left:D.left+(C.totalwidth/2)-16})},hideLoading:function(){var B=this;B.loading.setStyles({visibility:"hidden"})},_sort:function(R){var T=this;if(R>=T.columns.length){return }T.sortUp=true;var Z=new Array(T.totalRows);if(R<0){T.k=0;for(var a=0;a<T.totalRows;a++){T.s[a]=a}if(T.sortedCol!=-1){var Q=T.container.getElementById(T.options.id+"th::"+T.sortedCol);Q.getFirst().getLast().src="/js/img/sortable.gif"}T.sortedCol=R;T.refresh(T.curp);return }var d=0;if(T.columns[R].type=="int"||T.columns[R].type=="float"||T.columns[R].type=="rating"){for(var a=0;a<T.totalpage;a++){for(var c=0;c<T.pageRows;c++){if(a*T.pageRows+c>=T.totalRows){continue}if(T.columns[R].type=="int"){var U=parseInt(T.data[a][c][R])}if(T.columns[R].type=="float"||T.columns[R].type=="rating"){var U=parseFloat(T.data[a][c][R])}if(!isNaN(U)){rArray=new Array(2);rArray[0]=U;rArray[1]=a*T.pageRows+c;Z[a*T.pageRows+c-d]=rArray}else{T.s[T.s.length-1-d]=a*T.pageRows+c;d++}}}Z.sort(T._numSort)}else{if(T.columns[R].type=="text"||T.columns[R].type=="html"||T.columns[R].type=="url"){for(var a=0;a<T.totalpage;a++){for(var c=0;c<T.pageRows;c++){if(a*T.pageRows+c>=T.totalRows){continue}var U=T.data[a][c][R];if(U!=null&&U!="&nbsp;"&&U!=""&&U!="null"){rArray=new Array(2);if(T.columns[R].type=="url"){var V=U.lastIndexOf("<");if(V>0){var X=U.substring(0,V);U=X.substring(X.lastIndexOf(">")+1)}}rArray[0]=U;rArray[1]=a*T.pageRows+c;Z[a*T.pageRows+c-d]=rArray}else{T.s[T.s.length-1-d]=a*T.pageRows+c;d++}}}Z.sort(T._strSort)}else{if(T.columns[R].type=="progress"){for(var a=0;a<T.totalpage;a++){for(var c=0;c<T.pageRows;c++){if(a*T.pageRows+c>=T.totalRows){continue}var W=T.data[a][c][R].split("::");var b=parseInt(W[0]);var Y=parseInt(W[1]);if(!isNaN(b)&&!isNaN(Y)){rArray=new Array(2);rArray[0]=b/Y;rArray[1]=a*T.pageRows+c;Z[a*T.pageRows+c-d]=rArray}else{T.s[T.s.length-1-d]=a*T.pageRows+c;d++}}}Z.sort(T._strSort)}}}T.k=d;for(var P=0;P<Z.length;P++){if($defined(Z[P])){T.s[P]=Z[P][1]}}var S=T.container.getElementById(T.options.id+"th::"+R);S.getFirst().getLast().src="/js/img/sorted_down.gif";if(T.sortedCol!=-1){var Q=T.container.getElementById(T.options.id+"th::"+T.sortedCol);Q.getFirst().getLast().src="/js/img/sortable.gif"}T.sortedCol=R;if(T.columns[R].type=="progress"){T._reverse()}T.refresh(T.curp)},_reverse:function(){var F=this;var E=new Array(F.s.length-F.k);for(var D=0;D<F.s.length-F.k;D++){E[D]=F.s[D]}E.reverse();for(var D=0;D<F.s.length-F.k;D++){F.s[D]=E[D]}},_strSort:function(D,C){if(D[0]>C[0]){return 1}if(D[0]<C[0]){return -1}if(D[0]==C[0]){return 0}},_numSort:function(D,C){return D[0]-C[0]},getCaption:function(B){if(this.lang=="zh"){if(B=="No."){return"序号"}if(B=="Paging"){return"分页"}if(B=="Home"){return"第一页"}if(B=="Prev"){return"上一页"}if(B=="Next"){return"下一页"}if(B=="End"){return"最后一页"}}if(this.lang="en"){return B}}});
