Event = (function() {
        // текущий номер обработчика
        var guid = 0
       
        function fixEvent(event) {
         // получить объект события
          event = event || window.event
         
          // один объект события может передаваться по цепочке разным обработчикам
          // при этом кроссбраузерная обработка будет вызвана только 1 раз
          if ( event.isFixed ) {
            return event
          }
          event.isFixed = true // пометить событие как обработанное
         
          // добавить preventDefault/stopPropagation для IE
          event.preventDefault = event.preventDefault || function(){this.returnValue = false}
          event.stopPropagation = event.stopPropagaton || function(){this.cancelBubble = true}
         
          // добавить target для IE
          if (!event.target) {
              event.target = event.srcElement
          }
         
          // добавить relatedTarget в IE, если это нужно
          if (!event.relatedTarget && event.fromElement) {
              event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
          }
         
          // вычислить pageX/pageY для IE
          if ( event.pageX == null && event.clientX != null ) {
              var html = document.documentElement, body = document.body;
              event.pageX = event.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
              event.pageY = event.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
          }
         
          // записать нажатую кнопку мыши в which для IE
          // 1 == левая; 2 == средняя; 3 == правая
          if ( !event.which && event.button ) {
              event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
          }
         
          return event
        }
       
        function commonHandler(event) {
          // вспомогательный универсальный обработчик
          event = fixEvent(event); 
          var handlers = this.events[event.type];
          for ( var g in handlers ) {
        
            var ret = handlers[g].call(this, event)
        
            if ( ret === false ) {
                event.preventDefault()
                event.stopPropagation()
            }
          }
        }
       
        return {
          add: function(elem, type, handler) {
            // добавить обработчик события
            // мм правим небольшой глюк Ие6 чтобы эта сука не текла
            if((elem.setInterval) && (elem != window.elem && !elem.frameElement)){
              elem = window;
            }
            //добавляем счетчик обработчиков
            if(!handler.guid){
              handler.guid = ++guid;
            }
            //
            if(!elem.events){
              elem.events = {}
              elem.handle = function (event){
                if(typeof(Event) !== "undefined"){
                  return commonHandler.call(elem,event);
                }
              }
            }
            if(!elem.events[type]){
              elem.events[type] = {}
              
              if(elem.addEventListener){
                elem.addEventListener( type, elem.handle, false)
              }
              else if (elem.attachEvent){
                elem.attachEvent('on' + type, elem.handle)
              }
            }
            elem.events[type][handler.guid] = handler;
          },
       
          remove: function(elem, type, handler) {
            // удалить обработчик события
            var handlers = elem.events && elem.events[type]  
            if (!handlers) return
           
            delete handlers[handler.guid]
           
            
            for(var any in handlers) return
            
            if (elem.removeEventListener)
              elem.removeEventListener(type, elem.handle, false)
            else if (elem.detachEvent)
              elem.detachEvent("on" + type, elem.handle)
           
            delete elem.events[type]
           
            
            for (var any in elem.events) return
            try {
              delete elem.handle
              delete elem.events 
            } catch(e) { // IE
              elem.removeAttribute("handle")
              elem.removeAttribute("events")
            }
          }
        }
      }())
simple={
  // возвращает массив парных елементов
  even: function(obj){ // obj - обьект
    var evenElements = [];
    for(i=0; i<obj.length;i++){
      if(i%2){
        evenElements.push(obj[i]);
      }
    }
    if (evenElements.length != 0) {
      return evenElements;
    }
    else return false;
  },
  // возвращает массив непарных элементов
  odd:function(obj){ // obj - обьект
    var oddElements = [];
    for(i=0; i<obj.length; i++){
      if(i%2){
      }
      else if(i == 0) oddElements.push(obj[i]);
      else oddElements.push(obj[i]);
    }
    if(oddElements.length != 0){
      return oddElements;
    }
    else return false;
  },
  // добавляет класс к элементу
  addClass:function(obj,newClassName){ // obj - обьект, newClassName - имя нового класса (строчка!) 
    if (typeof(obj) == 'array') {
      for (i = 0; i < obj.length; i++) {
        if ((obj[i].className != 'undefined') && (obj[i].className != '')) {
          var tmp = obj[i].className;
          obj[i].className = tmp + ' ' + newClassName;
        }
        else {
          obj[i].className = newClassName;
        }
      }
    }
    if (typeof(obj) == 'object') {
      if ((obj.className != 'undefined') && (obj.className != '')) {
          var tmp = obj.className;
          obj.className = tmp + ' ' + newClassName;
        }
        else {
          obj.className = newClassName;
        }
    }
  }
}