// scripts for portal
// REQUIRES: cytopia.cc/gnu/utils.js; 
// REQUIRES: cytopia.cc/js/ts_picker.js
// REQUIRES: cytopia.net/js/filesystem.js
// REQUIRES: cytopia.net/js/menulib
// REQUIRES: cytopia.net/js/UniversalEventListener.js
// REQUIRES: cytopia.net/js/render_lib.js
//
// @author kcowan


// GLOBALS
//*******************************************************************************************************

var MAIN_CONTENT = "main_content";
var NEW_ITEM = "new_message";
var BOARD_CONTENT = "board_output";
var COOKIE_NAME = "cpid";
var USER_KEY = "";
var POP_WINDOW_CLASS = "unselectedDisplayWhite";
var SHOWALL = "show_all";

var SELECTED_USER = "";

var SENT_ITEMS_FOLDER_ID = "_sentItems";





// OBJECTS
//*******************************************************************************************************

function DisplayManager(){} // core object manager

function Section(){}// core section object

function User(){}// core user object

function CWindow(){} //  a 'winodw' object using <div> tags

function Todo(){} // todo item

function LinkItem(){} // link item

function Note(){} // note item

function Buddy(){} // buddy item

function Email(){} // email item

function Contact(){} // contact item

function Blog(){} // blog item

function Message(){} // message board item

function PortalImage(){} // portal image object

function PortalAudio(){} // portal audo object

function Music(){} // a 'music' entry

function PortalFile(){} // a portal file

function CommonObject(){} // a generic object

function ActionButton(){} // represents a (flash) button object

function ActionMap(){} // represents an action link for a section

function ItemActionMap(){} // represents an action for an item in a group

function File(){}// represents a file object in users enviro




// GET/ SET
//*******************************************************************************************************

// DISPLAY MANAGER GET/SET
//-----------------------------------------------------

function _getSelection(){ return this.currentSelection; }
function _setSelection(id){ this.currentSelection = id; }

function _getSelectionName(){ return this.selectionName; }
function _setSelectionName(name){ this.selectionName = name; }


function getActionMapping(sectionName, itemName){
   actionMapping = new Array();

   iter = displayMgr.action_maps.iterator();

   while(iter.hasNext()){
		if(iter.next().sectionName == sectionName && iter.next().displayName == itemName ){
			return iter.next();
		}
   }

	return false;

}

function getArrayMapping(sectionName){

   iter = displayMgr.action_maps.iterator();
   emptyMapping = new Array();

   while(iter.hasNext()){
		if(iter.next().sectionName == sectionName  ){
			return eval("displayMgr."+iter.next().array);
		}
   }
	return emptyMapping;
}

function getRendererMapKey(sectionName){

   iter = displayMgr.action_maps.iterator();
   emptyMapping = new Array();

   while(iter.hasNext()){
		if(iter.next().sectionName == sectionName  ){
			return iter.next().renderer;
		}
   }
   return 'Common';
}

function getActionMappingArray(sectionName){
   actionMapping = new Array();

   iter = displayMgr.action_maps.iterator();

   while(iter.hasNext()){
	  
		if(iter.next().sectionName == sectionName){
			// alert("action map... compare current section: "+iter.next().displayName + " section passed: "+sectionName);
			actionMapping.push(iter.next());
		}
   }

	return actionMapping;

}

function getItemActionMappingArray(sectionName){
   itemActionMapping = new Array();

   iter = displayMgr.item_action_maps.iterator();

   for(git=0; git<displayMgr.item_action_maps.length; git++){
		if(displayMgr.item_action_maps[git].sectionName == sectionName){
			itemActionMapping.push(displayMgr.item_action_maps[git]);
		}
   }

	return itemActionMapping;

}

function getFriendlyDateFromTimestamp(dateString){
  // alert("date: "+dateString);
   
   try{
	var year = ""; 
	var month = ""; 
	var day = ""; 

	for(i=0; i<dateString.length; i++){
        if(i<=3){
			year = year + dateString.charAt(i);
		}else if(i == 4 || i == 5){
			month = month + dateString.charAt(i);
		}else if(i== 6 || i == 7){
			day = day + dateString.charAt(i);

		}
		
	} 
	}catch(anErr){
		 return "no date available";
	}

	return month + "/"+ day +"/"+year;
}


function _getWindowById(windowId){
	
	iter = this.windows.iterator();
	while(iter.hasNext()){
		if(iter.next().id == windowId){
			//alert("found a match: "+windowId);
			return iter.next();
		}
	}
	return false;

}

function _getNoteById(noteId){
	iter = this.notes.iterator();
	while(iter.hasNext()){
		if(iter.next().id == noteId){
			return iter.next();
		}
	}
	return false;

}

function _getSectionById(sectionId){
	iter = this.sections.iterator();
	while(iter.hasNext()){
		if(iter.next().id == sectionId){
			return iter.next();
		}
	}
	return false;

}

function _getTaskById(taskId){
	iter = this.tasks.iterator();
	while(iter.hasNext()){
		if(iter.next().id == taskId){
			return iter.next();
		}
	}
	return false;

}

function _getEmailById(emailId){
	iter = this.emails.iterator();
	while(iter.hasNext()){
		if(iter.next().id == emailId){
			return iter.next();
		}
	}
	return false;

}

function _getContactById(contactId){
	iter = this.contacts.iterator();
	while(iter.hasNext()){
		if(iter.next().id == contactId){
			return iter.next();
		}
	}
	return false;

}

function _getMessageById(messageId){
	iter = this.messages.iterator();
	while(iter.hasNext()){
		if(iter.next().id == messageId){
			return iter.next();
		}
	}
	return false;

}

function _getBlogById(blogId){
	iter = this.blogs.iterator();
	while(iter.hasNext()){
		if(iter.next().id == blogId){
			return iter.next();
		}
	}
	return false;

}

function _getPortalImageById(imgId){
	iter = this.portalImages.iterator();
	while(iter.hasNext()){
		if(iter.next().id == imgId){
			return iter.next();
		}
	}
	return false;

}


function _getContacts(){
	return this.contacts;
}

function setSelectedUser(userDisplayName){
	SELECTED_USER = userDisplayName;
}

function getSelectedUser(){
	return SELECTED_USER;
}

// ACTION FUNCTIONS
//********************************************************************************************************

function findBuddyByUserName(userName){
	iter = displayMgr.buddies.iterator();
	while(iter.hasNext()){
      if(iter.next().name == userName){
		  return iter.next();
	  }
	}
	return false;
}
function addUserToBuddyList(){
  //alert("[this feature is under development] \r add "+SELECTED_USER+" to buddy list.");
  buddy = findBuddyByUserName(SELECTED_USER);
  if(buddy){
	  alert(SELECTED_USER+" is already on your buddy list.");
	  toggleMenus();
	  return;
  }
  if(SELECTED_USER != user.userName){
  setPopWinParams(100,200);
  var params = getPopWinParams();
  theURL = "addBuddy.php?buddyName="+SELECTED_USER;
  toggleMenus();
  window.open(theURL, "buddyWin", params);
  } else {
	  alert("You cannot add yourself to your buddies list.");
	  toggleMenus();
  }

  
}
function folderOperation(action){
	    toggleMenus();
	     setPopWinParams(200, 350);
		var params = getPopWinParams();
		folder = getSelectedFolder();
		var section = displayMgr.getSelectionName();
		var theURL = "addFolder.php?userId="+folder.userId+"&name="+escape(folder.name)+"&parentId="+folder.id+"&action="+action+"&section="+section;
		//alert(theURL);
		window.open(theURL, "addFolderWin", params);
		
}

