/* Menubuilder.js
 * Author: newmagic datensysteme gmbh, 2008
 * this file is part of newmagic's magic matrix rel 8.0 voeig
 *
 * all rights reserved.
 *
 * INHALT:
 * - Hauptmenübildung
 * - EASYBOX (Submenü auf der linken Seite)
 */

include("mm8UIControl.js");


var xDataSource = new mm8Data('xDataSource');
var xDataChild  = new mm8Data('xDataChild');
var xDataTemp2  = new mm8Data('xDataTemp2');
var xDataTemp3  = new mm8Data('xDataTemp3');
var xFondsAbc   = new mm8Data('xFondsAbc');
var xDocOverflow = "visible";

var sMenuLine = '<ul id="menu">{xMenuItems}</ul>';
var sMenuItem = '<li id="{xID}" onmouseover="GetChildrenOf(\'{xID}\', \'{xID}Children\', {xLevel});">{xLink}{xTitle}<div id="childmarker"><img src="{xChildMarker}" id="{xID}ChildMarker" /></div>{xLinkClose}<ul id="{xID}Children" class="children"></ul></li>';
var sMenuChildMarker = '/voeig/internet_3.nsf/sysWebfiles/homepage.grafik/$file/pfeilchen.gif';
var sMenuChildMarkerEmpty = '/voeig/internet_3.nsf/sysWebfiles/homepage.grafik/$file/null.png';

var bMouseIsOverMenu = false;
var xTimeout = null;
var xRoles   = [];
var xTimerFade = null;
var xFadeVal = 100;
var xHovered = "";
var loadedChildren = new Object();

/* Diese Funktion baut - je nach aktueller Sprache - das Menü vom entsprechenden Root weg auf.
 */
function BuildTopLevelMenu()
{
  xLang = document.getElementById("thisLanguage").value;
  xRoles = document.getElementById("USER_ROLLES").value;
  xDataSource.ReadData(mm8WebDbUrl + "/sysPagesMenuStart?ReadViewEntries&RestrictToCategory=" + xLang + "&uniquelink=" + Math.random());
  GetChildrenOf(xDataSource.data[0].globUNID.replace("x", ""), "menucontainer", 1);

}

/* Liest die Kinderelemente aus der Datenbank, die dem aktuell gehoverten Element untergeordnet sind
 * und baut das Menü (Ebene + 1) aus dem oben definierten Atomen auf.
 */
