window.addEvent('domready', function() {
	if($('form_inscription')){
		$('form_inscription').addEvent('keydown', function(event){
			if (event.key == "enter") event.stop();
		});
	}
									 
	goTo = function(sender,target,reponse){
		var scroll = new Fx.Scroll('contestholder', {
			wait: false,
			duration: 1000,
			offset: {'x': 0, 'y': 0},
			transition: Fx.Transitions.Quad.easeInOut
		});
		var sender = sender.id;
		var getAnswers = $('getAnswers');
		if(sender.indexOf('Reponse')>0){
			var questionId = sender.replace('goToReponse','');
			var msg = '';
			if(questionId.indexOf('user')>0){
				userReponse = reponse;
				questionId = questionId.replace('user','');
			}
			else{
				userReponse = $(sender).get('title');	
				if(questionId.indexOf('v')>0) questionId = questionId.replace('v','');
				else questionId = questionId.replace('f','');
			}
			if(userReponse==reponse){
				$('userReponse'+questionId).addClass('vrai');
				msg = ' Vous aviez raison !';
			}
			else{
				if(questionId<$('nbQuestions').value) $('userReponse'+questionId).addClass('faux');
				msg = ' Vous avez répondu ' + userReponse + '.';
			}
			if(questionId!=$('nbQuestions').value) $('userReponse'+questionId).innerHTML += msg;
			if(getAnswers.value!='') getAnswers.value += '|'+userReponse;
			else getAnswers.value = userReponse;
			appendNextButton(questionId);
		}
		scroll.toElement(target);
	}
	
	appendNextButton = function(question){
		if(question<$('nbQuestions').value){
			var nextButton = new Element('a', {
				'href': '#',
				'class': 'nextq',
				'title': 'Question suivante',
				'id': 'thebutton',
				'styles': { 'display': 'none' },
				'events': {
					'click': function(event){
						event.stop();
						var goToQuestion = 'question'+(parseInt(question)+1);
						var nextButton = $('thebutton');
						goTo(this,goToQuestion);
						$('thebutton').fade('out');
						(function(){$('reponse'+question).removeChild(nextButton)}).delay(500);
					}
				}
			});
			var nextButtonSpan = new Element('span', {
				'html': 'Question suivante'
			});
			var holder = $('reponse'+question);
			var injectHTML = function(){
				nextButton.inject(holder);
				nextButtonSpan.inject(nextButton);
				nextButton.setStyles({
					display: 'block',
					opacity: 0
				});
				$('thebutton').fade('in');
			}
			injectHTML();
		}
		else{
			var nextButton = new Element('a', {
				'href': '#',
				'class': 'formulaire',
				'title': 'Formulaire d\'inscription',
				'id': 'goToForm',
				'styles': { 'display' : 'none' },
				'events': {
					'click': function(event){
						event.stop();
						var nextButton = $('goToForm');
						goTo(this,'formulaire');
						$('goToForm').fade('out');
						(function(){$('reponse'+question).removeChild(nextButton)}).delay(500);
						(function(){appendSubmitButton();}).delay(500);
					}
				}
			});
			var nextButtonSpan = new Element('span', {
				'html': 'Formulaire d\'inscription'
			});
			var holder = $('reponse'+question);
			var injectHTML = function(){
				nextButton.inject(holder);
				nextButtonSpan.inject(nextButton);
				nextButton.setStyles({
					display: 'block',
					opacity: 0
				});
				nextButton.fade('in');
			}
			injectHTML();
		}
	}
	
	appendSubmitButton = function(question){
		var nextButton = new Element('a', {
			'href': '#',
			'class': 'inscription',
			'title': 'Je m\'inscris au concours !',
			'id': 'sendform',
			'styles': { 'display' : 'none' },
			'events': {
				'click': function(event){
					event.stop();
					var ajaxString = $('groupId').value + '|' + $('courriel').value;
					validateInscription(ajaxString);
				}
			}
		});
		var nextButtonSpan = new Element('span', {
			'html': 'Je m\'inscris au concours !'
		});
		var holder = $('contest');
		var injectHTML = function(){
			nextButton.inject(holder);
			nextButtonSpan.inject(nextButton);
			nextButton.setStyles({
				display: 'block',
				opacity: 0
			});
			$('sendform').fade('in');
		}
		injectHTML();
	}

	validateInscription = function(string){
		XMLURL = '/ajax/validateSubscription.asp?string='+string;
		var inscriptionAjaxRequest = new AjaxRequestSetup();
		inscriptionAjaxRequest.url = XMLURL;
		inscriptionAjaxRequest.ReturnFunction = validateSubscriptionResponse;
		inscriptionAjaxRequest.MAXIMUM_WAITING_TIME = 3000;
		XmlRequestStandAlone(inscriptionAjaxRequest);
	}
	
	validateSubscriptionResponse = function(xmlResponse){
		var response = xmlResponse.split('|');
		var courriel = $('courriel');
		var theForm = $('form_inscription');
		if(response[0]=='false') courriel.addClass('erreur');
		else courriel.removeClass('erreur');
		validate(theForm,xmlResponse);
	}
	
	validate = function(form,courriel){
		var getFormData = $('coords').getElements('input');
		var errorList = new Array();
		var response = courriel.split('|');
		if($('errorbox')) $('main').removeChild($('errorbox'));
		for(i=0;i<getFormData.length;i++){
			if(getFormData[i].value==''){
				getFormData[i].addClass('erreur');
				errorList.push('Le champ ' + getFormData[i].name + ' ne peut être vide');
			}
			else {
				if(getFormData[i]!=$('courriel')) getFormData[i].removeClass('erreur');
			}
		}
		if(!$('age').value.match(/^([0-9]+)$/)){
			$('age').addClass('erreur');
			errorList.push('Le champ âge doit contenir une valeur numérique');
		}
		else $('age').removeClass('erreur');
		if(response[0]=='false'){
			var emailCode = parseInt(response[1]);
			if(emailCode==0) errorList.push('L\'adresse de courriel saisie est invalide');
			else if(emailCode==1) errorList.push('Vous avez déja participé au concours pour cette période');
		}
		if(errorList.length){
			var errorBox = new Element('div', {
				'id': 'errorbox',
				'html': '<strong>Les erreurs suivantes sont survenues :</'+'strong>',
				'styles': { 'display': 'none' }
			});
			var holder = $('main');
			var injectHTML = function(){
				errorBox.inject(holder, 'top');
				errorBox.setStyles({
					display: 'block',
					opacity: 0
				});
				for(i=0;i<errorList.length;i++){
					errorBox.innerHTML += '<span>' + errorList[i] + ';</'+'span>';
				}
				errorBox.fade('in');
				$('errorbox').addEvent('click', function(event) {
                    event.stop();
					$('errorbox').fade('out');
					(function(){$('main').removeChild($('errorbox'))}).delay(500);
                });
			}
			injectHTML();
		}
		else form.submit();
	}
});