var expandedNodes = [];
function toggle(node,target,arg) {
	//Callback for data if node not already hydrated
	if (target!=null){
		var blnCallback = false;
		for(var i=0; i < expandedNodes.length; i++ ){
			if (expandedNodes[i]==target+arg){
				blnCallback = true;
			}
		}
		if (blnCallback == false){
			__DoCallBack(target,arg);
			expandedNodes.push(target+arg);
		}
	}
    // Get the next tag (read the HTML source)
	var nextDIV = node.nextSibling;

	// find the next DIV
	while(nextDIV.nodeName != "DIV") {
		nextDIV = nextDIV.nextSibling;
	}

	// Unfold the branch if it isn't visible
	if (nextDIV.style.display == 'none') {

		// Change the image (if there is an image)
		if (node.childNodes.length > 0) {

			if (node.childNodes.item(0).nodeName == "IMG") {
				if (node.childNodes.item(0).src.indexOf("plus.gif")>-1){
					node.childNodes.item(0).src = getImgDirectory(node.childNodes.item(0).src) + "minus.gif";
					}
				else if (node.childNodes.item(1).src.indexOf("plus.gif")>-1){
				node.childNodes.item(1).src = getImgDirectory(node.childNodes.item(1).src) + "minus.gif";
				}
			}
		}

		nextDIV.style.display = 'block';
	}
	// Collapse the branch if it IS visible
	else {

		// Change the image (if there is an image)
		if (node.childNodes.length > 0) {
			if (node.childNodes.item(0).nodeName == "IMG") {
				if (node.childNodes.item(0).src.indexOf("minus.gif")>-1){
					node.childNodes.item(0).src = getImgDirectory(node.childNodes.item(0).src) + "plus.gif";
					}
				else if (node.childNodes.item(1).src.indexOf("minus.gif")>-1){
				node.childNodes.item(1).src = getImgDirectory(node.childNodes.item(1).src) + "plus.gif";
				}
			}
		}
		nextDIV.style.display = 'none';
	}
}

/*****************************************************************************
Name : toggle2
Parameters :  node DOM element (<a> tag), folderCode String
Description :    if you use the "code" attribute in a folder element, toggle2 is called
instead of toggle. The consequence is that you MUST implement a selectFolder function in your page.
Author : Jean-Michel Garnier
*****************************************************************************/
function toggle2(node, folderCode) {
    toggle(node);
    selectFolder(folderCode);
}



function getImgDirectory(source) {
    return source.substring(0, source.lastIndexOf('/') + 1);
}

/*****************************************************************************/

function showHideTreeChild(node,target) {
    //Callback for data if node not already hydrated
    if (target != null) {
        var blnExpanded = false;
        for (var i = 0; i < expandedNodes.length; i++) {
            if (expandedNodes[i] == target) {
                blnExpanded = true;
            }
        }
        if (blnExpanded == false) {
            expandedNodes.push(target);
        }
    }
    // Get the next tag (read the HTML source)
    var nextDIV = node.nextSibling;

    // find the next DIV
    while (nextDIV.nodeName != "DIV") {
        nextDIV = nextDIV.nextSibling;
    }

    // Unfold the branch if it isn't visible
    if (nextDIV.style.display == 'none') {
//    debugger;
        var images = node.parentNode.getElementsByTagName("IMG");
        if (images.length > 0) {
            images[0].src = images[0].src.replace(/plus/, "minus");
        }
        if (images.length > 1) {
            images[1].src = images[1].src.replace(/closed/, "open");
        }

        nextDIV.style.display = 'block';
    }
    // Collapse the branch if it IS visible
    else {
        var images = node.parentNode.getElementsByTagName("IMG");
        if (images.length > 0) {
            images[0].src = images[0].src.replace(/minus/, "plus");
        }
        if (images.length > 1) {
            images[1].src = images[1].src.replace(/open/, "closed");
        }
        nextDIV.style.display = 'none';
    }
}

function ckChange(ck,overlays) {
    showhideMapOverlay(ck, overlays);
    var nextDIV = ck.nextSibling;
    // find the next DIV
    try { 
        while (nextDIV.nodeName != "DIV") {
            nextDIV = nextDIV.nextSibling;
        }
        toggleChildCheckboxes(nextDIV, ck.checked, overlays);
    } catch (e) { }   
}

function toggleChildCheckboxes(elem, checked, overlays) {
    var checkboxes = elem.getElementsByTagName("INPUT");
    for (i = 0; i < checkboxes.length; i++) {
        checkboxes[i].checked = checked;
        showhideMapOverlay(checkboxes[i], overlays);
    }
}

function showhideMapOverlay(ck, overlays) {
    if (overlays[ck.name]) {
         if (ck.checked) {
             overlays[ck.name].show();
         } else {
            overlays[ck.name].hide();
         }
    }
}