var bravobike = {}
bravobike.errors = {}
bravobike.i18n = {
	es: {
		AsistenteError: 'Los nombres, apellidos, edades, alturas y casco de todos los participantes es obligatorio.',
		EmailsDiferentesError: "Los emails no coinciden",
		EmailIncorrectoError: "El email no es correcto",
		FormErrorsAdvise: "Hay errores en el formulario",
		Propio: "Propio",
		Pequenyo: "Peque&ntilde;o",
		Mediano: "Mediano",
		Grande: "Grande"
	},
	en: {
		AsistenteError: 'Name, surname, age, height and helmet are required fields',
		EmailsDiferentesError: "Emails dont match",
		EmailIncorrectoError: "Invalid email",
		FormErrorsAdvise: "The form contains some errors",
		Propio: "Own",
		Pequenyo: "Small",
		Mediano: "Medium",
		Grande: "Big"
	}
}



function __(etiqueta) {
	return bravobike.i18n[bravobike.lang][etiqueta]
}

function validateMail(email1, email2) {
	if(email1 != email2) {
		bravobike.errors.Email = __("EmailsDiferentesError")
		return false
	} else {
		var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (email1.match(emailRegEx)) {
			return true
		} else {
			bravobike.errors.Email = __("EmailIncorrectoError")
			return false
		}
	}
}

function checkAsistentes(form) {
	var requiredFields = $$('#asistentes .required') 
	var ret = true
	for(i=0; i<requiredFields.length; i++) {
		if(requiredFields[i].value == '') {
			var name = requiredFields[i].name
			bravobike.errors['Asistente'] = __('AsistenteError')
			ret = false
		}
	}
	return ret
}

function printErrors () {
	$("errors").innerHTML = ''
	alert(__("FormErrorsAdvise"))
	errorFields = document.getElementsByClassName('errors')
	for (i=0; i<errorFields.length; i++) {
		errorFields[i].innerHTML = ''
	}
	for (value in bravobike.errors) {
		$("errors").innerHTML += bravobike.errors[value]+'<br>'
		$(value+"Error").innerHTML = bravobike.errors[value]
	}
}

function cleanErrors () {
	bravobike.errors = {}
}


function validate(form) {
	var isAsistentesOK = checkAsistentes(form)
	var isEmailOK = validateMail(form.Email.value, form.Email2.value)
	if (isAsistentesOK && isEmailOK) {
		form.submit()
	} else {
		printErrors()
		cleanErrors()
	}	
}

function getAsistente(num) {
	var tds = []
	var td1 = document.createElement('td')
	td1.setAttribute('width','24%')
	td1.innerHTML = '<input class="required" name="Nombre'+num+'" size="17">'
	tds.push(td1)
	var td2 = document.createElement('td')
	td2.setAttribute('width','28%')
	td2.innerHTML = '<input class="required" name="Apellidos'+num+'" size="20">'
	tds.push(td2)
	var td3 = document.createElement('td')
	td3.setAttribute('width','12%')
	td3.innerHTML = '<input class="required" name="Edad'+num+'" size="3" >'
	tds.push(td3)
	var td4 = document.createElement('td')
	td4.setAttribute('width','13%')
	td4.innerHTML = '<input class="required" name="Altura'+num+'" size="3" >'
	tds.push(td4)
	var td5 = document.createElement('td')
	td5.innerHTML = '<select name="casco'+num+'" id="casco'+num+'">'+
						'<option value="Propio">'+__("Propio")+'</option>'+
						'<option value="Pequenyo">'+__('Pequenyo')+'</option>'+
						'<option value="Mediano">'+__('Mediano')+'</option>'+
						'<option value="Grande">'+__('Grande')+'</option>'+
					'</select>'
	tds.push(td5)	
	var tr = document.createElement('tr')
	tr.setAttribute('class','asistente')
	for (var i = 0 ; i < tds.length; i++) {
		tr.appendChild(tds[i])
	}
	return tr
}

function borrarAsistentes(id, numFilas) {
	var trs = $(id).getElementsByTagName('tr')
	for (var i = 0; i < numFilas; i++) {
		$(id).getElementsByTagName('tbody')[0].removeChild(trs[trs.length-1])
	}
}

function anyadirAsistentes(id, numFilas) {
	for (var i = 1; i < numFilas+1; i++) {
		$('asistentes').getElementsByTagName('tbody')[0].appendChild(getAsistente(i))
	}
}

function actualizarAsistentes() {
	numActualAsistentes  = $('asistentes').getElementsByTagName('tr').length-1
	numNuevoAsistentes   = $('numAsistentes').value
	diferenciaAsistentes = numNuevoAsistentes - numActualAsistentes
	if (diferenciaAsistentes < 0) {
		borrarAsistentes('asistentes', Math.abs(diferenciaAsistentes))
	} else if (diferenciaAsistentes > 0) {
		anyadirAsistentes('asistentes', Math.abs(diferenciaAsistentes))
	}
	cleanErrors
}

window.onload = function ()  {
	$('asistentes').getElementsByTagName('tbody')[0].appendChild(getAsistente(0))	
}