//--------- Titles ajax search functions ------//

var http = createRequestObject();
var outputResultsTo = '';
var searchField = ''
var resultRowIndex = -1;
var nResultRows;
var isMouseOnResultsDiv = false;

function loadResults(searchTerm, searchInputField, searchResult, evt) {
	outputResultsTo = searchResult;
	searchField = searchInputField;
	
	keyCode = getKeyCode(searchTerm, evt);
	
	if(keyCode != 38 && keyCode != 40) {
		action = searchField + '=' + searchTerm.value;
	
		sndReq(action);
	}
}

function sndReq(action) {
    http.open('get', 'ajax/search_engine.php?'+action);
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
		var container = document.getElementById(outputResultsTo);
		
	
		if(response.length > 9) {
			container.style.visibility = 'visible';
		}
		else {
			container.style.visibility = 'hidden';
		}
		
		resultRowIndex = -1;
		container.innerHTML = response;
    }
}


function getKeyCode(field, evt) {
	var keyCode =	
    document.layers ? evt.which :
    document.all ? event.keyCode :
    document.getElementById ? evt.keyCode : 0;
	
	return keyCode;
}

function checkArrows (field, evt) {
	
	keyCode = getKeyCode(field, evt);
	
	if (keyCode == 38 || keyCode == 40 ) {
		nResultRows = document.getElementById(outputResultsTo).getElementsByTagName('li').length;
		
		if(keyCode == 40) {
			//--- arrow down
			updateResultRowIndex(1, nResultRows);
		}
		else {
			//--- arrow up
			updateResultRowIndex(-1, nResultRows);
		}
	}
	
	return true;
}

function updateResultRowIndex(quantity, nResultRows) {
	var oldResultRowIndex = resultRowIndex;
	
	if(resultRowIndex + quantity < 0) {
		resultRowIndex = nResultRows - 1;
	}
	else if(resultRowIndex + quantity > nResultRows - 1) {
		resultRowIndex = 0;
	}
	else {
		resultRowIndex = resultRowIndex + quantity;
	}

	setResultRowBackgroundColor(oldResultRowIndex, '#ffffff');
	setResultRowBackgroundColor(resultRowIndex, '#f7bd29');
	updateSearchfield(resultRowIndex);
	
	return resultRowIndex;
}


function setResultRowBackgroundColor(rowIndex, colorCode) {
	if(rowIndex >= 0 && rowIndex <= nResultRows - 1) {
		rowId = 'result_row_' + rowIndex;
		
		document.getElementById(rowId).style.backgroundColor = colorCode;
	}
}


function updateSearchfield(resultRowIndex) {
	textToUpdate = removeHTMLTags(document.getElementById(outputResultsTo).getElementsByTagName('li')[resultRowIndex].innerHTML);
	
	if(textToUpdate.length > 30) {
		textToUpdate = textToUpdate.substr(0, 30);
	}
	
	document.getElementById(searchField).value = textToUpdate;
	//console.log(document.getElementById(searchField));
}


function removeHTMLTags(strInputCode){
	strInputCode = strInputCode.replace(/&(lt|gt);/g, function (strMatch, p1){
		return (p1 == "lt")? "<" : ">";
	});
	var strTagStrippedText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
	
	return strTagStrippedText;
}
	
function copyToSearchBox(searchBox, valueToPopulate, divToHide) {
	document.getElementById(searchBox).value = valueToPopulate;
	document.getElementById(divToHide).style.visibility = 'hidden';
}

function hideResults(divToHide) {
	if(!isMouseOnResultsDiv) {
		document.getElementById(divToHide).style.visibility = 'hidden';
	}
}