/**
 * jt_AppDialogs.js - extends jt_DialogBox.js with 3 specific types of dialog boxes,
 * based on JavaScript equivalents: 'jt_AppAlert', 'jt_AppConfirm' and 'jt_AppPrompt'
 *
 * @version 9 Apr 2005
 * @author  Joseph Oster, wingo.com, Copyright (c) 2005-2006
 * @license http://www.wingo.com/dialogbox/license.html
 */

jt_AppAlert = function(icon,okText,useClose)
{
	// CONSTRUCTOR for 'jt_AppAlert' object - EXTENDS 'jt_DialogBox'
	if (arguments.length==0) return;

	this.base = jt_DialogBox;
	this.base(true,useClose);

	var dialogTable = document.createElement('table');
	dialogTable.setAttribute('cellSpacing', '0');
	dialogTable.setAttribute('cellPadding', '0');
	dialogTable.setAttribute('border', '0');

	var tBody 	= document.createElement('tbody');
	var row 	= document.createElement('tr');
	var cell 	= document.createElement('td');
	cell.setAttribute("vAlign", "top");

	this.iconImage 				= document.createElement('img');
	this.iconImage.style.margin = "0px 10px 0px 0px";
	this.setIcon(icon);
	cell.appendChild(this.iconImage);
	row.appendChild(cell);

	this.contentCell 			= document.createElement('td');
	this.contentCell.className 	= "ContentArea";
	row.appendChild(this.contentCell);
	tBody.appendChild(row);
	dialogTable.appendChild(tBody);
	this.contentArea.appendChild(dialogTable);

	this.buttonDIV 				= document.createElement('div');
	this.buttonDIV.setAttribute("align", "center");
	this.buttonDIV.style.margin = "10px 0px 0px 0px";
	this.contentArea.appendChild(this.buttonDIV);

	okText 						= (okText != "" && typeof okText != 'undefined') ? okText : language_array["OK"];
	jt_AppAlert.addButton(this, okText, 1);
}

jt_AppAlert.prototype = new jt_DialogBox();


/************ BEGIN: 'jt_AppAlert' Public Methods ************/
jt_AppAlert.Warning 	= "warning.gif";			// 'icon' param to 'jt_AppAlert' constructor
jt_AppAlert.Error	 	= "error.gif";				// 'icon' param to 'jt_AppAlert' constructor
jt_AppAlert.Info 		= "info.gif";				// 'icon' param to 'jt_AppAlert' constructor

jt_AppAlert.prototype.setContent = function(htmlContent)
{
	this.contentCell.innerHTML = htmlContent;
}

jt_AppAlert.prototype.setIcon = function(icon)
{
	if(icon != null && icon != "")
		this.iconImage.src = jt_DialogBox.imagePath + icon;
	else
		this.iconImage.src = jt_DialogBox.imagePath + "1x1.gif";
}
/************ END: 'jt_AppAlert' Public Methods ************/



jt_AppConfirm = function(icon, callOK, callCancel,okText,cancelText,useClose)
{
	// CONSTRUCTOR for 'jt_AppConfirm' object - EXTENDS 'jt_AppAlert'
	if (arguments.length==0) return;

	if(callCancel == '') callCancel = null;

	okText				= okText != "" ? okText : language_array["OK"]; 	// label for "OK" button (for i18N)
	cancelText 			= cancelText != "" ? cancelText : language_array["Cancel"]; 	// label for "Cancel" button (for i18N)

	this.base 			= jt_AppAlert;
	this.base(icon,okText,useClose);

	this.callOK 		= callOK;
	this.callCancel 	= callCancel;

	this.returnData 	= new Object();

	if(callCancel != null)
		jt_AppAlert.addButton(this, cancelText, 2);
}

jt_AppConfirm.prototype = new jt_AppAlert();


/************ BEGIN: 'jt_AppConfirm' Public Methods ************/
jt_AppConfirm.prototype.setUserParam = function(user_param)
{
	this.returnData.user_param 	= user_param;
}

jt_AppConfirm.prototype.askUser = function(htmlContent)
{
	this.setContent(htmlContent);
	this.show();
}

/************ END: 'jt_AppConfirm' Public Methods ************/

jt_AppPrompt = function(icon, callOK, callCancel, cssClass,okText,cancelText,useClose)
{
	// CONSTRUCTOR for 'jt_AppPrompt' object - EXTENDS 'jt_AppConfirm'
	if (arguments.length==0) return;

	this.base 			= jt_AppConfirm;
	this.base(icon, callOK, callCancel,okText,cancelText,useClose);

	this.returnData 	= new Object();
	this.fInput 		= document.createElement('input');
	this.fInput.type 	= "text";

	if (cssClass)
		this.fInput.className = cssClass;

	this.fInput.appDialog 	= this;
	this.fInput.onkeypress 	= jt_AppPrompt.keyPress;
}

jt_AppPrompt.prototype 	= new jt_AppConfirm();
jt_AppPrompt.superClass = jt_AppConfirm.prototype;


/************ BEGIN: 'jt_AppPrompt' Public Methods ************/
jt_AppPrompt.prototype.askUser = function(htmlContent, stDefault)
{
	this.setContent(htmlContent);
	this.fInput.value = stDefault;
	this.contentCell.appendChild(this.fInput);
	this.show();
	this.fInput.focus();
}

jt_AppPrompt.prototype.focus = function()
{
	this.fInput.focus();
}

jt_AppPrompt.prototype.hide = function(ok,suppress_exec)
{
	if(ok)
	{
		this.returnData.user_param 	= this.fInput.user_param;
		this.returnData.value 		= this.fInput.value;
	}

	jt_AppPrompt.superClass.hide.call(this, ok, suppress_exec);
}
/************ END: 'jt_AppPrompt' Public Methods ************/

/************ BEGIN: 'jt_AppAlert' Private Methods ************/
jt_AppAlert.addButton = function(parent, buttonText, buttonNum)
{
	var button 				= document.createElement("button");

	button.style.fontSize 	= "8pt";
	button.style.width 		= "120px";
	button.style.margin 	= "0px 5px";
	button.style.background	= "#4C6171";
	button.style.color		= "#FFFFFF";
	button.innerHTML 		= buttonText;

	button.id				= "id_dialog_button_"+buttonNum;
	button.linkNum 			= buttonNum;
	button.appDialog 		= parent;
	button.onclick 			= jt_AppAlert.clickLink;

	parent.buttonDIV.appendChild(button);
}

jt_AppAlert.clickLink = function(e)
{
	if (!e) e = window.event;

	var node 	= e.target ? e.target : e.srcElement;
	var linkNum = node.linkNum;
	var count 	= 0;

	while ((node != null) && (count < jt_DialogBox.maxDepth))
	{
		if (node.appDialog)
		{
			switch (linkNum)
			{
				case 1:
				{
					node.appDialog.hide(true,false);
				}
				break;
				case 2:
				{
					node.appDialog.hide(false,false);
				}
				break;
				default:
				{
					if(typeof node.appDialog.handleButtonClick == 'function')
						node.appDialog.handleButtonClick(node);
				}
				break;
			}

			return false;
		}

		node = node.parentNode;
		count++;
	}

	return false;
}

jt_AppPrompt.keyPress = function(e)
{
	if (!e) e = window.event;

	var node 	= e.target 	? e.target 	: e.srcElement;
	var key 	= e.keyCode ? e.keyCode : e.which;

	if (key == 13) node.appDialog.hide(true,false);
	if (key == 27) node.appDialog.hide(false,true);
}

jt_AppAlert.prototype.trace = function()
{
	alert(objToString(this.contentArea));
}

rw_languageEditor = function(icon, callOK, callCancel,callValidate,availableLangArray,callOnSelectLang, cssClass,okText,cancelText)
{
	if (arguments.length==0) return;

	this.base 					= jt_AppConfirm;
	this.base(icon, callOK, callCancel,okText,cancelText,true);

	this.callValidate			= callValidate;
	this.availableLangArray		= availableLangArray;

	this.returnData 			= new Object();

	this.fInput_in 				= document.createElement('textarea');
	this.fInput_in.readOnly 	= 'readonly';
	this.fInput_in.rows 		= '20';
	this.fInput_in.cols 		= '75';

	this.fInput_out 			= document.createElement('textarea');
	this.fInput_out.rows 		= '20';
	this.fInput_out.cols 		= '75';

	this.fInput_select 			= document.createElement('select');
	this.fInput_select.onselect = callOnSelectLang;
	this.fInput_select.onchange = callOnSelectLang;

	if(cssClass)
	{
		this.fInput_in.className 	= cssClass;
		this.fInput_out.className 	= cssClass;
		this.fInput_select.className= cssClass;
	}

	this.fInput_in.appDialog		= this;
	this.fInput_out.appDialog		= this;
	this.fInput_select.appDialog	= this;
}

rw_languageEditor.prototype 	= new jt_AppConfirm();
rw_languageEditor.superClass 	= jt_AppConfirm.prototype;

rw_languageEditor.prototype.createOptions = function(value,text)
{
	var opt 				= document.createElement('OPTION');
	opt.value				= value;
	opt.text 				= text;

	this.fInput_select.options.add(opt, this.fInput_select.length);
}

rw_languageEditor.prototype.askUser = function(htmlContent, stDefault, synonym,current_lang, group_name)
{
	this.setContent(htmlContent);

	var title = this.getTitle();
	title += " -> "+cutText(synonym,70);
	this.setTitle(title);

	this.fInput_in.value 	= stDefault;
	this.fInput_out.value 	= stDefault;

	this.synonym			= synonym;

	var c_availableLangArray= this.availableLangArray.length;
	var lval 				= '';
	var label				= '';
	var selIdx 				= -1;

	this.fInput_select.options.length = 0;

	for(var i=0; i < c_availableLangArray; i++)
	{
		label 				= this.availableLangArray[i][0];
		lval 				= this.availableLangArray[i][1];

		if(lval == current_lang) selIdx = i;

		this.createOptions(lval,label);
	}

	this.fInput_select.selectedIndex = selIdx;

	var table 	= document.createElement('table');
	var tBody 	= document.createElement('tbody');

	if(group_name != "" && typeof group_name != "undefined")
	{
		var row0	= document.createElement('tr');
		var td0		= document.createElement('td');
		var txt0	= document.createTextNode("Das Element ist gruppiert und gehört zur Gruppe: "+group_name);

		td0.setAttribute("vAlign", "top");
		td0.className = "font_1";
		td0.appendChild(txt0);
		row0.appendChild(td0);
		tBody.appendChild(row0);
	}

	var row1	= document.createElement('tr');
	var td1		= document.createElement('td');

	var row2	= document.createElement('tr');
	var td2		= document.createElement('td');

	var table2 	= document.createElement('table');
	var tbody2 	= document.createElement('tbody');
	var row21	= document.createElement('tr');

	var td21	= document.createElement('td');
	var txt21	= document.createTextNode(language_array["Bitte wählen Sie eine Sprache für die Übersetzung: "]);
	var td22	= document.createElement('td');

	var row3	= document.createElement('tr');
	var td3		= document.createElement('td');


	td1.setAttribute("vAlign", "top");
	td1.appendChild(this.fInput_in);
	row1.appendChild(td1);
	tBody.appendChild(row1);

	td21.setAttribute("vAlign", "top");
	td21.className = "font_1";
	td21.appendChild(txt21);

	td22.setAttribute("vAlign", "top");
	td22.appendChild(this.fInput_select);

	row21.appendChild(td21);
	row21.appendChild(td22);

	tbody2.appendChild(row21);
	table2.appendChild(tbody2);

	td2.appendChild(table2);
	row2.appendChild(td2);

	tBody.appendChild(row2);

	td3.setAttribute("vAlign", "top");

	td3.appendChild(this.fInput_out);
	row3.appendChild(td3);
	tBody.appendChild(row3);

	table.appendChild(tBody);

	this.contentCell.appendChild(table);

	this.show();

	this.fInput_out.focus();
}

rw_languageEditor.prototype.focus = function()
{
	this.fInput_out.focus();
}

