var _bolPreview = false;
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };//2007-09 TICKET:26446

// Form Preview ===================================================================================
function loadForm()
{
	try
	{
		var refWindow;
		if (window.dialogArguments) refWindow = window.dialogArguments;
		else refWindow = window.opener;
		
		if (refWindow)
		{
			
			var objXML = refWindow._objFormXml;
			if (objXML)
			{	
				if (objXML.documentElement.getAttribute("frm_preview") == "1")
				{
					_bolPreview = true;

					objXML.documentElement.setAttribute("frm_preview", "0");
					var objFormXsl = jsXML.createDOMDocument();
					objFormXsl.load("/iWeb/DesktopModules/Forms/xsl/frm_display.xslt");
					var strOut = jsXML.transFormNode(objXML, objFormXsl);
					
					//alert(strOut);
					document.getElementById("divFormDisplay").innerHTML = strOut;
					
					// Set the default dates
					if (objXML.documentElement.getAttribute("frm_reserve_flag") == "1")
					{
						var objDate = new Date();
						var strDate = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear();   
						document.getElementById("event_date").value = strDate;
						document.getElementById("event_end_date").value = strDate;
					}      
					
					// Create the field validation array - only done on form preview mode
					var flds = objXML.documentElement.selectNodes("//field");
					for (var i=0; i < flds.length; i++)
					{
						_arValidate.push(new fld(flds[i].getAttribute("fld_id"), flds[i].getAttribute("fld_type"), 
								flds[i].getAttribute("fld_name"), flds[i].getAttribute("fld_req"), 
								flds[i].getAttribute("fld_base"), + flds[i].getAttribute("fld_min"), 
								flds[i].getAttribute("fld_max")));
					}
					
					// Create the option validation array - only done on form preview mode
					var opts = objXML.documentElement.selectNodes("//option");
					for (var i=0; i < opts.length; i++)
					{
						_arValidateOptions.push(new fldOption(opts[i].getAttribute("fld_id"), 
								opts[i].getAttribute("fld_parent_id"), opts[i].getAttribute("fld_name"), 
								opts[i].getAttribute("fld_price")));
					}
					
					// Set default charge reserve field interval
					var objChrgRes = objXML.documentElement.selectSingleNode("//field[@fld_type = 'chargereserve']");
					if (objChrgRes)
					{
						setDefaultHours(objChrgRes.getAttribute("fld_id"), objChrgRes.getAttribute("fld_def"));
					}
					
				}
			}
		}
	}
	catch(e) { log(e, 'loadForm'); }
}

// Form Field Functions ===========================================================================
function setDefaultHours(fldId, fldDef)
{
	if (!fldDef) fldDef = 2;
	else fldDef = parseInt(fldDef);
	
	if (!document.frm_display.start_hour) return;
	
	var startHour = document.frm_display.start_hour.options[document.frm_display.start_hour.selectedIndex].value;
	var startMin = document.frm_display.start_minute.options[document.frm_display.start_minute.selectedIndex].value;
	var startAmPm = document.frm_display.start_ampm.options[document.frm_display.start_ampm.selectedIndex].value;
	
	var endHour = document.frm_display.end_hour.options[document.frm_display.end_hour.selectedIndex].value;
	var endMin = document.frm_display.end_minute.options[document.frm_display.end_minute.selectedIndex].value;
	var endAmPm = document.frm_display.end_ampm.options[document.frm_display.end_ampm.selectedIndex].value
	
	var objStartDate = buildDateAmPm(document.frm_display.event_date.value, startHour, startMin, startAmPm);
	var objEndDate = buildDateAmPm(document.frm_display.event_end_date.value, endHour, endMin, endAmPm);

	var selPrice = eval("document.frm_display.prc_" + fldId);
	var curRate = parseFloat(selPrice.options[selPrice.selectedIndex].value.split("_")[1]);
	
	var objDate = Date.addDate(objStartDate, Date.HOUR, fldDef);
	document.frm_display.event_end_date.value = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear();
	endHour = objDate.getHours();
	if (endHour == 0)
	{
		endHour = 12;
		endAmPm = 'AM';
	}
	else if (endHour > 12)
	{
		endHour = endHour - 12;
		endAmPm = 'PM'; 
	}
	else endAmPm = 'AM';
	
	endMin = "" + objDate.getMinutes();
	endMin = (endMin.length == 1) ? "0" + endMin : endMin;
	
	document.frm_display.end_hour.value = endHour;
	document.frm_display.end_ampm.value = endAmPm;
	document.frm_display.end_minute.value = endMin;
	
	eval("document.frm_display.qty_" + fldId).value = fldDef;
	eval("document.frm_display.ext_" + fldId).value = formatCurrency(fldDef * curRate);

	calcTotal();			
}

