  var subWin = null;
  var iterX = 0;
  var aX = 10;
  var iterY = 0;
  var aY = 0;
  var oInterval = "";
  var pbx = 0;
  var pby = 0;
  var sbx = 0;
  var sby = 0;
  var sex = 0;
  var sey = 0;
  var obx = -180;
  var oby = -90;
  var oex = 180;
  var oey = 90;
  var sel = 0;
  var mh = 300;
  var mw = 600;
  var xmlType = 0;

  var mapDef1 = "/deegree/deegreewms?WMTVER=1.0.0&REQUEST=map&SRS=EPSG:4326";
  var mapDef2 = "&BBOX=-180,-90,180,90";
  var mapDef3 = "&WIDTH=600&HEIGHT=300";
  var mapDef4 = "&LAYERS=world,Rivers,Lakes,WorldBorder";
  var mapDef5 = "&STYLES=default,rivers,lakes,wb";
  var mapDef6 = "&FORMAT=jpg&BGCOLOR=0xfff8ff&TRANSPARENT=FALSE&EXCEPTIONS=INIMAGE";
  var mapDef7 = "";

  var mapSrc  = "";
  var mapSrc1 = mapDef1;
  var mapSrc2 = mapDef2;
  var mapSrc3 = mapDef3;
  var mapSrc4 = mapDef4;
  var mapSrc5 = mapDef5;
  var mapSrc6 = mapDef6;
  var mapSrc7 = mapDef7;

  function setDate(){
    if(document.request.by.value!="") return;
    d = new Date();
    document.request.by.value = d.getUTCFullYear();
    document.request.ey.value = d.getUTCFullYear();
    m = d.getUTCMonth() + 1;
    if(m<10) m = "0" + m;
    n = d.getUTCDate();
    if(n<10) n = "0" + n;
    h = d.getUTCHours();
    he = h;
    h = (h/3)-0.5;
    h = Math.round(h);
    h = h*3;
//    h = h-6;
    if(h<10) h = "0" + h;
    if(he<10) he = "0" + he;
    document.request.bd.value = m + "-" + n + " " + h  + ":00";
    document.request.ed.value = m + "-" + n + " " + he + ":59";
    oDiv.filters[0].addAmbient(255, 255, 255, 100);
  }
  function bases(){
    document.URL="count.html";
  }
  function setBounds(){
//    oXmlDoc.src = "ServerXml.jsp";
  }
  function parceXml(){
    if(xmlType==0) setBoundsFilds();
    if(xmlType==1) setElemList();
  }
  function setBoundsFilds(){
    tNode = oXmlDoc.XMLDocument.selectSingleNode("XML/RECT/MinLat");
    oby = tNode.text/1;
    tNode = oXmlDoc.XMLDocument.selectSingleNode("XML/RECT/MinLon");
    obx = tNode.text/1;
    tNode = oXmlDoc.XMLDocument.selectSingleNode("XML/RECT/MaxLat");
    oey = tNode.text/1;
    tNode = oXmlDoc.XMLDocument.selectSingleNode("XML/RECT/MaxLon");
    oex = tNode.text/1;
  }
  function imageBegPoint(x,y,im){
//    alert("Point " + x + " - " + y);
    sel = 1;
    pbx = x;
    pby = y;
    document.request.mbx.value=subStr(obx+x/mw*(oex-obx));
    sbx = subStr(obx+x/mw*(oex-obx));
    document.request.mby.value=subStr(oby+(mh-y)/mh*(oey-oby));
    sby = subStr(oby+(mh-y)/mh*(oey-oby));
    im.style.cursor='crosshair'
//    document.request.submit();
  }
  function imageEndPoint(x,y){
//    alert("Point " + x + " - " + y);
    document.request.mex.value=subStr(obx+x/mw*(oex-obx));
    sex = subStr(obx+x/mw*(oex-obx));
    document.request.mey.value=subStr(oby+(mh-y)/mh*(oey-oby));
    sey = subStr(oby+(mh-y)/mh*(oey-oby));
    oDiv.style.cursor='crosshair'
//    fnInit();
//    document.request.submit();
  }
  function fnInit(){
    var iX2=oDiv.offsetWidth;
    var iY2=oDiv.offsetHeight;
    oDiv.filters[0].addAmbient(0, 255, 0, 50);
    oDiv.filters[0].addCone(document.request.bx.value,document.request.by.value,1,
                            document.request.ex.value,document.request.ey.value,
                            255,255,255,50,10);
  }

  function select(px,py){
    oDiv.filters[0].clear();
    oDiv.filters[0].addAmbient(255, 255, 255, 100);
    oDiv.filters[0].addPoint(pbx, pby, 1, 255, 255, 255, 100);
    oDiv.filters[0].addPoint(pbx+(px-pbx)/2, pby, 1, 255, 255, 255, 100);
    oDiv.filters[0].addPoint(pbx, py, 1, 255, 255, 255, 300);
    oDiv.filters[0].addPoint(pbx+(px-pbx)/2, py, 1, 255, 255, 255, 300);
    oDiv.filters[0].addPoint(px, pby, 1, 255, 255, 255, 300);
    oDiv.filters[0].addPoint(px, pby+(py-pby)/2, 1, 255, 255, 255, 300);
    oDiv.filters[0].addPoint(px, py, 1, 255, 255, 255, 300);
    oDiv.filters[0].addPoint(pbx, pby+(py-pby)/2, 1, 255, 255, 255, 300);
  }

  function over(x,y){
    cpx.value=subStr(obx+x/mw*(oex-obx));
    cpy.value=subStr(oby+(mh-y)/mh*(oey-oby));
  }
  function subStr(wr){
    var i = wr.toString().indexOf(".");
    if(i!=-1) {
      i += 3;
      wr = wr.toString().substring(0, i);
    }
    return wr.toString();
  }
  function mEnter(){
    sel=0;
    oDiv.filters[0].clear();
    oDiv.filters[0].addAmbient(255, 255, 255, 100);
  }
  function scale(){
    var ch = false;
    var feat = "";
    var wr;
    mapSrc2 = getExt();
    mapSrc4 = mapDef4;
    mapSrc5 = mapDef5;

    var len = document.request.tbl.length;
    for(i=0;i<len;i++){
      var obj = document.request.tbl[i];
      var val = obj.value.toString();
      if (obj.checked){
//        alert(obj.value);
        var k = val.indexOf(";");
        var lay = val.substring(0, k);
        mapSrc4 += "," + lay;
        var l = val.indexOf("#");
        mapSrc5 += "," + val.substring(k+1, l);
        if(ch) feat += "*";
        var j = val.indexOf("$");
        if(j==-1) feat += lay + ";" + val.substring(l+1);
        else feat += lay + ";" + val.substring(l+1,j) + ";period," + getSelDate();
        wr = document.request.st_id.value;
        if(wr!=""){
          if(j==-1) feat += ";cond,Station_ID%3D'" + wr + "'";
          else      feat += "$cond,Station_ID%3D'" + wr + "'";
        }
        ch = true;
      }
    }
    if(ch) mapSrc7 = "&FEATUREFILTER=" + feat;
    else mapSrc7 = mapDef7;



//    mapSrc7 = "&FEATUREFILTER=catalog;GTS.V_VOL9A*hmdata;synopi;period;" + getSelDate();

    mapSrc = mapSrc1 + mapSrc2 + mapSrc3 + mapSrc4 + mapSrc5 + mapSrc6 + mapSrc7;
//    outMes(mapSrc);
    oDiv.filters[0].clear();
    oDiv.filters[0].addAmbient(255, 255, 255, 100);
    map.src = mapSrc;
    obx = sbx;
    oby = sby;
    oex = sex;
    oey = sey;
    sel=0;
  }
  function getExt(){
    var sw;
    var sh;
    var tx;
    var ty;
    var wr;
    var dx, dy, dxy;
    sbx = document.request.mbx.value/1;
    sby = document.request.mby.value/1;
    sex = document.request.mex.value/1;
    sey = document.request.mey.value/1;
    if(sbx>sex){
      wr = sbx;
      sbx = sex;
      sex = wr;
    }
    if(sby>sey){
      wr = sby;
      sby = sey;
      sey = wr;
    }

    dx = sex-sbx;
    dy = (sey-sby)*2;
    if(dx>dy){
      dxy = dx-dy;
      sby = sby-dxy/4;
      sey = sey+dxy/4;
    }else{
      dxy = dy-dx;
      sbx = sbx-dxy/2;
      sex = sex+dxy/2;
    }
    document.request.mbx.value = sbx;
    document.request.mby.value = sby;
    document.request.mex.value = sex;
    document.request.mey.value = sey;


    return "&BBOX=" + sbx + "," + sby + "," + sex + "," + sey;
  }
  function getSelDate(){
    return document.request.by.value + "-" +
           document.request.bd.value + "," +
           document.request.ey.value + "-" +
           document.request.ed.value;
  }


  function observ(){
    var tbName;

    xmlType = 0;
    var coll = document.request.type.options;
    parmLen = coll.length;
//    alert("Parms length: " + parmLen);
    for(i=0;i<parmLen;i++){
      if(coll(i).selected == true){
        tbName = coll(i).value;
        break;
      }
    }
    adr = "ServerObserv.jsp?by=" + document.request.by.value +
                          "&ey=" + document.request.ey.value +
                          "&bd=" + document.request.bd.value +
                          "&ed=" + document.request.ed.value +
                          "&table=" + tbName +
                          "&" + getExt();
    map.src = adr;
    oDiv.filters[0].clear();
    oDiv.filters[0].addAmbient(255, 255, 255, 100);
  }
  function data(){
    var adr="data.jsp?by=" + document.request.by.value +
                    "&ey=" + document.request.ey.value +
                    "&bd=" + document.request.bd.value +
                    "&ed=" + document.request.ed.value +
                    "&" + getExt();
//    alert("Adr " + adr);
    document.request.ext.value = getExt().substring(4);
    document.request.action = "data.jsp";
    document.request.submit();
  }
  function reset(){
    xmlType = 0;
    oDiv.filters[0].clear();
    oDiv.filters[0].addAmbient(255, 255, 255, 100);
    map.src = "ServerJpeg.jsp";
    pbx = 0;
    pby = 0;
    sbx = 0;
    sby = 0;
    sex = 0;
    sey = 0;
    sel = 0;
  }
  function newMap(){
    xmlType=2;
    oDiv.filters[0].clear();
    oDiv.filters[0].addAmbient(255, 255, 255, 100);
    map.src = mapDef1 + mapDef2 + mapDef3 + mapDef4 + mapDef5 + mapDef6 + mapDef7;

    pbx = 0;
    pby = 0;
    sbx = 0;
    sby = 0;
    sex = 0;
    sey = 0;
    sel = 0;
    obx = -180;
    oby = -90;
    oex = 180;
    oey = 90;
    document.request.mby.value ="-90.0";
    document.request.mey.value ="90.0";
    document.request.mbx.value ="-180.0";
    document.request.mex.value ="180.0";
  }
  function setElem(){
    var req = "elems.jsp?sel=";
    for(i=0;i<document.request.type.options.length;i++){
      req += document.request.type.options(i).selected + ";"
    }
    xmlType = 1;
    oXmlDoc.src = req;
  }
  function setElemList(){
    var name;
    var value;
    var parmLen;
    var coll;
    var oOption

    coll = document.request.parms.options;
    parmLen = coll.length;
//    alert("Parms length: " + parmLen);
    for(i=0;i<parmLen;i++){
      document.request.parms.options(0).removeNode(true);
    }
    var oNodeList = oXmlDoc.XMLDocument.getElementsByTagName("Elem");
    for(i=0;i<oNodeList.length;i++){
      name = oNodeList.item(i).selectSingleNode("Name").text;
      value = oNodeList.item(i).selectSingleNode("Value").text;
      oOption = document.createElement("OPTION");
      coll.add(oOption);
      oOption.innerText = name;
      oOption.value = value;
      if(i==0) oOption.selected = true;
    }
    if(coll.length==0){
      oOption = document.createElement("OPTION");
      coll.add(oOption);
      oOption.innerText = "Нет общих параметров в наблюдениях";
      oOption.value = "null";
    }
  }
  function getData(pg){
    if(subWin!=null){
      if(!subWin.closed) subWin.close();
    }
    subWin = document.open(pg,"_blank","status=yes,toolbar=no,menubar=no,location=no,resizable=yes");
//    outMes(subDoc.name);
  }

  function subRefer(txt){
    alert(txt);
  }

  function outMes(txt){
    alert(txt);
  }