function preload(){
	
  Function.prototype.bind=function(object){
      var method = this;
      return function() {
        return method.apply(object, arguments);}}
    document.getElementsByClassName=getElementsByClassName;
    var elements = document.getElementsByTagName('*');
   // alert(elements.length);
    for(var i=0;i<elements.length;i++){
      elements[i].getElementsByClassName=getElementsByClassName;
    }
}
        
function getElementsByClassName(ClassName){
    var colection=this.getElementsByTagName('*');
    var ClassColection=new Array;
    for(var i=0; i<colection.length; i++){
      if(colection[i].className.match(new RegExp("(^|\\s)" + ClassName + "(\\s|$)")))
        ClassColection[ClassColection.length]=colection[i];
    }
    return ClassColection;
  }

  var $MenuTimer = [];
  var $MenuVars = [];
  
  var $tact = 1;
  var $step = 100;

  function show($elem){
      if($MenuTimer[$elem.id]){
        clearInterval($MenuTimer[$elem.id]);
      }
      $MenuTimer[$elem.id] = setInterval(MOpen.bind($elem), $tact);
  }
  function hide($elem){
      if($MenuTimer[$elem.id]){
        clearInterval($MenuTimer[$elem.id]);
      }
      $MenuTimer[$elem.id] = setInterval(MClose.bind($elem), $tact);
  }
  function showSub($elem){
    if(parseInt($elem.parentNode.style.marginTop) == 0){
      if($MenuTimer[$elem.id]){
        clearInterval($MenuTimer[$elem.id]);
      }
      $MenuTimer[$elem.id] = setInterval(MOpenSub.bind($elem), $tact);
    }
  }
  function hideSub($elem){
    if($MenuTimer[$elem.id]){
      clearInterval($MenuTimer[$elem.id]);
    }
    $MenuTimer[$elem.id] = setInterval(MCloseSub.bind($elem), $tact);
  }

  function MOpen(){
    var $sub = this.getElementsByClassName('sub')[0];
    $sub.style.visibility = 'visible';
    if($sub.style.display != 'block'){
      $sub.style.display = 'block';
      $sub.style.marginTop = '1px';
      
    }
    var $top = parseInt($sub.style.marginTop) || 0; 
    if($top < 0){
      $top += $step;
      if($top<0)
        $top.toString();
      else
        $top = 0;
      $sub.style.marginTop = $top + 'px';
    }else{
      clearInterval($MenuTimer[this.id]);
    }
  }
  function MClose(){
    var $sub = this.getElementsByClassName('sub')[0];
    var $top = parseInt($sub.style.marginTop) || 0; 
    if($top > (0 - $sub.offsetHeight)){
      $top -= $step;
      $top.toString();
      $sub.style.marginTop = '0px';
    }else{
      clearInterval($MenuTimer[this.id]);
    }
    $sub.style.display = 'none';
  }