function GetChildrenOf(docUNID, idTarget, iLevel)
{
  if (loadedChildren[docUNID]) return;
  xDataSourceX = new mm8Data('xDataSource' + docUNID);
  xDataSourceX.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&RestrictToCategory=" + docUNID + "&uniquelink=" + Math.random());


  if (xDataSourceX.data.length > 0)
  {
    sHTMLCode = sMenuLine;
    sItems = "";
    for (xObjIdx in xDataSourceX.data)
    {
      xObj = xDataSourceX.data[xObjIdx];
      if (xObj["userRoles"])
      {
        xItemRoles = xObj["userRoles"];
        xItemRoles = xItemRoles.split(",");
        bAllowed = (xItemRoles.length == 0 || xObj["userRoles"] == "");
        for (xItemRole in xItemRoles)
        {
          bAllowed = bAllowed || (xRoles.indexOf(xItemRole ) > 0);
        }
      }
      else
      {
        bAllowed = true;
      }
      if (bAllowed)
      {
        sItem    = sMenuItem;
        sItem    = sItem.replace(/\{xID\}/g, xObj["unid"]);
        sItem    = sItem.replace(/\{xTitle\}/g, decodeURI(xObj.globDisplay));
        sItem    = sItem.replace(/\{xChildren\}/g, "menu{xLevel}");
        sItem    = sItem.replace(/\{xLevel\}/g,  (iLevel + 1).toString());
        if(xObj["docIsMenuLink"] == "0")
        {
          sItem  = sItem.replace(/\{xLink\}/g, "<a href='#' style='cursor:default;'>"); 
          sItem  = sItem.replace(/\{xLinkClose\}/g, "</a>");
        }
        else
        {       
          sItem    = sItem.replace(/\{xLink\}/g, "<a href='" + xObj.globLink + "'>");
          sItem  = sItem.replace(/\{xLinkClose\}/g, "</a>");
        }
        if (xObj["docIsMenuStop"] == "1")
        {
          sItem  = sItem.replace("GetChildrenOf(", "voidcall(");
          sItem = sItem.replace(/\{xChildMarker\}/g, sMenuChildMarkerEmpty);

        }
        else
        {
          xDataChild.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&RestrictToCategory=" + xObj["unid"] + "&uniquelink=" + Math.random());

          if (iLevel > 1 && xDataChild.data.length > 0)
          {
              sItem = sItem.replace(/\{xChildMarker\}/g, sMenuChildMarker);
          }
          else        
          {
              sItem = sItem.replace(/\{xChildMarker\}/g, sMenuChildMarkerEmpty);
          }
        }
        sItems   += sItem;
      }
    }
    if (iLevel > 1)
    {
      sHTMLCode = sItems;
    }
    else
    {
      sHTMLCode = sHTMLCode.replace(/\{xMenuItems\}/g, sItems);
    }
    xElem = document.getElementById(idTarget);
    if (xElem)
    {

      //alert("Inhalt des Containers (100 Zeichen):" + xElem.innerHTML.substr(0, 100));
      //alert("Position des Containers: " + xElem.style.left + " x " + xElem.style.top);
      if (navigator.appVersion.substr(0,1) == "6")
      {
        // IE 6 Problem:
        /*
        xParent = xElem.parentNode;
        xParent.removeChild(xElem);
        xElem = document.createElement("div", {'id': xElem.id, 'class':'children'});
        xElem2 = document.createElement("ul", {});
        xElem.appendChild(xElem2);
        xElem2.innerHTML = sHTMLCode;
        xParent.appendChild(xElem);
        */
        
        if (iLevel > 1)
        {
          for(c=0;c<30;c++) sHTMLCode = sHTMLCode.replace("<li", "<div").replace("</li", "</div");
        }
        xParent = xElem.parentNode;
        xParent.removeChild(xElem);
        xElem = document.createElement("div", {'id': xElem.id, 'class':'children'});
        xElem.innerHTML = sHTMLCode;
        xParent.appendChild(xElem);
      }
      else
        xElem.innerHTML = sHTMLCode;
    }
  }
  loadedChildren[docUNID] = true;
}

/* Erklärt sich selbst.
 */
function JumpTo(url)
{
  window.location.href=url;
}


function voidcall()
{
  bMouseIsOverMenu = true;
  window.clearTimeout(xTimeout);

}

// SUB PAGES // (EASYBOX)

var xSubPageSource = new mm8Data('xSubPageSource ');

function GetSubPages(id)
{
  xDataSource.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&RestrictToCategory=" + id.replace("x", "") + "&uniquelink=" + Math.random());

  if (xDataSource.data.length > 0)
  {
    xElem = document.getElementById("rundschreibentitel");
    sHTML = "";
    for(i = 0; i < xDataSource.data.length; i++)
    {
      xObj = xDataSource.data[i];
//      sHTML += "<div id='" + xObj["unid"] + "'><a href='javascript:OpenSubPage(\"" + xObj["globLink"] + "\")'>" + xObj["globDisplay"] + "</a></div>";
      sHTML += "<div id='" + xObj["unid"] + "'><a href='" + xObj["globLink"] + "' target='_blank'>" + xObj["globDisplay"] + "</a></div><br/>";
    }
    xElem.innerHTML = sHTML;
  }
}

function GetSubPages_presse(id)
{
  xDataSource.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&RestrictToCategory=" + id.replace("x", "") + "&uniquelink=" + Math.random());

  if (xDataSource.data.length > 0)
  {
    xElem = document.getElementById("pressemitteilungen");
    sHTML = "";
    for(i = 0; i < xDataSource.data.length; i++)
    {
      xObj = xDataSource.data[i];
//      sHTML += "<div id='" + xObj["unid"] + "'><a href='javascript:OpenSubPage(\"" + xObj["globLink"] + "\")'>" + xObj["globDisplay"] + "</a></div>";
      sHTML += "<div id='" + xObj["unid"] + "'><a href='" + xObj["globLink"] + "' target='_blank'>" + xObj["globDisplay"] + "</a></div><br/>";
    }
    xElem.innerHTML = sHTML;
  }
}

function OpenSubPage(url)
{
  sHTML = "<iframe src='" + url + "' id='rundschreibeninhalt'></iframe>";  
  xElem = document.getElementById("rundschreibentitel");
  xElem.innerHTML = sHTML;
}

