Project

General

Profile

1 7867 leinfelder
function getParams() {
2
    var paramsArray = document.location.href.split('?')[1].split('&');
3
    for (var i = 0; i < paramsArray.length; i++) {
4
        var temp = paramsArray[i].split('=');
5
        alert(unescape(temp[0]) + '=' + unescape(temp[1]));
6
    }
7
}
8
9
function addParagraph() {
10
    var newParaWidget = document.createElement("textarea");
11
    newParaWidget.setAttribute("rows", "6");
12 7972 leinfelder
    newParaWidget.className="span8";
13 7867 leinfelder
    newParaWidget.setAttribute("name", "methodPara");
14
15
    var TR = document.createElement("tr");
16
    TR.className='sectbody';
17 7920 leinfelder
    var TD = createTD("1","left");
18 7867 leinfelder
    var emptyTD = createTD("","right");
19
    TD.appendChild(newParaWidget);
20 7920 leinfelder
    //TR.appendChild(emptyTD);
21 7867 leinfelder
    TR.appendChild(TD);
22
    var addParaButton = document.getElementById("addparabutton1");
23
    var parent = addParaButton.parentNode;
24
    parent.insertBefore(TR, addParaButton);
25
}
26
27
function addMethod() {
28
    var index = incrementCount('methodCount');
29
    var methodButton = document.getElementById("addmethodbutton");
30
    var parent = methodButton.parentNode;
31
32
    parent.insertBefore(createHRRow(), methodButton);
33
    parent.insertBefore(addMethodTitle(), methodButton);
34
    parent.insertBefore(addMethodDescription(index), methodButton);
35
    parent.insertBefore(addMethodButton(index), methodButton);
36
}
37
38
function  addMethodButton(index) {
39
    var TR = document.createElement("tr");
40
    var buttonId = 'addparabutton' + index;
41
    TR.className='sectbody';
42
    TR.setAttribute("id", buttonId);
43
    var labelTD = createTD("","right");
44
    var TD = createTD("5","left");
45
    var button = document.createElement("input");
46 7966 leinfelder
    button.setAttribute("type", "button");
47
    button.setAttribute("class", "btn");
48 7867 leinfelder
    button.setAttribute("value", "Add Paragraph to Method Description");
49
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
50
        button.attachEvent("onclick", new Function("addParagraph("+ index + ", '" + buttonId + "')"));
51
    } else {
52
        button.setAttribute("onclick", "addParagraph("+ index +", '" + buttonId + "')");
53
    }
54
    TD.appendChild(button);
55
    TR.appendChild(labelTD);
56
    TR.appendChild(TD);
57
    return TR;
58
}
59
60
function  addMethodTitle() {
61
    var TR = document.createElement("tr");
62
    TR.className='sectbody';
63
    var labelTD = createTD("","right");
64
    labelTD.appendChild(document.createTextNode("Method Title"));
65
    var TD = createTD("5","left");
66
    var textField = document.createElement("input");
67
    textField.setAttribute("type", "text");
68
    textField.setAttribute("name", "methodTitle");
69
    textField.className="longwidth";
70
    TD.appendChild(textField);
71
    TR.appendChild(labelTD);
72
    TR.appendChild(TD);
73
    return TR;
74
}
75
76
function  addMethodDescription(index) {
77
    var TR = document.createElement("tr");
78
    TR.className='sectbody';
79
    var labelTD = createTD("","right");
80
    labelTD.setAttribute("vAlign","top");
81
    labelTD.appendChild(document.createTextNode("Method Description"));
82
    var TD = createTD("5","left");
83
    var textArea = document.createElement("textarea");
84
    textArea.setAttribute("name", "methodPara"+index);
85
    textArea.setAttribute("rows", 6);
86 7972 leinfelder
    textArea.className="span8";
87 7867 leinfelder
    TD.appendChild(textArea);
88
    TR.appendChild(labelTD);
89
    TR.appendChild(TD);
90
    return TR;
91
}
92
93
function createTextField(name, size, value) {
94
    var newField = document.createElement("input");
95
    newField.setAttribute("type", "text");
96
    newField.setAttribute("name", name);
97
    newField.setAttribute("size", size);
98
    newField.value = value;
99
    return newField;
100
}
101
102
function createTextRow(count, varName, labelText, value) {
103
    var textField = createTextField(varName + count, "30", value);
104
    var row = createRow(count, textField, labelText);
105
    return row;
106
}
107
108
function createRow(count, elem, labelText) {
109
    var textTD = createTD("5");
110
    textTD.appendChild(elem);
111
112
    var labelTD = createTD("","right");
113
114
    var labelSpan = document.createElement("span");
115
    labelSpan.className = 'label';
116
117
    var label = document.createTextNode(labelText);
118
    labelSpan.appendChild(label);
119
    labelTD.appendChild(labelSpan);
120
121
    var TR = document.createElement("tr");
122
    TR.className='sectbody';
123
    TR.appendChild(labelTD);
124
    TR.appendChild(textTD);
125
126
    return TR;
127
}
128
129
function createHRRow() {
130
    var hrCell = createTD("6");
131
    var hr = document.createElement("hr");
132
    hr.setAttribute("width", "85%");
133
    hrCell.appendChild(hr);
134
135
    var hrTR = document.createElement("tr");
136
    hrTR.className = 'sectbody';
137
    hrTR.appendChild(hrCell);
138
139
    return hrTR;
140
}
141
142
function createHiddenInput(name, value) {
143
    var elem = document.createElement("input");
144
    elem.setAttribute("type", "hidden");
145
    elem.setAttribute("name", name);
146
    elem.setAttribute("value", value);
147
    return elem
148
}
149
150
function sortInputTags() {
151
    sortTagWithAttributeName("taxonName", "addTaxon");
152
    sortTagWithAttributeName("taxonRank", "addTaxon");
153
154
    sortTagWithAttributeName("keyword", "addKeyword");
155
    sortTagWithAttributeName("keywordType", "addKeyword");
156
    sortTagWithAttributeName("keywordTh", "addKeyword");
157
}
158
159
160
function sortTagWithAttributeName(tag, afterTag, parentTag) {
161
    var elem = document.getElementById(afterTag);
162 8728 walker
163
    elem = elem.nextSibling;
164
165
    while (elem && elem.nodeName == "TR") {
166 7867 leinfelder
    var nodes = elem.getElementsByTagName("input");
167
        for(var i = 0; i < nodes.length; i++) {
168
            var node = nodes.item(i);
169
            if (node.getAttribute("name")==tag) {
170
                    var parent = node.parentNode;
171
                    var clone = node.cloneNode(true);
172
                    parent.removeChild(node);
173
                    parent.appendChild(clone);
174
            }
175
        }
176
        if (parentTag != null) {
177
            var nodes = elem.getElementsByTagName(parentTag);
178
            for(var i = 0; i < nodes.length; i++) {
179
                var node = nodes.item(i);
180
                if (node.getAttribute("name")==tag) {
181
                        var parent = node.parentNode;
182
                        var clone = node.cloneNode(true);
183
                        clone.value = node.value;
184
                        parent.removeChild(node);
185
                        parent.appendChild(clone);
186
                }
187
            }
188
        }
189
        elem = elem.nextSibling;
190
    }
191
}
192
193
function incrementCount(_count) {
194
    var countField = document.getElementById(_count);
195
    var count = countField.getAttribute("value");
196
    count++;
197
    countField.setAttribute("value", count);
198
    return count;
199
}
200
201
function decrementCount(_count) {
202
    var countField = document.getElementById(_count);
203
    var count = countField.getAttribute("value");
204
    count--;
205
    countField.setAttribute("value", count);
206
    return count;
207
}
208
209
function setCount(_count, val) {
210
    var countField = document.getElementById(_count);
211
    var count = countField.getAttribute("value");
212
    countField.setAttribute("value", val);
213
    return count;
214
}
215
216 7964 leinfelder
/**
217
 * Deprecated in favor of createIconLink() method
218
 *
219 7867 leinfelder
function createImageLink(imgSrc, imgAlt, imgOnClick, cursor) {
220
    var link = document.createElement("a");
221
    var img = document.createElement("img");
222
    img.setAttribute("src", imgSrc);
223
    img.setAttribute("alt", imgAlt);
224
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
225
        link.style.setAttribute("cursor", cursor);
226
        img.attachEvent("onclick", new Function(imgOnClick));
227
    } else {
228
        link.setAttribute("style", "cursor:"+cursor);
229
        img.setAttribute("onClick", imgOnClick);
230
    }
231
    img.setAttribute("border", "0");
232
    link.appendChild(img);
233
    return link;
234
}
235 7964 leinfelder
*/
236 7867 leinfelder
237 7959 leinfelder
function createIconLink(iconClass, iconAlt, iconOnClick, cursor) {
238
    var link = document.createElement("a");
239
    var icon = document.createElement("i");
240
    icon.setAttribute("class", iconClass);
241
    icon.setAttribute("alt", iconAlt);
242
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
243
        link.style.setAttribute("cursor", cursor);
244
        icon.attachEvent("onclick", new Function(iconOnClick));
245
    } else {
246
        link.setAttribute("style", "cursor:"+cursor);
247
        icon.setAttribute("onClick", iconOnClick);
248
    }
