;
(function ($) {
    var init = function () {
        $('#persona_name').focus();
        if ($('input[name=is_valid_persona]').val() == 'FALSE') {
            //$('#nucleusregistration_submit').hide();
			
			//only fade button on persona_name, not persona_name2
			if($('#persona_name').length > 0) {$('#form-btn').fadeOut(400);}
            $('#nucleusregistration_submit').attr('disabled', true);
            //$('#nucleusregistration_submit').fadeOut(400);
        }
        $('.required_field').find(':input:').keypress(function (e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code == 13) {e.preventDefault();}
        });
        $('#nucleus_register').submit(function () {
            //do validation	
            if ($('#tos:checked').length > 0) {
                return true;
            } else {
                return false;
            }
        });
	$('.historyBack').click(function(){
		//do back request
		history.back();
	});
	var is_dob_valid = false;
        $('#nucleusregistration_submit').click(function (e) {
            if ($("#persona_name").val() == $("#persona_name_check_results").attr('result')) {
                var retVal = true;
                if ($('#tos:checked').length === 0) {
                    $('.tos_error').fadeIn(300);
                    retVal = false;
                } else {$('.tos_error').fadeOut(300);}
                /* if ($('#goptin:checked').length === 0) {
                    $('.goptin_error').fadeIn(300);
                    retVal = false;
                } else {$('.goptin_error').fadeOut(300);} */
                if (($('#pwd').val()!=$('#pwd_confirm').val()) || ($('#pwd').val()==='' || $('#pwd_confirm').val()==='')) {
                    $('.password_error').fadeIn(300);
                    retVal = false;
                } else {$('.password_error').fadeOut(300);}
                if ($('#persona_name').val()=== '') {
                    $('.persona_error').fadeIn(300);
                    retVal = false;
                } else {$('.persona_error').fadeOut(300);}
                if ($('#uemail').val()=== '') {
                    $('.emailaddress_error').fadeIn(300);
                    retVal = false;
                } else {$('.emailaddress_error').fadeOut(300);}
                if (isDobValid()=== false) {
                    $('.dob_error').fadeIn(300);
                    retVal = false;
                } else {$('.dob_error').fadeOut(300);}
                if ($('#country').val()=== '') {
                    $('.country_error').fadeIn(300);
                    retVal = false;
                } else {$('.country_error').fadeOut(300);}
                if ($('#lan').val()=== '') {
                    $('.language_error').fadeIn(300);
                    retVal = false;
                } else {$('.language_error').fadeOut(300);}
		if(isValidEmail()) {
			retval = true;
			$('.emailaddress_error').fadeOut(300);
		} else {$('.emailaddress_error').fadeIn(300);}
                if (retVal == true) {
			$('.error_response').slideUp();
					var page = document.location.toString();
					var proto = page.split('//')[0]+'//';
					page = page.split("/");
					page.splice(0,2);
					var action = proto+page.join('/');

					document.getElementById('nucleus_register').action = action;
                    $('#nucleus_register').submit();
                } else {$('.error_response').slideDown();}
                return retVal;

            } else {
                $("#persona_name_check_results").html('The persona name that was validated has been modified, please re-check the persona name');
                $('input[name=is_valid_persona]').val('FALSE');
                $(this).attr('result', 'FALSE');
                $('#nucleusregistration_submit').attr('disabled', true);
	        $('#form-btn').fadeOut(400);
                return false;
            }
        });
	$('.required_field').focusin(function(){
		var personaField = $('#persona_name');
		if($(this).attr('id')==='persona_name' || $(this).attr('id')==='persona_name2') {
			//pretty much ignore this for now
		} else {
			if (personaField.val() == '') {
				$('input[name=is_valid_persona]').val('FALSE');
				$("#persona_name_check_results").attr('result', 'FALSE');
				$('#nucleusregistration_submit').attr('disabled', true);
				//$('#nucleusregistration_submit').fadeOut(400);		
				$('#form-btn').fadeOut(400);

				personaField.focus();
				$('.persona_image_result').html('<img src="/en/media/images/ea-validate-error.png" />');
				$('.error_response').slideDown();
				$('.persona_error').fadeIn(300);
			} else {
				$('#nucleusregistration_submit').attr('disabled', true);
				//$('#nucleusregistration_submit').fadeOut(400);		
				$('#form-btn').fadeOut(400);

				$("#persona_name_check_results").load("/en/components/check_persona_name/" + $("#persona_name").val(), function (data) {
					if (data == '1') {
						$('.error_response').slideUp();
						$('.persona_image_result').html('<img src="/en/media/images/ea-validate-confirm.png" />');
						$('input[name=is_valid_persona]').val('TRUE');
						$("#persona_name_check_results").attr('result', $("#persona_name").val());
						$('#nucleusregistration_submit').attr('disabled', false);
						//$('#nucleusregistration_submit').fadeIn(400);		
						$('#form-btn').fadeIn(400);
						$('.persona_error').fadeOut(300);
					} else {
						$('.persona_image_result').html('<img src="/en/media/images/ea-validate-error.png" />');
						$('.error_response').slideDown();
						$('input[name=is_valid_persona]').val('FALSE');
						$("#persona_name_check_results").attr('result', 'FALSE');
						$('#nucleusregistration_submit').attr('disabled', true);
						//$('#nucleusregistration_submit').fadeOut(400);		
						$('#form-btn').fadeOut(400);
						$('.persona_error').fadeIn(300);
					}
				});
			}
		}
	});
         /*$('#persona_name2').blur(function () {
            if ($(this).val() == '') {
                $('input[name=is_valid_persona]').val('FALSE');
                $("#persona_name_check_results").attr('result', 'FALSE');
                $('#nucleusregistration_submit').attr('disabled', true);
                //$('#nucleusregistration_submit').fadeOut(400);		
  	        //$('#form-btn').fadeOut(400);

                /*$('#persona_name2').focus();
		$('.persona_image_result').html('<img src="/en/media/images/ea-validate-error.png" />');
		$('.error_response').slideDown();*/
                //$('.persona_error').fadeIn(300);
            /*} else {
                $('#nucleusregistration_submit').attr('disabled', true);
                //$('#nucleusregistration_submit').fadeOut(400);		
  	        //$('#form-btn').fadeOut(400);

                $("#persona_name_check_results").load("/en/components/check_persona_name/" + $("#persona_name2").val(), function (data) {
                    if (data == '1') {
			$('.error_response').slideUp();
			$('.persona_image_result').html('<img src="/en/media/images/ea-validate-confirm.png" />');
                        $('input[name=is_valid_persona]').val('TRUE');
                        $("#persona_name_check_results").attr('result', $("#persona_name2").val());
                        $('#nucleusregistration_submit').attr('disabled', false);
                        //$('#nucleusregistration_submit').fadeIn(400);		
  	        	//$('#form-btn').fadeIn(400);
               		$('.persona_error').fadeOut(300);
                    } else {
			$('.persona_image_result').html('<img src="/en/media/images/ea-validate-error.png" />');
			$('.error_response').slideDown();
                        $('input[name=is_valid_persona]').val('FALSE');
                        $("#persona_name_check_results").attr('result', 'FALSE');
                        $('#nucleusregistration_submit').attr('disabled', true);
                        //$('#nucleusregistration_submit').fadeOut(400);		
	  	        //$('#form-btn').fadeOut(400);
                    	$('.persona_error').fadeIn(300);
                    }
                });
            }
        }); */
	function isValidEmail() {
		var filter = /\S+@\S+\.\S+/;
		if(($('#uemail').val().search(filter)===0) && ($('#uemail').val().match(/@/g).length==1)) {
			return true;
		} else {
			return false;
		}
	}
        /********************************/
	function isDobValid() {
            	var dayVal = $('#dob_day').val()==='' ? 1 : $('#dob_day').val();
	    	var monthVal = $('#dob_month').val()==='' ? 1 : $('#dob_month').val();
		var yearVal = $('#dob_year').val()==='' ? 1 : $('#dob_year').val();
		if(dayVal===1 || monthVal===1 || yearVal===1) {
			return false;
		} else {
			return true;
		}
	}
        var daysInMonths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

        function updateDays() {
            var dayVal = $('#dob_day').val()==='' ? 1 : $('#dob_day').val();
	    var monthVal = $('#dob_month').val()==='' ? 1 : $('#dob_month').val();
            var daysInMonth = parseInt(daysInMonths[monthVal]);
            var currentDaysInMonth = parseInt(daysInMonths[monthVal]);
            // check for leap years
            daysInMonth += isLeapYear($('#dob_year').val()) && daysInMonth == 28 ? 1 : 0;

            var dayOptions = '<option value="">Day</option>';
            for (i = 1; i <= daysInMonth; i++) {
                displayNumber = i < 10 ? '0' + i : i;
                dayOptions += '<option value="' + i + '"' + (i == dayVal ? ' selected' : '') + '>' + displayNumber + '</option>';
            }
            $('#dob_day').html(dayOptions);
		if(currentDaysInMonth>daysInMonth) {
			is_dob_valid = false;
			$('#dob_month').val(0);
		}
        }

        function updateMonths() {
	    	var monthVal = $('#dob_month').val()==='' ? 1 : $('#dob_month').val();
           	var daysInMonth = parseInt(daysInMonths[monthVal]);
            	var dayVal = $('#dob_day').val()==='' ? 1 : $('#dob_day').val();
	        daysInMonth += isLeapYear($('#dob_year').val()) && daysInMonth == 28 ? 1 : 0;
            	var currentDaysInMonth = parseInt(daysInMonths[monthVal]);
		var dayOptions = '<option value="">Day</option>';
            	for (i = 1; i <= daysInMonth; i++) {
                	displayNumber = i < 10 ? '0' + i : i;
                	dayOptions += '<option value="' + i + '"' + (i == dayVal ? ' selected' : '') + '>' + displayNumber + '</option>';
           	}
            	$('#dob_day').html(dayOptions);
		if(dayVal>daysInMonth) {
			is_dob_valid = false;
			$('#dob_day').val(0);
		} else {$('#dob_day').val(dayVal);}
	}
        function updateYears() {
	    	var monthVal = $('#dob_month').val()==='' ? 1 : $('#dob_month').val();
           	var daysInMonth = parseInt(daysInMonths[monthVal]);
            	var dayVal = $('#dob_day').val()==='' ? 1 : $('#dob_day').val();
	        daysInMonth += isLeapYear($('#dob_year').val()) && daysInMonth == 28 ? 1 : 0;
            	var currentDaysInMonth = parseInt(daysInMonths[monthVal]);
		if(currentDaysInMonth>daysInMonth) {
			var dayOptions = '<option value="">Day</option>';
            		for (i = 1; i <= daysInMonth; i++) {
                		displayNumber = i < 10 ? '0' + i : i;
                		dayOptions += '<option value="' + i + '"' + (i == dayVal ? ' selected' : '') + '>' + displayNumber + '</option>';
           		 }
            		$('#dob_day').html(dayOptions);
		}
		if(dayVal>daysInMonth) {
			is_dob_valid = false;
			$('#dob_day').val(daysInMonth);
		} else {$('#dob_day').val(dayVal);}
	}
        $('#dob_day').change(function () {updateDays();}); 
        $('#dob_month').change(function () {updateMonths();}); 
	$('#dob_year').change(function () {updateYears();}); 

        function isLeapYear(year) {
            return (((year % 4 == 0) && (year % 100 != 0)) || year % 400 == 0);
        } /********************************/

    }

    $(init);

})(jQuery);
