var Forms = {
	validate:function(isChoiceForm) {
		var valid = true;
		var validEmail = true;
		var requiredFields = $$('.required');
		var errorFX = new Fx.Elements(requiredFields, {
			duration:400,
			transition:Fx.Transitions.Quad.easeOut,
			wait:false,
			onComplete:function() {
				var alertMsg = 'You must enter data/select options in the marked fields!';				
				if (!validEmail) alertMsg += '\nEmail address formats must be valid!\nPlease check the email addresses you\'ve entered.';
				if (!valid) alert(alertMsg);
			}
		});
		var FXObj = {};
		
		if (!$defined(isChoiceForm)) {			
			$$(requiredFields).each(function(el, i) {
				var isEmailField = el.hasClass('email');			
				if (MooTools.version === '1.2dev') {
					// if mooTools 1.2b:
					var currVal = el.get('value');				
					if (currVal === '') {
						FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FF6666'] };
						valid = false;
					} else {
						if (el.getStyle('background-color') != '#FFFFFF') {
							FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FFFFFF'] };
						}
					}
	
					if (isEmailField) {
						if (!Forms.verifyEmailAddress(el.get('value'))) {
							FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FF6666'] };
							validEmail = false;
							valid = false;
						} else {
							if (el.getStyle('background-color') != '#FFFFFF') {
								FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FFFFFF'] };
							}
						}
					}
				} else {
					// if mooTools v1.11
					var currVal = el.getValue();
					if (el.getValue() === '') {
						FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FF6666'] };
						valid = false;
					} else {
						if (el.getStyle('background-color') != '#FFFFFF') {
							FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FFFFFF'] };
						}
					}
							
					if (isEmailField) {
						if (!Forms.verifyEmailAddress(el.getValue())) {
							FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FF6666'] };
							validEmail = false;
							valid = false;
						} else {
							if (el.getStyle('background-color') != '#FFFFFF') {
								FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FFFFFF'] };
							}
						}
					}
				}
				
				errorFX.start(FXObj);
			});
		} else {
			// we're only dealing with two fields, so ... cake:
			var choiceEls = $$('#frm_qstrackerlogin .required');
			errorFX.elements = choiceEls;
			$$(choiceEls).each(function(el, i) {				
				var currVal = el.getValue();
				if (el.getValue() === '') {
					FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FF6666'] };
					valid = false;
				} else {
					if (el.getStyle('background-color') != '#FFFFFF') {
						FXObj[i] = { 'background-color':[el.getStyle('background-color'), '#FFFFFF'] };
					}
				}
				
				errorFX.start(FXObj);
			});
			
			if (valid) {
				// we do this here to have the ajax request for the form selection page work:
				
			}
		}
	
		return valid;
	},
	goForward:function() {
		var currURL = window.location.href;
		var dot = currURL.lastIndexOf('.', currURL.length);
		var pageNum = currURL.charAt(dot - 1);
		var newPageNum = pageNum.toInt() + 1;
		
		// do string replacement:
		var newURL = currURL.replace(pageNum, newPageNum);		
		// change URL:
		window.location.href = newURL;
	},
	goBack:function() {
		var currURL = window.location.href;
		var dot = currURL.lastIndexOf('.', currURL.length);
		var pageNum = currURL.charAt(dot - 1);
		var newPageNum = pageNum.toInt() - 1;
		
		// do string replacement:
		var newURL = currURL.replace(pageNum, newPageNum);		
		// change URL:
		window.location.href = newURL;
	},
	copyAddressInfo:function() {
		// this should only be called from supplier registration page 2:
		if (window.location.href.test('registration_2.php')) {
			// copy address to => address to mailing:
			$('txt_addressto_mailing').set('value', $('txt_addressto').get('value'));
			
			// copy care of => care of mailing:
			$('txt_careof_mailing').set('value', $('txt_careof').get('value'));
			
			// copy address 1 => address 1 mailing:
			$('txt_address1_mailing').set('value', $('txt_address1').get('value'));
			
			// copy address 2 => address 2 mailing:
			$('txt_address2_mailing').set('value', $('txt_address2').get('value'));
			
			// copy city => city mailing:
			$('txt_city_mailing').set('value', $('txt_city').get('value'));
			
			// copy state => state mailing:
			$('ddl_state_mailing').set('value', $('ddl_state').get('value'));
			
			// copy country => country mailing:
			$('ddl_country_mailing').set('value', $('ddl_country').get('value'));
			
			// copy zip => zip mailing:
			$('txt_zip_mailing').set('value', $('txt_zip').get('value'));		
		}
	},
	clearForm:function() {
		// call PHP page to reset session variables:
		if (confirm('Resetting this form will abandon your session.\nYou will have to start the form over from the beginning.\nAre you sure you wish to do this?')) {
			var URL = window.location.href;
			var queryString;
			
			URL.test('registration') ? queryString = 'suppReg' : queryString = 'quickSource';
			
			window.location.replace('clearSession.php?form=' + queryString);
		}
	},
	verifyEmailAddress:function(emailAddress) {
		var test1_string = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var test2_string = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
		var regExp1 = new RegExp(test1_string);
		var regExp2 = new RegExp(test2_string);
		
		if (window.RegExp) {		
			if (!regExp1.test(emailAddress) && regExp2.test(emailAddress)) {
				return true;
			} else {
				return false;
			}
		} else {
			if (emailAddress.indexOf('@') >= 0) {
				return true;
			}
			
			return false;
		}
	},
	forgotQSPassword:function(type) {
		if ($('txt_username').get('value') !== '') {
			// reset form action:
			$('frm_forgotpassword').setProperty('action', 'https://userlogin.procuri.com/SuppReg/ForgotPassword.aspx');
			
			// reset hidden form field values for password reset:
			$('hdnSiteUUID').set('value', $('SupplierSiteUUID').get('value'));
			$('hdnLoginURL').set('value', $('SupplierLoginURL').get('value'));
			$('hdnUserName').set('value', $('txt_username').get('value'));
			$('hdnAction').set('value', (type === 'reminder' ? 'reminder' : 'resetpass'));
			
			// submit the form:			
			$('frm_forgotpassword').submit();
			
			return;
		}
		
		alert ('You must enter your username!');
		
	}
};