/*
 FUNCTION  go Further
(c) NIKO
*/
var openedDocumentation = false;
var openedReference = false;
var openedLinks = false;
var kindOfElement  = false;

function ElementCheck(id,htmlElement) {
	(htmlElement)? kindOfElement = true : kindOfElement = false;
	(eval(whichBoolean(id))) ? closeElement(id) :openElement(id);
}

function openElement(id) {
	var element  = document.getElementById(id);
	var blankElement = document.getElementById(id+'Blank');
	blankElement.style.display = 'none';
	element.style.display = 'block';
	window[whichBoolean(id)] = true;
	
	switchArrow(id, 1);/*fde*/
}

function closeElement(id) {
	if (!kindOfElement){
		var element  = document.getElementById(id)
		var blankElement = document.getElementById(id+'Blank')
		blankElement.style.display = 'block';
		element.style.display = 'none';
		window[whichBoolean(id)] = false;
		
		switchArrow(id, 0); /*fde*/
	}
}

/*fde: switches the src of an <img> element in the same row as the element that triggered the event,
   sets the arrow pointing right (item closed) or down (item opened)  */
function switchArrow(id, iState) {

	if (window.event) /*ie only!*/ {
		if(id=="ReferenceId" || id=="DocumentationId" || id=="LinksId"){
		    var IMG_ARROW_PATH = '/img/layout/';
			var IMG_ARROW = [ 'white_arrow.gif', 'white_arrow_down.gif' ];
		    var imgLcl = document.getElementById(id+"Image");
    	    imgLcl.src = IMG_ARROW_PATH + IMG_ARROW[iState];
		    imgLcl.style.marginTop = iState*2 + 'px';/*alignment*/
		}else{
		    var el = window.event.srcElement;
		    if (el.parentNode)
		    {
			    var IMG_ARROW_PATH = '/img/layout/';
			    var IMG_ARROW = [ 'white_arrow.gif', 'white_arrow_down.gif' ];
			    var imgArrow = el.parentNode.getElementsByTagName('img');
			    if (imgArrow.length>0) {
				    imgArrow[0].src = IMG_ARROW_PATH + IMG_ARROW[iState];
				    imgArrow[0].style.marginTop = iState*2 + 'px';/*alignment*/
			    }
		    }
		}
	}
}

function whichBoolean(id)
{
	switch(id) {
		case 'DocumentationId':
			return 'openedDocumentation'
		break;

		case 'ReferenceId':
			return 'openedReference'
		break;

		case 'LinksId':
			return 'openedLinks'
		break;
	}
}

