﻿TextboxList.Autocomplete.Methods = {

    simple: {

        filter: function(values, search, insensitive, max) {
            var newvals = [];
            for (var i = 0; i < values.length; i++) {
                if (newvals.length === max) break;
                newvals.push(values[i]);
            }
            return newvals;
        },

        highlight: function(element, search, insensitive, klass) {
            var tmp = this.prepare(search.escapeRegExp());
            var regex = new RegExp('(<[^>]*>)|(' + tmp + ')', insensitive ? 'ig' : 'g');
            if (!regex.test(element.get('html'))) {
                tmp = this.prepare(this.torussianvariant(search).escapeRegExp());
                regex = new RegExp('(<[^>]*>)|(' + tmp + ')', insensitive ? 'ig' : 'g');
            }
            return element.set('html', element.get('html').replace(regex, function(a, b, c) {
                return (a.charAt(0) == '<') ? a : '<strong class="' + klass + '">' + c + '</strong>';
            }));
        },

        prepare: function(str) {
            var r = new RegExp('([её])', 'ig');
            return str.replace(r, '[её]')
        },

        torussianvariant: function(search) {
            var result = search;
            var layoutEn = new Array("`", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "\\[", "\\]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "z", "x", "c", "v", "b", "n", "m", "\,", "\\.", "~", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "\\{", "\\}", "A", "S", "D", "F", "G", "H", "J", "K", "L", ":", "\"", "Z", "X", "C", "V", "B", "N", "M", "<", ">");
            var layoutRu = new Array("ё", "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю", "Ё", "Й", "Ц", "У", "К", "Е", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю");

            var lenght = layoutEn.length;
            for (i = 0; i < lenght; i++) {
                var regex = new RegExp(layoutEn[i], 'g');
                result = result.replace(regex, layoutRu[i]);
            }
            return result;
        }
    }

};