function GetSubPages_MS_KAG(id)
{
  xDataSource.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&RestrictToCategory=" + id.replace("x", "") + "&uniquelink=" + Math.random());

  if (xDataSource.data.length > 0)
  {
    xElem = document.getElementById("fondsliste");
    sHTML = "";
    for(i = 0; i < xDataSource.data.length; i++)
    {
      xObj = xDataSource.data[i];
      sHTML += "<div id='" + xObj["unid"] + "'><a href='javascript:CreateLightBox(\"" + xObj["globLink"] + "\")'>" + xObj["globDisplay"] + "</a></div>";
    }
    xElem.innerHTML = sHTML;
  }
}

function OpenSubPage_MS_KAG(url)
{
  sHTML = "<iframe src='" + url + "' id='fondsinhalt'></iframe>";  
  xElem = document.getElementById("fondsliste");
  xElem.innerHTML = sHTML;
}

// SUBPAGES f. steuerliche Behandlung

function GetPaymentYears(id)
{
  xDataTemp2.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&RestrictToCategory=" + id.replace("x", "") + "&uniquelink=" + Math.random());
  if (xDataTemp2.data.length > 0)
  {
    xElem = document.getElementById("paymentyears");
    sHTML = "";
    for(i=0;i<xDataTemp2.data.length;i++)
    {
      xObj = xDataTemp2.data[i];
      sHTML += "<div id='" + xObj["unid"] + "'><a id='" + xObj["unid"] + "Year' href='#' rel='year_hover' onmouseover='DoHover(\"" + xObj["unid"] + "Year\", \"year_hover\", \"isActiveYear\");GetSubPages_STRL_FONDS(\"" + xObj["unid"] + "\")'>" + xObj["globDisplay"] + "</a></div>";
    }
    xElem.innerHTML = sHTML;
  }
}

function GetSubPages_STRL_FONDS(id)
{
  xRoles = document.getElementById("USER_ROLLES").value;
  xDataTemp3.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&RestrictToCategory=" + id.replace("x", "") + "&uniquelink=" + Math.random());
  if (xDataTemp3.data.length > 0)
  {
    xElem = document.getElementById("fonds");
    sHTML = "";
    for(i = 0; i < xDataTemp3.data.length; i++)
    {
      xObj = xDataTemp3.data[i];
      sLookups = xObj["globLookup"].replace("LOOKUP:", "");
      saTemp = sLookups.split("|")
      saLookups = {}
      for(j=0;j<saTemp.length;j++)
      {      
        saTemp2 = saTemp[j].split("=");
        saLookups[saTemp2[0]] = saTemp2[1];
      }
      sISIN = "";
      if (saLookups["docISIN"] && saLookups["docISIN"] != "")
      {
        sISIN = saLookups["docISIN"];
      }
      else if (saLookups["docWKN"] != null)
      {
        sISIN = saLookups["docWKN"];
      }
      if ((xRoles.indexOf("[" + saLookups["docKAGCode"] + "]") > -1) && (xRoles.indexOf("[steuerlich]") > -1))
      {
        sHTML += "<div id='" + xObj["unid"] + "'>";
        sHTML += "  <a href='javascript:CreateLightBox(\"" + xObj["globLink"] + "?EditDocument\")'><img src='/voeig/internet_3.nsf/sysWebfiles/homepage.grafik/$file/pen.png'></a>&nbsp;";
        sHTML += "  <a href='javascript:DeleteDocument(\"" + xObj["unid"] + "\")'><img height='13' width='13' src='/voeig/internet_3.nsf/sysWebfiles/homepage.grafik/$file/delete.png'/></a>&nbsp;";
        sHTML += "  <a href='javascript:CreateLightBox(\"" + xObj["globLink"] + "\")'>" + xObj["globDisplay"] + "</a>";
        sHTML += "  <br />" + sISIN + "<br /><br />";
        sHTML += "</div>";
      }
      else
      {
        sHTML += "<div id='" + xObj["unid"] + "'><a href='javascript:CreateLightBox(\"" + xObj["globLink"] + "\")'>" + xObj["globDisplay"] + "</a><br />" + sISIN + "<br /><br /></div>";
      }
    }

    xElem.innerHTML = sHTML;
  }
  else
  {
    xElem = document.getElementById("fonds");
    sHTML = "";
    xElem.innerHTML = sHTML;
  }
}

function DoHover(id, typeid, style)
{
  saLinks = document.getElementsByTagName("a");
  for(i=0;i<saLinks.length;i++)
  {
    if (saLinks[i].getAttribute("rel") == typeid)
    {
      saLinks[i].className = "";
    }
  }
  document.getElementById(id).className = style;
}


