var g_isTreeNotifyServerToggleExpand;
function ontreeitemexpandclick(sAli, bHasDocs, bHasChildren, sBeanName, ajaxCommunicatorUrl, responseCharset)
{
//	debugger;
	if(responseCharset == undefined || responseCharset == null)
		responseCharset = "";
	if(ajaxCommunicatorUrl == undefined || ajaxCommunicatorUrl == null || ajaxCommunicatorUrl == "")
		ajaxCommunicatorUrl = "/standard/jsp/shiajaxcommunicator.jsp";
	else if(ajaxCommunicatorUrl.length > 1 && (ajaxCommunicatorUrl.substr(0, 2) == "./"))
			ajaxCommunicatorUrl = ajaxCommunicatorUrl.substr(1);
			
	if(true)
    {
        var oDIV = getelement(sBeanName+"children_"+sAli);
        if(!oDIV)
        {
            dbg(iINF, "ontreeitemexpandclick1\n!oDIV\n"+sBeanName+"children_"+sAli);
            return false;
        }
        if(trim(oDIV.innerHTML) != "")
        {
            getelement(sBeanName+"closelnk_"+sAli).style.display= "inline";
            getelement(sBeanName+"children_"+sAli).style.display= "inline";
            getelement(sBeanName+"openlnk_" +sAli).style.display= "none";
            if(g_isTreeNotifyServerToggleExpand)
            	notifyServerToggleExpand(sAli, sBeanName, ajaxCommunicatorUrl);
            return false;
        }
    }

    getelement(sBeanName+"closelnk_"+sAli).style.display= "inline";
    getelement(sBeanName+"children_"+sAli).style.display= "inline";
    getelement(sBeanName+"openlnk_" +sAli).style.display= "none";

    var s=";jsessionid="+sessionid;
    var sUrl = getpath(self.location.href)+ajaxCommunicatorUrl+s+"?object="+sBeanName+"&tree_ajax_alias="+sAli+"&invalidatesession=false&ajaxcall=1&charset="+responseCharset+"&tmpstmp="+(new Date()).getMilliseconds();
    var sContent = "object="+sBeanName+"&tree_ajax_alias="+sAli+"&ajaxcall=1";
    var myreq = getHTTPObject();
    if (myreq == null)
    {
        dbg(iERR, "ontreeitemexpandclick\n!myreq");
        return false;
    }
	if(true)
    {
        var iontreeitemexpandclick_response_called = 0;
        function ontreeitemexpandclick_response()
        {
            if(myreq == null)
            {
                dbg(iERR, "ontreeitemexpandclick_response\n!myreq");
                document.body.style.cursor='auto';
                return false;
            }

            iontreeitemexpandclick_response_called++;

            if (myreq.readyState    != 4)           //4 == "Complete" in ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
            {
            //    dbg(iINF, "ontreeitemexpandclick_response\nmyreq.readyState");
            //      return false;
				  if(iontreeitemexpandclick_response_called == 99)
				  {
				    iontreeitemexpandclick_response_called = 0;
				  }
				  else
				  {
				    return false;
				  }
            }
            var sAnswer = "";
//            debugger;
            //if (!responseIsSuccess(myreq))
			if(true)
            {
                //dbg(iINF, "ontreeitemexpandclick_response\nmyreq.status");
                //document.body.style.cursor='auto';
                try
                {
                    //sAnswer = trim(myreq.responseText);
                    sAnswer = myreq.responseText;
                    if((sAnswer == "") || (sAnswer == " "))
                        return false;
                }
                catch(e)
                {
                    //"die für diesen Vorgang erforderlichen Daten sind noch nicht verfügbar"
                    //about IE: the content WILL NOT be available until the DOM is complete
                    //alert(e.message);
                    return false;
                }
            }

            iontreeitemexpandclick_response_called++;

            var iB = sAnswer.indexOf("<!-- alias:");
            var iE = sAnswer.indexOf(":alias -->");
            var sAli = trim(sAnswer.substring(iB+("<!-- alias:".length), iE));
            iB = sAnswer.indexOf("<!-- bean:");
            iE = sAnswer.indexOf(":bean -->");
            var sBeanName = trim(sAnswer.substring(iB+("<!-- bean:".length), iE));

            oDIV = getelement(sBeanName+"children_"+sAli);

            if (myreq.readyState == 4)
            {
            	document.body.style.cursor                                    = 'auto';
				try
				{
	                getelement(sBeanName+"openlnk_"+sAli).style.cursor            = 'auto';
	                getelement(sBeanName+"titlelnk_closelnk_"+sAli).style.cursor  = 'auto';
	                getelement(sBeanName+"titlelnk_openlnk_"+sAli).style.cursor   = 'auto';
	                getelement(sBeanName+"piclnk_openlnk_"+sAli).style.cursor     = 'auto';
	                getelement(sBeanName+"piclnk_closelnk_"+sAli).style.cursor    = 'auto';
	                getelement(sBeanName+"piclnk_close_"+sAli).style.cursor       = 'auto';
	                getelement(sBeanName+"piclnk_open_"+sAli).style.cursor        = 'auto';
				}
				catch(e)
				{
					dbg(iERR, "ontreeitemexpandclick_response\n!o's\n"+sBeanName+"\ne:"+e);
				}				
            }
            if(!oDIV)
            {
                dbg(iINF, "ontreeitemexpandclick_response\n!oDIV\n"+sBeanName+"children_"+sAli+"\nsAnswer:'"+sAnswer+"'");
                return false;
            }
            
            var newDiv = oDIV.cloneNode(false);
            newDiv.innerHTML = sAnswer;
            oDIV.parentNode.replaceChild(newDiv, oDIV);
            //alert(sAnswer.substring(sAnswer.length - 9));
            //if(myreq.readyState   == 4)alert(iontreeitemexpandclick_response_called);
            return false;
        }   //end function ontreeitemexpandclick_response()
    }

    myreq.onreadystatechange = ontreeitemexpandclick_response;
    myreq.open("POST", sUrl, true);
    myreq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    //myreq.async=true;

    document.body.style.cursor                                    = 'wait';  //mouse cursor pointer to "sanduhr"
    
	try
	{
	    getelement(sBeanName+"openlnk_"+sAli).style.cursor            = 'wait';
	    getelement(sBeanName+"titlelnk_closelnk_"+sAli).style.cursor  = 'wait';
	    getelement(sBeanName+"titlelnk_openlnk_"+sAli).style.cursor   = 'wait';
	    getelement(sBeanName+"piclnk_openlnk_"+sAli).style.cursor     = 'wait';
	    getelement(sBeanName+"piclnk_closelnk_"+sAli).style.cursor    = 'wait';
	    getelement(sBeanName+"piclnk_close_"+sAli).style.cursor       = 'wait';
	    getelement(sBeanName+"piclnk_open_"+sAli).style.cursor        = 'wait';
	}
	catch(e)
	{
		dbg(iERR, "ontreeitemexpandclick\n!o's\n"+sBeanName+"\ne:"+e);
	}
    if (window.XMLHttpRequest)
    {
        myreq.send(sContent);
    }
    else if (window.ActiveXObject)  // branch for IE/Windows ActiveX version
    {
       myreq.send(sContent);
    }
    return false;
}
function ontreeitemcollapsclick(sAli, bHasDocs, bHasChildren, sBeanName, ajaxCommunicatorUrl, responseCharset)
{
    getelement(sBeanName+"openlnk_" +sAli).style.display= "inline";
    getelement(sBeanName+"closelnk_"+sAli).style.display= "none";
    getelement(sBeanName+"children_"+sAli).style.display= "none";
    if(g_isTreeNotifyServerToggleExpand)
    	notifyServerToggleExpand(sAli, sBeanName, ajaxCommunicatorUrl, responseCharset);
    return false;
}
function ontreeitemcloseclick(sAli, bHasDocs, bHasChildren, sBeanName)
{
    //ontreeitemcollapsclick(sAli, bHasDocs, bHasChildren, sBeanName);
    doselect(sAli, bHasDocs, bHasChildren, sBeanName);
    return false;
}
function deselectall(oE, sBeanName)
{
    var aas = document.getElementsByTagName("a");
    var i=0;
    for(i=0; i < aas.length; i++)
    {
        oE = aas[i];
        if(oE.id == null) continue;
        if(oE.id.indexOf(sBeanName) != 0) continue;
        if (oE.className && oE.className.toLowerCase() == "treeitemmark")
            oE.className = "treeitem";
        if (oE.className && oE.className.toLowerCase() == "treeitem_disabledmark")
            oE.className = "treeitem_disabled";
    }
}
function ontreeitemopenclick(sAli, bHasDocs, bHasChildren, sBeanName)
{
    onselchange(sAli, bHasDocs, bHasChildren, sBeanName);
    return false;
}
function onselchange(sAli, bHasDocs, bHasChildren, sBeanName)
{
    var s=";jsessionid="+sessionid;
	//alert("./"+getfilename(self.location.href)+s+"?"+sBeanName+"_alias="+sAli+"&invalidatesession=false&beanname="+sBeanName);
    self.location.href = "./"+getfilename(self.location.href)+s+"?"+sBeanName+"_alias="+sAli+"&invalidatesession=false&beanname="+sBeanName;
}
function doselect(sAli, bHasDocs, bHasChildren, sBeanName)
{
    deselectall(getelement("body"), sBeanName);
    idcur = sAli;
    eval(sBeanName+"idcur = '"+sAli+"';");// = sAli;
    if(getelement(sBeanName+"titlelnk_closelnk_"+sAli).className.toLowerCase() == "treeitem_disabled")
    {
        getelement(sBeanName+"titlelnk_closelnk_"+sAli).className = "treeitem_disabledmark";
        getelement(sBeanName+"titlelnk_openlnk_" +sAli).className = "treeitem_disabledmark";
    }
    else
    {
        getelement(sBeanName+"titlelnk_closelnk_"+sAli).className = "treeitemmark";
        getelement(sBeanName+"titlelnk_openlnk_" +sAli).className = "treeitemmark";
    }
    onselchange(sAli, bHasDocs, bHasChildren, sBeanName);
}
function doonmouseover(oelem, sBeanName)
{
   return;
   // oelem.className = "treeitemmark";
}
function doonmouseout(oelem, sBeanName)
{
    /*
    var sAli = idcur.toLowerCase();
    if (sAli.indexOf("id")==0)
        sAli = sAli.substring(2);
    if(oelem.id.toLowerCase().indexOf("_"+sAli) > 0)        //current selected element...?
        return;
    */
  //  return;
   // oelem.className = "treeitem";
}
function getPosTopTilEle(element, oTilEle)
{
    var el = element;
    var posTop = 0;
    while(el)
    {
        posTop += el.offsetTop;
        el = el.offsetParent;
	if(el == oTilEle)
            break;
    }
    return posTop;
}
function scrollselectedtreeentryintoview(sBeanName)
{
    var _idcur = null;
    try
    {
        _idcur = eval(sBeanName+"idcur");
        if((_idcur == null) || (_idcur == ""))
            _idcur = idcur;
        if((_idcur == null) || (_idcur == ""))
        {
            dbg(iWRN, "scrollselectedtreeentryintoview\n!idcur:"+_idcur);
            return;
        }
    }
    catch(e)
    {
         //dbg(iWRN, "scrollselectedtreeentryintoview\n!idcur:'"+_idcur+"' msg:"+e.message);
        return;
    }
    var o = getelement(sBeanName+"closelnk_"+_idcur);
    if(!o)
    {
        //can happen if root and hide.root
        //dbg(iWRN, "scrollselectedtreeentryintoview\n!closelnk:"+_idcur);
        return;
    }
    if (o.style.display == "none")
        o = getelement(sBeanName+"openlnk_"+_idcur);
    if(!o)
    {
        dbg(iWRN, "scrollselectedtreeentryintoview\n!"+sBeanName+"openlnk:"+_idcur);
        return;
    }
    if (o.style.display == "none")
    {
        dbg(iWRN, "scrollselectedtreeentryintoview\n!"+sBeanName+".displayed:"+_idcur);
        return;
    }
	
	var treeDiv = o.parentNode; var bFound = false;
	while(treeDiv != null)
	{
		if (treeDiv.id == null || treeDiv.id == "")
		{
			treeDiv = treeDiv.parentNode;
			continue;
		}
		
		var iPos = treeDiv.id.toLowerCase().lastIndexOf("treescrolldiv");
		if(iPos > 0 && iPos == (treeDiv.id.length - "treescrolldiv".length))
		{
			bFound = true;
			break;
		}
		treeDiv = treeDiv.parentNode;
	}
	
	if(treeDiv == null || !bFound)
    	treeDiv = document.getElementById('outlookform:treeAreaDiv2:treeAreaDiv2Div');
	if (treeDiv == null)
		treeDiv = document.getElementById('outlookform:treeAreaDiv2');
    if (treeDiv == null)
    	treeDiv = document.getElementById('outlookform:bookmark:bookmarkDiv');
	
    if (treeDiv == null)
    {
		dbg(iERR, "scrollselectedtreeentryintoview\n!treeDiv\n"+sBeanName+"openlnk:"+_idcur);
        o.scrollIntoView("true");
    }
    else
    {
        var iOffsetTop = getPosTopTilEle(o, treeDiv);
        treeDiv.scrollTop  = (iOffsetTop - 192);
        treeDiv.scrollLeft = '0px';
        //alert("1:div:"+treeDiv.scrollTop+"\niOffsetTop:"+ (iOffsetTop - 192));
    }
}
function treedivonmouseover(div, sBeanName, sAli)
{
    var _idcur = eval(sBeanName+"idcur");

    var achildren = new Array();
    getchildren(div, achildren);

    var bIsSelected = false;

    if (_idcur.toLowerCase() == sAli.toLowerCase())
    {
        bIsSelected = true;
    }
    for(var i=0; i < achildren.length; i++)
    {
        if((achildren[i].tagName.toLowerCase() == "span") && (achildren[i].className.toLowerCase() == "span_treeitem"))
        {
            continue;
        }

        var id = achildren[i].id;
        var bUnderline = (achildren[i].id.indexOf(sBeanName+"title") == 0);

        if(bIsSelected)
        {
            if(achildren[i].id.indexOf("piclnk_") > 1)
            {
                achildren[i].className = "treeitemmouseoverimg";
                continue;
            }
            achildren[i].className = "outlookToolbarWidth treeitemmouseover" + (bUnderline ? " textmouseover" : "");
        }
        else
        {
            if(achildren[i].id.indexOf("piclnk_") > 1)
            {
                achildren[i].className = "treeitemmouseoverimg";
                continue;
            }
            achildren[i].className = "outlookToolbarWidth treeitemmouseover" + (bUnderline ? " textmouseover" : "");
        }
    }

    div.className = "divstylemouseover";
}
function treedivonmouseout(div, sBeanName, sAli)
{
    var _idcur = eval(sBeanName+"idcur");

    var achildren = new Array();
    getchildren(div, achildren);

    var bIsSelected = false;

    if (_idcur.toLowerCase() == sAli.toLowerCase())
    {
        bIsSelected = true;
    }

    for(var i=0; i < achildren.length; i++)
    {
        if((achildren[i].tagName.toLowerCase() == "span") && (achildren[i].className.toLowerCase() == "span_treeitem"))
        {
            continue;
        }

        if(bIsSelected)
        {
            if(achildren[i].id.indexOf("piclnk_") > 1)
            {
                achildren[i].className = "treeitemmouseoutimg";
                continue;
            }
            achildren[i].className = "outlookToolbarWidth treeitemmouseout  span_treeitemmark";
        }
        else
        {
            if(achildren[i].id.indexOf("piclnk_") > 1)
            {
                achildren[i].className = "treeitemmouseoutimg";
                continue;
            }
            achildren[i].className = "outlookToolbarWidth treeitemmouseout ";
        }
    }
    div.className = "divstylemouseout";
    //div.className = "outlookToolbarWidth treeitemmouseout";
}
function getchildren(e, achildren)
{
    if((e == null)||(e.childNodes == null)) return;
    for(var i=0; i < e.childNodes.length; i++)
    {
        getchildren(e.childNodes[i], achildren);
        if(e.childNodes[i].nodeType == 1)
        {
            if(e.childNodes[i].tagName.toLowerCase() != "img")
                achildren.push(e.childNodes[i]);
        }
    }
}
function fakemouseontree(sBeanName, bOnResize)
{
	var sAli= null;
	try
	{
		sAli = eval(sBeanName+"idcur");
	}
	catch(e)
	{
		sAli = null;
	}
	var div = null;

	if(sAli != null)
	{
		var e	= getelement(sBeanName+"openlnk_" + sAli);
		
		while(e && div == null)
		{
			e = e.parentNode;
			if(e && e.tagName && (e.tagName.toLowerCase() == "div"))
			{
				div = e;
				break;
			}
		}
	}	
	if(!div && !bOnResize)
	{
		var i=0;
		while(true)
		{
			i++;
		 	var oSpan2Hide = getelement("undertree_buttons"+i);
		 	if(!oSpan2Hide)break;
		 	oSpan2Hide.style.display = "none";
		}
		//setCSSClassesForLeftSlider(g_iActualColumnLeftWidth+1);
		//setCSSClassesForLeftSlider(g_iActualColumnLeftWidth-1);
		return;
	}
	if(isie() && (div != null) && (sAli != null))
	{	
		treedivonmouseover(div, sBeanName, sAli);
		treedivonmouseout( div, sBeanName, sAli);
	}
}
function a(div, sBeanName, sAli)
{
	return treedivonmouseover(div, sBeanName, sAli);
}
function b(div, sBeanName, sAli)
{
	return treedivonmouseout(div, sBeanName, sAli);
}
function c(oelem, sBeanName)
{
	return doonmouseover(oelem, sBeanName);
}
function d(oelem, sBeanName)
{
	return doonmouseout(oelem, sBeanName);
}
function e(sAli, bHasDocs, bHasChildren, sBeanName)
{
	return ontreeitemcollapsclick(sAli, bHasDocs, bHasChildren, sBeanName);
}
function f(sAli, bHasDocs, bHasChildren, sBeanName)
{
	return ontreeitemcloseclick(sAli, bHasDocs, bHasChildren, sBeanName);
}
function g(sAli, bHasDocs, bHasChildren, sBeanName)
{
	return ontreeitemexpandclick(sAli, bHasDocs, bHasChildren, sBeanName);
}
function h(sAli, bHasDocs, bHasChildren, sBeanName)
{
	return ontreeitemopenclick(sAli, bHasDocs, bHasChildren, sBeanName);
}
function markfullline(sBeanName)
{
	var _idcur = getidcur(sBeanName);
	if( _idcur == null)
	{
		return;
	}
	var o = getelement(sBeanName+"openlnk_"+_idcur);
	
	if(!o)
	{
		dbg(iERR, "markfullline\ncloselnk\n"+sBeanName+" idcur:"+_idcur);
		return;
	}
	var oPenLnk = o;
	while(true)
	{
		if(!o)break;
		if(o.tagName && o.tagName.toLowerCase() == "div")
		{
			setmarkfullstyle(o, oPenLnk);
			return;
		}
		o = o.parentNode;
	}
}
function setmarkfullstyle(odiv, oPenLnk)
{
	//odiv.style.backgroundColor = "red";
	
	var odivoffsetRight = odiv.offsetLeft + odiv.offsetWidth;
	var oPenLnkoffsetRight = oPenLnk.offsetLeft + oPenLnk.offsetWidth;
	if(odivoffsetRight < oPenLnkoffsetRight)
	{
		var width = oPenLnkoffsetRight - odivoffsetRight
		odiv.style.width = (odivoffsetRight) + "px";
		
	}
}

