var submitPage = "prebuilt/editOther.asp";


function addNewOption(selectID, optName, inputID, data) {
	var catList = document.getElementById(selectID);
    var length = catList.options.length;
    catList.options[length] = new Option(optName, data);
    document.getElementById(inputID).value = "";
}


function approveComment(id, state, isBioPage) {
	dojo.io.bind({
		url: submitPage + "?mode=approveComment",
		method: "post",
		content: {
			id: id, 
			state:  state
		},
		load: function(load, data, e) {
			//Change the status
            if (isBioPage == 'true') {
			    var thisNode = document.getElementById('comment_' + id);
				removeNode(thisNode);
                var CommentList = dojo.html.getElementsByClass("dateSort " + state,document.getElementById("body"),"div");
                thisNode.className = "dateSort " + state;
			    
			    //UpdateItemCounts 
				var oldState = 'Approved';
			    if (state == 'Approved')
			        oldState = 'Unapproved';
			    updateTitleCount(state + '_count', 1);
				var oldCount = updateTitleCount(oldState + '_count', -1);
			    
			    //if there was a no pending items tag, remove it
			    setDisplay('no' + state + 'Items', false);
				if (oldCount==0)
					setDisplay("no" + oldState + "Items", true);
			    
				CommentList.sort(fnSortItems);
				var set = false;
                for (x=0; x<CommentList.length; x++) {
                    if (thisNode.getAttribute("date") <= CommentList[x].getAttribute("date")) {
                        var insertAfterNode = CommentList[x];
                        insertAfterNode.parentNode.insertBefore(thisNode, insertAfterNode.nextSibling);
                        set = true;
						break;
                    }                  
                }         
                //otherwise
           		if (!set) {
					var insertBeforeNode = CommentList[CommentList.length-1];
            	    insertBeforeNode.parentNode.insertBefore(thisNode, insertBeforeNode);
				}    
		   }
		}
	});
}

function approveSelectedDocuments(docID) {
	var docTable = dojo.widget.byId("DocumentTable");
	if (docTable != null) {
		selectedItemIds = getSelectedIdsFromTable(docID, "DocumentTable", "")
		dojo.io.bind({
			url: submitPage + "?mode=approveDocument",
			method: "post",
			content: {
				docIDs: selectedItemIds.join(", ")
			},
			load: function(load, data, e) {
				updateTitleCount('inboxDivAll_count', -1 * selectedItemIds.length);
				for (x in selectedItemIds) {
					var approveLink = document.getElementById("approve_" + selectedItemIds[x]);
					if (approveLink) {
						removeNode(approveLink);
					} else {
						docTable.store.removeDataByKey(selectedItemIds[x], false);
					}
				}
			}
		});
	}
}
function checkContent(id, errorMsg) {
	if (document.getElementById(id)!=null && document.getElementById(id).value!='')
		return true;
	alert(errorMsg);
	return false;
}

function checkLength(text, label, numChars) {
    if (text.length < numChars)
        return true;
    alert(label + " is limited to " + numChars + " characters of text.  It currently contains " + text.length + " characters.  Please edit and resubmit.");
    return false;
}

function checkInput(inputID, errorMsg) {
	if (document.getElementById(inputID).value==''){
		alert(errorMsg);
		return false;	
	}
	return true;	
}

function deleteComment(id, CurrentStatus) {
	dojo.io.bind({
		url: submitPage + "?mode=deleteComment",
		method: "post",
		content: {
			id: id
		},
		load: function(load, data, e) {
			if (CurrentStatus!=null) {
				var oldCount = updateTitleCount(CurrentStatus + '_count', -1);
				if (oldCount == 0) 
					setDisplay("no" + CurrentStatus + "Items", true)
			}
		    removeNode(document.getElementById("comment_" + id)); 
		}
	});
}

