/**************************** MTV FUNCTIONS ****************************/
function maptreeview(tree,ichfm,ieo) {
  this.items=new Array();
  this.absoluteitems=new Array();
  this.paren=null;
  this.tree=tree;
  this.ichfm=(ichfm==undefined?true:ichfm); //initcheckedfrommap
  this.ieo=(ieo==undefined?false:ieo); //initextentoption
  this.name="mtv";
  this.i=0;
};

function addnodeblock(maptreeview,node,text,expand,checked) {
  if (node==null) maptreeview.items[maptreeview.items.length]=this; else node.items[node.items.length]=this;
  maptreeview.absoluteitems[maptreeview.absoluteitems.length]=this;
  this.block=true;
  this.paren=(node==null?maptreeview:node);
  this.level=(node==null?0:node.level+1);
  this.absoluteindex=maptreeview.i++;
  this.text=text;
  this.items=new Array();
  this.expanded=expand;
  this.checked=(checked==undefined?1:checked);
};

function addnodelayer(maptreeview,node,text,layerindex,vi,se,la,tr) {
  if (node==null) maptreeview.items[maptreeview.items.length]=this; else node.items[node.items.length]=this;
  maptreeview.absoluteitems[maptreeview.absoluteitems.length]=this;
  this.block=false;
  this.paren=(node==null?maptreeview:node);
  this.level=(node==null?0:node.level+1);
  this.absoluteindex=maptreeview.i++;
  this.text=text;
  this.layerindex=layerindex;
  this.vi=(vi==undefined?0:vi);
  this.se=(se==undefined?0:se);
  this.la=(la==undefined?0:la);
  this.tr=(tr==undefined?0:tr);
};

function writenodeblock(maptreeview,nodestate,node) {
  var i, n, s="";
  if (maptreeview.tree) {
    node.state=nodestate;
    if (node.level>0) {
      n=node.paren;
      while (n.paren!=null) {
        s="<img src='/images/tv"+(n.paren.items[n.paren.items.length-1]==n?"blank":"i")+".gif' width='19' height='20' align='absmiddle'>"+s;
        n=n.paren;
      };
    };
    s+="<img src='/images/tv"+nodestate+(node.expanded==1?"m":"p")+".gif'"+nameid("i"+node.absoluteindex)+"width='19' height='20' align='absmiddle' onclick='clicknodeblock("+maptreeview.name+","+node.absoluteindex+")'>";
  };
  maptreeview.document.write("<nobr>"+s+"<input type='checkbox'"+nameid("cbb"+node.absoluteindex)+(node.checked==1?"checked ":"")+"title='Viditelnost skupiny' onclick='cbclick("+node.absoluteindex+")'>&nbsp;"+node.text+"</nobr><br>");
  if (node.items.length==0) return;

  maptreeview.document.write("<div"+nameid("b"+node.absoluteindex)+"style='display:"+(node.expanded==1?"":"none")+"'>");
  for (i=0;i<node.items.length;i++) {
    if (node.items[i].block) {
      if (i<node.items.length-1) writenodeblock(maptreeview,"t",node.items[i]);
      else writenodeblock(maptreeview,"l",node.items[i]);
    } else {
      if (i<node.items.length-1) writenodelayer(maptreeview,"t",node.items[i]);
      else writenodelayer(maptreeview,"l",node.items[i]);
    };
  };
  maptreeview.document.write("</div>");
};

function writenodelayer(maptreeview,nodestate,node) {
  var i, n, s="";
  if (maptreeview.tree) {
    if (node.level>0) {
      n=node.paren;
      while (n.paren!=null) {
        s="<img src='/images/tv"+(n.paren.items[n.paren.items.length-1]==n?"blank":"i")+".gif' width='19' height='20' align='absmiddle'>"+s;
        n=n.paren;
      };
    };
    s+="<img src='/images/tv"+nodestate+".gif' width='19' height='20' align='absmiddle'>";
  };
  maptreeview.document.write("<nobr>"+s+
    "<input type='checkbox'"+nameid("cbvi"+node.absoluteindex)+(node.vi==1?"checked ":"")+"title='Viditelnost' onclick='cbclick()'>"+
    "<input type='checkbox'"+nameid("cbse"+node.absoluteindex)+(node.se==1?"checked ":"")+"title='Vybíratelnost' onclick='cbclick()' style='display:"+(maptreeview.ieo?"":"none")+"'>"+
    "<input type='checkbox'"+nameid("cbla"+node.absoluteindex)+(node.la==1?"checked ":"")+"title='Popis' onclick='cbclick()' style='display:"+(maptreeview.ieo?"":"none")+"'>"+
    "<input type='checkbox'"+nameid("cbtr"+node.absoluteindex)+(node.tr==1?"checked ":"")+"title='Průhlednost' onclick='cbclick()' style='display:"+(maptreeview.ieo?"":"none")+"'>"+
    "&nbsp;"+node.text+"</nobr><br>");
};

