function ElementsManager(){
	var _self			= this;
	var _currentElement = null;
	var _lastElement	= null;
	var _elementsTable	= new Object();
	var _whereToAdd		= "page"; //used to determine where to add a new element(page|element)
	var _selectedElements = new Object();
	var _commonToolkitOptions = new Object();
	this.mainPage		= document.getElementById("mainPage");
	var _loadElementsTable = new Object();/* used when loading elements that have an id that already exists on page. community stuff mostly*/
	var _firstMultipleElement = undefined; //first multiple element selected
	var _elementsToMove = null;
	var _rteInterface = null; 
	setRTEInterface();
	//temp stuff
	var testBox = document.getElementById("testBox_div")	
	
	//**************************   Selecting Elements *******************
	this.selectElement = function(elementDiv, multipleElements){
		_self.selectElementById(elementDiv.id, multipleElements)
	}
	this.selectElementObj = function(element,multipleElements){
		_self.selectElementById(element.properties['id'],multipleElements)
	}
	this.selectElementById = function(id, multipleElements)	{
		_lastElement = _currentElement;
		_currentElement = _elementsTable[id];
		//alert(_currentElement)
		_self.selectCurrentElement(multipleElements);
	}
	
	this.selectCurrentElement = function(multipleElements){		
		//alert("elem man: " + _currentElement.properties['id'])
		var menu = _objectManager.getParent(_currentElement,"menu");
		if(menu != null && menu.properties['preview'] == "on") _currentElement = menu;
		if(_selectedElements[_currentElement.properties['id']] != undefined && multipleElements){
			removeSelectedElement(_currentElement);
			_currentElement = _lastElement;
		}else{
			_self.setCurrentElement(_currentElement)
			if(multipleElements){
				 addSelectedElement(_currentElement);
				 if(_whereToAdd == "anotherElement") addToAnotherElement();
			}
			else{
				if(_whereToAdd == "anotherElement") addToAnotherElement();
				else _self.clearAllSelectedElements();
			}
		}
	}
	this.setCurrentElement = function (element){
		var menu = _objectManager.getParent(element,"menu");
		if(menu != null && menu.properties['preview'] == "on") element = menu;
		
		if(_lastElement != null && _lastElement != element){			
			_lastElement.unSelect();	
		}
		element.select();
		_toolkit.displayToolkit(element);
		_itemMenu.showItemMenu(element);
		_moveManager.setCurrentElement(element);
	}
	this.showItemMenu = function(){_itemMenu.showItemMenu(_currentElement);}
	this.displayResizeDiv = function(){_resizeManager.displayResizeDiv(_currentElement)}
	this.displaySubMenus = function(){_itemMenu.displaySubMenus()}
	this.getCurrentElement = function(){return _currentElement;}
	this.displayToolkit = function(){_toolkit.displayToolkit(_currentElement);}
	
	// *************************** Multiple  Selected Element Stuff ***********************
	function addSelectedElement(element){
		
		if(_self.anyElementsSelected()){
			_objectManager.highlightElement(element,"1px dashed green");			
		}
		//this is the first multiple element selected
		else{
			_objectManager.highlightElement(element,"1px dashed red");
			_firstMultipleElement = element;
		}
		_selectedElements[element.properties['id']] = element;
		determineCommonToolkitOptions();
	}
	function determineCommonToolkitOptions()
	{
		delete _commonToolkitOptions;
		var numElements = 0;
		for(eachElement in _selectedElements){
			if(numElements == 0)
				_commonToolkitOptions = _objectManager.cloneObject(_selectedElements[eachElement].properties['toolkit']);
			else{
				var elementToolkitOptions = _selectedElements[eachElement].properties['toolkit']
				for(eachOption in _commonToolkitOptions){
					if(elementToolkitOptions[eachOption] == undefined)
					delete _commonToolkitOptions[eachOption]	
				}
			}
			numElements++;
		}
		_toolkit.displayToolkitOptions(_commonToolkitOptions);
		if(numElements > 1)displayTopMenuOptions(true);
		else displayTopMenuOptions(false);
	}
	
	function returnElementFromSelectedElements()
	{
		var element = null;
		for(eachElement in _selectedElements){return _selectedElements[eachElement]}
		return element;
	}
	
	function removeSelectedElement(element){
		_selectedElements[element.properties['id']] = null;
		delete _selectedElements[element.properties['id']];
		_objectManager.unHighlightElement(element);		
		var newElement = returnElementFromSelectedElements();
		if(newElement != null){
			if(element == _firstMultipleElement){
				_self.setFirstSelectedElement(newElement)
				_self.setCurrentElement(newElement)
			}
			else
				_self.setCurrentElement(newElement);
		}
		else{
			_self.clearAllSelectedElements();
			_self.selectCurrentElement(false);
		}	
		determineCommonToolkitOptions();
	}
	
	this.anyElementsSelected = function(){
		var numElements = 0;
		for(eachElement in _selectedElements)numElements++;
		if(numElements > 0) return true;
		return false
	}
	
	this.isElementSelected = function(elementId){
		if(_selectedElements[elementId] == undefined) return false; // element not selected
		return true; //element is selected
	}
	this.clearAllSelectedElements = function(){		
		for(eachElement in _selectedElements){
			var element = _selectedElements[eachElement];
			if(_selectedElements[eachElement].properties['holderDiv'] != undefined)
				_objectManager.unHighlightElement(_selectedElements[eachElement]);
			_selectedElements[eachElement] = null;
			delete _selectedElements[eachElement];
			element.unSelect();
		}
		_firstMultipleElement = undefined;
		displayTopMenuOptions(false);
		
	}
	function displayTopMenuOptions(display)
	{
		var resizeTab = document.getElementById("topMenu_resizeTab");
		var alignTab = document.getElementById("topMenu_alignTab");
		if(display){
			alignTab.style.color = "white";
			resizeTab.style.color = "white";
			alignTab.onmouseover = function(){ document.getElementById('alignTitle').style.visibility='visible';document.getElementById('alignMenu').style.visibility='visible';};
			alignTab.onmouseout = function(){document.getElementById('alignTitle').style.visibility='hidden';document.getElementById('alignMenu').style.visibility='hidden';};
			
			resizeTab.onmouseover = function(){ document.getElementById('resizeTitle').style.visibility='visible';document.getElementById('resizeMenu').style.visibility='visible';};
			resizeTab.onmouseout = function(){document.getElementById('resizeTitle').style.visibility='hidden';document.getElementById('resizeMenu').style.visibility='hidden';};
		}
		else
		{
			alignTab.style.color = "gray";
			resizeTab.style.color = "gray";
			alignTab.onmouseover = "";
			alignTab.onmouseout = "";
			resizeTab.onmouseover = "";
			resizeTab.onmouseout = "";
		}
	}
	
	this.getSelectedElements = function(){return _selectedElements;}
	
	this.getFirstSelectedElement = function(){return _firstMultipleElement}
	
	this.setFirstSelectedElement = function(element){
		for(eachElement in _selectedElements)
			_objectManager.highlightElement(_selectedElements[eachElement],"1px dashed green");
		_firstMultipleElement = element;
		_objectManager.highlightElement(element,"1px dashed red");		
	}
	this.rounedDivSelected = function()	{
		for(eachElement in _selectedElements)
			if(_selectedElements[eachElement].properties['type'] == "div" && _selectedElements[eachElement].properties['shape'] == "round") return true;
			
		return false;	
	}
	
	//**************************   Toolkit options *******************
	
	this.setSize = function(height, width){
		//alert(height)
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setSize(height,width);
		}
		else
		_currentElement.setSize(height,width);
		
		_self.displayResizeDiv();
	}
	this.setPosition = function(topPos,leftPos){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setPosition(topPos,leftPos);
			_self.setCurrentElement(_currentElement)
		}
		else{
			_currentElement.setPosition(topPos,leftPos);
			_self.selectCurrentElement(false);
		}		
	}
	this.getBgColor = function(){
		return _currentElement.properties['bgColor'];
	}
	
	this.changeObjectColor = function(color){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].changeColor(color);
		}
		else
		_currentElement.changeColor(color);
	}
	this.setImageZoom = function(enabled,width,height){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements){
				if(_selectedElements[eachElement].setImageZoom != undefined)
					_selectedElements[eachElement].setImageZoom(enabled,width,height);
			}
		}
		else{
			if(_currentElement.setImageZoom != undefined)
			 _currentElement.setImageZoom(enabled,width,height);
		}
	}
	
	this.changeBorder = function(borderObj){
		
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements){
				var newBorderObj = _objectManager.cloneObject(borderObj)
				_selectedElements[eachElement].changeBorder(newBorderObj)
			}
		}
		else{
		_currentElement.changeBorder(borderObj);
		}
	}
	
	this.changeCorner = function(corner,value){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].changeCorner(corner,value);
			_self.setCurrentElement(_currentElement)
		}
		else{
			_currentElement.changeCorner(corner,value);
			_self.selectCurrentElement(false);
		}
	}
	
	this.setImage = function(imagePath,imageName, imageHeight,imageWidth, originalHeight, originalWidth){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setImage(imagePath,imageName, imageHeight,imageWidth, originalHeight, originalWidth);
			_self.setCurrentElement(_currentElement)
		}
		else{
			_currentElement.setImage(imagePath,imageName, imageHeight,imageWidth, originalHeight, originalWidth);
			_self.selectCurrentElement(false);
		}
		
	}
	
	this.setBgImage = function(imagePath, repeat){	
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setBGImage(imagePath, repeat)
			_self.setCurrentElement(_currentElement)
		}
		else{
			_currentElement.setBGImage(imagePath, repeat)
			_self.selectCurrentElement(false);
		}	
	}
	this.collapseElement = function(){_currentElement.collapseElement();}
	this.getBGImg = function(){return _currentElement.properties['bgImg'];}
	
	this.getBGRepeat = function(){return _currentElement.properties['bgRepeat'];}
	
	this.removeBgImg = function(){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].removeBGImage();
			_self.setCurrentElement(_currentElement)
		}
		else{
			_currentElement.removeBGImage();
			_self.selectCurrentElement(false);
		}
		_bgImgManager.clearBGImg();
	}
	
	this.changeName = function(newName){_currentElement.changeName(newName);}
	
	this.createLink = function(link,target){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_objectManager.createLink(link,target,_selectedElements[eachElement])
			_self.setCurrentElement(_currentElement)
		}
		else{
			_objectManager.createLink(link,target,_currentElement)
			_self.selectCurrentElement(false);
		}
	}
	
	this.getLink = function(){return _objectManager.getLink(_currentElement,"link");}
	this.getLinkTarget = function(){return _objectManager.getLink(_currentElement,"target");}
	
	this.setScrollBars = function(bars){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setScrollBars(bars);
			_self.setCurrentElement(_currentElement)
		}
		else{
			_currentElement.setScrollBars(bars);
			_self.selectCurrentElement(false);
		}		
	}
	
	this.setCursor = function(cursor){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_objectManager.setCursor(_selectedElements[eachElement], cursor);				
			_self.setCurrentElement(_currentElement)
		}
		else{
			_objectManager.setCursor(_currentElement, cursor);
			_self.selectCurrentElement(false);
		}
	}
	
	this.getCursor = function(){return _objectManager.getCursor(_currentElement);}
	
	this.setFont = function(fontTitle){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setFont(fontTitle);	
		}
		else _currentElement.setFont(fontTitle);
	}
	
	this.setTextSize = function(size){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setTextSize(size);	
		}
		else _currentElement.setTextSize(size);
	}
	
	this.setTextColor = function(color){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setTextColor(color);
		}
		else _currentElement.setTextColor(color);
	}
	
	this.setTextBold = function(style){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setTextBold(style);
		}
		else _currentElement.setTextBold(style);
	}
	this.setTextUnderline = function(style){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setTextUnderline(style);
		}
		else _currentElement.setTextUnderline(style);
	}
	
	this.setTextItalics = function(style){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setTextItalics(style);
		}
		else _currentElement.setTextItalics(style);
	}
	this.setSimpleText = function(html){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].setInnerHTML(html);
		}
		else _currentElement.setInnerHTML(html);
	}	
	this.setCornerColor = function(color){_currentElement.setCornerColor(color);}
	this.changeCSS = function(cssId){
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_selectedElements[eachElement].changeCSS(cssId);
		}
		else _currentElement.changeCSS(cssId);
	}
	
	
	// ************************ Top Menu Options *************************************
	
	this.deleteCurrentElement = function(){		
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements)
				_self.deleteElement(_selectedElements[eachElement])
		}else
			_self.deleteElement(_currentElement);
				
		_self.selectElementObj(_self.getElementFromElementsTable("mainPage"));
	}
	
	this.deleteElement = function(element){		
		var id = element.properties['id'];
		if(id != "mainPage" && id !=" website" && id != undefined)	{
			element.deleteElement();
			var parentObj = _self.getElementFromElementsTable(element.properties["parentId"]);			
			if(parentObj != undefined && parentObj.properties["type"] == "heading"){
				_self.purgeElement(parentObj);
				var userMenu = _self.getElementFromElementsTable(parentObj.properties["parentId"]);
				_userMenuManager.selectedMenu = userMenu;
				_userMenuManager.deleteHeading(parentObj.properties["id"]);
			}	
			else{
				_self.purgeElement(element);
			}									
			
		}
	}
	this.purgeElement = function(element){
		_objectManager.deleteElement(element);
		_elementsTable[element.properties['id']] = null;
		delete _elementsTable[element.properties['id']];
	}
	
	this.addElementToPage = function(typeOfElement,cssId){		
		var newElement = _self.createElement(typeOfElement,cssId);
		if(_whereToAdd =="page"){
			var mainPage = _self.getElementFromElementsTable("mainPage");
			var pageTop = parseInt(mainPage.properties['holderDiv'].style.top);
			var bodyScrollTop = parseInt(document.body.scrollTop) + 130;
			var bodyScrollLeft = parseInt(document.body.scrollLeft)+10;
			if(bodyScrollTop > pageTop || bodyScrollLeft > 10)
				newElement.setPosition(bodyScrollTop-pageTop+30,bodyScrollLeft);
			_objectManager.addElement(mainPage,newElement, true);
			_self.selectElementById(newElement.properties['id']);
		}else{
			_objectManager.addElement(_currentElement,newElement, true);
		}
	}
	
	this.copyElement = function(){
		var okToCopy = true;
		var copyElements = new Object();
		for(eachElement in _selectedElements){
			var parentId = _selectedElements[eachElement].properties['parentId'];
			if(_selectedElements[parentId] == undefined){
				if(_objectManager.getParent(_selectedElements[eachElement],"heading") == null)
					copyElements[eachElement]= _selectedElements[eachElement]
				else okToCopy = false;
			}
		}
		if(_selectedElements[_currentElement.properties['parentId']] == undefined){
			if(_objectManager.getParent(_currentElement,"heading") == null)
				copyElements[_currentElement.properties['id']] = _currentElement;
			else{
				okToCopy = false;				
			}
		}
		var type = _currentElement.properties["type"];
		if(type =="webPage" || type =="website"  || type =="undefined"){okToCopy = false;	}
		
		if(okToCopy){
			_self.clearAllSelectedElements();		
			var elementPositions = getElementPositions(copyElements)
			for(eachElement in copyElements)
				copyElement(copyElements[eachElement], elementPositions[eachElement]['top'], elementPositions[eachElement]['left'])
		}else
			alert("Cannot copy the selected elements")
	}
	
	this.copyHeading = function(){
		if(_self.anyElementsSelected()){
			for(var eachElement in _selectedElements){				
				_userMenuManager.copyHeading(_objectManager.getParent(_selectedElements[eachElement],"heading"));				
			}
		}else{
			_userMenuManager.copyHeading(_objectManager.getParent(_currentElement,"heading"));
		}
		_userMenuManager.clearCopyHeadings();
	}
	
	function copyElement(element, topPos, leftPos){
		var newElement = element.copyElement();
		if(newElement != undefined && newElement != null){
			var bodyScrollTop = parseInt(document.body.scrollTop);
			var bodyScrollLeft = parseInt(document.body.scrollLeft);
			newElement.setPosition(bodyScrollTop+topPos,bodyScrollLeft+leftPos);
			_objectManager.addElement(_self.getElementFromElementsTable("mainPage"),newElement, true);
			_self.selectElementObj(newElement,true)
		}
	}
	
	// this function aligns multiple elements to coordinates of 0,0 (top-left-most)
	function getElementPositions(elements){
		var lowestTopPos = 15000;
		var lowestLeftPos = 15000;
		var elementPositions = new Object;
		
		for(eachElement in elements){
			elementPositions[eachElement] = _objectManager.getAbsolutePosition(elements[eachElement]);
			if(lowestTopPos > elementPositions[eachElement]['top']) lowestTopPos =  elementPositions[eachElement]['top'];
			if(lowestLeftPos > elementPositions[eachElement]['left']) lowestLeftPos =  elementPositions[eachElement]['left'];
		}
		for(eachElement in elements){
			elementPositions[eachElement]['top'] = elementPositions[eachElement]['top'] - lowestTopPos;
			elementPositions[eachElement]['left']= elementPositions[eachElement]['left'] - lowestLeftPos;
		}
		
		return elementPositions;
	}
	
	this.align = function(position){
		var holderDiv = _firstMultipleElement.properties['holderDiv']
		var l1 = parseInt(holderDiv.style.left);
		var t1 = parseInt(holderDiv.style.top)
		var h1 = parseInt(holderDiv.offsetHeight)
		var w1 = parseInt(holderDiv.offsetWidth)
		for(eachElement in _selectedElements){
			holderDiv = _selectedElements[eachElement].properties['holderDiv'];
			if(position == "left") holderDiv.style.left = l1;
			else if(position == "top") holderDiv.style.top = t1;
			else if(position == "bottom")holderDiv.style.top = t1 + h1 - parseInt(holderDiv.offsetHeight);
			else if(position == "right")holderDiv.style.left = l1 + w1 - parseInt(holderDiv.offsetWidth); 	
		}
		_self.setCurrentElement(_currentElement);
	}
	
	this.resizeElements = function(size){
		var holderDiv = _firstMultipleElement.properties['holderDiv']
		var h1 = holderDiv.style.height;
		var w1 = holderDiv.style.width;
		for(eachElement in _selectedElements){
			holderDiv = _selectedElements[eachElement].properties['holderDiv'];
			if(size == "height") _selectedElements[eachElement].setSize(h1,holderDiv.style.width);
			else if(size == "width") _selectedElements[eachElement].setSize(holderDiv.style.height,w1);			
		}
		_self.setCurrentElement(_currentElement)
	}
	 function addToAnotherElement(){
	 	_dragSelect.dragSelectOn(false);
	 	var addToElement = _currentElement;		 	
	 	var type = addToElement.properties['type'];
	 	if(type == "div" || type == "image" || type == "webPage" || type == "website" || type == "easyMenu"){
	 		_whereToAdd = "page";
	 		_self.clearAllSelectedElements();
	 		var elementPositions = getElementPositions(_elementsToMove)
	 		for(eachElement in _elementsToMove){
	 			_elementsToMove[eachElement].setPosition(elementPositions[eachElement]['top'],elementPositions[eachElement]['left'])
	 			_objectManager.addElement(addToElement,_elementsToMove[eachElement],false);
	 			_self.selectElementObj(_elementsToMove[eachElement],true);
	 		}
		 	_self.endAddToAnotherElement();
	 	}else
	 		alert("Cannot add to this element. Please try again.")	 	
	 }
	 
	 this.prepareToAddToAnotherElement = function(){
	 	_elementsToMove = new Object();
	 	var moveElements = true;
	 	if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements){
				var parentId = _selectedElements[eachElement].properties['parentId'];
				if(_selectedElements[parentId] == undefined){
					if(_objectManager.getParent(_selectedElements[eachElement],"heading") == null)
						_elementsToMove[eachElement]= _selectedElements[eachElement]
					else
						moveElements = false;
				}
			}		
		 }else{
		 	if(_objectManager.getParent(_currentElement,"heading") == null)
		 		_elementsToMove[_currentElement.properties.id] = _currentElement;
		 	else
				moveElements = false;
		 }
	 	if(moveElements){
	 		 _self.whereToAdd("anotherElement");
	 		 document.getElementById("addToAnotherElement_div").style.display = "block";
	 	}
		else alert("Cannot move selected element.");	 	
	 }
	 
	 this.endAddToAnotherElement = function(){
	 	_whereToAdd = "page";
	 	document.getElementById("addToAnotherElement_div").style.display = "none";
	 	if(_firstMultipleElement != undefined)_self.setCurrentElement(_firstMultipleElement);
	 	else _self.setCurrentElement(_currentElement);
	 	_dragSelect.dragSelectOn(true);
	 }
	 this.editImage_basic = function(){
	 	var imageId 	= _currentElement.properties['id'];
	 	var imageName 	= _currentElement.properties['imageName'];
	 	var imageSrc 	= _currentElement.properties['imageSrc'];
	 	_imageUpload.editImage_basic(imageId,imageName,imageSrc);
	 }
	
	this.changeZIndex = function(direction){
		var zIndex = 0;
		if(_self.anyElementsSelected()){
			for(eachElement in _selectedElements){
				zIndex = 0;
				if(_selectedElements[eachElement].properties['holderDiv'].style.zIndex !="")
					zIndex = parseInt(_selectedElements[eachElement].properties['holderDiv'].style.zIndex);				
				_selectedElements[eachElement].properties['holderDiv'].style.zIndex = Math.max(0, zIndex + parseInt(direction))
			}
		}
		else{
			if(_currentElement.properties['holderDiv'].style.zIndex !="")
				zIndex = parseInt(_currentElement.properties['holderDiv'].style.zIndex);
			_currentElement.properties['holderDiv'].style.zIndex = Math.max(0, zIndex + parseInt(direction))
		}
	}
	
	// ************************* Element Tables ***********************************************
	
	this.createElement = function(typeOfElement,cssId){
		var newElement = null;
		switch(typeOfElement){
			case 'text':	newElement = _textAreaManager.createTextArea(150,200,"transparent", _objectManager.createBorderObj("0px dashed black"),"text",cssId);break;
			case 'squareDiv':	newElement = _divManager.createDiv(150,200,"#F1F1F1",_objectManager.createBorderObj("1px solid #B8B8B8"),"0000","all");break;			
			case 'roundedDiv':	newElement = _divManager.createDiv(150,200,"#F1F1F1",_objectManager.createBorderObj("1px solid #B8B8B8"),"1111","all");break;			
			case 'image':		newElement = _imageManager.createImage(150,200,_objectManager.createBorderObj("0px solid black"),"work/WebsiteEditor/Images/common/insertImage.GIF");break;
			
			case 'table':		newElement = new Table(5,5);
								newElement.setId("table." + Math.random() * 5000);								
								break;
			case 'verticalMenu':		newElement = _easyMenu.createMenu("new","vertical",125,130,"#FFFFFF",_objectManager.createBorderObj("1px solid #B8B8B8"));break;									
			case 'horizontalMenu':		newElement = _easyMenu.createMenu("new","horizontal",45,350,"#FFFFFF",_objectManager.createBorderObj("1px solid #B8B8B8"));break;
			case 'bookmark':			newElement = _bookmarkManager.createBookmark();break;
			case 'flash':				newElement = _flashManager.createFlashObject(200,250);break;
			case 'video':				newElement = _embedManager.createEmbedObject(350,425,"video");break;
			case 'embed':				newElement = _embedManager.createEmbedObject(350,425,"embed");break;
			case 'myPage':				newElement = _embedManager.createEmbedObject(350,425,"myPage");break;
			case 'note':				newElement = _noteManager.createNote();break;
			case 'forum':				newElement = _forumManager.createForum();break;
			case 'blog':				newElement = _blogManager.createBlog();break;
			case 'default':				break;
		}
		return newElement;		
	}
	
	this.getElementFromElementsTable = function(elementId){
		if(_loadElementsTable[elementId] != undefined)
			return _loadElementsTable[elementId];
		else
			return _elementsTable[elementId];
	}
	this.getElementsTable = function(){return _elementsTable;}
	
	this.addToAllElementsTable = function(element){
		//alert("add to all elelm: " +element.properties.id)
		_elementsTable[element.properties.id] = element;
	}
	this.removeFromAllElementsTable = function(elementId){
		if(_elementsTable[elementId] != undefined)
			delete _elementsTable[elementId];
	}
	
	this.clearLoadElementsTable = function(){
		_loadElementsTable = null;
		delete _loadElementsTable;
		_loadElementsTable = new Object();
	}
	
	this.mapNewID = function(id, element){
		//alert("map element id: " + element.properties.id + " and the type is: " + element.properties.type)
		_loadElementsTable[id] = element;
	}
	
	this.clearPage = function()	{
		for(eachElement in _elementsTable){
			var id = _elementsTable[eachElement].properties['id']; 
			if(id != "mainPage" && id != "website")
				_self.deleteElement(_elementsTable[eachElement])
		}		
		var pageElements = _self.getElementFromElementsTable("mainPage").properties['children']
		for(eachElement in pageElements)		
			delete pageElements[eachElement]				
	}
	
	// ***************************** Adding To Community Stuff ***************************
	
	this.whereToAdd = function(whereToAdd){	_whereToAdd = whereToAdd;}	
		
	this.addToCommunity = function(whereToAdd){
		var id = _currentElement.properties['id']
		if(id != "mainPage" && id != "website")
			_community.shareElement(_currentElement,whereToAdd, "element");
	}
	
	this.addToTemplates = function(whereToAdd){	_community.shareTemplate(whereToAdd, "template");}
	this.newElementAdded = function(elementId){
		var element = _self.getElementFromElementsTable(elementId);
		_self.selectElementObj(element,false);
		alert("New element has been added. ");
	}
	
	// ****************************  Specific Element Options ******************
	function setRTEInterface(){
		var rteIFrame = window.frames.rteFrame;        // find RTE iframe
		_rteInterface = new rteIFrame.RTEInterface();  // create new RTE Interface
		rteIFrame.setInterface(_rteInterface);		   // set the interface
		_rteInterface.setCommand(function(){_elementsManager.setInnerHTML(_rteInterface.text)}) //tell the inteface what to do;
		if(_rteInterface.setCancelCommand != undefined){
		_rteInterface.setCancelCommand(function(){_elementsManager.hideTextEditor()}) //tell the inteface what to do;
		}
	}
	
	this.showTextEditor = function(){
		var rteFrame = document.getElementById('rteFrame');
		var html = _currentElement.properties['contentsDiv'].innerHTML;
		rteFrame.style.display = "block";
		var cssProperties = _cssManager.getElementCSS("text",_currentElement.properties["cssId"]);
		window.frames.rteFrame.receiveText(html, 300, 600,cssProperties);
		_utilities.centerObject(rteFrame);
		_utilities.displayCover();
	}
	
	this.hideTextEditor = function(){
		document.getElementById('rteFrame').style.display = "none";
		_utilities.hideCover();
	}

	this.setInnerHTML = function(html){
			_currentElement.setInnerHTML(html);
			_elementsManager.hideTextEditor();
	}
	
	this.getInnerHTML = function(){
		if(_currentElement.properties['type'] = "text")
			_currentElement.getInnerHTML();
	}	
}