function getSelectedIdsFromTable(itemID, tableID, error) {
	var dojoTable = dojo.widget.byId(tableID);
	if (itemID==null && dojoTable!=null) {
		var selectedItemIds = new Array();
		var selectedRows = dojoTable.getSelectedData();
		var reset = false;
		for (x in selectedRows) {
			if (selectedRows[x].Id.indexOf('_')==-1)
				selectedItemIds.push(selectedRows[x].Id);
			else 
				reset=true;
		}
		if (reset && error!="") {
			alert(error);		
		}
	} else {
		selectedItemIds=[itemID];	
	}
	return selectedItemIds;
}

function deleteItem(itemID, mode, updateCountId) {
	var errorStr = (mode=="deleteUser") ? "You may not delete yourself" :  "You may not delete global categories";
	selectedItemIds = getSelectedIdsFromTable(itemID, mode.substring(6) + "Table", errorStr)
	if (selectedItemIds.length!=0) {
		dojo.io.bind({
			url: submitPage + "?mode=" + mode,
			method: "post",
			content: {
				itemIDs: selectedItemIds.join(", ")
			},
			load: function(load, data, e) {
				var myNode=document.getElementById("gallery" + itemID);
				if (myNode!=null) {
					removeNode(myNode);
				} else {
					var dojoTable = dojo.widget.byId(mode.substring(6) + "Table");
					if (updateCountId!='' && updateCountId!=null)
						updateTitleCount(updateCountId, -1 * selectedItemIds.length);
					if (dojoTable!=null) {
						for (x in selectedItemIds) {
							dojoTable.store.removeDataByKey(selectedItemIds[x], false);
						}
					} else 
						window.location.reload(true);
				}
			}
		});
	} 
}

function cancelRolesInline(id, originalValues) {
	var roleRow = document.getElementById("roleRow_" + id);
	if (roleRow) {
		var checkBoxes = dojo.html.getElementsByClassName("roleInput", roleRow);
		for (i=0; i<checkBoxes.length; i++) {
			checkBoxes[i].disabled = "disabled";
			checkBoxes[i].selected = (originalValues[i+1]==1)?"selected": "";
		}
		var roleNameInput = document.getElementById("roleName_" + id);
		roleNameInput.innerHTML = originalValues[0];
		setDisplay("save_" + id, false);
		setDisplay("cancel_" + id, false);
		setDisplay("edit_" + id, true);
	}
}

function editRolesInline(id) {
	var roleRow = document.getElementById("roleRow_" + id);
	if (roleRow) {
		var checkBoxes = dojo.html.getElementsByClassName("roleInput", roleRow);
		for (i=0; i<checkBoxes.length; i++) {
			checkBoxes[i].disabled = "";
		}
		var roleNameInput = document.getElementById("roleName_" + id);
		var currentName = roleNameInput.innerHTML;
		roleNameInput.innerHTML = '<input type="text" id="roleNameInput_' + id + '" value="' + currentName + '"/>';
		setDisplay("save_" + id, true);
		setDisplay("edit_" + id, false);
		setDisplay("cancel_" + id, true);
	}
}

function saveRolesInline(id) {
	var roleRow = document.getElementById("roleRow_" + id);
	if (roleRow ) {
		var checkBoxes = dojo.html.getElementsByClassName("roleInput", roleRow);
		var content = {};
		var items = new Array;
		for (i=0; i< checkBoxes.length; i++) {
			var str = checkBoxes[i].id;
			content[ str.substring(str.indexOf(id) + 1)] = (checkBoxes[i].checked) ? 1 : 0;
			items.push(str.substring(str.indexOf(id) + 1));
		}
		content["items"] = items.join("|");
		content["id"] = id;
		content["rolename"] = document.getElementById("roleNameInput_" + id).value;
		dojo.io.bind({
			url: submitPage + "?mode=saveRoles",
			method: "post",
			content: content,
			load: function(load, data, e) {
				document.getElementById("roleName_" + id).innerHTML = document.getElementById("roleNameInput_" + id).value;
				for (i=0; i<checkBoxes.length; i++) {
					checkBoxes[i].disabled = "disabled";
				}
				setDisplay("save_" + id, false);
				setDisplay("cancel_" + id, false);
				setDisplay("edit_" + id, true);
			}
		});
	}
}

