PageSourceSearch

https://yamahabicycles.com/scripts/general_2023.js?v=1790287623

js yamahabicycles.com collected 2026-09-24 22:07:15 UTC 126,068 bytes, 4,105 lines download raw bytes

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(/%/,"&#37;");
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 + "&degrees=" + 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 + "&degrees=" + 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 + "&degrees="+ degrees + "&folderID="+ userID,
2348		
2349		error: function(){alert("image not rotated, please contact administrator");
2350			alertResponse(response);
2351			alert("name=" + file + "&degrees="+ 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.