//
// GENERIC JAVASCRIPT FUNCTIONS USED THROUGHOUT THE CODE
// 

var b = window.location.href;

var a = b.split("/");
var loc = a[0] + "/" + a[1] + "/" + a[2] + "/";
page = loc + 'Web/response.php';
var base = loc;
var ajaxpath = new Array();


// ///////////////////////////
// AJAX OBJECT CREATION

	  function createObj() 
	  {
    	var ro;
    	var browser = navigator.appName;
    	if(browser == 'Microsoft Internet Explorer')
	    {
    	  ro = new ActiveXObject('Microsoft.XMLHTTP');
    	}
	    else
	    {
        ro = new XMLHttpRequest();
    	}
    	return ro;
	  }

	  var http = createObj(); 
	  
// ///////////////////////////
// EXPAND TEXTAREAS

	function expandTextarea(e, id)
	{
		if (!e) var e = window.event;
		if (e.keyCode) code = e.keyCode;
		else if (e.which) code = e.which;
		if(code == 13)
		{
			document.getElementById(id).rows = document.getElementById(id).rows + 1;
		}
	}
		
// ///////////////////////////
// Open and close things

	function openclose(id)
	{
		if(document.getElementById(id))
		{
			if(document.getElementById(id).style.display == "" || document.getElementById(id).style.display == "none")
			{
				document.getElementById(id).style.display = "block";
			}
			else
			{
				document.getElementById(id).style.display = "none";
			}
		}
	}
	
	function openclosepluswithids(id, idplus, inneridone, inneridtwo)
	{
		if(document.getElementById(inneridone + id).style.display == 'block')
		{
			document.getElementById(inneridtwo + id).innerHTML = '&nbsp;+&nbsp;';
			document.getElementById(inneridone + id).style.display = 'none';
		}
		else
		{
			document.getElementById(inneridtwo + id).innerHTML = '&nbsp;-&nbsp;';
			document.getElementById(inneridone + id).style.display = 'block';
		}
	}