function cancelUserMapping(id, roleName) {
	var roleDiv = document.getElementById("role_" + id);
	if (roleDiv) {
		roleDiv.innerHTML = roleName;
		setDisplay("save_" + id, false);
		setDisplay("cancel_" + id, false);
		setDisplay("edit_" + id, true);
	}
}

function editUserMappingInline(id, roleID) {
	var roleDiv = document.getElementById("role_" + id);
	var selectDiv = document.getElementById("hiddenRoleSelect");
	if (roleDiv && selectDiv) {
		roleDiv.innerHTML = selectDiv.innerHTML;
		var newSelect = dojo.html.getElementsByClassName("roleSelect", roleDiv)[0];
		for (i=0; i< newSelect.length; i++) {
			if (newSelect[i].value == roleID) 
				newSelect.selectedIndex = i;
		}
		setDisplay("save_" + id, true);
		setDisplay("cancel_" + id, true);
		setDisplay("edit_" + id, false);
	}
}

function saveUserMapping(id) {
	var roleDiv = document.getElementById("role_" + id);
	if (roleDiv) {
		var newSelect = dojo.html.getElementsByClassName("roleSelect", roleDiv)[0];
		
		dojo.io.bind({
			url: submitPage + "?mode=saveMapping",
			method: "post",
			content: {
				id: id,
				roleID: newSelect.value
			},
			load: function(load, data, e) {
				roleDiv.innerHTML = newSelect[newSelect.selectedIndex].text;
				setDisplay("save_" + id, false);
				setDisplay("cancel_" + id, false);
				setDisplay("edit_" + id, true);
			}
		});
	}
}

function getDojoEditorContent(id) {
	var editor = dojo.widget.byId(id);
	if (editor!=null) 
		return editor.editNode.innerHTML.replace( new RegExp("<[ \n\r]*script[^>]*>.*?<[ \n\r]*/script[^>]*>", "g"), "");
	return "";
}

function getSafeEditorContent(id) {
	
	var scriptRegExp =  new RegExp("<[ \n\r]*script[^>]*>.*?<[ \n\r]*/script[^>]*>", "g");
	return escape(tinyMCE.activeEditor.getContent().replace(scriptRegExp, ""));
	
}

function replaceEditorContent(id) {
	tinyMCE.activeEditor.save();
	var elem = document.getElementById(id);
	if (elem)
		elem.value = getSafeEditorContent(id);
}

function getStringFromMulti(id) {
	var ms = document.getElementById(id);
	var selectedItems = new Array;
    for (i=0; i<ms.length; i++) {
        if (ms[i].selected && ms[i].value!='') {
            selectedItems.push(ms[i].value);
        }
    }
    return selectedItems.join("|");
}

function moveToOrFromTrash(itemID, toTrash) {
	//toTrash = the new value for flagForDelete.  1 = move into trash, 0 = restore to previous location.
	var itemIDs = getSelectedIdsFromTable(itemID, "DocumentTable", "");
	dojo.io.bind({
		url: submitPage + "?mode=moveToTrash",
		method: "post",
		content: {
			itemIDs: itemIDs.join(", "), 
			value: toTrash
		},
		load: function(load, data, e) {
			var scale = (toTrash == 1) ? -1 : 1;
			var dojoTable = dojo.widget.byId("DocumentTable");
			if (dojoTable!=null) {
				for (i in itemIDs) {
					updateTitleCount("trashDivAll_count", -1 * scale);
					updateTitleCount("catDivAll_count", scale);
					var catList = document.getElementById("catList_" + itemIDs[i]);
					if (catList!=null) {
						var catArray = catList.innerHTML.split(";");
						for (x in catArray){
							updateTitleCount("catDiv" + catArray[x] + "_count", scale);
						}
					}
					dojoTable.store.removeDataByKey(itemIDs[i], false);
					
				}
			} else 
				window.location.reload(true);
		}
	});	
}

