var aNames;
var nTimestamp;


function getRiderURLified(n) {
	for (var i=0;i<aNames.length;i++) {
		if (aNames[i]['n'] == n)
			return aNames[i]['u'];
	}
}

function initAjaxWithPreview() {
	document.onclick = function(e) {
		var evt = e||window.event;
		var target = evt.target||evt.srcElement;
		
		if (target!=$('s') && target!=$('ajax') && target.parentNode!=$('ajax') && target.parentNode.parentNode!=$('ajax') && target.parentNode.parentNode.parentNode!=$('ajax') )
		{
			if ($('ajax'))
				hideNames(e);
			
			if (!hasC($('n_id'),'stop')) {
				$('n_id').value=0;
				$('s').value='';
			}
		}
	};
	
	
	if ($('s'))	{
		$('s').setAttribute('autocomplete','off');
		
		//if(typeof bNoFocus=='undefined')
		//	$('s').focus(); //if on the page normally
		
		
		$('s').onkeyup= function(e) {
											var evt = e||window.event;
											var key = evt.which||evt.keyCode;
											
											$('n_id').value=''; //clear this each time in case it doesnt get refilled if they don't select anything
											
											var minChars = 1; //only do a lookup if they've typed at least this many characters
											
											if(key!=40 && key!=38 && key!=13 && key!=9 ) {
												if(this.value.length > minChars-1) {
													getNames();
												}
												else {
													hideNames(e);
												}
											}
										}
	}
}


addE(window,'load',initAjaxWithPreview);





function hideNames(e) {
	var evt = e||window.event;
	var target = evt.target||evt.srcElement;
	
	if ($('s').value && $('n_id').value=='0') {
		if (target.nodeName!='A' && confirm('You have inputted a rider ("'+$('s').value+'") that does not yet exist on Roots and Rain.')) {
			launchAddNewML();
		}
		else {
			$('s').value='';
			$('s').focus();
			$('ajax').style.display='none';
		}
	}
	else {
		$('ajax').style.display='none';
	}
}
function showNames(s) {
	$('ajax').innerHTML=s;
	$('ajax').style.display='block';
}


function getNames() {
	nTimestamp = new Date().getTime();
	
	if ($('sIDs'))
		var a = new AjaxInstance('/ajax/get-riders.php?t='+nTimestamp+'&ignore=' + escape($('sIDs').value)+'&s=' + escape($('s').value), popajax);
	else
		var a = new AjaxInstance('/ajax/get-riders.php?t='+nTimestamp+'&s=' + escape($('s').value), popajax);
	a.GET();
}


function popajax(s)
{
	if (s) //.indexOf('<h3')==-1)
	{
		aNames = eval(s);
		
		//if this is the most recently sent request, do it
		if (aNames[0] == nTimestamp) {
			
		s = '<ul class="ajax">';
			for(i=1;i<aNames.length;i++) {
				sShow = aNames[i]['s'];
				s += (i==1) ? '<li class="hover">'+sShow+'</li>' : '<li>'+sShow+'</li>';
			}
		s += '</ul>';
		
		showNames(s);
		
		nSelected = 0;
		nLast = aNames.length - 1;
		
		
		$('s').onkeydown		= handleListKeys;
		$('ajax').onmouseover	= handleListHover;
		
		a = $('ajax').getElementsByTagName('li');
		n = a.length;
		
		for(i=0;i<n;i++)
			a[i].onclick = selectFromajax;
}
	}
	else {
		showNames(s);
		$('n_id').value=0;
	}
	
}




function handleListKeys(e)
{
	var evt = e||window.event;
	var key = evt.which||evt.keyCode;
	
	if (key==38 || key==40 || key==13 || key==9) {
	    if (evt.preventDefault)
			evt.preventDefault();
	    if (evt.stopPropagation)
			evt.stopPropagation();
		evt.returnValue = false;
		
		if (key==40) //down
			nSelected++;
		else if (key==38) //up
			nSelected--;
		else
			selectFromajax(evt,nSelected);
		
		if (nSelected>nLast) nSelected=0;
		if (nSelected<0) nSelected=nLast;
	}
	
	a = $('ajax').getElementsByTagName('li');
	n = a.length;
	
	for(i=0;i<n;i++) {
		delC(a[i],'hover');
		
		if (i==nSelected) {
			addC(a[i],'hover');
		}
	}
}

function addRider(e) {
	var n = $('n_id').value;
	if (!n)
		selectFromajax(e,0);
	
	n = $('n_id').value;
	
	if (n && !hasC($('n_id'),'stop')) {
		if ($('sIDs') && $('sIDs').value)
			window.location = '/compare.html?i='+$('sIDs').value+'x'+$('n_id').value;
		else {
			window.location = '/rider'+n+'/'+getRiderURLified(n)+'/';
		}
	}
}

function handleListHover(e)
{
	var evt=e||window.event;
	var target = evt.target||evt.srcElement;
	
	a = this.getElementsByTagName('li');
	n = a.length;
	
	for(i=0;i<n;i++)
	{
		delC(a[i],'hover')
		
		if (a[i]===target) {
			addC(a[i],'hover')
			nSelected=i;
		}
	}
}


function selectFromajax(e,n)
{
	var evt = e||window.event;
	var target = evt.target||evt.srcElement;

	x = n;
	
	if (x>=0 && x<=19)
		{/*do nothing*/}
	else
		x = getOffset(this);
	
	$('s').value=aNames[x+1]['s'];
	$('n_id').value=aNames[x+1]['n'];
	
	
	$('s').blur();
	
	hideNames(e);
	
	addRider();
}