Develop and Download Open Source Software

Browse Subversion Repository

Contents of /js/domain.js

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6 - (show annotations) (download) (as text)
Sat Dec 5 02:36:36 2009 UTC (14 years, 5 months ago) by berupon
File MIME type: application/x-javascript
File size: 7118 byte(s)
ライセンス表記
1
2 // Copyright (c) 2009 Katsuhisa Yuasa <berupon [at] gmail.com>
3 // License http://www.opensource.org/licenses/mit-license.html
4
5 if (!behaviourAssignors) {
6 var behaviourAssignors = {};
7 }
8
9 behaviourAssignors['number'] = function (elem) {
10 addListener(
11 elem,
12 'keypress',
13 // nonnegative_integers
14 function (event) {
15 var char = pressedChar(event);
16 var unmatched = (char && !char.match(/\d/));
17 cancelEvent(event, unmatched);
18 }
19 );
20 }
21
22 behaviourAssignors['integer'] = function (elem) {
23 addListener(
24 elem,
25 'keypress',
26 function (event) {
27 var char = pressedChar(event);
28 var unmatched = (char && !char.match(/[\-0-9]/));
29 cancelEvent(event, unmatched);
30 }
31 );
32 }
33
34 behaviourAssignors['word'] = function (elem) {
35 addListener(
36 elem,
37 'keypress',
38 function (event) {
39 var char = pressedChar(event);
40 var unmatched = (char && !char.match(/\w/));
41 cancelEvent(event, unmatched);
42 }
43 );
44 }
45
46 behaviourAssignors['date'] = function (elem) {
47 addListener(
48 elem,
49 'keypress',
50 function (event) {
51 var char = pressedChar(event);
52 var unmatched = (char && !char.match(/\d/) && char != '/');
53 cancelEvent(event, unmatched);
54 }
55 );
56 elem.maxLength = 10;
57 }
58
59 behaviourAssignors['slip_code'] = function (elem) {
60 addListener(
61 elem,
62 'keypress',
63 function(event) {
64 var char = pressedChar(event);
65 var unmatched = (char && !char.match(/[a-zA-Z0-9\-]/));
66 cancelEvent(event, unmatched);
67 }
68 );
69 }
70
71 behaviourAssignors['sales_code'] = function (elem) {
72 addListener(
73 elem,
74 'keypress',
75 function(event) {
76 var char = pressedChar(event);
77 var unmatched = (char && !char.match(/[a-zA-Z0-9]/));
78 cancelEvent(event, unmatched);
79 }
80 );
81 }
82
83
84 function setAutoFocus()
85 {
86 var cnt = document.forms.length;
87 for (var i=0; i<cnt; ++i) {
88 var form = document.forms[i];
89 var cnt2 = form.elements.length;
90 for (var j=0; j<cnt2; ++j) {
91 var elem = form.elements[j];
92 if (elem.attributes.getNamedItem("autofocus")) {
93 if (document.activeElement == elem) {
94 return;
95 }
96 var e = elem;
97 do {
98 if (e.style) {
99 if (0
100 || (e.style.display && e.style.display == 'none')
101 || (e.style.visibility && e.style.visibility == 'hidden')
102 ) {
103 return;
104 }
105 }
106 }while (e = e.parentNode);
107 elem.focus();
108 elem.select();
109 return;
110 }
111 }
112 }
113 }
114
115 Event.observe(window, "load", setAutoFocus);
116
117 function toDateFormat(num)
118 {
119 if (num.match(/\d{8,8}/)) {
120 var year = Math.floor(num / 10000);
121 var remain = num % 10000;
122 var month = Math.floor(remain / 100);
123 var day = remain % 100;
124 return "" // damn Automatic Semicolon Insertion ;;
125 + ("00" + year).substr(-4)
126 + "/"
127 + ("00" + month).substr(-2)
128 + "/"
129 + ("00" + day).substr(-2)
130 ;
131 }else {
132 return num;
133 }
134 }
135
136
137 function windowEvent(){
138 if (window.event) return window.event;
139 var caller = arguments.callee.caller;
140 while (caller) {
141 var ob = caller.arguments[0];
142 if (ob && ob.constructor == MouseEvent) return ob;
143 caller = caller.caller;
144 }
145 return null;
146 }
147
148 function clearForm(id) {
149 var form = Event.findElement(windowEvent()).form;
150 clearFormElementsValues(form, id);
151 }
152
153 Ajax.Responders.register({
154 onCreate: function() {
155 $("loading").appear({ duration: 0.1 });
156 },
157 onComplete: function() {
158 $("loading").fade({ duration: 0.5 });
159 }
160 });
161
162 function ajaxRequest(url, method, parameters, onSuccess, onFailure) {
163 new Ajax.Request(
164 url,
165 {
166 "method" : method,
167 "parameters" : parameters,
168 "onSuccess": function(transport) {
169 try {
170 onSuccess(transport);
171 }catch (e) {
172 alert(e);
173 }
174 },
175 "onFailure": function () {
176 if (onFailure) {
177 try {
178 onFailure();
179 }catch (e) {
180 alert(e);
181 }
182 }
183 }
184 }
185 );
186 }
187
188 // ���������������������������������������������template������������������������������������������
189 function modifyTemplate(src, data)
190 {
191 var r = /^#/gm;
192 var r2 = /^[^\s]+/g;
193 var indexes = [];
194
195 while (r.test(src)) {
196 indexes.push(r.lastIndex);
197 }
198
199 if (indexes.length == 0) {
200 return src;
201 }
202
203 function attachParts(pieces, parts, setting)
204 {
205 if (!setting) {
206 for (var j=0; j<parts.length; ++j) {
207 var part = parts[j];
208 pieces.push(part.text);
209 }
210 }else {
211 for (var i=0; i<setting.length; ++i) {
212 var name = setting[i];
213 for (var j=0; j<parts.length; ++j) {
214 var part = parts[j];
215 if (part.name == name) {
216 pieces.push(part.text);
217 break;
218 }
219 }
220 }
221 }
222 }
223
224 var defName = null;
225 var pos = 0;
226 var pieces = [];
227 var piece = src.substr(0, indexes[0] - 1);
228 pieces.push(piece);
229 var parts = [];
230 for (var i=0; i<indexes.length-1; ++i) {
231 var start = indexes[i];
232 var end = indexes[i+1] - 1;
233 piece = src.substr(start, end-start);
234 r2.lastIndex = 0;
235 var ret = r2.exec(piece);
236 if (!ret || !ret.length) {
237 return false;
238 }
239 var key = ret[0];
240 if (!defName) {
241 if (key.charAt(key.length-1) != '{') {
242 return false;
243 }
244 defName = key.substr(0, key.length-1);
245 }else {
246 if (key != '}') {
247 var part = piece.substr(r2.lastIndex, piece.length-1);
248 parts.push({name:key, text:part});
249 }else {
250 attachParts(pieces, parts, data[defName]);
251 parts.clear();
252 defName = null;
253 pieces.push(piece.substr(1,piece.length));
254 }
255 }
256 }
257 if (parts.length) {
258 attachParts(pieces, parts, data[defName]);
259 }
260 var start = indexes[indexes.length-1] + 1;
261 var piece = src.substr(start, src.length-start);
262 pieces.push(piece);
263 return pieces.join("");
264 }
265
266 function digestCookie(key) {
267 var pieces = document.cookie.split('; ');
268 for (var i=0; i<pieces.length; ++i) {
269 var piece = pieces[i];
270 var pair = piece.split('=');
271 if (pair[0] == key) {
272 return unescape(pair[1]).evalJSON();
273 }
274 }
275 return {};
276 }
277
278 function dumpCookie(key, value) {
279 if (!Object.isString(value)) {
280 value = Object.toJSON(value);
281 }
282 var str = key + '=' + escape(value) + ";";
283 var d = new Date();
284 // future yet unknown XD
285 d.setYear(2012);
286 d.setMonth(12);
287 d.setDate(21);
288 str += "expires=" + d.toGMTString() + ";";
289 document.cookie = str;
290 }
291
292 // TODO: rename to DualSelect routines
293 function resetGridSetting(visibles, hiddens, cols) {
294 visibles.options.length = 0;
295 hiddens.options.length = 0;
296 for (var i=0; i<cols.length; ++i) {
297 var col = cols[i];
298 visibles.options[i] = new Option(col.text, col.value);
299 }
300 }
301
302 function setGridSetting(visibles, hiddens, defaultCols, cols) {
303 visibles.options.length = 0;
304 hiddens.options.length = 0;
305 for (var i=0; i<defaultCols.length; ++i) {
306 var col = defaultCols[i];
307 var found = false;
308 for (var j=0; j<cols.length; ++j) {
309 if (cols[j] == col.value) {
310 found = true;
311 break;
312 }
313 }
314 var el = found ? visibles : hiddens;
315 el.options[el.options.length] = new Option(col.text, col.value);
316 }
317 }
318
319 function getGridSetting(visibles) {
320 return collectMember(visibles.options, 'value');
321 }
322

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26