
  function $(id) {
          return document.getElementById(id);
  }



  function addHandler(object, event, handler) {
          if (typeof object.addEventListener != 'undefined')
              object.addEventListener(event, handler, false);
          else if (typeof object.attachEvent != 'undefined')
              object.attachEvent('on' + event, handler);
          else
             throw 'Incompatible browser';
  }


  function removeHandler(object, event, handler) {
          if (typeof object.removeEventListener != 'undefined')
              object.removeEventListener(event, handler, false);
          else if (typeof object.detachEvent != 'undefined')
              object.detachEvent('on' + event, handler);
          else
              throw 'Incompatible browser';
  }


  function setCookie(name, value, expire) {
          var exdate = new Date();

          exdate.setDate(exdate.getDate() + expire);
          document.cookie = name + '=' + escape(value) + 
              ((expire == null) ? '' : ';expires=' + exdate.toGMTString()) + 
              ((domain == null) ? '' : ';domain=' + domain);
  }


  function getCookie(name) {
          if (document.cookie.length > 0) {
              start = document.cookie.indexOf(name + '=');
              if (start != -1) { 
                  start = start + name.length + 1; 
                  end = document.cookie.indexOf(';', start);

                  if (end == -1) end = document.cookie.length;
                  return unescape(document.cookie.substring(start, end));
              } 
          }

          return '';
  }



  var marked_row = [];
  var marked_count = 0;
  var preloaded = new Array();


  function Marked(id) {
          if (marked_row[id]) { 
              marked_row[id] = false;
              marked_count = marked_count - 1;

          } else if (typeof(marked_row[id]) == 'undefined' || !marked_row[id] ){
              marked_row[id] = true;
              marked_count++;
          }

          ToolbarButtonStatus();

  }


  function ToolbarButtonStatus() {
            if (marked_count) {
                document.getElementById('toolbar-edit').disabled = false;
                document.getElementById('toolbar-delete').disabled = false;
            } else {
                document.getElementById('toolbar-edit').disabled = true;
                document.getElementById('toolbar-delete').disabled = true;
            }

            return true;
  }


  function go(container_id, module, action, section) {

          var f = document.getElementById(container_id);
          var url = '/index.php?module=' + module +'&action='+ action;

          if (section) {
              url = url + '&menu_section=' + section;
          }

          if (marked_count) {

              if (action == 'Edit') {
                  if (marked_count > 1) { 
                      alert('Выберите только одну запись!'); 
                      return false;
                  }


              } else if (action == 'Delete') {
                  var r = confirm('Действительно удалить?');
                  if (r == false) return false;
              }

          } else {
              alert('Выберите запись!'); 
              return false;
          }

          f.setAttribute('action', url);
          f.submit();

          return true;
  }




  function unMarkAllRows(container_id) {
          var rows = document.getElementById(container_id).getElementsByTagName('tr');
          var unique_id;
          var checkbox;

          for (var i=0; i<rows.length; i++) {
              checkbox = rows[i].getElementsByTagName('input')[0];

              if (checkbox && checkbox.type == 'checkbox') {
                  unique_id = checkbox.name + checkbox.value;
                  checkbox.checked = false;
                  rows[i].className = rows[i].className.replace(' marked', '');
                  marked_row[unique_id] = false;
                  marked_count = marked_count - 1;
              }
          }
          //ToolbarButtonStatus();

      return true;
  }


  function markAllRows(container_id) {
          var rows = document.getElementById(container_id).getElementsByTagName('tr');
          var unique_id;
          var checkbox;

          for (var i=0; i<rows.length; i++) {

              checkbox = rows[i].getElementsByTagName( 'input' )[0];

              if ( checkbox && checkbox.type == 'checkbox' ) {
                  unique_id = checkbox.name + checkbox.value;
                  if ( checkbox.disabled == false ) {
                      checkbox.checked = true;
                      if ( typeof(marked_row[unique_id]) == 'undefined' || !marked_row[unique_id] ) {
                          rows[i].className += ' marked';
                          marked_row[unique_id] = true;
                          marked_count++;
                      }
                  }
              }
          }
          //ToolbarButtonStatus();

          return true;
  }



  function WinOpen(href, width, height) {
          window.open(href,'z','width='+ width +',height='+ height +',toolbar=0,scrollbars=0,resizable=1,menubar=0,status=0,directories=0,target=0,location=0');
          return false;
  }


  function PreloadImages() {
          for (var i=0; i<arguments.length; i++) {
              preloaded[i] = document.createElement('img');
              preloaded[i].setAttribute('src', arguments[i]);
          };
  };


  function translit(str) {
          var LettersFrom = "абвгдезиклмнопрстуфыэйхё";
          var LettersTo   = "abvgdeziklmnoprstufyejxe";
          var Consonant = "бвгджзйклмнпрстфхцчшщ";
          var Vowel = "аеёиоуыэюя";
          var BiLetters = {  
            "ж" : "zh", "ц" : "ts",  "ч" : "ch", 
            "ш" : "sh", "щ" : "sch", "ю" : "ju", "я" : "ja"
                          };

          str = str.replace( /[_\s\.,?!\[\](){}]+/g, "_");
          str = str.replace( /-{2,}/g, "--");
          str = str.replace( /_\-+_/g, "--");

          str = str.toLowerCase();


          //here we replace ъ/ь 
          str = str.replace( 
             new RegExp( "(ь|ъ)(["+Vowel+"])", "g" ), "j$2");
          str = str.replace( /(ь|ъ)/g, "");

          //transliterating
          var _str = "";
          for( var x=0; x<str.length; x++)
           if ((index = LettersFrom.indexOf(str.charAt(x))) > -1)
            _str+=LettersTo.charAt(index);
           else
            _str+=str.charAt(x);
          str = _str;

          var _str = "";
          for( var x=0; x<str.length; x++)
           if (BiLetters[str.charAt(x)])
            _str+=BiLetters[str.charAt(x)];
           else
            _str+=str.charAt(x);
          str = _str;

          str = str.replace( /j{2,}/g, "j");

          str = str.replace( new RegExp( "[^0-9a-z_\\-]+", "g"), "");

          return str;
  }

  function post_request(action, data) {
          var form = document.createElement('form');
          form.action = action;
          form.method = 'post';
          if (data) {
          // if post empty
          } else {
              var input = document.createElement('input');
              input.setAttribute('type', 'hidden');
              input.setAttribute('name', 'post');
              input.setAttribute('value', 'true');
              form.appendChild(input);
          }
          document.body.appendChild(form);
          form.submit();
          return true;
  }
