Editor (Entry Nr. 58, by user 1 | edit) |
|
ge_require_once('http://javascript.gibney.org/view.js');
// Global Variables
var isDOM=document.getElementById&&!document.all;
var maxEditorId=0;
// Styles
buttonStyle="color:#000;text-decoration:none;cursor:pointer;display:block;background-color:#fff;border:1px solid #ddd;padding:0.2em;margin:0.1em;";
// Styling functions:
function buttonOver(obj)
{
obj.style.color="#300";
obj.style.backgroundColor="#eff6ef";
obj.style.borderTop="1px solid #aba";
obj.style.borderRight="1px solid #efe";
obj.style.borderBottom="1px solid #efe";
obj.style.borderLeft="1px solid #aba";
}
function buttonOut(obj)
{
obj.style.color="#000";
obj.style.backgroundColor="#fff";
obj.style.border="1px solid #ddd";
}
// Position functions
// functions used to retrive the position and dimension of different elements
function getMouseX(e)
{
var r=0;
if (isDOM) r = e.pageX;
else r = event.clientX + document.body.scrollLeft;
if (r < 0) r=0;
return r;
}
function getMouseY(e)
{
var r=0;
if (isDOM) r = e.pageY;
else r = event.clientY + document.body.scrollTop;
if (r < 0) r=0;
return r;
}
function getTop(Element)
{
if (Element.offsetParent) return Element.offsetTop+getTop(Element.offsetParent);
else return Element.offsetTop;
}
function getLeft(Element)
{
if (Element.offsetParent) return Element.offsetLeft+getLeft(Element.offsetParent)
else return Element.offsetLeft;
}
function getWidth(Element)
{
return Element.offsetWidth;
}
function getHeight(Element)
{
return Element.offsetHeight;
}
// functions for the dynamic creation and deletion of divs
function removeElementById(id)
{
if (!document.getElementById(id)) return;
element=document.getElementById(id);
element.parentNode.removeChild(element);
}
function removeDiv(id)
{
removeElementById(id);
}
function createDiv(id,posX,posY,content)
{
var menuDiv=document.createElement("div");
menuDiv.id=id;
menuDiv.style.position='absolute';
menuDiv.style.top =posY+'px';
menuDiv.style.left=posX+'px';
menuDiv.innerHTML=content;
document.getElementsByTagName('body').item(0).appendChild(menuDiv);
return menuDiv;
}
function addEditor(objId)
{
hideContextmenu();
obj=document.getElementById(objId);
var objX = getLeft(obj);
var objY = getTop(obj);
var id = 'cm1';
var objWidth =getWidth(obj);
var objHeight=getHeight(obj);
var editorWidth=400;
var editorHeight=300;
var EditorX=ge_view_getScrollX()+(ge_view_getWidth()/2)-(editorWidth/2);
var EditorY=ge_view_getScrollY()+(ge_view_getHeight()/2)-(editorHeight/2);
var content ='';
var editor=createDiv(id,EditorX,EditorY,content);
editor.style.zIndex=9999;
}
function confirmEdit(objId)
{
editor=document.getElementById('ge_editor_obj_edit');
obj =document.getElementById(objId);
obj.innerHTML=editor.value;
hideContextmenu();
}
function contextmenu(e)
{
var id = 'cm1';
var tempObj = isDOM ? e.target : event.srcElement;
if (!e) e = window.event;
if ( (e.button && e.button != 2) || (e.which && e.which != 3)) return true;
if (e.stopPropagation) e.stopPropagation();
if ((e.type && e.type == "contextmenu") || (e.button && e.button == 2) || (e.which && e.which == 3))
{
hideContextmenu(id);
var mouseX = getMouseX(e);
var mouseY = getMouseY(e);
while(tempObj.innerHTML=='')
{
if(!tempObj.parentNode) break;
tempObj=tempObj.parentNode;
}
if (!tempObj.id) tempObj.id='ge_editor_obj_'+maxEditorId;
maxEditorId++;
var content ='';
content+=' ';
content+=tempObj.tagName;
content+=' ';
content+=' edit content';
content+=' ';
content+=' ';
var menu=createDiv(id,mouseX,mouseY,content);
menu.style.zIndex=9999;
}
else
{
var menuClick=false;
while(tempObj.parentNode)
{
if (tempObj.id==id)
{
menuClick=true;
break;
}
tempObj=tempObj.parentNode;
}
if (!menuClick) hideContextmenu();
}
return false;
}
function hideContextmenu()
{
var id='cm1';
if (document.getElementById(id)) removeDiv(id);
if (document.getElementById('highlight_'+id)) removeDiv('highlight_'+id);
}
// ----------------------------------------------------------------------------------
// Main
// ----------------------------------------------------------------------------------
function main()
{
if (document.layers) document.captureEvents(Event.MOUSEDOWN);
document.onmousedown =contextmenu;
document.oncontextmenu =function(e){ if (e) e.stopPropagation(); return false; };
message=createDiv('cm1',(10+ge_view_getScrollX()),(10+ge_view_getScrollY()),' | The Editor is active. Right-click on any element to edit it. | ');
message.style.zIndex=9999;
}
startMain(); |
|
|
|