function getidcur(sBeanName)
{
    var _idcur = null;
    try
    {
        _idcur = eval(sBeanName+"idcur");
        if((_idcur == null) || (_idcur == ""))
            _idcur = idcur;
        if((_idcur == null) || (_idcur == ""))
        {
            return null;
        }
        return _idcur;
    }
    catch(e)
    {
        return null;
    }	
}
function notifyServerToggleExpand(sAli, sBeanName, ajaxCommunicatorUrl, responseCharset) {

	if(responseCharset == undefined || responseCharset == null)
		responseCharset = "";
	if(ajaxCommunicatorUrl == undefined || ajaxCommunicatorUrl == null || ajaxCommunicatorUrl == "")
		ajaxCommunicatorUrl = "/standard/jsp/shiajaxcommunicator.jsp";
	else if(ajaxCommunicatorUrl.length > 1 && (ajaxCommunicatorUrl.substr(0, 2) == "./"))
			ajaxCommunicatorUrl = ajaxCommunicatorUrl.substr(1);
			
    var s=";jsessionid="+sessionid;
    var sUrl = getpath(self.location.href)+ajaxCommunicatorUrl+s+"?object="+sBeanName+"&tree_ajax_alias="+sAli+"&invalidatesession=false&ajaxcall=1&tree_no_render=true&charset="+responseCharset+"&tmpstmp="+(new Date()).getMilliseconds();
    var sContent = "object="+sBeanName+"&tree_ajax_alias="+sAli+"&ajaxcall=1";
    var myreq = getHTTPObject();
    if (myreq == null)
    {
        dbg(iERR, "notifyServerToggleExpand\n!myreq");
        return false;
    }

    myreq.open("POST", sUrl, true);
    myreq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    myreq.send(sContent);
    
    return false;
}
