HJ.PracticeCarpool = Class.create();

HJ.PracticeCarpool.prototype = Object.extend(new Af.StepsMaker(), {
	initialize: function(listObj) {
		this.url = {
			"step1":basePageURL + "PracticeCarpool.htm",
			"step2":basePageURL + "PracticeCarpool.htm",
			"stepPaymentRequest":basePageURL + "PaymentRequestStep.htm",
			"stepPaymentRequestThroughAmazon":basePageURL + "AmazonPaymentRequestStep.htm",
			"step3":basePageURL + "StepsEmails.htm",
			"step4":basePageURL + "PracticeCarpoolRecipient.htm",
			"stepPaymentAttempt":basePageURL + "PaymentAttemptStep.htm",
			"stepPaymentAttemptThroughAmazon":basePageURL + "AmazonPaymentAttemptStep.htm",
			"step5":basePageURL + "SenderConfirm.htm",
			"step6":basePageURL + "RSVPConfirm.htm"
		};		
		
		this.targetContainerId = {
			"step1":"bodyContainer",
			"step2":"bodyContainer",
			"stepPaymentRequest":"bodyContainer",
			"stepPaymentRequestThroughAmazon":"bodyContainer",		
			"step3":"bodyContainer",
			"step4":"bodyContainer",
        	"stepPaymentAttempt":"bodyContainer",
		    "stepPaymentAttemptThroughAmazon":"bodyContainer",		
			"step5":"bodyContainer",
			"step6":"bodyContainer"
		};

		this.listObj = listObj;
		this.implicitListId = null;
				
		this.data = new Array;
		
		this.templateType = HJ.TEMPLATE_TYPE_PRACTICE_CARPOOL;
		
		this.tl = null;

		this.toolTipTexts = {
			"driverTip":"Sign up here to indicate that you can be responsible for this shift or bringing this item or adding this information.",
			"notesTip":"Use this field for additional information about your participation and/or comments for the organizer."			
		}		
		
		this.driverFields = "<span class=\"driveDayLong\"><input type=\"text\" name=\"day\" value=\"\" class=\"dark\"/></span>" +
				"<span class=\"driveTime2\"><input name=\"time\" type=\"text\" value=\"\" class=\"dark\"/></span>" +
				"<span class=\"timeButtonCon\"><input name=\"picker\" type=\"button\" value=\"V\" class=\"timeButton\" /></span>" +
                "<span class=\"driveLocationLong2\"><input name=\"location\" type=\"text\" value=\"\" class=\"dark\"/></span>" +
                "<span class=\"driveName2\">" +
                "<input type=\"text\" name=\"helper\" disable=\"disabled\" value=\"Drivers Sign Up Here\" class=\"driveHelper\"/>" +
                "</span>" +
                "<span class=\"driveNotes2\"><input name=\"notes\" disabled=\"disabled\" type=\"text\" value=\"Drivers Write Notes Here\" class=\"dark\"/></span>" +
                "<span class=\"helperId\" id=\"helperId\"><input name=\"helperId\" type=\"hidden\" value=\"\" class=\"light\"/></span>" +
                "<span class=\"helperEventId\" id=\"helperEventId\"><input name=\"helperEventId\" type=\"hidden\" value=\"\" class=\"light\"/></span>" +
        		"<span class=\"listItemUUID\" id=\"UUID\" ><input type=\"hidden\" value=\"\" class=\"\"/></span>";
				
		this.driverFields2 = "<span name=\"day\" class=\"driveDay\"></span>" +
                "<span name=\"time\" class=\"driveTime\"></span>" +
                "<span name=\"location\" class=\"driveLocation\"></span>" +
                "<span class=\"driveName\">" +
                    "<input type=\"text\" name=\"helper\" disabled=\"disabled\" value=\"\" class=\"dark\"/>" +
                "</span>" +
                "<span class=\"driveNotes\"><input name=\"notes\" disabled=\"disabled\" type=\"text\" value=\"\" class=\"dark\"/></span>" +
                "<span name=\"removeHelper\" ><a href=\"#\" style=\"display:none;\">Remove</a></span>" +
                "<span class=\"helperId\" id=\"helperId\"><input name=\"helperId\" type=\"hidden\" value=\"\" class=\"light\"/></span>" +
                "<span class=\"helperEventId\" id=\"helperEventId\"><input name=\"helperEventId\" type=\"hidden\" value=\"\" class=\"light\"/></span>" + 
                "<span class=\"listItemUUID\" id=\"UUID\" ><input type=\"hidden\" value=\"\" class=\"\"/></span>";

		this.listFields = new Array('startDT', 'endDT', 'organizerName', 'phone', 
									'notes', 'lastEmailString', 'lastEmailSubject',
									'lastEmailNote', 'notifyOrganizerOnSignup');
		this.listItemFields = new Array('day', 'time', 'location', 'fromTo', 'repeatNumber', 'helper', 'helperId', 'helperEventId', 'UUID', 'notes' );

		this.initializeSelectedStepFromQueryString();		
		this.setDataObject();
	},
		
	//  Map Workspace data to local data..
	setDataObject: function() {		
		var dayMap = {
			'Sunday':'day0',
			'Monday':'day1',
			'Tuesday':'day2',
			'Wednesday':'day3',
			'Thursday':'day4',
			'Friday':'day5',
			'Saturday':'day6'		
		};
				
		//  Fields imported directly to this.data
		var listFields = new Array('name', 'organizerName', 'startDT', 'endDT',
                 'phone', 'notes', 'lastEmailString',
                 'lastEmailSubject', 'lastEmailNote',
                 'collectPayments', 'suggestedAmount', 'helperCanModifyAmount', 'showFeesToHelper', 'nextStep');
		var itemList;
		if (this.listObj!=null) {
						
			this.data = this.listObj;
			
			this.doInitialRoute();

			var milliStart = null;
			var milliEnd = null;
			if (this.data['startDT'] != null && this.data['startDT'] != "") {
				milliStart = new Date(parseInt(this.data['startDT']));
				this.data['startDT'] = milliStart.getMonth() + 1 + "/"
                        + milliStart.getDate() + "/" + milliStart.getFullYear();
			} else {
				this.data['startDT'] = '';
			}
			if (this.data['endDT'] != null && this.data['endDT'] != "") {
				milliEnd = new Date(parseInt(this.data['endDT']));
				this.data['endDT'] = milliEnd.getMonth() + 1 + "/"
                        + milliEnd.getDate() + "/" + milliEnd.getFullYear();
			} else {
				this.data['endDT'] = '';
			}
			
			//  Fill Drivers data..	
			var toDrivers = new Array;
			var fromDrivers = new Array;
			
			var itemList = this.data['item'];

			var selectedDays = new Array;
			var selectedDaysOfWeek = new Array;

			if (itemList!=null) {
				for (var i=0; i<itemList.length; i++) {
					
					var driver = itemList[i];
						
					if (driver.fromTo == 'from') {
						driver['divName'] = 'from' + dayMap[driver.day];
						selectedDays.push(dayMap[driver.day]);
						selectedDaysOfWeek.push(driver.day);
						fromDrivers.push(driver);
					}
					else {
						driver['divName'] = 'to' + dayMap[driver.day];
						toDrivers.push(driver);
					}	
				}
			}			

			this.data['selectedDays'] = selectedDays;
		    this.data['selectedDaysOfWeek'] = selectedDaysOfWeek;

			this.data['toDrivers'] = toDrivers;
			this.data['fromDrivers'] = fromDrivers;		
		} // End if listObj!=null
	},	

	//  Save Step 1 work locally.
	saveHoldData: function() {								

	  if (this.selectedStep != 4) {
		  //  Top Inputs
		  var inputs = document.getElementsByName('directData');
		  for (var i=0; i<inputs.length; i++) {
		  	this.data[inputs[i].id] = inputs[i].value;		  	
		  }	
		  
		  //  Pre-populate endDT with startDT if endDT is empty (assume one day)
		  (this.data['startDT']!=null && this.data['startDT']!='') && (this.data['endDT']==null || this.data['endDT']=='')
		  		? this.data['endDT'] = this.data['startDT']:null;
		  
		  	var notifyOrganizerOnSignupElem = document.getElementById('notifyOrganizerOnSignup');
			if (notifyOrganizerOnSignupElem != null && notifyOrganizerOnSignupElem.checked) {
				this.data['notifyOrganizerOnSignup'] = "true";
			} else {
				this.data['notifyOrganizerOnSignup'] = "false";
			}
	
		  var textareas = document.getElementsByTagName('textarea');
		  for (var i=0; i<textareas.length; i++) {
		  	this.data[textareas[i].id] = textareas[i].value;	  	
		  }	
		  
		  // Save Selected Days	  
		  if (this.selectedStep==1 || this.selectedStep==2) {
			  var selectedDays = new Array;
			  for (var i=0; i<7; i++) {
			  	var day = document.getElementById("day" +i);
			  	if(day.className == 'selected') {
			  		selectedDays.push(day.id);
			  	}
			  }
		  }
	
		  this.data['selectedDays'] = selectedDays;
	  } // if (this.selectedStep != 4)
	  
		//  Bottom Inputs
		var toDrivers = this.toDrivers.getElementsByTagName('div');
		var fromDrivers = this.fromDrivers.getElementsByTagName('div');
		var toDriversData = new Array;
		var fromDriversData = new Array;

		for (var i=0; i<toDrivers.length; i++) {
			var item = new Object();
			var itemInputs = toDrivers[i].getElementsByTagName('input');
			item['divName'] = toDrivers[i]['id'];
			item['fromTo'] = 'to';
			for (var j=0; j<itemInputs.length; j++) {
				var inputName = itemInputs[j].name;
                var value = itemInputs[j].value;
                if (this.selectedStep != 4) {
                	item[inputName] = value;
                } else {
                	if (inputName == 'notes') {
        				this.data['item'][i].notes = value;
                	}
                }
			}
			if (this.selectedStep != '4') {
				toDriversData.push(item);
			}
		}	

		for (var i=0; i<fromDrivers.length; i++) {
			var item = new Object();
			var itemInputs = fromDrivers[i].getElementsByTagName('input');
			item['divName'] = fromDrivers[i]['id'];
			item['fromTo'] = 'from';
			for (var j=0; j<itemInputs.length; j++) {
				var inputName = itemInputs[j].name;
                var value = itemInputs[j].value;
                if (this.selectedStep != 4) {
                	item[inputName] = value;
                } else {
                	if (inputName == 'notes') {
                    	item[inputName] = value;
        				this.data['item'][toDrivers.length+i].notes = value;
                	}
                }
            }													
			if (this.selectedStep != '4') {
				fromDriversData.push(item);
			}
		}	

		if (this.selectedStep != '4') {
			this.data['toDrivers'] = toDriversData;
			this.data['fromDrivers'] = fromDriversData;	
					
			this.data['item'] = toDriversData.concat(fromDriversData);
	
			// Fill in Repeat Number.  Might belong elsewhere..
			var items = this.data['item'];
			
			for (var i=0; i<items.length; i++) {
				//  0 = Sunday, 1=Monday, etc.
				var dayNumber = items[i].divName.match(/[\d\.]+/g)[0];
				items[i]['repeatNumber'] = this.getRepeatNumber(dayNumber);
			}
		
			this.data['item'] = items;
		} // selectedStep != 4
 	  },			

  	loadStep1: function() {
			this.startDT = document.getElementById('startDT');
			this.startCal = document.getElementById('startCal');
			this.startDT.onclick = this.showMiniCal.bindAsEventListener(this);
			this.startDT.onfocus = this.showMiniCal.bindAsEventListener(this);
			this.startCal.onclick = this.showMiniCal.bindAsEventListener(this);
			
			this.endDT = document.getElementById('endDT');
			this.endCal = document.getElementById('endCal');
			this.endDT.onclick = this.showMiniCal.bindAsEventListener(this);
			this.endDT.onfocus = this.showMiniCal.bindAsEventListener(this);
			this.endCal.onclick = this.showMiniCal.bindAsEventListener(this);
			
			var notifyOrganizerOnSignupElem = document.getElementById('notifyOrganizerOnSignup');
			if (notifyOrganizerOnSignupElem != null) {
				if (this.data['notifyOrganizerOnSignup'] != null && 
					this.data['notifyOrganizerOnSignup'] != undefined &&
					this.data['notifyOrganizerOnSignup'] == "true") {
					notifyOrganizerOnSignupElem.checked = true;
				} else {
					notifyOrganizerOnSignupElem.checked = false;
				}
			}

			//  DOM Retrieval
			//  Not universal..  email step doesn't use it.			
			this.toDrivers = document.getElementById("toDrivers");
			this.fromDrivers = document.getElementById("fromDrivers");		


			//  Universal Nav bars - resides in Step 1 and remains
			this.sideNavBar = document.getElementById('sideNavBar');
			
			this.navDivs = this.sideNavBar.getElementsByTagName('div');
			//this.navAs = this.sideNavBar.getElementsByTagName('a');
			for (var i=0; i<this.navDivs.length; i++) {
				this.navDivs[i].onclick =
                       this.navBarClicked.bindAsEventListener(this);
			}

			var daysArray = new Array;
			
			if (this.data['selectedDays']==null) {
				daysArray.push('day3'); 
				
				this.data['selectedDays'] = daysArray;				
			}

			// Weekdays bar load
			for (var i=0; i<7; i++) {
				var inArray = false;
				var divID = "day" + i;
				var div = document.getElementById(divID);
				div.onclick = this.dayClicked.bindAsEventListener(this);
			 	if (this.data['selectedDays']!=null) {
				 	for (var j=0; j<this.data['selectedDays'].length; j++) {
				 		if (divID == this.data['selectedDays'][j]){
				 			inArray = true;
				 		};			 	
				 	}
			 	}
			 	if (inArray==true) {
			 		div.className = 'selected';
					this.addDriver(div);
			 	}			 	
			}
	
			// Load directData info
			var inputs = document.getElementsByName('directData');
	 		for (var i=0; i<inputs.length; i++) {
	 			var elem = inputs[i];
				if (this.data[elem.id]!=null){
	 				elem.value = this.data[elem.id]; 			
	 			} else {
	 				elem.value = '';
	 			}
	 		}

            this.reloadForEdit(); // Let's try it here first
			document.getElementById('name').focus();
	},
	

	loadStep4: function() {	

        // XXX: This section looks like it should be a method on stepsMaker, 
        // driven by a field list.  See other occurrences of loadFields
		var loadFields = new Array('name', 'organizerName', 'phone','notes');
		for (var i=0; i<loadFields.length; i++) {
			var elemID = loadFields[i];
		 	var elem = document.getElementById(elemID);
			if (this.data[elemID]!=null) {
			 elem.innerHTML = textDisplay(this.data[elemID]);
			 } else {
			 elem.innerHTML = '';
			 }
		}	
		
		this.toDrivers = document.getElementById("toDrivers");
		this.fromDrivers = document.getElementById("fromDrivers");		

		var selectedDays = new Array;
		if (this.data['toDrivers']!=null) {

			var listItems = this.data['toDrivers'];
						
			// Make, append list to view
			for (var i=0; i<listItems.length; i++) {
				var signupDiv = document.createElement('div');
				signupDiv.innerHTML = this.driverFields2;
				signupDiv.className = "driveFormCont";
				signupDiv.id = listItems[i].divName;
				var dataFields = signupDiv.getElementsByTagName('span');
				dataFields[0].innerHTML = listItems[i].day;
				dataFields[1].innerHTML = listItems[i].time;
                listItems[i].location == null ||
                     listItems[i].location == 'undefined'
                        ? listItems[i].location = ''
                        : null;
				dataFields[2].innerHTML = listItems[i].location;

				selectedDays.push(listItems[i].day);

                var helper = listItems[i].helper;
				if (helper==null || helper=='undefined' || helper == 'Volunteer Name Will Go Here') {
					listItems[i].helper = '';
                    helper = '';
				}
                var notes = listItems[i].notes;
				if (notes==null || notes=='undefined') {
					listItems[i].notes = '';
                    notes = '';
				}										
                var helperId = listItems[i].helperId;
				if (helperId==null || helperId=='undefined' || helperId == '') {
					listItems[i].helperId = '';	
                    helperId = '';
					listItems[i].helper = helper = '';
				}
                var helperEventId = listItems[i].helperEventId;
				if (helperEventId==null || helperEventId=='undefined') {
					listItems[i].helperEventId = '';
                    helperEventId = '';
				}

				var helperInputField = signupDiv.getElementsByTagName('input');


                var listItemUUID = listItems[i].UUID;
				if (listItemUUID == null || listItemUUID == 'undefined') {
					listItems[i].UUID = listItemUUID = '';
				}
				helperInputField[4].value = listItemUUID;	



				helperInputField[0].value = helper;	
				helperInputField[1].value = notes;
				helperInputField[2].value = helperId;
				helperInputField[3].value = helperEventId;
				
				if (helperId!=null && helperId != "" && login==null) {
					if(helper != null && helper != ''  && helper != 'undefined') {
						helperInputField[0].disabled = 'disabled';
						helperInputField[1].disabled = 'disabled';
					}
					else { 
						helperInputField[0].disabled = false;							
						helperInputField[1].disabled = false;
					}
				} else {
					helperInputField[0].disabled = false;
					helperInputField[1].disabled = false;
		            helperInputField[0].onclick = this.selectHelper.bindAsEventListener(this);
		            helperInputField[0].onfocus = this.selectHelper.bindAsEventListener(this);

				}
				/*  ----  fix for bug id 3498
				if (helperId != null && helperId != "" && this.data['helperID'] == helperId) {
					var aTag = signupDiv.getElementsByTagName("a")[0];
					aTag.style.display = "block";
					aTag.name = i.toString();
					aTag.onclick = this.removeHelper.bindAsEventListener(this, i);
				}
				*/
				
				this.toDrivers.appendChild(signupDiv);
			}
		}

		if (this.data['fromDrivers']!=null) {
			var listItems = this.data['fromDrivers'];
			// Make, append list to view
			for (var i=0; i<listItems.length; i++) {
				var signupDiv = document.createElement('div');
				signupDiv.innerHTML = this.driverFields2;
				signupDiv.className = "driveFormCont";
				signupDiv.id = listItems[i].divName;
				var dataFields = signupDiv.getElementsByTagName('span');
				dataFields[0].innerHTML = listItems[i].day;
				dataFields[1].innerHTML = listItems[i].time;
                listItems[i].location == null ||
                    listItems[i].location == 'undefined'
                        ? listItems[i].location = ''
                        :null;
                dataFields[2].innerHTML = listItems[i].location;

                var helper = listItems[i].helper;
				if (helper==null || helper=='undefined' || helper == 'Volunteer Name Will Go Here') {
					listItems[i].helper = '';
                    helper = '';
				}
                var notes = listItems[i].notes;
				if (notes==null || notes=='undefined') {
					listItems[i].notes = '';
                    notes = '';
				}
                var helperId = listItems[i].helperId;
				if (helperId==null || helperId=='undefined') {
					listItems[i].helperId = '';	
                    helperId = '';
					listItems[i].helper = helper = '';
				}
                var helperEventId = listItems[i].helperEventId;
				if (helperEventId==null || helperEventId=='undefined') {
					listItems[i].helperEventId = '';
                    helperEventId = '';
				}

				var helperInputField = signupDiv.getElementsByTagName('input');

                var listItemUUID = listItems[i].UUID;
				if (listItemUUID == null || listItemUUID == 'undefined') {
					listItems[i].UUID = listItemUUID = '';
				}
				helperInputField[4].value = listItemUUID;	

				
				helperInputField[0].value = helper;	
				helperInputField[1].value = notes;
				helperInputField[2].value = helperId;
				helperInputField[3].value = helperEventId;


				if (helperId!=null && helperId!='' && login==null) {
					if(helper != null && helper != ''  && helper != 'undefined') {
						helperInputField[0].disabled = 'disabled';
						helperInputField[1].disabled = 'disabled';
					}
					else { 
						helperInputField[0].disabled = false;							
						helperInputField[1].disabled = false;
					}
				} else {
					helperInputField[0].disabled = false;
					helperInputField[1].disabled = false;
		            helperInputField[0].onclick = this.selectHelper.bindAsEventListener(this);
		            helperInputField[0].onfocus = this.selectHelper.bindAsEventListener(this);

				}
				/*  ----  fix for bug id 3498
				if (helperId != null && helperId != "" && this.data['helperID'] == helperId) {
					var aTag = signupDiv.getElementsByTagName("a")[0];
					aTag.style.display = "block";
					aTag.name = (listItems.length + i).toString();
					aTag.onclick = this.removeHelper.bindAsEventListener(this, i);
				}
				*/

				this.fromDrivers.appendChild(signupDiv);
			}
		}	

		//this.sortDrivers();		
		selectedDays = this.sortSelectedDays(selectedDays);
		
		var dateString = '';
	
		var startDT = this.data['startDT'];
		var endDT = this.data['endDT']; ;
				
		dateString = this.data['startDT'] +" to "+ this.data['endDT'];
		
		var selectedString = '';
		
		for (var i=0; i<selectedDays.length; i++) {
			if (i!=0) {selectedString+=' and '}
			selectedString += selectedDays[i];
		}
			
		dateString += "<br>" + selectedString;
	
		document.getElementById('dateString').innerHTML = dateString; 

	},

    reloadForEdit:function() {
		this.toDrivers = document.getElementById("toDrivers");
		this.fromDrivers = document.getElementById("fromDrivers");		

		if (this.data['toDrivers']!=null) {
			var listItems = this.data['toDrivers'];
			for (var i=0; i<listItems.length; i++) {
                var divName = listItems[i].divName;
                if (divName == null)
                    return;
				var signupDiv = document.getElementById(divName);
				if (listItems[i].helper!=null &&
                                listItems[i].helper!='' && 
                                listItems[i].helper!='undefined') {
				    var helperInputField =
                            signupDiv.getElementsByTagName('input');
				    helperInputField[4].value = listItems[i].helper;	
                    var notes = listItems[i].notes;
                    if (notes == null || notes == 'undefined')
                        notes = '';
				    helperInputField[5].value = notes;
                    var helperId = listItems[i].helperId;
				    helperInputField[6].value = helperId;
                    var helperEventId = listItems[i].helperEventId;
				    helperInputField[7].value = helperEventId;
				}
			}
		}

		if (this.data['fromDrivers']!=null) {
			var listItems = this.data['fromDrivers'];
			for (var i=0; i<listItems.length; i++) {
				var signupDiv = document.getElementById(listItems[i].divName);
				if (listItems[i].helper!=null &&
                                listItems[i].helper!='' && 
                                listItems[i].helper!='undefined') {
				    var helperInputField =
                            signupDiv.getElementsByTagName('input');
				    helperInputField[4].value = listItems[i].helper;	
                    var notes = listItems[i].notes;
                    if (notes == null || notes == 'undefined')
                        notes = '';
				    helperInputField[5].value = notes;
                    var helperId = listItems[i].helperId;
				    helperInputField[6].value = helperId;
                    var helperEventId = listItems[i].helperEventId;
				    helperInputField[7].value = helperEventId;
                }
			}
		}
    },

	loadStep2:function() {			

		this.loadStep1();

		if (this.sideNavBar!=null)
			this.sideNavBar.className = 'navStep2';

		this.backButton.style.display = 'block';
		
		document.getElementById('topInstructions').innerHTML = "Take a moment to review. Interested in adding your name (or someone else's) as a volunteer? Do so by clicking on the volunteer box.";
	},
	
	goRSVP:function() {

		var items = this.data['item'];
		var signedUp = false;
			
		if (items!=null) {			
			for (var i=0; i<items.length; i++) {
				var item = items[i];
				var helperDiv = document.getElementById(item.divName);
				var helperInputs = helperDiv.getElementsByTagName('input');
	
				if (helperInputs[0]!= null) {
                    var value = helperInputs[0].value;
                    if (helperInputs[0].disabled == false
                            && value!='' && value !=null
                            && value != 'Drivers Sign Up Here') {
					    signedUp = true;
					    item.helper = value;
				        if (helperInputs[1]!=null) {
                            value = helperInputs[1].value;
					        if (helperInputs[1].disabled == false
                                    && value!='' && value !=null
                                    && value != 'Drivers Write Notes Here') {
						        item.notes = value;
					        }
				        }
                        var helperId = this.data["helperID"];
                        if ((helperId == null) || (helperId == "")) {
                            helperId = this.listObj.helperID;
                        }
                        item.helperId = helperId;
                        item.helperEventId = helperInputs[3].value;
                    }
				}
				items[i] = item;		
			}
			if (signedUp) {
				this.data['item'] = items;
				this.doSave();
			} else {
		  		showMessageDialog("Please Sign-Up for one or more days",
                                "Request",250,100, null, true);
			}
			return false;	
		}
		this.selectedStep=5;
		this.loadTemplate();
	},
	

	dayClicked: function(evt) {
		var e = evt.target ? evt.target : evt.srcElement;
		if (e.className == 'selected') {		
			this.deleteDriver(e);
		} else {
			this.addDriver(e);
		}
		return false;
	},

	
	timeChanged:function(tdd, newValue, ov) {
      if (tdd == this.fromTime) {
         var newValue = parseInt(newValue);
         var ov = parseInt(ov);
         var tt = parseInt(this.toTime.getValue());
         var tt = newValue + (tt - ov);
         if (tt >= 1440) {
           tt = tt - 1440; // next day
         } else if (tt < 0) {
            tt = 1440 + tt;
         }
       }
   },
	
	
	
	//  Add Driver row controlled by the days of the week.
	addDriver:function (source) {
		source.className = 'selected';
		
		//  Create/Add Driver
		var signupDiv = document.createElement('div');
		signupDiv.innerHTML = this.driverFields;
		signupDiv.className = "driveFormCont";
		var dayField = signupDiv.getElementsByTagName('input');
		dayField[0].value = source.name;
		dayField[0].disabled = 'disabled';
		signupDiv.id = "from" + source.id;
		//
		// Set timePicker..	
		var timePicker = new Af.TimeDropDown(dayField[1],dayField[2],
                        this, signupDiv, signupDiv);
		timePicker.setValue("570");	

		if (this.data['fromDrivers']!=null) {
			var itemList = this.data['fromDrivers']; 
			for (var i=0; i<itemList.length; i++) {
				if (itemList[i]['divName']==signupDiv.id) {
					dayField[1].value = itemList[i]['time'];
					dayField[3].value = itemList[i]['location'];

                    var helper = itemList[i]['helper'];
                    helper==null || helper=='undefined'
                    ? helper='':null;
			        dayField[4].value = helper;

                    var notes = itemList[i]['notes'];
                    notes==null || notes=='undefined'
                    ? notes='':null;
			        dayField[5].value = notes;

                    var helperId = itemList[i]['helperId'];
                    helperId==null || helperId=='undefined'
                    ? helperId='':null;
			        dayField[6].value = helperId;

                    var helperEventId = itemList[i]['helperEventId'];
                    helperEventId==null || helperEventId=='undefined'
                    ? helperEventId='':null;
			        dayField[7].value = helperEventId;
				}
			}
        }
		
        if (dayField[4] != null) {
            dayField[4].onclick = this.selectHelper.bindAsEventListener(this);
		    dayField[4].onfocus = this.selectHelper.bindAsEventListener(this);
			dayField[4].onkeypress = HJ.ignoreAnyKeyPress;
        }
        if (dayField[5] != null) {
			        dayField[5].disabled = false;
        }

		var signupDiv2 = signupDiv.cloneNode(true);
		signupDiv2.id = "to" + source.id;

		var dayField2= signupDiv2.getElementsByTagName('input');
		
		var timePicker2 = new Af.TimeDropDown(dayField2[1],dayField2[2],
                        this, signupDiv2, signupDiv2);
		timePicker2.setValue("570");
		
		if (this.data['toDrivers']!=null) {
			var itemList = this.data['toDrivers']; 
			for (var i=0; i<itemList.length; i++) {
				if (itemList[i]['divName']==signupDiv2.id) {
					dayField2[1].value = itemList[i]['time'];
					dayField2[3].value = itemList[i]['location'];

                    var helper = itemList[i]['helper'];
                    helper==null || helper=='undefined'
                    ? helper='':null;
			        dayField2[4].value = helper;

                    var notes = itemList[i]['notes'];
                    notes==null || notes=='undefined'
                    ? notes='':null;
			        dayField2[5].value = notes;

                    var helperId = itemList[i]['helperId'];
                    helperId==null || helperId=='undefined'
                    ? helperId='':null;
			        dayField2[6].value = helperId;

                    var helperEventId = itemList[i]['helperEventId'];
                    helperEventId==null || helperEventId=='undefined'
                    ? helperEventId='':null;
			        dayField2[7].value = helperEventId;
				}
			}
		}

        if (dayField2[4] != null) {
            dayField2[4].onclick = this.selectHelper.bindAsEventListener(this);
		    dayField2[4].onfocus = this.selectHelper.bindAsEventListener(this);
			dayField2[4].onkeypress = HJ.ignoreAnyKeyPress;
        }
        if (dayField[5] != null) {
			        dayField[5].disabled = false;
        }

		this.fromDrivers.appendChild(signupDiv);	
		this.toDrivers.appendChild(signupDiv2);

		this.sortDrivers();		
		return false;
	},
	
	deleteDriver:function(source) {
	    source.className = '';
	    var toName = "to" + source.id;
		var fromName = "from" + source.id;
		var toDiv = document.getElementById(toName);
		var fromDiv = document.getElementById(fromName);
		this.fromDrivers.removeChild(fromDiv);
		this.toDrivers.removeChild(toDiv);
		
		return false;
	},

	sortDrivers:function() {		
		var tempToDrivers = this.toDrivers.cloneNode(true);
		tempToDrivers.id="tempToSort";
		var tempFromDrivers = this.fromDrivers.cloneNode(true);
		tempFromDrivers.id="tempFromSort";
	
		var preSort = document.getElementById("preSort");
		preSort.appendChild(tempToDrivers);
		preSort.appendChild(tempFromDrivers);
		
		while (this.toDrivers.hasChildNodes()) {this.toDrivers.removeChild(this.toDrivers.firstChild);}
		while (this.fromDrivers.hasChildNodes()) {this.fromDrivers.removeChild(this.fromDrivers.firstChild);}
		
		for (var i=0; i<7; i++) {
			var toIndex = "today" + i;
			var fromIndex = "fromday" + i;
			var toDiv = document.getElementById(toIndex);
			if (toDiv) {
				var toDivFields = toDiv.getElementsByTagName('input');
						// Set timePicker..	
				var timePicker = new Af.TimeDropDown(toDivFields[1],toDivFields[2],
		                        this, toDiv, toDiv);
					
				this.toDrivers.appendChild(toDiv);
				toDivFields[4].onclick = this.selectHelper.bindAsEventListener(this);
			    toDivFields[4].onfocus = this.selectHelper.bindAsEventListener(this);
				toDivFields[4].onkeypress = HJ.ignoreAnyKeyPress;
				
			}

			var fromDiv = document.getElementById(fromIndex);
			if (fromDiv) {
				var fromDivFields = fromDiv.getElementsByTagName('input');
						// Set timePicker..	
				var timePicker = new Af.TimeDropDown(fromDivFields[1],fromDivFields[2],
		                        this, fromDiv, fromDiv);
				
				this.fromDrivers.appendChild(fromDiv);
				fromDivFields[4].onclick = this.selectHelper.bindAsEventListener(this);
			    fromDivFields[4].onfocus = this.selectHelper.bindAsEventListener(this);
				fromDivFields[4].onkeypress = HJ.ignoreAnyKeyPress;
				
			}
		}		
		while (preSort.hasChildNodes()) {preSort.removeChild(preSort.firstChild);}
		return false;
	},
	
	sortSelectedDays:function(selectedDays) {
		var orderedDays = new Array();
		var dayOrder = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
		for (var i=0; i<dayOrder.length; i++) {
			for (var j=0; j<selectedDays.length; j++) {
				if (selectedDays[j]==dayOrder[i]) {
					orderedDays.push(selectedDays[j]);
				}	
			}
		}
		return orderedDays;
	}
});