function removeNode(thisNode) {
	if (thisNode!=null)
		thisNode.parentNode.removeChild(thisNode);
}

function renameFolderFromTree(newTitle, treeNode) {
	dojo.io.bind({
    	url: submitPage + "?mode=renameFolder",
		method: "post",
    	content: {
    			title:  newTitle,
    			id: treeNode.widgetId				
    	},
    	handler: function(load, data, e) {
			treeNode.title = newTitle;
			treeNode.titleNode.innerHTML = newTitle;
    	}
    });
}

//Used by the document, post and category admin forms
 function sendCategory() {
	// allCatStr is a ':' delimited list of all cat names.  
	var allCatStr = document.getElementById("allCatStr").innerHTML;
 	var catTable = dojo.widget.byId("CategoryTable");
	var name = document.getElementById("newItemName").value;
	var id = document.getElementById("itemID").value;
 	
 	if (name.length==0) {
        alert("You must enter a category");
    } else if (-1!=allCatStr.toLowerCase().indexOf(":" + name.toLowerCase() + ":")) {
		alert("This category already exists");
	} else {
		var mySumitButtonId = (id=="") ? "submit_New" : "submit_Update";
		dojo.io.bind({
        	url: "prebuilt/editCatOrFolder.asp?mode=cat",
        	method: "post",
	    	mimetype: "text/json",
        	content: {
        			pageID: document.getElementById("pageID").value,
        			CategoryName: name,
        			id: id
        	},
        	handler: function(type, data, e) {
        		//update allCatStr
        		var oldCatNode = document.getElementById("catValue_" + id);
        		if (oldCatNode!=null) {
        			var oldCatName = oldCatNode.innerHTML;
        			allCatStr = allCatStr.replace(oldCatName, name);
        		} else {
        			allCatStr += name + ":";
        		}
        		document.getElementById("allCatStr").innerHTML = allCatStr;
        		if (catTable== null) {//for doc & post forms
        			var cats = dojo.html.getElementsByClass("catSpan", document.getElementById("catDiv"),"li");
        			var thisNode = document.createElement('li');
        			thisNode.className="catSpan";
        			
        			thisNode.innerHTML = '<a class="selectedCat" onclick="toggleSelection(this)" id="cats_' + data.message + '">' + name + '</a><br/>';
					var set = false;
					for (x=0; x<cats.length; x++) {
						if (fnSortCats(thisNode, cats[x]) < 0) {
							var insertBeforeNode = cats[x];
							insertBeforeNode.parentNode.insertBefore(thisNode, insertBeforeNode);
							set = true;
							break;
						}                  
					}
					if (!set) {
            			document.getElementById("catDiv").appendChild(thisNode);
					}
        		}
        		else { //for category admin page
    				editItemSetup('','');
					var newRowObj = {
						Id: data.message,
						CategoryName: "<!-- " + name.toLowerCase() + "--><span id=\"catVal_" + data.message + "\">" + name + "</span>",
						postCount: "<!--0-->0",
						docCount: "<!--0-->0",
						imageCount: 0,
						total: 0,
						Edit: editDeleteLinks(data.message, name, "deleteCategory")
					}
					if (id == data.message) {
						var oldRowObj = catTable.store.getDataByKey(data.message);
						newRowObj.postCount = oldRowObj.postCount;
						newRowObj.docCount = oldRowObj.docCount;
						newRowObj.imageCount = oldRowObj.imageCount;
						newRowObj.total = oldRowObj.total;
						catTable.store.removeDataByKey(data.message);
					}
					catTable.store.addData(newRowObj);
					setDisplay("formBox", false);
				} 
        	}
        });
    }
}