// LIGHTBOX
function CreateLightBox(url)
{
  xElemBg = document.getElementById("xLightBackground");
  xElemBox = document.getElementById("xLightBox");
  xElemContent = document.getElementById("xLightBoxContent");
  
  xElemBg.style.display = "block";
  xElemBg.style.height = "100%";
  xElemBg.style.width = "100%";
  document.getElementsByTagName("body")[0].style.overflow = "hidden";
  xElemBox.style.display = "block";
  xElemContent.src = url;
  iYCorrector = 0;
  if (window.innerHeight)
  {
    iTWidth = window.innerWidth;
    iTHeight = window.innerHeight;
    iYCorrector = window.scrollY;
    xElemBg.style.top = window.scrollY + "px";
  }
  else
  {
    iTWidth = document.documentElement.offsetWidth;
    iTHeight = document.documentElement.offsetHeight;
    iYCorrector = document.documentElement.scrollTop;
    xElemBg.style.top = document.documentElement.scrollTop + "px";
  }

  xWidth = xElemBox.offsetWidth;
  xHeight = xElemBox.offsetHeight;

  iX = ((iTWidth-xWidth) / 2);
  iY = ((iTHeight-xHeight) / 2);

  iY += iYCorrector;

  xElemBox.style.left = iX + "px";
  xElemBox.style.top = iY + "px";

}

function ShowCloser()
{
}

function HideCloser()
{
}

function CloseBox()
{
  xElemBg = document.getElementById("xLightBackground");
  xElemBox = document.getElementById("xLightBox");
  xElemContent = document.getElementById("xLightBoxContent");
  

  xElemContent.src = "";
  xElemBox.style.display = "none";
  xElemBg.style.display = "none";
  document.getElementsByTagName("body")[0].style.overflow = xDocOverflow;
}

// FONDS-ABC

function LoadFondsAbc(myunid)
{
  xFondsAbc.ReadData(mm8WebDbUrl + "/sysPagesMenu2?ReadViewEntries&count=500&RestrictToCategory=" + myunid.substr(1) + "&uniquelink=" + Math.random());
}

function OpenFondsAbcLetter(sLetter)
{
  sHTML = "";
  for(i=0;i<xFondsAbc.data.length;i++)
  {
    xObj = xFondsAbc.data[i];
    if (xObj["globDisplay"].substring(0, 1).toUpperCase() == sLetter)
    {
      sHTML += "<div id='" + xObj["globUNID"] + "'><a href='#' onmouseover='OpenFondsAbcDetail(\"FONDSABC_" + xObj["globDisplay"] + "\")'>" + xObj["globDisplay"] + "</a></div>";
    }
  }
  xElem = document.getElementById("FondsAbcListe");
  if (xElem) xElem.innerHTML = sHTML;
}

function OpenFondsAbcDetail(sWording)
{
  xElem = document.getElementById("FondsAbcDetails");
  if (xElem)
  {
    xElem.src = mm8WebDbUrl + "/sysPages/" + sWording;
  }
}

//Gallerieen

function LoadGallery(unid)
{
  sContent = mm8AxCore.SGet(mm8WebDbUrl + "/sysAjax?OpenAgent&unid=" + unid.substr(1) + "&mime=html&encoding=utf-8&tpl=gallery_partial.template");
  document.getElementById("gallerythumbs").innerHTML = sContent;
  CreateGallery();
}


