function embedObject(){
	var _self = this;		
	var itemMenuOptions = new Object()	
	this.properties = new Object();
	_self.properties['self'] = _self;
	_self.properties['type'] = "embed";
	_self.properties['itemMenu']= itemMenuOptions;
	
	this.select 	   = function()				{_embedManager.selectedEmbedObject = _self} 
	this.unSelect 	   = function()				{_embedManager.unSelectedEmbedObject(_self)}
	this.appendTo      = function(parentObject)	{parentObject.appendChild(_self.properties["holderDiv"]);}
	this.startResize   = function()				{};
	this.resizeUp      = function(differenceY)	{_embedManager.selectedEmbedObject = _self;_embedManager.resizeUp(differenceY)}
	this.resizeDown    = function(differenceY)	{_embedManager.selectedEmbedObject = _self;_embedManager.resizeDown(differenceY)}
	this.resizeRight   = function(differenceX)	{_embedManager.selectedEmbedObject = _self;_embedManager.resizeRight(differenceX)}
	this.resizeLeft    = function(differenceX)	{_embedManager.selectedEmbedObject = _self;_embedManager.resizeLeft(differenceX)}
	this.endResize     = function()				{_objectManager.endResize(_self)}
	this.toXML		   = function()				{_embedManager.selectedEmbedObject = _self;return _embedManager.toXML()}
	this.setPosition   = function(topPos,leftPos){_self.properties['holderDiv'].style.top = topPos;_self.properties['holderDiv'].style.left = leftPos;}
	this.deleteElement = function()				{_embedManager.selectedEmbedObject = _self;_embedManager.deleteElement()};
	this.setSize	   = function(height,width)	{_embedManager.selectedEmbedObject = _self; _embedManager.setSize(height,width) }
	this.setScrollBars = function(bars)			{_embedManager.selectedEmbedObject = _self; _embedManager.setScrollBars(bars)}
	this.deleteElement  = function()	{};	
	this.copyElement   = function()				{_embedManager.selectedEmbedObject = _self; return _embedManager.copyElement()}
}