function classifyOperation(name, id, table){

		setPopWinParams(400, 550);
		var params = getPopWinParams();
		isFile = "file";
		var section = displayMgr.getSelectionName();
		var theURL = "classify.php?itemToClassify="+escape(name)+"&rowid="+id+"&isFile="+isFile+"&table="+table+"&section="+section;
		//alert(theURL);
		window.open(theURL, "addFolderWin", params);
}

function deleteOperation(name, id, table){

		setPopWinParams(400, 550);
		var params = getPopWinParams();
		var section = displayMgr.getSelectionName();
		var theURL = "deleteItem.php?itemToDelete="+escape(name)+"&rowid="+id+"&table="+table+"&section="+section;
		//alert(theURL);
		window.open(theURL, "deleteItemWin", params);
}

function classifyFolderOperation(){
        toggleMenus();
		setPopWinParams(400, 550);
		
		var params = getPopWinParams();
		isFile = "folder";
		table = "filesystem";
		var section = displayMgr.getSelectionName();
		folder = getSelectedFolder();
		var theURL = "classify.php?itemToClassify="+escape(folder.name)+"&rowid="+folder.id+"&isFile="+isFile+"&table="+table+"&section="+section;
		//alert(theURL);
		window.open(theURL, "addFolderWin", params);
}

function editContact(contactId){
	setPopWinParams(400,550)
	var params = getPopWinParams();
	var theURL = "editContact.php?contactId="+contactId;
	window.open(theURL, "editContact", params);

}

function showAllOperation(){

    loadDocumentsRemote(SHOWALL);
	return;

}

function doLogout(){
	  window.location = "logout.php";
}
function doAdmin(){
	  window.location = "admin.php";
}
function doHelp(){
	window.location = "help.php";
}
function doCytopia(){
	window.location = "http://www.cytopia.net/";
}

function doAbout(){
	window.location = "about.php";
}

function doEditUser(){
	window.location = "viewUser.php";
}
function doEditHTML(){

    window.location = "viewHTML.php";
}

function doNewsletter(){
	window.location = "newsletter.php";
}


function _updateSection(section){
	
	for(i=0; i<this.sections.length; i++){
		if(this.sections[i].id == section.id){
			this.sections[i] = section;
			return true;
		}
	}
	return false;
			
}

function loadHomeSection(){
	buf = new StringBuffer();
	loadCurrentSelection("button_home");
	buf.append(renderSectionHeader("home"));
	buf.append("User: "+user.userName+"'s home");
	buf.append(tmp.userHTMLContent);
	mainEle = document.getElementById(MAIN_CONTENT);
	mainEle.innerHTML = buf.toString();

	return;
}
function loadSection(button_name){
	if(button_name == "home"){
		loadHomeSection();
		return;
	}
	//HACK REMOVE WHEN DATABASE IS PRISTINE
	if(button_name == "Tasks"){ button_name = "tasks"; }
	// END HACK

   // save the state of the current section's filesystem
	currentSrc =  new String(document.getElementById(FILESYSTEM_CONTENT_LAYER).innerHTML);
	//alert("soure: "+ currentSrc);
	currentSection = displayMgr.getSectionById(displayMgr.getSelectionName());
	currentSection.filesystem = currentSrc;
	currentSection.isRendered = true;
	displayMgr.updateSection(currentSection);

   // now get selected section
	section = displayMgr.getSectionById(button_name);
	

	if(section.isRendered){
           document.getElementById(FILESYSTEM_CONTENT_LAYER).innerHTML = section.filesystem;
	} else {

  // if(getFileSystem().getFolderById("_root").isExpanded){
  //    doFolderExpand(ROOT_ID);
 //  }
	loadCurrentSelection("button_"+button_name);
	clearNewItemLayer();
	displayMgr.setSelectionName(button_name);
	buf = new StringBuffer();
	isLight = false;
	fs = displayMgr.fileSystem;
	fs.setCurrentSection(button_name);
	document.getElementById(FILESYSTEM_CONTENT_LAYER).innerHTML = fs.render();
	}
    fs.renderDocuments(ROOT_ID);


}

function loadBuddyList(){

}
function loadDocumentsRemote(folderId){
	//alert("load docs remote: "+folderId+" section: "+displayMgr.getSelectionName());
  try{
	if(!folderId){ 
		folderId = ROOT_ID; 
		}

	sectionName = displayMgr.getSelectionName();
    renderer_key = getRendererMapKey(sectionName);
	buf = new StringBuffer();
	isLight = true;
    buf.append(renderSectionHeader(sectionName));
	buf.append("<table cellpadding=0 cellspacing=0 border=0 width='100%'>");
	buf.append(eval("render"+renderer_key+"HeaderRow()"));
	theArray = getArrayMapping(sectionName);
	iter = theArray.iterator();
	while(iter.hasNext()){
		if(iter.next().folderId == folderId){
			//alert("item folder: " + iter.next().folderId +" and current folder: "+folderId);
			if(isLight){
			isLight = false;
		    } else {
			isLight = true;
		   }
		   buf.append(eval("render"+renderer_key+"ItemRow(iter.next(),isLight)"));
		} else if(folderId == SHOWALL){
			if(isLight){
			isLight = false;
		   } else {
			isLight = true;
		   }
           buf.append(eval("render"+renderer_key+"ItemRow(iter.next(),isLight)"));
		}


	}
	buf.append("</table> <br>");

   // alert(buf.toString());
	mainEle = document.getElementById(MAIN_CONTENT);
	mainEle.innerHTML = buf.toString();
  }catch(anErr){
	  alert("an error occured loading documents [remote]: "+anErr.message);
	  return false;
  }

	return true;
}

function loadEmailForm(){

  newMailEle = document.getElementById(NEW_ITEM);
  newMailEle.innerHTML = renderEmailForm();
  return;

}

function loadTaskForm(){
  newTaskEle = document.getElementById(NEW_ITEM);
  newTaskEle.innerHTML = renderTaskForm();
  return;
}

function loadLinkForm(){
  newLinkEle = document.getElementById(NEW_ITEM);
  newLinkEle.innerHTML = renderLinkForm();
  return;
}


function loadNoteForm(){
  newNoteEle = document.getElementById(NEW_ITEM);
  newNoteEle.innerHTML = renderNoteForm();
  return;
}

function loadContactForm(){
  newContactEle = document.getElementById(NEW_ITEM);
  newContactEle.innerHTML = renderContactForm();
  return;
}

function loadBlogForm(){
  newBlogEle = document.getElementById(NEW_ITEM);
  newBlogEle.innerHTML = renderBlogForm();
  return;
}

function loadBoardForm(messageId){
	if(messageId == "undefined"){
		  messageId = null;
	}
  newBlogEle = document.getElementById(NEW_ITEM);
  newBlogEle.innerHTML = renderBoardForm(messageId);
  return;
}

function loadImageForm(){
  newBlogEle = document.getElementById(NEW_ITEM);
  newBlogEle.innerHTML = renderImageForm();
  return;
}

function loadMusicForm(){
  newMusicEle = document.getElementById(NEW_ITEM);
  newMusicEle.innerHTML = renderMusicForm();
  return;
}