//
// GENERIC AJAX HANDLING FUNCTIONS
// 
//  (if any of this is changed, must re-test ALL ajax functions!!)
//

	function callAjax(args,assoc,num,loadin,rePage)
	{
		//alert(store.ps.ptitle);
		//document.getElementById(loadin).innerHTML = "<i class='loading'>Loading...</i>";
		var d = new Date();
		var ed = d.getTime();
		var string = "";
		for(var i = 0; i < args.length; i++)
		{
			string += assoc[i] + '=' + args[i] + '&';
		}		
		string = string + 'code=' + num + '&loadin=' + loadin + '&date=' + ed;
		http.open('POST', rePage, true); 
		http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		//http.setRequestHeader("Content-length", string.length);
		http.setRequestHeader("Connection", "close");
		http.onreadystatechange = returnAjax;
		http.send(string);	
	}

	function returnAjax()
	{
		if(http.readyState == 4 && http.status == 200)
		{
			var response = http.responseText;
			response = response.split('<>SPLIT<>');
			//alert(response);
			response['key'] = response[0].split('.');
			response[0] = response['key'][0];
			replyKey = response['key'][1];
			if(replyKey == 1 || response[0] == 111200 || response[0] == 115000)				
			{		// Text editing
				text = sanitizeForView(response[3]);
				document.getElementById(response[1]).innerHTML = "<form name='a" + response[2] + response[0] + "'><input type='text' onblur='submit" + response[0] + "(\"" + response[2] + "\")' id='text" + response[2] + response[0] + "' /></form>"; 		
				document.getElementById('text' + response[2] + response[0]).value = text;
				document.getElementById('text' + response[2] + response[0]).focus();
			//	alert(document.getElementById('text' + response[2] + response[0]).parentNode.parentNode);
				document.getElementById('text' + response[2] + response[0]).parentNode.parentNode.ondblclick = false;
			}		
			else if(replyKey == 5 || response[0] == 111202)
			{   // Textarea editing
				response[3] = sanitizeForView(response[3]);
				lines = numLines(response[3]);
				document.getElementById(response[1]).innerHTML = response[4] + "<form name='a" + response[2] + response[0] + "'><textarea onkeypress=\"return expandTextarea(event,'text" + response[2] + response[0] + "');\" class=\"quickedit\" wrap=\"off\" onblur='submit" + response[0] + "(\"" + response[2] + "\")' id='text" + response[2] + response[0] + "' rows=" + lines + ">" + response[3] + "</textarea></form>"; 		
				document.getElementById('text' + response[2] + response[0]).focus();
				document.getElementById('text' + response[2] + response[0]).parentNode.parentNode.ondblclick = false;
			}
			else if(replyKey == 2 || response[0] == 111201 || response[0] == 111203 || response[0] == 115001 || response[0] == 111101 || response[0] == 111000 || response[0] == 111001 || response[0] == 116000 || response[0] == 116001 || response[0] == 120100 || response[0] == 120300 || response[0] == 111500 || response[0] == 103500 || response[0] == 113201)
			{    // Replace certain area
				document.getElementById(response[1]).innerHTML = response[2];
			}
			else if(replyKey == 3 || response[0] == 111100 || response[0] == 111300 || response[0] == 120000 || response[0] == 120020 || response[0] == 2 || response[0] == 113200)
			{    // Create input box
				makeInputBox(response);
			}
			else if(replyKey == 9)
			{
				var changeFunc = response[0];
				eval('run' + changeFunc + '(response)');
			}
			else if(response[0] == 110000)
			{
				logMeIn(response);
			}
			else if(response[0] == 110100)
			{
				logMeOut(response);
			}
			else if(replyKey == 6)
			{
				document.getElementById(response[1]).style.display = 'none';
			}
			else if(response[0] == 111301)
			{
				document.getElementById('item' + response[2]).style.display = 'none';
			}
			else if(response[0] == 120101)
			{
				document.getElementById(response[2]).innerHTML = response[3];
			}
			else if(replyKey == 0)
			{ }
			else if(response[0].substr(0,1) == 'e')
			{
				extensionResponse(response);
			}
		}
		else if(http.readyState && (http.readyState == 1 || http.readyState == 3 || http.readyState == 2))
		{
			//var response = http.responseText;
			//response = response.split('<>SPLIT<>');
			//if(response[0] == 111200 || response[0] == 111201 || response[0] == 110000)	
			//{
				//document.getElementById(response[1]).innerHTML = "<i class='loading'>Loading...</i>";
			//}
		}
	}
	
	function sanitizeForView(input)
	{
		var regEx = new RegExp ('<br>', 'gi');
 		input = input.replace(regEx, '\n');
 		var regEx2 = new RegExp ('&nbsp;&nbsp;', 'gi');
		input = input.replace(regEx2, '  ');
		return input;
	}
	
	function sanitizeForDB(input)
	{
		var regEx = new RegExp ('\\n', 'gi');
		input = input.replace(regEx, '<br>');
		var regEx2 = new RegExp ('  ', 'gi');
		input = input.replace(regEx2, '&nbsp;&nbsp;');
		input = encodeURIComponent(input);
		return input;
	}
	
	function numLines(input)
	{
		var lines = input.split("\n");
		lines = lines.length + 1;
		return lines;
	}
	
	function destroy(id,toshow)
	{
		var i = 0;
		while(document.getElementById(id))
		{
			document.getElementById(id).parentNode.removeChild(document.getElementById(id));
			if(toshow != '')
			{
				document.getElementById(toshow).style.visibility = 'visible';
			}
			i++;
		}
	}
	
	function littleHide(id)
	{
		if(id != null && id != "")
		{
			document.getElementById(id).style.visibility = 'hidden';
		}
	}
	
