function flashObject(){
	var _self = this;
	this.properties = new Object();
	_self.properties['self'] = _self;
	_self.properties['type'] = "flash";
	
	this.select 	   = function()				{_flashManager.selectedFlashObject = _self} 
	this.unSelect 	   = function()				{_flashManager.unSelectFlashObject(_self)}
	this.appendTo      = function(parentObject)	{parentObject.appendChild(_self.properties["holderDiv"]);}
	this.startResize   = function()				{};
	this.resizeUp      = function(differenceY)	{_flashManager.selectedFlashObject = _self;_flashManager.resizeUp(differenceY)}
	this.resizeDown    = function(differenceY)	{_flashManager.selectedFlashObject = _self;_flashManager.resizeDown(differenceY)}
	this.resizeRight   = function(differenceX)	{_flashManager.selectedFlashObject = _self;_flashManager.resizeRight(differenceX)}
	this.resizeLeft    = function(differenceX)	{_flashManager.selectedFlashObject = _self;_flashManager.resizeLeft(differenceX)}
	this.endResize     = function()				{_objectManager.endResize(_self)}
	this.toXML		   = function()				{_flashManager.selectedFlashObject = _self;return _flashManager.toXML()}
	this.setPosition   = function(topPos,leftPos){_self.properties['holderDiv'].style.top = topPos;_self.properties['holderDiv'].style.left = leftPos;}
	this.deleteElement = function()				{_flashManager.selectedFlashObject = _self;_flashManager.deleteElement()};
	this.setSize	   = function(height,width)	{_flashManager.selectedFlashObject = _self; _flashManager.setSize(height,width) }
	this.deleteElement  = function()	{};	
	this.copyElement   = function()				{_flashManager.selectedFlashObject = _self; return _flashManager.copyElement()}
}

