function applyLabel(pmid, fig)
{
	var multi_yes_same = $('multi_yes_same');
	if (multi_yes_same.checked) {
		//alert('Multi checked!');
		applyLabelMulti(pmid, fig); // multiple images, all the same
	} else {
		//alert('Multi NOT checked!');
		applyAJAX(pmid, fig); // single image OR multiple images, varying
	}
}

function applyLabelMulti(pmid, fig)
{
	//alert('In applyLabelMulti');
	// Get the row/col values for multiple images, all the same
	var rowSame = $F('rowSame');
	var colSame = $F('colSame');
	for (var rowCur=1;rowCur<=rowSame;rowCur++) // Cycle through rows
	{
		for (var colCur=1;colCur<=colSame;colCur++) // Cycle through cols
		{
			// Set (the other) row and col boxes that determine what actually gets a label
			//alert("Doing row: " + rowCur + " col: " + colCur);
			var gridRow = $('gridRow');
			var gridCol = $('gridCol');
			gridRow.value = rowCur;
			gridCol.value = colCur;
			// Run AJAX submit
			applyAJAX(pmid, fig);
		}
	}
}

function applyAJAX(pmid, fig)
{
	//alert('In applyAJAX');
	var url = 'labels_history.php';		
	var formName = 'tag'+'-'+pmid+'-'+fig;
	var pars = Form.serialize(formName) + "&action=apply_label";
	var destination = 'result'+'-'+pmid+'-'+fig;
	var myAjax = new Ajax.Updater( {success: destination}, url, { method: 'get', parameters: pars });

}

function deleteAJAX(row, col, login, pmid, fig)
{
	// Confirm delete
	var answer = confirm("Delete label (row: "+row+", col: "+col+")?")
	if (!answer){
		return false; // Abort
	}
	// Else, continue with delete
	var url = 'labels_history.php';		
	var pars = "row="+row+"&col="+col+"&login="+login+"&pmid="+pmid+"&fig="+fig+"&action=delete_label";
	var destination = 'result'+'-'+pmid+'-'+fig;
	
	var myAjax = new Ajax.Updater( {success: destination}, url, { method: 'get', parameters: pars });
	new Effect.Highlight( 'toHighlight' );
}

function resetOthers(thisNode, pmid, fig)
{
	var formToCheck = 'tag-'+pmid+'-'+fig;
	var formElements = Form.getInputs(formToCheck, 'checkbox');
	var parent = thisNode.parentNode;
	for (i=0; i<formElements.length; i++) {
		if (formElements[i].name != thisNode.name) {
			if (thisNode.checked) {
				formElements[i].checked = false;
				formElements[i].disabled = true;
			} else {
				formElements[i].disabled = false;
			}
		}
	}
}

function resetAllCheckboxes(pmid, fig)
{
	var formToCheck = 'tag-'+pmid+'-'+fig;
	var formElements = Form.getInputs(formToCheck, 'checkbox');
	for (i=0; i<formElements.length; i++) {
		formElements[i].disabled = false;
		formElements[i].checked = false;
	}
}