// Input Box creation

	function msgBox(title, id, toshow)
	{
	  return "<div class='toplevel' id='msgtop'>" + title + "<a class='closex' href='javascript:destroy(\"" + id + "\",\"" + toshow + "\")'>X</a></div>";
	}
	
	function endMsgBox(id, text, toshow)
	{
		if(text != '')
		{
			return "<input id='cancelbutton' type='button' class='closebutton cancelbutton' onclick='destroy(\"" + id + "\",\"" + toshow + "\")' value='" + text + "'></div>";
		}
		else
		{
			return "</div>";
		}
	}
	
	function submitMsgBox(id, arg1, arg2, text, toshow)
	{
		if(text != '' && text != 'OK')
		{
			return "<input id='closebutton' class='closebutton' type='submit' onclick='submit" + id + "(\"" + arg1 + "\",\"" + arg2 + "\")' value='" + text + "'>";
		}
		else if(text == 'OK')
		{
			return "<input id='closebutton' type='button' class='closebutton' onclick='destroy(\"box" + id + arg1 + "\",\"" + toshow + "\")' value='" + text + "'></div>";
		}
		else
		{
			return "";
		}
	}
	
	function makeInputBox(response)
	{
		littleHide(response[8]);
    var d = document.createElement("div");
		document.body.appendChild(d);
		d.id = 'box' + response[0] + response[2];
		d.className = 'popupmessage';
		d.innerHTML = msgBox(response[5],'box' + response[0] + response[2], response[8]);
    var newbodyitemdiv = document.createElement('div');    
    newbodyitemdiv.setAttribute('class','body c');
    newbodyitemdiv.setAttribute('className','body c');
    newbodyitemdiv.setAttribute('style','background: white;');
    fields = response[4].split("||");
    fieldHTML = "";
    if(response.length > 11 && response[11] != '')
    {
    	fieldHTML = "<div class='msgboxerror'>" + response[11] + "</div><br>";
    }
    fieldHTML += response[10];
    if(fields.length > 1)
    {
    	fieldHTML += "<br><br>";
			for(var i = 0; i < fields.length; i++)
			{
				j = i + 1;
				fieldplus = fields[j].split("^^");
				fields[j] = fieldplus[0];
				if(fieldplus.length > 1)
				{
					var prefill = fieldplus[1];
				}
				else
				{
				  var prefill = "";
				}
				if(fields[i].substr(0,1) == "+")
				{
					fieldHTML += fields[j] + "<br><textarea rows=5 cols=60 id='" + fields[i] + response[2] + "' name='" + fields[i] + response[2] + "' >" + prefill + "</textarea><br><br>";
				}
				else if(fields[i].substr(0,1) == ".")
				{
					fieldHTML += fields[j] + "<br><br>";
				}
				else
				{
					fieldHTML += fields[j] + " <input id='" + fields[i] + response[2] + "' name='" + fields[i] + response[2] + "' value='" + prefill + "'/><br><br>";
				}
				i++;
			}
			//document.getElementById(fields[1] + response[2]).focus();
		}
		else
		{
			// make the box thinner, more dialog-like. (to-do)
		}
    newbodyitemdiv.innerHTML = fieldHTML;
    d.appendChild(newbodyitemdiv);
    d.innerHTML += submitMsgBox(response[0], response[2], response[9], response[7], response[8]);
    d.innerHTML += endMsgBox('box' + response[0] + response[2], response[6], response[8]);
    document.getElementById('').innerHTML = "";
	}

	
	function balloon(e, text, id)
	{
		if(document.getElementById('myballoon' + id)) { clearTimeout(a); var a = setTimeout( function() { hideBalloon(id); }, 750); return; }
		if (e.pageX) 
		{
			var px = e.pageX;
			var py = e.pageY;
		}
		else if (e.clientX)
		{
   		var px = e.clientX + document.documentElement.scrollLeft;
   		var py = e.clientY + document.documentElement.scrollTop;
   	}
   	px -= 40;
   	py += 20;
   	var d = document.createElement('div');
		document.body.appendChild(d);
		d.id = 'myballoon' + id;
		d.className = 'balloon';
		d.style.position = 'absolute';
		d.style.left = px + 'px';
		d.style.top = py + 'px';
		d.innerHTML = "<div class='balloon-x'><a href='javascript:hideBalloon(" + id + ");'>X</a></div>";
		d.innerHTML += text;
	}
	
	function hideBalloon(id)
	{
		var myb = document.getElementById('myballoon' + id);
		myb.parentNode.removeChild(myb);
	}
	
	function delayhideballoon(id)
	{
		var a = setTimeout( function() { hideBalloon(id); }, 750);
	}
	

//
// SPECIFIC AJAX CODE
// 


	  
// 115000
// Edit Page Title

	function editPageTitle(pid)
	{
		var args = new Array(1);
		args[0] = pid;
		var assoc = new Array(1);
		assoc[0] = 'pid';
		callAjax(args,assoc,115000,'pagetitle',page);
	}
	
// 115001
// Edit Page Title, Part 2

	function submit115000(pid)
	{
		var args = new Array(2);
		var assoc = new Array(2);	    
		TA = 'text' + pid + '115000';
		args[0] = sanitizeForDB(document.getElementById(TA).value);
		assoc[0] = 'title';
		args[2] = pid;
		assoc[2] = 'pid';
		document.getElementById('pagetitle').ondblclick = function() { editPageTitle(pid); };
		callAjax(args,assoc,115001,'pagetitle',page);
	}

  
// 110002
// Reset login (after incorrect login info entered)
 
      function resetlogin(pageID)
      {
				document.getElementById('loginbar').innerHTML = "<form action='javascript:loginSub(" + pageID + ")' name='loginform' onSubmit='' method='post'><span>Username: <input id='loginu' type='text' size='10' name='username' /></span><span>&nbsp; Password: <input type='password' id='loginp' size='10' name='password' /></span> <input type='submit' value='Login'/></form>";
      	document.getElementById('loginu').focus();
			}

