function fnShowPicture(obj, _url, opt) {
	var _offset = Position.cumulativeOffset(obj);
	var _dims = $(obj).getDimensions();
	var _oImg = $("fnShowPictureImage");
	if (!_oImg) {
		_oImg = document.createElement("img");
		document.body.appendChild(_oImg);
		_oImg.id = "fnShowPictureImage";
		_oImg.className = "pcategory-floating";
	}
	fnHidePicture();
	_oImg.style.width = "";
	_oImg.style.height = "";	
	_oImg.src = _url;
	var fnDoTheShow = function (oImg, offset, dims) {
		var factor = 1.5;
		var imgDims = $(oImg).getDimensions();
		imgDims = xImageDims(imgDims.width, imgDims.height, 0, 0, (1/factor)*100);
		var newHalfWidth = parseInt((factor-1)*imgDims.width/2+2);
		var newHalfHeight = parseInt((factor-1)*imgDims.height/2);
		var top = offset[1], left = offset[0];
		oImg.style.width = imgDims.width+"px";
		oImg.style.height = imgDims.height+"px";
		oImg.style.top = (top+newHalfHeight)+"px";
		oImg.style.left = (left > 600) ? (left-imgDims.width-newHalfWidth)+"px" : (left+dims.width+newHalfWidth)+"px";
		oImg.fnShowPictureEffect = new Effect.Parallel(
			[
 				new Effect.Appear(oImg, {from: 0.2, to: 1.0, sync: true}),
				new Effect.Scale(oImg, factor*100, {scaleFromCenter: true, sync: true})
			],
			{duration: 2.0}
		);	
	};
	_oImg.fnShowPictureTimer = setTimeout(function () {fnDoTheShow(_oImg, _offset, _dims);}, 500);
}
function fnHidePicture() {
	var oImg = $("fnShowPictureImage");
	if (!oImg) return;
	if (oImg.fnShowPictureTimer) clearTimeout(oImg.fnShowPictureTimer);
	oImg.fnShowPictureTimer = null;
	if (oImg.fnShowPictureEffect)	oImg.fnShowPictureEffect.finish();
	oImg.fnShowPictureEffect = null;
	oImg.style.display = "none";
}
function fnPicturePopup(url, w, h) {
	var oBody = $(document.body);
	var bodyDims = oBody.getDimensions();
	var bodyOffset = Position.realOffset(oBody);
	var baseLeft = bodyOffset[0];	
	var baseTop = bodyOffset[1];
	var baseWidth = bodyDims.width;
	var winDims = xImageDims(w+20, h+40, baseWidth, 0, 0);
	var auxLeft = Math.floor((baseWidth-winDims.width)/2);
	var winLeft = baseLeft+auxLeft;
	var oWindow = $('fnPicturePopup_Window') || document.createElement("div");
	if (!oWindow.id) {
		oWindow.id = 'fnPicturePopup_Window';
		oWindow.style.position = 'absolute';
		oWindow.style.zIndex = '1000';
		oWindow.style.backgroundColor = "#FCFCF8";
		oWindow.style.border = "#F4F4F4 2px outset";
	}
	oWindow.style.display = "block";
	oWindow.style.left = winLeft+'px';
	oWindow.style.top = (baseTop+40)+'px';
	oWindow.style.width = winDims.width+'px';
	oWindow.style.height = winDims.height+'px';
	oWindow.innerHTML = ''+
		'<p id="fnPicturePopup_Handle" style="background: #204581; text-align: right; margin-bottom: 4px; padding: 4px; cursor: move">'+
			'<a style="font-weight: bold; font-size: 16px; color: #FFFFFF; text-decoration: none;" href="#" onclick="$(this.parentNode.parentNode).remove(); return false">Close this window</a>'+
		'</p>'+
		'<p style="text-align: center;"><img src="'+url+'" /></p>';
	oBody.appendChild(oWindow);
	var oHandle = $('fnPicturePopup_Handle');
	if (!oHandle.fnPicturePopup_Draggable)
		oHandle.fnPicturePopup_Draggable = new Draggable(oWindow, {ghosting: false});
	return false;
}

function fnShowTooltip(title, text, target, layout, distance) {
	var oBody = $(document.body);
	var oTarget = $(target);
	var targetDims = oTarget.getDimensions();
	var targetOffset = Position.cumulativeOffset(oTarget);
	var baseLeft = targetOffset[0];	
	var baseTop = targetOffset[1];
	var baseWidth = targetDims.width;
	var baseHeight = targetDims.height;
	title = decodeURIComponent(title);
	text = decodeURIComponent(text);
	layout = layout || 'top';
	distance = typeof distance == 'undefined' ? 2 : distance;
	var oWindow = $('xtooltip-window') || document.createElement("div");
	if (!oWindow.id) {
		oWindow.id = 'xtooltip-window';
		oWindow.className = 'xtooltip-outer';
		oWindow.xTarget = oTarget;
		oWindow.style.display = 'none';
		oWindow = $(oWindow);
	}
	oWindow.innerHTML = ''+
		'<div class="xtooltip-title">'+title+'</div>'+
		'<div class="xtooltip-content">'+text+'</div>';
	oBody.appendChild(oWindow);
	oWindow.style.display = 'block';
	var winDims = oWindow.getDimensions();
	var winLeft = 0; winTop = 0;
	switch (layout) {
		case 'left':
			winTop = baseTop-parseInt((winDims.height-baseHeight)/2);
			winLeft = baseLeft-winDims.width-distance;
			break;
		case 'right':
			winTop = baseTop-parseInt((winDims.height-baseHeight)/2);
			winLeft = baseLeft+baseWidth+distance;
			break;
		case 'bottom':
			winTop = baseTop+baseHeight+distance;
			winLeft = baseLeft-parseInt((winDims.width-baseWidth)/2);
			break;
		default:
			// Top
			winTop = baseTop-winDims.height-distance;
			winLeft = baseLeft-parseInt((winDims.width-baseWidth)/2);
	}
	oWindow.style.top = winTop+'px';
	oWindow.style.left = winLeft+'px';
	new Effect.Highlight(oWindow, {duration: 1.5, restorecolor: '#FFFFFF'});
	var lists = document.getElementsByTagName("select");
	$A(lists).each(function (oList) {oList.style.visibility = 'hidden';});
	return false;
}
function fnHideTooltip() {
	var oBody = $(document.body);
	var oWindow = $('xtooltip-window');
	oWindow.style.display = 'none';
	var lists = document.getElementsByTagName("select");
	$A(lists).each(function (oList) {oList.style.visibility = 'visible';});
}

function fnAddTooltipHandler(target, layout, distance, title, text) {
	var target = $(target);
	Event.observe(target, 'mouseover', function() {
		fnShowTooltip(title, text, target, layout, distance);
	}, false);
	Event.observe(target, 'mouseout', fnHideTooltip, false);
}

function fnLeftMenuHandler(menuTab, menuId, title) {
	var obj = $(menuId);
	var objTab = $(menuTab);
	if (objTab._effect) {
		objTab._effect.finish();
		objTab._effect = null;
	}
	if (obj.style.display == 'none') {
		objTab.className = 'expanded-menu-tab';
		objTab._effect = new Effect.BlindDown(obj);
	} else {
		objTab.className = 'collapsed-menu-tab';
		objTab._effect = new Effect.BlindUp(obj);
	}
}