function LinkInterface(){		
	var _self =this;
	var _menuEditorInUse = false;
	this.setMenuEditor = function(option){
		_menuEditorInUse = option;
	}
	this.displayLinksMenu = function(){		
		var linksMenu = document.getElementById("linksMenu_div");
		_utilities.centerObject(linksMenu);
		_utilities.displayCover();
		linksMenu.style.display = "block";
		_self.displayLinkOption("web");
		displayCurrentLink();
	}
	
	this.hideLinksMenu = function(){		
		_utilities.hideCover();
		document.getElementById("linksMenu_div").style.display = "none";
		if(_menuEditorInUse) _easyMenu.displayMenu("block");		
	}
	this.displayLinkOption =function(option){
		hideAll();
		switch(option){
			case "web" : displayWebLinks(); break;
			case "pages":displayMyPages();break;
			case "bookmarks":displayBookmarks();break;
			case "files":displayFiles();break;
			default: displayWebLinks();break; 
			
		}
	}
	function hideAll(){
		document.getElementById("link_web_div").style.display="none";
		document.getElementById("link_myPages_div").style.display="none";
		document.getElementById("link_bookmarks_div").style.display="none";
		document.getElementById("link_files_div").style.display="none";			
		document.getElementById("link_web_tab").style.background="#0A4E7A";
		document.getElementById("link_myPages_tab").style.background="#0A4E7A";
		document.getElementById("link_bookmarks_tab").style.background="#0A4E7A";
		document.getElementById("link_files_tab").style.background="#0A4E7A";		
	}
	function displayWebLinks(){
		document.getElementById("link_web_div").style.display="block";
		document.getElementById("link_web_tab").style.background="#49AFDB";
		document.getElementById("webLink_input").value="";
		document.getElementById("webLink_newWindow").checked = false;
		document.getElementById("webLink_http").checked = false;
		document.getElementById("webLink_mail").checked = false;
	}
	function displayMyPages(){
		document.getElementById("link_myPages_div").style.display="block";
		document.getElementById("link_myPages_tab").style.background="#49AFDB";
		document.getElementById("pageLink_newWindow").checked = false;	
		_ajax.ajaxCall_process("GetEditorProjectPages",null,"projId="+_pageInfo['projId'] + "&projType="+_pageInfo['projType'],"_linkInterface.displayMyPages")
	}

	function displayBookmarks(){
		document.getElementById("link_bookmarks_div").style.display="block";
		document.getElementById("link_bookmarks_tab").style.background="#49AFDB";
		var bookmarksList = '<SELECT style="width:120;" NAME="bookmarkNames" id = "bookmarkNames" style="width:100%;">';
		var bookmarks = _bookmarkManager.getBookmarks();
		for(eachBookmark in bookmarks)	{
			var bookmarkName = bookmarks[eachBookmark].properties['name']
			bookmarksList+='<OPTION VALUE="' + bookmarkName +'">' + bookmarkName +'</OPTION>';
		}
		
		bookmarksList+='</SELECT>';
		document.getElementById("link_bookmarks_select").innerHTML = bookmarksList;
	}
	
	function displayFiles(){
		document.getElementById("link_files_div").style.display="block";
		document.getElementById("link_files_tab").style.background="#49AFDB";	
		document.getElementById("fileLink_newWindow").checked = true;			
		_ajax.ajaxCall_process("GetProjectFiles",null,"projId="+_pageInfo['projId']+"&projType="+_pageInfo['projType'],"_linkInterface.showFiles");
	}
	this.showFiles = function(files){
		var filesStr = files.substring(0,files.indexOf(";"))		
		files = files.substring(files.indexOf(";")+1)
		var namesList = '<SELECT style="WIDTH:120;" NAME="fileNames" id = "linkToFile_select" style="width:100%;">';			
		while(filesStr !=""){			
			var fileProps = filesStr.split("|");
			namesList+='<OPTION VALUE="' + fileProps[1] +'">' + fileProps[2]+'</OPTION>';							
			filesStr = files.substring(0,files.indexOf(";"))		
			files = files.substring(files.indexOf(";")+1)	
		}		
		namesList+='</SELECT>';
		document.getElementById("link_files_select").innerHTML = namesList;
	}
	
	this.displayMyPages = function(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="pagesNames" id = "linkToPage_select" style="width:100%;">';
		for(i = 0; i < pageNameArray.length ; i++){
			namesList+='<OPTION VALUE="' + pageNameArray[i] +'">' + pageNameArray[i].split(";")[0]+'</OPTION>';
		}
		
		namesList+='</SELECT>';
		document.getElementById("link_myPages_select").innerHTML = namesList;
	}
	
	function displayCurrentLink(){
		var link = _elementsManager.getLink();
		if(link == "" || link == undefined)
			link = "(no link yet)";
		document.getElementById("current_link_div").innerHTML = link;
		var target = _elementsManager.getLinkTarget();
		var title = "Current Link:";
		if(target == "_blank") title = "Current Link: (opens in a new window)";
		if(link.indexOf("#") == 0) title = "Current Link: (bookmark on this page)";
		document.getElementById("current_link_div").innerHTML = link;  
		document.getElementById("current_link_title_div").innerHTML = title;  
	}	
	this.prependWebLink = function(text){
		var weblink = _utilities.trimAll(document.getElementById("webLink_input").value)	
		if(weblink.indexOf("http://") == 0 || weblink.indexOf("mailto:") == 0) weblink=weblink.substring(7);
		document.getElementById("webLink_input").value = text + weblink; 
	}
	this.createPageLink = function(){
		var page = document.getElementById("linkToPage_select").value;
		var pageLink = page.split(";");		
		var target = "_parent";
		var url = "http://websites.doctopus.com/DisplayPage?pageID="+pageLink[1]+"&pageName="+pageLink[0];
		if(_pageInfo["domain"]!="null" && _pageInfo["domain"]!="") url="http://www."+_pageInfo["domain"]+"/"+pageLink[0];
		if(document.getElementById("pageLink_newWindow").checked) target = "_blank";		
		_elementsManager.createLink(url,target)
		displayCurrentLink();
	}
	this.createWebLink = function(){
		var webLink = _utilities.trimAll(document.getElementById("webLink_input").value)		
		if(webLink.indexOf("www") == 0) webLink = "http://"+webLink
		var target = "_parent";
		if(document.getElementById("webLink_newWindow").checked) target = "_blank";
		_elementsManager.createLink(webLink,target)
		displayCurrentLink();		
	}
	this.createFileLink = function(){
		
		var fileLink = document.getElementById("linkToFile_select").value;
		var target = "_parent";
		if(document.getElementById("fileLink_newWindow").checked) target = "_blank";
		var link ="http://doctopus-media.s3.amazonaws.com/files/"+fileLink
		_elementsManager.createLink(link,target)
		displayCurrentLink();		
	}
	this.createBookmark = function(){
		var bookmark = document.getElementById("bookmarkNames").value;
		if(bookmark != "" && bookmark != undefined){
			_elementsManager.createLink("#"+bookmark,"_parent")
			displayCurrentLink();
		}		
	}		
}