249
    link.appendChild(icon);
250
    return link;
251
}
252 7867 leinfelder
253 7959 leinfelder
254 7867 leinfelder
function createTD(colSpan, align, cursor) {
255
    var td = document.createElement("td");
256
    if (colSpan != "")
257
        td.setAttribute("colSpan", colSpan);
258
    td.setAttribute("align", align);
259
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
260
        td.style.setAttribute("cursor", cursor);
261
    } else {
262
        td.setAttribute("style", "cursor:"+cursor);
263
    }
264
    return td;
265
}
266
267
268
function cleanTextNodes(startTagId, endTagId) {
269
    var startTag = document.getElementById(startTagId);
270
271
    var bro = startTag.nextSibling;
272
273
    while(bro) {
274
        if (bro.nodeName == "#text") {
275
            var temp = bro.nextSibling;
276
            bro.parentNode.removeChild(bro);
277
            bro = temp;
278
        } else {
279
            var id = bro.getAttribute("id");
280
            if (id == endTagId) {
281
              return;
282
            }
283
            bro = bro.nextSibling;
284
        }
285
    }
286
287
}
288
289
function delRow(evt) {
290 9780 cjones
		evt = (evt) ? evt : ((window.event) ? window.event : null);
291 7867 leinfelder
    if (evt) {
292
        // equalize W3C/IE models to get event target reference
293
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
294
        if (elem) {
295
            try {
296 9780 cjones
							var table = elem.parentNode.parentNode.parentNode.parentNode.parentNode;
297
							var rowParent = elem.parentNode.parentNode.parentNode.parentNode;
298
							var row = elem.parentNode.parentNode.parentNode;
299
							rowParent.removeChild(row);
300
							var identifier = table.getAttribute("id");
301
							if ( identifier == "partyTable") {
302
								// Update the total party count
303
								var countElem = document.getElementById("partyCount");
304
								var count = countElem.value;
305
								if ( count > 0 ) {
306
									count--;
307
									countElem.value = count;
308
								}
309
							}
310 7867 leinfelder
            }
311
            catch(e) {
312
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
313
                alert("Error:\n" + msg);
314
                return;
315
            }
316
        }
317
    }
318
}
319
320
function moveUpRow(evt) {
321 9780 cjones
	evt = (evt) ? evt : ((window.event) ? window.event : null);
322
	if (evt) {
323
		// equalize W3C/IE models to get event target reference
324
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
325
		if (elem) {
326
		    try {
327
						var table = elem.parentNode.parentNode.parentNode.parentNode;
328
						var row = elem.parentNode.parentNode.parentNode;
329
330
						var bro = row.previousElementSibling;
331
						if ( bro != null ) {
332
							if ( bro.nodeName == "TR" ) {
333
							clone = row.cloneNode(true);
334
							table.insertBefore(clone, bro);
335
							table.removeChild(row);
336
							}
337
						}
338
			}
339
			catch(e) {
340
				var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
341
				alert("Error:\n" + msg);
342
				return;
343
			}
344
		}
345
	}
346 7867 leinfelder
}
347
348
function moveDownRow(evt, lastTR) {
349 9780 cjones
	evt = (evt) ? evt : ((window.event) ? window.event : null);
350
	if (evt) {
351
		// equalize W3C/IE models to get event target reference
352
		var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
353
		if (elem) {
354
			try {
355
				var table = elem.parentNode.parentNode.parentNode.parentNode;
356
				var row = elem.parentNode.parentNode.parentNode;
357
358
				var _test = row.nextElementSibling;
359
				if (_test.getAttribute("id") == lastTR) {
360
					return;
361
				}
362
				var bro = row.nextElementSibling.nextElementSibling;
363
				if ( bro != null ) {
364
					if ( bro.nodeName == "TR" ) {
365
					clone = row.cloneNode(true);
366
					table.insertBefore(clone, bro);
367
					table.removeChild(row);
368
369
					}
370
				}
371
			}
372
			catch(e) {
373
				var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
374
				alert("Error:\n" + msg);
375
				return;
376
			}
377
		}
378
	}
379 7867 leinfelder
}
380
381
function addAssociatedParty() {
382 9780 cjones
	var partyFirstName  = document.getElementById("assocPartyFirstName");
383
	var partyLastName   = document.getElementById("assocPartyLastName");
384
	var partyRole       = document.getElementById("assocPartyRole");
385
	var partyOrgName    = document.getElementById("assocPartyOrgName");
386
	var partyPositionName = document.getElementById("assocPartyPositionName");
387
	var partyEmail      = document.getElementById("assocPartyEmail");
388
	var partyURL        = document.getElementById("assocPartyURL");
389
	var partyPhone      = document.getElementById("assocPartyPhone");
390
	var partyFAX        = document.getElementById("assocPartyFAX");
391
	var partyDelivery   = document.getElementById("assocPartyDelivery");
392
	var partyCity       = document.getElementById("assocPartyCity");
393
	var partyState      = document.getElementById("assocPartyState");
394
	var partyStateOther = document.getElementById("assocPartyStateOther");
395
	var partyZip        = document.getElementById("assocPartyZip");
396
	var partyCountry    = document.getElementById("assocPartyCountry");
397 7867 leinfelder
398 9780 cjones
	if (partyLastName.value != "" || partyOrgName.value != "" || partyPositionName.value != "") {
399
	    var partyCount = incrementCount("partyCount");
400 7867 leinfelder
401 9780 cjones
			try {
402
				var partyRow = createPartyRow(
403
					partyCount,
404
					partyLastName.value,
405
					partyFirstName.value,
406
					partyRole.options[partyRole.selectedIndex],
407
					partyOrgName.value,
408
					partyPositionName.value,
409
					partyEmail.value,
410
					partyURL.value,
411
					partyPhone.value,
412
					partyFAX.value,
413
					partyDelivery.value,
414
					partyCity.value,
415
					partyState.options[partyState.selectedIndex],
416
					partyStateOther.value,
417
					partyZip.value,
418
					partyCountry.value);
419
420
			} catch(e) {
421
				var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
422
				alert("Error:\n" + msg);
423
				return;
424
425
			}
426
427
			var partyRowMarker = document.getElementById("partyRowMarker");
428
			var parent = partyRowMarker.parentNode;
429
430
			parent.insertBefore(partyRow, partyRowMarker);
431
432
			/* Clear the form */
433
			partyFirstName.value = "";
434
			partyLastName.value = "";
435
			partyRole.selectedIndex = 0;
436
			partyOrgName.value = "";
437
			partyPositionName.value = "";
438
			partyEmail.value = "";
439
			partyURL.value = "";
440
			partyPhone.value = "";
441
			partyFAX.value = "";
442
			partyDelivery.value = "";
443
			partyCity.value = "";
444
			partyState.selectedIndex = 0;
445
			partyStateOther.value = "";
446
			partyZip.value = "";
447
			partyCountry.value = "";
448
449
			/* Clear the selected row id */
450
			var selectedRowInput = document.getElementById("selectedRow");
451
			if ( selectedRowInput != null ) {
452
				selectedRowInput.parentElement.removeChild(selectedRowInput);
453
454
			}
455
456
      /* Hide the update party button if it is showing */
457
			hideUpdatePartyButton();
458
459
	} else {
460
		alert("Please enter a person's last name, an organization name, or a position name at a minimum.");
461
462
	}
463 7867 leinfelder
}
464
465 9780 cjones
function createPartyRow(partyCount, partyLastName, partyFirstName, partyRole,
466
	partyOrgName, partyPositionName, partyEmail, partyURL, partyPhone, partyFAX,
467
	partyDelivery, partyCity, partyState, partyStateOther, partyZip, partyCountry) {
468
    var partyRow = document.createElement("tr");
469
		var idStr = Math.round(Math.random() * 10000000000000000).toString();
470
		partyRow.setAttribute("id", idStr);
471
472
		var upCol = document.createElement("td");
473
		upCol.setAttribute("style", "text-align: center");
474
		upCol.appendChild(createIconLink("icon-arrow-up", "Move Up","moveUpRow(event)","pointer"));
475 7867 leinfelder
476 9780 cjones
		var downCol = document.createElement("td");
477
		downCol.setAttribute("style", "text-align: center");
478
		downCol.appendChild(createIconLink("icon-arrow-down", "Move Down", "moveDownRow(event, \"partyRowMarker\")", "pointer"));
479 7867 leinfelder
480 9780 cjones
		var editCol = document.createElement("td");
481
		editCol.setAttribute("style", "text-align: center");
482
    editCol.appendChild(createIconLink("icon-pencil", "Edit", "editParty(event)", "pointer"));
483 7867 leinfelder
484 9780 cjones
		var delCol = document.createElement("td");
485
		delCol.setAttribute("style", "text-align: center");
486
    delCol.appendChild(createIconLink("icon-remove-sign", "Delete", "delRow(event)", "pointer"));
487
488
		var partyFirstNameCol = document.createElement("td");
489
		var partyFirstNameText = document.createTextNode(partyFirstName);
490
		partyFirstNameCol.appendChild(partyFirstNameText);
491
492
		var partyLastNameCol = document.createElement("td");
493
		var partyLastNameText = document.createTextNode(partyLastName);
494
		partyLastNameCol.appendChild(partyLastNameText);
495
496
		var partyOrgNameCol = document.createElement("td");
497
		partyOrgNameCol.setAttribute("colspan", "2");
498
		var partyOrgNameText = document.createTextNode(partyOrgName);
499
		partyOrgNameCol.appendChild(partyOrgNameText);
500
501
		var partyPositionNameCol = document.createElement("td");
502
		partyPositionNameCol.setAttribute("colspan", "2");
503
		var partyPositionNameText = document.createTextNode(partyPositionName);
504
		partyPositionNameCol.appendChild(partyPositionNameText);
505
506
		var partyRoleCol = document.createElement("td");
507
		var partyRoleText = document.createTextNode(partyRole.text);
508
		partyRoleCol.appendChild(partyRoleText);
509
510
    partyRow.appendChild(createHiddenInput("partyId", idStr));
511
    partyRow.appendChild(createHiddenInput("partyFirstName", partyFirstName));
512
    partyRow.appendChild(createHiddenInput("partyLastName", partyLastName));
513
    partyRow.appendChild(createHiddenInput("partyRole", partyRole.value));
514
    partyRow.appendChild(createHiddenInput("partyOrgName", partyOrgName));
515
    partyRow.appendChild(createHiddenInput("partyPositionName", partyPositionName));
516
    partyRow.appendChild(createHiddenInput("partyEmail", partyEmail));
517
    partyRow.appendChild(createHiddenInput("partyURL", partyURL));
518
    partyRow.appendChild(createHiddenInput("partyPhone", partyPhone));
519
    partyRow.appendChild(createHiddenInput("partyFAX", partyFAX));
520
    partyRow.appendChild(createHiddenInput("partyDelivery", partyDelivery));
521
    partyRow.appendChild(createHiddenInput("partyCity", partyCity));
522
    partyRow.appendChild(createHiddenInput("partyState", partyState.value));
523
    partyRow.appendChild(createHiddenInput("partyStateOther", partyStateOther));
524
    partyRow.appendChild(createHiddenInput("partyZIP", partyZip));
525
    partyRow.appendChild(createHiddenInput("partyCountry", partyCountry));
526
527
		// Preferentially show the person, but default to the organization
528
		if ( partyLastName != "" ) {
529
	    partyRow.appendChild(partyFirstNameCol);
530
	    partyRow.appendChild(partyLastNameCol);
531
532
		} else if ( partyOrgName != ""){
533
	    partyRow.appendChild(partyOrgNameCol);
534
535
		} else {
536
	    partyRow.appendChild(partyPositionNameCol);
537
538
		}
539
    partyRow.appendChild(partyRoleCol);
540
541
    partyRow.appendChild(upCol);
542
    partyRow.appendChild(downCol);
543
    partyRow.appendChild(editCol);
544
    partyRow.appendChild(delCol);
545
546
    return partyRow;
547
548 7867 leinfelder
}
549
550 9780 cjones
function editParty(evt) {
551
	var targetRow = evt.target.parentElement.parentElement.parentElement;
552
	var partyTable = targetRow.parentNode.parentNode;
553
	// Maintain a single selected row when editing
554
	var previousSelectedRow = document.getElementById("selectedRow");
555
	if ( previousSelectedRow != null ) {
556
		previousSelectedRow.parentNode.removeChild(previousSelectedRow);
557
558
	}
559
560
	var selectedRow = document.createElement("input");
561
	selectedRow.setAttribute("type", "hidden");
562
	selectedRow.setAttribute("id", "selectedRow");
563
	selectedRow.setAttribute("value", targetRow.getAttribute("id"));
564
	partyTable.appendChild(selectedRow);
565
566
  var pFirstName = targetRow.firstElementChild.nextElementSibling;
567
	document.getElementById("assocPartyFirstName").value = pFirstName.value;
568
569
  var pLastName = pFirstName.nextElementSibling;
570
	document.getElementById("assocPartyLastName").value = pLastName.value;
571
572
  var pRole = pLastName.nextElementSibling;
573
	var partyRole = document.getElementById("assocPartyRole");
574
	partyRole.options.value = pRole.value;
575
	partyRole.value = pRole.value;
576
	for (var i = 0; i < partyRole.options.length; i++) {
577
		if ( partyRole.options[i].value == pRole.value ) {
578
			partyRole.selectedIndex = i;
579
			partyRole.options[i].selected = true;
580
			break;
581
		}
582
	}
583
584
	var pOrgName = pRole.nextElementSibling;
585
	document.getElementById("assocPartyOrgName").value = pOrgName.value;
586
587
  var pPositionName = pOrgName.nextElementSibling;
588
	document.getElementById("assocPartyPositionName").value = pPositionName.value;
589
590
  var pEmail = pPositionName.nextElementSibling;
591
	document.getElementById("assocPartyEmail").value = pEmail.value;
592
593
  var pURL = pEmail.nextElementSibling;
594
	document.getElementById("assocPartyURL").value = pURL.value;
595
596
  var pPhone = pURL.nextElementSibling;
597
	document.getElementById("assocPartyPhone").value = pPhone.value;
598
599
  var pFAX = pPhone.nextElementSibling;
600
	document.getElementById("assocPartyFAX").value = pFAX.value;
601
602
  var pDelivery = pFAX.nextElementSibling;
603
	document.getElementById("assocPartyDelivery").value = pDelivery.value;
604
605
  var pCity = pDelivery.nextElementSibling;
606
	document.getElementById("assocPartyCity").value = pCity.value;
607
608
  var pState = pCity.nextElementSibling;
609
	var partyState = document.getElementById("assocPartyState");
610
	partyState.value = pState.value;
611
	for (var i = 0; i < partyState.options.length; i++) {
612
		if ( partyState.options[i].value == pState.value ) {
613
			partyState.selectedIndex = i;
614
			partyState.options[i].selected = true;
615
			break;
616
		}
617
	}
618
619
  var pStateOther = pState.nextElementSibling;
620
	document.getElementById("assocPartyStateOther").value = pStateOther.value;
621
622
  var pZip = pStateOther.nextElementSibling;
623
	document.getElementById("assocPartyZip").value = pZip.value;
624
625
  var pCountry = pZip.nextElementSibling;
626
	document.getElementById("assocPartyCountry").value = pCountry.value;
627 7867 leinfelder
628 9780 cjones
  var updateButton = document.getElementById("updatePartyButton");
629
	updateButton.innerHTML = "";
630
	var text = document.createElement("span");
631
	var updatedText = document.createTextNode("Update Person or Organization");
632
	text.appendChild(updatedText);
633
	updateButton.appendChild(text);
634
	updateButton.setAttribute("style", "visibility: visible");
635
636 7867 leinfelder
}
637
638 9780 cjones
var timer;
639
function updateAssociatedParty() {
640
	var selectedRowId = document.getElementById("selectedRow").value;
641
	var selectedRow = document.getElementById(selectedRowId);
642
643
  var pFirstName = selectedRow.firstElementChild.nextElementSibling;
644
	pFirstName.value = document.getElementById("assocPartyFirstName").value;
645
646
  var pLastName = pFirstName.nextElementSibling;
647
	pLastName.value = document.getElementById("assocPartyLastName").value;
648
649
  var pRole = pLastName.nextElementSibling;
650
	pRole.value = document.getElementById("assocPartyRole").value;
651
652
  var pOrgName = pRole.nextElementSibling;
653
	pOrgName.value = document.getElementById("assocPartyOrgName").value;
654
655
  var pPositionName = pOrgName.nextElementSibling;
656
	pPositionName.value = document.getElementById("assocPartyPositionName").value;
657
658
  var pEmail = pPositionName.nextElementSibling;
659
	pEmail.value = document.getElementById("assocPartyEmail").value;
660
661
  var pURL = pEmail.nextElementSibling;
662
	pURL.value = document.getElementById("assocPartyURL").value;
663
664
  var pPhone = pURL.nextElementSibling;
665
	pPhone.value = document.getElementById("assocPartyPhone").value;
666
667
  var pFAX = pPhone.nextElementSibling;
668
	pFAX.value = document.getElementById("assocPartyFAX").value;
669
670
  var pDelivery = pFAX.nextElementSibling;
671
	pDelivery.value = document.getElementById("assocPartyDelivery").value;
672
673
  var pCity = pDelivery.nextElementSibling;
674
	pCity.value = document.getElementById("assocPartyCity").value;
675
676
  var pState = pCity.nextElementSibling;
677
	pState.value = document.getElementById("assocPartyState").value;
678
679
  var pStateOther = pState.nextElementSibling;
680
	pStateOther.value = document.getElementById("assocPartyStateOther").value;
681
682
  var pZip = pStateOther.nextElementSibling;
683
	pZip.value = document.getElementById("assocPartyZip").value;
684
685
  var pCountry = pZip.nextElementSibling;
686
	pCountry.value = document.getElementById("assocPartyCountry").value;
687
688
  var pFirstColumn = pCountry.nextElementSibling;
689
	var pFirstSpan = pFirstColumn.getAttribute("colspan");
690
	if ( pFirstSpan == 2 ) {
691
		if ( pOrgName.value != "" ) {
692
			pFirstColumn.textContent = pOrgName.value;
693
694
		} else {
695
			pFirstColumn.textContent = pPositionName.value;
696
697
		}
698
	} else {
699
		pFirstColumn.textContent = pFirstName.value;
700
701
	}
702
703
	if ( pFirstSpan != 2 ) {
704
	  var pSecondColumn = pFirstColumn.nextElementSibling;
705
		pSecondColumn.textContent = pLastName.value;
706
707
	}
708
709
	var pRoleColumn;
710
	if ( pFirstSpan != 2 ) {
711
	  pRoleColumn = pSecondColumn.nextElementSibling;
712
713
	} else {
714
	  pRoleColumn = pFirstColumn.nextElementSibling;
715
716
	}
717
	var partyRole = document.getElementById("assocPartyRole");
718
	pRoleColumn.textContent = partyRole.options[partyRole.options.selectedIndex].text;
719
720
  var updateButton = document.getElementById("updatePartyButton");
721
	updateButton.innerHTML = "";
722
	var text = document.createElement("span");
723
	var icon = document.createElement("i");
724
	var updatedText = document.createTextNode(" Successfully Updated");
725
	icon.setAttribute("class", "icon-ok");
726
	text.appendChild(icon);
727
	text.appendChild(updatedText);
728
	updateButton.appendChild(text);
729
	updateButton.blur();
730
731
	/* Clear the selected row id */
732
	var selectedRowInput = document.getElementById("selectedRow");
733
	selectedRowInput.parentElement.removeChild(selectedRowInput);
734
735
	/* Clear the form */
736
	document.getElementById("assocPartyFirstName").value = "";
737
	document.getElementById("assocPartyLastName").value = "";
738
	document.getElementById("assocPartyRole").selectedIndex = 0;
739
	document.getElementById("assocPartyOrgName").value = "";
740
	document.getElementById("assocPartyPositionName").value = "";
741
	document.getElementById("assocPartyEmail").value = "";
742
	document.getElementById("assocPartyURL").value = "";
743
	document.getElementById("assocPartyPhone").value = "";
744
	document.getElementById("assocPartyFAX").value = "";
745
	document.getElementById("assocPartyDelivery").value = "";
746
	document.getElementById("assocPartyCity").value = "";
747
	document.getElementById("assocPartyState").selectedIndex = 0;
748
	document.getElementById("assocPartyStateOther").value = "";
749
	document.getElementById("assocPartyZip").value = "";
750
	document.getElementById("assocPartyCountry").value = "";
751
752
	timer = window.setTimeout(hideUpdatePartyButton, 2000);
753
754
}
755
756
function hideUpdatePartyButton() {
757
  var updateButton = document.getElementById("updatePartyButton");
758
	updateButton.setAttribute("style", "visibility: hidden");
759
	updateButton.setAttribute("value", "Update Person or Organization");
760
	window.clearTimeout(timer);
761
762
}
763
764
function createPartyRoleTypeSelect(name, value) {
765 7867 leinfelder
    var newField = document.createElement("select");
766
    newField.setAttribute("name", name);
767
    var option1 = document.createElement("option");
768
    var text1 = document.createTextNode("Co-owner");
769
    option1.appendChild(text1);
770
    newField.appendChild(option1);
771
    var option2 = document.createElement("option");
772
    var text2 = document.createTextNode("Custodian/Steward");
773
    option2.appendChild(text2);
774
    newField.appendChild(option2);
775
    var option3 = document.createElement("option");
776
    var text3 = document.createTextNode("Metadata Provider");
777
    option3.appendChild(text3);
778
    newField.appendChild(option3)
779
    var option4 = document.createElement("option");
780
    var text4 = document.createTextNode("User");
781
    option4.appendChild(text4);
782
    newField.appendChild(option4);
783
784
    if (value == "Co-owner") {
785
        newField.selectedIndex = 0;
786
    } else if (value == "Custodian/Steward") {
787
        newField.selectedIndex = 1;
788
    } else if (value == "Metadata Provider") {
789
        newField.selectedIndex = 2;
790
    } else if (value == "User") {
791
        newField.selectedIndex = 3;
792
    }
793
794
    return newField;
795
}
796
797
function addTaxon() {
798
    var taxonRank   = document.getElementById("taxonRank");
799
    var taxonName   = document.getElementById("taxonName");
800
801
    if (taxonRank.value !="" && taxonName.value != "") {
802
        var taxonCount = incrementCount("taxaCount");
803
        var row = createTaxonRow(taxonCount, taxonRank.value, taxonName.value);
804
        var taxonRowMarker = document.getElementById("addtaxarow");
805
        var parent = taxonRowMarker.parentNode;
806
807
        var taxonHR = document.getElementById("taxonHRRow");
808
        if (taxonHR == null) {
809
            var taxonHRRow = createHRRow();
810
            taxonHRRow.setAttribute("id", "taxonHRRow");
811
            parent.insertBefore(taxonHRRow, taxonRowMarker);
812
        }
813
814
        parent.insertBefore(row, taxonRowMarker);
815
816
        taxonRank.value = "";
817
        taxonName.value = "";
818
    } else {
819
        alert("Enter complete taxonomic information");
820
    }
821
}
822
823
function createTaxonRow(taxonCount, taxonRank, taxonName){
824
    var TR = document.createElement("tr");
825
    TR.className='sectbody';
826
827
    var labelTD = createTD("5","left", "pointer");
828
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
829
        labelTD.attachEvent("onclick",new Function("taxonEditRow(event, 0, \"" + taxonName
830
                         + "\",\"" + taxonRank  + "\")"));
831
    } else {
832
        labelTD.setAttribute("onClick","taxonEditRow(event, 0, \"" + taxonName
833
                         + "\",\"" + taxonRank  + "\")");
834
    }
