/**
 * ROAR Profiles javascript functions
 *
 * These functions are specific to the sidebar version of the search. Some
 * functions used in roar_profiles.js as well.
 */

var strLoadSpinControls = '<table><tr><td style="vertical-align: middle;padding-left: .5em;"><img src="/images/ajax-loader-9cb2ad.gif"/></tr></td></table>';// loading message for controls ajax spinner
var strLoadSpinSearch = '<h3><br/><img style="vertical-align: middle;" src="/images/ajax-loader-large_9cb2ad.gif"/>&nbsp;Searching, please wait...</h3>';// loading message for ajax search spinner
var strSearchResultsClassList = 'roar_results_list_grid';// class name for list results style

//-------------------------------------------------------------------
// load a roar profile
//-------------------------------------------------------------------
function loadROARProfilePage(intId, strName) {
	// add results update message
	// roar profile page version

	// will be replaced with results in callback function
	getObj(strROARProfileId);
	var strHTML = obj.innerHTML;
	// add search spinner in roar profile
	obj.innerHTML = ('<h3 style="text-align: center;">Loading Profile for ' + strName + ', please wait...<br/><img style="margin-top: .3em;" src="/images/ajax-loader-large.gif"/></h3>');

	var strRequest = app_path + '/ajax/ajaxDo_renderItem.php?render=Sidebar&class=ROARProfile&id=' + intId;
	sendRequest(strRequest, loadROARProfilePage_Callback);
}// function loadROARProfilePage

function loadROARProfilePage_Callback(req) {
	// handle callback data from the ajax call
	// roar profile page version
	var s = req.responseText;

	// split result string into array elements
	var arrResults = s.split('$$$$$]');

	// first array element should be roar profile html
	// second array element should be roar profile id
	var intROARProfileId = arrResults[1];

	// write data to roar profile container
	getObj(strROARProfileId);
	obj.innerHTML = arrResults[0];// write roar profile html

	// update category list if visible
	getObj(strCategoryListId);
	if (obj.style.display == 'block') {// category list is visible; update it
		// add category update message
		$('#'+strFilterLoaderId).html(strLoadSpinSmall);
		$('#'+strFilterLoaderId).show('fast');

		var strRequest = app_path + '/ajax/ajaxDo_getFilters.php?render=Sidebar&action=renderCategoryList';
		sendRequest(strRequest, updateCategoryList2_Callback);// don't toggle visibility of category list box
	}

	// get roar profile ajax data
	getPanelProject(intROARProfileId);
}// function loadROARProfilePage_Callback
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// clear search results
//-------------------------------------------------------------------
function clearSearchResultsSidebar() {
	// function clears search results session variables

	// clear search box
	setSearchQuery('');

	// clear tags and tag textbox
	//clearTags();

	var strRequest = app_path + '/ajax/ajaxDo.php?render=Sidebar&action=clearSearchResults&reset=1';
	sendRequest(strRequest, clearSearchResultsSidebar_Callback);
}// function clearSearchResults

function clearSearchResultsSidebar_Callback(req) {
	// handle callback data from the ajax call

	var s = req.responseText;

	if (s != 'success') alert(s);// display message if error
	// reloading page so no need to ajax everything
	/*if (s == 'success') {// update search results
		// call next line to run search again
		//updateSearchResultsSidebar('');// update search results with empty search string

		// update category list if visible
		getObj(strCategoryListId);
		if (obj.style.display == 'block') {// category list is visible; update it
			// add category update message
			$('#'+strFilterLoaderId).html(strLoadSpinSmall);
			$('#'+strFilterLoaderId).show('fast');

			var strRequest = app_path + '/ajax/ajaxDo_getFilters.php?render=Sidebar&action=renderCategoryList';
			sendRequest(strRequest, updateCategoryList2_Callback);// don't toggle visibility of category list box
		}

		// update search results
		getObj(strSearchResultsId);
		obj.innerHTML = strSearchEmptyHtml;// display empty search html

		// update controls box
		updateControlsSidebar();
	}*/

	// redirect to start page
	window.location.href = strPageStart;
}// function clearSearchResultsSidebar_Callback
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// update search results
//-------------------------------------------------------------------
function searchButtonSidebar_click() {
	// function handles the search procedure
	// that occurrs when a user clicks the search button

	// set page number back to 1
	var strRequest = app_path + '/ajax/ajaxDo.php?render=Sidebar&action=setCurrentPage&value=1';
	sendRequest(strRequest, searchButtonSidebar_click_Callback1);
}// function searchButtonSidebar_click

function searchButtonSidebar_click_Callback1(req) {
	// next part of search procedure
	// update search results via ajax call

	// handle callback data from the ajax call
	var s = req.responseText;

	// display callback data if not success
	if (s != 'success') alert(s);

	var strSearch = getSearchQuery();// store search query

	// add results update message
	// will be replaced with results in callback function
	getObj(strSearchResultsId);
	obj.innerHTML = strLoadSpinSearch;// add search spinner to search results (remove search results)

	if (!strSearch) {// no search string supplied, use special search string to cause ajax script to clear the saved search string
		var strRequest = app_path + '/ajax/ajaxDo_search.php?render=Sidebar&action=ROARProfiles&search=' + strEmptySearch;
	} else {// search string supplied, update search string and results
		var strRequest = app_path + '/ajax/ajaxDo_search.php?render=Sidebar&action=ROARProfiles&search=' + strSearch;
	}
	sendRequest(strRequest, searchButtonSidebar_click_Callback2);
}// function searchButtonSidebar_click_Callback1