function recalcHours(fldId, min, max, bolValidate)
{
	var bolReturn = true;
	
	if (fldId)
	{
		var startHour = document.frm_display.start_hour.options[document.frm_display.start_hour.selectedIndex].value;
		var startMin = document.frm_display.start_minute.options[document.frm_display.start_minute.selectedIndex].value;
		var startAmPm = document.frm_display.start_ampm.options[document.frm_display.start_ampm.selectedIndex].value;
		
		var endHour = document.frm_display.end_hour.options[document.frm_display.end_hour.selectedIndex].value;
		var endMin = document.frm_display.end_minute.options[document.frm_display.end_minute.selectedIndex].value;
		var endAmPm = document.frm_display.end_ampm.options[document.frm_display.end_ampm.selectedIndex].value
		
		var objStartDate = buildDateAmPm(document.frm_display.event_date.value, startHour, startMin, startAmPm);
		var objEndDate = buildDateAmPm(document.frm_display.event_end_date.value, endHour, endMin, endAmPm);

		var intHours = Date.compare(objEndDate, objStartDate)/1000/60/60;
		var selPrice = eval("document.frm_display.prc_" + fldId);
		var curRate = parseFloat(selPrice.options[selPrice.selectedIndex].value.split("_")[1]);
		
		if (bolValidate)
		{
			if (min == -1) min = 0;
			
			if (intHours < min)
			{
				alert('The minimum number of hours that can be specified is ' + min);
				var objDate = Date.addDate(objStartDate, Date.HOUR, min);
				document.frm_display.event_end_date.value = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear();
				endHour = objDate.getHours();
				if (endHour == 0)
				{
					endHour = 12;
					endAmPm = 'AM';
				}
				else if (endHour > 12)
				{
					endHour = endHour - 12;
					endAmPm = 'PM'; 
				}
				else endAmPm = 'AM';
				
				intHours = min;
				endMin = "" + objDate.getMinutes();
				endMin = (endMin.length == 1) ? "0" + endMin : endMin;
				
				document.frm_display.end_hour.value = endHour;
				document.frm_display.end_ampm.value = endAmPm;
				document.frm_display.end_minute.value = endMin;
				bolReturn = false;
			}
			
			if (max != -1)
			{
				if (intHours > max)
				{
					alert('The maximum number of hours that can be specified is ' + max);
					var objDate = Date.addDate(objStartDate, Date.HOUR, max);
					document.frm_display.event_end_date.value = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear();
					endHour = objDate.getHours();
					if (endHour == 0)
					{
						endHour = 12;
						endAmPm = 'AM';
					}
					else if (endHour > 12)
					{
						endHour = endHour - 12;
						endAmPm = 'PM'; 
					}
					else endAmPm = 'AM';
					
					intHours = max;
					endMin = "" + objDate.getMinutes();
					endMin = (endMin.length == 1) ? "0" + endMin : endMin;

					document.frm_display.end_hour.value = endHour;
					document.frm_display.end_ampm.value = endAmPm;
					document.frm_display.end_minute.value = endMin;
					bolReturn = false;
				}
			}
		}
		
		intHours = intHours > 0 ? intHours : 0;
		eval("document.frm_display.qty_" + fldId).value = intHours;
		eval("document.frm_display.ext_" + fldId).value = formatCurrency(intHours * curRate);
		
		calcTotal();
		return bolReturn;
	}
}