function loadFileForm(){
  newBlogEle = document.getElementById(NEW_ITEM);
  newBlogEle.innerHTML = renderFileForm();

  document.getElementById("userbytes").value = CURRENT_STORAGE;

  return;
}

function loadHelpForm(){
  newHelpEle = document.getElementById(NEW_ITEM);
  newHelpEle.innerHTML = renderHelpForm(ADMIN_ROLE);

  return;
}

function loadPMForm(toName, toEmail){
	SELECTED_USER = toName;
  newBlogEle = document.getElementById(NEW_ITEM);
  newBlogEle.innerHTML = renderPMForm();
  
  document.getElementById("toName").value = toName;
  document.getElementById("toEmailAddress").value = toEmail;

  return;
}

function loadContactEmailForm(toName, toEmail){

		loadEmailForm();
		 document.getElementById("toName").value = toName;
		 document.getElementById("toEmailAddress").value = toEmail;

		 return;
}

function queuePMForm(){
   buddy = findBuddyByUserName(SELECTED_USER);
   toggleMenus();
   var email = "";
   var name = "";
   if(!buddy){
	   email = "";
	   name = SELECTED_USER;
   } else {
       name = buddy.name;
	   email = buddy.email;
   }
   loadPMForm(name, email);
}
function showImage(imgId){
   domWin = displayMgr.getWindowById("img_"+imgId);
   img = displayMgr.getPortalImageById(imgId);
   var isShared = '';
        if(img.isShared == "on" && img.userId != USER_KEY){ isShared = "(shared)"; }
   if(!domWin){
   domWin = new CWindow();
   str_buffer = new StringBuffer();
   str_buffer.append("<table width='100%' cellpadding=0 cellspacing=0 border=0> <tr class=unselectedDisplayWhite><td>");
   str_buffer.append("<b>"+img.name+"&nbsp;"+isShared+"<b></td></tr><tr> ");
   str_buffer.append("<td> <img src='users/data/"+img.userId+"/images/"+img.src+"'  border=0 > </td></tr>");
   str_buffer.append("<tr class=unselectedDisplay><td><img src='../images/close.gif' border=0 class=cursorhand onclick='hideNote(\"img_"+imgId+"\");'>");
   str_buffer.append("</td></tr></table>");
   domWin.id = "img_"+imgId;
   domWin.layerId = "imglayer_"+imgId;
   domWin.toolId = "imgtool_"+imgId;
   domWin.contentId = "imgcontent_"+imgId;
   
   vTaskWin = makeNewDOMWindow(domWin.layerId,20,20,475,485,img.name,str_buffer.toString(),domWin.toolId, domWin.contentId);

   domWin.handle = vTaskWin;
   domWin.isVisible = true;

   displayMgr.windows.push(domWin);
   } else {
	   doShowLayer(domWin.layerId);
	   doShowLayer(domWin.toolId);
	   doShowLayer(domWin.contentId);
   }
}

function showEmail(emailId){
     setPopWinParams(500, 700);
     var params = getPopWinParams();
	 var theURL = "viewEmail.php?emailId="+emailId;
	 emailWin = window.open(theURL, "emailWin", params);
}

function showBlog(blogId){
     setPopWinParams(500, 700);
     var params = getPopWinParams();
	 var theURL = "viewBlog.php?blogId="+blogId;
	 blogWin = window.open(theURL, "blogWin", params);


}
function showTask(taskId){
   domWin = displayMgr.getWindowById(taskId);
   task = displayMgr.getTaskById(taskId);
    //alert("show task: "+task.name);
   if(!domWin){
   domWin = new CWindow();
   buffer = new StringBuffer();

   buffer.append("<table width='100%' cellpadding=0 cellspacing=0 border=0> <tr class=unselectedDisplayWhite><td>");
   buffer.append("Name: "+task.name);
   buffer.append("</td></tr>");
   buffer.append("<tr class=unselectedDisplay><td><img src='../images/close.gif' border=0 class=cursorhand onclick='hideNote(\""+task.id+"\");'>");
   buffer.append("</td></tr></table>");

   domWin.id = taskId;
   domWin.layerId = "task_"+taskId;
   domWin.toolId = "tasktool_"+taskId;
   domWin.contentId = "taskcontent_"+taskId;
   
   vTaskWin = makeNewDOMWindow(domWin.layerId,200,200,275,285,task.name,buffer.toString(),domWin.toolId, domWin.contentId);

   domWin.handle = vTaskWin;
   domWin.isVisible = true;

   displayMgr.windows.push(domWin);
   } else {
	   doShowLayer(domWin.layerId);
	   doShowLayer(domWin.toolId);
	   doShowLayer(domWin.contentId);
   }

}

function showNote(noteId){
   domWin = displayMgr.getWindowById(noteId);
   note = displayMgr.getNoteById(noteId);

   if(!domWin){
   domWin = new CWindow();
   str_buffer = new StringBuffer();
   str_buffer.append("<table width='100%' cellpadding=0 cellspacing=0 border=0> <tr class=unselectedDisplayWhite><td>");
   str_buffer.append(note.text);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class=unselectedDisplay><td><img src='../images/close.gif' border=0 class=cursorhand onclick='hideNote(\""+note.id+"\");'>");
   str_buffer.append("</td></tr></table>");

   domWin.id = noteId;
   domWin.layerId = "note_"+noteId;
   domWin.toolId = "notetool_"+noteId;
   domWin.contentId = "notecontent_"+noteId;
   
   vTaskWin = makeNewDOMWindow(domWin.layerId,200,200,275,285,note.title,str_buffer,domWin.toolId, domWin.contentId);

   domWin.handle = vTaskWin;
   domWin.isVisible = true;

   displayMgr.windows.push(domWin);
   } else {
	   doShowLayer(domWin.layerId);
	   doShowLayer(domWin.toolId);
	   doShowLayer(domWin.contentId);
   }

}

function showContact(contactId){
   domWin = displayMgr.getWindowById("contact_"+contactId);
   contact = displayMgr.getContactById(contactId);

   if(!domWin){
   domWin = new CWindow();
   str_buffer = new StringBuffer();
   str_buffer.append("<table width='100%' cellpadding=0 cellspacing=0 border=0> <tr class='"+POP_WINDOW_CLASS+"' ><td>");
   str_buffer.append("Name:&nbsp;"+contact.firstName+" "+contact.lastName);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td nowrap>");
   str_buffer.append("Address:&nbsp;"+contact.address);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td nowrap>");
   str_buffer.append("City: "+contact.city+"&nbsp;State:&nbsp;"+contact.state+"&nbsp;Zip:&nbsp;"+contact.zipCode);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td nowrap>");
   str_buffer.append("Home Phone:&nbsp;"+unescape(contact.homePhone)+"&nbsp;");
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td nowrap>");
   str_buffer.append("Cell:&nbsp;"+contact.cellPhone);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td nowrap>");
   str_buffer.append("Email:&nbsp;"+contact.email);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td nowrap>");
   str_buffer.append("User Name:&nbsp;"+contact.userName);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td nowrap>");
   str_buffer.append("Association:&nbsp;"+contact.association);
   str_buffer.append("</td></tr>");
   str_buffer.append("<tr class='"+POP_WINDOW_CLASS+"' ><td><img src='../images/close.gif' border=0 class=cursorhand onclick='hideNote(\"contact_"+contact.id+"\");'>");
   str_buffer.append("</td></tr></table>");

   domWin.id = "contact_"+contactId;
   domWin.layerId = "contact_"+contactId;
   domWin.toolId = "contacttool_"+contactId;
   domWin.contentId = "contactcontent_"+contactId;
   
   vTaskWin = makeNewDOMWindow(domWin.layerId,200,200,275,285,contact.lastName+","+contact.firstName,str_buffer,domWin.toolId, domWin.contentId);

   domWin.handle = vTaskWin;
   domWin.isVisible = true;

   displayMgr.windows.push(domWin);
   } else {
	   doShowLayer(domWin.layerId);
	   doShowLayer(domWin.toolId);
	   doShowLayer(domWin.contentId);
   }

}

