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.