var search_timer = null;
var last_search_text = "";

var bits = {};

function search(form,target)
{

	if (form.search_text.value.trim() != '' && form.search_text.value.trim().length > 2 && form.search_text.value != last_search_text)
	{
		form.send(
		{
			method: 'get',
			update: target,
			onSuccess: function(req)
			{
				last_search_text = form.search_text.value;
			},
			onFailure: function(req)
			{
				show_error(req);
				Behaviour.apply();
			}
		}
		);
	}
	return false;
}

var typeKeeper = {};
var bitKeeper = {};

var bitManager = new SearchBitManager('.add_search_bit',process_dropdown_bits);

var searchBitMagic = 
{
	
	"a.add_search_bit":
	function (bit){
		bit.onclick = function (){
			if (!bitManager.has(bit.id))
			{
				d = bit.id.split('.');
				type = d[0];
				//id = d[1];
				value = bit.title;
				bitManager.add(new SearchBit(bit.id, value, type));
			}
			else
			{
				bitManager.remove(bit.id);
			}
			return false;
		}
	},
	
	"select.search_bit_dropdown":function(dropDown)
	{
		dropDown.onchange = function(){
			if (dropDown.selectedIndex > 0)
			{
				obj = dropDown.options[dropDown.selectedIndex];
				var typeAndData = obj.id.split('.');
				bitManager.add(new SearchBit(obj.id,typeAndData[1],typeAndData[0],obj.text));
				dropDown.selectedIndex = 0;
			}
		}		
	}
}
Behaviour.register(searchBitMagic);

function process_dropdown_bits()
{
	
	var theHash = {};
	for (id in bitManager.searchBits)
	{
		var bit = bitManager.searchBits[id];	
		var tag = $(bit.id);
		if (tag != null)
		{
			var event_tag = null;
			tagName = tag.get('tag');
			if (tagName == 'option')
			{
				tag.selected = true;
				event_tag = tag.getParent();
			}
			else if (tagName == 'a')
			{
				if (bit.data != '')
					theHash[bit.id] = {'type':bit.type,'value':bit.data};
			}
			else if (tagName == 'input')
			{
				tag.checked = true;
				event_tag = tag;
			}
			//if (tag.onchange != null)
			//	tag.onchange();
			// tag.fireEvent('change');
			// 			if (event_tag)
			// 				event_tag.fireEvent('change');
		}
	}
	// $('search_bits').value = JSON.encode(theHash);
}

function process_bits()
{
	var jason = {};
	$('search_bits_holder').setHTML('');
	
	for (id in bitManager.searchBits)
	{
		var bit = bitManager.searchBits[id];
		jason[id] = {'type':bit.type,'value':bit.data,'is_list':true};
		
		var dt = $(bit.type+'.dt');
		var thebit =
			bit.title +
			" <a onclick='bitManager.remove(\""+bit.id+"\"); return false;' href='javascript:;'>"+$('deleteImageURI').innerHTML+"</a>";//+
			//"<input type='hidden' id='"+id+".data' name='search_bits' value='"+JSON.encode(data)+"'/>";

		if (dt == null)
		{
			if (typeKeeper[bit.type] == null)
				typeKeeper[bit.type] = 0;
			dt = new Element('dt',{'id':bit.type+'.dt'});
			dt.setText($(bit.type).title);
			dt.injectInside($('search_bits_holder'));
		}
		typeKeeper[bit.type] += 1;
		dd = new Element('dd',{'id':id+'.container'});
		dd.setHTML(thebit);
		dd.injectAfter(dt);
		
	}
	//URL escaping is needed here
	$('search_bits').value = JSON.encode(jason);
}
