var setsizes4 = new Array();

/////////////outlooktoolbar///////////////////////////
//dependents1 = new Array();
//setsizes4[setsizes4.length]     = new setsize4("outlookToolbarTreeDiv"/*cssclassName*/, 95+26+23+21+21+21+21/*i2Subtract*/, dependents1);
/////////////doumentiframe///////////////////////////
//dependents2 = new Array();
//dependents2[dependents2.length] = new dependent("breadcrum"/*id*/,-1/*height2subtractFromSubtract or -1 if determinate it yourself*/);
//dependents2[dependents2.length] = new dependent("documentAreaSiteNavigation"/*id*/,-1/*height2subtractFromSubtract or -1 if determinate it yourself*/);
//dependents2[dependents2.length] = new dependent("documentTools"/*id*/,-1/*height2subtractFromSubtract or -1 if determinate it yourself*/);

//setsizes4[setsizes4.length]     = new setsize4("documentIframe"/*cssclassName*/, 12+95+26+21/*i2Subtract*/, dependents2);

//dependents3 = new Array();
//dependents3[dependents3.length] = new dependent("breadcrum"/*id*/,-1/*height2subtractFromSubtract or -1 if determinate it yourself*/);
//dependents3[dependents3.length] = new dependent("documentTools"/*id*/,-1/*height2subtractFromSubtract or -1 if determinate it yourself*/);
//setsizes4[setsizes4.length]     = new setsize4("marginalAreaHeight"/*cssclassName*/, 95+26+21/*i2Subtract*/, dependents3);
//dependents4 = new Array();
//setsizes4[setsizes4.length]     = new setsize4("outlookToolbarHight"/*cssclassName*/, 95+26/*i2Subtract*/, dependents4);

//dependents5 = new Array();
//setsizes4[setsizes4.length]     = new setsize4("bodyHeight"/*cssclassName*/, 0 /*i2Subtract*/, dependents5);

/////////CLASS dependent/////////////////////////////
function dependent(sEleName, i2Subtract)
{
    this.sEle       = sEleName;
    this.i2Subtract = i2Subtract;
    
    this.isok = function()
    {
        if(isempty(this.sEle))
        {
            log("empty.dependent","dependent:isok", iERR);
            return false;
        }
        if(getelement(this.sEle) == null)
        {
            log("!element.dependent.EleName:\""+this.sEle+"\"","dependent:isok", iWRN);
            return false;
        }
        return true;
    }
    this.get2Subtract = function()
    {
        if(!this.isok())    return 0;
        if(this.i2Subtract > 0) return this.i2Subtract;
        var ele = getelement(this.sEle);
        
        //boorberg breadcrumb (unfathomable phenomenon) @gh
        if(ele.offsetHeight < 1)ele = ele.offsetParent;
        if(ele.offsetHeight < 1) return 0;
        if(ele.style.visibility.toLowerCase() == "hidden") return 0;
        
        return ele.offsetHeight;
        ///padding,margin will be ignored. IE&FF interpret the attribute "height" differently. Caution! ///
        ///"for IE<7 displayed height" is margin+padding+height"////
    }
}  
/////////CLASS setsize4//////////////////////////////
function setsize4(sCssClassName, i2Subtract, dependents)
{
    this.sCssClassName  = sCssClassName;
    this.i2Subtract     = i2Subtract;
    this.dependents     = dependents;
    this.oCssClass      = getCssClass4Name(this.sCssClassName);
    
    this.isok = function()
    {
        if(this.oCssClass == null)
        {
            log("!cssclass:"+this.sCssClassName,"setsize4:isok", iWRN);
            return false;
        }
        //if(isempty(this.sCssClassName))return false;
        if(this.i2Subtract < 1)
        {
            log("!i2subtract:"+this.sCssClassName+"\ti:"+this.i2Subtract,"setsize4:isok", iERR);
            return false;
        }
        return true;
    }
}
function getCssClass4Name(sCssClassName)
{
    sCssClassName = trim(sCssClassName.toLowerCase());
    var styleobj = document.styleSheets;
    for(var i=0; i<styleobj.length;i++)
    {
        var formats = styleobj.item(i).cssRules;
        if(!formats) formats = styleobj.item(i).rules;
        if(!formats) continue;
        for(j=0; j<formats.length;j++)
        {
            if(formats[j].selectorText != undefined && ((formats[j].selectorText.toLowerCase() == sCssClassName) || (formats[j].selectorText.toLowerCase() == "."+sCssClassName)))
            {
                return formats[j];
            }
        }
    }
    /*
    var csss = "";
    for(var i=0; i<styleobj.length;i++)
    {
        var formats = styleobj.item(i).cssRules;
        if(!formats) formats = styleobj.item(i).rules;
        if(!formats) continue;
        if((i % 13) == 0) csss += "\n";
        for(j=0; j<formats.length;j++)
        {
            if(formats[j].selectorText.indexOf("outlook") < 0) continue;
            csss += ((csss == "" ? "" : ",")+formats[j].selectorText);
            if((j % 13) == 0) csss += "\n";
        }
    }
    alert("\""+sCssClassName+"\"\n"+csss);
    */
    log("!css:\""+sCssClassName+"\"","getCssClass4Name", iERR);
    return null;
}
function isie()
{
    if(document.all)return true;
    return false;
}
function setsizes()
{
    setsizes4window();    
    window.onresize = setsizes4window;
}

