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