// 110100
// Log out, Part 1
   
      function logOut(userID, pid)
      {
	    	var args = new Array(2);
	    	var assoc = new Array(2);
	    	args[0] = userID;
	    	args[1] = pid;
	    	assoc[0] = 'userlogout';
	    	assoc[1] = 'pid';
	    	callAjax(args,assoc,110100,'loginbar',page);
      }
      
      function logMeOut(response)
      {
        document.getElementById('loginbar').innerHTML = response[1];
        document.getElementById('allcontent').innerHTML = response[2];
	     	if(document.getElementById('navzone2'))
	     	{
	     		document.getElementById('navzone2').innerHTML = response[3].slice(52, -8);
	     	}
	     	if(document.getElementById('navzone3'))
	     	{
	     		//document.getElementById('navzone3').innerHTML = response[7];
	     	}	  
      }

			function linkLogin(pageID, sessionKey)
			{
				document.getElementById('loginForm').style.display = 'block';
				document.getElementById('loginbar2').style.display = 'none';
				document.getElementById('loginu').focus();
			}
      
// 111100
// AJAX FOR EDITING CODE: ADDING AN ITEM
// THIS IS FOR ADDING A NEW ITEM

	function addItem(pageID, pos, col)
	{
		var args = new Array(pageID,pos,col);
		var assoc = new Array('pageID','pos','col');
		callAjax(args,assoc,111100,'',page);
	}
	
	function submit111100(pid, col)
	{
		id1 = 'Title' + pid;
		id2 = '+Body' + pid;
		var args = new Array(sanitizeForDB(document.getElementById(id1).value),sanitizeForDB(document.getElementById(id2).value),0,pid);
		var assoc = new Array('Title','Blurb','pos','pid');
		callAjax(args,assoc,111101,col,page);
		destroy('box111100' + pid,'additembutton');
	}
	
// 111000 and 111001
// Show Advanced Item Editing Toolbox

	function showToolbox(iid, img, pid, col, rights, piid)
	{
		if(document.getElementById('toolboxButton' + iid).style.background == '' ||
					document.getElementById('toolboxButton' + iid).style.background.indexOf('depressed') == -1)
		{
			var args = new Array(iid, pid, col, rights, piid);
			var assoc = new Array('iid','pid','col','rights','piid');
			document.getElementById('toolboxButton' + iid).onclick = null;
			document.getElementById('toolboxButton' + iid).style.background = 'url("' + img + 'pencil_depressed.png") no-repeat';
			callAjax(args,assoc,111000,'toolboxButton' + iid,page);
		}
		else
		{
			var args = new Array(iid, img, pid, col, rights, piid);
			var assoc = new Array('iid','img','pid','col','rights','piid');
			document.getElementById('toolboxButton' + iid).style.background = 'url("' + img + 'pencil.png") no-repeat';
			callAjax(args,assoc,111001,'toolboxButton' + iid,page);
			document.getElementById('toolboxButton' + iid).onmouseover = function () { fixClick(iid,img,pid,col,rights,piid); }
		}
	}
	
	// A fix for the toolbox problems we've been having
	function fixClick(iid,img,pid,col,rights,piid)
	{
		document.getElementById('toolboxButton' + iid).onmouseover = null;
		document.getElementById('toolboxButton' + iid).onclick = new Function (" showToolbox(" + iid + ",'" + img + "'," + pid + ",'" + col + "'," + rights + "," + piid + "); return false; " );
	}
	
// 116000 and 116001
// Show Advanced Page Editing Toolbox

	function showPageToolbox(img, pid, col, rights)
	{
		if(document.getElementById('toolboxPageButton' + pid).style.background == '' ||
					document.getElementById('toolboxPageButton' + pid).style.background.indexOf('depressed') == -1)
		{
			var args = new Array(img, pid, col, rights);
			var assoc = new Array('img','pid','col','rights');
			document.getElementById('toolboxPageButton' + pid).onclick = null;
			document.getElementById('toolboxPageButton' + pid).style.background = 'url("' + img + 'pencil_depressed.png") no-repeat';
			callAjax(args,assoc,116000,'toolboxPageButton' + pid,page);
		}
		else
		{
			var args = new Array(img, pid, col, rights);
			var assoc = new Array('img','pid','col','rights');
			document.getElementById('toolboxPageButton' + pid).style.background = 'url("' + img + 'pencil.png") no-repeat';
			callAjax(args,assoc,116001,'toolboxPageButton' + pid,page);
			document.getElementById('toolboxPageButton' + pid).onmouseover = function () { fixPageClick(img,pid,col,rights); }
		}
	}
	
	// A fix for the toolbox problems we've been having
	function fixPageClick(img,pid,col,rights)
	{
		document.getElementById('toolboxPageButton' + pid).onmouseover = null;
		document.getElementById('toolboxPageButton' + pid).onclick = new Function (" showPageToolbox('" + img + "'," + pid + ",'" + col + "'," + rights + "); return false; " );
	}
	
