  function getElementById(ID) { return document.getElementById(ID); }

  function getValueById(ID) { return document.getElementById(ID).value; }

  function MM_swapImgRestore()
  { //v3.0
    var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
  }

  function MM_preloadImages()
  { //v3.0
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
      var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
      if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
  }

  function MM_findObj(n, d)
  { //v4.0
    var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
      d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && document.getElementById) x=document.getElementById(n); return x;
  }

  function MM_swapImage()
  { //v3.0
    var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
     if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
  }

  function is_email_valid(email_str)
  {
    return (email_str.search(/[a-zA-Z0-9_][a-zA-Z0-9_-]*@([a-zA-Z0-9_-]+\.)*[a-zA-Z0-9_-]+/i)>=0);
  }

  function is_login_valid(login_str)
  {
    return (login_str.search(/[a-z][a-z]+/i)>=0);
  }

  function is_empty_str(str)
  {
    return (str.toString().replace(/ +/i,"")=="");
  }

  function findPosX(obj)
  {
    var curleft = 0;
    if (obj.offsetParent)
    {
      while (obj.offsetParent)
      {
        curleft += obj.offsetLeft;
        obj = obj.offsetParent;
      }
    }
    else if (obj.x)
      curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if (obj.offsetParent)
    {
      while (obj.offsetParent)
      {
        curtop += obj.offsetTop;
        obj = obj.offsetParent;
      }
    }
    else if (obj.y)
      curtop += obj.y;
    return curtop;
  }

  function get_mod_actions(id_mod, id_label)
  {
    if (id_mod==0)
    {
      document.getElementById("label_v_"+id_label).style.display  = "none";
      document.getElementById("label_vt_"+id_label).style.display = "block";
    }
    else
    {
      document.getElementById("label_vt_"+id_label).style.display = "none";
      List = document.getElementById("label_v_"+id_label);
      for(i=0;i<List.size;i++)
      {
      }
      alert(mod_actions[id_mod].length);
      document.getElementById("label_v_"+id_label).style.display  = "block";
    }
  }

  function ShowWin(url, namew, w, h)
  {
    if (!w) w = 800;
    if (!h) h = 600;

    if (!namew) namew = 'wempty';

    window.open(url, namew, "width="+w+",height="+h+",resizable=yes,status=no,dependent=no,scrollbars=yes");
  }

  function Cur(s)
  {
    s.style.cursor="hand";
  }

  function isDel()
  {
    if (confirm("Вы действительно хотите удалить запись?"))
      return true;
    else return false;
  }

/* * */

  var current = 0;

  function GetBG(ID)
  {
    preLoad = new Image(); preLoad.src = "./templates/img/bg_1.jpg";
    preLoad = new Image(); preLoad.src = "./templates/img/bg_2.jpg";
    preLoad = new Image(); preLoad.src = "./templates/img/bg_3.jpg";

    if (document.getElementById("link-"+current))
      document.getElementById("link-"+current).className = "";

    if (document.getElementById("link2-"+current))
      document.getElementById("link2-"+current).style.display = "none";

    if (document.getElementById("link-"+ID))
      document.getElementById("link-"+ID).className = "current";
    
    if (document.getElementById("main"))
      document.getElementById("main").className = "bg-"+ID;

    if (document.getElementById("link2-"+ID))
      document.getElementById("link2-"+ID).style.display = "inline";

    current = ID;
  }

  
//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.com
//
function getPageScroll(){

  var xScroll, yScroll;

  if (self.pageYOffset) {
    yScroll = self.pageYOffset;
    xScroll = self.pageXOffset;
  } else if (document.documentElement && document.documentElement.scrollTop){  // Explorer 6 Strict
    yScroll = document.documentElement.scrollTop;
    xScroll = document.documentElement.scrollLeft;
  } else if (document.body) {// all other Explorers
    yScroll = document.body.scrollTop;
    xScroll = document.body.scrollLeft; 
  }

  arrayPageScroll = new Array(xScroll,yScroll) 
  return arrayPageScroll;
}

// -----------------------------------------------------------------------------------

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.com
// Edit for Firefox by pHaez
//
function getPageSize(){
  
  var xScroll, yScroll;
  
  if (window.innerHeight && window.scrollMaxY) {  
    xScroll = window.innerWidth + window.scrollMaxX;
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    xScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
  } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    xScroll = document.body.offsetWidth;
    yScroll = document.body.offsetHeight;
  }
  
  var windowWidth, windowHeight;
  
//  console.log(self.innerWidth);
//  console.log(document.documentElement.clientWidth);

  if (self.innerHeight) { // all except Explorer
    if(document.documentElement.clientWidth){
      windowWidth = document.documentElement.clientWidth; 
    } else {
      windowWidth = self.innerWidth;
    }
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) { // other Explorers
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  } 
  
  // for small pages with total height less then height of the viewport
  if(yScroll < windowHeight){
    pageHeight = windowHeight;
  } else { 
    pageHeight = yScroll;
  }

//  console.log("xScroll " + xScroll)
//  console.log("windowWidth " + windowWidth)

  // for small pages with total width less then width of the viewport
  if(xScroll < windowWidth){  
    pageWidth = xScroll;    
  } else {
    pageWidth = windowWidth;
  }
//  console.log("pageWidth " + pageWidth)

  arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
  return arrayPageSize;
}

  //
  function ShowComment(IDObj, CloseText)
  {
    Text = document.getElementById(IDObj).innerHTML;

    PageSize   = getPageSize();
    PageScroll = getPageScroll();

    document.getElementById("OverLay").style.height = PageSize[1] + "px";
    document.getElementById("OverLay").style.visibility = "visible";

    document.getElementById("OverImg").innerHTML = "<div id=\"OverText\">" + Text + "<div align=\"right\"><a href='JavaScript:HideComment();'>" + CloseText + "</a></div></div>";

    HText = document.getElementById(IDObj).offsetHeight;

    if (PageSize[3]>HText) TTop = (PageSize[3] - HText)/2; else TTop = 10;
    if (PageScroll[1]>0) TTop = TTop + PageScroll[1];

    document.getElementById("OverImg").style.top   = TTop + "px";
    document.getElementById("OverImg").style.visibility = "visible";
  }

  function HideComment()
  {
    document.getElementById("OverLay").style.visibility = "hidden";
    document.getElementById("OverImg").style.visibility = "hidden";
  }