server/java/renkan-web/src/main/webapp/static/js/thymol.js
author rougeronj
Tue, 22 Sep 2015 15:14:10 +0200
changeset 543 5f7bebdcfc0d
parent 316 242510015401
permissions -rw-r--r--
Improve the way we init the view. The data loader send a "loaded" event, hooked by the scene.py and initializing the backbone.history and the view. We don't use redraw_active in save-once and full-json, because it was making the view initialization dependent of these file which are externals. Small fix to hide the "set saved view" button when there is only one view.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
123
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/*-------------------- Thymol - the flavour of Thymeleaf --------------------*
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
   Thymol version 0.1.2 Copyright 2012 James J. Benson.
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
   jjbenson .AT. users.sf.net
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
   Licensed under the Apache License, Version 2.0 (the "License");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
   you may not use this file except in compliance with the License.
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
   You may obtain a copy of the License at
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
       http://www.apache.org/licenses/LICENSE-2.0
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
   Unless required by applicable law or agreed to in writing, software
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
   distributed under the License is distributed on an "AS IS" basis,
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expressed or implied.
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
   See the License for the specific language governing permissions and
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
   limitations under the License.
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
 *---------------------------------------------------------------------------*/
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
var thURL = "http://www.thymeleaf.org";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
var thPrefix = "th";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
var thProtocol = "file:///";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
var thCache = new Object;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
$(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
	thymol();
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
var thymol = function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
	
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
	var urlParams = {};
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
	(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
		var e, a = /\+/g, r = /([^&=]+)=?([^&]*)/g, d = function(s) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
			return decodeURIComponent(s.replace(a, " "));
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		}, f = function(s) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
			return new Param(d(s));
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
		}, q = window.location.search.substring(1);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
		while (e = r.exec(q)) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
			urlParams[d(e[1])] = f(e[2]);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
	})();
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
	var debug = getThParam("thDebug",true,false);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
	var root = getThParam("thRoot",false,true);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
	var path = getThParam("thPath",false,true);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
	$.ajaxSetup({
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
		async : false,
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
		isLocal : true
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
	});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
	(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
		var htmlTag = $("html")[0];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
		$(htmlTag.attributes).each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
			if (thURL == this.value) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
				var nsspec = this.localName.split(":");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
				if (nsspec.length > 0) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
					thPrefix = nsspec[nsspec.length - 1];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
					return;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
		});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
	})();
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
	var thIncl = new ThObj("include");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
	var thSubs = new ThObj("substituteby");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
	var thIf = new ThObj("if");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
	var thUnless = new ThObj("unless");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
	var thSwitch = new ThObj("switch");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
	var thCase = new ThObj("case");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
	var thFragEscp = "[" + thPrefix + "\\:fragment='";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
	var base = new ThNode(document, false, null, null, null, document.nodeName, "::", false, document);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
	process(base);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
	return;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
	function process(base) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
		var n = base;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		while (n.thDoc) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
			getChildren(n);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
			if (n.firstChild && n.firstChild.thDoc && !n.visited) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
				n.visited = true;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
				n = n.firstChild;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
			else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
				doReplace(n.isNode, n.element, n.thDoc);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
				if (n.nextSibling && n.nextSibling.thDoc) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
					n = n.nextSibling;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
				else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
					if (n == base)
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
						break;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
					else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
						n = n.parentDoc;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
	function getChildren(base) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
		var thIfSpecs = $(thIf.escp, base.thDoc);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
		var thUnlessSpecs = $(thUnless.escp, base.thDoc);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
		var thSwitchSpecs = $(thSwitch.escp, base.thDoc);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
		var ths = $(thIfSpecs).add(thUnlessSpecs).add(thSwitchSpecs);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
		ths.each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			var element = this;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
			$(element.attributes).each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
				var thAttr = this;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
				if (thIf.name == thAttr.name || thUnless.name == thAttr.name || thSwitch.name == thAttr.name) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
					processConditional(element, base, thAttr);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
			});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
		});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
		var thInclSpecs = $(thIncl.escp, base.thDoc);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
		var thSubsSpecs = $(thSubs.escp, base.thDoc);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
		ths = $(thInclSpecs).add(thSubsSpecs);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
		var count = 0;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
		var last = null;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
		ths.each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
			var element = this;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
			$(element.attributes).each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
				var thAttr = this;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
				if (thIncl.name == thAttr.name || thSubs.name == thAttr.name) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
					var child = processImport(element, base, thAttr);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
					if( child != null ) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
						if (count == 0) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
							base.firstChild = child;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
						}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
						else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
							last.nextSibling = child;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
						}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
						last = child;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
						count++;						
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
			});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
		});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
	function processConditional(element, base, attr) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
		var args = attr.value.match(/[$\*#]{(!?.*)}/);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
		var processed = false;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
		if (args.length > 0) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
			var param = args[1];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
			if (thSwitch.name == attr.name) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
				processed = processSwitch(element, base, attr, param);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
			else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
				var negate = false;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
				if (args[1].charAt(0) == '!') {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
					negate = true;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
					param = args[1].substring(1);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
				if ((!negate && isTrue(param)) || (negate && !isTrue(param))) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
					if (thUnless.name == attr.name) { // true for "if" and
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
						// false for "unless"
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
						element.innerHTML = "";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
					processed = true;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
				else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
					if (thIf.name == attr.name) { // false for "if", true for
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
						// "unless"
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
						element.innerHTML = "";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
					processed = true;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
		if (!processed && debug) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
			window.alert("thymol.processConditional cannot process: " + attr.name + "=\"" + attr.value + "\"\n" + element.innerHTML);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
		element.removeAttribute(attr.name);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
	function processSwitch(element, base, attr, param) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
		var matched = false;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
		var haveDefault = false;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
		var thCaseSpecs = $(thCase.escp, element);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
		thCaseSpecs.each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
			var caseClause = this;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
			var remove = true;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
			$(caseClause.attributes).each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
				var ccAttr = this;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
				if (thCase.name == ccAttr.name) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
					if (!matched) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
						var s = urlParams[param];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
						if (ccAttr.value == "*" || (s && (s.getStringValue() == ccAttr.value))) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
							matched = true;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
							remove = false;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
						}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
					caseClause.removeAttribute(ccAttr.name);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
			});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
			if (remove) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
				caseClause.innerHTML = "";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
		});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
		return matched;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
	function processImport(element, base, attr) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
		var importNode = null;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
		var filePart = null;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
		var fragmentPart = "::";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
		if (attr.value.indexOf("::") < 0) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
			filePart = getFilePart(attr.value); 
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
		else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
			var names = attr.value.split("::");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
			filePart = getFilePart(names[0].trim());
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
			fragmentPart = substitute(names[1].trim());
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
		var isNode = (thSubs.name == attr.localName);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
		if (thCache[filePart] != null && thCache[filePart][fragmentPart] != null) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
			isNode = ((thSubs.name == attr.localName) || (fragmentPart == "::"));
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
			importNode = new ThNode(thCache[filePart][fragmentPart], false, base, null, null, filePart, fragmentPart, isNode, element);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
		else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
			var fileName = filePart + ".html";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
			$.get(fileName, function(content, status) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
				if ("success" == status) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
					if (thCache[filePart] == null) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
						thCache[filePart] = new Object;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
					if (fragmentPart == "::") {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
						var htmlContent = $("html", content)[0];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
						thCache[filePart][fragmentPart] = htmlContent;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
					else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
						var fragSpec = thFragEscp + fragmentPart + "']";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
						var fragArray = $(fragSpec, content);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
						$(fragArray).each(function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
							thCache[filePart][fragmentPart] = this;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
						});
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
					importNode = new ThNode(thCache[filePart][fragmentPart], false, base, null, null, filePart, fragmentPart, isNode, element);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
				else if (debug) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
					window.alert("file read failed: " + filePart + " fragment: " + fragmentPart);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
	    	}, "xml");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
			if (importNode == null && debug) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
				window.alert("fragment import failed: " + filePart + " fragment: " + fragmentPart);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
		element.removeAttribute(attr.name);		
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
		return importNode;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
	
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
	function getFilePart(part) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
		var result = substitute(part);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
		if( result.charAt(0) != '.' ) {	// Initial period character indicates a relative path
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
			if( result.indexOf('/') >= 0 ) {	// If it doesn't start with a '.', and there are no path separators, it's also treated as relative
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
				result = thProtocol + root + path + result;													
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
		return result;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
	function doReplace(isNode, element, content) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
		if (isNode) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
			element.parentNode.replaceChild(content.cloneNode(true), element);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
		else {			
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
			try {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
				element.innerHTML = content.innerHTML;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
			catch (err) { // Work-around for IE
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
				while (element.firstChild != null) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
					element.removeChild(element.firstChild);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
				for (i = 0; i < content.childNodes.length; i++) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
					element.appendChild(content.childNodes[i].cloneNode(true));
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
			}			
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
	function ThNode(thDoc, visited, parentDoc, firstChild, nextSibling, fileName, fragName, isNode, element) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
		this.thDoc = thDoc;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
		this.visited = visited;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
		this.parentDoc = parentDoc;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
		this.firstChild = firstChild;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
		this.nextSibling = nextSibling;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
		this.fileName = fileName;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
		this.fragName = fragName;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
		this.isNode = isNode;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
		this.element = element;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
	function ThObj(suffix) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
		this.name = thPrefix + ":" + suffix;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
		this.escp = "[" + thPrefix + "\\:" + suffix + "]";
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
	function Param(valueArg) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
		this.value = valueArg;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
		this.getBooleanValue = function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
			return !(this.value == "false" || this.value == "off" || this.value == "no");
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
		};
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
		this.getStringValue = function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
			return this.value;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
		};
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
		this.getNumericValue = function() {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
			return Number(this.value);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
		};
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
	function isTrue(arg) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
		var p = urlParams[arg];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
		if (p) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
			return p.getBooleanValue();
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
		return false;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
	
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
	function substitute(argValue) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
		var result = argValue;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
		var args = argValue.match(/[$\*#]{(!?.*)}/);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
		if (args != null && args.length > 0) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
			var param = args[1];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
			if(param) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
				var paramValue = urlParams[param];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
				if (paramValue) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
					result = paramValue.value;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
				}					
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
			}		
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
		}			
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
		return result;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
	function getThParam(paramName,isBoolean,isPath) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
		var localValue;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
		if( isBoolean ) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
			localValue = false;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
		else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
			localValue = "";			
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
		var theParam = urlParams[paramName];
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
		if (isBoolean && theParam) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
			localValue = theParam.getBooleanValue();
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
		else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
			var paramValue;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
			try {			
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
				paramValue = eval(paramName);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
				if( !(typeof paramValue === "undefined") ) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
					if( paramValue != null ) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
						if ( isBoolean ) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
							localValue = (paramValue==true);
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
						}								
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
						else {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
							localValue = paramValue;							
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
						}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
					}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
			}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
			catch (err) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
				if (err instanceof ReferenceError) {					
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
				if (err instanceof EvalError) {					
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
				}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
			}				
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
		if( !isBoolean && isPath && localValue.length > 0 && localValue.charAt(localValue.length-1) != '/' ) {
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
			localValue = localValue + '/';
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
		}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
		return localValue;
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
	}
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
daa99448319d first step for site administration
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
};