//Gestion des fonctionnalité javascript
//Pour les tableaux

//Constructeur de l'objet
function ObjRBSTable(id) 
{
	this.objTab = RBS.Dom.GetElement(id);
	this.objid = id;

	this.onTRMouseover = ObjRBSTable_onTRMouseover;
	this.onTRMouseout = ObjRBSTable_onTRMouseout;
	this.onCheck = ObjRBSTable_onCheck;
	
	this.CheckBox = ObjRBSTable_CheckBox;
	
	this.fields = new Array;
	
	this.viewmenu = false;
	
	this.adminTable = ObjRBSTable_adminTable;
	this.exportTable = ObjRBSTable_exportTable;
	this.menuAction = ObjRBSTable_menuAction;
	this.menuSubmit = ObjRBSTable_menuSubmit;
	this.ViewSelect = ObjRBSTable_ViewSelect;
	
	this.GenerateHeader = ObjRBSTable_GenerateHeader;
	this.GenerateMenu = ObjRBSTable_GenerateMenu;
	this.GenerateField = ObjRBSTable_GenerateField;
	this.GeneratePageSize = ObjRBSTable_GeneratePageSize;
	this.GetFieldAtPos = ObjRBSTable_GetFieldAtPos;
	this.GenerateColumnGroup = ObjRBSTable_GenerateColumnGroup;
	
	this.OrderCol = ObjRBSTable_OrderCol;
	this.PinUp = ObjRBSTable_PinUp;
	this.GotoPage = ObjRBSTable_GotoPage;
	this.PageSize = ObjRBSTable_PageSize;
	this.PageSizePopup = ObjRBSTable_PageSizePopup;
	this.RenderStyle = ObjRBSTable_RenderStyle;
	this.InitMouseOver = ObjRBSTable_InitMouseOver;

	this.InitMouseOver();
	
	this.exportTable = ObjRBSTable_exportTable;
	this.exportSubmit = ObjRBSTable_exportSubmit;
	this.cellview = "CALL";
	this.rowview = "RALL";
}

function ObjRBSTable_InitMouseOver() 
{
	var iCpt;
	var datatable = RBS.Dom.GetElement(this.objid + "_TABLE");
	if (!datatable) return;
	
	var tbody = datatable.tBodies[0];
	if (!tbody) return;
	
	var rowtitle = tbody.rows[0];
	if (RBS.Dom.HasClass(rowtitle, "kdntablerowtitle")) 
	{
		for (iCpt = 1; iCpt < tbody.rows.length ; iCpt++) {
			var _r = tbody.rows[iCpt];
			RBS.Event.AddEvent(_r, "mouseover", this.onTRMouseover);
			RBS.Event.AddEvent(_r, "mouseout", this.onTRMouseout);			
			tbody.rows[iCpt].oldColor = null;
		}
	}
	var elem;
	var cpt = 0;
	while ((elem = RBS.Dom.GetElement(this.objid + "_SD" + cpt)) != null) 
	{
		elem.setAttribute("objid", this.objid);
		RBS.Event.AddEvent(elem, "click", this.onCheck);
		cpt++;
	}
}

function ObjRBSTable_onTRMouseover(evt) 
{
	new RBS_Event_Event(evt);
	var oElem = RBS.Event.lastEvent.src;

	oElem = RBS.Dom.GetContainerWith(oElem, "TR", "kdntablerow");
	if (!(oElem)) return;
	if (oElem.oldColor != null) return;

	var oldColor = 	oElem.style.backgroundColor;
	oElem.oldColor = oldColor;
	oElem.style.backgroundColor = RBS.Localization.dragColor;
}

function ObjRBSTable_onTRMouseout(evt) 
{
	new RBS_Event_Event(evt);
	var oElem = RBS.Event.lastEvent.src;
	
	oElem = RBS.Dom.GetContainerWith(oElem, "TR", "kdntablerow");
	if (!(oElem)) return;
	var oldColor = 	oElem.oldColor;
	oElem.oldColor = null;
	oElem.style.backgroundColor = oldColor;
}