function hideNote(noteId){
      //  alert("find note: "+noteId);
		
       domWin = displayMgr.getWindowById(noteId);
	   if(domWin){
   	   doHideLayer(domWin.layerId);
	   doHideLayer(domWin.toolId);
	   doHideLayer(domWin.contentId);
	   }
	   return;

}




// PROCESSING
// *********************************************************************************************************************

function loadCurrentSelection(button_id){

    currSelect = displayMgr.getSelection();
	
	currSelectElm = document.getElementById(currSelect);
	if(currSelectElm){
	currSelectElm.innerHTML = "&nbsp;";
	}

	newSelectElm = document.getElementById(button_id);
	newSelectElm.innerHTML = renderSelectedImage();

	displayMgr.setSelection(button_id);

	
}

function buildSharedUsersList(elementId, targetId){
  try{
	theList = document.getElementById(elementId);
	hiddenTarget = document.getElementById(targetId);
	if(document.getElementById("isShared").checked){
      // alert("file is shared..");
	   listStr = '';

	   for(i=0; i<theList.options.length; i++){
          if(theList.options[i].selected){
              listStr += "[@]"+theList.options[i].value+"[*], ";
		   }
	   }
	     listStr = listStr.substr(0, Math.floor(listStr.length-2));

        //alert("final list: "+listStr);
	    hiddenTarget.value = listStr;
	}
  }catch(anErr){
	  alert("an error occured trying to add image: "+anErr.message);
     return false;
  }

	return true;


}

var sharedClicked = false;

function showSharedUserList(sharedElementId){
    ele = document.getElementById(sharedElementId);
	if(!sharedClicked){
		sharedClicked = true;
		ele.style.visibility = "visible";
	   ele.style.display = "block";
	   return;
	}
	if(ele.style.visibility == "hidden"){

	   ele.style.visibility = "visible";
	   ele.style.display = "block";
	} else {
       ele.style.visibility = "hidden";
	   ele.style.display = "none";
	}
}

// ADDITION/ASSOCIATION/
//***********************************************************************************************************************

function addActionMap(sectionName, displayName, url, icon, array_map, renderer_map){

	 map = new ActionMap();
	 map.sectionName = sectionName;
	 map.displayName = displayName;
	 map.url = url;
	 map.array = array_map;
	 map.renderer = renderer_map;

	 if(icon == ""){ icon = false; }
	 map.icon = icon;
	 displayMgr.action_maps.push(map);
}
function addNote(userId, noteId, title, noteText, creationDate, folderId){
	note = new Note();
	note.userId = userId;
	note.id = noteId;
	note.title = title;
	note.text = noteText;
	note.date = creationDate;
	if(!folderId || !getFileSystem().folderExists(folderId)){
		note.folderId = ROOT_ID;
	} else{
		note.folderId = folderId;
	}
	displayMgr.notes.push(note);
}


function addBlog(userId, blogId, title, heading, body, creationDate, folderId){
	blog = new Blog();
	blog.userId = userId;
	blog.id = blogId;
	blog.title = title;
	blog.heading = heading;
	blog.body = body;
	blog.date = creationDate;
	if(!folderId || !getFileSystem().folderExists(folderId)){
		blog.folderId = ROOT_ID;
	} else {
		blog.folderId = folderId;
	}
	displayMgr.blogs.push(blog);
}

function addBoardMessage(userId, blogId, title, heading, body, creationDate, section, folderId){
	blog = new Blog();
	blog.userId = userId;
	blog.id = blogId;
	blog.title = title;
	blog.heading = heading;
	blog.body = body;
	blog.date = creationDate;
	blog.section = section;
	if(!folderId || !getFileSystem().folderExists(folderId)){
		blog.folderId = ROOT_ID;
	}
	displayMgr.messages.push(blog);
}

function addTodoItem(userId, todoId, name, state, startDate, dueDate, description, folderId){

   todo = new Todo();
   todo.userId = userId;
   todo.id = todoId;
   todo.name = name;
   todo.state = state;
   todo.date = startDate;
   todo.description = description;
   todo.dueDate = dueDate;
	if(!folderId || !getFileSystem().folderExists(folderId)){
		todo.folderId = ROOT_ID;
	} else{
		todo.folderId = folderId;
	}
   displayMgr.tasks.push(todo);

}

function addMessage(userId, messageId, toName, fromName, subject, folderId){

	msg = new Message();
	msg.userId = userId;
	msg.id = messageId;
	msg.to = toName;
	msg.from = fronName;
	msg.subject = subject;
	if(!folderId || !getFileSystem().folderExists(folderId)){
		msg.folderId = ROOT_ID;
	} else {
		msg.foldeId = folderId;
	}
	displayMgr.messages.push(msg);
}

function addLinkItem(userId, linkId, href, title, folderId){
	lnk = new LinkItem();
	lnk.userId = userId;
	lnk.id = linkId;
	lnk.href = href;
	lnk.title = title;

	if(!folderId || !getFileSystem().folderExists(folderId)){
		lnk.folderId = ROOT_ID;
	} else {
		lnk.folderId = folderId;
	}
	displayMgr.linkslist.push(lnk);
}

function addContact(userId, contactId, firstName, lastName, address, homePhone, cellPhone, email, description, city, state, zipCode, isBuddy, userName, association, folderId){

	contact = new Contact();
	contact.userId = userId;
	contact.id = contactId;
	contact.firstName = firstName;
	contact.lastName = lastName;
	contact.address = address;
	contact.city = city;
	contact.state = state;
	contact.zipCode = zipCode;
	contact.homePhone = homePhone;
	contact.cellPhone = cellPhone;
	contact.isBuddy = isBuddy;
	contact.description = description;
	contact.email = email;
	contact.userName = userName;
	contact.association = association;
	if(!folderId || !getFileSystem().folderExists(folderId)){
		//alert("folder does not exist: "+folderId);
		contact.folderId = ROOT_ID;
	} else {
		contact.folderId = folderId;
	}

	displayMgr.contacts.push(contact);
}

function addEmailMessage(userId, messageId, toName, fromName, subject, sentDate, folderId, isPM, fromEmailAddress,toEmail){

	mail = new Email();
	mail.userId = userId;
	mail.id = messageId;
	mail.to = toName;
	mail.from = fromName;
	mail.subject = subject;
	mail.sentDate = sentDate;
	mail.fromEmailAddress = fromEmailAddress;
	mail.toEmail = toEmail;

	if(isPM == "yes" && mail.from != user.name){
		mail.isPM = true;
	} else {
		mail.isPM = false;
	}
	mail.isPMStr = isPM;

	if(!folderId || !getFileSystem().folderExists(folderId)){
		mail.folderId = ROOT_ID;
	} else if(fromName == user.userName){
		mail.folderId = SENT_ITEMS_FOLDER_ID;
	} else {
		mail.folderId = folderId;
	}
	displayMgr.emails.push(mail);
}