function SendPage(link)
{
  xElemBg = document.getElementById("xLightBackground");
  xElemBox = document.getElementById("xLightBox");
  xElemContent = document.getElementById("xLightBoxContent");
  
  if (!xElemBg)
  {
    xBody= document.getElementsByTagName("body")[0];
    sString = '<div id="xLightBackground" style="display:none;"></div><div id="xLightBox" style="display:none;"><iframe id="xLightBoxContent" width="100%" height="100%" style="border:none;"></iframe>';
    sString += '<div id="xLightBoxClose" onclick="CloseBox()" onmouseover="ShowCloser()" onmouseout="HideCloser()"><img src="/voeig/internet_3.nsf/sysWebfiles/homepage.grafik/$file/closelightbox.png"></div></div>';
    xBody.innerHTML += sString;
    xElemBg = document.getElementById("xLightBackground");
    xElemBox = document.getElementById("xLightBox");
    xElemContent = document.getElementById("xLightBoxContent");
  }



  xElemBg.style.display = "block";
  xElemBox.style.display = "block";
  xElemContent.src = mm8WebDbUrl + "/docSendToFriend?OpenForm&sendurl=" + link;
  
  iYCorrector = 0;
  if (window.innerHeight)
  {
    iTWidth = window.innerWidth;
    iTHeight = window.innerHeight;
    iYCorrector = window.scrollY;
    xElemBg.style.top = window.scrollY + "px";
  }
  else
  {
    iTWidth = document.documentElement.offsetWidth;
    iTHeight = document.documentElement.offsetHeight;
    iYCorrector = document.documentElement.scrollTop;
    xElemBg.style.top = document.documentElement.scrollTop + "px";
  }

  xWidth = xElemBox.offsetWidth;
  xHeight = xElemBox.offsetHeight;

  iX = ((iTWidth-xWidth) / 2);
  iY = ((iTHeight-xHeight) / 2);

  iY += iYCorrector;
  xElemBox.style.left = iX + "px";
  xElemBox.style.top = iY + "px";

}


function DeleteDocument(unid)
{
  xRet = confirm("WARNUNG! WENN SIE AUF 'OK' KLICKEN WIRD DAS AUSGEWÄHLTE DOKUMENT GELÖSCHT!\n\nWollen Sie das ausgewählte Dokument löschen?");
  if (!xRet) return;

  sResponse = mm8AxCore.SGet(mm8WebDbUrl + "/sysAjaxDelete?OpenAgent&unid=" + unid);
  if (sResponse.substring(0,2) == "OK")
  {
    xElem = document.getElementById(unid);
    xElem.style.display = "none";
  }
  else
  {
    alert(sResponse.substr(6));
  }
}

// DIESER TEIL IST VON ME NOCH ZU UEBERPRUEFEN
var qTipTag = "i,input"; //Which tags do you want to qTip-ize? Keep it lowercase!//
var qTipX = 0; //This is qTip's X offset//
var qTipY = 15; //This is qTip's Y offset//

//There's no need to edit anything below this line//
tooltip = {
  name : "qTip",
  offsetX : qTipX,
  offsetY : qTipY,
  tip : null
}

tooltip.init = function () {
	var tipNameSpaceURI = "http://www.w3.org/1999/xhtml";
	if(!tipContainerID){ var tipContainerID = "qTip";}
	var tipContainer = document.getElementById(tipContainerID);

	if(!tipContainer) {
	  tipContainer = document.createElementNS ? document.createElementNS(tipNameSpaceURI, "div") : document.createElement("div");
		tipContainer.setAttribute("id", tipContainerID);
	  document.getElementsByTagName("body").item(0).appendChild(tipContainer);
	}

	if (!document.getElementById) return;
	this.tip = document.getElementById (this.name);
	if (this.tip) document.onmousemove = function (evt) {tooltip.move (evt)};

	var a, sTitle, elements;
	
	var elementList = qTipTag.split(",");
	for(var j = 0; j < elementList.length; j++)
	{	
		elements = document.getElementsByTagName(elementList[j]);
		if(elements)
		{
			for (var i = 0; i < elements.length; i ++)
			{
				a = elements[i];
				sTitle = a.getAttribute("title");				
				if(sTitle)
				{
					a.setAttribute("tiptitle", sTitle);
					a.removeAttribute("title");
					a.removeAttribute("alt");
					a.onmouseover = function() {tooltip.show(this.getAttribute('tiptitle'))};
					a.onmouseout = function() {tooltip.hide()};
				}
			}
		}
	}
}

tooltip.move = function (evt) {
	var x=0, y=0;
	if (document.all) {//IE
		x = (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
		y = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
		x += window.event.clientX;
		y += window.event.clientY;
		
	} else {//Good Browsers
		x = evt.pageX;
		y = evt.pageY;
	}
	this.tip.style.left = (x + this.offsetX) + "px";
	this.tip.style.top = (y + this.offsetY) + "px";
}

tooltip.show = function (text) {
	if (!this.tip) return;
	this.tip.innerHTML = text;
	this.tip.style.display = "block";
}

tooltip.hide = function () {
	if (!this.tip) return;
	this.tip.innerHTML = "";
	this.tip.style.display = "none";
}

// Multiple onload function created by: Simon Willison
// http://simonwillison.net/2004/May/26/addLoadEvent/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function() {
  tooltip.init ();
});


