var Site = {
	research_rows: 0,
	
	start: function() {
		if ($('research-table'))
			Site.populateResearchTable();
	},
	
	populateResearchTable: function() {
		for (var i=0;i<x;i++) {
			var row = new Element('tr', 			{'id': 'research-row-' + i, 'class': 'research-row'});
			var field_cell = new Element('td', 		{'class': 'field-cell', 'id': 'field-cell-' + i});
			var program_cell = new Element('td', 	{'class': 'program-cell', 'html': '&nbsp;', 'id': 'program-cell-' + i});
			var field_link = new Element('a',		{'href': research[i]['link'], 'text': research[i]['name'], 'id': 'research-link-' + i});
			field_link.addEvent('mouseover', Site.populateResearchPrograms);
			field_cell.adopt(field_link);
			row.adopt(field_cell);
			row.adopt(program_cell);
			$('research-table-body').adopt(row);
		}
		// move the shadow back to the end
		$('research-table-body').adopt('research-shadow');
	},
	
	populateResearchPrograms: function() {
		var id = 0;
		for (var i=0;i<x;i++) {
			if ('research-link-' + i == this.id)
				id = i;
		}
		
		var max_rows = (x > research[id]['children'].length ? x : research[id]['children'].length);
		if (max_rows < Site.research_rows) {
			// remove some rows
			for (var i=max_rows;i<Site.research_rows;i++) {
				if ($('research-row-' + i))
					$('research-row-' + i).destroy()
			}
		}
		
		for (var i=0;i<=max_rows;i++) {
		
			if ($('field-cell-' + i))
				$('field-cell-' + i).className = 'field-cell';
				
			if (research[id]['children'][i]) {
				if (!$('program-cell-' + i)) {
					var row = new Element('tr', 			{'id': 'research-row-' + i, 'class': 'research-row'});
					var field_cell = new Element('td', 		{'class': 'field-cell', 'html': '&nbsp;'});
					var program_cell = new Element('td', 	{'class': 'program-cell', 'html': '&nbsp;', 'id': 'program-cell-' + i});
					row.adopt(field_cell);
					row.adopt(program_cell);
					$('research-table-body').adopt(row);
				}
				var program_link = new Element('a',		{'href': research[id]['children'][i]['link'], 'text': research[id]['children'][i]['name'], 'id': 'program-link-' + i});
				$('program-cell-' + i).innerHTML = '';
				$('program-cell-' + i).adopt(program_link);
			} else if ($('program-cell-' + i)) {
				$('program-cell-' + i).innerHTML = '&nbsp;';
			}
		}
		
		if ($('field-cell-' + id))
			$('field-cell-' + id).className = 'field-cell-active';
		
		// move the shadow back to the end
		$('research-table-body').adopt('research-shadow');
		Site.research_rows = max_rows;
	}
	
};


// XHTML Strict is awesome, silence critics
function openExternalLink(url) {
	window.open(url, '_external');
}

function delete_dom_item(element, hasWaited) {
	if (hasWaited != null) {
		$(element).destroy()
	} else {
		setTimeout('delete_dom_item(\'' + element + '\', 1);', 1000);
	}
}

window.addEvent('domready', Site.start);