1/** 2 * @package HikaMarket for Joomla! 3 * @version 6.1.1 4 * @author Obsidev S.A.R.L. 5 * @copyright (C) 2011-2026 OBSIDEV. All rights reserved. 6 * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html 7 */ 8(function() { 9 10function preventDefault() { this.returnValue = false; } 11function stopPropagation() { this.cancelBubble = true; } 12 13var Oby = { 14 version: 20220529, 15 ajaxEvents : {}, 16 17 hasClass: function(o,n) { 18 if(o.classList && o.classList.contains) 19 return o.classList.contains(n); 20 if(o.className == '' ) return false; 21 var reg = new RegExp("(^|\\s+)"+n+"(\\s+|$)"); 22 return reg.test(o.className); 23 }, 24 addClass: function(o,n) { 25 if(o.classList && o.classList.add) 26 return o.classList.add(n); 27 if( !this.hasClass(o,n) ) { 28 if( o.className == '' ) { 29 o.className = n; 30 } else { 31 o.className += ' '+n; 32 } 33 } 34 }, 35 trim: function(s) { 36 if(s.trim) return s.trim(); 37 return (s ? '' + s : '').replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); 38 }, 39 removeClass: function(e, c) { 40 if(e.classList && e.classList.remove) 41 return e.classList.remove(c); 42 var t = this; 43 if( t.hasClass(e,c) ) { 44 var cn = ' ' + e.className + ' '; 45 e.className = t.trim(cn.replace(' '+c+' ',' ')); 46 } 47 }, 48 toggleClass: function(e,c) { 49 if(e.classList && e.classList.toggle) 50 return e.classList.toggle(c); 51 var t = this; 52 if( t.hasClass(e,c) ) { 53 return t.removeClass(e,c); 54 } 55 return t.addClass(e,c); 56 }, 57 addEvent: function(d,e,f) { 58 if( d.attachEvent ) 59 d.attachEvent('on' + e, f); 60 else if (d.addEventListener) 61 d.addEventListener(e, f, false); 62 else 63 d['on' + e] = f; 64 return f; 65 }, 66 removeEvent: function(d,e,f) { 67 try { 68 if( d.detachEvent ) 69 d.detachEvent('on' + e, f); 70 else if( d.removeEventListener) 71 d.removeEventListener(e, f, false); 72 else 73 d['on' + e] = null; 74 } catch(e) {} 75 }, 76 cancelEvent: function(e) { 77 if( !e ) { 78 e = window.event; 79 if( !e ) 80 return false; 81 } 82 if(e.stopPropagation) 83 e.stopPropagation(); 84 else 85 e.cancelBubble = true; 86 if( e.preventDefault ) 87 e.preventDefault(); 88 else 89 e.returnValue = false; 90 return false; 91 }, 92 fireEvent: function(obj,e,data) { 93 var d = document, evt = null; 94 if(document.createEvent) { 95 evt = d.createEvent('HTMLEvents'); 96 evt.initEvent(e, false, true); 97 if(data) evt.data = data; 98 obj.dispatchEvent(evt); 99 return; 100 } 101 if(data && d.createEventObject) { 102 evt = d.createEventObject(); 103 evt.data = data; 104 obj.fireEvent('on'+e, evt); 105 return; 106 } 107 obj.fireEvent('on'+e); 108 }, 109 fireAjax: function(name,params) { 110 var t = this, ev, r = null, ret = []; 111 if( t.ajaxEvents[name] === undefined ) 112 return false; 113 for(var e in t.ajaxEvents[name]) { 114 if( e == '_id' ) 115 continue; 116 ev = t.ajaxEvents[name][e]; 117 if(!ev || typeof(ev) != 'function') 118 continue; 119 try { 120 r = ev(params); 121 if(r !== undefined) 122 ret.push(r); 123 }catch(e){} 124 } 125 return ret; 126 }, 127 registerAjax: function(name, fct) { 128 var t = this; 129 if(typeof(name) == 'object') { 130 var r = []; 131 for(var k = name.length - 1; k >= 0; k--) { 132 r[r.length] = t.registerAjax(name[k], fct); 133 } 134 return r; 135 } 136 if( t.ajaxEvents[name] === undefined ) 137 t.ajaxEvents[name] = {'_id':0}; 138 var id = t.ajaxEvents[name]['_id']; 139 t.ajaxEvents[name]['_id'] += 1; 140 t.ajaxEvents[name][id] = fct; 141 return id; 142 }, 143 unregisterAjax: function(name, id) { 144 if( t.ajaxEvents[name] === undefined || t.ajaxEvents[name][id] === undefined) 145 return false; 146 t.ajaxEvents[name][id] = null; 147 return true; 148 }, 149 ready: function(fct) { 150 var w = window, d = document, t = this; 151 if(d.readyState === "complete") { 152 fct(); 153 return; 154 } 155 var done = false, top = true, root = d.documentElement, 156 init = function(e) { 157 if(e.type == 'readystatechange' && d.readyState != 'complete') return; 158 t.removeEvent((e.type == 'load' ? w : d), e.type, init); 159 if(!done && (done = true)) 160 fct(); 161 }, 162 poll = function() { 163 try{ root.doScroll('left'); } catch(e){ setTimeout(poll, 50); return; } 164 init('poll'); 165 }; 166 if(d.createEventObject && root.doScroll) { 167 try{ top = !w.frameElement; } catch(e){} 168 if(top) poll(); 169 } 170 t.addEvent(d,'DOMContentLoaded',init); 171 t.addEvent(d,'readystatechange',init); 172 t.addEvent(w,'load',init); 173 }, 174 evalJSON: function(text, secure) { 175 if( typeof(text) != "string" || !text.length) return null; 176 if(JSON !== undefined && typeof(JSON.parse) == 'function') { 177 try { var ret = JSON.parse(text); return ret; } catch(e) { } 178 } 179 if(secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(text.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
180 try { var ret = eval('(' + text + ')'); return ret; } catch(e) { } 181 return null; 182 }, 183 getXHR: function() { 184 var xhr = null, w = window; 185 if(w.XMLHttpRequest || w.ActiveXObject) { 186 if(w.ActiveXObject) { 187 try { 188 xhr = new ActiveXObject("Microsoft.XMLHTTP"); 189 } catch(e) {} 190 } else 191 xhr = new w.XMLHttpRequest(); 192 } 193 return xhr; 194 }, 195 xRequest: function(url, options, cb, cbError) { 196 var t = this, xhr = t.getXHR(); 197 if(!options) options = {}; 198 if(!cb) cb = function(){}; 199 options.mode = options.mode || 'GET'; 200 options.update = options.update || false; 201 xhr.onreadystatechange = function() { 202 if(xhr.readyState != 4) 203 return; 204 if( xhr.status == 200 || (xhr.status == 0 && xhr.responseText > 0) || !cbError ) { 205 if(cb) 206 cb(xhr,options.params); 207 if(options.update) 208 t.updateElem(options.update, xhr.responseText); 209 } else { 210 cbError(xhr,options.params); 211 } 212 }; 213 xhr.open(options.mode, url, true); 214 if(options.mode.toUpperCase() == 'POST' && typeof(options.data) == 'string') { 215 xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 216 } 217 xhr.send( options.data ); 218 }, 219 getFormData: function(target, encoded) { 220 var d = document, ret = {}; 221 if(encoded === undefined) encoded = true; 222 if( typeof(target) == 'string' ) 223 target = d.getElementById(target); 224 if( target === undefined ) 225 target = d; 226 var typelist = ['input','select','textarea']; 227 for(var t in typelist) { 228 if(!typelist.hasOwnProperty(t)) 229 continue; 230 t = typelist[t]; 231 var inputs = target.getElementsByTagName(t); 232 for(var i = 0; i < inputs.length; i++) { 233 if( !inputs[i].name || inputs[i].disabled ) 234 continue;
235 var evalue = inputs[i].value, n = inputs[i].name, etype = ''; 236 if( t == 'input' ) 237 etype = inputs[i].type.toLowerCase(); 238 if( (etype == 'radio' || etype == 'checkbox') && !inputs[i].checked ) 239 evalue = null; 240 if(t == 'select' && inputs[i].multiple) { 241 for(var k = inputs[i].options.length - 1; k >= 0; k--) { 242 if(!inputs[i].options[k].selected) 243 continue; 244 //if( ret != '' ) ret += '&'; 245 //ret += encodeURI(inputs[i].name) + '=' + encodeURIComponent(inputs[i].options[k].value); 246 if(ret.hasOwnProperty(n)) { 247 if(typeof(ret[n]) != 'object') 248 ret[n] = [ ret[n] ]; 249 ret[n][ ret[n].length ] = inputs[i].options[k].value; 250 } else 251 ret[ n ] = inputs[i].options[k].value; 252 evalue = null; 253 } 254 } 255 if( (etype != 'file' && etype != 'submit') && evalue != null ) { 256 //if( ret != '' ) ret += '&'; 257 //ret += encodeURI(inputs[i].name) + '=' + encodeURIComponent(evalue); 258 if(ret.hasOwnProperty(n)) { 259 if(typeof(ret[n]) != 'object') 260 ret[n] = [ ret[n] ]; 261 ret[n][ ret[n].length ] = evalue; 262 } else 263 ret[ n ] = evalue; 264 } 265 } 266 } 267 if(encoded) 268 return this.encodeFormData(ret); 269 return ret; 270 }, 271 encodeFormData: function(data) { 272 var ret = '', v = null; 273 if(typeof(data) == "string") 274 return data; 275 for(var k in data) { 276 if(!data.hasOwnProperty(k)) 277 continue; 278 v = data[k]; 279 if(typeof(v) == 'object') { 280 for(var i in v) { 281 if(!v.hasOwnProperty(i)) 282 continue; 283 if( ret != '' ) ret += '&'; 284 ret += encodeURI(k) + '=' + encodeURIComponent(v[i]); 285 } 286 } else { 287 if( ret != '' ) ret += '&'; 288 ret += encodeURI(k) + '=' + encodeURIComponent(v); 289 } 290 } 291 return ret; 292 }, 293 updateElem: function(elem, data) { 294 var d = document, scripts = ''; 295 if( typeof(elem) == 'string' ) 296 elem = d.getElementById(elem); 297 var text = data.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(all, code){ 298 if(all.indexOf('type="application/json"')>=0 || all.indexOf('type="application/ld+json"')>=0) 299 return all; 300 scripts += code + '\n'; 301 return ''; 302 }); 303 elem.innerHTML = text; 304 if( scripts != '' ) { 305 var script = d.createElement('script'); 306 script.setAttribute('type', 'text/javascript'); 307 script.text = scripts; 308 try { 309 d.head.appendChild(script); 310 d.head.removeChild(script); 311 } catch(e) {} 312 } 313 }, 314 ease: function(v) { 315 return 1+Math.pow(v-1,3); 316 }, 317 easeInOut: function(t,s,dt,du) { 318 return dt/2 * (1 - Math.cos(Math.PI*t/du)) + s; 319 }, 320 scrollTo: function(name, anim, visible, margin) { 321 var t = this, d = document, w = window, 322 elem = d.getElementById(name); 323 if(!elem) 324 return; 325 if(margin === undefined) margin = 0; 326 if(!anim) { 327 window.scrollTo(0, elem.offsetTop - margin); 328 return; 329 } 330 if( t.anim && t.anim.timer ) 331 clearInterval( t.anim.timer ); 332 t.anim = { timer:null, s:null, dt:0, du:150, t:0, inc:10 }; 333 if( w.scrollY ) 334 t.anim.s = w.scrollY; 335 else if( d.documentElement.scrollTop ) 336 t.anim.s = d.documentElement.scrollTop; 337 else 338 t.anim.s = d.body.scrollTop; 339 if(visible) { 340 if( d.documentElement.scrollTop ) 341 h = d.documentElement.clientHeight; 342 else 343 h = d.body.clientHeight; 344 if(t.anim.s <= elem.offsetTop && (t.anim.s + h - 150) > elem.offsetTop) 345 return; 346 } 347 t.anim.dt = elem.offsetTop - t.anim.s - margin; 348 var o = this; 349 t.anim.timer = setInterval( function() { 350 var a = o.anim; 351 if( !a || !a.timer ) 352 return; 353 a.t += a.inc; 354 if( a.t < a.du ) { 355 window.scrollTo(0, o.easeInOut(a.t, a.s, a.dt, a.du), false, margin); 356 } else { 357 window.scrollTo(0, a.s + a.dt, false, margin); 358 clearInterval(a.timer); 359 a.timer = null; 360 } 361 }, t.anim.inc ); 362 } 363}; 364if((typeof(window.Oby) == 'undefined') || window.Oby.version < Oby.version) { 365 window.Oby = Oby; 366 window.obscurelighty = Oby; 367} 368 369var hikamarket = { 370 submitFct: null, 371 submitBox: function(data) { 372 var t = this; 373 if( t.submitFct ) { 374 try { 375 t.submitFct(data); 376 } catch(err) {} 377 } 378 t.closeBox(); 379 }, 380 deleteId: function(id) { return window.hikashop.deleteId(id); }, 381 dup: function(tplName, htmlblocks, id, extraData, appendTo) { return window.hikashop.dup(tplName, htmlblocks, id, extraData, appendTo); }, 382 deleteRow: function(id) { return window.hikashop.deleteRow(id); }, 383 dupRow: function(tplName, htmlblocks, id, extraData) { return window.hikashop.dupRow(tplName, htmlblocks, id, extraData); }, 384 cleanTableRows: function(id) { return window.hikashop.cleanTableRows(id); }, 385 checkRow: function(id) { return window.hikashop.checkRow(id); }, 386 isChecked: function(id,cancel) { return window.hikashop.isChecked(id,cancel); }, 387 checkAll: function(checkbox, stub) { 388 stub = stub || 'cb'; 389 if(!checkbox.form) 390 return false; 391 var o = window.Oby, cb = checkbox.form, c = 0; 392 for(var i = 0, n = cb.elements.length; i < n; i++) { 393 var e = cb.elements[i]; 394 if(e != checkbox && e.type == checkbox.type && ((stub && e.id.indexOf(stub) == 0) || !stub)) { 395 e.checked = checkbox.checked; 396 o.fireEvent(e, 'change'); 397 c += (e.checked == true ? 1 : 0); 398 } 399 } 400 if(cb.boxchecked) 401 cb.boxchecked.value = c; 402 return true; 403 }, 404 submitform: function(task, form, extra) { return window.hikashop.submitform(task, form, extra); }, 405 get: function(elem, target) { return window.hikashop.get(elem, target); }, 406 form: function(elem, target) { return window.hikashop.form(elem, target); },
407 openBox: function(elem, url, jqmodal) { return window.hikashop.openBox(elem, url, jqmodal); }, 408 closeBox: function(parent) { return window.hikashop.closeBox(parent); }, 409 tabSelect: function(m,c,id) { return window.hikashop.tabSelect(mc,id); }, 410 getOffset: function(el) { return window.hikashop.getOffset(el); }, 411 switchBlock: function(el, values, name) { 412 var dest = document.getElementById(name); 413 if(!dest) return; 414 if(typeof(values) == 'number') values = [values]; 415 for(var i = values.length - 1; i >= 0; i--) { 416 if(values[i] == el.value) { dest.style.display = ''; return; } 417 } 418 dest.style.display = 'none'; 419 }, 420 dataStore: function(name, value) { 421 if(localStorage) { 422 localStorage.setItem(name, value); 423 } else { 424 var expire = new Date(); expire.setDate(expire.getDate() + 5); 425 document.cookie = name+"="+value+"; expires="+expire; 426 } 427 }, 428 dataGet: function(name) { 429 if(localStorage) { 430 return localStorage.getItem(name); 431 } 432 if(document.cookie.length > 0 && document.cookie.indexOf(name+"=") != -1) { 433 var s = name+"=", o = document.cookie.indexOf(s) + s.length, e = document.cookie.indexOf(";",o); 434 if(e == -1) e = document.cookie.length; 435 return unescape(document.cookie.substring(o, e)); 436 } 437 return null; 438 }, 439 setArrayDisplay: function(fields, displayValue) { 440 var d = document, e = null; 441 if(displayValue === true) displayValue = ''; 442 if(displayValue === false) displayValue = 'none'; 443 for(var i = 0; i < fields.length; i++) { 444 e = d.getElementById(fields[i]); 445 if(e) e.style.display = displayValue; 446 } 447 }, 448 dlTitle: function(parent) { 449 var t = this, d = document; 450 if(parent && typeof(parent) == 'string') 451 parent = d.getElementById(parent); 452 if(!parent) 453 parent = d; 454 var dt = parent.getElementsByTagName('dt'), val = null, 455 hkTip = (typeof(hkjQuery) != "undefined" && hkjQuery().hktooltip); 456 for(var i = 0; i < dt.length; i++) { 457 if(dt[i].offsetWidth < dt[i].scrollWidth && !dt[i].getAttribute('title')) { 458 val = (dt[i].innerText !== undefined) ? dt[i].innerText : dt[i].textContent; 459 if(hkTip) { 460 dt[i].setAttribute('data-title', val); 461 hkjQuery(dt[i]).hktooltip({"html": true,"container": "body"}); 462 } else 463 dt[i].setAttribute('title', val); 464 } 465 } 466 }, 467 collapseTitles: function() { 468 var t = this, d = document, w = window, o = w.Oby, 469 collapsedBlocks = t.dataGet('hkm_section_toggle'); 470 collapsedBlocks = collapsedBlocks ? o.evalJSON(collapsedBlocks) : []; 471 if(!collapsedBlocks) collapsedBlocks = []; 472 473 d.querySelectorAll('[data-section-toggle]').forEach(function(el){ 474 if(el.collapseTitleInit) return; 475 o.addEvent(el, 'click', t.collapseTitle); 476 477 var section = t._collapseGetSection(el); 478 if(section) { 479 if(collapsedBlocks.indexOf(section.name) >= 0) { 480 el.collapsed = true; 481 o.addClass(el, 'hk_closed'); 482 } else 483 o.addClass(section.elem, 'open'); 484 o.addClass(section.elem, 'hk_collapsing'); 485 } 486 el.collapseTitleInit = true; 487 }); 488 }, 489 _collapseGetSection: function(el) { 490 if(!el) return false; 491 var d = document, 492 sectionName = el.getAttribute('data-section-toggle'); 493 if(!sectionName) return false; 494 495 var section = d.getElementById('hikamarket_section_' + sectionName); 496 if(!section) section = d.getElementById(sectionName); 497 return {name: sectionName, elem: section}; 498 }, 499 collapseTitle: function(evt) { 500 if(!evt) { 501 evt = window.event; 502 if(!evt) return false; 503 } 504 var w = window, t = w.hikamarket, o = w.Oby, 505 el = evt.target; 506 if(!el) return false; 507 508 var section = t._collapseGetSection(el); 509 if(!section) return false; 510 511 if(el.collapsed) { 512 o.addClass(section.elem, 'open'); 513 o.removeClass(el, 'hk_closed'); 514 } else { 515 o.removeClass(section.elem, 'open'); 516 o.addClass(el, 'hk_closed'); 517 } 518 519 var collapsedBlocks = t.dataGet('hkm_section_toggle'); 520 collapsedBlocks = collapsedBlocks ? o.evalJSON(collapsedBlocks) : []; 521 if(!collapsedBlocks) collapsedBlocks = []; 522 523 var p = collapsedBlocks.indexOf(section.name); 524 if(p >= 0 && el.collapsed) {
525 collapsedBlocks.splice(p, 1); 526 } 527 if(p === -1 && !el.collapsed) { 528 collapsedBlocks.push(section.name); 529 } 530 t.dataStore('hkm_section_toggle', JSON.stringify(collapsedBlocks)); 531 532 el.collapsed = !el.collapsed; 533 }, 534 noChzn: function() { 535 if(!window.jQuery) 536 return false; 537 jQuery('.no-chzn').each(function(i,el) { 538 var id = el.getAttribute('id'), chzn = null; 539 if(id) { 540 id = id.replace('{','_').replace('}','_'); 541 chzn = jQuery('#'+id+'_chzn'); 542 } else { 543 chzn = el.nextSibling; 544 } 545 if(chzn) chzn.remove(); 546 jQuery(el).removeClass('chzn-done').show(); 547 }); 548 return true; 549 }, 550 switchTab: function(el) { 551 if(!el || !el.parentNode || !el.parentNode.parentNode) return false; 552 var d = document, w = window, o = w.Oby, 553 c = el.parentNode.parentNode, 554 r = c.getAttribute('rel'), 555 current = el.getAttribute('rel'), 556 dest = null; 557 if(!r || r.substring(0,5) != 'tabs:') return false; 558 if(current.substring(0,4) != 'tab:') return false; 559 var id = r.substring(5), 560 tabs = c.childNodes; 561 current = current.substring(4); 562 dest = d.getElementById(id + current); 563 if(!dest) return false; 564 for(var k = 0; k < tabs.length; k++) { 565 if(!tabs[k] || tabs[k].nodeName.toLowerCase() != 'li') continue; 566 var i = 0, l = tabs[k].childNodes[i], lr = null; 567 while(l.nodeName.toLowerCase() != 'a' && i < tabs[k].childNodes.length) 568 l = tabs[k].childNodes[++i]; 569 if(l.nodeName.toLowerCase() == 'a') 570 lr = l.getAttribute('rel'); 571 if(!lr || lr.substring(0,4) != 'tab:') continue; 572 var lid = lr.substring(4); 573 if(lid == current) continue; 574 o.removeClass(tabs[k], 'active'); 575 var ld = d.getElementById(id + lid); 576 if(ld) ld.style.display = 'none'; 577 } 578 dest.style.display = ''; 579 o.addClass(el.parentNode, 'active'); 580 el.blur(); 581 return false; 582 }, 583 callbackFct: function(t,url,keyword,tree,node,ev) { 584 return treeCallbackFct(t,url,keyword,tree,node,ev); 585 }, 586 searchSubmit:function(el) { 587 if(el.form.limitstart) 588 el.form.limitstart.value=0; 589 el.form.submit(); 590 }, 591 searchReset:function(el) { 592 if(el.form.limitstart) el.form.limitstart.value=0; 593 if(el.form.search) el.form.search.value=''; 594 var els = el.form.querySelectorAll("[data-search-reset]"); 595 if(els) { for(var i = els.length - 1; i >= 0; i--) { 596 els[i].value = els[i].getAttribute('data-search-reset'); 597 } } 598 el.form.submit(); 599 }, 600 searchFilters:function(el, id) { 601 var block = document.getElementById(id); 602 if(!block) return false; 603 block.style.display = (block.style.display == "none") ? "" : "none"; 604 return false; 605 } 606}; 607window.hikamarket = hikamarket; 608 609})();
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.