
function HelpTip() {};

HelpTip.imgPath = "/images/b4p/helpcontent";
HelpTip.headerText = "Hilfe";
HelpTip.saveURL = "/b4p_dev.php/helpContent/update/";
HelpTip.tipURL = "/b4p_dev.php/helpContent/view/";
HelpTip.currentSender = null;

function nl2br(text) {
	return text.replace(/\n/g, '<br />');
}

HelpTip.show = function (sender,subject, isAdmin, isEdit)
{
	var obj = $('help_tip');
	if (!obj)
	{
		var obj = document.createElement("DIV");
		obj.id = "help_tip";
		document.body.appendChild(obj);
	}
	else
	{
		HelpTip.hide();
	}
	if (sender)
	{
		HelpTip.currentSender = sender;
	}
	else
	{
		sender = HelpTip.currentSender;
	}
	var str = '<table id="help_header" cellpadding="0" cellspacing="0" align="center">';
	str +='	<tr>';
	str +='		<td id="help_header_text">'+HelpTip.headerText+'</td>';
	str +='		<td id="help_close_img"><img src="'+HelpTip.imgPath+'/close.gif" id="help_close" onclick="HelpTip.hide()" onmouseover="HelpTip.hoverClose()" onmouseout="HelpTip.unHoverClose()"></td>';
	str +='	</tr>';
	str +='</table>';	
	obj.innerHTML = str;

	var parts = subject.split(".");
	var tableName = parts[0];
	var fieldName = parts[1];
	
	var url = HelpTip.tipURL + tableName+'/'+fieldName+'?slt='+Math.random();
	if (typeof(application_sf) != 'undefined')
		url += '&app='+ application_sf;
		
	new Ajax.Request(url, 
	{
		method:'get',
		onSuccess: function(transport) 
		{
			var text = transport.responseText;
			
			if (!isEdit)
			{
				obj.innerHTML += '<div id="help_content">'+nl2br(text)+'</div>';
				if (isAdmin)
				{
					obj.innerHTML += '<div id="help_edit_btn"><button onclick="HelpTip.show(null,\''+subject+'\','+isAdmin+',true)">Bearbeiten</div>';
				}
			}
			else
			{
				if (isAdmin)
				{
					obj.innerHTML += '<div id="help_content"><textarea id="help_edit">'+text+'</textarea><br /></div>';
					obj.innerHTML += '<div id="help_edit_btn"><button onclick="HelpTip.save(\''+subject+'\')">Speichern</button></div>';
				}
			}
			// commented since set in css
			//obj.style.position = "absolute";
			var pos = getAbsoluteElementPosition(sender);
			
			obj.style.top = pos[1]+'px';
			obj.style.left = (pos[0]+25)+'px';
			obj.style.display = '';
		},
		onFailure: function(){ alert('Unable to get help tip!'); }
	}
	);	
};

HelpTip.hide = function()
{
	var obj = $('help_tip');
	obj.style.display = 'none';
	
};
HelpTip.hoverClose = function()
{
	var obj = $('help_close');
	obj.src = HelpTip.imgPath+"/close_over.gif";
	obj.style.cursor = "pointer";
}
HelpTip.unHoverClose = function()
{
	var obj = $('help_close');
	obj.src = HelpTip.imgPath+"/close.gif";
}
HelpTip.save = function(subject)
{
	
	var parts = subject.split(".");
	var tableName = parts[0];
	var fieldName = parts[1];
	
	var url = HelpTip.saveURL + tableName+'/'+fieldName+'?slt='+Math.random();
	if (typeof(application_sf) != 'undefined')
		url += '&app='+ application_sf;
		
	new Ajax.Request(url, 
	{
		method:'post',
		postBody:"text="+($('help_edit').value),
		onSuccess: function(transport) 
		{
			if (HelpTip.currentSender)
			{
				if ($('help_edit').value)
				{
					HelpTip.currentSender.src = HelpTip.currentSender.src.replace(/info_gray.gif/i,"info.png");
				}
				else
				{
					HelpTip.currentSender.src = HelpTip.currentSender.src.replace(/info.png/i,"info_gray.gif");
				}
			}
			HelpTip.hide();
		},
		onFailure: function(){ alert('Can not save value!'); }
	}
	);	
	HelpTip.hide();
}


function getAbsoluteElementPosition(el) {
	var left = 0;
	var top = 0;
	while (el) {
	  left += el.offsetLeft;
	  top += el.offsetTop;
	  el = el.offsetParent;
	}
	return [left, top];
}
