var Users = {
	Utils: {
		
		// Reload plugin validation
		reload_validation: function()
		{
			$("form.validate").validationEngine();
		},
		
		// Allow responsible fields
		show_responsible_fieldset: function()
		{
			$("div#form-responsible").slideDown();
		},
		hide_responsible_fieldset: function()
		{
			$("div#form-responsible").slideUp();
		},
		create_masks: function()
		{
			// Masks
			$(".frm-phone").mask("(99) 9999.9999");
			$(".frm-cep").mask("99999-999");
			$(".frm-cpf").mask("999.999.999-99");
			$(".frm-date").mask("99/99/9999");
		},
		handlers_init: function()
		{
			Users.Register.reload_instruments();
			Users.Register.handler_born_in();
			Users.Register.handler_FormAlreadyParticipateMimo();
			Users.Register.handler_FormHasMusicalExperience();
			Users.Register.handler_FormTimeStudyMusic();
			Users.Utils.reload_validation();
		 }
	},
	Register: {
		init: function()
		{ 
			
			Users.Utils.create_masks();
			Users.Utils.handlers_init();
      
			/**
			 * HANDLERS
			 **/
			
			// Selects
			$("select#FormTimeStudyMusic, select#FormHasMusicalExperience, select#FormAlreadyParticipateMimo, select#FormBornInY").blur(function(){
				Users.Register.handler_born_in();
				Users.Register.handler_FormAlreadyParticipateMimo();
				Users.Register.handler_FormHasMusicalExperience();
				Users.Register.handler_FormTimeStudyMusic();
				Users.Utils.reload_validation();
			});

			$("select#FormTimeStudyMusic, select#FormHasMusicalExperience, select#FormAlreadyParticipateMimo, select#FormBornInY").change(function(){
				Users.Register.handler_born_in();
				Users.Register.handler_FormAlreadyParticipateMimo();
				Users.Register.handler_FormHasMusicalExperience();
				Users.Register.handler_FormTimeStudyMusic();
				Users.Utils.reload_validation();
			}); 
			
			// Handler Courses
			$("select#FormCoursesId").change(function(){
				Users.Register.reload_instruments();
				Users.Utils.reload_validation();
				
			});
			
		},
		
		// If handler_FormHasMusicalExperience is not 'não estuda', FormPlacesHasStudy is REQUIRED
		handler_FormTimeStudyMusic: function()
		{
			$("select#FormTimeStudyMusic").each(function(){
				var answer = $(this).val();
				if (answer != 'não estuda') {
					$("#FormPlacesHasStudy, #FormRepertorie").removeAttr('class');
					$("#FormPlacesHasStudy, #FormRepertorie").attr('class','validate[required]');
				} else {
					$("#FormPlacesHasStudy, #FormRepertorie").removeAttr('class');
					$(".FormPlacesHasStudyformError, .FormRepertorieformError").remove();
				}
			});
		},
		
		// If handler_FormHasMusicalExperience is 'sim', FormExperienceMusical is REQUIRED
		handler_FormHasMusicalExperience: function()
		{
			$("select#FormHasMusicalExperience").each(function(){
				var answer = $(this).val();
				if (answer == 'sim') {
					$("#FormExperienceMusical").removeAttr('class');
					$("#FormExperienceMusical").attr('class','validate[required]');
				} else {
					$("#FormExperienceMusical").removeAttr('class');
					$(".FormExperienceMusicalformError").remove();
				}
			});
		},
		
		// If FormAlreadyParticipateMimo is 'sim', FormMimoParticipateCourse and FormMimoParticipateYear is REQUIRED
		handler_FormAlreadyParticipateMimo: function()
		{
			$("select#FormAlreadyParticipateMimo").each(function(){
				var answer = $(this).val();
				if (answer == 'sim') {
					$("#FormMimoParticipateCourse").removeAttr('class');
					$("#FormMimoParticipateCourse").attr('class','validate[required]');
				} else {
					$("#FormMimoParticipateCourse").removeAttr('class');
					$(".FormMimoParticipateCourseformError").remove();
				}
			});
		},
		
		// Handler born_in
		handler_born_in: function(){
			var year = parseInt($("select#FormBornInY").val());
			var today = new Date();
			var actual_year = today.getFullYear();
			var diference = actual_year-year;
			if ((diference >= 0) && (diference <= 17)) {
					
					$("#FormResponsibleName, #FormResponsibleAddress, #FormResponsiblePhone").removeAttr('class'); 
					$("#FormResponsibleName, #FormResponsibleAddress, #FormResponsiblePhone").attr('class','validate[required]'); 
					
					Users.Utils.show_responsible_fieldset();
					
			} else {
				$("#FormResponsibleName, #FormResponsibleAddress, #FormResponsiblePhone").removeAttr('class'); 
				$(".formError .FormResponsiblePhoneformError, .formError .FormResponsibleAddressformError, .formError .FormResponsibleNameformError").remove();
				Users.Utils.hide_responsible_fieldset();
			}
		},
		
		reload_instrument_played: function()
		{
			var instrument_id = parseInt($("select#FormInstrumentId").val());
			$.post(base_path + 'users/instrument_played/' + instrument_id, function(data){
				$("select#FormInstrumentPlayedId").html(data);
			});
		},
		
		handler_FormInstrumentPlayedId: function() {
			
			$("select#FormInstrumentId, label[for='FormInstrumentId']").show();
			$("select#FormInstrumentPlayedId, label[for='FormInstrumentPlayedId']").show();
			
			// Reload workshops instruments
			Users.Register.reload_instrument_played();
			
			// Workshops instruments
			$("select#FormInstrumentId").change(function(){
				
				var courses_id = parseInt($("select#FormCoursesId").val());
				var instrument_id = parseInt($("select#FormInstrumentId").val());
				if (courses_id == '3') {
					Users.Register.reload_instrument_played();
				}
			});
		},
		
 		// Reload Instruments
		reload_instruments: function() {
			$("select#FormInstrumentId").each(function(){
				var courses_id = parseInt($("select#FormCoursesId").val());
				
				//if FormCoursesId == 3 (hide FormIsOrchestraCandidate)
				if (courses_id == '3') {
					$("#ask-is_orchestra_candidate").show();
					$("#FormIsOrchestraCandidate").removeAttr('class');
					$("#FormIsOrchestraCandidate").attr('class','validate[required]');
					
				} else {
					$("#ask-is_orchestra_candidate").hide();
					$("select#FormIsOrchestraCandidate").removeAttr('class');
					$(".FormFormIsOrchestraCandidateError").remove();
				}

				// Create categories
				switch (courses_id) {
					case 1:
						$("select#FormCategory").html('<option value="Ouvinte">' + Ouvinte + '</option><option value="Executante">' + Executante + '</option>');
						break;
					case 2:
						$("select#FormCategory").html('<option value="Ouvinte">' + Ouvinte + '</option><option value="Executante">' + Executante + '</option>');
						break;
					case 3:
						$("select#FormCategory").html('<option value="Executante">' + Executante + '</option>');
						break;
					case 4:
						$("select#FormCategory").html('<option value="Ouvinte">' + Ouvinte + '</option>');
						break;
				}
				
				$.post(base_path + 'users/instrument/' + courses_id, function(data){
					$("select#FormInstrumentId").html(data);
					if (courses_id == 1) {
						$("select#FormInstrumentId, label[for='FormInstrumentId']").hide();
						$("select#FormInstrumentPlayedId, label[for='FormInstrumentPlayedId']").hide();
					} else if (courses_id == 3){
						
						// Call handler
						Users.Register.handler_FormInstrumentPlayedId();
						
					} else {
						$("select#FormInstrumentId, label[for='FormInstrumentId']").show();
						$("select#FormInstrumentPlayedId, label[for='FormInstrumentPlayedId']").hide();
					}
					
				});
			});
	 	}
	}
}