﻿
var Page = {
	formId: '',
	formSubmitted: false,
	formValidator: {},
	load: function() {
		if ($('RequestInfoForm')) Page.formId = 'RequestInfoForm';
		else if ($('BecomeADealerForm')) Page.formId = 'BecomeADealerForm';
		else if ($('ReferACustomerForm')) Page.formId = 'ReferACustomerForm';

		if (Page.formId.length > 0) {
			var inputSelectString = '.' + Page.formId + 'Div input, .' + Page.formId + 'Div textarea';
			$(Page.formId).addEvent('submit', Page.submitForm);
			$('ResetFormAnchor').addEvent('click', Page.resetForm);
			Page.formValidator = new FormValidator(Page.formId, { errorPrefix: '', evaluateFieldsOnBlur: false, onElementValidate: Page.onValidateElem, onElementFail: Page.onValidateFailed, onFormValidate: Page.onFormValidate });

			if (inputSelectString.length > 0) {
				$$(inputSelectString).each(function(item) {
					if (item.getProperty('label')) {
						item.set('value', item.getProperty('label'));
						item.addEvent('focus', Page.manageTextLabel);
						item.addEvent('blur', Page.manageTextLabel);
					}
				});
			}
		}
	},
	onValidateElem: function(isValitaded, elem, validatorName) {
		if (isValitaded) {
			if (elem.hasClass('FormElemError')) elem.removeClass('FormElemError');
			if (Browser.Engine.trident && elem.get('tag') == 'select') elem.getParent().removeClass('SelectContainerDivError');
		} else {
			if (!elem.hasClass('FormElemError')) elem.addClass('FormElemError');
			if (Browser.Engine.trident && elem.get('tag') == 'select') elem.getParent().addClass('SelectContainerDivError');
		}
	},
	onValidateFailed: function(elem, failedValidators) {
		$('UserMessageDiv').innerHTML = "Form Validation Failed. <br /> Please see elements outlined in red above.";
		$('UserMessageDiv').setStyle('display', 'inline');
	},
	onFormValidate: function(isValitaded, elem, e) {
	},
	resetForm: function() {
		if (Page.formId.length > 0) {
			var inputSelectString = '.' + Page.formId + 'Div input, .' + Page.formId + 'Div textarea, .' + Page.formId + 'Div select';
			$$(inputSelectString).each(function(item) {
				if (item.getProperty('label')) {
					item.set('value', item.getProperty('label'));
				} else if (item.get('tag') == 'select') {
					item.selectedIndex = 0;
				} else if (item.getProperty('type') == 'checkbox') {
					item.checked = false;
				} else if (item.getProperty('type') == 'text') {
					item.set('value', '');
				} else if (item.get('tag') == 'textarea') {
					item.set('value', '');
				}
			});
		}
	},
	submitForm: function(e) {
		e.stop();
		if (e.target.id == 'RequestInfoForm') {
			triggerConversion('Submitted Request Information Form');
			var requestJsonData = new Hash();
			if (Page.formValidator.validate()) {
				requestJsonData.set('formId', e.target.id);
				requestJsonData.set('FirstName', $('FirstNameTextBox').get('value'));
				requestJsonData.set('Company', $('CompanyTextBox').get('value'));
				requestJsonData.set('Title', $('TitleTextBox').get('value'));
				requestJsonData.set('HowHeard', $('HowHeardDropDown').get('value'));
				requestJsonData.set('Phone', $('PhoneTextBox').get('value'));
				requestJsonData.set('PhoneExt', $('PhoneExtTextBox').get('value'));
				requestJsonData.set('Email', $('EmailTextBox').get('value'));
				requestJsonData.set('State', $('StateDropDown').get('value'));
				requestJsonData.set('MainInterest', $('MainInterestDropDown').get('value'));
				requestJsonData.set('FleetSize', $('FleetSizeTextBox').get('value'));
				requestJsonData.set('HowMayWeHelpYou', $('HowMayWeHelpYouTextArea').get('value'));
				requestJsonData.set('DontIncludeInFutureMailings', $('DontIncludeInFutureMailingsCheckBox').checked);
			}
		}
		else if (e.target.id == 'BecomeADealerForm') {
			triggerConversion('Submitted Reseller Form');
			var requestJsonData = new Hash();
			if (Page.formValidator.validate()) {
				requestJsonData.set('formId', e.target.id);
				requestJsonData.set('FirstName', $('FirstNameTextBox').get('value'));
				requestJsonData.set('LastName', $('LastNameTextBox').get('value'));
				requestJsonData.set('CompanyName', $('CompanyNameTextBox').get('value'));
				requestJsonData.set('StreetAddress', $('StreetAddressTextBox').get('value'));
				requestJsonData.set('City', $('CityTextBox').get('value'));
				requestJsonData.set('State', $('StateTextBox').get('value'));
				requestJsonData.set('Zip', $('ZipTextBox').get('value'));
				requestJsonData.set('Country', $('CountryTextBox').get('value'));
				requestJsonData.set('Phone', $('PhoneTextBox').get('value'));
				requestJsonData.set('PhoneExt', $('PhoneExtTextBox').get('value'));
				requestJsonData.set('Email', $('EmailTextBox').get('value'));
				requestJsonData.set('Website', $('WebsiteTextBox').get('value'));
				requestJsonData.set('Vertical', $('VerticalDropDown').get('value'));
				requestJsonData.set('NumCustomers', $('NumCustomersDropDown').get('value'));
			}
		}
		else if (e.target.id == 'ReferACustomerForm') {
			var requestJsonData = new Hash();
			if (Page.formValidator.validate()) {
				requestJsonData.set('formId', e.target.id);
				requestJsonData.set('ReferredBusiness', $('ReferredBusinessTextBox').get('value'));
				requestJsonData.set('ReferredContactFirstName', $('ReferredContactFirstNameTextBox').get('value'));
				requestJsonData.set('ReferredContactLastName', $('ReferredContactLastNameTextBox').get('value'));
				requestJsonData.set('ReferredContactPhone', $('ReferredContactPhoneTextBox').get('value'));
				requestJsonData.set('ReferredContactEmail', $('ReferredContactEmailTextBox').get('value'));
				requestJsonData.set('FleetSize', $('FleetSizeTextBox').get('value'));
				requestJsonData.set('Industry', $('IndustryDropDown').get('value'));
				requestJsonData.set('ReferringIntergisCustomer', $('ReferringIntergisCustomerTextBox').get('value'));
				requestJsonData.set('ReferringContactFirstName', $('ReferringContactFirstNameTextBox').get('value'));
				requestJsonData.set('ReferringContactLastName', $('ReferringContactLastNameTextBox').get('value'));
				requestJsonData.set('ReferringContactPhone', $('ReferringContactPhoneTextBox').get('value'));
				requestJsonData.set('ReferringContactEmail', $('ReferringContactEmailTextBox').get('value'));
				requestJsonData.set('IntergisAccountExecutive', $('IntergisAccountExecutiveTextBox').get('value'));
				requestJsonData.set('DontIncludeInFutureMailings', $('DontIncludeInFutureMailingsCheckBox').checked);
			}
		}

		if (requestJsonData.getLength() > 1) { //form is valid, query service
			var request = new Request.JSON({
				urlEncoded: false,
				headers: { 'Content-Type': 'application/json; charset=utf-8' },
				url: $(e.target.id).get('action'),
				data: JSON.encode(requestJsonData),
				onComplete: Page.onFormSubmitComplete
			}).send();
			$('UserMessageDiv').innerHTML = "Processing your submission.";
			$('UserMessageDiv').setStyle('display', 'inline');
		}
	},
	onFormSubmitComplete: function(result) {
		if (result) {
			var resultDataItem = result.d;
			$('UserMessageDiv').innerHTML = resultDataItem.userMessage;
			$('UserMessageDiv').setStyle('display', 'inline');
			Page.resetForm();
		}
	},
	manageTextLabel: function(event) {
		var label = $(event.target).getProperty('label');

		switch (event.type) {
			case 'focus':
				if (this.get('value') == label) this.set('value', '');
				break;
			case 'blur':
				if (this.get('value') == '') this.set('value', label);
				break;
		}
	}
};

window.addEvent('domready', Page.load);

