function openWindow(url, name, width, height) {
	var x = (screen.width-width)/2;
	var y = (screen.height-height)/2;
	popupWindow = window.open (url, name, "resizable=0, location=0, status=1, scrollbars=1, width=" + width + ", height=" + height+', left='+x+', top='+y); 
}

function helpPage(term) {
	/*openWindow("helpPage.do?term=" + term, "helpPageTool", 600, 400);*/
}

function showHideEdit(showLinkId, hideLinkId, editSectionId) {
	var editSection = document.getElementById(editSectionId);
	var showLink = document.getElementById(showLinkId);
	var hideLink = document.getElementById(hideLinkId);
	
	if (editSection.className == 'blockHidden') {
		editSection.className = 'blockVisible';
		showLink.className = 'blockHidden';
		hideLink.className = 'blockVisible';
	} else {
		editSection.className = 'blockHidden';
		showLink.className = 'blockVisible';
		hideLink.className = 'blockHidden';
	}
}

function redirect(url) {
	window.location = url;
}

//appends a param to the action of a form
function appendParam(form, param, value) {
	var delimeter = form.action.indexOf('?') == -1 ? '?' : '&';
	form.action = form.action + delimeter + param + "=" + value;
}

function submitForm(form, action) {
	form.action = action;
	form.submit();
}

function uploadResource(fileField, form, type, filesDivId) {
	var fileName = extractFileName(fileField.value);
	
	if (trim(fileName) != "") {
		if (!fileExists(fileField, fileName)) {
			var formClone = form.cloneNode(true);
			var filesDiv = document.getElementById(filesDivId);
			
			//hide form
			form.className = "hidden";
			
			//insert fileName and the 'remove' link
			var div = document.createElement("div");
			var divText = document.createTextNode(fileName + "  ");
			var anchor = document.createElement("a");
			var anchorText =  document.createTextNode("remove");
			var span = document.createElement("span");
		
			anchor.href = "#";
			addEvent(anchor, "onclick", "removeResource('" + type + "', '" + fileName + "')");
			
			span.className = "link";
			
			div.setAttribute("id", fileName);
			
			anchor.appendChild(anchorText);
			span.appendChild(anchor);		
			div.appendChild(divText);
			div.appendChild(span);
			filesDiv.appendChild(div);
			//form.parentNode.insertBefore(div, form);
			
			//submit form
			form.submit();
			
			//insert cloned form
			filesDiv.parentNode.insertBefore(formClone, filesDiv);
		} else {		
			alert("That file name has already been used. All file names must be unique.");
		}
	}
}

function fileExists(fileField, fileName) {
	if (document.getElementById(fileName) != null) {
		return true;
	} else {
		return false;
	}
}

function removeFormForFile(fileName) {
	for (i = 0; i < document.forms.length; i++) {
		for (j = 0; j < document.forms[i].elements.length; j++) {
			var curFileName = extractFileName(document.forms[i].elements[j].value);
			
			if (curFileName == fileName) {
				document.forms[i].parentNode.removeChild(document.forms[i]);
			}
		}
	}
}

function removeResource(type, fileName) {	
	var request = getXMLHttpRequest();
	var url = "removeArtifact.iepd";
	url+= "?type=" + type;
	url+= "&fileName=" + fileName;
	
	request.open("GET", url, true);
	request.onreadystatechange = removeResourceCallback;
	request.send(null);
	
	function removeResourceCallback() {
		if(request.readyState == 4) {
			if (request.status == 200) {
				var response = request.responseText;
				
				var div = document.getElementById(fileName);
				div.parentNode.removeChild(div);
				removeFormForFile(fileName);
			}
		}
	}
}

function removeResourceFromFile(type, fileName) {	
	var request = getXMLHttpRequest();
	var url = "removeArtifactFromFile.iepd";
	url+= "?type=" + type;
	url+= "&fileName=" + fileName;
	
	request.open("GET", url, true);
	request.onreadystatechange = removeResourceCallback;
	request.send(null);
	
	function removeResourceCallback() {
		if(request.readyState == 4) {
			if (request.status == 200) {
				var response = request.responseText;
				
				var div = document.getElementById(fileName);
				div.parentNode.removeChild(div);
			}
		}
	}
}

function flagResourceForRemoval(type, fileName) {
	var request = getXMLHttpRequest();
	var url = "flagArtifactForRemoval.iepd";
	url+= "?type=" + type;
	url+= "&fileName=" + fileName;
	
	request.open("GET", url, true);
	request.onreadystatechange = removeResourceCallback;
	request.send(null);
	
	function removeResourceCallback() {
		if(request.readyState == 4) {
			if (request.status == 200) {
				var response = request.responseText;
				
				var div = document.getElementById(fileName);
				div.parentNode.removeChild(div);
				removeFormForFile(fileName);
			}
		}
	}


}

function extractFileName(filepath) {
	return filepath.substring(filepath.lastIndexOf("\\") + 1);
}

function addEvent(objAttrib, event, addFunction) { 
    //hooray not ie
	if ((!document.all) && (document.getElementById)) {
		objAttrib.setAttribute(event, addFunction);
	}    
   
	//ie 5.x+
	if ((document.all) && (document.getElementById)) {
		objAttrib[event] = new Function(addFunction);
	}
}

function fileInputKeyPressHandler(event) {
	return false;
}

function checkBrowser() {
	var temp=navigator.appVersion.split("MSIE");
	var version=parseFloat(temp[1]);
					
	if (navigator.userAgent.indexOf("Firefox") > -1) {
	} else if (navigator.userAgent.indexOf("MSIE") > -1 && version >= 6) {
	} else {
		document.write('<div class="errorBox">');
		document.write('<table class="table" width="450px">');
		document.write('<tr><td>&nbsp;&nbsp;</td><td valign="top">');
		document.write('<img src="<c:url value="/resources/images/error.png" />" />');
		document.write('</td>');
		document.write('<td valign="top">');
		document.write('Your browser is not supported. Please use IE 6+ or Firefox.');
		document.write('</td></tr></table>');
		document.write('<br/>');
		document.write('</div>');
	}
}

//TODO eventually replace this with something that's better looking
function deleteConfirm(action) {
    var answer = confirm("Are you sure you want to delete this?")
    
    if (answer) {
        redirect(action);
    }
}

//use this to add a window.onload from any script block
//without overwriting other window.onload events. Allows
//multiple window.onload events
function addLoadEvent(func) {
	var oldonload = window.onload;
	
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			
			func();
    	}
	}
}

//===========================================================================//
function getXMLHttpRequest() {
	var request = false;

	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
	   	} catch (othermicrosoft) {
	   		try {
	      		request = new ActiveXObject("Microsoft.XMLHTTP");
	   		} catch (failed) {
	      		request = false;
	   		}  
	   	}
	}
	
	if (!request) {
		//how do we want to handle this?
		alert("Error: Please use one of the supported browsers, which are Internet Explorer 6+ and Firefox 1.5+");
	}
	
	return request;
}

function trim(str) {
   return str.replace(/^\s*|\s*$/g,"");
}
