
//=====================================================// Response //=

namespace ('Response');


//----------------------------------/ Response.onSessionInitialized /-

Response.onSessionInitialized = function (session, request, content) {
	if (!session) return;

	new Request.Meta (session).send ();
};

Framework.registerResponse ('6EDB::30::6EDB::3775', Response.onSessionInitialized);


//----------------------------------------------/ Response.onDialog /-

Response.onDialog = function (session, request, content) {
	if (!session) return;

	session.queue.clear ();
	var dialog = session.getActiveDialog ();
	dialog.setPageNote (content.note);
	session.setHelp (content.help);
	dialog.setDialog (content.dialogmeta);
};

Framework.registerResponse ('6EDB::30::6EDB::3373', Response.onDialog);


//--------------------------------------------/ Response.onResource /-

Response.onResource = function (session, request, content) {
	eval (content.script);
};

Framework.registerResponse ('6EDB::30::6EDB::3675', Response.onResource);


//------------------------------------------------/ Response.onData /-

Response.onData = function (session, request, content) {
	if (!session) return;

	var dialog = session.getActiveDialog ();
	dialog.refresh (content.data, (content.editable == 'true'));
	session.updateHistory (content.history);
	session.updateNavigation (content.navigation);
};

Framework.registerResponse ('6EDB::30::6EDB::3013', Response.onData);


//----------------------------------------/ Response.onDirectAnswer /-

Response.OnDirectAnswer = function (session, request, content) {
	if (!session) return;

	request.control.onDirectAnswer (content);
};

Framework.registerResponse ('6EDB::30::6EDB::4290', Response.OnDirectAnswer);


//---------------------------------------/ Response.onAuthenticated /-

Response.onAuthenticated = function (session, request, content) {
	if (!session) return;

	session.setAuthenticated (
		content.user,
		content.impersonatee,
		content.canimpersonate == 'true',
		content.newaccount == 'true',
		content.recoverpassword == 'true');
	if (content.language) {
		Framework.setLanguage(content.language);
	}
};

Framework.registerResponse ('6EDB::30::6EDB::3794', Response.onAuthenticated);


//---------------------------------------------/ Response.onRefresh /-

Response.onRefresh = function (session, request, content) {
	if (!session) return;

	new Request.Meta (session).send ();
};

Framework.registerResponse ('6EDB::30::6EDB::3375', Response.onRefresh);


//-----------------------------------------/ Response.onModalResult /-

Response.onModalResult = function (session, request, content) {
	if (!session) return;

	session.queue.clear ();
	var dialog = session.getActiveDialog ();
	var control = dialog.getMetaControl ();
	if (control) {
		control.modalResult (content);
	}
};

Framework.registerResponse ('6EDB::30::6EDB::3389', Response.onModalResult);


//--------------------------------------/ Response.onNewTransaction /-

Response.onNewTransaction = function (session, request, content) {
	if (!session) return;

	session.queue.clear ();
	if (content == 'true') {
		session.createModalDialog ();
		new Request.Meta (session).send ();
	} else {
		// clear active dialog now to avoid receiving any more events before the new dialog is in place
		var dialog = session.getActiveDialog ();
		dialog.clearDialog ();
		new Request.Meta (session).send ();
	}
};

Framework.registerResponse ('6EDB::30::6EDB::3498', Response.onNewTransaction);


//------------------------------------/ Response.onCloseTransaction /-

Response.onCloseTransaction = function (session, request, content) {
	if (!session) return;

	session.queue.clear ();
	if (content == 'true') {
		session.closeModalDialog ();
		var dialog = session.getActiveDialog ();
		dialog.notifyChanged ();
	} else {
		new Request.Meta (session).send ();
	}
};

Framework.registerResponse ('6EDB::30::6EDB::3499', Response.onCloseTransaction);


//---------------------------------------/ Response.onInTransaction /-

Response.onInTransaction = function (session, request, content) {
	if (!session) return;

	alert (content);
	new Request.Meta (session).send ();
};

Framework.registerResponse ('6EDB::30::6EDB::3397', Response.onInTransaction);


//-----------------------------------------/ Response.onCredentials /-

Response.onCredentials = function (session, request, content) {
	if (!session) return;

	// put the active request back on the queue
	session.queue.pause ();
	request.repeat ();
	var onregister = function () {
		return {
			'newaccount': content.newaccount == 'true',
			'recoverpassword': content.recoverpassword == 'true', 
			'account': content.account || '',
			'message': content.message || ''
		};
	};
	var oncomplete = function () {
		session.queue.unpause ();
	};
	var oncancel = function () {
		session.queue.clear ();
		session.queue.unpause ();
	};
	Frames.open (session, 'login', onregister, oncomplete, oncancel);
};

Framework.registerResponse ('6EDB::30::6EDB::3738', Response.onCredentials);


//-----------------------------------------/ Response.onImpersonate /-

Response.onImpersonate = function (session, request, content) {
	if (!session) return;

	session.queue.pause ();
	var onregister = function () {
	};
	var onclose = function () {
		session.queue.unpause ();
	};
	Frames.open (session, 'impersonate', onregister, onclose, onclose);
};

