Index: /issm/trunk-jpl/src/m/io/loadmodel.js
===================================================================
--- /issm/trunk-jpl/src/m/io/loadmodel.js	(revision 19859)
+++ /issm/trunk-jpl/src/m/io/loadmodel.js	(revision 19859)
@@ -0,0 +1,6 @@
+function loadmodel(modelstring) {
+
+	var md=JSONfn.parse(decodeURI(modelstring));
+	md.fix();
+	return md;
+}
Index: /issm/trunk-jpl/src/m/io/saveAsFile.js
===================================================================
--- /issm/trunk-jpl/src/m/io/saveAsFile.js	(revision 19859)
+++ /issm/trunk-jpl/src/m/io/saveAsFile.js	(revision 19859)
@@ -0,0 +1,6 @@
+function saveAsFile(content) {
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(content);
+	window.open(url, '_blank');
+	window.focus();
+}
Index: /issm/trunk-jpl/src/m/io/savemodel.js
===================================================================
--- /issm/trunk-jpl/src/m/io/savemodel.js	(revision 19859)
+++ /issm/trunk-jpl/src/m/io/savemodel.js	(revision 19859)
@@ -0,0 +1,8 @@
+function savemodel(md) {
+
+	var string=encodeURI(JSONfn.stringify(md));
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(string);
+	window.open(url, '_blank');
+	window.focus();
+}
