/** Tooltip */
function doTooltip(e, msg) {
	if ( typeof Tooltip == "undefined" || !Tooltip.ready ) return;
	Tooltip.show(e, msg);
}
function hideTip() {
	if ( typeof Tooltip == "undefined" || !Tooltip.ready ) return;
	Tooltip.hide();
}
/** End - Tooltip */

/** Limits the characters of an input field
 * @param: elem
*/
function limitInputChars (elemid, countfield, maxchars) {
	var elem = document.getElementById(elemid);
	var val = elem.value;
	
	if (typeof val != undefined) {
		var charsToNeglect = val.replace(/[^\r\n]/g, "").length;
		maxchars += charsToNeglect;
		
		
		if (val.length > maxchars){
			elem.value = val.substring(0, maxchars);
		
		}else { 
			if (typeof countfield == "string"){
				document.getElementById(countfield).firstChild.data = maxchars - val.length;
			}else {
				alert ("The function limitInputChars() doesn't handle other 'countfield' params than typeof string!");
			}
		}
	}
}

function openPopup() {
	var url = this.href;
	window.open(url, "popup", "scrollbars,resizable,width=800,height=600");
	return false;
}

var enabledElems = null;
var disabledElems = null;
function prepareEditForm(editBtn, requestModBtn, cancelBtn, btnsToDisable, btnsToHide) {
	var formAction = jQuery("#"+editBtn).parents("form:first").attr("action");
	var enabledInputSelctor = "input[type='text']:not('.disabled'), input[type='file']:not('.disabled'), select:not('.disabled'), textarea:not('.disabled')";
	
	jQuery("#"+editBtn).click(function(){
		enabledElems = jQuery("#"+editBtn).parents("form:first").find(enabledInputSelctor);
		disabledElems = jQuery("#"+editBtn).parents("form:first").find(".disabled");
		enabledElems.each(function(){
			jQuery(this).removeClass("enabled").addClass("disabled").attr("disabled", "disabled");
		});
		
		disabledElems.each(function(){
			jQuery(this).removeClass("disabled").removeAttr("disabled").addClass("enabled");
		});
		
		for (var i = 0; i < btnsToDisable.length; i++) {
			jQuery("#"+btnsToDisable[i]).attr("disabled", "disabled").addClass("disabled");
		}
		for (var i = 0; i < btnsToHide.length; i++) {
			jQuery("#"+btnsToHide[i]).attr("disabled", "disabled").addClass("hidden");
		}
		
		jQuery("#"+requestModBtn).removeClass("hidden");
		jQuery("#"+cancelBtn).removeClass("hidden");
		jQuery("#"+editBtn).addClass("hidden");
		
		var map = {};
		map[jQuery(this).attr("name")] = 1;
		jQuery.post(formAction, map, function(){});
		
		return false;
	});
	
	jQuery("#"+cancelBtn).click(function(){
		enabledElems = jQuery("#"+editBtn).parents("form:first").find(enabledInputSelctor);
		disabledElems = jQuery("#"+editBtn).parents("form:first").find(".disabled");

		if (enabledElems != null && disabledElems != null) {
			enabledElems.each(function(){
				var obj = jQuery(this);
				obj.removeClass("enabled").addClass("disabled").attr("disabled", "disabled");
			});
			
			disabledElems.each(function(){
				var obj = jQuery(this);
				obj.removeClass("disabled").removeAttr("disabled").addClass("enabled");
			});
			
			jQuery("#"+requestModBtn).addClass("hidden");
			jQuery("#"+cancelBtn).addClass("hidden");
			jQuery("#"+editBtn).removeClass("hidden");
			
			for (var i = 0; i < btnsToDisable.length; i++) {
				jQuery("#"+btnsToDisable[i]).removeAttr("disabled").removeClass("disabled");
			}
			for (var i = 0; i < btnsToHide.length; i++) {
				jQuery("#"+btnsToHide[i]).removeAttr("disabled").removeClass("hidden");
			}
			
			var map = {};
			map[jQuery(this).attr("name")] = 1;
			jQuery.post(formAction, map, function(){});
			
			return false;
		}
	});
}
