GAME_SEARCH_RESULT=[];
SELECTED_GAME=null;
GAMES=[];
FETCHING_GAMES=false;
LAST_SEARCH='';
LAST_GAME_CODE = '';

function gameSearchOnKeyUp(val,e,elm){
	var id = elm.id;
	var kCode = e.keyCode;
	var dDisplay=$('#' + id + '_div').css('display');
	var k = val.substr(val.length-1,1);

	//*
	if (kCode==13){
		gameSearchCloseList(id);
		return false;
	}

	if (GAME_SEARCH_RESULT.length!=0 && (kCode == 38 || kCode ==40 || kCode==33 ||kCode==34)){ //ñòðåëî÷êè pageUp pageDown
		if (SELECTED_GAME === null){
			gameSearchSelectGame(0,elm);
		}else{
			switch (kCode){
				case 38:
					gameSearchSelectGame(SELECTED_GAME-1,elm);
					break;
				case 40:
					gameSearchSelectGame(SELECTED_GAME+1,elm);
					break;
				case 33:
					gameSearchSelectGame(0,elm);
					break;
				case 34:
					gameSearchSelectGame(10000,elm);
					break;
			}

		}
		gameSearchUpdateList(id);
		return false;
	}
	//*/

	if (!k){
		$('#' + id + '_div').css('display', 'none');
		gameSearch(val, id);
		gameSearchUpdateList(id);
                GAME_SEARCH_RESULT=[];
                SELECTED_GAME=null;
                GAMES=[];
                FETCHING_GAMES=false;
                LAST_SEARCH='';
                LAST_GAME_CODE = '';                
		return true;
	}

	if (val==LAST_SEARCH){
		return true;
	}

	if (/^[a-zA-Zà-ÿÀ-ß0-9`~!@#$%^&*()_\-+=¹[\]{}\\|\/\?,.<>]$/.test(k)){
		$('#' + id + '_div').css('display', 'block');
		gameSearch(val, id);
		gameSearchUpdateList(id);
		document.documentElement.onclick= function() { gameSearchCloseList(id); };
		return true;
	}
	return false;
}

function gameSearchOnKeyPress(e,elm){
	var id = elm.id;
	if (!e){
		e=window.event;
	}
	if (e.keyCode==13){
		gameSearchCloseList(id);
		return false;
	}
	return true;
}

function gameSearch(name, id) {
	if (!GAMES.length){
		if(FETCHING_GAMES){
			return false;
		}else{
			gameSearchFetchGames(name, id);
		}
	}
	GAME_SEARCH_RESULT=[];
	SELECTED_GAME=null;
	LAST_SEARCH=name;
	if (!name){
		return;
	}
	for (var i = 0; i < GAMES.length && GAME_SEARCH_RESULT.length < 11; i++) {
		//alert(i+':'+GAMES[i].name+':'+name);
		if (GAMES[i].name.toLowerCase().indexOf(name.toLowerCase())!=-1){
			GAME_SEARCH_RESULT.push(i);
		}
	}
}

function gameSearchUpdateList(id){
	var html = gameSearchGetListHtml(id);
	$('#' + id + '_div').html(html);
}

function gameSearchGetListHtml(id){
	if (GAME_SEARCH_RESULT.length==0){
		return '';
	}
	var html = '';
	var j=0;
	for (var i = 0; i < GAME_SEARCH_RESULT.length; i++) {
		j = GAME_SEARCH_RESULT[i];
		html+='<div class="game_select_option'+(i==SELECTED_GAME?' selected':'')+'" onclick="gameSearchSelectGame('+i+',document.getElementById(\'' + id + '\'));gameSearchCloseList(\'' + id + '\');">'+GAMES[j]['name']+'<img src="/images/icons/scores'+GAMES[j]['vote']+'.jpg"></div>';
	}

	return html;
}

function gameSearchSelectGame(i,elm){
	if (GAME_SEARCH_RESULT.length==0){
		SELECTED_GAME=0;
	}else if (i > GAME_SEARCH_RESULT.length-1){
		SELECTED_GAME=GAME_SEARCH_RESULT.length-1;
	}else if (i < 0){
		SELECTED_GAME=0;
	}else{
		SELECTED_GAME=i;
	}
	//alert(i+':'+SELECTED_GAME);
	//var t=document.getElementById('game_select_div').getElementsByTagName('div')[SELECTED_GAME].innerHTML;
	var t=GAMES[GAME_SEARCH_RESULT[SELECTED_GAME]].name;
        
	if (t)
		elm.value=t;
        LAST_GAME_CODE = GAMES[GAME_SEARCH_RESULT[SELECTED_GAME]].code;
}

function gameSearchCloseList(id){
	$('#' + id + '_div').css('display', 'none');
	SELECTED_GAME=null;
	GAME_SEARCH_RESULT=[];
	LAST_SEARCH='';
	document.documentElement.onclick=null;
}

function gameSearchFetchGames(name, id) {
	FETCHING_GAMES=true;
	$.ajax({
		url:'/ajax/search_games.php',
                data:{'name': name},
                cache: true,
		success:function(data,status){
			try{
				eval('GAMES = ' + data);
			} catch(e) {

			}
			FETCHING_GAMES=false;
			gameSearch(name, id);
			gameSearchUpdateList(id);
		}
	});
}

function gamePut(){
    document.getElementById("comment").value += "[game:" +LAST_GAME_CODE+ "]";
    $("#games").slideUp(); return false;
}

function swfPut(){
    document.getElementById("comment").value += "[swf:" +LAST_GAME_CODE+ "]";
    $("#swf").slideUp(); return false;
}