function ObjRBSTable_onCheck(evt) 
{
	new RBS_Event_Event(evt);
	var oElem = RBS.Event.lastEvent.src;
	var objid = oElem.getAttribute("objid")
	
	var elem = RBS.Dom.GetElement(objid + "_SELCOUNT"); 
	if (elem != null) 
	{
		var total = parseInt(elem.innerHTML);
		total = total + ((oElem.checked) ? 1 : -1)
		elem.innerHTML = total;
	} 
	else 
	{
		dump("ObjRBSTable_onCheck err: " + objid + "_SELCOUNT");
	}
}

function ObjRBSTable_CheckBox(mastertag, typecheck) 
{
	var valselect = new Array();
	var cpt = 0;
	var affectstate = true;
	var elem;
	var total;
	
	elem = RBS.Dom.GetElement(this.objid + "_SELCOUNT");
	total = parseInt(elem.innerHTML);
	elem = RBS.Dom.GetElement(mastertag + typecheck);
	
	if (elem.getAttribute("ALLCHECK") == "true") 
	{
		elem.setAttribute("ALLCHECK", "false");
		elem.innerHTML = elem.getAttribute("selectall");
		affectstate = false;	
	} 
	else 
	{
		elem.setAttribute("ALLCHECK", "true");
		elem.innerHTML = elem.getAttribute("unselectall");	
	}
	
	while ((elem = RBS.Dom.GetElement(mastertag + typecheck + cpt)) != null) 
	{
		if (elem.checked != affectstate) {
			elem.checked = affectstate;
			total = total + ((affectstate) ? 1 : -1)
		}
		cpt++;
		valselect[valselect.length] = elem.value;
	}
	
	var oppcheck =  (typecheck == "D") ?  "P" : "D";
	cpt = 0;
	var i = 0;
	while ((elem = RBS.Dom.GetElement(mastertag + oppcheck + cpt)) != null) 
	{
		for (i = 0; i < valselect.length; i++) {
			if (valselect[i] == elem.value) {
				elem.checked = affectstate;
				break;
			}
		}
		cpt++;
	}
	elem = RBS.Dom.GetElement(this.objid + "_SELCOUNT");
	elem.innerHTML = total;
}


function ObjRBSTable_adminTable(evt) {
	new RBS_Event_Event(evt);
	var oElem = RBS.Event.lastEvent.src;
	dump(this.objid);
	
	oElem = RBS.Dom.GetContainerWith(oElem, "IMG", "kdnpartaction");

	var ypos = RBS.Dom.GetTop(oElem);
	var xpos = RBS.Dom.GetLeft(oElem);
	var resbase = '../ResourcesHandler.ashx?L=' + RBS.Context.language + '&R=';
	
	var shtml = '<html><head><title>' + RBSTableLang.PREF_T0 + '</title>\r\n';
	shtml += '  <link rel="stylesheet" type="text/css" href="' + resbase + 'agileo.css">\r\n';
	shtml += '  <link rel="stylesheet" type="text/css" href="' + resbase + 'application.css">\r\n';
	shtml += '  <link rel="stylesheet" type="text/css" href="' + resbase + 'theme.css">\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_system.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_form.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_page.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_image.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'usercontext.js"></script>\r\n'; 
	shtml += '  <script type="text/javascript" src="' + resbase + 'table.js"></script>\r\n'; 
	shtml += '  <script type="text/javascript" src="' + resbase + 'table_lang.js"></script>\r\n'; 
	shtml += '</head><body onload="Init()" style="background-color:#DDDDDD;overflow:hidden;">\r\n';
    shtml += '  <form name="RBS_FORM" method="get" action="" id="RBS_FORM">\r\n';
    shtml += this.GenerateMenu();
    shtml += '  </form>\r\n';
    shtml += '  <script language="javascript" type="text/javascript">\r\n';
    shtml += '		function Init() {\r\n';    
    shtml += '			RBS.Table.' + this.objid + ' = new ObjRBSTable("' + this.objid + '");\r\n';
    shtml += '			RBS.Table.' + this.objid + '.fields = opener.RBS.Table.' + this.objid + '.fields;\r\n';
    shtml += '			RBS.Table.' + this.objid + '.viewmode = opener.RBS.Table.' + this.objid + '.viewmode;\r\n';
    shtml += '			RBS.Table.' + this.objid + '.number = opener.RBS.Table.' + this.objid + '.number;\r\n';
    shtml += '			RBS.Table.' + this.objid + '.groupcolumn = opener.RBS.Table.' + this.objid + '.groupcolumn;\r\n';
    shtml += '			setTimeout("recoverFocus()",4000);\r\n';
    shtml += '		}\r\n';   
    shtml += '		function recoverFocus() {\r\n';
    shtml += '			window.focus();\r\n';
    shtml += '			setTimeout("recoverFocus()",4000);\r\n';
    shtml += '		}\r\n';
    shtml += '	</script>\n';  	
    shtml += "</body></html>";  
	var pop =	RBS.Page.PopUp(null, "gestcolone", 400, 500, 300, 100, "no");

	pop.document.open();
	pop.document.write(shtml);
	pop.document.close();
	
	return;
}

