- var wrs_int_opener;
- var appletObject;
- var initialXML = '';
- var closeFunction;
- if (window.opener) { // For popup mode.
- wrs_int_opener = window.opener;
- closeFunction = window.close;
- }
- // FCKeditor integration begin
- else { // For iframe mode.
- wrs_int_opener = window.parent;
- while (wrs_int_opener.InnerDialogLoaded) {
- wrs_int_opener = wrs_int_opener.parent;
- }
- }
- if (window.parent.InnerDialogLoaded) { // Iframe mode.
- window.parent.InnerDialogLoaded();
- closeFunction = window.parent.Cancel;
- }
- else if (window.opener.parent.FCKeditorAPI) { // Popup mode.
- wrs_int_opener = window.opener.parent;
- }
- // FCKeditor integration end.
- function getMathmlFromAppletCode(appletCode) {
- var optionForm = document.getElementById('optionForm');
- appletObject = wrs_int_opener.wrs_createObject(appletCode, document);
- optionForm.width.value = parseInt(appletObject.width);
- optionForm.height.value = parseInt(appletObject.height);
- var params = appletObject.childNodes;
- var mathml = '';
- for (var i = 0; i < params.length; ++i) {
- if (params[i].name == 'xmlinitialtext') {
- mathml = params[i].value;
- }
- else if (params[i].name == 'requestfirstevaluation') {
- optionForm.executeonload.checked = (params[i].value == 'true') ? true : false;
- }
- else if (params[i].name == 'toolbar') {
- optionForm.toolbar.checked = (params[i].value == 'floating') ? false : true;
- }
- else if (params[i].name == 'requestfocus') {
- optionForm.focusonload.checked = (params[i].value == 'true') ? true : false;
- }
- else if (params[i].name == 'level') {
- optionForm.level.checked = (params[i].value == 'primary') ? true : false;
- }
- }
- return mathml;
- }
- function createIframePath(params) {
- var iframePath = wrs_int_opener._wrs_conf_CASPath;
- iframePath += ((iframePath.indexOf('?') == -1) ? '?' : '&') + 'mode=applet&';
- for (var i in params) {
- iframePath += wrs_int_opener.wrs_urlencode(i) + '=' + wrs_int_opener.wrs_urlencode(params[i]);
- }
- return iframePath;
- }
- function createIframe(params) {
- var iframe = document.createElement('iframe');
- iframe.id = 'appletContainerIframe';
- iframe.src = createIframePath(params);
- iframe.width = '100%';
- iframe.height = '100%';
- iframe.frameBorder = 0;
- wrs_int_opener.wrs_addEvent(iframe, 'load', function () {
- if (initialXML.length > 0) {
- var applet = iframe.contentWindow.document.getElementById('applet');
- function setAppletMathml() {
- // Internet explorer fails on "applet.isActive". It only supports "applet.isActive()".
- try {
- if (applet.isActive()) {
- applet.setXML(initialXML);
- }
- else {
- setTimeout(setAppletMathml, 50);
- }
- }
- catch (e) {
- setTimeout(setAppletMathml, 50);
- }
- }
- setAppletMathml();
- }
- });
- document.getElementById('appletContainer').appendChild(iframe);
- }
- function reloadIframe(params) {
- var iframe = document.getElementById('appletContainerIframe');
- var applet = iframe.contentWindow.document.getElementById('applet');
- initialXML = applet.getXML();
- iframe.src = createIframePath(params);
- }
- wrs_int_opener.wrs_addEvent(window, 'load', function () {
- // Getting language list <select> object.
- var languageList = document.getElementById('languageList');
- // When the language list <select> object changes its value, the iframe should be refreshed.
- wrs_int_opener.wrs_addEvent(languageList, 'change', function () {
- reloadIframe({
- 'lang': languageList.value
- });
- });
- // Setting iframe language.
- var language;
- if (wrs_int_opener._wrs_isNewElement) {
- var queryParams = wrs_int_opener.wrs_getQueryParams(window);
- var availableLangs = new Array();
- for (var i = 0; i < languageList.options.length; i++){
- availableLangs[i] = languageList.options[i].value;
- }
- if (typeof queryParams['lang'] != 'undefined' && wrs_int_opener.wrs_arrayContains(availableLangs, queryParams['lang']) != -1){
- language = queryParams['lang'];
- }else if (typeof queryParams['lang'] != 'undefined' && wrs_int_opener.wrs_arrayContains(availableLangs, queryParams['lang'].substr(0,2)) != -1){
- language = queryParams['lang'].substr(0,2);
- }else{
- language = wrs_int_opener._wrs_int_language
- }
- }
- else {
- var appletCode = wrs_int_opener._wrs_temporalImage.getAttribute(wrs_int_opener._wrs_conf_CASMathmlAttribute);
- initialXML = getMathmlFromAppletCode(wrs_int_opener.wrs_mathmlDecode(appletCode));
- var language = '';
- // We can convert initialXML to an object and get its "lang" value. However, IE does not support this functionability, so we use string parsing.
- var languageStart = initialXML.indexOf('lang="');
- if (languageStart != -1) {
- var languageEnd = initialXML.indexOf('"', languageStart + 6); // 6+ because 'lang="'.length is 6.
- if (languageEnd != -1) {
- language = initialXML.substring(languageStart + 6, languageEnd);
- }
- }
- }
- // Creating the iframe.
- createIframe({
- 'lang': language
- });
- // Selecting the language on the <select> object.
- for (var i = languageList.options.length - 1; i >= 0; --i) {
- if (languageList.options[i].value == language) {
- languageList.selectedIndex = i;
- i = 0;
- }
- }
- // More events.
- wrs_int_opener.wrs_addEvent(document.getElementById('submit'), 'click', function () {
- var applet = document.getElementById('appletContainerIframe').contentWindow.document.getElementById('applet');
- // Creating new applet code.
- var optionForm = document.getElementById('optionForm');
- var newWidth = parseInt(optionForm.width.value);
- var newHeight = parseInt(optionForm.height.value);
- var appletCode = '<applet alt="WIRIS cas" class="Wiriscas" align="middle" ';
- appletCode += 'codebase="' + applet.getAttribute('codebase') + '" ';
- appletCode += 'archive="' + applet.getAttribute('archive') + '" ';
- appletCode += 'code="' + applet.getAttribute('code') + '" ';
- appletCode += 'width="' + newWidth + '" height="' + newHeight + '">';
- appletCode += '<param name="requestfirstevaluation" value="' + (optionForm.executeonload.checked ? 'true' : 'false') + '"></param>';
- appletCode += '<param name="toolbar" value="' + (optionForm.toolbar.checked ? 'true' : 'floating') + '"></param>';
- appletCode += '<param name="requestfocus" value="' + (optionForm.focusonload.checked ? 'true' : 'false') + '"></param>';
- appletCode += '<param name="level" value="' + (optionForm.level.checked ? 'primary' : 'false') + '"></param>';
- appletCode += '<param name="xmlinitialtext" value="' + wrs_int_opener.wrs_htmlentities(applet.getXML()) + '"></param>';
- appletCode += '<param name="interface" value="false"></param><param name="commands" value="false"></param><param name="command" value="false"></param>';
- appletCode += '</applet>';
- // Getting the image.
- // First, resize applet.
- applet.style.width = newWidth + 'px';
- applet.style.height = newHeight + 'px';
- // Waiting for applet resizing.
- function finish() {
- if (applet.getSize().width != newWidth || applet.getSize().height != newHeight) {
- setTimeout(finish, 100);
- }
- else {
- // Getting the image.
- var image = applet.getImageBase64('png');
- // FCKeditor integration begin
- if (window.parent.InnerDialogLoaded && window.parent.FCKBrowserInfo.IsIE) { // On IE, we must close the dialog for push the caret on the correct position.
- closeFunction();
- wrs_int_opener.wrs_int_updateCAS(appletCode, image, newWidth, newHeight);
- }
- // FCKeditor integration end.
- else {
- wrs_int_opener.wrs_int_updateCAS(appletCode, image, newWidth, newHeight);
- closeFunction();
- }
- }
- }
- finish();
- });
- wrs_int_opener.wrs_addEvent(document.getElementById('cancel'), 'click', function () {
- closeFunction();
- });
- var acceptButton = document.getElementById('submit');
- if (strings['accept'] != null){
- acceptButton.value = strings['accept'];
- }
- var cancelButton = document.getElementById('cancel');
- if (strings['cancel'] != null){
- cancelButton.value = strings['cancel'];
- }
- // Auto resizing.
- setInterval(function () {
- document.getElementById('appletContainer').style.height = (document.getElementById('optionForm').offsetHeight - document.getElementById('controls').offsetHeight - 5) + 'px';
- }, 100);
- });
- wrs_int_opener.wrs_addEvent(window, 'unload', function () {
- wrs_int_opener.wrs_int_notifyWindowClosed();
- });
Raw Paste