function FlashManager(){
	var _self = this
	this.selectedFlashObject = null;
	
	var _toolkitOptions = new Object();
	_toolkitOptions['selectFlash'] = 'selectFlash';
	_toolkitOptions['uploadFlash'] = 'uploadFlash';
	_toolkitOptions['elementPosition'] = 'elementPosition';
	
	var _itemMenuOptions = new Object()
	_itemMenuOptions['selectFlash']= 'selectFlash';
	
	this.createFlashObject = function(height, width){		
		_self.selectedFlashObject = new flashObject();	
		setProperty("id",_objectManager.createId("flash"));			
		setProperty("borderWeight","0px");
		setProperty("borderStyle","solid");
		setProperty("borderColor","#B8B8B8");
		setProperty("visibility","visible");
		setProperty("show",true);
		setProperty("link","");	
		setProperty("itemMenu",_itemMenuOptions);
		setProperty("toolkit",_toolkitOptions);
		createHolderDiv(parseInt(height), parseInt(width));
		return _self.selectedFlashObject;	
	}
	function setProperty(property,value){_self.selectedFlashObject.properties[property] = value;}
	function getProperty(propertyName){return _self.selectedFlashObject.properties[propertyName];}
		
	function createHolderDiv(height,width){		
		var holderDiv = document.createElement('div');
		holderDiv.id = getProperty('id');
		holderDiv.cancelBubble = true;
		_pm.setStyle(holderDiv,"position:absolute;width:"+width+"; height:"+height+"; top:0; left:0; overflow:hidden;border:1px dashed #B8B8B8;background:white;")
		
		var flashDiv = document.createElement('div');
		_pm.setStyle(flashDiv,"position:absolute;width:100%; height:100%; top:0; left:0;")
		setProperty("flashDiv", flashDiv);
		holderDiv.appendChild(flashDiv);
		holderDiv.onmousedown = function(e){if (!e) var e = window.event;
											_elementsManager.selectElement(this,e.ctrlKey);
											e.cancelBubble = true;} 
		setProperty("holderDiv", holderDiv);		
		flashDiv.innerHTML = '<table width= "100%" height="100%"><tr><td align = "center" valign="middle"><input type="button" value="Select Flash Movie" onclick="_flashManager.displayFlashObjects()"/></td></tr></table>';							
	}
	
	this.resizeDown = function(differenceY){
   		if(parseInt(getProperty("holderDiv").style.height) + differenceY >1){
           getProperty("holderDiv").style.height = parseInt(getProperty("holderDiv").style.height) + differenceY;
   		}
   	}

   this.resizeUp = function(differenceY){
   		if(parseInt(getProperty("holderDiv").style.height)- differenceY >1){
           getProperty("holderDiv").style.top = parseInt( getProperty("holderDiv").style.top ) + differenceY;
           getProperty("holderDiv").style.height = parseInt(getProperty("holderDiv").style.height)- differenceY;
   		}
   }

   this.resizeRight = function(differenceX){
   		if(parseInt(getProperty("holderDiv").style.width) + differenceX >1){
           getProperty("holderDiv").style.width = parseInt(getProperty("holderDiv").style.width) + differenceX;
   		}
   }

   this.resizeLeft = function(differenceX){
   		if(parseInt(getProperty("holderDiv").style.width) - differenceX >1){
           getProperty("holderDiv").style.left = parseInt( getProperty("holderDiv").style.left ) + differenceX;
           getProperty("holderDiv").style.width = parseInt(getProperty("holderDiv").style.width) - differenceX;
   		}
   }
   
   this.displayFlashObjects = function(){
		var winRef1 = window.open(  "DisplayFlashObjects?"+
								 	"&projectId="   + _pageInfo['projId']+
								 	"&projType="   + _pageInfo['projType']+
								 	"&projName=" + _pageInfo['projName'],"FlashObjects"  )
												 
   }
    this.setFlashObject = function(srcUrl){
		var flashDiv = getProperty('flashDiv');
    	flashDiv.innerHTML = "";
    	getProperty('holderDiv').style.background ="transparent";
    	flashDiv.style.background ="transparent";

    	flashDiv.innerHTML = '<object width="100%" height="100%" style="position:absolute;">'+
    						 '<param name="movie" value="'+ srcUrl+ '"></param>'+
    						 '<param name="wmode" value="transparent"></param>' +
    						 '<embed src="'+ srcUrl+'" type="application/x-shockwave-flash" wmode="transparent" width="100%" height="100%"></embed>'+
    						 '</object>';
		setProperty("flashSrc",srcUrl);
    	setProperty("isFlashObjectSet","yes");
    	_elementsManager.selectElementById(getProperty("id"));  						      	
    }
    
	this.createFlashObjectSrc = function(objectSrc, flashName){
    	setProperty("flashName",flashName);
    	_self.setFlashObject(objectSrc);    		
    }
    
    this.toXML = function(){		
		var xml = "";
		if(getProperty('isFlashObjectSet') != undefined){
			var dimensions = _objectManager.getProperDimensions(_self.selectedFlashObject)
			xml = "<element>" 
			xml+= xmlTag("type","flash")
			xml+= xmlTag("id",getProperty('id'));
			xml+= xmlTag("top",dimensions['top'])
			xml+= xmlTag("left",dimensions['left'])
			xml+= xmlTag("width",dimensions["width"])
			xml+= xmlTag("height",dimensions["height"])
			xml+= xmlTag("parentId",getProperty('parentId'));
			xml+= xmlTag("zindex",getProperty('holderDiv').style.zIndex)
			xml+= xmlTag("flashSrc","<![CDATA[" + getProperty('flashSrc')+"]]>")
			xml+= xmlTag("flashName","<![CDATA[" + getProperty("flashName")+"]]>")
			xml+="</element>"
		}
		return xml;	
	}
    function xmlTag(tagName,tagData){return "<" + tagName +">" + tagData + "</" + tagName + ">"}
	
	this.loadFlashObject = function(id, flashName, topPos, leftPos, height, width,flashSrc,parentId,zindex){		
		var newElement = _self.createFlashObject(height, width)
		_objectManager.changeId(newElement,id);
		newElement.properties['holderDiv'].id = id;
		newElement.properties['holderDiv'].style.zIndex = zindex;
		newElement.setPosition(topPos,leftPos);
		newElement.properties['parentId'] = parentId;
		newElement.properties['flashName'] = flashName;		
		newElement.properties['isFlashObjectSet'] = true;
		_objectManager.loadElement(newElement);
		_self.setFlashObject(flashSrc);
		
			
	}
	this.unSelectFlashObject = function(flashObject){
		if(!_elementsManager.isElementSelected(flashObject.properties["id"])){
			if(flashObject.properties["holderDiv"] != undefined)
				flashObject.properties["holderDiv"].style.border = "1px dashed #B8B8B8"
		}	
	}
	this.setSize = function(height,width){
       	getProperty("holderDiv").style.width = width;
     	getProperty("holderDiv").style.height = height;
	}
	this.copyElement = function(){
		return  _self.createFlashObject(200,250);
	}
}	