// 111300
// Delete Item, Part 1

	function deleteItem(iid, pid, col)
	{
		var args = new Array(iid,pid,col);
		var assoc = new Array('iid','pid','col');
		callAjax(args,assoc,111300,'',page);
  }
  
// 111301
// Delete Item, Part 2

	function submit111300(ids, col)
	{
		ids = ids.split("-");
		iid = ids[0];
		pid = ids[1];
		col = ids[2];
		var args = new Array(iid,pid,col);
		var assoc = new Array('iid','pid','col');
		callAjax(args,assoc,111301,'',page);
		destroy('box111300' + iid + '-' + pid + '-' + col,'');
		document.getElementById('').innerHTML = "";
	}

// 120000
// Get Item Permissions

	  function getItemPerm(iid, pid)
	  {
	  	var args = new Array(iid,pid);
	  	var assoc = new Array('iid','pid');
	  	callAjax(args,assoc,120000,'',page);
	  }
	  
// 120020
// Get Page Permissions

	  function getPagePerm(pid)
	  {
	  	var args = new Array(pid,0);
	  	var assoc = new Array('pid','num');
	  	callAjax(args,assoc,120020,'',page);
	  }

// 120100
// Add Permissions, Part 1

	function showAddPermissions(datatype, iid)
	{
		var args = new Array(iid,datatype)
		var assoc = new Array('iid','datatype');
		callAjax(args,assoc,120100,'showAdd' + datatype + 'PermissionsButton' + iid,page);
	}	

// 120101
// Add Permissions, Part 2
	function addPermissions(iid, datatype)
	{
		var args = new Array(datatype, datatype + 'PermData' + iid, iid, document.getElementById('cascadePagePerms' + iid).value, document.getElementById('addpermnames' + iid).options[document.getElementById('addpermnames' + iid).selectedIndex].value, document.getElementById('addperm1' + iid).value, document.getElementById('addperm2' + iid).value, document.getElementById('addperm3' + iid).value, document.getElementById('addperm4' + iid).value);
		var assoc = new Array('datatype', 'putin', 'iid', 'cpp','name', 'view', 'edit', 'admin', 'permedit');
		callAjax(args,assoc,120101,'showAdd' + datatype + 'PermissionsButton' + iid,page);
	} 
	
// 120102
// JS Cancel of Adding Permissions
	function cancelAddPermissions(datatype, iid)
	{
		document.getElementById('showAdd' + datatype + 'PermissionsButton' + iid).innerHTML = "<a href='#' onclick='showAddPermissions(\"" + datatype + "\"," + iid + "); return false;'>Add Permissions Info</a>";
	}
	
// 120300
// Remove Permissions, Part 1
	function removePermissions(upermid, iid, datatype)
	{
		var args = new Array(upermid, iid, datatype);
		var assoc = new Array('upermid','iid','datatype');
		callAjax(args,assoc,120300,datatype + 'PermData' + iid,page);
	}

		function hide(id)
		{
			var i = 0;
			while(document.getElementById(id))
			{
				document.getElementById(id).parentNode.removeChild(document.getElementById(id));
				if(id == 'newitembox')
				{
					document.getElementById('additembutton').style.display = 'inline';
				}
				if(id == 'adduserbox')
				{
					document.getElementById('addperson').style.display = 'inline';
				}
				i++;
			}
		}

// 111500		
// Move items up and down on the page

		function moveItem(newPos, piid, pid, col)
		{
			var args = new Array(newPos, piid, pid, col);
			var assoc = new Array('newPos', 'piid', 'pid', 'col');
			callAjax(args, assoc, 111500, col,page);
		}

