function checkURLFormat(field) {

	if ( field == null || typeof( field.value ) == "undefined" || field.value.length == 0 ) return;

	var urlfield_val = field.value;

	field.value = urlfield_val.replace( /http:\/\/http:\/\//, "http://" );
}

function showDB() {
	var dblist = document.getElementById("dblistdiv");
	dblist.style.display="block";
}

function replaceDB(fieldid) {

	var copyfromfield = document.getElementById("dbsel_" + fieldid);
	var val = copyfromfield.options[copyfromfield.selectedIndex].value;	

	var copytofield = document.getElementById("thisid_" + fieldid);
	copytofield.value = val;
}

function checkDB(field, name) {

	if ( field == null || typeof( field.value ) == "undefined") return;

	var dbfield = field.value;
	var dbfield_val = dbfield.toLowerCase();
	var dbtxt = document.getElementById("thisid_" + name + "_error");
	var dbtr = document.getElementById("thisid_" + name + "_block");

	if (dbfield_val == "ebsco" || dbfield_val == "proquest" || dbfield_val == "gale" || dbfield_val == "thomson gale" ||
	    dbfield_val == "gale group" || dbfield_val == "abc-clio" || dbfield_val == "ad fontes" || dbfield_val == "alexander street press" ||
	    dbfield_val == "bridges transitions" || dbfield_val == "columbia" || dbfield_val == "columbia up" || dbfield_val == "columbia university press" ||
	    dbfield_val == "countrywatch" || dbfield_val == "cq press" || dbfield_val == "cq" || dbfield_val == "facts on file" ||
	    dbfield_val == "facts on file news services" || dbfield_val == "greenwood" || dbfield_val == "highbeam" || dbfield_val == "highbeam research" ||
	    dbfield_val == "h.w. wilson" || dbfield_val == "hw wilson" || dbfield_val == "wilson" || dbfield_val == "johns hopkins" ||
	    dbfield_val == "johns hopkins up" || dbfield_val == "johns hopkins university press" || dbfield_val == "lexisnexis" || dbfield_val == "lexis nexis" ||
	    dbfield_val == "mcgraw-hill" || dbfield_val == "mcgraw hill" || dbfield_val == "newsbank" || dbfield_val == "oclc" ||
	    dbfield_val == "oxford up" || dbfield_val == "oxford university press" || dbfield_val == "oxford" || dbfield_val == "proquest information and learning" ||
	    dbfield_val == "scholastic" || dbfield_val == "scholastic lib." || dbfield_val == "scholastic library" || dbfield_val == "world book" ||
	    dbfield_val == "accuweather" || dbfield_val == "congressional digest" || dbfield_val == "anaca" || dbfield_val == "anaca technologies" ||
	    dbfield_val == "questia media america" || dbfield_val == "discovery" || dbfield_val == "discovery education" ||
	    dbfield_val == "rosen" || dbfield_val == "mary ann liebert" ||
	    dbfield_val == "marshall cavendish" || dbfield_val == "marshall cavendish digital" || dbfield_val == "ap" ||
	    dbfield_val == "cobblestone" || dbfield_val == "weekly reader" || dbfield_val == "journey online")
	{
		dbtxt.innerHTML = dbfield + " is the name of a vendor. Identify the specific database you are using.";
		dbtr.style.display="block";
	} else if (dbfield_val == "ebscohost" || dbfield_val == "searchasaurus" || dbfield_val == "student research center" ||
		   dbfield_val == "firstsearch" || dbfield_val == "wilsonweb" || dbfield_val == "wilson web" || dbfield_val == "first search") {
		dbtxt.innerHTML = dbfield + " is the name of a <a href=\"http://www.noodletools.com/helpdesk/index.php?action=kb&article=44\" target=\"_blank\">search interface</a>. Instead, identify the specific database you are using.";
		dbtr.style.display="block";
	} else if (dbfield_val == "history database center" || dbfield_val == "facts.com reference suite" || dbfield_val == "cq electronic library") {
		dbtxt.innerHTML = dbfield + " is the name of a <a href=\"http://www.noodletools.com/helpdesk/index.php?action=kb&article=44\" target=\"_blank\">portal or collection of databases</a>. Instead, identify the specific database you are using.";
		dbtr.style.display="block";
	} else {
		dbtxt.innerHTML = "";
		dbtr.style.display="none";
	}
}

function highlightrow(id, turnon) {
	var hlrow = document.getElementById(id);

	if (turnon) {
		hlrow.style.backgroundColor = "#fff9e5";
	} else {
		hlrow.style.backgroundColor = "transparent";
	}
}

function highlightrows(ids, turnon) {

	var hlrow;

	for(var i=0;i < ids.length;i++) {
		hlrow = document.getElementById(ids[i]);
		if (hlrow) {
			if (turnon) {
				hlrow.style.backgroundColor = "#fff9e5";
			} else {
				hlrow.style.backgroundColor = "transparent";
			}
		}
	}
}

function testIsValidObject(objToTest) {
	if (null == objToTest) {
		return false;
	}
	if ("undefined" == typeof(objToTest) ) {
		return false;
	}
	return true;
}

function checkemail(field)
{
    var s_email = field.value;

    if (s_email.length==0)
    {
        return true;
    }

    if ((s_email.length < 6) ||
       (s_email.indexOf('@',0) < 1) ||
       (s_email.lastIndexOf('@') != s_email.indexOf('@',0)) ||
       (s_email.lastIndexOf('@') > (s_email.length - 5)) ||
       (s_email.lastIndexOf('.') > (s_email.length - 3)) ||
       (s_email.lastIndexOf('.') < (s_email.length - 4)) ||
       (s_email.indexOf('..',0) > -1) ||
       (s_email.indexOf('@.',0) > -1) ||
       (s_email.indexOf('.@',0) > -1) ||
       (s_email.indexOf(',',0) > -1))
    {
        alert("Please enter a valid e-mail address (format: name@domain.com).");
	  field.focus();
        return false;
    }
    return true;
}

function checkphone4(field)
{
    var s_phone4 = field.value;

    if (s_phone4.length==0)
    {
        return true;
    }

    var regexp = /^(\d{4})$/;
    if (!regexp.test(s_phone4))
    {
        alert("Please enter the last four digits of your phone number (format: ####).");
	field.focus();
        return false;
    }
    return true;
}

function openPopupHelpPage(page) {
	window.open("/noodlebib/popupHelp.php?page=" + page, "popupHelp", "height=400,width=500,menubar=no,titlebar=no,toolbar=yes,location=no,scrollbars=yes,resizable=yes");
}

function openPopupEntryHelpPage(page) {
	window.open("/noodlebib/popupEntryHelp.php?page=" + page, "popupEntryHelp", "height=500,width=600,menubar=no,titlebar=no,toolbar=yes,location=no,scrollbars=yes,resizable=yes");
}

function popupWin(page) {
	window.open(page, "popupWin", "height=475,width=440,menubar=no,titlebar=no,toolbar=yes,location=no,scrollbars=yes,resizable=yes");
}

function popupSizedWin(page, height, width) {
	window.open(page, "popupWin", "height=" + height + ",width=" + width + ",menubar=no,titlebar=no,toolbar=yes,location=no,scrollbars=yes,resizable=yes");
}

function doOnLoad() {
	window.location.replace("/noodlebib/mybib.php");
}

function loadPage(page) {
	window.location.replace(page);
}

function selectBibHeader(form) {
	var bibHeader = form.bibHeaderSelect.options[form.bibHeaderSelect.selectedIndex].value;
	window.location.replace("/noodlebib/mybib.php?setheader=" + bibHeader);
}

function ltrim ( s ) {
	return s.replace( /^\s*/, "" )
}

function rtrim ( s ) {
	return s.replace( /\s*$/, "" );
}

function trim ( s ) {
	return rtrim(ltrim(s));
}

function sortBy(form) {
	var sortby = form.sortby.options[form.sortby.selectedIndex].value;

	if (sortby == "pst") {
		form.tgid.value = 2;
	} else if (sortby == "date") {
		form.tgid.value = "";
		form.tagaction.value = "sortbydate";
	} else if (sortby == "media") {
		form.tgid.value = "";
		form.tagaction.value = "sortbymedia";
	} else { // alpha
		form.tgid.value = "";
		form.tagaction.value = "default";
	}

	form.action = "mybib.php";
	form.submit();
	return true;
}

function sortByCol(col) {

	if (col == "description") { // primary, secondary, tertiary
		document.bibForm.tgid.value = 2;
	} else if (col == "media") { // specific media type
		document.bibForm.tgid.value = "";
		document.bibForm.tagaction.value = "sortbymedia";
	} else { // alpha
		document.bibForm.tgid.value = "";
		document.bibForm.tagaction.value = "default";
	}

	document.bibForm.action = "mybib.php";
	document.bibForm.submit();
	return true;
}

function doUpdateViewableName() {

	var myviewablename = document.shareForm.myviewablename.value;

	if (myviewablename == "") { 
		alert("Please enter your viewable name (the name by which your students refer to you)."); 
		document.shareForm.myviewablename.focus();
		return false; 
	}

	document.shareForm.updatenameonly.value = "1";
	document.shareForm.ACTION.value = "";
	document.shareForm.submit();
	return true;
}

function handleShareSubmit() {

	var nickname = document.shareForm.nickname.value;

	if (nickname == "") { 
		alert("Please enter an assignment drop box name."); 
		document.shareForm.nickname.focus();
		return false; 
	}
        var reg = /^([A-Za-z0-9_\-\.])/;
        var address = document.shareForm.googleID.value;
        if(Trim(address)!=""){
            if(reg.test(address) == false) {
                alert('Please enter valid Google Account ID');
                return false;
            }
        }

	document.shareForm.submit();
	return true;
}

// begin editing of google id on sharing setup page
function editGoogleID(){
    var confirmation= confirm("Changing your Google Account ID may affect other shared projects. Do you wish to continue?");
    if(confirmation){
        document.getElementById('googleAccountTextbox').style.display='';
        document.getElementById('googleAccountTextContainer').style.display='none';
    }
}

// cancel editing of google id on sharing setup page
function cancelEditGoogleID(){
	document.getElementById('googleAccountTextContainer').style.display='';
	document.getElementById('googleAccountTextbox').style.display='none';
}

function handleDoRenameSubmit() {

	var listdesc = document.dorenameForm.listdesc.value;

	if (listdesc == "") { 
		alert("Please enter a new description for this project.");
		document.dorenameForm.listdesc.focus();
		return false; 
	}

	document.dorenameForm.submit();
	return true;
}

function handleDoUndeleteSubmit() {

	document.doundeleteForm.submit();
	return true;
}

function handleDoRenameTagSubmit() {

	var newname = document.dorenameForm.newname.value;

	if (newname == "") { 
		alert("Please enter a new name for this tag."); 
		document.dorenameForm.newname.focus();
		return false; 
	}

	document.dorenameForm.submit();
	return true;
}

function handleDoShareSubmit() {

	var nickname = document.doshareForm.nickname.value;
	var myviewablename = document.doshareForm.myviewablename.value;
        
       
	if (myviewablename == "") { 
		alert("Please enter your name so that your teacher can identify you (they may not know your Personal ID)."); 
		document.doshareForm.myviewablename.focus();
		return false; 
	}

	if (nickname == "") { 
		alert("Please enter the name of the assignment drop box you wish to share the selected projects with, then click Share Projects.");
		document.doshareForm.nickname.focus();
		return false; 
	}
        

	document.doshareForm.submit();
	return true;
}

function handleDoMergeSubmit() {
	var desc = document.domergeForm.listdesc.value;
	if (desc == "") { 
		alert("Please enter a description for the merged project. You will use this description to identify the project in your personal folder, so try to make it brief but accurate.");
		document.domergeForm.listdesc.focus();
		return false; 
	}

	document.domergeForm.submit();
	return true;
}

function handleDoCopySubmit() {
	
	var copytoother = document.docopyForm.copyto[1].checked;
	var copytoname = document.docopyForm.copytoname.value;

	if (copytoother && copytoname == "") { 
		alert("Please indicate the user to whom you wish to transfer this project (enter the personal ID).");
		document.docopyForm.copytoname.focus();
		return false; 
	}

	document.docopyForm.submit();
	return true;
}

function handleDoCopySubmit2() {
	var form = document.docopyForm;
	var overrideval = form.elements['override_copytouid'].options[form.elements['override_copytouid'].selectedIndex].value;

	if (overrideval == "") { 
		alert("Please select the subscription or account type that this user is associated with from the dropdown list."); 
		form.override_copytouid.focus();
		return false; 
	}
	document.docopyForm.submit();
	return true;
}

function handleNewbibSubmit() {
	var desc = document.newbibForm.listdesc.value;
	var styles = document.newbibForm.liststyle;

	if (styles.type != "hidden") {
		if (!styles[0].checked && !styles[1].checked && !styles[2].checked && !styles[3].checked) {
			alert("Please select a project style (MLA Starter, MLA Advanced, APA Advanced, or Chicago/Turabian Advanced).");
			return false; 
		}
	}

	if (desc == "") { 
		alert("Please enter a description for this project. You will use this description to identify the project in your personal folder, so try to make it brief but accurate.");
		document.newbibForm.listdesc.focus();
		return false; 
	}

	document.newbibForm.submit();
	return true;
}

function handleConvertSubmit() {

	var convertoption = document.convertbibForm.convertoption;

	if (convertoption.type != "hidden") {
		if (!convertoption[0].checked && !convertoption[1].checked) {
			alert("Please select an option to continue."); 
			return false; 
		} else if (convertoption[1].checked) {
			if (!confirm("This will permanently convert your project to the new MLA 7th edition formatting requirements. Are you sure you want to continue?")) {
				return;
			}

			document.convertbibForm.ACTION.value = "convert";
			document.convertbibForm.action = "/noodlebib/mybib.php";
		} else if (convertoption[0].checked) {
			document.convertbibForm.ACTION.value = "exportRTF";
			document.convertbibForm.action = "/noodlebib/mla6to7.php";
		}
	}

	document.convertbibForm.submit();
	return true;
}

function handleConvertAPA5to6Submit() {

	var convertoption = document.convertbibForm.convertoption;

	if (convertoption.type != "hidden") {
		if (!convertoption[0].checked && !convertoption[1].checked) {
			alert("Please select an option to continue."); 
			return false; 
		} else if (convertoption[1].checked) {
			if (!confirm("This will permanently convert your project to the new APA 6th edition formatting requirements. Are you sure you want to continue?")) {
				return;
			}

			document.convertbibForm.ACTION.value = "convertapa";
			document.convertbibForm.action = "/noodlebib/mybib.php";
		} else if (convertoption[0].checked) {
			document.convertbibForm.ACTION.value = "exportRTF";
			document.convertbibForm.action = "/noodlebib/apa5to6.php";
		}
	}

	document.convertbibForm.submit();
	return true;
}

function archiveproject(action)
{
        var totalArchRow = document.getElementById('totalArchRow').value;
        var i;
        if(action == "open")
        {
            document.getElementById('archiveOpen').style.display = "none";
            document.getElementById('archiveClose').style.display = "";

           //alert(totalArchRow);
            for(i=1;i<=totalArchRow;i++)
            {
                 //alert(document.getElementById('arch_'+i).style.display);
                 document.getElementById('arch_'+i).style.display = "";
            }
        }
        else
        {
            document.getElementById('archiveOpen').style.display = "";
            document.getElementById('archiveClose').style.display = "none";
            
            for(i=1;i<=totalArchRow;i++)
            {
                    document.getElementById('arch_'+i).style.display = "none";
            }
                
        }
}

function doentriesaction(type) {
	var form = document.bibForm;
	var numElements = form.elements.length;
	var nIndex;
	var entryids = "";
	var firstID = 1;
	var numselected = 0;
	var allchecked = 1;

	for (nIndex = 0; nIndex < numElements; nIndex++) {
		var str = form.elements[nIndex].name;

		var idx = "";
		var id = "";
		var shared = 0;

		var uIndex = str.indexOf("_");
		if (uIndex != -1) {
			result0 = str.substring(0,uIndex);
			result1 = str.substring(uIndex+1, str.length);

			if (result0 == "entrysel") {
				if (form.elements[nIndex].checked == true) {
					idx = result1;
					id = form.elements[nIndex].value;					
				} else {
					allchecked = 0;
				}
			}
		}

		if (idx != "") {
			if (firstID == 0) {
				entryids = entryids + ",";
			}
			entryids = entryids + id;
			firstID = 0;
			numselected++;
		}
	}

	form.elements['allselected'].value = allchecked;
	form.elements['selentryids'].value = entryids;	

	if (type == "copy") {
		form.action = "/noodlebib/copyEntry.php";
		if (numselected < 1) {
			alert("Please select one or more entries to copy by checking the boxes above.");
			return;
		}
	} else if (type == "delete") {
		form.action = "/noodlebib/deleteEntry.php";
		if (numselected < 1) {
			alert("Please select at least one entry to delete by checking one or more boxes above.");
			return;
		}
		
		if (numselected == 1) {
			if (!confirm("Are you sure you wish to delete the entry selected above?")) {
				return;
			}
		} else if (numselected > 1) {
			if (!confirm("Are you sure you wish to delete all of the entries that are selected above?")) {
				return;
			}
		}
	} else if (type == "tag") {
		form.action = "/noodlebib/tagEntry.php";
		if (numselected < 1) {
			alert("Please select at least one entry to label by checking one or more boxes above.");
			return;
		}

		var atval = form.elements['applytag'].options[form.elements['applytag'].selectedIndex].value;

		if (atval == "") {
			alert("Please select the label to apply to the marked entries.");
			return;
		}	
		if (atval.substring(0,3) == "tg_") {
			alert("Please select a label (not a label category) to apply to the marked entries.");
			return;
		}

		if (atval == "[[REMOVE]]") {
			if (!confirm("Are you sure you wish to remove the labels from all marked entries?")) {
				return;
			}
		}
	} else if (type == "deletetag") {
		form.action = "/noodlebib/deleteTag.php";
		var atval = form.elements['applytag'].options[form.elements['applytag'].selectedIndex].value;
		if (atval == "" || atval == "[[REMOVE]]" || atval == "[[NEW]]") {
			alert("Please select the label or category to delete.");
			return;
		} else {
			isgroup = (atval.substring(0,3) == "tg_");

			if (isgroup && (atval.substring(3) == "1" || atval.substring(3) == "2")) {
				alert("This predefined category cannot be deleted.");
				return;
			}

			if (!isgroup) {
				var tid = atval.substring(atval.lastIndexOf("|") + 1);
				if (tid <= 6) {
					alert("This predefined label cannot be deleted.");
					return;
				}
			}

			if (isgroup) {
				if (!confirm("Are you sure you wish to delete this category and all labels within the category?\n\nNote: The labels will also be removed from any citations they are currently associated with.")) {
					return;
				}
			} else {
				if (!confirm("Are you sure you wish to delete this label?\n\nNote: The label will also be removed from any citations it is currently associated with.")) {
					return;
				}
			}
		}
	}

	form.submit();
}

function doaction(type, bibID) {
	var form = document.mainForm;
	var numElements = form.elements.length;
	var nIndex;
	var bibids = "";
	var ubrids = "";
	var firstID = 1;
	var firstSharedID = 1;
	var numselected = 0;
	var numsharedselected = 0;
        
        if (bibID == null) {

        	for (nIndex = 0; nIndex < numElements; nIndex++) {
        		var str = form.elements[nIndex].name;
        
        		var idx = "";
        		var id = "";
        		var shared = 0;
        
        		var uIndex = str.indexOf("_");
        		if (uIndex != -1) {
        			result0 = str.substring(0,uIndex);
        			result1 = str.substring(uIndex+1, str.length);
        
        			if (result0 == "sel" || result0 == "sharedsel") {
        				if (form.elements[nIndex].checked == true) {
        					idx = result1;
        					id = form.elements[nIndex].value;					
        				}
        				if (result0 == "sharedsel") {
        					shared = 1;
        				} else {
        					shared = 0;
        				}
        			}
        		}
        
        		if (idx != "") {
        			if (shared == 1) {
        				if (firstSharedID == 0) {
        					ubrids = ubrids + ",";
        				}
        				ubrids = ubrids + id;
        				firstSharedID = 0;
        				numsharedselected++;			
        			} else {
        				if (firstID == 0) {
        					bibids = bibids + ",";
        				}
        				bibids = bibids + id;
        				firstID = 0;
        				numselected++;
        			}
        		}
        	}
        
        	form.elements['selids'].value = bibids;
        	form.elements['selsharedids'].value = ubrids;	
	} else {
		// just one specific bibID

		if (type == "unshare") {
	        	form.elements['selsharedids'].value = bibID;
			numsharedselected = 1;
		} else {
	        	form.elements['selids'].value = bibID;
			numselected = 1;
		}
	}

	if (type == "share") {
		form.action = "/noodlebib/doshare.php";
		form.ACTION.value = "";
		if (numselected < 1) {
			alert("Please select at least one project to share by checking one or more boxes above.");
			return;
		}
	} else if (type == "rename") {
		form.action = "/noodlebib/dorename.php";
		form.ACTION.value = "";
		if (numselected < 1) {
			alert("Please select a project to rename by checking one of the boxes above.");
			return;
		} else if (numselected > 1) {
			alert("Only one project may be renamed at a time. Please check a single box above, then click Rename again.");
			return;
		}
	} else if (type == "copy") {
		form.action = "/noodlebib/docopylist.php";
		form.ACTION.value = "";
		if (numselected < 1) {
			alert("Please select a project to copy by checking one of the boxes above.");
			return;
		}
	} else if (type == "merge") {
		form.action = "/noodlebib/domerge.php";
		form.ACTION.value = "";
		if (numselected < 2) {
			alert("Please select at least two projects to merge by checking two or more boxes above.");
			return;
		}
	}
        else if (type == "delete") {
		form.action = "/noodlebib/dodelete.php";
		form.ACTION.value = "";
		if (numselected < 1) {
			alert("Please select at least one project to delete by checking one or more boxes above.");
			return;
		}
		
		if (numselected == 1) {
			if (!confirm("Are you sure you wish to delete this project?")) {
				return;
			}
		} else if (numselected > 1) {
			if (!confirm("Are you sure you wish to delete the projects selected above?")) {
				return;
			}
		}
	}
        else if(type == "archiveproject")
        {
            
            var activecheckbox = (document.getElementById('totalActiveCheckBox').value)-1;
            //var totalcheckbox = (document.getElementById('totalCheckBox').value)-1;
           
            var isCheck = 0;

            for(i=1;i<=activecheckbox;i++)
            {
                if(document.getElementById('sel_'+i).checked == true)
                    {
                        isCheck = 1;
                    }
            }

            if (isCheck == 0) {
			alert("Please select at least one project to archive by checking one or more boxes above.");
			return;
		}
            form.action = "/noodlebib/doarchiveproject.php?action=archive";
            form.ACTION.value = "";
        }
        else if(type == "unarchiveproject")
        {
            var activecheckbox = (document.getElementById('totalActiveCheckBox').value)-1;
            var totalcheckbox;
            if(document.getElementById('totalCheckBox'))
            {
               totalcheckbox = (document.getElementById('totalCheckBox').value)-1;
            }
            else
            {
                totalcheckbox = activecheckbox;
            }
            var isCheck = 0;

            for(i=activecheckbox+1;i<=totalcheckbox;i++)
            {
                if(document.getElementById('sel_'+i).checked == true)
                    {
                        isCheck = 1;
                    }
            }

            if (isCheck == 0) {
			alert("Please select at least one archived project to restore by checking one or more boxes above.");
			return;
		}
            form.action = "/noodlebib/doarchiveproject.php?action=unarchive";
            form.ACTION.value = "";
        }

        else if (type == "unshare") {
		form.action = "/noodlebib/dounshare.php";
		form.ACTION.value = "";
		if (numsharedselected < 1) {
			alert("Please select at least one project to remove by checking one or more boxes above.");
			return;
		}
		
		if (numsharedselected == 1) {
			if (!confirm("Are you sure you wish to unshare this project? You will be unable to view the project unless the author shares it with you again.")) {
				return;
			}
		} else if (numsharedselected > 1) {
			if (!confirm("Are you sure you wish to unshare the projects selected above? You will be unable to view them unless the authors share them with you again.")) {
				return;
			}
		}
	} else if (type == "undelete") {
		form.action = "/noodlebib/doundelete.php";
		form.ACTION.value = "";
	}

	form.submit();
}

function dotagaction(tagid, type) {
	var form = document.mainForm;

	form.elements['tagid'].value = tagid;

	if (type == "rename") {
		form.action = "/noodlebib/note_dotagrename.php";
		form.ACTION.value = "";		
	} else if (type == "delete") {
		form.action = "/noodlebib/note_dotagdelete.php";
		form.ACTION.value = "";
		
		if (!confirm("Are you sure you wish to delete this tag?")) {
			return;
		}
	}

	form.submit();
}
function doshareaction(type,isarchive)
{
	var form = document.shareForm;
	var numElements = form.elements.length;

        var nIndex;
	var shareids = "";
	var firstID = 1;
	var numselected = 0;
	var listsshared = 0;
        
        if(typeof isarchive == "undefined")
        {
           isarchive = 0;
        }

	for (nIndex = 0; nIndex < numElements; nIndex++) {
		var str = form.elements[nIndex].name;

		var idx = "";
		var shareid = "";

		var uIndex = str.indexOf("_");
		if (uIndex != -1) {
			result0 = str.substring(0,uIndex);
			result1 = str.substring(uIndex+1, str.length);

			if (result0 == "archsel" && isarchive == 1) {
				if (form.elements[nIndex].checked == true) {
					idx = result1;
					shareid = form.elements[nIndex].value;

					eval("var numshared = form.elements['numshared_" + idx + "'].value;");
					if (numshared > 0) {
						listsshared = 1;
					}
				}
			}
                        else if (result0 == "sel" && isarchive != 1) {
				if (form.elements[nIndex].checked == true) {
					idx = result1;
					shareid = form.elements[nIndex].value;

					eval("var numshared = form.elements['numshared_" + idx + "'].value;");
					if (numshared > 0) {
						listsshared = 1;
					}
				}
			}
                }

		if (idx != "") {
			if (firstID == 0) {
				shareids = shareids + ",";
			}
			shareids = shareids + shareid;
			firstID = 0;
			numselected++;
		}
	}

	form.elements['selids'].value = shareids;

	if (type == "remove") {
		form.action = "/noodlebib/share.php";
		form.ACTION.value = "removegroup";
		if (numselected < 1) {
			alert("Please select at least one assignment drop box to remove by checking the boxes above.");
			return;
		}
	}
        if(type == "archive")
        {
                form.action = "/noodlebib/share.php";
		form.ACTION.value = "archivegroup";
		if (numselected < 1) {
			alert("Please select at least one assignment drop box to archive by checking the boxes above.");
			return;
		}
        }

        if(type == "unarchive")
        {
                form.action = "/noodlebib/share.php";
		form.ACTION.value = "unarchivegroup";
		if (numselected < 1) {
			alert("Please select at least one assignment drop box to restore by checking the boxes above.");
			return;
		}
        }


	if (type == "add") {
		form.action = "/noodlebib/share.php";
		form.ACTION.value = "startaddgroup";
	}

	if (type == "remove" && listsshared == 1) {
		var confirmmsg = "There are projects shared with you via this drop box.  By removing it, you will no longer be able to view projects that were shared with you through this drop box. Are you sure you want to continue?";
		if (numselected > 1)
			confirmmsg = "There are projects shared with you via these drop boxes.  By removing them, you will no longer be able to view projects that were shared with you through those drop boxes. Are you sure you want to continue?";

		if (confirm(confirmmsg)) {
			form.submit();
		} else {
			return;
		}
	}

	form.submit();
}

function verifyWizard(form, formaction) {
	var numElements = form.elements.length;
	var nIndex;

	var page = "";
	var dbSelection = "";
	var URL2 = "";
	var ismanual = "";
	var searchTerms = "";

	for (nIndex = 0; nIndex < numElements; nIndex++) {
		var str = form.elements[nIndex].name;
		if (str == "page") {
			page = form.elements[nIndex].value;
		} else if (str == "dbSelection") {
			var elementType = form.elements[nIndex].type;

			if (elementType == "radio") {
				if (form.elements[nIndex].checked == true)
					dbSelection = form.elements[nIndex].value;
			} else {
				dbSelection = form.elements[nIndex].value;
			}
		//} else if (str == "URL2" || str == "URL") {
		//	var urlVal = form.elements[nIndex].value;
		//	if (urlVal != "") {
		//		colonPos = urlVal.indexOf(":");
		//		if (colonPos == -1 || urlVal.substr(colonPos, 3) != "://") {
		//			alert("Invalid URL. Be sure to prepend 'http://' to the URL. For example, http://infotrac.galegroup.com/.");
		//			form.elements[nIndex].focus();
		//			return 0;
		//		}
		//	}
		} else if (str == "ismanual") {
			ismanual = form.elements[nIndex].value;
		} else if (str == "searchTerms") {
			searchTerms = form.elements[nIndex].value;
		}
	}

	if (page == "showMatches") { // check that they've entered search terms
		if (trim(searchTerms) == "") {
			alert("Please enter one or more search terms to find the subscription database you are using.");
			return 0;
		}		
	} else if (page == "url") { // make sure they selected a db from the search results
		if (ismanual != 1 && dbSelection == "") {
			alert("Please select a database from the list, or click the link provided to enter the database information manually.");
			return 0;
		}
	}

	form.action = formaction;
	form.submit();
}

function isEmptyVal(val) {
	if (val == "" || val == "nostateselected") return true;
	return false;
}

function verifyForm(form) {
	var numElements = form.elements.length;
	var nIndex;

	var SourceType = "";
	var EntryType = "";

	var misc21val = "";

	var checkforonlinefields = false;
	var oneonlinechecked = false;
	myRegExpOnlineField = /online\d/

	myRegExpWasInPrintField = /inprint\d/
	var checkforwasinprintfields = false;
	var onewasinprintchecked = false;

	for (nIndex = 0; nIndex < numElements; nIndex++) {
		var str = form.elements[nIndex].name;
		var ilastname = str.indexOf('lastname');
		var ifirstname = str.indexOf('firstname');
		var iSN = str.indexOf('SN');

		if (str.indexOf("[]") > 0)
		{
			setAllOptions(form.elements[nIndex], true);
		}

		//else if (str == "URL" || str == "req_URL" || str == "URL2" || str == "req_URL2") {
		//	var urlVal = form.elements[nIndex].value;
		//	if (urlVal != "") {
		//		colonPos = urlVal.indexOf(":");
		//		if (colonPos == -1 || urlVal.substr(colonPos, 3) != "://") {
		//			alert("Invalid URL. Make sure you prepend 'http://', 'telnet://', 'ftp://', etc. to the URL. For example, 'http://www.noodletools.com/'.");
		//			form.elements[nIndex].focus();
		//			return 0;
		//		}
		//	}
		//}

		else if (ilastname > 0 && iSN < 0 && form.elements[nIndex].value != "")
		{
			var thisname = str.substring(0, ilastname);
			addName(form, thisname, thisname, 8);
		}

		else if (ifirstname > 0 && iSN < 0 && form.elements[nIndex].value != "")
		{
			var thisname = str.substring(0, ifirstname);
			addName(form, thisname, thisname, 8);
		}

		else if (str == "SourceType") {
			var elementType = form.elements[nIndex].type;

			if (elementType == "radio") {
				if (form.elements[nIndex].checked == true)
					SourceType = form.elements[nIndex].value;
			} else {
				SourceType = form.elements[nIndex].value;
			}
			continue;
		}

		else if (str == "EntryType") {
			EntryType = form.elements[nIndex].value;
		}

		var type = form.elements[nIndex].type;
		if (type == "text") {
			var val = form.elements[nIndex].value;
			if (str != "Misc30" && (val.indexOf("<") != -1 || val.indexOf(">") != -1)) {
				alert("Sorry, '< and >' are reserved characters and cannot be used in NoodleBib forms.");
				form.elements[nIndex].focus();
				return 0;
			}
			if (val.indexOf("|") != -1 && str != "URL" && str != "req_URL" && str != "URL2" && str != "req_URL2") {
				alert("Sorry, '|' is a reserved character and cannot be used in NoodleBib forms.");
				form.elements[nIndex].focus();
				return 0;
			}
		}

		var uIndex = str.indexOf("_");
		if (uIndex != -1) {
			result0 = str.substring(0,uIndex);
			result1 = str.substring(uIndex+1, str.length);

			if (result0 == "Misc21" && result1 != "") {
				var val21 = "";
				var eType = form.elements[nIndex].type;

				if (eType == "radio") {
					var theval = form.elements[nIndex].value;
					if (myRegExpOnlineField.test(theval) == true || theval == "chidb" || theval == "chinotdb") { 
						checkforonlinefields = true;
						if (form.elements[nIndex].checked == true) {
							oneonlinechecked = true;
						}
					}					
					if (myRegExpWasInPrintField.test(theval) == true || theval == "isrefdb" || theval == "isrefbook") { 
						checkforwasinprintfields = true;
						if (form.elements[nIndex].checked == true) {
							onewasinprintchecked = true;
						}
					}
					if (form.elements[nIndex].checked == true)
						val21 = theval;
				} else {
					val21 = form.elements[nIndex].value;
				}
				
				if (val21 != "") {
					if (misc21val != "") misc21val += "|";
					misc21val += val21;
				}
			}

			if ((result0 == "req" || (result0 == "onlinereq" && SourceType == "online")) && (form.elements[nIndex].value == "http://" || form.elements[nIndex].value == "ftp://")) {
				alert("Please fill in all required fields (those marked with a *).");
				form.elements[nIndex].focus();
				return 0;
			}

			if (((result0 == "req" || result0 == "reqyear") && isEmptyVal(form.elements[nIndex].value)) ||
			    (((result0 == "onlinereq" || result0 == "onlinereqyear") && (SourceType == "online") && isEmptyVal(form.elements[nIndex].value))) ||
			    (((result0 == "printreq" || result0 == "printreqyear") && (SourceType == "print") && isEmptyVal(form.elements[nIndex].value))) ||
			    (((result0 == "microreq" || result0 == "microreqyear") && (SourceType == "microfiche") && isEmptyVal(form.elements[nIndex].value))) ||
			    (((result0 == "lleafreq" || result0 == "lleafreqyear") && (SourceType == "looseleaf") && isEmptyVal(form.elements[nIndex].value))) ||
			    (((result0 == "dfilereq" || result0 == "dfilereqyear") && (SourceType == "digitalfile") && isEmptyVal(form.elements[nIndex].value))) ||
			    (((result0 == "emediareq" || result0 == "emediareqyear") && (SourceType == "CD-ROM" || SourceType == "Disk" || SourceType == "emedia") && isEmptyVal(form.elements[nIndex].value)))) 
			{
				// HANDLE SINGLE NAME FIELDS LATER
				if (result1 != "AuthorID" && result1 != "Author2ID" && result1 != "EditorID" && result1 != "Editor2ID") {
					alert("Please fill in all required fields (those marked with a *).");
					form.elements[nIndex].focus();
					return 0;
				}
			}
			else if (result0 == "reqyear" || result0 == "onlinereqyear" || result0 == "printreqyear" || 
                                 result0 == "microreqyear" || result0 == "lleafreqyear" || result0 == "dfilereqyear" ||
			         result0 == "emediareqyear" || result0 == "year") 
			{
				var strYear = form.elements[nIndex].value;				
				var strLower = strYear.toLowerCase();

				// allow AD, BC, etc.
				//myRegExpDateField = /(AD|BC|BCE|CE|A\.D\.|B\.C\.|B\.C\.E\.|C\.E\.)/i
				//if (myRegExpDateField.test(strYear) == false) { 
/*
					// allow year + letter, as in 2003b
					var addletter = "";
					var letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
					if (strYear.length == 5 && letters.indexOf(strYear.substring(4,5))>=0) { 
						addletter = strYear.substring(4,5).toLowerCase();
						strYear = strYear.substring(0,4); 
					}

					if (strYear != "" && strLower != "none" && strLower != "in press" &&
					    (!(strYear.length > 5 && strYear.length < 10 && strYear.substring(4,5) == "-")) && 
					    (!(strYear.substring(0,1) == "[" && strYear.substring(strYear.length-1,strYear.length) == "]"))) {
	
 						if (isNaN(parseInt(strYear)) || strYear.length != 4 || parseInt(strYear) < 1000 || parseInt(strYear) > 2050 ) 
						{
							alert("Please provide a valid 4-digit year or range of years for this field.\n\nFor example:\n2001\n1959-1963\n1934-50");
							form.elements[nIndex].focus();
							return 0;
						} else {
							form.elements[nIndex].value = parseInt(strYear) + "" + addletter;
						}
					}
*/
				//}
			}
		}
	}

	if (SourceType == "") {
		alert("Please select the publication medium (print, online, etc.) for your source.");
		return 0;
	}

	if (checkforwasinprintfields && !onewasinprintchecked) {
		alert("Please indicate whether or not specific information about an original print version is provided.");
		return 0;
	}

	if (checkforonlinefields && !oneonlinechecked) {
		alert("Please select the option that best describes how a reader could locate this online source again.");
		return 0;
	}

	// post-processing for single name fields and misc
	var oneNameField;
	var snf = ""; var snm = ""; var snl = ""; var sns = "";
	var singlenamerequired = 0;
	var currentNameField = "";
	var lastNameField = "";

	var titleField = "";
	var alternatetitleField = "";
	var articletitleField = "";

	var Title = "";
	var AlternateTitle = "";
	var ArticleTitle = "";
	var Misc21 = "";

	var doAddName = "";

	for (nIndex = 0; nIndex < numElements; nIndex++) {
		var str = form.elements[nIndex].name;
		var val = form.elements[nIndex].value;

		if (str == "AuthorID" || str == "Author2ID" || str == "req_AuthorID" || str == "req_Author2ID" ||
		    str == "EditorID" || str == "req_EditorID" || str == "Editor2ID" || str == "req_Editor2ID" ||
		    str == "onlinereq_AuthorID" || str == "onlinereq_Author2ID" || str == "onlinereq_EditorID" || str == "onlinereq_Editor2ID" ||
		    str == "printreq_AuthorID" || str == "printreq_Author2ID" || str == "printreq_EditorID" || str == "printreq_Editor2ID" ||
		    str == "emediareq_AuthorID" || str == "emediareq_Author2ID" || str == "emediareq_EditorID" || str == "emediareq_Editor2ID") 
		{

			if ((str == "req_AuthorID" || str == "req_Author2ID" || str == "req_EditorID" || str == "req_Editor2ID") ||
			    ((str == "onlinereq_AuthorID" || str == "onlinereq_Author2ID" || str == "onlinereq_EditorID" || str == "onlinereq_Editor2ID") && (SourceType == "online")) ||
			    ((str == "printreq_AuthorID" || str == "printreq_Author2ID" || str == "printreq_EditorID" || str == "printreq_Editor2ID") && (SourceType == "print")) ||
			    ((str == "emediareq_AuthorID" || str == "emediareq_Author2ID" || str == "emediareq_EditorID" || str == "emediareq_Editor2ID") && ($SourceType == "CD-ROM" || $SourceType == "Disk")))
			{
				singlenamerequired = 1;
			}
			oneNameField = form.elements[nIndex];
			if (currentNameField != "" && currentNameField != oneNameField) {
				if (snl != "") {
					currentNameField.value = snl + "%" + snf + "%" + snm + "%" + sns;
				} else if (snl == "" && snm == "" && snf != "") {
					snl = snf;
					snf = "";
					currentNameField.value = snl + "%" + snf + "%" + snm + "%" + sns;
				}

				if (singlenamerequired == 1 && snl == "") {
					alert("Please fill in all required fields (those marked with a *).");
					if (lastNameField) lastNameField.focus();
					return 0;
				}
			}	
			currentNameField = oneNameField;		
		} else if (str.indexOf("SNfirstname") >= 0) {
			snf = val;
		} else if (str.indexOf("SNmiddlename") >= 0) {
			snm = val;
		} else if (str.indexOf("SNlastname") >= 0) {
			snl = val;
			lastNameField = form.elements[nIndex];

			if (snl == "" && snm == "" && snf != "") {
				snl = snf;
				snf = "";
			}

			if (singlenamerequired == 1 && snl == "") {
				alert("Please fill in all required fields (those marked with a *).");
				if (lastNameField) lastNameField.focus();
				return 0;
			}

			singlenamerequired = 0;

		} else if (str.indexOf("SNsuffix") >= 0) {
			sns = val;
		} else if (str.indexOf("ArticleTitle") >= 0) {
			ArticleTitle = val;
			articletitleField = form.elements[nIndex];
		} else if (str.indexOf("AlternateTitle") >= 0) {
			AlternateTitle = val;
			alternatetitleField = form.elements[nIndex];
		} else if (str.indexOf("Title") >= 0) {
			Title = val;
			titleField = form.elements[nIndex];
		} else if (str.indexOf("Misc21") >= 0) {
			Misc21 = val;
		}
	}

	if (snl != "") {
		currentNameField.value = snl + "%" + snf + "%" + snm + "%" + sns;
	}

	if (misc21val != "") {
		form.Misc21.value = misc21val;
	}

	if (EntryType == "Web Site") {
		if (Title != "" && Title.substr(Title.indexOf(":"), 3) == "://") {
			alert("The title of the Web page should not be a URL.\n\nIf a URL is displayed in the title bar of the browser, check for a title at the top of the Web page itself. If you do not find a title there either, leave the \"Title\" field blank and provide an alternate description like \"Damon's home page\" in the field below it.");
			if (titleField) titleField.focus();
			return 0;
		}
	}

	return 1;
}

function doVerify(form, skipVerify, checkForErrors, formaction) {
	if (skipVerify == 2) {
		form.action = formaction;
		form.submit();
	} else if (skipVerify == 1 || verifyForm(form) == 1) {
		if (skipVerify) form.entryID.value="CANCEL";
		
		if (checkForErrors == "MLA") {
			form.checkForErrors.value = "MLA";
		} else if (checkForErrors == "APA") {
			form.checkForErrors.value = "APA";
		} else if (checkForErrors == "CHI") {
			form.checkForErrors.value = "CHI";
		} else if (checkForErrors == "online1") {
			form.checkForErrors.value = "online1";
		} else if (checkForErrors == "online2") {
			form.checkForErrors.value = "online2";
		} else if (checkForErrors == "online3") {
			form.checkForErrors.value = "online3";
		} else if (checkForErrors == "online5") {
			form.checkForErrors.value = "online5";
		}
			
		form.action = formaction;
		form.submit();
	} else {
		return;
	}
}

function doBack(form, formaction, screennum) {

	if (screennum == 1) {
		if (form.page.value == "show") { 
			form.page.value = "showMatches"; 
		}
		else if (form.page.value == "url") { 
			form.page.value = ""; 
		}
		else if (form.page.value == "showMatches") { 
			if (form.usedDetails.value == 1) { 		// went through details screen - return to it
				form.SourceTypeDetailPage.value = "1";
			} else if (form.usedSourceType.value == 1) { 	// went through sourcetype screen - return to it
				form.SourceType.value = "";
				form.SourceTypeDetailPage.value = "";
			} else {					// otherwise, back to validation screen
				form.SourceType.value = "";
				form.SourceTypeDetailPage.value = "";
				form.extrainfo.value = "";
			} 
		}
	} else if (screennum == 2) { // sourcetype screen (return to validation screen)
		form.SourceType.value = "";
		form.SourceTypeDetailPage.value = "";
		form.extrainfo.value = "";

		// special cases
		if (form.ADD.value == "Letter or Memo, Unpublished or Personal") {
			form.ADD.value = "Letter or Memo";
		} else if (form.ADD.value == "Letter, Published in a Collection") {
			form.ADD.value = "Letter or Memo";
		} else if (form.ADD.value == "Manuscript or Typescript") {
			form.ADD.value = "Manuscript, Essay, Notes, or Other Unpublished Work";
		} else if (form.ADD.value == "Essay or Working Paper, Unpublished") {
			form.ADD.value = "Manuscript, Essay, Notes, or Other Unpublished Work";
		}

	} else if (screennum == 3) { // details screen
		if (form.usedSourceType.value == 1) { 		// went through sourcetype screen - return to it
			form.SourceType.value = "";
			form.SourceTypeDetailPage.value = "";
		} else {					// otherwise, back to validation screen
			form.SourceType.value = "";
			form.SourceTypeDetailPage.value = "";
			form.extrainfo.value = "";
		}
	} else if (screennum == 4) { // form

		if (!confirm("Are you sure you wish to return to the previous screen? You will lose any data you have already entered in this form. Click OK to continue or Cancel to stop.")) { return false; }

		if (form.usedDetails.value == 1) { 	// went through details screen - return to it
			form.SourceTypeDetailPage.value = "1";
		} else if (form.usedSourceType.value == 1) { 	// went through sourcetype screen - return to it
			form.SourceType.value = "";
			form.SourceTypeDetailPage.value = "";
		} else {					// otherwise, back to validation screen
			form.SourceType.value = "";
			form.SourceTypeDetailPage.value = "";
			form.extrainfo.value = "";

			// special cases
			if (form.ADD.value == "Interview, Conducted By Me") {
				form.ADD.value = "Interview";
			} else if (form.ADD.value == "Software, Downloaded") {
				form.ADD.value = "Software";
			} else if (form.ADD.value == "Advertisement, Online") {
				form.ADD.value = "Advertisement or Commercial";
			} else if (form.ADD.value == "Letter or Memo, Unpublished or Personal") {
				form.ADD.value = "Letter or Memo";
			} else if (form.ADD.value == "Letter, Published in a Collection") {
				form.ADD.value = "Letter or Memo";
			} else if (form.ADD.value == "Manuscript or Typescript") {
				form.ADD.value = "Manuscript, Essay, Notes, or Other Unpublished Work";
			} else if (form.ADD.value == "Essay or Working Paper, Unpublished") {
				form.ADD.value = "Manuscript, Essay, Notes, or Other Unpublished Work";
			}
		}
	}

	form.action = formaction;
	form.submit();
}

function addName(form, fieldname, fullfieldname, numnames) {

	var nameselector;

	if (testIsValidObject(form.elements[fullfieldname + "[]"])) {
		nameselector = form.elements[fullfieldname + "[]"];
	} else if (testIsValidObject(form.elements["req_" + fullfieldname + "[]"])) {
		nameselector = form.elements["req_" + fullfieldname + "[]"];
	} else if (testIsValidObject(form.elements["printreq_" + fullfieldname + "[]"])) {
		nameselector = form.elements["printreq_" + fullfieldname + "[]"];
	} else if (testIsValidObject(form.elements["onlinereq_" + fullfieldname + "[]"])) {
		nameselector = form.elements["onlinereq_" + fullfieldname + "[]"];
	} else if (testIsValidObject(form.elements["emediareq_" + fullfieldname + "[]"])) {
		nameselector = form.elements["emediareq_" + fullfieldname + "[]"];
	} else {
		return;
	}

	var lastname = form.elements[fieldname + "lastname"];
	var firstname = form.elements[fieldname + "firstname"];
	var middlename = form.elements[fieldname + "middlename"];

	var suffix = form.elements[fieldname + "suffix"];

	if (lastname.value == "" && middlename.value == "" && firstname.value != "") {
		lastname = form.elements[fieldname + "firstname"];
		firstname = form.elements[fieldname + "lastname"];
	}

	if (lastname.value == "") {
		alert("The 'Last Name or Group/Corporation' field must be specified.");
		return;
	}

	var length = nameselector.length;

	if (length == 1 && nameselector.options[0].value == "")
	{
		length = 0;
		nameselector.options[0] = null;
	}

	if (numnames == length) {
		if (numnames == 1)
			alert("Only one name should be specified for this field.");
		else
			alert("Only " + numnames + " names are allowed in this list.");
		return;
	}

	if (lastname.value.indexOf("%") != -1 || 
	    firstname.value.indexOf("%") != -1 ||
	    middlename.value.indexOf("%") != -1 ||
	    suffix.value.indexOf("%") != -1) {

		alert("'%' characters are not allowed in this field.");
		return;
	}

	var name = trim(lastname.value) + "%" + trim(firstname.value) + "%" + trim(middlename.value) + "%" + trim(suffix.value);
	var value = "";
	if (lastname.value != "") {
		value += trim(lastname.value);
		if (firstname.value != "") {
			value += ", " + trim(firstname.value);
			if (middlename.value != "") {
				value += " " + trim(middlename.value);
			}
		}
		if (suffix.value != "") {
			value += ", " + trim(suffix.value);
		}

		nameselector.options[length] = new Option(value, name);
		setAllOptions(nameselector, false);
		nameselector.options[length].selected = true;
		firstname.value = "";
		middlename.value = "";
		lastname.value = "";
		suffix.value = "";
	} 

	var newlength = nameselector.length;
	if (newlength == 0) {
		nameselector.options[0] = new Option("(No names have been added to this list)", "");
	}
}

function removeName(form, fullfieldname) {
	var nameselector = form.elements[fullfieldname + "[]"];
	var length = nameselector.length;
	var oneremoved = false;

	var starti = length-1;

	for (var i=starti; i >= 0; i--) {
		if (nameselector.options[i].selected) {
			oneremoved = true;
			nameselector.options[i] = null;
		}
	}
	
	var newlength = nameselector.length;

	if (newlength == 0) {
		nameselector.options[0] = new Option("(No names have been added to this list)", "");
	} else if (oneremoved == false) {
		alert("Select one or more names from the list to remove.");
	}
}


function isOneSelected(nameselector) {
	var length = nameselector.length;
	var numsel = 0;

	retval = -1;

	for (var i=0; i < length; i++) {
		if (nameselector.options[i].selected) {
			numsel++;
			retval = i;
		}
	}

	if (numsel != 1) {
		alert("Please select only one name to move up or down in the list.");
		return -1;
	}

	return retval;
}

function setAllOptions(nameselector, bSet) {
	var length = nameselector.length;
	
	for (var i=0; i < length; i++)
		nameselector.options[i].selected = bSet;
}

function moveUp(form, fullfieldname) {
	var nameselector = form.elements[fullfieldname + "[]"];
	var index = isOneSelected(nameselector);

	if (index != -1) {
		if (index == 0) { return; }
		else {
			tmpText = nameselector.options[index-1].text;
			tmpVal = nameselector.options[index-1].value;

			nameselector.options[index-1].value = nameselector.options[index].value;
			nameselector.options[index-1].text = nameselector.options[index].text;
			nameselector.options[index].value = tmpVal;
			nameselector.options[index].text = tmpText;
		}

		setAllOptions(nameselector, false);
		nameselector.options[index-1].selected = true;
	}
}

function moveDown(form, fullfieldname) {
	var nameselector = form.elements[fullfieldname + "[]"];
	var index = isOneSelected(nameselector);
	var length = nameselector.length;

	if (index != -1) {
		if (index == length-1) { return; }
		else {
			tmpText = nameselector.options[index+1].text;
			tmpVal = nameselector.options[index+1].value;

			nameselector.options[index+1].value = nameselector.options[index].value;
			nameselector.options[index+1].text = nameselector.options[index].text;
			nameselector.options[index].value = tmpVal;
			nameselector.options[index].text = tmpText;
		}
		setAllOptions(nameselector, false);
		nameselector.options[index+1].selected = true;
	}
}
