function E(obj, evt, func) 
{
  if(obj[evt]) 
  {
    obj[evt]=function(f,g)
    {
      return function()
      {
        f.apply(this,arguments);
        return g.apply(this,arguments);
      };
    }(func, obj[evt]);
  }
  else 
    obj[evt]=func;
}

AutoSelector = function(txtId, cmbId)
{
  this.mappings = 
  [
    [1,["Техническая поддержка", "тех помощь", "техничиская поддержка"]],
    [2,["Администратор", "Модератор", "модер", "админ", "администрировать"]],
    [3,["Исследования", "Анализ", "анализировать"]],
    [4,["Менеджмент проектов", "управление проектами", "управление проектами"]],
    [5,  ["Консультант", "Диспетчер", "диспетчеры"]],
    [6,  ["Прочее администрирование", "администрирование"]],

    [7,  ["Обзоры", "Статьи", "статья", "статью", "текст", "авторы"]],
    [8,  ["Веб-контент", "Веб контент","контент", "контэнт", "тексты"]],
    [40, ["Рерайтинг", "Копирайтинг", "копирайт", "рерайт"]],
    [10, ["Набор текста", "набрать текст", "наборщик текстов", "набиратель текстов", "набор текстов", "набрать текст"]],
    [11, ["Переводы","сделать перевод","переводчик", "перевести текст","перевод", "переводов", "перевода"]],
    [41, ["Техн.переводы", "технический перевод", "технические переводы", "ENG-->RUS", "ENG to RUS"]],

    [13, ["Программирование игр", "игры"]],
    [14, ["базы данных", "БД", "SQL", "СУБД", "access", "oracle", "mysql", "базу данных"]],
    [15, ["WEB безопасность", "веб безопасность", "безопасность", "безопасность", "хакера", "хакер"]],
    [42, ["Java", "PDA", "Pocket PC", "iPhone", "яблокофон", "Android"]],
    [17, ["Скрипты", "web-приложений", "Web-приложения", "ява", "PHP", "php", "ASP", "J2EE", "J2ME", "JSP", "AJAX", "програмист"]],
    [18, ["Прочее программирование", "Ruby", "Ruby on Rails", "ASP.NET", "программист", "программинг"]],

    [43, ["Линк Менеджер", "залинковать", "линки", "линковщик", "перелинковать"]],
    [9,  ["Постинг", "Реклама", "постер", "запостить"]],
    [29, ["Оптимизация", "SEO", "smo", "сеошник", "тиц", "вывод в топ", "PR", "топ", "поисковых", "поисковых системах"]],
    [44, ["Контекстная реклама", "адсэнс", "директ"]],
    [45, ["Рекламные кампании", "рекламная компания", "рекламные компании", "рекламную компанию", "рекламирования"]],
    [28, ["Продвижение", "Раскрутка", "расскрутить", "раскрутить", "прогон", "прогнать"]],

    [19, ["Логотипы", "Иконки", "Аватары", "Аватар", "иконок", "логотипов", "Разработка логотипа"]],
    [20, ["Полиграфический дизайн", "полиграфия", "Полиграфический"]],
    [22, ["Векторная графика", "в векторе", "векторная"]],
    [23, ["Рисунки", "Фотография", "ретушь", "отретушировать", "ретушер", "иллюстрации", "иллюстрацию", "аниматоров", "иллюстраторов", "ретуш", "фотографии", "ретушировать", "фото"]],
    [24, ["3-d графика", "2-d графика", "3d", "2d", "3dmax", "трехмерный"]],
    [46, ["Дизайн продукции/Прочее", "упаковки", "упаковка"]],

    [25, ["Веб-Дизайн", "веб дезигн", "веб дизайн", "создать сайт", "разработать сайт", "разработка сайта", "сайт-визитку", "Редизайн", "ре-дизайн"]],
    [26, ["HTML-верстка", "Сверстать", "переверстать", "css", "css2", "верстальщик"]],
    [27, ["Баннеры", "баннеров", "банерщик", "баннер", "банер"]],
    [47, ["UMI", "WordPress", "Joomla", "Bitrix", "NetCat", "cms"]],
    [48, ["Сайт под ключ", "подключ", "WEB-SITE", "WEB SITE"]],
    [49, ["Тестирование сайтов"]],

    [50, ["Flash-сайты", "флэш сайты", "флешевый"]],
    [52, ["Flash-графика", "флаш графика", "flash графика"]],
    [30, ["Flash Баннеры", "Flash-Баннеры"]],
    [53, ["Анимация", "анимировать", "анимировать", "флэш", "флеш"]],
    [16, ["Flash lite/Brew", "brew", "flash lite"]],
    [54, ["ActionScript", "Action Script", "Action-Script", "as3", "as2", "ас2"]],

    [31, ["Аудио/Видео/TV","для видео"]],
    [32, ["Защита информации", "защитить информацию"]],
    [55, ["Виртуальный Хостинг", "хостинг"]],
    [34, ["Обработка информации", "сортировщики", "отсортировать", "сортировать"]],
    [35, ["Работа на дому", "работать дома"]],
    [36, ["Другое/Прочее", "не по теме", "куплю", "продам"]]
  ];
  this.cmb = document.getElementById(cmbId);
  this.txt = document.getElementById(txtId);
  this.txt.selector = this;

}

AutoSelector.prototype = 
{
  textChangeEventHandler : function (t, a)
  {
    var sel = this.selector;
    if (!sel || !sel.cmb)
      return;

    var catId = -1;

    for(var i = 0; i < sel.mappings.length; i++)     
    { 
      for (var j = 0; j < sel.mappings[i][1].length; j++)
      {
         var text    = sel.txt.value.toLowerCase();
         var keyword = sel.mappings[i][1][j].toLowerCase();
         if (text.indexOf(keyword) >= 0)
           catId = sel.mappings[i][0];
      }
    }

    if (catId < 0) 
      return;

    for(var i = 0; i < sel.cmb.options.length; i++)
    {
      if (sel.cmb.options[i].value == catId)
      {
        sel.cmb.selectedIndex = i;
        return;
      }
    }
  },
  setUpEvents : function ()
  {
    E(this.txt, "onkeypress", this.textChangeEventHandler);
  }
}