835
836
    var text = "Rank: " + taxonRank + ", Name: " + taxonName;
837
    var label = document.createTextNode(text);
838
839
    labelTD.appendChild(label);
840
    labelTD.appendChild(createHiddenInput("taxonName", taxonName));
841
    labelTD.appendChild(createHiddenInput("taxonRank", taxonRank));
842
843
    var imgTD = createTD("","right");
844
    imgTD.className = 'rightCol';
845
846 7960 leinfelder
    imgTD.appendChild(createIconLink("icon-arrow-up",
847 7867 leinfelder
                                      "Move Up", "moveUpRow(event)",
848
                                      "pointer"));
849
    imgTD.appendChild(document.createTextNode(" "));
850 7960 leinfelder
    imgTD.appendChild(createIconLink("icon-arrow-down",
851 7867 leinfelder
                                      "Move Down", "moveDownRow(event, 'addtaxarow')",
852
                                      "pointer"));
853
    imgTD.appendChild(document.createTextNode(" "));
854 7960 leinfelder
    imgTD.appendChild(createIconLink("icon-remove-sign",
855 7867 leinfelder
                                      "Delete", "delRow(event)",
856
                                      "pointer"));
857
858
    TR.appendChild(imgTD);
859
    TR.appendChild(labelTD);
860
861
    return TR;
