/**
 *
 * @access public
 * @return void
 **/

function catbotBeginTagEdit( oEvent /* object */, strTags /* string */ )
{
	var strId = "";
	if ( !oEvent.srcElement )
	{
		strId = oEvent.target.id;
	}
	else
	{
		strId = window.event.srcElement.id;
	}

	var oSpanElement = document.getElementById( strId );
	var strEditId = strId + "_edit";
	var strOkId = strId + "_ok";
	var strCancelId = strId + "_cancel";
	var oEditElement = document.getElementById( strEditId );
	var oOkElement = document.getElementById( strOkId );
	var oCancelElement = document.getElementById( strCancelId );

	oSpanElement.textContent = "enter tags";
	oEditElement.style.display = "inline";
	oOkElement.style.display = "inline";
	oCancelElement.style.display = "inline";

	if ( strTags != null )
	{
		oEditElement.value = strTags;
	}

	oTextbox = new AutoSuggestControl( oEditElement, new RemoteStateSuggestions());
}

function catbotEndTagEdit( oEvent /* object */, bCommit /* boolean */ )
{
	var strId = "";
	if ( !oEvent.srcElement )
	{
		strId = oEvent.target.id;
	}
	else
	{
		strId = window.event.srcElement.id;
	}

	var regExp = new RegExp( "_ok|_cancel" );
	var strSpanId = strId.replace( regExp, "" );
	var oSpanElement = document.getElementById( strSpanId );
	var strEditId = strSpanId + "_edit";
	var strOkId = strSpanId + "_ok";
	var strCancelId = strSpanId + "_cancel";
	var oEditElement = document.getElementById( strEditId );
	var oOkElement = document.getElementById( strOkId );
	var oCancelElement = document.getElementById( strCancelId );

	if ( bCommit == true )
	{
		oSpanElement.textContent = "(saved)";
		oSpanElement.className = "resultSaved";
		oSpanElement.onclick = "";
		SubmitTags( strSpanId, oEditElement.value );

		var target = window.location.href;
		var iArguments = target.lastIndexOf( "?" );
		if ( iArguments != -1 )
		{
			//target = target.substring( 0, iArguments );
			target = target.replace( /\&reset=1|\?reset=1/ , "" );
			target = target + "&reset=1";
			if ( target.lastIndexOf( "?" ) == -1 )
			{
				target = target.replace( /\&/, "?" );
			}
		}
		else
		{
			target = target + "?reset=1";
		}

		window.location.href = target;
	}
	else
	{
		oSpanElement.textContent = "tag this";
		oEditElement.value = "";

		oEditElement.style.display = "none";
		oOkElement.style.display = "none";
		oCancelElement.style.display = "none";
	}

}

/**
 *
 * @access public
 * @return void
 **/
function SubmitTags( iArtifactId, strTags )
{
	var http;
	if ( typeof XMLHttpRequest != "undefined" )
	{
		http = new XMLHttpRequest();
	}
	else if (typeof ActiveXObject != "undefined")
	{
		http = new ActiveXObject("MSXML2.XmlHttp");
	}
	else
	{
		alert("No XMLHttpRequest object available. This functionality will not work.");
		return;
	}

	var regExpr = new RegExp( "(,|, )$" );
	strTags = strTags.replace( regExpr, "" );

	var strURL = "submit_artifact_tags.php?artifact_id=" + iArtifactId + "&artifact_tags=" + encodeURIComponent( strTags );
	http.open( "get", strURL , false );
	http.send(null);
}

function UpdateAdvancedSearch()
{
	if(document.getElementById("showAS").checked)
	{
		document.getElementById("advancedSearchOptions").style.display = "";
	}
	else
	{
		document.getElementById("advancedSearchOptions").style.display = "none";
	}
}

/**
 *
 * @access public
 * @return void
 **/
function ToggleTagCloudVisibility( cloud_id, expand )
{
	var oElement = document.getElementById( cloud_id );
	var strControllerId = cloud_id + " controller";
	var oImg = document.getElementById( strControllerId );
	var current_visibility = oElement.style.display;

	if (current_visibility.indexOf("none") == -1 )
	{
		oElement.style.display = "none";
		oImg.setAttribute("src", "images/expand.png");
	}
	else
	{
		oElement.style.display = "inline";
		oImg.setAttribute("src", "images/collapse.png");
	}
}

function CountRemaining(inputId, countId, maxChars)
{
	inputElement = document.getElementById(inputId);
	countElement = document.getElementById(countId);

	if(inputElement && countElement)
	{
		if(inputElement.value.length > maxChars)
		{
			inputElement.value = inputElement.value.substring(0, maxChars);
		}
		var numLeft = maxChars - inputElement.value.length;
		countElement.innerHTML = numLeft + " / " + maxChars + " characters remaining";
	}
}

function SubmitBrowseForm(selectId, actionString, categoryString)
{
	formElement = document.getElementById('browseForm');
	selectElement = document.getElementById(selectId);
	if(formElement && selectElement)
	{
		formElement.action = "browse.php?" + actionString + "=1&" + categoryString + "=" + selectElement.value;
		formElement.submit();
	}
}

function SubmitResultsPerPageForm()
{
	formElement = document.getElementById('resultsPerPageForm');
	if(formElement)
	{
		formElement.submit();
	}
}
