 /**
 * Keyword search Component related javascript module
 * 
 * @author Veeresh D.
 * @date March 2008
 */

/**
Prepares a search for a given keyword
@parameter searchType Seach type
*/
function submitKeywordSearch(searchString, keywordSearchType)
{
    var ajaxRequest = zXmlHttp.createRequest();
	showTopNotification();	
	
	if ( keywordSearchType == "keyword")
	{
	    document.getElementById("keywordSearchId").value = searchString;
	    document.getElementById("keywordSearchId").style.color = "black";
	}
	else
	{
	    document.getElementById("authorSearchId").value = searchString;
	    document.getElementById("authorSearchId").style.color = "black";	    
	}
	
	ajaxRequest.onreadystatechange = function()
	{
		if(ajaxRequest.readyState == 4)
		{
			if (ajaxRequest.status == 200)
			{			
			    global.variables.recentSearchType = (keywordSearchType == "keyword") ? "keywordSearch" : "authorSearch" ;
			    global.setSaveSearchParams(searchString, global.variables.recentSearchType);
				
				//Module 45 Modifications to Current Issue View on DL
				//var flag = searchResults.renderJSONSearchResults(ajaxRequest.responseText, searchString, 1);	//seachResults.js			
				var flag = searchResults.renderJSONKeywordSearchResults(ajaxRequest.responseText, searchString, 1);	//seachResults.js
				
				if ( flag == false )
    		    {
    		        return false;   // Do nothing when no results
    		    }
				
				/**
				Below paramter "totalArticleResultsFound" is populated by above function
				*/
				if ( totalArticleResultsFound != 0 )
				{
				    if ( keywordSearchType == "keyword")
					    initResultPages(totalArticleResultsFound, 10, searchString, "keyword", searchString);   //Pagination component initialization
					else
					    initResultPages(totalArticleResultsFound, 10, searchString, "author", searchString);   //Pagination component initialization					
				}
				
				hideTopNotification();
				
				historyIsItResultDetails = 1;
	            parityHistory.setInHistory();
	            
	            latestSearchResultFunCall = "submitKeywordSearch('" + searchString + "','" + keywordSearchType + "')";
			}
			else
			{
				alert("Unable to get keyword search response. Please try again!"); 
				hideTopNotification();
			}
		}
	}
	ajaxRequest.open("GET", ROOT_DB_URL + "search.action?searchType=" + keywordSearchType + "&searchString=" + escape(searchString) + "&nodeLabel=" + escape(searchString) + "&nullParam=" + new Date(), true);
	ajaxRequest.send(null);
	return false;
}

/**
Submits the given keyword for search and gets the search results

@parameter searchType Seach type
*/
function submitSearch(searchType)
{
	var searchString = "";
	var keywordObject = (searchType == "keyword") ? document.getElementById("keywordSearchId") : document.getElementById("authorSearchId");
	var keywordUnfocusedText = (searchType == "keyword") ? "Enter a keyword..." : "Enter a author name...";
	
	searchString = keywordObject.value;
	
	//Replacing colon with empty string
	searchString = searchString.replace(":","");
	
	if ( searchString == keywordUnfocusedText )
	{
		alert("Please enter " + ((searchType == "keyword") ? "keyword" : "author name"));
		return;
	}
	
	global.variables.authorSearchCount = 0; /* To make the submitKeywordSearch() tobe called only once after getting one author from AuthorSuggestion list */
	
	var ajaxRequest = zXmlHttp.createRequest();
	showTopNotification();
	
	ajaxRequest.onreadystatechange = function()
	{
		if(ajaxRequest.readyState == 4)
		{
			if (ajaxRequest.status == 200)
			{
			    global.variables.recentSearchType = (searchType == "keyword") ? "keywordSearch" : "authorSearch" ;
			    hideTopNotification();
    		    
			    //global.setSaveSearchParams(searchString, "keyword");
			    global.setSaveSearchParams(searchString, global.variables.recentSearchType);
				
				//Module 45 Modifications to Current Issue View on DL
				//var flag = searchResults.renderJSONSearchResults(ajaxRequest.responseText, searchString, 1);	//seachResults.js			
				var flag = searchResults.renderJSONKeywordSearchResults(ajaxRequest.responseText, searchString, 1);	//seachResults.js
			    
			    //resetTextField(keywordObject.id); //To make blank after search
    		    unfocusSearchBox(keywordObject.id, keywordUnfocusedText);
        		
        		if ( flag == false )
        		{
        		    return false;
        		}
				
				/**
				Below paramter "totalArticleResultsFound" is populated by above function
				*/
				if ( totalArticleResultsFound != 0)
				{
				    if ( searchType == "keyword")
					    initResultPages(totalArticleResultsFound, 10, searchString, "keyword", searchString);   //Pagination component initialization
					else
					    initResultPages(totalArticleResultsFound, 10, searchString, "author", searchString);   //Pagination component initialization					    
				}
				
				historyIsItResultDetails = 1;
	            parityHistory.setInHistory();
							
				latestSearchResultFunCall = "submitKeywordSearch('" + searchString + "','" + searchType + "')";
			}
			else
			{
				alert("Unable to get keyword search response. Please try again!"); 				
			}
			hideNotification('queryResultsDivId');
		}
	}
	//ajaxRequest.open("GET", "http://localhost:8181/comsocdl/html/search.action-KeywordSearch-cdma", true);
	ajaxRequest.open("GET", ROOT_DB_URL + "search.action?searchType=" + searchType + "&searchString=" + escape(searchString) + "&nodeLabel=" + escape(searchString) + "&nullParam=" + new Date(), true);
	ajaxRequest.send(null);
	return false;
}

/**
Submits the search on ENTER events

@parameter e Event object raised over the search buttons
@parameter inputBoxId Id of the search input text box
*/
function searchByButton(e, inputBoxId)
{
    document.getElementById("" + inputBoxId).style.color = "black"; //To set black color on TAB move over textbox
    
    if ( getBrowserKeyEventCode(e) == 13 ) 
	{
		if( inputBoxId == "keywordSearchId" )
		{
		    setButtonFocus("keywordSearchButtonId");
		    if ( getBrowserName() == "Safari" || getBrowserName() == "Mozilla"  || getBrowserName() == "Firefox" )
		    {   /* It is because, in these browsers onclick event doesn't occur automatically, so here it does */
		        submitSearch('keyword');		        
		    }
		}
		else if( inputBoxId == "authorSearchId" )
		{
		    setButtonFocus("authorSearchButtonId");
		    if ( getBrowserName() == "Safari" || getBrowserName() == "Mozilla"  || getBrowserName() == "Firefox" )
		    {   /* It is because, in these browsers onclick event doesn't occur automatically, so here it does */
		        submitSearch('author');
		    }		    
		}		
	}
}
