1var selectedText = ""; 2var selectedNode = null; 3 4function formatMoney(t,a,s,e){var r=t,a=isNaN(a=Math.abs(a))?2:a,s=void 0==s?",":s,e=void 0==e?".":e,i=0>r?"-":"",o=parseInt(r=Math.abs(+r||0).toFixed(a))+"",d=(d=o.length)>3?d%3:0;return i+(d?o.substr(0,d)+e:"")+o.substr(d).replace(/(\d{3})(?=\d)/g,"$1"+e)+(a?s+Math.abs(r-o).toFixed(a).slice(2):"")} 5 6function microtime(){ 7 const d = new Date(); 8 let ms = d.getMilliseconds(); 9 return ms*ms; 10}; 11 12var dataCollapse = { 13 init: function(a) { 14 var this_ = this; 15 var _elems = document.querySelectorAll("[data-collapse]"); 16 if (_elems.length > 0) { 17 [].forEach.call(_elems, function(el) { 18 el.addEventListener("click", function(e) { 19 e.preventDefault(); 20 var thisEl = e.currentTarget; 21 var targetEl = document.querySelector(e.target.dataset.collapse); 22 23 if(thisEl.classList.contains("collapsed")){ 24 thisEl.classList.remove("collapsed") 25 }else{ 26 thisEl.classList.add("collapsed") 27 } 28 29 if (targetEl !== null) { 30 if(targetEl.classList.contains("collapsed")){ 31 targetEl.classList.remove("collapsed"); 32 this_.onShow(); 33 }else{ 34 targetEl.classList.add("collapsed") 35 } 36 if(e.target.dataset.autoremove!==undefined){ 37 el.remove(); 38 } 39 } 40 }); 41 }); 42 } 43 }, 44 onShow: function(a){ 45 if($(".owl-carousel-page-hidden").length>0){ 46 if(!$('.owl-carousel-page-hidden').hasClass('processed')){ 47 $('.owl-carousel-page-hidden').addClass('processed').addClass('owl-carousel-page'); 48 $(".owl-carousel-page").owlCarouselPage({items:1,autoplay:true,autoplayTimeout:3000,autoplayHoverPause:true,loop:true,margin:0,dots:true,nav:true,navText:["<span class='icon-arrow icon-arrow-left'></span>","<span class='icon-arrow icon-arrow-right'></span>"],navigation:true,navigationText:["<span class='icon-arrow icon-arrow-left'></span>","<span class='icon-arrow icon-arrow-right'></span>"],slideSpeed:300,paginationSpeed:400,responsive:false}); 49 initOwlGallery(); 50 } 51 } 52 } 53}; 54 55function zoom(e){ 56 var zoomer = e.currentTarget; 57 e.offsetX ? offsetX = e.offsetX : offsetX = e.touches[0].pageX 58 e.offsetY ? offsetY = e.offsetY : offsetX = e.touches[0].pageX 59 x = offsetX/zoomer.offsetWidth*100 60 y = offsetY/zoomer.offsetHeight*100 61 zoomer.style.backgroundPosition = x + '% ' + y + '%'; 62}; 63 64function getSelectionText(){ 65 s = ''; 66 if (window.getSelection){ // all modern browsers and IE9+ 67 selectedNode = window.getSelection(); 68 // console.log(selectedNode); 69 if(selectedNode.rangeCount>0){ 70 var oRange = selectedNode.getRangeAt(0); //get the text range 71 // console.log(oRange); 72 var oRect = oRange.getBoundingClientRect(); 73 s = selectedNode.toString(); 74 } 75 } 76Â Â return s; 77} 78 79function pasteHtmlAtCaret(html) { 80 let sel, range; 81 if (window.getSelection) { 82 // IE9 and non-IE 83 sel = window.getSelection(); 84 if (sel.getRangeAt && sel.rangeCount) { 85 range = sel.getRangeAt(0); 86 range.deleteContents(); 87 88 // Range.createContextualFragment() would be useful here but is 89 // non-standard and not supported in all browsers (IE9, for one) 90 const el = document.createElement("div"); 91 el.innerHTML = html; 92 let frag = document.createDocumentFragment(), 93 node, 94 lastNode; 95 while ((node = el.firstChild)) { 96 lastNode = frag.appendChild(node); 97 } 98 range.insertNode(frag); 99 console.log('lastNode', lastNode); 100 lastNode.focus(); 101 // Preserve the selection 102 if (lastNode) { 103 console.log('@lastNode'); 104 range = range.cloneRange(); 105 // range.setStartAfter(lastNode); 106 // console.log(range); 107 // range.setStart(lastNode, 0); 108 // range.setEnd(lastNode, 0); 109 range.collapse(true); 110 sel.removeAllRanges(); 111 sel.addRange(range); 112 } 113 lastNode.focus(); 114 } 115 } else if (document.selection && document.selection.type != "Control") { 116 // IE < 9 117 document.selection.createRange().pasteHTML(html); 118 } 119}; 120 121function __keyboardType(s, kt){ 122 if(String(kt).toLowerCase()=='cyr2lat'){ 123 return mutf8.Cyr2Lat(s) 124 }else if(String(kt).toLowerCase()=='lat2cyr'){ 125 return mutf8.Lat2Cyr(s) 126 }else{ 127 return mutf8.Cyr2Lat(s) 128 } 129}; 130 131function recalculateCart(){ 132 var totalAmount = 0;
133 document.querySelectorAll('tr[data-price]').forEach((el)=>{ 134 var _dataset = el.dataset; 135 var qty = parseFloat(_dataset.qty); 136 var price = parseFloat(_dataset.price); 137 var trAmount = qty * price; 138 el.querySelector('[data-amount]').innerText = formatMoney(trAmount, 2, ",", "."); 139 totalAmount += trAmount; 140 }); 141 document.querySelectorAll('[data-total-amount]').forEach((el)=>{ 142 el.innerText = formatMoney(totalAmount, 2, ",", "."); 143 }); 144} 145class NR { 146 constructor(name){ 147 this.name = name; 148 this.myDropzone; 149 this._payment_instructions = []; 150 this.payment_instructions_show = false; 151 } 152 bindOrderFormValidate(required){ 153 var this_ = this; 154 155 var _required = $.parseJSON(required); 156 var _rules = {}, _messages = {}; 157 $.each(_required, function(i, _i) { 158 159 $.each(_i.rules, function(r, rc) { 160 if(_rules[_i.name]===undefined){ 161 _rules[_i.name] = {}; 162 } 163 _rules[_i.name][r] = rc; 164 }); 165 $.each(_i.messages, function(m, mt) { 166 if(_messages[_i.name]===undefined){ 167 _messages[_i.name] = {}; 168 } 169 _messages[_i.name][m] = mt; 170 }); 171 }); 172 173 /*$("button.btn-submit-order").removeClass("hide");*/ 174 175 if ($("#form_order")[0]) { 176 177 var formOrder = document.querySelector('#form_order'); 178 179 var promoStatus = null; 180 181 /* Promo */ 182 // $.validator 183 // .addMethod( 184 // 'validatePromo', 185 // function(){ 186 // $.ajax({ 187 // url: /path/to/script, 188 // async: false, 189 // dataType: 'json', 190 // data: { 191 // 192 // }, 193 // success: function(data){ 194 // errorMessages['validatePromo'] = data.message; 195 // promoStatus = data.status; 196 // }, 197 // complete: function(){}, 198 // error: function(){} 199 // }); 200 // return promoStatus; 201 // }, 202 // function(){ 203 // return errorMessages['validatePromo']; 204 // } 205 // ); 206 207 208 209 $.validator.addMethod("promo", function(value, element) { 210 $('span.promo-status').empty().addClass('hide'); 211 $.ajax({ 212 url: '?action=promo_code', 213 async: false, 214 dataType: 'json', 215 data: { 216 'promo_code': value 217 }, 218 success: function(data){ 219 // console.log(data); 220 // _messages['promo'] = { 221 // promo: data.message 222 // }; 223 promoStatus = data.status; 224 if(!data.satus){ 225 $('span.promo-status').html(data.message).removeClass('hide'); 226 } 227 }, 228 complete: function(){ 229 // console.log('@2'); 230 }, 231 error: function(){ 232 // console.log('@3'); 233 } 234 }); 235 return promoStatus; 236 }); 237 238 // _rules['promo'] = { 239 // remote: { 240 // type: 'post', 241 // url: '?action=promo_code', 242 // data: { 243 // 'code': function () { return $('input[name="promo_code"]').val(); } 244 // }, 245 // dataType: 'json' 246 // } 247 // // remote: validatePromo 248 // }; 249 250 // _messages['promo_code'] = { 251 // remote: _('Promo kôd nije ispravan.') 252 // }; 253 254 $.validator.addMethod("alpha", function(value, element) { 255 return this.optional(element) || value == value.match(/^[a-zA-ZÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐРСТÐУФХЦЧÐШабвгдÑежзиÑклÑмнÑопÑÑÑÑÑÑÑ ÑÑÑÑÅ ÄÄÄŽšÄÄÄžÃäÃöÃüÃà åÃöÃäÃÃæøåà ÃáÄÄÃÄéÄÃÃÅÅÃóÅÅŤťÃúŮůÃýÅÅŹźŻżÅÅÅÅÄÄÐаÐбÐвÐгÐдÐеÐÑÐжÐÐ
255·ÐиÐйÐкÐлÐмÐнÐоÐпРÑСÑТÑУÑФÑÐ¥Ñ Ð¦ÑЧÑШÑЩÑЪÑЫÑЬÑÐÑЮÑЯÑÃ\s\-]+$/); 256 }); 257 $.validator.addMethod("alphanum", function(value, element) { 258 return this.optional(element) || value == value.match(/^[0-9a-zA-ZÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐÐРСТÐУФХЦЧÐШабвгдÑежзиÑклÑмнÑопÑÑÑÑÑÑÑ ÑÑÑÑÅ ÄÄÄŽšÄÄÄžÃäÃöÃüÃà åÃöÃäÃÃæøåà ÃáÄÄÃÄéÄÃÃÅÅÃóÅÅŤťÃúŮůÃýÅÅŹźŻżÅÅÅÅÄÄÐаÐбÐвÐгÐдÐеÐÑÐжÐзÐиÐйÐкÐлÐмÐнÐоÐпРÑСÑТÑУÑФÑÐ¥Ñ Ð¦ÑЧÑШÑЩÑЪÑЫÑЬÑÐÑЮÑЯÑÃ\s\-]+$/); 259 }); 260 $.validator.addMethod("phone", function(value, element) { 261 return this.optional(element) || value == value.match(/^[0-9\/\-\.\+\s]+$/); 262 }); 263 // var formOrderValidate = $("#form_order"); 264 formOrderValidate.validate({ 265 ignore: ":hidden", 266 rules: _rules, 267 messages: _messages, 268 invalidHandler: function(event, validator) { 269 // 'this' refers to the form 270 var errors = validator.numberOfInvalids(); 271 // console.log('@errors', errors); 272 if (errors) { 273 var invalidInputs = document.querySelectorAll('.validate-highlight:not(.valid)'); 274 console.log(invalidInputs); 275 if(invalidInputs.length>0){ 276 invalidInputs[0].focus(); 277 invalidInputs[0].scrollIntoView({ 278 block: 'center' 279 }); 280 } 281 } else { 282 // $("div.error").hide(); 283 } 284 }, 285 highlight: function(e) { 286 // validateErrors++; 287 // console.log('@highlight', e); 288 $(e).closest("form").removeClass("success").addClass("error") 289 // $(m).addClass('validate-highlight'); 290 e.classList.remove('valid'); 291 e.classList.add('validate-highlight'); 292 }, 293 success: function(e, v) { 294 // console.log('@success', e, v); 295 e.text("").addClass("valid").closest("form").removeClass("error").addClass("success") 296 // e.classList.remove('validate-highlight'); 297 }, 298 errorPlacement: function(error, element){ 299 $(error).addClass('error-column'); 300 //$(element).parent().parent().addClass('error-column').append(error); 301 console.log('@errorPlacement', $(element).attr('name')); 302 element.classList.remove('valid'); 303 switch($(element).attr('name')){ 304 case 'imedeteta~': 305 case 'pohvala': 306 case 'kritika': 307 case 'address': 308 case 'address_alt': 309 case 'house_no': 310 case 'house_no_alt': 311 case 'zipcode': 312 case 'zipcode_alt': 313 case 'city': 314 case 'city_alt': 315 case 'tos': 316 case 'promo_code': 317 case '_commendation[]': 318 case '_commendation[]': 319 $(element).parents('.einput').parent().append(error); 320 $(element).closest('.valid').removeClass('valid'); 321 break; 322 default: 323 /*console.log($(element));*/ 324 /*console.log($(element).parents('.column'));*/ 325 /*$(element).parent().parent().append(error);*/ 326 $(element).parents('.einput').append(error); 327 break; 328 } 329 }, 330 submitHandler: function(f) { 331 /*console.log(f);*/ 332 /*$('body').removeAttr('data-loading-message').removeClass('loading');*/ 333 swal.close(); 334 $('body').attr('data-loading-message', $('form#form_order').attr('data-loading-message')).addClass('loading'); 335 f.submit(); 336 } 337 }); 338 } 339 340 if($('input[name="tooth_skip"]').length>0){ 341 $('input[name="tooth_skip"]').off('change'); 342 $('input[name="tooth_skip"]').on('change', function(){ 343 if($('input[name="tooth_skip"]').is(':checked')){ 344 $('input[name="tooth"]').rules('remove', 'required'); 345 }else{ 346 $('input[name="tooth"]').rules( "add", { 347 required: true, 348 messages: { 349 required: _('Neophodno popuniti') 350 } 351 }); 352 } 353 }); 354 } 355 356 if($('input[name="pos_alt"]').length>0){ 357 $('input[name="pos_alt"]').off('change'); 358 $('input[name="pos_alt"]').on('change', function(){ 359 if($('input[name="pos_alt"]').is(':checked')){ 360 $('.column-address-alt').removeClass('disabled'); 361 /* 362 $('.column-address').addClass('disabled'); 363 $('input[name="address"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 364 $('input[name="house_no"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 365 $('input[name="zipcode"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 366 $('input[name="city"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 367 368 $('em#address-error').remove(); 369 $('em#house_no-error').remove(); 370 $('em#zipcode-error').remove(); 371 $('em#city-error').remove(); 372 */ 373 374 $('input[name="address_alt"]').removeAttr('disabled').rules('add', { 375 required: true, 376 messages: { 377 required: _('Neophodno popuniti') 378 } 379 }); 380 $('input[name="house_no_alt"]').removeAttr('disabled').rules('add', { 381 required: true, 382 messages: { 383 required: _('Neophodno popuniti') 384 } 385 }); 386 $('input[name="zipcode_alt"]').removeAttr('disabled').rules('add', { 387 required: true, 388 messages: { 389 required: _('Neophodno popuniti') 390 } 391 }); 392 $('input[name="city_alt"]').removeAttr('disabled').rules('add', { 393 required: true, 394 messages: { 395 required: _('Neophodno popuniti') 396 } 397 }); 398 }else{ 399 /*$('.column-address').removeClass('disabled');*/ 400 $('.column-address-alt').addClass('disabled'); 401 402 $('input[name="address_alt"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 403 $('input[name="house_no_alt"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 404 $('input[name="zipcode_alt"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 405 $('input[name="city_alt"]').removeAttr('aria-invalid').removeAttr('aria-describedby').attr('disabled', true).rules('remove', 'required'); 406 407 $('em#address_alt-error').remove(); 408 $('em#house_no_alt-error').remove(); 409 $('em#zipcode_alt-error').remove(); 410 $('em#city_alt-error').remove(); 411 412 /* 413 $('input[name="address"]').removeAttr('disabled').rules('add', { 414 required: true, 415 messages: { 416 required: _('Neophodno popuniti') 417 } 418 }); 419 $('input[name="house_no"]').removeAttr('disabled').rules('add', { 420 required: true, 421 messages: { 422 required: _('Neophodno popuniti') 423 } 424 }); 425 $('input[name="zipcode"]').removeAttr('disabled').rules('add', { 426 required: true, 427 messages: { 428 required: _('Neophodno popuniti') 429 } 430 }); 431 $('input[name="city"]').removeAttr('disabled').rules('add', { 432 required: true, 433 messages: { 434 required: _('Neophodno popuniti') 435 } 436 }); 437 */ 438 } 439 }); 440 } 441 442 /* LETTER PREVIEW */ 443 var letterMain = document.querySelector('#dedatext'); 444 var letterPreview = document.querySelector('#letter-preview'); 445 if(letterPreview!==null){ 446 console.log('@letterPreview'); 447 var columnSubmitBtn = formOrder.querySelector('.column-submit-btn'); 448 var btnPreview = document.querySelector('button.btn-preview'); 449 var btnSubmitOrder = formOrder.querySelector('button.btn-submit-order'); 450 var btnEdit = formOrder.querySelector('button.btn-edit'); 451 var btnEditCancel = formOrder.querySelector('button.btn-edit-cancel'); 452 var btnSave = formOrder.querySelector('button.btn-save'); 453 454 455 function letterPreviewAutoSave(){ 456 document.querySelector('textarea[name="letter_text_by_user"]').value = letterPreview.innerHTML; 457 }; 458 459 function saveLetterPreview(){ 460 console.log('@saveLetterPreview'); 461 letterPreview.removeAttribute('contenteditable'); 462 this.classList.add('hide'); 463 btnEdit.removeAttribute('disabled'); 464 btnEditCancel.classList.add('hide'); 465 btnEdit.classList.remove('hide'); 466 btnSave.classList.add('hide'); 467 document.querySelector('textarea[name="letter_text_by_user"]').value = letterPreview.innerHTML; 468 } 469 470 function editCancelLetterPreview(){ 471 console.log('@editCancelLetterPreview'); 472 letterPreview.removeAttribute('contenteditable'); 473 // btnEdit.removeAttribute('disabled'); 474 this.classList.add('hide'); 475 btnSave.classList.add('hide'); 476 btnEdit.classList.remove('hide'); 477 letterPreview.innerHTML = document.querySelector('textarea#letter-preview-text').value; 478 479 } 480 481 function editLetterPreview(){ 482 console.log('@editLetterPreview'); 483 // this.setAttribute('disabled', true); 484 btnEdit.classList.add('hide'); 485 btnSave.classList.remove('hide'); 486 btnEditCancel.classList.remove('hide'); 487 btnSave.addEventListener('click', saveLetterPreview); 488 btnEditCancel.addEventListener('click', editCancelLetterPreview); 489 // btnSubmitOrder.classList.remove('hide'); 490 491 letterPreview.setAttribute('contenteditable', true); 492 493 /* CONTENTEDITABLE */ 494 // letterPreview.addEventListener('mouseup', function(){ 495 // var theText = getSelectionText(); 496 // console.log('theText', theText); 497 // console.log('@selectedNode.baseNode.parentNode.nodeName', selectedNode.baseNode.parentNode.nodeName); 498 // 499 // // if (theText.length > 0){ // check there's some text selected 500 // // // console.log(theText) // logs whatever textual content the user has selected on the page 501 // // selectedText = theText;
502 // // console.log('@selectedNode.baseNode.parentNode.nodeName', selectedNode.baseNode.parentNode.nodeName); 503 // // switch(selectedNode.baseNode.parentNode.nodeName){ 504 // // case 'SPAN': 505 // // console.log('SPAN AREA'); 506 // // break; 507 // // default: 508 // // console.log('OTHER AREA'); 509 // // pasteHtmlAtCaret('<span>@@@</span>'); 510 // // // pasteHtmlAtCaret('<span></span>'); 511 // // break; 512 // // } 513 // // }else{ 514 // // 515 // // } 516 // 517 // switch(selectedNode.baseNode.parentNode.nodeName){ 518 // case 'SPAN': 519 // console.log('SPAN AREA'); 520 // break; 521 // default: 522 // console.log('OTHER AREA'); 523 // // pasteHtmlAtCaret('<span>@@@</span>'); 524 // // pasteHtmlAtCaret('<span>ÈB</span>'); 525 // pasteHtmlAtCaret('<span></span>'); 526 // break; 527 // } 528 // 529 // }, false); 530 531 letterPreview.addEventListener('keypress',function(evt){ 532 var range = window.getSelection().getRangeAt(0), 533 modifiers = [0,8]; // List of keys to ignore (0 is arrows & 8 is delete in firefox) 534 535 if(range.startContainer.parentNode.className!=='highlight' && modifiers.indexOf(evt.which) < 0){ 536 if(!range.collapsed){ 537 range.deleteContents(); 538 } 539 var el = document.createElement('span'); 540 el.appendChild(document.createTextNode('A')); 541 el.className = 'highlight'; 542 range.insertNode(el); 543 544 var sel = window.getSelection(); 545 range.setStartBefore(el.childNodes[0]); 546 range.setEndAfter(el.childNodes[0]); 547 sel.removeAllRanges(); 548 sel.addRange(range); 549 } 550 }); 551 } 552 553 function getLetterPreview(){ 554 console.log('@getLetterPreview'); 555 556 console.log(formOrderValidate); 557 console.log(formOrderValidate.valid()); 558 559 if(formOrderValidate.valid()){ 560 var _pohvale = []; 561 formOrder.querySelectorAll('.tr-pohvala').forEach((el)=>{ 562 // console.log(el); 563 _pohvale.push(el.value); 564 }); 565 // console.log(_pohvale); 566 567 var _kritike = []; 568 formOrder.querySelectorAll('.tr-kritika').forEach((el)=>{ 569 // console.log(el); 570 _kritike.push(el.value); 571 }); 572 // console.log(_kritike); 573 574 var _params = { 575 abc: 123, 576 userdata: { 577 lid: formOrder.querySelector('input[name="lid"]').value, 578 gender: formOrder.querySelector('input[name="gender"]').value, 579 tooth_fallout: formOrder.querySelector('input[name="tooth_fallout"]').value, 580 tooth_condition: formOrder.querySelector('input[name="tooth_condition"]').value, 581 imedeteta: formOrder.querySelector('input[name="imedeteta"]').value, 582 pohvala: _pohvale, 583 kritika: _kritike 584 } 585 }; 586 console.log(_params); 587 588 $('body').attr('data-loading-message', $('form#form_order').attr('data-loading-message')).addClass('loading'); 589 590 $.ajax({ 591 type: "POST", 592 url: ROOTURL+"/?action=preview&json", 593 data: JSON.stringify(_params), 594 dataType: "json", 595 contentType: "application/json", 596 success: function(){}, 597 complete: function(n){ 598 console.log(n); 599 n = $.parseJSON(n.responseText); 600 console.log(n); 601 602 btnPreview.classList.add('hide'); 603 letterMain.classList.add('hide'); 604 btnEdit.classList.remove('hide'); 605 letterPreview.innerHTML = n.content; 606 document.querySelector('textarea#letter-preview-text').value = letterPreview.innerHTML; 607 608 document.querySelector('.column-preview-back').classList.remove('hide'); 609 document.querySelectorAll('.column-product-package').forEach((el)=>{ 610 el.classList.remove('hide'); 611 }); 612 document.querySelector('.column-submit-btn').classList.remove('hide'); 613 614 document.querySelector('.column-preview').classList.remove('hide'); 615 document.querySelector('.column-preview').scrollIntoView({ 616 block: 'start' 617 }); 618 619 var previewTooth = document.querySelector('#letter_preview .tooth'); 620 if(previewTooth!==null){ 621 previewTooth.remove(); 622 } 623 var toothValue = parseInt(String(document.querySelector('input[name="tooth"]').value).replace(/[^0-9]/g, '')); 624 if(toothValue>0){ 625 var newSpan = document.createElement("span"); 626 newSpan.classList.add('tooth'); 627 newSpan.classList.add(String(document.querySelector('input[name="tooth"]').value).toLowerCase()); 628 letterPreview.appendChild(newSpan); 629 } 630 631 var previewToothCondition = document.querySelector('#letter_preview .tooth_condition'); 632 if(previewToothCondition!==null){ 633 previewToothCondition.remove(); 634 } 635 var newSpan = document.createElement("span"); 636 newSpan.classList.add('tooth_condition'); 637 newSpan.classList.add('tooth_condition' + formOrder.querySelector('input[name="tooth_condition"]').value); 638 letterPreview.appendChild(newSpan); 639 640 641 columnSubmitBtn.classList.remove('hide'); 642 btnEdit.addEventListener('click', editLetterPreview); 643 644 $('body').removeAttr('data-loading-message').removeClass('loading'); 645 } 646 }); 647 } 648 } 649 650 btnPreview.addEventListener('click', getLetterPreview); 651 652 dataCollapse.init(); 653 654 letterPreview.addEventListener('keyup', letterPreviewAutoSave); 655 656 657 } 658 659 /* LETTER */ 660 if($('input[name="shipping_type"]').length>0){ 661 $('input[name="shipping_type"]').off('change'); 662 $('input[name="shipping_type"]').on('change', function(){ 663 this_.paymentTypesByShippingType($(this).val()); 664 665 // document.querySelectorAll('[data-price-leter]').forEach((el)=>{ 666 // el.innerText = formatMoney(parseFloat($(this).attr('data-price')), 2, ",", "."); 667 // el.setAttribute('data-price', $(this).attr('data-price'); 668 // }); 669
670 var trPriceLetter = document.querySelector('tr[data-price-letter]'); 671 if(trPriceLetter!==null){ 672 trPriceLetter.setAttribute('data-price', $(this).attr('data-price')); 673 var tdPrice = trPriceLetter.querySelector('[data-price]'); 674 tdPrice.setAttribute('data-price', $(this).attr('data-price')); 675 var qty = trPriceLetter.dataset.qty; 676 var tdAmount = trPriceLetter.querySelector('[data-amount]'); 677 tdPrice.innerText = formatMoney($(this).attr('data-price'), 2, ",", "."); 678 tdAmount.innerText = formatMoney(parseFloat(qty)*parseFloat($(this).attr('data-price')), 2, ",", "."); 679 } 680 console.info('@recalculateCart 1'); 681 recalculateCart(); 682 }); 683 } 684 685 if($('input[name="is_tracking_code"]').length>0){ 686 $('input[name="is_tracking_code"]').off('change'); 687 $('input[name="is_tracking_code"]').on('change', function(){ 688 689 var trPriceTracking = document.querySelector('tr[data-price-tracking]'); 690 if(trPriceTracking!==null){ 691 trPriceTracking.setAttribute('data-qty', $(this).is(':checked') ? 1 : 0); 692 var tdPrice = trPriceTracking.querySelector('[data-price]'); 693 var tdQty = trPriceTracking.querySelector('[data-qty]'); 694 var tdAmount = trPriceTracking.querySelector('[data-amount]'); 695 var qty = parseFloat(trPriceTracking.dataset.qty); 696 tdPrice.innerText = formatMoney($(this).attr('data-price'), 2, ",", "."); 697 tdQty.innerText = qty; 698 tdAmount.innerText = formatMoney(qty*parseFloat($(this).attr('data-price')), 2, ",", "."); 699 if(qty>0){ 700 trPriceTracking.classList.remove('hide'); 701 }else{ 702 trPriceTracking.classList.add('hide'); 703 } 704 } 705 console.info('@recalculateCart 2'); 706 recalculateCart(); 707 }); 708 } 709 this_.bindPaymentTypeChange(); 710 } 711 712 bindCommon(){ 713 var this_ = this; 714 715 $('.nav-toggle').off('click'); 716 $('.nav-toggle').on('click', function(e){ 717 e.preventDefault(); 718 $('.nav-toggle').toggleClass('active'); 719 $('.nav-menu').toggleClass('active'); 720 $('.nav-overlay').toggleClass('active'); 721 }) 722 $('.nav-overlay').off('click'); 723 $('.nav-overlay').on('click', function(e){ 724 e.preventDefault(); 725 $('.nav-toggle').toggleClass('active'); 726 $('.nav-menu').toggleClass('active'); 727 $('.nav-overlay').toggleClass('active'); 728 }) 729 730 if($(".owl-carousel-page").length>0){ 731 $(".owl-carousel-page").owlCarouselPage({items:1,autoplay:true,autoplayTimeout:3000,autoplayHoverPause:true,loop:true,margin:0,dots:true,nav:true,navText:["<span class='icon-arrow icon-arrow-left'></span>","<span class='icon-arrow icon-arrow-right'></span>"],navigation:true,navigationText:["<span class='icon-arrow icon-arrow-left'></span>","<span class='icon-arrow icon-arrow-right'></span>"],slideSpeed:300,paginationSpeed:400,responsive:false}) 732 initOwlGallery(); 733 } 734 735 $('#tabs_payment_types a').off('click'); 736 $('#tabs_payment_types a').on('click', function (e) { 737 e.preventDefault() 738 $(this).tab('show'); 739 $('#tabs_payment_types+.tab-content input').prop('disabled', true); 740 $($(this).attr('href')).find('input').prop('disabled', false); 741 $('#form_order input[name="payment_type"]').val($(this).attr('data-id')); 742 }); 743 $('[data-video-show]').off('click'); 744 $('[data-video-show').on('click', function(e){ 745 e.preventDefault(); 746 var $this = $('#'+$(this).attr('data-video-show')); 747 if($this.hasClass('hide')){ 748 $this.removeClass('hide'); 749 $this.parent().addClass('active'); 750 this_.lazy(0); 751 }else{ 752 $this.addClass('hide'); 753 $this.parent().removeClass('active'); 754 } 755 }); 756 $('[data-email]').each(function(){ 757 var $this = $(this); 758 var _e = String(($this).attr('data-email')).split('|'); 759 var e = ''; 760 for(var i in _e){ 761 e += String.fromCharCode(_e[i]); 762 } 763 $this.attr('href', 'mailto:'+e); 764 if($this.attr('data-text')!==undefined){ 765 $this.text($this.attr('data-text')); 766 }else{ 767 $this.text(e); 768 } 769 }); 770 771 $('[data-clipboard]').off('click'); 772 $('[data-clipboard]').on('click', function(e){ 773 e.preventDefault(); 774 var copyText = document.getElementById($(this).attr('data-clipboard')); 775 copyText.select(); 776 copyText.setSelectionRange(0, 99999) 777 document.execCommand("copy"); 778 console.log("Copied the text: " + copyText.value); 779 swal({ 780 type: 'info', 781 confirmButtonText: _('OK'), 782 title: _('Info'), 783 html: '<p>' + _('Order number has been copied.') + '</p>', 784 timer: 3000 785 }); 786 }); 787 788 if($("div#upload_dropzone")[0]){ 789 Dropzone.autoDiscover = false;
790 791 function paramNameForSend() { 792 return VIDEO_IMAGE_UPLOAD_PARAM; 793 } 794 if(!$("div#upload_dropzone").hasClass('dz-started')){ 795 this_.myDropzone = new Dropzone("div#upload_dropzone", { 796 url: ROOTURL+'/index.php?action=video_image_upload', 797 maxFilesize: 25, // MB 798 maxFiles: 1, 799 autoProcessQueue: true, 800 uploadMultiple: true, 801 paramName: paramNameForSend, 802 method: 'post', 803 parallelUploads: 1, 804 init: function() { 805 if(!$('.nr-knob').hasClass('knobbed')){ 806 $('.nr-knob').addClass('knobbed'); 807 setTimeout(function(){ 808 $("input.knob").knob(); 809 }, 777); 810 } 811 this.on("sending", function(file, xhr, formData) { 812 $('body').attr('data-loading-message', $('div#upload_dropzone').attr('data-loading-message')).addClass('loading'); 813 if(this_.albumControl==false){ 814 this_.albumControl = true; 815 formData.append("album", $('input[name="album"]').val()); 816 } 817 }); 818 this.on("addedfile", function(file){ 819 $('.form-control.counter').val(parseFloat($('.form-control.counter').val())+1); 820 }); 821 this.on("removedfile", function(file){ 822 $('.form-control.counter').val(parseFloat($('.form-control.counter').val())-1); 823 }); 824 this.on("totaluploadprogress", function(progress){ 825 $('input.knob') 826 .val(parseFloat(progress)) 827 .trigger('change'); 828 }); 829 this.on("queuecomplete", function(file){ 830 this.removeAllFiles(); 831 $('body').removeAttr('data-loading-message').removeClass('loading'); 832 //$('.nr-knob').addClass('hide'); 833 this_.albumControl = false; 834 835 $('button[type="reset"]').removeClass('hide'); 836 $('p.alert').removeClass('hide'); 837 $('fieldset').addClass('hide'); 838 839 }); 840 this.on("success", function(file, r){ 841 r = $.parseJSON(r); 842 if(r.response=='success'){ 843 $("input[name='video_image']").val(r.name); 844 $("#video_image").attr("src", r.src); 845 $("#crop-avatar").show(); 846 new CropAvatar($("#crop-avatar")); 847 setTimeout(function(){ 848 $('.avatar-view').trigger('click'); 849 }, 500); 850 }else{ 851 swal({ 852 type: 'error', 853 confirmButtonText: _('OK'), 854 title: _('Error'), 855 html: '<p>'+r.message+'</p>', 856 }); 857 } 858 }); 859 860 /* 861 $('#form_validation').validate({ 862 rules: { 863 counter: { 864 min: true 865 } 866 }, 867 messages: { 868 counter: { 869 min: 'Molimo uÄitajte slike' 870 } 871 }, 872 highlight: function (input) { 873 $(input).parents('.form-line').addClass('error'); 874 }, 875 unhighlight: function (input) { 876 $(input).parents('.form-line').removeClass('error'); 877 }, 878 errorPlacement: function (error, element) { 879 $(element).parents('.form-group').append(error); 880 }, 881 submitHandler: function() { 882 $('.nr-knob').removeClass('hide'); 883 this_.myDropzone.processQueue(); 884 } 885 }); 886 */ 887 } 888 }); 889 } 890 } 891 892 if($("#form_order")[0]){ 893 console.log('zzzzzzzzzz@bindOrderFormValidate'); 894 // this_.bindOrderFormValidate($("#form_order").attr('data-required')); 895 } 896 897 // Dodatno (paketi) 898 document.querySelectorAll('[data-qty-to]').forEach((el)=>{ 899 el.addEventListener('change', function(e){ 900 console.log(e.currentTarget.dataset.qtyTo); 901 document.querySelector(e.currentTarget.dataset.qtyTo).value = e.currentTarget.checked ? e.currentTarget.value : 0; 902 }); 903 }); 904 905 document.querySelectorAll('[data-qty-plus-to]').forEach((el)=>{ 906 el.addEventListener('click', function(e){ 907 console.log(e.currentTarget.dataset); 908 var qtyElem = document.querySelector(e.currentTarget.dataset.qtyPlusTo); 909 var currentQty = parseFloat(qtyElem.value); 910 qtyElem.value = currentQty + 1; 911 const eventQtyChange = new Event('change', { 912 cancelable: true 913 }); 914 document.querySelector(e.currentTarget.dataset.qtyPlusTo).dispatchEvent(eventQtyChange); 915 }); 916 }); 917 918 document.querySelectorAll('[data-qty-minus-to]').forEach((el)=>{ 919 el.addEventListener('click', function(e){ 920 console.log(e.currentTarget.dataset); 921 var qtyElem = document.querySelector(e.currentTarget.dataset.qtyMinusTo); 922 var currentQty = parseFloat(qtyElem.value); 923 qtyElem.value = currentQty - 1; 924 const eventQtyChange = new Event('change', { 925 cancelable: true 926 }); 927 document.querySelector(e.currentTarget.dataset.qtyMinusTo).dispatchEvent(eventQtyChange); 928 }); 929 }); 930 931 document.querySelectorAll('[data-checkbox-to]').forEach((el)=>{ 932 el.addEventListener('change', function(e){ 933 console.log(parseFloat(e.currentTarget.value)); 934 console.log(parseFloat(e.currentTarget.value) > 0); 935 var checkboxTo = document.querySelector(e.currentTarget.dataset.checkboxTo); 936 if(parseFloat(e.currentTarget.value) > 0){ 937 console.log(checkboxTo.checked); 938 if(!checkboxTo.checked){ 939 checkboxTo.checked = true; 940 } 941 }else{ 942 checkboxTo.checked = false;
943 } 944 }); 945 }); 946 947 } 948 slider(){ 949 var this_ = this; 950 /*console.log("@slider");*/ 951 var sync1 = $("#main-slider"); 952 var sync2 = $("#main-slider-thumbs"); 953 if(sync1[0]){ 954 /*console.log("@");*/ 955 var __current = 0; 956 sync1.owlMCarousel({ 957 items: 1, 958 singleItem : true, 959 video: true, 960 slideSpeed : 1000, 961 dots:false, 962 nav:true, 963 navText: [ 964 "<i class='fa fa-chevron-left fa-white'></i>", 965 "<i class='fa fa-chevron-right fa-white'></i>" 966 ], 967 pagination: false, 968 onChanged : syncPosition, 969 responsiveRefreshRate : 200, 970 lazyLoad : !0, 971 transitionStyle : "fade", 972 onInitialized : function(){ 973 $("#main-slider .owl-next").prepend('<span class="slider-status">1/'+this._items.length+'</span>'); 974 } 975 }); 976 if(sync2[0]){ 977 sync2.owlCarousel({ 978 items : 3, 979 itemsDesktop : [1199,3], 980 itemsDesktopSmall : [979,3], 981 itemsTablet : [768,3], 982 itemsMobile : [479,1], 983 pagination: false, 984 dots:false, 985 lazyLoad : !0, 986 responsiveRefreshRate : 100, 987 onInitialized : function(){ 988 var el = this._items[0]; 989 el.addClass("synced"); 990 var thumbTxt = el.find(".item").data("text"); 991 $(".main-slider-text").html(thumbTxt).fadeIn(); 992 var ilen = this._items.length; 993 994 setTimeout(function(){ 995 $("#main-slider .owl-next .slider-status").html((__current+1)+"/"+ilen); 996 }, 333); 997 } 998 }); 999 } 1000 function syncPosition(){ 1001 /*$("video").trigger("pause").addClass("hide");*/ 1002 __current = this._current; 1003 $(".main-slider-text").fadeOut(function(){ 1004 var thumbTxt = $("#main-slider-thumbs") 1005 .find(".owl-item") 1006 .eq(__current)
1007 .find(".item") 1008 .data("text"); 1009 $(this).html(thumbTxt).fadeIn(); 1010 }); 1011 $("#main-slider .owl-next .slider-status").html((__current+1)+"/"+this._items.length); 1012 $("#main-slider-thumbs") 1013 .find(".owl-item") 1014 .removeClass("synced") 1015 .eq(__current) 1016 .addClass("synced"); 1017 if($("#main-slider-thumbs").data("owlCarousel") !== undefined){ 1018 center(__current) 1019 } 1020 /*$("a.item-video").fadeIn();*/ 1021 if(__current==0){ 1022 } 1023 } 1024 1025 $("#main-slider-thumbs").on("click", ".owl-item", function(e){ 1026 e.preventDefault(); 1027 var number = $(this).find(".item").data("number"); 1028 if(number!=__current){ 1029 sync1.trigger("to", [number, 1, true]); 1030 } 1031 }); 1032 1033 function center(number){ 1034 /*var sync2visible = sync2.data("owlCarousel").owl.visibleItems;*/ 1035 var sync2visible = $("#main-slider-thumbs .owl-item.active"); 1036 1037 var num = number; 1038 var found = false; 1039 for(var i in sync2visible){ 1040 if(num === sync2visible[i]){ 1041 var found = true; 1042 } 1043 } 1044 /* 1045 if(found===false){ 1046 if(num>sync2visible[sync2visible.length-1]){ 1047 sync2.trigger("owl.goTo", num - sync2visible.length+2) 1048 }else{ 1049 if(num - 1 === -1){ 1050 num = 0; 1051 } 1052 sync2.trigger("owl.goTo", num); 1053 } 1054 } else if(num === sync2visible[sync2visible.length-1]){ 1055 sync2.trigger("owl.goTo", sync2visible[1]) 1056 } else if(num === sync2visible[0]){ 1057 sync2.trigger("owl.goTo", num-1) 1058 } 1059 */ 1060 } 1061 } 1062 } 1063 init(){ 1064 this.bindCommon(); 1065 this.slider(); 1066 } 1067}
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.