// 113200
// Add New Navigation Item and Page

		function addNavItem(pid, zone)
		{
			var args = new Array(pid, zone);
			var assoc = new Array('pid', 'zone');
			callAjax(args,assoc,'113200','',page);
		}
		
		function submit113200(pid, zone)
		{
			id1 = 'Title' + pid;
			id2 = 'LeftTitle' + pid;
			id3 = 'URL' + pid;
			var args = new Array(sanitizeForDB(document.getElementById(id1).value),sanitizeForDB(document.getElementById(id2).value),sanitizeForDB(document.getElementById(id3).value),zone,pid);
			var assoc = new Array('Title','LeftTitle','URL','zone','pid');
			callAjax(args,assoc,113201,'left2x',page);
			destroy('box113200' + pid,'addnavbutton');
		}

// 113700
// Move nav item within zone, up and down 

		// pure js function!
		function showNavToolbox(snid)
		{
			var sid = 's' + snid;
			var nid = 'ni' + snid;
			if(document.getElementById(sid) && (document.getElementById(sid).style.display == '' || document.getElementById(sid).style.display == 'none'))
			{
				document.getElementById(sid).style.display = 'inline';
			}
			else
			{
				document.getElementById(sid).style.display = 'none';
			}
		}	
		
		function moveNavItemUD(newPos, navid, pid, zone)
		{
			var args = new Array(newPos, navid, pid, zone);
			var assoc = new Array("newPos", "navid", "pid", "zone");
			callAjax(args, assoc, 113701, 'left2x', page);
		}
		
// 131001
// Javascript for putting user info in a popup

		function personDetailsPopup(uid)
		{
			var args = new Array(uid, 0);
			var assoc = new Array("uid", "num");
			callAjax(args, assoc, 131001, '', page);			
		}
		
// 103500
// Reload item

		function reloadItem(iid, pid, col)
		{
			document.getElementById('reloading' + iid).innerHTML = "<i>Loading...</i>";
			var args = new Array(iid, pid,col);
			var assoc = new Array('iid','pid','col');
			callAjax(args,assoc,'103500','itemblurb' + iid,page);
		}
		
		
// 132300
// Change your own Password

		function changePass(uid, pid)
	  {
	  	var args = new Array(uid, pid);
	  	var assoc = new Array('uid', 'pid');
	  	callAjax(args, assoc, 132300, '', page);
	  }
	  
	  function submit132300(uid, num)
	  {
			id1 = 'OldP' + uid;
			id2 = 'NewP' + uid;
			id3 = 'NewP2' + uid;
			var args = new Array(sanitizeForDB(document.getElementById(id1).value),sanitizeForDB(document.getElementById(id2).value),sanitizeForDB(document.getElementById(id3).value),uid);
			var assoc = new Array('OldP','NewP','NewP2','uid');
			destroy('box132300' + uid,'changepbutton');
			callAjax(args,assoc,132301,'',page);
	  }
	  
	  function submit132301(uid, num)
	  {
	  	submit132300(uid, num);
	  	document.getElementById('box132301' + uid).parentNode.removeChild(document.getElementById('box132301' + uid));
	  }
	  
// 110300
// Forced to change password on login

		function changePass2(uid, pid)
		{
	  	var args = new Array(uid, pid);
	  	var assoc = new Array('uid', 'pid');
	  	callAjax(args, assoc, 110300, '', page);
		}
	  
// 103600
// Change the month on the calendar

		function calGoTo(yr,mt,mf,mb,uid, iid)
		{
			var args = new Array(yr, mt, mf, mb, uid, iid)
			var assoc = new Array('caltoyr', 'caltomt', 'mf', 'mb', 'uid', 'iid');
			callAjax(args, assoc, 103600, 'itemblurb' + iid, page);
		}

// 150000
// Non-AJAX Hovering Effects

		function hoverCalDay(th,color)
		{
			th.style.background = '#ffffff';
			th.style.cursor = 'pointer';
		}
		
		function outCalDay(th,color)
		{
			th.style.background = color;
			th.style.cursor = 'default';
		}

// 150001
// Add Single Event

		function addEventPopup(yr, mt, date, iid, e)
		{
			if(e.srcElement)
			{
				var evvy = e.srcElement;
			}
			else
			{
		 		var evvy = e.target;
		 	} 
			if(evvy.nodeName != "A" || evvy.id == 'switchtosingle')
			{
				destroy('box151001' + iid,'');
				var args = new Array(yr, mt, date, iid)
				var assoc = new Array('yr', 'mt', 'thisdate', 'iid');
				callAjax(args, assoc, 150001, '', page);
	    }		
		}
		
		function submit150001(iid, thisday)
		{
			id1 = 'Title' + iid;
			id2 = 'Start' + iid;
			id3 = 'End' + iid;
			id4 = 'Date' + iid;
			var args = new Array(sanitizeForDB(document.getElementById(id1).value),sanitizeForDB(document.getElementById(id2).value),sanitizeForDB(document.getElementById(id3).value),iid,thisday,sanitizeForDB(document.getElementById(id4).value));
			var assoc = new Array('Title','Start','End','iid','thisday','Date');
			callAjax(args,assoc,150002,'itemblurb' + iid,page);
			destroy('box150001' + iid,'');
		}
		
