/**
 * Form.js - Functions for the Ardanta questions and changes form
 * 
 * @author  Webstores <info at webstores dot nl>
 *           Copyright (c) Webstores internet totaalbureau <http://www.webstores.nl/>
 */

addEvent(window, 'load', function() {
	if($('master_form')){
		toggle('new_address_set');
		toggleFieldSet('new_address_set');
		
		addEvent($('new_address'), 'click', function() {
			toggle('new_address_set');
			toggleFieldSet('new_address_set');
		});
		
		createToggle('accountnumber');
		createToggle('paymentperiod');
		createToggle('paymentmethod');
	
		// Validation configuration
		var validationOptions = {
			onValid: function() {},
			onInvalid: function() { this.insertMessage(createMessageImg(this.message)); this.addFieldClass(); },
			onlyOnBlur: true
		}
		
		var requiredMsg = {
			failureMessage: 'Dit veld is verplicht'
		}
		
		var emailMsg = {
			failureMessage: 'Vul een geldig e-mailadres in'
		}
		
		// Initialize validations
		var lastName = new LiveValidation('lastname', validationOptions);
		var initials = new LiveValidation('initials', validationOptions);
		var streetName = new LiveValidation('streetname', validationOptions);
		var streetNumber = new LiveValidation('streetnumber', validationOptions);
		var zip = new LiveValidation('zip', validationOptions);
		var city = new LiveValidation('city', validationOptions);
		var email = new LiveValidation('email', validationOptions);
		
		var lastNameNew = new LiveValidation('lastname_new', validationOptions);
		var initialsNew = new LiveValidation('initials_new', validationOptions);
		var streetNameNew = new LiveValidation('streetname_new', validationOptions);
		var streetNumberNew = new LiveValidation('streetnumber_new', validationOptions);
		var zipNew = new LiveValidation('zip_new', validationOptions);
		var cityNew = new LiveValidation('city_new', validationOptions);
		
		// Configure validations
		lastName.add(Validate.Presence, requiredMsg);
		initials.add(Validate.Presence, requiredMsg);
		streetName.add(Validate.Presence, requiredMsg);
		streetNumber.add(Validate.Presence, requiredMsg);
		zip.add(Validate.Presence, requiredMsg);
		city.add(Validate.Presence, requiredMsg);
		email.add(Validate.Presence, requiredMsg);
		email.add(Validate.Email, emailMsg);
		
		lastNameNew.add(Validate.Presence, requiredMsg);
		initialsNew.add(Validate.Presence, requiredMsg);
		streetNameNew.add(Validate.Presence, requiredMsg);
		streetNumberNew.add(Validate.Presence, requiredMsg);
		zipNew.add(Validate.Presence, requiredMsg);
		cityNew.add(Validate.Presence, requiredMsg);
	}
	if($('brochure_form')){
		
		// Validation configuration
		$('image-button').disabled = true;
		var validationOptions = {
			onValid: function() {},
			onInvalid: function() { this.insertMessage(createMessageImg(this.message)); this.addFieldClass(); },
			onlyOnBlur: true
		}
		
		var requiredMsg = {
			failureMessage: 'Dit veld is verplicht'
		}
		
		var emailMsg = {
			failureMessage: 'Vul een geldig e-mailadres in'
		}
		
		// Custom validation
		addEvent($('product-brochure'), 'click', function() {
			checkBrochures();
		});
		addEvent($('uitvaart-waardemeter-brochure'), 'click', function() {
			checkBrochures();
		});
		addEvent($('uw-wensen-brochure'), 'click', function() {
			checkBrochures();
		});		
		
		
		// Initialize validations
		var lastName = new LiveValidation('lastname', validationOptions);
		var initials = new LiveValidation('initials', validationOptions);
		var streetName = new LiveValidation('streetname', validationOptions);
		var streetNumber = new LiveValidation('streetnumber', validationOptions);
		var zip = new LiveValidation('zip', validationOptions);
		var city = new LiveValidation('city', validationOptions);
		var email = new LiveValidation('email', validationOptions);
		
		// Configure validations
		lastName.add(Validate.Presence, requiredMsg);
		initials.add(Validate.Presence, requiredMsg);
		streetName.add(Validate.Presence, requiredMsg);
		streetNumber.add(Validate.Presence, requiredMsg);
		zip.add(Validate.Presence, requiredMsg);
		city.add(Validate.Presence, requiredMsg);
		email.add(Validate.Presence, requiredMsg);
		email.add(Validate.Email, emailMsg);
	}
	if($('klachten_form')){
		
		// Validation configuration
		var validationOptions = {
			onValid: function() {},
			onInvalid: function() { this.insertMessage(createMessageImg(this.message)); this.addFieldClass(); },
			onlyOnBlur: true
		}
		
		var requiredMsg = {
			failureMessage: 'Dit veld is verplicht'
		}
		
		var emailMsg = {
			failureMessage: 'Vul een geldig e-mailadres in'
		}
		
		// Initialize validations
		var lastName = new LiveValidation('lastname', validationOptions);
		var initials = new LiveValidation('initials', validationOptions);
		var streetName = new LiveValidation('streetname', validationOptions);
		var streetNumber = new LiveValidation('streetnumber', validationOptions);
		var birthdate = new LiveValidation('birthdate', validationOptions);
		var zip = new LiveValidation('zip', validationOptions);
		var city = new LiveValidation('city', validationOptions);
		var as = new LiveValidation('as', validationOptions);
		var blame = new LiveValidation('blame', validationOptions);
		var complaint = new LiveValidation('complaint', validationOptions);
		var solution = new LiveValidation('solution', validationOptions);
		var email = new LiveValidation('email', validationOptions);
		
		// Configure validations
		lastName.add(Validate.Presence, requiredMsg);
		initials.add(Validate.Presence, requiredMsg);
		streetName.add(Validate.Presence, requiredMsg);
		streetNumber.add(Validate.Presence, requiredMsg);
		birthdate.add(Validate.Presence, requiredMsg);
		zip.add(Validate.Presence, requiredMsg);
		city.add(Validate.Presence, requiredMsg);
		as.add(Validate.Presence, requiredMsg);
		blame.add(Validate.Presence, requiredMsg);
		complaint.add(Validate.Presence, requiredMsg);
		solution.add(Validate.Presence, requiredMsg);
		email.add(Validate.Presence, requiredMsg);
		email.add(Validate.Email, emailMsg);
	}
});

/**
 * Preload the exclamation mark
 */
var exclamation = new Image();
exclamation.src = 'resources/img/exclamation.png';

/**
 * Create the exclamation image
 *
 * @return {Object} An image with the error message as it's title
 */
function createMessageImg(msg) {
	var img = document.createElement('img');
	img.src = 'resources/img/exclamation.png';
	img.title = msg;
	return img;
}

function checkBrochures() {
	if($('product-brochure').checked==false && $('uitvaart-waardemeter-brochure').checked==false && $('uw-wensen-brochure').checked==false){
		$('image-button').disabled = true;
	}
	else {
		$('image-button').disabled = false;
	}
}
