/* Global Properties */

setCancelClick(false);
setLastChangedEditor(null); 
setCurrentToolbar(null);


function getLastChangedEditor() {
	return window.g_lastChangedEditor;
}

function setLastChangedEditor(editor) {
	window.g_lastChangedEditor = editor;
}

function getCancelClick() {
	return window.g_cancelClick;
}

function setCancelClick(state) {
	window.g_cancelClick = state;
}

function getCurrentToolbar() {
	return window.g_currentToolbar;
}

function setCurrentToolbar(toolbar) {
	window.g_currentToolbar = toolbar;
}



/* OnScreen DIV events */

function DoMouseOver(mozEvent) {
	var customEvent = getCustomEventQP(mozEvent);
	var obj = customEvent.target;
	var div = getParentElementByAttrQP(obj, "on_fly_type", "onfly_div");
	if (div) {
		if (div.contentEditable == "true") {
			setBorderQP(div);
		} else {
			if (qp_isIE) {
				//correctToolbarPositionQP(div.toolbar); // !!!!
				showToolbarQP(div.toolbar); // !!!!
			}
		}
	}
}

function DoMouseOut(mozEvent) {
	var customEvent = getCustomEventQP(mozEvent);
	var obj = customEvent.target;
	var obj = getParentElementByAttrQP(obj, "on_fly_type", "onfly_div");

	var objNew = customEvent.relatedTarget;
	
	if (obj.contentEditable == "true") {
		if (!(obj.focused || obj.static_border == "true")) 			
			resetBorderQP(obj);
	} else {
		if (!objNew || objNew.id != obj.toolbar.id) 
			if (qp_isIE) 
				hideToolbarQP(obj.toolbar);
	}
}


/* OnScreen VE Events */

function DoFocus(mozEvent) { /* IE and FF */
	var customEvent = getCustomEventQP(mozEvent);
	var obj = customEvent.target;
	var obj = getParentElementByAttrQP(obj, "on_fly_type", "onfly_div");

	obj.focused = true;
	//correctToolbarPositionQP(obj.toolbar);
	showToolbarQP(obj.toolbar);
	
	if (obj.contentEditable == "true") 
		setBorderQP(obj);
	
	var divs = getOnScreenDivCollectionQP()
	for (var i = 0; i < divs.length; i++) {
		var div = divs[i];
		if (div != obj) {
			if (div.focused)
				loseFocusQP(div);
		}
	}
}

function DoBeforeDeactivate(mozEvent) { /* IE only */
	var customEvent = getCustomEventQP(mozEvent);
	var obj = customEvent.target;
	var obj = getParentElementByAttrQP(obj, "on_fly_type", "onfly_div");

	var objNew = customEvent.toElement;
	if (objNew) {
		var img = (objNew.tagName == "IMG") ? objNew : objNew.getElementsByTagName("img")[1];
	}
	if (objNew && isActionQP(objNew) && img.toolbar.onScreenDiv == obj) {
		processActionQP(objNew, customEvent, obj);
		return;
	} else {
		if (obj.innerHTML != obj.originalContent) {
			if (confirm("Article was modified. Click OK button to save changes or Cancel button to continue editing.")) {
				saveQP(obj, true);
			}	
	
			stopEventQP(customEvent, true);
			return;
		}
	}
	
	loseFocusQP(obj);
}

function editorBlur(mozEvent) { /* FF only */

	var customEvent = getCustomEventQP(mozEvent);
	var editorDocument = customEvent.target; 
	var div = editorDocument.onflyDiv;
    if (div) {
		if (div.toolbar == getCurrentToolbar()) 
			return;
	    if (getLiveContentQP(div) != div.originalContent) {
			stopEventQP(customEvent, true);
			setCancelClick(true);
			setLastChangedEditor(div.editor);
		} else {
			hideToolbarQP(div.toolbar);
		}
	}
}

function editorOverflow(mozEvent) { /* FF only */
	var customEvent = getCustomEventQP(mozEvent);
	var editorDoc = customEvent.target;
/*	var div = editorDoc.onflyDiv;
	if (div) {
		div.editor.style.height = editorDoc.body.scrollHeight + "px";
		div.editor.style.width = editorDoc.body.scrollWidth + "px";
	}
*/
/*
if (!event.target.ownerDocument) return;
          if (!event.target.ownerDocument.onflyDiv) return;
          var onflyDiv = event.target.ownerDocument.onflyDiv;

          var bodyH = onflyDiv.editor.contentWindow.document.body.scrollHeight + 2;
          var bodyW = onflyDiv.editor.contentWindow.document.body.scrollWidth + 5;

          if (onflyDiv.editor.clientHeight < bodyH) onflyDiv.editor.style.height = bodyH;
          if (onflyDiv.editor.clientWidth < bodyW) onflyDiv.editor.style.width = bodyW;

          onflyDiv.style.width = bodyW + 7;
          onflyDiv.style.height = bodyH + 1;

          onflyDiv.editor.style.left = mozGetOffsetLeft(onflyDiv) + 4;
          onflyDiv.editor.style.top = mozGetOffsetTop(onflyDiv) + 2;
          onflyDiv.setBtnPos();
          return;
*/
} 