function toggleGrid()
{
	var divGrid = $('gridColumn');
	var divRowCol = $('rowColColumn');
	var divTags = $('tagColumn');
	
	// For swapping the radio button labels
	var singleFigureText = $('singleFigureText');
	var multiFigureSameText = $('multiFigureSameText');
	var multiFigureVaryText = $('multiFigureVaryText');
	var singleCaptionText = $('singleCaptionText');
	var multiCaptionSameText = $('multiCaptionSameText');
	var multiCaptionVaryText = $('multiCaptionVaryText');
	
	var multi_yes_same = $('multi_yes_same');
	var multi_yes_vary = $('multi_yes_vary');
	if (multi_yes_same.checked) {
		// Show grid
		divGrid.style.display = 'none';
		divRowCol.style.display = 'block';
		divTags.style.left = '115px';
		// Swap labels
		singleFigureText.style.display = 'none';
		multiFigureSameText.style.display = 'inline';
		multiFigureVaryText.style.display = 'none';
		singleCaptionText.style.display = 'none';
		multiCaptionSameText.style.display = 'inline';
		multiCaptionVaryText.style.display = 'none';
		resetGrid();
	} else if (multi_yes_vary.checked) {
		// Show grid
		divGrid.style.display = 'block';
		divRowCol.style.display = 'none';
		divTags.style.left = '115px';
		// Swap labels
		singleFigureText.style.display = 'none';
		multiFigureSameText.style.display = 'none';
		multiFigureVaryText.style.display = 'inline';
		singleCaptionText.style.display = 'none';
		multiCaptionSameText.style.display = 'none';
		multiCaptionVaryText.style.display = 'inline';
		resetGrid();
	} else {
		// Hide grid, reset row/col to 1
		divGrid.style.display = 'none';
		divRowCol.style.display = 'none';
		divTags.style.left = '0px';
		// Swap labels
		singleFigureText.style.display = 'inline';
		multiFigureSameText.style.display = 'none';
		multiFigureVaryText.style.display = 'none';
		singleCaptionText.style.display = 'inline';
		multiCaptionSameText.style.display = 'none';
		multiCaptionVaryText.style.display = 'none';
		
		var gridRow = $('gridRow');
		var gridCol = $('gridCol');
		gridRow.value = 1;
		gridCol.value = 1;
		resetGrid();
	}
}
	
function toggleDivs(div1, div2)
{
	var divOn = $(div1);
	var divOff = $(div2);
	divOn.style.display = 'block';
	divOff.style.display = 'none';
}

function toggleSpans(span1, span2)
{
	var spanOn = $(span1);
	var spanOff = $(span2);
	spanOn.style.display = 'inline';
	spanOff.style.display = 'none';
}

function closewindow() {
	self.opener = this;
	self.close()
}

// Find expandable spans and toggle on/off
function toggleAllExpandables() {
    var spanArray = document.getElementsByTagName("span");
    for (i=0;i<spanArray.length;i++) {
        temp = spanArray[i].id.split('_');
        //alert(temp[0]);
        if (temp[0] == 'shorttext' || temp[0] == 'longtext' || 
			temp[0] == 'shorttable' || temp[0] == 'longtable') {
            $(spanArray[i].id).toggle();
        }
    }
}

// Handle checkbox click. Checked expands sections, unchecked shortens.
function handleExpandables(checkbox) {
	//alert(checkbox.checked);
	if (checkbox.checked) {
		expandAllExpandables();
	} else {
		shortenAllExpandables();
	}	
}

// Expand all short sections
function expandAllExpandables() {
    var spanArray = document.getElementsByTagName("span");
	var count=0;
    for (i=0;i<spanArray.length;i++) {
        temp = spanArray[i].id.split('_');
		if (count < 1) {
			//alert($(spanArray[i].id).display);
		}
        //alert(temp[0]);
        if (temp[0] == 'shorttext' || temp[0] == 'shorttable') {
            $(spanArray[i].id).hide();
        }
        if (temp[0] == 'longtext' || temp[0] == 'longtable') {
            $(spanArray[i].id).show();
        }
		count++;
    }
}

// Shorten all expanded sections
function shortenAllExpandables() {
    var spanArray = document.getElementsByTagName("span");
	var count=0;
    for (i=0;i<spanArray.length;i++) {
        temp = spanArray[i].id.split('_');
		if (count < 1) {
			//alert($(spanArray[i].id).display);
		}
        //alert(temp[0]);
        if (temp[0] == 'longtext' || temp[0] == 'longtable') {
            $(spanArray[i].id).hide();
        }
        if (temp[0] == 'shorttext' || temp[0] == 'shorttable') {
            $(spanArray[i].id).show();
        }
		count++;
    }
}


// Toggle a type of result section throughout page
function toggleSection(section) {
	//alert(section);
    var divArray = document.getElementsByTagName("div");
    for (i=0;i<divArray.length;i++) {
        temp = divArray[i].id.split('_');
        //alert(temp);
        if (temp[0] == section) {
			///\alert(temp);
            $(divArray[i].id).toggle();
        }
    }
}

// Save interface info so data can be displayed on subsequent pages
function saveInterface() {

	// Save Abstract checkbox
	createCookie('abstract_checkbox',$('show-abstract').checked,30);
	
	// Save Full-Text checkbox
	createCookie('fulltext_checkbox',$('show-fulltext').checked,30);
	
	// Save Figures checkbox
	createCookie('figures_checkbox',$('show-figures').checked,30);
}

