PageSourceSearch

https://www.duskin.jp/common/responsive/js/popterm4.js

js duskin.jp collected 2026-10-02 04:05:07 UTC 18,227 bytes, 653 lines download raw bytes

1//
2// --------------------------------------------------------------------
3//  Copyright (c) 2007 - 2015 Business Search Technologies Corporation
4// --------------------------------------------------------------------
5//
6
7function popTerm(param) {
8  var self = this;
9  if (param === undefined || param === null) param = {};
10
11  self.vh_url = 'http://duskin.pbcv.sitesearch.jp/';
12  self.url = self.vh_url + 'popterm' + '/popterm.pl';
13  self.css = self.vh_url + 'popterm' + '/css/popterm2.css';
14
15  self.disable = 0;
16  self.interval = 200;
17  self.param = param;
18
19  self.targetid = 'query';
20  if (param.targetid !== undefined ) {
21    self.targetid = param.targetid;
22  }
23  self.targetname = null;
24  if (param.query !== undefined) {
25    self.targetname = param.query;
26  }
27  self.trid = '0';
28  if (param.trid !== undefined) {
29    self.trid = param.trid;
30  }
31  self.maxitems = '10';
32  if (param.show_count !== undefined ) {
33    self.maxitems = param.show_count;
34  }
35  if (param.maxitems !== undefined) {
36    self.maxitems = param.maxitems;
37  }
38  self.colnum = '1';
39  if (param.colnum !== undefined) {
40    self.colnum = param.colnum;
41  }
42  self.id = 'popterm';
43  if (param.id !== undefined) {
44    self.id = param.id;
45  }
46  if (param.css !== undefined) {
47    self.css = param.css;
48  }
49  self.enter = '';
50  if (param.enter !== undefined) {
51    self.enter = param.enter;
52  }
53  self.matchtype = 'begin';
54  if (param.matchtype !== undefined) {
55    self.matchtype = param.matchtype;
56  }
57
58  self.selected = false;
59  self.isblur = true;
60
61  self.ua = navigator.userAgent.toLowerCase();
62  self.vr = navigator.appVersion.toLowerCase();
63  if (param.css_ie7 !== undefined && /msie *7/.test(self.ua)) self.css = param.css_ie7;
64  if (param.css_ie8 !== undefined && /msie *8/.test(self.ua)) self.css = param.css_ie8;
65  if (param.css_ie9 !== undefined && /msie *9/.test(self.ua)) self.css = param.css_ie9;
66  if (param.css_ie10 !== undefined && /msie *10/.test(self.ua)) self.css = param.css_ie10;
67  if (param.css_ie11 !== undefined && /trident.*rv:11/.test(self.ua)) self.css = param.css_ie11;
68  if (param.css_ff !== undefined && /firefox/.test(self.ua)) self.css = param.css_ff;
69  if (param.css_gc !== undefined && /chrome/.test(self.ua))  self.css = param.css_gc;
70  if (param.css_op !== undefined && /opera/.test(self.ua))   self.css = param.css_op;
71  if (param.css_sf !== undefined && /applewebkit/.test(self.ua))  self.css = param.css_sf;
72
73  self.is_ios = false;
74  if(/iphone|ipad/.test(self.ua)) self.is_ios = true;
75
76  if ('https:' == document.location.protocol) {
77    if (param.ssl_url !== undefined) {
78      self.url = param.ssl_url;
79      if (param.ssl_css !== undefined) {
80        self.css = param.ssl_css;
81      }
82    } else {
83      return {};
84    }
85  }
86
87  self.query = '';
88  self.list = [];
89  self.menu = null;
90  self.menu_top = null;
91  self.menu_bottom = null;
92  self.current = null;
93  var i;
94  var a = document.getElementsByTagName('input');
95  for (i = 0; i < a.length; i++) {
96    if (a[i].getAttribute('id') === self.targetid) {
97      self.target = a[i];
98      break;
99    }
100  }
101  if (self.targetname !== null) {
102    self.target = document.getElementsByName(self.targetname)[0];
103  }
104  self.cbfunc = 'probo_popterm_callback_' + (new Date()).getTime();
105  self.tbd = null;
106  self.track = 0;
107
108  self.initialize = function () {
109    self.f_createtbl();
110    self.f_construct();
111    var x = self.target;
112    if(self.is_ios !== true) {
113      x.setAttribute('autocomplete', 'off');
114    }
115    self.bindevent(x, "focus",   self.h_focus);
116    self.bindevent(x, "blur",    self.h_blur);
117    self.bindevent(x, "keyup",   self.h_keyup);
118    self.bindevent(x, "keydown", self.h_keydown);
119    self.query = self.target.value;
120    self.f_hide();
121    self.poling();
122  };
123
124  self.f_createtbl = function () {
125    self.menu = document.createElement("table");
126    self.menu.setAttribute("id", self.id);
127    var pp = self.target.parentNode;
128    pp.insertBefore(self.menu, self.target.nextSibling);
129    self.menu.style.position = "absolute";
130    self.menu.style.display = "inline";
131    var tbd = document.createElement("tbody");
132    self.menu.appendChild(tbd);
133    self.tbd = tbd;
134    if (self.css != null) {
135      var c = document.createElement('link');
136      c.setAttribute('rel', 'stylesheet');
137      c.setAttribute('type', 'text/css');
138      c.setAttribute('href', self.css);
139      pp.appendChild(c);
140    }
141
142    var ele = self.target
143    while(ele = ele.parentNode){
144      if(ele == undefined || ele.nodeName == "BODY"){
145        return;
146      } if (ele.nodeName == "FORM"){
147        break; 
148      }
149    }
150    ele.style.position = 'relative';
151  };
152
153  self.f_construct = function () {
154    var tr;
155    var tbd = document.createElement("tbody");
156    for (i = 0; i < self.list.length; i++) {
157      var rec = self.list[i];
158      tr = document.createElement("tr");
159      for (j = 0; j < rec.length && j < self.colnum ; j++) {
160        var val = rec[j];
161        var td = document.createElement("td");
162        document.all ? td.innerText = val : td.textContent = val;
163        if (self.param.fit_searchbox_width !== "off") {
164          td.style.width = self.getWidth(self.target);
165        }
166        tr.appendChild(td);
167      }
168      self.bindevent (tr, "mousedown", self.h_menu_mousedown);
169      self.bindevent (tr, "mouseup", self.h_menu_mouseup);
170      self.bindevent (tr, "mouseover", self.h_menu_mouseover);
171      self.bindevent (tr, "mouseout", self.h_menu_mouseout);
172      tbd.appendChild(tr);
173      if (i == 0) self.menu_top = tr;
174    }
175    self.menu_bottom = tr;
176    if (self.param.fit_searchbox_width !== "off") {
177      self.menu.style.width = self.getWidth(self.target);
178    }
179    if (self.param.fit_boxparent_height !== "off") {
180      self.menu.style.top = self.getVOffset2(self.target);
181      // self.menu.style.marginTop = self.getVOffset2(self.target);
182      // self.menu.style.marginLeft = self.getHOffset(self.target);
183    }
184    if (self.param.fit_searchbox_height !== undefined) {
185      self.menu.style.top = self.getVOffset(self.target);
186      // self.menu.style.marginTop = self.getVOffset(self.target);
187      // self.menu.style.marginLeft = self.getHOffset(self.target);
188    }
189    self.menu.replaceChild(tbd, self.tbd);
190    self.tbd = tbd;
191    
192  };
193
194  self.f_show = function () {
195    if (self.isblur) return;
196    if (!self.menu) return;
197    if (self.disable > 0) return;
198    if (self.list.length == 0) return;
199    self.menu.setAttribute("class", self.id + "_visible");
200    self.menu.style.visibility = "visible";
201    self.menu.style.display = "inline";
202  };
203
204  self.f_hide = function () {
205    if (!self.menu) return;
206    self.menu.setAttribute('class', self.id + "_hidden");
207    self.menu.style.visibility = "hidden";
208    self.menu.style.display = "none";
209  };
210
211  self.f_up = function () {
212    if (!self.menu) return;
213    var c = self.current;
214    if (c != null) c = c.previousSibling;
215    if (c == null) c = self.menu_bottom;
216    self.f_highlight(c);
217  };
218
219  self.f_down = function () {
220    if (!self.menu) return;
221    var c = self.current;
222    if (c != null) c = c.nextSibling;
223    if (c == null) c = self.menu_top;
224    self.f_highlight(c);
225  };
226
227  self.f_highlight = function (e) {
228    var r = self.menu.getElementsByTagName('tr');
229    var i;
230    for (i = 0; i < r.length; i++) {
231      var c = '\v' == 'v' ? 'className' : 'class';
232      if (document.documentMode == 8) c = 'class';
233      if (r[i] === e) {
234        self.current = e;
235        r[i].setAttribute(c , self.id + '_selected');
236      } else {
237        r[i].removeAttribute(c);
238      }
239    }
240  };
241
242  self.f_select = function () {
243    var e = self.current;
244    if (e === null) return;
245    var d = e.getElementsByTagName('td');
246    var t = document.all ? d[0].innerText : d[0].textContent;
247    if(self.is_ios == false) {
248      self.target.value = t;
249      self.query = t;
250      if(self.popterm_click){ self.popterm_click( t ); }
251      
252    }else{
253      self.target.blur();
254      window.setTimeout(function(){
255        self.target.focus();
256        self.target.value = t;
257        self.query = t;
258        if(self.popterm_click){ self.popterm_click( t ); }
259        self.update();
260      },100);
261    }
262    // self.f_hide ();
263    self.selected = true;
264  };
265
266  self.h_menu_mouseover = function () {
267    var e = document.all ? event.srcElement.parentNode : this;
268    self.f_highlight(e);
269  };
270
271  self.h_menu_mouseout = function () {
272    var e = document.all ? event.srcElement.parentNode : this;
273    self.f_highlight(null);
274    self.current = null;
275  };
276
277  self.h_menu_mouseup = function () {
278    self.endtrack();
279    if(self.is_ios === true) {
280      var e = document.all ? event.srcElement.parentNode : this;
281      self.current = e;
282      self.f_select();
283    }else{
284      self.f_select();
285      self.update();
286    }
287    self.target.focus();
288  };
289
290  self.h_menu_mousedown = function () {
291    var e = document.all ? event.srcElement.parentNode : this;
292    self.current = e;
293    self.starttrack();
294  };
295
296  self.h_focus = function () {
297    self.current = null;
298    self.update();
299    self.f_highlight(null);
300    self.isblur = false;
301    self.f_show();
302  };
303
304  self.h_blur = function () {
305    if (self.track != 0) return;
306    self.isblur = true;
307    self.selected = false;
308    self.f_hide();
309    self.current = null;
310    self.f_highlight(null);
311  };
312
313  self.h_keydown = function (e) {
314    var k = e.keyCode ? e.keyCode : e.charCode;
315    if (k == 27) {
316      self.f_hide();
317      //self.disable = 1;
318      return;
319    }
320    else if (k == 38) self.f_up();
321    else if (k == 40) self.f_down();
322    else if (k == 13 || k == 9) {
323      if (self.current === null) return;
324      self.f_select();
325      self.update();
326      if (self.enter !== 'submit') {
327        self.cancelevent (e);
328      }
329      self.f_hide();
330      return;
331    }
332    else if (k == 39) {
333      if (self.current === null) return;
334      self.f_select();
335      self.update();
336    }
337    self.f_show();
338  };
339
340  self.h_keyup = function (e) {
341    var k = e.keyCode;
342  };
343
344  self.starttrack = function () {
345    self.track = 1;
346    var e = document.all ? document.body : document;
347    self.bindevent(e, "mouseup", self.h_menu_mouseup);
348  };
349
350  self.endtrack = function () {
351    var e = document.all ? document.body : document;
352    self.unbindevent(e, "mouseup", self.h_menu_mouseup);
353    self.track = 0;
354  };
355
356  self.bindevent = function (target, event, handler) {
357    if (target.addEventListener) {
358      target.addEventListener (event, handler, false);
359    } else {
360      target.attachEvent ("on" + event, handler);
361    }
362  };
363
364  self.unbindevent = function (target, event, handler) {
365    if (target.removeEventListener) {
366      target.removeEventListener (event, handler, false);
367    } else {
368      target.detachEvent ("on" + event, handler);
369    }
370  };
371
372  self.cancelevent = function (event) {
373    if (event.preventDefault) {
374      event.preventDefault();
375    } else {
376      window.event.returnValue = false;
377    }
378  };
379
380  self.cancelbubble = function (event) {
381    if (event.stopPropagation) {
382      event.stopPropagation();
383    } else {
384      window.event.cancelBubble = true;
385    }
386  };
387
388  self.getwidth = function (e) {
389    if (document.defaultView) {
390      var t = document.defaultView.getComputedStyle(e, null);
391      return t.getPropertyValue('width');
392    }
393    else if (e.offsetWidth) {
394      return e.offsetWidth;
395    }
396    return 0;
397  };
398
399  self.getheight = function (e) {
400    if (document.defaultView) {
401      var t = document.defaultView.getComputedStyle(e, null);
402      return t.getPropertyValue('height');
403    }
404    else if (e.offsetHeight) {
405      return e.offsetHeight;
406    }
407    return 0;
408  };
409
410  self.getBorderWidth = function (e) {
411    var l = 0, r = 0, t = 0, b = 0;
412    if (e.currentStyle) {
413      l = e.currentStyle.borderLeftWidth;
414      r = e.currentStyle.borderRightWidth;
415      t = e.currentStyle.borderTopWidth;
416      b = e.currentStyle.borderBottomWidth;
417    }
418    else if (window.getComputedStyle) {
419      var x = window.getComputedStyle(e, null);
420      l = x.borderLeftWidth;
421      r = x.borderRightWidth;
422      t = x.borderTopWidth;
423      b = x.borderBottomWidth;
424    }
425    l = parseInt(l);
426    r = parseInt(r);
427    t = parseInt(t);
428    b = parseInt(b);
429    if (isNaN(l)) l = 0;
430    if (isNaN(r)) r = 0;
431    if (isNaN(t)) t = 0;
432    if (isNaN(b)) b = 0;
433    return {'left':l, 'right':r, 'top':t, 'bottom':b};
434  };
435
436  self.getMargin = function (e) {
437    var l = 0, r = 0, t = 0, b = 0;
438    if (e.currentStyle) {
439      l = e.currentStyle.marginLeft;
440      r = e.currentStyle.marginRight;
441      t = e.currentStyle.marginTop;
442      b = e.currentStyle.marginBottom;
443    }
444    else if (window.getComputedStyle) {
445      var x = window.getComputedStyle(e, null);
446      l = x.marginLeft;
447      r = x.marginRight;
448      t = x.marginTop;
449      b = x.marginBottom;
450    }
451    l = parseInt(l);
452    r = parseInt(r);
453    t = parseInt(t);
454    b = parseInt(b);
455    if (isNaN(l)) l = 0;
456    if (isNaN(r)) r = 0;
457    if (isNaN(t)) t = 0;
458    if (isNaN(b)) b = 0;
459    return {'left':l, 'right':r, 'top':t, 'bottom':b};
460  };
461
462  self.getPadding = function (e) {
463    var l = 0, r = 0, t = 0, b = 0;
464    if (e.currentStyle) {
465      l = e.currentStyle.paddingLeft;
466      r = e.currentStyle.paddingRight;
467      t = e.currentStyle.paddingTop;
468      b = e.currentStyle.paddingBottom;
469    }
470    else if (window.getComputedStyle) {
471      var x = window.getComputedStyle(e, null);
472      l = x.paddingLeft;
473      r = x.paddingRight;
474      t = x.paddingTop;
475      b = x.paddingBottom;
476    }
477    l = parseInt(l);
478    r = parseInt(r);
479    t = parseInt(t);
480    b = parseInt(b);
481    if (isNaN(l)) l = 0;
482    if (isNaN(r)) r = 0;
483    if (isNaN(t)) t = 0;
484    if (isNaN(b)) b = 0;
485    return {'left':l, 'right':r, 'top':t, 'bottom':b};
486  };
487
488  self.getLineheight = function (e) {
489    var r = 0;
490    if (e.currentStyle) {
491      r = e.currentStyle.lineHeight;
492    }
493    else if (window.getComputedStyle) {
494      r = window.getComputedStyle(e, null).lineHeight;
495    }
496    r = parseInt(r);
497    if (isNaN(r)) r = 0;
498    return r;
499  };
500
501  self.getBoxsizing = function (e) {
502    var r = '';
503    if (e.currentStyle) {
504      if (e.currentStyle.boxSizing !== undefined)
505        r = e.currentStyle.boxSizing;
506    }
507    else if (window.getComputedStyle) {
508      if (window.getComputedStyle(e, null).boxSizing !== undefined)
509        r = window.getComputedStyle(e, null).boxSizing;
510    }
511    return r;
512  };
513
514  self.getWidth = function (e) {
515    var w = parseInt(self.getwidth(e));
516    var b = self.getBorderWidth(e);
517    var m = self.getMargin(e);
518    var p = self.getPadding(e);
519    var r = w + b.left + b.right + p.left + p.right;
520    var box = self.getBoxsizing(e);
521    if (/msie */.test(self.ua) || /trident.*rv:11/.test(self.ua)) {
522      if (document.documentMode ) {
523        if (document.documentMode < 9) r = w;
524      } else {
525        r = w;
526      }
527    }else if (/border-box/.test(box)){
528      r = w;
529    }
530    return r + "px";
531  };
532
533  self.getVOffset = function (e) {
534    var h = parseInt(self.getheight(e));
535    var b = self.getBorderWidth(e);
536    var m = self.getMargin(e);
537    var p = self.getPadding(e);
538    var l = self.getLineheight(e);
539    var box = self.getBoxsizing(e);
540    var r = h + b.top + b.bottom + p.top + p.bottom + m.top;
541    if (/msie */.test(self.ua) || /trident.*rv:11/.test(self.ua)) {
542      if (document.documentMode ) {
543        if (document.documentMode < 9) r = h + m.top;
544      } else {
545        r = h + m.top;
546      }
547    }else if(/border-box/.test(box)) {
548        r = h;
549    }
550    return r + "px";
551  };
552
553  self.getVOffset2 = function (e) {
554    var r = 0;
555    var c = e.parentNode.firstChild;
556    while (c != e.parentNode.lastChild) {
557      if (c.nodeType == 1 && c.getAttribute('id') !== self.id) {
558        var i = parseInt(self.getVOffset (c));
559        if (r < i) r = i;
560      }
561      c = c.nextSibling;
562    }
563    return r + "px";
564  };
565
566  self.getHOffset = function (e) {
567    var w = parseInt(self.getwidth(e));
568    var b = self.getBorderWidth(e);
569    var m = self.getMargin(e);
570    var p = self.getPadding(e);
571    var r = w + b.left + b.right + m.right + p.left + p.right;
572    var box = self.getBoxsizing(e);
573    if (/msie */.test(self.ua) || /trident.*rv:11/.test(self.ua)) {
574      if (document.documentMode ) {
575        if (document.documentMode < 9) r = w + m.right;
576      } else {
577        r = w + m.right;
578      }
579    } else if (/border-box/.test(box)) {
580      r = w + m.right;
581    }
582    return '-' + r + "px";
583  };
584
585  self.update = function () {
586    var r = '';
587    if (self.query == '') return;
588    if (/msie *7/.test(self.ua)) r = '&o=' + (new Date()).getTime();
589    var url = this.url +
590              '?callback=' + self.cbfunc +
591              '&trid=' + self.trid +
592              '&k=' + encodeURIComponent(self.query) +
593              '&m=' + self.matchtype +
594              '&c=' + self.maxitems + r;
595    window[self.cbfunc] = function (res) {
596      self.callback (res);
597    };
598    var sc = document.createElement('script');
599    sc.src = url;
600    sc.type = 'text/javascript';
601    sc.charset = 'utf-8';
602    //sc.async = true;
603    var h = document.getElementsByTagName('head');
604    h[0].appendChild(sc);
605  };
606
607  self.callback = function (res) {
608    self.current = null;
609    if(res.error) return;
610    if (res.list === null || res.list.length === 0 || self.selected) {
611      self.list = [];
612      self.f_construct ();
613      self.f_hide();
614    } else {
615      self.list = res.list;
616      self.f_construct();
617      self.f_show();
618    }
619  };
620
621  self.poling = function () {
622    if (self.target.value != '' && self.query === self.target.value) {
623      ;
624    }
625    else if (self.target.value == '') {
626      self.query = '';
627      self.current = null;
628      self.list = [];
629      self.f_construct ();
630      self.f_hide ();
631    } else {
632      self.selected = false;
633      self.query = self.target.value;
634      self.current = null;
635      self.update ();
636      self.f_construct ();
637      self.f_show ();
638    }
639    setTimeout (self.poling, self.interval);
640  };
641//-----------
642  // if('ontouchstart' in window){
643  //   document.addEventListener("touchmove" , touchMoveHandler, false);
644  // }
645
646  // function touchMoveHandler(){
647  //     self.list = [];
648  //     self.f_construct ();
649  //     self.f_hide();
650  // }
651//----------
652  self.initialize();
653}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.