function saveXHTMLContent(pageID) {
    var content = getSafeEditorContent("editContent");

	if (checkLength(content, "Bio", 4000)) {  
        dojo.io.bind({
    		url: submitPage + "?mode=bio",
			method: "post",
    		content: {
    			pageID: pageID,
    			Bio: content
    		},
    		mimetype: "text/xml",
    		load: function(load, data, e) {	
    		    var currentContent = getDojoEditorContent("editor_Bio");		    
    			dojo.widget.byId('editor_Bio').destroy();
    			document.getElementById("editContent").innerHTML = currentContent;		
    			showHideList(['bioEdit', 'editButtons']);		
    		}
    	});		
    }
}

function sendComment(defaultCommentState, contentEdit) {
	if (checkContent("name", "You must enter your name")) {
		replaceEditorContent("comment");
		dojo.io.bind({
			url: submitPage + "?mode=newComment",
			method: "post",
    		mimetype: "text/json",
			formNode: document.getElementById("postComment"),
			load: function(load, data, e) {
    			document.getElementById("postComment").reset();
    			if (defaultCommentState != "Approved" && contentEdit != "true") 
					alert("Your comment has been submitted but must be approved before it will appear on the site.");
				else if (dojo.widget.byId('internal') != null && dojo.widget.byId('internal').href!='') 
					dojo.widget.byId("internal").refresh();
				else 
					dojo.widget.byId("outer").refresh(); 
			}
		});
	}
}

//Folio Creation
function sendFolio() {
	if (checkInput("LastName", "Last Name is required")) {
		var imageNode = document.getElementById("Image");
	    var formNode = document.getElementById("newFolio");
	    if (imageNode.value == "") {
	    	formNode.removeAttribute('enctype');
	    	formNode.setAttribute("action", formNode.getAttribute("action") + "?mode=noDoc");
	    }
		replaceEditorContent("MailingAddress");
	    dojo.io.bind({
	    	formNode: formNode,
	    	mimetype: "text/json",
	    	handler: function(type , data, e) {
	    		if (data == false)
	    			alert("Invalid JSON Object response");					
	    		else if (data.code!=0) {
	    			var error = (data.message) ? data.message : data;
	    			alert("Error uploading: " + error);
	    		} else {
	    			window.location.href = "cartella.asp?" + "pageID=" + data.pageID;
	    		}
	    	}
	    });
	}
}

function sendDepartment() {
	var name = 	document.getElementById("newItemName").value;
	var id = document.getElementById("itemID").value
	if (checkInput("newItemName", "You must enter a department name")) {
		var mySumitButtonId = (id=="") ? "submit_New" : "submit_Update";
		dojo.io.bind({
        	url: submitPage + "?mode=newDepartment",
        	method: "post",
			mimetype: "text/json",
        	content: {
    			name:  name, 
				id: id
        	},
        	load: function(load, data, e) {
				editItemSetup('','');
				var deptTable = dojo.widget.byId("DepartmentTable");
				//Disable AJAX update for now
				deptTable = null;
				
				if (deptTable!=null) {
					var newId = data.itemID
					var newRowObj = {
						Id: newId,
						deptName: "<!-- " + name.toLowerCase() + "-->" + "<a href=\"cartella.asp?dept=" + newId + "\">" + name + "</a>",
						Members: 0,
						Edit: editDeleteLinks(newId, name, "deleteDepartment")
					}
					if (id == newId) {
						var oldRowObj = deptTable.store.getDataByKey(newId);
						newRowObj.Members = oldRowObj.Members;
						deptTable.store.removeDataByKey(newId);
					}
					deptTable.store.addData(newRowObj);
					setDisplay('formBox', false);
				} else {
					window.location.reload();
				}
        	}
        });
	}
}