rw_languageEditor.prototype.hide = function(ok,suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		this.returnData.org_value	= this.fInput_in.value;
		this.returnData.value 		= this.fInput_out.value;
		this.returnData.user_param 	= this.fInput_out.user_param;
		this.returnData.synonym 	= this.synonym;
		this.returnData.language_id	= this.fInput_select.value;
		this.returnData.errorText 	= "";

		if(!this.callValidate(this.returnData))
		{
			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide) rw_languageEditor.superClass.hide.call(this, ok, suppress_exec);
}

rw_languageEditor.keyPress = function(e)
{
	if (!e) e = window.event;

	var node = e.target ? e.target : e.srcElement;
	var key = e.keyCode ? e.keyCode : e.which;

	if (key == 13) node.appDialog.hide(true,false);
	if (key == 27) node.appDialog.hide(false,true);
}

languageGroupEditor = function(icon, callOK, callCancel, callValidate, callOnSelectGroup, cssClass, okText, cancelText)
{
	if (arguments.length == 0)
		return;

	this.base 			= jt_AppConfirm;
	this.base(icon, callOK, callCancel, okText, cancelText,true);

	this.callValidate		= callValidate;
	this.callOnSelectGroup		= callOnSelectGroup;
	this.cssClass			= cssClass;

	this.returnData 		= new Object();
}

languageGroupEditor.prototype 	= new jt_AppConfirm();
languageGroupEditor.superClass 	= jt_AppConfirm.prototype;

languageGroupEditor.prototype.askUser_edit = function(synonym_array, groupName, groupID)
{
	var c_synonym_array		= synonym_array.length;

	var table 			= document.createElement('table');
	var tBody 			= document.createElement('tbody');

	table.width			= "100%";

	var td;
	var row;
	var subTable;
	var subTBody;
	var row1;
	var td1;
	var td2;
	var td3;

	var fInput_chkbox;
	this.fInput_checkbox		= [];

	//Kopfbereich
	row		= document.createElement('tr');
	td		= document.createElement('td');

	subTable	= document.createElement('table');
	subTBody	= document.createElement('tbody');

	row1		= document.createElement('tr');

	td1		= document.createElement('td');	td1.className="font_2";
	td2		= document.createElement('td');
	td3		= document.createElement('td');	td3.className="font_1";

	td1.appendChild(document.createTextNode(language_array["Gruppe:"]));
	td2.appendChild(document.createTextNode(""));
	td3.appendChild(document.createTextNode(groupName));

	row1.appendChild(td1);
	row1.appendChild(td2);
	row1.appendChild(td3);

	subTBody.appendChild(row1);
	subTable.appendChild(subTBody);

	td.appendChild(subTable);
	row.appendChild(td);
	tBody.appendChild(row);
	//

	//Mitgliederbereich - Tabellenkopf
	row		= document.createElement('tr');
	td		= document.createElement('td');

	td.style.overflow	= "scroll";

	subTable	= document.createElement('table');
	subTBody	= document.createElement('tbody');

	row1		= document.createElement('tr');

	td1		= document.createElement('td');	td1.className="cell_dark";
	td2		= document.createElement('td');	td2.className="cell_dark";
	td3		= document.createElement('td');	td3.className="cell_dark";

	td1.appendChild(document.createTextNode(language_array["Mitglied"]));
	td2.appendChild(document.createTextNode(language_array["Text"]));
	td3.appendChild(document.createTextNode(language_array["Seite"]));

	row1.appendChild(td1);
	row1.appendChild(td2);
	row1.appendChild(td3);

	subTBody.appendChild(row1);
	//

	//Mitgliederbereich - Inhalt
	for (var i = 0; i < c_synonym_array; i++)
	{
		row1		= document.createElement('tr');

		td1		= document.createElement('td');	td1.className="cell";
		td2		= document.createElement('td');	td2.className="cell";
		td3		= document.createElement('td');	td3.className="cell";

		fInput_chkbox			= document.createElement("input");
		fInput_chkbox.type		= "checkbox";
		fInput_chkbox.value		= synonym_array[i]["synonym"];
		fInput_chkbox.className		= "box";
		fInput_chkbox.appDialog		= this;
		fInput_chkbox.id		= "checkbox_"+i;

		attrib				= document.createAttribute('checked');
		attrib.nodeValue 		= true;
		fInput_chkbox.setAttributeNode(attrib);

		td1.appendChild(fInput_chkbox);
		td2.appendChild(document.createTextNode(synonym_array[i]["text"]));
		td3.appendChild(document.createTextNode("seite"));

		row1.appendChild(td1);
		row1.appendChild(td2);
		row1.appendChild(td3);

		subTBody.appendChild(row1);

		this.fInput_checkbox[this.fInput_checkbox.length]	= fInput_chkbox;

	}
	subTable.appendChild(subTBody);

	td.appendChild(subTable);
	row.appendChild(td);
	tBody.appendChild(row);
	//

	table.appendChild(tBody);

	this.contentCell.appendChild(table);

	this.show();

	this.returnData.group		= groupID;
	this.returnData.group_name	= groupName;
}

languageGroupEditor.prototype.askUser_add = function(synonym_array, group_array)
{
	var c_synonym_array		= synonym_array.length;
	var c_group_array		= group_array.length;

	var table 			= document.createElement('table');
	var tBody 			= document.createElement('tbody');

	table.width			= "100%";

	var row;
	var td1;
	var td2;
	var td3;
	var td4;
	var opt;

	var span			= null;
	var attrib;

	var fInput_chkbox;
	this.fInput_checkbox		= [];

	var fInput_radio;
	this.fInput_rbut		= [];

	var text;
	var max_text_len		= 100;

	var ballonDiv			= $('BallonTip');
	ballonDiv.style.zIndex		= 10050;

	//GruppenSelectBox
	this.fInput_select 		= document.createElement('select');

	if (this.callOnSelectGroup)
	{
		this.fInput_select.onselect	= this.callOnSelectGroup;
		this.fInput_select.onchange	= this.callOnSelectGroup;
	}

	this.fInput_select.options.length = 0;

	var new_opt	= document.createElement('OPTION');
	new_opt.value	= 0;
	new_opt.text	= language_array["- neue Gruppe -"];

	this.fInput_select.options.add(new_opt, this.fInput_select.length);

	for (var i = 0; i < c_group_array; i++)
	{
		opt 		= document.createElement('OPTION');

		opt.value	= group_array[i]["id"];
		opt.text 	= group_array[i]["name"];

		this.fInput_select.options.add(opt, this.fInput_select.length);
	}

	row		= document.createElement('tr');

	td1		= document.createElement('td'); td1.className	= "font_2"; td1.colSpan	= "4";

	td1.appendChild(document.createTextNode(language_array["Gruppe:"]+" "));
	td1.appendChild(this.fInput_select);

	row.appendChild(td1);

	tBody.appendChild(row);
	//

	//neuer GruppenName
	this.fInput_text_name		= document.createElement('input');
	this.fInput_text_name.type	= "text";
	this.fInput_text_name.size	= "50";
	this.fInput_text_name.id	= "input_groupname";

	row		= document.createElement('tr');

	td1		= document.createElement('td'); td1.className	= "font_2"; td1.colSpan	= "4";

	td1.appendChild(document.createTextNode(language_array["Gruppenname:"]+" "));
	td1.appendChild(this.fInput_text_name);

	row.appendChild(td1);

	tBody.appendChild(row);
	//

	//Tabellenkopf
	row	= document.createElement('tr');

	td1	= document.createElement('td'); td1.className = "cell_dark"; td1.appendChild(document.createTextNode(language_array["Mitglied"]));
	td2	= document.createElement('td'); td2.className = "cell_dark"; td2.appendChild(document.createTextNode(language_array["Text"]));
	td3	= document.createElement('td'); td3.className = "cell_dark"; td3.appendChild(document.createTextNode(language_array["Seite"]));
	td4	= document.createElement('td'); td4.className = "cell_dark"; td4.appendChild(document.createTextNode( language_array["Master"]));

	row.appendChild(td1);
	row.appendChild(td2);
	row.appendChild(td3);
	row.appendChild(td4);

	tBody.appendChild(row);

	for (var i = 0; i < c_synonym_array; i++)
	{
		text					= synonym_array[i]["text"];

		fInput_chkbox			= document.createElement("input");
		fInput_chkbox.type		= "checkbox";
		fInput_chkbox.value		= synonym_array[i]["synonym"];
		fInput_chkbox.className	= "box";
		fInput_chkbox.appDialog	= this;
		fInput_chkbox.id		= "checkbox_"+i;

		attrib					= document.createAttribute('checked');
		attrib.nodeValue 		= true;
		fInput_chkbox.setAttributeNode(attrib);

		if(document.getElementById && !document.all)
		{
			fInput_radio			= document.createElement("input");
			fInput_radio.type		= "radio";
			fInput_radio.name		= "input_master";
		}
		else
		{
			fInput_radio			= document.createElement("<input name='input_master' type='radio'>");
		}

		fInput_radio.className	= "box";
		fInput_radio.appDialog	= this;

		fInput_radio.id			= "input_master_"+synonym_array[i]["synonym"];
		fInput_radio.value		= synonym_array[i]["synonym"];

		if (i == 0)
		{
			var check			= document.createAttribute('checked');
			check.nodeValue		= true;
			fInput_radio.setAttributeNode(check);
		}

		row	= document.createElement('tr');

		td1	= document.createElement('td'); td1.className = "cell";
		td2	= document.createElement('td'); td2.className = "cell";
		td3	= document.createElement('td'); td3.className = "cell";
		td4	= document.createElement('td'); td4.className = "cell";

		td1.appendChild(fInput_chkbox);

		span				= document.createElement('span');
		span.onmouseover		= function() { showBallon(text,0,350,'#ffffff'); return true; };
		span.onmouseout			= function() { hideBallon(); return true; };

		span.appendChild(document.createTextNode(text.length > max_text_len ? text.substr(0, max_text_len)+" ..." : text));

		td2.appendChild(span);
		td3.appendChild(document.createTextNode("seite"));
		td4.appendChild(fInput_radio);

		row.appendChild(td1);
		row.appendChild(td2);
		row.appendChild(td3);
		row.appendChild(td4);

		tBody.appendChild(row);

		this.fInput_checkbox[this.fInput_checkbox.length]	= fInput_chkbox;
		this.fInput_rbut[this.fInput_rbut.length]		= fInput_radio;
	}

	if(this.cssClass)
		this.fInput_select.className	= this.cssClass;

	this.fInput_select.appDialog	= this;

	table.appendChild(tBody);

	this.contentCell.appendChild(table);

	this.show();
}

languageGroupEditor.prototype.hide = function(ok, suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		var checked_elms		= [];
		var master_elm			= 0;

		var c_fInput_checkbox		= this.fInput_checkbox.length

		if (this.fInput_select)		this.returnData.group		= this.fInput_select.value;
		if (this.fInput_text_name)	this.returnData.group_name	= this.fInput_text_name.value;

		for (var i = 0; i < c_fInput_checkbox; i++)
		{
			if (this.fInput_checkbox[i].checked)
				checked_elms[checked_elms.length] = this.fInput_checkbox[i].value;
		}

		if (this.fInput_rbut)
		{
			var c_fInput_rbut		= this.fInput_rbut.length

			for (var i = 0; i < c_fInput_rbut && master_elm <= 0; i++)
			{
				if (this.fInput_rbut[i].checked)
					master_elm = this.fInput_rbut[i].value;
			}
		}

		this.returnData.master 		= master_elm;
		this.returnData.elements 	= checked_elms;
		this.returnData.errorText 	= "";

		if(this.callValidate && !this.callValidate(this.returnData))
		{
			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide)
		languageGroupEditor.superClass.hide.call(this, ok, suppress_exec);
}

languageGroupEditor.keyPress = function(e)
{
	if (!e)
		e = window.event;

	var node = e.target ? e.target : e.srcElement;
	var key = e.keyCode ? e.keyCode : e.which;

	if (key == 13) node.appDialog.hide(true,false);
	if (key == 27) node.appDialog.hide(false,true);
}


