var opn = 0;
var USEOPN = 0; var ISON=false;
function xtogdsply () { // arg list:  oid,togl,mode,style

  //var arglst = new Array (arguments.length);
  //for ( var w = 0; w< arguments.length ; w++) { arglst[w] = arguments[w]; }
  var arglst = Array.prototype.slice.call(arguments);
  
  var mode  = 0; // default mode: 0 (block) or 1 (inline)
  var togl  = 0; // default togl: 0 (flip), 1 (show), -1 (hide)
  var style = 0; // default style: 0 (display) or 1 (visibility)
  var s = new Array(2);
  s[0] = new Array ('block','inline','none','');
  s[1] = new Array ('visible','hidden','hidden');

  if (arglst[0]) { var oid = arglst[0] } else { return };
  if (arglst[3]) { if (arglst[3] == 1) style = 1;      }
  if ((arglst[2]) && (style == 0)) { if (arglst[2] >  0) mode = arglst[2] }
  if (arglst[1]) { if (arglst[1] != 0) togl = arglst[1]  }
  if (arglst[0]) { var oid = arglst[0] } else { return; }
  var obj = document.getElementById(oid);

  (style) ? objstyle = obj.style.visibility : objstyle = obj.style.display ;
//  showmode = document.getElementById('mode');
//  showmode.innerHTML = 'mode ('+mode+') | style ('+style+')';

  // reuse mode var
  if (togl == 0) {
  	if (!style) {
  	  if ((objstyle == s[style][0]) || (objstyle == s[style][1]))  { mode = s[style][2]; } else { mode = s[style][mode]; }

  	} else {
 		(objstyle == s[style][2]) ? mode = s[style][0] : mode = s[style][2];
 	}
  }
  if (togl  > 0) mode = s[style][0]; // block or visible
  if (togl  < 0) mode = s[style][2];

  if (style) {  obj.style.visibility = mode; } else { obj.style.display = mode; }
  // schematics label only
  if (USEOPN) {
	  var sm = parseInt(oid.replace(/sm/,''),10);
	  obj = document.getElementById('scmlabl'); //obj.style.visibility='hidden'
	  var opened = ((mode == 'visible') || (mode=='inline') || (mode == 'block'));
	  if(obj) { 
		 if (sm>2) {
			 if (opened) { ISON = true; opn = opn+1; } else { (opn>0) ? (opn=opn-1) : opn=0; }
		 } else { ISON = false ; }
		 ISON = ISON && (opn>0);
		 if ( ISON ) {obj.style.visibility='visible' } else {obj.style.visibility='hidden'}
	  }
  }
}

// for a collection of named elements
function xtogelmts () {

  var args = Array.prototype.slice.call(arguments);

  var e = args[0]; if (!e || (e =="")) return;
  //unified for IE/FF support  
  var g = document.getElementsByTagName("input");
  var gp = new Array;
  for (c=0; c<g.length; c++) {
   var a= g[c].getAttribute("name");
   if (a == e) {
    gp.push( document.getElementById('xidx_'+g[c].getAttribute("value") ));
   }
  }
  
  var mode,togl,style;
  (isNaN(parseInt(args[1]))) ? mode='""' : mode=parseInt(args[1]);
  (isNaN(parseInt(args[2]))) ? togl='""' : togl=parseInt(args[2]);
  (isNaN(parseInt(args[3]))) ? style='""' : style=parseInt(args[3]);
  
 //  alert(e+' args.length: '+args.length + ',  g.length: '+ g.length+'['+mode+','+togl+','+style+']');  
  for (var w=0;w<gp.length;w++){
	xtogdsply(gp[w].id,mode,togl,style); 
  }
}

function xtogall (bid,m) {
for (var x=0; x <= xidxN; x++ ) {
	if (document.getElementById(bid+x)) {
         xtogdsply(bid+x,0)
    }
 }
}

// function to toggle between two sort directions (via two dynamic links)
function xSortCol (formObj,xdlkbase,xdir) {
  setFormObject(formObj);
  var xd = parseInt(xdir);
  if (isNaN(xd)) xd = 1;
  if (xd < 0) {
    var dir = "dsc";
    SetInputValue('xSortDir',1);
  } else {
    var dir = "asc";
    SetInputValue('xSortDir',-1);
  }
  xPostSort(formObj, xdlkbase+dir);
}

