var regMail = new RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,8})+$/);
var regClass = new RegExp(/^chk/);
var regPhone = new RegExp(/^[0-9- ()+]+$/);

// ERROR display
function displayError(elt){
	jQuery(elt).parent().addClass("error-line");
	jQuery("form#leaf-handraiser-form .error-msg").show();
}

function checkedSiblings(obj){
	var checkednb = 0;
	jQuery(obj).siblings("input[type=radio]").each(function(){
		if(jQuery(this).attr("checked")){
			checkednb=1;
		}
	});
	if(checkednb==0){
		return false;
	}else{
		return true;
	}
}

/////////////// INIT ////////////////
jQuery(document).ready(function(){
	
	// Form check
	jQuery("form#leaf-handraiser-form").bind("submit",function(event){
		
		jQuery(this).find(".error-line").removeClass("error-line");
		jQuery(this).find(".error-msg").hide();
		
		jQuery(this).find("input[class*=chk],select[class*=chk]").each(function(){
			var rawInputString = jQuery(this).attr("value");
			var strInputValue =  rawInputString.replace(/^\s+/, "").replace( /\s+$/, "");
			jQuery(this).val(strInputValue);
			var strEltClass = jQuery(this).attr("class").split(" ");
			strEltClass = jQuery.grep(strEltClass, function(txt){
				return (regClass.test(txt));
		    });
			
			switch (strEltClass[0]) {
				case "chk-empty":
					if(!strInputValue.length){
						displayError(jQuery(this));
						event.preventDefault();
					}
					break;
				case "chk-mail":
					var matchDigits = strInputValue.match(regMail);
					if(matchDigits == null){
						displayError(jQuery(this));
						event.preventDefault();
					}
					break;
				case "chk-radio":
					if(!jQuery(this).attr("checked")  && !checkedSiblings(this)){
						displayError(jQuery(this));
						event.preventDefault();
					}
					break;
				case "chk-radio-reversed":
					if(jQuery(this).attr("checked")  || checkedSiblings(this)){
						displayError(jQuery(this));
						event.preventDefault();
					}
					break;
				case "chk-select":
					if(jQuery(this).find("option:selected").attr("value") == "-1"){
						displayError(jQuery(this));
						event.preventDefault();
					}
					break;
				case "chk-regPhone":
					var matchDigits = strInputValue.match(regPhone);
					if(matchDigits == null){
						displayError(jQuery(this));
						event.preventDefault();
					}
					break;
			}
		});
		jQuery(".mandatory-error, .personal-data-error").remove();
		if(jQuery(".check-mandatory").attr("checked")){
			jQuery(".check-mandatory").parents("p").addClass("error-line");
			jQuery(".error-msg").append("<p class=\"mandatory-error\">"+noOptinEmailAddress+"</p>");
	jQuery("form#leaf-handraiser-form .error-msg").show();
			event.preventDefault();
		}

		if(jQuery(".check-legals").size() > 0 && !jQuery(".check-legals").attr("checked")){
			jQuery(".error-msg").append("<p class=\"personal-data-error\">"+noDataAgreement+"</p>");
			jQuery("form#leaf-handraiser-form .error-msg").show();
			event.preventDefault();
		}
		
		if(jQuery(".check-neednocheck-legals").size() > 0 && jQuery(".check-neednocheck-legals").attr("checked")){
			jQuery(".error-msg").append("<p class=\"personal-data-error\">"+noDataAgreement+"</p>");
			jQuery("form#leaf-handraiser-form .error-msg").show();
			event.preventDefault();
		}
	});
	
	// Display confirmation message depending on the context
	jQuery("#noJsError").hide();
	if(jQuery(".jsRegistrationReturnCode")) {
		var paramName = "returnCode";
		paramName = paramName.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+paramName+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec( window.location.href );
		
		if(results == null || results[1] == "1") {
			jQuery("#regComplete").show();
			jQuery("#regWarning, #regError","#regExpired").hide();
		}
		else if (results[1] == "2") {
			jQuery("#regComplete").hide();
			jQuery("#regWarning").show();
			jQuery("#regError").hide();
			jQuery("#regExpired").hide();
		}
		else if (results[1] == "3") {
			jQuery("#regComplete").hide();
			jQuery("#regWarning").hide();
			jQuery("#regError").show();
			jQuery("#regExpired").hide();
		}
		else if (results[1] == "4") {
			jQuery("#regComplete").hide();
			jQuery("#regWarning").hide();
			jQuery("#regError").hide();
			jQuery("#regExpired").show();
		}
	}
	
});