862
}
863
864
function taxonEditRow(evt, num,  taxonName ,  taxonRank) {
865
    evt = (evt) ? evt : ((window.event) ? window.event : null);
866
    if (evt) {
867
        // equalize W3C/IE models to get event target reference
868
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
869
        if (elem && elem.nodeName == "TD") {
870
            try {
871
                var table = elem.parentNode;
872
                if (num == 0) {
873
                    table.removeChild(elem);
874
                    var TD = createTD("5","left", "pointer");
875
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
876
                        TD.attachEvent("onclick",new Function("taxonEditRow(event, 1, \"" + taxonName
877
                                       + "\",\"" + taxonRank  + "\")"));
878
                    } else {
879
                        TD.setAttribute("onClick","taxonEditRow(event, 1, \"" + taxonName
880
                                        + "\",\"" + taxonRank  + "\")");
881
                    }
882
883
                    TD.appendChild(document.createTextNode("Rank: "));
884
                    TD.appendChild(createTextField("taxonName", 15, taxonName));
885
                    TD.appendChild(document.createTextNode(" Name: "));
886
                    TD.appendChild(createTextField("taxonRank", 15, taxonRank));
887
                    table.appendChild(TD);
888
                } else {
889
                    var child = elem.childNodes;
890
                    taxonName = child.item(1).value;
891
                    taxonRank = child.item(3).value;
892
                    table.removeChild(elem);
893
894
                    var TD = createTD("5","left", "pointer");
895
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
896
                        TD.attachEvent("onclick",new Function("taxonEditRow(event, 0, \"" + taxonName
897
                                       + "\",\"" + taxonRank  + "\")"));
898
                    } else {
899
                        TD.setAttribute("onClick","taxonEditRow(event, 0, \"" + taxonName
900
                                        + "\",\"" + taxonRank  + "\")");
901
                    }
902
                    var text = "Rank: " + taxonName + ", Name: " + taxonRank;
903
                    var label = document.createTextNode(text);
904
                    TD.appendChild(label);
905
                    TD.appendChild(createHiddenInput("taxonName", taxonName));
906
                    TD.appendChild(createHiddenInput("taxonRank", taxonRank));
907
                    table.appendChild(TD);
908
                }
909
            } catch(e) {
910
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
911
                alert("Error:\n" + msg);
912
                return;
913
            }
914
        }
