function observe_key_css(toCssSelector, fromCssSelector, before_text, after_text) {
	if (typeof before_text == 'undefined') {
		before_text = '';
	}
	
	if (typeof after_text == 'undefined') {
		after_text = '';
	}
	
	//$$(toCssSelector)[0].update(before_text + $$(fromCssSelector)[0].getValue() + after_text);
    jQuery(toCssSelector).html(before_text + jQuery(fromCssSelector).val() + after_text);
}

function observe_key_css_nl2br(toCssSelector, fromCssSelector, before_text, after_text) {
	if (typeof before_text == 'undefined') {
		before_text = '';
	}
	
	if (typeof after_text == 'undefined') {
		after_text = '';
	}
	
	//$$(toCssSelector)[0].update(before_text + $$(fromCssSelector)[0].getValue().replace(/\n/gi,'<br />') + after_text);
    jQuery(toCssSelector).html(before_text + jQuery(fromCssSelector).val().replace(/\n/gi,'<br />') + after_text);
}

function observe_key_ele(toEle, fromEle, before_text, after_text) {
	if (typeof before_text == 'undefined') {
		before_text = '';
	}
	
	if (typeof after_text == 'undefined') {
		after_text = '';
	}
	
	toEle.update(fromEle.getValue());
}

function observe_key_formEle_by_id(toEleId, fromEleId, before_text, after_text) {
  toEle = document.getElementById(toEleId);
  fromEle = document.getElementById(fromEleId);
	
	if (!before_text) {
		before_text = '';
	} else {
	  before_text = trim(before_text) + ' ';
	}
	
	if (!after_text) {
		after_text = '';
	} else {
	  after_text = ' ' + trim(after_text);
	}
	
	if (fromEle.getValue()) {
  	toEle.value = before_text + fromEle.getValue() + after_text;
	}
	
}

function observe_key_for_username(toEleId, fromEleId) {
  toEle = document.getElementById(toEleId);
  fromEle = document.getElementById(fromEleId);
	
	toEle.value = fromEle.getValue().substring(0, fromEle.getValue().indexOf('@'));
	
}

function observe_key_discipline(toCssSelector, fromEleId) {
	/*var string = '';
	var first = true;
	
	$(fromEleId).up('ul').childElements().each(function(ele, index) {
		if (ele.down('input').checked) {
			if (first) {
				string = string + ele.down('label').innerHTML;
				first = false;
			} else {
				string = string + ', ' + ele.down('label').innerHTML;
			}
		}
	});
	
	$$(toCssSelector)[0].update(string);*/

    jQuery(toCssSelector).html(
        jQuery(fromEleId).parent('li').parent('ul').find('input:checked').map(function(){
            return jQuery(this).next('label').text();
        }).get().join(", ")
    );

}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

