var emailsel = {
  
  targetID: '',
  listKeyPos: -1,
  listRequestID: 0,
  firmenID: '',
  pressedKeys: [],
  separator: ';',
  
  create: function () {
    var div = new Element('div', {'id': 'emailsel_selection_container'});
    $('body_element').appendChild(div);
    return div;
  },
  
  show: function (targetID, firmenID, separator) {
    emailsel.hide();
    emailsel.targetID = targetID;
    emailsel.firmenID = firmenID;
    if (separator !== undefined) emailsel.separator = separator;
    emailsel.listKeyPos = -1;
    emailsel.pressedKeys = [];
    showInfoDivContainer('', 'ajax');
    new Ajax.Request('ajax/srv/emailselection.php?t=show', {
      postBody: 'firmenID='+encodeURIComponent(emailsel.firmenID),
      onComplete: function (t) {
        if ($('body_element')) {
          hideShowInfoDivContainer();
          var json = t.responseText.evalJSON();
          var container = emailsel.create();
          container.innerHTML = json.content;

          if ($('emailsel_suche')) $('emailsel_suche').observe('keyup', function (event) {
            var keynum = (event.keyCode) ? event.keyCode : event.which;
            emailsel.list();
            emailsel.removeKey(keynum);
          });
          if ($('emailsel_suche')) $('emailsel_suche').observe('keydown', function (event) {
            var keynum = (event.keyCode) ? event.keyCode : event.which;
            emailsel.setKey(keynum);
          });
          if ($('emailsel_cancel_icon')) $('emailsel_cancel_icon').observe('click', function () {
            emailsel.hide();
          });
          if ($('emailsel_cancel_button')) $('emailsel_cancel_button').observe('click', function () {
            emailsel.hide();
          });
          if ($('emailsel_set_button')) $('emailsel_set_button').observe('click', function () {
            emailsel.save();
          });
          if ($('emailsel_suche')) $('emailsel_suche').focus();
        }
      }
    });
  },

  setKey: function (keynum) {
    if (emailsel.pressedKeys.indexOf(keynum) == -1)
      emailsel.pressedKeys[emailsel.pressedKeys.length] = keynum;
  },
  
  removeKey: function (keynum) {
    var index = emailsel.pressedKeys.indexOf(keynum);
    if (index != -1)
      emailsel.pressedKeys.splice(index, 1);
  },
  
  hide: function () {
    if ($('emailsel_selection_container')) $('emailsel_selection_container').remove();
  },
  
  list: function () {
    if (emailsel.pressedKeys.indexOf(17) != -1 && emailsel.pressedKeys.indexOf(13) != -1) {
      emailsel.save();
    } else {
      if ((emailsel.pressedKeys.indexOf(40) != -1) || (emailsel.pressedKeys.indexOf(38) != -1) || (emailsel.pressedKeys.indexOf(13) != -1)) {
        if ($('emailsel_mailaddressSelectionUL')) {
          if (emailsel.pressedKeys.indexOf(13) != -1) {
            if ($('emailsel_selectInputMailAddress_'+emailsel.listKeyPos)) {
              emailsel.set($('emailsel_selectInputMailAddress_'+emailsel.listKeyPos).value);
            }
          } else {
            var childs = $$('#emailsel_mailaddressSelectionUL li.emailsel_mailLI');
            if (emailsel.pressedKeys.indexOf(40) != -1) emailsel.listKeyPos++;
            if (emailsel.pressedKeys.indexOf(38) != -1) emailsel.listKeyPos--;
            if (emailsel.listKeyPos < 0) {
              emailsel.listKeyPos = 0;
            }
            if (emailsel.listKeyPos > (childs.length - 1)) {
              emailsel.listKeyPos = childs.length - 1;
            }
            emailsel.setListKeyPos(emailsel.listKeyPos, false);
          }
        }
      } else {
        if (emailsel.listRequestID > 0) window.clearTimeout(emailsel.listRequestID);
        emailsel.listRequestID = window.setTimeout(function(){
          emailsel.listExec();
        }, 300);
      }
    }
  },
  
  listExec: function () {
    if ($('emailsel_suche') && $('emailsel_suche_tmp') && $('emailsel_selection') && $('emailsel_firmenID')) {
      if ($('emailsel_suche').value != $('emailsel_suche_tmp').value) {
        $('emailsel_suche_tmp').value = $('emailsel_suche').value;
        new Ajax.Request('ajax/srv/emailselection.php?t=showEmailAddressList', {
          postBody: 'search='+encodeURIComponent($('emailsel_suche').value)+
                    '&firmenID='+encodeURIComponent($('emailsel_firmenID').value),
          onComplete: function (t) {
            emailsel.listRequestID = 0;
            emailsel.listKeyPos = -1;
            emailsel.pressedKeys = [];
            var json = t.responseText.evalJSON();
            $('emailsel_selection').innerHTML = json.content;
          }
        });
      } else {
        emailsel.listRequestID = 0;
      }
    }
  },
  
  set: function (mailstr) {
    if ($('emailsel_mailaddresses')) {
      var i,
          len,
          addrArr = [];
      var strSplit = $('emailsel_mailaddresses').value.split(';');
      for (i = 0, len = strSplit.length; i < len; i++) {
        if (!strSplit[i].blank()) {
          addrArr[addrArr.length] = strSplit[i];
        }
      }
      var in_array = false;
      for (i = 0, len = addrArr.length; i < len; i++) {
        if (addrArr[i] == mailstr) {
          in_array = true;
        }
      }
      if (!in_array)
        addrArr[addrArr.length] = mailstr;
      var joinArr = addrArr.join(';');
      if (joinArr != $('emailsel_mailaddresses').value) {
        $('emailsel_mailaddresses').value = joinArr;
        emailsel.showResultList();
      }
    }
  },
  
  save: function () {
    if ($('emailsel_mailaddresses') && $(emailsel.targetID))
      $(emailsel.targetID).value = unescape($('emailsel_mailaddresses').value.replace(/;/g, emailsel.separator));
    emailsel.hide();
  },
  
  setListKeyPos: function (posi, mouseaction) {
    emailsel.listKeyPos = posi;
    var childs = $$('#emailsel_mailaddressSelectionUL li.emailsel_mailLI');
    for (var i = 0, len = childs.length; i < len; i++) {
      childs[i].setStyle({'background': 'none'});
    }
    if (childs[emailsel.listKeyPos]) {
      childs[emailsel.listKeyPos].setStyle({'background': '#C3D7DF'});
      if (!mouseaction) {
        var offsetArr = childs[emailsel.listKeyPos].positionedOffset();
        $('emailsel_selection').scrollTop = offsetArr[1];
      }
    }
  },
  
  showResultList: function () {
    if ($('emailsel_mailaddresses') && $('emailsel_resultList')) {
      new Ajax.Request('ajax/srv/emailselection.php?t=showResultList', {
        postBody: 'resultList='+encodeURIComponent($('emailsel_mailaddresses').value),
        onComplete: function (t) {
          var json = t.responseText.evalJSON();
          $('emailsel_resultList').innerHTML = json.content;
        }
      });
    }
  },
  
  removeMailAddress: function (mailstr) {
    if ($('emailsel_mailaddresses')) {
      var i,
          len,
          addrArr = [],
          strSplit = $('emailsel_mailaddresses').value.split(';');
      for (i = 0, len = strSplit.length; i < len; i++) {
        if (unescape(strSplit[i]) != unescape(mailstr)) {
          addrArr[addrArr.length] = strSplit[i];
        }
      }
      $('emailsel_mailaddresses').value = addrArr.join(';');
      emailsel.showResultList();
    }
  }
  
};

function mail_vorlageSelectionShowInfo(nr, basename, targetID)
{
  if ($(targetID)) {
    new Ajax.Request('ajax/srv/emailselection.php?t=getVorlageInfoText', {
      postBody: 'basename='+encodeURIComponent(basename)+
                '&nr='+encodeURIComponent(nr),
      onComplete: function (t) {
        var json = t.responseText.evalJSON();
        $(targetID).innerHTML = json.content;
      }
    });
  }
}