function EmbedManager(){
	var _self = this
	this.selectedEmbedObject = null;
	var _embedScript = "";
	var _toolkitOptions = new Object();
	var _displayMode = "normal";
	
	this.createEmbedObject = function(height, width, mode){		
		var newEmbedObject = createEmbedObject(height, width, mode);
		if(mode == "myPage"){
			_ajax.ajaxCall_process("GetEditorProjectPages",null,"projId="+_pageInfo['projId'] + "&projType="+_pageInfo['projType'],"_embedManager.displayMyPages");
			_displayMode = "normal";
		}
		else
			getProperty("embedDiv").innerHTML = makeInputScreen(mode);	
		return newEmbedObject;	
	}
	
	function createEmbedObject(height, width, mode){
		_self.selectedEmbedObject = new embedObject();	
		setProperty("id",_objectManager.createId("embed"));			
		setProperty("borderWeight","0px");
		setProperty("borderStyle","solid");
		setProperty("borderColor","#B8B8B8");
		setProperty("visibility","visible");
		setProperty("show",true);
		setProperty("link","");	
		setProperty("toolkit",_toolkitOptions);	
		setToolkitOptions(mode);
		createHolderDiv(height, width,mode);
		return _self.selectedEmbedObject;
	}
	
	function setProperty(property,value){_self.selectedEmbedObject.properties[property] = value;}
	function getProperty(propertyName){	return _self.selectedEmbedObject.properties[propertyName];}
	
	function setToolkitOptions(mode){
		_toolkitOptions['pageEmbed'] = 'pageEmbed';
		_toolkitOptions['selectEmbed'] = 'selectEmbed';	
		_toolkitOptions['elementPosition'] = 'elementPosition';
		_toolkitOptions['elementSize'] = 'elementSize';
	}	
	function createHolderDiv(height,width , mode){		
		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 embedDiv = document.createElement('div');
		_pm.setStyle(embedDiv,"position:absolute;width:100%; height:100%; top:0; left:0; z-index:5;")
		setProperty("embedDiv", embedDiv);
		holderDiv.appendChild(embedDiv);
		holderDiv.onmousedown = function(e){if (!e) var e = window.event;
											_elementsManager.selectElement(this,e.ctrlKey);
											e.cancelBubble = true;} 
		setProperty("holderDiv", holderDiv);							
	}
	this.embedMyPage = function(page){
		var pageInfo = page.split(";");
		var embedCode = '<iframe SCROLLING="no" transparency="true" ALLOWTRANSPARENCY="true" frameborder="no" width="100%" height= "100%" src="http://websites.doctopus.com/DisplayPage?pageID='+pageInfo[1]+'"></iframe>';
		var embedDiv = getProperty("embedDiv");
		embedDiv.innerHTML = embedCode;
	    setProperty("embedCode",embedCode);
	    setProperty("isEmbedCodeSet","yes");
	    getProperty("holderDiv").style.border="0px solid #000000";
	    makeActivationDiv();
	}
	
	this.displayMyPages = function(strPageNames){diplayPages(strPageNames)}
	
	function diplayPages(strPageNames){
		var pageNameArray = new Array();
		var pageName = strPageNames.substring(0,strPageNames.indexOf("|"));
		strPageNames = strPageNames.substring(strPageNames.indexOf("|")+1)

		while(pageName !=""){	
			pageNameArray.push(pageName);
			pageName = strPageNames.substring(0,strPageNames.indexOf("|"))
			strPageNames = strPageNames.substring(strPageNames.indexOf("|")+1)			
		}		
		pageNameArray.sort();
		
		var namesList = '<SELECT style="WIDTH:120;" NAME="embedMyPageNames" id = "embedMyPageNames" style="width:100%;">';
		for(i = 0; i < pageNameArray.length ; i++){
			namesList+='<OPTION VALUE="' + pageNameArray[i] +'">' + pageNameArray[i].split(";")[0]+'</OPTION>';
		}		
		namesList+='</SELECT>';
		
		if(_displayMode == "toolkit"){
			document.getElementById("changePageEmbed_div").innerHTML = 'Select a page to embed:<div align="center">' + namesList +"<input type=\"button\" value =\"Set\" style=\"width:50; \" onclick=\"_embedManager.embedMyPage(embedMyPageNames.value)\"/></div>";
		}else{
			var embedDiv = getProperty("embedDiv");
			embedDiv.innerHTML ='<table width="100%" height="100%"><tr><td valign="middle" align="center"><div align = "center">Select a page from your website to embed: </div><div align="center">' + namesList +"<input type=\"button\" value =\"Set\" style=\"width:100; \" onclick=\"_embedManager.embedMyPage(embedMyPageNames.value)\"/></div></td></tr></table>";
		}	
	}
	
	this.displayPagesInToolkit = function(){
		_displayMode = "toolkit";
		_ajax.ajaxCall_process("GetEditorProjectPages",null,"projId="+_pageInfo['projId'] + "&projType="+_pageInfo['projType'],"_embedManager.displayMyPages");
	}
	
	function makeInputScreen(option){
		var title = "Embed Anything:";
		if (option == "video") title = "Embed a Video:";
		var html = 	'<div style="color:gray;"><div style="width:150; float:left;">'+title+'</div><div style="float:right; margin-right:20;"><input type="button" value="Set" onclick="_embedManager.setEmbedCode(document.getElementById(\'videoLinkDiv\').value)"/></div></div>' +
					' <textarea onfocus="this.select(); _moveManager.turnOffKeyPad()" onblur="_moveManager.turnOnKeyPad()" rows="3" cols="47" id = \'videoLinkDiv\'></textarea><br/>';
			
			
		if(option == "video"){
			html +=  '<div style="color:gray;">Copy and paste the embed code from a video streaming site. </div>' +
					'<div style="margin-top:70; color:gray;">Popular Sites:</div>' +
					'<div style="color:gray; width:100%; height:300;">' +
					'<div class="popvideo" onclick="window.open(\'http://www.youtube.com\')">YouTube</div>' +
					'<div class="popvideo" onclick="window.open(\'http://video.google.com\')">Google Video</div>' +
					'<div class="popvideo" onclick="window.open(\'http://vimeo.com\')">Vimeo</div>' +
					'<div class="popvideo" onclick="window.open(\'http://www.buzznet.com\')">BuzzNet</div>' +
					'<div class="popvideo" onclick="window.open(\'http://www.dailymotion.com\')">DailyMotion</div>' +
					'<div class="popvideo" onclick="window.open(\'http://www.kewego.com\')">Kewego</div>' +
					'<div class="popvideo" onclick="window.open(\'http://www.metacafe.com\')">metacafe</div>' +
					'<div class="popvideo" onclick="window.open(\'http://www.veoh.com\')">Veoh</div>' +
					'</div>';
		}else{
			html += '<div style="color:gray;">Copy and paste the embed code above. </div>' +
					'<div style="margin-top:70; color:gray;"><b>Helpful Sites:</b></div>' +
					'<div style="color:gray; width:100%; height:300;">' +
					'<table><tr><td><div style="cursor:pointer;color:gray" onclick="window.open(\'http://www.wufoo.com\')">Wufoo</div><div style="cursor:pointer;color:gray" onclick="window.open(\'http://www.formspring.com\')">FormSpring</div></td> <td style="color:gray" valign="middle"> - create a form</td></tr></table>' +
					'<div style="cursor:pointer;" onclick="window.open(\'http://www.micropoll.com\')">Micropoll - create a poll</div>' +
					'<div style="cursor:pointer;" onclick="window.open(\'http://fshow.ovh.org\')">Flickr - create a slideshow</div>' +
					'<div style="cursor:pointer;" onclick="window.open(\'http://maps.google.com\')">Google Maps - insert a map</div>' +
					'<div style="cursor:pointer;" onclick="window.open(\'http://www.google.com/ig/directory?synd=open&cat=all\')">Google Widgets - insert a calendar...</div>'+
					'</div>'; 
		}
	
		return html;
	}
	
	this.activateObject = function(){
		getProperty("activateDiv").style.display = "none";
	}
	function deactivateObject(){
		var activateDiv = getProperty("activateDiv");
		if(activateDiv != undefined) activateDiv.style.display = "block";
	}
	
	
	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;
   		}
   }
       
	function formatEmbedCode(embedCode, attribute, value){
		var newEmbedCode = "";
		var widthLocation = embedCode.indexOf(attribute);
		
		while(widthLocation >= 0){
			newEmbedCode += embedCode.substring(0,widthLocation+ attribute.length);
			embedCode = embedCode.substring(widthLocation+ attribute.length);
			embedCode = _utilities.lTrim(embedCode)
			var keyChar = embedCode.substring(0,1);
			switch(keyChar){
				case '=':	embedCode = embedCode.substring(embedCode.indexOf('"')+1);
							embedCode = embedCode.substring(embedCode.indexOf('"')+1);
							newEmbedCode+='="'+value+'"';
		 					break;
				case ':':	embedCode = embedCode.substring(embedCode.indexOf(';')+1);
							newEmbedCode+=':'+value+';';
							break;
			}			
			widthLocation = embedCode.indexOf(attribute);
		}
		newEmbedCode+=embedCode;
		return newEmbedCode;
	}   
   function makeEmbedTransparent(embedCode){
   		var embed = "<embed";
   		var embedLocation = embedCode.indexOf(embed);
   		var newEmbedCode = "";
   		while (embedLocation >=0){
   			newEmbedCode += embedCode.substring(0,embedLocation+embed.length);
   			newEmbedCode += ' wmode="transparent" ';
   			embedCode = embedCode.substring(embedLocation+ embed.length);
   			var embedLocation = embedCode.indexOf(embed);
   		}
   		newEmbedCode+=embedCode;
   		return newEmbedCode;
   }
   function makeObjectTransparent(embedCode){
   		var object = "</object>";
   		var objectLocation = embedCode.indexOf(object);
   		var newEmbedCode = "";
   		while (objectLocation >=0){
   			newEmbedCode += embedCode.substring(0,objectLocation);
   			newEmbedCode += ' <param name="wmode" value="transparent" /></object> ';
   			embedCode = embedCode.substring(objectLocation+ object.length);
   			var objectLocation = embedCode.indexOf(object);
   		}
   		newEmbedCode+=embedCode;
   		return newEmbedCode;   	
   }
   
   	function makeActivationDiv(){
   		getProperty("itemMenu")['activateEmbed']= 'activateEmbed';
   		var holderDiv = getProperty("holderDiv");
   		var width = parseInt(holderDiv.style.width);
   		var height = parseInt(holderDiv.style.height);
   		var activateDiv = document.createElement('div');
		_pm.setStyle(activateDiv,"position:absolute;width:100%; height:100%; z-index:10;")
		var html =	'<table style="position:absolute; z-index:10;" width="100%" height="100%"><tr><td valign="bottom" align = "center">' +
					'<table style="cursor:pointer;cursor:hand;height:25px;width:90px;font-size:1px;" cellpadding="0" cellspacing="0" onclick="_embedManager.activateObject();">' +
					'<tr><td style="background:url(\'work/design/images/createButtonL.gif\');width:6px;">&#xa0;</td>' +
					'<td style="background:url(\'work/design/images/createButtonC.gif\');font-size:8pt;color:white;text-align:center;font-weight:bold;">' +
					'ACTIVATE</td><td style="background:url(\'work/design/images/createButtonR.gif\');width:6px;">&#xa0;</td></tr></table>'+
					'</td></tr></tabel>'; 
		activateDiv.innerHTML = html;
		var transparentDiv = document.createElement('div');
		_pm.setStyle(transparentDiv,"position:absolute;width:100%; height:100%; background:blue; opacity:10;z-index:5;")
		activateDiv.appendChild(transparentDiv);
		setProperty("activateDiv", activateDiv);
		holderDiv.appendChild(activateDiv);
		_elementsManager.showItemMenu();
   	}
   
    this.setEmbedCode = function(embedCode){
    	embedCode = _utilities.trimAll(embedCode);
    	if(embedCode!=""){
    		if(/]]>/i.test(embedCode)){
    			//thats the ending tag for out CDATA block...if its in there code won't load
    			alert("Invalid embed code. Please check the code and try again.")
    		}	
			else if(/<script/i.test(embedCode)){
				var embedScriptDiv = document.getElementById("embedObjectScript");
				embedScriptDiv.style.display = "block";
				_utilities.displayCover();
				_utilities.centerObject(embedScriptDiv)
				_embedScript = embedCode;
			}else{
				if(/<\/iframe>|<\/embed>|<\/object>/i.test(embedCode)){
					formatCode(embedCode);
				}else{
					alert("Invalid embed code. Please check the code and try again.")	
				}
			}
		}else{
			alert("Please insert the embed code.")
		}    	
    }
    this.hideEmbedScriptPrompt =function(){
    	var embedScriptDiv = document.getElementById("embedObjectScript");
		embedScriptDiv.style.display = "none";
		_utilities.hideCover();
    }
    
    this.setEmbedScript = function (){
    	setProperty("script","true")
    	formatCode(_embedScript);
    	_utilities.saveAndReloadPage(); 
    }
    
    function formatCode(embedCode){
    	var formatedEmbedCode = formatEmbedCode(embedCode, "width", "100%");
		formatedEmbedCode = formatEmbedCode(formatedEmbedCode, "height", "100%");
    	formatedEmbedCode = makeEmbedTransparent(formatedEmbedCode);
    	formatedEmbedCode = makeObjectTransparent(formatedEmbedCode);
    	setCode(formatedEmbedCode);
    }
    function setCode(embedCode){
    	if(getProperty("activateDiv") == undefined){
    		makeActivationDiv();
    	}
    	var embedDiv = getProperty('embedDiv');
	    getProperty('holderDiv').style.background ="transparent";
	    embedDiv.style.background ="transparent";
	    embedDiv.innerHTML = embedCode;
	    setProperty("embedCode",embedCode);
	    setProperty("isEmbedCodeSet","yes");
	    getProperty("holderDiv").style.border="0px solid gray";
	    _elementsManager.selectElementById(getProperty("id"));
    }
    
    this.toXML = function(){		
		var xml = "";
		if(getProperty('isEmbedCodeSet') != undefined){
			var dimensions = _objectManager.getProperDimensions(_self.selectedEmbedObject)
			xml = "<element>"
			xml+= xmlTag("id",getProperty('id'));
			xml+= xmlTag("type",getProperty('type'));
			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("embedCode","<![CDATA[" + getProperty('embedCode')+"]]>")
			xml+="</element>"
		}
		return xml;	
	}
    function xmlTag(tagName,tagData){return "<" + tagName +">" + tagData + "</" + tagName + ">"}
	
	this.loadEmbedObject = function(id,topPos, leftPos, height, width,embedCode,parentId,zindex){		
		var newElement = createEmbedObject(height, width,"any")
		_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['isEmbedCodeSet'] = true;
		_objectManager.loadElement(newElement);
		newElement.properties['holderDiv'].style.border = "0px solid gray";
		if(/script/i.test(embedCode)){
			makeActivationDiv();
			embedCode = formatScriptTag(embedCode)			
    		setProperty("embedCode",embedCode);
    		setProperty("script","true");
    		getLoadedScript(id);
    	}else{		
			setCode(embedCode);
    	}	
	}
	function getLoadedScript(id){
		var div = document.getElementById(id+"_div");
		_pm.setStyle(div,"width:100%; height:100%; top:0; left:0;");
		var emebedDiv = getProperty("embedDiv");
		emebedDiv.innerHTML = "";
		emebedDiv.appendChild(div);
	}
	
	function formatScriptTag(embedCode){
		var object = "ENDOFscript";
   		var objectLocation = embedCode.indexOf(object);
   		var newEmbedCode = "";
   		while (objectLocation >=0){
   			newEmbedCode += embedCode.substring(0,objectLocation);
   			newEmbedCode += '/script';
   			embedCode = embedCode.substring(objectLocation+object.length);
   			var objectLocation = embedCode.indexOf(object);
   		}
   		newEmbedCode+=embedCode;
   		return newEmbedCode; 
	}
	
	this.unSelectedEmbedObject = function(flashObject){
		deactivateObject();	
	}
	this.setSize = function(height,width){
       	getProperty("holderDiv").style.width =width;       
     	getProperty("holderDiv").style.height = height;
	}
	this.setScrollBars = function(bars){ 
	}
	this.copyElement = function(){
		return _self.createEmbedObject(350,425,"embed")
	}
}	