915
    }
916
}
917
918 9633 leinfelder
919
//BEGIN BRL ALTERNATE IDENTIFIER
920
function addIdentifier() {
921
    var identifier   = document.getElementById("identifier");
922
923
    if (identifier.value !="") {
924
        var identifierCount = incrementCount("identifierCount");
925
        var row = createIdentifierRow(identifierCount, identifier.value);
926
        var identifierRowMarker = document.getElementById("addidentifierrow");
927
        var parent = identifierRowMarker.parentNode;
928
929
        var identifierHR = document.getElementById("identifierHRRow");
930
        if (identifierHR == null) {
931
            var identifierHRRow = createHRRow();
932
            identifierHRRow.setAttribute("id", "identifierHRRow");
933
            parent.insertBefore(identifierHRRow, identifierRowMarker);
934
        }
935
936
        parent.insertBefore(row, identifierRowMarker);
937
938
        identifier.value = "";
939
    } else {
940
        alert("Enter complete alternate identifier information");
941
    }
942
}
943
944
function createIdentifierRow(identifierCount, identifier){
945
    var TR = document.createElement("tr");
946
    TR.className='sectbody';
947
948
    var labelTD = createTD("5","left", "pointer");
949
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
950
        labelTD.attachEvent("onclick",new Function("identifierEditRow(event, 0, \"" + identifier  + "\")"));
951
    } else {
952
        labelTD.setAttribute("onClick","identifierEditRow(event, 0, \"" + identifier  + "\")");
953
    }
