var RESOURCES_DIR = "/opencms/opencms/system/modules/it.tecnoteca.comuneUdine/resources/";
var treefilewindow;

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

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.01
  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 && d.getElementById) x=d.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 addDir(nodid){
    var pfad="";
    if (nodid!=opener.tree.root.id){
        do{
            var nodeName='_n'+nodid;
            pfad=opener.tree.nodes[nodeName].name+"/"+pfad;
            nodid   = opener.tree.nodes[nodeName].parent.id;
            test = opener.tree.nodes[nodeName].parent.id;
        } while(nodid!=opener.tree.root.id);
    }
    pfad='/'+pfad;
    setFolder(pfad);
}


/**
 *  write <img> tag
 */
function showPic(doc, pic) {
    doc.write("<img src='" + pic + "' height=16 width=16 border=0 vspace=0 hspace=0 align=left>");
}

/**
 *  write linked <img> tag, used for open-able folders/crosses in the tree frame
 */
function showPicLink(doc, pic, id,windowed) {
//    if(windowed==0) doc.write("<a href=javascript:top.toggleNode(document,"+ id +","+windowed+")><img src='"+ pic +"' height=16 width=16 border=0 vspace=0 hspace=0 align=left></a>");
    if(windowed>0) doc.write("<a href=javascript:opener.toggleNode(document,"+ id +","+windowed+")><img src='"+ pic +"' height=16 width=16 border=0 vspace=0 hspace=0 align=left></a>");
}

function toggleNode(doc, id, windowed) {

    opener.tree.dfsToggleFound = false;
    dfsToggle(id, opener.tree.root);
    showTree(doc,windowed);
}

function dfsToggle(id, node) {
    if (id == node.id) {
        node.open = !node.open;
        opener.tree.dfsToggleFound = true;
        return;
    }

    for (var loop1=0; loop1<node.childs.length; loop1++) {

        dfsToggle(id, node.childs[loop1]);
        if (opener.tree.dfsToggleFound) return;
    }
 }

function dfsTree(doc, node, depth, last, shape,windowed) {
    var loop1;
    if (node.parent==null) {
        showPic(doc, opener.tree.icon[9].src); // rootdir
    } else {
        for (loop1=0; loop1<depth-1; loop1++) {
            if (shape[loop1+1] == 1) {
                showPic(doc, opener.tree.icon[10].src); //vert.line
            } else {
                showPic(doc, opener.tree.icon[0].src); //nothing
            }
        }

        if (last) {
            if (node.childs.length > 0) {
                if (node.open) {
                    //wenn actdir ein child vom knopf ist
                    showPicLink(doc, opener.tree.icon[5].src, node.id,windowed); //corner to close
                } else {
                    showPicLink(doc, opener.tree.icon[7].src, node.id,windowed); //corner to open
                }
            } else {
                showPic(doc, opener.tree.icon[1].src); //corner
            }
            shape[depth] = 0;
        } else {
            if (node.childs.length > 0) {
                if (node.open) {
                    showPicLink(doc, opener.tree.icon[6].src, node.id,windowed); //cross to close
                } else {
                    showPicLink(doc, opener.tree.icon[8].src, node.id,windowed); //cross to open
                }
            } else {
                showPic(doc, opener.tree.icon[4].src); //cross
            }
            shape[depth] = 1;
        }
        if(node.id==opener.vr.actDirId){
            showPic(doc, opener.tree.icon[3].src); //folderopen
        } else {
            showPic(doc, opener.tree.icon[2].src); //foldernormal
        }
    }
    
     if(node.isGrey)var foco="class=ig ";
         else var foco="class=tf ";
//     if(windowed==0) doc.writeln("<a "+foco+"href='javascript:top.openFolder(&quot;"+ node.id +"&quot;);' target='explorer_files' ;>&nbsp;"+ node.name + "&nbsp;</a></td></tr><tr valign=bottom><td valign=bottom align=left nowrap>");
     if(windowed==1) doc.writeln("<a "+foco+" href=javascript:window.opener.addProjectDir("+node.id+");> &nbsp;"+ node.name + "&nbsp;</a></td></tr><tr valign=bottom><td valign=bottom align=left nowrap>");
     if(windowed==2) doc.writeln("<a "+foco+" href=javascript:window.opener.addDir("+node.id+");> &nbsp;"+ node.name + "&nbsp;</a></td></tr><tr valign=bottom><td valign=bottom align=left nowrap>");

    if (node.open || node == opener.tree.root) {
        for (var loop1=0; loop1<node.childs.length; loop1++) {
            dfsTree(doc, node.childs[loop1], depth+1, (loop1==(node.childs.length-1)), shape,windowed);
        }
    }
 }

function opensmallwin(url, name, w, h) //opens a new window with parameter URL, Windowname (free choosable), width and height
{
    smallwindow = window.open(url, name, 'toolbar=no,location=no,directories=no,status=yes,menubar=0,scrollbars=yes,resizable=yes,top=150,left=660,width='+w+',height='+h);
    if(smallwindow != null)
       {
          if (smallwindow.opener == null)
          {
             smallwindow.opener = self;
          }
        }
    smallwindow.focus();
   return smallwindow;
}


function showWinTree(doc){
    showTree(doc,2);
}

var treewindowexists=false;

function openTreeWin(){
    treewin=opensmallwin(RESOURCES_DIR+"treewindow.html", "", 350, 400);
    treewindowexists=true;
}

function closeTreeWin(){
    if( treewindowexists==true){
        window.treewin.close();
        treewindowexists=false;
    }
}

var treefilewindowexists=false;

function openTreeFileWin(file){
	if ( file == 0 ) {
	    treewin=opensmallwin(RESOURCES_DIR+"treefilewindow.html?viewfile=no", "", 350, 400);
	    treewindowexists=true;
	} else if ( file == 1 || file == 2 ) {
	    treefilewin=opensmallwin(RESOURCES_DIR+"treefilewindow.html?viewfile=yes", "", 350, 400);
	    treefilewindowexists=true;
	}	   
}

function closeTreeFileWin(){
    if( treefilewindowexists==true){
        window.treefilewin.close();
        treefilewindowexists=false;
    }
}


/**
 *  displays the tree
 */
function showTree(doc,windowed) {

//        "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + top.frames.head.encoding + "\">" +
    var showTreeHead="<html><head>" + 
        "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;\">" +
        "<title>opencms explorer tree</title>" +
        "<style type='text/css'> a { text-decoration: none; color: #000000; font-family:arial; font-size:8pt;} a.ig { text-decoration: none; color: silver; font-family:arial; font-size:8pt;} a.tf { text-decoration: none; color: #000000; font-family:MS Sans Serif, Arial, helvetica, sans-serif; font-size:8px;} var a:hover { text-decoration: none; color: #FFFFFF; background:#000066 font-family:arial; font-size:8pt;} body { margin-left:3px; margin-right:0px; margin-top:4px; margin-bottom:0px; margin-height:0px; marginspace:0; margin-top:3px;} </style>" + 
        "</head><body><font face='arial' size=2><table border=0 cellpadding=0 cellspacing=0><tr><td valign=bottom align=left nowrap>";

    var showTreeFoot="</font></TD></TR></table></body></html>";

    doc.open();
    doc.writeln(showTreeHead);

    dfsTree(doc, opener.tree.root, 0, false, new Array(),windowed);
//    dfsTree(doc, tree.root, 0, false, new Array(),windowed);
    doc.writeln(showTreeFoot);
    doc.close();
}


