+mkws.defaultTemplate = function(name) {
+ if (name === 'Record') {
+ return '\
+<table>\
+ <tr>\
+ <th>{{mkws-translate "Title"}}</th>\
+ <td>\
+ {{md-title}}\
+ {{#if md-title-remainder}}\
+ ({{md-title-remainder}})\
+ {{/if}}\
+ {{#if md-title-responsibility}}\
+ <i>{{md-title-responsibility}}</i>\
+ {{/if}}\
+ </td>\
+ </tr>\
+ {{#if md-date}}\
+ <tr>\
+ <th>{{mkws-translate "Date"}}</th>\
+ <td>{{md-date}}</td>\
+ </tr>\
+ {{/if}}\
+ {{#if md-author}}\
+ <tr>\
+ <th>{{mkws-translate "Author"}}</th>\
+ <td>{{md-author}}</td>\
+ </tr>\
+ {{/if}}\
+ {{#if md-electronic-url}}\
+ <tr>\
+ <th>{{mkws-translate "Links"}}</th>\
+ <td>\
+ {{#each md-electronic-url}}\
+ <a href="{{this}}">Link{{mkws-index1}}</a>\
+ {{/each}}\
+ </td>\
+ </tr>\
+ {{/if}}\
+ {{#mkws-if-any location having="md-subject"}}\
+ <tr>\
+ <th>{{mkws-translate "Subject"}}</th>\
+ <td>\
+ {{#mkws-first location having="md-subject"}}\
+ {{#if md-subject}}\
+ {{#mkws-commaList md-subject}}\
+ {{this}}{{/mkws-commaList}}\
+ {{/if}}\
+ {{/mkws-first}}\
+ </td>\
+ </tr>\
+ {{/mkws-if-any}}\
+ <tr>\
+ <th>{{mkws-translate "Locations"}}</th>\
+ <td>\
+ {{#mkws-commaList location}}\
+ {{mkws-attr "@name"}}{{/mkws-commaList}}\
+ </td>\
+ </tr>\
+</table>\
+';
+ } else if (name === "Summary") {
+ return '\
+<a href="#" id="{{_id}}" onclick="{{_onclick}}">\
+ <b>{{md-title}}</b>\
+</a>\
+{{#if md-title-remainder}}\
+ <span>{{md-title-remainder}}</span>\
+{{/if}}\
+{{#if md-title-responsibility}}\
+ <span><i>{{md-title-responsibility}}</i></span>\
+{{/if}}\
+{{#if md-date}}, {{md-date}}\
+{{#if location}}\
+, {{#mkws-first location}}{{mkws-attr "@name"}}{{/mkws-first}}\
+{{/if}}\
+{{#if md-medium}}\
+<span>, {{md-medium}}</span>\
+{{/if}}\
+{{/if}}\
+';
+ } else if (name === "Image") {
+ return '\
+ <a href="#" id="{{_id}}" onclick="{{_onclick}}">\
+ {{#mkws-first md-thumburl}}\
+ <img src="{{this}}" alt="{{../md-title}}"/>\
+ {{/mkws-first}}\
+ <br/>\
+ </a>\
+';
+ } else if (name === 'Facet') {
+ return '\
+<a href="#"\
+{{#if fn}}\
+onclick="mkws.{{fn}}(\'{{team}}\', \'{{field}}\', \'{{term}}\');return false;"\
+{{/if}}\
+>{{term}}</a>\
+<span>{{count}}</span>\
+';
+ }
+
+ return null;
+};
+
+
+// The following functions are dispatchers for team methods that
+// are called from the UI using a team-name rather than implicit
+// context.
+mkws.switchView = function(tname, view) {
+ mkws.teams[tname].switchView(view);
+};
+
+mkws.showDetails = function(tname, prefixRecId) {
+ mkws.teams[tname].showDetails(prefixRecId);
+};
+
+mkws.limitTarget = function(tname, id, name) {
+ mkws.teams[tname].limitTarget(id, name);
+};
+
+mkws.limitQuery = function(tname, field, value) {
+ mkws.teams[tname].limitQuery(field, value);
+};
+
+mkws.limitCategory = function(tname, id) {
+ mkws.teams[tname].limitCategory(id);
+};
+
+mkws.delimitTarget = function(tname, id) {
+ mkws.teams[tname].delimitTarget(id);
+};
+
+mkws.delimitQuery = function(tname, field, value) {
+ mkws.teams[tname].delimitQuery(field, value);
+};
+
+mkws.showPage = function(tname, pageNum) {
+ mkws.teams[tname].showPage(pageNum);
+};
+
+mkws.pagerPrev = function(tname) {
+ mkws.teams[tname].pagerPrev();
+};
+
+mkws.pagerNext = function(tname) {
+ mkws.teams[tname].pagerNext();
+};
+
+
+// wrapper to provide local copy of the jQuery object.
+(function($) {
+ var log = mkws.log;
+
+ function handleNodeWithTeam(node, callback) {
+ // First branch for DOM objects; second branch for jQuery objects
+ var classes = node.className || node.attr('class');
+ if (!classes) {
+ // For some reason, if we try to proceed when classes is
+ // undefined, we don't get an error message, but this
+ // function and its callers, up several stack level,
+ // silently return. What a crock.
+ log("handleNodeWithTeam() called on node with no classes");
+ return;
+ }
+ var list = classes.split(/\s+/)
+ var teamName, type;
+
+ for (var i = 0; i < list.length; i++) {
+ var cname = list[i];
+ if (cname.match(/^mkwsTeam_/)) {
+ teamName = cname.replace(/^mkwsTeam_/, '');
+ } else if (cname.match(/^mkws/)) {
+ type = cname.replace(/^mkws/, '');
+ }