function addButton(id, key){
	btn = new ActionButton();
	btn.name = key;
	btn.id = id;

	section = new Section();
	section.filesystem = "";
	section.id = id;
	section.key = key;
	section.isRendered = false;
	section.isSelected = false;

	displayMgr.buttons.push(btn);
	displayMgr.sections.push(section);
}

function addPortalImage(userId, imageId, name, src, size, addedDate, seriesName, folderId, isShared){

    pimg = new PortalImage();
	pimg.userId = userId;
	pimg.id = imageId;
	pimg.name = name;
	pimg.src = src;
	pimg.size = new Number(size);
	pimg.date = addedDate;
	pimg.series = seriesName;
	pimg.isShared = isShared;

	if(!folderId || !getFileSystem().folderExists(folderId)){
		pimg.folderId = ROOT_ID;
	} else {
		pimg.folderId = folderId;
	}

	displayMgr.portalImages.push(pimg);
	if(pimg.userId == USER_KEY){
	  displayMgr.image_bytes = Math.ceil(displayMgr.image_bytes + pimg.size);
	}

}

function addMusic(userId, id, artist, title, genre, releaseYear, publisher, tracks, cover, linerNotes){
	music = new Music();
	music.userId = userId;
	music.id = id;
	music.artist = artist;
	music.title = title;
	music.genre = genre;
	music.publisher = publisher;
	music.releaseYear = releaseYear;
	music.tracks = tracks;
	music.linerNotes = linerNotes;
	music.cover = cover;
	displayMgr.music.push(music);


}

//addFile("20189_283319992917_21729997827", "fgrty", "14076_371413324048_290519970948" , "80279", "20030721225958", "_root", "wall2.jpg", "15"); 
function addFile(userId, fileName, fileId, size, date, folderId, realName, rowId){
	file = new File();
	file.userId = userId;
	file.id = fileId;
	file.name = fileName;
	file.size = new Number(size);
	file.date = date;
	file.realName = realName;
	file.rowId = rowId;

	if(!folderId || !getFileSystem().folderExists(folderId)){
		file.folderId = ROOT_ID;
	} else {
		file.folderId = folderId;
	}

	displayMgr.files.push(file);

	if(file.userId == USER_KEY){
	  displayMgr.file_bytes = Math.ceil(displayMgr.file_bytes + file.size);
	}
}


function addBuddy(id, buddyName, timestamp,email){
	buddy = new Buddy();
	buddy.name = buddyName;
	buddy.id  = id;
	buddy.date = timestamp;
	buddy.email = email;
	displayMgr.buddies.push(buddy);

}

// RENDERING METHODS
// All renderer methods return a String
//***********************************************************************************************************************

function renderSelectedImage(){
	return "<img src='../images/show.gif' border=0 >";
}





// DISPLAY HEADER TABLE
//----------------------------------------------------------------------

// DISPLAY HEADER
//-----------------------------------------------------

function renderDisplayTableHeader(){
	buffer = new StringBuffer();

	
    buffer.append("<table border='0' cellpadding='0' cellspacing='0' width='600'>");
    buffer.append("  <tr>");
    buffer.append("   <td><img name='container600_r1_c1' src='images/container600_r1_c1.gif' width='59' height='21' border='0'></td>");
    buffer.append("   <td><img name='container600_r1_c2' src='images/container600_r1_c2.gif' width='478' height='21' border='0'></td>");
    buffer.append("   <td><img name='container600_r1_c3' src='images/container600_r1_c3.gif' width='63' height='21' border='0'></td>");
    buffer.append("   <td><img src='images/spacer.gif' width='1' height='21' border='0'></td>");
    buffer.append("  </tr>");
    buffer.append("  <tr>");
    buffer.append("   <td><img name='container600_r2_c1' src='images/container600_r2_c1.gif' width='59' height='341' border='0'></td>");
    buffer.append("   <td>   ");
	/*

  <table border='0' cellpadding='0' cellspacing='0' width='571'>
  <tr>
   <td><img name='container600_2_r1_c1' src='images/container600_2_r1_c1.gif' width='58' height='12' border='0'></td>
   <td background='' ><img name='container600_2_r1_c2' src='images/container600_2_r1_c2.gif' width='478' height='12' border='0'></td>
   <td><img name='container600_2_r1_c3' src='images/container600_2_r1_c3.gif' width='34' height='12' border='0'></td>
   <td rowspan='2'><img name='container600_2_r1_c4' src='images/container600_2_r1_c4.gif' width='1' height='452' border='0'></td>
   <td><img src='spacer.gif' width='1' height='12' border='0'></td>
  </tr>
  <tr>
   <td><img name='container600_2_r2_c1' src='images/container600_2_r2_c1.gif' width='58' height='440' border='0'></td>
   <td>
*/
    buffer.append("   <div id='_stage' style=' width:478px; height:325px;  overflow: scroll' onclick=\"toggleMenus()\" >");
    buffer.append("   <!-- Main Content Area --> ");




	return buffer.toString();
}

function renderDisplayTableFooter(){

     buffer = new StringBuffer();
    buffer.append("   <!-- end main content area -->");
    buffer.append("   </div>");
    buffer.append("   </td>");
    buffer.append("   <td><img name='container600_r2_c3' src='images/container600_r2_c3.gif' width='63' height='341' border='0'></td>");
    buffer.append("   <td><img src='images/spacer.gif' width='1' height='341' border='0'></td>");
    buffer.append(" </tr>");
    buffer.append("  <tr>");
    buffer.append("   <td><img name='container600_r3_c1' src='images/container600_r3_c1.gif' width='59' height='21' border='0'></td>");
    buffer.append("  <td><img name='container600_r3_c2' src='images/container600_r3_c2.gif' width='478' height='21' border='0'></td>");
    buffer.append("  <td><img name='container600_r3_c3' src='images/container600_r3_c3.gif' width='63' height='21' border='0'></td>");
    buffer.append("  <td><img src='images/spacer.gif' width='1' height='21' border='0'></td>");
    buffer.append(" </tr>");
    buffer.append("</table>");

	 return buffer.toString();

}
// SECTION HEADER
//-----------------------------------------------------
function renderSectionHeader(section){
     sectionBuffer = new StringBuffer();
	 arrayMap = getArrayMapping(section);
	 var total = 0;
	 var numItems = arrayMap.length;
	 if(numItems == 1){
		 itemsStr = "Item";
	 }else {
		 itemsStr = "Items";
	 }
     totalBytes = Math.ceil(displayMgr.file_bytes + displayMgr.image_bytes + displayMgr.music_bytes);
	 totalSectionsK = Math.ceil(totalBytes*.001);
	 totalSectionsStr = "&nbsp;Total: "+getFileSizeString(totalSectionsK);

	 if(section == "files"){
		 var bytes = displayMgr.file_bytes;
		 var kb = Math.ceil(bytes*.001);
		 var totalStr = "&nbsp;Section: "+getFileSizeString(kb);
	 }else if(section == "images"){
            var bytes = displayMgr.image_bytes;
			var kb = Math.ceil(bytes*.001);
			 totalStr = "&nbsp;Section: "+getFileSizeString(kb);
	 }else if(section == "music"){
            var bytes = displayMgr.music_bytes;
			var kb = Math.ceil(bytes*.001);
			 totalStr = "&nbsp;Section: "+getFileSizeString(kb);
	 } else {
		   totalStr = "";
		   totalSectionsStr = "";
	 }

	 sectionBuffer.append("");

	 sectionBuffer.append("<table width=\"100%\" border=0 cellspacing=0 cellpadding=0 >");
     sectionBuffer.append("<tr class=\"sectionHeader\">");
     sectionBuffer.append("  <td nowrap>&nbsp;"+section+": ("+numItems+" "+itemsStr+")&nbsp&nbsp;"+totalStr+totalSectionsStr+"&nbsp;</td>");
	 sectionBuffer.append("  <td align=right nowrap>"+renderActionMapping(getActionMappingArray(section))+"&nbsp;&nbsp;</td>");
     sectionBuffer.append(" </tr>");
	 sectionBuffer.append("<tr class=sectionHeader> ");
	  sectionBuffer.append("  <td colspan=2 align=right nowrap><img src='../images/clear.gif' border=0 width=300 height=1></td>");
     sectionBuffer.append(" </tr>");
     sectionBuffer.append(" </table> ");

	 return sectionBuffer.toString();

}




