﻿
function ValidateRequiredValue(source, arguements) {
    arguements.IsValid = arguements.Value != "";

    if (!arguements.IsValid) {
        $(source).parent().next("dt").addClass("sgmRed-txt");
        $(source).next("ul").children("li").children("h3").children("b").addClass("sgmRed-txt");
    }
    else {
        $(source).parent().next("dt").removeClass("sgmRed-txt");
        $(source).next("ul").children("li").children("h3").children("b").removeClass("sgmRed-txt");

    }
}

function ValidatePostcode(source, arguements) {
    arguements.IsValid = true;
    var postcode = $(source).parent().nextAll("dd").children("input:nth-child(1)");
    var house = $(source).parent().nextAll("dd").children("input:nth-child(2)");
    var messages = $(source).children("div").children("span");
    var label = $(source).parent().next("dt");
    var isRequired = $(source).attr("rel") != "false";
    if (label) {
        $(label).removeClass("sgmRed-txt");
    }
    messages.hide();
    if (postcode.val() == "") {
        if (isRequired) {
            arguements.IsValid = false;
            if (messages.length >= 1) {
                $(messages.get(0)).show();
            }
        }
    } else {
    if (!postcodeValidationExpression.test(postcode.val())) {
            arguements.IsValid = false;
            if (messages.length >= 3) {
                $(messages.get(2)).show();
            }
        }
    }
    if (house.val() == "") {
        if (isRequired) {
            arguements.IsValid = false;
            if (messages.length >= 2) {
                $(messages.get(1)).show();
            } 
        }
    }
    else {
        if (!/[\d]+\s*\w*$/.test(house.val())) {
            arguements.IsValid = false;
            if (messages.length >= 4) {
                $(messages.get(3)).show();
            }
        }
    }
    if (label && !arguements.IsValid) {
        $(label).addClass("sgmRed-txt");
    }
}

function ValidatePhonNumber(source, arguements) {
    arguements.IsValid = true;
    var messages = $(source).children("div").children("span");
    var label = $(source).parent().next("dt");
    if (label) {
        $(label).removeClass("sgmRed-txt");
    }
    messages.hide();

    if (!/^[\-\+\(\)\d]+$/.test(arguements.Value) && arguements.Value !="") {
        arguements.IsValid = false;
        if (messages.length >=1) {
            $(messages.get(0)).show();
        }
    }
    if (label && !arguements.IsValid) {
        $(label).addClass("sgmRed-txt");
    }
}

function ValidateEmail(source, arguements) {
    arguements.IsValid = true;
    var messages = $(source).children("div").children("span");
    var label = $(source).parent().next("dt");
    if (label) {
        $(label).removeClass("sgmRed-txt");
    }
    messages.hide();
    if (arguements.Value == "") {
        arguements.IsValid = false;
        if (messages.length >= 1) {
            $(messages.get(0)).show();
        }
    } else {
        if (!/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(arguements.Value)) {
            arguements.IsValid = false;
            if (messages.length >= 2) {
                $(messages.get(1)).show();
            }
        }
    }
    if (label && !arguements.IsValid) {
        $(label).addClass("sgmRed-txt");
    }
}

function ValidateKVKNumber(source, arguements) {
    arguements.IsValid = true;
    var messages = $(source).children("div").children("span");
    var label = $(source).parent().next("dt");
    if (label) {
        $(label).removeClass("sgmRed-txt");
    }
    messages.hide();
    if (arguements.Value == "") {
        arguements.IsValid = false;
        if (messages.length >= 1) {
            $(messages.get(0)).show();
        }
    } else {
        if (!/^[\d]+$/.test(arguements.Value)) {
            arguements.IsValid = false;
            if (messages.length >= 2) {
                $(messages.get(1)).show();
            }
        }
    }
    if (label && !arguements.IsValid) {
        $(label).addClass("sgmRed-txt");
    }
}

function ValidateRadio(source, arguements) {

    $(source).parent().next("dt").removeClass("sgmRed-txt");
    $(source).next("ul").children("li").children("h3").children("b").removeClass("sgmRed-txt");

    arguements.IsValid = $(source).parent().nextAll("dd").children("label").children("input:checked").length > 0
         || $(source).next("ul").children("li").children("dl").children("dd").children("label").children("input:checked").length > 0;


    if (!arguements.IsValid) {
        $(source).parent().next("dt").addClass("sgmRed-txt");
        $(source).next("ul").children("li").children("h3").children("b").addClass("sgmRed-txt");
    }
}

function ValidateAddress(source, arguements) {
    arguements.IsValid = true;
    var street = $(source).parent().nextAll("dd").children("input:nth-child(1)");
    var house = $(source).parent().nextAll("dd").children("input:nth-child(2)");
    var messages = $(source).children("div").children("span");
    var label = $(source).parent().next("dt");
    var isRequired = $(source).attr("rel") != "false";
    if (label) {
        $(label).removeClass("sgmRed-txt");
    }
    messages.hide();
    if (street.val() == "") {
        if (isRequired) {
            arguements.IsValid = false;
            if (messages.length >= 1) {
                $(messages.get(0)).show();
            } 
        }
    }
    if (house.val() == "") {
        if (isRequired) {
            arguements.IsValid = false;
            if (messages.length >= 2) {
                $(messages.get(1)).show();
            } 
        }
    }
    else {
        if (!/[\d]+\s*\w*$/.test(house.val())) {
            arguements.IsValid = false;
            if (messages.length >= 3) {
                $(messages.get(2)).show();
            }
        }
    }
    if (label && !arguements.IsValid) {
        $(label).addClass("sgmRed-txt");
    }
}

