$(function () {
    setTimeout(
        hideForwOrBack(),
        100);

});

$('body').on('click', '#btnForward', function (e) {
    e.preventDefault();
    if (!$(this).hasClass('onClickRegistredWarningModal')) {
        $('.tabbable li.active').next('li').find('a').trigger('click');
        $('body, html').animate({ scrollTop: 0 });
        hideForwOrBack();
    }
});

$('body').on('click', '#btnBack', function (e) {
    e.preventDefault();
    if (!$(this).hasClass('onClickRegistredWarningModal')) {
        $('.tabbable li.active').prev('li').find('a').trigger('click');
        $('body, html').animate({ scrollTop: 0 });
        hideForwOrBack();
    }

});

function hideForwOrBack() {
    if ($('.tabbable li.active').next('li').length < 1) {

        $('#btnForward').hide();
    } else {
        $('#btnForward').show();
    }

    if ($('.tabbable li.active').prev('li').length < 1) {
        $('#btnBack').hide();
    } else {
        $('#btnBack').show();

    }
}

etis.directive('ckeditorattr', function () {
    return {
        require: "^?groupCounter",
        restrict: 'EA',
        link: function ($scope, $element, attrs, groupCounterCtrl) {
            var name = $element.attr("name");
            var rows = $element.attr("rows");
       
            var counter = $element.attr("counter");
            var height = rows * 18;
            var config = $element.attr("ckeditorattr");
            if (CKEDITOR.instances[name]) {
                CKEDITOR.remove(CKEDITOR.instances[name]);
            };

           
            //uuendame oma hidden välja kui ck editoris on muudatus
            function appendHiddenFieldValues(instance) {
                var instanceHtmlInput = instance.getData();
                var id = instance.name.replace(".", "_").slice(0, -8);
                var encoded = $('<div/>').text(instanceHtmlInput).html();
                var hidden = $('#' + id);

                hidden.val(encoded);
            }


            function getElemCharCount(it) {
                var tmp = document.createElement("DIV");
                tmp.innerHTML = it.getData();

                var content = tmp.textContent || tmp.innerText || "";
                //kuna ckeditor lisab automaatselt 2 entrit siis siin võtame ühe ära char lugemisel et kasutajad ei satuks segadusse
                var numberOfLineBreaks = 0;
                if (content) {
                   var matches = content.match(/\n/gm);
                    if (matches) {
                        numberOfLineBreaks = (matches.length);
                    }
                    //numberOfLineBreaks += 0;
                }
                return content.length - numberOfLineBreaks;
            }

            function updateCounter(instance) {

                if (groupCounterCtrl) {
                    groupCounterCtrl.update(getElemCharCount(instance), name);
                }
                if (counter) {
                    var params = $scope.$eval(counter);
                    var maxLength = params.length;
                    var c = $element.prev();
                    var textLenght = maxLength - (getElemCharCount(instance));
                    $(c).text(textLenght);
                    if (textLenght < 0) {
                        $(c).addClass('input-validation-error');
                        $(c).closest('.control-group').addClass('error');
                    } else {
                        $(c).removeClass('input-validation-error');
                        $(c).closest('.control-group').removeClass('error');
                    }
                       
                }
            }

            /*et subform töötaks*/
            function breakEditorFields(instance) {
                //instance.execCommand('source');

                //instance.execCommand('source');

                var id = instance.name;
                var instanceName = id.replace("_", ".");
                var instanceHtmlInput = instance.getData();
                instance.name = instanceName + "_subform";

                var area = $('#' + id);
                var areaval = area.val();

                var elem = document.createElement('textarea');
                elem.innerHTML = areaval;
                var decoded = elem.value;

                area.val(decoded);




                area.attr("name", "");
                var hidden = $("<input type='hidden' />");
                area.parent().append(hidden);

                hidden.val(instanceHtmlInput);
                area.attr("id", id + "_subform");
                hidden.attr("id", id);
                hidden.attr("name", instanceName);

            }

            setTimeout(function () {
          
               var instance = CKEDITOR.replace(name,
                {
                    customConfig: config,
                    language: Strings.js_CurrentCultureIso,
                    height: height
                });

               //instance.on('paste', function (evt) {
               //    // Update the text
               //    console.log(evt.instance.getData());
               //    evt.instance.setData(evt.instance.getData() + ' your additional comments.');
               //}, instance.element.$);


                instance.on('change', function () {
                   appendHiddenFieldValues(this);
                   updateCounter(this);
               });
               breakEditorFields(instance);
               appendHiddenFieldValues(instance);
               updateCounter(instance);
            }, 300);

        }
         
    };
});
// arvutab kõikide textareade pikkuse mingis divis, väärtus kuvatakse: <strong class="counter">0</strong>, lisada käsitsi
etis.directive('groupCounter', function () {
    return {
        restrict: 'EA',
        controller: function ($scope, $element) {
            var expression = $element.attr("group-counter");
            $scope.lengths = [];
            var params = $scope.$eval(expression);
            var maxLength = params.length;
            //keelame ckeditori group counteri
            var $textareas = $('textarea:not([ckeditorattr])', $element);
            var $counter = $('.counter', $element);
            var $alert = $('.group-counter-alert', $element);
            var $groupedcounterinput = $('[groupedcounterinput="True"]', $element);
            function getLenghts() {
                var res = 0;
                $textareas.each(function () {
                    res += $(this).val().length;
                });
                return res;
            }
            $textareas.each(function () {
                $(this).bind('keyup paste', function () {
                    if (getLenghts() > maxLength)
                        $counter.addClass('input-validation-error');
                    else
                        $counter.removeClass('input-validation-error');

                    updateCounter(getLenghts());
                });
            });

            $textareas.first().trigger('paste');


            function updateCounter(len) {
                var charsLeft = maxLength - len;
                if ($groupedcounterinput) {
                    $groupedcounterinput.val(charsLeft);
                }
                if ($alert) {
                    $alert.removeClass('in');
                    if (charsLeft < 0) {
                        $alert.addClass('in');
                    }
                }
                $counter.text(charsLeft);
            }

            this.update = function (len, id) {
                $scope.lengths[id] = len;
                var res = 0;
                for (key in $scope.lengths) {
                    res += $scope.lengths[key];
                }

                //$scope.lengths.forEach(function (entry) {
                //    console.log(entry);
                //    res += entry;
                //});
                updateCounter(res);
            }
        }
    };
});
