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("aoFirstName", "addAssociatedParty");
152
    sortTagWithAttributeName("aoLastName", "addAssociatedParty");
153
    sortTagWithAttributeName("aoRole", "addAssociatedParty", "select");
154
    
155
    sortTagWithAttributeName("taxonName", "addTaxon");
156
    sortTagWithAttributeName("taxonRank", "addTaxon");
157
    
158
    sortTagWithAttributeName("keyword", "addKeyword");
159
    sortTagWithAttributeName("keywordType", "addKeyword");
160
    sortTagWithAttributeName("keywordTh", "addKeyword");
161
}
162

    
163

    
164
function sortTagWithAttributeName(tag, afterTag, parentTag) {
165
    var elem = document.getElementById(afterTag);
166
    
167
    elem = elem.nextSibling;
168
    
169
    while (elem && elem.nodeName == "TR") {
170
    var nodes = elem.getElementsByTagName("input");
171
        for(var i = 0; i < nodes.length; i++) {
172
            var node = nodes.item(i); 
173
            if (node.getAttribute("name")==tag) {
174
                    var parent = node.parentNode;
175
                    var clone = node.cloneNode(true);
176
                    parent.removeChild(node);
177
                    parent.appendChild(clone);
178
            }
179
        }
180
        if (parentTag != null) {
181
            var nodes = elem.getElementsByTagName(parentTag);
182
            for(var i = 0; i < nodes.length; i++) {
183
                var node = nodes.item(i); 
184
                if (node.getAttribute("name")==tag) {
185
                        var parent = node.parentNode;
186
                        var clone = node.cloneNode(true);
187
                        clone.value = node.value;
188
                        parent.removeChild(node);
189
                        parent.appendChild(clone);
190
                }
191
            }
192
        }
193
        elem = elem.nextSibling;
194
    }
195
}
196

    
197
function incrementCount(_count) {
198
    var countField = document.getElementById(_count);
199
    var count = countField.getAttribute("value");
200
    count++;
201
    countField.setAttribute("value", count);
202
    return count;
203
}
204

    
205
function decrementCount(_count) {
206
    var countField = document.getElementById(_count);
207
    var count = countField.getAttribute("value");
208
    count--;
209
    countField.setAttribute("value", count);
210
    return count;
211
}
212

    
213
function setCount(_count, val) {
214
    var countField = document.getElementById(_count);
215
    var count = countField.getAttribute("value");
216
    countField.setAttribute("value", val);
217
    return count;
218
}
219

    
220
/** 
221
 * Deprecated in favor of createIconLink() method
222
 * 
223
function createImageLink(imgSrc, imgAlt, imgOnClick, cursor) {
224
    var link = document.createElement("a");
225
    var img = document.createElement("img");
226
    img.setAttribute("src", imgSrc);
227
    img.setAttribute("alt", imgAlt);
228
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
229
        link.style.setAttribute("cursor", cursor);
230
        img.attachEvent("onclick", new Function(imgOnClick));
231
    } else {
232
        link.setAttribute("style", "cursor:"+cursor);
233
        img.setAttribute("onClick", imgOnClick);
234
    }
235
    img.setAttribute("border", "0");
236
    link.appendChild(img);        
237
    return link;
238
}
239
*/
240

    
241
function createIconLink(iconClass, iconAlt, iconOnClick, cursor) {
242
    var link = document.createElement("a");
243
    var icon = document.createElement("i");
244
    icon.setAttribute("class", iconClass);
245
    icon.setAttribute("alt", iconAlt);
246
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
247
        link.style.setAttribute("cursor", cursor);
248
        icon.attachEvent("onclick", new Function(iconOnClick));
249
    } else {
250
        link.setAttribute("style", "cursor:"+cursor);
251
        icon.setAttribute("onClick", iconOnClick);
252
    }
253
    link.appendChild(icon);        
254
    return link;
255
}
256

    
257

    
258
function createTD(colSpan, align, cursor) {
259
    var td = document.createElement("td");
260
    if (colSpan != "")
261
        td.setAttribute("colSpan", colSpan);
262
    td.setAttribute("align", align);
263
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
264
        td.style.setAttribute("cursor", cursor);
265
    } else {
266
        td.setAttribute("style", "cursor:"+cursor);
267
    }
268
    return td;
