

	
function isNumeric(sText)
{
	var ValidChars = "-0123456789.";
	var r=true;
	var Char;
	for (i = 0; i < sText.length && r == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
		{
			r = false;
		}
	}
	return r;
}



function formatTextSnippet(d, f, source)
{
	var t = document.getElementById(d);
	var r = t.value;
	var st = getSelectedText(d);
	var snippet = st['value'];
	var start = st['start'];
	var end = st['end'];
	var firsthalf = r.substr(0,start);
	var secondhalf = r.substr(end);
	
	if (start < end)
	{
		if (f=="a")
		{
			var l = document.getElementById(source).value;
			if (l.substr(0,7).toLowerCase()!="http://")
			{
				l = "http://" + l;	
			}
			r = "<a href='"+l+"'>"+snippet+"</a>";
		}
		if (f=="u")
		{
			r = "<span style='text-decoration:underline;'>"+snippet+"</span>";
		}
		if (f=="i")
		{
			r = "<span style='font-style:italic;'>"+snippet+"</span>";
		}
		if (f=="b")
		{
			r = "<span style='font-weight:bold;'>"+snippet+"</span>";
		}
		t.value = firsthalf + r + secondhalf;
	}
}






function getSelectedText(d)
{
	var r = new Array();
	var tField = document.getElementById(d);
	var sStart = 0;
	var sEnd = 0;

	if (navigator.appName=="Microsoft Internet Explorer")
	{
		var selectedText = document.selection.createRange().text;
		sStart = tField.value.indexOf(selectedText);
		sEnd = tField.value.indexOf(selectedText) + selectedText.length;
	}
	else
	{
		sStart = tField.selectionStart;
		sEnd = tField.selectionEnd;
	}
	
	r['start'] = sStart;
	r['end'] = sEnd;
	r['value'] = "";
	if (sStart < sEnd)
	{
		var t = tField.value;
		var s = t.substr(sStart,(sEnd-sStart));
		r['value'] = s;
	}
	return r;
}





function contactEmail(d,t)
{
	var em = "<a href='mailto:" + t + "@indiana.edu;'>" + t + "@indiana.edu</a>"
	document.getElementById(d).innerHTML = em;
}


function checkAllBoxes(cn)
{
	cbs = document.getElementsByClassName(cn);
	for (i=0;i<cbs.length;i++)
	{
		cbs[i].checked = true;	
	}
}

function uncheckAllBoxes(cn)
{
	cbs = document.getElementsByClassName(cn);
	for (i=0;i<cbs.length;i++)
	{
		cbs[i].checked = false;	
	}
}







function convertNewLinesToBreakTags(html) {
	fix = html;
	fix = fix.replace(/\n\r/g,"<br />");
	fix = fix.replace(/\r/g,"<br />");
	fix = fix.replace(/\n/g,"<br />");
	return fix;   
} 






document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
};




function toggleDisplay(d,p,v)	// div/object; position anchor object; vertical offset
{
	
	
	var toggleItems = document.getElementsByClassName(document.getElementById(d).className);
	if (document.getElementById(d).className!="")
	{
		for (i=0;i<toggleItems.length;i++)
		{
			if (toggleItems[i].id!=d)
			{
				document.getElementById(toggleItems[i].id).style.display = "none";
			}
		}
	}
	
	if (document.getElementById(d))
	{
		if ((p)&&(v))
		{
			var posLeft = document.getElementById(p).offsetLeft;
			var posTop = document.getElementById(p).offsetTop + v;
			document.getElementById(d).style.left = posLeft.toString(10) + "px";
			document.getElementById(d).style.top = posTop.toString(10) + "px";
		}
		var dv = document.getElementById(d).style.display;
		if (dv=="none")
		{
			document.getElementById(d).style.display = "block";
		}
		else
		{
			document.getElementById(d).style.display = "none";
		}
	}
}






function toggleVisibility(d,p,v)	// div/object; position anchor object; vertical offset
{
	
	

	if (document.getElementById(d))
	{
		if ((p)&&(v))
		{
			var posLeft = document.getElementById(p).offsetLeft;
			var posTop = document.getElementById(p).offsetTop + v;
			document.getElementById(d).style.left = posLeft.toString(10) + "px";
			document.getElementById(d).style.top = posTop.toString(10) + "px";
		}
		var dv = document.getElementById(d).style.display;
		if (dv=="none")
		{
			document.getElementById(d).style.display = "block";
		}
		else
		{
			document.getElementById(d).style.display = "none";
		}
	}
}























function checkAll(field)
{
for (i = 0; i < field.length; i++)
	if(field[i].checked == false)
	field[i].checked = true ;
	else
	field[i].checked = false;
}

function getElementsByClass(searchClass,node,tag)
{
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}







function setCookie(name,value) {
	var v = ""+value;
	document.cookie = name+"="+escape(v);
}

function getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return false;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}










function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}




/* -------------------- CURRENT AJAX FUNCTIONS --------------------------- */

// ------------------------------------------------------------------------
// HELPFUL: http://www.aleixcortadellas.com/main/2009/03/01/ajax-post/
// ------------------------------------------------------------------------

var xmlHttp

function ajax(method,url,params)
{

	if (!(params) || (params==null))
	{
		params = "";
	}

	xmlHttp=GetXmlHttpObject();
	xmlHttp.onreadystatechange=function ()
	{
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
		{
		
		}
	};
	// defaults to 'get' in case of 'passive/active' nonsense from before
	if (method=="POST")
	{
		xmlHttp.open("POST", url, false);
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", params.length);
		xmlHttp.setRequestHeader("Connection", "close");
		xmlHttp.send(params);		
	}
	else
	{
		if (params!="")
		{
			xmlHttp.open("GET",url+"?"+params,false);
		}
		else
		{
			xmlHttp.open("GET",url,false);
		}
		xmlHttp.send(null);
	}
	ajaxReturnValue = trim(xmlHttp.responseText);
	return ajaxReturnValue;
}



function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
  {
    // Firefox, Opera 8.0+, Safari, etc
    xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
    // Internet Explorer
    try
    {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

/* -------------------- END AJAX FUNCTIONS --------------------------- */