function searchButtonSidebar_click_Callback2(req) {
	// next part of search procedure

	// get callback data
	var s = req.responseText;

	// update search results box
	getObj(strSearchResultsId);
	obj.innerHTML = s;

	// update category list if visible
	getObj(strCategoryListId);
	if (obj.style.display == 'block') {// category list is visible; update it
		// add category update message
		$('#'+strFilterLoaderId).html(strLoadSpinSmall);
		$('#'+strFilterLoaderId).show('fast');

		var strRequest = app_path + '/ajax/ajaxDo_getFilters.php?render=Sidebar&action=renderCategoryList';
		sendRequest(strRequest, updateCategoryList2_Callback);// don't toggle visibility of category list box
	}

	updateControlsSidebar();// update controls box
}// function searchButtonSidebar_click_Callback2

function updateSearchResultsSidebar(strSearch) {
	// function updates search results via ajax call
	// search sidebar version
	// strSearch (string)			optional, the search string to use

	// add results update message
	// will be replaced with results in callback function
	getObj(strSearchResultsId);
	obj.innerHTML = strLoadSpinSearch;// add search spinner to search results (clear search results)

	if (!strSearch) {// no search string supplied, just update search results
		var strRequest = app_path + '/ajax/ajaxDo_search.php?render=Sidebar&action=ROARProfiles&format=list';
	} else {// search string supplied, update search string and results
		var strRequest = app_path + '/ajax/ajaxDo_search.php?render=Sidebar&action=ROARProfiles&format=list&search=' + strSearch;
	}
	sendRequest(strRequest, updateSearchResultsSidebar_Callback);
}// function updateSearchResultsSidebar

function updateSearchResultsSidebar_Callback(req) {
	// handle callback data from the ajax call
	// search sidebar version
	var s = req.responseText;

	getObj(strSearchResultsId);
	obj.innerHTML = s;

	// update category list if visible
	getObj(strCategoryListId);
	if (obj.style.display == 'block') {// category list is visible; update it
		// add category update message
		$('#'+strFilterLoaderId).html(strLoadSpinSmall);
		$('#'+strFilterLoaderId).show('fast');

		var strRequest = app_path + '/ajax/ajaxDo_getFilters.php?render=Sidebar&action=renderCategoryList';
		sendRequest(strRequest, updateCategoryList2_Callback);// don't toggle visibility of category list box
	}

	//updateTagList();// update tag list
}// function updateSearchResultsSidebar_Callback
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// update state selection
//-------------------------------------------------------------------
function updateStateSelectionSidebar() {
	// update selected state via ajax call

	// add update message
	showFilterSpinner();

	var intState = getStateSelection();// lookup state selection status in form
	var strRequest = app_path + '/ajax/ajaxDo.php?action=setStateSelection&state=' + intState;
	sendRequest(strRequest, updateStateSelectionSidebar_Callback);// update session data
}// function updateStateSelection

function updateStateSelectionSidebar_Callback() {
	// handle callback data from the ajax call
	// clear category update message
	$('#'+strFilterLoaderId).hide('fast');

	// update search results
	searchButtonSidebar_click();
}// function updateStateSelection_Callback
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// update sort selection
//-------------------------------------------------------------------
function updateSortSelectionSidebar() {
	// update selected sort expression via ajax call

	// add update message
	showFilterSpinner();

	var strSort = getSortSelection();// lookup sort selection status in form
	var strRequest = app_path + '/ajax/ajaxDo.php?action=setSortSelection&sort=' + strSort;
	sendRequest(strRequest, updateSortSelectionSidebar_Callback);// update session data
}// function updateSortSelectionSidebar

function updateSortSelectionSidebar_Callback(req) {
	// handle callback data from the ajax call
	// clear category update message
	$('#'+strFilterLoaderId).hide('fast');

	// handle callback data from the ajax call
	var s = req.responseText;

	// display callback data if not success
	if (s != 'success') alert(s);

	// update search results
	searchButtonSidebar_click();
}// function updateSortSelectionSidebar_Callback
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// update current page
//-------------------------------------------------------------------
function updateCurrentPageSidebar(intPageNum) {
	// update the current page of search results and updates search results
	// intPageNum (integer)		the current page of search results

	var strRequest = app_path + '/ajax/ajaxDo.php?render=Sidebar&action=setCurrentPage&value=' + intPageNum;
	sendRequest(strRequest, updateCurrentPageSidebar_Callback);
}// function updateCurrentPageSidebar

function updateCurrentPageSidebar_Callback(req) {
	// handle callback data from the ajax call
	var s = req.responseText;

	// display callback data if not success
	if (s != 'success') alert(s);

	updateSearchResultsSidebar();// update search results window
	updateControlsSidebar();// update controls box
}// function updateCurrentPageSidebar_Callback
//-------------------------------------------------------------------

//-------------------------------------------------------------------
// update controls box
//-------------------------------------------------------------------
function updateControlsSidebar() {
	// update the controls box

	// show loading message
	getObj(strROARControlsId); // load controls element
	obj.innerHTML = strLoadSpinControls;// show loading spinner

	var strRequest = app_path + '/ajax/ajaxDo_getControls.php?render=Sidebar';

	sendRequest(strRequest, updateControlsSidebar_Callback);
}// function updateControlsSidebar

function updateControlsSidebar_Callback(req) {
	// handle callback data from the AJAX call
	var s = req.responseText;

	getObj(strROARControlsId); // load controls element
	obj.innerHTML = s; // replace contents of report element
}// function updateControlsSidebar_Callback
//-------------------------------------------------------------------
