Project

General

Profile

1
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
    newParaWidget.className="span8";
13
    newParaWidget.setAttribute("name", "methodPara");
14

    
15
    var TR = document.createElement("tr");
16
    TR.className='sectbody';
17
    var TD = createTD("1","left");
18
    var emptyTD = createTD("","right");
19
    TD.appendChild(newParaWidget);
20
    //TR.appendChild(emptyTD);
21
    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
    button.setAttribute("type", "button");
47
    button.setAttribute("class", "btn"); 
48
    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
    textArea.className="span8";
87
    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
    
163
    elem = elem.nextSibling;
164
    
165
    while (elem && elem.nodeName == "TR") {
166
    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
/** 
217
 * Deprecated in favor of createIconLink() method
218
 * 
219
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
*/
236

    
237
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

    
253

    
254
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
		evt = (evt) ? evt : ((window.event) ? window.event : null);
291
    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
							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
            }
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
	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
}
347

    
348
function moveDownRow(evt, lastTR) {
349
	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
}
380

    
381
function addAssociatedParty() {
382
	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

    
398
	if (partyLastName.value != "" || partyOrgName.value != "" || partyPositionName.value != "") {
399
	    var partyCount = incrementCount("partyCount");
400

    
401
			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
}
464

    
465
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

    
476
		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

    
480
		var editCol = document.createElement("td");
481
		editCol.setAttribute("style", "text-align: center");
482
    editCol.appendChild(createIconLink("icon-pencil", "Edit", "editParty(event)", "pointer"));
483

    
484
		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
}
549

    
550
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

    
628
  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
}
637

    
638
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
    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
    imgTD.appendChild(createIconLink("icon-arrow-up",
847
                                      "Move Up", "moveUpRow(event)",
848
                                      "pointer"));
849
    imgTD.appendChild(document.createTextNode(" "));
850
    imgTD.appendChild(createIconLink("icon-arrow-down",
851
                                      "Move Down", "moveDownRow(event, 'addtaxarow')",
852
                                      "pointer"));
853
    imgTD.appendChild(document.createTextNode(" "));
854
    imgTD.appendChild(createIconLink("icon-remove-sign",
855
                                      "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

    
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
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
    imgTD.appendChild(createIconLink("icon-arrow-up",
1086
                                      "Move Up", "moveUpRow(event)",
1087
                                      "pointer"));
1088
    imgTD.appendChild(document.createTextNode(" "));
1089
    imgTD.appendChild(createIconLink("icon-arrow-down",
1090
                                      "Move Down", "moveDownRow(event, 'addkeyrow')",
1091
                                      "pointer"));
1092
    imgTD.appendChild(document.createTextNode(" "));
1093
    imgTD.appendChild(createIconLink("icon-remove-sign",
1094
                                      "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
        var new_row = document.createElement( 'tr' );
1377

    
1378
        // Delete button
1379
        var col_4 = document.createElement( 'td' );
1380
        var new_row_button = document.createElement( 'input' );
1381
        new_row_button.type = 'button';
1382
        new_row_button.setAttribute("class", "btn"); 
1383
        new_row_button.value = 'Delete';
1384

    
1385
        // Permissions check boxes
1386
        var radio_value_a = 'public';
1387
        var radio_value_b = 'private';
1388
		var col_3 = document.createElement('td');
1389
		var col_2 = document.createElement('td');
1390
        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
        new_row_button.onclick = function() {
1405
            // Remove element from form
1406
            this.parentNode.parentNode.element.parentNode.removeChild( this.parentNode.parentNode.element );
1407

    
1408
            // Remove this row from the list
1409
            this.parentNode.parentNode.parentNode.removeChild( this.parentNode.parentNode );
1410
            // Decrement counter
1411
            this.parentNode.parentNode.element.multi_selector.count--;
1412

    
1413
            // Re-enable input element (if it's disabled)
1414
            this.parentNode.parentNode.element.multi_selector.current_element.disabled = false;
1415

    
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
				col_4.appendChild(new_row_button);
1422
       
1423
        // filename may include path, show only file name itself
1424
		var col_1 = document.createElement('td');
1425
        var name_pattern = element.value.replace(/.*[\/\\](.*)/, "$1");
1426

    
1427
        // Set row value
1428
        col_1.appendChild( document.createTextNode(name_pattern + " ") );
1429
        new_row.appendChild( col_1 );
1430
        
1431
        // Add in radio buttons and their text
1432
		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

    
1439
        // Add button
1440
        new_row.appendChild( col_4 );
1441

    
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
                elem.parentNode.parentNode.parentNode.removeChild( elem.parentNode.parentNode );
1466
            } 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
}
1478

    
1479
//Now execute all JS that needs to run after the entry form template and this JS file are loaded
1480
var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 10);
1481
multi_selector.addElement( document.getElementById( 'file_element' ) );
(3-3/7)