var lastShownID = null;

function xtoggleEl(blockID, makeVisible){

     el = xbGetElement(window,blockID);
     if (makeVisible) xbElOpen(el);
     else xbElClose(el);
}
function hideEl(blockID){ el = xbGetElement(window,blockID); xbElClose(el);}
function showEl(blockID){el = xbGetElement(window,blockID);xbElOpen(el);}
function hideEls(elClassName, elType){ toggleElsByClassName(elClassName, elType, false); }
function showEls(elClassName, elType){ toggleElsByClassName(elClassName, elType, true); }

function toggleEl(id, blockPrefix, synPrefix){
  	elBlk = xbGetElement(window,blockPrefix + '_' + id);
     elSyn = xbGetElement(window,synPrefix + '_' + id);
      
     var elVisible = (xbIsVisible(elBlk) ) ;
	// Hide all blocks
	if (lastShownID && id != lastShownID){
         	hideEl(blockPrefix + '_' + lastShownID );
       	if (elSyn) showEl(synPrefix + '_' + lastShownID );
 	}

     //toggleElsByPrefix(blockPrefix, false);
 	if (elVisible ) {
       	hideEl(blockPrefix + '_' + id );
       	if (elSyn) showEl(synPrefix + '_' + id );
  	}
 	else {
       	showEl(blockPrefix + '_' + id );
          if (elSyn) hideEl(synPrefix + '_' + id );
     	lastShownID = id;
  	}
}
function toggleElsByPrefix(prefix, show){
  	var id = 1;
	while (el = xbGetElement(window,prefix + '_' + id++)){
     	if (show ) showEl(prefix + '_' + id );
 		else hideEl(prefix + '_' + id );
 	}
}
function toggleElsByClassName(elClassName, elType, show){
	var node = document.getElementsByTagName("body")[0];
	var re = new RegExp('\\b' + elClassName + '\\b');
	var els = node.getElementsByTagName("*");
   	for(var i=0,j=els.length; i<j; i++){
	  	if(re.test(els[i].className)){
            	el = els[i];
            	if (show){
  		    		if (elType=='B')xbElOpen(el);
  		    		else xbElOpen(el, 'I');
  		    	    }
  		    	    else{
  		    		if (elType=='B')xbElClose(el);
  		    		else xbElClose(el);

             	}
    		}
	}
}