/*
PageId:         Glossary JavaScript-functions
Author:			29.11.2006, Marat Saitov, Unilog Avinci - a LogicaCMG company
Description:	Glossary JavaScript functions
Comments:	    
Last changes:   function for Topic (30.11.2006, Marat Saitov, Unilog Avinci - a LogicaCMG company)
*/


// Global runtime variables
var glossarytimer;

//*********************************************************
// Setting Topic, Headline and Description in the glossary
//*********************************************************

var definitionTopic = function(data)
{
  if (data != null && typeof data == 'object') alert(dwr.util.toDescriptiveString(data, 2));
  var topic = data;
  if (topic && topic != 'null') {
	 dwr.util.setValue('paneGlossary_topic', topic);
  } else {
     dwr.util.setValue('paneGlossary_topic', 'Glossar');
  }  
}

var definitionHeader = function(data)
{
  if (data != null && typeof data == 'object') alert(dwr.util.toDescriptiveString(data, 2));
  var header = data;
  if (header && header != 'null') {
	 dwr.util.setValue('paneGlossary_definitionHeader', header);
  } else {
     dwr.util.setValue('paneGlossary_definitionHeader', '');
  }  
}

var definitionDescription = function(data)
{
  if (data != null && typeof data == 'object') alert(dwr.util.toDescriptiveString(data, 2));
  var desc = data;
  if (desc && desc != 'null') {
	 dwr.util.setValue('paneGlossary_definitionDescription', desc);
  } else {
     dwr.util.setValue('paneGlossary_definitionDescription', 'Keine Definition verf&uuml;gbar');
  }  
}

//**************************************************
// Close floating pane 
//**************************************************
function closeFloatingPane(objId) {
	var div = document.getElementById(objId);
	if (div) {
		div.style.visibility = "hidden";
	}
}


//**************************************************
// Make a floating pane 
//**************************************************
function showFloatingPane(objId, posObjId, topic) {
	var div = document.getElementById(objId);

	if (div) {
		GlossaryBean.getDefinitionDescription(topic, definitionDescription);
		GlossaryBean.getDefinitionHeader(topic, definitionHeader);
		GlossaryBean.getTopic(topic, definitionTopic);

		var func = "setGlossarPosition('" + objId + "','" +  posObjId + "')";
		glossarytimer = window.setTimeout(func, 100);
	}
}

//**************************************************
// Glossary position setting
//**************************************************
function setGlossarPosition(objId, posObjId) {
	var div = document.getElementById(objId);

	var leftPos = document.getElementById(posObjId).offsetLeft;
	var topPos = document.getElementById(posObjId).offsetTop;

	div.style.left = leftPos - div.offsetWidth + "px";
	div.style.top = topPos - div.offsetHeight - 20 + "px";

	div.style.visibility = "visible";

	var obj = document.getElementById(objId + '_container');
	obj.focus();

	window.clearTimeout(glossarytimer);
}


//***************************************************************************
// Drag and Drop Engine
// for Netscape since Version 6, Mozilla, Internet Explorer since Version 4
//***************************************************************************
// Moved object
var dragobject = null;
// Position, where the object was clicked on
var dragx = 0;
var dragy = 0;
// Mause position
var mousePosX = 0;
var mousePosY = 0;
// Initialisation of Events handling
function draginit() {
  document.onmousemove = drag;
  document.onmouseup = dragstop;
}
// Start moving
function dragstart(element) {
  dragobject = document.getElementById(element);
  dragx = mousePosX - dragobject.offsetLeft;
  dragy = mousePosY - dragobject.offsetTop;
}
// Stop moving
function dragstop() {
  dragobject=null;
}
// Moving the object
function drag(event) {
  mousePosX = document.all ? window.event.clientX : event.pageX;
  mousePosY = document.all ? window.event.clientY : event.pageY;
  if (dragobject != null) {
    dragobject.style.left = (mousePosX - dragx) + "px";
    dragobject.style.top = (mousePosY - dragy) + "px";
  }
}