// Cookie functions
// http://www.quirksmode.org/js/cookies.html

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

// Function that serializes form vars and performs a GET
function submitForm(form) {
	query = form.serialize();
	url = form.action+"?"+query;
	alert(url);
	location.href=url;
}

/* FUNCTIONS FOR SIMILAR BOXES */

// Add single term to query box
function addTerm(term) {
	currentTerm = $('textinput').value.strip(); // current search is here
	if (currentTerm != '') {
		newTerm = currentTerm + ' OR "' + term +'"';
	} else {
		newTerm = '"' + term +'"'
	}
	$('textinput').value = newTerm;
	new Effect.Highlight($('textinput'));
}

// Decide whether to add/remove term associated with checkbox to/from query
function handleTermCheck(checkboxId) {
	if ($(checkboxId).checked == true) {
		// is checked so add
		addTermCheck(checkboxId);
	} else {
		// is unchecked so remove
		removeTermCheck(checkboxId);
	}
}

// Add single term from associated checkbox to query box
function addTermCheck(checkboxId) {
	term = $(checkboxId).value; // term to add
	currentTerm = $('textinput').value.strip(); // current search query
	if (currentTerm != '') {
		newTerm = currentTerm + ' OR "' + term +'"';
	} else {
		newTerm = '"' + term +'"'
	}
	$('textinput').value = newTerm;
	new Effect.Highlight($('textinput'));
}

// Remove single term from associated checkbox to query box
function removeTermCheck(checkboxId) {
	term = $(checkboxId).value; // term to remove
	currentTerm = $('textinput').value.strip(); // current search query
	currentArray = new Array();
	currentArray = currentTerm.split(' OR ');
	newTerm = '';
	newArray = new Array();
	for (i=0;i<currentArray.length;i++) {
		toCheck = currentArray[i].replace(/"/g, "");
		if (toCheck != term) {
			newArray.push(currentArray[i]);
		}
	}
	newTerm = newArray.join(' OR ');
	$('textinput').value = newTerm;
	new Effect.Highlight($('textinput'));
}

// Add all similar terms to query box
function addAllTerms(simTerms) {
	currentTerm = $('textinput').value.strip(); // current search query
	splitTerms = simTerms.split('@%@');
	term = splitTerms.join('" OR "');
	addTerm(term);
}

// Check all checkboxes in similar box
function checkAllSimilar() {
	elements = document.getElementsByTagName('input');
	for (i=0;i<elements.length;i++) {
		if (elements[i].id.substring(0,8) == 'simcheck') {
			elements[i].checked = true;
		}
	}
}

// Clear all checkboxes in similar box
function clearAllSimilar() {
	elements = document.getElementsByTagName('input');
	for (i=0;i<elements.length;i++) {
		if (elements[i].id.substring(0,8) == 'simcheck') {
			elements[i].checked = false;
		}
	}
}


// Function that serializes search form vars and performs a GET
function submitForm(form) {
	// Only submit if there is content in search box
	textinput = $('textinput').value.strip();
	if (textinput != '') {
		query = form.serialize();
		url = "index.php?"+query;
		//alert(textinput);
		location.href=url;
	}
}

// Toggles Related Gene tab in header
function toggleGeneTab() {
	$('summary_gene_open').toggle();
	$('summary_gene_close').toggle();
}

//function getSimilar() {
	
//	var url = encodeURIComponent('similar.php');


//	new Ajax.Request(url, {
//	    method: 'get',
//		onLoading: $('similar').update('<img src="images/tri_gray_down.gif" border="0">'); }
//	    onSuccess: function(transport) { $('similar').update(transport.responseText); }
//	);

//}

// Related terms scripts (Ajax)
function getRelatedGenes()
{
	var url = encodeURIComponent('similarAjax.php');
	var pars = "q=<?=$_REQUEST['q']?>";
	
	var myAjax = new Ajax.Request(
		url, 
		{
			method: 'get', 
			parameters: pars, 
			onComplete: showResponse
		});
	
}

function showResponse(originalRequest)
{
	//put returned HTML in the similar area
	$('similar').update(originalRequest.responseText);
}