
  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 preloaded = new Array();




  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;
  }