function ObjRBSTable_GetFieldAtPos(iPosition) 
{
	for (var i in this.fields) {
		if (this.fields[i].Position == iPosition) return i;
	}
	RBS.Form.Submit(this.objid, 'setallparams', '');
	return -1;
}

function ObjRBSTable_GenerateHeader(sImage,sTitle,sDescription) {
	var s = '';
    s += '<div class="popuptableheader">';
    s += '<img src="./ResourcesHandler.ashx?R=size32x32/'+sImage+'" align="left" vspace="20" hspace="10" class="png">';
    s += '<b>'+sTitle+'</b><br>';
    s += sDescription;
    s += '</div>';
	return s;
}

function ObjRBSTable_GenerateMenu() 
{
	var s = '';
	
    s += this.GenerateHeader('table_preferences.png',RBSTableLang.PREF_TITLE,RBSTableLang.PREF_DESC);

    s += '<div style=\'height:290px;border:0px solid white;overflow:scroll;overflow-x:hidden;padding:4px;margin-top:4px;margin-bottom:4px;\'>';
    
    s += this.GenerateColumnGroup();
    
	s += '<table width="98%" align="center">\n';
	s += '<tr><td width="20"><b>' + RBSTableLang.PREF_TC1 + '</b></td><td width="60"><b>' + RBSTableLang.PREF_TC2 + '</b></td><td width="100%"><b>' + RBSTableLang.PREF_TC3 + '</b></td><td width="40"><b>' + RBSTableLang.PREF_TC4 + '</b></td></tr>\n';
	for (var po = 0; po < this.fields.length; po++) {
		var i = this.GetFieldAtPos(po);
		if (i != -1) {
			s += '<tr';
			if (po%2==0) s += ' bgcolor="#EEEEEE" ';
			s += '>' + this.GenerateField(i) + '</tr>\n';
		}
	}
	s += '</table>'
    s += '</div>';
	s += this.GeneratePageSize();
	s += '<div class="popuptablefooter">';
	s += '<input type="button" value="' + RBSTableLang.PREF_B1 + '" class="kdnbuttondelete" onclick="RBS.Table.'+ this.objid +'.menuSubmit(event, true)">&nbsp;';
	s += '<input type="button" value="' + RBSTableLang.PREF_B2 + '" class="kdnbuttonsave" onclick="RBS.Table.'+ this.objid +'.menuSubmit(event, false)">';
	s += '<input type="button" value="' + RBSTableLang.PREF_B3 + '" class="kdnbuttoncancel" onclick="top.close();">';
	s += '</div>\n';
	return s;
}