function writemaptreeview(document,maptreeview) {
  var i;
  if (maptreeview.items.length==0) return;
  maptreeview.document=document;
  for (i=0;i<maptreeview.items.length;i++) {
    if (maptreeview.items[i].block) {
      if (maptreeview.items.length==1) {
        writenodeblock(maptreeview,"_",maptreeview.items[i]);
      } else {
        /*if (i==0) writenodeblock(maptreeview,"f",maptreeview.items[i]);*/
        /*else*/ if (i<maptreeview.items.length-1) writenodeblock(maptreeview,"t",maptreeview.items[i]);
        else writenodeblock(maptreeview,"l",maptreeview.items[i]);
      };
    } else {
      if (maptreeview.items.length==1) {
        writenodelayer(maptreeview,"_",maptreeview.items[i]);
      } else {
        /*if (i==0) writenodelayer(maptreeview,"f",maptreeview.items[i]);*/
        /*else*/ if (i<maptreeview.items.length-1) writenodelayer(maptreeview,"t",maptreeview.items[i]);
        else writenodelayer(maptreeview,"l",maptreeview.items[i]);
      };
    };
  };
};

function clicknodeblock(maptreeview,index) {
  var i, n;
  for (i=0;i<maptreeview.absoluteitems.length;i++) if (maptreeview.absoluteitems[i].absoluteindex==index) {
    n=maptreeview.absoluteitems[i];
    n.expanded=(n.expanded==1?0:1);
    if (n.items.length>0) getstyle(maptreeview.document,"b"+index).display=(n.expanded==1?"":"none");
    getobject(maptreeview.document,"i"+index).src="/images/tv"+n.state+(n.expanded==1?"m":"p")+".gif";
    return;
  };
};

function maptreeviewexpand(maptreeview,expand) {
  var i, n;
  for (i=0;i<maptreeview.absoluteitems.length;i++) if (maptreeview.absoluteitems[i].block) {
    n=maptreeview.absoluteitems[i];
    if (n.expanded==expand) continue;
    if (n.items.length>0) getstyle(maptreeview.document,"b"+i).display=(expand?"":"none");
    getobject(maptreeview.document,"i"+i).src="/images/tv"+n.state+(expand?"m":"p")+".gif";
    n.expanded=expand;
  };
};

function maptreeviewshowall(maptreeview,show) {
  var i, n;
  for (i=0;i<maptreeview.absoluteitems.length;i++) {
    if (maptreeview.absoluteitems[i].block) n="b"; else n="vi";
    getobject(maptreeview.document,"cb"+n+i).checked=show;
  };
};

function maptreeviewextcheckbox(maptreeview,ext) {
  var i, n;
  for (i=0;i<maptreeview.absoluteitems.length;i++) {
    if (maptreeview.absoluteitems[i].block) continue;
    getstyle(maptreeview.document,"cbse"+i).display=(ext?"":"none");
    getstyle(maptreeview.document,"cbla"+i).display=(ext?"":"none");
    getstyle(maptreeview.document,"cbtr"+i).display=(ext?"":"none");
  };
};

function maptreeviewtoform(maptreeview,document,formname) {
  var i, n, s="", c=",", a='"', f;
  for (i=0;i<maptreeview.absoluteitems.length;i++) {
    n=maptreeview.absoluteitems[i];
    if (n.block) {
      s+="b"+c+n.absoluteindex+c+(n.paren==maptreeview?"null":n.paren.absoluteindex)+c+a+n.text+a+c+n.expanded+c+n.checked+c;
    } else {
      s+="l"+c+(n.paren==maptreeview?"null":n.paren.absoluteindex)+c+a+n.text+a+c+n.layerindex+c+n.vi+c+n.se+c+n.la+c+n.tr+c;
    };
  };
  f=getobject(document,formname);
  f.maptreeview.value=maptreeview.tree+c+maptreeview.ichfm+c+maptreeview.ieo+c+s;
};

function maptomaptreeviewinit(map,maptreeview) {
  var i, j, n;
  if ((map.layers.length==0) || (maptreeview.absoluteitems.length==0)) return;
  for (i=0;i<maptreeview.absoluteitems.length;i++) {
    n=maptreeview.absoluteitems[i]; if (n.block) continue;
    for (j=0;j<map.layers.length;j++) if (map.layers[j].index==n.layerindex) {
      getobject(maptreeview.document,"cbvi"+i).checked=ns(map.layers[j].vi);
      getobject(maptreeview.document,"cbse"+i).checked=ns(map.layers[j].se);
      getobject(maptreeview.document,"cbla"+i).checked=ns(map.layers[j].la);
      getobject(maptreeview.document,"cbtr"+i).checked=ns(map.layers[j].tr);
      break;
    };
  };
};

