function openWindow (url)
{
    fenster = window.open(url, "fenster1", "width=600,height=400,status=yes,scrollbars=yes,resizable=yes");
    fenster.focus();
}

function toggleDisplay(id)
{
    // we want to display the items of list named 'id'
    var items = document.getElementById(id);
    // the link to click is always named "f"+"id"
    var folder= document.getElementById("f"+id);
    // are the items invisible ?
    if(items.style.display != 'block')
    {
        // then display them 
        items.style.display = 'block';
        // change folder icon to minus
        //alert(folder.src);
        folder.src= 'https://www.deep-phylogeny.org/images/minus.gif';
        //alert(folder.src);
    }
    else
    {
        // items are visible
        // make them invisible
        items.style.display = 'none';
        // change folder icon to plus 
        folder.src= 'https://www.deep-phylogeny.org/images/plus.gif';
    }
}

function toggleCheckboxes(formName)
{
    var formname=formName.name;
    var numOfElements=document.forms[formname].elements.length;
    var newValue=true;
    if(!document.getElementsByName("selectAll")[0].checked)
    {
        newValue=false;
    }
    for(i=0;i<numOfElements;i++)
    {
        if(document.forms[formname].elements[i].type == "checkbox")
        {
            
            document.forms[formname].elements[i].checked = newValue;
            
        }
    }
}

function markCell(objGrid, objCell)
{
    var markCell=document.getElementById('zpGrid' + objGrid.getId() + 'Row' + objGrid.getCellRowId(objCell) + 'Cell' + objGrid.getCellId(objCell));
    if(markCell)
    {
        if(!markCell.style.backgroundColor)
        {return;}
        var backgroundColor=markCell.style.backgroundColor;
        var newColor=backgroundColor; 
        if(backgroundColor.substr(0,3)=='rgb')
        {
            var rgbVals=parseRgb(backgroundColor);
            rgbVals=markColorRgb(rgbVals[0],rgbVals[1],rgbVals[2]);
            newColor='rgb('+rgbVals[0]+','+rgbVals[1]+','+rgbVals[2]+')';
        }
        if(backgroundColor.substr(0,1)=='#')
        {
            var rgbVals=hex2rgb(backgroundColor.substr(1,backgroundColor.length));
            if(rgbVals)
            {
                rgbVals=markColorRgb(rgbVals[0],rgbVals[1],rgbVals[2]);
            }
            newColor=rgb2hex(rgbVals[0],rgbVals[1],rgbVals[2]);
        }
        markCell.style.backgroundColor=newColor;
    }
}

function markColorRgb(r,g,b)
{
    // set new Colors
    r=parseInt(r);g=parseInt(g);b=parseInt(b);
    if(r==255)
    { r=r-50;}
    if(g==255)
    { g=g-50;}
    return new Array(r,g,b);
}

function unmarkCell(objGrid, objCell)
{
    var unmarkCell=document.getElementById('zpGrid' + objGrid.getId() + 'Row' + objGrid.getCellRowId(objCell) + 'Cell' + objGrid.getCellId(objCell));
    if(unmarkCell)
    {
        if(!unmarkCell.style.backgroundColor)
        {return;}
        var backgroundColor=unmarkCell.style.backgroundColor;
        var newColor=backgroundColor;
        if(backgroundColor.substr(0,3)=='rgb')
        {
            var rgbVals=parseRgb(backgroundColor);
            rgbVals=unmarkColorRgb(rgbVals[0],rgbVals[1],rgbVals[2]);
            newColor='rgb('+rgbVals[0]+','+rgbVals[1]+','+rgbVals[2]+')';
        }
        if(backgroundColor.substr(0,1)=='#')
        {
            var rgbVals=hex2rgb(backgroundColor.substr(1,backgroundColor.length));
            if(rgbVals)
            {
                rgbVals=unmarkColorRgb(rgbVals[0],rgbVals[1],rgbVals[2]);
            }
            newColor=rgb2hex(rgbVals[0],rgbVals[1],rgbVals[2]);
        }
        unmarkCell.style.backgroundColor=newColor;
    }
}

function unmarkColorRgb(r,g,b)
{
    // set old Colors
    r=parseInt(r);g=parseInt(g);b=parseInt(b);
    if(r==205)
    { r=r+50;}
    if(g==205)
    { g=g+50;}
    return new Array(r,g,b);
}

function hex2rgb(hex)
{
    var regexp = new RegExp('^#?([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$');
    var match = hex.toLowerCase().match(regexp);
    if (match)
    {
        var rgb = new Array(parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16));
        return(rgb);
    }
    else
    {
        return(null);
    }
}

function rgb2hex(red, green, blue)
{
    var hex = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
    var rgb = new Array();
    var k = 0;
    for (var i = 0; i < 16; i++) for (var j = 0; j < 16; j++) { rgb[k] = hex[i] + hex[j]; k++ }
    return('#' + rgb[red] + rgb[green] + rgb[blue]);
}

function parseRgb(rgbString)
{
    var start=rgbString.indexOf('(');
    var end=rgbString.indexOf(')');
    var rgb=rgbString.substr((start+1), end-start-1);
    var cleanRgb=rgb.replace(/s/,'');
    var rgbVals=cleanRgb.split(',');
    rgbVals[2]=rgbVals[2].substr(1,rgbVals[2].length-1);
    return rgbVals;
}