// ITEM ROWS
//************************************************************
//************************************************************


function renderFileItemRow(item, isLight){
		commonBuffer = new StringBuffer();

		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       commonBuffer.append("<tr class='"+rowClass+"'>");
       commonBuffer.append("  <td >&nbsp;<img src='../images/docs.gif' onclick='popURL(\"users/data/"+item.userId+"/files/"+item.realName+"\")' class=cursorhand border=0></td>");
	   commonBuffer.append("  <td >&nbsp;"+item.name+"</td>");
	   commonBuffer.append("  <td >&nbsp;"+item.size+"</td>");
	   commonBuffer.append("  <td align=center >&nbsp;"+getFriendlyDateFromTimestamp(item.date)+"</td>");
	   commonBuffer.append("  <td align=center nowrap>&nbsp;<a href='javascript:classifyOperation(\""+item.name+"\", \""+item.rowId+"\", \"filesystem\", \"true\")'>Classify</a> | <a href='javascript:deleteOperation(\""+item.realName+"\", \""+item.rowId+"\", \"filesystem\", \"true\")'>Delete</a></td>");
       commonBuffer.append(" </tr>");
 
		return commonBuffer.toString();

}



function renderCommonItemRow(item, isLight){
		commonBuffer = new StringBuffer();

		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       commonBuffer.append("<tr class='"+rowClass+"'>");
       commonBuffer.append("  <td >&nbsp;<img src='../images/mail-message.gif' class=cursorhand border=0></td>");
	   commonBuffer.append("  <td >&nbsp;"+item.name+"</td>");
	   commonBuffer.append("  <td >&nbsp;</td>");
	   commonBuffer.append("  <td align=right valign=middle >&nbsp;</td>");
       commonBuffer.append(" </tr>");
 
		return commonBuffer.toString();

}
// TASK ITEM ROW
//-----------------------------------------------------------
function renderTaskItemRow(item, isLight){
		mailBuffer = new StringBuffer();

		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       mailBuffer.append("<tr class='"+rowClass+"'>");
       mailBuffer.append("  <td >&nbsp;<img src='../images/quicktageditoricon.gif' onclick='showTask(\""+item.id+"\")' class=cursorhand border=0></td>");
	   mailBuffer.append("  <td >&nbsp;"+item.name+"</td>");
	   mailBuffer.append("  <td >&nbsp;"+item.state+"</td>");
	   mailBuffer.append("  <td align=right valign=middle >"+getFriendlyDateFromTimestamp(item.date)+"</td>");
       mailBuffer.append(" </tr>");
 
		return mailBuffer.toString();
}

// EMAIL ITEM ROW
//-----------------------------------------------------------
function renderEmailItemRow(item, isLight){
		mailBuffer = new StringBuffer();

		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       mailBuffer.append("<tr class='"+rowClass+"'>");
       mailBuffer.append("  <td >&nbsp;<img src='../images/mail-message.gif' onclick='showEmail(\""+item.id+"\")'class=cursorhand border=0 alt='Click here to view this email message from "+item.from+"'></td>");
	   mailBuffer.append("  <td >&nbsp;"+item.subject+"</td>");

	   // render to column
	   if(item.to != user.userName){
		    if(item.isPM){
		  mailBuffer.append("  <td ><a href='javascript:loadPMForm(\""+item.to+"\", \""+item.toEmail+"\")'>"+item.to+"</a></td>");
	   } else {
	      mailBuffer.append("  <td ><a href='javascript:loadContactEmailForm(\""+item.to+"\", \""+item.toEmail+"\")'>"+item.to+"</a></td>");
	   }

	   } else {
	   mailBuffer.append("  <td >&nbsp;"+item.to+"</td>");
	   }

	   // render from column
	   if(item.from != user.userName){
	   if(item.isPM){
		  mailBuffer.append("  <td ><a href='javascript:loadPMForm(\""+item.from+"\", \""+item.fromEmailAddress+"\")'>"+item.from+"</a></td>");
	   } else {
	      mailBuffer.append("  <td ><a href='javascript:loadContactEmailForm(\""+item.from+"\", \""+item.fromEmailAddress+"\")'>"+item.from+"</a></td>");
	   }
	   } else {
          mailBuffer.append("<td>"+item.from+"</td>");
	   }
	   mailBuffer.append("  <td align=center>"+getFriendlyDateFromTimestamp(item.sentDate)+"</td>");
	   mailBuffer.append("  <td align=center >&nbsp;<a href='javascript:classifyOperation(\""+item.subject+"\", \""+item.id+"\", \"email\", \"true\")'><img src='../images/classify.gif' border=0 alt='Classify this item' ></a> | <a href='javascript:deleteOperation(\""+item.subject+"\", \""+item.id+"\", \"email\")'><img src='../images/deleteIcon.gif' border=0 alt='Remove this item' ></a></td>");
       mailBuffer.append(" </tr>");
 
		return mailBuffer.toString();
}


// NOTE ITEM ROW
//--------------------------------------------------------------
function renderNoteItemRow(item, isLight){
		noteBuffer = new StringBuffer();
      
		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       noteBuffer.append("<tr class='"+rowClass+"'>");
       noteBuffer.append("  <td >&nbsp;<img src='../images/docs.gif' border=0 class=cursorhand onclick='showNote(\""+item.id+"\")'></td>");
	   noteBuffer.append("  <td >&nbsp;"+item.title+"</td>");
	   noteBuffer.append("  <td >&nbsp;"+getFriendlyDateFromTimestamp(item.date)+"</td>");
	   noteBuffer.append("  <td align=center >&nbsp;"+item.text.length+"&nbsp;&nbsp;</td>");
	   noteBuffer.append("  <td align=center >&nbsp;<a href='javascript:classifyOperation(\""+item.title+"\", \""+item.id+"\", \"notes\", \"true\")'>Classify</a> | <a href='javascript:deleteOperation(\""+item.title+"\", \""+item.id+"\", \"notes\", \"true\")'>Delete</a></td>");
       noteBuffer.append(" </tr>");
 
		return noteBuffer.toString();
}