269
}
270

    
271

    
272
function cleanTextNodes(startTagId, endTagId) {
273
    var startTag = document.getElementById(startTagId);
274

    
275
    var bro = startTag.nextSibling;       
276

    
277
    while(bro) {
278
        if (bro.nodeName == "#text") {
279
            var temp = bro.nextSibling;
280
            bro.parentNode.removeChild(bro);
281
            bro = temp;
282
        } else {
283
            var id = bro.getAttribute("id");
284
            if (id == endTagId) {
285
              return;
286
            }
287
            bro = bro.nextSibling;
288
        }
289
    }
290

    
291
}
292

    
293
function delRow(evt) {
294
    evt = (evt) ? evt : ((window.event) ? window.event : null);
295
    if (evt) {
296
        // equalize W3C/IE models to get event target reference
297
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
298
        if (elem) {
299
            try {
300
                var table = elem.parentNode.parentNode.parentNode.parentNode;
301
                var row = elem.parentNode.parentNode.parentNode;
302

    
303
                table.removeChild(row);
304
            }
305
            catch(e) {
306
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
307
                alert("Error:\n" + msg);
308
                return;
309
            }
310
        }
311
    }
312
}
313

    
314
function moveUpRow(evt) {
315
    evt = (evt) ? evt : ((window.event) ? window.event : null);
316
    if (evt) {
317
        // equalize W3C/IE models to get event target reference
318
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
319
        if (elem) {
320
            try {
321
                var table = elem.parentNode.parentNode.parentNode.parentNode;
322
                var row = elem.parentNode.parentNode.parentNode;
323
                
324
                var bro = row.previousSibling;
325
                if (bro != null && bro.previousSibling.nodeName =="TR") {
326
                    clone = row.cloneNode(true);
327
                    table.insertBefore(clone, bro);
328
                    table.removeChild(row);
329
                }
330
            }
331
            catch(e) {
332
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
333
                alert("Error:\n" + msg);
334
                return;
335
            }
336
        }
337
    }
338
}
339

    
340
function moveDownRow(evt, lastTR) {
341
    evt = (evt) ? evt : ((window.event) ? window.event : null);
342
    if (evt) {
343
        // equalize W3C/IE models to get event target reference
344
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
345
        if (elem) {
346
            try {
347
                var table = elem.parentNode.parentNode.parentNode.parentNode;
348
                var row = elem.parentNode.parentNode.parentNode;
349
                
350
                var _test = row.nextSibling;
351
                if (_test.getAttribute("id") == lastTR) {
352
                    return;
353
                }
354
                var bro = row.nextSibling.nextSibling;
355
                if (bro != null && bro.nodeName =="TR") {
356
                    clone = row.cloneNode(true);
357
                    table.insertBefore(clone, bro);
358
                    table.removeChild(row);
359
                }
360
            }
361
            catch(e) {
362
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
363
                alert("Error:\n" + msg);
364
                return;
365
            }
366
        }
367
    }
368
}
369

    
370
function addAssociatedParty() {
371
    var AOLN   = document.getElementById("AONameLast");
372
    var AOFN   = document.getElementById("AONameFirst");
373
    var AORole = document.getElementById("AORole");
374

    
375
    if (AOLN.value != "") {
376
        var aoCount = incrementCount("aoCount");
377
        
378
        try {
379
            var aoRow = createAORow(aoCount, AOLN.value, AOFN.value, AORole.options[AORole.selectedIndex].text);
380
        } catch(e) {
381
            var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
382
            alert("Error:\n" + msg);
383
            return;
384
        }
385

    
386
        var aoRowMarker = document.getElementById("addaorow");
387
        var parent = aoRowMarker.parentNode;
388
        
389
        var aoHR = document.getElementById("aoHRRow");
390
        if (aoHR == null) {
391
            var aoHRRow = createHRRow();
392
            aoHRRow.setAttribute("id", "aoHRRow");
393
            parent.insertBefore(aoHRRow, aoRowMarker);
394
        }
395
        
396
        parent.insertBefore(aoRow, aoRowMarker);
397
    
398
        AOFN.value = "";
399
        AOLN.value = "";
400
        AORole.selectedIndex = 0;
401
    } else {
402
        alert("Enter the last name of the associated party");
403
    }
404
}
405

    
406
function createAORow(aoCount, AOLN, AOFN, AORole){    
407
    var TR = document.createElement("tr");
408
    TR.className='sectbody';
409
    var labelTD = createTD("5","left", "pointer");
410
    
411
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
412
        labelTD.attachEvent("onclick", new Function("aoEditRow(event, 0, \"" + AOFN  + "\",\""
413
                         + AOLN  + "\",\"" + AORole + "\")"));
414
    } else {
415
        labelTD.setAttribute("onClick","aoEditRow(event, 0, \"" + AOFN  + "\",\""
416
                         + AOLN  + "\",\"" + AORole + "\")");
417
    }
418

    
419
    var text   = AOFN + " " + AOLN + " (Role: " + AORole + ")";
420
    var label = document.createTextNode(text);
421

    
422
    labelTD.appendChild(label);
423
    labelTD.appendChild(createHiddenInput("aoFirstName", AOFN));
424
    labelTD.appendChild(createHiddenInput("aoLastName", AOLN));
425
    labelTD.appendChild(createHiddenInput("aoRole", AORole));
426
    
427
    var imgTD = createTD("","right");
428
    imgTD.className = 'rightCol';
429
        
430
    imgTD.appendChild(createIconLink("icon-arrow-up",
431
                                      "Move Up","moveUpRow(event)","pointer"));
432
    imgTD.appendChild(document.createTextNode(" "));
433
    imgTD.appendChild(createIconLink("icon-arrow-down",
434
                                      "Move Down", "moveDownRow(event, \"addaorow\")",
435
                                      "pointer"));
436
    imgTD.appendChild(document.createTextNode(" "));
437
    imgTD.appendChild(createIconLink("icon-remove-sign",
438
                                      "Delete", "delRow(event)",
439
                                      "pointer"));
440

    
441
    TR.appendChild(imgTD);
442
    TR.appendChild(labelTD);
443
    
444
    return TR;