function sendDocument() {
	var errorMsg="";
	if (document.getElementById("documentTitle").value=="") 
		errorMsg = "Please enter a title";
	else if (document.getElementById("id").value=="" && document.getElementById("document").value=="")
		errorMsg = "You must include a document";
	if (errorMsg!='') {
		alert(errorMsg);
		return false;	
	}	
	var desc = getSafeEditorContent("documentDescription");
	replaceEditorContent("documentDescription");
    if (checkLength(desc, "Description", 4000)) {
        setUpCategoriesAndPermissions(true, true)
    	var formNode = document.getElementById("newDocument");
    	if (document.getElementById("document").value == "") {
    		formNode.removeAttribute('enctype');
    		formNode.setAttribute("action", "prebuilt/editDocument.asp?mode=noDoc");
    	}
    	dojo.io.bind({
    		formNode: formNode,
    		transport: "IframeTransport",
    		mimetype: "text/json",
    		handler: function(type, data, e) {
    			if (data == false)
	    			alert("Invalid JSON Object response");					
	    		else if (data.code!=0) {
	    			var error = (data.message) ? data.message : data;
	    			alert("Error uploading: " + error);
	    		} else {
	    			window.location.href = "cartella.asp?view=document&doc=" + data.id 
						+ "&pageID=" + data.pageID + "&folder=" + data.folder;
	    		}
			}
    	});
    }
}

//Used by the document form
 function sendFolder() {
   if (document.getElementById("newFolderName").value.length==0) {
        alert("You must enter a folder name");
    } else {
        dojo.io.bind({
        	url: "prebuilt/editCatOrFolder.asp?mode=folder",
        	method: "post",
			mimetype: "text/json",
        	content: {
        			pageID:  document.getElementById("pageID").value,
        			name:  document.getElementById("newFolderName").value,
        			parent:  document.getElementById("folder").value
        	},
        	handler: function(type , data, e) {
	    		if (data == false)
	    			alert("Invalid JSON Object response");					
	    		else if (data.code!=0) {
	    			var error = (data.message) ? data.message : data;
	    			alert("Error uploading: " + error);
	    		} else {
	    			var folderList = document.getElementById("folder");
	        		var parentName = folderList.options[folderList.selectedIndex].text + '/';
	        		if (parentName == 'Documents/') 
	        		    parentName = '';
	        		var newOptName = parentName + document.getElementById("newFolderName").value;
	        		
	        		addNewOption("folder", newOptName, "newFolderName", data.message);
	        		folderList.selectedIndex = folderList.options.length-1;
				}
        	}
        });
    }
}

function sendGallery() {
	if (checkInput("Title", "You must enter a Title")){
		replaceEditorContent("BodyCopy");
		setUpCategoriesAndPermissions(false, true);  
	    var imageNode = document.getElementById("MainImage");
	    var formNode = document.getElementById("newGallery");
	    if (imageNode.value == "") {
	    	formNode.removeAttribute('enctype');
	    	formNode.setAttribute("action", formNode.getAttribute("action") + "?mode=noDoc");
	    }
	    dojo.io.bind({
	    	formNode: formNode,
	    	transport: "IframeTransport",
			mimetype: "text/json",
	    	handler: function(type , data, e) {
	    		if (data == false)
	    			alert("Invalid JSON Object response");					
	    		else if (data.code!=0) {
	    			var error = (data.message != null) ? data.message : data;
	    			alert("Error uploading: " + error);
	    		} else {
	    			window.location.href = "cartella.asp?view=gallery&pageID=" + data.pageID + "&gallery=" + data.id;
	    		}
	    	}
	    });
	}
}

function sendImage() {
   if (checkInput("Title", "You must enter a Title")){
		replaceEditorContent("Description");
	    setUpCategoriesAndPermissions(true, false);
		var imageNode = document.getElementById("Image");
	    var formNode = document.getElementById("newImage");
	    if (imageNode.value == "") {
			if (document.getElementById("id").value == "") {
				alert("You must include an image");
				return false;
			}
	    	formNode.removeAttribute('enctype');
	    	formNode.setAttribute("action", formNode.getAttribute("action") + "?mode=noDoc");
	    }
	    dojo.io.bind({
	    	formNode: formNode,
	    	transport: "IframeTransport",
			mimetype: "text/json",
	    	handler: function(type , data, e) {
	    		if (data == false)
	    			alert("Invalid JSON Object response");					
	    		else if (data.code!=0) {
	    			var error = (data.message) ? data.message : data;
	    			alert("Error uploading: " + error);
	    		} else {
	    			window.location.href = "cartella.asp?view=gallery&pageID=" + data.pageID
					 + "&gallery=" + data.galleryID + "&image=" + data.imageID;
	    		}
	    	}
	    });
	}
}

