$(document).ready(function(){
	/* START OF OWNERSHIP MODAL CODE */
	function rearrangeOwnersForms(){
		var i = 1;
		$(".owners_forms").find(".owner_form").each(function(){
			var formId = $(this).attr("form-id");
			var inputId = +formId - +1;
			var newInputId = i - 1;
			$(this).find("input,select").each(function(){
				$(this).attr("name", $(this).attr("name").replace("["+inputId+"]","["+newInputId+"]") );
			});
			
			$(this).attr("form-id",i);
			i++;
		});
		i = 1;
		$(".owners_list").find(".owner_list_item").each(function(){
			$(this).attr("form-id",i);
			i++;
		});
	}

	function deleteOwnerForms() {
		$(".owners_forms").find(".owner_form").each(function(){
			if($(this).attr("form-id") == 1){
				$(this).find("input,select").each(function(){
					$(this).val("");
				});
			} else {
				$(this).remove();
			}
		});
		$(".owners_list").find(".owner_list_item").each(function(){
			if($(this).attr("form-id") == 1){
				$(this).children("td.text").text("");
			} else {
				$(this).remove();
			}
		});
		
		$("#owners_forms_count").val(0);
		$(".owners_forms").removeClass("d-none");
		$(".owners_forms .owner_form[form-id=1]").removeClass("d-none");
		$(".owners_list").addClass("d-none");
	}

	function resetOwnerFormData(formId){
		$(".owners_forms .owner_form[form-id="+formId+"]").find("input,select").each(function(){
			$(this).val("");
			$(this).removeClass("has-value");
		});
	}

	function deleteEmptyForms() {
		var total_forms = $(".owners_list .owner_list_item:last-child").attr("form-id");
		$(".owners_forms").find(".owner_form").each(function(){
			if($(this).attr("form-id") > total_forms){
				$(this).remove();
			}
		});
		
		if($(".owners_list .owner_list_item:last-child td.text").text() != ""){
			$("#owners_forms_count").val(total_forms);
		}
		
		if(total_forms==1 && $("#owners_forms_count").val() == 0){
			resetOwnerFormData(1);
		}
	}

	function recalculatePercentage() {
		var ownershipPercentage = $("#ownershipPercentage").val();
		var total_forms = $(".owners_list .owner_list_item").length;
		var totalPercentageConsumed = 0;
		$(".owner_percentage").each(function(){
			totalPercentageConsumed += +$(this).val();
		});
		
		var remaining_percentage = 100 - (+ownershipPercentage + +totalPercentageConsumed);
		$(".owners_forms").find(".owner_form").each(function(){
			if($(this).attr("form-id") <= total_forms){
				var percentInput = $(this).find("input.owner_percentage");
				var value = $(percentInput).val();
				if(value==""){
					value = 0;
				}
				$(percentInput).attr("max",(+value + +remaining_percentage));
			}
		});
		
		if(remaining_percentage >= 25){
			$(".add_more_owner_btn").removeClass("d-none");
		} else {
			$(".add_more_owner_btn").addClass("d-none");
		}
	}

	function deleteOwnerForm(formId){
		var total_forms = $(".owners_list .owner_list_item").length;
		if(total_forms==1){
			resetOwnerFormData(formId);
			$(".owners_list .owner_list_item[form-id="+formId+"] td.text").text("");
			$(".owners_list").addClass("d-none");
			$("#owners_forms_count").val("0");
			showNewForm();
		} else {
			$(".owners_forms .owner_form[form-id="+formId+"]").remove();
			$(".owners_list .owner_list_item[form-id="+formId+"]").remove();
			$("#owners_forms_count").val( $(".owners_list .owner_list_item").length );
		}
		
		rearrangeOwnersForms();
		recalculatePercentage();
	}

	$("#ownershipPercentage").on("input", function(){
		var value = $(this).val();
		var form_group = $(this).closest(".form-group");
		if(value >= 25 && value <= 75){
			deleteOwnerForms();
			$(form_group).find('.add-owners').removeClass("d-none");
			$(".owners_forms .owner_form[form-id=1] input.owner_percentage").attr("min",25);
			$(".owners_forms .owner_form[form-id=1] input.owner_percentage").attr("max",(100 - value));
		} else {
			$(form_group).find('.add-owners').addClass("d-none");
		}
	});

	$(".add-owners").on("click",function(){
		showNewForm();
	});

	function showNewForm(){
		deleteEmptyForms();
		recalculatePercentage();
		if($("#owners_forms_count").val() > 0){
			$(".owners_forms").addClass("d-none");
			$(".owners_forms .owner_form").addClass("d-none");
			$(".owners_list").removeClass("d-none");
		} else {
			$(".owners_forms").removeClass("d-none");
			$(".owners_forms .owner_form").removeClass("d-none");
			$(".owners_list").addClass("d-none");
		}
	}

	function saveOwner(e){
		var errors = false;
		var form = $(e).parents(".owner_form");
		var form_id = $(form).attr("form-id");
		var owner_title = "";
		var owner_first_name = "";
		var owner_last_name = "";
		var owner_percentage = "";
		var owner_percentage_max = "";
		$(form).find("input,select").each(function(){
			var input = $(this);

			if($(input).attr("name").search("owner_title") != -1){
				owner_title = $(input).val();
			}

			if($(input).attr("name").search("owner_first_name") != -1){
				owner_first_name = $(input).val();
			} else if($(input).attr("name").search("owner_last_name") != -1){
				owner_last_name = $(input).val();
			}

			if($(input).attr("name").search("owner_percentage") != -1){
				owner_percentage = $(input).val();
				owner_percentage_max = $(input).attr("max");
			}
			
			var form_group = $(input).closest(".form-group");
			var error_tag = $(form_group).children(".sign-up-error");
			var error_icon = $(form_group).find("div.error-icon");
			var input_label = $(input).closest(".form-group").children("label.control-label");
			if( (
					($(input).val()=="") || 
					(input[0].type=="file" && $(input)[0].files.length == 0) || 
					(input[0].type=="radio" && !$("input[name="+$(input).attr("name")+"]").is(":checked"))
				) && input[0].type!="hidden" ){
				$(input).addClass("is-invalid");
				$(error_tag).removeClass("d-none");
				$(error_tag).html($(input_label).html() + " is mandatory");
				$(error_icon).removeClass("d-none");
				errors = true;
			} else if ( input[0].type!="hidden" ) {
				$(input).removeClass("is-invalid");
				$(error_tag).addClass("d-none");
				$(error_tag).html("");
				$(error_icon).addClass("d-none");
				$(input).prev("input[type=hidden]").val($(input).val());
				if(input[0].type=="select-one"){
					var selectedState = $(input).children("option:selected").html();
					$(input).parents().next('input[type=hidden].state').val(selectedState);
				}
			}
		});
		
		if(!errors){
			owner_title = owner_first_name + " " + owner_last_name;
			$(form).addClass("d-none");
			$(".owners_forms").addClass("d-none");
			

			var owner_list_item = $(".owners_list .owner_list_item[form-id="+form_id+"]");
			if(owner_list_item.length == 0){
				var new_owner_list_item = $(".owners_list .owner_list_item[form-id=1]").clone(true, true).appendTo( ".owners_list table tbody" );
				new_owner_list_item.attr("form-id",form_id);
			}
			$(".owners_list").removeClass("d-none");
			$(".owners_list .owner_list_item[form-id="+form_id+"] td.text").html(owner_title + "<br><small>Ownership: "+owner_percentage+"%</small>");
			
			$("#owners_forms_count").val($(".owners_list .owner_list_item").length);
			
			recalculatePercentage();
		} else {
			return false;
		}
	}

	$(".owner_save_btn").on("click", function(){
		saveOwner(this);
	});

	function deleteForm(e){
		var form = $(e).closest(".owner_list_item");
		var form_id = $(form).attr("form-id");
		if(form_id==1 || (form_id>1 && $(".owner_list_item[form-id="+form_id+"]").length==1)){
			deleteOwnerForm(form_id);
		}
	}
	$(".owner_delete_btn").on("click", function(){
		deleteForm(this);
	});

	function showOwnerEditForm(e){
		var parent = $(e).closest(".owner_list_item");
		$(".owners_list").addClass("d-none");
		var form_id = $(parent).attr("form-id");
		$(".owners_forms").removeClass("d-none");

		var owner_form = $(".owners_forms .owner_form[form-id="+form_id+"]");
		$(owner_form).removeClass("d-none");
		$(owner_form).find("input[type=hidden]").each(function(){
			if(!$(this).hasClass("state")){
				var node = $(this).next();
				var nodeName = (node[0].nodeName).toLowerCase();
				if(nodeName == "input" || nodeName == "select"){
					$(node).val($(this).val());
					$(node).removeClass("is-invalid");
					$(node).addClass("has-value");
					var form_group = $(node).closest(".form-group");
					var error_tag = $(form_group).children(".sign-up-error");
					var error_icon = $(form_group).find("div.error-icon");
					$(error_tag).addClass("d-none");
					$(error_tag).html("");
					$(error_icon).addClass("d-none");
				}
			}
		});
	}

	$(".owners_list .owner_list_item .owner_edit_btn").on("click",function(){
		showOwnerEditForm(this);
	});

	$(".add_more_owner_btn").on("click",function(){
		var ownershipPercentage = $("#ownershipPercentage").val();
		var total_forms = $(".owners_list .owner_list_item").length;
		var totalPercentageConsumed = 0;
		$(".owner_percentage").each(function(){
			totalPercentageConsumed += +$(this).val();
		});
		
		var remaining_percentage = 100 - (+ownershipPercentage + +totalPercentageConsumed);
		if(remaining_percentage>=25){
			var new_owner_form = $(".owners_forms .owner_form:last-child").clone();//.appendTo( ".owners_forms" );
			var owners_forms_count = $("#owners_forms_count").val();
			var form_id = +owners_forms_count + +1;
			
			var inputId = +new_owner_form.attr("form-id") - +1;
			var newInputId = owners_forms_count;
			$(new_owner_form).find("input,select").each(function(){
				$(this).attr( "name", $(this).attr("name").replace("["+inputId+"]","["+newInputId+"]") );
			});
			
			new_owner_form.attr("form-id",form_id);
			new_owner_form.find("input.owner_percentage").attr("max",remaining_percentage);
			
			$(new_owner_form).find("input[data-mask='ssn']").mask("999-99-9999");
			$(new_owner_form).find(".owner_save_btn").on("click", function(){
				saveOwner(this);
			});
			
			new_owner_form.appendTo( ".owners_forms" );
			CustomValidation.init();
			
			resetOwnerFormData(form_id);
			
			$(".owners_list").addClass("d-none");
			$(".owners_forms").removeClass("d-none");
			$(".owners_forms .owner_form[form-id="+form_id+"]").removeClass("d-none");
		}
	});
	/* END OF OWNERSHIP MODAL CODE */
});