445
}
446

    
447
function aoEditRow(evt, num,  AOFN ,  AOLN ,  AORole) {
448
    evt = (evt) ? evt : ((window.event) ? window.event : null);
449
    if (evt) {
450
        // equalize W3C/IE models to get event target reference
451
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
452
        if (elem && elem.nodeName == "TD") {
453
            try {
454
                var table = elem.parentNode;
455
                if (num == 0) {
456
                    table.removeChild(elem);
457
                    var TD = createTD("5","left", "pointer");
458
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
459
                        TD.attachEvent("onclick", new Function("aoEditRow(event, 1, \"" + AOFN  + "\",\""
460
                                                    + AOLN  + "\",\"" + AORole + "\")"));
461
                    } else {
462
                        TD.setAttribute("onClick","aoEditRow(event, 1, \"" + AOFN  + "\",\""
463
                                             + AOLN  + "\",\"" + AORole + "\")");
464
                    }                   
465
                    TD.appendChild(createTextField("aoFirstName", 15, AOFN));
466
                    TD.appendChild(document.createTextNode(" "));
467
                    TD.appendChild(createTextField("aoLastName", 15, AOLN));
468
                    TD.appendChild(document.createTextNode(" Role: "));
469
                    TD.appendChild(createAORoleTypeSelect("aoRole", AORole));
470
                    table.appendChild(TD);
471
                } else {
472
                    var child = elem.childNodes;
473
                    AOFN = child.item(0).value;
474
                    AOLN = child.item(2).value;
475
                    var _AORole = child.item(4);
476
                    AORole = _AORole.options[_AORole.selectedIndex].text;
477
                    table.removeChild(elem);
478

    
479
                    var TD = createTD("5","left", "pointer");
480
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
481
                        TD.attachEvent("onclick", new Function("aoEditRow(event, 0, \"" + AOFN  + "\",\""
482
                                                    + AOLN  + "\",\"" + AORole + "\")"));
483
                    } else {
484
                        TD.setAttribute("onClick","aoEditRow(event, 0, \"" + AOFN  + "\",\""
485
                                             + AOLN  + "\",\"" + AORole + "\")");
486
                    }
487
                    var text   = AOFN + " " + AOLN + " (Role: " + AORole + ")";
488
                    var label = document.createTextNode(text);
489
                    TD.appendChild(label);
490
                    TD.appendChild(createHiddenInput("aoFirstName", AOFN));
491
                    TD.appendChild(createHiddenInput("aoLastName", AOLN));
492
                    TD.appendChild(createHiddenInput("aoRole", AORole));
493
                    table.appendChild(TD);
494
                }
495
            } catch(e) {
496
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
497
                alert("Error:\n" + msg);
498
                return;
499
            }
500
        }
501
    }
502
}
503

    
504
function createAORoleTypeSelect(name, value) {
505
    var newField = document.createElement("select");
506
    newField.setAttribute("name", name);
507
    var option1 = document.createElement("option");
508
    var text1 = document.createTextNode("Co-owner");
509
    option1.appendChild(text1);
510
    newField.appendChild(option1);
511
    var option2 = document.createElement("option");
512
    var text2 = document.createTextNode("Custodian/Steward");
513
    option2.appendChild(text2);
514
    newField.appendChild(option2);
515
    var option3 = document.createElement("option");
516
    var text3 = document.createTextNode("Metadata Provider");
517
    option3.appendChild(text3);
518
    newField.appendChild(option3)
519
    var option4 = document.createElement("option");
520
    var text4 = document.createTextNode("User");
521
    option4.appendChild(text4);
522
    newField.appendChild(option4);
523
        
524
    if (value == "Co-owner") {
525
        newField.selectedIndex = 0;
526
    } else if (value == "Custodian/Steward") {
527
        newField.selectedIndex = 1;
528
    } else if (value == "Metadata Provider") {
529
        newField.selectedIndex = 2;
530
    } else if (value == "User") {
531
        newField.selectedIndex = 3;
532
    }
533

    
534
    return newField;
535
}
536

    
537
function addTaxon() {   
538
    var taxonRank   = document.getElementById("taxonRank");
539
    var taxonName   = document.getElementById("taxonName");
540

    
541
    if (taxonRank.value !="" && taxonName.value != "") {
542
        var taxonCount = incrementCount("taxaCount");
543
        var row = createTaxonRow(taxonCount, taxonRank.value, taxonName.value);
544
        var taxonRowMarker = document.getElementById("addtaxarow");
545
        var parent = taxonRowMarker.parentNode;
546
        
547
        var taxonHR = document.getElementById("taxonHRRow");
548
        if (taxonHR == null) {
549
            var taxonHRRow = createHRRow();
550
            taxonHRRow.setAttribute("id", "taxonHRRow");
551
            parent.insertBefore(taxonHRRow, taxonRowMarker);
552
        }
553
        
554
        parent.insertBefore(row, taxonRowMarker);
555

    
556
        taxonRank.value = "";
557
        taxonName.value = "";
558
    } else {
559
        alert("Enter complete taxonomic information");
560
    }
561
}
562

    
563
function createTaxonRow(taxonCount, taxonRank, taxonName){    
564
    var TR = document.createElement("tr");
565
    TR.className='sectbody';
566

    
567
    var labelTD = createTD("5","left", "pointer");
568
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
569
        labelTD.attachEvent("onclick",new Function("taxonEditRow(event, 0, \"" + taxonName
570
                         + "\",\"" + taxonRank  + "\")"));
571
    } else {
572
        labelTD.setAttribute("onClick","taxonEditRow(event, 0, \"" + taxonName
573
                         + "\",\"" + taxonRank  + "\")");
574
    }
575

    
576
    var text = "Rank: " + taxonRank + ", Name: " + taxonName;
577
    var label = document.createTextNode(text);
578

    
579
    labelTD.appendChild(label);
580
    labelTD.appendChild(createHiddenInput("taxonName", taxonName));
581
    labelTD.appendChild(createHiddenInput("taxonRank", taxonRank));
582
    
583
    var imgTD = createTD("","right");
584
    imgTD.className = 'rightCol';
585

    
586
    imgTD.appendChild(createIconLink("icon-arrow-up",
587
                                      "Move Up", "moveUpRow(event)",
588
                                      "pointer"));
589
    imgTD.appendChild(document.createTextNode(" "));
590
    imgTD.appendChild(createIconLink("icon-arrow-down",
591
                                      "Move Down", "moveDownRow(event, 'addtaxarow')",
592
                                      "pointer"));
593
    imgTD.appendChild(document.createTextNode(" "));
