
// ===================================================================================
//  js_geber_lib
// ===================================================================================
function geber_lib_activateLibrary(pagePath)
{
  geber_lib_detectBasePath(pagePath);
}

var geber_lib_onloadFuncArray;

function geber_lib_addLoadEvent(func)
{
    if (document.all)
    {
        try { attachEvent("onload", func); return;}
        catch (e)
        { }
    }
    else
    {
        window.addEventListener("load", func, true);
        return;
    }


  // initialise the onload handler
  if (geber_lib_onloadFuncArray == null)
  {
      geber_lib_onloadFuncArray = new Array();

      var oldonload = window.onload;
      window.onload = function()
      {
          for (var funcIdx=0; funcIdx <  geber_lib_onloadFuncArray.length; funcIdx++)
               geber_lib_onloadFuncArray[funcIdx]();
      }
  }

  geber_lib_onloadFuncArray[geber_lib_onloadFuncArray.length] = func;
}



   // geber_lib_stripTags
   // ---------------------------------------------------------------------------------------------------------------------------------------------------------
   /**
    * stripps all the tags from the provided text
    */
    function geber_lib_stripTags(text)
    {
        if (!text || (typeof text != "string") || (text.length <= 0))
            return "";

        // strip off all javascript tags
        text = text.replace(/<script.*<\/script[^>]*>/gi, "");


        // strip off all stye tags
        text = text.replace(/<style.*<\/style[^>]*>/gi, "");

        // strip off all other tags
        text = text.replace(/<[^>]*>/gi, "");

        // strip off all invalid characters
        text = text.replace(/[-\w+|"'\.]/gi, "");

        return text;
    }

function geber_lib_getQueryParameter(paramName)
{
       var query = window.location.search.toString();

       if (!query || (query.length <= 0))
           return "";

       if ((paramName == null) || (typeof(paramName) != "string") || (paramName.length <= 0))
         paramName = "q";

       query = query.match(new RegExp("^.*[?&]" + paramName + "=(.*)$"));
       if (!query) return "";

       query = query[1];
       query = unescape(query);

       // get rid of invalid whitespace characters
       query = query.replace(/[\r\n\t]+/gi, ' ') ;
       var re = new RegExp("[" + String.fromCharCode(0) + "-" + String.fromCharCode(31)  +
                                   String.fromCharCode(96) + "]", "gi") ;
       query = query.replace(re, '');

       // convert fixed size space
       re = new RegExp(String.fromCharCode(160) + "+", "gi") ;
       query = query.replace(re, ' ') ;

       // strip off extra query paramaters
       query = query.replace(/&(amp;)?([^;]*=.*)?$/gi, "");

       // tags are invalid
       if (query.match(/<.?(script|style)/gi))
           return "";

       // clean up the query string
       query = geber_lib_stripTags(query);
       query = query.replace(/[^-_:;,\w\/\.=]/gi, "");
       return query;
}


function geber_lib_writeDocument(htmlText)
{
    document.write(htmlText);
}

var geber_lib_pageBaseURL = "/";
function geber_lib_getBaseURLPath()
{
    if (geber_lib_pageBaseURL)
        return geber_lib_pageBaseURL;
    else return "/";
}

function geber_lib_redirectToPath(pagePath)
{
    if (!pagePath || typeof(pagePath) != "string" || pagePath.length <= 0)
        return false;

    var baseURIPath = geber_lib_getBaseURLPath();
    if (!baseURIPath || typeof(baseURIPath) != "string" || baseURIPath.length <= 0)
        return false;

    var targetPath = "";
    if (pagePath.substring(0, 3) == "../")
    {
        baseURIPath = window.location.pathname;
        while (pagePath.substring(0, 3) == "../")
        {
            baseURIPath = geber_lib_dirname(baseURIPath);
            pagePath = pagePath.substr(3);
        }

        if (!baseURIPath || baseURIPath.length <= 0)
            baseURIPath = "";

        targetPath = baseURIPath + "/" + pagePath;
    }

    if (pagePath.substring(0, 1) == "/" && baseURIPath.substring(baseURIPath.length-1, baseURIPath.length) == "/")
        targetPath = baseURIPath.substring(0, baseURIPath.length-1) + pagePath;
    else
        targetPath = baseURIPath + pagePath;

    if (targetPath && targetPath.length > 0)
    {
        window.location.href =  targetPath;
        return true;
    }
    return false;
}

function geber_lib_detectBasePath(currentPagePath)
{
   if (!currentPagePath)
       return;

   currentPagePath = String(currentPagePath).replace(new RegExp("^/(de|en|fr|it|es)/"), "/");

   var newPageBaseURL = String(window.location.pathname);
   var pos = newPageBaseURL.indexOf(currentPagePath);

   if (pos < 0) // detect some special pages
       pos = newPageBaseURL.indexOf("/serviceseiten/suche");
   if (pos < 0) // detect some special pages
       pos = newPageBaseURL.indexOf("/servicepages/search");
   if (pos < 0) // detect some special pages
       pos = newPageBaseURL.indexOf("/servicepages");
   if (pos < 0) // detect some special pages
       pos = newPageBaseURL.indexOf("/serviceseiten");


   if (pos >= 0)
       geber_lib_pageBaseURL = newPageBaseURL.substring(0, pos);
   else
       geber_lib_pageBaseURL = "/";

   if (geber_lib_pageBaseURL == "")
       geber_lib_pageBaseURL = "/";

}

function geber_lib_dirname(fileName)
{
      if (!fileName) return fileName;
      fileName = String(fileName);

      if (fileName.length <= 0) return fileName;

      var pathSeparator = "/";
      if (String(window.location.protocol).match(/file/i) && navigator.platform.match(/Win/i) && navigator.userAgent.match(/MSIE/))
          pathSeparator = "\\";

      var idx = fileName.lastIndexOf(pathSeparator);
      if (idx && (idx >= 0))
          return fileName.substring(0, idx);
      else
          return fileName;
}



function glossary_addLinkBackButton()
{
    var content = document.getElementById("description");
    if (!content) content = document.getElementById("bodyContent");
    if (!content) content = document.getElementById("content");
    if (!content) return;


    var links = content.getElementsByTagName("a");
    for (var i=0; i<links.length; i++) {
       if (links[i].href.match(/\?/))
           links[i].href=links[i].href + "&back=1";
        else
           links[i].href=links[i].href + "?back=1";
    }
}



function print_setImg() {
    var a = document.getElementById("mainbar");
    for(var i = 0; i < a.getElementsByTagName("img").length; i++) {
      if (document.formular.setImg[0].checked)
        a.getElementsByTagName("img")[i].style.display="inline";
      if (document.formular.setImg[1].checked)
        a.getElementsByTagName("img")[i].style.display="none";
    }
  }



var operabar = (window.opera ? "=yes" : "");

function sendPopUp(newLocation) {
  var w = 640;
  var h = 405;

  return PopUpOpenWindow(newLocation, 'popup', 'resizable=yes, status=no, toolbar=no, scrollbars' + operabar, w, h);
}

function printPopUp(newLocation) {
  var w = 626;
  var h = 500;

  var operabar = "";
  if (window.opera) operabar = "=yes";

   return PopUpOpenWindow(newLocation, 'popup', 'resizable=yes, status=no, toolbar=no, scrollbars' + operabar, w, h);
}

function resizePrintPopUp() {
  var w = 626;
  var h = 560;
  var browser = geber_getBrowser();

  h = h + browser.extraStatusBarHeight;
  if (opener)
      window.resizeTo(w, h);
}

function glossaryPopUp(newLocation) {
  var h = 350;
  var w = 450;

  return PopUpOpenWindow(newLocation, 'glossary', 'resizable=yes, status=no, toolbar=no, scrollbars' + operabar, w, h);
}


function tablePopUp(newLocation, preferedWidth) {

  var w = (preferedWidth && !isNaN(preferedWidth))? preferedWidth : 800;
  var h = 500;

  w += 60;

  return PopUpOpenWindow(newLocation, 'tablePopUp', 'scrollbars,resizable=yes,location=no,status=no,toolbar=no', w, h);
}

function imagePopUp(newLocation, w, h)
{
  w += 30;
  h += 32;
   return PopUpOpenWindow(newLocation, 'imagePopUp', 'resizable=yes,location=no,status=no,toolbar=no,scrollbars' + operabar, w, h);
}

function PopUp(URL, Height, Width, Resizable, Toolbar, Scrollbars, id)
{
	var szWndOptions = "";
	var szToolbar = (Toolbar=="ja")?"yes":"no";
	var szScrollbars = (Scrollbars=="ja")?"yes":"no";
	var szResizable = (Resizable=="ja")?"yes":"no";
	szWndOptions += ",resizable=" + szResizable
	szWndOptions += ",scrollbars=" + szScrollbars
	szWndOptions += ",toolbar=" + szToolbar
	szWndOptions += ",menubar=" + szToolbar
	szWndOptions += ",status=" + szToolbar
	szWndOptions += ",directories=no"
	szWndOptions += ",copyhistory=no"
	szWndOptions += ",location=no"

	return PopUpOpenWindow(URL, id, szWndOptions, Width, Height);
}

function PopUpOpenWindow(newLocation, name, specialFeatures, w, h)
{
  var popUpWindow;
  try
  {
      var browser = geber_getBrowser();

      /* increase size because status bar is always visible on Windows XP */
      h = h + browser.extraStatusBarHeight;
  }
  catch (e)
  {
      var Ergebnis = navigator.userAgent.match(/Windows NT ([5-9]).([0-9])/);
      if (navigator.userAgent.match(/(firefox|gecko)/i) || (Ergebnis && Ergebnis[2] && Ergebnis[1] && ((Ergebnis[2] >= 1) || (Ergebnis[2] > 5))))
      {
           if (navigator.userAgent.match(/ MSIE/))
               h = h+20;
           else
               h = h+15;
      }
  }

  if (navigator.userAgent.match(/(firefox|gecko)/i))
       h = h+15;

  try
  {
    if (!specialFeatures)
        specialFeatures = "";
    popUpWindow = window.open(newLocation, name, specialFeatures +  ',width=' + w + ',height=' + h);
  }
  catch (e)
  {
    return false;
  }

  // resize window
  try
  {
    popUpWindow.resizeTo(w, h);
  }
  catch (e) {}

  try
  {
    popUpWindow.focus();
  }
  catch (e) {}

  return true;

}

// -----------------------------------------------------------------------------------------------
// statistics
// -----------------------------------------------------------------------------------------------

function geber_preLoadGWSImage(simple)
{
    if (!simple)
        window.setTimeout("geber_doPreLoadGWSImage(false)", 100);
    else
        window.setTimeout("geber_doPreLoadGWSImage(false)", 100);

}

function geber_doPreLoadGWSImage(simple)
{
    var pageURL = escape(window.location);
    var referrer = document["referrer"]==null?'':escape(document.referrer);

    if ((referrer == "" || referrer.length <= 0) && (opener))
    {
        try {referrer = escape(opener.location.href); } catch(e) {}
    }
    var imageURL = "http://gws.geber.at/baca/gws.gif?ref=" +
                  referrer + "&pg=" + pageURL;

    imageURL += "&screen=" + screen.width + "x" + screen.height;

    var browser = null;
    try
    {
        browser = geber_getBrowser();
    }
    catch (e) {}

    if (!simple && browser)
    {
        if (browser)
        {
             imageURL += "&p_wai=" + (browser.isWAI ? "1" : "0");

             if (browser.hasFlash)
                 imageURL += "&p_flash=1&p_flash_v=" + browser.flashVersion;
             else
                 imageURL += "&p_flash=0";
             if (browser.hasPDF)
                 imageURL += "&p_pdf=1&p_pdf_v=" + browser.pdfVersion;
             else
                 imageURL += "&p_pdf=0";
             if (browser.hasJava)
                 imageURL += "&p_java=" + (browser.isJavaEnabled ? "1" : "-1" ) + "&p_java_v=" + (browser.javaVersion ? browser.javaVersion : "0");
             else
                 imageURL += "&p_java=0";
             if (browser.hasQuickTime)
                 imageURL += "&p_qt=1&p_qt_v=" + browser.quickTimeVersion;
             else
                 imageURL += "&p_qt=0";
             if (browser.hasWMedia)
                 imageURL += "&p_wm=1&p_wm_v=" + browser.wmediaVersion;
             else
                 imageURL += "&p_wm=0";
             if (browser.hasRealPlayer)
                 imageURL += "&p_real=1&p_real_v=" + browser.realPlayerVersion;
             else
                 imageURL += "&p_real=0";
             if (browser.hasDirector)
                 imageURL += "&p_director=1&p_director_v=" + browser.directorVersion;
             else
                 imageURL += "&p_director=0";
         }
     }


     var myImg = new Image();
     myImg.src = imageURL;
}



// ===================================================================================
//  js_subjects
// ===================================================================================

function geber_subjects_showMenu(whichToShow)
{
    var subjectsMenu = document.getElementById("subjectsMenu");
    var subjectsForm = document.getElementById("subjectsForm");
    var contentMenu = document.getElementById("contentMenu");
    var subjectsMenuHeader = document.getElementById("subjectsHeader");

    if (!subjectsForm)
        subjectsForm = document.getElementById("subjectsFormSelection");

    if (whichToShow == "content")
    {
         if (subjectsMenu != null) subjectsMenu.style.display = "none";
         if (subjectsMenuHeader != null) subjectsMenuHeader.style.display = "none";
         if (contentMenu != null) contentMenu.style.display = "block";
         if (subjectsForm != null && subjectsForm.style.display == "block") subjectsForm.style.display = "none";
         return (contentMenu != null);
    }
    else if (whichToShow == "subjectsForm" || (whichToShow == "subjects" && !hasValidSubjectMenu))
    {
         if (contentMenu != null) contentMenu.style.display = "none";
         if (subjectsMenu != null) subjectsMenu.style.display = "none";
         if (subjectsMenuHeader != null) subjectsMenuHeader.style.display = "block";
         if (subjectsForm != null) subjectsForm.style.display = "block";
         return (subjectsForm != null);
    }

    else if (whichToShow == "subjects")
    {
         if (subjectsMenu != null) subjectsMenu.style.display = "block";
         if (subjectsMenuHeader != null) subjectsMenuHeader.style.display = "block";
         if (contentMenu != null) contentMenu.style.display = "none";
         if (subjectsForm != null && subjectsForm.style.display == "block") subjectsForm.style.display = "none";
         return (subjectsMenu != null);
    }


    return false;
}


// this will be set by the subjects menu render skin
var hasValidSubjectMenu = false;
function setHasValidSubjectMenu(newValue)
{
    if (newValue != null)
        hasValidSubjectMenu = newValue;
}


function geber_subjectsForm_toggleSelectAll(formID, allCheckBoxItemName)
{
    if (!formID) formID = "subjectchooser";
    var subjectForm = document.forms[formID];
    if (!subjectForm) return;

    var allCheckBoxItem;
    if (allCheckBoxItemName && typeof(allCheckBoxItemName) == 'string')
        allCheckBoxItem = subjectForm.elements[allCheckBoxItemName];

    for (var i=0; i< subjectForm.elements.length; i++)
    {
        if (subjectForm.elements[i].name && (typeof(subjectForm.elements[i].name) == 'string') && (subjectForm.elements[i].name.substring(0,8) == 'subject_'))
        {
            if (allCheckBoxItem && (allCheckBoxItem.name == 'subject_all'))
                subjectForm.elements[i].checked = allCheckBoxItem.checked;
            else
                subjectForm.elements[i].checked = !subjectForm.elements[i].checked;
        }
    }
}

function geber_subjectsForm_setAllBox(formID, checked)
{
    if (!formID) formID = "subjectchooser";
    var subjectForm = document.forms[formID];
    if (!subjectForm) return;
    for (var i=0; i< subjectForm.length; i++)
    {
        if (subjectForm.elements[i].name && (typeof(subjectForm.elements[i].name) == 'string') && (subjectForm.elements[i].name == 'subject_all'))
            subjectForm.elements[i].checked=checked;
    }
}


function geber_subjectsForm_selectSubject(formID, subjectID)
{
    if (!formID) formID = "subjectchooser";
    var subjectForm = document.forms[formID];
    if (!subjectForm || !subjectID || (typeof(subjectID) != 'string')) return;

    var allSelected = true;
    for (var i=0; i< subjectForm.elements.length; i++)
    {
        if (subjectForm.elements[i].name && (typeof(subjectForm.elements[i].name) == 'string') && (subjectForm.elements[i].name == subjectID))
        {
            if (!subjectForm.elements[i].checked)
                allSelected = false;
        }
        else if (subjectForm.elements[i].name && (typeof(subjectForm.elements[i].name) == 'string') && (subjectForm.elements[i].name.substring(0,8) == 'subject_') && (subjectForm.elements[i].name != 'subject_all') && !subjectForm.elements[i].checked)
            allSelected = false;
    }

    geber_subjectsForm_setAllBox(formID, allSelected);
}

function geber_subjectsForm_onSubmit(formID)
{
    var geberSubjects = geber_subjectsForm_getSubjectMenuList();

    if (!geberSubjects || geberSubjects.length <= 0)
        return false;

    if (!formID) formID = "subjectchooser";
    var subjectForm = document.forms[formID];
    if (!subjectForm) return false;


    var selectedSubjectsQueryParam = "";
    var firstSelectedSubjectPath = "";
    for (var i=0; i< geberSubjects.length; i++)
    {
        var subjectElem = subjectForm.elements["subject_" + i];
        if (!subjectElem)
        {
            if (!geberSubjects[i] || !geberSubjects[i].name) continue;
            subjectElem = subjectForm.elements["subject_" + geberSubjects[i].name];
        }


        if (subjectElem && subjectElem.checked)
        {
            if (firstSelectedSubjectPath.length <= 0) firstSelectedSubjectPath = geberSubjects[i].path;
            selectedSubjectsQueryParam += Number(i).toString(16);
        }
    }

    if (firstSelectedSubjectPath.length > 0)
    {

        if (!firstSelectedSubjectPath.match(/^.*\.(x?html?|php|asp|jsp|xml)$/i))
        {
            var extension = String(window.location.pathname).match(/^.*\.(x?html?|php|asp|jsp|xml)$/i);
            if (extension && extension[1] && extension[1].length > 0 && firstSelectedSubjectPath.indexOf("." + extension[1]) < 0)
                firstSelectedSubjectPath += "." + extension[1];
        }

        if (selectedSubjectsQueryParam && selectedSubjectsQueryParam.length > 0)
            firstSelectedSubjectPath += "?subjects=" + selectedSubjectsQueryParam;

        return geber_lib_redirectToPath(firstSelectedSubjectPath);
    }
    return false;
}

function geber_subjectsForm_getSubjectMenuList()
{

   var subjectMenuList = new Array();

    subjectMenuList[subjectMenuList.length] = new Object();
    subjectMenuList[subjectMenuList.length-1].path = "/themen/factsfigures.html";
    subjectMenuList[subjectMenuList.length-1].language = "de";
    subjectMenuList[subjectMenuList.length-1].name = "factsfigures";


    subjectMenuList[subjectMenuList.length] = new Object();
    subjectMenuList[subjectMenuList.length-1].path = "/themen/geschaeftsverlaufaufrekordniveau.html";
    subjectMenuList[subjectMenuList.length-1].language = "de";
    subjectMenuList[subjectMenuList.length-1].name = "geschaeftsverlaufaufrekordniveau";


    subjectMenuList[subjectMenuList.length] = new Object();
    subjectMenuList[subjectMenuList.length-1].path = "/themen/ceegroessterergebnislieferant.html";
    subjectMenuList[subjectMenuList.length-1].language = "de";
    subjectMenuList[subjectMenuList.length-1].name = "ceegroessterergebnislieferant";


    subjectMenuList[subjectMenuList.length] = new Object();
    subjectMenuList[subjectMenuList.length-1].path = "/themen/kapitalmarktrating.html";
    subjectMenuList[subjectMenuList.length-1].language = "de";
    subjectMenuList[subjectMenuList.length-1].name = "kapitalmarktrating";


    subjectMenuList[subjectMenuList.length] = new Object();
    subjectMenuList[subjectMenuList.length-1].path = "/themen/managementstruktur.html";
    subjectMenuList[subjectMenuList.length-1].language = "de";
    subjectMenuList[subjectMenuList.length-1].name = "managementstruktur";


    subjectMenuList[subjectMenuList.length] = new Object();
    subjectMenuList[subjectMenuList.length-1].path = "/themen/risikobericht.html";
    subjectMenuList[subjectMenuList.length-1].language = "de";
    subjectMenuList[subjectMenuList.length-1].name = "risikobericht";


    subjectMenuList[subjectMenuList.length] = new Object();
    subjectMenuList[subjectMenuList.length-1].path = "/themen/strategieausblick.html";
    subjectMenuList[subjectMenuList.length-1].language = "de";
    subjectMenuList[subjectMenuList.length-1].name = "strategieausblick";



   return subjectMenuList;
}



function geber_perfomOnLoad()
{
   try {
      // for the glossary popups
      tt_RegisterEventHandlers();
   } catch (e) {}
}
geber_lib_addLoadEvent(geber_perfomOnLoad);
