﻿function mySetupForm(container, button, language) {
    $("#" + container).closest("form").validate({
        onsubmit: false,
        wrapper: "em",
        highlight: function (element, errorClass, validClass) {
            var isCheckbox = $(element).is(":checkbox");
            if (isCheckbox) element = $(element).closest("span");
            $(element).addClass(errorClass).removeClass(validClass);
        },
        unhighlight: function (element, errorClass, validClass) {
            var isCheckbox = $(element).is(":checkbox");
            if (isCheckbox) element = $(element).closest("span");
            $(element).removeClass(errorClass).addClass(validClass);
        },
        errorPlacement: function (label, element) {
            if ($(element).is("textarea:hidden")) element = $("#cke_" + $(element).attr("id"));
            var parent = $(element).closest("p.form-row");
            var left = $(element).position().left + $(element).outerWidth();
            var bottom = parent.outerHeight() - $(element).position().top;
            $(label).css("left", left).css("bottom", bottom).hide();
            $(element).after(label);
        }
    });

    if ($("#" + container + " textarea.myckeditor").length > 0) {
        $("#" + container + " textarea.myckeditor").ckeditor(function () { }, {
            on: { blur: function (e) { $("#" + e.editor.element.getAttribute("id")).valid(); } },
            toolbar:
                [
                    ['Bold', 'Italic', 'Underline'],
                    ['NumberedList', 'BulletedList'],
                    ['Cut', 'Copy', 'Paste'],
                    ['Undo', 'Redo'],
                    ['Find', 'Replace'],
                    ['SelectAll']
                ],
            resize_enabled: false,
            forcePasteAsPlainText: true,
            disableNativeSpellChecker: true,
            htmlEncodeOutput: true,
            removePlugins: 'elementspath',
            scayt_autoStartup: false,
            toolbarCanCollapse: false,
            width: 354,
            height: 120
        });
    }

    if (jQuery.ui) {
        var language2 = language.toLowerCase().substr(0, 2);
        if (language2 == "en") language2 = "";
        $.datepicker.setDefaults($.datepicker.regional[language2]).setDefaults({ dateFormat: "dd/mm/yy" });
        $("#" + container + " input.mydatepicker").datepicker();
    }

    $.validator.addMethod("regex", function (value, element, regexp) {
        var re = new RegExp(regexp);
        return this.optional(element) || re.test(value);
    });

    $.validator.addMethod("ckeditor", function (value, element, check) {
        $(element).ckeditorGet().updateElement();
        return $(element).val().length > 0;
    });

    $.validator.addMethod("checktwodates", function (value2, element, check) {
        var compare = check.toLowerCase().substr(0, 2);
        var value1 = $("#" + check.substr(3)).val();
        if (value1.length == 0 && value2.length == 0) return true;
        if (value1.length > 0 && value2.length == 0) return false;
        if (value1.length == 0 && value2.length > 0) return false;
        var date1 = $.datepicker.parseDate("dd/mm/yy", value1);
        var date2 = $.datepicker.parseDate("dd/mm/yy", value2);
        if (compare == "gt") return (date1 > date2);
        if (compare == "ge") return (date1 >= date2);
        if (compare == "lt") return (date1 < date2);
        if (compare == "le") return (date1 <= date2);
        if (compare == "eq") return (date1 == date2);
        if (compare == "ne") return (date1 != date2);
        return false;
    });

    $.validator.addMethod("uploadimage", function (value, element, exts) {
        if (value.length == 0) return true;
        var re = new RegExp("^(.*)\.(" + exts + ")$");
        return re.test(value);
    });

    $("#" + container + " input[type!=button]:visible").keydown(function (event) {
        if (event.keyCode == 13) {
            $("#" + button).click(); return false;
        }
    });

    $("#" + container + " input[type!=button]:visible").blur(function () {
        $(this).valid();
        return false;
    });

    return true;
}