function resizeSliders()
{
    var sliderElement = document.getElementById(g_shiSliderRightID);
    var sliderPositionElement = document.getElementById(g_shiSliderRightColumnID);
    if((sliderElement!=null)&&(sliderPositionElement!=null))
    {
        var positionLeft = getPosLeft(sliderPositionElement);
        sliderElement.style.left = positionLeft + "px";
        
        var positionTop = getPosTop(sliderPositionElement);
        sliderElement.style.top = positionTop + "px";
    }
}
var g_setsizes4window_called = 0;
function setsizes4window()
{
    //if(isie())  return;
    //ATTENZIONE: if(isie())    if(quirksmode) (than:use:document.body.clientHeight) (otherwise:use:document.documentElement.clientHeight)
    var iH = isie() ? (document.documentElement.clientHeight) : window.innerHeight;
    for(var ii=0; ii < setsizes4.length; ii++)
    {
        setelesize(setsizes4[ii], iH);
    }
    showlog();
    
    //That function is used to set the position of the right Slider after a Window resize
    resizeSliders();
	if((g_setsizes4window_called > 0) && isie())
	{
		//setCSSClassesForLeftSlider(g_iActualColumnLeftWidth);	//doesn't work here! use fake...();
		var bVarExists = false;
		try
		{
			var dummy = g_fakemouseontree;
			if(trim(dummy).length > 1)
				bVarExists = true;
		}
		catch(e) {bVarExists = false;}
		
		if(bVarExists && trim(g_fakemouseontree).length > 1)
			fakemouseontree(g_fakemouseontree, true);
	}
	g_setsizes4window_called++;
}
function setelesize(ele, iWinSize)
{
    if((ele == null) || !ele.isok())
    {
        log("!ele:"+ele,"setelesize", iWRN);
        return;
    }
    var i2Subtract = get2Subtract(ele.i2Subtract, ele.dependents);
    if (i2Subtract < 1)
    {
        log("!i2Subtract:"+i2Subtract,"setelesize", iWRN);
        return;
    }
    i2Subtract = iWinSize - i2Subtract;
    if (i2Subtract < 1)
    {
        log("!!i2Subtract:"+i2Subtract,"setelesize", iWRN);
        return;
    }

   log("css:\""+ele.sCssClassName+"\"\tnew.eleheight:"+i2Subtract+"\tiWinSize:"+iWinSize,"setelesize", iINF);
    ele.oCssClass.style.height = ""+i2Subtract+"px";
}
function get2Subtract(i2Subtract, dependents)
{
    if(dependents == null)
    {
        log("!deps:"+dependents,"get2Subtract", iWRN);
        return i2Subtract;
    }
    for(i=0; i < dependents.length; i++)
    {
        var dep = dependents[i];
        if((dep == null) || !dep.isok())
        {
            //log("!dep:"+dep,"get2Subtract", iWRN);
            continue;
        }
        var _i2S = dep.get2Subtract();
        if (_i2S < 1)
        {
           // log("!i2S:"+i2S,"get2Subtract", iWRN);
            continue;
        }
        i2Subtract += _i2S;
    }
    if(i2Subtract < 0)
    {
        log("!i2Subtract:"+i2Subtract,"get2Subtract", iWRN);
        return 0;
    }
    return i2Subtract;
}