function maptreeviewtomap(maptreeview,map) {
  var i, j, n, nb, vi;
  if ((map.layers.length==0) || (maptreeview.absoluteitems.length==0)) return;
  for (i=0;i<maptreeview.absoluteitems.length;i++) {
    n=maptreeview.absoluteitems[i]; if (n.block) continue;
    vi=getobject(maptreeview.document,"cbvi"+i).checked;
    if (vi && (n.level>0)) {
      nb=n.paren;
      while (vi && (nb.paren!=null)) {
        vi=getobject(maptreeview.document,"cbb"+nb.absoluteindex).checked;
        nb=nb.paren;
      };
    };
    for (j=0;j<map.layers.length;j++) if (map.layers[j].index==n.layerindex) {
      map.layers[j].vi=sn(vi);
      map.layers[j].se=sn(getobject(maptreeview.document,"cbse"+i).checked);
      map.layers[j].la=sn(getobject(maptreeview.document,"cbla"+i).checked);
      map.layers[j].tr=sn(getobject(maptreeview.document,"cbtr"+i).checked);
      break;
    };
  };
};

function maptomaptreeview(map,maptreeview) {
  var i, j, n, nb, vi;
  if ((map.layers.length==0) || (maptreeview.absoluteitems.length==0)) return;
  for (i=0;i<map.layers.length;i++) {
    for (j=0;j<maptreeview.absoluteitems.length;j++) if (map.layers[i].index==maptreeview.absoluteitems[j].layerindex) {
      n=maptreeview.absoluteitems[j]; if (n.block) continue;
      getobject(maptreeview.document,"cbvi"+j).checked=ns(map.layers[i].vi);
      if (map.layers[i].vi==1) {
        nb=n.paren;
        while (nb.paren!=null) {
          getobject(maptreeview.document,"cbb"+nb.absoluteindex).checked=true;
          nb=nb.paren;
        };
      };
      getobject(maptreeview.document,"cbse"+j).checked=ns(map.layers[i].se);
      getobject(maptreeview.document,"cbla"+j).checked=ns(map.layers[i].la);
      getobject(maptreeview.document,"cbtr"+j).checked=ns(map.layers[i].tr);
      break;
    };
  };
};

function recursivevi(maptreeview,index) {
  var i,n=maptreeview.absoluteitems[index];
  if (!getobject(maptreeview.document,"cbb"+index).checked || maptreeview.absoluteitems[index].expanded==1) return;
  if (n.items.length>0) for (i=0;i<n.items.length;i++) {
    if (n.items[i].block) {
      getobject(maptreeview.document,"cbb"+n.items[i].absoluteindex).checked=true;
      recursivevi(maptreeview,n.items[i].absoluteindex);
    } else {
      getobject(maptreeview.document,"cbvi"+n.items[i].absoluteindex).checked=true;
    };
  };
};

function vionese(maptreeview,map,layerindex) {
  var i,j,n;
  for (i=0;i<maptreeview.absoluteitems.length;i++)
    if (!maptreeview.absoluteitems[i].block) {
      if (layerindex==maptreeview.absoluteitems[i].layerindex) {
        getobject(maptreeview.document,"cbvi"+i).checked=true;
        n=maptreeview.absoluteitems[i].paren;
        while (n.paren!=null) {getobject(maptreeview.document,"cbb"+n.absoluteindex).checked=true;n=n.paren;};
        getobject(maptreeview.document,"cbse"+i).checked=true;
        for (j=0;j<map.layers.length;j++) if (map.layers[j].index==maptreeview.absoluteitems[i].layerindex) {map.layers[j].vi=1;map.layers[j].se=1;};
      } else {
        //getobject(maptreeview.document,"cbse"+i).checked=false;
        //for (j=0;j<map.layers.length;j++) if (map.layers[j].index==maptreeview.absoluteitems[i].layerindex) map.layers[j].se=0;
      };
    };
};

function vitheme(maptreeview,map,layerindex,idtheme) {
  var i,j,n;
  for (i=0;i<maptreeview.absoluteitems.length;i++)
    if (!maptreeview.absoluteitems[i].block) {
      if (layerindex==maptreeview.absoluteitems[i].layerindex) {
        getobject(maptreeview.document,"cbvi"+i).checked=true;
        n=maptreeview.absoluteitems[i].paren;
        while (n.paren!=null) {getobject(maptreeview.document,"cbb"+n.absoluteindex).checked=true;n=n.paren;};
        for (j=0;j<map.layers.length;j++) if (map.layers[j].index==layerindex) {map.layers[j].vi=1;map.layers[j].idtheme=idtheme;};
      };
    };
};