// LINK ITEM ROW
//--------------------------------------------------------------
function renderLinkItemRow(item, isLight){
		linkBuffer = new StringBuffer();
		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       linkBuffer.append("<tr class='"+rowClass+"'>");
       linkBuffer.append("  <td >&nbsp;<img src='../images/html_file.gif' onclick='popURL(\""+item.href+"\")' class=cursorhand border=0></td>");
	   linkBuffer.append("  <td >&nbsp;<a href='javascript:popURL(\""+item.href+"\")'>"+item.title+"</a></td>");
	   linkBuffer.append("  <td >&nbsp;<a href='javascript:classifyOperation(\""+item.title+"\", \""+item.id+"\", \"links\", \"true\")'>Classify</a> | <a href='javascript:deleteOperation(\""+item.title+"\", \""+item.id+"\", \"links\", \"true\")'>Delete</a></td>");
	 //  linkBuffer.append("  <td >&nbsp;"+item.to+"</td>");
	 //  linkBuffer.append("  <td >&nbsp;"+item.sentDate+"</td>");
       linkBuffer.append(" </tr>");
 
		return linkBuffer.toString();
}

// CONTACT ITEM ROW
//---------------------------------------------------------------
function renderContactItemRow(item, isLight){
     contactBuffer = new StringBuffer();
		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      var name = item.firstName+" "+item.lastName;

	  if(item.userName != ""){
          pmAction = "| <a href='javascript:loadPMForm(\""+item.userName+"\", \""+item.email+"\")'>Send PM</a>";
	  } else {
		  pmAction = "";
	  }

       contactBuffer.append("<tr class='"+rowClass+"'>");
       contactBuffer.append("  <td >&nbsp;<img src='../images/person.gif' onclick='showContact(\""+item.id+"\")' class=cursorhand border=0></td>");
	   contactBuffer.append("  <td >&nbsp;"+item.firstName+"&nbsp; "+item.lastName+"</td>");
	   contactBuffer.append("  <td >&nbsp;"+item.address+"</td>");
	   contactBuffer.append("  <td >&nbsp;<a href='javascript:loadContactEmailForm(\""+name+"\", \""+item.email+"\")'>"+item.email+"</a></td>");
	   
	   contactBuffer.append("  <td >&nbsp;<a href='javascript:classifyOperation(\""+name+"\", \""+item.id+"\", \"contacts\", \"true\")'><img src='../images/classify.gif' border=0 alt='Classify this item' ></a> | <a href='javascript:deleteOperation(\""+name+"\", \""+item.id+"\", \"contacts\", \"true\")'><img src='../images/deleteIcon.gif' border=0 alt='Remove this item' ></a> "+pmAction+" | <a href='javascript:editContact(\""+item.id+"\");'><img src='../images/editIcon.gif' border=0 alt='Edit this Contact' ></a></td>");
	   // | <a href='javascript:showAllOperation()'>Show All</a>
	   //contactBuffer.append("  <td align=right nowrap>"+renderActionMapping(getItemActionMappingArray(displayMgr.getSelectionName()+"_item"))+"&nbsp;&nbsp;</td>");
       contactBuffer.append(" </tr>");
	 return contactBuffer.toString();
}

// BLOG ITEM ROW
//-----------------------------------------------------------
function renderBlogItemRow(item, isLight){
		blogBuffer = new StringBuffer();

		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       blogBuffer.append("<tr class='"+rowClass+"'>");
       blogBuffer.append("  <td >&nbsp;<img src='../images/comp_blue.gif' onclick='showBlog(\""+item.id+"\")' class=cursorhand border=0></td>");
	   blogBuffer.append("  <td >&nbsp;"+item.title+"</td>");
	   blogBuffer.append("  <td >&nbsp;"+item.heading+"</td>");
	   blogBuffer.append("  <td align=right valign=middle >"+getFriendlyDateFromTimestamp(item.date)+"</td>");
	   blogBuffer.append("  <td >&nbsp;<a href='javascript:classifyOperation(\""+item.title+"\", \""+item.id+"\", \"blogs\", \"true\")'>Classify</a> | <a href='javascript:deleteOperation(\""+item.title+"\", \""+item.id+"\", \"blogs\", \"true\")'>Delete</a></td>");
       blogBuffer.append(" </tr>");
 
		return blogBuffer.toString();
}

// BOARD ITEM ROW
//-----------------------------------------------------------
function renderBoardItemRow(item, isLight){
		boardBuffer = new StringBuffer();

		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       boardBuffer.append("<tr class='"+rowClass+"'>");
       boardBuffer.append("  <td >&nbsp;<img src='../images/comp_blue.gif' onclick='showBlog(\""+item.id+"\")' class=cursorhand border=0></td>");
	   boardBuffer.append("  <td >&nbsp;"+item.title+"</td>");
	   boardBuffer.append("  <td >&nbsp;"+item.heading+"</td>");
	   boardBuffer.append("  <td >&nbsp;"+item.section+"</td>");
	   boardBuffer.append("  <td align=right valign=middle >"+getFriendlyDateFromTimestamp(item.date)+"</td>");
       boardBuffer.append(" </tr>");
 
		return boardBuffer.toString();
}

// IMAGE ITEM ROW
//--------------------------------------------------------------
function renderImageItemRow(item, isLight){
		boardBuffer = new StringBuffer();
		var isShared = '';

        if(item.isShared == "on" && item.userId != USER_KEY){ isShared = "(shared)"; }

		if(isLight){ rowClass = "unselectedDisplay"; } else { rowClass = "unselectedDisplayWhite"; }
      
       boardBuffer.append("<tr class='"+rowClass+"'>");
       boardBuffer.append("  <td >&nbsp;<img src='users/data/"+item.userId+"/images/"+item.src+"'  border=0 height=25 width=25 lowsrc=images/disc.jpg onclick='showImage(\""+item.id+"\")' class=cursorhand border=0></td>");
	   boardBuffer.append("  <td >&nbsp;"+item.name+"&nbsp;"+isShared+"</td>");
	   boardBuffer.append("  <td >&nbsp;"+item.size+"</td>");
	   
	   boardBuffer.append("  <td align=center valign=middle >"+getFriendlyDateFromTimestamp(item.date)+"</td>");

	   if(item.userId == USER_KEY){

	   boardBuffer.append("  <td >&nbsp;<a href='javascript:classifyOperation(\""+item.name+"\", \""+item.id+"\", \"images\", \"true\")'><img border=0 src='../images/classify.gif' alt='Classify this Image'></a> | <a href='javascript:deleteOperation(\""+item.src+"\", \""+item.id+"\", \"images\", \"true\")'><img border=0 src='../images/deleteIcon.gif' alt='Delete this Image'></a></td>");
	   } else {
		   boardBuffer.append("<td> &nbsp; </td>");
	   }
       boardBuffer.append(" </tr>");
 
		return boardBuffer.toString();
}


// MUSIC ITEM ROW
//---------------------------------------------------------------

function renderMusicItemRow(){
	return "";
}
// ACTION MAPPING
//------------------------------------------------------------------
function renderActionMapping(actionMapArray){
        
		map_buffer = new StringBuffer();

		if(actionMapArray.length == 0){
			return "&nbsp;";
		} else {
			map_buffer.append("<table border=0 cellspacing=0 cellpadding=0 >");
			map_buffer.append("<tr class=actions>");
			iterator = actionMapArray.iterator();
            while(iterator.hasNext()){
				//alert("Add action: "+iterator.next().displayName);
				map_buffer.append("<td valign=middle align=center nowrap>&nbsp;");
				if(iterator.index() > 0){
					map_buffer.append("|&nbsp;");
				}
                if(iterator.next().icon){
					map_buffer.append("<a class=actions href='"+iterator.next().url+"'><img src='"+iterator.next().icon+"' border=0 height=14 width=14></a>&nbsp;");
				}
                map_buffer.append("<a class=actions href='"+iterator.next().url+"'>"+iterator.next().displayName+"</a>");
				if(iterator.index() == actionMapArray.length-1){
					map_buffer.append("&nbsp;&nbsp;");
				}

				map_buffer.append("</td>");
		    } // end while

			map_buffer.append("</tr></table>");

		} // end if empty

		return map_buffer.toString();

}

