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