PageSourceSearch

https://satruck.org/scripts/devnext.satruck.account.workflow.js?t=134347155875283972

js satruck.org collected 2026-09-24 09:27:07 UTC 46,767 bytes, 1,025 lines download raw bytes

1satruck.workflow = 
2{
3
4	initControls: function()
5	{
6		$donorPanels = $('#donor-account-question-form, #donor-login-form, #donor-lookup-form, #donor-info-form, #donor-update-form, #donor-chooser-form, #donor-submit');
7	},
8
9	pushToWip: function(step, message, wip)
10	{
11
12		if(!wip) {
13			var wip = satruck.config._loadWorkflowData();
14		}
15		wip.stepDetails.push({ step: step, stepData: message, timestamp: DN.Utils.CurrentTime() });
16		satruck.config._persistWorkflowData(wip);
17	},
18
19	switchWorkflowStep: function(element, step, message)
20	{
21		$donorPanels = $('#donor-account-question-form, #donor-login-form, #donor-lookup-form, #donor-info-form, #donor-update-form, #donor-chooser-form, #donor-submit');
22		var $activePanel = element;
23
24		DN.Utils.ScrollToTop(500);
25		$donorPanels.hide();
26		$activePanel.show().find('input[type="text"]').first().focus();
27
28		satruck.workflow.pushToWip(step, message);
29	},
30
31	loadDonorQuestion: function()
32	{
33		var $active = $("#donor-account-question-form");
34		satruck.workflow.switchWorkflowStep($active, 3, "donor account question")
35	},
36
37	loadDonorLogin: function()
38	{
39		var $active = $("#donor-login-form, #donor-submit");
40		satruck.workflow.switchWorkflowStep($active, 3, "donor login")
41		DN.Validation.checkPassword('#donor-password');
42	},
43
44	loadDonorLookup: function()
45	{
46		var $active = $("#donor-lookup-form, #donor-submit");
47		var wip = satruck.config._loadWorkflowData();
48
49		satruck.workflow.switchWorkflowStep($active, 3, "donor account look up");
50		satruck.workflow.fillDonorCityStateZip(wip);
51		DN.Validation.checkPassword('#donor-password');
52		if (!wip.donation.donor)
53		{			
54			if (satruck.account.is_logged_in() && satruck.account.is_profile_complete())
55			{
56				var user = satruck.account._loadUser(true);
57				wip.donation.donor = user;
58
59				satruck.workflow.pushToWip(3, "donor pre-loaded from login", wip);
60
61				$("#donor-lookup-form").hide();
62				$("#donor-info-form, #donor-submit").show();
63				DN.Validation.checkPassword('#donor-info-password');
64				satruck.workflow.fillDonorForm(wip);
65			}
66		}
67		else if (wip.donation.donor)
68		{
69			satruck.account._persistUser(wip.donation.donor, false, false, function(apiResult)
70			{
71				DN.Utils.log(apiResult);
72			});
73			$('#donor-submit').show();
74		}
75	},
76
77	loadDonorChooser: function(profiles, isRegisterResult, password)
78	{
79		var $active = $("#donor-chooser-form");
80
81		satruck.workflow.switchWorkflowStep($active, 3, "donor chooser");
82
83		isRegisterResult = isRegisterResult && isRegisterResult === true;
84
85		$('#donor-chooser-match-container').html('');
86
87		if (profiles.length > 0)
88		{
89			$.each(profiles, function(i, profile)
90			{
91				$('#donor-chooser-match-container').append('<p class="flyout-address" data-did=' + profile.Donor_id + '>' + profile.FirstName + ' at ' + profile.AddressLine1 + '<a class="flyout-address-select">Select</a></p>');
92			});
93
94			$('#donor-chooser-match-container .flyout-address').on('click', function(e)
95			{
96				var self = this;
97
98				var wip = satruck.config._loadWorkflowData();
99				if (!wip.donation.donor) { wip.donation.donor = $.extend({}, satruck.donor.default); }
100				satruck.config._persistWorkflowData(wip);
101
102				var p = $.grep(profiles, function(e) { return e.Donor_id == $(self).data('did'); })[0];
103				if (p != null)
104				{
105					var wip = satruck.config._loadWorkflowData();
106
107					if (isRegisterResult)
108					{
109						wip.donation.did = p.Donor_id;
110						wip.donation.donor.Donor_id = p.Donor_id;
111						satruck.config._persistWorkflowData(wip);
112
113						satruck.account._registerUserInWorkflow(wip.donation.donor, password, false, function(apiResult)
114						{
115
116							var retVal = apiResult.RetVal;
117							if (apiResult.Success && retVal.DonorUserId && retVal.ExistingAccount == false)
118							{
119								var donor = retVal.DonorInfo;
120								donor.DonorUserId = apiResult.RetVal.DonorUserId;
121
122								var wip = satruck.config._loadWorkflowData();
123								wip.donation.did = donor.Donor_id;
124								wip.donation.donor.DonorGuid = donor.DonorGuid;
125								wip.donation.donor.DonorUserId = donor.DonorUserId;
126								wip.donation.donor.Donor_id = donor.Donor_id;
127								wip.donation.donor.Arc_id = donor.Arc_id;
128								wip.donation.donor.Territory_id = donor.Territory_id;
129
130								satruck.workflow.pushToWip(3, "Donor match success: " + wip.tid + "|" + wip.donation.aid + "|" + wip.donation.did, wip);
131
132								satruck.workflow.pickupComplete();
133							}
134							else if (apiResult.Success && retVal.ExistingAccount == true)
135							{
136								DN.Utils.ShowError("You already have an account registered for that email. Please log in.");
137								satruck.workflow.loadDonorLogin();
138							}
139							else
140							{
141								DN.Utils.ShowError("An error has occurred. Please try again.");
142							}
143						});
144					}
145					else
146					{
147						wip.tid = p.Territory_id;
148						wip.aid = p.Arc_id;
149						wip.zip = p.ZipCode;
150						wip.donation.did = p.Donor_id;
151						wip.donation.donor.Donor_id = p.Donor_id;
152						wip.donation.donor.Territory_id = p.Territory_id;
153						wip.donation.donor.Arc_id = p.Arc_id;
154						wip.donation.donor.FirstName = p.FirstName;
155						wip.donation.donor.LastName = p.LastName;
156						wip.donation.donor.HomePhone = p.HomePhone;
157						wip.donation.donor.DayPhone = p.DayPhone;
158						wip.donation.donor.AddressLine1 = p.AddressLine1;
159						wip.donation.donor.AddressLine2 = p.AddressLine2;
160						wip.donation.donor.City = p.City;
161						wip.donation.donor.State = p.State;
162						wip.donation.donor.ZipCode = p.ZipCode;
163						//wip.donation.donor.CrossStreet = p.CrossStreet;
164						wip.donation.donor.OtherInformation = p.OtherInfo;
165						wip.donation.donor.Email = p.Email;
166						wip.donation.donor.IsBusiness = p.IsBusiness;
167						wip.donation.donor.NoSolicitation = p.NoSolicitation;
168						wip.donation.donor.NoServiceReminders = p.NoServiceReminders;
169						wip.donation.donor.DoNotEmailSolicitation = p.DoNotEmailSolicitation;
170						wip.donation.donor.DoNotCallSolicitation = p.DoNotCallSolicitation;
171						wip.donation.donor.DoNotTextSolicitation = p.DoNotTextSolicitation;
172						wip.donation.donor.DoNotEmailServiceReminders = p.DoNotEmailServiceReminders;
173						wip.donation.donor.DoNotCallServiceReminders = p.DoNotCallServiceReminders;
174						wip.donation.donor.DoNotTextServiceReminders = p.DoNotTextServiceReminders;
175						wip.donation.donor.DonorGuid = p.DonorGuid;
176						satruck.config._persistWorkflowData(wip);
177
178						satruck.workflow.loadDonorInfo();
179					}
180				}
181				else
182				{
183					DN.Utils.ShowError("An error has occurred. Please try again.");
184				}
185			});
186
187			$('#donor-chooser-none').on('click', function(e)
188			{
189				var wip = satruck.config._loadWorkflowData();
190				
191
192				if (isRegisterResult)
193				{
194					satruck.account._registerUserInWorkflow(wip.donation.donor, password, false, function(apiResult)
195					{
196						var retVal = apiResult.RetVal;
197						if (apiResult.Success && retVal.DonorUserId && retVal.ExistingAccount == false)
198						{
199							var donor = retVal.DonorInfo;
200							donor.DonorUserId = apiResult.RetVal.DonorUserId;
201
202							if (!wip.donation.donor) { wip.donation.donor = $.extend({}, satruck.donor.default); }
203							wip.donation.did = donor.Donor_id;
204							wip.donation.donor.DonorGuid = donor.DonorGuid;
205							wip.donation.donor.DonorUserId = donor.DonorUserId;
206							wip.donation.donor.Donor_id = donor.Donor_id;
207							wip.donation.donor.Arc_id = donor.Arc_id;
208							wip.donation.donor.Territory_id = donor.Territory_id;
209							wip.stepDetails.push({ step: 3, stepData: "Donor match success: " + wip.tid + "|" + wip.donation.aid + "|" + wip.donation.did, timestamp: UTC_TIMESTAMP });
210							satruck.config._persistWorkflowData(wip);
211
212							satruck.controller.pickup.pickupComplete();
213						}
214						else if (apiResult.Success && retVal.ExistingAccount == true)
215						{
216							DN.Utils.ShowError("You already have an account registered for that email. Please log in.");
217							satruck.controller.pickup.loadDonorLogin();
218						}
219						else
220						{
221							DN.Utils.ShowMessage('An error has occurred. Please try again or <a href="#" class="contact-dialog-open">contact us</a> for help.', '', true);
222						}
223					});
224				}
225				else
226				{
227					satruck.workflow.noMatchingDonors(wip);
228				}
229			});
230		}
231		else
232		{
233			$('#donor-chooser-match-container').html('<p>No matches found</p>');
234		}
235	},
236
237	loadDonorInfo: function(update)
238	{
239		if(update !== null && update == true) {
240			var $active = $("#donor-update-form, #donor-submit");
241		} else {
242			var $active = $("#donor-info-form, #donor-submit");
243		}
244		
245		satruck.workflow.switchWorkflowStep($active, 3, "donor account info");
246		DN.Validation.checkPassword('#donor-info-password');
247		
248		//if the donor information is existing then fill donor info form
249		var wip = satruck.config._loadWorkflowData();
250		if (wip.donation.donor && !wip.donation.donor.IsPartnerUser)
251		{
252			satruck.workflow.pushToWip(3, "donor pre-loaded");
253			satruck.workflow.fillDonorForm(wip);
254			satruck.workflow.fillDonorCityStateZip(wip);
255		}
256		else
257		{
258		    satruck.workflow.fillDonorCityStateZip(wip);
259		    if (satruck.account.is_logged_in())
260		    {
261		        var DonorLogin = satruck.config._getDonorLogin();
262		        if (DonorLogin.Latitude == 0 ||
263                    DonorLogin.Longitude == 0)
264		        {
265		            $('#donor-update-form p').html('We were unable to geocode your location, please input your street address below.');
266		            $('.donor-update-form-phone #donor-dayphone').val(DonorLogin.HomePhone);
267		            $('.donor-update-form-phone').addClass('hidden');
268					$('.donor-update-form-street2').addClass('hidden');		 
269					
270		        }
271			}
272		}
273	},
274
275	doDonorLookup: function()
276	{
277		var wip = satruck.config._loadWorkflowData();
278
279		$('div').removeClass("has-error has-feedback");
280
281		wip.donation.phone = $("#donor-phone").val();
282		wip.donation.lastName = $("#donor-name").val().trim();
283		wip.donation.zip = $('#donor-zip').val();
284		
285		$("input[name*='ajax_donor_homephone']").val(DN.Validation.formatPhone(wip.donation.phone));
286		$("input[name*='ajax_donor_lastname']").val(wip.donation.lastName);
287		$("input[name*='ajax_donor_zip']").val(wip.donation.zip);
288
289	    //Tealium
290		utag_data.ajax_donor_lastname = wip.donation.lastName;
291		utag_data.ajax_donor_homephone = DN.Validation.formatPhone(wip.donation.phone);
292		utag_data.ajax_donor_lastname = wip.donation.zip;
293	    //New Tealium Tags
294		utag_data.site_section = "Account";
295		utag_data.site_type = "ARC";
296		utag_data.login_status = "Not Logged In";
297
298		//Reformat
299		wip.donation.phone = DN.Validation.unFormatPhone(wip.donation.phone);
300		$("#donor-phone").val(DN.Validation.formatPhone(wip.donation.phone));
301
302		satruck.workflow.pushToWip(3, "Donor Lookup Started", wip);
303		satruck.workflow.pushToWip(3, "homephone:"+ wip.donation.phone, wip);
304		satruck.workflow.pushToWip(3, "lastname:"+ wip.donation.lastName, wip);
305		satruck.workflow.pushToWip(3, "zip:"+ wip.donation.zip, wip);
306			
307		//load busy
308		$('body').addClass('loading');
309		
310		satruck.api.GetDonors
311		(
312			wip.tid, 
313			wip.donation.aid, 
314			wip.zip, 
315			wip.donation.phone,
316			wip.donation.lastName, 
317			wip.donation.zip,
318			function(apiResult)
319			{
320				$('body').removeClass('loading');
321				
322				if (apiResult && apiResult.Success == true)
323				{
324					var donors = apiResult.RetVal;
325					var wip = satruck.config._loadWorkflowData();
326
327					DN.Validation.checkPassword('#donor-info-password');
328
329					if (donors != null && donors.length == 1)
330					{
331						$("#donor-account-question-form").hide()
332						$("#donor-login-form").hide()
333						$("#donor-lookup-form").hide();
334						$("#donor-info-form").show();
335
336						var donor = donors[0];
337
338						if (donor.Donor_id > 0)
339						{
340							wip.donation.donor = donor;
341							wip.donation.did = donor.Donor_id;
342
343							satruck.workflow.pushToWip(3, "Donor Found: " + wip.tid + "|" + wip.donation.aid + "|" + wip.donation.did, wip);
344							satruck.workflow.fillDonorForm(wip);
345						}
346						else
347						{
348							DN.Utils.ShowMessage("No matching donors were found.", "No Matching Donors", true);
349							satruck.workflow.noMatchingDonors(wip);
350						}
351					}
352					else if (donors != null && donors.length > 1)
353					{
354						satruck.workflow.loadDonorChooser(donors);
355					}
356					else
357					{
358						DN.Utils.ShowMessage("No matching donors were found.", "No Matching Donors", true);
359						satruck.workflow.noMatchingDonors(wip);
360					}
361				}
362				else 
363				{
364					wip.hasErrors = true;
365					satruck.workflow.pushToWip(3,  "err:"+apiResult.ErrorMessage + ";terminate: aborted failed workflow", wip);
366					satruck.api.SubmitWorkflowData(wip);
367					DN.Utils.ShowError(apiResult.ErrorMessage);
368				}
369			}
370		);				
371	},
372	initializePrivacySettings: function () {
373		if (!satruck.donorExperienceEnabled) {
374			//remove sms options because DX is not enabled
375			$('option[id$="-sms"]').remove();
376		}
377		//privacy settings
378		$('#donor-noservicereminders-select').multiselect({
379			columns: 1,
380			noneSelectedText: 'Select Contact Methods',
381			selectAll: true,
382			buttonWidth: 'auto',
383			menuWidth: '80%',
384			classes: 'donor-input privacy-settings-select',
385			selectedList: 3,
386			header: false
387		});
388
389		$('#donor-nosolicitation-select').multiselect({
390			columns: 1,
391			noneSelectedText: 'Select Contact Methods',
392			selectAll: true,
393			buttonWidth: 'auto',
394			menuWidth: '80%',
395			classes: 'donor-input privacy-settings-select',
396			selectedList: 3,
397			header: false
398		});
399
400		//checkbox logic
401		$('input#donor-noservicereminders').on('click', function (e) {
402			if (e.currentTarget.checked) {
403				$('#donor-noservicereminders-select_ms').show();
404				$('#donor-noservicereminders-select').multiselect('checkAll');
405			} else {
406				$('#donor-noservicereminders-select_ms').hide();
407				$('#donor-noservicereminders-select').multiselect('uncheckAll');
408			}
409		});
410		$('input#donor-nosolicitation').on('click', function (e) {
411			if (e.currentTarget.checked) {
412				$('#donor-nosolicitation-select_ms').show();
413				$('#donor-nosolicitation-select').multiselect('checkAll');
414			} else {
415				$('#donor-nosolicitation-select_ms').hide();
416				$('#donor-nosolicitation-select').multiselect('uncheckAll');
417			}
418		});
419		$('.privacy-settings-select input').on('click', function (e) {
420			checkSiblings(e)
421		})
422
423		function checkSiblings(e) {
424			var siblings = $(e.currentTarget).parents('li').siblings().children().children('input');
425			var checkboxStates = e.currentTarget.checked;
426			for (i = 0; i < siblings.length; i++) {
427				if (!checkboxStates && siblings[i].checked) {
428					checkboxStates = true;
429				}
430			}
431			if (!checkboxStates) {
432				//hide the select box
433				if (e.currentTarget.id.match('nosolicitation') != null) {
434					$('input#donor-nosolicitation').prop('checked', false);
435					$('#donor-nosolicitation-select_ms').hide();
436					$('#donor-nosolicitation-select').multiselect('close');
437				} else if (e.currentTarget.id.match('noservicereminders') != null) {
438					$('input#donor-noservicereminders').prop('checked', false);
439					$('#donor-noservicereminders-select_ms').hide();
440					$('#donor-noservicereminders-select').multiselect('close');
441				}
442			}
443		}
444
445		//Hide Selects if checkboxes are unchecked
446		if ($('input#donor-noservicereminders').prop('checked') == false) {
447			$('#donor-noservicereminders-select_ms').hide();
448		} else {
449			$('#donor-noservicereminders-select_ms').show();
450		}
451		if ($('input#donor-nosolicitation').prop('checked') == false) {
452			$('#donor-nosolicitation-select_ms').hide();
453		} else {
454			$('#donor-nosolicitation-select_ms').show();
455		}
456    },
457	noMatchingDonors: function(wip)
458	{
459		//wip.donation.did = 0;
460		wip.donation.forceNewDonor = true;
461		wip.donation.donor = $.extend({}, satruck.donor.default);
462		wip.donation.donor.LastName = wip.donation.lastName;
463		wip.donation.donor.HomePhone = wip.donation.phone;
464		wip.donation.donor.City = wip.zipcity;
465		wip.donation.donor.State = wip.zipstate;
466		wip.donation.donor.ZipCode = wip.zip;
467		wip.donation.donor.Territory_id = wip.tid;
468		wip.donation.donor.Arc_id = wip.donation.aid;
469		satruck.workflow.pushToWip(3, "No matching donor in territory/ARC/Zip: " + wip.tid + "|" + wip.donation.aid + "|", wip);
470
471		DN.Utils.clearEditors("donor-input");
472		//fill in lastname,phone,city,state,zip
473		$("#donor-info-form #donor-lastname").val(wip.donation.lastName);
474		$("#donor-info-form #donor-homephone").val(DN.Validation.formatPhone(wip.donation.phone));
475		$("#donor-info-form #donor-city").val(wip.zipcity).addClass('disabled').attr('readonly',true);
476		$("#donor-info-form #donor-state").val(wip.zipstate).addClass('disabled').attr('readonly',true);
477		$("#donor-info-form #donor-zip").val(wip.zip).addClass('disabled').attr('readonly', true);
478		$("#donor-nosolicitation").prop("checked", true);
479		$("#donor-noservicereminders").prop("checked", true);
480		satruck.workflow.initializePrivacySettings();
481		$('input[id$="donor-nosolicitation-email"]').prop("checked", true);
482		$('input[id$="donor-nosolicitation-phone"]').prop("checked", true);
483		$('input[id$="donor-nosolicitation-sms"]').prop("checked", true);
484		$('input[id$="donor-noservicereminders-email"]').prop("checked", true);
485		$('input[id$="donor-noservicereminders-phone"]').prop("checked", true);
486		$('input[id$="donor-noservicereminders-sms"]').prop("checked", true);
487
488		$('#donor-nosolicitation-select').multiselect('update');
489		$('#donor-noservicereminders-select').multiselect('update');
490
491		DN.Utils.ScrollToTop();
492
493
494		var $active = $("#donor-info-form, #donor-submit");
495		satruck.workflow.switchWorkflowStep($active, 3, "Donor receives blank form");
496
497		$("input[name*='ajax_donor_lastname']").val(wip.donation.lastName);
498		$("input[name*='ajax_donor_homephone']").val(DN.Validation.formatPhone(wip.donation.phone));
499		$("input[name*='ajax_donor_city']").val(wip.zipcity);
500		$("input[name*='ajax_donor_state']").val(wip.zipstate);
501		$("input[name*='ajax_donor_zip']").val(wip.zip);
502		$("input[name*='customer_id']").val("");
503		$("input[name*='customer_username']").val("");
504		$("input[name*='customer_status']").val("new");
505		$("input[name*='customer_phone']").val(DN.Validation.formatPhone(wip.donation.phone));
506		$("input[name*='customer_first']").val("");
507		$("input[name*='customer_last']").val(wip.donation.lastName);
508		$("input[name*='ajax_donor_geocodeattempts']").val(wip.donation.donor.GeocodeAttempts);
509		$("input[name*='ajax_donor_geocodeconfidence']").val("");
510		$("input[name*='ajax_donor_geocodeservice']").val("");
511		$("input[name*='ajax_donor_geocodesource']").val("");
512		$("input[name*='ajax_donor_geocodetime']").val("");
513		$("input[name*='ajax_donor_geocodetimestring']").val("");
514		$("input[name*='ajax_donor_geocode_id']").val("");
515		$("input[name*='ajax_donor_isspecial']").val("");
516		$("input[name*='ajax_donor_latitude']").val("");
517		$("input[name*='ajax_donor_longitude']").val("");
518		$("input[name*='ajax_donor_nosolicitation']").val(false);
519		$("input[name*='ajax_donor_noservicereminders']").val(false);
520		$("input[name*='ajax_donor_donotemailsolicitation']").val(false);
521		$("input[name*='ajax_donor_donotcallsolicitation']").val(false);
522		$("input[name*='ajax_donor_donottextsolicitation']").val(false);
523		$("input[name*='ajax_donor_donotemailservicereminders']").val(false);
524		$("input[name*='ajax_donor_donotcallservicereminders']").val(false);
525		$("input[name*='ajax_donor_donottextservicereminders']").val(false);
526	    //Tealium
527		utag_data.ajax_donor_lastname = wip.donation.lastName;
528		utag_data.ajax_donor_homephone = DN.Validation.formatPhone(wip.donation.phone);
529		utag_data.ajax_donor_city = wip.zipcity;
530		utag_data.ajax_donor_state = wip.zipstate;
531		utag_data.ajax_donor_zip = wip.zip;
532		//New Donor Login tags
533		if (satruck.account.is_logged_in())
534		{
535			//I don't think this can ever happen
536			var DonorLogin = satruck.config._getDonorLogin();
537			utag_data.customer_id = DonorLogin.DonorUserId;
538			/*utag_data.customer_username = DonorLogin.DonorUserId;
539			utag_data.customer_status = "logged in";
540			utag_data.customer_type = "";
541			utag_data.customer_email = DonorLogin.Email;
542			utag_data.customer_city = DonorLogin.City;
543			utag_data.customer_state = DonorLogin.State;
544			utag_data.customer_zip = DonorLogin.ZipCode;
545			utag_data.customer_country = "US";*/
546			utag_data.login_status = "Logged In";
547		}
548		else
549		{
550			utag_data.customer_id = "";
551			/*utag_data.customer_username = "";
552			utag_data.customer_status = "not logged in";
553			utag_data.customer_type = "visitor no matching donors";
554			utag_data.customer_city = wip.zipcity;
555			utag_data.customer_state = wip.zipstate;
556			utag_data.customer_zip = wip.zip;
557			utag_data.customer_country = "US";*/
558			utag_data.login_status = "Not Logged In";
559		}
560		utag_data.customer_phone = DN.Validation.formatPhone(wip.donation.phone);
561		utag_data.customer_first = "";
562		utag_data.customer_last = wip.donation.lastName;
563		utag_data.ajax_donor_geocodeattempts = "";
564		utag_data.ajax_donor_geocodeconfidence = "";
565		utag_data.ajax_donor_geocodeservice = "";
566		utag_data.ajax_donor_geocodesource = "";
567		utag_data.ajax_donor_geocodetime = "";
568		utag_data.ajax_donor_geocodetimestring = "";
569		utag_data.ajax_donor_geocode_id = "";
570		utag_data.ajax_donor_isspecial = "";
571		utag_data.ajax_donor_latitude = "";
572		utag_data.ajax_donor_longitude = "";
573	    //New Tealium Tags
574		utag_data.site_section = "Account";
575		utag_data.site_type = "ARC";
576	},
577	
578	fillDonorForm: function(wip)
579	{
580		//fill form
581		if(!wip) {
582			var wip = satruck.config._loadWorkflowData();
583		}
584		
585		//wip.geocodeStart = false;
586		//wip.geocodeComplete = true;
587		//satruck.config._persistWorkflowData(wip);
588
589		$("#donor-firstname").val(wip.donation.donor.FirstName);
590		$("#donor-lastname").val(wip.donation.donor.LastName);
591		$("#donor-homephone").val(DN.Validation.formatPhone(wip.donation.donor.HomePhone));
592		if(wip.donation.donor.DayPhone) {
593			$("#donor-dayphone").val(DN.Validation.formatPhone(wip.donation.donor.DayPhone));
594		} else {
595			$("#donor-dayphone").val(DN.Validation.formatPhone(wip.donation.donor.HomePhone));
596		}
597		$("#donor-street").val(wip.donation.donor.AddressLine1);
598		$("#donor-street2").val(wip.donation.donor.AddressLine2);
599		$("#donor-city").val(wip.zipcity);
600		$("#donor-state").val(wip.zipstate);
601		$("#donor-zip, .donor-zip").val(wip.zip);
602		//$("#donor-crossstreet").val(wip.donation.donor.CrossStreet);
603		$("#donor-otherinformation").text(wip.donation.donor.OtherInformation);
604		$("#donor-email").val(wip.donation.donor.Email);
605		$("#donor-confirmemail").val(wip.donation.donor.Email);
606		$("#donor-isbusiness").prop("checked", wip.donation.donor.IsBusiness);
607		$("#donor-nosolicitation").prop("checked", !wip.donation.donor.NoSolicitation);
608		$("#donor-noservicereminders").prop("checked", !wip.donation.donor.NoServiceReminders);
609		satruck.workflow.initializePrivacySettings();
610		$('input[id$="donor-nosolicitation-email"]').prop("checked", !wip.donation.donor.DoNotEmailSolicitation);
611		$('input[id$="donor-nosolicitation-phone"]').prop("checked", !wip.donation.donor.DoNotCallSolicitation);
612		$('input[id$="donor-nosolicitation-sms"]').prop("checked", !wip.donation.donor.DoNotTextSolicitation);
613		$('input[id$="donor-noservicereminders-email"]').prop("checked", !wip.donation.donor.DoNotEmailServiceReminders);
614		$('input[id$="donor-noservicereminders-phone"]').prop("checked", !wip.donation.donor.DoNotCallServiceReminders);
615		$('input[id$="donor-noservicereminders-sms"]').prop("checked", !wip.donation.donor.DoNotTextServiceReminders);
616
617		$('#donor-nosolicitation-select').multiselect('update');
618		$('#donor-noservicereminders-select').multiselect('update');
619
620		$("input[name*='ajax_donor_firstname']").val(wip.donation.donor.FirstName);
621		$("input[name*='ajax_donor_lastname']").val(wip.donation.donor.LastName);
622		$("input[name*='ajax_donor_homephone']").val(DN.Validation.formatPhone(wip.donation.donor.HomePhone));
623		$("input[name*='ajax_donor_dayphone']").val(DN.Validation.formatPhone(wip.donation.donor.DayPhone));
624		$("input[name*='ajax_donor_addressline1']").val(wip.donation.donor.AddressLine1);
625		$("input[name*='ajax_donor_addressline2']").val(wip.donation.donor.AddressLine2);
626		$("input[name*='ajax_donor_city']").val(wip.zipcity);
627		$("input[name*='ajax_donor_state']").val(wip.zipstate);
628		$("input[name*='ajax_donor_zip']").val(wip.zip);
629		$("input[name*='ajax_donor_otherinfo']").val(wip.donation.donor.OtherInformation);
630		$("input[name*='ajax_donor_email']").val(wip.donation.donor.Email);
631		$("input[name*='ajax_donor_isbusiness']").val(wip.donation.donor.IsBusiness);
632		$("input[name*='ajax_donor_nosolicitation']").val(wip.donation.donor.NoSolicitation);
633		$("input[name*='ajax_donor_noservicereminders']").val(wip.donation.donor.NoServiceReminders);
634		$("input[name*='ajax_donor_donotemailsolicitation']").val(wip.donation.donor.DoNotEmailSolicitation);
635		$("input[name*='ajax_donor_donotcallsolicitation']").val(wip.donation.donor.DoNotCallSolicitation);
636		$("input[name*='ajax_donor_donottextsolicitation']").val(wip.donation.donor.DoNotTextSolicitation);
637		$("input[name*='ajax_donor_donotemailservicereminders']").val(wip.donation.donor.DoNotEmailServiceReminders);
638		$("input[name*='ajax_donor_donotcallservicereminders']").val(wip.donation.donor.DoNotCallServiceReminders);
639		$("input[name*='ajax_donor_donottextservicereminders']").val(wip.donation.donor.DoNotTextServiceReminders);
640		$("input[name*='ajax_donor_donorguid']").val(wip.donation.donor.DonorGuid);
641		$("input[name*='ajax_donor_donor_id']").val(wip.donation.did);
642		$("input[name*='ajax_donor_privacysettings']").val(wip.donation.donor.PrivacySettings);
643		$("input[name*='ajax_donor_territory_id']").val(wip.tid);
644		$("input[name*='customer_id']").val(wip.donation.donor.DonorGuid);
645		$("input[name*='customer_username']").val("");
646		$("input[name*='customer_status']").val("existing");
647		$("input[name*='customer_phone']").val(DN.Validation.formatPhone(wip.donation.donor.HomePhone));
648		$("input[name*='customer_first']").val(wip.donation.donor.FirstName);
649		$("input[name*='customer_last']").val(wip.donation.donor.LastName);
650		$("input[name*='ajax_donor_geocodeattempts']").val(wip.donation.donor.GeocodeAttempts);
651		$("input[name*='ajax_donor_geocodeconfidence']").val(wip.donation.donor.GeocodeConfidence);
652		$("input[name*='ajax_donor_geocodeservice']").val(wip.donation.donor.GeocodeService);
653		$("input[name*='ajax_donor_geocodesource']").val(wip.donation.donor.GeocodeSource);
654		$("input[name*='ajax_donor_geocodetime']").val(wip.donation.donor.GeocodeTime);
655		$("input[name*='ajax_donor_geocodetimestring']").val(wip.donation.donor.GeocodeTimeString);
656		$("input[name*='ajax_donor_geocode_id']").val(wip.donation.donor.Geocode_id);
657		$("input[name*='ajax_donor_isspecial']").val(wip.donation.donor.IsSpecial);
658		$("input[name*='ajax_donor_latitude']").val(wip.donation.donor.Latitude);
659		$("input[name*='ajax_donor_longitude']").val(wip.donation.donor.Longitude);
660
661	    //Tealium
662		utag_data.ajax_donor_firstname = wip.donation.donor.FirstName;
663		utag_data.ajax_donor_lastname = wip.donation.donor.LastName;
664		utag_data.ajax_donor_homephone = DN.Validation.formatPhone(wip.donation.donor.HomePhone);
665		utag_data.ajax_donor_dayphone = DN.Validation.formatPhone(wip.donation.donor.DayPhone);
666		utag_data.ajax_donor_addressline1 = wip.donation.donor.AddressLine1;
667		utag_data.ajax_donor_addressline2 = wip.donation.donor.AddressLine2;
668		utag_data.ajax_donor_city = wip.zipcity;
669		utag_data.ajax_donor_state = wip.zipstate;
670		utag_data.ajax_donor_zip = wip.zip;
671		utag_data.ajax_donor_otherinfo = wip.donation.donor.OtherInformation;
672		utag_data.ajax_donor_email = wip.donation.donor.Email;
673		utag_data.ajax_donor_isbusiness = wip.donation.donor.IsBusiness;
674		utag_data.ajax_donor_nosolicitation = wip.donation.donor.NoSolicitation;
675		utag_data.ajax_donor_noservicereminders = wip.donation.donor.NoServiceReminders;
676		utag_data.ajax_donor_donotemailsolicitation = wip.donation.donor.DoNotEmailSolicitation;
677		utag_data.ajax_donor_donotcallsolicitation = wip.donation.donor.DoNotCallSolicitation;
678		utag_data.ajax_donor_donottextsolicitation = wip.donation.donor.DoNotTextSolicitation;
679		utag_data.ajax_donor_donotemailservicereminders = wip.donation.donor.DoNotEmailServiceReminders;
680		utag_data.ajax_donor_donotcallservicereminders = wip.donation.donor.DoNotCallServiceReminders;
681		utag_data.ajax_donor_donottextservicereminders = wip.donation.donor.DoNotTextServiceReminders;
682		utag_data.ajax_donor_donorguid = wip.donation.donor.DonorGuid;
683		utag_data.ajax_donor_donor_id = wip.donation.did;
684		utag_data.ajax_donor_privacysettings = wip.donation.donor.PrivacySettings;
685		utag_data.ajax_donor_territory_id = wip.tid;
686		if (satruck.account.is_logged_in())
687		{
688			var DonorLogin = satruck.config._getDonorLogin();
689			utag_data.customer_id = DonorLogin.DonorUserId;
690			/*utag_data.customer_username = DonorLogin.DonorUserId;
691			utag_data.customer_status = "logged in";
692			utag_data.customer_type = "donor logged in";
693			utag_data.customer_email = DonorLogin.Email;
694			utag_data.customer_city = DonorLogin.City;
695			utag_data.customer_state = DonorLogin.State;
696			utag_data.customer_zip = DonorLogin.ZipCode;
697			utag_data.customer_country = "US";*/
698			utag_data.login_status =  "Logged In";
699		}
700		else
701		{
702			utag_data.customer_id = wip.donation.donor.DonorGuid;
703			/*utag_data.customer_username = "";
704			utag_data.customer_status = "not logged in";
705			utag_data.customer_type = "donor unregistered";
706			utag_data.customer_city = wip.donation.donor.City;
707			utag_data.customer_state = wip.donation.donor.State;
708			utag_data.customer_zip = wip.donation.donor.ZipCode;
709			utag_data.customer_country = "US";*/
710			utag_data.login_status = "Not Logged In";
711		}
712		utag_data.customer_phone = DN.Validation.formatPhone(wip.donation.donor.HomePhone);
713		utag_data.customer_first = wip.donation.donor.FirstName;
714		utag_data.customer_last = wip.donation.donor.LastName;
715		utag_data.ajax_donor_geocodeattempts = wip.donation.donor.GeocodeAttempts;
716		utag_data.ajax_donor_geocodeconfidence = wip.donation.donor.GeocodeConfidence;
717		utag_data.ajax_donor_geocodeservice = wip.donation.donor.GeocodeService;
718		utag_data.ajax_donor_geocodesource = wip.donation.donor.GeocodeSource;
719		utag_data.ajax_donor_geocodetime = wip.donation.donor.GeocodeTime;
720		utag_data.ajax_donor_geocodetimestring = wip.donation.donor.GeocodeTimeString;
721		utag_data.ajax_donor_geocode_id = wip.donation.donor.Geocode_id;
722		utag_data.ajax_donor_isspecial = wip.donation.donor.IsSpecial;
723		utag_data.ajax_donor_latitude = wip.donation.donor.Latitude;
724		utag_data.ajax_donor_longitude = wip.donation.donor.Longitude;
725	    //New Tealium Tags
726		utag_data.site_section = "Account";
727		utag_data.site_type = "ARC";
728	},
729
730	fillDonorCityStateZip: function(wip)
731	{
732		if(wip == null) {
733			var wip = satruck.config._loadWorkflowData();
734		}
735		$("#donor-city").val(wip.zipcity);
736		$("#donor-state").val(wip.zipstate);
737		$("#donor-info-form #donor-zip, #donor-lookup-form #donor-zip").val(wip.zip).prop('disabled', true).addClass('disabled');
738		$("#donor-nosolicitation").prop("checked", true);
739		$("#donor-noservicereminders").prop("checked", true);
740		satruck.workflow.initializePrivacySettings();
741		$('input[id$="donor-nosolicitation-email"]').prop("checked", true);
742		$('input[id$="donor-nosolicitation-phone"]').prop("checked", true);
743		$('input[id$="donor-nosolicitation-sms"]').prop("checked", true);
744		$('input[id$="donor-noservicereminders-email"]').prop("checked", true);
745		$('input[id$="donor-noservicereminders-phone"]').prop("checked", true);
746		$('input[id$="donor-noservicereminders-sms"]').prop("checked", true);
747		$('#donor-nosolicitation-select').multiselect('update');
748		$('#donor-noservicereminders-select').multiselect('update');
749	},
750
751	persistDonorInfo: function(wip)
752	{
753		if(wip == null) {
754			var wip = satruck.config._loadWorkflowData();
755		}
756		
757		if (typeof wip.donation.donor == "undefined")
758		{
759			wip.donation.donor = $.extend({}, satruck.donor.default);
760		}
761
762		wip.donation.donor.FirstName = $("#donor-firstname").val().trim();
763		wip.donation.donor.LastName = $("#donor-lastname").val().trim();
764		wip.donation.donor.HomePhone = DN.Validation.unFormatPhone($("#donor-homephone").val());
765		wip.donation.donor.DayPhone = DN.Validation.unFormatPhone($("#donor-dayphone").val());
766		wip.donation.donor.AddressLine1 = $("#donor-street").val().trim();
767		wip.donation.donor.AddressLine2 = $("#donor-street2").val().trim();
768		wip.donation.donor.City = $("#donor-city").val().trim();
769		wip.donation.donor.State = $("#donor-state").val().trim();
770		wip.donation.donor.ZipCode = $("#donor-zip").val().trim();
771		//wip.donation.donor.CrossStreet = $("#donor-crossstreet").val().trim();
772		wip.donation.donor.OtherInformation = $("#donor-otherinformation").val().trim();
773		wip.donation.donor.Email = $("#donor-email").val().trim();
774		wip.donation.donor.IsBusiness = $("#donor-isbusiness").is(":checked");
775		wip.donation.donor.NoSolicitation = $("#donor-nosolicitation").is(":checked") == false;
776		wip.donation.donor.NoServiceReminders = $("#donor-noservicereminders").is(":checked") == false;
777		wip.donation.donor.DoNotEmailSolicitation = $("#donor-donotemailsolicitation").is(":checked") == false;
778		wip.donation.donor.DoNotCallSolicitation = $("#donor-donotcallsolicitation").is(":checked") == false;
779		wip.donation.donor.DoNotTextSolicitation = $("#donor-donottextsolicitation").is(":checked") == false;
780		wip.donation.donor.DoNotEmailServiceReminders = $("#donor-donotemailservicereminders").is(":checked") == false;
781		wip.donation.donor.DoNotCallServiceReminders = $("#donor-donotcallservicereminders").is(":checked") == false;
782		wip.donation.donor.DoNotTextServiceReminders = $("#donor-donottextservicereminders").is(":checked") == false;
783
784		satruck.config._persistWorkflowData(wip);
785		
786		$("input[name*='ajax_donor_firstname']").val(wip.donation.donor.FirstName);
787		$("input[name*='ajax_donor_lastname']").val(wip.donation.donor.LastName);
788		$("input[name*='ajax_donor_homephone']").val(DN.Validation.formatPhone(wip.donation.donor.HomePhone));
789		$("input[name*='ajax_donor_dayphone']").val(DN.Validation.formatPhone(wip.donation.donor.DayPhone));
790		$("input[name*='ajax_donor_addressline1']").val(wip.donation.donor.AddressLine1);
791		$("input[name*='ajax_donor_addressline2']").val(wip.donation.donor.AddressLine2);
792		$("input[name*='ajax_donor_city']").val(wip.zipcity);
793		$("input[name*='ajax_donor_state']").val(wip.zipstate);
794		$("input[name*='ajax_donor_zip']").val(wip.zip);
795		$("input[name*='ajax_donor_otherinfo']").val(wip.donation.donor.OtherInformation);
796		$("input[name*='ajax_donor_email']").val(wip.donation.donor.Email);
797		$("input[name*='ajax_donor_isbusiness']").val(wip.donation.donor.IsBusiness);
798		$("input[name*='ajax_donor_nosolicitation']").val(wip.donation.donor.NoSolicitation);
799		$("input[name*='ajax_donor_noservicereminders']").val(wip.donation.donor.NoServiceReminders);
800		$("input[name*='ajax_donor_donotemailsolicitation']").val(wip.donation.donor.DoNotEmailSolicitation);
801		$("input[name*='ajax_donor_donotcallsolicitation']").val(wip.donation.donor.DoNotCallSolicitation);
802		$("input[name*='ajax_donor_donottextsolicitation']").val(wip.donation.donor.DoNotTextSolicitation);
803		$("input[name*='ajax_donor_donotemailservicereminders']").val(wip.donation.donor.DoNotEmailServiceReminders);
804		$("input[name*='ajax_donor_donotcallservicereminders']").val(wip.donation.donor.DoNotCallServiceReminders);
805		$("input[name*='ajax_donor_donottextservicereminders']").val(wip.donation.donor.DoNotTextServiceReminders);
806
807	    //Tealium
808		utag_data.ajax_donor_firstname = wip.donation.donor.FirstName;
809		utag_data.ajax_donor_lastname = wip.donation.donor.LastName;
810		utag_data.ajax_donor_homephone = DN.Validation.formatPhone(wip.donation.donor.HomePhone);
811		utag_data.ajax_donor_dayphone = DN.Validation.formatPhone(wip.donation.donor.DayPhone);
812		utag_data.ajax_donor_addressline1 = wip.donation.donor.AddressLine1;
813		utag_data.ajax_donor_addressline2 = wip.donation.donor.AddressLine2;
814		utag_data.ajax_donor_city = wip.zipcity;
815		utag_data.ajax_donor_state = wip.zipstate;
816		utag_data.ajax_donor_zip = wip.zip;
817		utag_data.ajax_donor_otherinfo = wip.donation.donor.OtherInformation;
818		utag_data.ajax_donor_email = wip.donation.donor.Email;
819		utag_data.ajax_donor_isbusiness = wip.donation.donor.IsBusiness;
820		utag_data.ajax_donor_nosolicitation = wip.donation.donor.NoSolicitation;
821		utag_data.ajax_donor_noservicereminders = wip.donation.donor.NoServiceReminders;
822		utag_data.ajax_donor_donotemailsolicitation = wip.donation.donor.DoNotEmailSolicitation;
823		utag_data.ajax_donor_donotcallsolicitation = wip.donation.donor.DoNotCallSolicitation;
824		utag_data.ajax_donor_donottextsolicitation = wip.donation.donor.DoNotTextSolicitation;
825		utag_data.ajax_donor_donotemailservicereminders = wip.donation.donor.DoNotEmailServiceReminders;
826		utag_data.ajax_donor_donotcallservicereminders = wip.donation.donor.DoNotCallServiceReminders;
827		utag_data.ajax_donor_donottextservicereminders = wip.donation.donor.DoNotTextServiceReminders;
828	    //New Tealium Tags
829		utag_data.site_section = "Schedule Pickup";
830		utag_data.site_type = "ARC";
831		utag_data.login_status = satruck.account.is_logged_in() ? "Logged In" : "Not Logged In";
832
833		$('body').addClass('loading');
834
835		if(wip.creatingAccount == true) {
836			satruck.account._registerUserInWorkflow(wip.donation.donor, $("#donor-info-password").val().trim(), true, function(apiResult)
837			{
838				$('body').removeClass('loading');
839				var retVal = apiResult.RetVal;
840				if (apiResult.Success && !retVal.DonorProfiles && retVal.DonorUserId && retVal.ExistingAccount == false)
841				{
842				    //Tealium
843				    if (typeof utag != 'undefined' && utag != null) {
844				        utag.link({
845				            'event_name': 'Create Account', //Event Name
846				            'event_type': 'account_created', //Event Type
847				        });
848				    }
849					var donor = retVal.DonorInfo;
850					donor.DonorUserId = retVal.DonorUserId;
851
852					wip.donation.did = donor.Donor_id;
853					wip.donation.donor.DonorGuid = donor.DonorGuid;
854					wip.donation.donor.DonorUserId = donor.DonorUserId;
855					wip.donation.donor.Donor_id = donor.Donor_id;
856					wip.donation.donor.Arc_id = donor.Arc_id;
857					wip.donation.donor.Territory_id = donor.Territory_id;
858
859					satruck.workflow.pushToWip(wip.currentStep, "Donor login success: " + wip.tid + "|" + wip.donation.aid + "|" + wip.donation.did, wip);
860
861					satruck.workflow.pickupComplete();
862				}
863				else if (apiResult.Success && !retVal.DonorProfiles && retVal.ExistingAccount == true)
864				{
865					
866					DN.Utils.ShowConfirm('Sorry! It seems that you already have an account registered for that email. Please log in or <a href="#" class="contact-dialog-open">contact us</a> for help.', "Existing Account",
867								function()
868								{
869									satruck.workflow.loadDonorLogin();
870								});
871					
872				}
873				else if (apiResult.Success && retVal.DonorProfiles && retVal.DonorProfiles.length > 0)
874				{
875					satruck.workflow.loadDonorChooser(retVal.DonorProfiles, true, $("#donor-info-password").val().trim());
876				}
877				else
878				{
879					DN.Utils.ShowError('An error has occurred. Please try again or <a href="#" class="contact-dialog-open">contact us</a> for help.', 'Please try again');
880				}
881			});
882		} else {
883			$('body').removeClass('loading');
884			satruck.config._persistWorkflowData(wip);
885			satruck.workflow.pickupComplete();
886		}
887		
888	},
889
890	donorAddressGeocode: function(finalize) 
891	{
892		var wip = satruck.config._loadWorkflowData();
893
894		if(!wip.donation.forceNewDonor || wip.donation.forceNewDonor == null) {
895			wip.donation.forceNewDonor = false;
896		}
897
898		if(($("#donor-zip").val().length>=5)&&($("#donor-street").val().length>=1)) 
899		{
900			var _donorzip = $("#donor-zip").val();
901			var _donorstreet = $("#donor-street").val();
902
903			satruck.workflow.pushToWip(3, "donor geocode request start: " + wip.tid + "|" + wip.donation.aid + "|" + _donorstreet + "|" + _donorzip);
904
905			//satruck.api.GeocodeMapquest(_donorstreet, _donorzip, function(apiResult)
906			satruck.api.Geocode(_donorstreet, _donorzip, wip.tid, wip.donation.aid, "SATruck", function(apiResult)
907			{
908				
909				if (apiResult && apiResult.Success == true)
910				{
911					if (apiResult.RetVal.Accuracy > 0) 
912					{
913						wip.donation.donor.Latitude = apiResult.RetVal.Lat;
914						wip.donation.donor.Longitude = apiResult.RetVal.Lon;
915						wip.donation.donor.City = wip.zipcity;
916						wip.donation.donor.State = wip.zipstate;
917						wip.donation.donor.AddressLine1 = _donorstreet;
918						wip.donation.donor.GeocodeConfidence = apiResult.RetVal.Confidence;
919						wip.donation.donor.GeocodeAttempts = apiResult.RetVal.AttemptedGeocodes;
920						wip.donation.donor.GeocodeService = apiResult.RetVal.Source;
921						
922						$("input[name*='ajax_donor_addressline1']").val(wip.donation.donor.AddressLine1);
923						$("input[name*='ajax_donor_city']").val(wip.zipcity);
924						$("input[name*='ajax_donor_state']").val(wip.zipstate);
925						$("input[name*='ajax_donor_geocodeattempts']").val(wip.donation.donor.GeocodeAttempts);
926						$("input[name*='ajax_donor_geocodeconfidence']").val(wip.donation.donor.GeocodeConfidence);
927						$("input[name*='ajax_donor_geocodeservice']").val(wip.donation.donor.GeocodeService);
928						$("input[name*='ajax_donor_latitude']").val(wip.donation.donor.Latitude);
929						$("input[name*='ajax_donor_longitude']").val(wip.donation.donor.Longitude);
930
931						utag_data.ajax_donor_addressline1 = wip.donation.donor.AddressLine1;
932						utag_data.ajax_donor_city = wip.zipcity;
933						utag_data.ajax_donor_state = wip.zipstate;
934						utag_data.ajax_donor_geocodeattempts = wip.donation.donor.GeocodeAttempts;
935						utag_data.ajax_donor_geocodeconfidence = wip.donation.donor.GeocodeConfidence;
936						utag_data.ajax_donor_geocodeservice = wip.donation.donor.GeocodeService;
937						utag_data.ajax_donor_latitude = wip.donation.donor.Latitude;
938						utag_data.ajax_donor_longitude = wip.donation.donor.Longitude;
939
940						satruck.workflow.pushToWip(3, "geocode request success: " + wip.donation.donor.Latitude + "|" + wip.donation.donor.Longitude, wip);
941					}
942					else
943					{
944						//wip.donation.donor.City = "";
945						//wip.donation.donor.State = "";
946						wip.donation.donor.Latitude = 0.0;
947						wip.donation.donor.Longitude = 0.0;
948						wip.donation.donor.AddressLine1 = _donorstreet;
949						wip.donation.donor.GeocodeConfidence = "Bad";
950						wip.donation.donor.GeocodeAttempts = 1;
951						wip.donation.donor.GeocodeService = "mapquest";
952						
953						$("input[name*='ajax_donor_addressline1']").val(wip.donation.donor.AddressLine1);
954						//$("input[name*='ajax_donor_city']").val(wip.zipcity);
955						//$("input[name*='ajax_donor_state']").val(wip.zipstate);
956						$("input[name*='ajax_donor_geocodeattempts']").val(wip.donation.donor.GeocodeAttempts);
957						$("input[name*='ajax_donor_geocodeconfidence']").val(wip.donation.donor.GeocodeConfidence);
958						$("input[name*='ajax_donor_geocodeservice']").val(wip.donation.donor.GeocodeService);
959						$("input[name*='ajax_donor_latitude']").val(wip.donation.donor.Latitude);
960						$("input[name*='ajax_donor_longitude']").val(wip.donation.donor.Longitude);
961
962						utag_data.ajax_donor_addressline1 = wip.donation.donor.AddressLine1;
963						//utag_data.ajax_donor_city = wip.zipcity;
964						//utag_data.ajax_donor_state = wip.zipstate;
965						utag_data.ajax_donor_geocodeattempts = wip.donation.donor.GeocodeAttempts;
966						utag_data.ajax_donor_geocodeconfidence = wip.donation.donor.GeocodeConfidence;
967						utag_data.ajax_donor_geocodeservice = wip.donation.donor.GeocodeService;
968						utag_data.ajax_donor_latitude = wip.donation.donor.Latitude;
969						utag_data.ajax_donor_longitude = wip.donation.donor.Longitude;
970
971						satruck.workflow.pushToWip(3, "geocode request returned inaccurate result", wip);
972					}
973				}
974				else
975				{
976					//wip.donation.donor.City = "";
977					//wip.donation.donor.State = "";
978					wip.donation.donor.Latitude = 0.0;
979					wip.donation.donor.Longitude = 0.0;
980					wip.donation.donor.AddressLine1 = _donorstreet;
981					wip.donation.donor.GeocodeConfidence = "Bad";
982					wip.donation.donor.GeocodeAttempts = 1;
983					wip.donation.donor.GeocodeService = "mapquest";
984
985					$("input[name*='ajax_donor_addressline1']").val(wip.donation.donor.AddressLine1);
986					//$("input[name*='ajax_donor_city']").val(wip.zipcity);
987					//$("input[name*='ajax_donor_state']").val(wip.zipstate);
988					$("input[name*='ajax_donor_geocodeattempts']").val(wip.donation.donor.GeocodeAttempts);
989					$("input[name*='ajax_donor_geocodeconfidence']").val(wip.donation.donor.GeocodeConfidence);
990					$("input[name*='ajax_donor_geocodeservice']").val(wip.donation.donor.GeocodeService);
991					$("input[name*='ajax_donor_latitude']").val(wip.donation.donor.Latitude);
992					$("input[name*='ajax_donor_longitude']").val(wip.donation.donor.Longitude);
993
994					utag_data.ajax_donor_addressline1 = wip.donation.donor.AddressLine1;
995					//utag_data.ajax_donor_city = wip.zipcity;
996					//utag_data.ajax_donor_state = wip.zipstate;
997					utag_data.ajax_donor_geocodeattempts = wip.donation.donor.GeocodeAttempts;
998					utag_data.ajax_donor_geocodeconfidence = wip.donation.donor.GeocodeConfidence;
999					utag_data.ajax_donor_geocodeservice = wip.donation.donor.GeocodeService;
1000					utag_data.ajax_donor_latitude = wip.donation.donor.Latitude;
1001					utag_data.ajax_donor_longitude = wip.donation.donor.Longitude;
1002
1003					satruck.workflow.pushToWip(3, "geocode request returned success = false", wip);
1004				}
1005
1006				satruck.config._persistWorkflowData(wip);
1007
1008				if (finalize) finalize();
1009			});	
1010		}
1011		else 
1012		{
1013			if (finalize) finalize();
1014		}
1015	},
1016
1017    pickupComplete: function () {
1018		var wip = satruck.config._loadWorkflowData();
1019		if (wip.donationType == satruck.config.lookup.VehicleType) {
1020			satruck.controller.vehicle.pickupComplete();
1021		} else if (wip.donationType = satruck.config.lookup.PickupType) {
1022			satruck.controller.pickup.pickupComplete();
1023		}
1024	}
1025}

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.