var Splash = new Class({
	ecovisions:null,
	regExpPostalCode:/^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ])\ {0,1}(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$/,

	initialize: function(ecovisions, ambiguous){
		this.ecovisions = ecovisions;
		if(ambiguous) {
			this.initFlashAmbiguous();
		} else {
			this.initEvents();
			this.initProperty();
		}
	},


	initFlashAmbiguous:function() {
		if($('content2')) {
			var region = $('content2').className;
			var swiff =  new Swiff('assets/swfs/map2zones.swf', {
				width:698,
				height:267,
				container:$('content2'),
				vars:{
					swfPath:'assets/swfs/map_'+region+'.swf'
				}
			});

			//var result = Swiff.remote(swiff, function(result) {alert('test');});
		}
	},

	initEvents:function() {
		$('postalCode_en').addEvent('focus', this.textFocusHandler.bind(this));
		$('postalCode_en').addEvent('mouseover', this.textOverHandler.bind(this));
		$('postalCode_en').addEvent('mouseout', this.textOutHandler.bind(this));
		$('postalCode_en').addEvent('blur', this.textKillFocusHandler.bind(this));
		$('postalCode_en').addEvent('keyup', this.textKeyDownHandler.bind(this));
		$('postalCodeSubmit_en').addEvent('click', this.submitFormClickHandler.bind(this));
		$('postalCodeForm_en').addEvent('submit', this.submitFormSubmitHandler.bind(this));
		$('postalCode_fr').addEvent('blur', this.textKillFocusHandler.bind(this));
		$('postalCode_fr').addEvent('focus', this.textFocusHandler.bind(this));
		$('postalCode_fr').addEvent('mouseover', this.textOverHandler.bind(this));
		$('postalCode_fr').addEvent('mouseout', this.textOutHandler.bind(this));
		$('postalCode_fr').addEvent('keyup', this.textKeyDownHandler.bind(this));
		$('postalCodeSubmit_fr').addEvent('click', this.submitFormClickHandler.bind(this));
		$('postalCodeForm_fr').addEvent('submit', this.submitFormSubmitHandler.bind(this));
	},

	textFocusHandler:function(event) {
		$$('.error').destroy();
		event.target.store('focused', 'focused');
		if(event.target.getProperty('value')==event.target.retrieve('oldText')) {
			event.target.setProperty('value', '');
			event.target.setProperty('maxlength', 7);
		}
		if(event.target.getNext()) event.target.getNext().addClass(event.target.getNext().getProperty('id')+"_hover");
	},

	textKeyDownHandler:function(event) {
		if(event.code >= 65 && event.code <= 90) {
			event.target.value = event.target.value.toUpperCase();
		}
	},

	textKillFocusHandler:function(event) {
		$$('.error').destroy();
		event.target.store('focused', '');
		if(event.target.getProperty('value')=='') {
			event.target.removeProperty('maxlength');
			event.target.setProperty('value', event.target.retrieve('oldText'));
		}
		event.target.getNext().removeClass(event.target.getNext().getProperty('id')+"_hover");
	},

	initProperty:function() {
		$('postalCode_fr').store('focused', '');
		if($('postalCode_fr').hasClass('codePostalIn')) $('postalCode_fr').store('oldText', ''); else $('postalCode_fr').store('oldText', $('postalCode_fr').getProperty('value'));
		$('postalCode_en').store('focused', '');
		if($('postalCode_en').hasClass('codePostalIn')) $('postalCode_en').store('oldText', ''); else $('postalCode_en').store('oldText', $('postalCode_en').getProperty('value'));
	},



	submitFormClickHandler:function(event) {
		$$('.error').destroy();
		if (this.isEmptyPostalCode(event.target.getParent().getParent().getElement('input').value)) {
			var warn = this.ecovisions.writeWarning(event.target.getParent().getParent(), language["postalCode_empty_"+event.target.getParent().getParent().getProperty('lang')]);
			warn.removeClass(['error_fr', 'error_en']);
			warn.addClass('error_'+event.target.getParent().getParent().getProperty('lang'));
		} else if(this.validatePostalCode(event.target.getParent().getParent().getElement('input'))) {
			event.target.getParent().getParent().submit();
		} else {
			var error = this.ecovisions.writeError(event.target.getParent().getParent(), language["postalCode_error_"+event.target.getParent().getParent().getProperty('lang')].toUpperCase());
			error.removeClass(['error_fr', 'error_en']);
			error.addClass('error_'+event.target.getParent().getParent().getProperty('lang'));
		}
	},

	submitFormSubmitHandler:function(event) {
		$$('.error').destroy();
		if (this.isEmptyPostalCode(event.target.getElement('input').value)) {
			var warn = this.ecovisions.writeWarning(event.target, language["postalCode_empty_"+event.target.getProperty('lang')]);
			warn.removeClass(['error_fr', 'error_en']);
			warn.addClass('error_'+event.target.getProperty('lang'));
			return false;
		} else if(this.validatePostalCode(event.target.getElement('input'))) {
			event.target.submit();
			return true
		} else {
			var error = this.ecovisions.writeError(event.target, language["postalCode_error_"+event.target.getProperty('lang')].toUpperCase());
				error.removeClass(['error_fr', 'error_en']);
				error.addClass('error_'+event.target.getProperty('lang'));
			return false;
		}
	},

	isEmptyPostalCode:function(cp) {
		if (cp.length == 0) return true;
		if (cp == 'Postal code') return true;
		if (cp == 'Code postal') return true;
		return false;
	},

	validatePostalCode:function(el) {
		var re = new RegExp(this.regExpPostalCode);
		if (el.value.match(re)) return true;
		return false;
	},

	textOverHandler:function(event) {
		event.target.getNext().addClass(event.target.getNext().getProperty('id')+"_hover");
	},

	textOutHandler:function(event) {
		if(event.target.retrieve('focused') == '') {
			event.target.getNext().removeClass(event.target.getNext().getProperty('id')+"_hover");
		}
	}
 });

function zoneClickHandler(result) {
	window.location = '?zone='+result;
}