function generateGuid() {
    var result, i, j;
    result = '';
    for (j = 0; j < 17; j++) {
        if (j == 8 || j == 12 || j == 16 || j == 20)
            result = result + '-';
        i = Math.floor(Math.random() * 16).toString(16).toUpperCase();
        result = result + i;
    }
    return result
}




$(function() {
    $("form").submit(function() {
        $("#user_attr_1").val($("#FirstName").val());
        $("#user_attr_2").val($("#LastName").val());
        $("#user_attr_3").val($("#Email").val());
        $("#user_attr_4").val($("#Phone").val());
        $("#user_attr_5").val($("#Username").val());
        $("#user_attr_6").val($("#Password").val());
        $("#user_attr_7").val($("#Company").val());
        $("#user_attr_8").val($("#CompanyVAT").val());
        $("#user_attr_9").val($("#WebAdress").val());
        $("#user_attr_10").val($("#AppLanguage").val());
        $("#user_attr_11").val($("#DateNumberFormat").val());
        $("#user_attr_12").val($("#AppCurrency").val());
        $("#user_attr_13").val($("#Accept").val());
        $("#user_attr_14").val($("#Address").val());
        $("#user_attr_15").val($("#City").val());
        $("#user_attr_16").val($("#Zip").val());
        $("#user_attr_17").val($("#Country").val());
        $("#description").val($("#Company").val());
    });
});



$(function() {
    var firstName = $("#FirstName"),
        lastName = $("#LastName"),
        email = $("#Email"),
        phone = $("#Phone"),
        username = $("#Username"),
        password = $("#Password"),
        passwordRepeat = $("#PasswordRepeat"),
        company = $("#Company"),
        adress = $("#Address"),
        zip = $("#Zip"),
        city = $("#City"),
        country = $("#Country"),
        companyVAT = $("#CompanyVAT"),
        webAdress = $("#WebAdress"),
        checkAvailabilityProcessing = $("#CheckAvailabilityProcessing"),
        availableYes = $("#AvailableYes"),
        availableNo = $("#AvailableNo"),
        accept = $("#Accept"),
        submit = $("#SubmitForm"),

        divNameUnavailable = $("#divNameUnavailable"),
        divNameTooShort = $("#divNameTooShort"),
        divNameCharacters = $("#divNameCharacters"),
        divMissingFields = $("#divMissingFields"),
        divMissingFieldsDefault = divMissingFields.find(".default"),
        divMissingFieldsEmail = divMissingFields.find(".email"),
        divMissingFieldsPassword = divMissingFields.find(".password"),

        form = $("form"),

        timer,
        temp,
        isWebAdressValid = false;



    webAdress.keyup(function() {
        availableNo.hide();
        availableYes.hide();
        checkAvailabilityProcessing.show();


        if (this.value != temp) {
            this.value = this.value.replace(/[^a-z0-9-_]/i, "");

            temp = this.value;
        }


        clearTimeout(timer);

        timer = setTimeout(function() {
            $.ajax(
            {
                url: "CheckWebsiteNameService.aspx",
                dataType: "json",
                data: { webadress: webAdress.val() },
                cache: false,
                global: false,

                success: function(d) {
                    checkAvailabilityProcessing.hide();

                    if (d.isAvailable) {
                        availableNo.hide();
                        availableYes.show();

                        isWebAdressValid = true;
                    }
                    else {
                        availableYes.hide();
                        availableNo.show();

                        isWebAdressValid = false;
                    }
                },

                error: function() {
                    checkAvailabilityProcessing.hide();
                    availableNo.hide();
                    availableYes.hide();
                }
            });
        }, 500);
    });

    accept.click(function() {
    submit.attr("src", "../gfx/buttons/btn-free-trial-off.png");

        if (accept.attr("checked")) {
            submit.attr("src", "../gfx/buttons/btn-free-trial-on.png");
        }
    });

    function stripSpacesValidateLength(element, minLength) {
        if (element.val().replace(/\s/g, "").length <= minLength) {
            element.addClass("required");

            return false;
        }

        return true;
    }


    form.submit(function() {
        var r = true;


        $.each([firstName, lastName, email, phone, username, password, passwordRepeat, company, adress, zip, city, country, companyVAT, webAdress], function() {
            this.removeClass("required");
        });


        r = stripSpacesValidateLength(firstName, 1);
        r = stripSpacesValidateLength(lastName, 1);
        r = stripSpacesValidateLength(phone, 5);
        r = stripSpacesValidateLength(username, 2);
        r = stripSpacesValidateLength(company, 1);
        r = stripSpacesValidateLength(adress, 3);
        r = stripSpacesValidateLength(zip, 1);
        r = stripSpacesValidateLength(city, 1);
        r = stripSpacesValidateLength(companyVAT, 1);


        if (country.get(0).selectedIndex <= 0) {
            country.addClass("required");

            r = false;
        }


        if (!email.val().match(/^([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+$/i)) {
            email.addClass("required");

            divMissingFieldsEmail.show();

            r = false;
        }


        var passwordVal = password.val().replace(/\s/g, "");
        var passwordRepeatVal = passwordRepeat.val().replace(/\s/g, "");

        if ((passwordVal.length <= 1 || passwordRepeatVal.length <= 1) || passwordVal != passwordRepeatVal) {
            password.addClass("required");
            passwordRepeat.addClass("required");

            divMissingFieldsPassword.show();

            r = false;
        }


        if (!isWebAdressValid) {
            webAdress.addClass("required");

            r = false;
        }


        if (!r)
        {
            divMissingFields.show();
        }
        else {
            divMissingFields.hide();
            divMissingFieldsEmail.hide();
            divMissingFieldsPassword.hide();
        }


        return r;
    });
});