rw_billing_bubble = function(icon, callOK, okText)
{
	// CONSTRUCTOR for 'rw_billing_bubble' object - EXTENDS 'jt_AppAlert'
	if (arguments.length==0) return;

	okText				= okText != "" ? okText : language_array["OK"]; 	// label for "OK" button (for i18N)

	this.base 			= jt_AppAlert;
	this.base(icon,okText,true);

	this.callOK 		= callOK;
}

rw_billing_bubble.prototype = new jt_AppAlert();


/************ BEGIN: 'jt_AppConfirm' Public Methods ************/
rw_billing_bubble.prototype.askUser = function(htmlContent)
{
	this.setContent(htmlContent);
	this.show();
}
/************ END: 'rw_billing_bubble' Public Methods ************/

rw_powerpoint = function(icon, callOK, okText,callValidate)
{
	if (arguments.length==0) return;

	okText				= okText != "" ? okText : language_array["OK"]; 	// label for "OK" button (for i18N)

	this.base 			= jt_AppAlert;
	this.base(icon,okText,true);

	this.callOK 		= callOK;
	this.callValidate	= callValidate;
	this.returnData 	= new Object();
}

rw_powerpoint.prototype 	= new jt_AppAlert();
rw_powerpoint.superClass 	= jt_AppAlert.prototype;

rw_powerpoint.prototype.askUser = function(htmlContent)
{
	this.setContent(htmlContent);
	this.show();
}

rw_powerpoint.prototype.hide = function(ok,suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		this.returnData.errorText 	= "";

		if(!this.callValidate(this.returnData))
		{
			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide) rw_powerpoint.superClass.hide.call(this, ok, suppress_exec);
}

sb_inventar_summary_info = function(icon, callOK, okText)
{
	if (arguments.length==0) return;

	okText				= okText != "" ? okText : language_array["OK"]; 	// label for "OK" button (for i18N)

	this.base 			= jt_AppAlert;
	this.base(icon,okText,true);

	this.callOK 		= callOK;
	this.returnData 	= new Object();
}

sb_inventar_summary_info.prototype 	= new jt_AppAlert();
sb_inventar_summary_info.superClass 	= jt_AppAlert.prototype;

sb_inventar_summary_info.prototype.askUser = function(htmlContent)
{
	removeAllChilds(this.contentCell);

	this.setContent(htmlContent);
	this.show();
}

sb_inventar_summary_info.prototype.hide = function(ok,suppress_exec)
{
	var bCanHide = true;

	if(ok)
		this.returnData.errorText 	= "";

	if(bCanHide) sb_inventar_summary_info.superClass.hide.call(this, ok, suppress_exec);
}

///////////////////////////////////////////////////////////////////////////////////
rw_marketer_staffel_bearbeiten = function(callOK,okText,callCancel,cancelText,callValidate, callCheckAll)
{
	if (arguments.length==0) return;

	okText				= okText != "" 		? okText 		: language_array["OK"];
	cancelText			= cancelText != "" 	? cancelText 	: language_array["Cancel"];

	this.base 			= jt_AppConfirm;
	this.base(null, callOK, callCancel,okText,cancelText,true);

	this.callValidate	= callValidate;
	this.callOK 		= callOK;
	this.callCheckAll	= callCheckAll;

	this.returnData 	= new Object();
}

rw_marketer_staffel_bearbeiten.prototype 	= new jt_AppConfirm();
rw_marketer_staffel_bearbeiten.superClass 	= jt_AppConfirm.prototype;

rw_marketer_staffel_bearbeiten.prototype._createrHeaderCell = function(className,text,colSpan)
{
	var th		= document.createElement('th');
		th.setAttribute("class",	className);
		th.setAttribute("className",className);
		th.setAttribute("colSpan",	colSpan);
		th.appendChild(document.createTextNode(text));
	return th;
}

rw_marketer_staffel_bearbeiten.prototype._createCell = function(className,colSpan,child)
{
	var td		= document.createElement('td');
		td.setAttribute("vAlign",	"top");
		td.setAttribute("class",	className);
		td.setAttribute("className",className);
		td.setAttribute("colSpan",	colSpan);
		if(child != null) td.appendChild(child);
	return td;
}

rw_marketer_staffel_bearbeiten.prototype._createIcon = function(src,title)
{
	var img = document.createElement("img");
		img.src 	= src;
		img.width 	= 14;
		img.height 	= 14;
		img.border 	= 0;
		img.title 	= title;
	return img;
}

rw_marketer_staffel_bearbeiten.prototype._createTableKondition = function(tbl_text,data)
{
	var table 	= document.createElement('table');
	var tHead 	= document.createElement('thead');

	var rowHead	= document.createElement('tr');
		rowHead.appendChild(this._createrHeaderCell("cell_dark",tbl_text.head,3));

	tHead.appendChild(rowHead);
	table.appendChild(tHead);

	table.cellPadding	= "0px";
	table.cellSpacing	= "0px";

	var tBody 						= document.createElement('tbody');

	var row1						= document.createElement('tr');
		row1.appendChild(this._createCell("cell",1,document.createTextNode(HtmlDecode(tbl_text.td_text1))));

	var input_kondition 			= document.createElement('input');
		input_kondition.setAttribute("type",	"text");
		input_kondition.setAttribute("id",		"id_input_kondition");
		input_kondition.setAttribute("maxLength",6);

		input_kondition.appDialog 	= this;
		input_kondition.onkeypress	= function(event) { return checkDecimal(this,event,3,2); }
		input_kondition.onblur 		= function(event) { return this._checkPercent(event); }.bind(this);

		if(data != null)
		{
			input_kondition.value 			= data.value;
			input_kondition.staffel_type 	= data.type;
		}

		row1.appendChild(this._createCell("cell",1,input_kondition));
		row1.appendChild(this._createCell("cell",1,document.createTextNode(tbl_text.td_text2)));

	tBody.appendChild(row1);

	table.appendChild(tBody);

	return table;
}

rw_marketer_staffel_bearbeiten.prototype._addStaffelLine = function(data)
{
	var tBody 	= this.getOwnElementById("tbody_staffel");

	if(tBody != null)
	{
		var rowNum 	= tBody.childNodes.length;

		var row1	= document.createElement('tr');
			row1.setAttribute("id","id_staffel_row_"+rowNum);

		var input_staffel_ab_euro 					= document.createElement('input')
			input_staffel_ab_euro.setAttribute("type","text");
			input_staffel_ab_euro.setAttribute("id","id_input_staffel_ab_euro_"+rowNum);

			input_staffel_ab_euro.appDialog 		= this;
			input_staffel_ab_euro.onkeypress		= function(event) { return moneyonly(this,event); }

			if(data != null)
				input_staffel_ab_euro.value 		= data[0];

			row1.appendChild(this._createCell("cell",1,input_staffel_ab_euro));

		var input_kondition_in_prozent 				= document.createElement('input')
			input_kondition_in_prozent.setAttribute("type","text");
			input_kondition_in_prozent.setAttribute("id","id_input_kondition_in_prozent_"+rowNum);
			input_kondition_in_prozent.setAttribute("maxLength",6);

			input_kondition_in_prozent.appDialog 	= this;
			input_kondition_in_prozent.onblur 		= function(event) { return this._checkPercent(event); }.bind(this);
			input_kondition_in_prozent.onkeypress	= function(event) { return checkDecimal(this,event,3,2); }

			if(data != null)
				input_kondition_in_prozent.value 	= data[1];

			row1.appendChild(this._createCell("cell",1,input_kondition_in_prozent));

		var action_td = this._createCell("cell",1,null);
		var link_add 				= document.createElement("span");
			link_add.style.cursor 	= "pointer";
			link_add.onclick 		= function(event) { this._addStaffelLine(); }.bind(this);
			link_add.appendChild(this._createIcon("/images_pub/plus.gif",language_array["hinzufügen"]));

			action_td.appendChild(link_add);

		if(rowNum > 0) //das erste element kann man nicht loeschen
		{
			action_td.appendChild(document.createTextNode(" "));

			var link_del 				= document.createElement("span");
				link_del.style.cursor 	= "pointer";
				link_del.onclick 		= function(event) { this._delStaffelLine(event); }.bind(this);
				link_del.appendChild(this._createIcon("/images_pub/minus.gif",language_array["löschen"]));

			action_td.appendChild(link_del);
		}

		row1.appendChild(action_td);

		tBody.appendChild(row1);
	}
}

rw_marketer_staffel_bearbeiten.prototype._delStaffelLine = function(event)
{
		event 	= jt_fixE(event);
	var hElement= (event.srcElement) ? event.srcElement : event.originalTarget;

	if(event && hElement)
	{
		var tr				= hElement.parentNode.parentNode.parentNode;
		var tBody			= tr.parentNode;

		if(tBody.childNodes.length > 1)
		{
			var tr_id_to_remove = tr.id;

			var pattern_get 	= "/[A-Za-z].*([0-9]+)/";
			var regex_get		= new RegExp(eval(pattern_get));
			tr_id_to_remove		= regex_get.exec(tr_id_to_remove)[1];

			if(!Number(tr_id_to_remove).NaN)
				tBody.removeChild(tr);
		}
	}
}

rw_marketer_staffel_bearbeiten.prototype._createTableStaffel = function(tbl_text)
{
	var table 	= document.createElement('table');

	var tHead 	= document.createElement('thead');

	var rowHead	= document.createElement('tr');
		rowHead.appendChild(this._createrHeaderCell("cell_dark",tbl_text.head,3));
	tHead.appendChild(rowHead);

	var rowHead2= document.createElement('tr');
		rowHead2.appendChild(this._createrHeaderCell("cell_header",HtmlDecode(tbl_text.td_text1),1));
		rowHead2.appendChild(this._createrHeaderCell("cell_header",tbl_text.td_text2),1);
		rowHead2.appendChild(this._createrHeaderCell("cell_header",tbl_text.td_text3),1);
	tHead.appendChild(rowHead2);

	table.appendChild(tHead);

	var tBody 	= document.createElement('tbody');
		tBody.setAttribute("id","tbody_staffel");

	table.appendChild(tBody);

	return table;
}

rw_marketer_staffel_bearbeiten.prototype.askUser = function(ar_text, data, staffelTyp, vermarktungTyp)
{
	removeAllChilds(this.contentCell);

	this.contentCell.appendChild(this._createTableKondition(ar_text.tbl_kondition,data ? data[2].kondition : null));
	this.contentCell.appendChild(document.createElement("br"));
	this.contentCell.appendChild(this._createTableStaffel(ar_text.tbl_staffel));

	this.returnData.staffelTyp		= staffelTyp;
	this.returnData.vermarktungTyp	= vermarktungTyp;

	var c_staffel = 0;

	if(data != null)
		c_staffel = data[2].staffel.length;

	if(c_staffel > 0)
	{
		for(var i = 0; i < c_staffel; i++)
			this._addStaffelLine(data[2].staffel[i]);
	}
	else
		this._addStaffelLine(); //default staffel row

	this.contentCell.appendChild(document.createElement("br"));

	var label 				= document.createElement("label");
		label.setAttribute("for",		"id_all_arts");
		label.appendChild(document.createTextNode(ar_text.all.text));
		label.setAttribute("title",		ar_text.all.info);
		label.setAttribute("alt",		ar_text.all.info);

	var checkbox 			= document.createElement("input");
		checkbox.setAttribute("type",		"checkbox");
		checkbox.setAttribute("id",			"id_all_arts");
		checkbox.setAttribute("class",		"box");
		checkbox.setAttribute("className",	"box");
		checkbox.setAttribute("title",		ar_text.all.info);
		checkbox.setAttribute("alt",		ar_text.all.info);

		if (this.callCheckAll != null)
			addEvent(checkbox, "click", this.callCheckAll);

	this.contentCell.appendChild(checkbox);
	this.contentCell.appendChild(label);

	this.show();
	this.focus();
}

rw_marketer_staffel_bearbeiten.prototype.focus = function()
{
	var id_input_kondition = this.getOwnElementById("id_input_kondition");

	if(id_input_kondition != null)
		id_input_kondition.focus();
}