function ObjRBSTable_GenerateField(iFieldIndex) {
	var oField = this.fields[iFieldIndex];
	var sprefix = this.objid + '_f' + iFieldIndex; // oField.Index;
	
	var s = '';
	var soption = (oField.Visible) ? ' checked="true" ' : ' ';
	s += '<td><input type="checkbox" value="true" id="' + sprefix + '_v"' + soption + ' onclick="RBS.Table.'+ this.objid +'.menuAction(event, 3, ' + oField.Position +')"></td>'; 
	if (!oField.Orderable) {
		s += "<td> --- </td>";
	} else {
		s += '<td><select id="' + sprefix + '_o" onchange="RBS.Table.'+ this.objid +'.menuAction(event, 2, ' + oField.Position +')">';
		soption = (oField.Order == "None") ? ' selected="true">' : '>';
		s += '<option value="None"' + soption + ' ' + RBSTableLang.PREF_F0 + ' </option>';
		soption = (oField.Order == "Asc") ? ' selected="true">' : '>';
		s += '<option value="Asc" ' + soption + ' ' + RBSTableLang.PREF_F1 + ' </option>';
		soption = (oField.Order == "Desc") ? ' selected="true">' : '>';
		s += '<option value="Desc" ' + soption + ' ' + RBSTableLang.PREF_F2 + ' </option>';
		s += '</select></td>';
	}
	
	s += '<td>' + oField.Label + '</td>';
	s += '<td>'
	
	/* Affichage Monter/Descendre */
	if (oField.Position > 0) {
		simage = '<img align="absMiddle" src="../ResourcesHandler.ashx?R=arrlist_up.gif" border="0" width="16" height="16" />';
		s += '<span style="cursor:hand" onclick="RBS.Table.'+ this.objid +'.menuAction(event, 0, ' + oField.Position +')">' + simage +'</span>';
	} else { 
		simage = '<img align="absMiddle" src="../ResourcesHandler.ashx?R=arrlist_up_minus.gif" border="0" width="16" height="16" />';
		s += '<span>' + simage +'</span>';
	}
	
	if (oField.Position < this.fields.length - 1) {
		simage = '<img align="absMiddle" src="../ResourcesHandler.ashx?R=arrlist_down.gif" border="0" width="16" height="16" />';
		s += '<span style="cursor:hand" onclick="RBS.Table.'+ this.objid +'.menuAction(event, 1, ' + oField.Position +')">' + simage +'</span>';
	} else {		
		simage = '<img align="absMiddle" src="../ResourcesHandler.ashx?R=arrlist_down_minus.gif" border="0" width="16" height="16" />';
		s += '<span>' + simage +'</span>';
	}	
	
	s += '</td>'; 
	return s;
}

function ObjRBSTable_GeneratePageSize() {
	//var number = new Array(10, -20 , 50, 100);
	//var viewmode = {evt : "TEMPLATE", lib : "Paragraphe", libp : "Eléments par page"};
	var s = "<div style=\"padding:10px;\">";
	s += this.viewmode.libp +" : [";
	for (i = 0; i < this.number.length ; i++) {
		s += (i == 0) ? " " : " -";
		var nu = this.number[i];
		if (nu < 0) {
			s += Math.abs(nu);
		} else {
			s += "<a href=\"#\" onclick=\"RBS.Table." + this.objid +".PageSizePopup(event, " + nu +")\">" + nu +"</a>";
		}
	}
	s += " ] <br>" + RBSTableLang.PREF_T3 + ": <a href=\"#\" onclick=\"RBS.Table." + this.objid +".RenderStyle(event, '" + this.viewmode.evt +"')\">" + this.viewmode.lib +"</a>";
	s += "</div>";
	return s;
}

function ObjRBSTable_GenerateColumnGroup() {
	var sprefix = this.objid + '_RCOL_GRP';
	var s = '<div style="padding:10px;">';
	s += RBSTableLang.EXP_R0 + " : ";
	
	s += '<select id="' + sprefix + '">';
	s += '<option value="-1"';
	s += (this.groupcolumn == -1) ? ' selected="true">' : '>'; 
	s += RBSTableLang.PREF_F0 + ' </option>';
				
	for (var po = 0; po < this.fields.length; po++) {
		var oField = this.fields[po];
		if (oField.Orderable) {
			s += '<option value="' + oField.Oi + '"';
			s += (this.groupcolumn == oField.Oi) ? ' selected="true">' : '>'; 
			s += oField.Label + ' </option>';
		} 
	}
	s += '</select>'
	s += '</div>';
	return s;
}

