var timer;
var page = {
	refresh: function(){
		window.location.reload( false );
	},
		
	keyup: function(event){
		clearTimeout(timer);
	
		if(window.event)
			key = window.event.keyCode;     //IE
		else
			key = event.which;     //firefox
		
		if(key == 13) {
			tries.hideSuggests();
			return true;
		} else if(key == 38){
			if(suggestsArray != null){
				if (index > 0) index--;
				$('test-text').value = suggestsArray[index];
				tries.tries_over($('td_' + suggestsArray[index]));
				tries.tries_out($('td_' + suggestsArray[index+1]));
			}
		} else if(key == 40){
			if(suggestsArray != null){
				if (index < (suggestsArray.length - 1)) index++;
				$('test-text').value = suggestsArray[index];	
				tries.tries_over($('td_' + suggestsArray[index]));
				tries.tries_out($('td_' + suggestsArray[index-1]));
			}
		} else{
			timer = setTimeout("tries.get_suggests()",250);
			return true;
		}
	}
};

var suggests = document.createElement('div');
var index;
var suggestsArray;
var style = 'background: white; border: solid 1px black; margin-left: 2px; min-width: 150px; border-spacing:0px; z-index: 1; position: absolute;';
var newlist;
var tries = {
	errors: function(response){
		$('loading').style.display = "none";
		$('error_message').innerHTML = response.responseText;
		$('error_message').style.color = 'red';
	},

	create_list: function(){
		newlist = $F('list-name').replace(/ /g,"_");
		$('loading').style.display = "";
		$('error_message').innerHTML = '';
		var url = '/trie_ajax/create';
		var pars = [];
		pars['name'] = newlist;
		pars['author'] = $F('list-author');
		pars['desc'] = $F('list-desc');
		new Ajax.Request(url, {
			method: 	'post',
			parameters: pars,
			onFailure: tries.errors,
			onSuccess: tries.created_ok
		});
	},
	
	created_ok: function(response){
		$('loading').style.display = "none";
		$('error_message').innerHTML = response.responseText;
		$('error_message').style.color = 'green';
		var newdest = "window.location = \"/trie/" + newlist + "\";";
		setTimeout(newdest, 1000);

	},
	
	update_list: function(){
		trie = $('list-title').innerHTML;
		text = $('items_area').value;
		tries.save_list(trie, text, false);		
	},
	
	get_suggests: function(){
		var query = $F('test-text');
		var trie = $('list-title').innerHTML;
		var url = '/suggests';
		var pars = 'trie=' + trie + '&' + 'query=' + query;
		new Ajax.Request(url, {
			method: 	'get',
			parameters: pars,
			onSuccess:	tries.showSuggests
		});
	},
	
	showSuggests: function(response){
		index = -1;
		suggestsArray = new Array();
		if(response.responseText != ''){
			//get_suggest in array
			suggestsList = eval("(" + response.responseText + ")");
			for ( var i in suggestsList )
				if ( typeof( suggestsList[i] ) != 'function' )
					suggestsArray.push(suggestsList[i]);
		
			//show suggests
			suggests.style.display = '';
			code = '<table style="' + style + '">';
			for (i=0;i<suggestsArray.length;i++)
				code += '<TR><TD id="td_' + suggestsArray[i] + '" onmouseover="tries.tries_over(this);" onmouseout="tries.tries_out(this);" onclick="tries.tries_click(this);">' + suggestsArray[i] + '</TD></TR>';
			code += '<TR><TD align="right" style="background-color:#f9f7d9;font-size: 10px;padding:3px;"><a href="http://www.suggiere.com" style="color:black;text-decoration:none;">by su<span style="color:#df9d00;">gg</span>iere&trade;</a></TD></TR>';	
			code += '</table>';
			suggests.innerHTML = code;
			$('test').appendChild(suggests);
		} else {
			suggests.style.display = 'none';
		}
	},
	
	hideSuggests: function(){
		setTimeout("suggests.style.display = 'none';", 200);
		suggestsArray = null;
	},
	
	save_list: function(trie,text,create){	
		if (tries.validate(trie)) {
			var url = '/trie_ajax/save_trie';
			var pars = [];
			pars['trie'] = trie;
			pars['text'] = text.split('\n').sort().join("\n");
			new Ajax.Request(url, {
				method: 		'post',
				parameters:		pars,
				onSuccess:		function(){ 
					if (create)
						tries.create_ok(trie);
					else
						page.refresh();
				}
			});
		} else {
			errors.list_title();
		}
	},
	
	tries_over: function(div){
		if(div != null){
			div.style.backgroundColor = '#3050a0';
			div.style.color = 'white';
			document.body.style.cursor='default';
		}
	},
	
	tries_out: function(div){
		if(div != null){
			div.style.backgroundColor = 'white';
			div.style.color = 'black';
			document.body.style.cursor='default';
		}
	},
	
	tries_click: function(div){
		$('test-text').value = div.innerHTML;
	},
	
	create_ok: function(trie){
		window.location = '/trie/' + trie;
	},
	
	validate: function(name){
		return name.match(/^[a-zA-Z0-9\.\-\_]+$/);
	},
	
	keyup: function(event){
		if(window.event)
			key = window.event.keyCode;     //IE
		else
			key = event.which;     //firefox
		
		if(key == 13) {
			tries.search();
			return true;
		}
	},
	
	search: function(){
		window.location = "/search/" + $F('searchfield') + '/1';
	}
};

var errors = {
	list_title: function(){
		$('list-title').focus();
		$('list-title').style.backgroundColor = "red";
		setTimeout("$('list-title').style.backgroundColor = 'white'", 1000);
	},
	
	list_name: function(){
		$('list-title').focus();
		$('list-title').style.backgroundColor = "red";
		setTimeout("$('list-title').style.backgroundColor = 'white'", 1000);
	}
};