594
    imgTD.appendChild(createIconLink("icon-remove-sign",
595
                                      "Delete", "delRow(event)",
596
                                      "pointer"));
597

    
598
    TR.appendChild(imgTD);
599
    TR.appendChild(labelTD);
600
    
601
    return TR;
602
}
603

    
604
function taxonEditRow(evt, num,  taxonName ,  taxonRank) {
605
    evt = (evt) ? evt : ((window.event) ? window.event : null);
606
    if (evt) {
607
        // equalize W3C/IE models to get event target reference
608
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
609
        if (elem && elem.nodeName == "TD") {
610
            try {
611
                var table = elem.parentNode;
612
                if (num == 0) {
613
                    table.removeChild(elem);
614
                    var TD = createTD("5","left", "pointer");
615
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
616
                        TD.attachEvent("onclick",new Function("taxonEditRow(event, 1, \"" + taxonName
617
                                       + "\",\"" + taxonRank  + "\")"));
618
                    } else {
619
                        TD.setAttribute("onClick","taxonEditRow(event, 1, \"" + taxonName
620
                                        + "\",\"" + taxonRank  + "\")");
621
                    }
622
          
623
                    TD.appendChild(document.createTextNode("Rank: "));
624
                    TD.appendChild(createTextField("taxonName", 15, taxonName));
625
                    TD.appendChild(document.createTextNode(" Name: "));
626
                    TD.appendChild(createTextField("taxonRank", 15, taxonRank));
627
                    table.appendChild(TD);
628
                } else {
629
                    var child = elem.childNodes;
630
                    taxonName = child.item(1).value;
631
                    taxonRank = child.item(3).value;
632
                    table.removeChild(elem);
633

    
634
                    var TD = createTD("5","left", "pointer");
635
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
636
                        TD.attachEvent("onclick",new Function("taxonEditRow(event, 0, \"" + taxonName
637
                                       + "\",\"" + taxonRank  + "\")"));
638
                    } else {
639
                        TD.setAttribute("onClick","taxonEditRow(event, 0, \"" + taxonName
640
                                        + "\",\"" + taxonRank  + "\")");
641
                    }                        
642
                    var text = "Rank: " + taxonName + ", Name: " + taxonRank;
643
                    var label = document.createTextNode(text);
644
                    TD.appendChild(label);
645
                    TD.appendChild(createHiddenInput("taxonName", taxonName));
646
                    TD.appendChild(createHiddenInput("taxonRank", taxonRank));
647
                    table.appendChild(TD);
648
                }
649
            } catch(e) {
650
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
651
                alert("Error:\n" + msg);
652
                return;
653
            }
654
        }
655
    }
656
}
657

    
658

    
659
//BEGIN BRL ALTERNATE IDENTIFIER
660
function addIdentifier() {   
661
    var identifier   = document.getElementById("identifier");
662

    
663
    if (identifier.value !="") {
664
        var identifierCount = incrementCount("identifierCount");
665
        var row = createIdentifierRow(identifierCount, identifier.value);
666
        var identifierRowMarker = document.getElementById("addidentifierrow");
667
        var parent = identifierRowMarker.parentNode;
668
        
669
        var identifierHR = document.getElementById("identifierHRRow");
670
        if (identifierHR == null) {
671
            var identifierHRRow = createHRRow();
672
            identifierHRRow.setAttribute("id", "identifierHRRow");
673
            parent.insertBefore(identifierHRRow, identifierRowMarker);
674
        }
675
        
676
        parent.insertBefore(row, identifierRowMarker);
677

    
678
        identifier.value = "";
679
    } else {
680
        alert("Enter complete alternate identifier information");
681
    }
682
}
683

    
684
function createIdentifierRow(identifierCount, identifier){    
685
    var TR = document.createElement("tr");
686
    TR.className='sectbody';
687

    
688
    var labelTD = createTD("5","left", "pointer");
689
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
690
        labelTD.attachEvent("onclick",new Function("identifierEditRow(event, 0, \"" + identifier  + "\")"));
691
    } else {
692
        labelTD.setAttribute("onClick","identifierEditRow(event, 0, \"" + identifier  + "\")");
693
    }
694

    
695
    var text = "Identifier: " + identifier;
696
    var label = document.createTextNode(text);
697

    
698
    labelTD.appendChild(label);
699
    labelTD.appendChild(createHiddenInput("identifier", identifier));
700
    
701
    var imgTD = createTD("","right");
702
    imgTD.className = 'rightCol';
703

    
704
    imgTD.appendChild(createIconLink("icon-arrow-up",
705
                                      "Move Up", "moveUpRow(event)",
706
                                      "pointer"));
707
    imgTD.appendChild(document.createTextNode(" "));
708
    imgTD.appendChild(createIconLink("icon-arrow-down",
709
                                      "Move Down", "moveDownRow(event, 'addidentifierrow')",
710
                                      "pointer"));
711
    imgTD.appendChild(document.createTextNode(" "));
712
    imgTD.appendChild(createIconLink("icon-remove-sign",
713
                                      "Delete", "delRow(event)",
714
                                      "pointer"));
715

    
716
    TR.appendChild(imgTD);
717
    TR.appendChild(labelTD);
718
    
719
    return TR;