function ObjRBSTable_menuAction(evt, iSens, iPosition) {
	var idxOri = this.GetFieldAtPos(iPosition);
	if (idxOri == -1) return;
	
	new RBS_Event_Event(evt);
	var oElem = RBS.Event.lastEvent.src;
	
	if (iSens < 2) 
	{
		var newPos = iPosition + ((iSens == 0) ? -1 : 1);
		var idxDest = this.GetFieldAtPos(newPos);
		if (idxDest == -1) return;
		this.fields[idxDest].Position = iPosition;
		this.fields[idxOri].Position = newPos;
		RBS.Dom.GetElement("RBS_FORM").innerHTML = this.GenerateMenu();
	} 
	else if (iSens == 2) 
	{
		this.fields[idxOri].Order = oElem.value;	
	} 
	else if (iSens == 3) 
	{
		this.fields[idxOri].Visible = oElem.checked;
	}	
	return;
}

function ObjRBSTable_menuSubmit(evt, breset) {
	var sIndex = "";
	var sOrder = "";
	var sVisible = "";
	var sPosition = "";
	var sgroupcolumn = "";
	var sAllParam = "";
	
	if (!breset) {
		for (var i in this.fields) {
			var oField = this.fields[i];
			if (sIndex != "") {
				sIndex += ",";
				sOrder += ",";
				sVisible += ",";
				sPosition += ",";
			}
			sIndex += oField.Index;
			sOrder += oField.Order;
			sVisible += oField.Visible;
			sPosition += oField.Position;
		}
		sgroupcolumn = RBS.Dom.GetElement(this.objid + '_RCOL_GRP').value;
		sAllParam = sIndex + "|" + sOrder + "|" + sVisible + "|" + sPosition + "|" + sgroupcolumn;
	}
	opener.RBS.Form.Submit(this.objid, 'setallparams', sAllParam);
	window.close();
	return;
}

function ObjRBSTable_RenderStyle(evt, sStyle) 
{
	opener.RBS.Form.Submit(this.objid, 'renderstyle', sStyle);
	window.close();
	return;
}

function ObjRBSTable_ViewSelect(evt, sview) 
{
	RBS.Form.Submit(this.objid, 'viewselect', sview);
	return;
}

function ObjRBSTable_PageSizePopup(evt, iPageSize) 
{
	opener.RBS.Form.Submit(this.objid, 'pagesize', iPageSize);
	window.close();
	return;
}


/* Popup de gestion de l'export */