// 150101
// Editing an event's information

		function editEventPopup(eid,iid)
		{
			var args = new Array(eid, iid);
			var assoc = new Array('eid', 'iid');
			callAjax(args, assoc, 150101, '', page);
		}
		
		function submit150101(iid, thisday)
		{
			id1 = 'Title' + iid;
			id2 = 'Start' + iid;
			id3 = 'End' + iid;
			id4 = 'Date' + iid;
			var args = new Array(sanitizeForDB(document.getElementById(id1).value),sanitizeForDB(document.getElementById(id2).value),sanitizeForDB(document.getElementById(id3).value),iid,thisday,sanitizeForDB(document.getElementById(id4).value));
			var assoc = new Array('Title','Start','End','iid','thisday','Date');
			callAjax(args,assoc,150102,'itemblurb' + iid,page);
			destroy('box150101' + iid,'');	
		}
	
// 150201
// Deleting an event

		function deleteEvent(eid,iid)
		{
			var args = new Array(eid, iid);
			var assoc = new Array('eid', 'iid');
			callAjax(args, assoc, 150201, '', page);
		}

		function submit150201(iid, eid)
		{
			var args = new Array(iid,eid);
			var assoc = new Array('iid','eid');
			callAjax(args,assoc,150202,'itemblurb' + iid,page);
			destroy('box150201' + iid,'');
		}
		
		

// 151001
// Add Multiple Event

		function addMultiEventPopup(yr, mt, date,iid)
		{
		//	alert("Sorry, Repeating Events not yet Supported");
			destroy('box150001' + iid,'');
			var args = new Array(yr, mt, date, iid)
			var assoc = new Array('yr', 'mt', 'thisdate', 'iid');
			callAjax(args, assoc, 151001, '', page);	
		}
		
		function submit151001(iid, thisday)
		{
			//alert(thisday);
			id1 = 'Title' + iid;
			id2 = 'Start' + iid;
			id3 = 'End' + iid;
			id4 = 'Type' + iid;
			id5 = 'Details' + iid;
			id6 = 'StartRep' + iid;
			id7 = 'EndRep' + iid;
			id8 = 'Skip' + iid;
			id9 = 'D1' + iid;
			id10 = 'D2' + iid;
			var args = new Array(sanitizeForDB(document.getElementById(id1).value),sanitizeForDB(document.getElementById(id2).value),sanitizeForDB(document.getElementById(id3).value),iid,thisday,sanitizeForDB(document.getElementById(id4).value),sanitizeForDB(document.getElementById(id5).value),sanitizeForDB(document.getElementById(id6).value),sanitizeForDB(document.getElementById(id7).value),sanitizeForDB(document.getElementById(id8).value),sanitizeForDB(document.getElementById(id9).value),sanitizeForDB(document.getElementById(id10).value));
			var assoc = new Array('Title','Start','End','iid','thisday','Type','Details','StartRep','EndRep','Skip','D1','D2');
			callAjax(args,assoc,151002,'itemblurb' + iid,page);
			destroy('box151001' + iid,'');
		}
		
// 130400 and 130405
// Send member/users introductory message and password.

		function sendPass(uid)
		{
			var args = new Array(uid, 0);
			var assoc = new Array('uid', 'num');
			callAjax(args, assoc, 130400, '', page);
		}
		
		function submit130400(uid, realname)
		{
			var args = new Array(uid, realname);
			var assoc = new Array('uid', 'realname');
			callAjax(args, assoc, 130405, '', page);
			destroy('box130400' + uid,'');
		}
	
	

		
		function cancelWarn()
		{
			var warned = confirm('Are you sure you want to do leave this page? Your email will be lost!');
			return warned;
		}

		function cancelEmail(pid, col)
		{
			var args = new Array(col, pid);
	  	var assoc = new Array('col', 'pid');
	  	if(document.getElementById('emailtitle') && (document.getElementById('emailtitle').value != '' || document.getElementById('emailbody').value != ''))
	  	{
	  		callAjax(args, assoc, 130406, '', page);
	  	}
	  	else
	  	{
	  		window.onbeforeunload = null; 
	  		callAjax(args, assoc, 130407, col, page);
	  	}
		}
		
		function submit130406(pid, col)
		{
			var args = new Array(col, pid);
	  	var assoc = new Array('col', 'pid');
	  	callAjax(args, assoc, 130407, col, page);
	  	window.onbeforeunload = null; 
	  	destroy('box130406' + pid, '');
		}