720
}
721

    
722
function identifierEditRow(evt, num, identifier) {
723
    evt = (evt) ? evt : ((window.event) ? window.event : null);
724
    if (evt) {
725
        // equalize W3C/IE models to get event target reference
726
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
727
        if (elem && elem.nodeName == "TD") {
728
            try {
729
                var table = elem.parentNode;
730
                if (num == 0) {
731
                    table.removeChild(elem);
732
                    var TD = createTD("5","left", "pointer");
733
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
734
                        TD.attachEvent("onclick",new Function("identifierEditRow(event, 1, \"" + identifier  + "\")"));
735
                    } else {
736
                        TD.setAttribute("onClick","taxonEditRow(event, 1, \"" + identifier  + "\")");
737
                    }
738
          
739
                    
740
                    TD.appendChild(document.createTextNode(" Identifier: "));
741
                    TD.appendChild(createTextField("identifier", 15, identifier));
742
                    table.appendChild(TD);
743
                } else {
744
                    var child = elem.childNodes;
745
                    taxonName = child.item(1).value;
746
                    table.removeChild(elem);
747

    
748
                    var TD = createTD("5","left", "pointer");
749
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
750
                        TD.attachEvent("onclick",new Function("identifierEditRow(event, 0, \"" + identifier  + "\")"));
751
                    } else {
752
                        TD.setAttribute("onClick","identifierEditRow(event, 0, \"" + identifier  + "\")");
753
                    }                        
754
                    var text = "Identifier: " + identifier;
755
                    var label = document.createTextNode(text);
756
                    TD.appendChild(label);
757
                    TD.appendChild(createHiddenInput("identifier", identifier));
758
                    table.appendChild(TD);
759
                }
760
            } catch(e) {
761
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
762
                alert("Error:\n" + msg);
763
                return;
764
            }
765
        }
766
    }
767
}
768
//END BRL ALTERNATE IDENTIFIER
769

    
770
function addKeyword() {
771
    var keyword   = document.getElementById("keyword");
772
    var keywordType   = document.getElementById("keywordType");
773
    var keywordTh = document.getElementById("keywordTh");
774

    
775
    if (keyword.value !="") {
776
        var keyCount = incrementCount("keyCount");
777
        var keyRow = createKeywordRow(keyCount, keyword.value, 
778
                                      keywordType.options[keywordType.selectedIndex].text, 
779
                                      keywordTh.options[keywordTh.selectedIndex].text);
780
        var keyRowMarker = document.getElementById("addkeyrow");
781
        var parent = keyRowMarker.parentNode;
782
        
783
        var keyHR = document.getElementById("keywordHRRow");
784
        if (keyHR == null) {
785
            var keyHRRow = createHRRow();
786
            keyHRRow.setAttribute("id", "keywordHRRow");
787
            parent.insertBefore(keyHRRow, keyRowMarker);
788
        }
789
        
790
        parent.insertBefore(keyRow, keyRowMarker);
791
    
792
        keyword.value = "";
793
        keywordType.selectedIndex = 0;
794
        keywordTh.selectedIndex = 0;
795
    } else {
796
        alert("Enter keyword");
797
    }
798
}
799

    
800
function createKeywordRow(keyCount, keyword, keywordType, keywordTh){    
801
    var TR = document.createElement("tr");
802
    TR.className='sectbody';
803

    
804
    var labelTD = createTD("5","left", "pointer");
805
    
806
    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
807
        labelTD.attachEvent("onclick", new Function("keywordEditRow(event, 0, \"" + keyword
808
            + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")"));
809
    } else {
810
        labelTD.setAttribute("onClick","keywordEditRow(event, 0, \"" + keyword
811
            + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")");
812
    }
813
              
814
    var text   = keyword + " (Type: " + keywordType + ", Thesaurus: " + keywordTh + ")";
815
    var label = document.createTextNode(text);
816

    
817
    labelTD.appendChild(label);
818
    labelTD.appendChild(createHiddenInput("keyword", keyword));
819
    labelTD.appendChild(createHiddenInput("keywordType", keywordType));
820
    labelTD.appendChild(createHiddenInput("keywordTh", keywordTh));
821
    
822
    var imgTD = createTD("","right");
823
    imgTD.className = 'rightCol';
824

    
825
    imgTD.appendChild(createIconLink("icon-arrow-up",
826
                                      "Move Up", "moveUpRow(event)",
827
                                      "pointer"));
828
    imgTD.appendChild(document.createTextNode(" "));
829
    imgTD.appendChild(createIconLink("icon-arrow-down",
830
                                      "Move Down", "moveDownRow(event, 'addkeyrow')",
831
                                      "pointer"));
832
    imgTD.appendChild(document.createTextNode(" "));
833
    imgTD.appendChild(createIconLink("icon-remove-sign",
834
                                      "Delete", "delRow(event)",
835
                                      "pointer"));
836

    
837
    TR.appendChild(imgTD);
838
    TR.appendChild(labelTD);
839
    
840
    return TR;