function ValidateHouseNumber(source, arguements) {
    arguements.IsValid = true;    
    var house = $(source).parent().nextAll("dd").children("input:nth-child(2)");
    var label = $(source).parent().next("dt");
    if (label) {
        $(label).removeClass("sgmRed-txt");
    }
    if (house.val() != "") {
       if (!/[\d]+\s*\w*$/.test(house.val())) {
            arguements.IsValid = false;
        }
    }
    if (label && !arguements.IsValid) {
        $(label).addClass("sgmRed-txt");
    }
}



function ValidateSinglePostcode(source, arguements) {
    arguements.IsValid = true;
    var messages = $(source).children("div").children("span");
    var label = $(source).parent().next("dt");
    var isRequired = $(source).attr("rel") != "false";
    if (label) {
        $(label).removeClass("sgmRed-txt");
    }
    messages.hide();
    if (arguements.Value == "") {
        if (isRequired) {
            arguements.IsValid = false;
            if (messages.length >= 1) {
                $(messages.get(0)).show();
            }
        }
    } else {
    if (!postcodeValidationExpression.test(arguements.Value)) {
            arguements.IsValid = false;
            if (messages.length >= 2) {
                $(messages.get(1)).show();
            }
        }
    }
    if (label && !arguements.IsValid) {
        $(label).addClass("sgmRed-txt");
    }
}

function subscribe() {

    var postcode = $($(this).children("input").get(0));
    var house = $($(this).children("input").get(1));
    var city = $($(this).children("input").get(3));
    var streetBox = $($(this).children("input").get(4));
    var valueToValidate = $($(this).children("input").get(5)); 
    var streetSelect = $($(this).children("select").get(0));
     
    $(streetSelect).hide();
    var container = $($(this).children("p").get(0));

    var FillContainder = function() {

        var selectedStreets = $(streetSelect).children("option:selected");
        var street = "";
        if (selectedStreets.length > 0) {
            street = $(selectedStreets.get(0)).val();
        }
        container.html(street + " " + house.val() + " <br> " + postcode.val() + " " + city.val());
        container.show();
        $(streetBox).val(street);
        
    };

    $(streetSelect).change(function() {
        FillContainder();
    });
    
    var url = $($(this).children("input").get(2)).val();
    //debugger;
    var getAddress = function() {
        valueToValidate.val(postcode.val() + " " + house.val());

        if (postcodeValidationExpression.test(postcode.val()) && /[\d]+$/.test(house.val())) {
            $.post(url, { postcode: postcode.val(), house: house.val() }, function(data) {
                var arr = eval(data)
                if (arr && arr.length > 0) {
                    var address = arr[0];

                    city.val(address.city);
                    $(streetSelect).empty();
                    $(address.street).each(function() {
                        var option = document.createElement("option");
                        $(option).append(this + "");
                        $(streetSelect).append(option);
                    });
                    if ($(streetSelect).children().length > 0) {
                        $(streetSelect).children().get(0).selected = true;
                    }
                    if ($(streetSelect).children().length > 1) {
                        $(streetSelect).show();
                    }
                    FillContainder();

                }
                else {
                    container.html("");
                    container.hide();
                    city.val("");
                    street="";
                    $(streetSelect).hide();
                }
            });
        }
        else {
            container.hide();
        }
    }
    getAddress();
    $(postcode).keyup(getAddress);
    $(house).keyup(getAddress);
}

$(document).ready(function() {
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function() {
        if ($(".complexPostcode")) {
            $(".complexPostcode").each(subscribe);
        }
        //Chanages value of hidden textbox validated by standart forms module 
        //validator after AgreementBox control checkbox was checked/unchecked
        $("span.scfCheckbox").each(function() {
            var hidden = $(this).siblings("input");
            if (hidden.length > 0) {
                hidden = $(hidden).get(0);
                $(this).children("input").change(function() {
                    $(hidden).val(this.checked ? "1" : "");
                });
            }
        });

        if (window.Sitecore && Sitecore.Wfm && Sitecore.Wfm.Validator && Sitecore.Wfm.Validator.SetFocusToFirstNotValid) {
            Sitecore.Wfm.Validator.SetFocusToFirstNotValid = function(validationGroup) {
                if (typeof (Page_ClientValidate) == 'function') {
                    var i;
                    Page_InvalidControlToBeFocused = null;
                    for (i = 0; i < Page_Validators.length; i++) {
                        var val = Page_Validators[i];
                        ValidatorValidate(val, validationGroup, null);
                        if (!val.isvalid) {
                            $("#" + val.controltovalidate).focus();
                            return false;
                        }
                    }
                }
                return true;
            }
        }
        $(".scfDocumentsList input").click(function() {
            $(".scfDocumentsList input:text").val("");
            if ($(".scfDocumentsList input:checked").length > 0) {
                $(".scfDocumentsList input:text").val("1");
            }
        });
    });
});