/* Toolbar events */

function btnMouseOver(mozEvent) {
	var customEvent = getCustomEventQP(mozEvent);
	var obj = customEvent.target;
	if (obj.getAttribute("on_fly_type") == "onfly_toolbar_btn") {
		setCurrentToolbar(obj.toolbar); 
		if (obj.src.indexOf("_over.") == - 1) 
			obj.src = obj.src.replace(".jpg", "_over.jpg");
	}
}

function btnMouseOut(mozEvent) {
	var customEvent = getCustomEventQP(mozEvent);
	var obj = customEvent.target;
	setCurrentToolbar(null); 
	var toolbar, btn;
	var onfly_type = obj.getAttribute("on_fly_type");
	if (onfly_type == "onfly_toolbar") { // event on toolbar
		toolbar = obj;
	} else if (onfly_type == "onfly_toolbar_btn") { // event on toolbar children
		btn = obj; 
		toolbar = btn.toolbar;
	} else {
		toolbar = getParentElementByAttrQP(obj, "on_fly_type", "onfly_toolbar");
	}
	var div = toolbar.onScreenDiv;
	var objNew = customEvent.relatedTarget;
	
	var relatedControlsRegExp = new RegExp("onfly_.*_" + div.onfly_no);
	if ((div.contentEditable != "true") && (!objNew || objNew.id.search(relatedControlsRegExp) < 0))
		hideToolbarQP(toolbar);
	
	if (btn) btn.src = btn.src.replace("_over.jpg", ".jpg");
}

function btnClick(mozEvent) {
	var customEvent = getCustomEventQP(mozEvent);
	var btn = customEvent.target;
	var div = btn.toolbar.onScreenDiv;
	var number = div.onfly_no;
	processActionQP(btn, customEvent, div);
}


/* Firefox global window handlers */

function winClick(mozEvent) {
	if (typeof(getCustomEventQP) != "undefined") {
		var customEvent = getCustomEventQP(mozEvent);
		var objEl = customEvent.target;
		if (getCancelClick()) {
			stopEventQP(mozEvent);
			var editor = getLastChangedEditor()
			if (editor) {
				alert("Article was modified. Please, save your changes or discard them.");
				editor.contentWindow.focus();
			}
			setCurrentToolbar(null);
			setCancelClick(false);
			setLastChangedEditor(null);
		}
	}
}
	
function winMouseMove(mozEvent) {
	if (typeof(getCustomEventQP) != "undefined") {
		var toolbar, targetDiv;
		var customEvent = getCustomEventQP(mozEvent);
		var objEl = customEvent.target;
		
		var targetToolbar = getParentElementByAttrAndDepthQP(objEl, "on_fly_type", "onfly_toolbar", 12);
		var targetDiv = getParentElementByAttrAndDepthQP(objEl, "on_fly_type", "onfly_div", 35);
		
		var number = 0;
		if (targetToolbar != null) 
			targetDiv = targetToolbar.onScreenDiv;
		if (targetDiv != null) 
			targetToolbar = targetDiv.toolbar;
		
		if (!targetDiv) return;
		var divs = getOnScreenDivCollectionQP();
		for (var i = 0; i < divs.length; i++) {
			var div = divs[i];
			var toolbar = div.toolbar;
			if (div == targetDiv) {
				if (div.contentEditable == "true") {
					setBorderQP(div);
				} else {
					showToolbarQP(toolbar);
				}
			} else {
				if (div.contentEditable == "true" && !div.focused || div.contentEditable != "true") 
					if (isElemDisplayed(toolbar.id))
						hideToolbarQP(toolbar);
			}
		}
	}
}

/* Other events */

function DoResize(mozEvent) {
	var customEvent = getCustomEventQP(mozEvent);
	var div = customEvent.target;
	var div = getParentElementByAttrQP(div, "on_fly_type", "onfly_div");

	//correctToolbarPositionQP(div.toolbar);
}