954
955
    var text = "Identifier: " + identifier;
956
    var label = document.createTextNode(text);
957
958
    labelTD.appendChild(label);
959
    labelTD.appendChild(createHiddenInput("identifier", identifier));
960
961
    var imgTD = createTD("","right");
962
    imgTD.className = 'rightCol';
963
964
    imgTD.appendChild(createIconLink("icon-arrow-up",
965
                                      "Move Up", "moveUpRow(event)",
966
                                      "pointer"));
967
    imgTD.appendChild(document.createTextNode(" "));
968
    imgTD.appendChild(createIconLink("icon-arrow-down",
969
                                      "Move Down", "moveDownRow(event, 'addidentifierrow')",
970
                                      "pointer"));
971
    imgTD.appendChild(document.createTextNode(" "));
972
    imgTD.appendChild(createIconLink("icon-remove-sign",
973
                                      "Delete", "delRow(event)",
974
                                      "pointer"));
975
976
    TR.appendChild(imgTD);
977
    TR.appendChild(labelTD);
978
979
    return TR;
980
}
981
982
function identifierEditRow(evt, num, identifier) {
983
    evt = (evt) ? evt : ((window.event) ? window.event : null);
984
    if (evt) {
985
        // equalize W3C/IE models to get event target reference
986
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
987
        if (elem && elem.nodeName == "TD") {
988
            try {
989
                var table = elem.parentNode;
990
                if (num == 0) {
991
                    table.removeChild(elem);
992
                    var TD = createTD("5","left", "pointer");
993
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
994
                        TD.attachEvent("onclick",new Function("identifierEditRow(event, 1, \"" + identifier  + "\")"));
995
                    } else {
996
                        TD.setAttribute("onClick","taxonEditRow(event, 1, \"" + identifier  + "\")");
997
                    }
998
999
1000
                    TD.appendChild(document.createTextNode(" Identifier: "));
1001
                    TD.appendChild(createTextField("identifier", 15, identifier));
1002
                    table.appendChild(TD);
1003
                } else {
1004
                    var child = elem.childNodes;
1005
                    taxonName = child.item(1).value;
1006
                    table.removeChild(elem);
1007
1008
                    var TD = createTD("5","left", "pointer");
1009
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
1010
                        TD.attachEvent("onclick",new Function("identifierEditRow(event, 0, \"" + identifier  + "\")"));
1011
                    } else {
1012
                        TD.setAttribute("onClick","identifierEditRow(event, 0, \"" + identifier  + "\")");
1013
                    }
1014
                    var text = "Identifier: " + identifier;
1015
                    var label = document.createTextNode(text);
1016
                    TD.appendChild(label);
1017
                    TD.appendChild(createHiddenInput("identifier", identifier));
1018
                    table.appendChild(TD);
1019
                }
1020
            } catch(e) {
1021
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
1022
                alert("Error:\n" + msg);
1023
                return;
1024
            }
1025
        }
1026
    }
1027
}
1028
//END BRL ALTERNATE IDENTIFIER
1029
1030 7867 leinfelder
function addKeyword() {
1031
    var keyword   = document.getElementById("keyword");
1032
    var keywordType   = document.getElementById("keywordType");
1033
    var keywordTh = document.getElementById("keywordTh");
1034
1035
    if (keyword.value !="") {
1036
        var keyCount = incrementCount("keyCount");
1037
        var keyRow = createKeywordRow(keyCount, keyword.value,
1038
                                      keywordType.options[keywordType.selectedIndex].text,
1039
                                      keywordTh.options[keywordTh.selectedIndex].text);
1040
        var keyRowMarker = document.getElementById("addkeyrow");
1041
        var parent = keyRowMarker.parentNode;
1042
1043
        var keyHR = document.getElementById("keywordHRRow");
1044
        if (keyHR == null) {
1045
            var keyHRRow = createHRRow();
1046
            keyHRRow.setAttribute("id", "keywordHRRow");
1047
            parent.insertBefore(keyHRRow, keyRowMarker);
1048
        }
1049
1050
        parent.insertBefore(keyRow, keyRowMarker);
1051
1052
        keyword.value = "";
1053
        keywordType.selectedIndex = 0;
1054
        keywordTh.selectedIndex = 0;
1055
    } else {
1056
        alert("Enter keyword");
1057
    }
1058
}
1059
1060
function createKeywordRow(keyCount, keyword, keywordType, keywordTh){
1061
    var TR = document.createElement("tr");
1062
    TR.className='sectbody';
1063
1064
    var labelTD = createTD("5","left", "pointer");
1065
1066
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
1067
        labelTD.attachEvent("onclick", new Function("keywordEditRow(event, 0, \"" + keyword
1068
            + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")"));
1069
    } else {
1070
        labelTD.setAttribute("onClick","keywordEditRow(event, 0, \"" + keyword
1071
            + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")");
1072
    }
1073
1074
    var text   = keyword + " (Type: " + keywordType + ", Thesaurus: " + keywordTh + ")";
1075
    var label = document.createTextNode(text);
1076
1077
    labelTD.appendChild(label);
1078
    labelTD.appendChild(createHiddenInput("keyword", keyword));
1079
    labelTD.appendChild(createHiddenInput("keywordType", keywordType));
1080
    labelTD.appendChild(createHiddenInput("keywordTh", keywordTh));
1081
1082
    var imgTD = createTD("","right");
1083
    imgTD.className = 'rightCol';
1084
1085 7964 leinfelder
    imgTD.appendChild(createIconLink("icon-arrow-up",
1086 7867 leinfelder
                                      "Move Up", "moveUpRow(event)",
1087
                                      "pointer"));
1088
    imgTD.appendChild(document.createTextNode(" "));
1089 7960 leinfelder
    imgTD.appendChild(createIconLink("icon-arrow-down",
1090 7867 leinfelder
                                      "Move Down", "moveDownRow(event, 'addkeyrow')",
1091
                                      "pointer"));
1092
    imgTD.appendChild(document.createTextNode(" "));
1093 7960 leinfelder
    imgTD.appendChild(createIconLink("icon-remove-sign",
1094 7867 leinfelder
                                      "Delete", "delRow(event)",
1095
                                      "pointer"));
1096
1097
    TR.appendChild(imgTD);