// !!?!?!

		function hidepluslogin(id,uid,user,pass,pid)
		{
			while(document.getElementById(id))
			{
				document.getElementById(id).parentNode.removeChild(document.getElementById(id));
			}			
			var d = new Date()
			var ed = d.getTime();
			http.open('POST', page + '?pid=' + pid + '&user=' + user + '&pass=' + pass + '&uid=' + uid + '&dateextrafunction=' + ed, true); 
	    http.onreadystatechange = login2Sub; 
	    http.send(null);
		}
		

// This is obsolete and needs to be replaced ASAP.

	function extensionResponse(response)
	{
		extid = response[0].split('_');
		if(extid[0] == 'e1')
		{		
			if(response[0] == 'e1_0001' || response[0] == 'e1_0021')
			{
				makeInputBox(response);
			}
			if(response[0] == 'e1_0002' || response[0] == 'e1_0012')
			{
				if(response[0] == 'e1_0012')
				{
				  document.getElementById(response[1]).ondblclick = function() { book_editBookInfo(response[4], response[3], 0); };
				}
				document.getElementById(response[1]).innerHTML = response[2];
			}
			if(response[0] == 'e1_0011')
			{
				text = sanitizeForView(response[3]);
				if(response[5] == "Notes" || response[5] == "Plot" || response[5] == "Review")
				{
				  r2 = response[2] + "\",\"" + response[5] + "\",\"" + response[4];
					lines = numLines(text);
					document.getElementById(response[1]).innerHTML = "<form name='a" + response[2] + response[0] + "'><textarea onkeypress=\"return expandTextarea(event,'text" + response[2] + response[0] + "');\" class=\"quickedit\" wrap=\"off\" onblur='submit" + response[0] + "(\"" + r2 + "\")' id='text" + response[2] + response[0] + "' cols=30 rows=" + lines + ">" + text + "</textarea></form>"; 		
					document.getElementById('text' + response[2] + response[0]).focus();
					document.getElementById('text' + response[2] + response[0]).parentNode.parentNode.ondblclick = false;
					//document.getElementById('text' + response[2] + response[0]).parentNode.parentNode.style.width = '100px';
				}
				else
				{
					document.getElementById(response[1]).innerHTML = "<form name='a" + response[2] + response[0] + "'><input type='text' onblur='submit" + response[0] + "(\"" + response[2] + "\",\"" + response[5] + "\",\"" + response[4] + "\")' id='text" + response[2] + response[0] + "' /></form>"; 		
					document.getElementById('text' + response[2] + response[0]).value = text;
					document.getElementById('text' + response[2] + response[0]).focus();
					document.getElementById('text' + response[2] + response[0]).parentNode.parentNode.ondblclick = false;
				}
			}
			if(response[0] == 'e1_0022')
			{
				document.getElementById('book' + response[2]).innerHTML = '';
			}
		}
		if(extid[0] == 'e2')
		{
			if(response[0] == 'e2_0001' || response[0] == 'e2_0003' || response[0] == 'e2_0021')
			{
				makeInputBox(response);
			}
			if(response[0] == 'e2_0002' || response[0] == 'e2_0004' || response[0] == 'e2_0012')
			{
				document.getElementById(response[1]).innerHTML = response[2];
			}
			if(response[0] == 'e2_0011')
			{
				text = sanitizeForView(response[3]);
				document.getElementById(response[1]).innerHTML = "&nbsp;<form style='position: absolute;' name='a" + response[2] + response[0] + "'><input type='text' onblur='submit" + response[0] + "(\"" + response[2] + "\",\"" + response[5] + "\",\"" + response[4] + "\")' id='text" + response[2] + response[0] + "' /></form>"; 		
				document.getElementById('text' + response[2] + response[0]).value = text;
				document.getElementById('text' + response[2] + response[0]).focus();
			}
			if(response[0] == 'e2_0022')
			{
				document.getElementById('member' + response[2]).style.display = 'none';
			}
		}
	}
		


