// (c)2008 ccioo

var ccioo_ajax_xmlHttp_array=new Array();function ccioo_ajax_createHttp(){if(typeof XMLHttpRequest!="undefined"){return new XMLHttpRequest();}
try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}
return false;}
function ccioo_ajax_getData(url)
{ccioo_ajax_xmlHttp=ccioo_ajax_createHttp();ccioo_ajax_xmlHttp.open("GET",url,false);ccioo_ajax_xmlHttp.send(null);return ccioo_ajax_xmlHttp.responseText;}
function ccioo_ajax_getXmlData(url)
{ccioo_ajax_xmlHttp=ccioo_ajax_createHttp();ccioo_ajax_xmlHttp.open("GET",url,false);ccioo_ajax_xmlHttp.send(null);return ccioo_ajax_xmlHttp.responseXML;}
function ccioo_ajax_setData(url)
{ccioo_ajax_xmlHttp=ccioo_ajax_createHttp();ccioo_ajax_xmlHttp.open("GET",url,false);ccioo_ajax_xmlHttp.send(null);return;}
function ccioo_ajax_getFileSize(url)
{ccioo_ajax_xmlHttp=ccioo_ajax_createHttp();ccioo_ajax_xmlHttp.open("HEAD",url,false);ccioo_ajax_xmlHttp.send(null);return ccioo_ajax_xmlHttp.getResponseHeader("Content-Length");}
function ccioo_ajax_getFile(url,functionName)
{var ss=(url.indexOf("?")>-1)?"&":"?";ccioo_ajax_xmlHttp=ccioo_ajax_createHttp();ccioo_ajax_xmlHttp_array.push(ccioo_ajax_xmlHttp);ccioo_ajax_xmlHttp.open("GET",url+ss+"c_rand="+(new Date()).getTime(),true);ccioo_ajax_xmlHttp.onreadystatechange=function(){if(ccioo_ajax_xmlHttp.readyState==4){if(ccioo_ajax_xmlHttp.status==200){eval(functionName.replace(/xx/,"ccioo_ajax_xmlHttp"));}
else{alert(" 網址 "+url+" 取得失敗, 請聯絡系統管理員!");}}}
ccioo_ajax_xmlHttp.send(null);}
function ccioo_ajax_post(sData,url)
{ccioo_ajax_xmlHttp=ccioo_ajax_createHttp();ccioo_ajax_xmlHttp.open("POST",url,false);ccioo_ajax_xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");ccioo_ajax_xmlHttp.send(sData);if(ccioo_ajax_xmlHttp.responseText=="ok"){playSound(9);}}
function ccioo_packForm(formID,packFunc)
{var fm=document.getElementById(formID);if(fm==null){alert("找不到 "+formID+" 這個表單");return false;}
var form_array=new Array();for(var i=0;i<fm.elements.length;i++){var e=fm.elements[i];if(e.name!=""){switch(e.type)
{case"text":case"hidden":case"password":case"submit":case"textarea":form_array[e.name]=e.value;break;case"select-one":form_array[e.name]=(e[e.selectedIndex].value=="")?e[e.selectedIndex].text:e[e.selectedIndex].value;break;case"select-multiple":for(var j=0;j<e.options.length;j++){if(e.options[j].selected){form_array[e.name]=(form_array[e.name]!=null)?(form_array[e.name]+","):"";form_array[e.name]+=(e.options[j].value=="")?e.options[j].text:e.options[j].value;}}
break;case"radio":if(e.checked){form_array[e.name]=e.value;}
break;case"checkbox":if(e.checked){form_array[e.name]=(form_array[e.name]!=null)?(form_array[e.name]+","):"";form_array[e.name]+=e.value;}
break;case"button":case"reset":case"image":case"file":break;}}}
var sData;var k=0;switch(packFunc)
{case 1:sData=""
for(key in form_array){if(k>0){sData+="&";}
sData+=key+"="+encodeURI(form_array[key]);k++;}
break;case 2:sData="INSERT INTO "+cst.TableName+" ( ";var sDataTail="";for(key in form_array){if(k>0){sData+=", ";sDataTail+=", ";}
sData+=key;for(var s in cTable.Fields){if(cTable.Fields[s].Name==key){switch(cTable.Fields[s].DataType)
{case"bit":case"bigint":case"int":case"integer":case"smallint":case"tinyint":case"long":case"float":case"double":case"real":case"decimal":case"numeric":sDataTail+=encodeURI(form_array[key].replace(/\'/g,"''"));break;default:sDataTail+="'"+encodeURI(form_array[key].replace(/\'/g,"''"))+"'";break;}}}
k++;}
sData+=" ) VALUES ( "+sDataTail+" )";sData+=";"+cst.TableName+"~"+"SELECT "+cst.Fields+" FROM "+cst.TableName+" WHERE "+cst.BaseFilter+" ORDER BY "+cst.Sort+"~10";alert(sData);break;case 3:sData="UPDATE "+cst.TableName+" SET ";sPrimaryKey="";for(key in form_array){if(key.substr(2)=="_Serial"){sPrimaryKey=key+" = '"+encodeURI(form_array[key].replace(/\'/g,"''"))+"'";}
else{if(k>0){sData+=", ";}
for(var s in cTable.Fields){if(cTable.Fields[s].Name==key){switch(cTable.Fields[s].DataType)
{case"bit":case"bigint":case"int":case"integer":case"smallint":case"tinyint":case"long":case"float":case"double":case"real":case"decimal":case"numeric":sData+=key+" = "+encodeURI(form_array[key].replace(/\'/g,"''"));break;default:sData+=key+" = '"+encodeURI(form_array[key].replace(/\'/g,"''"))+"'";break;}}}
k++;}}
sData+=" WHERE "+sPrimaryKey;sData+=";"+cst.TableName+"~"+"SELECT "+cst.Fields+" FROM "+cst.TableName+" WHERE "+cst.BaseFilter+" ORDER BY "+cst.Sort+"~10";alert(sData);break;}
sData="a="+ccioo_encrypt(sData);return sData;}
function ccioo_ajax_parseTable(myXML,objID)
{var sTable="<table class=\"c_a_table\" align=\"center\">";var objRows=myXML.getElementsByTagName("row");var tr_single=true;for(var i=0;i<objRows.length&&i<ccioo_ajax_pageSize;i++)
{sTable+="<tr class=\"c_a_tr c_a_tr_"+(tr_single?"s":"d")+" c_a_tr_"+(i+1)+"\">";var objCells=objRows[i].getElementsByTagName("cell");var td_single=true;for(var j=0;j<objCells.length;j++)
{sTable+="<td class=\"c_a_td c_a_td_"+(td_single?"s":"d")+" c_a_td_"+(j+1)+"\">";sTable+=objCells[j].firstChild.nodeValue+"</td>";td_single=!td_single;}
sTable+="</tr>";tr_single=!tr_single;}
sTable+="</table>";document.getElementById(objID).innerHTML=sTable;}
function ccioo_ajax_pager(objID)
{var sPager="<div class=\"c_a_pager\">";var totalPage=Math.ceil(ccioo_ajax_dataCount/ccioo_ajax_pageSize);var tenPages=Math.floor((ccioo_ajax_pageNumber-1)/10)*10;if(ccioo_ajax_pageNumber>1){sPager+="<a href=\"javascript:c_a_jump( '"+objID+"', 1 )\" class=\"c_a_pager\">&nbsp;第一頁&nbsp;</a>";}
if(ccioo_ajax_pageNumber>1){sPager+="<a href=\"javascript:c_a_jump( '"+objID+"', "+(ccioo_ajax_pageNumber-1)+" )\" class=\"c_a_pager\">&nbsp;上一頁&nbsp;</a>";}
for(var i=(1+tenPages);i<=(10+tenPages);i++)
{if(i==ccioo_ajax_pageNumber){sPager+="<span class=\"c_a_pager\">&nbsp;["+i+"]&nbsp;</span>";}
else{if(i<=totalPage){sPager+="<a href=\"javascript:c_a_jump( '"+objID+"',"+i+" )\" class=\"c_a_pager\">&nbsp;"+i+"&nbsp;</a>";}}}
if(ccioo_ajax_pageNumber<totalPage){sPager+="<a href=\"javascript:c_a_jump( '"+objID+"', "+(ccioo_ajax_pageNumber+1)+" )\" class=\"c_a_pager\">&nbsp;下一頁&nbsp;</a>";}
if(ccioo_ajax_pageNumber<totalPage){sPager+="<a href=\"javascript:c_a_jump( '"+objID+"',"+totalPage+" )\" class=\"c_a_pager\">&nbsp;最終頁&nbsp;</a>";}
sPager+="</div>";document.getElementById(objID).innerHTML=sPager;}
var ccioo_ajax_pageNumber,ccioo_ajax_dataCount,ccioo_ajax_pageSize,ccioo_ajax_tableArrayIndex,ccioo_ajax_dataTable,ccioo_ajax_getPages,ccioo_ajax_shouldGetPages,ccioo_ajax_pagePath,ccioo_ajax_updateTime;function ccioo_ajax_getPage(path)
{ccioo_ajax_pageNumber=1;ccioo_ajax_dataCount=0;ccioo_ajax_pageSize=0;ccioo_ajax_tableArrayIndex=0;ccioo_ajax_i=0;ccioo_ajax_xmlHttp_array=new Array();ccioo_ajax_pagePath=path;ccioo_ajax_getFile(path+"/config.xml","");ccioo_ajax_getFile(path+"/count.xml","");ccioo_ajax_getFile(path+"/table1.xml","");ccioo_ajax_waitData();ccioo_ajax_checkData();}
var ccioo_ajax_getDataFinished,ccioo_ajax_i;function ccioo_ajax_waitData()
{for(var i=0;i<ccioo_ajax_xmlHttp_array.length;i++)
{if(ccioo_ajax_xmlHttp_array[i].readyState==4&&ccioo_ajax_xmlHttp_array[i].responseText.length>0)
{var objTag1=ccioo_ajax_xmlHttp_array[i].responseXML.getElementsByTagName("pagesize");if(objTag1.length==1){ccioo_ajax_pageSize=parseInt(objTag1[0].firstChild.nodeValue);}
var objTag2=ccioo_ajax_xmlHttp_array[i].responseXML.getElementsByTagName("count");if(objTag2.length==1){ccioo_ajax_dataCount=parseInt(objTag2[0].firstChild.nodeValue);objTag2=ccioo_ajax_xmlHttp_array[i].responseXML.getElementsByTagName("update");ccioo_ajax_updateTime=parseInt(objTag2[0].firstChild.nodeValue);}
var objTag3=ccioo_ajax_xmlHttp_array[i].responseXML.getElementsByTagName("table");if(objTag3.length==1&&ccioo_ajax_tableArrayIndex==0){ccioo_ajax_tableArrayIndex=i;}}}
if(ccioo_ajax_dataCount==0){ccioo_ajax_getDataFinished=false;}
if(ccioo_ajax_pageSize==0){ccioo_ajax_getDataFinished=false;}
if(ccioo_ajax_tableArrayIndex==0){ccioo_ajax_getDataFinished=false;}
if(ccioo_ajax_getDataFinished)
{var totalPage=Math.ceil(ccioo_ajax_dataCount/ccioo_ajax_pageSize);ccioo_ajax_dataTable=new Array(totalPage+1);ccioo_ajax_dataTable[1]=ccioo_ajax_xmlHttp_array[ccioo_ajax_tableArrayIndex].responseXML;ccioo_ajax_parseTable(ccioo_ajax_dataTable[1],"span_output");ccioo_ajax_pager("span_pager");ccioo_ajax_getOtherPage();}
else{if(ccioo_ajax_i<10)
{setTimeout("ccioo_ajax_waitData()",500);}}
ccioo_ajax_getDataFinished=true;ccioo_ajax_i++;}
var ccioo_ajax_showWaiting=false;function c_a_jump(objID,pageNumber)
{ccioo_ajax_pageNumber=pageNumber;if(ccioo_ajax_dataTable[ccioo_ajax_pageNumber]!=null)
{ccioo_ajax_parseTable(ccioo_ajax_dataTable[pageNumber],"span_output");ccioo_ajax_showWaiting=false;if(ccioo_ajax_pageNumber%10==0){ccioo_ajax_pageNumber++;ccioo_ajax_getOtherPage();ccioo_ajax_pageNumber--;}}
else
{if(!ccioo_ajax_showWaiting){document.getElementById("span_output").innerHTML+="<div style=\"position:absolute; left:"+(document.body.clientWidth/2-32/2)+"; top:230; z-index:2;\"><img src=\"/ccioo/Ajax/images/loading_red.gif\" width=\"32\" height=\"32\"></div>";ccioo_ajax_showWaiting=true;}
ccioo_ajax_getOtherPage();setTimeout("c_a_jump( '"+objID+"', "+pageNumber+" )",500);}
ccioo_ajax_pager(objID);}
function ccioo_ajax_getOtherPage()
{ccioo_ajax_xmlHttp_array=new Array();var totalPage=Math.ceil(ccioo_ajax_dataCount/ccioo_ajax_pageSize);var tenPages=Math.floor((ccioo_ajax_pageNumber-1)/ccioo_ajax_pageSize)*ccioo_ajax_pageSize;for(var i=(1+tenPages);i<=(10+tenPages);i++)
{if(i<=totalPage){ccioo_ajax_getFile(ccioo_ajax_pagePath+"/table"+i+".xml","");}}
ccioo_ajax_i=0;ccioo_ajax_getPages=0;ccioo_ajax_shouldGetPages=10;ccioo_ajax_waitOtherPage();}
function ccioo_ajax_waitOtherPage()
{for(var i=0;i<ccioo_ajax_xmlHttp_array.length;i++)
{if(ccioo_ajax_xmlHttp_array[i].readyState==4&&ccioo_ajax_xmlHttp_array[i].responseText.length>0)
{var objTag=ccioo_ajax_xmlHttp_array[i].responseXML.getElementsByTagName("table");if(objTag.length==1){ccioo_ajax_dataTable[objTag[0].getAttribute("serial")]=ccioo_ajax_xmlHttp_array[i].responseXML;ccioo_ajax_getPages++;}}}
if(ccioo_ajax_getPages<ccioo_ajax_shouldGetPages&&ccioo_ajax_i<10)
{setTimeout("ccioo_ajax_waitOtherPage()",500);}
ccioo_ajax_i++;}
function ccioo_ajax_checkData()
{ccioo_ajax_xmlHttp=ccioo_ajax_createHttp();ccioo_ajax_xmlHttp.open("GET",ccioo_ajax_pagePath+"/count.xml?c_rand="+(new Date()).getTime(),false);ccioo_ajax_xmlHttp.send(null);var objTag=ccioo_ajax_xmlHttp.responseXML.getElementsByTagName("update");if(objTag.length==1){if(parseInt(objTag[0].firstChild.nodeValue)>ccioo_ajax_updateTime){ccioo_ajax_updateTime=parseInt(objTag[0].firstChild.nodeValue);objTag=ccioo_ajax_xmlHttp.responseXML.getElementsByTagName("count");ccioo_ajax_dataCount=parseInt(objTag[0].firstChild.nodeValue);var totalPage=Math.ceil(ccioo_ajax_dataCount/ccioo_ajax_pageSize);ccioo_ajax_dataTable=new Array(totalPage+1);ccioo_ajax_getOtherPage();c_a_jump("span_pager",ccioo_ajax_pageNumber);}}
setTimeout("ccioo_ajax_checkData()",60000);}
function ccioo_encrypt(str_original)
{var s=str_original;s=xxtea_encrypt(s,"ji3g4jo454eji6");s=Base64.encode(s);return s;}
function long2str(v,w){var vl=v.length;var n=(vl-1)<<2;if(w){var m=v[vl-1];if((m<n-3)||(m>n))return null;n=m;}
for(var i=0;i<vl;i++){v[i]=String.fromCharCode(v[i]&0xff,v[i]>>>8&0xff,v[i]>>>16&0xff,v[i]>>>24&0xff);}
if(w){return v.join('').substring(0,n);}
else{return v.join('');}}
function str2long(s,w){var len=s.length;var v=[];for(var i=0;i<len;i+=4){v[i>>2]=s.charCodeAt(i)|s.charCodeAt(i+1)<<8|s.charCodeAt(i+2)<<16|s.charCodeAt(i+3)<<24;}
if(w){v[v.length]=len;}
return v;}
function xxtea_encrypt(str,key){if(str==""){return"";}
var v=str2long(str,true);var k=str2long(key,false);if(k.length<4){k.length=4;}
var n=v.length-1;var z=v[n],y=v[0],delta=0x9E3779B9;var mx,e,p,q=Math.floor(6+52/(n+1)),sum=0;while(0<q--){sum=sum+delta&0xffffffff;e=sum>>>2&3;for(p=0;p<n;p++){y=v[p+1];mx=(z>>>5^y<<2)+(y>>>3^z<<4)^(sum^y)+(k[p&3^e]^z);z=v[p]=v[p]+mx&0xffffffff;}
y=v[0];mx=(z>>>5^y<<2)+(y>>>3^z<<4)^(sum^y)+(k[p&3^e]^z);z=v[n]=v[n]+mx&0xffffffff;}
return long2str(v,false);}
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output=output+
this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+
this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4);}
return output;},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
if(enc4!=64){output=output+String.fromCharCode(chr3);}}
output=Base64._utf8_decode(output);return output;},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}
else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}
else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
return utftext;},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}
else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}
else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
return string;}}
