pixmicat - Blame information for rev 849

Subversion Repositories:
Rev:
Rev Author Line No. Line
725 scribe 1 // ==ClosureCompiler==
2 // @compilation_level SIMPLE_OPTIMIZATIONS
3 // @output_file_name mainscript.js
4 // ==/ClosureCompiler==
5 /*jslint browser: true, devel: true, undef: true, eqeqeq: true, regexp: true, newcap: true, immed: true */
6 /*global window, msgs, ext */
7  
8 var previous_replyhlno = 0;
9 var arrPresetFunc = [];
10 var arrSakuraTbl = [[63223, 12353, 82], [63306, 12449, 85], [63486, 12535, 4]]; // Big5-Sakura to Unicode Table
11 var arrSakuraTblsp = [[63216, 63219, 63210, 63211, 63212, 63213], [12293, 12540, 12541, 12542, 12445, 14446]]; // Special Characters
12  
13 /* getElementById shortcut */
14 function $g(i){ return document.getElementById(i); }
15  
16 /* 讀取Cookies值 */
17 function getCookie(key){
18         var tmp1, tmp2, xx1 = 0, xx2 = 0, xx3;
19         tmp1 = ' '+document.cookie+';';
20         var len = tmp1.length;
21         while(xx1 < len){
22                 xx2 = tmp1.indexOf(';', xx1);
23                 tmp2 = tmp1.substring(xx1 + 1, xx2);
24                 xx3 = tmp2.indexOf('=');
25                 if(tmp2.substring(0, xx3)===key){ return window.unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)); }
26                 xx1 = xx2 + 1;
27         }
28         return '';
29 }
30  
31 /* 寫入Cookies值 */
32 function setCookie(name, value){
33         var exp = new Date();
34         exp.setTime(exp.getTime() + 86400000 * 7);
35         document.cookie = name+'='+window.escape(value)+'; expires='+exp.toGMTString();
36 }
37  
38 /* 將Unicode使用者造字區字集之日文對應至Unicode日文假名區 */
39 function replace_sakura(tar_obj){
40         var temp = tar_obj.value, i = 0, p = 0;
41         var Tblcount = arrSakuraTbl.length, Tbl;
42         for(i = 0; i < Tblcount; i++){ // 處理假名部分
43                 Tbl = arrSakuraTbl[i];
44                 for(p = 0; p <= Tbl[2]; p++){ temp = temp.replace(new RegExp(String.fromCharCode(Tbl[0] + p), 'g'), String.fromCharCode(Tbl[1] + p)); }
45         }
46         Tblcount = arrSakuraTblsp[0].legnth;
47         for(i = 0; i < Tblcount; i++){ // 處理符號部分
48                 Tbl = arrSakuraTblsp;
49                 temp = temp.replace(new RegExp(String.fromCharCode(Tbl[0][i]), 'g'), String.fromCharCode(Tbl[1][i]));
50         }
51         tar_obj.value = temp;
52 }
53  
54 /* 檢查使用者是否輸入了Unicode使用者造字區字集 (多為櫻花日文假名) */
55 function check_sakura(field){
56         var tar_obj = $g(field);
57         var checktext = window.escape(tar_obj.value).toLowerCase(); // %uxxxx形式 (全部小寫)
58         var regular_exp = /%uf(6[ef]|7[0-9a-f]|80)[0-9a-f]/; // U+F6Ex~F80x為櫻花日文的概略位置 (比對時用小寫)
59         if(checktext.match(regular_exp)!==null){
60                 alert(msgs[2]);
61                 replace_sakura(tar_obj); // 代轉
62         }
63 }
64  
65 /* 取出Cookies的值並填入表單 */
66 function l1(){
67         var N = getCookie('namec'), E = getCookie('emailc'), obj;
68         if((obj = $g('fname'))){ obj.value = N; }
69         if((obj = $g('femail'))){ obj.value = E; }
70 }
71  
72 /* 填入表單密碼 */
73 function l2(){
74         var P = getCookie('pwdc'), d = document, forms_length = d.forms.length;
75         for(var i = 0; i < forms_length; i++){
76                 if(d.forms[i].pwd){ d.forms[i].pwd.value = P; }
77         }
78 }
79  
80 /* 前端檢查表單機制 */
81 function c(){
82         var upfilevalue, j, ext_allowed, ext_length;
83         try{
84                 if(!$g('fupfile')){ return true; }
85                 upfilevalue = $g('fupfile').value;
86                 if(!upfilevalue && !$g('fcom').value){ alert(msgs[0]); return false; }
87                 if(upfilevalue){
88                         ext_allowed = 0; ext_length = ext.length;
89                         for(j = 0; j < ext_length; j++){
90                                 if(upfilevalue.substr(upfilevalue.length - 3, 3).toUpperCase()===ext[j]){
91                                         ext_allowed = 1;
92                                         break;
93                                 }
94                         }
95                         if(!ext_allowed){ alert(msgs[1]); return false; }
96                 }
97                 check_sakura('fcom'); check_sakura('fname'); check_sakura('fsub'); // 檢查櫻花日文
98                 if(window.clipboardData){ document.forms[0].upfile_path.value = upfilevalue; } // IE的Senddata為完整路徑名稱
99                 document.forms[0].sendbtn.disabled = true;
100         }catch(e){  }
101         if($g('fname').value){ setCookie('namec', $g('fname').value); } // Cookies寫入名稱
102 }
103  
104 /* 動態改變超連結的視窗目標 */
105 function fixalllinks(){
106         if(!document.getElementsByTagName){ return; }
107         var anchor, anchors = document.getElementsByTagName('a');
108         var anchors_length = anchors.length;
109         for(var i = 0; i < anchors_length; i++){
110                 anchor = anchors[i];
111                 if(anchor.getAttribute('href')){
112                         if(anchor.getAttribute('rel') === '_top'){ anchor.target = '_top'; }
113                         if(anchor.getAttribute('rel') === '_blank'){ anchor.target = '_blank'; }
114                 }
115         }
116 }
117  
118 /* 顯示發文表單 */
119 function showform(){
120         $g("postform").className = '';
121         $g("postform_tbl").className = '';
122         $g("hide").className = 'show';
123         $g("show").className = 'hide';
124 }
125  
126 /* 隱藏發文表單 */
127 function hideform(){
128         $g("postform").className = 'hide_btn';
129         $g("postform_tbl").className = 'hide';
130         $g("hide").className = 'hide';
131         $g("show").className = 'show';
132 }
133  
134 /* 內文引用編號 */
135 function quote(text){
136         try{
137                 $g('fcom').focus();
138                 $g('fcom').value += '>>No.' + text + "\r\n";
139         }catch(e){  }
140 }
141  
142 /* 回應背景標亮 / 取消 */
143 function replyhl(id, isRecover){
144         var rpydiv = $g('r'+id);
145         if(rpydiv){
146                 if(isRecover){
147                         rpydiv.className = rpydiv.className.replace(' reply_hl', '');
148                 }else{
149                         if(previous_replyhlno){ replyhl(previous_replyhlno, true); }
150                         previous_replyhlno = id;
151                         rpydiv.className += ' reply_hl';
152                 }
153         }
154 }
155  
156 /* 掛載當執行 preset() 後跟著執行的函式 */
157 function hookPresetFunction(func){
158         if(typeof func === 'function'){ arrPresetFunc.push(func); }
159 }
160  
161 /* 載入後執行的函式 */
162 function preset(){
163         var i, l = arrPresetFunc.length, f;
164  
165         fixalllinks(); // 修正連結目標
166         for(i = 0; i < l; i++){ f = arrPresetFunc[i]; if(typeof f==='function'){ f(); } }
167         var url = location.href;
168         if(url.indexOf('?res=')){
169                 if(url.match(/#[rq]([0-9]+)$/)){ replyhl(RegExp.$1, false); } // 回應標亮
170                 if(url.match(/#q([0-9]+)$/)){ quote(RegExp.$1); } // 回應引用
171         }
172 }