Framework.registerResponse ('6EDB::30::6EDB::3935', Response.onImpersonate);


//------------------------------------------------/ Response.onLock /-

Response.onLock = function (session, request, content) {
	if (!session) return;

	session.queue.pause ();
	request.repeat ();
	var onregister = function () {
		return {'username': content.username};
	};
	var onclose = function () {
		session.queue.unpause ();
		var dialog = session.getActiveDialog ();
		dialog.notifyChanged ();
	};
	Frames.open (session, 'lock', onregister, onclose, onclose);
};

Framework.registerResponse ('6EDB::30::6EDB::4664', Response.onLock);


//--------------------------------------/ Response.onPasswordChange /-
Response.onPasswordChange = function (session, request, content) {
	if (!session) return;

	// put the active request back on the queue
	session.queue.pause ();
	request.repeat ();
	var onregister = function () {
		return content;
	};
	var oncomplete = function () {
		session.queue.unpause ();
	};
	var oncancel = function () {
		// password change dialog should be uncancelable, but hey... if they manage to do it,
		// then let them. They're going to get it back after the next call anyhow.
		session.queue.unpause ();
	};
	Frames.open (session, 'password', onregister, oncomplete, oncancel);
};

Framework.registerResponse ('6EDB::30::6EDB::3776', Response.onPasswordChange);


//-----------------------------------------/ Response.onFrameReact /-

Response.onFrameReact = function (session, request, content) {
	if (!session) return;

	Frames.react (content.name, content.msg);
};

Framework.registerResponse ('6EDB::30::6EDB::3782', Response.onFrameReact);


//--------------------------------------/ Response.onFrameComplete /-

Response.onFrameComplete = function (session, request, content) {
	if (!session) return;

	Frames.complete (content.name);
};

Framework.registerResponse ('6EDB::30::6EDB::3783', Response.onFrameComplete);


//----------------------------------------------/ Response.onLogOff /-

Response.onLogOff = function (session, request, content) {
	if (!session) return;

	if (content == 'true') {
		// eliminate the old and create the new
		session.destroy ();
		Framework.startSession ();
	} else {
		session.setAuthenticated (false);
		new Request.Meta (session).send ();
	}
}

Framework.registerResponse ('6EDB::30::6EDB::3763', Response.onLogOff);


//--------------------------------------------/ Response.onGridData /-

Response.onGridData = function (session, request, content) {
	if (!session) return;

	request.notifyGridData (content);
};

Framework.registerResponse ('6EDB::30::6EDB::3436', Response.onGridData);


//--------------------------------------------/ Response.onRedirect /-

Response.onRedirect = function (session, request, content) {
	if (!session) return;

	if (content.newwindow != 'true') {
		window.location = content.url;
	} else {
		window.open(content.url);
	}
};

Framework.registerResponse ('6EDB::30::6EDB::3491', Response.onRedirect);


//--------------------------------------------/ Response.onFileOpen /-

Response.onFileOpen = function (session, request, content) {
	if (!session) return;

	var url = session.calcFileManUrl(content.object);
	if (content.newwindow != 'true') {
		window.location = url;
	} else {
		window.open(url);
	}
};

Framework.registerResponse ('6EDB::30::6EDB::3766', Response.onFileOpen);


//----------------------------------------/ Response.onFileDownload /-

Response.onFileDownload = function (session, request, content) {
	if (!session) return;

	// put the active request back on the queue
	session.queue.pause ();

	var data = {'name': content.name};
	if (content.url) {
		data['url'] = content.url;
	} else {
		data['object'] = content.object;
		// use a direct url to the httphandler as the file-download dialog already runs from the
		// webservices-folder which might cause problems if relative urls are used for said folder (#53324)
		data['url'] = session.calcFileManUrl (content.object, true);
	}

	var onregister = function () {
		return data;
	};
	var onclose = function () {
		session.queue.unpause ();
	};
	Frames.open (session, 'download', onregister, onclose, onclose);
};

Framework.registerResponse ('6EDB::30::6EDB::3808', Response.onFileDownload);

//---------------------------------------------/ Response.onWarning /-

Response.onWarning = function (session, request, content) {
	if (!session) return;

	alert (content);
}

Framework.registerResponse ('6EDB::30::6EDB::2030', Response.onWarning);


//-----------------------------------------------/ Response.onError /-

Response.onError = function (session, request, content) {
	Framework.fatalError ('Error while processing request', content, '');
};

Framework.registerResponse ('6EDB::30::6EDB::2028', Response.onError);


//----------------------------------------------/ Response.onReboot /-

Response.onReboot = function (session, request, content) {
	if (!session) return;

	session.destroy ();
	Framework.startSession ();
};

Framework.registerResponse ('6EDB::30::6EDB::5279', Response.onReboot);


//-----------------------------------------------/ Response.onDebug /-

Response.onDebug = function (session, request, content) {
};

Framework.registerResponse ('6EDB::30::6EDB::3876', Response.onDebug);

