﻿var inputChar;
var inptField;

function facebooklist(elem, list, complete, ajax, height) {
  
    function addHiddenInput(value) {
        var input = document.createElement('input');
        $(input).attr({ 'type': 'hidden', 'name': (elem.attr('id') + '[]'), 'id': (elem.attr('id') + '[]'), 'value': value });
        return input;
    }

    function getChar(e) {

        if (window.event) {
            keynum = e.keyCode;
        } else if (e.which) {
            keynum = e.which;
        }
        if (keynum == 8)
            return '';

        return String.fromCharCode(keynum);
    }
    function addItem(item, preadded) {
       
        var title = item.html().replace(/<em>/gi, '').replace(/<\/em>/gi, '');
        var value = (item.attr('title') && item.attr('title') != -1 ? item.attr('title') : title);
        if (title.toString().length > 12)
            title = title.toString().substring(0, 12) + "..";
        var li = document.createElement('li');
        var txt = document.createTextNode(title);
        var aclose = document.createElement('input');
        var input = addHiddenInput(value);
        
        var selectedVals = $("#hdnSelected")[0].value;
        selectedVals = selectedVals + $(item)[0].title + ',';
        $("#hdnSelected")[0].value = selectedVals;
        var SelectedNames = $("#hdnSelectedName")[0].value;
        SelectedNames = SelectedNames + $(item)[0].innerHTML + ',';
        $("#hdnSelectedName")[0].value = SelectedNames; 
        $(li).attr({ 'title': value, 'class': 'bit-box' });
        $(li).prepend(txt);
        $(aclose).attr({ 'class': 'RmvAutContact', 'type': 'button', 'value': 'x' });
        li.appendChild(aclose);
        li.appendChild(input);
        holder.appendChild(li);
        $(aclose).click(function() {
            var selectedVals = $("#hdnSelected")[0].value;
            $("#hdnSelected")[0].value = selectedVals.toString().replace($(this).parent('li')[0].title + ',', '');
            var selectednames = $("#hdnSelectedName")[0].value;
            selectednames = selectednames.toString().replace(title + ',', '');

            $("#hdnSelectedName")[0].value = selectednames;
            $(this).parent('li').fadeOut('fast', function() {
                $(this).remove();
            });
            return false;
        });
        if (!preadded) {
             $(holder).children("li").find('.maininput').parent().remove();
            
           
            addInput();
        }
        $('.default').show();
        feed.hide();
    }
    var friendsCount = 2;
    var tempHeight = height;
    function addItemFeed(data, input) {
        friendsCount = 2;
        feed.children('li[fckb=2]').remove();
        for(i=1;i<data.length;i++) {
            
          var val=data[i];
            val = val.split(';');
            if (val[0].toString().toLowerCase().indexOf(input.toString().toLowerCase()) == 0) {
                var li = document.createElement('li');
                $(li).attr({ 'title': val[1], 'fckb': '2' });
                $(li).html(val[0].toString().toLowerCase().replace(input, '<em>' + input + '</em>'));
                feed.append(li);
                friendsCount = friendsCount + 1;
            }

        }
        if (friendsCount < 10)
            height = friendsCount;
        else
            height = tempHeight;
        feed.css({ 'height': (height * 27) + 'px', 'overflow-y': 'scroll' });
    }
    function addTextItemFeed(value) {

        feed.children('li[fckb=1]').remove();
        feed.children('li[fckb=3]').remove();
        if (value != "") {
            var li = document.createElement('li');
            $(li).attr({ 'title': value, 'fckb': '1', 'class': 'auto-focus' });
            $(li).html(value);
            feed.prepend(li);

        }

        var ListcloseSMS = document.createElement('input');
        $(ListcloseSMS).attr({ 'class': 'RmvAutContact close-acomp', 'type': 'button' });
        var li2 = document.createElement('li');
        $(li2).attr({ 'fckb': '3' });
        if (value == "")
            $(li2).attr({ 'class': 'auto-focus' });
        li2.appendChild(ListcloseSMS);
        feed.prepend(li2);
    }
    function bindEvents() {
        feed.children('li').hover(
              function() {

                  feed.children('li').attr("class", "");
                  $(this).attr("class", "auto-focus");
                  $("#hdnHovered")[0].value = $(this)[0].value;
              },
              function() {

              }
        );
        feed.children('li').unbind('click');
        feed.children('li').click(function() {
            if ($(this)[0].innerHTML != "" && $(this)[0].innerHTML != inputChar) {
                if ($("#hdnSelected")[0].value.indexOf($(this)[0].title) == -1)
                    addItem($(this));
            }
            else {
               
                inptField[0].value = "";
            }
            
            complete.hide();
        });

    }

    function addInput() {
       
        var li = document.createElement('li');
        var input = document.createElement('input');
        $(li).attr({ 'class': 'bit-input', 'id': 'annoninput' });
        $(input).attr({ 'type': 'text', 'class': 'maininput' });
        li.appendChild(input);
        inptField = $(input);
        holder.appendChild(li);
        $(li).click(function() {

            complete.fadeIn('fast');
        });
        $(li).keypress(function(event) {

            if (event.keyCode == 13) {
                if ($("#hdnHovered")[0].value != "") {
                    var SelectedItem = feed.find(".auto-focus"); 
                    if ($(SelectedItem)[0].innerHTML != "" && $(SelectedItem)[0].innerHTML != inputChar)
                        if ($("#hdnSelected")[0].value.indexOf($(SelectedItem)[0].title) == -1)
                        addItem($(SelectedItem));
                    complete.hide();
                }
            }
        });
        $(li).keyup(function(event) {

            if (event.keyCode == 40) {
                var SelectedItem = feed.find(".auto-focus");
                if ($(SelectedItem).length > 0) {
                    $(SelectedItem).attr("class", "");
                    if ($(SelectedItem).next().length > 0) {
                        $(SelectedItem).next().attr("class", "auto-focus");
                        $("#hdnHovered")[0].value = $(SelectedItem).next()[0].value;
                    }
                    else {
                        if ($(SelectedItem).prevAll().length > 0) {
                            $($(SelectedItem).prevAll()[$(SelectedItem).prevAll().length - 1]).attr("class", "auto-focus");
                            $("#hdnHovered")[0].value = $(SelectedItem).prevAll()[$(SelectedItem).prevAll().length - 1].value;
                        }
                    }

                }
            }
            else
                if (event.keyCode == 38) {
                var SelectedItem = feed.find(".auto-focus");
                if ($(SelectedItem).length > 0) {


                    if ($(SelectedItem).prev().length > 0 && $(SelectedItem).prev()[0].innerHTML != "") {
                        $(SelectedItem).attr("class", "");
                        $(SelectedItem).prev().attr("class", "auto-focus");
                        $("#hdnHovered")[0].value = $(SelectedItem).prev()[0].value;
                    }

                }
            }
            else if (event.keyCode == 27) {
                feed.hide();
            }
            else {

                var etext = $(input)[0].value;
                inputChar = etext;
                addTextItemFeed(etext);

                addItemFeed(friendsDataModified, etext);

                bindEvents();
                $('.default').hide();
                feed.show();


            }

        });
    }
    var friendsData;
    var friendsDataModified = new Array();
    if (ajax) {
        $.post(ajax, function(data) {
           
            friendsData = $(data).find("#divFriends")[0].innerHTML;
            friendsData = friendsData.split(',');
            for (i = 1; i < friendsData.length - 1; i++) {
                friendsDataModified[i] = friendsData[i];
            }
        });
    }
    if (typeof (elem) != 'object') elem = $(elem);
    if (typeof (list) != 'object') list = $(list);
    if (typeof (complete) != 'object') complete = $(complete);
    var feed = $('#feed');


    var holder = document.createElement('ul');
    elem.css('display', 'none');
    $(holder).attr('class', 'holder');

    if (list && list.children('li').length) {
        $.each(list.children('li'), function(i, value) {
           
            addItem($(list.children('li')[i]), 1);
        });
    }
    addInput();
   
    elem.before(holder);

}