1098
    TR.appendChild(labelTD);
1099
1100
    return TR;
1101
}
1102
1103
function keywordEditRow(evt, num,  keyword,  keywordType, keywordTh) {
1104
    evt = (evt) ? evt : ((window.event) ? window.event : null);
1105
    if (evt) {
1106
        // equalize W3C/IE models to get event target reference
1107
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
1108
        if (elem && elem.nodeName == "TD") {
1109
            try {
1110
                var table = elem.parentNode;
1111
                if (num == 0) {
1112
                    table.removeChild(elem);
1113
                    var TD = createTD("5","left", "pointer");
1114
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
1115
                        TD.attachEvent("onclick", new Function("keywordEditRow(event, 1, \"" + keyword
1116
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")"));
1117
                    } else {
1118
                        TD.setAttribute("onClick","keywordEditRow(event, 1, \"" + keyword
1119
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")");
1120
                    }
1121
1122
                    TD.appendChild(createTextField("keyword", 15, keyword));
1123
                    TD.appendChild(document.createTextNode(" Type: "));
1124
                    TD.appendChild(createKeyTypeSelect("keywordType", keywordType));
1125
                    TD.appendChild(document.createTextNode(" Thesaurus: "));
1126
                    TD.appendChild(createKeyThSelect("keywordTh", keywordTh));
1127
                    table.appendChild(TD);
1128
                } else {
1129
                    var child = elem.childNodes;
1130
                    keyword = child.item(0).value;
1131
                    var _keywordType = child.item(2);
1132
                    keywordType = _keywordType.options[_keywordType.selectedIndex].text;
1133
                    var _keywordTh = child.item(4);
1134
                    keywordTh = _keywordTh.options[_keywordTh.selectedIndex].text;
1135
                    table.removeChild(elem);
1136
1137
                    var TD = createTD("5","left", "pointer");
1138
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
1139
                        TD.attachEvent("onclick", new Function("keywordEditRow(event, 0, \"" + keyword
1140
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")"));
1141
                    } else {
1142
                        TD.setAttribute("onClick","keywordEditRow(event, 0, \"" + keyword
1143
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")");
1144
                    }
1145
1146
                    var text   = keyword + " (Type: " + keywordType + ", Thesaurus: " + keywordTh + ")";
1147
                    var label = document.createTextNode(text);
1148
                    TD.appendChild(label);
1149
                    TD.appendChild(createHiddenInput("keyword", keyword));
1150
                    TD.appendChild(createHiddenInput("keywordType", keywordType));
1151
                    TD.appendChild(createHiddenInput("keywordTh", keywordTh));
1152
                    table.appendChild(TD);
1153
                }
1154
            } catch(e) {
1155
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
1156
                alert("Error:\n" + msg);
1157
                return;
1158
            }
1159
        }
1160
    }
