1// JavaScript Document 2//// //prelaunch comments designate known code issues 3 4// copyright SiteDoneRite 5 6////////////////////////////////////////// 7///////// this function is used to clean filenames when uploading an image or file. 8///////// it mimics a php function in the imageUpload library, this is the client side mirror of it 9//////////////////////////////////////// 10 11function cleanFileName(filename) { 12 var illegal_chars = new Array( 13 "`", 14 "~", 15 "!", 16 "@", 17 "#", 18 "$", 19 "%", 20 "^", 21 "&", 22 "=", 23 "_", 24 "*", 25 "(", 26 ")", 27 "+", 28 "[", 29 "{", 30 "]", 31 "}", 32 "|", 33 ";", 34 ":", 35 "'", 36 '"', 37 ",", 38 "<", 39 ">", 40 "/", 41 "?", 42 " " 43 ); 44 45 for (var i = 0; i < illegal_chars.length; i++) { 46 var q = new RegExp("\\" + illegal_chars[i], "g"); 47 filename = filename.replace(q, "-"); 48 } 49 50 //alert(filename) 51 return filename; 52} // end cleanFileName function 53 54////////////////////////////////////////// 55///////// Send Email to lead //////////////////// 56//////////////////////////////////////// 57//// prelaunch 58function sendEmail(id) { 59 var id = id; 60 var subject = jQuery("#subject-" + id).attr("value"); 61 // get content of mce editor 62 63 //var content = ajaxMCEGet(id); 64 var content = jQuery("#emailContent-" + id).val(); 65 //alert(content); 66 content = content.replace(/%/, "%"); 67 68 var content = encodeURIComponent(content); 69 70 var response = jQuery.ajax({ 71 type: "POST", 72 url: domain + "ajax/ajax-SendEmailToLead.php", 73 data: "id=" + id + "&content=" + content + "&subject=" + subject, 74 error: function () { 75 alert("lead status not changed, please contact adminstrator"); 76 //alertResponse(response); 77 }, 78 success: function () { 79 if (response.responseText) { 80 // if opened image is 'closed', change opened image from closed to open 81 alert("Email has been sent"); 82 //alert(response.responseText); 83 } else { 84 alert("Email has not been sent"); 85 alert(response.responseText); 86 } 87 }, 88 }); 89 return false; 90} 91 92////////////////////////////////////////// 93///////// Delete Image from Inventory //////////////////// 94//// this should be moved to sdr system inventory management system 95//////////////////////////////////////// 96function deleteImage(id) { 97 var id = id; 98 99 var response = jQuery.ajax({ 100 type: "POST", 101 url: domain + "ajax/ajax-DeleteInvImage.php", 102 data: "id=" + id, 103 beforeSend: function () { 104 var ok = confirm("Are you sure want to Delete This Image?"); 105 106 if (!ok) { 107 return false; 108 } 109 }, 110 error: function () { 111 alert("Image has not been deleted. Please try again or contact SDR"); 112 alertResponse(response.responseText); 113 }, 114 success: function () { 115 // here we change the image trigger value so the php script knows to re-pro zip files 116 jQuery("#image_trigger").attr("value", "1"); 117 118 // make the image table invisible 119 jQuery("#image-table-" + id).remove(); 120 }, 121 }); 122 return false; 123} 124 125////////////////////////////////////////// 126///////// Delete Image from warranty claim //////////////////// 127//////////////////////////////////////// 128function deleteWarrantyClaimImage(id) { 129 var id = id; 130 131 var response = jQuery.ajax({ 132 type: "POST", 133 url: domain + "ajax/ajax-DeleteWarrantyClaimImage.php", 134 data: "id=" + id, 135 beforeSend: function () { 136 var ok = confirm("Are you sure want to Delete This Image?"); 137 138 if (!ok) { 139 return false; 140 } 141 }, 142 error: function () { 143 alert("Image has not been deleted. Please try again or contact SDR"); 144 alertResponse(response.responseText); 145 }, 146 success: function () { 147 // here we change the image trigger value so the php script knows to re-pro zip files 148 jQuery("#image_trigger").attr("value", "1"); 149 150 // make the image table invisible 151 jQuery("#image-table-" + id).remove(); 152 }, 153 }); 154 return false; 155} 156 157////////////////////////////////////////// 158///////// Delete Image from warranty claim //////////////////// 159//////////////////////////////////////// 160function deleteLocationImage(id) { 161 var id = id; 162 163 var response = jQuery.ajax({ 164 type: "POST", 165 url: domain + "Location-Manager.php?action=image_delete", 166 data: "id=" + id, 167 beforeSend: function () { 168 var ok = confirm("Are you sure want to Delete This Image?"); 169 170 if (!ok) { 171 return false;
172 } 173 }, 174 error: function () { 175 alert("Image has not been deleted. Please try again or contact SDR"); 176 alertResponse(response.responseText); 177 }, 178 success: function () { 179 // here we change the image trigger value so the php script knows to re-pro zip files 180 jQuery("#image_trigger").attr("value", "1"); 181 182 // make the image table invisible 183 jQuery("#image-table-" + id).remove(); 184 }, 185 }); 186 return false; 187} 188 189////////////////////////////////////////// 190///////// Delete Image from Inventory //////////////////// 191//////////////////////////////////////// 192function deleteBlogImage(id) { 193 var id = id; 194 var response = jQuery.ajax({ 195 type: "POST", 196 url: domain + "ajax/ajax-DeleteBlogImage.php", 197 data: "id=" + id, 198 beforeSend: function () { 199 var ok = confirm("Are you sure want to Delete This Image?"); 200 201 if (!ok) { 202 return false; 203 } 204 }, 205 error: function () { 206 alert("Image has not been deleted. Please try again or contact SDR"); 207 alertResponse(response.responseText); 208 }, 209 success: function () { 210 // make the image table invisible 211 jQuery("#image-table-" + id).remove(); 212 }, 213 }); 214 return false; 215} 216 217////////////////////////////////////////// 218///////// Delete page content confirmaiton 219//////////////////////////////////////// 220 221function deletePageContentConfirm(id) { 222 var answer = confirm("Are you sure you want to delete this Content Page?"); 223 if (answer) { 224 jQuery("#action-" + id).attr("value", "delete"); 225 } else { 226 alert("Content has not been deleted. Resume Editing."); 227 } 228} 229 230//////////////////////////////////////////
231///////// Rotate an image //////////////////// 232//////////////////////////////////////// 233function rotateImage(file, degrees, id) { 234 var folderID = jQuery("#folderID").attr("value"); 235 var fileID = file.split("."); 236 // set image to loader 237 var imgURL = domain + "images/styleElements/loader100px.gif"; 238 jQuery("#image-" + id).attr("src", imgURL); 239 var response = jQuery.ajax({ 240 type: "POST", 241 url: domain + "ajax/ajax-ImageRotate.php", 242 data: "file=" + file + "°rees=" + degrees + "&folderID=" + folderID, 243 beforeSend: function () {}, 244 error: function () { 245 alert("Image has not been rotated. Please try again or contact SDR"); 246 alert(response.responseText); 247 }, 248 success: function () { 249 // show the new image 250 // have to use random query string to keep from caching.... hopefully? 251 var randomnumber = Math.floor(Math.random() * 11); 252 var newImgURL = 253 domain + 254 "images/inventoryImages/" + 255 folderID + 256 "/180px/" + 257 file + 258 "?id=" + 259 randomnumber; 260 261 // here we change the image trigger value so the php script knows to re-pro zip files 262 jQuery("#image_trigger").attr("value", "1"); 263 264 //alert(response.responseText); 265 jQuery("#image-" + id).attr("src", newImgURL); 266 }, 267 }); 268 return false; 269} 270 271//////////////////////////////////////////
272///////// Rotate an image //////////////////// 273//////////////////////////////////////// 274function rotateLocationImage(file, degrees, id) { 275 var folderID = jQuery("#location_id").attr("value"); 276 var fileID = file.split("."); 277 // set image to loader 278 var imgURL = domain + "images/styleElements/loader100px.gif"; 279 jQuery("#image-" + id).attr("src", imgURL); 280 var response = jQuery.ajax({ 281 type: "POST", 282 url: domain + "Location-Manager.php?action=image_rotate", 283 data: "file=" + file + "°rees=" + degrees + "&folderID=" + folderID, 284 beforeSend: function () {}, 285 error: function () { 286 alert("Image has not been rotated. Please try again or contact SDR"); 287 alert(response.responseText); 288 }, 289 success: function () { 290 // show the new image 291 // have to use random query string to keep from caching.... hopefully? 292 var randomnumber = Math.floor(Math.random() * 11); 293 var newImgURL = 294 domain + 295 "images/images_location/" + 296 folderID + 297 "/640px/" + 298 file + 299 "?id=" + 300 randomnumber; 301 302 // here we change the image trigger value so the php script knows to re-pro zip files 303 jQuery("#image_trigger").attr("value", "1"); 304 305 //alert(response.responseText); 306 jQuery("#image-" + id).attr("src", newImgURL); 307 }, 308 }); 309 return false; 310} 311 312// sets the value of the hidden field to reflect the submit button clicked 313function submitV(value) { 314 document.forms["mainForm"].elements["submitValue"].value = value; 315} 316 317function success(msg, id) { 318 jQuery("#success" + id).empty(); 319 jQuery("#success" + id).append(msg); 320 jQuery("#failBox" + id).css("display", "none"); 321 jQuery("#fail" + id).empty(); 322 jQuery("#successBox" + id).css("display", "block"); 323 jQuery("#loadingWheel").fadeTo("medium", 0.0); 324} 325 326function fail(msg, id) { 327 jQuery("#fail" + id).empty(); 328 jQuery("#fail" + id).append(msg); 329 jQuery("#successBox" + id).css("display", "none"); 330 jQuery("#success" + id).empty(); 331 jQuery("#failBox" + id).css("display", "block"); 332 jQuery("#loadingWheel" + id).fadeTo("medium", 0.0); 333} 334 335/////////////////////// 336//// 337//// This function is used for inserting text into a textarea at the cursor position 338//// 339//// http://www.scottklarr.com/topic/425/how-to-insert-text-into-a-textarea-where-the-cursor-is/ 340//////////////////////// 341 342function insertAtCaret(areaId, text) { 343 var txtarea = document.getElementById(areaId); 344 var scrollPos = txtarea.scrollTop; 345 var strPos = 0; 346 var br = 347 txtarea.selectionStart || txtarea.selectionStart == "0" 348 ? "ff" 349 : document.selection 350 ? "ie" 351 : false; 352 353 if (br == "ie") { 354 txtarea.focus(); 355 var range = document.selection.createRange(); 356 range.moveStart("character", -txtarea.value.length); 357 strPos = range.text.length; 358 } else if (br == "ff") strPos = txtarea.selectionStart; 359 360 var front = txtarea.value.substring(0, strPos); 361 var back = txtarea.value.substring(strPos, txtarea.value.length); 362 txtarea.value = front + text + back; 363 strPos = strPos + text.length; 364 if (br == "ie") { 365 txtarea.focus(); 366 var range = document.selection.createRange(); 367 range.moveStart("character", -txtarea.value.length); 368 range.moveStart("character", strPos); 369 range.moveEnd("character", 0); 370 range.select(); 371 } else if (br == "ff") { 372 txtarea.selectionStart = strPos; 373 txtarea.selectionEnd = strPos; 374 txtarea.focus(); 375 } 376 txtarea.scrollTop = scrollPos; 377 378 //jQuery("#txtarea").wysiwyg('setContent'); 379} 380 381// Get Cookie Values 382function getCookieValue(cookieName) { 383 const allCookies = document.cookie.split("; "); 384 const foundCookie = allCookies.find((cookie) => 385 cookie.startsWith(cookieName + "=") 386 ); 387 return foundCookie ? decodeURIComponent(foundCookie.split("=")[1]) : null; 388} 389
390function appendRecaptchaToken(form, token, action) { 391 return new Promise(async (resolve) => { 392 // Create a new input element 393 let hiddenInput = document.createElement("input"); 394 // Set the type attribute to hidden 395 hiddenInput.type = "hidden"; 396 // Set the name and value attributes 397 hiddenInput.name = "recaptcha_token"; 398 hiddenInput.value = token; 399 400 // Append the hidden input to the form 401 $(form).append(hiddenInput); 402 403 // Append the action to the form 404 if (action) { 405 let hiddenInputAction = document.createElement("input"); 406 hiddenInputAction.type = "hidden"; 407 hiddenInputAction.name = "recaptcha_action"; 408 hiddenInputAction.value = action; 409 $(form).append(hiddenInputAction); 410 } 411 412 resolve(); 413 }); 414} 415 416function getDynamicRecaptchaToken( 417 action = "LEAD_SUBMISSION", 418 siteKey = "6Ldk-DQpAAAAAFAWJIWd986cNBAKF33dvu9rY1rH" 419) { 420 return new Promise((resolve, reject) => { 421 try { 422 grecaptcha.enterprise.ready(async () => { 423 const token = await grecaptcha.enterprise.execute(siteKey, { 424 action, 425 }); 426 resolve(token); 427 }); 428 } catch (error) { 429 reject(error); 430 } 431 }); 432} 433 434//////////////////////////////////////////////// 435//////////// jQuery Scripts ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 436//////////////////////////////////////////////////////// 437 438/////////////////////////////////// 439//////// Handles next and previous buttons within tabbed navigation 440////////////////////////////////// 441var currentTab = 0; 442 443/* 444 jQuery(function () { 445 jQuery("#ui-tabs-active").tabs({ 446 select: function (e, i) { 447 currentTab = i.index; 448 } 449 }); 450 }); 451 452 jQuery(document).on("click", ".next", function () { 453 var tabs = jQuery("#ui-tabs-active").tabs(); 454 455 var c = jQuery("ui-tabs-active").tabs.length; 456 currentTab = currentTab + 1; 457 tabs.tabs('option','active', currentTab); 458 }); 459 jQuery(document).on("click", ".previous", function () { 460 var tabs = jQuery("#ui-tabs-active").tabs(); 461 462 var c = jQuery("ui-tabs-active").tabs.length; 463 currentTab = currentTab - 1; 464 tabs.tabs('option','active', currentTab); 465 }); 466 467*/ 468 469// enables javascript prior to files loading 470jQuery(document).ready(function () { 471 // if so we check to see if this is iPhone or iPad 472 if ( 473 navigator.platform == "iPad" || 474 navigator.platform == "iPhone" || 475 navigator.platform == "iPod" 476 ) { 477 //jQuery("#admin_toolbar").css('position','static'); 478 jQuery("#admin_toolbar").css("position", "relative"); 479 jQuery("#feedback_button") 480 .css("position", "relative") 481 .css("width", "200px") 482 .css("bottom", "-1px") 483 .css("right", "-800px"); 484 } 485 486 // this is a function that's supposed to provide a CSV export of leads or whatever else 487 488 ////// what the hell does this do? 489 490 jQuery.download = function (url, data, method) { 491 //alert("Im firing"); 492 493 //url and data options required 494 if (url && data) { 495 //data can be string of parameters or array/object 496 data = typeof data == "string" ? data : jQuery.param(data); 497 //split params into form inputs 498 var inputs = ""; 499 jQuery.each(data.split("&"), function () { 500 var pair = this.split("="); 501 inputs += 502 '<input type="hidden" name="' + 503 pair[0] + 504 '" value="' + 505 pair[1] + 506 '" />'; 507 }); 508 //send request 509 jQuery( 510 '<form action="' + 511 url + 512 '" method="' + 513 (method || "post") + 514 '">' + 515 inputs + 516 "</form>" 517 ) 518 .appendTo("body") 519 .submit() 520 .remove(); 521 } 522 }; 523 524 // Checks all checkboxes on page 525 jQuery("#checkAll").click(function () { 526 //alert(this.checked); 527 var checked_status = this.checked; 528 jQuery("INPUT[type='checkbox']").attr("checked", checked_status); 529 }); 530 531 jQuery("body").on("click", ".save_this_build_details", function () { 532 //jQuery(".save_this_build_details").click(function(){ 533 534 var build_id = jQuery(this).attr("build_id"); 535 jQuery("#build_details_save_message_" + build_id) 536 .empty() 537 .html("Saving..."); 538 539 var action = "save_build_details"; 540 var production_number = jQuery("#production_number_" + build_id).val(); 541 var hull_id = jQuery("#hull_id_" + build_id).val(); 542 var load_no = jQuery("#load_no_" + build_id).val(); 543 var last_changeable_date = jQuery( 544 "#last_changeable_date_" + build_id 545 ).val(); 546 var production_start_date = jQuery( 547 "#production_start_date_" + build_id 548 ).val(); 549 var projected_completion_date = jQuery( 550 "#projected_completion_date_" + build_id 551 ).val(); 552 //var invoice_location = jQuery('#invoice_location_'+build_id).val(); 553 //var payment_terms = jQuery('#payment_terms_'+build_id).val(); 554 555 //alert(last_change_date); 556 557 var response = jQuery.ajax({ 558 type: "GET", 559 url: domain + "Boat-Builder.php?action=save_build_details", 560 data: 561 "action=" + 562 action + 563 "&production_number=" + 564 production_number + 565 "&hull_id=" + 566 hull_id + 567 "&load_no=" + 568 load_no + 569 "&last_changeable_date=" + 570 last_changeable_date + 571 "&production_start_date=" + 572 production_start_date + 573 "&projected_completion_date=" + 574 projected_completion_date + 575 "&build_id=" + 576 build_id, 577 error: function () { 578 //jQuery('#envelope'+leadID).attr("src","../../images/envelopeOpen.png"); 579 jQuery("#build_details_save_message_" + build_id) 580 .empty() 581 .html("NOT SAVED!!"); 582 alert("build details not saved, please contact adminstrator"); 583 alert(response.responseText); 584 }, 585 success: function (del) { 586 //alert(response.responseText); 587 //alert('success'); 588 589 jQuery("#build_details_save_message_" + build_id) 590 .empty() 591 .html("Saved"); 592 }, 593 }); 594 595 return false;
596 }); 597 598 /////////////////////////////////// 599 ////// toggles next and hides this 600 /////////////////////////////////// 601 602 jQuery(".toggle_next_hide_this").click(function () { 603 jQuery(this).css("display", "none"); 604 jQuery(this).next().slideToggle("fast"); 605 606 return false; 607 }); 608 609 jQuery(".toggle_id_hide_this").click(function () { 610 jQuery(this).css("display", "none"); 611 jQuery("#" + jQuery(this).attr("id_to_toggle")).slideToggle("fast"); 612 613 return false; 614 }); 615 616 jQuery(".show_next_hide_this").click(function () { 617 jQuery(this).css("display", "none"); 618 jQuery(this).next().css("display", "block"); 619 620 return false; 621 }); 622 623 //// no idea what this is used for 624 //// prelaunch 625 jQuery("body").on("click", ".toggle_extra", function () { 626 jQuery("#print_" + jQuery(this).attr("build_id")).hide(); 627 jQuery("#extra_" + jQuery(this).attr("build_id")).slideToggle(); 628 jQuery("#extra2_" + jQuery(this).attr("build_id")).slideToggle(); 629 jQuery("#extra3_" + jQuery(this).attr("build_id")).slideToggle(); 630 }); 631 632 jQuery("body").on("click", ".toggle_print", function () { 633 jQuery("#extra_" + jQuery(this).attr("build_id")).hide(); 634 jQuery("#extra2_" + jQuery(this).attr("build_id")).hide(); 635 jQuery("#extra3_" + jQuery(this).attr("build_id")).hide(); 636 jQuery("#print_" + jQuery(this).attr("build_id")).slideToggle(); 637 638 // this is used in part orders 639 //alert("#order-"+jQuery(this).attr('build_id')); 640 jQuery("html,body").animate({ 641 scrollTop: 642 parseInt( 643 jQuery("#order-" + jQuery(this).attr("build_id")).offset().top 644 ) - 150, 645 }); 646 }); 647 648 jQuery("body").on("click", ".delete_build_confirm", function () { 649 if (!confirm("Are you sure want to Delete This Build?")) { 650 return false; 651 } 652 }); // end delete_build_confirm 653 654 jQuery("body").on("click", ".save_this_build_details_new", function () { 655 //alert('clicked save'); 656 657 //jQuery(".save_this_build_details").click(function(){ 658 659 var build_id = jQuery(this).attr("build_id"); 660 var who_am_i = jQuery(this).attr("who_am_i"); 661 662 var dateformat = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/; 663 664 jQuery("#build_details_save_message_" + build_id) 665 .empty() 666 .html("Saving..."); 667 jQuery("#build_details_save_message_2_" + build_id) 668 .empty() 669 .html("Saving..."); 670 671 var action = "save_build_details"; 672 673 var build_status = jQuery("#build_status_" + build_id).val(); 674 var production_number = encodeURIComponent( 675 jQuery("#production_number_" + build_id).val() 676 ); 677 var hull_id = jQuery("#hull_id_" + build_id).val(); 678 var load_no = encodeURIComponent(jQuery("#load_no_" + build_id).val()); 679 var last_changeable_date = jQuery( 680 "#last_changeable_date_" + build_id 681 ).val(); 682 var production_start_date = jQuery( 683 "#production_start_date_" + build_id 684 ).val(); 685 var projected_completion_date = jQuery( 686 "#projected_completion_date_" + build_id 687 ).val(); 688 689 if (last_changeable_date) { 690 if (last_changeable_date.match(dateformat) == false) { 691 alert("Invalid Date Value Entered"); 692 return; 693 } 694 } 695 696 if (production_start_date) { 697 if (production_start_date.match(dateformat) == false) { 698 alert("Invalid Date Value Entered"); 699 return; 700 } 701 } 702 703 var location_id = jQuery("#location_id_" + build_id).val(); 704 705 if ( 706 location_id == 0 || 707 location_id == "0" || 708 !location_id || 709 location_id == "" 710 ) { 711 alert( 712 "NOT SAVED - issue with location_id, please send this build_id number: " + 713 build_id + 714 " to Rusty with SDR [email protected]" 715 ); 716 return; 717 } 718 719 // this is actually PO 720 var build_load_number = encodeURIComponent( 721 jQuery("#build_load_number_" + build_id).val() 722 ); 723 var customer_name = encodeURIComponent( 724 jQuery("#customer_name_" + build_id).val() 725 ); 726 var customer_email = encodeURIComponent( 727 jQuery("#customer_email_" + build_id).val() 728 ); 729 // Get checkbox value 730 if (jQuery("#d360_show_" + build_id).is(":checked")) { 731 var d360_show = 1; 732 } else { 733 var d360_show = 0; 734 } 735 736 var sor_order = jQuery("#sor_checkbox_" + build_id).is(":checked") 737 ? "1" 738 : "0"; 739 740 var margin_base_boat = jQuery("#margin_base_boat_" + build_id).val(); 741 var margin_options = jQuery("#margin_options_" + build_id).val(); 742 var volume_discount = jQuery("#volume_discount_" + build_id).val(); 743 744 var dealer_installed_titles = jQuery(".dealer_installed_title_" + build_id); 745 var dealer_installed_prices = jQuery(".dealer_installed_price_" + build_id); 746 747 //var build_status = jQuery('.dealer_installed_price_'+build_id); 748 749 var dealer_installed_title_holder = ""; 750 var dealer_installed_price_holder = ""; 751 752 jQuery(".dealer_installed_title_" + build_id).each(function () { 753 dealer_installed_title_holder += 754 "&dealer_installed_title[]=" + encodeURIComponent(jQuery(this).val()); 755 }); 756 jQuery(".dealer_installed_price_" + build_id).each(function () { 757 dealer_installed_price_holder += 758 "&dealer_installed_price[]=" + encodeURIComponent(jQuery(this).val()); 759 }); 760 761 if (who_am_i == "sales_dept") { 762 var data = 763 "&production_number=" + 764 production_number + 765 "&location_id=" + 766 location_id + 767 "&hull_id=" + 768 hull_id + 769 "&status=" + 770 build_status + 771 "&last_changeable_date=" + 772 last_changeable_date + 773 "&production_start_date=" + 774 production_start_date + 775 "&projected_completion_date=" + 776 projected_completion_date + 777 "&build_id=" + 778 build_id + 779 "&build_load_number=" + 780 build_load_number + 781 "&customer_name=" + 782 customer_name + 783 "&customer_email=" + 784 customer_email + 785 "&d360_show=" + 786 d360_show + 787 "&is_sor=" + 788 sor_order + 789 "&load_no=" + 790 load_no + 791 "&margin_base_boat=" + 792 margin_base_boat +
793 "&margin_options=" + 794 margin_options + 795 "&volume_discount=" + 796 volume_discount + 797 dealer_installed_title_holder + 798 dealer_installed_price_holder; 799 } else if (who_am_i == "dealer") { 800 var data = 801 "&customer_name=" + 802 customer_name + 803 "&build_id=" + 804 build_id + 805 "&status=" + 806 build_status + 807 "&build_load_number=" + 808 build_load_number + 809 "&customer_email=" + 810 customer_email + 811 "&d360_show=" + 812 d360_show + 813 "&margin_base_boat=" + 814 margin_base_boat + 815 "&margin_options=" + 816 margin_options + 817 "&location_id=" + 818 location_id + 819 "&volume_discount=" + 820 volume_discount + 821 dealer_installed_title_holder + 822 dealer_installed_price_holder; 823 } 824 825 //var invoice_location = jQuery('#invoice_location_'+build_id).val(); 826 //var payment_terms = jQuery('#payment_terms_'+build_id).val(); 827 828 //alert(last_change_date); 829 // console.log(data); 830 831 var response = jQuery.ajax({ 832 type: "GET", 833 url: domain + "Boat-Builder.php?action=save_build_details", 834 data: "action=" + action + "&who_am_i=" + who_am_i + data, 835 error: function () { 836 //jQuery('#envelope'+leadID).attr("src","../../images/envelopeOpen.png"); 837 jQuery("#build_details_save_message_" + build_id) 838 .empty() 839 .html("NOT SAVED!!"); 840 jQuery("#build_details_save_message_2_" + build_id) 841 .empty() 842 .html("NOT SAVED!!"); 843 alert("build details not saved, please contact adminstrator"); 844 alert(response.responseText); 845 }, 846 success: function (data) { 847 //alert(response.responseText); 848 //alert('success'); 849 // console.log(data); 850 851 jQuery("#build_details_save_message_" + build_id) 852 .empty() 853 .html("Saved"); 854 jQuery("#build_details_save_message_2_" + build_id) 855 .empty() 856 .html("Saved"); 857 }, 858 }); 859 860 return false; 861 }); 862 863 ///////////////////////////////////// 864 ///// updates leads updated status ie, last opened//// 865 /////////////////////////////////////// 866 function openLead(id) { 867 //alert(id); 868 var tableID = id; 869 var idSplit = tableID.split("-"); 870 var leadID = idSplit[1]; 871 872 var leadOpened = jQuery("#leadOpened-" + leadID).attr("value"); 873 //alert(leadOpened); 874 //var str = jQuery(this).serialize(); 875 //alert(leadID); 876 //alert(tableID); 877 878 // if this is a new lead or the lead is already open return success 879 if (leadID == 1234 || jQuery("#leadOpened-" + leadID).attr("value") == 1) { 880 return 1; 881 } else { 882 var response = jQuery.ajax({ 883 type: "POST", 884 url: domain + "Leads.php?action=ajax_lead_open", 885 data: "id=" + leadID, 886 error: function () { 887 //jQuery('#envelope'+leadID).attr("src","../../images/envelopeOpen.png"); 888 alert("lead status not changed, please contact adminstrator"); 889 alert(response.responseText); 890 }, 891 success: function (del) { 892 if (response.responseText == 1) { 893 // if opened image is 'closed', change opened image from closed to open 894 jQuery("#envelope" + leadID).attr( 895 "src", 896 domain + "images/icons/envelopeOpen.png" 897 ); 898 jQuery("#leadOpened-" + leadID).attr("value", "1"); 899 //alertResponse(response); 900 } else { 901 jQuery("#envelope" + leadID).attr( 902 "src", 903 domain + "images/icons/envelopeClosed.png" 904 ); 905 //alertResponse(response); 906 } 907 }, 908 }); 909 } 910 return false; 911 } 912 913 ////////////////////////////////////////////////////////// 914 // sets accordion behaviour on leads page//////////////// 915 ////////////////////////////////////////////////////////// 916 917 //jQuery('div.toggleDiv:eq(0)> div').hide(); 918 jQuery("div.toggleDiv:eq(0)> table").click(function () { 919 // update leads updated status 920 openLead(jQuery(this).attr("id")); 921 jQuery(this).next().slideToggle("slow"); 922 }); 923 924 jQuery("div.toggleSmallDiv > table").click(function () { 925 jQuery(this).next().slideToggle("fast"); 926 }); 927 928 jQuery("div.toggleAdiv > a").click(function () { 929 jQuery(this).next().slideToggle("fast"); 930 return false;
931 }); 932 933 jQuery(".edit_this").click(function () { 934 // hides the info div 935 jQuery(this).parent().prev().toggle(); 936 // shows the form 937 jQuery(this).parent().next().toggle(); 938 // shows the save button 939 jQuery(this).prev().show(); 940 // hides the edit button 941 jQuery(this).hide(); 942 }); 943 944 /////////////////// 945 /// hover color change for lead rows 946 /////////////////// 947 var tableRowClass = "rowWhite"; 948 949 //// prelaunch 950 /*jQuery('#contents tr').hover(function() { 951 tableRowClass = jQuery(this).attr("class"); 952 jQuery(this).removeClass(tableRowClass); 953 jQuery(this).addClass('hover'); 954}, function() { 955 jQuery(this).removeClass('hover'); 956 jQuery(this).addClass(tableRowClass); 957 958}); 959*/ 960 jQuery(".hover_these_rows").hover( 961 function () { 962 tableRowClass = jQuery(this).attr("class"); 963 jQuery(this).removeClass(tableRowClass); 964 jQuery(this).addClass("hover"); 965 }, 966 function () { 967 jQuery(this).removeClass("hover"); 968 jQuery(this).addClass(tableRowClass); 969 } 970 ); 971 972 //////////////////////// 973 ///// handles what boat type to show on boat cat change 974 /////////////////////// 975 976 function fadeOut(idToFade) { 977 jQuery("#" + idToFade).fadeTo("medium", 0); 978 jQuery("#" + idToFade).css("display", "none"); 979 } 980 981 function fadeIn(idToFade) { 982 jQuery("#" + idToFade).css("display", "block"); 983 jQuery("#" + idToFade).fadeTo("medium", 1); 984 } 985 986 jQuery("#boatCat").change(function () { 987 // if new show new manu select list 988 989 var selected = jQuery("#boatCat option:selected").attr("value"); 990 991 if (selected == 5) { 992 // fade out and turn off non needed boat types 993 fadeOut("power"); 994 fadeOut("sail"); 995 fadeOut("smallBoats"); 996 // turn on new manu input and fade in 997 fadeIn("pwc"); 998 fadeIn("boatType"); 999 } else if (selected == 2) { 1000 // fade out and turn off non needed boat types 1001 fadeOut("pwc"); 1002 fadeOut("sail"); 1003 fadeOut("smallBoats"); 1004 // turn on new manu input and fade in 1005 fadeIn("power"); 1006 fadeIn("boatType"); 1007 } else if (selected == 3) { 1008 // fade out and turn off non needed boat types 1009 fadeOut("pwc"); 1010 fadeOut("power"); 1011 fadeOut("smallBoats"); 1012 // turn on new manu input and fade in 1013 fadeIn("sail"); 1014 fadeIn("boatType"); 1015 } else if (selected == 4) { 1016 // fade out and turn off non needed boat types 1017 fadeOut("pwc"); 1018 fadeOut("power"); 1019 fadeOut("sail"); 1020 // turn on new manu input and fade in 1021 fadeIn("smallBoats"); 1022 fadeIn("boatType"); 1023 } else { 1024 // fade out all types 1025 fadeOut("pwc"); 1026 fadeOut("power"); 1027 fadeOut("sail"); 1028 fadeOut("smallBoats"); 1029 fadeOut("boatType"); 1030 } 1031 }); 1032 1033 /////////////////// 1034 /// Function to populate Email template editor upon change of drop down 1035 // this also populated the vars inside the template 1036 /////////////////// 1037 1038 jQuery("select.emailTemplate").change(function () { 1039 //alert (jQuery(this).attr('id')); 1040 // starts the loading wheel visual 1041 jQuery("#loadingWheel").fadeTo("medium", 1); 1042 1043 var selectId = jQuery(this).attr("id"); 1044 var idSplit = selectId.split("-"); 1045 var lead_id = idSplit[1]; 1046 1047 //alert(selectId); 1048 //alert(leadID); 1049 //alert(salesman); 1050 1051 //alert('#name-'+leadID); 1052 1053 // these two are to be used for new leads 1054 var name = jQuery("#name-" + lead_id).attr("value"); 1055 //var salesman = jQuery("#salesman-"+leadID+" option:selected").attr('value'); 1056 var user_id = jQuery("#salesman-" + lead_id).attr("value"); 1057 1058 //alert (name); 1059 //alert (salesman); 1060 1061 // this gets the value of the select box selected option 1062 var template_id = jQuery( 1063 "#emailTemplate-" + lead_id + " option:selected" 1064 ).attr("value"); 1065 1066 //alert("uniqueID=" + templateID + "& leadID=" + leadID + "& name=" + name + "& salesman=" + salesman); 1067 1068 var response = jQuery.ajax({ 1069 type: "POST", 1070 url: domain + "ajax/ajax-GetEmailTemplateBody.php", 1071 data: 1072 "template_id=" + 1073 template_id + 1074 "&lead_id=" + 1075 lead_id + 1076 "&name=" + 1077 name + 1078 "&user_id=" + 1079 user_id, 1080 error: function () { 1081 fail( 1082 "There has been an error retrieving the Email Template, please try again. If problem persists please contact SDR." 1083 ); 1084 //alertResponse(response); 1085 }, 1086 success: function (del) { 1087 if (response.responseText) { 1088 //alertResponse(response); 1089 1090 var emailJSON = eval("(" + response.responseText + ")"); 1091 var emailBody = emailJSON.emailBody; 1092 1093 //alert(emailBody); 1094 //eval("(" + jsonData1 + ")") 1095 1096 //alert(emailJSON.subject); 1097 jQuery("#subject-" + lead_id).attr("value", emailJSON.subject); 1098 1099 // populate textarea with response 1100 jQuery("#emailContent-" + lead_id).val(emailJSON.emailBody); 1101 1102 //jQuery("#emailContent-"+leadID).wysiwyg({ 1103 1104 //jQuery("#emailContent-"+leadID + 'IFrame').contents().find('body').html(emailJSON.emailBody); 1105 jQuery("#emailContent-" + lead_id).wysiwyg( 1106 "setContent", 1107 emailJSON.emailBody 1108 ); 1109 1110 //jQuery("#emailTemplate").value = response.responseText; 1111 //jQuery("#emailContent-"+leadID).append(" tab to view/edit this lead."); 1112 1113 //ajaxMCELoad(emailJSON.emailBody, leadID); 1114 jQuery("#loadingWheel").fadeTo("medium", 0); 1115 } else { 1116 alertResponse(response); 1117 } 1118 }, 1119 }); 1120 1121 return false;
1122 }); 1123 1124 /////////////////// 1125 /// Function to help confirm an inventory item delets 1126 // on success the buttons second level parent is removed from the page. 1127 /////////////////// 1128 1129 jQuery(".delete_this_item").click(function () { 1130 if ( 1131 !confirm( 1132 "Are you sure you want to delete this product?\n\n It might be better take the item offline in the Price/Save tab. \n\n This delete is Permanant! You cannot undo this!! \n\n Are you sure you want to delete this product?" 1133 ) 1134 ) { 1135 return false; 1136 } 1137 }); 1138 1139 ///////////////// 1140 // this funciton is used by the byb option system 1141 // it determines if a checkbox is checked or not, then fills the next() hidden input field with the proper value. 1142 ////////////////// 1143 1144 jQuery(".checkbox_assign_next").click(function () { 1145 if (jQuery(this).attr("checked")) { 1146 // set the value of the next input field to 1 1147 jQuery(this).next().attr("value", "1"); 1148 } else { 1149 // set the value of the next input field to 0 1150 jQuery(this).next().attr("value", "0"); 1151 } 1152 }); 1153 1154 jQuery(".clone_this_option_parent").click(function () { 1155 //alert(jQuery('.option_adder_table').html()); 1156 jQuery(".option_adder").append("<hr /><hr /><h3>New Option</h3>"); 1157 jQuery("#option_adder_table").clone(true).appendTo(".option_adder"); 1158 }); 1159 1160 jQuery(".clone_this_standard_parent").click(function () { 1161 //alert(jQuery('.standard_adder_table').html()); 1162 jQuery(".standard_adder").append( 1163 "<hr /><hr /><h3>New Standard Feature</h3>" 1164 ); 1165 jQuery("#standard_adder_table").clone(true).appendTo(".standard_adder"); 1166 }); 1167 1168 /////////////////// 1169 /// Function to delete a specific option by id number 1170 // on success the buttons second level parent is removed from the page. 1171 /////////////////// 1172 1173 jQuery(".delete_this").click(function () { 1174 //alert (jQuery(this).attr('id')); 1175 // starts the loading wheel visual 1176 jQuery("#loadingWheel").fadeTo("medium", 1); 1177 1178 var parent = jQuery(this).parent(); 1179 1180 var deleteId = jQuery(this).attr("id"); 1181 var idSplit = deleteId.split("-"); 1182 var optionId = idSplit[1]; 1183 1184 //alert(optionId); 1185 1186 var response = jQuery.ajax({ 1187 type: "POST", 1188 url: domain + "ajax/ajax-DeleteOption.php", 1189 data: { 1190 id: optionId, 1191 type: "option", 1192 }, 1193 beforeSend: function () { 1194 var ok = confirm("Are you sure want to Delete This Option?"); 1195 if (!ok) { 1196 return false; 1197 } 1198 }, 1199 error: function () { 1200 fail( 1201 "There has been an error deleting this option, please try again. If problem persists please contact SDR." 1202 ); 1203 //alertResponse(response); 1204 }, 1205 success: function (del) { 1206 if (response.responseText) { 1207 //alertResponse(response); 1208 //alert(jQuery(parent).parent().html()); 1209 // here we remove the deleted element from the page to give a real time 'feel' to the page. 1210 jQuery(parent).parent().remove(); 1211 } else { 1212 alertResponse(response); 1213 } 1214 }, 1215 }); 1216 1217 return false; 1218 }); 1219 1220 /////////////////// 1221 /// Function to delete a specific standard by id number 1222 // on success the buttons second level parent is removed from the page. 1223 /////////////////// 1224 1225 jQuery(".delete_this_standard").click(function () { 1226 //alert (jQuery(this).attr('id')); 1227 // starts the loading wheel visual 1228 jQuery("#loadingWheel").fadeTo("medium", 1); 1229 1230 var parent = jQuery(this).parent(); 1231 1232 var deleteId = jQuery(this).attr("id"); 1233 var idSplit = deleteId.split("-"); 1234 var optionId = idSplit[1]; 1235 1236 //alert(optionId); 1237 1238 var response = jQuery.ajax({ 1239 type: "POST", 1240 url: domain + "ajax/ajax-DeleteOption.php", 1241 data: { 1242 id: optionId, 1243 type: "standard", 1244 }, 1245 beforeSend: function () { 1246 var ok = confirm("Are you sure want to Delete This Standard Feature?"); 1247 if (!ok) { 1248 return false; 1249 } 1250 }, 1251 error: function () { 1252 fail( 1253 "There has been an error deleting this standard feature, please try again. If problem persists please contact SDR." 1254 ); 1255 //alertResponse(response); 1256 }, 1257 success: function (del) { 1258 if (response.responseText) { 1259 //alertResponse(response); 1260 //alert(jQuery(parent).parent().html()); 1261 // here we remove the deleted element from the page to give a real time 'feel' to the page. 1262 jQuery(parent).parent().remove(); 1263 } else { 1264 alertResponse(response); 1265 } 1266 }, 1267 }); 1268 1269 return false;
1270 }); 1271 1272 /////////////////// 1273 /// function just to get the email template subject, body..etc WITHOUT populating the vars 1274 /// used specifically on the Email-Templates.php page 1275 /////////////////// 1276 1277 jQuery("select.emailTemplateEditor").change(function () { 1278 //alert (jQuery(this).attr('value')); 1279 // starts the loading wheel visual 1280 jQuery("#loadingWheel").fadeTo("medium", 1); 1281 1282 var selectId = jQuery(this).attr("id"); 1283 var templateID = jQuery(this).attr("value"); 1284 var idSplit = selectId.split("-"); 1285 var leadID = idSplit[1]; 1286 1287 //alert(leadID); 1288 // this gets the value of the select box selected option 1289 //var templateID = jQuery("#emailTemplateEditor-1 option:selected").attr('value'); 1290 //alert(templateID); 1291 1292 // if templateID == 0 clear the form (means new email template) 1293 if (templateID == "0") { 1294 // clear form 1295 resetForm("emailTemplateForm"); 1296 jQuery("#id").attr("value", "0"); 1297 1298 return false; 1299 } 1300 1301 var response = jQuery.ajax({ 1302 type: "POST", 1303 url: domain + "ajax/ajax-GetEmailTemplateBody.php", 1304 data: "uniqueID=" + templateID + "&vars=1", 1305 error: function () { 1306 fail( 1307 "There has been an error retrieving the Email Template, please try again. If problem persists please contact SDR." 1308 ); 1309 //alertResponse(response); 1310 }, 1311 success: function (del) { 1312 if (response.responseText) { 1313 //alert(response.responseText); 1314 1315 var emailJSON = eval("(" + response.responseText + ")"); 1316 var emailSubject = emailJSON.subject; 1317 var emailBody = emailJSON.tpl_source; 1318 var emailName = emailJSON.name; 1319 var archived = emailJSON.archived; 1320 var emailId = emailJSON.id; 1321 //var emailSelected = emailJSON.selected; 1322 1323 //alert(emailBody); 1324 //eval("(" + jsonData1 + ")") 1325 1326 //alert(emailJSON.subject); 1327 jQuery("#id").attr("value", emailId); 1328 jQuery("#subject-" + leadID).attr("value", emailSubject); 1329 1330 jQuery("#templateName-" + leadID).attr("value", emailName); 1331 1332 if (archived == 1) { 1333 jQuery("#archived-1").attr("checked", "checked"); 1334 } else if (archived == 0) { 1335 jQuery("#archived-0").attr("checked", "checked"); 1336 } 1337 1338 //jQuery("input[name='radio_name']:checked").val(); 1339 // populate textarea with response 1340 jQuery("#emailContent-" + leadID).val(emailBody); 1341 1342 //jQuery("#emailContent-"+leadID).wysiwyg({ 1343 1344 //jQuery("#emailContent-"+leadID + 'IFrame').contents().find('body').html(emailJSON.emailBody); 1345 //jQuery("#emailContent-"+leadID).wysiwyg('setContent', emailBody); 1346 1347 //jQuery("#emailTemplate").value = response.responseText; 1348 //jQuery("#emailContent-"+leadID).append(" tab to view/edit this lead."); 1349 1350 //ajaxMCELoad(emailJSON.emailBody, leadID); 1351 jQuery("#loadingWheel").fadeTo("medium", 0); 1352 } else { 1353 alertResponse(response); 1354 } 1355 }, 1356 }); 1357 1358 return false; 1359 }); 1360 1361 ////////////////////////////////////////// 1362 ///////// Date and Time Picker //////////////////// 1363 //////////////////////////////////////// 1364 1365 jQuery(function () { 1366 if (jQuery(".datepicker").length) { 1367 jQuery(".datepicker").datepicker(); 1368 } 1369 1370 jQuery("body").on("click", ".datepicker2", function () { 1371 // as an added bonus, if you are afraid of attaching the "datepicker" 1372 // multiple times, you can check for the "hasDatepicker" class... 1373 if (!jQuery(this).hasClass("hasDatepickerOFF")) { 1374 jQuery(this).datepicker(); 1375 jQuery(this).datepicker("show"); 1376 } 1377 }); 1378 }); 1379 1380 //jQuery(function() { 1381 // jQuery(".timepicker").ptTimeSelect(); 1382 // }); 1383 1384 ////////////////////////////////////////// 1385 ///////// Content To Tabs //////////////////// 1386 //////////////////////////////////////// 1387 /* 1388jQuery(function() { 1389 jQuery("div.contentTabs").tabs(); 1390 jQuery("div.addressTabs").tabs(); 1391 }); 1392*/ 1393 1394 //// prelaunch 1395 // think this is deprecated 1396 jQuery("form#addSalesman-AJAX-ORIG").submit(function () { 1397 // disables the submit button 1398 var $that = jQuery(this); 1399 var submitButton = $that.find("input[type='submit']"); 1400 jQuery(submitButton).attr("disabled", "disabled"); 1401 1402 // starts the loading wheel visual 1403 jQuery("#loadingWheel").fadeTo("medium", 1); 1404 1405 // we want to store the values from the form input box, then send via ajax below 1406 var submitValue = jQuery("#submitValue").attr("value"); 1407 var uniqueID = jQuery("#uniqueID").attr("value"); 1408 var name = jQuery("#name").attr("value"); 1409 var email = jQuery("#email").attr("value"); 1410 var phone = jQuery("#phone").attr("value"); 1411 var admin = jQuery("input:checked[type='radio'][name='admin']").attr( 1412 "value" 1413 ); 1414 var leads = jQuery("input:checked[type='radio'][name='leads']").attr( 1415 "value" 1416 ); 1417 var location = jQuery("#location option:selected").attr("value"); 1418 var accessArray = jQuery("#accessArray option:selected").attr("value"); 1419 1420 var response = jQuery.ajax({ 1421 type: "POST", 1422 url: domain + "ajax/ajax-AddSalesman.php", 1423 data: 1424 "submitValue=" + 1425 submitValue + 1426 "&name=" + 1427 name + 1428 "& email=" + 1429 email + 1430 "& phone=" + 1431 phone + 1432 "& admin=" + 1433 admin + 1434 "& leads=" + 1435 leads + 1436 "& location=" + 1437 location + 1438 "& uniqueID=" + 1439 uniqueID, 1440 error: function () { 1441 fail( 1442 jQuery("#name").attr("value") + 1443 " has NOT been added. Please Contact an adminstrator." 1444 ); 1445 //alertResponse(response); 1446 }, 1447 success: function (del) { 1448 // if the response from the query == 1 (success) the success function is fired 1449 if (response.responseText == 1) { 1450 // sets buttons back enabled 1451 $that.find("input[type='submit']").removeAttr("disabled"); 1452 1453 if (submitValue == "deleteUser") { 1454 jQuery("#" + uniqueID).css("display", "none"); 1455 success( 1456 jQuery("#name").attr("value") + " has been deleted successfuly." 1457 ); 1458 resetForm("addSalesman"); 1459 } else if (submitValue == "addUser") { 1460 success( 1461 jQuery("#name").attr("value") + 1462 " has been added successfuly. <br />Refresh page to see changes." 1463 ); 1464 resetForm("addSalesman"); 1465 } else if (submitValue == "updateUser") { 1466 // reverse update form ie, take data from main form and populate list form 1467 success( 1468 jQuery("#name").attr("value") + " has been updated successfuly." 1469 ); 1470 updateUserList(); 1471 } 1472 //alertResponse(response); 1473 } else { 1474 fail( 1475 jQuery("#name").attr("value") + 1476 " has NOT been added. Please fill in required fields." 1477 ); 1478 alertResponse(response); 1479 } 1480 }, 1481 }); 1482 1483 return false;
1484 }); 1485 1486 //////////////////////////////////////////////// 1487 //////////// This saves the users config and margins. Used on the boat builder //////////////////////////////////////////////////// 1488 //////////////////////////////////////////////////////// 1489 1490 jQuery("form#dealer_margins").submit(function () { 1491 // disables the submit button 1492 var $that = jQuery(this); 1493 var submitButton = $that.find("input[type='submit']"); 1494 jQuery(submitButton).attr("disabled", "disabled"); 1495 1496 var str = jQuery(this).serialize(); 1497 1498 var response = jQuery.ajax({ 1499 type: "POST", 1500 url: domain + "ajax/saveBuilderConfig.php", 1501 data: str, 1502 error: function () { 1503 fail( 1504 "Config has NOT been saved. Please Contact an adminstrator.", 1505 "-config" 1506 ); 1507 //alertResponse(response); 1508 }, 1509 success: function (del) { 1510 // if the response from the query == 1 (success) the success function is fired 1511 if (response.responseText == 1) { 1512 // sets buttons back enabled 1513 $(".margin_input").change(); 1514 $that.find("input[type='submit']").removeAttr("disabled"); 1515 success("Config and Margins Saved", "-config"); 1516 //force the data to be reloaded 1517 1518 //alertResponse(response); 1519 } else { 1520 fail( 1521 "Config has NOT been saved. Please contact an administrator.", 1522 "-config" 1523 ); 1524 alertResponse(response); 1525 } 1526 }, 1527 }); 1528 1529 return false; 1530 }); 1531 1532 function getRecaptchaToken( 1533 siteKey = "6Ldk-DQpAAAAAFAWJIWd986cNBAKF33dvu9rY1rH", 1534 action = "LEAD_SUBMISSION" 1535 ) { 1536 return new Promise((resolve, reject) => { 1537 try { 1538 grecaptcha.enterprise.ready(async () => { 1539 const token = await grecaptcha.enterprise.execute(siteKey, { 1540 action, 1541 }); 1542 resolve(token); 1543 }); 1544 } catch (error) { 1545 reject(error); 1546 } 1547 }); 1548 } 1549 1550 const setInvalid = (input) => { 1551 jQuery(input).addClass("input--invalid"); 1552 jQuery(input).on("blur", function () { 1553 jQuery(this).removeClass("input--invalid"); 1554 if (jQuery(input).next(".input--invalid-msg")) { 1555 jQuery(input).next(".input--invalid-msg").remove(); 1556 } 1557 }); 1558 }; 1559 1560 const setInvalidErrMsg = (input, msg) => { 1561 if ( 1562 jQuery(input).attr("type") === "checkbox" && 1563 jQuery(input).next("label") 1564 ) { 1565 if (!jQuery(input).next("label").next(".input--invalid-msg").length) { 1566 jQuery(input) 1567 .next("label") 1568 .after(`<p class="input--invalid-msg">${msg}</p>`); 1569 } 1570 } else { 1571 jQuery(input).after(`<p class="input--invalid-msg">${msg}</p>`); 1572 } 1573 }; 1574 1575 jQuery("form.lead_submit").submit(async function (e) { 1576 e.preventDefault(); 1577 1578 // fetch and serialize the form data 1579 let form_data = jQuery(this).serializeArray(); 1580 1581 const inputs = jQuery(this).find("input:visible").toArray(); 1582 const zipRegex = new RegExp(/^\d{5}$/); 1583 let formInvalid = false; 1584 if (inputs.length) { 1585 for (let i = 0; i < inputs.length; i++) { 1586 if ( 1587 jQuery(inputs[i]).attr("name") === "zip" && 1588 !zipRegex.test(jQuery(inputs[i]).val()) 1589 ) { 1590 setInvalid(inputs[i]); 1591 setInvalidErrMsg(inputs[i], "Invalid Zip Code"); 1592 formInvalid = true; 1593 } 1594 } 1595 if (formInvalid) { 1596 return; 1597 } 1598 } 1599 1600 form_data.push({ 1601 name: "recaptcha_token", 1602 value: await getRecaptchaToken(), 1603 }); 1604 1605 // hide the form 1606 jQuery(this).hide(); 1607 // show success/fail based on response 1608 1609 //jQuery('.ajax_lead_submit_button').html("Saving..."); 1610 1611 // analytics 1612 window.dataLayer.push({ 1613 event: jQuery(this).find("input[name=lead_source]").val(), 1614 firstName: jQuery(this).find("input[name=first_name]").val(), 1615 lastName: jQuery(this).find("input[name=last_name]").val(), 1616 email: jQuery(this).find("input[name=email]").val(), 1617 mobilePhone: jQuery(this).find("input[name=phone]").val(), 1618 zipCode: jQuery(this).find("input[name=zip]").val(), 1619 purchaseTimeframe: jQuery(this).find("input[name=purchase_time]").val(), 1620 model: jQuery(this).find("input[name=product_info]").val(), 1621 category: jQuery(this).find("input[name=line_name]").val(), 1622 lifestyle: jQuery(this).find("input[name=line_name]").val(), 1623 line: jQuery(this).find("input[name=line_name]").val(), 1624 modelYear: jQuery(this).find("input[name=model_year]").val(), 1625 dealerNumber: jQuery(this).find("input[name=dealerNumber]").val(), 1626 }); 1627 1628 jQuery.ajax({ 1629 type: "POST", 1630 url: "Leads.php?action=ajax_lead_submit", 1631 data: form_data, 1632 error: function () { 1633 alert("Auto Save is not working. Please contact SDR."); 1634 jQuery("#lead_submit_fail").scrollTop(); 1635 jQuery("#lead_submit_fail").show(); 1636 }, 1637 success: function (response) { 1638 // show success message 1639 jQuery("#lead_submit_success").show(); 1640 // scroll to success message 1641 jQuery("#lead_submit_success").scrollTop(); 1642 1643 if (window.location.href.includes("yamaha")) { 1644 return; 1645 } 1646
1647 if (response && response.trim() !== "false") { 1648 let lead_id = response; 1649 1650 var response2 = jQuery.ajax({ 1651 type: "POST", 1652 url: "Leads.php?action=send_lead_notification_email", 1653 data: { 1654 lead_id: lead_id, 1655 }, 1656 error: function () { 1657 console.log("Email notification failed."); 1658 console.log(response2.responseText); 1659 }, 1660 success: function () { 1661 // do nothing b/c this is just the email send?? 1662 console.log("email sent"); 1663 //return; 1664 }, 1665 }); 1666 /*ATTEMPT SFMC SEND 1667 jQuery.ajax({ 1668 type: "POST", 1669 url: "https://cloud.email.yamahamotorsports.com/form-submission-test", 1670 data: form_data, 1671 error: function () { 1672 console.log("SFMC Error"); 1673 }, 1674 success: function (response) { 1675 console.log("SFMC SENT"); 1676 } 1677 }); 1678 //END SFMC */ 1679 } 1680 return false; 1681 }, 1682 }); 1683 }); 1684 //////////////////////////////////////////////// 1685 //////////// Adds or updates a new lead ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1686 //////////////////////////////////////////////////////// 1687 1688 jQuery("form.addUpdateLead").submit(function () { 1689 //this is the id of the specific form that was submitted (name) 1690 var id = jQuery(this).attr("name"); 1691 1692 // disables the submit button 1693 var $that = jQuery(this); 1694 var submitButton = $that.find("input[type='submit']"); 1695 btnText = jQuery(submitButton).attr("value"); 1696 jQuery(submitButton).attr("value", " Please Wait... "); 1697 jQuery(submitButton).attr("disabled", "disabled"); 1698 1699 // starts the loading wheel visual 1700 jQuery("#loadingWheel").fadeTo("medium", 1); 1701 1702 //'[@name=foo]' 1703 // we want to store the values from the form input box, then send via ajax below 1704 //var uniqueID = id; 1705 //alert(uniqueID); 1706 1707 var str = jQuery(this).serialize(); 1708 1709 var response = jQuery.ajax({ 1710 type: "POST", 1711 url: domain + "Leads.php?action=ajax_lead_save", 1712 data: str, 1713 1714 error: function () { 1715 fail("Lead has NOT been updated. Please Contact an adminstrator.", id); 1716 alertResponse(response); 1717 }, 1718 success: function (del) { 1719 // This sets the uniqueID field so the user can be edited before the form is cleared 1720 if (response.responseText) { 1721 //alert(response.text); 1722 // closes the loading wheel visual 1723 jQuery("#loadingWheel").fadeTo("medium", 0); 1724 1725 success("Successfully Saved.", id); 1726 1727 // sets buttons back enabled 1728 $that.find("input[type='submit']").attr("value", btnText); 1729 $that.find("input[type='submit']").removeAttr("disabled"); 1730 //alertResponse(response); 1731 } else { 1732 fail("An error has occurred, please try again or notify SDR", id); 1733 // sets buttons back enabled 1734 $that.find("input[type='submit']").attr("value", btnText); 1735 $that.find("input[type='submit']").removeAttr("disabled"); 1736 alertResponse(response); 1737 } 1738 }, 1739 }); 1740 return false; 1741 }); 1742 1743 //////////////////////////////////////////////// 1744 //////////// Add or update or delete a salesman ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1745 //////////////////////////////////////////////////////// 1746 //validate form 1747 /* 1748jQuery(function() { 1749 1750 1751 // validate Add Salesman form on keyup and submit 1752jQuery("#user_management_form").validate({ 1753 //set the rules for the field names 1754rules: { 1755 user_name: { 1756 required: true, 1757 minlength: 2 1758 }, 1759 user_email: { 1760 required: true, 1761 email: true 1762 } 1763}, 1764//set messages to appear inline 1765messages: { 1766 user_name: { 1767 required: "<br /> -Please enter a name", 1768 minlength: "<br /> -Name must be longer than 1 letter." 1769 }, 1770 user_email: { 1771 required: "<br /> -Please enter an email", 1772 email: "<br /> -Please enter a valid email address" 1773 } 1774 1775 1776}, 1777submitHandler: function(form) { 1778 saveSalesmanUser(form); 1779 } 1780}); 1781}); 1782 1783*/ 1784 jQuery(function () { 1785 jQuery("#user_management_form").submit(function (e) { 1786 e.preventDefault(); 1787 saveSalesmanUser(jQuery(this)); 1788 }); 1789 }); 1790 1791 function saveSalesmanUser(form) { 1792 //this is the id of the specific form that was submitted (name) 1793 var id = form.name; 1794 1795 // disables the submit button 1796 //var that = form; 1797 var submitButton = jQuery(".user_save"); 1798 btnText = " Save User "; 1799 jQuery(submitButton).attr("value", " Saving... "); 1800 jQuery(submitButton).attr("disabled", "disabled"); 1801 1802 //alert('here i am'); 1803 1804 // these will be used when populating hidden fields after the save/update 1805 // here we get all the access levels that were checked and convert them to an array, then csv 1806 var SDR_access_array = []; 1807 jQuery("#user_access_list :checked").each(function () { 1808 SDR_access_array.push(jQuery(this).val()); 1809 }); 1810 var SDR_access = SDR_access_array.join(","); 1811 1812 // here we get all the roles that were checked and convert them to an array, then csv 1813 var SDR_role_array = []; 1814 jQuery("#user_role_list :checked").each(function () { 1815 SDR_role_array.push(jQuery(this).val()); 1816 }); 1817 var SDR_role = SDR_role_array.join(","); 1818 1819 // starts the loading wheel visual 1820 //jQuery("#loadingWheel").fadeTo("medium", 1); 1821 1822 var str = jQuery(form).serializeArray(); 1823 1824 var response = jQuery.ajax({ 1825 type: "POST", 1826 url: domain + "Location-Manager.php?action=save_user", 1827 data: str, 1828 1829 error: function () { 1830 fail("User has NOT been updated. Please Contact an adminstrator.", id); 1831 alertResponse(response); 1832 }, 1833 success: function (del) { 1834 // This sets the uniqueID field so the user can be edited before the form is cleared 1835 if (response.responseText != 0) { 1836 //alert(response.text); 1837 // closes the loading wheel visual 1838 //jQuery("#loadingWheel").fadeTo("medium", 0); 1839 1840 var response_user_id = jQuery.trim(response.responseText); 1841 1842 // if the user is being perm deleted we remove them from the list 1843 if (jQuery("input:radio[name=user_status]:checked").val() == 2) { 1844 // remove the user from the list and clear the form 1845 jQuery(".user_save").show(); 1846 // empty the form 1847 jQuery("#user_id").val(""); 1848 //jQuery("#user_location_id").reset(); 1849 jQuery("#user_name").val(""); 1850 jQuery("#user_email").val(""); 1851 jQuery("#user_phone").val(""); 1852 // empty out the name on the access/roles tab 1853 jQuery(".user_name_display").empty(); 1854 // uncheck all the checkboxes 1855 jQuery.each(jQuery(".roles_checkbox"), function () { 1856 //alert(role); 1857 jQuery(this).removeAttr("checked"); 1858 }); 1859 jQuery.each(jQuery(".access_checkbox"), function () { 1860 //alert(role); 1861 jQuery(this).removeAttr("checked"); 1862 }); 1863
1864 jQuery("#user_list-" + response_user_id).remove(); 1865 } 1866 1867 // add a user to the list on the left 1868 // we will get the user_id back from the ajax query 1869 // if there was no user id we need to add this new user to the user list 1870 else if (!jQuery("#user_id").val()) { 1871 jQuery("#user_id").val(response_user_id); 1872 var new_user = 1873 '\ 1874 <li style="background-color:#ceffcf;" class="user_selector location_manager_user_list" user_id="' + 1875 response_user_id + 1876 '">\ 1877 ' + 1878 jQuery("#user_name").val() + 1879 '\ 1880 <input type="hidden" name="user_id[]" value="' + 1881 response_user_id + 1882 '" />\ 1883 <input type="hidden" name="user_list_location_id[]" value="' + 1884 jQuery("#user_location_id").val() + 1885 '" id="user_location_id-' + 1886 response_user_id + 1887 '" />\ 1888 <input type="hidden" name="user_name[]" value="' + 1889 jQuery("#user_name").val() + 1890 '" id="name-' + 1891 response_user_id + 1892 '" />\ 1893 <input type="hidden" name="user_email[]" value="' + 1894 jQuery("#user_email").val() + 1895 '" id="email-' + 1896 response_user_id + 1897 '" />\ 1898 <input type="hidden" name="user_phone[]" value="' + 1899 jQuery("#user_phone").val() + 1900 '" id="phone-' + 1901 response_user_id + 1902 '" />\ 1903 <input type="hidden" name="user_status[]" value="' + 1904 jQuery("input[name='user_status']:checked").val() + 1905 '" id="status-' + 1906 response_user_id + 1907 '" />\ 1908 <input type="hidden" name="show_on_d360[]" value="' + 1909 jQuery("input[name='show_on_d360']:checked").val() + 1910 '" id="show_on_d360-' + 1911 response_user_id + 1912 '" />\ 1913 <input type="hidden" name="user_SDR_roles[]" value="' + 1914 SDR_role + 1915 '" id="user_SDR_roles-' + 1916 response_user_id + 1917 '" />\ 1918 <input type="hidden" name="user_SDR_access[]" value="' + 1919 SDR_access + 1920 '" id="user_SDR_access-' + 1921 response_user_id + 1922 '" />\ 1923 </li>\ 1924 '; 1925 } 1926 1927 // else this was an existing user so we need to update any changed info in their list view 1928 else { 1929 //alert(jQuery("input[name='user_status']:checked").val()); 1930 var user_id = jQuery("#user_id").val(); 1931 1932 jQuery("#name-" + user_id).val(jQuery("#user_name").val()); 1933 jQuery("#email-" + user_id).val(jQuery("#user_email").val()); 1934 jQuery("#phone-" + user_id).val(jQuery("#user_phone").val()); 1935 jQuery("#status-" + user_id).val( 1936 jQuery("input[name='user_status']:checked").val() 1937 ); 1938 jQuery("#show_on_d360-" + user_id).val( 1939 jQuery("input[name='show_on_d360']:checked").val() 1940 );
1941 ////////////////////////////////////////////////////////////////problem here !!!!!!!!!!!!!!!!!!!! 1942 jQuery("#user_SDR_roles-" + user_id).val(SDR_role); 1943 jQuery("#user_SDR_access-" + user_id).val(SDR_access); 1944 } 1945 1946 jQuery("#location_manager_user_list").append(new_user); 1947 1948 success("Successfully Saved.", id); 1949 1950 // sets buttons back enabled 1951 jQuery(submitButton).attr("value", btnText); 1952 jQuery(submitButton).removeAttr("disabled"); 1953 1954 //alertResponse(response); 1955 } else { 1956 fail("An error has occurred, please try again or notify SDR", id); 1957 // sets buttons back enabled 1958 jQuery(submitButton).attr("value", btnText); 1959 jQuery(submitButton).removeAttr("disabled"); 1960 alertResponse(response); 1961 } 1962 }, 1963 }); 1964 return false; 1965 } 1966 1967 //// prelaunch 1968 // not applicable? 1969 //////////////////////////////////////////////// 1970 //////////// validates form for dealer meeting registration /////////////////////////////////////////////////////////////////////////////////////////////////////// 1971 //////////////////////////////////////////////////////// 1972 //validate form 1973 /* 1974jQuery(function() { 1975 // validate Add Salesman form on keyup and submit 1976jQuery("#dealer_meeting_registration_form").validate({ 1977 //set the rules for the field names 1978rules: { 1979 dealership_name: { 1980 required: true, 1981 minlength: 2 1982 }, 1983 registrant_name: { 1984 required: true, 1985 minlength: 2 1986 }, 1987 registrant_email: { 1988 required: true, 1989 email: true 1990 }, 1991 phone: { 1992 required: true, 1993 minlength: 2 1994 }, 1995 regional_salesman: { 1996 required: true 1997 }, 1998 dealership_address: { 1999 required: true, 2000 minlength: 2 2001 }, 2002 dealership_city: { 2003 required: true, 2004 minlength: 2 2005 }, 2006 dealership_state: { 2007 required: true, 2008 minlength: 2 2009 }, 2010 dealership_country: { 2011 required: true, 2012 minlength: 2 2013 }, 2014 arrival_date: { 2015 required: true 2016 }, 2017 arrival_time: { 2018 required: true, 2019 minlength: 2 2020 }, 2021 departure_date: { 2022 required: true 2023 } 2024 2025}, 2026//set messages to appear inline 2027messages: { 2028 dealership_name: { 2029 required: "<br /> -Please enter a Dealership Name", 2030 minlength: "<br /> -Name must be longer than 1 letter." 2031 }, 2032 registrant_name: { 2033 required: "<br /> -Please enter Your Name", 2034 minlength: "<br /> -Name must be longer than 1 letter." 2035 }, 2036 registrant_email: { 2037 required: "<br /> -Please enter Your Email Address", 2038 email: "<br /> -Please enter a valid email address" 2039 }, 2040 phone: { 2041 required: "<br /> -Please enter the Your Phone Number", 2042 minlength: "<br /> -Name must be longer than 1 letter." 2043 }, 2044 regional_salesman: { 2045 required: "<br /> -Please enter the dealer's Regional Salesman" 2046 }, 2047 dealership_address: { 2048 required: "<br /> -Please enter a Dealership Address", 2049 minlength: "<br /> -Name must be longer than 1 letter." 2050 }, 2051 dealership_city: { 2052 required: "<br /> -Please enter a Dealership City", 2053 minlength: "<br /> -Name must be longer than 1 letter." 2054 }, 2055 dealership_state: { 2056 required: "<br /> -Please enter a Dealership State", 2057 minlength: "<br /> -Name must be longer than 1 letter." 2058 }, 2059 dealership_country: { 2060 required: "<br /> -Please enter a Dealership Country", 2061 minlength: "<br /> -Name must be longer than 1 letter." 2062 }, 2063 arrival_date: { 2064 required: "<br /> -Please enter an Arrival Date" 2065 }, 2066 arrival_time: { 2067 required: "<br /> -Please enter an estimated Arrival Time", 2068 minlength: "<br /> -Name must be longer than 1 letter." 2069 }, 2070 departure_date: { 2071 required: "<br /> -Please enter an estimated Departure Date" 2072 } 2073 2074 2075}, 2076submitHandler: function(form) { 2077 document.dealer_meeting_registration_form.submit(); 2078 } 2079}); 2080}); 2081*/ 2082 2083 function alertResponse(response) { 2084 alert(response.responseText); 2085 } 2086 2087 //// prelaunch 2088 // think this will all be deprecated with new image uploader 2089 2090 /////////////////////////////////// 2091 //////// Inventory Image Uploader Configuration 2092 ////////////////////////////////// 2093 if (jQuery("#imageUpload").length) { 2094 new AjaxUpload("#imageUpload", { 2095 // Location of the server-side upload script 2096 action: 2097 domain + "ajax/ajax-ImageUpload.php?action=inventory_image_upload", 2098 // File upload name 2099 name: "userfile", 2100 // Additional data to send 2101 data: { 2102 folderID: jQuery("#folderID").attr("value"), 2103 }, 2104 // Submit file after selection 2105 autoSubmit: true, 2106 // The type of data that you're expecting back from the server. 2107 // Html (text) and xml are detected automatically. 2108 // Only useful when you are using json data as a response. 2109 // Set to "json" in that case. 2110 responseType: false, 2111 // Fired after the file is selected 2112 // Useful when autoSubmit is disabled 2113 // You can return false to cancel upload 2114 // @param file basename of uploaded file 2115 // @param extension of that file 2116 onChange: function (file, extension) { 2117 //alert(file); 2118 var dirtyFileName = file; 2119 file = cleanFileName(file); 2120 var fileID = file.split("."); 2121 var folderID = jQuery("#folderID").attr("value"); 2122 //alert(fileID); 2123 // Clear the 'Upload Images Here!' text 2124 jQuery("#uploadTitle").empty(); 2125 jQuery("#saveThisBoat").attr("disabled", "disabled"); 2126 // create table 2127 jQuery("#uploadContent").prepend( 2128 '<table class="tableIU" id="image-table-' + 2129 fileID[0] + 2130 '"><tr><td class="topTd"><div class="leftContainerIU"><span class="example">Image Filename:</span><br /><span>' + 2131 dirtyFileName + 2132 '</span><img id="image-' + 2133 fileID[0] + 2134 '" src="' + 2135 domain + 2136 'images/styleElements/loader100px.gif" /><div class="clear"></div><span><input type="hidden" name="fileNames[]" value="' + 2137 file + 2138 '" /><input type="radio" name="isMainImage" value="' + 2139 file + 2140 '" />Is Main Image?</span><br /><input type="radio" name="is_overhead" value="' + 2141 file + 2142 '" />Is Overhead Image?</span><br /><input type="radio" name="is_profile" value="' + 2143 file + 2144 '" />Is Profile Image?</span><p><input type="button" value=" Delete This Image " onclick="deleteImage(\'' + 2145 fileID[0] + 2146 '\'); return false" /></p></div></td><td><div class="rightContainerIU"><p><label for="imageTitle-' + 2147 fileID[0] + 2148 '">Image Title:<span class="red">*</span></label><br /><input type="text" id="imageTitle-' + 2149 fileID[0] + 2150 '" class="textboxWide" name="imageName[]" value="" /><br /><span class="example">ex: Bow Storage on this boat is Amazing!</span></p><p class="spacey"><label for="imageDescription">Image Description:</label><br /><textarea rows="5" name="imageDesc[]" id="imageDesc-' + 2151 fileID[0] + 2152 '" cols="40" ></textarea> <br /><span class="example">ex: Chaparral\'s are known for their Bow Storage, you will not find another brand with this much storage....etc.</span></p><p> <label for="imageOrder-' + 2153 fileID[0] + 2154 '">Image List Order:</label><input type="text" id="imageOrder-' + 2155 fileID[0] + 2156 '" class="textboxWide" name="list_order_images[]" value="
21560" /></p></div></td></tr></table>' 2157 ); 2158 2159 // Change the 'Upload Images Here!' text 2160 jQuery("#uploadTitle").css("color", "#ff0000"); 2161 jQuery("#uploadTitle").append("Upload Another Image"); 2162 }, 2163 // Fired before the file is uploaded 2164 // You can return false to cancel upload 2165 // @param file basename of uploaded file 2166 // @param extension of that file 2167 onSubmit: function (file, extension) {}, 2168 // Fired when file upload is completed 2169 // @param file basename of uploaded file 2170 // @param response server response 2171 onComplete: function (file, response) { 2172 file = cleanFileName(file); 2173 var fileID = file.split("."); 2174 //alert(fileID[0]); 2175 var folderID = jQuery("#folderID").attr("value"); 2176 //var folderID = response; 2177 //var folderID = jQuery('#folderID').attr('value', folderID); 2178 2179 var imgURL = 2180 domain + "images/inventoryImages/" + folderID + "/180px/" + file; 2181 2182 //alert(imgURL); 2183 // here we change the image trigger value so the php script knows to re-pro zip files 2184 jQuery("#image_trigger").attr("value", "1"); 2185 2186 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2187 2188 jQuery("#saveThisBoat").removeAttr("disabled"); 2189 }, 2190 }); // end image upload script 2191 } 2192 2193 //// prelaunch 2194 // think this will all be deprecated with new image uploader 2195 2196 /////////////////////////////////// 2197 //////// Inventory Image Uploader Configuration 2198 ////////////////////////////////// 2199 if (jQuery("#imageUploadLocationOFF").length) { 2200 new AjaxUpload("#imageUploadLocation", { 2201 // Location of the server-side upload script 2202 action: domain + "Location-Manager.php?action=image_upload", 2203 // File upload name 2204 name: "userfile", 2205 // Additional data to send 2206 data: { 2207 folderID: jQuery("#location_id").attr("value"), 2208 }, 2209 // Submit file after selection 2210 autoSubmit: true, 2211 // The type of data that you're expecting back from the server. 2212 // Html (text) and xml are detected automatically. 2213 // Only useful when you are using json data as a response. 2214 // Set to "json" in that case. 2215 responseType: false, 2216 // Fired after the file is selected 2217 // Useful when autoSubmit is disabled 2218 // You can return false to cancel upload 2219 // @param file basename of uploaded file 2220 // @param extension of that file 2221 onChange: function (file, extension) { 2222 //alert(file); 2223 var dirtyFileName = file; 2224 file = cleanFileName(file); 2225 var fileID = file.split("."); 2226 var folderID = jQuery("#location_id").attr("value"); 2227 //alert(fileID); 2228 // Clear the 'Upload Images Here!' text 2229 jQuery("#uploadTitle").empty(); 2230 2231 // needs to disable all submit buttons 2232 jQuery(".save_location_button").attr("disabled", "disabled"); 2233 2234 // create table 2235 jQuery("#uploadContent").prepend( 2236 '<table class="tableIU" id="image-table-' + 2237 fileID[0] + 2238 '"><tr><td class="topTd"><div class="leftContainerIU"><span class="example">Image Filename:</span><br /><span>' + 2239 dirtyFileName + 2240 '</span><img id="image-' + 2241 fileID[0] + 2242 '" src="' + 2243 domain + 2244 'images/styleElements/loader100px.gif" /><div class="clear"></div><span><input type="hidden" name="fileNames[]" value="' + 2245 file + 2246 '" /><input type="radio" name="is_main_image" value="' + 2247 file + 2248 '" />Is Main Location Image?</span><br /><input type="radio" name="is_web_logo" value="' + 2249 file + 2250 '" />Is Web Logo?</span><br /><input type="radio" name="is_print_logo" value="' + 2251 file + 2252 '" />Is Print Logo?</span><p><input type="button" value=" Delete This Image " onclick="deleteImage(\'' + 2253 fileID[0] + 2254 '\'); return false" /></p></div></td><td><div class="rightContainerIU"><p><label for="imageTitle-' + 2255 fileID[0] + 2256 '">Image Title:<span class="red">*</span></label><br /><input type="text" id="imageTitle-' + 2257 fileID[0] + 2258 '" class="textboxWide" name="imageName[]" value="" /><br /><span class="example">ex: John Doe Boats Located in East Bumble Wisconsin</span></p><p class="spacey"><label for="imageDescription">Image Description:</label><br /><textarea rows="5" name="imageDesc[]" id="imageDesc-' + 2259 fileID[0] + 2260 '" cols="40" ></textarea> <br /><span class="example">ex: At John Doe Boats our service department is fully staffed and carries a full inventory of parts to get you back on the water quickly!</span></p><p> <label for="imageOrder-' + 2261 fileID[0] + 2262 '">Image List Order:</label><input type="text" id="imageOrder-' + 2263 fileID[0] + 2264 '" class="textboxWide" name="list_order_images[]" value="
22640" /></p></div></td></tr></table>' 2265 ); 2266 2267 // Change the 'Upload Images Here!' text 2268 jQuery("#uploadTitle").css("color", "#ff0000"); 2269 jQuery("#uploadTitle").append("Upload Another Image"); 2270 }, 2271 // Fired before the file is uploaded 2272 // You can return false to cancel upload 2273 // @param file basename of uploaded file 2274 // @param extension of that file 2275 onSubmit: function (file, extension) {}, 2276 // Fired when file upload is completed 2277 // @param file basename of uploaded file 2278 // @param response server response 2279 onComplete: function (file, response) { 2280 file = cleanFileName(file); 2281 var fileID = file.split("."); 2282 //alert(fileID[0]); 2283 var folderID = jQuery("#location_id").attr("value"); 2284 //var folderID = response; 2285 //var folderID = jQuery('#folderID').attr('value', folderID); 2286 2287 var imgURL = 2288 domain + "images/images_location/" + folderID + "/640px/" + file; 2289 2290 //alert(imgURL); 2291 // here we change the image trigger value so the php script knows to re-pro zip files 2292 jQuery("#image_trigger").attr("value", "1"); 2293 2294 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2295 2296 // reenable the submit buttons here 2297 jQuery(".save_location_button").removeAttr("disabled"); 2298 }, 2299 }); // end image upload script 2300 } 2301 2302 /////////////////////////////////// 2303 //////// Warranty Claim Image Uploader Configuration 2304 ////////////////////////////////// 2305 if (jQuery("#imageUploadWarranty").length) { 2306 new AjaxUpload("#imageUploadWarranty", { 2307 // Location of the server-side upload script 2308 action: domain + "ajax/ajax-ImageUpload.php?action=warranty_image_upload", 2309 // File upload name 2310 name: "userfile", 2311 // Additional data to send 2312 data: { 2313 folderID: jQuery("#rapSerialNumberID").attr("value"), 2314 }, 2315 // Submit file after selection 2316 autoSubmit: true, 2317 // The type of data that you're expecting back from the server. 2318 // Html (text) and xml are detected automatically. 2319 // Only useful when you are using json data as a response. 2320 // Set to "json" in that case. 2321 responseType: false, 2322 // Fired after the file is selected 2323 // Useful when autoSubmit is disabled 2324 // You can return false to cancel upload 2325 // @param file basename of uploaded file 2326 // @param extension of that file 2327 onChange: function (file, extension) { 2328 //alert(file); 2329 var dirtyFileName = file; 2330 file = cleanFileName(file); 2331 var fileID = file.split("."); 2332 var folderID = jQuery("#rapSerialNumberID").attr("value"); 2333 //alert(fileID); 2334 // Clear the 'Upload Images Here!' text 2335 jQuery("#uploadTitle").empty(); 2336 jQuery("#saveThisBoat").attr("disabled", "disabled"); 2337 // create table 2338 //jQuery('#uploadContent').prepend('<table class="tableIU" id="image-table-'+fileID[0]+'"><tr><td class="topTd"><div class="leftContainerIU"><span class="example">Image Filename:</span><br /><span>'+dirtyFileName+'</span><img id="image-'+fileID[0]+'" src="'+domain+'images/styleElements/loader100px.gif" /><div class="clear"></div><span><input type="hidden" name="fileNames[]" value="'+file+'" /><p><input type="button" value=" Delete This Image " onclick="deleteImage(\''+fileID[0]+'\'); return false" /></p></div></td></tr></table>'); 2339 2340 jQuery("#uploadContent").prepend( 2341 '<table class="tableIU" id="image-table-' + 2342 fileID[0] + 2343 '" style="width:100%"><tr><td class="topTd" style="width:40%;"><div class="leftContainerIU" style="width:100%;"><span class="example">Image Filename:</span><br /><span>' + 2344 dirtyFileName + 2345 '</span><img id="image-' + 2346 fileID[0] + 2347 '" src="' + 2348 domain + 2349 'images/styleElements/loader100px.gif" style="width:100%;margin:14px 0;"/><div class="clear"></div><span><input type="hidden" name="fileNames[]" value="' + 2350 file + 2351 '" /></span><p><input type="button" value=" Delete This Image " onclick="deleteImage(\'' + 2352 fileID[0] + 2353 '\'); return false" /></p></div></td><td><div class="rightContainerIU"><p class="spacey" style="margin-top:35px;"><label for="imageDescription">Image Description:</label><br /><textarea rows="5" name="imageDesc[]" id="imageDesc-' + 2354 fileID[0] + 2355 '" cols="40" ></textarea> <br /><span class="example">ex: Scratch is located bottom right of image!</span></p></div></td></tr></table>' 2356 ); 2357 2358 // Change the 'Upload Images Here!' text 2359 jQuery("#uploadTitle").css("color", "#ff0000"); 2360 jQuery("#uploadTitle").append("Upload Another Image"); 2361 }, 2362 // Fired before the file is uploaded 2363 // You can return false to cancel upload 2364 // @param file basename of uploaded file 2365 // @param extension of that file 2366 onSubmit: function (file, extension) {}, 2367 // Fired when file upload is completed 2368 // @param file basename of uploaded file 2369 // @param response server response 2370 onComplete: function (file, response) { 2371 file = cleanFileName(file); 2372 var fileID = file.split("."); 2373 //alert(fileID[0]); 2374 var folderID = jQuery("#rapSerialNumberID").attr("value"); 2375 //var folderID = response; 2376 //var folderID = jQuery('#folderID').attr('value', folderID); 2377 2378 var imgURL = 2379 domain + "images/images_warranty/" + folderID + "/300px/" + file; 2380 2381 //alert(imgURL); 2382 // here we change the image trigger value so the php script knows to re-pro zip files 2383 //jQuery('#image_trigger').attr("value","1"); 2384 2385 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2386 2387 jQuery(".warranty_save").removeAttr("disabled"); 2388 }, 2389 }); // end warranty image upload script 2390 } 2391 2392 //// prelaunch 2393 // this function somehow changes rusty's profile image as well as the dealers 2394 2395 /////////////////////////////////// 2396 //////// Dealer profile Image Uploader Configuration 2397 ////////////////////////////////// 2398 if (jQuery("#imageUpload_dealer_profile_OFF").length) { 2399 var ajax_upload_profile_image = new AjaxUpload( 2400 "#imageUpload_dealer_profile", 2401 { 2402 // Location of the server-side upload script 2403 2404 action: domain + "ajax/ajax-ImageUpload-dealer-profile.php", 2405 // File upload name 2406 name: "userfile", 2407 // Additional data to send 2408 data: { 2409 folderID: jQuery("#user_id").attr("value"), 2410 }, 2411 // Submit file after selection 2412 autoSubmit: true, 2413 // The type of data that you're expecting back from the server. 2414 // Html (text) and xml are detected automatically. 2415 // Only useful when you are using json data as a response. 2416 // Set to "json" in that case. 2417 responseType: false, 2418 // Fired after the file is selected 2419 // Useful when autoSubmit is disabled 2420 // You can return false to cancel upload 2421 // @param file basename of uploaded file 2422 // @param extension of that file 2423 onChange: function (file, extension) { 2424 var dirtyFileName = file; 2425 file = cleanFileName(file); 2426 var fileID = file.split("."); 2427 var folderID = jQuery("#user_id").attr("value"); 2428 //alert(folderID); 2429 // Clear the 'Upload Images Here!' text 2430 jQuery("#uploadTitle").empty(); 2431 jQuery("#saveThisBoat").attr("disabled", "disabled"); 2432 // create table 2433 jQuery("#image_placeholder").attr( 2434 "src", 2435 domain + "images/styleElements/loader145X185px.gif" 2436 ); 2437 2438 // Change the 'Upload Images Here!' text 2439 jQuery("#uploadTitle").css("color", "#ff0000"); 2440 jQuery("#uploadTitle").append("Upload Another Image"); 2441 }, 2442 // Fired before the file is uploaded 2443 // You can return false to cancel upload 2444 // @param file basename of uploaded file 2445 // @param extension of that file 2446 onSubmit: function (file, extension) { 2447 ajax_upload_profile_image.setData({ 2448 folderID: jQuery("#user_id").attr("value"), 2449 }); 2450 }, 2451 // Fired when file upload is completed 2452 // @param file basename of uploaded file 2453 // @param response server response 2454 onComplete: function (file, response) { 2455 file = cleanFileName(file); 2456 var fileID = file.split("."); 2457 //alert(fileID[0]); 2458 var folder = jQuery("#user_id").attr("value"); 2459 //var folderID = response; 2460 //var folderID = jQuery('#folderID').attr('value', folderID); 2461 var amazon = "https://s3.amazonaws.com/"; 2462 var imgURL = amazon + "sdr_user_images/" + folder + "/180px/" + file; 2463 var src = 2464 "https://s3.amazonaws.com/sdr_user_images/" + 2465 folder +
2466 "/180px/" + 2467 file; 2468 jQuery("#image_placeholder").attr("src", src); 2469 2470 // here we change the image trigger value so the php script knows to re-pro zip files 2471 jQuery("#image_trigger").attr("value", "1"); 2472 2473 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2474 2475 jQuery("#saveThisBoat").removeAttr("disabled"); 2476 }, 2477 } 2478 ); // end image upload script 2479 } 2480 2481 //// prelaunch 2482 // think this will all be deprecated with new image uploader 2483 2484 jQuery(".rcw").click(function () { 2485 var src = jQuery(this).siblings("img").attr("src").split("/"); 2486 var file = src[src.length - 1]; 2487 if (file.indexOf("?") > 0) { 2488 file = file.split("?"); 2489 file = file[0]; 2490 } 2491 var degrees = jQuery(this).attr("degree"); 2492 var userID = jQuery("#user_id").attr("value"); 2493 2494 var response = jQuery.ajax({ 2495 type: "POST", 2496 2497 url: domain + "ajax/ajax-rotateProfileImage.php", 2498 data: "name=" + file + "°rees=" + degrees + "&folderID=" + userID, 2499 2500 error: function () { 2501 alert("image not rotated, please contact administrator"); 2502 alertResponse(response); 2503 alert("name=" + file + "°rees=" + degrees + "&folderID=" + userID); 2504 }, 2505 success: function () { 2506 if (response.responseText) { 2507 // if opened image is 'closed', change opened image from closed to open 2508 2509 //alert(response.responseText); 2510 d = new Date(); 2511 amazon = "https://s3.amazonaws.com/"; 2512 var src = amazon + "/sdr_user_images/" + userID + "/180px/" + file; 2513 jQuery("#image_placeholder").attr("src", src + "?" + d.getTime()); 2514 } else { 2515 alert("Image was not rotated"); 2516 } 2517 }, 2518 }); 2519 }); // ends rotate clockwise function 2520 2521 /////////////////////////////////// 2522 //////// Inventory OPTION Image Uploader Configuration 2523 ////////////////////////////////// 2524 if (jQuery(".option_image").length) { 2525 var theLength = jQuery(".option_image").length - 1; 2526 2527 for (var i = 0; i <= theLength; i++) { 2528 //alert(jQuery(".option_image").get(i)); 2529 2530 // someValue is the id of this option. 2531 // this id is used throughout this function to determine where to show/change images 2532 var someItem = jQuery(".option_image").get(i); 2533 var someValue = jQuery(someItem).next().attr("value"); 2534 //alert(someValue); 2535 2536 new AjaxUpload(jQuery(".option_image").get(i), { 2537 // Location of the server-side upload script 2538 action: domain + "ajax/ajax-ImageUpload-Option.php", 2539 // File upload name 2540 name: "userfile", 2541 // Additional data to send 2542 data: { 2543 folderID: jQuery("#folderID").attr("value"), 2544 type: "option", 2545 optionID: someValue, 2546 }, 2547 // Submit file after selection 2548 autoSubmit: true, 2549 // The type of data that you're expecting back from the server. 2550 // Html (text) and xml are detected automatically. 2551 // Only useful when you are using json data as a response. 2552 // Set to "json" in that case. 2553 responseType: false, 2554 // Fired after the file is selected 2555 // Useful when autoSubmit is disabled 2556 // You can return false to cancel upload 2557 // @param file basename of uploaded file 2558 // @param extension of that file 2559 onChange: function (file, extension) { 2560 var dirtyFileName = file; 2561 file = cleanFileName(file); 2562 var fileID = file.split("."); 2563 var folderID = jQuery("#folderID").attr("value"); 2564 //alert(fileID); 2565 2566 //jQuery('#saveThisBoat').attr("disabled","disabled"); 2567 // create table 2568 2569 //jQuery("#option_image_holder-"+someValue).prepend('<div style="margin-bottom:20px;"><img id="image-'+fileID[0]+'" src="'+domain+'images/styleElements/loader100px.gif" /><input type="hidden" name="fileOptionNames[]" value="'+file+'" /><p><input type="button" value=" Delete This Image " onclick="deleteImage(\''+fileID[0]+'\'); return false" /></p><hr /></div>'); 2570 }, 2571 // Fired before the file is uploaded 2572 // You can return false to cancel upload 2573 // @param file basename of uploaded file 2574 // @param extension of that file 2575 onSubmit: function (file, extension) {}, 2576 // Fired when file upload is completed 2577 // @param file basename of uploaded file 2578 // @param response server response 2579 onComplete: function (file, response) { 2580 //alert(response); 2581 2582 file = cleanFileName(file); 2583 var fileID = file.split("."); 2584 //alert(fileID[0]); 2585 var folderID = jQuery("#folderID").attr("value"); 2586 //var folderID = response; 2587 //var folderID = jQuery('#folderID').attr('value', folderID); 2588 2589 var imgURL = 2590 domain + "images/inventoryImages/" + folderID + "/80p
2590x/" + file; 2591 2592 jQuery("#option_image_holder-" + response).prepend( 2593 '<div style="margin-bottom:20px;"><img id="image-' + 2594 fileID[0] + 2595 '" src="' + 2596 domain + 2597 'images/styleElements/loader100px.gif" style="border:3px solid #444444;" /><input type="hidden" name="fileOptionNames[]" value="' + 2598 file + 2599 '" /><hr /></div>' 2600 ); 2601 2602 //alert(imgURL); 2603 // here we change the image trigger value so the php script knows to re-pro zip files 2604 jQuery("#image_trigger").attr("value", "1"); 2605 2606 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2607 2608 jQuery("#saveThisBoat").removeAttr("disabled"); 2609 }, 2610 }); // end image upload script 2611 } // end of for statement 2612 } 2613 2614 /////////////////////////////////// 2615 //////// Inventory STANDARD Image Uploader Configuration 2616 ////////////////////////////////// 2617 if (jQuery(".standard_image").length) { 2618 var theLength = jQuery(".standard_image").length - 1; 2619 2620 for (var i = 0; i <= theLength; i++) { 2621 //alert(jQuery(".option_image").get(i)); 2622 2623 // someValue is the id of this option. 2624 // this id is used throughout this function to determine where to show/change images 2625 var someItem = jQuery(".standard_image").get(i); 2626 var someValue = jQuery(someItem).next().attr("value"); 2627 //alert(someValue); 2628 2629 new AjaxUpload(jQuery(".standard_image").get(i), { 2630 // Location of the server-side upload script 2631 action: domain + "ajax/ajax-ImageUpload-Option.php", 2632 // File upload name 2633 name: "userfile", 2634 // Additional data to send 2635 data: { 2636 folderID: jQuery("#folderID").attr("value"), 2637 type: "standard", 2638 optionID: someValue, 2639 }, 2640 // Submit file after selection 2641 autoSubmit: true, 2642 // The type of data that you're expecting back from the server. 2643 // Html (text) and xml are detected automatically. 2644 // Only useful when you are using json data as a response. 2645 // Set to "json" in that case. 2646 responseType: false, 2647 // Fired after the file is selected 2648 // Useful when autoSubmit is disabled 2649 // You can return false to cancel upload 2650 // @param file basename of uploaded file 2651 // @param extension of that file 2652 onChange: function (file, extension) { 2653 var dirtyFileName = file; 2654 file = cleanFileName(file); 2655 var fileID = file.split("."); 2656 var folderID = jQuery("#folderID").attr("value"); 2657 //alert(fileID); 2658 2659 //jQuery('#saveThisBoat').attr("disabled","disabled"); 2660 // create table 2661 2662 //jQuery("#option_image_holder-"+someValue).prepend('<div style="margin-bottom:20px;"><img id="image-'+fileID[0]+'" src="'+domain+'images/styleElements/loader100px.gif" /><input type="hidden" name="fileOptionNames[]" value="'+file+'" /><p><input type="button" value=" Delete This Image " onclick="deleteImage(\''+fileID[0]+'\'); return false" /></p><hr /></div>'); 2663 }, 2664 // Fired before the file is uploaded 2665 // You can return false to cancel upload 2666 // @param file basename of uploaded file 2667 // @param extension of that file 2668 onSubmit: function (file, extension) {}, 2669 // Fired when file upload is completed 2670 // @param file basename of uploaded file 2671 // @param response server response 2672 onComplete: function (file, response) { 2673 //alert(response); 2674 2675 file = cleanFileName(file); 2676 var fileID = file.split("."); 2677 //alert(fileID[0]); 2678 var folderID = jQuery("#folderID").attr("value"); 2679 //var folderID = response; 2680 //var folderID = jQuery('#folderID').attr('value', folderID); 2681 2682 var imgURL = 2683 domain + "images/inventoryImages/" + folderID + "/80px/" + file; 2684 2685 jQuery("#standard_image_holder-" + response).prepend( 2686 '<div style="margin-bottom:20px;"><img id="image-' + 2687 fileID[0] + 2688 '" src="' + 2689 domain + 2690 'images/styleElements/loader100px.gif" style="border:3px solid #444444;" /><input type="hidden" name="fileStandardNames[]" value="' + 2691 file + 2692 '" /><hr /></div>' 2693 ); 2694 2695 //alert(imgURL); 2696 // here we change the image trigger value so the php script knows to re-pro zip files 2697 jQuery("#image_trigger").attr("value", "1"); 2698 2699 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2700 2701 jQuery("#saveThisBoat").removeAttr("disabled"); 2702 }, 2703 }); // end image upload script 2704 } // end of for statement 2705 } 2706 2707 //// prelaunch 2708 // think this will all be deprecated with new article system 2709 2710 /////////////////////////////////// 2711 //////// Inventory Image Uploader Configuration 2712 ////////////////////////////////// 2713 if (jQuery("#imageUpload-Blog").length) { 2714 new AjaxUpload("#imageUpload-Blog", { 2715 // Location of the server-side upload script 2716 action: domain + "ajax/ajax-ImageUpload-Blog.php", 2717 // File upload name 2718 name: "userfile", 2719 // Additional data to send 2720 data: { 2721 folderID: jQuery("#folderID").attr("value"), 2722 }, 2723 // Submit file after selection 2724 autoSubmit: true, 2725 // The type of data that you're expecting back from the server. 2726 // Html (text) and xml are detected automatically. 2727 // Only useful when you are using json data as a response. 2728 // Set to "json" in that case. 2729 responseType: false, 2730 // Fired after the file is selected 2731 // Useful when autoSubmit is disabled 2732 // You can return false to cancel upload 2733 // @param file basename of uploaded file 2734 // @param extension of that file 2735 onChange: function (file, extension) { 2736 var dirtyFileName = file; 2737 file = cleanFileName(file); 2738 //alert(file); 2739 var fileID = file.split("."); 2740 var folderID = jQuery("#folderID").attr("value"); 2741 //alert(fileID); 2742 // Clear the 'Upload Images Here!' text 2743 jQuery("#uploadTitle").empty(); 2744 jQuery("#saveThisBoat").attr("disabled", "disabled"); 2745 // create table 2746 jQuery("#uploadContent").prepend( 2747 '<table class="tableIU" id="image-table-' + 2748 fileID[0] + 2749 '"><tr><td class="topTd"><div class="leftContainerIU"><span class="example">Image Filename:</span><br /><span>' + 2750 dirtyFileName + 2751 '</span><img id="image-' + 2752 fileID[0] + 2753 '" src="' + 2754 domain + 2755 '/images/styleElements/loader100px.gif" /><span><input type="hidden" name="fileNames[]" value="' + 2756 file + 2757 '" /><input type="radio" name="isMainImage" value="' + 2758 file + 2759 '" />Is Main Image?</span><p><input type="button" value=" Delete This Image " onclick="deleteBlogImage(\'' + 2760 fileID[0] + 2761 '\'); return false" /></p></div></td><td><div class="rightContainerIU"><p><label for="imageTitle-' + 2762 fileID[0] + 2763 '">Image Title:<span class="red">*</span></label><br /><input type="text" id="imageTitle-' + 2764 fileID[0] + 2765 '" class="textboxWide" name="imageName[]" value="" /><br /><span class="example">ex: Bow Storage on this boat is Amazing!</span></p><p class="spacey"><label for="imageDescription">Image Description:</label><br /><textarea rows="5" name="imageDesc[]" id="imageDesc-' + 2766 fileID[0] + 2767 '" cols="40" ></textarea> <br /><span class="example">ex: Chaparral\'s are known for their Bow Storage, you will not find another brand with this much storage....etc.</span></p></div></td></tr></table>' 2768 ); 2769 2770 // Change the 'Upload Images Here!' text 2771 jQuery("#uploadTitle").css("color", "#ff0000"); 2772 jQuery("#uploadTitle").append("Upload Another Image"); 2773 }, 2774 // Fired before the file is uploaded 2775 // You can return false to cancel upload 2776 // @param file basename of uploaded file 2777 // @param extension of that file 2778 onSubmit: function (file, extension) {}, 2779 // Fired when file upload is completed 2780 // @param file basename of uploaded file 2781 // @param response server response 2782 onComplete: function (file, response) { 2783 file = cleanFileName(file); 2784 var fileID = file.split("."); 2785 //alert(fileID[0]); 2786 var folderID = jQuery("#folderID").attr("value"); 2787 //var folderID = response; 2788 //var folderID = jQuery('#folderID').attr('value', folderID); 2789 2790 var imgURL = domain + "images/blog/" + folderID + "/180px/" + file; 2791 2792 //alert(imgURL); 2793 2794 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2795 2796 jQuery("#saveThisBoat").removeAttr("disabled"); 2797 }, 2798 }); // end of image upload function 2799 } 2800 2801 //// prelaunch 2802 // think this will all be deprecated with new image uploader 2803 2804 /////////////////////////////////// 2805 //////// MFG Image Uploader Configuration - For On The Line Pictures 2806 ////////////////////////////////// 2807 if (jQuery("#imageUpload-MFG").length) { 2808 new AjaxUpload("#imageUpload-MFG", { 2809 // Location of the server-side upload script 2810 action: domain + "ajax/ajax-ImageUpload-MFG.php", 2811 // File upload name 2812 name: "userfile", 2813 // Additional data to send 2814 data: { 2815 folderID: jQuery("#folderID").attr("value"), 2816 }, 2817 // Submit file after selection 2818 autoSubmit: true, 2819 // The type of data that you're expecting back from the server. 2820 // Html (text) and xml are detected automatically. 2821 // Only useful when you are using json data as a response. 2822 // Set to "json" in that case. 2823 responseType: false, 2824 // Fired after the file is selected 2825 // Useful when autoSubmit is disabled 2826 // You can return false to cancel upload 2827 // @param file basename of uploaded file 2828 // @param extension of that file 2829 onChange: function (file, extension) { 2830 var dirtyFileName = file; 2831 file = cleanFileName(file); 2832 //alert(file); 2833 var fileID = file.split("."); 2834 var folderID = jQuery("#folderID").attr("value"); 2835 //alert(fileID); 2836 // Clear the 'Upload Images Here!' text 2837 //jQuery('#uploadTitle').empty(); 2838 //jQuery('#saveThisBoat').attr("disabled","disabled"); 2839 // create table 2840 //jQuery('#uploadContent').prepend('<table class="tableIU" id="image-table-'+fileID[0]+'"><tr><td class="topTd"><div class="leftContainerIU"><span class="example">Image Filename:</span><br /><span>'+dirtyFileName+'</span><img id="image-'+fileID[0]+'" src="'+domain+'/images/styleElements/loader100px.gif" /><span><input type="hidden" name="fileNames[]" value="'+file+'" /><input type="radio" name="isMainImage" value="'+file+'" />Is Main Image?</span><p><input type="button" value=" Delete This Image " onclick="deleteBlogImage(\''+fileID[0]+'\'); return false" /></p></div></td><td><div class="rightContainerIU"><p><label for="imageTitle-'+fileID[0]+'">Image Title:<span class="red">*</span></label><br /><input type="text" id="imageTitle-'+fileID[0]+'" class="textboxWide" name="imageName[]" value="" /><br /><span class="example">ex: Bow Storage on this boat is Amazing!</span></p><p class="spacey"><label for="imageDescription">Image Description:</label><br /><textarea rows="5" name="imageDesc[]" id="imageDesc-'+fileID[0]+'" cols="40" ></textarea> <br /><span class="example">ex: Chaparral\'s are known for their Bow Storage, you will not find another brand with this much storage....etc.</span></p></div></td></tr></table>'); 2841 2842 // Change the 'Upload Images Here!' text 2843 //jQuery('#uploadTitle').css('color','#ff0000'); 2844 //jQuery('#uploadTitle').append("Upload Another Image"); 2845 }, 2846 // Fired before the file is uploaded 2847 // You can return false to cancel upload 2848 // @param file basename of uploaded file 2849 // @param extension of that file 2850 onSubmit: function (file, extension) { 2851 jQuery("#loading").show(); 2852 }, 2853 // Fired when file upload is completed 2854 // @param file basename of uploaded file 2855 // @param response server response 2856 onComplete: function (file, response) { 2857 file = cleanFileName(file); 2858 var fileID = file.split("."); 2859 //alert(fileID[0]); 2860 var folderID = jQuery("#folderID").attr("value"); 2861 //var folderID = response; 2862 //var folderID = jQuery('#folderID').attr('value', folderID); 2863 2864 var imgURL = domain + "images/mfg/" + folderID + "/640px/" + response; 2865 2866 //alert(imgURL); 2867 jQuery("#loading").hide(); 2868 jQuery("#button_next_1").show(); 2869 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2870 jQuery("#image_placeholder").attr("src", imgURL); 2871 2872 jQuery("#saveThisBoat").removeAttr("disabled"); 2873 }, 2874 }); // end of image upload function 2875 } 2876 2877 /////////////////////////////////// 2878 //////// MFG Image Uploader Configuration - For On The Line Pictures 2879 ////////////////////////////////// 2880 if (jQuery("#imageUpload-Dealership").length) { 2881 new AjaxUpload("#imageUpload-Dealership", { 2882 // Location of the server-side upload script 2883 action: domain + "ajax/ajax-ImageUpload-Dealer.php", 2884 // File upload name 2885 name: "userfile", 2886 // Additional data to send 2887 data: { 2888 folderID: jQuery("#folderID").attr("value"), 2889 }, 2890 // Submit file after selection 2891 autoSubmit: true, 2892 // The type of data that you're expecting back from the server. 2893 // Html (text) and xml are detected automatically. 2894 // Only useful when you are using json data as a response. 2895 // Set to "json" in that case. 2896 responseType: false, 2897 // Fired after the file is selected 2898 // Useful when autoSubmit is disabled 2899 // You can return false to cancel upload 2900 // @param file basename of uploaded file 2901 // @param extension of that file 2902 onChange: function (file, extension) { 2903 var dirtyFileName = file; 2904 file = cleanFileName(file); 2905 //alert(file); 2906 var fileID = file.split("."); 2907 var folderID = jQuery("#folderID").attr("value"); 2908 //alert(fileID); 2909 // Clear the 'Upload Images Here!' text 2910 //jQuery('#uploadTitle').empty(); 2911 //jQuery('#saveThisBoat').attr("disabled","disabled"); 2912 // create table 2913 //jQuery('#uploadContent').prepend('<table class="tableIU" id="image-table-'+fileID[0]+'"><tr><td class="topTd"><div class="leftContainerIU"><span class="example">Image Filename:</span><br /><span>'+dirtyFileName+'</span><img id="image-'+fileID[0]+'" src="'+domain+'/images/styleElements/loader100px.gif" /><span><input type="hidden" name="fileNames[]" value="'+file+'" /><input type="radio" name="isMainImage" value="'+file+'" />Is Main Image?</span><p><input type="button" value=" Delete This Image " onclick="deleteBlogImage(\''+fileID[0]+'\'); return false" /></p></div></td><td><div class="rightContainerIU"><p><label for="imageTitle-'+fileID[0]+'">Image Title:<span class="red">*</span></label><br /><input type="text" id="imageTitle-'+fileID[0]+'" class="textboxWide" name="imageName[]" value="" /><br /><span class="example">ex: Bow Storage on this boat is Amazing!</span></p><p class="spacey"><label for="imageDescription">Image Description:</label><br /><textarea rows="5" name="imageDesc[]" id="imageDesc-'+fileID[0]+'" cols="40" ></textarea> <br /><span class="example">ex: Chaparral\'s are known for their Bow Storage, you will not find another brand with this much storage....etc.</span></p></div></td></tr></table>'); 2914 2915 // Change the 'Upload Images Here!' text 2916 //jQuery('#uploadTitle').css('color','#ff0000'); 2917 //jQuery('#uploadTitle').append("Upload Another Image"); 2918 }, 2919 // Fired before the file is uploaded 2920 // You can return false to cancel upload 2921 // @param file basename of uploaded file 2922 // @param extension of that file 2923 onSubmit: function (file, extension) { 2924 jQuery("#loading").show(); 2925 }, 2926 // Fired when file upload is completed 2927 // @param file basename of uploaded file 2928 // @param response server response 2929 onComplete: function (file, response) { 2930 file = c
2930leanFileName(file); 2931 var fileID = file.split("."); 2932 //alert(fileID[0]); 2933 var folderID = jQuery("#folderID").attr("value"); 2934 //var folderID = response; 2935 //var folderID = jQuery('#folderID').attr('value', folderID); 2936 2937 var imgURL = 2938 domain + "images/dealers/" + folderID + "/640px/" + response; 2939 2940 //alert(imgURL); 2941 jQuery("#loading").hide(); 2942 jQuery("#button_next_1").show(); 2943 jQuery("#image-" + fileID[0]).attr("src", imgURL); 2944 jQuery("#image_placeholder").attr("src", imgURL); 2945 2946 jQuery("#saveThisBoat").removeAttr("disabled"); 2947 }, 2948 }); // end of image upload function 2949 } 2950 2951 /////////////////////////////////// 2952 //////// Image Uploader Configuration for Content Page Upload 2953 ////////////////////////////////// 2954 if (jQuery("#imageUpload_content").length) { 2955 new AjaxUpload("#imageUpload_content", { 2956 // Location of the server-side upload script 2957 action: domain + "ajax/ajax-ImageUpload-content.php", 2958 // File upload name 2959 name: "userfile", 2960 // Additional data to send 2961 data: {}, 2962 // Submit file after selection 2963 autoSubmit: true, 2964 // The type of data that you're expecting back from the server. 2965 // Html (text) and xml are detected automatically. 2966 // Only useful when you are using json data as a response. 2967 // Set to "json" in that case. 2968 responseType: false, 2969 // Fired after the file is selected 2970 // Useful when autoSubmit is disabled 2971 // You can return false to cancel upload 2972 // @param file basename of uploaded file 2973 // @param extension of that file 2974 onChange: function (file, extension) { 2975 //alert(file); 2976 file = file.replace(/\s/g, "-"); 2977 //var fileID = file.split("."); 2978 jQuery("#imageUpload_content_thumb").attr( 2979 "src", 2980 domain + "images/styleElements/loader100px.gif" 2981 ); 2982 2983 // Change the 'Upload Images Here!' text 2984 //jQuery('#uploadTitle').css('color','#ff0000'); 2985 //jQuery('#uploadTitle').append("Upload Another Image"); 2986 }, 2987 // Fired before the file is uploaded 2988 // You can return false to cancel upload 2989 // @param file basename of uploaded file 2990 // @param extension of that file 2991 onSubmit: function (file, extension) {}, 2992 // Fired when file upload is completed 2993 // @param file basename of uploaded file 2994 // @param response server response 2995 onComplete: function (file, response) { 2996 //var fileID = file.split("."); 2997 //alert("success"); 2998 //alert(response); 2999 file = cleanFileName(file); 3000 3001 //var idWhole = this.id.split("-"); 3002 //var id = idWhole[1]; 3003 //alert(idWhole); 3004 3005 var imageFilesJSON = eval("(" + response + ")"); 3006 3007 //var imageTag = "<img src='"++"' alt='' />"; 3008 3009 //alert(imageFilesJSON[0]); 3010 jQuery("#content-large").attr( 3011 "value", 3012 '<img src="' + imageFilesJSON[0] + '" />' 3013 ); 3014 jQuery("#content-med").attr( 3015 "value", 3016 '<img src="' + imageFilesJSON[1] + '" />' 3017 ); 3018 jQuery("#content-small").attr( 3019 "value", 3020 '<img src="' + imageFilesJSON[2] + '" />' 3021 ); 3022 3023 jQuery("#imageUpload_content_thumb").attr("src", imageFilesJSON[2]); 3024 3025 //var emailBody = imageFilesJSON.emailBody; 3026 3027 //alert(emailBody); 3028 //eval("(" + jsonData1 + ")") 3029 3030 //alert(emailJSON.subject); 3031 }, 3032 }); 3033 } // end if statement 3034 3035 ///// this is used in the builder option manager to check all the next().children() checkboxes or uncheck them based on the state of this 3036 jQuery(".check_nexts_children:input").click(function () { 3037 if (jQuery(this).is(":checked")) { 3038 jQuery(".check_these-" + jQuery(this).val()).each(function () { 3039 jQuery(this).attr("checked", "true"); 3040 }); 3041 } else { 3042 jQuery(".check_these-" + jQuery(this).val()).each(function () { 3043 jQuery(this).removeAttr("checked"); 3044 }); 3045 } 3046 }); // end check_nexts_children 3047 3048 // this handles any toggles from the admin toolbar just add this class and name the div the same as the href
3049 jQuery(".admin_toolbar_toggle").click(function () { 3050 jQuery(jQuery(this).attr("href")).slideToggle("med"); 3051 return false; 3052 }); // end admin_toolbar_toggle 3053 3054 // when a new client needs to be added in the locaitons manager 3055 jQuery("#client_id_selector").change(function () { 3056 // add new client is selected we remove the selector and show an input field to add a new client 3057 if (jQuery(this).val() == "new") { 3058 jQuery(this).hide(); 3059 jQuery(this).remove(); 3060 jQuery("#new_client").show(); 3061 } 3062 }); 3063 3064 // when a country is selected we show applicable states/provinces. 3065 jQuery("#country_selector").change(function () { 3066 // United States is selected 3067 if (jQuery(this).val() == 226) { 3068 jQuery("#province_dropdown").hide(); 3069 jQuery("#municipality").hide(); 3070 jQuery("#state_dropdown").show(); 3071 } else if (jQuery(this).val() == 38) { 3072 jQuery("#state_dropdown").hide(); 3073 jQuery("#municipality").hide(); 3074 jQuery("#province_dropdown").show(); 3075 } else { 3076 jQuery("#state_dropdown").hide(); 3077 jQuery("#province_dropdown").hide(); 3078 jQuery("#municipality").show(); 3079 } 3080 }); 3081 3082 //// prelaunch 3083 // think this will all be deprecated with new map scripts 3084 3085 // this the the geocoder get's passed and address sets the map center 3086 function showAddress(address) { 3087 var geocoder = new GClientGeocoder(); 3088 geocoder.getLatLng(address, function (point) { 3089 if (!point) { 3090 alert(address + " not found"); 3091 } else { 3092 //map.getCurrentMapType().getMaxZoomAtLatLng(point, function(response) { 3093 // if (response && response['status'] == G_GEO_SUCCESS) { 3094 map.setCenter(point, 13); 3095 //} 3096 //}); 3097 //var marker = new GMarker(point); 3098 //map.addOverlay(marker); 3099 //marker.openInfoWindowHtml(address); 3100 } 3101 }); 3102 } 3103 3104 //// prelaunch 3105 // think this will all be deprecated with new map script 3106 3107 // this is when a user manually inputs a lat/long in the locaiton manager and wants to center the map on the new coords 3108 jQuery("#set_map_center").click(function () { 3109 center = new GLatLng(jQuery("#latitude").val(), jQuery("#longitude").val()); 3110 3111 //map.getCurrentMapType().getMaxZoomAtLatLng(center, function(response) { 3112 // if (response && response['status'] == G_GEO_SUCCESS) { 3113 map.setCenter(center, 13, G_HYBRID_MAP); 3114 // } 3115 //}); // end find max zoom level 3116 }); // end set map center 3117 3118 //jQuery(".user_selector").click(function(){ 3119 //alert('im working'); 3120 //}); 3121 3122 /////////////////////////////////////////////////////////////// 3123 // this populates the user form when the username is clicked from the list. 3124 // or will clear the list if new user is wanted to be added 3125 /////////////////////////////////////////////////////////////// 3126 jQuery("#location_manager_user_list").on( 3127 "click", 3128 ".user_selector", 3129 function () { 3130 //alert('working'); 3131 //alert(jQuery(this).attr("user_id")); 3132 // set the selected users background to a color 3133 //jQuery(this).css("background","red"); 3134 var user_id = jQuery(this).attr("user_id"); 3135 //alert(user_id); 3136 3137 // if user_id is 0 we want to clear all form fields to get ready for new user 3138 if (user_id == 0) { 3139 // show and hide some stuff 3140 // hide the 'add user' button that clears the form, this is done to prevent user input error (deleting what you already did) 3141 //jQuery(this).hide(); 3142 // hide and show proper buttons 3143 //alert(user_id); 3144 jQuery(".user_save").show(); 3145 // empty the form 3146 jQuery("#user_id").val(""); 3147 //jQuery("#user_location_id").reset(); 3148 jQuery("#user_name").val(""); 3149 jQuery(".image_td").css("display", "none"); 3150 jQuery("#user_email").val(""); 3151 jQuery("#user_phone").val(""); 3152 jQuery("#user_mobile_phone").val(""); 3153 jQuery("#user_mobile_carrier").val(""); 3154 jQuery("#user_pass").val(""); 3155 // empty out the name on the access/roles tab 3156 jQuery("#uploadContent").empty(); 3157 // uncheck all the checkboxes 3158 jQuery.each(jQuery(".roles_checkbox"), function () { 3159 //alert(role); 3160 jQuery(this).removeAttr("checked"); 3161 }); 3162 jQuery.each(jQuery(".access_checkbox"), function () { 3163 //alert(role); 3164 jQuery(this).removeAttr("checked"); 3165 }); 3166 } else { 3167 // hide and show proper buttons 3168 jQuery(".user_save").show(); 3169 jQuery(".image_td").css("display", "block");
3170 // display the users name on all tabs so we know who we are editing 3171 jQuery(".user_name_display").text(jQuery("#name-" + user_id).val()); 3172 3173 //jQuery("#user_id").val(user_id); 3174 3175 var image = jQuery("#image-" + user_id).val(); 3176 3177 if (image == "") { 3178 src = "https://s3.amazonaws.com/sdr_user_images/blank-profile-hi.png"; 3179 jQuery("#image_placeholder").attr("src", src); 3180 } else { 3181 src = 3182 "https://s3.amazonaws.com/sdr_user_images/" + 3183 user_id + 3184 "/180px/" + 3185 image; 3186 jQuery("#image_placeholder").attr("src", src); 3187 } 3188 3189 jQuery("#user_id").val(user_id); 3190 jQuery("#user_name").val(jQuery("#name-" + user_id).val()); 3191 jQuery("#user_email").val(jQuery("#email-" + user_id).val()); 3192 jQuery("#user_phone").val(jQuery("#phone-" + user_id).val()); 3193 jQuery("#user_mobile_phone").val( 3194 jQuery("#mobile_phone-" + user_id).val() 3195 ); 3196 jQuery("#user_mobile_carrier").val( 3197 jQuery("#mobile_carrier-" + user_id).val() 3198 ); 3199 jQuery("#user_pass").val(""); 3200 jQuery("#uploadContent").empty(); 3201 jQuery("#imageUpload_dealer_profile").empty(); 3202 3203 jQuery("#user_location_id").val( 3204 jQuery("#user_location_id-" + user_id).val() 3205 ); 3206 3207 // check the proper status box 3208 if (!jQuery("#status-" + user_id).val()) { 3209 var user_status = 0; 3210 } else { 3211 var user_status = jQuery("#status-" + user_id).val(); 3212 } 3213 jQuery("#user_status-" + user_status).prop("checked", true); 3214 3215 // check the proper status box 3216 if (!jQuery("#show_on_d360-" + user_id).val()) { 3217 var show_on_d360 = 0; 3218 } else { 3219 var show_on_d360 = jQuery("#show_on_d360-" + user_id).val(); 3220 } 3221 jQuery("#show_on_d360-" + show_on_d360).prop("checked", true); 3222 3223 var SDR_roles = jQuery("#user_SDR_roles-" + user_id) 3224 .val() 3225 .split(","); 3226 var SDR_access = jQuery("#user_SDR_access-" + user_id) 3227 .val() 3228 .split(","); 3229 3230 // uncheck all the checkboxes 3231 jQuery.each(jQuery(".roles_checkbox"), function () { 3232 //alert(role); 3233 jQuery(this).removeAttr("checked"); 3234 }); 3235 jQuery.each(jQuery(".access_checkbox"), function () { 3236 //alert(role); 3237 jQuery(this).removeAttr("checked"); 3238 }); 3239 3240 jQuery.each(SDR_roles, function (k, role) { 3241 //alert(role); 3242 jQuery("#SDR_role-" + role).prop("checked", true); 3243 }); 3244 3245 jQuery.each(SDR_access, function (k, access) { 3246 //alert(access); 3247 jQuery("#SDR_access-" + access).prop("checked", true); 3248 }); 3249 } //end else user id present 3250 } 3251 ); 3252 3253 /////////////////////////// 3254 //// when a role is checked we try to auto-populate the accesses to default permissions 3255 /////////////////////////// 3256 jQuery(".roles_checkbox:input").click(function () { 3257 //alert('role clicked'); 3258 // if this is checked 3259 if (jQuery(this).is(":checked")) { 3260 var role_id = jQuery(this).val(); 3261 // cycle through all the default access levels 3262 jQuery.each(roles_accesses, function (k, role) { 3263 //alert(k); 3264 //alert(access); 3265 if (role_id == role["role_id"]) { 3266 //alert(role['access_id']); 3267 jQuery("#SDR_access-" + role["access_id"]).attr("checked", "true"); 3268 //alert(jQuery("#SDR_access-"+role['access_id']).is(":checked")); 3269 } 3270 }); 3271 } 3272 }); 3273 3274 //// prelaunch 3275 // ajax url call needs to be folded into a global controller 3276 3277 /////////////////////////// 3278 //// when a locqtion is changed on the boat builder we need to update some fields 3279 /// Also possibly this will call the new boat builder margins? 3280 /////////////////////////// 3281 3282 jQuery(".location_changer").change(function () { 3283 // if this is a nap boat we don't allow anytihng to change 3284 if (!is_nap || is_nap == "0") { 3285 //update the value of location_id on the builder config margins form 3286 jQuery(".location_holder").val(jQuery(this).val()); 3287 3288 var location_id = jQuery(this).val(); 3289 var model_line = jQuery("#product_line_holder").val(); 3290 3291 var response = jQuery.ajax({ 3292 type: "POST", 3293 url: domain + "ajax/getBuilderConfigs.php", 3294 data: "location_id=" + location_id + "&model_line=" + model_line, 3295 3296 error: function () { 3297 alertResponse( 3298 "Cannot retrieve margins. For:" + jQuery(this).val() + response 3299 ); 3300 }, 3301 success: function (del) { 3302 // This empties the margins displayed and shows the new margins 3303 if (response.responseText) { 3304 //alert(response.text); 3305 // closes the loading wheel visual 3306 jQuery("#margins_div_holder").empty(); 3307 3308 jQuery("#margins_div_holder").append(response.responseText); 3309 3310 jQuery("#margin_base_boat-10").change(); 3311 } else { 3312 alertResponse(response); 3313 } 3314 }, 3315 }); 3316 return false;
3317 } // end if not nap 3318 }); 3319 3320 // when a location changer is available, let's change it just to make sure all data for this location is correct 3321 if (jQuery(".location_changer").length && is_boatbuilder != "1") { 3322 jQuery(".location_changer").change(); 3323 } 3324 3325 //////////////////////////////////////////////// 3326 //////////// This re-assigns a lead 3327 //////////////////////////////////////////////////////// 3328 3329 jQuery(".auto_lead_reassign").click(function () { 3330 var submitButton = jQuery(this); 3331 var btnText = jQuery(this).attr("value"); 3332 jQuery(submitButton).attr("value", " Re-assigning... "); 3333 jQuery(submitButton).attr("disabled", "disabled"); 3334 3335 var lead_id = jQuery(this).attr("lead_id"); 3336 3337 var zip = jQuery("#" + lead_id + " input[name=zip]").val(); 3338 var country = jQuery( 3339 "#" + lead_id + " select[name=country] option:selected" 3340 ).val(); 3341 3342 //alert(country); 3343 3344 var response = jQuery.ajax({ 3345 type: "POST", 3346 url: domain + "Leads.php?action=auto_lead_reassign", 3347 data: "lead_id=" + lead_id + "&zip=" + zip + "&country=" + country, 3348 error: function () { 3349 fail( 3350 "Lead has NOT been re-assigned. Please Contact an adminstrator.", 3351 lead_id 3352 ); 3353 alertResponse(response); 3354 }, 3355 success: function (del) { 3356 // if the response from the query == 1 (success) the success function is fired 3357 if (response.responseText == 0) { 3358 fail( 3359 "Lead has NOT been re-assigned. Please contact an administrator.", 3360 lead_id 3361 ); 3362 alertResponse(response); 3363 } 3364 // else success 3365 else { 3366 // sets buttons back enabled 3367 alert(response.responseText); 3368 success("Lead Re-Assigned Successfully.", lead_id); 3369 //alertResponse(response); 3370 3371 jQuery(submitButton).attr("value", btnText); 3372 jQuery(submitButton).removeAttr("disabled"); 3373 } 3374 }, 3375 }); 3376 3377 return false; 3378 }); 3379 3380 // prelaunch 3381 // ajax controller url/function needs to be migrated to base controller 3382 //////////////////////////////////////////////// 3383 //////////// This Gets a paginated list of quotes/builds 3384 //////////////////////////////////////////////////////// 3385 3386 //jQuery(".boat_builder_list_pager").on('click', 'a', function() { 3387 jQuery(".build_list_set").on("click", ".list_build_pager", function () { 3388 //jQuery(".boat_builder_list_pager a").live('click', function() { 3389 3390 //alert('clicked'); 3391 //return true; 3392 3393 var user_id = jQuery(this).parent().attr("user_id"); 3394 var rep_id = jQuery(this).parent().attr("rep_id"); 3395 var location_id = jQuery(this).parent().attr("location_id"); 3396 var build_type = jQuery(this).parent().attr("build_type"); 3397 var hide_branding = jQuery("#hide_branding").val(); 3398 var action = "list"; 3399 3400 var query_string = jQuery(this).attr("href").split("?"); 3401 3402 var next = query_string[1]; 3403 3404 var response = jQuery.ajax({ 3405 type: "POST", 3406 url: domain + "ajax/Boat-Builder-List.php", 3407 3408 data: 3409 next + 3410 "user_id=" + 3411 user_id + 3412 "&rep_id=" + 3413 rep_id + 3414 "&location_id=" + 3415 location_id + 3416 "&build_type=" + 3417 build_type + 3418 "&action=" + 3419 action + 3420 "&hide_branding=" + 3421 hide_branding, 3422 3423 error: function () { 3424 fail( 3425 "Lead has NOT been re-assigned. Please Contact an adminstrator.", 3426 lead_id 3427 ); 3428 alertResponse(response); 3429 }, 3430 success: function (del) { 3431 // if the response from the query == 1 (success) the success function is fired 3432 3433 if (response.responseText == 0) { 3434 fail( 3435 "Cannot retrieve builds. Please contact an administrator.", 3436 lead_id 3437 ); 3438 alertResponse(response); 3439 } 3440 // else success 3441 else { 3442 // sets buttons back enabled 3443 //alert(response.responseText); 3444 3445 jQuery("#" + build_type).empty(); 3446 jQuery("#" + build_type).append(response.responseText); 3447 } 3448 }, 3449 }); 3450 3451 return false;
3452 }); 3453 3454 jQuery(".pagination_container").on("click", ".list_pager", function (e) { 3455 e.preventDefault(); 3456 //alert("clicked"); 3457 //return true; 3458 3459 // loop through all attributes and store them as vars 3460 const element = jQuery(this).parent(); 3461 3462 var controller = ""; 3463 var action = ""; 3464 var content_container = ""; 3465 3466 //const attributes = element.attributes; 3467 var data = ""; 3468 jQuery.each(element[0].attributes, function (index, attr) { 3469 //alert(attr.name); 3470 console.log(attr); 3471 //attributes[attr.name] = attr.value; 3472 if (attr.name != "style") { 3473 data += attr.name + "=" + attr.value + "&"; 3474 if (attr.name == "controller") { 3475 controller = attr.value; 3476 //alert('cont here'+controller); 3477 } else if (attr.name == "action") { 3478 action = attr.value; 3479 } else if (attr.name == "content_container") { 3480 content_container = attr.value; 3481 } 3482 } 3483 }); 3484 3485 jQuery("#" + content_container).empty(); 3486 var query_string = jQuery(this).attr("href").split("?"); 3487 3488 var next = query_string[1]; 3489 3490 var response = jQuery.ajax({ 3491 type: "GET", 3492 url: controller + "?action=" + action, 3493 3494 data: data + "" + next, 3495 3496 error: function () { 3497 fail( 3498 "Pagination no work here no more. Please Contact an adminstrator.", 3499 lead_id 3500 ); 3501 alertResponse(response); 3502 }, 3503 success: function (del) { 3504 // if the response from the query == 1 (success) the success function is fired 3505 3506 if (response.responseText == 0) { 3507 fail( 3508 "Cannot retrieve data. Please contact an administrator.", 3509 lead_id 3510 ); 3511 alertResponse(response); 3512 } 3513 // else success 3514 else { 3515 // sets buttons back enabled 3516 //alert(response.responseText); 3517 3518 jQuery("#" + content_container).append(response.responseText); 3519 } 3520 }, 3521 }); 3522 3523 return false; 3524 }); 3525 3526 //////////////////////////////////////////////// 3527 //////////// This Gets a paginated list of part quotes/orders 3528 //////////////////////////////////////////////////////// 3529 3530 jQuery(".part_order_list_set").on( 3531 "click", 3532 ".list_part_order_pager", 3533 function (event) { 3534 //jQuery(".build_list_set").on('click', '.list_build_pager', function() { 3535 //event.preventDefault(); 3536 //alert('next'); 3537 //return true; 3538 3539 var user_id = jQuery(this).parent().attr("user_id"); 3540 var rep_id = jQuery(this).parent().attr("rep_id"); 3541 var location_id = jQuery(this).parent().attr("location_id"); 3542 var build_type = jQuery(this).parent().attr("build_type"); 3543 var hide_branding = jQuery("#hide_branding").val(); 3544 var action = "list_ajax"; 3545 3546 var query_string = jQuery(this).attr("href").split("?"); 3547 3548 var next = query_string[1]; 3549 3550 var response = jQuery.ajax({ 3551 type: "GET", 3552 url: domain + "Parts.php", 3553 3554 data: 3555 next + 3556 "user_id=" + 3557 user_id + 3558 "&rep_id=" + 3559 rep_id + 3560 "&location_id=" + 3561 location_id + 3562 "&build_type=" + 3563 build_type + 3564 "&action=" + 3565 action + 3566 "&hide_branding=" + 3567 hide_branding, 3568 3569 error: function () { 3570 //fail("pagination failed. Please Contact an adminstrator.", user_id); 3571 alertResponse("error"); 3572 return false; 3573 }, 3574 success: function (del) { 3575 // if the response from the query == 1 (success) the success function is fired 3576 if (response.responseText == 0) { 3577 //fail("Cannot retrieve orders. Please contact an administrator.",lead_id); 3578 alertResponse("cannot retrieve orders"); 3579 return false; 3580 } 3581 // else success 3582 else { 3583 // sets buttons back enabled 3584 //alert(response.responseText); 3585 3586 jQuery("#" + build_type).empty(); 3587 jQuery("#" + build_type).append(response.responseText); 3588 } 3589 }, 3590 }); 3591 3592 return false; 3593 } 3594 ); 3595 3596 // prelaunch 3597 // probably not necessary for this site 3598 //////////////////////////////////////////////// 3599 //////////// This Gets a paginated list of warranty claims 3600 //////////////////////////////////////////////////////// 3601 3602 jQuery(".warranty_claim_list_set").on( 3603 "click", 3604 ".list_warranty_claim_pager", 3605 function () { 3606 //jQuery(".build_list_set").on('click', '.list_build_pager', function() { 3607 3608 //alert('clicked'); 3609 //return true; 3610 3611 var user_id = jQuery(this).parent().attr("user_id"); 3612 var rep_id = jQuery(this).parent().attr("rep_id"); 3613 var location_id = jQuery(this).parent().attr("location_id"); 3614 var build_type = jQuery(this).parent().attr("build_type"); 3615 var hide_branding = jQuery("#hide_branding").val(); 3616 var action = "warranty_claims_ajax"; 3617 3618 var query_string = jQuery(this).attr("href").split("?"); 3619 3620 var next = query_string[1]; 3621 3622 var response = jQuery.ajax({ 3623 type: "POST", 3624 url: domain + "Warranty.php", 3625 3626 data: 3627 next + 3628 "user_id=" + 3629 user_id + 3630 "&rep_id=" + 3631 rep_id + 3632 "&location_id=" + 3633 location_id + 3634 "&build_type=" + 3635 build_type + 3636 "&action=" + 3637 action + 3638 "&hide_branding=" + 3639 hide_branding, 3640 3641 error: function () { 3642 fail( 3643 "Lead has NOT been re-assigned. Please Contact an adminstrator.", 3644 lead_id 3645 ); 3646 alertResponse(response); 3647 }, 3648 success: function (del) { 3649 // if the response from the query == 1 (success) the success function is fired 3650 if (response.responseText == 0) { 3651 fail( 3652 "Cannot retrieve orders. Please contact an administrator.", 3653 lead_id 3654 ); 3655 alertResponse(response); 3656 } 3657 // else success 3658 else { 3659 // sets buttons back enabled 3660 //alert(response.responseText); 3661 3662 jQuery("#" + build_type).empty(); 3663 jQuery("#" + build_type).append(response.responseText); 3664 } 3665 }, 3666 }); 3667 3668 return false;
3669 } 3670 ); 3671 3672 jQuery(".warranty_claim_ajax_container").on( 3673 "change", 3674 ".warranty_claim_cost", 3675 function () { 3676 alert("test test"); 3677 } 3678 ); // end 3679 3680 // prelaunch 3681 // necessary? / ryan code maybe? 3682 //Temporary 3D Builder Toggle Suppression Method 3683 3684 jQuery("a").on("click keydown", (e) => { 3685 let actionParam; 3686 let urlParams; 3687 let og_href; 3688 3689 if (jQuery(e.target).attr("href")) { 3690 og_href = jQuery(e.target).attr("href"); 3691 urlParams = new URLSearchParams(jQuery(e.target).attr("href")); 3692 actionParam = urlParams.get("action"); 3693 } else if (jQuery(e.target).parent().attr("href")) { 3694 og_href = jQuery(e.target).parent().attr("href"); 3695 urlParams = new URLSearchParams(jQuery(e.target).parent().attr("href")); 3696 actionParam = urlParams.get("action"); 3697 } 3698 3699 if (actionParam == "tab_boat_builder") { 3700 var builder_type = localStorage.getItem("configurator_preference"); 3701 3702 if (builder_type == "2D") { 3703 e.preventDefault(); 3704 window.location.replace(og_href + "&3d_config=false"); 3705 } else { 3706 return; 3707 } 3708 } 3709 }); 3710}); // end doc ready? 3711 3712jQuery(function () { 3713 jQuery(".dealer_locator_results_selector").submit(function (e) { 3714 //jQuery("body").delegate(".dealer_locator_results_selector form","submit",function(e){ 3715 // prevent form submit behavior 3716 e.preventDefault(); 3717 //alert('change'); 3718 jQuery(".ajax_dealer_locator").html("Searching..."); 3719 3720 // determine what element (based on id) to return the results to 3721 //alert(jQuery(this).attr("id")); 3722 var return_results_elem_id = jQuery( 3723 "#" + jQuery(this).attr("id") + " input[name=return_results_elem_id]" 3724 ).val(); 3725 //alert(return_results_elem_id); 3726 // fetch and serialize the form data 3727 var form_data = jQuery(jQuery(this)).serializeArray(); 3728 //console.log(form_data); 3729 var response = $.ajax({ 3730 type: "POST", 3731 url: "Yamaha-Dealer-Locator.php?action=dealer_locator_results_selector", 3732 data: form_data, 3733 error: function () { 3734 alert("Auto Locator is not working. Please contact SDR."); 3735 //alert(response.responseText); 3736 return false; 3737 }, 3738 success: function () { 3739 // remove the image table from the page 3740 //alert('success'); 3741 // update the record id field for this form 3742 if (return_results_elem_id) { 3743 jQuery("#" + return_results_elem_id).html(); 3744 jQuery("#" + return_results_elem_id).html(response.responseText); 3745 //return_results_elem_id.html(response.responseText); 3746 } 3747 jQuery(".ajax_dealer_locator").html("SEARCH"); 3748 return false; 3749 }, 3750 }); 3751 }); 3752}); 3753 3754jQuery(function () { 3755 jQuery("body").delegate(".dealership_selector", "click", function (e) { 3756 // set some display text 3757 document.getElementById("modal_dealer_name").innerHTML = 3758 jQuery(this).attr("dealerName"); 3759 // set a dealer number value to the confirm button which triggers the next step 3760 jQuery("#dealer_selector_confirm").attr( 3761 "dealerNumber", 3762 jQuery(this).attr("dealerNumber") 3763 ); 3764 jQuery("#dealer_selector_confirm").attr( 3765 "dealerName", 3766 jQuery(this).attr("dealerName") 3767 ); 3768 jQuery("#dealer_selector_confirm").attr( 3769 "dealerPhone", 3770 jQuery(this).attr("dealerPhone") 3771 ); 3772 jQuery("#dealer_selector_confirm").attr( 3773 "dealerAddress", 3774 jQuery(this).attr("dealerAddress") 3775 ); 3776 jQuery("#dealer_selector_confirm").attr( 3777 "dealerCityState", 3778 jQuery(this).attr("dealerCityState") 3779 ); 3780 3781 //alert(jQuery(this).attr('dealerNumber')); 3782 //alert(jQuery(this).attr('dealerName')); 3783 jQuery(".modal").show(); 3784 }); 3785}); 3786 3787jQuery(function () { 3788 jQuery("body").delegate(".dealer_selector_confirm", "click", function (e) { 3789 // set the dealerNumber in the reservation form 3790 jQuery("#dealerNumber").val(jQuery(this).attr("dealerNumber")); 3791 jQuery("#dealerNumber2").val(jQuery(this).attr("dealerNumber")); 3792 3793 // display the selected dealer info 3794 jQuery("#dealerName").html(jQuery(this).attr("dealerName")); 3795 jQuery("#dealerPhone").html(jQuery(this).attr("dealerPhone")); 3796 jQuery("#dealerAddress").html(jQuery(this).attr("dealerAddress")); 3797 jQuery("#dealerCityState").html(jQuery(this).attr("dealerCityState")); 3798 3799 //alert($(this).attr('id')); 3800 //alert('here'); 3801 $("#dealer_selection").hide(); 3802 $("#customer_info").show(); 3803 $("#payment_step").hide(); 3804 $(".modal").hide(); 3805 }); 3806}); 3807 3808// this is for sps when a customer comes in from a waitlit email link. 3809// they do not input customer info as it is already in the system 3810jQuery(function () { 3811 jQuery("body").delegate( 3812 ".dealer_selector_confirm_waitlist", 3813 "click", 3814 function (e) { 3815 // set the dealerNumber in the reservation form 3816 jQuery("#dealerNumber").val(jQuery(this).attr("dealerNumber")); 3817 jQuery("#dealerNumber2").val(jQuery(this).attr("dealerNumber")); 3818 3819 // trigger a reservation save so dealernumber is saved with the reservation 3820 jQuery("#dealerNumber").trigger("change"); 3821 3822 // trigger load payment form 3823 // this is done first so hopefully it will be completed by the time we show the iframe parent page 3824 //loadPaymentForm("form_reservation"); 3825 3826 // display the selected dealer info 3827 jQuery("#dealerName").html(jQuery(this).attr("dealerName")); 3828 jQuery("#dealerPhone").html(jQuery(this).attr("dealerPhone")); 3829 jQuery("#dealerAddress").html(jQuery(this).attr("dealerAddress")); 3830 jQuery("#dealerCityState").html(jQuery(this).attr("dealerCityState")); 3831 3832 //alert($(this).attr('id')); 3833 //alert('here'); 3834 $("#dealer_selection").hide(); 3835 $("#customer_info").show(); 3836 $("#payment_step").hide(); 3837 $(".modal").hide(); 3838 3839 // show payment section 3840 //jQuery("#payment_step").show(); 3841 } 3842 ); 3843}); 3844 3845// this function takes in zip code and returns a list of dealer inventory items 3846jQuery(function () { 3847 jQuery(".dealer_inventory_locator").submit(function (e) { 3848 //jQuery("body").delegate(".dealer_locator_results_selector form","submit",function(e){ 3849 // prevent form submit behavior 3850 e.preventDefault(); 3851 //alert('change'); 3852 jQuery(".ajax_inventory_locator").html("Searching..."); 3853 console.log( 3854 "host: " + 3855 window.location.host + 3856 "/Dealer-Inventory.php?action=ajax_dealer_inventory_search" 3857 ); 3858 // determine what element (based on id) to return the results to 3859 //alert(jQuery(this).attr("id")); 3860 var return_results_elem_id = jQuery( 3861 "#" + jQuery(this).attr("id") + " input[name=return_results_elem_id]" 3862 ).val(); 3863 var container_id_to_show = jQuery( 3864 "#" + jQuery(this).attr("id") + " input[name=container_id_to_show]" 3865 ).val(); 3866 var container_id_to_hide = jQuery( 3867 "#" + jQuery(this).attr("id") + " input[name=container_id_to_hide]" 3868 ).val(); 3869 3870 //alert(return_results_elem_id); 3871 // fetch and serialize the form data 3872 var form_data = jQuery(jQuery(this)).serializeArray(); 3873 //console.log(form_data); 3874 var response = $.ajax({ 3875 type: "POST", 3876 url: 3877 "https://" + 3878 window.location.host + 3879 "/Dealer-Inventory.php?action=ajax_dealer_inventory_search", 3880 data: form_data, 3881 error: function () { 3882 alert("Inventory search is not working. Please check back later."); 3883 //alert(response.responseText); 3884 return false;
3885 }, 3886 success: function (data) { 3887 const responseData = JSON.parse(data); 3888 // update the record id field for this form 3889 if (return_results_elem_id) { 3890 jQuery("#" + container_id_to_hide).hide(); 3891 jQuery("#" + return_results_elem_id).html(); 3892 jQuery("#" + return_results_elem_id).html(responseData.html); 3893 jQuery("#" + container_id_to_show).show(); 3894 } 3895 3896 // Set Assigned Dealer Cookie 3897 if (responseData.dealer) { 3898 document.cookie = `assigned_dealer_number=${responseData.dealer}; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/`; 3899 } 3900 3901 jQuery(".ajax_inventory_locator").html("SEARCH"); 3902 return false; 3903 }, 3904 }); 3905 }); 3906}); 3907 3908// sps continue button 3909// validates form 3910// calls for payment form 3911jQuery(function () { 3912 jQuery("body").delegate( 3913 "#form_reservation_no_validate", 3914 "submit", 3915 function (event) { 3916 event.preventDefault(); 3917 3918 var form = jQuery(this.form); 3919 3920 var reservation_form_validated = 1; 3921 3922 if (!jQuery("#consent").val()) { 3923 jQuery("#form_validate_consent").css("display", "block"); 3924 reservation_form_validated = 0; 3925 } 3926 3927 if (reservation_form_validated) { 3928 // trigger load payment form 3929 // this is done first so hopefully it will be completed by the time we show the iframe parent page 3930 loadPaymentForm("form_reservation_no_validate"); 3931 3932 //alert('saving'); 3933 // if successfully validated we hide the customer info form 3934 3935 $("#dealer_selection").hide(); 3936 $("#customer_info").hide(); 3937 $("#payment_step").show(); 3938 $(".modal").hide(); 3939 } 3940 } 3941 ); 3942}); 3943 3944// sps continue button 3945// validates form 3946// calls for payment form 3947jQuery(function () { 3948 jQuery("body").delegate("#form_reservation", "submit", function (event) { 3949 event.preventDefault(); 3950 3951 var form = jQuery(this.form); 3952 3953 var reservation_form_validated = 1; 3954 if (!jQuery("#firstName").val()) { 3955 jQuery("#form_validate_firstName").css("display", "block"); 3956 reservation_form_validated = 0; 3957 } 3958 3959 if (!jQuery("#lastName").val()) { 3960 jQuery("#form_validate_lastName").css("display", "block"); 3961 reservation_form_validated = 0; 3962 } 3963 3964 if (!jQuery("#address1").val()) { 3965 jQuery("#form_validate_address1").css("display", "block"); 3966 reservation_form_validated = 0; 3967 } 3968 3969 if (!jQuery("#city").val()) { 3970 jQuery("#form_validate_city").css("display", "block"); 3971 reservation_form_validated = 0; 3972 } 3973 3974 if (!jQuery("#customerPhone").val()) { 3975 jQuery("#form_validate_customerPhone").css("display", "block"); 3976 reservation_form_validated = 0; 3977 } 3978 // clean the phone number of string characters and check phone number length 3979 else if (jQuery("#customerPhone").val().replace(/\D/g, "").length != 10) { 3980 jQuery("#form_validate_customerPhoneLength").css("display", "block"); 3981 reservation_form_validated = 0; 3982 } 3983 3984 if (!jQuery("#state").val()) { 3985 jQuery("#form_validate_state").css("display", "block"); 3986 reservation_form_validated = 0; 3987 } 3988 3989 if (!jQuery("#zipCode").val()) { 3990 jQuery("#form_validate_zipCode").css("display", "block"); 3991 reservation_form_validated = 0; 3992 } else if (jQuery("#zipCode").val().replace(/\D/g, "").length != 5) { 3993 jQuery("#form_validate_zipCodeLength").css("display", "block"); 3994 reservation_form_validated = 0; 3995 } 3996 3997 if (!jQuery("#email").val()) { 3998 jQuery("#form_validate_email").css("display", "block"); 3999 reservation_form_validated = 0; 4000 } 4001 if (!jQuery("#consent").val()) { 4002 jQuery("#form_validate_consent").css("display", "block"); 4003 reservation_form_validated = 0; 4004 } 4005 4006 if (reservation_form_validated) { 4007 //alert('saving'); 4008 // if successfully validated we hide the customer info form 4009 jQuery("#form_reservation").hide(); 4010 4011 var form_id = jQuery(this).attr("id"); 4012 4013 // submit the reservation form 4014 var record_id_field_name = jQuery(this) 4015 .find("input[name=record_id_field]") 4016 .val(); 4017 4018 if (record_id_field_name) { 4019 //var record_id_field = jQuery("#"+jQuery(this.form).attr("id")+" input[name="+record_id_field_name+"]"); 4020 var record_id_field = jQuery(this).find( 4021 "input[name=" + record_id_field_name + "]" 4022 ); 4023 } 4024 4025 // fetch and serialize the form data 4026 //var form_data = jQuery(jQuery(this.form)).serializeArray(); 4027 //console.log(form_data); 4028 var form_data = jQuery(jQuery(this)).serializeArray(); 4029 4030 var response = $.ajax({ 4031 type: "POST", 4032 url: controller_url + "?action=ajax_form_save", 4033 data: form_data, 4034 error: function () { 4035 alert("Auto Save is not working. Please contact SDR."); 4036 alert(response.responseText); 4037 }, 4038 success: function () { 4039 // remove the image table from the page 4040 //alert('success');
4041 // update the record id field for this form 4042 record_id_field.val(response.responseText); 4043 4044 // trigger load payment form 4045 loadPaymentForm(form_id); 4046 // show payment section 4047 jQuery("#payment_step").show(); 4048 4049 //jQuery('.ajax_save_button').html("Saved"); 4050 return false; 4051 }, 4052 }); 4053 } 4054 }); 4055}); 4056 4057jQuery(document).ready(function () { 4058 jQuery("body").on("click", ".set_home_dealer", function (e) { 4059 e.preventDefault(); 4060 var current_button_text = jQuery(this).html(); 4061 var assigned_dealer_number = jQuery(this).attr("dealerNumber"); 4062 4063 if (jQuery(this).attr("isSnowmobileDlr") == 1) { 4064 document.cookie = 4065 "snowmobile_dlr=" + 4066 assigned_dealer_number + 4067 "; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/"; 4068 } 4069 if (jQuery(this).attr("isSideBySideDlr") == 1) { 4070 document.cookie = 4071 "side_by_side_dlr=" + 4072 assigned_dealer_number + 4073 "; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/"; 4074 } 4075 if (jQuery(this).attr("isConsumerGeneratorDlr") == 1) { 4076 document.cookie = 4077 "consumer_generator_dlr=" + 4078 assigned_dealer_number + 4079 "; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/"; 4080 } 4081 if (jQuery(this).attr("isATVDlr") == 1) { 4082 document.cookie = 4083 "atv_dlr=" + 4084 assigned_dealer_number + 4085 "; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/"; 4086 } 4087 if (jQuery(this).attr("isMotorcycleDlr") == 1) { 4088 document.cookie = 4089 "motorcycle_dlr=" + 4090 assigned_dealer_number + 4091 "; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/"; 4092 } 4093 if (jQuery(this).attr("isScooterDlr") == 1) { 4094 document.cookie = 4095 "scooter_dlr=" + 4096 assigned_dealer_number + 4097 "; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/"; 4098 } 4099 4100 document.cookie = 4101 "assigned_dealer_number=" + 4102 assigned_dealer_number + 4103 "; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/"; 4104 4105 // loop through all other .set_home_dealer buttons and set them back to the default value 4106 jQuery(".set_home_dealer").each(function (i, obj) { 4107 jQuery(this).html(current_button_text); 4108 }); 4109 4110 jQuery(this).empty(); 4111 jQuery(this).html("IS MY HOME DEALER"); 4112 }); 4113}); 4114 4115//jQuery(function(){ 4116// jQuery("body").delegate(".load_payment_form","click",function(e){ 4117function loadPaymentForm(form_id) { 4118 //alert(form_id); 4119 // hide the payment info form 4120 jQuery("#customer_info").hide(); 4121 4122 // send the entire form to the payment_gateway controller 4123 4124 // response will be html code containing iframe 4125 //alert('change'); 4126 4127 // fetch and serialize the form data 4128 var form_data = jQuery("#" + form_id).serializeArray(); 4129 4130 var response = $.ajax({ 4131 type: "POST", 4132 url: "Payment-Gateway.php?action=get_payment_form", 4133 data: form_data, 4134 error: function () { 4135 alert("Payment Gateway not responding. Please try later."); 4136 //alert(response.responseText); 4137 }, 4138 success: function () { 4139 // remove the image table from the page 4140 //alert('success'); 4141 // update the record id field for this form 4142 4143 jQuery("#payment_form_holder").html(response.responseText); 4144 jQuery("#dealer_selection").hide(); 4145 4146 jQuery("#payment_step").show(); 4147 //jQuery('.ajax_save_button').html("Saved"); 4148 return false; 4149 }, 4150 }); 4151 4152 // set the dealerNumber in the reservation form 4153 4154 // }); 4155 //}); 4156} // end loadPaymentForm 4157 4158jQuery(function () { 4159 jQuery("body").delegate(".load_payment_form", "click", function (e) { 4160 //function loadPaymentForm(form){ 4161 4162 // hide the payment info form 4163 jQuery("#customer_info").hide(); 4164 4165 // send the entire form to the payment_gateway controller 4166 4167 // response will be html code containing iframe 4168 //alert('change'); 4169 4170 // fetch and serialize the form data 4171 var form_data = jQuery(form).serializeArray(); 4172 4173 var response = $.ajax({ 4174 type: "POST", 4175 url: "Payment-Gateway.php?action=get_payment_form", 4176 data: form_data, 4177 error: function () { 4178 alert("Payment Gateway not responding. Please try later."); 4179 //alert(response.responseText); 4180 }, 4181 success: function () { 4182 // remove the image table from the page 4183 //alert('success');
4184 // update the record id field for this form 4185 4186 jQuery("#payment_form_holder").html(response.responseText); 4187 jQuery("#dealer_selection").hide(); 4188 4189 jQuery("#payment_step").show(); 4190 //jQuery('.ajax_save_button').html("Saved"); 4191 return false; 4192 }, 4193 }); 4194 4195 // set the dealerNumber in the reservation form 4196 }); 4197}); 4198//}// end loadPaymentForm 4199 4200jQuery(function () { 4201 jQuery("body").delegate(".send_waitlist_email", "click", function (e) { 4202 // send the entire form to the payment_gateway controller 4203 4204 // response will be html code containing iframe 4205 //alert('change'); 4206 4207 // fetch and serialize the form data 4208 var form_data = jQuery(jQuery(this.form)).serializeArray(); 4209 4210 var response = $.ajax({ 4211 type: "POST", 4212 url: "models.php?action=ajax_send_waitlist_email", 4213 data: form_data, 4214 error: function () { 4215 alert("Email System not responding. Please try later."); 4216 //alert(response.responseText); 4217 }, 4218 success: function () { 4219 // remove the image table from the page 4220 console.log("waitlist email sent"); 4221 // update the record id field for this form 4222 4223 //jQuery('.ajax_save_button').html("Saved"); 4224 return false; 4225 }, 4226 }); 4227 4228 // set the dealerNumber in the reservation form 4229 }); 4230}); 4231 4232jQuery(function () { 4233 jQuery("body").delegate( 4234 ".send_waitlist_registration_email", 4235 "click", 4236 function (e) { 4237 // send the entire form to the payment_gateway controller 4238 var this_button = jQuery(this); 4239 this_button.empty().html("Sending Email..."); 4240 4241 // response will be html code containing iframe 4242 //alert('change'); 4243 4244 // fetch and serialize the form data 4245 var form_data = jQuery(jQuery(this.form)).serializeArray(); 4246 4247 var response = $.ajax({ 4248 type: "POST", 4249 url: "models.php?action=ajax_send_waitlist_registration_email&dev_sps=1", 4250 data: form_data, 4251 error: function () { 4252 alert("Email System not responding. Please try later."); 4253 //alert(response.responseText); 4254 }, 4255 success: function () { 4256 // remove the image table from the page 4257 console.log("waitlist registration email sent"); 4258 this_button.empty().html("Email Sent"); 4259 4260 //jQuery('.ajax_save_button').html("Saved"); 4261 return false; 4262 }, 4263 }); 4264 4265 // set the dealerNumber in the reservation form 4266 } 4267 ); 4268}); 4269 4270// Global Assigned Dealer Check - Currently For /models.php?action=search_inventory 4271$(function () { 4272 const assignedDealer = getCookieValue("assigned_dealer_number"); 4273 4274 // Check If Current Page Is Search Inventory - Assign Dealer Number From URL Param 4275 if ( 4276 !assignedDealer && 4277 window.location.href.includes("models.php?action=search_inventory") 4278 ) { 4279 const params = new URLSearchParams(window.location.href.split("?")[1]); 4280 const dealerNumber = params.get("mfg_dealer_number"); 4281 if (dealerNumber) { 4282 document.cookie = `assigned_dealer_number=${dealerNumber}; expires=Tue, 19 Jan 2038 04:14:07 GMT; path=/`; 4283 } 4284 } 4285});
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.