Your IP : 216.73.216.41


Current Path : /home/purehotels/public_html/components/com_uniform/assets/js/
Upload File :
Current File : /home/purehotels/public_html/components/com_uniform/assets/js/form.js

(function ($) {
    $(function () {
        var lang = null, forms = [], baseUrl = "";
        $.initJSNForm = function (formname) {

            var self = this;

            if ($(formname).width() <= 480 && $(formname).width() > 0) {
                $(formname).addClass("jsn-narrow");
            }
            $(".form-captcha").hide();

            var sessionLifeTime = $(formname).find('input[name$=form_post_session_lifetime]').val();
            var pathRoot = $(formname).find('input[name$=form_post_path_root]').val();
            setInterval(function () {
                JSNUFKeepSessionAlive(pathRoot)
            }, parseFloat(sessionLifeTime));

            //refresh captcha
            $(formname).find(".jsn-refresh-captcha").click(function () {
                var $this = $(this);
                var token = $this.attr('data-token');
                var namespace = $this.attr('data-namespace');
                $.ajax({
                    type: "GET",
                    url: baseUrl + "/index.php?option=com_uniform&view=form&task=form.refreshCaptcha&namespace=" + namespace + '&' + token + '=1',
                    success: function (src) {
                        $this.parent().find('img.jsn-captcha-image').attr('src', src);
                        return;
                    }
                });
            });

            function calculateTotal() {
                var number = 0,
                    checkboxes = 0,
                    dropdown = 0,
                    list = 0,
                    choices = 0,
                    moneyPayment = 0;

                var numberElements = $(formname).find("input.number"),
                    numberDecimal = $(formname).find("input.number-decimal");
                numberElements.each(function () {
                    if (!$(this).closest('.control-group').hasClass('hide') || $(this).closest('.control-group').hasClass('useField')) {
                        if ($(this).hasClass('payment-active')) {
                            if ($(this).val() == '') {
                                if (numberDecimal) {
                                    number += parseFloat(0 + '.' + numberDecimal.val());
                                }
                                else {
                                    number += 0;
                                }
                            }
                            else {
                                if (numberDecimal) {
                                    number += parseFloat($(this).val() + '.' + numberDecimal.val());
                                }
                                else {
                                    number += parseFloat($(this).val());
                                }
                            }
                        }
                    }
                });

                var currencyElement = $(formname).find("input.input-medium.currency");
                var currency = 0;
                currencyElement.each(function () {
                    if (!$(this).closest('.control-group').hasClass('hide') || $(this).closest('.control-group').hasClass('useField')) {
                        if ($(this).hasClass('payment-active')) {
                            if ($(this).val() == '') {
                                currency += 0;
                            }
                            else {
                                currency += parseFloat($(this).val());
                            }
                        }
                    }
                });

                var currencyCent = $(formname).find(".currency-cents input.input-mini.currency");
                var cents = 0;
                currencyCent.each(function () {
                    if (!$(this).closest('.control-group').hasClass('hide') || $(this).closest('.control-group').hasClass('useField')) {
                        if ($(this).hasClass('payment-active')) {
                            if ($(this).val() == '') {
                                cents += 0;
                            }
                            else {
                                cents += parseFloat($(this).val());
                            }
                        }
                    }
                });
                if (cents >= 100) {
                    var hundred = (cents / 100), hundredUnit = (100 * hundred);
                    cents = parseFloat(hundred + '.' + (cents - hundredUnit));
                }
                else {
                    cents = parseFloat(0 + '.' + cents);
                }
                moneyPayment = parseFloat(currency + cents);

                var checkboxesElements = $(formname).find("div.checkboxes");
                checkboxesElements.each(function () {
                    if (!$(this).closest('.control-group').hasClass('hide')) {
                        if ($(this).hasClass('payment-active')) {
                            $(this).find("input:checked").each(function () {
                                if ($(this).prop('checked')) {
                                    checkboxes += parseFloat($(this).attr('data-jsnUfPrice') * $(this).attr('data-jsnUfQty'));
                                }
                            });
                        }
                    }
                });
                var dropdownElements = $(formname).find("select.dropdown");

                /*if ($("select.jsn-uf-select2-dropdown").length > 0) {

                 $("select.jsn-uf-select2-dropdown").select2();
                 $("select.jsn-uf-select2-dropdown").css({'position':'absolute'})
                 }*/
                dropdownElements.each(function () {
                    if (!$(this).closest('.control-group').hasClass('hide')) {
                        if ($(this).hasClass('payment-active')) {
                            if (typeof $(this).find('option:selected').attr('data-jsnUfPrice') != 'undefined') {
                                if ($(this).find('option:selected').attr('data-jsnUfPrice') == '') {
                                    dropdown += 0;
                                }
                                else {
                                    dropdown += parseFloat($(this).find('option:selected').attr('data-jsnUfPrice') * $(this).find('option:selected').attr('data-jsnUfQty'));
                                }
                            }
                        }
                    }
                });
                var choicesElements = $(formname).find("div.choices");
                choicesElements.each(function () {
                    if (!$(this).closest('.control-group').hasClass('hide')) {
                        if ($(this).hasClass('payment-active')) {
                            $(this).find('input:checked').each(function () {
                                choices += parseFloat($(this).attr('data-jsnUfPrice') * $(this).attr('data-jsnUfQty'));
                            });
                        }
                        else {
                            choices += 0;
                        }
                    }
                });
                var listElements = $(formname).find("select.list");
                listElements.each(function () {
                    if (!$(this).closest('.control-group').hasClass('hide')) {
                        if ($(this).hasClass('payment-active')) {
                            $(this).find('option:selected').each(function () {
                                list += parseFloat($(this).attr('data-jsnUfPrice') * $(this).attr('data-jsnUfQty'));
                            });
                        }
                    }
                });
                var total = [number, moneyPayment, choices, checkboxes, dropdown, list].reduce(function (previousValue, currentValue, index, array) {
                    return previousValue + currentValue;
                });

                $(formname).find(".form-payments .total-money").text(total.toFixed(2));
                $(formname).find(".form-payments .payment-total-money input#jform_form_payment_money_value").val(total.toFixed(2));
            }

            function formActionField() {
                var id = [];
                var fieldId = [];
                $(formname).find('.control-group').each(function () {
                    if ($(this).hasClass('hide')) {
                    }
                    else {
                        fieldId = $(this).attr('data-id');
                        fieldId = parseFloat(fieldId);
                    }
                    if ($.isNumeric(fieldId)) {
                        id.push(fieldId);
                    }

                });
                var val = $.toJSON(id);
                $(formname).find('input#list_choosen_field').val(val.toString())
            }

            if ($('.jsn-uniform .icon-question-sign').length) {
                $('.jsn-uniform .icon-question-sign').tipsy({
                    gravity: 'w',
                    fade: true
                });
            }
            $(formname).find('input,button.btn,textarea,select').focus(function () {
                var form = $(this).parents('form:first');
                $(form).find(".ui-state-highlight").removeClass("ui-state-highlight");
                $(this).parents(".control-group").addClass("ui-state-highlight");
                self.captcha(form);
            }).click(function (e) {
                var form = $(this).parents('form:first');
                $(form).find(".ui-state-highlight").removeClass("ui-state-highlight");
                $(this).parents(".control-group").addClass("ui-state-highlight");
                e.stopPropagation();
            });
            $(formname).find("input").keypress(function (e) {
                if (e.which == 13 && $(".jsn-modal-overlay").size() < 1) {
                    if ($(formname).find("button.next").hasClass("hide")) {
                        $(formname).find("button.jsn-form-submit").click();
                    } else {
                        $(formname).find("button.next").click();
                    }
                    return false;
                }
            });
            $(formname).find(" .form-actions .jsn-form-submit").click(function () {
                $('.jsn-uniform-others').each(function () {
                    $(this).find('.jsn-value-Others').each(function () {
                        $(this).removeAttr('disabled');
                    })
                })
                $(formname).submit();
                return false;
            });

            $(document).click(function () {
                $(".ui-state-highlight").removeClass("ui-state-highlight");
            });
            var formDefaultCaptcha = $('.form-captcha')[0];
            if ($(formDefaultCaptcha).size()) {
                $($(formDefaultCaptcha).parents('form:first').find("input,textarea,select")[0]).focus();
            }
            var randomizeListGroups = $(formname).find('select.list');
            randomizeListGroups.each(function () {
                if ($(this).hasClass("list-randomize")) {
                    self.randomValueItems(this);
                }
            });
            var randomizeDropdownGroups = $(formname).find('select.dropdown');
            randomizeDropdownGroups.each(function () {
                var selfDropdown = this;
                if ($(this).hasClass("dropdown-randomize")) {
                    self.randomValueItems(this);
                    $(this).find("option").each(function () {
                        if ($(this).attr("data-selectdefault") == "true") {
                            $(this).prop("selected", true);
                        }
                    });
                    $(this).css({'position': 'inherit'})
                }
                $(this).change(function () {
                    if ($(this).val() == "Others" || $(this).val() == "others") {
                        $(selfDropdown).parent().find("textarea.jsn-dropdown-Others").removeClass("hide");
                    } else {
                        $(selfDropdown).parent().find("textarea.jsn-dropdown-Others").addClass("hide");
                    }
                });
            });
            var randomizeChoiceGroups = $(formname).find('div.choices');
            randomizeChoiceGroups.each(function () {
                var selfChoices = this;
                if ($(this).hasClass("choices-randomize")) {
                    self.randomValueItems(this);
                }
                $(this).find("input[type=radio]").click(function () {
                    if ($(this).val() == "Others" || $(this).val() == "others") {
                        $(selfChoices).find("textarea.jsn-value-Others").removeAttr("disabled");
                    } else {
                        $(selfChoices).find("textarea.jsn-value-Others").attr("disabled", "true");
                    }
                });
            });
            var randomizeCheckboxGroups = $(formname).find('div.checkboxes');
            randomizeCheckboxGroups.each(function () {
                var selfChexbox = this;
                if ($(this).hasClass("checkbox-randomize")) {
                    self.randomValueItems(this);
                }
                $(this).find(".lbl-allowOther input[type=checkbox]").click(function () {


                    if ($(this).is(':checked')) {
                        $(selfChexbox).find("textarea.jsn-value-Others").removeAttr("disabled");
                    } else {
                        $(selfChexbox).find("textarea.jsn-value-Others").attr("disabled", "true");
                    }
                });
            });
            $(formname).find("input.number,input.phone,input.currency").each(function () {
                $(this).keypress(function (e) {
                    if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
                        return false;
                    }
                });
                $(this).attr('onpaste', 'return false');
            });

            $(formname).find("input.number").change(calculateTotal);
            $(formname).find("input.currency").change(calculateTotal);
            $(formname).find("select.dropdown").change(calculateTotal);
            $(formname).find("select.list").change(calculateTotal);
            $(formname).find("div.checkboxes").change(calculateTotal);
            $(formname).find("div.choices").change(calculateTotal);
            $(formname).find("input.number").trigger("change");

            $(formname).find("div.choices .jsn-column-item input").each(function () {

                if ($(this).is(':checked')) {
                    var idField = $(this).parents(".jsn-columns-container").attr("id");
                    $(formname).find("div.control-group." + idField).removeAttr("style");
                    self.getActionField(formname, $(this), idField);
                }
                formActionField();
            });

            $(formname).find("div.choices .jsn-column-item input").change(function () {

                if ($(this).is(':checked')) {
                    var idField = $(this).parents(".jsn-columns-container").attr("id");
                    $(formname).find("div.control-group." + idField).removeAttr("style");
                    self.getActionField(formname, $(this), idField);
                }
                formActionField();
                self.removeRedundantMarginLeft(formname);
            });

            $(formname).find("div.checkboxes .jsn-column-item input").each(function () {
                var idField = $(this).parents(".jsn-columns-container").attr("id");
                var litmiChoises = $(this).parents(".jsn-columns-container").attr('data-limit')
                var checkboxesInput = $(formname).find("div.checkboxes#" + idField + " .jsn-column-item input");
                var countChecked = $(formname).find("div.checkboxes#" + idField + " .jsn-column-item input:checked");
                if (litmiChoises > 0) {
                    if (countChecked.length >= litmiChoises) {
                        $(checkboxesInput).attr("disabled", "disabled");
                        $(countChecked).removeAttr("disabled");
                    }
                    else {
                        $(checkboxesInput).removeAttr("disabled");
                    }
                }
                $(formname).find("div.control-group." + idField).removeAttr("style");
                $(this).parents(".jsn-columns-container").find("input").each(function () {

                    if ($(this).is(':checked')) {
                        self.getActionFieldCheckboxes(formname, $(this), idField);
                    }
                    if (!$(this).is(':checked')) {
                        self.getActionCheckboxesUnchecked(formname, $(this), idField);
                    }
                });
                formActionField();
            });

            $(formname).find("div.checkboxes .jsn-column-item input").change(function () {
                var idField = $(this).parents(".jsn-columns-container").attr("id");
                var litmiChoises = $(this).parents(".jsn-columns-container").attr('data-limit')
                var checkboxesInput = $(formname).find("div.checkboxes#" + idField + " .jsn-column-item input");
                var countChecked = $(formname).find("div.checkboxes#" + idField + " .jsn-column-item input:checked");
                if (litmiChoises > 0) {
                    if (countChecked.length >= litmiChoises) {
                        $(checkboxesInput).attr("disabled", "disabled");
                        $(countChecked).removeAttr("disabled");
                    }
                    else {
                        $(checkboxesInput).removeAttr("disabled");
                    }
                }
                $(formname).find("div.control-group." + idField).removeAttr("style");
                $(this).parents(".jsn-columns-container").find("input").each(function () {

                    if ($(this).is(':checked')) {
                        self.getActionFieldCheckboxes(formname, $(this), idField);
                    }
                    if (!$(this).is(':checked')) {
                        self.getActionCheckboxesUnchecked(formname, $(this), idField);
                    }
                });
                formActionField();
                self.removeRedundantMarginLeft(formname);
            });

            $(formname).find("select.dropdown").each(function () {
                var idField = $(this).attr("id");
                $(formname).find("div.control-group." + idField).removeAttr("style");
                self.getActionField(formname, $(this), idField);
                formActionField();
            });

            if ($("select.jsn-uf-select2-dropdown").length > 0) {

                $("select.jsn-uf-select2-dropdown").select2();
                $("select.jsn-uf-select2-dropdown").css({'position': 'absolute'})
            }

            $(formname).find("select.dropdown").change(function () {
                var idField = $(this).attr("id");

                $(formname).find("div.control-group." + idField).removeAttr("style");
                self.getActionField(formname, $(this), idField);
                formActionField();
                self.removeRedundantMarginLeft(formname);
            });

            $(formname).find("select.list").change(function () {
            });

            $(formname).find("input.limit-required,textarea.limit-required").each(function () {
                var fieldId = $(this).attr('id');
                var settings = $(this).attr('data-limit');
                var limitSettings = $.evalJSON(settings);
                if (limitSettings.limitType == 'Characters') {
                    var newClass = 'characters_' + fieldId;
                    $(this).addClass('characters');
                    $(this).after(
                        $("<div/>", {"class": "characters-limit", "id": "characters-limit_" + fieldId}).append(
                            $("<div/>", {"class": "pull-right"}).append(
                                $("<span/>", {"class": newClass, "style": "font-weight:bold; color:#bbb"})
                            )
                        )
                    )
                }
                else {
                    var newClass = 'words_' + fieldId;
                    $(this).addClass('words');
                    $(this).after(
                        $("<div/>", {"class": "words-limit", "id": "words-limit_" + fieldId}).append(
                            $("<div/>", {"class": "pull-right"}).append(
                                $("<span/>", {"class": newClass, "style": "font-weight:bold; color:#bbb"})
                            )
                        )
                    )
                }
            });

            $(formname).find("input.limit-required,textarea.limit-required").each(function () {
                var settings = $(this).attr("data-limit");
                var limitSettings = $.evalJSON(settings);
                if (limitSettings) {
                    $(this).keypress(function (e) {
                            if (e.which != 27 && e.which != 13 && e.which != 8) {
                                if (limitSettings.limitType == "Characters") {
                                    var maxLength = parseInt(limitSettings.limitMax, 10);
                                    var lengthValue = $(this).val().length + 1;
                                    var charLeft = maxLength - lengthValue;
                                    if (charLeft >= 0) {
                                        var msg = charLeft + ' ' + lang['JSN_UNIFORM_CHARACTERS_LEFT'];
                                        var id = $(this).attr('id');
                                        $('.characters_' + id).text(msg);
                                    }
                                    else {
                                        return false;
                                    }
                                }
                                if (limitSettings.limitType == "Words") {
                                    var maxLength = parseInt(limitSettings.limitMax, 10);
                                    var lengthValue = $.trim($(this).val() + String.fromCharCode(e.which)).split(/[\s]+/);
                                    var charLeft = maxLength - lengthValue.length;
                                    if (charLeft >= 0) {
                                        var msg = charLeft + ' ' + lang['JSN_UNIFORM_WORDS_LEFT'];
                                        var id = $(this).attr('id');
                                        $('.words_' + id).text(msg);
                                    }
                                    else {
                                        return false;
                                    }
                                }
                            }
                        }
                    );
                }
            });
            $(formname).find("input,textarea,select").bind('change', function () {
                self.checkValidateForm($(this).parents(".control-group"), "detailInput", $(this), "onchange");
            });

            function executeAjaxUploadFile(option)
            {
            	var iform = $("<form method='POST' enctype='multipart/form-data''></form>");
                iform.ajaxForm(option);
                iform.submit();
            }

           $(formname).submit(function () {

                if ($(formname).find('.control-group').hasClass('useField') && $(formname).find('.control-group').hasClass('hide')) {
                    $(formname).find('.control-group').removeClass('hide');
                }

                formActionField();

                var inputFiles = $(formname).find('.input-file');
                //Check if using ajax upload. Disable all input-file to don't send them
                if ($(formname).attr('data-ajaxupload') != '0')
                {
                	var totalOfFileField = 0; 
                	inputFiles.each(function (index, node)
                    {
                         if ($(this).val() != '')
                         {
                        	 totalOfFileField++;
                         }
                    });
                	
                	if (totalOfFileField > 0)
                	{	
                		inputFiles.prop('disabled', true);
                	}
             	
                }

                var $selectHide = $('.jsn-row-container.row-fluid').find(".control-group");
                $selectHide.each(function () {
                    if ($(this).css("display") === "none") {
                        var dropdown = $(this).find(".dropdown-required");
                        if (dropdown.length != '1') {
                            $(this).find('select').each(function () {
                                $(this).attr('disabled', 'disabled');
                            })
                        }
                    }
                })
                if ($(formname).find('input[name$=use_payment_gateway]').val() == '0') {
                    $(".jsn-modal-overlay,.jsn-modal-indicator").remove();
                }
                $(this).find(".help-block").remove();
                var selfsubmit = this;
                if (self.checkValidateForm($(this))) {
                    $("body").append($("<div/>", {
                        "class": "jsn-modal-overlay",
                        "style": "z-index: 1000; display: inline;"
                    })).append($("<div/>", {
                        "class": "jsn-modal-indicator",
                        "style": "display:block"
                    })).addClass("jsn-loading-page");
                    $("#jsn-form-target").remove();
                    $(selfsubmit).find('.message-uniform').html("");
                    var iframe = $('<iframe/>', {
                        name: 'jsn-form-target',
                        id: 'jsn-form-target'
                    });
                    iframe.appendTo($('body'));
                    iframe.css({
                        display: 'none'
                    });
                    var publickey = $(this).find(".form-captcha").attr("data-jnsUfpublickey");
                    iframe.load(function () {
                    	var inputFile =  $(formname).find('.input-file');
                    	var formID = formname.find("input[name='form_id']").val();
                        var message = iframe.contents().find("input[name$=message]").val();
                        var error = iframe.contents().find("input[name$=error]").val();
                        var redirect = iframe.contents().find("input[name$=redirect]").val();
                        var use_payment_gateway = $(formname).find('input[name$=use_payment_gateway]').val();
                    
                        //Check if using ajax upload. Disable all input-file to don't send them
                        
                        if ($(formname).attr('data-ajaxupload') != '0' && typeof error === 'undefined' && inputFile.length)
                        {
                        	
                            //Enable all input-file to send by ajax
                            //Count total field file
                           
                            
                        	inputFile.removeAttr('disabled', true);

                            if (inputFile.length)
                            {
                                //Remove current progress bar
                            	$(formname).find('.jsn-uf-progress-container').remove();

                                var token = $(formname).attr("data-token");
                                var done = 0;
                                var totalFileField = 0;

                                inputFile.each(function (index, node)
                                {
                                    if ($(this).val() != '')
                                    {
                                        totalFileField++;
                                    }
                                });
                                
                                
                                var options = [];
                                var findex 	= 0;
                                inputFile.each(function (index, node)
                                {
                                    if ($(this).val() != '') {

                                    	var isLast	= 'no';

                                        //Create a new progress bar
                                        $(this).parent().append('<div class="jsn-uf-progress-container progress" id="' + formname.attr('id') + '_' + node.id + '"><div class="progress-bar jsn-progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%;"></div></div>');
                                        //Create new form, form data
                                        var fdata = new FormData();
                                       // fdata.append('form_id', formname.find("input[name='form_id']").val());
                                        //Get files from input field
                                        var fileSelect = document.getElementById(node.id);
                                        var files = fileSelect.files;

                                        //Error on IE, Edgle
                                        //fdata.delete('files[]');

                                        //Add field_id to form data
                                        // fdata.append('field_id', $(this).attr('id'));


                                        for (var i = 0; i < files.length; i++)
                                        {
                                            var file = files[i];
                                            // Add the files to the form data.
                                            // We can upload multiple file, but progress bar display not good
                                            // Edit Model JSNUniformModelSubmission::uploadFile to allow this
                                            fdata.append('files[]', file);
                                        }

                                        //Check if is last file
                                        if (findex == totalFileField - 1)
                                        {
                                        	isLast = 'yes';
                                        }

                                        //Error on IE, Edgle
                                        //fdata.delete('field_id');

                                        options[findex] = ({
                                            url: baseUrl + "/index.php?option=com_uniform&view=submission&task=form.uploadFile&" + token + "=1&index=" + findex + "&field_id=" + $(this).attr('id') + '&is_last=' + isLast + '&form_id=' + formID + '&rand=' + Math.random(),
                                            type: 'POST',
                                            formData: fdata,
                                            dataType: 'JSON',
                                            contentType: false,
                                            processData: false,
                                            beforeSubmit: function () {

                                            },
                                            uploadProgress: function (event, position, total, percentComplete) {
                                                if (percentComplete == 100)
                                                {
                                                    percentComplete = 99;
                                                }
                                                var percentVal = percentComplete + '%';
                                                $('#' + formname.attr("id") + '_' + node.id + ' .jsn-progress-bar').animate({width: percentVal}, 50).text(percentVal).attr('aria-valuenow', percentComplete);
                                            },
                                            success: function (data) {
                                                done ++;
                                                //Done, no error
                                                $('#' + formname.attr("id") + '_' + node.id + ' .jsn-progress-bar').attr('aria-valuenow', 100).animate({width: '100%'}, 50);
                                                if (data.status  == 'success')
                                                {
                                                    $('#' + formname.attr("id") + '_' + node.id + ' .jsn-progress-bar').text('100%');
                                                    $('#' + formname.attr("id") + ' #' + node.id + '').attr('disabled', true);
                                                    $('#' + formname.attr("id") + '_' + node.id + ' .jsn-progress-bar').addClass('jsn-progress-bar-success');
                                                    // $('#' + formname.attr("id") + ' #' + node.id + '').val('');
                                                    var next = data.index + 1;

                                                    if (typeof options[next] != 'undefined')
                                                    {
                                                        executeAjaxUploadFile(options[next]);
                                                    }
                                                    else if (done == totalFileField)
                                                    {
                                                        afterSubmit();
                                                    }
                                                }
                                                else
                                                {
                                                	$(formname).find('.jsn-uf-progress-container').remove();
                                                	$('#' + formname.attr("id") + '_' + node.id + ' .jsn-progress-bar').removeClass('jsn-progress-bar-success').addClass('jsn-progress-bar-danger');
                                                    $('#' + formname.attr("id") + ' #' + node.id + '').attr('disabled', false);
                                                    $('#' + formname.attr("id") + ' .jsn-form-submit').attr('disabled', false);
                                                    error = '{"'+data.field_id+'":"'+data.message+'"}';
                                                    afterSubmit();
                                                }
                                            }
                                        });
                                        findex ++;
                                    }
                                });
                            }

                            if (totalFileField != 0)
                        	{
	                            //End Enable all input-file to send by ajax
	                            executeAjaxUploadFile(options[0]);
                        	}
                            else
                            {
                            	afterSubmit();
                            }	
                        }
                        else {
                            afterSubmit();
                        }

                        function afterSubmit() {
                            if (error) {
                                error = $.evalJSON(error);
                                self.callMessageError(formname, error);
                                $(formname).find('.input-file').removeAttr('disabled', true);
                                $(formname).find('.jsn-progress-bar').remove();
                                $(formname).find('.input-file').removeAttr('disabled', true);
                                $(".jsn-modal-overlay,.jsn-modal-indicator").remove();
                            } else if (redirect && use_payment_gateway != '1') {
                                window.location = redirect;
                            } else if (message && use_payment_gateway != '1') {
                                $.ajax({
                                    type: "GET",
                                    async: true,
                                    encoding: "UTF-8",
                                    scriptCharset: "utf-8",
                                    cache: false,
                                    contentType: "text/plain; charset=UTF-8",
                                    url: baseUrl + "/index.php?option=com_uniform&view=form&task=form.getHtmlForm&tmpl=component&form_id=" + $(selfsubmit).find("input[name=form_id]").val(),
                                    success: function (htmlForm) {
                                        $(selfsubmit).find(".jsn-row-container").empty();
                                        $(selfsubmit).find(".jsn-row-container").html(htmlForm);
                                        if (message) {
                                            $(selfsubmit).find('.message-uniform').html(
                                                $("<div/>", {
                                                    "class": "success-uniform alert alert-success clearfix"
                                                }).append(
                                                    $("<button/>", {
                                                        "class": "close",
                                                        "onclick": "return false;",
                                                        "data-dismiss": "alert",
                                                        text: "x"
                                                    })).append(message));
                                        }
                                        self.initJSNForm(formname);
                                        var messagesFocus = $(formname).find(".message-uniform")[0];
                                        $(window).scrollTop($(messagesFocus).offset().top - 50);
                                        $(".jsn-modal-overlay,.jsn-modal-indicator").remove();
                                    }
                                });

                            } else {
                                if (use_payment_gateway != '1') {
                                    $.ajax({
                                        type: "GET",
                                        async: true,
                                        cache: false,
                                        encoding: "UTF-8",
                                        scriptCharset: "utf-8",
                                        contentType: "text/plain; charset=UTF-8",
                                        url: baseUrl + "/index.php?option=com_uniform&view=form&task=form.getHtmlForm&tmpl=component&form_id=" + $(selfsubmit).find("input[name=form_id]").val(),
                                        success: function (htmlForm) {
                                            $(selfsubmit).find(".jsn-row-container").empty();
                                            $(selfsubmit).find(".jsn-row-container").html(htmlForm);
                                            self.initJSNForm(formname);
                                            var messagesFocus = $(formname).find(".message-uniform")[0];
                                            $(window).scrollTop($(messagesFocus).offset().top - 50);

                                            if ($(formname).find('input[name$=use_payment_gateway]').val() == '0') {
                                                $(".jsn-modal-overlay,.jsn-modal-indicator").remove();
                                            }
                                            //$(".jsn-modal-overlay,.jsn-modal-indicator").remove();
                                        }
                                    });
                                }
                            }
                            var idcaptcha;
                            var idcaptcha2;
                            idcaptcha = $(selfsubmit).find(".form-captcha").attr("id");
                            idcaptcha2 = $(selfsubmit).find(".g-recaptcha").attr("id");
                            if (idcaptcha) {
                                Recaptcha.destroy();
                                Recaptcha.create(publickey, idcaptcha, {
                                    theme: 'white',
                                    tabindex: 0,
                                    callback: function () {
                                        $(selfsubmit).find(".form-captcha").removeClass("error");
                                        $(selfsubmit).find(".form-captcha #recaptcha_area").addClass("controls");
                                        $(selfsubmit).find("#recaptcha_response_field").keypress(function (e) {
                                            if (e.which == 13) {
                                                if ($(formname).find("button.next").hasClass("hide")) {
                                                    $(formname).find("button.jsn-form-submit").click();
                                                } else {
                                                    $(formname).find("button.next").click();
                                                }
                                                return false;
                                            }
                                        });
                                        if (error) {
                                            if (error.captcha) {
                                                $(selfsubmit).find(".form-captcha").addClass("error");
                                                $(selfsubmit).find(".form-captcha #recaptcha_area").append(
                                                    $("<span/>", {
                                                        "class": "help-block"
                                                    }).append(
                                                        $("<span/>", {
                                                            "class": "validation-result label label-important",
                                                            text: error.captcha
                                                        })));
                                                $(selfsubmit).find("#recaptcha_response_field").focus();
                                            }
                                        }
                                    }
                                });
                            }
                            if (idcaptcha2) {
                                //grecaptcha.reset()
                                try {
                                    if (grecaptcha.getResponse() == '') {
                                        $(formname).find(".validation-result").remove();
                                        $(selfsubmit).find(".g-recaptcha").addClass("error");
                                        $(selfsubmit).find(".g-recaptcha").append(
                                            $("<span/>", {
                                                "class": "help-block"
                                            }).append(
                                                $("<span/>", {
                                                    "class": "validation-result label label-important",
                                                    text: error.captcha
                                                })));
                                    }
                                    else
                                    {
                                    	grecaptcha.reset();
                                    }
                                }
                                catch (err) {

                                }

                            }
                        }
                    });

                    //if($(formname).find('input[name$=use_payment_gateway]').val() != '1'){
                    $(this).attr('target', 'jsn-form-target');
                    //}

                } else {
                    $(formname).find('.input-file').removeAttr('disabled', true);
                    return false;
                }

            });
            $(formname).find("input.jsn-daterangepicker").each(function () {
                var dateSettings = $.evalJSON($(this).attr("data-jsnUf-date-settings"));
                if (dateSettings) {
                    var yearRangeList = [];
                    if (dateSettings.yearRangeMin && dateSettings.yearRangeMax) {
                        yearRangeList.push(dateSettings.yearRangeMin);
                        yearRangeList.push(dateSettings.yearRangeMax);
                    } else if (dateSettings.yearRangeMin) {
                        yearRangeList.push(dateSettings.yearRangeMin);
                        yearRangeList.push((new Date).getFullYear());
                    } else if (dateSettings.yearRangeMax) {
                        yearRangeList.push(dateSettings.yearRangeMax);
                        yearRangeList.push((new Date).getFullYear());
                    }
                    var yearRange = "1930:+0";
                    if (yearRangeList.length) {
                        yearRange = yearRangeList.join(":");
                    }
                    var dateOptionFormat = "";
                    if (dateSettings.dateOptionFormat == "custom") {
                        dateOptionFormat = dateSettings.customFormatDate;
                    } else {
                        dateOptionFormat = dateSettings.dateOptionFormat;
                    }
                    if (dateSettings.dateFormat == "1" && dateSettings.timeFormat == "1") {
                        $(this).datetimepicker({
                            changeMonth: true,
                            changeYear: true,
                            showOn: "button",
                            yearRange: yearRange,
                            dateFormat: dateOptionFormat,
                            timeFormat: dateSettings.timeOptionFormat,
                            timeText: "",
                            hourText: lang['JSN_UNIFORM_DATE_HOUR_TEXT'],
                            minuteText: lang['JSN_UNIFORM_DATE_MINUTE_TEXT'],
                            closeText: lang['JSN_UNIFORM_DATE_CLOSE_TEXT'],
                            prevText: lang['JSN_UNIFORM_DATE_PREV_TEXT'],
                            nextText: lang['JSN_UNIFORM_DATE_NEXT_TEXT'],
                            currentText: lang['JSN_UNIFORM_DATE_CURRENT_TEXT'],
                            monthNames: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER']],
                            monthNamesShort: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER_SHORT']],
                            dayNames: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY']],
                            dayNamesShort: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_SHORT']],
                            dayNamesMin: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_MIN']],
                            weekHeader: lang['JSN_UNIFORM_DATE_DAY_WEEK_HEADER']
                        });
                    } else if (dateSettings.dateFormat == "1") {
                        $(this).datepicker({
                            changeMonth: true,
                            changeYear: true,
                            showOn: "button",
                            yearRange: yearRange,
                            dateFormat: dateOptionFormat,
                            hourText: lang['JSN_UNIFORM_DATE_HOUR_TEXT'],
                            minuteText: lang['JSN_UNIFORM_DATE_MINUTE_TEXT'],
                            closeText: lang['JSN_UNIFORM_DATE_CLOSE_TEXT'],
                            prevText: lang['JSN_UNIFORM_DATE_PREV_TEXT'],
                            nextText: lang['JSN_UNIFORM_DATE_NEXT_TEXT'],
                            currentText: lang['JSN_UNIFORM_DATE_CURRENT_TEXT'],
                            monthNames: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER']],
                            monthNamesShort: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER_SHORT']],
                            dayNames: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY']],
                            dayNamesShort: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_SHORT']],
                            dayNamesMin: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_MIN']],
                            weekHeader: lang['JSN_UNIFORM_DATE_DAY_WEEK_HEADER']
                        });
                    } else if (dateSettings.timeFormat == "1") {
                        $(this).timepicker({
                            showOn: "button",
                            timeText: "",
                            timeFormat: dateSettings.timeOptionFormat,
                            hourText: lang['JSN_UNIFORM_DATE_HOUR_TEXT'],
                            minuteText: lang['JSN_UNIFORM_DATE_MINUTE_TEXT'],
                            closeText: lang['JSN_UNIFORM_DATE_CLOSE_TEXT'],
                            prevText: lang['JSN_UNIFORM_DATE_PREV_TEXT'],
                            nextText: lang['JSN_UNIFORM_DATE_NEXT_TEXT'],
                            currentText: lang['JSN_UNIFORM_DATE_CURRENT_TEXT'],
                            monthNames: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER']],
                            monthNamesShort: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER_SHORT']],
                            dayNames: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY']],
                            dayNamesShort: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_SHORT']],
                            dayNamesMin: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_MIN']],
                            weekHeader: lang['JSN_UNIFORM_DATE_DAY_WEEK_HEADER']
                        });
                    } else {
                        $(this).datepicker({
                            changeMonth: true,
                            changeYear: true,
                            yearRange: yearRange,
                            showOn: "button",
                            hourText: lang['JSN_UNIFORM_DATE_HOUR_TEXT'],
                            minuteText: lang['JSN_UNIFORM_DATE_MINUTE_TEXT'],
                            closeText: lang['JSN_UNIFORM_DATE_CLOSE_TEXT'],
                            prevText: lang['JSN_UNIFORM_DATE_PREV_TEXT'],
                            nextText: lang['JSN_UNIFORM_DATE_NEXT_TEXT'],
                            currentText: lang['JSN_UNIFORM_DATE_CURRENT_TEXT'],
                            monthNames: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER']],
                            monthNamesShort: [lang['JSN_UNIFORM_DATE_MONTH_JANUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_FEBRUARY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MARCH_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_APRIL_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_MAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JUNE_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_JULY_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_AUGUST_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_SEPTEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_OCTOBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_NOVEMBER_SHORT'],
                                lang['JSN_UNIFORM_DATE_MONTH_DECEMBER_SHORT']],
                            dayNames: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY']],
                            dayNamesShort: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_SHORT'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_SHORT']],
                            dayNamesMin: [lang['JSN_UNIFORM_DATE_DAY_SUNDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_MONDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_TUESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_WEDNESDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_THURSDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_FRIDAY_MIN'],
                                lang['JSN_UNIFORM_DATE_DAY_SATURDAY_MIN']],
                            weekHeader: lang['JSN_UNIFORM_DATE_DAY_WEEK_HEADER']
                        });
                    }
                    $("button.ui-datepicker-trigger").addClass("btn btn-icon").html($("<i/>", {
                        "class": "icon-calendar"
                    }));
                }
            });

            $(formname).find(".form-actions .prev").click(function () {
                $(formname).find('div.jsn-form-content').each(function (i) {
                    if (!$(this).is(':hidden')) {
// if (self.checkValidateForm($(this))) {
                        self.prevpaginationPage(formname);
// }
                        return false;
                    }
                });
            });
            $(formname).find(".form-actions .next").click(function () {

                $(formname).find('div.jsn-form-content').each(function (i) {
                    if (!$(this).is(':hidden')) {
                        if (self.checkValidateForm($(this))) {
                            self.nextpaginationPage(formname);
                        }
                        return false;
                    }
                });
            });

            $(formname).find(".form-actions .reset").click(function () {
                // $(formname).trigger("reset");
                if ($notHideContainer = $(formname).find('.jsn-form-content').not('.hide')) {

                    $notHideContainer.find('input:text, input:password, input:file, textarea').val('');
                    $notHideContainer.find('select option:selected').removeAttr('selected');
                    $notHideContainer.find('input:checkbox, input:radio').removeAttr('checked');
                    try 
					{
						$notHideContainer.find("select.jsn-uf-select2-dropdown").select2();
					}
					catch(err) 
					{
   					
					}
                    $notHideContainer.find('.error').removeClass("error").find(".help-block").remove();
//	                $(formname).find('.jsn-form-content').addClass("hide");
//	                $(formname).find('.jsn-form-content').each(function (i, _formContent) {
//	                    if (i == 0) {
//	                        $(_formContent).removeClass("hide");
//	                    }
//	                });

                    self.checkPage(formname);

                    $notHideContainer.find("div.choices .jsn-column-item input").each(function () {

                        if ($(this).is(':checked')) {
                            var idField = $(this).parents(".jsn-columns-container").attr("id");
                            $notHideContainer.find("div.control-group." + idField).removeAttr("style");
                            self.getActionField(formname, $(this), idField);
                        }
                        formActionField();
                    });

                    $notHideContainer.find("div.checkboxes .jsn-column-item input").each(function () {
                        var idField = $(this).parents(".jsn-columns-container").attr("id");
                        var litmiChoises = $(this).parents(".jsn-columns-container").attr('data-limit')
                        var checkboxesInput = $notHideContainer.find("div.checkboxes#" + idField + " .jsn-column-item input");
                        var countChecked = $notHideContainer.find("div.checkboxes#" + idField + " .jsn-column-item input:checked");
                        if (litmiChoises > 0) {
                            if (countChecked.length >= litmiChoises) {
                                $(checkboxesInput).attr("disabled", "disabled");
                                $(countChecked).removeAttr("disabled");
                            }
                            else {
                                $(checkboxesInput).removeAttr("disabled");
                            }
                        }
                        $notHideContainer.find("div.control-group." + idField).removeAttr("style");
                        $(this).parents(".jsn-columns-container").find("input").each(function () {

                            if ($(this).is(':checked')) {
                                self.getActionFieldCheckboxes(formname, $(this), idField);
                            }
                            if (!$(this).is(':checked')) {
                                self.getActionCheckboxesUnchecked(formname, $(this), idField);
                            }
                        });
                        formActionField();
                    });

                    $notHideContainer.find("select.dropdown").each(function () {
                        var idField = $(this).attr("id");
                        $notHideContainer.find("div.control-group." + idField).removeAttr("style");
                        self.getActionField(formname, $(this), idField);
                        formActionField();
                    });
                    calculateTotal();
                    self.removeRedundantMarginLeft(formname);
                }
            });

            //Event click preview button
            $(formname).find("button.preview").click(function(){
                $('#jsn_uniform_modal_'+formname.attr('id')+' .modal-body').html('');
                var token = formname.attr('data-token');
                var url = baseUrl + "/index.php?option=com_uniform&view=preview&task=preview.preview&tmpl=component&"+token+"=1";
                var values = $(formname).serializeArray();
                $(formname).find('.input-file').each(function(){
                    values.push({
                        name: $(this).attr('name'),
                        value: $(this).val()
                    });
                });
                values.push({
                    name: "task",
                    value: 'preview.preview'
                });
                values = $.param(values);
                $.ajax({
                    type: "POST",
                    url: url,
                    data: values,
                    success: function(modalHtml)
                    {
                        $('#jsn_uniform_modal_'+formname.attr('id')+' .modal-body').html(modalHtml);
                        $('#jsn_uniform_modal_'+formname.attr('id')).modal('show');
                        $('.modal-backdrop').addClass('jsn-uniform-modal-backdrop');
                    }
                });
            });
            $('#jsn_uniform_modal_'+formname.attr('id')+' .jsn_close_modal').click(function(){
                $('#jsn_uniform_modal_'+formname.attr('id')).modal('hide');
                $('#jsn_uniform_modal_'+formname.attr('id')+' .modal-body').html('');
            });
            //End event click preview button

            this.defaultPage(formname);
            $('input, textarea').placeholder();
            //end
            calculateTotal();
            self.removeRedundantMarginLeft(formname);
        };
        /*--------------------------*/
        $.removeRedundantMarginLeft = function (formname) {
            var JSNUFRowContainer = $(formname).find('.jsn-uf-row-container');
            if (JSNUFRowContainer.length) {
                JSNUFRowContainer.each(function () {
                    var children = $(this).children();

                    var totalChildren = children.length;
                    if (totalChildren) {
                        var hideIndex = null;
                        children.each(function (subIndex) {

                            var subChildren = $(this).children();
                            var totalsubChildren = subChildren.length;
                            if (totalsubChildren) {
                                var totalSubHideChildren = $(this).find('.hide').length;
                                if (totalSubHideChildren == totalsubChildren && subIndex == 0) {
                                    if ($(this).next().length) {
                                        hideIndex = 0;
                                        $(this).next().css('margin-left', '0');
                                    }
                                }
                                else if (totalSubHideChildren == totalsubChildren && subIndex == 1) {

                                    if (hideIndex == 0) {
                                        if ($(this).next().length) {
                                            hideIndex = 1;
                                            $(this).next().css('margin-left', '0');
                                        }
                                    }
                                }
                                else if (totalSubHideChildren == totalsubChildren && subIndex == 2) {

                                    if (hideIndex == 1) {
                                        if ($(this).next().length) {
                                            hideIndex = 2;
                                            $(this).next().css('margin-left', '0');
                                        }
                                    }
                                }
                                else {
                                    if ($(this).next().length) {
                                        $(this).next().removeAttr('style');
                                    }
                                }
                            }
                        });
                    }
                });
            }
        },
            /*--------------------------*/
            $.getActionField = function (formname, selfInput, idField) {

                var dataSettings = $(selfInput).parents(".control-group").attr("data-settings");
                if (dataSettings) {
                    dataSettings = $.evalJSON(dataSettings);
                }

                if (dataSettings) {

                    var classShowField = [];
                    var classHideField = [];
                    var classShowField2 = [];
                    var classHideField2 = [];
                    $.each(dataSettings, function (i, item) {
                        i = i.trim();
                        if ($(selfInput).val() == i) {
                            if (item.showField) {
                                $.each(item.showField, function (j, actionField) {
                                    if (actionField) {
                                        classShowField.push(".control-group." + actionField);
                                    }
                                    var showChild = $(".control-group." + actionField).attr("data-settings")
                                    if (showChild) {
                                        showChild = $.evalJSON(showChild);
                                        $.each(showChild, function (v, itemChild) {
                                            if ($(".control-group." + actionField).find('input:checked, select option:selected').val() == v) {
                                                if ($.type(itemChild) == 'object') {
                                                    $.each(itemChild.showField, function (k, child) {
                                                        if ($.inArray(".control-group." + child, classShowField2) == -1) {
                                                            classShowField2.push(".control-group." + child);
                                                        }
                                                    })
                                                }
                                            }
                                        });
                                    }
                                });
                                $(formname).find(classShowField.join(",")).addClass(idField).show().removeClass('hide');
                                $(formname).find(classShowField2.join(",")).addClass(idField).show().removeClass('hide');
                            }
                            if (item.hideField) {
                                $.each(item.hideField, function (j, actionField) {
                                    if (actionField) {
                                        classHideField.push("div.control-group." + actionField);
                                    }
                                    var hideChild = $(".control-group." + actionField).attr("data-settings")
                                    if (hideChild) {
                                        hideChild = $.evalJSON(hideChild);
                                        $.each(hideChild, function (v, itemChild) {
                                            if ($(".control-group." + actionField).find('input:checked, select option:selected').val() == v) {
                                                if (itemChild) {
                                                    $.each(itemChild.hideField, function (k, child) {
                                                        if ($.inArray(".control-group." + child, classHideField2) == -1) {
                                                            classHideField2.push(".control-group." + child);
                                                        }
                                                    })
                                                }
                                            }
                                        });
                                    }
                                });
                                $(formname).find(classHideField.join(",")).addClass(idField).hide().addClass('hide');
                                $(formname).find(classHideField2.join(",")).addClass(idField).hide().addClass('hide');

                            }
                        }
                        else {
                            if (item.showField) {
                                var classShow = [];
                                var classShow2 = [];
                                $.each(item.showField, function (j, actionField) {

                                    if (actionField) {
                                        if ($.inArray(".control-group." + actionField, classShowField) == -1) {
                                            classShow.push(".control-group." + actionField);
                                        }
                                    }
                                    var showChild = $(".control-group." + actionField).attr("data-settings")

                                    if (showChild) {
                                        showChild = $.evalJSON(showChild);
                                        $.each(showChild, function (v, itemChild) {
                                            if (itemChild) {
                                                if (typeof (itemChild.showField) != 'undefined') {
                                                    $.each(itemChild.showField, function (k, child) {
                                                        if ($.inArray(".control-group." + child, classShowField) == -1) {
                                                            classShow2.push(".control-group." + child);
                                                        }
                                                    })
                                                }
                                            }
                                        });
                                    }
                                });
                                $(formname).find(classShow.join(",")).addClass(idField).hide().addClass('hide');
                                $(formname).find(classShow2.join(",")).addClass(idField).hide().addClass('hide');
                            }
                            if (item.hideField) {
                                var classHide = [];
                                var classHide2 = [];
                                $.each(item.hideField, function (j, actionField) {
                                    if (actionField) {
                                        if ($.inArray("div.control-group." + actionField, classHideField) == -1) {
                                            classHide.push("div.control-group." + actionField);
                                        }
                                    }
                                    var hideChild = $(".control-group." + actionField).attr("data-settings")

                                    if (hideChild) {
                                        hideChild = $.evalJSON(hideChild);
                                        $.each(hideChild, function (v, itemChild) {
                                            if (hideChild) {
                                                if (typeof (itemChild.hideField) != 'undefined') {
                                                    $.each(itemChild.hideField, function (k, child) {
                                                        if ($.inArray(".control-group." + child, classHideField) == -1) {
                                                            classHide2.push(".control-group." + child);
                                                        }
                                                    })
                                                }
                                            }
                                        });
                                    }
                                });
                                $(formname).find(classHide.join(",")).addClass(idField).show().removeClass('hide');
                                $(formname).find(classHide2.join(",")).addClass(idField).show().removeClass('hide');
                            }
                        }
                    });
                }
            };
        $.getActionFieldCheckboxes = function (formname, selfInput, idField) {
            var dataSettings = $(selfInput).parents(".control-group").attr("data-settings");
            if (dataSettings) {
                dataSettings = $.evalJSON(dataSettings);
            }
            if (dataSettings) {
                var classShowField = [];
                var classShowField2 = [];
                var classHideField = [];
                var classHideField2 = [];

                $.each(dataSettings, function (i, item) {
                    i = i.trim();
                    if ($(selfInput).val() == i) {
                        if (item.showField) {
                            $.each(item.showField, function (j, actionField) {
                                if (actionField) {
                                    classShowField.push(".control-group." + actionField);
                                }
                                var showChild = $(".control-group." + actionField).attr("data-settings")
                                if (showChild) {
                                    showChild = $.evalJSON(showChild);
                                    $.each(showChild, function (v, itemChild) {
                                        var selectItem = $(".control-group." + actionField).find('input:checked, select option:selected')
                                        $.each(selectItem, function (a, selectChild) {
                                            if ($(selectChild).val() == v) {
                                                if (typeof (itemChild.showField) != 'undefined') {
                                                    $.each(itemChild.showField, function (k, child) {
                                                        if ($.inArray(".control-group." + child, classShowField2) == -1) {
                                                            classShowField2.push(".control-group." + child);
                                                        }
                                                    })
                                                }
                                            }
                                        })
                                    });
                                }
                            });
                            $(formname).find(classShowField.join(",")).addClass(idField).show().addClass('useField').removeClass('hide');
                            $(formname).find(classShowField2.join(",")).addClass(idField).show().addClass('useField').removeClass('hide').css({'display': 'block'});
                        }
                        if (typeof (item.hideField) != 'undefined' && item.hideField != '' && item.hideField != 'undefined') {
                            $.each(item.hideField, function (j, actionField) {
                                if (actionField) {
                                    classHideField.push("div.control-group." + actionField);
                                }
                                var hideChild = $(".control-group." + actionField).attr("data-settings")
                                if (hideChild) {
                                    hideChild = $.evalJSON(hideChild);

                                    $.each(hideChild, function (v, itemChild) {
                                        if ($(".control-group." + actionField).find('input:checked, select option:selected').val() == v) {
                                            if (itemChild) {
                                                $.each(itemChild.hideField, function (k, child) {
                                                    if ($.inArray(".control-group." + child, classHideField2) == -1) {
                                                        classHideField2.push(".control-group." + child);
                                                    }
                                                })
                                            }
                                        }
                                    });
                                }
                            });
                            $(formname).find(classHideField.join(",")).addClass(idField).hide().removeClass('useField').addClass('hide').css({'display': 'none'});
                            $(formname).find(classHideField2.join(",")).addClass(idField).show().removeClass('useField').addClass('hide').css({'display': 'none'});
                        }
                    }
                });
            }
        };
        $.getActionCheckboxesUnchecked = function (formname, selfInput, idField) {
            var dataSettings = $(selfInput).parents(".control-group").attr("data-settings");
            if (dataSettings) {
                dataSettings = $.evalJSON(dataSettings);
            }
            if (dataSettings) {
                var classShowField = [];
                var classShowField2 = [];
                var classHideField = [];
                var classHideField2 = [];
                $.each(dataSettings, function (i, item) {

                    i = i.trim();
                    if ($(selfInput).val() == i) {
                        if (typeof (item.showField) != 'undefined') {
                            $.each(item.showField, function (j, actionField) {
                                if (actionField) {
                                    classShowField.push(".control-group." + actionField);
                                }
                                var showChild = $(".control-group." + actionField).attr("data-settings")

                                if (showChild) {
                                    showChild = $.evalJSON(showChild);

                                    $.each(showChild, function (v, itemChild) {
                                        if (typeof (itemChild.showField) != 'undefined') {
                                            $.each(itemChild.showField, function (k, child) {
                                                if ($.inArray(".control-group." + child, classShowField2) == -1) {
                                                    classShowField2.push(".control-group." + child);
                                                }
                                            })
                                        }
                                    });
                                }
                            });
                            $(formname).find(classShowField.join(",")).addClass(idField).hide().removeClass('useField').addClass('hide').css({'display': 'none'});
                            $(formname).find(classShowField2.join(",")).addClass(idField).hide().removeClass('useField').addClass('hide').css({'display': 'none'});
                        }
                        if (typeof (item.hideField) != 'undefined') {
                            $.each(item.hideField, function (j, actionField) {
                                if (actionField) {
                                    classHideField.push("div.control-group." + actionField);
                                }
                                var hideChild = $(".control-group." + actionField).attr("data-settings")
                                if (hideChild) {
                                    hideChild = $.evalJSON(hideChild);

                                    $.each(hideChild, function (v, itemChild) {
                                        if ($(".control-group." + actionField).find('input:checked, select option:selected').val() == v) {
                                            if (itemChild) {
                                                if (typeof (itemChild.hideField) != 'undefined') {
                                                    $.each(itemChild.hideField, function (k, child) {
                                                        if ($.inArray(".control-group." + child, classHideField2) == -1) {
                                                            classHideField2.push(".control-group." + child);
                                                        }
                                                    })
                                                }
                                            }
                                        }
                                    });
                                }
                            });
                            $(formname).find(classHideField.join(",")).addClass(idField).show().addClass('useField').addClass('hide').css({'display': 'block'});
                            $(formname).find(classHideField2.join(",")).addClass(idField).hide().addClass('hide').removeClass('useField').css({'display': 'none'});
                        }
                    }
                });
            }
        };

        $.randomValueItems = function (_this) {
            var group = $(_this),
                choices = group.find('.jsn-column-item'),
                otherItem = choices.filter(function () {
                    return $('label.lbl-allowOther', this).size() > 0;
                }),
                randomItems = choices.not(otherItem);
            randomItems.detach();
            otherItem.detach();
            while (randomItems.length > 0) {
                var index = Math.floor(Math.random() * choices.length),
                    choice = randomItems[index];

                if (group.find(".lbl-allowOther").size()) {
                    group.find(".lbl-allowOther").before(choice);
                } else {
                    group.append(choice);
                }
                delete(randomItems[index]);
                var newList = [];
                $(randomItems).each(function (index, element) {
                    if (element !== undefined) {
                        newList.push(element);
                    }
                });
                randomItems = newList;
            }
            delete(randomItems[0]);
            if (group.find(".lbl-allowOther").size()) {
                group.find(".lbl-allowOther").before(otherItem);
            } else {
                group.append(otherItem);
            }
            return true;
        };
        $.captcha = function (form) {
            var self = this;
            var idcaptcha = "";
            var idcaptcha = form.find(".form-captcha").attr("id");
            var publickey = form.find(".form-captcha").attr("data-jnsUfpublickey");
            if (form.find(".form-captcha").length > 0 && form.find(".form-captcha").is(':hidden') && idcaptcha) {
                $(".form-captcha").hide();
                form.find(".form-captcha").show();
                Recaptcha.create(publickey, idcaptcha, {
                    theme: 'white',
                    tabindex: 0,
                    callback: function () {
                        $(form).find(".form-captcha").removeClass("error");
                        $(form).find(".form-captcha #recaptcha_area").addClass("controls");
                        $(form).find("#recaptcha_response_field").keypress(function (e) {
                            if (e.which == 13) {
                                if ($(form).find("button.next").hasClass("hide")) {
                                    $(form).find("button.jsn-form-submit").click();
                                } else {
                                    $(form).find("button.next").click();
                                }
                                return false;
                            }
                        });
                    }
                });
            }
        };
        $.callMessageError = function (formname, messageError) {
            var self = this;
            $.each(messageError, function (key, value) {
                if (key != "captcha") {
                    if (key == "name" || key == "address" || key == "date" || key == "phone" || key == "currency" || key == "password") {
                        $.each(value, function (i, item) {
                            $(formname).find("input[name=password\\[" + i + "\\]\\[\\]], input[name=currency\\[" + i + "\\]\\[value\\]], input[name=phone\\[" + i + "\\]\\[default\\]], input[name=phone\\[" + i + "\\]\\[one\\]], input[name=date\\[" + i + "\\]\\[date\\]],input[name=name\\[" + i + "\\]\\[first\\]],input[name=address\\[" + i + "\\]\\[street\\]]").parents(".control-group").addClass("error").find(".controls").append($("<span/>", {
                                "class": "help-block"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: item
                                })));
                        });
                    } else if (key != "max-upload") {
                        if (key == "captcha_2") {
                            $(formname).find("#jsn-captcha").parents(".control-group").addClass("error").find(".controls").append($("<span/>", {
                                "class": "help-block"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: value
                                })));
                        } else {
                            if ($(formname).find("#" + key).size()) {
                                $(formname).find("#" + key).parents(".control-group").addClass("error").find(".controls").append($("<span/>", {
                                    "class": "help-block"
                                }).append(
                                    $("<span/>", {
                                        "class": "validation-result label label-important",
                                        text: value
                                    })));
                            }
                        }
                    } else if (key == "max-upload") {
                        $(formname).find(".message-uniform").html($("<div/>", {
                            "class": "alert alert-error"
                        }).append(value));
                    }
                }
                else {
                    $(formname).find(".validation-result").remove();
                    $(formname).find(".jsn-uf-grecaptchav2").addClass("error").append($("<span/>", {
                        "class": "help-block"
                    }).append(
                        $("<span/>", {
                            "class": "validation-result label label-important",
                            text: value
                        })));
                }
            });

            setTimeout(function () {
                var formError = $(formname).find('.error')[0];
                if ($(formError).parents('.jsn-form-content').attr("data-value")) {
                    $(formname).find('.jsn-form-content').addClass("hide");
                    $(formError).parents('.jsn-form-content').removeClass("hide");
                    self.checkPage(formname);
                } else {
                    var countPage = $(formname).find('div.jsn-form-content').length;
                    $(formname).find('div.jsn-form-content')[countPage - 1].removeClass("hide");
                    $(formname).find('input, button,textarea').focus();
                }
                if ($(formname).find(".error input,.error textarea,.error select").length) {
                    var fieldFocus = $(formname).find(".error")[0];
                    if ($(fieldFocus).find(".blank-required").size()) {
                        $(fieldFocus).find("input,select,textarea").each(function () {
                            var val = $(this).val();
                            var val2 = val.replace(' ', '');
                            if (val2 == '' || val2 == 0) {
                                $(window).scrollTop($(this).offset().top - 50);
                                $(this).click();
                                return false;
                            }
                        });
                    } else {
                        var fieldFocus = $(formname).find(".error input,.error textarea,.error select")[0];
                        $(window).scrollTop($(fieldFocus).offset().top - 50);
                        fieldFocus.click();
                    }
                }
            }, 800);
        };
        $.defaultPage = function (formname) {
            if (forms.length < 1) {
                this.captcha($(formname));
            }
            $($(formname).find('div.jsn-form-content')[0]).removeClass("hide");
            this.checkPage(formname);
            $(formname).find("#page-loading").addClass("hide");
            forms.push(formname);
        };
        $.checkPage = function (formname) {
            if ($(formname).width() > 0 && $(formname).size() > 0) {
                $(formname).find('div.jsn-form-content').each(function (i) {
                    if (!$(this).hasClass("hide")) {
                        if ($(this).next().attr("data-value")) {
                            $(formname).find(".form-actions .next").removeClass("hide");
                        } else {
                            $(formname).find(".form-actions .next").addClass("hide");
                        }
                        if ($(this).prev().attr("data-value")) {
                            $(formname).find(".form-actions .prev").removeClass("hide");
                        } else {
                            $(formname).find(".form-actions .prev").addClass("hide");
                        }
                        if (i + 1 == $(formname).find('div.jsn-form-content').length) {
                            $(formname).find(".form-actions .next").addClass("hide");
                            $(formname).find(".form-actions .jsn-form-submit").removeClass("hide");
                            $(formname).find(".form-actions .reset").removeClass("hide");

                        } else {
                            $(formname).find(".form-actions .next").removeClass("hide");
                            $(formname).find(".form-actions .jsn-form-submit").addClass("hide");
                            $(formname).find(".form-actions .reset").addClass("hide");
                        }
                        $(this).find(".content-google-maps").each(function () {
                            $(this).find('.google_maps').width($(this).attr("data-width"));
                            $(this).find('.google_maps').height($(this).attr("data-height"));
                            var dataValue = $(this).attr("data-value");
                            var dataMarker = $(this).attr("data-marker");
                            if (dataValue) {
                                var gmapOptions = $.evalJSON(dataValue);
                                if (dataMarker) {
                                    var gmapMarker = $.evalJSON(dataMarker);
                                }
                                if (!gmapOptions.center.nb && gmapOptions.center.lat) {
                                    gmapOptions.center.nb = gmapOptions.center.lat;
                                }
                                if (!gmapOptions.center.ob && gmapOptions.center.lng) {
                                    gmapOptions.center.ob = gmapOptions.center.lng;
                                }
                                $(this).find('.google_maps').gmap({
                                    'zoom': gmapOptions.zoom,
                                    'mapTypeId': gmapOptions.mapTypeId,
                                    'center': gmapOptions.center.nb + ',' + gmapOptions.center.ob,
                                    'disableDefaultUI': false,
                                    'callback': function (map) {
                                        var self = this;
                                        self.set('inforWindow', function (marker, val) {
                                            var descriptions = val.descriptions;
                                            var content = '<div class="thumbnail">';
                                            if (val.images) {
                                                content += '<img src="' + val.images + '">';
                                            }
                                            content += '<div class="caption">';
                                            if (val.title) {
                                                content += '<h4>' + val.title + '</h4>';
                                            }
                                            if (descriptions) {
                                                content += '<p>' + descriptions.replace(new RegExp('\n', 'g'), "<br/>") + '</p>';
                                            }
                                            if (val.link) {
                                                content += '<p><a target="_blank" href="' + val.link + '">more info</a></p>';
                                            }
                                            content += '</div></div>';
                                            self.openInfoWindow({'content': content}, marker);
                                        });
                                        self.get('map').setOptions({streetViewControl: false});
                                        if (gmapMarker) {
                                            $.each(gmapMarker, function (i, val) {

                                                var position = $.evalJSON(val.position);
                                                if (position) {
                                                    if (!position.nb && position.lb) {
                                                        position.nb = position.lb;
                                                    }
                                                    if (!position.ob && position.mb) {
                                                        position.ob = position.mb;
                                                    }
                                                    self.addMarker({
                                                        'position': position.nb + "," + position.ob,
                                                        'draggable': false,
                                                        'bounds': false
                                                    }, function (map, marker) {
                                                        if (val.open == "true") {
                                                            self.get('inforWindow')(marker, val);
                                                        }
                                                        if (val.title) {
                                                            marker.setTitle(val.title);
                                                        }
                                                    }).xclick(function (event) {
                                                        self.get('inforWindow')(this, val);
                                                    })
                                                }
                                            });
                                        }
                                        setTimeout(function () {

                                            self.get('map').setCenter(self._latLng(gmapOptions.center.nb + ',' + gmapOptions.center.ob));
                                            self.get('map').setZoom(gmapOptions.zoom);
                                            self.get('map').setMapTypeId(gmapOptions.mapTypeId);
                                        }, 1000);
                                    }
                                });

                            }
                        });
                    }
                });
            }

        };
        $.actionPage = function (formname) {
            var self = this;
            $(formname).find('div.jsn-form-content').each(function () {
                if (!$(this).hasClass("hide")) {
                    $('html, body').animate({scrollTop: $(this).offset().top - 0}, 200);
                    $(this).find('input').each(function () {
                        $(this).first().focus();
                        return false;
                    });
                    self.checkPage(formname);
                }
            });
        },
            $.nextpaginationPage = function (formname) {
                var self = this;
                $(formname).find('div.jsn-form-content').each(function () {
                    if (!$(this).hasClass("hide")) {
                        $(this).addClass("hide");
                        $(this).next().removeClass("hide");
                        return false;
                    }
                });
                self.actionPage(formname);
            };
        $.prevpaginationPage = function (formname) {
            var self = this;
            $(formname).find('div.jsn-form-content').each(function () {
                if (!$(this).hasClass("hide")) {
                    $(this).addClass("hide");
                    $(this).prev().removeClass("hide");
                    return false;
                }
            });
            self.actionPage(formname);
        };
        $.checkValidateForm = function (_this, type, element, onchange) {

            try {
                if ($("#select2-drop-mask").length) {
                    $("#select2-drop-mask").hide();
                }
            }
            catch (err) {

            }
            var check = 0;
            var $inputBlank = $(_this).find(".blank-required");
            var self = this;
            $inputBlank.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    var checkBlank = true;
                    $(this).find(".help-blank").remove();
                    $(this).parent().removeClass("error");
                    $(this).find("input,select,textarea").each(function () {
                        var val = $(this).val();
                        var val2 = val.replace(' ', '');
                        if ($(this).attr("type") == "text") {
                            if (val2 == '') {
                                checkBlank = false;
                            }
                        } else {
                            if (val2 == '') {
                                checkBlank = false;
                            }
                        }
                    });
                    if (!checkBlank) {
                        $(this).parent().addClass("error");
                        $(this).append(
                            $("<span/>", {
                                "class": "help-block help-blank"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                })));
                        check++;
                    }
                } else {
                    $(this).removeClass('blank-required');
                    $(this).find("input,select,textarea").each(function () {
                        $(this).prop('disabled', true);
                    });
                }
            });
            var groupBlank = $(_this).find(".group-blank-required");
            groupBlank.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    var checkGroupBlank = false;
                    $(this).find(".help-blank").remove();
                    $(this).parent().removeClass("error");
                    $(this).find("input").each(function () {
                        var val = $(this).val();
                        var val2 = val.replace(' ', '');
                        if (val2 != '') {
                            checkGroupBlank = true;
                        }
                    });
                    if (!checkGroupBlank) {
                        $(this).parents(".control-group").addClass("error");
                        $(this).append(
                            $("<span/>", {
                                "class": "help-block help-blank"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                })));
                        check++;
                    }
                }
            });
            var $dropdown = $(_this).find(".dropdown-required");
            $dropdown.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    $(this).find(".help-dropdown").remove();
                    $(this).parent().removeClass("error");
                    if ($(this).find("select").val() == "") {
                        $(this).parent().addClass("error");
                        $(this).append(
                            $("<span/>", {
                                "class": "help-block help-dropdown"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                })))
                        check++;
                    } else if ($(this).find("select option:selected").hasClass('lbl-allowOther')) {
                        var selfRadio = this;

                        $(this).find(".jsn-dropdown-Others").focusout(function () {
                            var checkRadio = false;
                            var valchoices = $(selfRadio).find(".jsn-dropdown-Others").val();
                            var valchoices2 = valchoices.replace(' ', '');
                            if (valchoices2 == '') {
                                checkRadio = true;
                            }
                            if (checkRadio) {
                                $(selfRadio).find(".help-dropdown").remove();
                                $(selfRadio).parent().addClass("error");
                                $(selfRadio).append(
                                    $("<span/>", {
                                        "class": "help-block help-dropdown"
                                    }).append(
                                        $("<span/>", {
                                            "class": "validation-result label label-important",
                                            text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                        })))
                                check++;
                            }
                        });
                        if (type != "detailInput") {
                            $(this).find(".jsn-dropdown-Others").trigger("focusout");
                        }
                    }
                }
            });
            var $inputEmailNull = $(_this).find("input.email");
            $inputEmailNull.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    var parentEmail = $(this).parents(".control-group");
                    $(parentEmail).find(".help-email").remove();
                    $(parentEmail).removeClass("error");
                    var val = $(this).val();
                    var filter = /^(([a-zA-Z0-9\+_\-]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/;

                    if (!filter.test(val) && $(this).hasClass("email-required")) {
                        $(parentEmail).addClass("error");
                        $(this).parents(".controls").append(
                            $("<span/>", {
                                "class": "help-block help-email"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_INVALID']
                                })));
                        check++;
                    } else if (!$(this).hasClass("email-required") && val && !filter.test(val)) {
                        $(parentEmail).addClass("error");
                        $(this).parents(".controls").append(
                            $("<span/>", {
                                "class": "help-block help-email"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_INVALID']
                                })));
                        check++;
                    }
                    if (val && filter.test(val) && $(parentEmail).find(".jsn-email-confirm").hasClass("jsn-email-confirm") && ($(element).hasClass("jsn-email-confirm") || !$(parentEmail).hasClass("ui-state-highlight"))) {
                        if ($(parentEmail).find(".jsn-email-confirm").val() != $(this).val()) {
                            $(parentEmail).addClass("error");
                            $(this).parents(".controls").append(
                                $("<span/>", {
                                    "class": "help-block help-email"
                                }).append(
                                    $("<span/>", {
                                        "class": "validation-result label label-important",
                                        text: lang['JSN_UNIFORM_CONFIRM_FIELD_EMAIL_CONFIRM']
                                    })));
                            check++;
                        }
                    }
                }
            });
            var $inputWebsite = $(_this).find("input.website");
            $inputWebsite.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    $(this).parent().find(".help-website").remove();
                    $(this).parent().parent().removeClass("error");
                    var val = $(this).val();
                    var regexp = /^(https?:\/\/|ftp:\/\/|www([0-9]{0,9})?\.)?(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i;
                    if ((!regexp.test(val) && $(this).hasClass("website-required")) || (val != "" && val != "http://" && val != "https://" && !$(this).hasClass("website-required") && !regexp.test(val))) {
                        $(this).parent().parent().addClass("error");
                        $(this).after(
                            $("<span/>", {
                                "class": "help-block help-website"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_INVALID']
                                })));
                        check++;
                    }
                }
            });
            var $inputInteger = $(_this).find("input.integer-required");
            $inputInteger.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    $(this).parent().find(".help-integer").remove();
                    $(this).parent().parent().removeClass("error");
                    var val = $(this).val();
                    var regexp = /^[0-9]+$/;
                    if (!regexp.test(val)) {
                        $(this).parent().parent().addClass("error");
                        $(this).parent().append(
                            $("<span/>", {
                                "class": "help-block help-integer"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_INVALID']
                                })));
                        check++;
                    }
                }
            });
            if (onchange != "onchange") {
                var $valueLimitPassword = $(_this).find(".limit-password-required");
                $valueLimitPassword.each(function () {
                    if ($(this).parents(".control-group").css("display") != "none") {
                        var checkval = false;
                        if ($(this).hasClass("group-blank-required")) {
                            $(this).find("input").each(function () {
                                var val = $(this).val();
                                var val2 = val.replace(' ', '');
                                if (val2 == '') {
                                    checkval = true;
                                }
                            });
                        }
                        if (!checkval) {
                            var inputPassword = $(this).find("input");
                            var limitSettings = $.evalJSON($(inputPassword).attr("data-limit"));
                            var checkPassword = false;
                            if ($(this).find("input").length > 1) {
                                $(this).parent().removeClass("error");
                                $(this).find(".help-limit").remove();
                                $(this).find("input").each(function () {
                                    if ($(this).val().length < limitSettings.limitMin) {
                                        checkPassword = true;
                                    } else if ($(this).val().length > limitSettings.limitMax) {
                                        checkPassword = true;
                                    }
                                });
                            } else {
                                if ($(inputPassword).val() != '' || $(inputPassword).val() != 0) {
                                    $(inputPassword).parent().find(".help-limit").remove();
                                    $(inputPassword).parent().parent().removeClass("error");
                                    if ($(inputPassword).val().length < limitSettings.limitMin) {
                                        checkPassword = true;
                                    } else if ($(inputPassword).val().length > limitSettings.limitMax) {
                                        checkPassword = true;
                                    }
                                }
                            }

                            if (checkPassword) {
                                check++;
                                var textLang = lang['JSN_UNIFORM_CONFIRM_FIELD_PASSWORD_MIN_MAX_CHARACTER'];
                                textLang = textLang.replace("%mi%", limitSettings.limitMin);
                                textLang = textLang.replace("%mx%", limitSettings.limitMax);
                                $(this).parent().addClass("error");
                                $(this).append(
                                    $("<span/>", {
                                        "class": "help-block help-limit"
                                    }).append(
                                        $("<span/>", {
                                            "class": "validation-result label label-important",
                                            text: textLang
                                        })));
                            }
                        }
                    }
                });
            }
            var $valueLimit = $(_this).find(".limit-required");
            $valueLimit.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    var limitSettings = $.evalJSON($(this).attr("data-limit"));
                    var checkval = false;
                    if ($(this).parent().hasClass("group-blank-required")) {
                        $(this).find("input").each(function () {
                            var val = $(this).val();
                            var val2 = val.replace(' ', '');
                            if (val2 == '') {
                                checkval = true;
                            }
                        });
                    }
                    if ($(this).parent().hasClass("blank-required")) {
                        var val = $(this).val();
                        var val2 = val.replace(' ', '');
                        if ($(this).attr("type") == "text") {
                            if (val2 == '') {
                                checkval = true;
                            }
                        } else {
                            if (val2 == '' || val2 == 0) {
                                checkval = true;
                            }
                        }
                    }
                    if (!checkval) {
                        $(this).parent().find(".help-limit").remove();
                        $(this).parent().parent().removeClass("error");
                        var id = $(this).attr('id')
                        if (limitSettings.limitType == "Words") {
                            var lengthValue = $.trim($(this).val()).split(/[\s]+/);
                            if (lengthValue.length < limitSettings.limitMin) {
                                check++;
                                $(this).parent().parent().addClass("error");
                                $('#words-limit_' + id).append(
                                    $("<div />", {"class": "pull-left"}).append(
                                        $("<span/>", {
                                            "class": "help-block help-limit"
                                        }).append(
                                            $("<span/>", {
                                                "class": "validation-result label label-important",
                                                text: lang['JSN_UNIFORM_CONFIRM_FIELD_MIN_LENGTH'] + " " + limitSettings.limitMin + " " + lang['JSN_UNIFORM_WORDS']
                                            }))));
                            } else if (lengthValue.length > limitSettings.limitMax) {
                                check++;
                                $(this).parent().parent().addClass("error");
                                $('#words-limit_' + id).append(
                                    $("<div />", {"class": "pull-left"}).append(
                                        $("<span/>", {
                                            "class": "help-block help-limit"
                                        }).append(
                                            $("<span/>", {
                                                "class": "validation-result label label-important",
                                                text: lang['JSN_UNIFORM_CONFIRM_FIELD_MAX_LENGTH'] + " " + limitSettings.limitMax + " " + lang['JSN_UNIFORM_WORDS']
                                            }))));
                            }
                        } else {
                            if ($(this).val().length < limitSettings.limitMin) {
                                check++;
                                $(this).parent().parent().addClass("error");
                                $('#characters-limit_' + id).append(
                                    $("<div />", {"class": "pull-left"}).append(
                                        $("<span/>", {
                                            "class": "help-block help-limit"
                                        }).append(
                                            $("<span/>", {
                                                "class": "validation-result label label-important",
                                                text: lang['JSN_UNIFORM_CONFIRM_FIELD_MIN_LENGTH'] + " " + limitSettings.limitMin + " " + lang['JSN_UNIFORM_CHARACTERS']
                                            }))));
                            } else if ($(this).val().length > limitSettings.limitMax) {
                                check++;
                                $(this).parent().parent().addClass("error");
                                $('#characters-limit_' + id).append(
                                    $("<div />", {"class": "pull-left"}).append(
                                        $("<span/>", {
                                            "class": "help-block help-limit"
                                        }).append(
                                            $("<span/>", {
                                                "class": "validation-result label label-important",
                                                text: lang['JSN_UNIFORM_CONFIRM_FIELD_MAX_LENGTH'] + " " + limitSettings.limitMax + " " + lang['JSN_UNIFORM_CHARACTERS']
                                            }))));
                            }
                        }

                    }
                }
            });

            var $valueNumberLimit = $(_this).find(".number-limit-required");
            $valueNumberLimit.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    var checkval = false;
                    if ($(this).hasClass("integer-required")) {
                        var val = $(this).val();
                        var regexp = /^[0-9]+$/;
                        if (!regexp.test(val)) {
                            checkval = true;
                        }
                    }
                    if (!checkval) {
                        var limitNumberSettings = $.evalJSON($(this).attr("data-limit"));
                        $(this).parent().find(".help-limit").remove();
                        $(this).parent().parent().removeClass("error");
                        if ($(this).val() != '' || $(this).val() != 0) {
                            if (parseInt($(this).val(), 10) < limitNumberSettings.limitMin) {
                                check++;
                                $(this).parent().parent().addClass("error");
                                $(this).parent().append(
                                    $("<span/>", {
                                        "class": "help-block help-limit"
                                    }).append(
                                        $("<span/>", {
                                            "class": "validation-result label label-important",
                                            text: lang['JSN_UNIFORM_CONFIRM_FIELD_MIN_NUMBER'] + " " + limitNumberSettings.limitMin
                                        })));
                            } else if (parseInt($(this).val(), 10) > limitNumberSettings.limitMax) {
                                check++;
                                $(this).parent().parent().addClass("error");
                                $(this).parent().append(
                                    $("<span/>", {
                                        "class": "help-block help-limit"
                                    }).append(
                                        $("<span/>", {
                                            "class": "validation-result label label-important",
                                            text: lang['JSN_UNIFORM_CONFIRM_FIELD_MAX_NUMBER'] + " " + limitNumberSettings.limitMax
                                        })));
                            }
                            else if (parseInt($(this).val(), 10) == limitNumberSettings.limitMax) {
                                if (parseInt($('.number-decimal').val(), 10) > 0) {
                                    check++;
                                    $(this).parent().parent().addClass("error");
                                    $(this).parent().append(
                                        $("<span/>", {
                                            "class": "help-block help-limit"
                                        }).append(
                                            $("<span/>", {
                                                "class": "validation-result label label-important",
                                                text: lang['JSN_UNIFORM_CONFIRM_FIELD_MAX_NUMBER'] + " " + limitNumberSettings.limitMax
                                            })));
                                }
                            }
                        }

                    }
                }
            });

            var $list = $(_this).find(".list-required");
            $list.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    $(this).parent().find(".help-list").remove();
                    $(this).parent().removeClass("error");
                    if (!$(this).find("select").val()) {
                        $(this).parent().addClass("error");
                        $(this).find("select").after(
                            $("<span/>", {
                                "class": "help-block help-list"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_INVALID']
                                })));
                        check++;
                    }
                }
            });
            var $inputchoices = $(_this).find(".choices-required");
            $inputchoices.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    $(this).find(".help-choices").remove();
                    $(this).parent().removeClass("error");
                    if ($(this).find("input[type=radio]:checked").length < 1) {
                        $(this).parent().addClass("error");
                        $(this).append(
                            $("<span/>", {
                                "class": "help-block help-choices"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                })))
                        check++;
                    } else if ($(this).find("input[type=radio]:checked").hasClass('allowOther') && $(this).find("input[type=radio]:checked").length == 1) {
                        var selfRadio = this;
                        $(this).find(".jsn-value-Others").focusout(function () {
                            var checkRadio = false;
                            var valchoices = $(selfRadio).find(".jsn-value-Others").val();
                            var valchoices2 = valchoices.replace(' ', '');
                            if (valchoices2 == '') {
                                checkRadio = true;
                            }
                            if (checkRadio) {
                                $(selfRadio).find(".help-choices").remove();
                                $(selfRadio).parent().addClass("error");
                                $(selfRadio).append(
                                    $("<span/>", {
                                        "class": "help-block help-choices"
                                    }).append(
                                        $("<span/>", {
                                            "class": "validation-result label label-important",
                                            text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                        })))
                                check++;
                            }
                        });
                        if (type != "detailInput") {
                            $(this).find(".jsn-value-Others").trigger("focusout");
                        }
                    }
                }
            });

            //if (onchange != "onchange") {
            var $inputlikert = $(_this).find(".likert-required");
            $inputlikert.each(function () {
                var $column = $(this).find("td.likert_data_hidden input[type=hidden]").val();
                var likertRequiredCheck = 1;
                if ($column) {
                    $column = $.evalJSON($column);
                    likertRequiredCheck = $column.rows.length;
                }
                if ($(this).parents(".control-group").css("display") != "none") {
                    $(this).find(".help-likert").remove();
                    $(this).parents(".control-group").removeClass("error");
                    //$(this).find("tbody tr").each(function () {
                    if ($(this).find("input[type=radio]:checked").length < likertRequiredCheck) {
                        $(this).parents(".control-group").addClass("error");
                        if (!$(this).parents(".controls").find(".help-likert").size()) {
                            $(this).parents(".controls").append(
                                $("<span/>", {
                                    "class": "help-block help-likert"
                                }).append(
                                    $("<span/>", {
                                        "class": "validation-result label label-important",
                                        text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                    })))
                        }
                        check++;
                    }
                    else {
                        $(this).parents(".control-group").removeClass("error");
                        $(this).parents(".control-group").find(".help-likert").remove()
                    }
                    //})
                }
            });
            //}

            var $inputCheckbox = $(_this).find(".checkbox-required");
            $inputCheckbox.each(function () {
                if ($(this).parents(".control-group").css("display") != "none") {
                    $(this).find(".help-checkbox").remove();
                    $(this).parent().parent().removeClass("error");
                    if ($(this).find("input[type=checkbox]:checked").length < 1) {
                        $(this).parent().parent().addClass("error");
                        $(this).append(
                            $("<span/>", {
                                "class": "help-block help-checkbox"
                            }).append(
                                $("<span/>", {
                                    "class": "validation-result label label-important",
                                    text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                })))
                        check++;
                    } else if ($(this).find("input[type=checkbox]:checked").length == 1 && $(this).find("input[type=checkbox]:checked").hasClass('allowOther')) {
                        var selfCheckbox = this;
                        $(this).find(".jsn-value-Others").focusout(function () {
                            var checkCheckbox = false;
                            var valchoices = $(selfCheckbox).find(".jsn-value-Others").val();
                            var valchoices2 = valchoices.replace(' ', '');
                            if (valchoices2 == '') {
                                checkCheckbox = true;
                            }
                            if (checkCheckbox) {
                                $(selfCheckbox).find(".help-checkbox").remove();
                                $(selfCheckbox).parent().parent().addClass("error");
                                $(selfCheckbox).append(
                                    $("<span/>", {
                                        "class": "help-block help-checkbox"
                                    }).append(
                                        $("<span/>", {
                                            "class": "validation-result label label-important",
                                            text: lang['JSN_UNIFORM_CONFIRM_FIELD_CANNOT_EMPTY']
                                        })))
                                check++;
                            }
                        });
                        if (type != "detailInput") {
                            $(this).find(".jsn-value-Others").trigger("focusout");
                        }
                    }
                }
            });
            if (check > 0 && type != "detailInput") {
                var fieldFocus = $(_this).find(".error")[0];
                if ($(fieldFocus).find(".blank-required").size()) {
                    $(fieldFocus).find("input,select,textarea").each(function () {
                        var val = $(this).val();
                        var val2 = val.replace(' ', '');
                        if (val2 == '' || val2 == 0) {
                            $(window).scrollTop($(this).offset().top - 50);
                            $(this).focus();
                            if ($(this).attr('type') != 'file') {
                                $(this).click();
                            }
                            return false;
                        }
                    })
                }
                else if ($(fieldFocus).find(".likert-required").size()) {
                    var fieldFocus = $(_this).find(".error input")[1];
                    $(fieldFocus).focus();
                }
                else {
                    var fieldFocus = $(_this).find(".error input,.error textarea,.error select")[0];
                    $(window).scrollTop($(fieldFocus).offset().top - 50);
                    $(fieldFocus).focus();
                }
                return false;
            }
            if (check > 0 && type == "detailInput") {
                return false;
            }
            return true;
        };
        $.getBoxStyle = function (element) {

            var style = {
                width: element.width(),
                height: element.height(),
                outerHeight: element.outerHeight(),
                outerWidth: element.outerWidth(),
                offset: element.offset(),
                margin: {
                    left: parseInt(element.css('margin-left')),
                    right: parseInt(element.css('margin-right')),
                    top: parseInt(element.css('margin-top')),
                    bottom: parseInt(element.css('margin-bottom'))
                },
                padding: {
                    left: parseInt(element.css('padding-left')),
                    right: parseInt(element.css('padding-right')),
                    top: parseInt(element.css('padding-top')),
                    bottom: parseInt(element.css('padding-bottom'))
                }
            };
            return style;
        };

        function jsnLoadForm($) {
            $(".jsn-uniform").each(function () {
                if ($(this).attr("data-form-name")) {
                    var getLang = $(this).find("span.jsn-language").attr("data-value");
                    baseUrl = $(this).find("span.jsn-base-url").attr("data-value");
                    if (getLang) {
                        lang = $.evalJSON(getLang);
                    }
                    $.initJSNForm($(this).find("form"));
                }
            });
        }

        function JSNUFKeepSessionAlive(path) {
            var req = false;
            if (window.XMLHttpRequest && !(window.ActiveXObject)) {
                try {
                    req = new XMLHttpRequest();
                }
                catch (e) {
                    req = false;
                }
            }
            else if (window.ActiveXObject) {
                try {
                    req = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try {
                        req = ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {
                        req = false
                    }
                }
            }
            if (req) {
                req.onreadystatechange = function () {
                    // only if req show loaded
                    if (req.readyState == 4) {
                        // only if OK
                        if (req.status == 200) {

                        } else {

                        }
                    }
                }
                req.open("HEAD", path, true);
                req.send();
            }
        }
        jQuery(document).ready(jsnLoadForm($));
    });
})(jQuery);