1161
}
1162
1163
function createKeywordThesaurusRow(name) {
1164
    var keyRowTemplate = document.getElementById("keyThRow");
1165
    var newField =  keyRowTemplate.cloneNode(true);
1166
    var nodes = newField.getElementsByTagName("input");
1167
    nodes.item(0).setAttribute("name", name);
1168
    nodes.item(1).setAttribute("name", name);
1169
    return newField;
1170
}
1171
1172
function createKeyThSelect(name, value) {
1173
    var newField = document.createElement("select");
1174
    newField.setAttribute("name", name);
1175
    var option1 = document.createElement("option");
1176
    var text1 = document.createTextNode("None");
1177
    option1.appendChild(text1);
1178
    newField.appendChild(option1);
1179
    var option2 = document.createElement("option");
1180
    var text2 = document.createTextNode("GCMD");
1181
    option2.appendChild(text2);
1182
    newField.appendChild(option2);
1183
1184
    if (value == "None") {
1185
        newField.selectedIndex = 0;
1186
    } else if (value == "GCMD") {
1187
        newField.selectedIndex = 1;
1188
    }
1189
    return newField;
1190
}
1191
1192
function createKeyTypeSelect(name, value) {
1193
    var newField = document.createElement("select");
1194
    newField.setAttribute("name", name);
1195
    var option1 = document.createElement("option");
1196
    var text1 = document.createTextNode("None");
1197
    option1.appendChild(text1);
1198
    newField.appendChild(option1);
1199
    var option2 = document.createElement("option");
1200
    var text2 = document.createTextNode("Theme");
1201
    option2.appendChild(text2);
1202
    newField.appendChild(option2);
1203
    var option3 = document.createElement("option");
1204
    var text3 = document.createTextNode("Place");
1205
    option3.appendChild(text3);
1206
    newField.appendChild(option3)
1207
    var option4 = document.createElement("option");
1208
    var text4 = document.createTextNode("Stratum");
1209
    option4.appendChild(text4);
1210
    newField.appendChild(option4);
1211
    var option5 = document.createElement("option");
1212
    var text5 = document.createTextNode("Temporal");
1213
    option5.appendChild(text5);
1214
    newField.appendChild(option5);
1215
    var option6 = document.createElement("option");
1216
    var text6 = document.createTextNode("Taxonomic");
1217
    option6.appendChild(text6);
1218
    newField.appendChild(option6);
1219
    if (value == "None") {
1220
        newField.selectedIndex = 0;
1221
    } else if (value == "Theme") {
1222
        newField.selectedIndex = 1;
1223
    } else if (value == "Place") {
1224
        newField.selectedIndex = 2;
1225
    } else if (value == "Stratum") {
1226
        newField.selectedIndex = 3;
1227
    }else if (value == "Temporal") {
1228
        newField.selectedIndex = 4;
1229
    } else if (value == "Taxonomic") {
1230
        newField.selectedIndex = 5;
1231
    }
1232
    return newField;
1233
}
1234
1235
var basicInfoBit = 1;
1236
var submitterBit = 1;
1237
var dsoBit = 1;
1238
var apBit = 1;
1239
var abstractBit = 1;
1240
var keywordBit = 1;
1241
var temporalBit = 1;
1242
var spatialBit = 1;
1243
var taxonomicBit = 1;
1244
var methodBit = 1;
1245
var dscBit = 1;
1246
var distBit = 1;
1247
var uploadBit = 1;
1248
1249
function swap(evt, _node, nodeBit) {
1250
    evt = (evt) ? evt : ((window.event) ? window.event : null);
1251
    if (evt) {
1252
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
1253
1254
        // hack so that this works on safari...
1255
        if (elem.nodeName != 'A') {
1256
            elem = elem.parentNode;
1257
        }
1258
        elem.removeChild(elem.firstChild);
1259
        var node = document.getElementById(_node);
1260
        if (nodeBit) {
1261
            elem.appendChild(document.createTextNode("Show"));
1262
            node.className="hide";
1263
            return 0;
1264
        } else {
1265
            elem.appendChild(document.createTextNode("Hide"));
1266
            node.className="tables";
1267
            return 1;
1268
        }
1269
    }
1270
}
1271
1272
function handleOther(enable, node) {
1273
    var textBox = document.getElementById(node);
1274
    if (enable) {
1275
        textBox.removeAttribute("disabled");
1276
    } else {
1277
        textBox.value="";
1278
        textBox.disabled = "true";
1279
    }
1280
}
1281
1282
// include source for Multiple file uploader:
1283
// http://the-stickman.com/web-development/javascript/
1284
1285
function MultiSelector(list_target, max) {
1286
1287
    this.list_target = list_target;
1288
    this.count = 0;
1289
    this.id = 0;
1290
    var ucount =  document.getElementById("upCount");
1291
    var fcount =  document.getElementById("fileCount");
1292
    if (fcount.value > 0) {
1293
        this.id = fcount.value;
1294
    } else {
1295
        // upCount contains pre-existing uploads, check this for editing existing packages
1296
        if (ucount != null && ucount.value > 0) {
1297
            this.id = ucount.value;
1298
        }
1299
    }
1300
1301
    if (max) {
1302
        this.max = max;
1303
    } else {
1304
      this.max = -1;
1305
    };
1306
1307
    /**
1308
     * Add a new file input element
1309
     */
1310
    this.addElement = function( element ) {
1311
1312
        // Make sure it's a file input element
1313
        if (element.tagName == 'INPUT' && element.type == 'file' ) {
1314
            // Element name -- what number am I?
1315
            element.name = 'file_' + this.id++;
1316
1317
            // Add reference to this object
1318
            element.multi_selector = this;
1319
1320
            // What to do when a file is selected
1321
            element.onchange = function() {
1322
                // Increment file counter
1323
                var fileCount = incrementCount("fileCount");
1324
                // If pre-existing uploads exist, make sure the fileCount is synced
1325
                if (ucount != null && ucount.value > 0) {
1326
                    fileCount += ucount.value;
1327
                    setCount("fileCount", fileCount);
1328
                }
1329
1330
                // Clean up file text
1331
                var comment_element = document.getElementById( 'file_comment' );
1332
                if (comment_element) {
1333
                    comment_element.parentNode.removeChild(comment_element);
1334
                }
1335
1336
                // New file input
1337
                var new_element = document.createElement( 'input' );
1338
                new_element.type = 'file';
1339
1340
                // Add new element
1341
                this.parentNode.insertBefore( new_element, this );
1342
1343
                // Apply 'update' to element
1344
                this.multi_selector.addElement( new_element );
1345
1346
                // Update list
1347
                this.multi_selector.addListRow( this );
1348
1349
                // Hide this: we can't use display:none because Safari doesn't like it
1350
                this.style.position = 'absolute';
1351
                this.style.left = '-1000px';
1352
            };
1353
1354
            // If we've reached maximum number, disable input element
1355
            if (this.max != -1 && this.count >= this.max ) {
1356
                element.disabled = true;
1357
            };
1358
1359
            // File element counter
1360
            this.count++;
1361
1362
            // Most recent element
1363
            this.current_element = element;
1364
1365
        } else {
1366
            // This can only be applied to file input elements!
1367
            alert( 'Error: not a file input element' );
1368
        };
1369
    };
1370
1371
    /**
1372
     * Add a new row to the list of files
1373
     */
1374
    this.addListRow = function( element ) {
1375
        // Row div
1376 9780 cjones
        var new_row = document.createElement( 'tr' );
1377 7867 leinfelder
1378
        // Delete button
1379 9780 cjones
        var col_4 = document.createElement( 'td' );
1380 7867 leinfelder
        var new_row_button = document.createElement( 'input' );
1381
        new_row_button.type = 'button';
1382 7966 leinfelder
        new_row_button.setAttribute("class", "btn");
1383 7867 leinfelder
        new_row_button.value = 'Delete';
1384
1385
        // Permissions check boxes
1386
        var radio_value_a = 'public';
1387
        var radio_value_b = 'private';
1388 9780 cjones
		var col_3 = document.createElement('td');
1389
		var col_2 = document.createElement('td');
1390 7867 leinfelder
        var new_radio_a = document.createElement('input');
1391
        var new_radio_b = document.createElement('input');
1392
        new_radio_a.type = new_radio_b.type = 'radio';
1393
        // get the file upload name, use the number to keep track of the file we're setting permissions on
1394
        new_radio_a.name = new_radio_b.name = 'uploadperm_' + element.name.split("_")[1];
1395
        new_radio_a.value = radio_value_a;
1396
        new_radio_b.value = radio_value_b;
1397
        new_radio_a.checked = false;
1398
        new_radio_b.checked = true; // when adding new files, default is private
1399
1400
        // References
1401
        new_row.element = element;
1402
1403
        // Delete function
1404 9780 cjones
        new_row_button.onclick = function() {
1405 7867 leinfelder
            // Remove element from form
1406 9780 cjones
            this.parentNode.parentNode.element.parentNode.removeChild( this.parentNode.parentNode.element );
1407 7867 leinfelder
1408
            // Remove this row from the list
1409 9780 cjones
            this.parentNode.parentNode.parentNode.removeChild( this.parentNode.parentNode );
1410 7867 leinfelder
            // Decrement counter
1411 9780 cjones
            this.parentNode.parentNode.element.multi_selector.count--;
1412 7867 leinfelder
1413
            // Re-enable input element (if it's disabled)
1414 9780 cjones
            this.parentNode.parentNode.element.multi_selector.current_element.disabled = false;
1415 7867 leinfelder
1416
            // Appease Safari
1417
            //    without it Safari wants to reload the browser window
1418
            //    which nixes your already queued uploads
1419
            return false;
1420
        };
1421 9780 cjones
				col_4.appendChild(new_row_button);
1422 7867 leinfelder
1423
        // filename may include path, show only file name itself
1424 9780 cjones
		var col_1 = document.createElement('td');
1425 7867 leinfelder
        var name_pattern = element.value.replace(/.*[\/\\](.*)/, "$1");
1426
1427
        // Set row value
1428 9780 cjones
        col_1.appendChild( document.createTextNode(name_pattern + " ") );
1429
        new_row.appendChild( col_1 );
1430 7867 leinfelder
1431
        // Add in radio buttons and their text
1432 9780 cjones
		col_2.appendChild( new_radio_a );
1433
        col_2.appendChild( document.createTextNode(String.fromCharCode(160) + capitalize(radio_value_a)) );
1434
        new_row.appendChild( col_2 );
1435
		col_3.appendChild( new_radio_b );
1436
        col_3.appendChild( document.createTextNode(String.fromCharCode(160) + capitalize(radio_value_b)) );
1437
        new_row.appendChild( col_3 );
1438 7867 leinfelder
1439
        // Add button
1440 9780 cjones
        new_row.appendChild( col_4 );
1441 7867 leinfelder
1442
        // Add it to the list
1443
        this.list_target.appendChild( new_row );
1444
    };
1445
1446
};
1447
1448
// Append files to be deleted to an HTML array
1449
function deleteFile(evt, file) {
1450
    evt = (evt) ? evt : ((window.event) ? window.event : null);
1451
    if (evt) {
1452
        // equalize W3C/IE models to get event target reference
1453
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
1454
        var element = document.getElementById("file_element");
1455
        if (elem) {
1456
            try {
1457
                // Add a new hidden form element to delete exisiting files
1458
                var delete_existing = document.createElement( 'input' );
1459
                delete_existing.type = "hidden";
1460
                delete_existing.name = "deletefile"; // HTML array
1461
                delete_existing.value = file.name;
1462
                element.parentNode.appendChild( delete_existing );
1463
1464
                // Remove this row from the list
1465 9780 cjones
                elem.parentNode.parentNode.parentNode.removeChild( elem.parentNode.parentNode );
1466 7867 leinfelder
            } catch(e) {
1467
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
1468
                alert("Error:\n" + msg);
1469
                return;
1470
            }
1471
        }
1472
    }
1473
}
1474
1475
function capitalize(word) {
1476
    return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
1477
}