var cloneItFn = function(eventObject, $elem, $event, $itemSelector, $afterCloneCallback, $initCloneCallback)
{	
	if ($elem != undefined)
	{
		$elem.bind($event, cloneItFn);
		$elem.data('___cloneEvent', $event);
		$elem.data('___cloneAfterCallback', $afterCloneCallback);
		$elem.data('___cloneInitCallback', $initCloneCallback);
		$elem.data('___cloneItemSelector', $itemSelector);
		if ($initCloneCallback != undefined)
			$initCloneCallback($elem, true);
	}
	else
	{
			$event = $(this).data('___cloneEvent');
			$afterCloneCallback = $(this).data('___cloneAfterCallback');
			$initCloneCallback = $(this).data('___cloneInitCallback');
			$itemSelector = $(this).data('___cloneItemSelector');
			$this = $(this);
			
			if ($event != "keyup" || $this.val().length > 0)
			{
				var num = $($itemSelector).size();
				var clone = $(this).clone();
				if ($initCloneCallback != undefined)
					$initCloneCallback(clone, false);
				clone.data('___cloneEvent', $event);
				clone.data('___cloneAfterCallback', $afterCloneCallback);
				clone.data('___cloneInitCallback', $initCloneCallback);
				clone.data('___cloneItemSelector', $itemSelector);
				clone.insertAfter($(this));
				$this.unbind($event, cloneItFn);
				clone.bind($event, cloneItFn);
				if ($afterCloneCallback != undefined)
					$afterCloneCallback(num, clone);
			}
	}
};