/**************************** WTV FUNCTIONS ****************************/
function wmstreeview(ichfm,expand,checked,text) {
  this.items=new Array();
  this.ichfm=(ichfm==undefined?true:ichfm); //initcheckedfrommap
  this.expand=(expand==undefined?1:expand);
  this.checked=(checked==undefined?1:checked);
  this.name="wtv";
  this.text=(text==undefined || text==""?"Zobrazovat WMS v mapě":text);
};

function addwmsnode(caption,wmsindex,checked) {
  this.caption=caption;
  this.wmsindex=wmsindex;
  this.checked=(checked==undefined?1:checked);
};

function wmstreeviewtoform(wmstreeview,document,formname) {
  var i,s="",c=",",a='"',f;
  for (i=0;i<wmstreeview.items.length;i++) s+=c+a+wmstreeview.items[i].caption+a+c+wmstreeview.items[i].wmsindex+c+wmstreeview.items[i].checked;
  f=getobject(document,formname);
  f.wmstreeview.value=wmstreeview.ichfm+c+wmstreeview.expand+c+wmstreeview.checked+c+a+wmstreeview.text+a+s;
};

function writewmstreeview(document,wmstreeview) {
  var i,s="";
  if (wmstreeview.items.length==0) return;
  wmstreeview.document=document;
  s="<nobr><img src='/images/tv_"+(wmstreeview.expand?"m":"p")+".gif' "+nameid("wmsimg")+" width='19' height='20' align='absmiddle' onclick='clickwmsexpand("+wmstreeview.name+")'>"+
    "<input type='checkbox'"+nameid("cbwms")+(wmstreeview.checked?" checked":"")+" onclick='cbwmsclick()'>"+
    (wmstreeview.text=="Zobrazovat WMS v mapě"?"Zobrazovat WMS v mapě":wmstreeview.text)+
    "</nobr><br>"+
    "<div "+nameid("wmsblock")+" style='display:"+(wmstreeview.expand?"":"none")+"'>";
  for (i=0;i<wmstreeview.items.length;i++) {s+=
      "<nobr><img src='/images/tvblank.gif' width='19' height='20' align='absmiddle'>"+
      "<img src='/images/tv"+(i<wmstreeview.items.length-1?"t":"l")+".gif' width='19' height='20' align='absmiddle'>"+
      "<input type='checkbox'"+nameid("cbwms"+i)+(wmstreeview.items[i].checked?" checked":"")+" onclick='cbwmsclick("+i+")'>"+
      wmstreeview.items[i].caption+"</nobr><br>";
  };
  s+="</div>";
  document.write(s);
};

function clickwmsexpand(wmstreeview) {
  wmstreeview.expand=!wmstreeview.expand;
  getobject(wmstreeview.document,"wmsimg").src="/images/tv_"+(wmstreeview.expand?"m":"p")+".gif";
  getstyle(wmstreeview.document,"wmsblock").display=(wmstreeview.expand?"":"none");
};

function wmstreeviewtomap(wmstreeview,map) {
  var i,j,k,ch;
  map.wmsactive=sn(getobject(wmstreeview.document,"cbwms").checked);
  if (wmstreeview.items.length>0) for (i=0;i<wmstreeview.items.length;i++) {
    ch=sn(getobject(wmstreeview.document,"cbwms"+i).checked);
    j=wmstreeview.items[i].wmsindex;
    map.wms[j].checked=ch;
    if (ch==1 && map.wms[j].layers.length>0) for (k=0;k<map.wms[j].layers.length;k++) map.wms[j].layers[k].checked=1;
  };
};

function recursivewms(wmstreeview) {
  var i;
  if (wmstreeview.expand || !getobject(wmstreeview.document,"cbwms").checked) return;
  if (wmstreeview.items.length>0) for (i=0;i<wmstreeview.items.length;i++) getobject(wmstreeview.document,"cbwms"+i).checked=true;
};

function maptowmstreeview(map,wmstreeview) {
  var i,j;
  getobject(wmstreeview.document,"cbwms").checked=ns(map.wmsactive);
  if (wmstreeview.items.length==0 || map.wms.length==0) return;
  for (i=0;i<wmstreeview.items.length;i++) for (j=0;j<map.wms.length;j++) if (wmstreeview.items[i].wmsindex==map.wms[j].index) {
    getobject(wmstreeview.document,"cbwms"+i).checked=ns(map.wms[j].checked);
    break;
  };
};

function maptowmstreeviewinit(map,wmstreeview) {
  var i,j;
  getobject(wmstreeview.document,"cbwms").checked=ns(map.wmsactive);
  if (wmstreeview.items.length==0 || map.wms.length==0) return;
  for (i=0;i<wmstreeview.items.length;i++) for (j=0;j<map.wms.length;j++) if (wmstreeview.items[i].wmsindex==map.wms[j].index) {
    getobject(wmstreeview.document,"cbwms"+i).checked=ns(map.wms[j].checked);
    break;
  };
};

