// Main method 
//
jQuery(document).ready(function(){
	
	jQuery( "#date_of_birth" ).datepicker({ changeYear: true })
	 					 .datepicker( "option", "dateFormat", 'dd-mm-yy' )
	 					 .datepicker( "option", "defaultDate", "-12y")
	 					 .datepicker(jQuery.datepicker.regional['ro']);
	jQuery("#reg-link").click(function(){
		if(jQuery(".education-text").hasClass('hidden')){
			jQuery(".education-text").removeClass('hidden').hide();
		}
		jQuery(".education-text").slideToggle('fast');
		return false;
	});
	
	// edUK form
	if ( jQuery('#edUK').length > 0 ){

		// show|hide options
		if ( jQuery('#class').length > 0 ){
			showScienceOptions(jQuery('#class').val());
		}
		jQuery('#class').change(function(){
			showScienceOptions(jQuery(this).val());
		});
		// unique category
		jQuery(":checkbox", "#categories").click(function(){
			jQuery(":checkbox", "#categories").not(jQuery(this)).removeAttr('checked');
			jQuery('#categories .label-red').removeClass('label-red');
		});
		// agreement error remove
		jQuery('.schedule-input').click(function(){
			jQuery(this).prev('label').removeClass('label-red');
		});
		jQuery('#edUK').submit(function(){
			
			var msgEl    = jQuery('#formMsg');
			var errorMsg = { 'unique_user': "Candidatul cu datele dstra deja este inregistrat pentru participare in acest an &frasl; " + 
											"<span>Кандидат с Вашими данными уже зарегистрирован в этом году</span>",
							 'unique_user_info': "Rugam sa Va verificati cutia postala electronica si daca nu ati primit confirmare de inregistrare," + 
								 				 "contactati-ne la adresele e-mail <a href=\"mailto:elena@excel.md\">Elena@excel.md</a> sau " + 
								 				 "<a href=\"mailto:iulia@excel.md\">Iulia@excel.md</a> &frasl; <span>Проверьте свою электронную почту и в случае, если подтверждение о " +
							 					 "регистрации Вам не пришло, свяжитесь с нами по адресу <a href=\"mailto:elena@excel.md\">Elena@excel.md</a> или " + 
							 					 "<a href=\"mailto:iulia@excel.md\">Iulia@excel.md</a></span>",
							 'only_latin': "Se completeaza doar cu caratere latine &frasl; <span>Используйте пожалуйста только буквы латинского алфавита</span>",
							 'required': "Cimpuri obligatorii (Se completeaza in mod obligator) &frasl; <span>Заполните пожалуйста обязательные поля</span>" };
			var hasErr   = false;
			
			clear_hints();
			msgEl.hide().empty();
			
			var emptyErrFlag = true;
			jQuery("#edUK .required").each(function(){
			    if(jQuery(this).val().length == 0){
			        jQuery(this).addClass('not-valid');
			        if (emptyErrFlag){
			        	addError(errorMsg['required'], msgEl);
			        	emptyErrFlag = false;
			        }
			        hasErr = true;
			    }
			});
			
			var latinErrFlag = true;
			jQuery('.schedule-form input[type="text"]').each(function(){
			    if(!/^[-a-zA-Z0-9@,._()\/\\\s]*$/.test(jQuery(this).val())){
			    	jQuery(this).addClass('not-valid');
			    	if (latinErrFlag){
			    		addError(errorMsg['only_latin'], msgEl);
			    		hasErr = true;
			    		latinErrFlag = false;
			    	}
			    }
			})
			if (!latinErrFlag || !emptyErrFlag){
				msgEl.removeClass('hidden').show();
			}
			
			if(!jQuery('.schedule-input').is(':checked')){
				jQuery('.schedule-label').addClass('label-red');
				if (emptyErrFlag){
		        	addError(errorMsg['required'], msgEl);
		        	emptyErrFlag = false;
		        }
		        hasErr = true;
			} else {
				jQuery('.schedule-label').removeClass('label-red');
			}
			if(!jQuery(":checkbox:checked", "#categories").length > 0){
				jQuery('.cf-span', "#categories").addClass('label-red');
				if (emptyErrFlag){
		        	addError(errorMsg['required'], msgEl);
		        	emptyErrFlag = false;
		        }
		        hasErr = true;
			} else {
				jQuery('.cf-span', "#categories").removeClass('label-red');
			}
			
			// ajax check if this email is unique in this year
			// should be last validation in a stack

			if( jQuery('#email_cf').val().length && (!jQuery('.not-valid').length > 0) && !hasErr){
				
				jQuery.ajax({
					  url: '/check-unique-email/',
					  type: 'GET',
					  data: 'check_email=1&email_cf=' + jQuery('#email_cf').val(),
					  async: false,
					  success: function(data) {
						if (parseInt(data) == 0){
							var addInfo = jQuery('<div>').addClass('helpfull-info').html(errorMsg['unique_user_info']);
							addError(errorMsg['unique_user'], msgEl);
							msgEl.append(addInfo);
							hasErr = true;
							return false;
						}
					  }
					});
			} else {
				return false;
			}
			if (hasErr){
				msgEl.removeClass('hidden').show();
				return false;
			}
		});		
	} else {
		jQuery("form").each(function(index, form){

			jQuery(form).bind("submit", function(evt){
		        clear_hints();
	        	is_Valid(evt.target) === false ? evt.preventDefault() : true;
			});
	    });
	}
	
	// edUKation results list handle
	// list elements toggle
	jQuery('.list-results > a').click(function(){
		var listEl = jQuery(this).next('.list-results-content');
		listEl.toggle();
		jQuery('.list-results-content').not(listEl).hide();
		return false;
	});
	
});
// show-hide appropriate option
function showScienceOptions(chClass){
	if (!Boolean(chClass.length)){
		chClass = false;
	} else {
		chClass = parseInt(chClass);
	}
    if( chClass ){
        jQuery('#science-options').removeClass('hidden')
        if( chClass > 10 ){
            jQuery('#science-options .junior').each(function(){jQuery(this).hide()});
            jQuery('#science-options .senior').each(function(){jQuery(this).show()});   
        }else{
            jQuery('#science-options .junior').each(function(){jQuery(this).show()});
            jQuery('#science-options .senior').each(function(){jQuery(this).hide()});            
        }
        
    } else {
        jQuery('#science-options').addClass('hidden');
    }
    jQuery('#science-options input[type="checkbox"]')
        .each(function(){
            jQuery(this).attr('checked',false);
        });
}

//adding error message to the div
function addError(msg,container){
	jQuery("<p>").html(msg).appendTo(container);
}
// check the agreement checkbox
function selectCategory(inputObj){
	if(inputObj.is(":checked")){
		inputObj.attr({checked: ""});
	}
	else{
		jQuery('.inner-p').find('input:checked').attr({checked: ""});
		inputObj.attr({checked: "checked"});
	}
}

function is_Valid(form){	
    var valid = true;
    jQuery(".required", form).each(function(index, suspicious_input){  
        var local_valid = validate(suspicious_input);
        local_valid === false ? valid = false : true;
    });
    return valid;
}
// Clears "not-valid" inputs
//
function clear_hints(){
	jQuery(".not-valid").removeClass("not-valid");
}
//
//
function validate(suspicious_input){
    var valid = true;
    
    // emails
    if(jQuery(suspicious_input).attr("title") == "email"){
        if(!RegExp("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}").test(jQuery(suspicious_input).val())){
        	jQuery(suspicious_input).addClass("not-valid");
            return false;
        }
    }else{
        
        if(RegExp("^$|^(\S)*$").test(jQuery(suspicious_input).val())){
        	jQuery(suspicious_input).addClass("not-valid");
            return false;
        }
    
    }
    return true;

}