function recalcDays(fldId, min, max, bolValidate)
{
	var bolReturn = true;
	var bolDays = document.frm_display.start_hour ? false : true;
	
	var intDays = Date.compare(document.frm_display.event_end_date.value, document.frm_display.event_date.value)/1000/60/60/24;
	// If this is a day reservartion form, increase the days by 1 - 12/14/2006 to 12/14/2006 should be 1
	if (bolDays) intDays++;
	var selPrice = eval("document.frm_display.prc_" + fldId);
	var curRate = parseFloat(selPrice.options[selPrice.selectedIndex].value.split("_")[1]);

	if (bolValidate)
	{
		if (intDays < 1 & bolDays)
		{
			alert('The end date must be equal to or greater than the start date');
			//var objDate = Date.addDate(new Date(document.frm_display.event_date.value), Date.DAY, 1);
			//var strDate = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear(); 
			intDays = 1;
			document.frm_display.event_end_date.value = document.frm_display.event_date.value; 
			bolReturn = false;
		}
		
		if (intDays < 1 & !bolDays)
		{
			alert('The end must be at least one day after the start date');
			var objDate = Date.addDate(new Date(document.frm_display.event_date.value), Date.DAY, 1);
			var strDate = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear(); 
			intDays = 1;
			document.frm_display.event_end_date.value = strDate; 
			bolReturn = false;
		}
		
		if (min != -1)
		{
			if (intDays < min)
			{
				alert('The minimum number of days that can be specified is ' + min);
				var objDate = Date.addDate(new Date(document.frm_display.event_date.value), Date.DAY, min);
				var strDate = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear(); 
				intDays = min;
				document.frm_display.event_end_date.value = strDate;
				bolReturn = false;
			}
		}

		if (max != -1)
		{
			if (intDays > max)
			{
				alert('The maximum number of days that can be specified is ' + max);
				var objDate = Date.addDate(new Date(document.frm_display.event_date.value), Date.DAY, max);
				var strDate = (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getYear(); 
				intDays = max;
				document.frm_display.event_end_date.value = strDate;
				bolReturn = false;
			}
		}
	}		
	
	intDays = intDays > 0 ? intDays : 0;
	eval("document.frm_display.qty_" + fldId).value = intDays;
	eval("document.frm_display.ext_" + fldId).value = formatCurrency(intDays * curRate);
	document.frm_display.event_days.value = Date.compare(document.frm_display.event_end_date.value, document.frm_display.event_date.value)/1000/60/60/24;
	
	calcTotal();
	return bolReturn;
}

function recalcCharge(fldId, min, max)
{
	var objQty = eval("document.frm_display.qty_" + fldId);
	var objPrc = eval("document.frm_display.prc_" + fldId);
	if (objQty)
	{
		eval("document.frm_display.ext_" + fldId).value = formatCurrency(objQty.value * objPrc.value);
		calcTotal();
	}
}

function recalcChargeGroup(fldId, min, max)
{
	var objQty = eval("document.frm_display.qty_" + fldId);
	var objPrc = eval("document.frm_display.prc_" + fldId);
	var prc = objPrc.options[objPrc.selectedIndex].value.split("_")[1];

	if (objQty)
	{
		eval("document.frm_display.ext_" + fldId).value = formatCurrency(objQty.value * prc);
		calcTotal();
	}
}
function calcTotal()
{
	var monTotal = 0;
	
	for(var i=0; i<document.frm_display.elements.length; i++)
	{
		if (document.frm_display.elements[i].name.substr(0, 4) == 'ext_')
		{	
			monTotal += parseFloat(document.frm_display.elements[i].value.replace(/[$]|[,]/g,''));
		}
	}
	document.frm_display.chrgTotal.value = formatCurrency(monTotal);
}

// Form Validation ================================================================================
var _arValidate = new Array();

// Field validation constructor
function fld(fld_id, fld_type, fld_name, fld_req, fld_base, fld_min, fld_max, fld_map)
{
	this.fld_id			= fld_id;
	this.fld_type		= fld_type;
	this.fld_name		= fld_name;
	this.fld_req		= fld_req;
	this.fld_base		= fld_base;
	this.fld_min		= fld_min;
	this.fld_max		= fld_max;
	this.fld_map		= fld_map;
}

var _arValidateOptions = new Array();

// field option constructor
function fldOption(fld_id, fld_parent_id, fld_name, fld_price)
{
	this.fld_id					= fld_id;
	this.fld_parent_id	= fld_parent_id;
	this.fld_name				= fld_name;
	this.fld_price			= fld_price;
}

function validate()
{
	//buildValidate();
	var objFld;
	var objFldVal;
	var fldMin;
	var fldMax;
	var optCounter = 0;
	var fldId;
	var strErr = "";	
	
	for (var i=0; i<_arValidate.length; i++)
	{
		objFld			= null;
		objFldVal		= null;
		fldMin			= parseInt(_arValidate[i].fld_min);
		fldMax			= parseInt(_arValidate[i].fld_max);
		fldId				= parseInt(_arValidate[i].fld_id);
		optCounter	= 0;

		switch(_arValidate[i].fld_type)
		{
			// Charge and Charge Group
			case 'charge': case 'chargegroup':
				objFld = eval("document.frm_display.qty_" + _arValidate[i].fld_id);
				objFldVal = parseInt(objFld.value);

				if (objFldVal < fldMin && fldMin != -1) 
					strErr = "The minimum quantity that can be specified for this field is " + fldMin + ".";
				else if (objFldVal > fldMax && fldMax != -1) 
					strErr = "The maximum quantity that can be specified for this field is " + fldMax + ".";
					
				break;
			
			// Open Charge Field
			case 'chargeopen':
				objFld = eval("document.frm_display.ext_" + _arValidate[i].fld_id);	
				objFldVal = objFld.value.replace('$', '');
				objFld.value = objFldVal;
				objFldVal = objFldVal.replace(',', '');
				
				if (_arValidate[i].fld_req == 1 || objFldVal.length > 0)
				{
					if (!reCurrency.test(objFldVal))
					{
						strErr = "Please enter a valid currency amount for the " + _arValidate[i].fld_name + " field.";
					}
				}
				
				objFldVal = parseFloat(objFldVal); 
				if (isNaN(objFldVal))
				{
					strErr = "Please enter a valid currency amount for the " + _arValidate[i].fld_name + " field.";
				}
				else
				{
					if (objFldVal < 0)
						strErr = "An amount greater than or equal to 0 must be entered for this field";
					
					if (objFldVal < fldMin && fldMin != -1) 
						strErr = "The minimum amount that can be specified for this field is $" + fldMin + ".";
					
					if (objFldVal > fldMax && fldMax != -1) 
						strErr = "The maximum amount that can be specified for this field is $" + fldMax + ".";
				}
	
				break;
			
			// Charge Reserve
			case 'chargereserve':
				if (_arValidate[i].fld_base == 'day')
				{
					if (!recalcDays(fldId, fldMin, fldMax, true)) return false;
				}
				else
				{
					if (!recalcHours(fldId, fldMin, fldMax, true)) return false;
				}
			
				break;
			
			// Checkbox
			case 'checkbox':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				
				if (_arValidate[i].fld_req == 1 && !objFld.checked)
				{
					strErr = "The " + _arValidate[i].fld_name + " is required. Please check this field to continue.";
				}
				break;
				
			// Radio and checkbox group	
			case 'checkboxgroup': case 'radio':
				
				for (var j=0; j<_arValidateOptions.length; j++)
				{
					if (_arValidateOptions[j].fld_parent_id == fldId)
					{
						if (objFld == null) objFld = eval("document.frm_display.fld_" + _arValidateOptions[j].fld_id);
						if (eval("document.frm_display.fld_" + _arValidateOptions[j].fld_id + ".checked")) optCounter++;
					}
				}
				
				if (_arValidate[i].fld_type == 'radio')
				{
					if (_arValidate[i].fld_req == 1)
					{
						if (optCounter < 1)
						strErr = "You must select at least one option from this group.";
					}
				}
				else
				{
					if (optCounter < fldMin && fldMin != -1)
						strErr = "The minimum number of selections that can be made for this group is " + fldMin + ".";
					else if (optCounter > fldMax && fldMax != -1)
						strErr = "The maximum number of selections that can be made for this group is " + fldMax + ".";
				}
						
				break;
			
			// listbox and combobox	
			case 'listbox': case 'combobox':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				
				if (_arValidate[i].fld_type == 'listbox')
				{
					for (var j=0; j<objFld.options.length; j++)
					{
						if (objFld.options[j].selected) optCounter++;
					}
					
					if (optCounter < fldMin && fldMin != -1)
						strErr = "The minimum number of selections that can be made for this group is " + fldMin + ".";
					else if (optCounter > fldMax && fldMax != -1)
						strErr = "The maximum number of selections that can be made for this group is " + fldMax + ".";
				}
				else
				{
					if (objFld.selectedIndex == 0 && _arValidate[i].fld_req == 1)
						strErr = "You must select one option from this field.";
				}		
				break;
			
			// File Upload
			case 'file':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				objFldVal = objFld.value;
				strFileType = _arValidate[i].fld_base;
				//alert(strFileType);
				if (_arValidate[i].fld_req == 1 && objFldVal.length == 0)
				{
					strErr = "The " + _arValidate[i].fld_name + " field is required. Please select a file to upload.";
				}
				else if (objFldVal.length > 0)
				{
					var arFileParts = objFldVal.split(".");
					var strExt = arFileParts[arFileParts.length - 1].toLowerCase();
					
					switch (strFileType)
					{
						case 'image':
							if (strExt != 'gif' && strExt != 'jpeg' && strExt != 'jpg' && strExt != 'bmp' && strExt != 'png')
								strErr = "Please select a valid image type (.gif, .jpeg, .jpg, .bmp, .png) for the " + _arValidate[i].fld_name + " field.";
							break;
							
						case 'doc':
							if (strExt != 'doc' && strExt != 'docx' && strExt != 'xls' && strExt != 'xlsx' && strExt != 'ppt' && strExt != 'pptx' && strExt != 'pdf' && strExt != 'zip')
								strErr = "Please select a valid document type (.doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf, .zip) for the " + _arValidate[i].fld_name + " field.";
						break;
							
						case 'all':
							if (strExt != 'doc' &&strExt != 'docx' && strExt != 'xls' && strExt != 'xlsx' && strExt != 'ppt' && strExt != 'pptx' && strExt != 'pdf' && strExt != 'zip' && strExt != 'gif' && strExt != 'jpeg' && strExt != 'jpg' && strExt != 'bmp' && strExt != 'png')
								strErr = "Please select a valid document or image type (.doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf, .zip, .gif, .jpeg, .jpg, .bmp, .png) for the " + _arValidate[i].fld_name + " field.";
						break;
					}
				}
				break;
			
			// text, textarea 
			case 'textbox': case 'textarea': case 'text': case 'password':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				/* remove space added to keep xsl behaving */
				if (objFld.value == " ") objFld.value = "";

				objFldVal = objFld.value;
				objFldVal = objFldVal.trim();//2007-09 TICKET:26446
				objFldVal = objFldVal.replace(/^[^\w\d\-\_\+\=\(\)\*\&\^\%\$\#\@\!\~\`\[\]\{\}\:\;\"\'\<\>\,\.\/\\\?]+$/g, ''); //2008-04 TICKET:35713
				
				//log(_arValidate[i].fld_name + ' length -' + objFldVal.length + '-');
				//log(_arValidate[i].fld_name + '; objFldVal = -' + objFldVal + '-');
				if (_arValidate[i].fld_req == 1 && objFldVal.length == 0)
				{
					strErr = "The " + _arValidate[i].fld_name + " field is required. Please enter a value for this field.";
				}
				break;
			
			// email 
			case 'email':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				objFldVal = objFld.value;
				objFldVal = objFldVal.trim();//2007-09 TICKET:26446

				if (_arValidate[i].fld_req == 1 || objFldVal.length > 0)
				{
					if (!reEmail.test(objFldVal) || objFldVal.match(reEmailIllegalChars))
					{
						strErr = "Please enter a valid email address for the " + _arValidate[i].fld_name + " field.";
					}
				}
				break;
			
			// numeric 
			case 'numeric':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				objFldVal = objFld.value;
				
				if (_arValidate[i].fld_req == 1 || objFldVal.length > 0)
				{
					if (!reInteger.test(objFldVal))
					{
						strErr = "Please enter a valid number for the " + _arValidate[i].fld_name + " field.";
					}
				}
				break;
			
			// currency 	
			case 'currency':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				objFldVal = objFld.value; //.replace(reNonFloat, '');
				//objFld.value = objFldVal;
				
				if (_arValidate[i].fld_req == 1 || objFldVal.length > 0)
				{
					if (!reCurrency.test(objFld.value))
					{
						strErr = "Please enter a valid currency amount for the " + _arValidate[i].fld_name + " field.";
					}
				}
				break;
			
			// date 	
			case 'date':
				objFld = eval("document.frm_display.fld_" + _arValidate[i].fld_id);
				objFldVal = objFld.value; //.replace(reNonFloat, '');
				//objFld.value = objFldVal;
				
				if (_arValidate[i].fld_req == 1 || objFldVal.length > 0)
				{
					if (!isDate(objFld.value))
					{
						strErr = "Please enter a valid date in the format \"m/d/yyyy\" for the " + _arValidate[i].fld_name + " field.";
					}
				}
				break;
		}
				
		if (strErr.length > 0)
		{
			alert(strErr);
			objFld.focus();
			return false;
		}
	}
	
	//Validate start and end times
	if (document.frm_display.start_hour)
	{
	  //Ticket 40330 10/20/2008
	  if(document.frm_display.event_date)
	  {
	    if(!isDate(document.frm_display.event_date.value))
	    {
	      alert("The start date is not a valid date. Please enter a valid date in the format \"m/d/yyyy\"");  
	      document.frm_display.event_date.focus();
	      return false;
	    }
	  }
	  
		if (!ValidateSelection(document.frm_display.start_hour, 'Please select a valid start time.')) {return false;}
		if (!ValidateSelection(document.frm_display.start_minute, 'Please select a valid start time.')) {return false;}
		
		var bolCheckEnd = true;
	
		if (bolCheckEnd)
		{
			if (!ValidateSelection(document.frm_display.end_hour, 'Please select a valid end time.')) {return false;}
			if (!ValidateSelection(document.frm_display.end_minute, 'Please select a valid end time.')) {return false;}
			
			var startHour = document.frm_display.start_hour.options[document.frm_display.start_hour.selectedIndex].value;
			var startMin = document.frm_display.start_minute.options[document.frm_display.start_minute.selectedIndex].value;
			var endHour = document.frm_display.end_hour.options[document.frm_display.end_hour.selectedIndex].value;
			var endMin = document.frm_display.end_minute.options[document.frm_display.end_minute.selectedIndex].value;
			
			if (document.frm_display.start_ampm.options[document.frm_display.start_ampm.selectedIndex].value == 'PM') 
			{	
				if (startHour != '12') {startHour = '' + (parseInt(startHour) + 12);}
			}		
			else
			{
				if (startHour == '12') {startHour = '0';}
			}
			
			if (document.frm_display.end_ampm.options[document.frm_display.end_ampm.selectedIndex].value == "PM") 
			{
				if (endHour != '12') {endHour = '' + (parseInt(endHour) + 12);}
			}
			else
			{
				if (endHour == '12') {endHour = '0';}
			}
		}
		
		var intStart = parseInt(startHour + startMin);
		
		if (!intStart > 99) 
		{
			alert('Please enter a valid start time for the event.');
			document.frm_display.start_hour.focus();
			return false;
		}
		if (!ValidateSelection(document.frm_display.start_ampm, 'Please specify either AM or PM for the start time.')) {return false;}
		
		if (bolCheckEnd)
		{
			var intEnd = parseInt(endHour + endMin);
			if (!intEnd > 99) 
			{
				alert('Please enter a valid end time for the event.');
				document.frm_display.end_hour.focus();
				return false;
			}
			if (!ValidateSelection(document.frm_display.end_ampm, 'Please specify either AM or PM for the end time.')) {return false;}
			
			var objStartDate = new Date(document.frm_display.event_date.value);
			objStartDate.setHours(startHour, startMin);
			//log(startHour + " " + startMin);
			var objEndDate =  new Date(document.frm_display.event_end_date.value);
			objEndDate.setHours(endHour, endMin);
			//log(objEndDate);
			//log(objStartDate);
			if (Date.compare(objEndDate, objStartDate) < 0)
			{	
				alert ('Please enter an end time that is equal to or later than the start time.')
				document.frm_display.end_hour.focus();
				return false;
			}
		}
	
		if (document.frm_display.event_end_date.value != '')
		{
		  //Ticket 40330 10/20/2008
		  if(document.frm_display.event_end_date)
	    {
		    if(!isDate(document.frm_display.event_end_date.value))
	      {
	        alert("The end date is not a valid date. Please enter a valid date in the format \"m/d/yyyy\"");   
	        document.frm_display.event_end_date.focus();
	        return false;
	      }
		  }
	    
			if (Date.compare(document.frm_display.event_end_date.value, document.frm_display.event_date.value) < 0)
			{
				alert("The end date for the event must be equal to or later than the start date");
				document.frm_display.event_end_date.focus();
				return false;
			}
		}
		else { document.frm_display.event_end_date.value = document.frm_display.event_date.value; }
		
		document.frm_display.event_days.value = Date.compare(document.frm_display.event_end_date.value, document.frm_display.event_date.value) / 86400000;
	}
	
		//Ticket 62117 9/9/09
	if(typeof(requireConfirmationAlert) !== 'undefined' && requireConfirmationAlert === true) {
	  if(confirm('Are you sure that you want to submit this form?')=== false) {
	    return false;
	  }
	}

  return true;
}

var _objResultsXML;
function Submit_onclick()
{
	var bSubmit = document.getElementById("btnSubmit");
	if (bSubmit) bSubmit.disabled = true;
	if (!validate()) { if (bSubmit) bSubmit.disabled = false; return; }
	
	//TICKET 56492 4/30/2009  Create a 5 digit key to make file names unique
	var d = new Date();
	var t = d.getTime().toString();
	t = t.slice(t.length - 5);
	if(document.getElementById('file_key')) {
	  document.getElementById('file_key').value = t;
	}
	
	var debugChar = "";
	var strSubmitXML = "<form_post frm_name='" + xmlEscape(document.frm_display.frm_name.value) + "' " + 
	  "frm_submit_text='" + xmlEscape(document.frm_display.frm_submit_text.value) + "' >" + debugChar;
	var chargeTotal = 0;
	
	for (var i=0; i<_arValidate.length; i++)
	{
		var strType = _arValidate[i].fld_type;
		var intFldId = _arValidate[i].fld_id;
		var intQty = 0;
		
		strSubmitXML += "<field_post fld_id='" + intFldId + "' " + "fld_map='" + _arValidate[i].fld_map + "' " +
		  "fld_type='" + strType + "' fld_name='" + xmlEscape(_arValidate[i].fld_name) + "' ";
		switch (strType)
		{
			case 'charge':
				if (eval("document.frm_display.qty_" + intFldId).value.length > 0)
					intQty = parseInt(eval("document.frm_display.qty_" + intFldId).value);

			  var fltPrc = parseFloat(eval("document.frm_display.prc_" + intFldId).value);
				strSubmitXML += "fld_data_price='" + fltPrc + "' " + 
				  "fld_ext_price='" + (fltPrc * intQty) + "' " +
					"fld_data_val='" + intQty + "' />"  + debugChar;
				chargeTotal += (fltPrc * intQty);
				break;
			
			case 'chargeopen':
				var fldPrc = parseFloat(eval("document.frm_display.ext_" + intFldId).value.replace(/[,]/g,''));
				strSubmitXML += "fld_data_price='" + fldPrc + "' " + 
				  "fld_ext_price='" + fldPrc + "' " +
					"fld_data_val='1' />"  + debugChar;
				chargeTotal += fldPrc;
				break;
				
			case 'checkbox':
			  var strChk = eval("document.frm_display.fld_" + intFldId + ".checked") ? "1" : "0";
			  strSubmitXML += "fld_data_val='" + strChk + "' />" + debugChar;
			  break;
			  
			case 'chargereserve': case 'chargegroup':
				var objFld = eval("document.frm_display.prc_" + intFldId);
				if (eval("document.frm_display.qty_" + intFldId).value.length > 0)
					intQty = eval("document.frm_display.qty_" + intFldId).value;
					
				var arCharge = objFld.options[objFld.selectedIndex].value.split("_");
				strSubmitXML += "fld_data_price='" + arCharge[1] + "' " +
				  "fld_sel_option_name='" + objFld.options[objFld.selectedIndex].text + "' " + 
				  "fld_ext_price='" + (arCharge[1] * intQty) + "' " +
					"fld_data_val='" + intQty + "'/>"  + debugChar;
				chargeTotal += (arCharge[1] * intQty);
				break;

			case 'textarea': case 'instr':
				var strVal = eval("document.frm_display.fld_" + intFldId).value.replace(reWhiteSpace, '');
				strSubmitXML += "fld_data_val='" + xmlEscape(strVal) + "' />"  + debugChar;
				break;
				
			case 'text': case 'numeric': case 'email': case 'date': case 'currency': case 'textbox': case 'password':
				/* Check for submitter email */
				var fldName = _arValidate[i].fld_name.toLowerCase();
				if ("email" == fldName || "e-mail" == fldName || "email address" == fldName || "e-mail address" == fldName || "contact email" == fldName || "contact e-mail" == fldName)
				{
					document.frm_display.submitter_email.value = eval("document.frm_display.fld_" + intFldId).value;
				}
		
				strSubmitXML += "fld_data_val='" + 
					xmlEscape(eval("document.frm_display.fld_" + intFldId).value) + "' />"  + debugChar;
				break;
				
			case 'radio': case 'checkboxgroup':
			  strSubmitXML += ">" + debugChar;
				for (var j=0; j<_arValidateOptions.length; j++)
				{
					if (_arValidateOptions[j].fld_parent_id == intFldId)
					{
						var strChk = eval("document.frm_display.fld_" + _arValidateOptions[j].fld_id + ".checked") ? "1" : "0";
						strSubmitXML += "<option_post fld_name='" + xmlEscape(_arValidateOptions[j].fld_name) + "' " + 
						  "fld_id='" + _arValidateOptions[j].fld_id + "' fld_data_val='" + strChk + "' />"  + debugChar;
					}
				}
				strSubmitXML += "</field_post>" + debugChar;
				break;
			
			case 'combobox':
				var objFld = eval("document.frm_display.fld_" + intFldId);
				var strVal = xmlEscape(objFld.options[objFld.selectedIndex].text);
				strSubmitXML += "fld_data_val='" + strVal + "' />"  + debugChar;
				break;
				
			case 'listbox':
			  strSubmitXML += ">" + debugChar;
			  var objFld = eval("document.frm_display.fld_" + intFldId);
				for (var j=0; j<objFld.options.length; j++)
				{
				  var strChk = objFld.options[j].selected ? "1" : "0";
					strSubmitXML += "<option_post fld_id='" + objFld.options[j].value + "' " + 
					  "fld_name='" + xmlEscape(objFld.options[j].text) + "' fld_data_val='" + strChk + "' />"  + debugChar;
				}
				strSubmitXML += "</field_post>" + debugChar;
				break;
				
			case 'file':
				//var arPathParts = eval("document.frm_display.fld_" + intFldId).value.split("\\");
				//macintosh has / file separators (2008-02 TICKET: 32412)
				var arPathParts;
				var fileFldVal = eval("document.frm_display.fld_" + intFldId).value;
				if (fileFldVal.indexOf('/') > -1) { arPathParts = fileFldVal.split("/"); }
				else { arPathParts = fileFldVal.split("\\"); }

				var strVal = arPathParts[arPathParts.length - 1];
				
				//TICKET 56492 4/30/2009  Create a 5 digit key to make file names unique
				if(strVal.length > 0) {
				  var last_period_index = strVal.lastIndexOf('.');
				  var strExt = strVal.slice(last_period_index);
				  var strFileName = strVal.slice(0, last_period_index);
  				
				  strVal = strFileName + t + strExt;						
				}	
				
				strSubmitXML += "fld_data_val='" + xmlEscape(strVal) + "' />"  + debugChar;
				break;
			
		}
	}
	strSubmitXML += "</form_post>";
	document.frm_display.charge_total.value = chargeTotal;
	
	if (_bolPreview)
	{
		_objResultsXML = jsXML.createDOMDocument();
	  _objResultsXML.loadXML(strSubmitXML);
	  resultsPreview();
	}
	else
	{
		// Call Google Page tracker to track the submit for the contact me form - TS 11/30/2010
		if (document.frm_display.frm_name.value == '31010') //coercion intended
		{
			if (pageTracker && pageTracker._trackPageview) { pageTracker._trackPageview('/AVContactMeSubmit.asp'); }
		}

		document.frm_display.submit_xml.value = strSubmitXML;
		//document.frm_display.action = document.URL;
		document.frm_display.submit();
	}
	
	log(strSubmitXML);
}

function resultsPreview()
{
	//openPopupWin('/iWeb/DesktopModules/Forms/FormViewer.aspx', 560, 560);
	openModalDialog('/iWeb/DesktopModules/Forms/dlg_form_results_viewer.htm', 560, 525);
}