function BookmarkObject(){
	var _self = this;
	this.properties = new Object();
	_self.properties['type'] = "bookmark";
	
	this.select		= function()			{_bookmarkManager.selectedBookmark = _self;} 
	this.unSelect	= function()			{}
	this.appendTo	= function(parentObject){parentObject.appendChild(_self.properties["holderDiv"]);}
	this.changeName	= function(newName)		{_bookmarkManager.selectedBookmark = _self;_bookmarkManager.changeName(newName);};
	this.toXML		= function()			{_bookmarkManager.selectedBookmark = _self;return _bookmarkManager.toXML()}
	this.setPosition= function(topPos,leftPos){_self.properties['holderDiv'].style.top = topPos;_self.properties['holderDiv'].style.left = leftPos;}
	this.startResize= function(){}
	this.setSize	= function(h,w){}
	this.resizeUp	= function(y){}
	this.resizeDown	= function(y){}
	this.resizeRight= function(x){}
	this.resizeLeft	= function(x){}
	this.endResize	= function(x){} 
	this.copyElement   = function(){}	
	this.deleteElement  = function()	{};
}

function BookmarkManager(){
	var _self = this
	this.selectedBookmark = null;
	this.bookmarkNumber = 1;
	var bookmarksTable = new Object();
	
	var _toolkitOptions = new Object();
	_toolkitOptions['changeName'] = 'changeName';
	
	function setProperty(property,value){_self.selectedBookmark.properties[property] = value;}
	
	this.createBookmark = function(){
		_self.selectedBookmark = new BookmarkObject();
		setProperty("id",_objectManager.createId("bookmark"));
		var bookmarkName = "Bookmark" + _self.bookmarkNumber;
		while(bookmarksTable[bookmarkName] != undefined){
			bookmarkName = "Bookmark" + _self.bookmarkNumber++;
		}		
		setProperty("name",bookmarkName)
		setProperty("toolkit",_toolkitOptions);	
		bookmarksTable["Bookmark" + _self.bookmarkNumber] = _self.selectedBookmark;
		createImage();		
		_self.bookmarkNumber++; 								
		return _self.selectedBookmark;	
	}
	
	function createImage(){
		var image = document.createElement('img');
		_pm.setStyle(image,"position:absolute;top:0;left:0;width:44;height:45;cursor:pointer;")
		image.onmousedown = function(e){if (!e) var e = window.event;
										_elementsManager.selectElement(this,e.ctrlKey);
										e.cancelBubble = true;}  
		image.id = _self.selectedBookmark.properties["id"];
		image.src = "work/WebsiteEditor/Images/common/bookmark.JPG";
		image.alt = _self.selectedBookmark.properties["name"];
		_self.selectedBookmark.properties['holderDiv'] = image;
	}
	
	this.getBookmarks = function(){	return bookmarksTable;}
	this.toXML = function(){
		var xml = "<element>" 
		xml += xmlTag("type","bookmark")
		xml += xmlTag("id",_self.selectedBookmark.properties["id"]);
		xml += xmlTag("top",parseInt(_self.selectedBookmark.properties['holderDiv'].style.top))
		xml += xmlTag("left",parseInt(_self.selectedBookmark.properties['holderDiv'].style.left))
		xml += xmlTag("name","<![CDATA[" +_self.selectedBookmark.properties['name']+"]]>")
		xml += xmlTag("parentId",_self.selectedBookmark.properties['parentId'])
		xml += "</element>"
		return xml;
	}
	
	function xmlTag(tagName,tagData){return "<" + tagName +">" + tagData + "</" + tagName + ">"}
	
	this.loadBookmark = function(id, bookmarkName, topPos, leftPos, parentId ){
		_self.selectedBookmark = new BookmarkObject();
		_self.selectedBookmark.properties["id"] = id;
		_self.selectedBookmark.properties["name"] = bookmarkName;
		_self.selectedBookmark.properties["parentId"] = parentId;
		createImage();
		_self.selectedBookmark.setPosition(topPos,leftPos);
		bookmarksTable[bookmarkName] = _self.selectedBookmark;
		_self.selectedBookmark.properties["toolkit"] =_toolkitOptions;
		_objectManager.loadElement(_self.selectedBookmark);
		_self.bookmarkNumber++;			
	}
	this.changeName = function(newName){
		var nameIsNew = true;
		for(eachBookmark in bookmarksTable)
		{
			if(bookmarksTable[eachBookmark].properties["name"] == newName && bookmarksTable[eachBookmark]!=_self.selectedBookmark) nameIsNew = false; 	
		}
		if(nameIsNew)
			_self.selectedBookmark.properties['name'] = newName;
		else{
			alert("Name: " + newName + " already exists.")
			document.getElementById("changeName_text").value =  _self.selectedBookmark.properties['name'];
		}		
	}
}