// FLASH FILE
//-----------------------------------------------------------------------

 function renderFlashFile(fileName, params_buffer, width, height, salign){

      chart = new StringBuffer();


       chart.append("<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" WIDTH=\"" + width +"\" HEIGHT=\"" + height + "\" id=\"navbutton\" ALIGN=\"\">");
	   chart.append(" <PARAM NAME=movie VALUE=\"flash/" + fileName + ".swf\">");
	   chart.append(" <PARAM NAME=quality VALUE=high>");
	   chart.append(" <PARAM NAME=salign VALUE=" + salign + " >");
	   chart.append(" <PARAM NAME=wmode VALUE=transparent>");
	   chart.append("<PARAM NAME=scale VALUE=exactfit> ");
	   chart.append(" <PARAM NAME=bgcolor VALUE=#000000>");
	   chart.append(" <PARAM NAME=FlashVars VALUE=\"" + params_buffer.toString() +  "\">");
	   chart.append(" <EMBED src=\"flash/" + fileName + ".swf\" FlashVars=\""  + params_buffer.toString() +  "\" quality=high scale=exactfit salign=" + salign +" wmode=transparent bgcolor=#000000  WIDTH=\"" + width +"\" HEIGHT=\"" + height + "\" NAME=\"navbutton\" swLiveConnect=true ALIGN=\"\" TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"http://www.macromedia.com/go/getflashplayer\"></EMBED>");
	   chart.append("</OBJECT>");

	  return chart.toString();

  }


function viewBoardMessage(rowId){
	theURL = "viewBoardMessage.php?rowid="+rowId;
	var params = getPopWinParams();
	window.open(theURL, "boardWin", params);
}

// FILE SYSTEM WRAPPER METHODS

function _getFileSystem(){ return this.fileSystem; }
function _setFileSystem(f){ this.fileSystem = f; }

function addFolderToFileSystem(userId, folderId, parentId, name, isExpanded){

    displayManager.getFileSystem().addFolder(userId, folderId, parentId, name, isExpanded);
  
}




// INI METHODS
//***********************************************************************************************************************

function _iniDisplayManager(){
    
	    this.sections = new Array();
		this.tasks = new Array();
		this.linkslist = new Array();
		this.messages = new Array();
		this.notes = new Array();
		this.emails = new Array();
		this.contacts = new Array();
		this.buddies = new Array();
		this.buttons = new Array();
		this.action_maps = new Array();
		this.item_action_maps = new Array();
		this.windows = new Array();
		this.blogs = new Array();
		this.portalImages = new Array();
		this.portalFiles = new Array();
		this.music = new Array();
		this.folders = new Array();
		this.files = new Array();
		this.fileSystem = new FileSystem();
		this.selectionName = "";
		this.userId = getCookieValue();
		this.file_bytes = 0;
		this.image_bytes = 0;
		this.music_bytes = 0;

		USER_KEY = this.userId;
	

}

// PROTOTYPE EXTENSIONS
//***********************************************************************************************************************

DisplayManager.prototype.ini = _iniDisplayManager;
DisplayManager.prototype.setSelection = _setSelection;
DisplayManager.prototype.getSelection = _getSelection;
DisplayManager.prototype.setSelectionName = _setSelectionName;
DisplayManager.prototype.getSelectionName = _getSelectionName;
DisplayManager.prototype.getWindowById = _getWindowById;
DisplayManager.prototype.getSectionById = _getSectionById;
DisplayManager.prototype.getNoteById = _getNoteById;
DisplayManager.prototype.getTaskById = _getTaskById;
DisplayManager.prototype.getEmailById = _getEmailById;
DisplayManager.prototype.getContactById = _getContactById;
DisplayManager.prototype.getMessageById = _getMessageById;
DisplayManager.prototype.getBlogById = _getBlogById;
DisplayManager.prototype.getPortalImageById = _getPortalImageById;
DisplayManager.prototype.getFileSystem = _getFileSystem;
DisplayManager.prototype.setFileSystem = _setFileSystem;
DisplayManager.prototype.updateSection = _updateSection;
DisplayManager.prototype.getContacts   = _getContacts;







// DEFAULT OBJECT INSTANTIATION
//***********************************************************************************************************************

displayMgr = new DisplayManager();
displayMgr.ini();

// UTILITY AND DEBUG
//***********************************************************************************************************************

function getFileSizeString(kb){

    if(kb > 10000){
        kbStr = new String(kb);
	   mb = kbStr.charAt(0)+kbStr.charAt(1)+"."+kbStr.charAt(2)+kbStr.charAt(4);
	   finalSizeStr = "["+ mb + " MB]";
	} else if(kb > 1000){
	   kbStr = new String(kb);
	   mb = kbStr.charAt(0)+"."+kbStr.charAt(1)+kbStr.charAt(2);
	   finalSizeStr = "["+ mb + " MB]";
	 } else {
        finalSizeStr = "["+ kb + " K]";
	  }

   return finalSizeStr;

}
function popURL(theURL){
    
	setPopWinParams(600, 800);
	var params = getPopWinParams();
	cyWin = window.open(theURL, "cyWin", params);
	return;
}

function clearNewItemLayer(){

  newLinkEle = document.getElementById(NEW_ITEM);
  newLinkEle.innerHTML = "&nbsp;";
  return;
}

function setStage(){
	stage = document.getElementById("_stage");
	stage.style.scrollbarBaseColor = "#000099";
	stage.style.scrollbarHighlightColor = "#ffccee";
	stage.style.scrollbar3dLightColor = "000033";
	stage.style.scrollbarArrowColor = "cfe4f3";
	stage.style.scrollbarDarkShadowColor = "7d7e99";
	stage.style.scrollbarFaceColor = "000099";
	stage.style.scrollbarShadowColor = "4670b3";
}


function getCookieValue(){
	//ele = document.getElementById("cookieOutput");
	cookieValue = WM_readCookie(COOKIE_NAME);
	//ele.innerHTML = cookieValue;
	return cookieValue;
}

function WM_readCookie(name) {
    if(document.cookie == '') { // there's no cookie, so go no further
	return false; 
    } else { // there is a cookie
	var firstChar, lastChar;
	var theBigCookie = document.cookie;
	firstChar = theBigCookie.indexOf(name);	// find the start of 'name'
	var NN2Hack = firstChar + name.length;
	if((firstChar != -1) && (theBigCookie.charAt(NN2Hack) == '=')) { // if you found the cookie
	    firstChar += name.length + 1; // skip 'name' and '='
	    lastChar = theBigCookie.indexOf(';', firstChar); // Find the end of the value string (i.e. the next ';').
	    if(lastChar == -1) lastChar = theBigCookie.length;
	    return unescape(theBigCookie.substring(firstChar, lastChar));
	} else { // If there was no cookie of that name, return false.
	    return false;
	}
    }	
} // WM_readCookie

// DEMO DATA
//***********************************************************************************************************************