841
}
842

    
843
function keywordEditRow(evt, num,  keyword,  keywordType, keywordTh) {
844
    evt = (evt) ? evt : ((window.event) ? window.event : null);
845
    if (evt) {
846
        // equalize W3C/IE models to get event target reference
847
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
848
        if (elem && elem.nodeName == "TD") {
849
            try {
850
                var table = elem.parentNode;
851
                if (num == 0) {
852
                    table.removeChild(elem);
853
                    var TD = createTD("5","left", "pointer");
854
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
855
                        TD.attachEvent("onclick", new Function("keywordEditRow(event, 1, \"" + keyword
856
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")"));
857
                    } else {
858
                        TD.setAttribute("onClick","keywordEditRow(event, 1, \"" + keyword
859
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")");
860
                    }
861
                
862
                    TD.appendChild(createTextField("keyword", 15, keyword));
863
                    TD.appendChild(document.createTextNode(" Type: "));
864
                    TD.appendChild(createKeyTypeSelect("keywordType", keywordType));
865
                    TD.appendChild(document.createTextNode(" Thesaurus: "));
866
                    TD.appendChild(createKeyThSelect("keywordTh", keywordTh));
867
                    table.appendChild(TD);
868
                } else {
869
                    var child = elem.childNodes;
870
                    keyword = child.item(0).value;
871
                    var _keywordType = child.item(2);
872
                    keywordType = _keywordType.options[_keywordType.selectedIndex].text;
873
                    var _keywordTh = child.item(4);
874
                    keywordTh = _keywordTh.options[_keywordTh.selectedIndex].text;
875
                    table.removeChild(elem);
876

    
877
                    var TD = createTD("5","left", "pointer");
878
                    if (navigator.userAgent.toLowerCase().indexOf('msie')!= -1 && document.all) {
879
                        TD.attachEvent("onclick", new Function("keywordEditRow(event, 0, \"" + keyword
880
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")"));
881
                    } else {
882
                        TD.setAttribute("onClick","keywordEditRow(event, 0, \"" + keyword
883
                        + "\",\"" + keywordType + "\",\"" + keywordTh  + "\")");
884
                    }
885
                
886
                    var text   = keyword + " (Type: " + keywordType + ", Thesaurus: " + keywordTh + ")";
887
                    var label = document.createTextNode(text);
888
                    TD.appendChild(label);
889
                    TD.appendChild(createHiddenInput("keyword", keyword));
890
                    TD.appendChild(createHiddenInput("keywordType", keywordType));
891
                    TD.appendChild(createHiddenInput("keywordTh", keywordTh));
892
                    table.appendChild(TD);
893
                }
894
            } catch(e) {
895
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
896
                alert("Error:\n" + msg);
897
                return;
898
            }
899
        }
900
    }