function ObjRBSTable_exportTable(evt) {
	new RBS_Event_Event(evt);
	var oElem = RBS.Event.lastEvent.src;
	
	oElem = RBS.Dom.GetContainerWith(oElem, "IMG", "kdnpartaction");

	var ypos = RBS.Dom.GetTop(oElem);
	var xpos = RBS.Dom.GetLeft(oElem);
	var resbase = "../ResourcesHandler.ashx?L=" + RBS.Context.language + "&R=";
	
	var shtml = '<html><head><title>' + RBSTableLang.EXP_T0 + '</title>\r\n';
	shtml += '  <link rel="stylesheet" type="text/css" href="' + resbase + 'agileo.css">\r\n';
	shtml += '  <link rel="stylesheet" type="text/css" href="' + resbase + 'application.css">\r\n';
	shtml += '  <link rel="stylesheet" type="text/css" href="' + resbase + 'theme.css">\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_system.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_form.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_page.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'rbs_image.js"></script>\r\n';
	shtml += '  <script type="text/javascript" src="' + resbase + 'usercontext.js"></script>\r\n'; 
	shtml += '  <script type="text/javascript" src="' + resbase + 'table.js"></script>\r\n'; 
	shtml += '  <script type="text/javascript" src="' + resbase + 'table_lang.js"></script>\r\n'; 
	shtml += '</head><body onload="Init();" class="popuptable" style="overflow:hidden;">\r\n';
    shtml += '  <form name="RBS_FORM" method="get" action="" id="RBS_FORM">\r\n';
    shtml += this.GenerateHeader('disk_blue.png',RBSTableLang.EXP_TITLE,RBSTableLang.EXP_DESC);
    shtml += '  <div style="padding:10px;">\r\n';
    shtml += '  	<TABLE id="Table1" cellSpacing="0" cellPadding="0" width="100%" border="0">\r\n';
    shtml += '  		<TR bgcolor="#eeeeee"><TD width="40%">' + RBSTableLang.EXP_T1 + '</TD>\r\n';
    shtml += '  			<TD width="60%"><INPUT id="CALL" type="radio" value="CALL" name="COL" CHECKED>' + RBSTableLang.EXP_T2 + '&nbsp;\r\n';
    shtml += '  				<INPUT id="CVIEW" type="radio" value="CVIEW" name="COL">' + RBSTableLang.EXP_T3 + '</TD>\r\n';
    shtml += '  		</TR><TR><TD>' + RBSTableLang.EXP_T4 + '</TD>\r\n';
    shtml += '  			<TD><INPUT id="RALL" type="radio" CHECKED value="RALL" name="ROW">' + RBSTableLang.EXP_T2 + ' <INPUT id="RSELECT" type="radio" value="RSELECT" name="ROW">' + RBSTableLang.EXP_T5 + '<INPUT id="RPAGE" type="radio" value="RPAGE" name="ROW">' + RBSTableLang.EXP_T6 + '</TD>\r\n';
    shtml += '  		</TR>\r\n';
    shtml += '  	</TABLE>\r\n';
    shtml += '  </div><br><br><br>\r\n';
    shtml += '  <div class="popuptablefooter">\r\n';
    shtml += '  	<input type="button" value="' + RBSTableLang.PREF_B2 + '" class="kdnbuttonsave" onclick="RBS.Table.' + this.objid + '.exportSubmit(event)" >\r\n';
    shtml += '  	<input type="button" value="' + RBSTableLang.PREF_B3 + '" class="kdnbuttoncancel" onclick="top.close();" ></div>\r\n';
    shtml += '  </form>\r\n';
    shtml += '  <script language="javascript" type="text/javascript">\r\n';
    shtml += '		function Init() {\r\n';   
    shtml += '			setTimeout("recoverFocus()",4000);\r\n';
    shtml += '			RBS.Table.' + this.objid + ' = new ObjRBSTable("' + this.objid + '");\r\n';
    shtml += '			RBS.Table.' + this.objid + '.cellview = "CALL";\r\n';
    shtml += '			RBS.Table.' + this.objid + '.rowview = "RALL";\r\n';
    shtml += '		}\r\n';  
    shtml += '		function recoverFocus() {\r\n';
    shtml += '			window.focus();\r\n';
    shtml += '			setTimeout("recoverFocus()",4000);\r\n';
    shtml += '		}\r\n';
    shtml += '	</script>\n';  	
    shtml += "</body></html>";  
	var pop =	RBS.Page.PopUp(null, "gestexport", 450, 330, 250, 250, "no");

	pop.document.open();
	pop.document.write(shtml);
	pop.document.close();
	
	return;
}


function ObjRBSTable_exportSubmit(evt) {

	if (RBS.Dom.GetElement("CALL").checked)
		this.cellview = "CALL" 
	else
		this.cellview = "CVIEW";
	
	if (RBS.Dom.GetElement("RALL").checked)
		this.rowview = "RALL";
	else if (RBS.Dom.GetElement("RSELECT").checked)
		this.rowview = "RSELECT";
	else
		this.rowview = "RPAGE";
		
	
	opener.RBS.Form.Submit(this.objid, 'export', 'CSV,' + this.cellview + ',' + this.rowview);
	window.close();
	return;
}



/* Fonction du tableau principal */
function ObjRBSTable_OrderCol(evt, iPosition, sOrder) 
{
	var sarg = iPosition + "," + sOrder;
	RBS.Form.Submit(this.objid, 'ordercol', sarg);
	return;
}

function ObjRBSTable_GotoPage(evt, inumPage) 
{
	RBS.Form.Submit(this.objid, 'gotopage', inumPage);
	return;
}

function ObjRBSTable_PageSize(evt, iPageSize) 
{
	RBS.Form.Submit(this.objid, 'pagesize', iPageSize);
	return;
}

function ObjRBSTable_PinUp(evt, evtname, keyid) 
{
	new RBS_Event_Event(evt);
	var oElem = RBS.Event.lastEvent.src;
	RBS.Form.Submit(this.objid, evtname, keyid);
	return RBS.Event.lastEvent.Stop();
}