function sendMapping() {
	document.getElementById("userList").value = getStringFromMulti("users");
	dojo.io.bind({
		formNode: document.getElementById("newMapping"),
		transport: "IframeTransport",
		mimetype: "text/json",
		handler: function(type , data, e) {
			if (data == false)
    			alert("Invalid JSON Object response");					
    		else if (data.code!=0) {
    			var error = (data.message) ? data.message : data;
    			alert("Error uploading: " + error);
    		} else {
    			window.location.href = "cartella.asp?view=admin&mode=users&pageID=" + document.getElementById("pageID").value;
    		}
		}
	});
}

function sendPost() {
    var editorContent = getSafeEditorContent("postDescription");
    if (checkInput("itemTitle", "You must enter a Title") && checkLength(editorContent, "Post", 4000)) {
		replaceEditorContent("postDescription");
		setUpCategoriesAndPermissions(true, true)
    	dojo.io.bind({
			formNode: document.getElementById("newPost"),
    		transport: "IframeTransport",
			mimetype: "text/json",
    		handler: function(type , data, e) {
    			if (data == false)
	    			alert("Invalid JSON Object response");					
	    		else if (data.code!=0) {
	    			var error = (data.message) ? data.message : data;
	    			alert("Error uploading: " + error);
	    		} else {
	    			window.location.href = "cartella.asp?view=post&post=" + data.id + "&pageID=" + data.pageID;
	    		}
			}
    	});
    }
}


function sendUser() {
	if (checkInput("FirstName", "You must enter a first name") 
		&& checkInput("LastName", "You must enter a last name")
		&& checkInput("LoginName", "You must enter a login name")) {
		var imageNode = document.getElementById("Image");
	    var formNode = document.getElementById("newUser");
	    if (imageNode.value == "") {
	    	formNode.removeAttribute('enctype');
	    	formNode.setAttribute("action", formNode.getAttribute("action") + "&noDoc=true");
	    }
		dojo.io.bind({
    		formNode: document.getElementById("newUser"),
    		transport: "IframeTransport",
			mimetype: "text/json",
    		handler: function(type, data, e) {
    			if (data == false)
	    			alert("Invalid JSON Object response");					
	    		else if (data.code!=0) {
	    			var error = (data.message) ? data.message : data;
	    			alert(error);
	    		} else {
	    			window.location.href="cartella.asp?view=admin";
	    		}
			}
    	});
	}
}


function setUpCategoriesAndPermissions(doCats, doPermissions) {
	if (doCats) {
		var selectedCats = dojo.html.getElementsByClass("selectedCat", document.getElementById("catDiv"),"a");
		var idArray = new Array;
		for (x in selectedCats) {
			idArray.push(selectedCats[x].id.substring(selectedCats[x].id.indexOf('_') + 1));
		}
		document.getElementById("catList").value = idArray.join("|");
	}
	if (doPermissions) {
		var permNode = document.getElementById("permission");
		if (permNode.options) {
			var selectedPerm = permNode.options[permNode.selectedIndex].value;
			if ( selectedPerm == 3 || selectedPerm == 5) 
				document.getElementById("values" + selectedPerm).value = getStringFromMulti("select" + selectedPerm);
		}
	}
}

