
var callBacks = new Array;

registerUserAction = function ( callBack ) {
	var callFunction = 'userCallback('+callBack+')';
	
	for ( var i = 0; i < callBacks.length; i++ ) {
		if ( callBacks[i].callBack != null && callBacks[i].callBack == callBack ) {
			clearTimeout(callBacks[i].timer);
			callBacks[i].timer = setTimeout ( callFunction, 1000 );
			return;
		}
	}
	
	var timer = setTimeout ( callFunction, 1000 );
	callBacks[callBacks.length] = {'callBack':callBack, 'timer': timer};
}

userCallback = function ( callBack ) {
	callBack.call();
}


registerDropDownList = function ( id, message ) {
	$('#uf'+id+'Select').bind ( 'keyup', function() {
		registerUserAction('userDropdownSelect(\''+id+'\', \''+message+'\')');
	});
	$(document).bind('click', function(e) {
		hideDropdownAction(e, id);
	});
	$(document).bind('keyup', function(e) {
		hideDropdownAction(e, id);
	});
}

function userDropdownSelect ( id, message ) {
	var value = $('#uf'+id+'Select').attr('value');
	var url = id.toLowerCase().replace ( /\d/, '' );
	
	$.getJSON ( backEndDir + 'get_'+url+'.php', {r: value}, function ( data ) {
		if ( data.result.length > 0 ) {
			var result = '<div id="drop_ul"><ul>';
			for ( var i = 0; i < data.result.length; i++ ) {
				result += '<li onclick="insertDropdownValue(\''+id+'\', '+data.result[i].id+', \''+data.result[i].name+'\')">'+data.result[i].name+'</a></li>';
			}
			result += '</ul></div>'
			$('#uf'+id+'SelectSet').html(result);
			$('#uf'+id+'SelectSet').show();
			$('#uf'+id+'SelectError').hide();
			$('#uf'+id+'AddContainer').hide();
		} else {
			$('#uf'+id+'SelectError').html(message);
			$('#uf'+id+'AddContainer').show();
			$('#uf'+id+'SelectSet').hide();			
			$('#uf'+id+'SelectError').show();
			insertDropdownValue (id, 0, value);
		}
	});
}

function insertDropdownValue (id, rid, text) {
	$('#uf'+id+'SelectSet').hide();
	$('#uf'+id+'Select').attr('value', text );
	$('#uf'+id+'').attr('value', rid);
	
	$('.errorHeading').remove();
	$('.errorText').remove();
	$('.errorList').remove();
	$('.resultText').remove();
	$('.resultList').remove();
}

function hideDropdownAction (e, id) {
	var keycode;
	if (e.keyCode != undefined ) keycode = e.keyCode;
	else keycode = e.which;
	if( e.type == 'click' || keycode == 27 ) {
		$('#uf'+id+'SelectSet').hide();
	}
}
