window.addEvent('domready', function(e) { Accordion.prototype.rerender = function() { index = this.previous; el = this.elements[index]; var obj = {}; obj[index] = {}; for (var fx in this.effects) obj[index][fx] = el[this.effects[fx]]; return this.start(obj); } new Tips( $$('fieldset fieldset legend')); var gAccordion = new Accordion($$('h2.visibleAt'), $$('div.visibleAt'), { }); if (gLastIndex > 0) { showFormSection($('recruitToggler'), $('recruitContent')); if (gLastIndex > 1) { showFormSection($('conditionsToggler'), $('conditionsContent')); if (gLastIndex > 2) { showFormSection($('guardianToggler'), $('guardianContent')); if (gLastIndex > 3) { showFormSection($('userToggler'), $('userContent')); if (gLastIndex > 4) { showFormSection($('billingToggler'), $('billingContent')); } } } } } gAccordion.display(gDisplayIndex); $('billingToggler').addEvent('click', function() { if ($('campSelect').options[$('campSelect').selectedIndex].value == 'tomahawk') price = gTomahawkPrice; else price = gEagleClawPrice; $('price').set('text', '$' + price + ' USD'); $('checkPrice').set('text', '$' + price + ' USD'); return; }); $('campButton').addEvent('click', function() { var price = 0; clearFieldsetErrors($('campFieldset')); if (!validateCamp()) return; showFormSection($('recruitToggler'), $('recruitContent')); if ($('campSelect').options[$('campSelect').selectedIndex].value == 'tomahawk') price = gTomahawkPrice; else price = gEagleClawPrice; $('price').set('text', '$' + price + ' USD'); $('checkPrice').set('text', '$' + price + ' USD'); gAccordion.display(1); return; }); $('recruitButton').addEvent('click', function() { clearFieldsetErrors($('recruitFieldset')); if (!validateRecruit()) return; showFormSection($('conditionsToggler'), $('conditionsContent')); gAccordion.display(2); return; }); $('conditionsButton').addEvent('click', function() { clearFieldsetErrors($('conditionsFieldset')); // custom clear of textarea fieldset document.getElement('label[for=conditionsDescription]').removeClass('error'); if (!validateConditions()) return; showFormSection($('guardianToggler'), $('guardianContent')); gAccordion.display(3); return; }); $('guardianButton').addEvent('click', function() { clearFieldsetErrors($('guardian1Fieldset')); clearFieldsetErrors($('guardian2Fieldset')); if (!validateGuardian1() || !validateGuardian2()) return; showFormSection($('userToggler'), $('userContent')); gAccordion.display(4); return; }); $('userButton').addEvent('click', function() { clearFieldsetErrors($('userFieldset')); if (!validateUser()) return; showFormSection($('billingToggler'), $('billingContent')); gAccordion.display(5); return; }); $('enlistForm').addEvent('submit', function(e) { clearFieldsetErrors($('creditCardFieldset')); if (!validateCreditCard()) { new Event(e).stop(); return; } clearFieldsetErrors($('campFieldset')); clearFieldsetErrors($('recruitFieldset')); clearFieldsetErrors($('conditionsFieldset')); clearFieldsetErrors($('guardian1Fieldset')); clearFieldsetErrors($('guardian2Fieldset')); clearFieldsetErrors($('userFieldset')); if (!validateCamp()) gAccordion.display(0); else if (!validateRecruit()) gAccordion.display(1); else if (!validateConditions()) gAccordion.display(2); else if (!validateGuardian1() || !validateGuardian2()) gAccordion.display(3); else if (!validateUser()) gAccordion.display(4); else return; // success new Event(e).stop(); return; }); $('guardian1Resides').addEvent('click', function() { if (this.checked) { $('guardian1AddressLabels').setStyle('display', 'none'); $('guardian1AddressData').setStyle('display', 'none'); } else { $('guardian1AddressLabels').setStyle('display', 'block'); $('guardian1AddressData').setStyle('display', 'block'); } gAccordion.rerender(); return; }); $('guardian2Exists').addEvent('click', function() { if (this.checked) { $('guardian2Labels').setStyle('display', 'block'); $('guardian2Data').setStyle('display', 'block'); } else { $('guardian2Labels').setStyle('display', 'none'); $('guardian2Data').setStyle('display', 'none'); } gAccordion.rerender(); return; }); $('guardian2Resides').addEvent('click', function() { if (this.checked) { $('guardian2AddressLabels').setStyle('display', 'none'); $('guardian2AddressData').setStyle('display', 'none'); } else { $('guardian2AddressLabels').setStyle('display', 'block'); $('guardian2AddressData').setStyle('display', 'block'); } gAccordion.rerender(); return; }); $$('fieldset#billingFieldset fieldset.data input[type=radio]').addEvent('click', function() { $('creditCardFieldset').setStyle('display', (this.value == 'credit_card' ? 'block' : 'none')); $('phoneInfo').setStyle('display', (this.value == 'phone' ? 'block' : 'none')); $('checkInfo').setStyle('display', (this.value == 'check' ? 'block' : 'none')); gAccordion.rerender(); return; }); function showFormSection(toggler, content, index) { if (!toggler.hasClass('visibleAt')) { toggler.addClass('visibleAt'); content.addClass('visibleAt'); gAccordion.addSection(toggler, content, gAccordion.togglers.length); } return; } function clearFieldsetErrors(fieldset) { fieldset.getElement('fieldset.labels').getElements('label.error').each(function(el, index) { el.removeClass('error'); }); return; } function inputError(element, message, alternateLabelElement) { alert(message); if (typeof(alternateLabelElement) != 'undefined') document.getElement('label[for=' + alternateLabelElement.id + ']').addClass('error'); else document.getElement('label[for=' + element.id + ']').addClass('error'); element.focus(); element.highlight(); return false; } function validateCamp() { if ($('campSelect').selectedIndex == 0) return inputError($('campSelect'), 'Camp select is a required field.'); return true; } function validateRecruit() { if ($('recruitFirstName').value == '') return inputError($('recruitFirstName'), 'First Name is a required field.'); else if ($('recruitMiddleInitial').value == '') return inputError($('recruitMiddleInitial'), 'Middile Initial is a required field.'); else if ($('recruitLastName').value == '') return inputError($('recruitLastName'), 'Last Name is a required field.'); else if ($('recruitStreet1').value == '') return inputError($('recruitStreet1'), 'Street Address is a required field.'); else if ($('recruitCity').value == '') return inputError($('recruitCity'), 'City is a required field.'); else if ($('recruitState').value == '' || ( $('recruitState').value == 'province' && $('recruitProvince').value == '' )) return inputError($('recruitState'), 'State / Province a required field.'); else if ($('recruitPostalCode').value == '' && $('recruitState').value != 'province') return inputError($('recruitPostalCode'), 'Zip Code is a required field.'); else if ($('recruitBirthDay').selectedIndex == 0 || $('recruitBirthMonth').selectedIndex == 0 || $('recruitBirthYear').selectedIndex == 0) return inputError($('recruitBirthDay'), 'Birth Date is a required field.'); return true; } function validateConditions() { var checkedBoxes = $('conditionsFieldset').getElement('fieldset.data').getElements('input[type=checkbox]'); var haveChecked = false; for (var i = 0; i < checkedBoxes.length && !haveChecked; ++i) { if (checkedBoxes[i].checked == true) haveChecked = true; } if (haveChecked && $('conditionsDescription').value == '') return inputError($('conditionsDescription'), 'We need a detailed description on each of your recruit\'s conditions.'); return true; } function validateGuardian1() { if ($('guardian1FirstName').value == '') return inputError($('guardian1FirstName'), 'Guardian #1 First Name is a required field.'); else if ($('guardian1MiddleInitial').value == '') return inputError($('guardian1MiddleInitial'), 'Guardian #1 Middle Initial is a required field.'); else if ($('guardian1LastName').value == '') return inputError($('guardian1LastName'), 'Guardian #1 Last Name is a required field.'); else if ($('guardian1Relation').value == '') return inputError($('guardian1Relation'), 'Guardian #1 Relationship is a required field.'); else if (!$('guardian1Resides').checked) { if ($('guardian1Street1').value == '') return inputError($('guardian1Street1'), 'Guardian #1 Street Address is a required field.'); else if ($('guardian1City').value == '') return inputError($('guardian1City'), 'Guardian #1 City is a required field.'); else if ($('guardian1State').value == '' || ($('guardian1State').value == 'province' && $('guardian1Province').value == '')) return inputError($('guardian1State'), 'Guardian #1 State / Province a required field.'); else if ($('guardian1PostalCode').value == '' && $('guardian1State').value != 'province') return inputError($('guardian1PostalCode'), 'Guardian #1 Zip Code is a required field.'); } return true; } function validateGuardian2() { if (!$('guardian2Exists').checked) return true; if ($('guardian2FirstName').value == '') return inputError($('guardian2FirstName'), 'Guardian #2 First Name is a required field.'); else if ($('guardian2MiddleInitial').value == '') return inputError($('guardian2MiddleInitial'), 'Guardian #2 Middle Initial is a required field.'); else if ($('guardian2LastName').value == '') return inputError($('guardian2LastName'), 'Guardian #2 Last Name is a required field.'); else if ($('guardian2Relation').value == '') return inputError($('guardian2Relation'), 'Guardian #2 Relationship is a required field.'); else if (!$('guardian2Resides').checked) { if ($('guardian2Street1').value == '') return inputError($('guardian2Street1'), 'Guardian #2 Street Address is a required field.'); else if ($('guardian2City').value == '') return inputError($('guardian2City'), 'Guardian #2 City is a required field.'); else if ($('guardian2State').value == '' || ( $('guardian2State').value == 'province' && $('guardian2Province').value == '')) return inputError($('guardian2State'), 'Guardian #2 State / Province a required field.'); else if ($('guardian2PostalCode').value == '' && $('guardian2State').value != 'province') return inputError($('guardian2PostalCode'), 'Guardian #2 Zip Code is a required field.'); } return true; } function validateUser() { if ($('username').value == '') return inputError($('username'), 'Username is a required field.'); else if ($('password').value == '') return inputError($('password'), 'Password is a required field.'); else if ($('password').value != $('repassword').value) return inputError($('password'), 'Passwords do not match.'); else if ($('emailAddress').value == '') return inputError($('emailAddress'), 'Email Address is a required field.'); return true; } function validateCreditCard() { if (!$('creditCardPayment').checked) return true; else if ($('creditCardNumber').value == '') return inputError($('creditCardNumber'), 'Credit Card Number is a required field.'); else if ($('creditCardExpirationMonth').value == '') return inputError($('creditCardExpirationMonth'), 'Credit Card Expiration Month is a required field.', $('creditCardExpirationMonth')); else if ($('creditCardExpirationYear').value == '') return inputError($('creditCardExpirationYear'), 'Credit Card Expiration Year is a required field.', $('creditCardExpirationMonth')); else if ($('creditCardFirstName').value == '') return inputError($('creditCardFirstName'), 'Billing First Name is a required field.'); else if ($('creditCardLastName').value == '') return inputError($('creditCardLastName'), 'Billing Last Name is a required field.'); else if ($('creditCardStreet1').value == '') return inputError($('creditCardStreet1'), 'Billing Address is a required field.'); else if ($('creditCardCity').value == '') return inputError($('creditCardCity'), 'Billing City is a required field.'); else if ($('creditCardState').value == '') return inputError($('creditCardState'), 'Billing State is a required field.'); else if ($('creditCardPostalCode').value == '' && $('creditCardCountry').value == 'US') return inputError($('creditCardPostalCode'), 'Billing Zip-Code is a required field.'); else if ($('creditCardCountry').value == '') return inputError($('creditCardCountry'), 'Billing Country is a required field.'); return true; } });