/*
 * filename:      cda.js
 * project:       CDA
 * app:           ---
 * copyright:     NUSTEP s.r.o. 2002,2003,2004
 * author:        Svorad Stolc Jr. <stolc@nustep.net>
 * created:       2004/02
 * modified:      ---
 * version:       0.15
 * requirements:  JScript 5.0+
 */

//------------------------------------------------------------
// Misc Functions

function avKeyDown(AEvent, AURL)
{
  if (AEvent.ctrlKey && AEvent.shiftKey && String.fromCharCode(AEvent.keyCode) == 'E' && AURL)
    window.location = AURL;
}

function elementShowHide(aName)
{
  var element = document.getElementById(aName);

  if (element)
    if (element.style.visibility == 'visible')
      element.style.visibility = 'hidden';
    else
      element.style.visibility = 'visible';
}

function elementAppendChild(aParentName, aChildName)
{
  var parent = document.getElementById(aParentName);
  var child = document.getElementById(aChildName);

  if (parent && child)
    parent.appendChild(child);
}

function elementSetDisplay(aName, aDisplayValue)
{
  var element = document.getElementById(aName);

  if (element && element.style)
    element.style.display = aDisplayValue;
}

function boxExpandCollapse(AElement, ABoxClass)
{
  if (!AElement || !ABoxClass) return false;

  var element = AElement;
  while (element && (element.className != ABoxClass))
    element = element.parentNode;

  if (!element) return false;

  element = element.firstChild;
  while (element) {
    if (element.className == 'expanded')
      element.className = 'collapsed';
    else
      if (element.className == 'collapsed')
        element.className = 'expanded';

    element = element.nextSibling;
  }

  return false;
}

function setFormFieldValue(AElement, AFieldName, AFieldValue)
{
  if (!AElement || !AFieldName) return false;

  var element = AElement;
  while (element && (element.tagName != 'FORM'))
    element = element.parentNode;

  if (!element) return false;

  element.elements[AFieldName].value = AFieldValue;

  return true;
}

//------------------------------------------------------------
// Cookie Functions

function setCookie(name, value, expires, path, domain, secure)
{
  var curCookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");

  document.cookie = curCookie;
}

function getCookie(name)
{
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);

  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0)
      return null;
  }
  else
    begin += 2;

  var end = document.cookie.indexOf(";", begin);

  if (end == -1)
    end = dc.length;

  return unescape(dc.substring(begin + prefix.length, end));
}

//------------------------------------------------------------
// Hover Images Functions

function imagePreload(aSrc)
{
  var lImage = new Image;
  lImage.src = aSrc;
}

function imageRestore(aName)
{
  var element = document.getElementById(aName);
  element.src = element.originalSrc;
}

function imageSwap(aName, aSrc)
{
  var element = document.getElementById(aName);
  element.originalSrc = element.src;
  element.src = aSrc;
}

//------------------------------------------------------------
// String Functions

function ltrim(str) {
  for (var i=0; ((str.charAt(i)<=" ")&&(str.charAt(i)!="")); i++);
  return str.substring(i,str.length);
}

function rtrim(str) {
  for (var i=str.length-1; ((str.charAt(i)<=" ")&&(str.charAt(i)!="")); i--);
  return str.substring(0,i+1);
}

function trim(str) {
  return ltrim(rtrim(str));
}


function AnchorTargetHelperClass () {

  this.currentAnchorTarget = null;
  this.currentAnchorClass = null;
  this.mapTargetBySource = {};

  function highlightTarget(el)
  {
    if (typeof(el) == "string") {
      var els = document.getElementsByName(el);
      var el = (els.length ? els[0] : null);
      return (el ? this.highlightTarget(el) : null);
    }

    if (this.currentAnchorTarget) {
      this.currentAnchorTarget.className = this.currentAnchorClass;
      this.currentAnchorTarget = null;
    }

    if (el) {
      if (el.innerHTML) {
        // Highlight anchor element directly
        this.currentAnchorTarget = el;
        this.currentAnchorClass =  el.className;
        el.className += " anchorTarget";
      } else {
	var maxSiblingDistance = 2; // allow to skip whitespace text elements (present in FF DOM)
	var el2 = el;
	while (el2 && !el2.innerHTML && maxSiblingDistance--)
	  el2 = el2.nextSibling;
	if (el2 && el2.innerHTML)
	  // Highlight next non-empty sibling element to anchor
	  el = el2;
	else
	  // Highlight anchor parent element
          el = el.parentNode;
        this.currentAnchorTarget = el;
        this.currentAnchorClass =  el.className;
        el.className += " anchorTarget";
      }
    }
  }
  this.highlightTarget = highlightTarget;

  function highlightUsingUrl()
  {
    if ((document.location + "").match(/#(.*)$/)) {
      var name = RegExp.$1;
      var els = document.getElementsByName(name);
      var el = (els.length ? els[0] : null);
      if (el)
        this.highlightTarget(el);
    }
  }
  this.highlightUsingUrl = highlightUsingUrl;

  function init()
  {
    // alert(1);
    this.highlightUsingUrl();


    var url = document.location + "";
    var k = url.indexOf("#");
    if (k >= 0)
      url = url.substr(0, k);
    this.currentUrlWithoutAnchor = url;
    // alert(this.currentUrlWithoutAnchor);

    var els = document.getElementsByTagName("A");
    for (var i = 0; i < els.length; i++) {
      var url = els[i].href;
      var k = url.indexOf("#");
      if (k >= 0 && k < url.length - 1 && (k == 0 || url.substr(0, k) == this.currentUrlWithoutAnchor)) {
        if (!els[i].onclick) {
          var name = url.substr(k + 1);
          this.mapTargetBySource[els[i]] = name;
          var instance = this;
          els[i].onclick = function() { instance.highlightTarget(instance.mapTargetBySource[this]); };
        }
        // alert(url);
      }
      // if (els[i].href && els[i].href[0] == '#') {
      //   alert(els[i].href);
      // }
    }
  }
  this.init = init;
}


