User:Proteins/showmathderivations.js

// // Script to allow readers to see the derivations of mathematical results // // To use this script, add "importScript('User:Proteins/showmathderivations.js');" to your monobook.js subpage // under your user page, as you can see at User:Proteins/monobook.js

function showMathDerivations { var alert_string = ""; var error_string = ""; var derivation_string = ""; var del_derivation_string = "";

var body_content;

var span_nodes; var temp_span_node; var num_span_nodes = 0; var span_node_index = 0;

var temp_derivation; var temp_derivation_step; var mathematical_derivation_name = ""; var mathematical_derivation_list = new Array; var mathematical_derivation_step_list = new Array;

var derivation_index = 0; var num_mathematical_derivations = 0;

var step_index = 0; var num_derivation_steps = 0;

//**************** // Initializations //****************

num_mathematical_derivations = 0; // Get the bodyContent node body_content = document.getElementById('bodyContent'); if (!body_content) { error_string = "ERROR: There is no bodyContent node in this article."; window.alert(error_string); return; }	span_nodes = body_content.getElementsByTagName("SPAN"); if (!span_nodes) { error_string = "ERROR: This page has no SPAN nodes.\n"; window.alert(error_string); return; }	num_span_nodes = span_nodes.length; if (num_span_nodes < 1) { error_string = "ERROR: This page has no SPAN nodes.\n"; window.alert(error_string); return; }	for (span_node_index=0; span_node_index<num_span_nodes; span_node_index++) { temp_span_node = span_nodes[span_node_index]; if (!temp_span_node) { continue; } if (temp_span_node.className == "mathematical_derivation") { num_mathematical_derivations++; mathematical_derivation_list.push(temp_span_node); }	} // closes loop over the SPAN nodes in the main article if (num_mathematical_derivations < 1) { error_string = "No mathematical derivations were found on this page."; window.alert(error_string); return; } else if (num_mathematical_derivations == 1) { alert_string = "This page has one mathematical derivation.\n\n"; //		window.alert(alert_string); } else { alert_string = "This page has " + num_mathematical_derivations + " mathematical derivations.\n\n"; alert_string += "These will be analyzed in individual pop-up windows.\n"; //		window.alert(alert_string); } //*************************************************** // Loop over the mathematical derivations on the page //***************************************************	for (derivation_index=1; derivation_index<=num_mathematical_derivations; derivation_index++) { derivation_string = "Derivation " + derivation_index + " (of " + num_mathematical_derivations + " on this page):\n\n";

temp_derivation = mathematical_derivation_list[derivation_index-1]; if (!temp_derivation) { error_string = "ERROR: Mathematical derivation " + derivation_index + " is undefined.\n"; window.alert(error_string); continue; }

// Get the name of the derivation mathematical_derivation_name = temp_derivation.title; if (!mathematical_derivation_name) { error_string = "ERROR: No name is defined for mathematical derivation " + derivation_index + ".\n"; window.alert(error_string); mathematical_derivation_name = "UNNAMED REACTION"; }		derivation_string += mathematical_derivation_name + "\n\n";

// Find the number of steps in the derivation span_nodes = temp_derivation.getElementsByTagName("SPAN"); if (!span_nodes) { error_string = "ERROR: Mathematical derivation " + derivation_index + " has no SPAN nodes.\n"; window.alert(error_string); return; }		num_span_nodes = span_nodes.length; if (num_span_nodes < 1) { error_string = "ERROR: Mathematical derivation " + derivation_index + " has zero SPAN nodes.\n"; window.alert(error_string); return; }		for (span_node_index=0; span_node_index<num_span_nodes; span_node_index++) { temp_span_node = span_nodes[span_node_index]; if (!temp_span_node) { continue; } if (temp_span_node.className == "mathematical_derivation_step") { num_derivation_steps++; mathematical_derivation_step_list.push(temp_span_node); }		} // closes loop over the SPAN nodes in this mathematical derivation

// Loop over the steps of the derivation for (step_index=0; step_index]+>/, ""); derivation_string += del_derivation_string + "\n\n"; } // closes loop over derivation steps derivation_string += "Q. E. D.";

// Print out the derivation window.alert(derivation_string);

} // closes loop over mathematical derivations

} // closes function showMathDerivations $(function {            mw.util.addPortletLink('p-cactions', 'javascript:showMathDerivations', 'D', 'ca-showmathderiv', 'Show derivations of mathematical results', , ); }); //