901
}
902

    
903
function createKeywordThesaurusRow(name) {        
904
    var keyRowTemplate = document.getElementById("keyThRow");
905
    var newField =  keyRowTemplate.cloneNode(true);
906
    var nodes = newField.getElementsByTagName("input");
907
    nodes.item(0).setAttribute("name", name);
908
    nodes.item(1).setAttribute("name", name);
909
    return newField;
910
}
911

    
912
function createKeyThSelect(name, value) {
913
    var newField = document.createElement("select");
914
    newField.setAttribute("name", name);
915
    var option1 = document.createElement("option");
916
    var text1 = document.createTextNode("None");
917
    option1.appendChild(text1);
918
    newField.appendChild(option1);
919
    var option2 = document.createElement("option");
920
    var text2 = document.createTextNode("GCMD");
921
    option2.appendChild(text2);
922
    newField.appendChild(option2);
923

    
924
    if (value == "None") {
925
        newField.selectedIndex = 0;
926
    } else if (value == "GCMD") {
927
        newField.selectedIndex = 1;
928
    }
929
    return newField;
930
}
931

    
932
function createKeyTypeSelect(name, value) {
933
    var newField = document.createElement("select");
934
    newField.setAttribute("name", name);
935
    var option1 = document.createElement("option");
936
    var text1 = document.createTextNode("None");
937
    option1.appendChild(text1);
938
    newField.appendChild(option1);
939
    var option2 = document.createElement("option");
940
    var text2 = document.createTextNode("Theme");
941
    option2.appendChild(text2);
942
    newField.appendChild(option2);
943
    var option3 = document.createElement("option");
944
    var text3 = document.createTextNode("Place");
945
    option3.appendChild(text3);
946
    newField.appendChild(option3)
947
    var option4 = document.createElement("option");
948
    var text4 = document.createTextNode("Stratum");
949
    option4.appendChild(text4);
950
    newField.appendChild(option4);
951
    var option5 = document.createElement("option");
952
    var text5 = document.createTextNode("Temporal");
953
    option5.appendChild(text5);
954
    newField.appendChild(option5);
955
    var option6 = document.createElement("option");
956
    var text6 = document.createTextNode("Taxonomic");
957
    option6.appendChild(text6);
958
    newField.appendChild(option6);        
959
    if (value == "None") {
960
        newField.selectedIndex = 0;
961
    } else if (value == "Theme") {
962
        newField.selectedIndex = 1;
963
    } else if (value == "Place") {
964
        newField.selectedIndex = 2;
965
    } else if (value == "Stratum") {
966
        newField.selectedIndex = 3;
967
    }else if (value == "Temporal") {
968
        newField.selectedIndex = 4;
969
    } else if (value == "Taxonomic") {
970
        newField.selectedIndex = 5;
971
    }
972
    return newField;
973
}
974

    
975
var basicInfoBit = 1;
976
var submitterBit = 1;
977
var dsoBit = 1;
978
var apBit = 1;
979
var abstractBit = 1;
980
var keywordBit = 1;
981
var temporalBit = 1;
982
var spatialBit = 1;
983
var taxonomicBit = 1;
984
var methodBit = 1;
985
var dscBit = 1;
986
var distBit = 1;
987
var uploadBit = 1;
988

    
989
function swap(evt, _node, nodeBit) {
990
    evt = (evt) ? evt : ((window.event) ? window.event : null);
991
    if (evt) {
992
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
993
        
994
        // hack so that this works on safari...
995
        if (elem.nodeName != 'A') {
996
            elem = elem.parentNode;
997
        }
998
        elem.removeChild(elem.firstChild);
999
        var node = document.getElementById(_node);
1000
        if (nodeBit) {
1001
            elem.appendChild(document.createTextNode("Show"));
1002
            node.className="hide";
1003
            return 0;
1004
        } else {
1005
            elem.appendChild(document.createTextNode("Hide"));
1006
            node.className="tables";
1007
            return 1;
1008
        }
1009
    }        
1010
}
1011

    
1012
function handleOther(enable, node) {
1013
    var textBox = document.getElementById(node);
1014
    if (enable) {
1015
        textBox.removeAttribute("disabled");   
1016
    } else {
1017
        textBox.value="";
1018
        textBox.disabled = "true";   
1019
    }
1020
}
1021

    
1022
function copyContact() {
1023
    var checkBox = document.getElementById("copyCheckBox");
1024
    if (checkBox.checked == true)
1025
    {
1026
        var cnf = document.getElementById("contactNameFirst");
1027
        var onf = document.getElementById("origNameFirst");
1028
        cnf.value = onf.value;
1029
        cnf.disabled = "true";
1030

    
1031
        var cnl = document.getElementById("contactNameLast");
1032
        var onl = document.getElementById("origNameLast");
1033
        cnl.value = onl.value;
1034
        cnl.disabled = "true";
1035

    
1036
        var cno = document.getElementById("contactNameOrg");
1037
        var ono = document.getElementById("origNameOrg");
1038
        cno.value = ono.value;
1039
        cno.disabled = "true";
1040

    
1041
        var ce = document.getElementById("contactEmail");
1042
        var oe = document.getElementById("origEmail");
1043
        ce.value = oe.value;
1044
        ce.disabled = "true";
1045

    
1046
        var cp = document.getElementById("contactPhone");
1047
        var op = document.getElementById("origPhone");
1048
        cp.value = op.value;
1049
        cp.disabled = "true";
1050

    
1051
        var cf = document.getElementById("contactFAX");
1052
        var of = document.getElementById("origFAX");
1053
        cf.value = of.value;
1054
        cf.disabled = "true";
1055

    
1056
        var cd = document.getElementById("contactDelivery");
1057
        var od = document.getElementById("origDelivery");
1058
        cd.value = od.value;
1059
        cd.disabled = "true";
1060

    
1061
        var cc = document.getElementById("contactCity");
1062
        var oc = document.getElementById("origCity");
1063
        cc.value = oc.value;
1064
        cc.disabled = "true";
1065

    
1066
        var cs = document.getElementById("contactState");
1067
        var os = document.getElementById("origState");
1068
        cs.options[os.selectedIndex].selected = true;
1069
        cs.disabled = "true";           
1070

    
1071
        var cso = document.getElementById("contactStateOther");
1072
        var oso = document.getElementById("origStateOther");
1073
        cso.value = oso.value;
1074
        cso.disabled = "true";
1075

    
1076
        var cz = document.getElementById("contactZip");
1077
        var oz = document.getElementById("origZip");
1078
        cz.value = oz.value;
1079
        cz.disabled = "true";
1080

    
1081
        var cC = document.getElementById("contactCountry");
1082
        var oC = document.getElementById("origCountry");
1083
        cC.value = oC.value;
1084
        cC.disabled = "true";
1085
    } else {
1086
        var cnf = document.getElementById("contactNameFirst");
1087
        cnf.value = "";
1088
        cnf.removeAttribute("disabled");
1089

    
1090
        var cnl = document.getElementById("contactNameLast");
1091
        cnl.value = "";
1092
        cnl.removeAttribute("disabled");
1093

    
1094
        var cno = document.getElementById("contactNameOrg");
1095
        cno.value = "";
1096
        cno.removeAttribute("disabled");
1097

    
1098
        var ce = document.getElementById("contactEmail");
1099
        ce.value = "";
1100
        ce.removeAttribute("disabled");
1101

    
1102
        var cp = document.getElementById("contactPhone");
1103
        cp.value = "";
1104
        cp.removeAttribute("disabled");
1105

    
1106
        var cf = document.getElementById("contactFAX");
1107
        cf.value = "";
1108
        cf.removeAttribute("disabled");
1109

    
1110
        var cd = document.getElementById("contactDelivery");
1111
        cd.value = "";
1112
        cd.removeAttribute("disabled");
1113

    
1114
        var cc = document.getElementById("contactCity");
1115
        cc.value = "";
1116
        cc.removeAttribute("disabled");
1117

    
1118
        var cs = document.getElementById("contactState");
1119
              cs.options[0].selected = true;
1120
        cs.removeAttribute("disabled");
1121

    
1122
        var cso = document.getElementById("contactStateOther");
1123
        cso.value = "";
1124
        cso.removeAttribute("disabled");
1125

    
1126
        var cz = document.getElementById("contactZip");
1127
        cz.value = "";
1128
        cz.removeAttribute("disabled");
1129

    
1130
        var cC = document.getElementById("contactCountry");
1131
        cC.value = "";
1132
        cC.removeAttribute("disabled");
1133
    }
1134
}
1135

    
1136
// include source for Multiple file uploader:
1137
// http://the-stickman.com/web-development/javascript/
1138

    
1139
function MultiSelector(list_target, max) {
1140

    
1141
    this.list_target = list_target;
1142
    this.count = 0;
1143
    this.id = 0;
1144
    var ucount =  document.getElementById("upCount");
1145
    var fcount =  document.getElementById("fileCount");
1146
    if (fcount.value > 0) {
1147
        this.id = fcount.value;
1148
    } else {
1149
        // upCount contains pre-existing uploads, check this for editing existing packages
1150
        if (ucount != null && ucount.value > 0) {
1151
            this.id = ucount.value;
1152
        }
1153
    }
1154

    
1155
    if (max) {
1156
        this.max = max;
1157
    } else {
1158
      this.max = -1;
1159
    };
1160

    
1161
    /**
1162
     * Add a new file input element
1163
     */
1164
    this.addElement = function( element ) {
1165

    
1166
        // Make sure it's a file input element
1167
        if (element.tagName == 'INPUT' && element.type == 'file' ) {
1168
            // Element name -- what number am I?
1169
            element.name = 'file_' + this.id++;
1170

    
1171
            // Add reference to this object
1172
            element.multi_selector = this;
1173

    
1174
            // What to do when a file is selected
1175
            element.onchange = function() {
1176
                // Increment file counter
1177
                var fileCount = incrementCount("fileCount");
1178
                // If pre-existing uploads exist, make sure the fileCount is synced
1179
                if (ucount != null && ucount.value > 0) {
1180
                    fileCount += ucount.value;
1181
                    setCount("fileCount", fileCount);
1182
                }
1183

    
1184
                // Clean up file text
1185
                var comment_element = document.getElementById( 'file_comment' );
1186
                if (comment_element) {
1187
                    comment_element.parentNode.removeChild(comment_element);
1188
                }
1189

    
1190
                // New file input
1191
                var new_element = document.createElement( 'input' );
1192
                new_element.type = 'file';
1193

    
1194
                // Add new element
1195
                this.parentNode.insertBefore( new_element, this );
1196

    
1197
                // Apply 'update' to element
1198
                this.multi_selector.addElement( new_element );
1199

    
1200
                // Update list
1201
                this.multi_selector.addListRow( this );
1202

    
1203
                // Hide this: we can't use display:none because Safari doesn't like it
1204
                this.style.position = 'absolute';
1205
                this.style.left = '-1000px';
1206
            };
1207

    
1208
            // If we've reached maximum number, disable input element
1209
            if (this.max != -1 && this.count >= this.max ) {
1210
                element.disabled = true;
1211
            };
1212
            
1213
            // File element counter
1214
            this.count++;
1215

    
1216
            // Most recent element
1217
            this.current_element = element;
1218

    
1219
        } else {
1220
            // This can only be applied to file input elements!
1221
            alert( 'Error: not a file input element' );
1222
        };
1223
    };
1224

    
1225
    /**
1226
     * Add a new row to the list of files
1227
     */
1228
    this.addListRow = function( element ) {
1229
        // Row div
1230
        var new_row = document.createElement( 'div' );
1231

    
1232
        // Delete button
1233
        var new_row_button = document.createElement( 'input' );
1234
        new_row_button.type = 'button';
1235
        new_row_button.setAttribute("class", "btn"); 
1236
        new_row_button.value = 'Delete';
1237

    
1238
        // Permissions check boxes
1239
        var radio_value_a = 'public';
1240
        var radio_value_b = 'private';
1241
        var new_radio_a = document.createElement('input');
1242
        var new_radio_b = document.createElement('input');
1243
        new_radio_a.type = new_radio_b.type = 'radio';
1244
        // get the file upload name, use the number to keep track of the file we're setting permissions on
1245
        new_radio_a.name = new_radio_b.name = 'uploadperm_' + element.name.split("_")[1];
1246
        new_radio_a.value = radio_value_a;
1247
        new_radio_b.value = radio_value_b;
1248
        new_radio_a.checked = false;
1249
        new_radio_b.checked = true; // when adding new files, default is private
1250
         
1251
        // References
1252
        new_row.element = element;
1253

    
1254
        // Delete function
1255
        new_row_button.onclick= function() {
1256
            // Remove element from form
1257
            this.parentNode.element.parentNode.removeChild( this.parentNode.element );
1258

    
1259
            // Remove this row from the list
1260
            this.parentNode.parentNode.removeChild( this.parentNode );
1261
            // Decrement counter
1262
            this.parentNode.element.multi_selector.count--;
1263

    
1264
            // Re-enable input element (if it's disabled)
1265
            this.parentNode.element.multi_selector.current_element.disabled = false;
1266

    
1267
            // Appease Safari
1268
            //    without it Safari wants to reload the browser window
1269
            //    which nixes your already queued uploads
1270
            return false;
1271
        };
1272
       
1273
        // filename may include path, show only file name itself
1274
        var name_pattern = element.value.replace(/.*[\/\\](.*)/, "$1");
1275

    
1276
        // Set row value
1277
        new_row.appendChild( document.createTextNode(name_pattern + " ") );
1278
        
1279
        // Add in radio buttons and their text
1280
        new_row.appendChild( new_radio_a );
1281
        new_row.appendChild( document.createTextNode(capitalize(radio_value_a) + " ") );
1282
        new_row.appendChild( new_radio_b );
1283
        new_row.appendChild( document.createTextNode(capitalize(radio_value_b) + " ") );
1284

    
1285
        // Add button
1286
        new_row.appendChild( new_row_button );
1287

    
1288
        // Add it to the list
1289
        this.list_target.appendChild( new_row );
1290
    };
1291

    
1292
};
1293

    
1294
// Append files to be deleted to an HTML array
1295
function deleteFile(evt, file) {
1296
    evt = (evt) ? evt : ((window.event) ? window.event : null);
1297
    if (evt) {
1298
        // equalize W3C/IE models to get event target reference
1299
        var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
1300
        var element = document.getElementById("file_element");
1301
        if (elem) {
1302
            try {
1303
                // Add a new hidden form element to delete exisiting files
1304
                var delete_existing = document.createElement( 'input' );
1305
                delete_existing.type = "hidden";
1306
                delete_existing.name = "deletefile"; // HTML array
1307
                delete_existing.value = file.name;
1308
                element.parentNode.appendChild( delete_existing );
1309

    
1310
                // Remove this row from the list
1311
                elem.parentNode.parentNode.removeChild( elem.parentNode );
1312
            } catch(e) {
1313
                var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error");
1314
                alert("Error:\n" + msg);
1315
                return;
1316
            }
1317
        }
1318
    }
1319
}
1320

    
1321
function capitalize(word) {
1322
    return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
1323
}
(3-3/7)