function ResizeManager(){
	var _self = this;
	var _objectsTable = null;
	var _originalElement = null;
	
	/**** re-sizing variables **/
	var _direction = '';
	var _oldMouseX = 0;
	var _oldMouseY = 0;
	
	
	this.displayResizeDiv = function(element){
		if(element.properties['bars'] == "noDisplay"){
			_self.hideResizeDiv();
		}else{
			_self.showResizeDiv();
			var holderDiv = element.properties["holderDiv"];
			var position = _utilities.findPos(holderDiv);
			var topPos = position[1];
			var leftPos = position[0];
			var widthPercent = false;
			var heightPercent = false;		
			if (holderDiv.style.width.indexOf("%") >= 0)  widthPercent = true;
			if (holderDiv.style.height.indexOf("%") >= 0) heightPercent = true; 
			
			removeAllBarProperties();
			if(heightPercent)setHeightPercentBars();
			if(widthPercent)setWidthPercentBars();
			if(heightPercent && widthPercent)setHeightAndWidthPercentBars();
			
			setIndividualBars(element, heightPercent, widthPercent);
			
			setWestBar(topPos,leftPos, element);
			setEastBar(topPos,leftPos, element);
			setNorthBar(topPos,leftPos, element);
			setSouthBar(topPos,leftPos, element);
		}
	}
	
	function showBar(element, bar){
		var show = false;
		var bars = element.properties["bars"];
		if(bars == undefined || bars=='' || bars == 'undefined' || bars == 'all'){show=true}
	   	else if(bars.indexOf(bar) >= 0)show = true;
	   	return show;
	}
	
	function setIndividualBars(element, heightPercent, widthPercent){
		if(showBar(element,"n")&& !heightPercent) setBarProperties(document.getElementById("resizeDiv_north"),"n","n-resize");
		if(showBar(element,"s")&& !heightPercent) setBarProperties(document.getElementById("resizeDiv_south"),"s","s-resize");
		if(showBar(element,"e")&& !widthPercent) setBarProperties(document.getElementById("resizeDiv_east"),"e","e-resize");
		if(showBar(element,"w")&& !widthPercent) setBarProperties(document.getElementById("resizeDiv_west"),"w","w-resize");
		
		if(showBar(element,"nw")&& (!heightPercent && !widthPercent))setBarProperties(document.getElementById("resizeBox_nw"),"nw","nw-resize");
		if(showBar(element,"ne")&& (!heightPercent && !widthPercent))setBarProperties(document.getElementById("resizeBox_ne"),"ne","ne-resize");
		if(showBar(element,"sw")&& (!heightPercent && !widthPercent))setBarProperties(document.getElementById("resizeBox_sw"),"sw","sw-resize");
		if(showBar(element,"se")&& (!heightPercent && !widthPercent))setBarProperties(document.getElementById("resizeBox_se"),"se","se-resize");
		
		if(showBar(element,"e")&& !widthPercent)setBarProperties(document.getElementById("resizeBox_e"),"e","e-resize");
		if(showBar(element,"w")&& !widthPercent)setBarProperties(document.getElementById("resizeBox_w"),"w","w-resize");
		if(showBar(element,"s")&& !heightPercent)setBarProperties(document.getElementById("resizeBox_s"),"s","s-resize");
	}
	
	function setHeightPercentBars(){
		removeBarProperties(document.getElementById("resizeDiv_north"),"height");
		removeBarProperties(document.getElementById("resizeDiv_south"),"height");
		removeBarProperties(document.getElementById("resizeBox_s"),"height");
		
		setBarProperties(document.getElementById("resizeBox_nw"),"w","w-resize");
		setBarProperties(document.getElementById("resizeBox_ne"),"e","e-resize");
		setBarProperties(document.getElementById("resizeBox_sw"),"w","w-resize");
		setBarProperties(document.getElementById("resizeBox_se"),"e","e-resize");
	}
	function setWidthPercentBars(){
		removeBarProperties(document.getElementById("resizeDiv_east"),"width");
		removeBarProperties(document.getElementById("resizeDiv_west"),"width");
		removeBarProperties(document.getElementById("resizeBox_e"),"width");
		removeBarProperties(document.getElementById("resizeBox_w"),"width");
		
		setBarProperties(document.getElementById("resizeBox_nw"),"n","n-resize");
		setBarProperties(document.getElementById("resizeBox_ne"),"n","n-resize");
		setBarProperties(document.getElementById("resizeBox_sw"),"s","s-resize");
		setBarProperties(document.getElementById("resizeBox_se"),"s","s-resize");
	}
	function setHeightAndWidthPercentBars(){
		removeBarProperties(document.getElementById("resizeBox_nw"),"height");
		removeBarProperties(document.getElementById("resizeBox_ne"),"height");
		removeBarProperties(document.getElementById("resizeBox_sw"),"width");
		removeBarProperties(document.getElementById("resizeBox_se"),"width");
	}
	
	function setBarProperties(bar,direction,cursor){
		bar.style.cursor = cursor;
		bar.onmousedown = function(e){if (!e) var e = window.event;
									 _objectManager.startResize(e,direction);
									e.cancelBubble;
									return false;}
		bar.setAttribute("title","");
	}
	function removeAllBarProperties(){
		removeBarProperties(document.getElementById("resizeDiv_west"),"no");
		removeBarProperties(document.getElementById("resizeDiv_north"),"no");
		removeBarProperties(document.getElementById("resizeDiv_south"),"no");
		removeBarProperties(document.getElementById("resizeDiv_east"),"no");
		
		removeBarProperties(document.getElementById("resizeBox_w"),"no");
		removeBarProperties(document.getElementById("resizeBox_e"),"no");
		removeBarProperties(document.getElementById("resizeBox_s"),"no");
		removeBarProperties(document.getElementById("resizeBox_nw"),"no");
		removeBarProperties(document.getElementById("resizeBox_ne"),"no");
		removeBarProperties(document.getElementById("resizeBox_sw"),"no");
		removeBarProperties(document.getElementById("resizeBox_se"),"no");
	}
	
	function removeBarProperties(bar,message){
		var displayMessage = "";
		switch(message){
			case "height": displayMessage = "You cannot resize this side because the element height is a percent(%)";break;
			case "width" : displayMessage = "You cannot resize this side because the element width is a percent(%)";break;
			default		 : displayMessage = "You cannot resize this side.";break;
		}
		bar.style.cursor = "help";
		bar.onmousedown ="";
		bar.setAttribute("title",displayMessage);		
	}
		
	function setWestBar(topPos,leftPos, element){
		var holderDiv =  element.properties["holderDiv"];
		var resizeDiv_west = document.getElementById("resizeDiv_west");
		
		resizeDiv_west.style.top = topPos;
		resizeDiv_west.style.left = leftPos-12;	
		resizeDiv_west.style.height = holderDiv.offsetHeight + 2;
	}
	function setEastBar(topPos,leftPos, element){
		var holderDiv = element.properties["holderDiv"];
		var resizeDiv_east = document.getElementById("resizeDiv_east");
		resizeDiv_east.style.top = topPos;
		resizeDiv_east.style.left = leftPos+ parseInt(holderDiv.offsetWidth) + 2;	
		resizeDiv_east.style.height = holderDiv.offsetHeight + 2;
	}
	
	function setNorthBar(topPos,leftPos, element){
		var holderDiv = element.properties["holderDiv"];
		var resizeDiv_north = document.getElementById("resizeDiv_north");
		resizeDiv_north.style.top = topPos+1;
		resizeDiv_north.style.left = leftPos;	
		resizeDiv_north.style.width = holderDiv.offsetWidth + 2;
	}
	
	function setSouthBar(topPos,leftPos, element){
		var holderDiv = element.properties["holderDiv"];
		var resizeDiv_south = document.getElementById("resizeDiv_south");
		resizeDiv_south.style.top = topPos + parseInt(holderDiv.offsetHeight) + 3;
		resizeDiv_south.style.left = leftPos-12;	
		resizeDiv_south.style.width = holderDiv.offsetWidth + 15;
	}
	
	this.hideResizeDiv = function(){
		document.getElementById("resizeDiv_west").style.display = "none";
		document.getElementById("resizeDiv_east").style.display = "none";
		document.getElementById("resizeDiv_north").style.display = "none";
		document.getElementById("resizeDiv_south").style.display = "none";	
	}
	this.showResizeDiv = function(){
		document.getElementById("resizeDiv_west").style.display = "block";
		document.getElementById("resizeDiv_east").style.display = "block";
		document.getElementById("resizeDiv_north").style.display = "block";
		document.getElementById("resizeDiv_south").style.display = "block";	
	}
	
   this.startResize = function(mouseEvent,direction,object){
   		_itemMenu.hideItemMenu();
   		_self.hideResizeDiv();
   		_itemMenu.hideSubMenus();
		if (!mouseEvent) mouseEvent = window.event;
		_direction = direction;
		
		var objectsTable = new Object;
		objectsTable[object.properties['id']] = object;
		_originalElement = object;
		
		if(_elementsManager.isElementSelected(object.properties['id'])){
			var selectedElements = _elementsManager.getSelectedElements();
			for(eachElement in selectedElements){
				objectsTable[selectedElements[eachElement].properties['id']] = selectedElements[eachElement];
			}
		}
		
		_objectsTable = objectsTable;
	   _oldMouseX = mouseEvent.clientX;
       _oldMouseY = mouseEvent.clientY;

		var currentElement = _elementsManager.getCurrentElement();
		if(currentElement.properties.preview != "on")
		{
       		document.body.style.cursor = _direction +"-resize"
       		document.onmousemove = resize;
       		document.onmouseup = endResize;
		}

   }
   
   function resize(mouseEvent){
	   if (!mouseEvent) mouseEvent = window.event;
	   switch (_direction){
	       case "s":       	for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeDown(mouseEvent.clientY - _oldMouseY)
	       					};
	       					break;
		   case "n":		for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeUp(mouseEvent.clientY - _oldMouseY);
	       					}
	       					break;
		   case "w":        for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeLeft(mouseEvent.clientX - _oldMouseX);
	  						}
	  						break;
		   case "e":        for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeRight(mouseEvent.clientX - _oldMouseX);
	  						}
	  						break;
		   case "se":      for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeDown(mouseEvent.clientY - _oldMouseY);
	       						_objectsTable[eachObject].resizeRight(mouseEvent.clientX - _oldMouseX);
	  						}
	  						break;
		   case "ne":      for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeUp(mouseEvent.clientY - _oldMouseY);
	       						_objectsTable[eachObject].resizeRight(mouseEvent.clientX - _oldMouseX);
	  						}
	  						break;
		   case "nw":      for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeUp(mouseEvent.clientY - _oldMouseY);
	       						_objectsTable[eachObject].resizeLeft(mouseEvent.clientX - _oldMouseX);
	  						}
	  						break;
		   case "sw":		for (eachObject in _objectsTable){
	       						_objectsTable[eachObject].resizeDown(mouseEvent.clientY - _oldMouseY);
	       						_objectsTable[eachObject].resizeLeft(mouseEvent.clientX - _oldMouseX);
	  						}
	  						break;
	       default:         break;
	   }
	   _oldMouseX = mouseEvent.clientX;
	   _oldMouseY = mouseEvent.clientY;	
	   return false;
   }

   function endResize(e){
   		document.body.style.cursor 	= "auto";
		document.onmousemove    	= null;
		document.onmouseup      	= null;
		for(var eachObject in _objectsTable){	_objectsTable[eachObject].endResize();}
		_elementsManager.setCurrentElement(_originalElement);    
		_elementsManager.displaySubMenus();
		_siteSettings.checkPageOverflow(_objectsTable);   
   }
   
   this.resizeDown = function(holderDiv,differenceY){    	
    	if(parseInt(holderDiv.style.height) + differenceY >1){
	        holderDiv.style.height = parseInt(holderDiv.style.height) + differenceY;
    	}
    }

   this.resizeUp = function(holderDiv,differenceY){
   		if(parseInt(holderDiv.style.height)- differenceY >1){
	       holderDiv.style.top = parseInt( holderDiv.style.top ) + differenceY;
	       holderDiv.style.height = parseInt(holderDiv.style.height)- differenceY;
   		}
   }

   this.resizeRight = function(holderDiv,differenceX){
   		if(parseInt(holderDiv.style.width) + differenceX >1){
	        holderDiv.style.width = parseInt(holderDiv.style.width) + differenceX;		
   		}
   }

   this.resizeLeft = function(holderDiv, differenceX){
   		if(parseInt(holderDiv.style.width) - differenceX >1){
			holderDiv.style.left = parseInt( holderDiv.style.left ) + differenceX;
			holderDiv.style.width = parseInt(holderDiv.style.width) - differenceX;
   		}		         
   }
   
}
