var g_maxVal			= "0";
var g_okLink			= "";
var g_cancelLink		= "";
var g_PopUpBox	 		= null;

function change_link(entered_val,max_val,link)
{
	var link_text		= "0";

	if(Number(max_val) >= Number(entered_val))
	{
		if(link != "")
		{
			link_text = link;
			link_text = link_text.replace(/amount\=([^\']+)/,"amount="+entered_val);
		}
	}
	else
	{
		if(link != "")
		{
			link_text = link;
			link_text = link_text.replace(/amount\=([^\']+)/,"amount=0");
		}
	}

	return link_text;
}

function billYes(returnData)
{
	if(returnData)
	{
		//TODO mache den Spas evtl. ueber Ajax anstatt ueber reload
		var link = change_link(returnData.value,returnData.user_param,g_okLink);
		document.location.href=link;
	}
}

function confirmYes(returnData)
{
	if(g_okLink != "")
		document.location.href=g_okLink;
}

function confirmNo()
{
	if(g_cancelLink != "")
		document.location.href=g_cancelLink;
}

function popupHandler(ev,user_param,okText,okLink,cancelText,cancelLink,header,icon,typ,centerWindow,useClose)
{
	var e 			= jt_fixE(ev);

	if(typeof centerWindow == "undefined")
		centerWindow = (ev == null);

	if(typeof useClose == "undefined")
		useClose = true;

	g_okLink 		= okLink;
	g_cancelLink 	= cancelLink;

	if(g_PopUpBox != null)
	{
		delete g_PopUpBox;
		g_PopUpBox = null;
	}

	if(typ == 'buchen')
	{
		if(g_PopUpBox == null)
			g_PopUpBox = new jt_AppPrompt(icon, billYes, null, "css_amountToBill",okText,cancelText,useClose);

		g_PopUpBox.fInput.user_param = user_param;

		g_PopUpBox.fInput.onkeypress = function(ev)
		{
			var e = jt_fixE(ev);
			jt_AppPrompt.keyPress(e);
			return moneyonly(this,e);
		};

		g_PopUpBox.setTitle(header);
		g_PopUpBox.setWidth(300);
		g_PopUpBox.askUser('<div style="padding:0px 5px 10px 0px;">'+language_array["Bitte den Betrag eingeben:"]+'</div>', user_param);

		if(e && !centerWindow)  g_PopUpBox.moveTo(e.clientX-320, e.clientY + document.body.scrollTop);
		else  					g_PopUpBox.moveTo(-1,-1);	//center

		g_PopUpBox.focus();
	}
	else if(typ == 'confirm')
	{
		if(g_PopUpBox == null)
			g_PopUpBox = new jt_AppConfirm(icon, confirmYes, (cancelLink != 'null') ? confirmNo : '',okText,cancelText,useClose);

		g_PopUpBox.setTitle(header);
		g_PopUpBox.setWidth(300);
		g_PopUpBox.askUser(user_param);

		if(e && !centerWindow)  g_PopUpBox.moveTo(e.clientX-320,e.clientY + document.body.scrollTop);
		else					g_PopUpBox.moveTo(-1,-1);	//center
	}
	else if(typ == 'alert')
	{
		if(g_PopUpBox == null)
			g_PopUpBox = new jt_AppAlert(icon,'',useClose);

		g_PopUpBox.setTitle(header);
		g_PopUpBox.setContent(user_param);
		g_PopUpBox.setWidth(300);
		g_PopUpBox.show();

		if(e && !centerWindow) g_PopUpBox.moveTo(e.clientX-320,e.clientY + document.body.scrollTop);
		else  					g_PopUpBox.moveTo(-1,-1);	//center
	}
}

//buchen popup

function do_row_kill(trID)
{
	var bExec 	= false;
	var bCanKill= true;

	if("canKillRow" in window)
		bCanKill = canKillRow(trID);

	if(bCanKill)
	{
		var trObj = $(trID);

		if(!isNull(trObj))
		{
			var parent 		= trObj.parentNode;

			if(!isNull(parent))
			{
				trObj.style['display']	= 'none';

				var attrib 				= document.createAttribute('search_display');
				attrib.nodeValue 		= 'none';
				trObj.setAttributeNode(attrib);

				if(parent.childNodes.length - 1 == 0)
				{
					//todo add default row "No data found"
				}
			}
		}

		bExec = true;
	}

	return bExec;
}

function removeLink(trID,ext)
{
	var tdObj = $(trID+ext);

	if(!isNull(tdObj))
	{
		while(tdObj.firstChild)
			tdObj.removeChild(tdObj.firstChild);

		var img 		= document.createElement("img");
		img.src 		= "images_pub/1x1.gif";
		img.width		= 1;
		img.height		= 1;

		tdObj.appendChild(img);
	}
}

function _cb_action_handler(trID,resultSet,property,killTDId)
{
	var bBreak = false;

	if(resultSet[property] == "do_reset")
	{
		if(do_row_kill(trID))
			bBreak = true;
		else
		{
			if(!isEmpty(killTDId))
				removeLink(trID,killTDId);
		}
	}

	return bBreak;
}

function _updateCell(trID,resultSet,property)
{
	var tdID 	= trID+'_'+property;
	var tdObj 	= $(tdID);

	if(!isNull(tdObj))
	{
		tdObj.innerHTML = resultSet[property];
	}
}

function refreshRow(trID,resultSet,killTDExtId)
{
	if(isObject(resultSet))
	{
		for(var property in resultSet)
		{
			if(!isFunction(resultSet[property]))
			{
				if(property == "cb_action")
				{
					if("own_cb_action_handler" in window)
					{
						if(own_cb_action_handler(trID,resultSet,property,killTDExtId))
							break;
					}
					else
					{
						if(_cb_action_handler(trID,resultSet,property,killTDExtId))
							break;
					}
				}
				else
					_updateCell(trID,resultSet,property);
			}
		}
	}
}

function buchen_popup(ev,header,okText,cancelText,user_param,cb_do_buchen,initalValue)
{
	var e 							= jt_fixE(ev);
	var icon 						= null;
	var useClose 					= true;
	var centerWindow				= false;

	if(g_PopUpBox != null)
		delete g_PopUpBox;

	g_PopUpBox 						= new jt_AppPrompt(icon, do_buchen, null, "css_amountToBill",okText,cancelText,useClose);

	user_param						= user_param.toJSONString();
	g_PopUpBox.fInput.user_param 	= user_param;

	g_PopUpBox.fInput.onkeypress 	= function(ev)
	{
		var e = jt_fixE(ev);
		jt_AppPrompt.keyPress(e);
		return moneyonly(this,e);
	};

	g_PopUpBox.setTitle(header);
	g_PopUpBox.setWidth(300);
	g_PopUpBox.askUser('<div style="padding:0px 5px 10px 0px;">'+language_array["Bitte den Betrag eingeben:"]+'</div>', initalValue);

	if(e && !centerWindow)  g_PopUpBox.moveTo(e.clientX-320, e.clientY + document.body.scrollTop);
	else  					g_PopUpBox.moveTo(-1,-1);	//center

	g_PopUpBox.focus();
}

var g_buchung_pos_info = null;

function show_buchung_pos_info(bp_id)
{
	if (bp_id > 0)
	{
		xml = new xml_http2();
		xml.open('/ext/allgemein.php?g_function=get_buchung_pos_info&buchungpos_id='+bp_id, "", show_info);
	}
}

function show_info(result)
{
	result = xmlString2Array(result);
	
	if (typeof(result) == "object")
	{
		var bemerkung	= result.bemerkung;
		var sel_string	= result.selektion;
		
		var html		=	"<table>"+
							"	<tr>"+
							"		<td class='font_4' valign='top'><b><lang noonline>Selektion</lang>:&nbsp;</b></td>"+
							"		<td class='font_4'>"+sel_string+"</td>"+
							"	</tr>"+
							"	<tr>"+
							"		<td class='font_4' valign='top'><b><lang noonline>Bemerkung</lang>:&nbsp;</b></td>"+
							"		<td class='font_4'>"+bemerkung+"</td>"+
							"	</tr>"+
							"</table>";

		if(g_buchung_pos_info != null)
			delete g_buchung_pos_info;

		g_buchung_pos_info = new jt_AppAlert(null,'',false);

		g_buchung_pos_info.setTitle('<lang noonline>Informationen zur Buchungsposition</lang>');
		g_buchung_pos_info.setWidth(400);
		g_buchung_pos_info.setContent(html);
		g_buchung_pos_info.show()
		g_buchung_pos_info.moveTo(-1,50);
	}
}

var jt_AjaxCache = 
{
	cache: [],

	get: function(urlKey, callBack) 
	{
		var cacheFind;
	
		for (var i=0; i < jt_AjaxCache.cache.length; i++) 
		{
			if (urlKey == jt_AjaxCache.cache[i].uKey) 
			{
				cacheFind = jt_AjaxCache.cache[i];
				break;
			}
		}
		
		if (cacheFind) 
			callBack(cacheFind.src);
		else 
		{
			if (!jt_AjaxCache.req) 
				jt_AjaxCache.req = xh_newRequest();
	
			jt_AjaxThis(urlKey, function(req) 
			{
				jt_AjaxCache.cache.push({uKey:urlKey, src:req.responseText});
				callBack(req.responseText);
			},
			
			jt_AjaxCache.req);
		}
	}
}

var inlinePopup = 
{
	box: null,

	showSRC: function(urlKey,title,width,height) 
	{
		var newBox = false;
	
		if(!inlinePopup.box) 
		{
			inlinePopup.box 		= new jt_DialogBox(false);
			inlinePopup.newBox	 	= true;
		}
		
		var contentNode 			= inlinePopup.box.getContentNode();
			contentNode.className 	= "pgView";
			contentNode.style.width	= width+"px";
			contentNode.style.height= height+"px";
			
		inlinePopup.box.setTitle(title);
		
		jt_AjaxCache.get(urlKey, 	function(src) 
									{
										inlinePopup.box.setContent(jt_HTML.vuSrc(src));
										inlinePopup.box.show();

										if(inlinePopup.newBox) 
										{
											inlinePopup.box.moveTo(-1, -1);
											inlinePopup.newBox = false;
										}
									}
						);
	},

	showHTML: function(urlKey,title,width,height) 
	{
		var newBox = false;
	
		if(!inlinePopup.box) 
		{
			inlinePopup.box 		= new jt_DialogBox(false);
			inlinePopup.newBox	 	= true;
		}
		
		var contentNode 			= inlinePopup.box.getContentNode();
			contentNode.className 	= "pgView";
			contentNode.style.width	= width+"px";
			contentNode.style.height= height+"px";
			
		inlinePopup.box.setTitle(title);
		
		jt_AjaxCache.get(urlKey, 	function(src) 
									{
										inlinePopup.box.setContent(src);
										inlinePopup.box.show();

										if(inlinePopup.newBox) 
										{
											inlinePopup.box.moveTo(-1, -1);
											inlinePopup.newBox = false;
										}
									}
						);
	}
}