rw_marketer_staffel_bearbeiten.prototype.hide = function(ok,suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		var id_input_kondition = this.getOwnElementById("id_input_kondition");

		if(id_input_kondition != null)
			this.returnData.kondition = id_input_kondition.value;

		this.returnData.staffel = [];

		var tBody 	= this.getOwnElementById("tbody_staffel");

		if(tBody != null)
		{
			var rowNum 	= tBody.childNodes.length;

			for(var i=0; i < rowNum; i++)
			{
				var tr 			= tBody.childNodes[i];
				var row_data	= {};

				var node = tr.firstChild;

				while(node != null)
				{
					if(node.tagName.toUpperCase() == "TD")
					{
						if(node.firstChild.tagName.toUpperCase() == "INPUT")
						{
							var input_id		= node.firstChild.id;
							var pattern_get 	= "/id_([A-Za-z_].*)_[0-9]+/";
							var regex_get		= new RegExp(eval(pattern_get));
								input_name		= regex_get.exec(input_id)[1];

							row_data[input_name] = node.firstChild.value;
						}
					}

					node = node.nextSibling;
				}

				this.returnData.staffel.push(row_data);
			}
		}

		var id_all_arts = this.getOwnElementById("id_all_arts");

		if(id_all_arts != null)
			this.returnData.all_arts = id_all_arts.checked ? "1" : "0";

		if(!this.callValidate(this.returnData))
		{
//			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide)
		rw_marketer_staffel_bearbeiten.superClass.hide.call(this, ok, suppress_exec);
}

rw_marketer_staffel_bearbeiten.keyPress = function(e)
{
	e = jt_fixE(e);

	var node 	= e.target 	? e.target 	: e.srcElement;
	var key 	= e.keyCode ? e.keyCode : e.which;

	if (key == 13) node.appDialog.hide(true,false);
	if (key == 27) node.appDialog.hide(false,true);
}

rw_marketer_staffel_bearbeiten.prototype._checkPercent = function(event)
{
		event 	= jt_fixE(event);
	var hElement= (event.srcElement) ? event.srcElement : event.target

	if(event && hElement)
	{
		if(hElement.appDialog != null)
		{
			if(Number(hElement.value) > 100.00)
				hElement.value = 100.00;
		}
	}

	return true;
}

rw_marketer_staffel_bearbeiten.prototype.getOwnElementById	= function(id)
{
	var elms	= this.contentCell.getElementsByTagName("*");
	var c_elms	= elms.length;
	var ret		= null;

	for (var i = 0; i < c_elms; i++)
	{
		if (elms[i].id == id)
		{
			ret	= elms[i];
			break;
		}
	}

	return ret;
}
/////////////////////////////////////////////////////////////////////////////////////////////

rw_provisionseinstellung = function(callOK,okText,callCancel,cancelText,callValidate)
{
	if (arguments.length==0) return;

	okText				= okText != "" 		? okText 		: language_array["OK"];
	cancelText			= cancelText != "" 	? cancelText 	: language_array["Cancel"];

	this.base 			= jt_AppConfirm;
	this.base(null, callOK, callCancel,okText,cancelText,true);

	this.callValidate	= callValidate;
	this.callOK 		= callOK;
	this.returnData 	= new Object();

	//private
	this.m_max_percent	= 100;
	this.m_max_euro		= 0;

	this.m_id			= -1;

	this.m_sel_data		= null;
}

rw_provisionseinstellung.prototype 	= new jt_AppConfirm();
rw_provisionseinstellung.superClass = jt_AppConfirm.prototype;

rw_provisionseinstellung.prototype.setMaxEuro = function(value)
{
	if(typeof value != "undefined")
		this.m_max_euro	= value;
}

rw_provisionseinstellung.prototype.setId = function(id)
{
	if(typeof id != "undefined")
		this.m_id	= id;
}

rw_provisionseinstellung.prototype._createrHeaderCell = function(className,text,colSpan)
{
	var th		= document.createElement('th');
		th.setAttribute("className",className);
		th.setAttribute("colSpan",colSpan);
		th.appendChild(document.createTextNode(text));
	return th;
}

rw_provisionseinstellung.prototype._createCell = function(className,colSpan,child,width)
{
	var td		= document.createElement('td');

		if(typeof width != "undefined")
			td.setAttribute("width", width);

		td.setAttribute("vAlign", "top");
		td.setAttribute("className",className);
		td.setAttribute("colSpan",colSpan);
		if(child != null) td.appendChild(child);
	return td;
}

rw_provisionseinstellung.prototype._createIcon = function(src,title)
{
	var img = document.createElement("img");
		img.src 	= src;
		img.width 	= 14;
		img.height 	= 14;
		img.border 	= 0;
		img.title 	= title;
	return img;
}

rw_provisionseinstellung.prototype._createOption = function(value,text)
{
	var opt 				= document.createElement('OPTION');
		opt.value			= value;
		opt.text 			= text;
	return opt;
}

rw_provisionseinstellung.prototype.toString = function()
{
	return "rw_provisionseinstellung";
}

rw_provisionseinstellung.prototype.getStaffleRowPrefix = function()
{
	return "id_staffel_row_"+this+"_";
}

rw_provisionseinstellung.prototype.getInputRowPrefix = function()
{
	return "id_input_user_"+this+"_";
}

rw_provisionseinstellung.prototype.getInputProvPercentRowPrefix = function()
{
	return "id_input_provision_in_prozent_"+this+"_";
}

rw_provisionseinstellung.prototype.getInputProvEuroRowPrefix = function()
{
	return "id_input_provision_in_euro_"+this+"_";
}


rw_provisionseinstellung.prototype._addStaffelLine = function(data)
{
	var tBody 	= document.getElementById("tbody_staffel_"+this);

	if(tBody != null)
	{
		var rowNum 	= tBody.childNodes.length;

		var row1	= document.createElement('tr');
			row1.setAttribute("id",this.getStaffleRowPrefix()+rowNum);

		var action_td = this._createCell("cell_header",1,null,35);

		var link_add 				= document.createElement("span");
			link_add.style.cursor 	= "pointer";
			link_add.onclick 		= function(event) { this._addStaffelLine(); }.bind(this);
			link_add.appendChild(this._createIcon("/images_pub/plus.gif",language_array["hinzufügen"]));

			action_td.appendChild(link_add);

		if(rowNum > 0) //das erste element kann man nicht loeschen
		{
			action_td.appendChild(document.createTextNode(" "));

			var link_del 				= document.createElement("span");
				link_del.style.cursor 	= "pointer";
				link_del.onclick 		= function(event) { this._delStaffelLine(event); }.bind(this);
				link_del.appendChild(this._createIcon("/images_pub/minus.gif",language_array["löschen"]));

			action_td.appendChild(link_del);
		}

		row1.appendChild(action_td);

		var input_user 								= document.createElement('select')
			input_user.setAttribute("id",this.getInputRowPrefix()+rowNum);

			input_user.appDialog 					= this;

			input_user.options.add(this._createOption(0,language_array["Bitte wählen"]), input_user.length);

			var c_sel_data	= this.m_sel_data.length;

			for (var i = 0; i < c_sel_data; i++)
				input_user.options.add(this._createOption(this.m_sel_data[i]["value"],this.m_sel_data[i]["label"]), input_user.length);

			if (data != null)
				input_user.value 		= data[0];

		var input_provision_in_prozent 				= document.createElement('input')
			input_provision_in_prozent.setAttribute("type","text");
			input_provision_in_prozent.setAttribute("id",this.getInputProvPercentRowPrefix()+rowNum);
			input_provision_in_prozent.setAttribute("maxLength",6);


			input_provision_in_prozent.appDialog 	= this;
			input_provision_in_prozent.onkeypress	= function(event) { return checkDecimal(this,event,3,2); }
			input_provision_in_prozent.onblur 		= function(event) { return this._checkPercent(event); }.bind(this);

			if(data != null)
				input_provision_in_prozent.value 	= data[1];

		var input_provision_in_euro 				= document.createElement('input')
			input_provision_in_euro.setAttribute("type","text");
			input_provision_in_euro.setAttribute("id",this.getInputProvEuroRowPrefix()+rowNum);

			input_provision_in_euro.appDialog 		= this;
			input_provision_in_euro.onkeypress		= function(event) { return moneyonly(this,event); }
			input_provision_in_euro.onblur 			= function(event) { return this._checkEuro(event); }.bind(this);

			if(data != null)
			{
//				input_provision_in_euro.value 		= fn_round((data[1]/100 * this.m_max_euro), 2, ".", ",");
				input_provision_in_euro.value 		= fn_round((data[1]/100 * this.m_max_euro), 2);
			}

		if (data != null && data[2] == "3")
		{
			input_user.setAttribute("disabled","disabled");
			input_provision_in_prozent.setAttribute("disabled","disabled");
			input_provision_in_euro.setAttribute("disabled","disabled");
		}

		row1.appendChild(this._createCell("cell_header", 1, input_user));
		row1.appendChild(this._createCell("cell_header", 1, input_provision_in_prozent));
		row1.appendChild(this._createCell("cell_header", 1, input_provision_in_euro));

		tBody.appendChild(row1);
	}
}

rw_provisionseinstellung.prototype._delStaffelLine = function(event)
{
		event 	= jt_fixE(event);
	var hElement= (event.srcElement) ? event.srcElement : event.originalTarget;

	if(event && hElement)
	{
		var tr				= hElement.parentNode.parentNode.parentNode;
		var tBody			= tr.parentNode;

		if(tBody.childNodes.length > 1)
		{
			var tr_id_to_remove = tr.id;

			var pattern_get 	= "/[A-Za-z].*([0-9]+)/";
			var regex_get		= new RegExp(eval(pattern_get));
			tr_id_to_remove		= regex_get.exec(tr_id_to_remove)[1];

			if(!Number(tr_id_to_remove).NaN)
				tBody.removeChild(tr);
		}
	}

	this._reCalc();
}

rw_provisionseinstellung.prototype._createTableStaffel = function(tbl_text)
{
	var table 	= document.createElement('table');

	var tHead 	= document.createElement('thead');

	var rowHead	= document.createElement('tr');
		rowHead.appendChild(this._createrHeaderCell("cell_header","",1));
		rowHead.appendChild(this._createrHeaderCell("cell_header",tbl_text.td_text1,1));
		rowHead.appendChild(this._createrHeaderCell("cell_header",tbl_text.td_text2),1);
		rowHead.appendChild(this._createrHeaderCell("cell_header",HtmlDecode(tbl_text.td_text3)),1);
	tHead.appendChild(rowHead);

	table.appendChild(tHead);

	var tBody 	= document.createElement('tbody');
		tBody.setAttribute("id","tbody_staffel_"+this);

	table.appendChild(tBody);

	return table;
}

rw_provisionseinstellung.prototype._addHRLine	= function(colspan)
{
	var tr		= document.createElement("TR");
	var td		= document.createElement("TD");

	td.colSpan	= colspan;

	td.appendChild(document.createElement("HR"));
	tr.appendChild(td);

	return tr;
}

rw_provisionseinstellung.prototype._addOutputLine	= function(text, data, b_set_euro)
{
	var tr		= document.createElement("TR");
	var txt_td	= document.createElement("TD");
	var data_td	= document.createElement("TD");
	var euro_td	= document.createElement("TD");

	txt_td.appendChild(document.createTextNode(text));
	txt_td.className	= "font_2";
	txt_td.align		= "right";

	data_td.appendChild(document.createTextNode(data));
	data_td.className	= "font_2";
	data_td.align		= "right";
	data_td.name		= "data_"+text;
	data_td.id			= "id_data_"+text.toLowerCase();

	tr.appendChild(txt_td);
	tr.appendChild(data_td);

	if (arguments.length >= 3 && b_set_euro == true)
	{
		euro_td.className	= "font_2";
		euro_td.appendChild(document.createTextNode(HtmlDecode("&euro;")));

		tr.appendChild(euro_td);
	}

	return tr;
}

rw_provisionseinstellung.prototype.askUser = function(ar_text, data)
{
	removeAllChilds(this.contentCell);

	this.contentCell.appendChild(this._createTableStaffel(ar_text.tbl_staffel));

	var c_staffel = 0;

	if(data != null)
		c_staffel = data[2].staffel.length;

	if(c_staffel > 0)
	{
		for(var i=0; i < c_staffel; i++)
			this._addStaffelLine(data[2].staffel[i]);
	}
	else
		this._addStaffelLine(); //default staffel row

	this.contentCell.appendChild(document.createElement("HR"));
}

rw_provisionseinstellung.prototype.focus = function()
{
	var input_user = document.getElementById(this.getInputRowPrefix()+"0");

	if (input_user && input_user.getAttribute("disabled") != "disabled")
		input_user.focus();
}

rw_provisionseinstellung.prototype.hide = function(ok,suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		this.returnData.staffel = [];

		var tBody 	= document.getElementById("tbody_staffel_"+this);

		if(tBody != null)
		{
			var rowNum 	= tBody.childNodes.length;

			for(var i=0; i < rowNum; i++)
			{
				var tr 			= tBody.childNodes[i];
				var row_data	= {};

				var node = tr.firstChild;

				while(node != null)
				{
					if(node.tagName.toUpperCase() == "TD")
					{
						if(node.firstChild.tagName.toUpperCase() == "INPUT" || node.firstChild.tagName.toUpperCase() == "SELECT")
						{
							var input_id		= node.firstChild.id;
							var pattern_get 	= "/id_([A-Za-z_].*)_[0-9]+/";
							var regex_get		= new RegExp(eval(pattern_get));
								input_name		= regex_get.exec(input_id)[1];

							row_data[input_name.replace("_"+this.toString(),"")] = node.firstChild.value;
						}
					}

					node = node.nextSibling;
				}

				this.returnData.staffel.push(row_data);
			}
		}

		if(!this.callValidate(this.returnData))
		{
			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide)
		rw_provisionseinstellung.superClass.hide.call(this, ok, suppress_exec);
}

rw_provisionseinstellung.prototype._getSumOf = function(fieldId,exclID)
{
	var sum 	= 0;
	var tBody 	= document.getElementById("tbody_staffel_"+this);

	if(tBody != null)
	{
		var rowNum 		= tBody.childNodes.length;

		for(var i=0; i < rowNum; i++)
		{
			var tr 		= tBody.childNodes[i];
			var node 	= tr.firstChild;

			while(node != null)
			{
				if(node.tagName.toUpperCase() == "TD")
				{
					if(node.firstChild.tagName.toUpperCase() == "INPUT" && !isEmpty(node.firstChild.value))
					{
						if(typeof exclID == "undefined" || (typeof exclID != "undefined" && node.firstChild.id != exclID))
						{
							var input_id		= node.firstChild.id;
							var pattern_get 	= "/id_([A-Za-z_].*)_[0-9]+/";
							var regex_get		= new RegExp(eval(pattern_get));
								input_name		= regex_get.exec(input_id)[1];


							if(input_name.toLowerCase() == (fieldId+"_"+this.toString()))
								sum += Number(node.firstChild.value);
						}
					}
				}

				node = node.nextSibling;
			}
		}
	}

	return sum;
}

rw_provisionseinstellung.prototype._checkPercent = function(event)
{
		event 	= jt_fixE(event);
	var hElement= (event.srcElement) ? event.srcElement : event.target

	if(event && hElement)
	{
		if(hElement.appDialog != null)
		{
			var cur = Number(hElement.value);
			var sum = this._getSumOf("input_provision_in_prozent", hElement.id);
			var diff= this.m_max_percent - sum;

			//checke den wert, und wenn er die grenze ueberschreitet, update ihn auf das maximal moegliche
			if(diff < cur)
				hElement.value = diff;

			//crossupdate
			var euro 	= (Number(hElement.value) * 100) * Number(this.m_max_euro)/10000;
			var objID 	= hElement.id.replace(/prozent/,"euro");
			var obj 	= document.getElementById(objID);

			if(obj != null)
			{
//				obj.value = fn_round(euro, 2, ".", ",");
				obj.value = fn_round(euro, 2);
			}

			this._reCalc();
		}
	}

	return true;
}

rw_provisionseinstellung.prototype._checkEuro = function(event)
{
		event 	= jt_fixE(event);
	var hElement= (event.srcElement) ? event.srcElement : event.target

	if(event && hElement)
	{
		if(hElement.appDialog != null)
		{
			var cur = Number(hElement.value);
			var sum = this._getSumOf("input_provision_in_euro",hElement.id);
			var diff= this.m_max_euro - sum;

			//checke den wert, und wenn er die grenze ueberschreitet, update ihn auf das maximal moegliche
			if(Math.abs(diff) < Math.abs(cur))
				hElement.value = diff;

			//crossupdate
			var percent = Number(hElement.value) * 10000 / Number(this.m_max_euro);
			var objID 	= hElement.id.replace(/euro/,"prozent");
			var obj 	= document.getElementById(objID);

			if(obj != null)
			{
//				obj.value = fn_round(percent/100, 2, ".", ",");
				obj.value = fn_round(percent/100, 2);
			}

			this._reCalc();
		}
	}

	return true;
}

rw_provisionseinstellung.prototype._reCalc = function()
{

}

//Popup für Marketerprovision (auftragsbezogen)
sb_auftrag_provision	= function(callOK, okText, callCancel, cancelText, callValidate)
{
	if (arguments.length == 0)
		return;

	this.base	= rw_provisionseinstellung;

	this.base(callOK, okText, callCancel, cancelText, callValidate);
}

sb_auftrag_provision.prototype 	= new rw_provisionseinstellung();
sb_auftrag_provision.superClass = rw_provisionseinstellung.prototype;

sb_auftrag_provision.prototype.toString = function()
{
	return "sb_auftrag_provision";
}

sb_auftrag_provision.prototype.askUser = function(data, objId)
{
	var ar_text			= data["BoxInfo"]
	var t_data			= data["data"] ? data["data"] : null

	var	verkauf			= data["vk"];
	var einkauf			= data["ek"];

	var brutto_deckung	= verkauf - einkauf;

	this.setMaxEuro(brutto_deckung);

	this.returnData.id		= data["id"];
	this.returnData.objId	= objId;

	this.m_sel_data		= data["sel_data"];

	sb_auftrag_provision.superClass.askUser.call(this, ar_text, t_data);

	var table	= document.createElement("table");
	var tbody	= document.createElement("tbody");

	table.align	= "right";

	tbody.appendChild(this._addOutputLine(language_array["Verkauf"],		fn_round(verkauf, 2, ",", "."), true));
	tbody.appendChild(this._addOutputLine(language_array["Einkauf"],		fn_round(einkauf, 2, ",", "."), true));

	tbody.appendChild(this._addHRLine(3));

	tbody.appendChild(this._addOutputLine(language_array["Bruttodeckung"],	fn_round(brutto_deckung, 2, ",", "."), true));
	tbody.appendChild(this._addOutputLine("- "+language_array["Provision"],	"", true));

	tbody.appendChild(this._addHRLine(3));

	tbody.appendChild(this._addOutputLine(language_array["Nettodeckung"],	"", true));

	table.appendChild(tbody);

	this.contentCell.appendChild(table);

	this._reCalc();

	this.show();
	this.focus();
}

sb_auftrag_provision.prototype._reCalc	= function()
{
	var brutto_elm		= document.getElementById("id_data_bruttodeckung");
	var netto_elm		= document.getElementById("id_data_nettodeckung");
	var prov_elm		= document.getElementById("id_data_- provision");

	var prov_in_euro	= this._getSumOf("input_provision_in_euro");

	var brutto_value	= unformatNumber(brutto_elm.innerHTML, ",", ".");
	var prov_value		= unformatNumber(fn_round(prov_in_euro, 2));
	var netto_value		= brutto_value - prov_value;

	prov_elm.innerHTML	= fn_round(prov_value, 2, ",", ".");
	netto_elm.innerHTML	= fn_round(netto_value, 2, ",", ".");
}

//Popup für Marketerprovision buchungsbezogen)
sb_buchung_provision	= function(callOK, okText, callCancel, cancelText, callValidate)
{
	if (arguments.length == 0)
		return;

	this.base	= rw_provisionseinstellung;

	this.base(callOK, okText, callCancel, cancelText, callValidate);
}

sb_buchung_provision.prototype 	= new rw_provisionseinstellung();
sb_buchung_provision.superClass = rw_provisionseinstellung.prototype;

sb_buchung_provision.prototype.toString = function()
{
	return "sb_buchung_provision";
}

sb_buchung_provision.prototype.askUser = function(data, objId)
{
	var ar_text				= data["BoxInfo"]
	var t_data				= data["data"] ? data["data"] : null

	this.setMaxEuro(data["bruttoProv"]);

	this.returnData.id		= data["id"];
	this.returnData.objId	= objId;

	this.m_sel_data			= data["sel_data"];

	var	bruttoprov			= data["bruttoProv"];

	sb_buchung_provision.superClass.askUser.call(this, ar_text, t_data);

	var table	= document.createElement("table");
	var tbody	= document.createElement("tbody");

	table.align	= "right";

	tbody.appendChild(this._addOutputLine(language_array["Bruttoprovision"],			fn_round(bruttoprov, 2, ",", "."), true));
	tbody.appendChild(this._addOutputLine("- "+language_array["Marketerprovision"],		"", true));

	tbody.appendChild(this._addHRLine(3));

	tbody.appendChild(this._addOutputLine(language_array["Nettoprovision"],			"", true));

	table.appendChild(tbody);

	this.contentCell.appendChild(table);

	this._reCalc();

	this.show();
	this.focus();
}

sb_buchung_provision.prototype._reCalc	= function()
{
	var brutto_elm	= document.getElementById("id_data_bruttoprovision");
	var netto_elm	= document.getElementById("id_data_nettoprovision");
	var prov_elm	= document.getElementById("id_data_- marketerprovision");

	var prov		= this._getSumOf("input_provision_in_prozent");

	var brutto_value= unformatNumber(brutto_elm.innerHTML, ",", ".");
	var prov_value	= prov * brutto_value / 100;
	var netto_value	= brutto_value - prov_value;

	prov_elm.innerHTML	= fn_round(prov_value, 2, ",", ".");
	netto_elm.innerHTML	= fn_round(netto_value, 2, ",", ".");
}

//Inventar Liste - PriceDialog
listpriceDialog	= function (callOK, okText, callCancel, cancelText, callValidate)
{
	if (arguments.length == 0)
		return;

	okText				= okText		!= "" ? okText 		: language_array["OK"];
	cancelText			= cancelText	!= "" ? cancelText 	: language_array["Cancel"];

	this.base 			= jt_AppConfirm;
	this.base(null, callOK, callCancel, okText, cancelText, true);

	this.callValidate	= callValidate;
	this.callOK 		= callOK;

	this.returnData 	= new Object();
}

listpriceDialog.prototype 	= new jt_AppConfirm();
listpriceDialog.superClass 	= jt_AppConfirm.prototype;

listpriceDialog.prototype._createHeaderCell = function(className, text, colSpan)
{
	var th		= document.createElement('TH');

	th.setAttribute("class",	className);
	th.setAttribute("className",className);
	th.setAttribute("colSpan",	colSpan);

	th.appendChild(document.createTextNode(text));

	return th;
}

listpriceDialog.prototype._createCell = function(className, colSpan, child)
{
	var td		= document.createElement('TD');

	td.setAttribute("vAlign",	"middle");
	td.setAttribute("class",	className);
	td.setAttribute("className",className);
	td.setAttribute("colSpan",	colSpan);

	if(child != null)
		td.appendChild(child);

	return td;
}

listpriceDialog.prototype._createTxTInput = function(value, width)
{
	var input		= document.createElement('INPUT');

	input.setAttribute("type",	"text");

	input.style.width	= width;

	if (value != null)
		input.value	= value;

	return input;
}

listpriceDialog.prototype._createIcon = function(src, title)
{
	var img = document.createElement("IMG");

	img.src 	= src;
	img.width 	= 14;
	img.height 	= 14;
	img.border 	= 0;
	img.title 	= title;

	return img;
}

listpriceDialog.prototype._createStaffel = function(text, data, invId)
{
	var table 	= document.createElement('TABLE');

	//Tabellenkopf anlegen
	var tHead 	= document.createElement('THEAD');
	var rowHead	= document.createElement('TR');

	rowHead.appendChild(this._createHeaderCell("cell_dark", text["head1"], "1"));
	rowHead.appendChild(this._createHeaderCell("cell_dark", text["head2"], "1"));
	rowHead.appendChild(this._createHeaderCell("cell_dark", text["head3"], "1"));
	rowHead.appendChild(this._createHeaderCell("cell_dark", text["head4"], "1"));
	rowHead.appendChild(this._createHeaderCell("cell_dark", text["head5"], "1"));

	tHead.appendChild(rowHead);
	table.appendChild(tHead);
	//

	//Tabellenkörper anlegen
	var tBody 	= document.createElement('TBODY');

	tBody.id	= "id_staffel_data";

	if (data != null)
	{
		var staffel	= data["staffel"];	var c_staffel	= staffel.length;
		var preise	= data["preise"];

		for (var i = 0; i < c_staffel; i++)
			tBody.appendChild(this._createDataLine(staffel[i], preise[staffel[i]["id"]], ((c_staffel - 1) == i)));
	}

	if (data == null)
		tBody.appendChild(this._createDataLine(null, null, true));

	table.appendChild(tBody);
	//

	table.cellPadding	= "0px";
	table.cellSpacing	= "1px";

	return table;
}

listpriceDialog.prototype._createDataLine = function(staffel_data, preis_data, bIsLastLine)
{
	var row					= document.createElement('TR');

	var txt_ek				= this._createTxTInput("",	"50px");
		txt_ek.onkeypress	= function(event) {return this._checkNumber(event); }.bind(this);
		txt_ek.name			= "input_ek";

	var txt_vk				= this._createTxTInput("",	"50px");
		txt_vk.onkeypress	= function(event) {return this._checkNumber(event); }.bind(this);
		txt_vk.name			= "input_vk";

	var txt_vk2				= this._createTxTInput("",	"50px");
		txt_vk2.onkeypress	= function(event) {return this._checkNumber(event); }.bind(this);
		txt_vk2.name		= "input_vk2"

	var link_del 			= document.createElement("span");
		link_del.style.cursor 	= "pointer";
		link_del.name		= "span_del";
		link_del.onclick 	= function(event) { this._deleteLine(event); }.bind(this);

	link_del.appendChild(this._createIcon("/images_pub/minus.gif", HtmlDecode(language_array["löschen"])));

	var link_add 			= document.createElement("span");
		link_add.style.cursor 	= "pointer";
		link_add.name		= "span_add";
		link_add.onclick 	= function(event) { this._addNewLine(event, this); }.bind(this);

	link_add.appendChild(this._createIcon("/images_pub/plus.gif", HtmlDecode(language_array["neue Zeile"])));

	if (!bIsLastLine)
		link_add.style.visibility	= "hidden";

	if (preis_data != null)
	{
		var c_preis_data= preis_data.length;

		for (var i = 0; i < c_preis_data; i++)
		{
			switch (preis_data[i]["preistyp"])
			{
				case "1":	txt_ek.value	= preis_data[i]["preis"]; break;
				case "2":	txt_vk.value	= preis_data[i]["preis"]; break;
				case "3":	txt_vk2.value	= preis_data[i]["preis"]; break;
			}
		}
	}

	if (staffel_data != null)
		row.appendChild(this._createCell("cell", "1", this._createStaffelTxt(staffel_data, bIsLastLine)));
	else
		row.appendChild(this._createCell("cell", "1", this._createStaffelTxt(null, bIsLastLine)));

	row.appendChild(this._createCell("cell", "1", txt_ek));
	row.appendChild(this._createCell("cell", "1", txt_vk));
	row.appendChild(this._createCell("cell", "1", txt_vk2));

	var action_cell	= this._createCell("cell", "1", null);
	action_cell.appendChild(link_del);
	action_cell.appendChild(link_add);

	row.appendChild(action_cell);

	return row;
}

listpriceDialog.prototype._createStaffelTxt = function(data, bIsLastLine)
{
	var table 	= document.createElement('TABLE');
	var tBody 	= document.createElement('TBODY');

	var row		= document.createElement('TR');

	var txt_von;
	var txt_bis;

	if (data != null)
	{
		txt_von	= this._createTxTInput(data["von"],								"75px");
		txt_bis	= this._createTxTInput((data["bis"] > 0 ? data["bis"] : ""),	"75px");
	}
	else
	{
		txt_von	= this._createTxTInput(null,	"75px");
		txt_bis	= this._createTxTInput(null,	"75px");
	}

	txt_von.setAttribute("disabled",		"disabled");
	txt_bis.onkeypress		= function(event) {return this._checkInteger(event); }.bind(this);

	if (!bIsLastLine)
		txt_bis.setAttribute("disabled",	"disabled");

	txt_von.name	= "input_von";
	txt_bis.name	= "input_bis";

	row.appendChild(this._createCell("cell", "1", txt_von));
	row.appendChild(this._createCell("cell", "1", document.createTextNode("< x <=")));
	row.appendChild(this._createCell("cell", "1", txt_bis));

	tBody.appendChild(row);
	table.appendChild(tBody);

	table.cellPadding	= 0;
	table.cellSpacing	= 0;

	return table;
}

listpriceDialog.prototype._deleteLine = function(event)
{
	event 		= jt_fixE(event);

	var elm		= event.srcElement ? event.srcElement : event.originalTarget;
	var line	= null;

	var tBody	= this._getDataAreaAsTBody();

	if (elm)
		line = this._getParentByTagName(elm, "TR");

	if (line)
	{
		if (line.parentNode.childNodes.length > 1)
		{
			if ((line.parentNode.childNodes.length == 2 && line != tBody.lastChild) || line == tBody.firstChild)
			{
				var allInputs	= null;

				if (line.parentNode.childNodes.length == 2 && line != tBody.lastChild)
					allInputs	= tBody.lastChild.getElementsByTagName("INPUT");
				else
					allInputs	= line.nextSibling.getElementsByTagName("INPUT");;

				var c_allInputs	= allInputs.length;

				for (var i = 0; i < c_allInputs; i++)
				{
					if (allInputs[i].name == "input_von")
						allInputs[i].value = "";
				}
			}
			else if (line != tBody.lastChild)
			{
				var prevInputs	= line.previousSibling.getElementsByTagName("INPUT");
				var c_prevInputs= prevInputs.length;
				var prevVal		= -1;

				var nextInputs	= line.nextSibling.getElementsByTagName("INPUT");
				var c_nextInputs= nextInputs.length;

				for (var i = 0; i < c_prevInputs; i++)
				{
					if (prevInputs[i].name == "input_bis")
					{
						prevVal	= prevInputs[i].value;
						break;
					}
				}

				for (var i = 0; i < c_nextInputs; i++)
				{
					if (nextInputs[i].name == "input_von")
					{
						nextInputs[i].value = prevVal;
						break;
					}
				}
			}

			line.parentNode.removeChild(line);
		}
		else
		{
			var inputs	= line.getElementsByTagName("INPUT");
			var c_inputs= inputs.length;

			for (var i = 0; i < c_inputs; i++)
				inputs[i].value = "";
		}
	}

	var	lastLine			= tBody.lastChild;
	var allLastLineElms		= lastLine.getElementsByTagName("*");
	var c_allLastLineElms	= allLastLineElms.length;

	for (var i = 0; i < c_allLastLineElms; i++)
	{
		if		(allLastLineElms[i].tagName.toUpperCase() == "SPAN" && allLastLineElms[i].name == "span_add")
			allLastLineElms[i].style.visibility	= "";
		else if (allLastLineElms[i].tagName.toUpperCase() == "INPUT" && allLastLineElms[i].name == "input_bis")
			allLastLineElms[i].setAttribute("disabled", "");
	}
}

listpriceDialog.prototype._addNewLine = function(event)
{
	event 		= jt_fixE(event);

	var elm		= event.srcElement ? event.srcElement : event.originalTarget;
	var line	= null;

	var tBody	= this._getDataAreaAsTBody();

	if (elm)
		line = this._getParentByTagName(elm, "TR");

	if (line && tBody)
	{
		var allElms		= line.getElementsByTagName("*");
		var c_allElms	= allElms.length;

		var prev_bis_val= -1;
		var prev_von_val= -1;

		var prev_bis_elm= null;
		var prev_add_elm= null

		for (var i = 0; i < c_allElms; i++)
		{
			if		(allElms[i].tagName.toUpperCase() == "INPUT")
			{
				if (allElms[i].name == "input_bis" && trim(allElms[i].value, " ") != "")
				{
					prev_bis_elm	= allElms[i];
					prev_bis_val	= allElms[i].value;
				}

				if (allElms[i].name == "input_von" && trim(allElms[i].value, " ") != "")
					prev_von_val	= allElms[i].value;
			}
			else if (allElms[i].tagName.toUpperCase() == "SPAN" && allElms[i].name == "span_add")
				prev_add_elm = allElms[i];
		}

		if (parseFloat(prev_bis_val) > 0 && parseFloat(prev_von_val) < parseFloat(prev_bis_val))
		{
			if (prev_bis_elm)		prev_bis_elm.setAttribute("disabled", "disabled");
			if (prev_add_elm)		prev_add_elm.style.visibility = "hidden";

			var newStaffel		= new Object();
			newStaffel["von"]	= prev_bis_val;
			newStaffel["bis"]	= "";

			tBody.appendChild(this._createDataLine(newStaffel, null, true));
		}
	}
}

listpriceDialog.prototype._getDataAreaAsTBody = function()
{
	return document.getElementById("id_staffel_data");
}

listpriceDialog.prototype._getParentByTagName = function(elm, tagname)
{
	var ret		= null;

	if (elm && elm.parentNode)
	{
		if (elm.parentNode.tagName == tagname)
			ret = elm.parentNode;
		else
			ret = this._getParentByTagName(elm.parentNode, tagname);
	}

	return ret;
}

listpriceDialog.prototype._checkNumber = function(event)
{
	event 		= jt_fixE(event);

	var elm		= event.srcElement ? event.srcElement : event.originalTarget;

	return checkDecimal(elm, event, 10, 2);
}

listpriceDialog.prototype._checkInteger = function(event)
{
	event 		= jt_fixE(event);

	var elm		= event.srcElement ? event.srcElement : event.originalTarget;

	return checkDecimal(elm, event, 10, 0);
}

listpriceDialog.prototype.askUser = function(text, data, inventarId)
{
	removeAllChilds(this.contentCell);

	this.contentCell.appendChild(this._createStaffel(text, data ? data : null, inventarId))

	this.returnData.inventar_id	= inventarId;

	this.show();
	this.focus();
}

listpriceDialog.prototype.focus = function()
{
	var id_input_kondition = this.getOwnElementById("id_input_kondition");

	if(id_input_kondition != null)
		id_input_kondition.focus();
}

listpriceDialog.prototype.hide = function(ok,suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		var dataArea					= this._getDataAreaAsTBody();
		var lines						= dataArea.childNodes;
		var c_lines						= lines.length;
		var dataLine					= {};

		var allInputs;
		var c_allInputs;

		this.returnData.preisstaffel	= [];

		for (var i = 0; i < c_lines; i++)
		{
			dataLine	= {};

			allInputs	= lines[i].getElementsByTagName("INPUT");
			c_allInputs	= allInputs.length;

			for (var j = 0; j < c_allInputs; j++)
			{
				switch (allInputs[j].name)
				{
					case "input_von":	dataLine.von = allInputs[j].value; break;
					case "input_bis":	dataLine.bis = allInputs[j].value; break;
					case "input_ek":	dataLine.ek = allInputs[j].value; break;
					case "input_vk":	dataLine.vk = allInputs[j].value; break;
					case "input_vk2":	dataLine.vk2 = allInputs[j].value; break;
				}
			}

			this.returnData.preisstaffel.push(dataLine);

			dataLine	= null;
		}

		if(!this.callValidate(this.returnData))
		{
			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide)
		listpriceDialog.superClass.hide.call(this, ok, suppress_exec);
}

listpriceDialog.keyPress = function(e)
{
	e = jt_fixE(e);

	var node 	= e.target 	? e.target 	: e.srcElement;
	var key 	= e.keyCode ? e.keyCode : e.which;

	if (key == 13) node.appDialog.hide(true,false);
	if (key == 27) node.appDialog.hide(false,true);
}

listpriceDialog.prototype.getOwnElementById	= function(id)
{
	var elms	= this.contentCell.getElementsByTagName("*");
	var c_elms	= elms.length;
	var ret		= null;

	for (var i = 0; i < c_elms; i++)
	{
		if (elms[i].id == id)
		{
			ret	= elms[i];
			break;
		}
	}

	return ret;
}

//-----------------------------------------------------------------------------------------------------

vs_testmail = function(callOK, okText, callCancel, cancelText, callValidate,saveText,callSave)
{
	if (arguments.length == 0) return;

	okText				= okText		!= "" ? okText 		: language_array["Empfänger übertragen"];
	saveText			= saveText		!= "" ? saveText 	: language_array["Speichern"];
	cancelText			= cancelText	!= "" ? cancelText 	: language_array["Cancel"];

	this.base 			= jt_AppConfirm;
	this.base(null, callOK, callCancel, okText, cancelText, true);

	this.callValidate	= callValidate;
	this.returnData 	= new Object();

	this.detailTable	= null;
	this.contentTable	= null;
	this.versandTable	= null;

	this.callEditVar	= null;

	this.callSave 		= callSave;

	if(callSave != null)
		jt_AppAlert.addButton(this, saveText, 3);
}

vs_testmail.prototype	= new jt_AppConfirm();
vs_testmail.superClass	= jt_AppConfirm.prototype;

vs_testmail.prototype.handleButtonClick = function(button)
{
	var linkNum = button.linkNum;

	switch(button.linkNum)
	{
		case 3: //save only
		{
			if(typeof this.callSave == 'function')
			{
				this.buildReturnData(true);

				if(!this.callValidate(this.returnData))
				{
					alert(this.returnData.errorText);
				}
				else
				{
					if (isObject(Object) && isFunction(Object.toJSON))
						$(this.getContentNode()).fire("jt_DialogBox:hide");

					this.container.style.display = "none";
					if (this.isModal) jt_Veil.show(false);

					if(this.returnData)
						this.callSave(this.returnData);
					else
						this.callSave();
				}
			}
		}
		break;
	}
}

vs_testmail.prototype._createTable = function()
{
	var heading		= new Array(language_array["Test"], language_array["Beleg"], "%sexcode%", "%firstname%", "%lastname%", "%email%", "");
	var c_heading	= heading.length;

	var tab			= document.createElement("TABLE");
	var tbody		= document.createElement("TBODY");
	var tr			= document.createElement("TR");
	var td			= document.createElement("TD");

	var sub_tr		= document.createElement("TR");
	var sub_td		= null;
	var sub_tab		= document.createElement("TABLE");
	var sub_tbody	= document.createElement("TBODY");

	for (var i = 0; i < c_heading; i++)
	{
		sub_td				= document.createElement("TD");
		sub_td.className	= "cell_header";
		sub_td.appendChild(document.createTextNode(heading[i]));

		sub_tr.appendChild(sub_td);
	}

	sub_tbody.appendChild(sub_tr);
	sub_tab.appendChild(sub_tbody);

	td.appendChild(sub_tab);
	tr.appendChild(td);

	tbody.appendChild(tr);
	tab.appendChild(tbody);

	this.detailTable	= sub_tbody;
	this.contentTable	= tbody;

	return tab;
}

vs_testmail.prototype.addNewTestMailReceiver = function(buchung_pos_id,uuid)
{
	var ajax = new ajax_handler(true);

	if(ajax != null)
	{
		ajax.setClass("class_vs_mail_handler");
		ajax.setFunction("addNewTestMailReceiver");


		ajax.setParameter("buchung_pos_id",buchung_pos_id);
		ajax.setParameter("uuid",uuid);
		ajax.opensync(ajax_handler.get);
	}
}

vs_testmail.prototype._createRow = function(data)
{
	var my_uuid						= new UUID();

	var data_id						= "";

	if(data && data["id"])
		data_id = data["id"]
	else
	{
		data_id = my_uuid.createUUID();
		this.addNewTestMailReceiver(this.returnData["buchung_pos_id"],data_id);
	}

	//var data_id						= data["id"];

	var options						= new Array();
		options[0]					= new Object();
		options[0]["value"]			= "-1";
		options[0]["label"]			= language_array["Bitte wählen"];

		options[1]					= new Object();
		options[1]["value"]			= "1";
		options[1]["label"]			= language_array["Frau"];

		options[2]					= new Object();
		options[2]["value"]			= "2";
		options[2]["label"]			= language_array["Herr"];

	var tr							= document.createElement("TR");
		tr.id						= "id_line_"+(this.detailTable.childNodes.length - 1);
		tr.data_id					= data_id;

	var cBox_testEmpfaenger			= document.createElement("INPUT");
		cBox_testEmpfaenger.type		= "checkbox";
		cBox_testEmpfaenger.className	= "box";
		cBox_testEmpfaenger.id			= "id_input_test";

	var cBox_belegEmpfaenger		= document.createElement("INPUT");
		cBox_belegEmpfaenger.type		= "checkbox";
		cBox_belegEmpfaenger.className	= "box";
		cBox_belegEmpfaenger.id			= "id_input_beleg";

	var inputSex					= document.createElement("SELECT");
		inputSex.id					= "id_input_sexcode";
		this._setOptions(inputSex, options);

	var inputFirstName				= document.createElement("INPUT");
		inputFirstName.id			= "id_input_firstname";

	var inputLastName				= document.createElement("INPUT");
		inputLastName.id			= "id_input_lastname";

	var inputEmail					= document.createElement("INPUT");
		inputEmail.id				= "id_input_email";

	var imgEdit						= document.createElement("IMG");
		imgEdit.src					= "images_pub/bearbeiten.gif";
		imgEdit.style.cursor		= "pointer";
		imgEdit.alt					= language_array["weitere Einstellungen"];
		imgEdit.onclick				= function(event) { this.callEditVar(data_id); }.bind(this, data_id);

	var imgDelete					= document.createElement("IMG");
		imgDelete.src				= "images_pub/loeschen.gif";
		imgDelete.style.cursor		= "pointer";
		imgDelete.alt				= HtmlDecode(language_array["löschen"]);
		imgDelete.onclick			= function(event) { this._deleteRow(); }.bind(this);

	if (data)
	{
		if (!data["test"] || data["test"] == 1)
		{
			attrib				= document.createAttribute('checked');
			attrib.nodeValue 	= true;
			cBox_testEmpfaenger.setAttributeNode(attrib);
		}

		if (data["beleg"] && data["beleg"] == 1)
		{
			attrib				= document.createAttribute('checked');
			attrib.nodeValue 	= true;
			cBox_belegEmpfaenger.setAttributeNode(attrib);
		}

		if (data["sexcode"])	inputSex.value			= data["sexcode"];
		if (data["firstname"])	inputFirstName.value	= data["firstname"];
		if (data["lastname"])	inputLastName.value		= data["lastname"];
		if (data["email"])		inputEmail.value		= data["email"];
	}

	tr.appendChild(this._createCell("cell", cBox_testEmpfaenger));
	tr.appendChild(this._createCell("cell", cBox_belegEmpfaenger));
	tr.appendChild(this._createCell("cell", inputSex));
	tr.appendChild(this._createCell("cell", inputFirstName));
	tr.appendChild(this._createCell("cell", inputLastName));
	tr.appendChild(this._createCell("cell", inputEmail));

	var tdAction					= this._createCell("cell", null);
		tdAction.appendChild(imgEdit);
		tdAction.appendChild(imgDelete);

	tr.appendChild(tdAction);

	this.detailTable.appendChild(tr);
}

vs_testmail.prototype._setOptions = function(elm, options)
{
	if (elm && elm.tagName.toUpperCase() == "SELECT" && options && options.length > 0)
	{
		var newOption	= null;
		var c_options	= options.length;

		for (var i = 0; i < c_options; i++)
		{
			newOption	= new Option(options[i]["label"], options[i]["value"], (i > 0 ? false : true), (i > 0 ? false : true));

			elm.options[elm.options.length] = newOption;
		}
	}
}

vs_testmail.prototype.setEditFn = function(callEdit)
{
	this.callEditVar	= callEdit;
}

vs_testmail.prototype._deleteRow = function(event)
{
	event 				= jt_fixE(event);

	var elm				= event.srcElement ? event.srcElement : event.originalTarget;
	var parentRow		= this._getParentByTagName(elm, "TR");

	if (parentRow && parentRow.parentNode.childNodes.length > 2)
		parentRow.style.display	= "none";
}

vs_testmail.prototype._createCell = function(className, child)
{
	var td				= document.createElement("TD");
		td.className	= className;

	if (child != null)
		td.appendChild(child);

	return td
}

vs_testmail.prototype._addButton = function()
{
	var	tr					= document.createElement("TR");

	var td					= document.createElement("TD");
		td.colSpan			= "7";
		td.align			= "left";

	var button				= document.createElement("BUTTON");
		button.className	= "font_1";
		button.style.width	= "200px";
		button.onclick		= function(event) { this._createRow(); }.bind(this);
		button.appendChild(document.createTextNode(language_array["weiteren Mail-Empfänger hinzufügen"]));

		td.appendChild(button)
		tr.appendChild(td);

	this.contentTable.appendChild(tr);
}

vs_testmail.prototype._addVersandstart = function(data)
{
	var now		= new Date();

	var tr		= document.createElement("TR");
	var td		= document.createElement("TD");
	var table	= document.createElement("TABLE");
	var tbody	= document.createElement("TBODY");

	var row		= document.createElement("TR");

	var td_text1= document.createElement("TD");
		td_text1.className	= "font_3";
		td_text1.appendChild(document.createTextNode(language_array["Versandstart"]+":"));

	var td_input_versanddt	= document.createElement("TD");
	var input_versanddt		= document.createElement("INPUT");
		input_versanddt.style.width	= "75px";
		input_versanddt.id			= "id_input_versanddt";

		td_input_versanddt.appendChild(input_versanddt);

	var td_img_cal				= document.createElement("TD");
	var img_cal					= document.createElement("IMG");
		img_cal.src				= "images_pub/kalender.gif";
		img_cal.style.height	= "14px";
		img_cal.style.width		= "14px";
		img_cal.style.cursor	= "pointer";
		img_cal.alt				= language_array["Kalender"];
		img_cal.onclick			= function(event){g_Calendar.show(event,"id_input_versanddt",false,'dd.mm.yyyy')}.bind(this);
		img_cal.onmouseover		= function(event){if (timeoutId) clearTimeout(timeoutId); window.status=language_array["Show Calendar"]; return true;}.bind(this);
		img_cal.onmouseout		= function(event){if (timeoutDelay) calendarTimeout(); window.status='';}.bind(this);

		td_img_cal.appendChild(img_cal);

	var td_text2	= document.createElement("TD");
		td_text2.className	= "font_3";
		td_text2.appendChild(document.createTextNode("um"));

	var td_time		= document.createElement("TD");
	var	input_hour	= document.createElement("SELECT");
		input_hour.id	= "id_input_hour";
	var	input_minute= document.createElement("SELECT");
		input_minute.id	= "id_input_minute";
	var	input_second= document.createElement("SELECT");
		input_second.id	= "id_input_second";

	this._setOptions(input_hour,	this._getNumericOption(0, 23, "HH"));
	this._setOptions(input_minute,	this._getNumericOption(0, 59, "MM"));
	this._setOptions(input_second,	this._getNumericOption(0, 59, "SS"));

		td_time.appendChild(input_hour);
		td_time.appendChild(document.createTextNode(" : "));
		td_time.appendChild(input_minute);
		td_time.appendChild(document.createTextNode(" : "));
		td_time.appendChild(input_second);

	var td_timezone		= document.createElement("TD");
	var input_timezone	= document.createElement("SELECT");
		input_timezone.id	= "id_input_timezone";
	var timezone_option	= new Array();

	for (var i = -12; i <= 12; i++)
	{
		opt	= new Object();

		if (i == 0)	opt["label"]	= "UTC";
		else		opt["label"]	= "UTC "+(i < 0 ? "" : "+")+i+"h"+(i == 1 ? "(MEZ)" : "");

		opt["value"]	= i;

		timezone_option.push(opt);
	}

	this._setOptions(input_timezone, timezone_option);

		input_timezone.value	= ((now.getTimezoneOffset() / 60) * -1);

		td_timezone.appendChild(input_timezone);

	if (data)
	{
		if (data["v_start"])	input_versanddt.value	= data["v_start"];
		if (data["timezone"])	input_timezone.value	= data["timezone"];
		if (data["hour"])		input_hour.value		= data["hour"];
		if (data["minute"])		input_minute.value		= data["minute"];
		if (data["second"])		input_second.value		= data["second"];
	}

	row.appendChild(td_text1);
	row.appendChild(td_input_versanddt);
	row.appendChild(td_img_cal);
	row.appendChild(td_text2);
	row.appendChild(td_time);
	row.appendChild(td_timezone);

	tbody.appendChild(row);
	table.appendChild(tbody);
	td.appendChild(table);
	tr.appendChild(td);
	this.contentTable.appendChild(tr);

	this.versandTable	= tbody;
}

vs_testmail.prototype._getNumericOption = function(v_min, v_max, def_label)
{
	var ret				= new Array()

		ret[0]			= new Object()
		ret[0]["value"]	= -1;
		ret[0]["label"]	= def_label;

	for (var i = v_min; i <= v_max; i++)
	{
		opt				= new Object();
		opt["value"]	= i;
		opt["label"]	= (i <= 9 ? "0" : "")+i;

		ret.push(opt);
	}

	return ret;
}

vs_testmail.prototype._getParentByTagName = function(elm, tagname)
{
	var ret		= null;

	if (elm && elm.parentNode)
	{
		if (elm.parentNode.tagName == tagname)
			ret = elm.parentNode;
		else
			ret = this._getParentByTagName(elm.parentNode, tagname);
	}

	return ret;
}

vs_testmail.prototype.askUser = function(data, buchung_pos_id, saveOnly)
{
	this.returnData["buchung_pos_id"]	= buchung_pos_id;

	removeAllChilds(this.contentCell);

	this.contentCell.appendChild(this._createTable());

	if (data && data["receiver"] != null)
	{
		var receiver	= data["receiver"];

		for (var key in receiver)
		{
			if (typeof receiver[key] == "function")
				continue;

			this._createRow(receiver[key]);
		}
	}
	else
		this._createRow(null);

	this._addButton();

	//Trennzeile dazwischen
	var tr		= document.createElement("TR");
	var td		= document.createElement("TD");

	td.appendChild(document.createElement("HR"));
	tr.appendChild(td);

	this.contentTable.appendChild(tr);
	//---------------------

	this._addVersandstart(data["versand"]);

	if(saveOnly)
		document.getElementById('id_dialog_button_1').style.display = 'none';
	else
		document.getElementById('id_dialog_button_1').style.display = '';


	this.show();
	this.focus();
}

vs_testmail.prototype.focus = function()
{
}

vs_testmail.prototype.buildReturnData = function(saveOnly)
{
	this.returnData.data	= [];
	this.returnData.versand = {};

	this.returnData["saveOnly"] = saveOnly ? "1" : "0";

	var dataTab	= this.detailTable;

	if (dataTab != null)
	{
		var rowNum	= dataTab.childNodes.length;
		var cellNum	= null;
		var tr		= null;
		var td		= null;
		var rowData	= null;

		var elm		= null;

		for (var i = 0; i < rowNum; i++)
		{
			tr		= dataTab.childNodes[i];

			if (tr.id && tr.style.display != "none")
			{
				rowData			= {};
				rowData["id"]	= tr.data_id;

				cellNum	= tr.childNodes.length;

				for (var j = 0; j < cellNum; j++)
				{
					td	= tr.childNodes[j];

					if (td && td.childNodes.length > 0 && (td.firstChild.tagName.toUpperCase() == "INPUT" || td.firstChild.tagName.toUpperCase() == "SELECT") && td.firstChild.id)
					{
						elm				= td.firstChild;

						if (elm.type.toUpperCase() == "CHECKBOX")	rowData[elm.id]	= elm.checked;
						else										rowData[elm.id]	= elm.value;
					}
				}

				this.returnData.data.push(rowData);
			}
		}
	}

	var versandTab	= this.versandTable;

	if (versandTab != null)
	{
		var rowNum	= versandTab.childNodes.length;
		var cellNum	= null;
		var tr		= null;
		var td		= null;

		var elm		= null;

		for (var i = 0; i < rowNum; i++)
		{
			tr		= versandTab.childNodes[i];

			cellNum	= tr.childNodes.length;

			for (var j = 0; j < cellNum; j++)
			{
				td			= tr.childNodes[j];
				c_child		= td.childNodes.length;

				for (var k = 0; k < c_child; k++)
				{
					if ((td.childNodes[k].tagName && (td.childNodes[k].tagName.toUpperCase() == "INPUT" || td.childNodes[k].tagName.toUpperCase() == "SELECT")) && td.childNodes[k].id)
					{
						elm								= td.childNodes[k];
						this.returnData.versand[elm.id]	= elm.value;
					}
				}
			}
		}
	}
}

vs_testmail.prototype.hide = function(ok, suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		this.buildReturnData(false);

		if(!this.callValidate(this.returnData))
		{
			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide)
		vs_testmail.superClass.hide.call(this, ok, suppress_exec);
}

//---------------------------------------------------------------------------------------------------------

vs_testmail_variablen = function(callOK, okText, callCancel, cancelText, callValidate)
{
	if (arguments.length == 0) return;

	okText				= okText		!= "" ? okText 		: language_array["Variablen übernehmen"];
	cancelText			= cancelText	!= "" ? cancelText 	: language_array["Cancel"];

	this.base 			= jt_AppConfirm;
	this.base(null, callOK, callCancel, okText, cancelText, true);

	this.callValidate	= callValidate;
	this.callOK 		= callOK;
	this.returnData 	= new Object();


	this.exclude = 	{
						test: 		true,
						beleg: 		true,
						sexcode: 	true,
						firstname: 	true,
						lastname: 	true,
						email: 		true
					};

}

vs_testmail_variablen.prototype		= new jt_AppConfirm();
vs_testmail_variablen.superClass	= jt_AppConfirm.prototype;

vs_testmail_variablen.prototype._createIcon = function(src,title)
{
	var img = document.createElement("img");
		img.src 	= src;
		img.width 	= 14;
		img.height 	= 14;
		img.border 	= 0;
		img.title 	= title;
	return img;
}

vs_testmail_variablen.prototype.addLine = function(label,value)
{
	var tbody 	= document.getElementById("id_testmail_variable_tbody");

	var tr  		= null,
		td_action	= null,
		td_label	= null,
		td_value	= null,
		input_label	= null,
		input_value = null;

	if(tbody)
	{
		var rowNum 	= tbody.childNodes.length;

		tr			= document.createElement("TR");
		tr.setAttribute("id","id_testmail_variablen_row_"+rowNum);

		td_action	= document.createElement("TD");
		td_label	= document.createElement("TD");
		td_value	= document.createElement("TD");

		input_label		= document.createElement("INPUT");
		input_label.id	= "id_label_input_"+rowNum;

		input_value		= document.createElement("INPUT");
		input_value.id	= "id_value_input_"+rowNum;

		input_label.value	= "%"+label+"%";
		input_value.value	= value;

		td_label.appendChild(input_label);
		td_value.appendChild(input_value);

		var link_add 				= document.createElement("span");
			link_add.style.cursor 	= "pointer";
			link_add.onclick 		= function(event) { this.addLine("",""); }.bind(this);
			link_add.appendChild(this._createIcon("/images_pub/plus.gif",language_array["hinzufügen"]));

			td_action.appendChild(link_add);

		if(rowNum > 0) //das erste element kann man nicht loeschen
		{
			td_action.appendChild(document.createTextNode(" "));

			var link_del 				= document.createElement("span");
				link_del.style.cursor 	= "pointer";
				link_del.onclick 		= function(event) { this.delLine(event); }.bind(this);
				link_del.appendChild(this._createIcon("/images_pub/minus.gif",language_array["löschen"]));

			td_action.appendChild(link_del);
		}

		tr.appendChild(td_action);
		tr.appendChild(td_label);
		tr.appendChild(td_value);

		tbody.appendChild(tr);
	}
}

vs_testmail_variablen.prototype.delLine = function(event)
{
		event 	= jt_fixE(event);
	var hElement= (event.srcElement) ? event.srcElement : event.originalTarget;

	if(event && hElement)
	{
		var tr				= hElement.parentNode.parentNode.parentNode;
		var tBody			= tr.parentNode;

		if(tBody.childNodes.length > 1)
		{
			var tr_id_to_remove = tr.id;

			var pattern_get 	= "/[A-Za-z].*([0-9]+)/";
			var regex_get		= new RegExp(eval(pattern_get));
			tr_id_to_remove		= regex_get.exec(tr_id_to_remove)[1];

			if(!Number(tr_id_to_remove).NaN)
				tBody.removeChild(tr);
		}
	}
}

vs_testmail_variablen.prototype.setScreen = function(data)
{
	var vs_vars		= [];

	for(var key in data)
	{
		if(key.search('id_input_') > -1)
		{
			var k = key.replace("id_input_","");

			if(typeof this.exclude[k] == "undefined" || this.exclude[k] == false)
				vs_vars.push(k);
		}
	}

	var c_vs_vars	= vs_vars.length;

	var tab			= document.createElement("TABLE");
	var tbody		= document.createElement("TBODY");
		tbody.id	= "id_testmail_variable_tbody";

	tab.appendChild(tbody);
	this.contentCell.appendChild(tab);

	for (var i = 0; i < c_vs_vars; i++)
	{
		var value = "";

		if (data && data["id_input_"+vs_vars[i]])
			value = data["id_input_"+vs_vars[i]];

		this.addLine(vs_vars[i],value);
	}
}

vs_testmail_variablen.prototype.askUser = function(data, data_id)
{
	this.returnData.data_id	= data_id

	removeAllChilds(this.contentCell);

	this.setScreen(data);

	this.show();
	this.focus();
}

vs_testmail_variablen.prototype.focus = function()
{
}

vs_testmail_variablen.prototype.hide = function(ok, suppress_exec)
{
	var bCanHide = true;

	if(ok)
	{
		this.returnData.data	= new Array();

		var tbody 	= document.getElementById("id_testmail_variable_tbody");
		var c_tbody = tbody.childNodes.length;

		for(var i = 0; i < c_tbody; i++)
		{
			var label = trim(trim(document.getElementById("id_label_input_"+i).value," "),"%");
			var value = trim(document.getElementById("id_value_input_"+i).value," ");

			if(value != "" && label != "" && (typeof this.exclude[label] == "undefined" || this.exclude[label] == false))
			{
				t_obj	= new Object();
				t_obj.elm	= "id_input_"+label;
				t_obj.value	= encodeURIComponent(value);

//				alert(t_obj.elm+" - "+t_obj.value);

				this.returnData.data.push(t_obj);
			}
		}

		if (!this.callValidate(this.returnData))
		{
			alert(this.returnData.errorText);
			bCanHide = false;
		}
	}

	if(bCanHide)
		vs_testmail_variablen.superClass.hide.call(this, ok, suppress_exec);
}