//Login
function submitLogin(id) {
	dojo.io.bind({
		formNode: document.getElementById(id),
    	transport: "IframeTransport",
		mimetype: "text/json",
    	handler: function(type, data, e) {
			if (type == "error" || data.code==1) {  //post succeeded, but login failed
				var errorDiv = document.getElementById(id + "_error");
				if (errorDiv != null) {
					errorDiv.innerHTML = data.message;
					errorDiv.style.display = "block";
				}
			}
			else {
				if (data.code==2) {
					var form = document.getElementById(id);
					var newFormHTML = '<p>Welcome, ' + unescape(data.userName) + '.  Please create a new password</p>' + 
						'<label>New Password</label><input class="textbox" name="password" type="password" /><br />' + 
						'<label>Confirm</label><input class="textbox" name="password2" type="password" /><br />' + 
						'<input name="oldPassword" type="hidden" value="' + form.pass.value + '"/>' + 
						'<div id="' + id + '_error" style="color: Red; clear:both; display:none;"></div><br/><br/>' +  
						'<label>&#160;</label><a class="button" href="#" onclick="changePassword(\'' + id + '\'); return false;"><span>Submit</span></a>';
					form.innerHTML = newFormHTML;
					form.onSubmit = "changePassword('" + id + "');";
				} else {
					var href= window.location.href;
					if (href.toLowerCase().indexOf("pageid")==-1) {
						if (data.pageID !='' && data.pageID.indexOf('|')==-1)
							href="cartella.asp?pageID=" + data.pageID;
						else 
							href="cartella.asp?view=home";
					}
					window.location.href = href;
				}
			}
		}
	});
}

function changePassword(id) {
	var form = document.getElementById(id);
	if (form.password.value != form.password2.value) {
		alert("Your passwords do not match");
	} else if (form.password.value == form.oldPassword.value) {
		alert("Your new password must be different than your existing password");
	} else {
		dojo.io.bind({
			url: "prebuilt/sendLogin.asp?mode=changePassword",
			formNode: form,
			transport: "IframeTransport",
			mimetype: "text/json",
    		handler: function(type, data, e) {
				if (data.code==1) {  //post succeeded, but login failed
					var errorDiv = document.getElementById(id + "_error");
					if (errorDiv != null) {
						errorDiv.innerHTML = data.message;
						errorDiv.style.display = "block";
					}
				}
				else {
					alert("Your password has been changed");
					var href= window.location.href;
					if (href.toLowerCase().indexOf("pageid")==-1) {
						if (data.pageID !='' && data.pageID.indexOf('|')==-1)
							href="cartella.asp?pageID=" + data.pageID;
						else 
							href="cartella.asp?view=home";
					}
					window.location.href = href;
				}
			}
		});
	}
}

function forgotPassword(id) {
	var form = document.getElementById(id);
	if (form.user.value =='') {
		alert("You must enter a username");
	} else {
		dojo.io.bind({
			url: "prebuilt/sendLogin.asp?mode=forgotPassword",
			formNode: form,
			transport: "IframeTransport",
			mimetype: "text/json",
    		handler: function(type, data, e) {
				alert("Your password has been sent to the email address on file.");
				window.location.href = "cartella.asp";
			}
		});
	}
}

function sendResetPassword(resetUserID) {
	dojo.io.bind({
		url: "prebuilt/sendLogin.asp?mode=resetPassword",
		method: "post",
		content: {
			resetUserID: resetUserID
		},
		mimetype: "text/json",
		handler: function(type, data, e) {
			alert("The user's password has been changed and sent to the email address on file.");
		}
	});
}

function submitLogout(url2) {
	dojo.io.bind({
		url: "prebuilt/sendLogin.asp?mode=logout",
		transport: "IframeTransport",
		method: "post",
		load: function(load, data, e) {
			var href= (url2) ? url2 : "cartella.asp";
			window.location.href = href;
		}
	});
}

function toggleSelection(elt) {
	var newClass = (elt.className == "selectedCat") ? "unselectedCat" : "selectedCat";
	elt.className = newClass;
}

function submitEnter(id, e) {
	var keycode;
	if (window.event) 
		keycode = window.event.keyCode;
	else if (e) 
		keycode = e.which;
	else 
		return true;

	if (keycode == 13) {
	   submitLogin(id);
	   return false;
	} else
	   return true;
}