
[].indexOf || (Array.prototype.indexOf = function(v,n){
  n = (n==null)?0:n; var m = this.length;
  for(var i = n; i < m; i++)
    if(this[i] == v)
       return i;
  return -1;
});

function hasObjValues(obj) {
	for (var idx in obj) {
		return true;
	}	
	return false;
}

/**********************************/

function showSubnav(key) {
	hideOtherSubnavs(key);
	setSubnavWidth(key, getSubnavWidth(key));
	setSubnavX(key, getTopnavX(key));
	displaySubnav(key);
}

function displaySubnav(key) {
	var el = document.getElementById(key+'_js_subnav');
	if (el) {
		el.style.display = 'inline'; 
	}
}

function hideSubnav(key) {
	var el = document.getElementById(key+'_js_subnav');
	if (el) {
		el.style.display = 'none'; 
	}
}

function hideAllSubnavs() {
	for (var i1 = 0; i1 < subnavitems.length; i1++) {
		hideSubnav(subnavitems[i1]);
	}
}

function hideOtherSubnavs(key) {
	for (var i1 = 0; i1 < subnavitems.length; i1++) {
		if (subnavitems[i1] != key) {
			hideSubnav(subnavitems[i1]);
		}
	}
}

function changeSubnavCellCSS(cell, classname) {
	cell.className = classname;
}


/**********************************/


function getTopnavX(key) {
	var x = document.getElementById('constraintcell').offsetLeft + document.getElementById(key+'_topnav').offsetLeft;
	return(x);
}

function getSubnavWidth(key) {
	var index = subnavitems.indexOf(key);
	if (subnavitems[index+1]) {
		var nextitem = subnavitems[index+1];
		var width = document.getElementById(nextitem+'_topnav').offsetLeft - document.getElementById(key+'_topnav').offsetLeft;
		return(width);
	} else {
		return(150);
	}
}

function setSubnavWidth(key, width) {
	var el = document.getElementById(key+'_js_subnav');
	if (el) {
		el.style.width = width;
		for (var i1 = 0; i1 < el.rows.length; i1++) {
			el.rows[i1].cells[0].style.width = width;
		}
	}
}

function setSubnavX(key, x) {
	var el = document.getElementById(key+'_js_subnav');
	if (el) {
		el.style.left = x+1;
	}
}
