/**
 * 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')){
		// Validation configuration
		var validationOptions = {
			onValid: function() {},
			onInvalid: function() { this.insertMessage(createMessageImg(this.message)); this.addFieldClass(); },
			onlyOnBlur: true
		}
		
		var validatieContactNumberOptions = {
			onValid: function() {
				$('contactnumber-validate').className = '';
			},
			onInvalid: function() { 
				this.insertMessage(createMessageImg(this.message)); 
				$('contactnumber-validate').className = 'error';
				this.addFieldClass();
			},
			onlyOnBlur: true
		}
		
		var validatiePolicyNumberOptions = {
			onValid: function() {
				$('policynumber-validate').className = '';
			},
			onInvalid: function() { 
				this.insertMessage(createMessageImg(this.message)); 
				$('policynumber-validate').className = 'error';
				this.addFieldClass();
			},
			onlyOnBlur: true
		}
		
		var requiredMsg = {
			failureMessage: 'Dit veld is verplicht'
		}
		
		var emailMsg = {
			failureMessage: 'Vul een geldig e-mailadres in'
		}
		
		// Initialize validations		
		var contractNumber = new LiveValidation('contactnumber', validatieContactNumberOptions);
		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		
		contractNumber.add(Validate.Presence, requiredMsg);
		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);
		
		// Terminate insurance 22-11-2011 EG
		if($('terminateinsurance-toggle')) {
			var terminateInsuranceOther = new LiveValidation('terminateinsurance-other', validationOptions);
			var terminateInsuranceConfirmation = new LiveValidation('terminateinsurance-confirmation', validationOptions);						
			
			terminateInsuranceOther.add(Validate.Presence, requiredMsg);
			terminateInsuranceConfirmation.add(Validate.Acceptance, requiredMsg);			
		}
		
		// Toggle address
		toggle('new_address_set');
		toggleFieldSet('new_address_set');
		
		addEvent($('new_address'), 'click', function() {
			toggle('new_address_set');
			toggleFieldSet('new_address_set');
		});
		
		// Terminate insurance 22-11-2011 EG
		if($('terminateinsurance-toggle')) {
			addEvent($('terminateinsurance'), 'mousedown', function() {
				this.className = 'expanded-width';
			});			
			addEvent($('terminateinsurance'), 'blur', function() {
				this.className = '';
			});			
			addEvent($('terminateinsurance'), 'change', function() {
				this.className = '';
			});
		
			hide('terminateinsurance-other-container');
			$('terminateinsurance-other').disabled = true;
			
			toggle('terminateinsurance_set');
			toggleFieldSet('terminateinsurance_set');
			
			var policyNumber = new LiveValidation('policynumber', validatiePolicyNumberOptions);			
			addEvent($('terminateinsurance-toggle'), 'click', function() {				
				toggle('terminateinsurance_set');
				toggleFieldSet('terminateinsurance_set');				
				if(this.checked == true) {
					$('policynumber-label').replace('<label id="policynumber-label" for="policynumber" class="indent">Polisnummer <span class="required">*</span></label>');					
					if(!policyNumber) {				
						policyNumber = new LiveValidation('policynumber', validatiePolicyNumberOptions);
					}
					policyNumber.add(Validate.Presence, requiredMsg);					
				} else {
					$('policynumber-label').replace('<label id="policynumber-label" for="policynumber" class="indent">Polisnummer</label>');					
					policyNumber.destroy();
					policyNumber = null;
				}
			});
			
			addEvent($('terminateinsurance'), 'change', function(e) {
				if(this.value == 'other') {
					show('terminateinsurance-other-container');
					$('terminateinsurance-other').disabled = false;
				} else {
					hide('terminateinsurance-other-container');
					$('terminateinsurance-other').disabled = true;
				}
			});
		}
		
		createToggle('accountnumber');
		createToggle('paymentperiod');
		createToggle('paymentmethod');
		
		// Terminate insurance 22-11-2011 EG
		if($('terminateinsurance-toggle')) {
			createToggle('terminateinsurance');
		}
	}
	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);
	}
	if($('aanmelden_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'
		}
		
		// 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 age = new LiveValidation('age', validationOptions);
		//var contractNumber = new LiveValidation('contractnumber', 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);
		age.add(Validate.Presence, requiredMsg);
		
		
		addEvent($('kinderen_ja'), 'click', function() {
			$('thuiswonende_kinderen').show();
		});
		
		addEvent($('kinderen_nee'), 'click', function() {
			$('thuiswonende_kinderen').hide();
			$('leeftijd_kinderen').hide();
			$("thuiswonende_kinderen_nee").checked = true;
			$("kinderen_boven_18_nee").checked = true;
		});
		
		addEvent($('thuiswonende_kinderen_ja'), 'click', function() {
			$('leeftijd_kinderen').show();
		});
		
		addEvent($('thuiswonende_kinderen_nee'), 'click', function() {
			$('leeftijd_kinderen').hide();
			$("kinderen_boven_18_nee").checked = true;
		});
		
		addEvent($('klant_ja'), 'click', function() {
			$('contract_number').show();
			//contractNumber.add(Validate.Presence, requiredMsg);
		});
		
		addEvent($('klant_nee'), 'click', function() {
			$('contract_number').hide();
			//contractNumber.remove(Validate.Presence, requiredMsg);
		});
		
	}
});

/**
 * 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;
	}
}

