var ebobtoggleImageCache = new Array();
function ebobtoggleimg(ImageElt, mode)
{
    imageIdent = ImageElt.src.replace(/_lo\..*/, "");
    imageIdent = imageIdent.replace(/_hi\..*/, "");

    extension = ImageElt.src.substring(ImageElt.src.lastIndexOf(".") + 1,ImageElt.src.length);

    if (!ebobtoggleImageCache[imageIdent])
    {
        ebobtoggleImageCache[imageIdent] = new Array();
        ebobtoggleImageCache[imageIdent]["hi"] = new Image();
        ebobtoggleImageCache[imageIdent]["hi"].src = imageIdent + "_hi." + extension;
        ebobtoggleImageCache[imageIdent]["lo"] = new Image();
        ebobtoggleImageCache[imageIdent]["lo"].src = imageIdent + "_lo." + extension;
    }
    ImageElt.src = ebobtoggleImageCache[imageIdent][mode].src;
}
// End ebobtoggleimg

/////////////////////////////////////////////////////////////////////////

function showFilterrow(rowId, formswitchOn, formswitchOff)
{
    Row = document.getElementById(rowId);
    Row.style.display = '';

    FormswitchOn = document.getElementById(formswitchOn);
    FormswitchOn.style.display = 'none';

    FormswitchOff = document.getElementById(formswitchOff);
    FormswitchOff.style.display = '';
}
// showFilterrow

/////////////////////////////////////////////////////////////////////////

// Setzt die CSS-Klasse im übergebenen Element
function ebob_setCSSClass(elt, cssclass)
{
    if (elt.className)
    {
        elt.className = cssclass;
    }
    else
    {
        for (var counter in elt.attributes)
        {
            if (elt.attributes[counter].nodeType == 2 &&
                (elt.attributes[counter].nodeName == "class" || elt.attributes[counter].nodeName == "CLASS")
               )
            {
                elt.attributes[counter].nodeValue = cssclass;
                break;
            }
        }
    }
}
// End ebob_setCSSClass


function ebobopeninpopup(path,popName,width,height,left,top,scrolling,resize)
{
    if (scrolling == "")
    {
        scrolling = "no";
    }
    if (top == "")
    {
        top = 10;
    }
    if (left == "")
    {
        left = 10;
    }
    if (resize == "")
    {
        resize = "yes";
    }
    resizable = ",resizeable=" + resize + "";
    settings = 'height=' + height + ', width=' + width + ', top=' + top + ',left=' + left + ',scrollbars=' + scrolling + ',resizable=' + resize;
    var newWin = window.open(path, popName, settings);
    newWin.focus();
    return false;
}
// ebobopeninpopup

function setOuterMessageDivPosition(leftOffset)
{
    EbobLogo = document.getElementById("EbobLogo");

    OuterMessageDIV = document.getElementById("OuterMessageDIV");
    OuterMessageDIV.style.left = (EbobLogo.x + leftOffset)+"px";
}

function initEbobMessagebox(leftOffset)
{
    setOuterMessageDivPosition(leftOffset);

    var MessagesDiv = document.getElementById("EbobMessagesDiv");
    if (MessagesDiv)
    {
        var MessageBoxContent = document.getElementById("EbobMessageBoxContent");
        var messageCount = 0;
        for (var count in MessagesDiv.childNodes)
        {
            if (MessagesDiv.childNodes[count].tagName == "DIV")
            {
                MessageBoxContent.appendChild(MessagesDiv.childNodes[count].cloneNode(true));
                messageCount++;
            }
        }
        if (messageCount > 0)
        {
            var EbobMessageElementToHide = document.getElementById("OuterMessageDIV");
            EbobMessageElementToHide.style.display = "";
        }
    }
}

function loadData(keyname, id, appendUniqueId)
{
    loadDataExtended(keyname, id, appendUniqueId, false);
}
// End loadData

/////////////////////////////////////////////////////////////////////////

// Setzt um den markierten Text einen Tag
function insertTag(formName, elementName, tagName)
{
   var aTag = '<' + tagName + '>';
   var eTag = '</' + tagName + '>';

   var start = 0;
   var end   = 0;
   var selectedText = '';
   var mode = 0;

   var element = eval("document.forms['" + formName + "'].elements['" + elementName+"']");

   if(document.selection) // nur für IE, setzt selectionStart und selectionEnd für das Element
   {
      var range = document.selection.createRange();  // The current selection
      var stored_range = range.duplicate();          // We'll use this as a 'dummy'
      stored_range.moveToElementText(element);       // Select all text
      stored_range.setEndPoint( 'EndToEnd', range ); // Now move 'dummy' end point to end point of original range
      element.selectionStart = stored_range.text.length - range.text.length; // Now we can calculate start and end points
      element.selectionEnd = element.selectionStart + range.text.length;
   }

   if(typeof element.selectionStart != 'undefined')  // für Mozilla und Kumpanen direkt, für IE über die Funktion oben
   {
      selectionStart = element.selectionStart;
      selectionEnd = element.selectionEnd;
      textEnd = element.value.length;

      if (selectionStart == selectionEnd) // es wurde nichts markiert
         return;

      preText = element.value.substring (0, selectionStart);
      selectedText = element.value.substring(selectionStart, selectionEnd);
      postText = element.value.substring(selectionEnd, textEnd);

      element.value = preText + aTag + selectedText + eTag + postText;
   }
   else
   {
      return;  // andere Browser
   }
}
// End insertTag

/////////////////////////////////////////////////////////////////////////

function switchPFCheckboxes(CheckboxElt, formName)
{
    var FormElt = eval("document.forms." + formName);
    for (var eltIndex in FormElt.elements)
    {
        if (   typeof FormElt[eltIndex] == 'object'
            && FormElt[eltIndex].nodeType == 1
            && FormElt[eltIndex].getAttribute('type') == 'checkbox'
            && FormElt[eltIndex].getAttribute('id') != CheckboxElt.getAttribute('id')
           )
        {
            FormElt[eltIndex].checked = false;
        }
    }

}
// End loadData

/////////////////////////////////////////////////////////////////////////

function switchPageControllerChooserRow(Switch, rowId)
{
    RowElt = document.getElementById(rowId);

    imageSrc = Switch.getAttribute('src');

    if (RowElt.style.display == 'none')
    {
        showElement(rowId);
        imageSrc = imageSrc.replace(/closed/, "open");
    }
    else
    {
        hideElement(rowId);
        imageSrc = imageSrc.replace(/open/, "closed");
    }
    Switch.setAttribute('src', imageSrc);
}

/////////////////////////////////////////////////////////////////////////

imgNavToggleCache = new Array();
function imgnavtoggle(ImageElt, resourceId)
{
    if (!imgNavToggleCache[resourceId])
    {
        oldSrc = ImageElt.getAttribute('src');

        Ergebnis = oldSrc.match(/(\d+)\.gif/);
        oldResourceId = Ergebnis[1];


        imgNavToggleCache[oldResourceId] = new Image();
        imgNavToggleCache[oldResourceId].src = oldSrc;

        newSrc = oldSrc.replace(/\d+\.gif/, resourceId + ".gif");


        imgNavToggleCache[resourceId] = new Image();
        imgNavToggleCache[resourceId].src = newSrc;

    }

    ImageElt.setAttribute('src', imgNavToggleCache[resourceId].src);
}


/////////////////////////////////////////////////////////////////////////

function emptyInput(formname, name, event, defaultvals)
{
    for (var field in defaultvals)
    {
        if (field != name)
        {
            var aktInput = eval("document." + formname + "." + field);
            if (aktInput)
            {
                if (aktInput.value == "")
                    aktInput.value = defaultvals[field];
            }
        }
    }

    var aktInput = eval("document." + formname + "." + name);
    if(aktInput)
    {
        if(event == "blur")
        {
            if (aktInput.value == "")
                aktInput.value = defaultvals[name];
        }
        else
        {
            if (aktInput.value == defaultvals[name])
                aktInput.value = "";
        }
    }
}

///////////////////////////////////////////////////////////////
// Ende des Lauftextsckripts für den Pagecontroller
///////////////////////////////////////////////////////////////
marqueeOffset = 5;
marqueeDelay = 90;
marqueeContentWidthCache = new Array();
marqueeIntervalCache = new Array();
marqueeCurrentX = new Array();
marqueeHasABreak = new Array();
marqueeStopTimeout = new Array();
marqueeRightOffset = 0;
// Lässt den Lauftext laufen
function marqueeStart(Stage, Content)
{
    if (Stage.offsetWidth > Content.offsetWidth)
        return;

    if (!Stage.id)
        Stage.setAttribute("id", getUniqueId());

    if (!Content.id)
        Content.setAttribute("id", getUniqueId());


    marqueeContentWidthCache[Content.id] = Content.offsetWidth;

    if (marqueeIntervalCache[Content.id])
        window.clearInterval(marqueeIntervalCache[Content.id]);

    marqueeIntervalCache[Content.id] = setInterval("marqueeMoveLeft('" + Content.id + "','" + Stage.id + "')", marqueeDelay);
}
// End marqueeStart

///////////////////////////////////////////////////////////////

// Hält den Lauftext nach einem Klick aprupt an
function marqueeHaveABreak(Stage, Content)
{
    if (marqueeIntervalCache[Content.id])
    {
        marqueeStop(Stage.id, Content.id, false);
        marqueeIntervalCache[Content.id] = false;
        marqueeHasABreak[Content.id] = true;
    }
    else
    {
        window.clearInterval(marqueeIntervalCache[Content.id]);
        marqueeIntervalCache[Content.id] = false;
        marqueeStart(Stage, Content);
    }
}
// marqueeHaveABreak

///////////////////////////////////////////////////////////////

// Unterbricht den Timeout der losgeht wenn die Maus den Lauftext
// verläßt, die Maus aber noch immer über der Bühne ist
function marqeeStopperKill(contentId)
{
    window.clearTimeout(marqueeStopTimeout[contentId]);
}
// End marqeeStopperKill

///////////////////////////////////////////////////////////////

// Hält den Lauftext an und zwar entweder sofort (delay=false) oder verzögert bis
// er wieder an der Nullposition angekommen ist
function marqueeStop(stageId, contentId, delay)
{
    Content = document.getElementById(contentId);

    if (marqueeHasABreak[contentId])
    {
        marqueeCurrentX[contentId] = parseInt(Content.style.left.replace(/px/,''));
        marqueeStart(document.getElementById(stageId), document.getElementById(contentId));
        marqueeHasABreak[contentId] = false;
        window.setTimeout("marqueeStop('" + stageId + "','" + Content.id + "',1)", marqueeDelay);
        return;
    }

    if (delay && marqueeCurrentX[contentId] != 0)
    {
        if (delay == 'stop')
        {
            if (marqueeCurrentX[contentId] < 0)
            {
                window.clearInterval(marqueeIntervalCache[Content.id]);
                MovingElt.style.left = '0px';
                marqueeCurrentX[Content.id] = 0;
                return;
            }

            marqueeStopTimeout[contentId] = window.setTimeout("marqueeStop('" + stageId + "','" + Content.id + "','stop')", marqueeDelay);
        }
        else
        {
            if (marqueeCurrentX[contentId] > 0)
                marqueeStop(stageId, Content.id, 'stop');
            else
                marqueeStopTimeout[contentId] = window.setTimeout("marqueeStop('" + stageId + "','" + Content.id + "',1)", marqueeDelay);
        }
    }
    else
    {
        window.clearInterval(marqueeIntervalCache[Content.id]);
        marqueeIntervalCache[Content.id] = false;
        marqueeCurrentX[Content.id] = 0;
    }
}
// End marqueeStop

///////////////////////////////////////////////////////////////

// Bewegt das Element innerhalb der Stage nach links
function marqueeMoveLeft(movingEltId, stageEltId)
{
    MovingElt = document.getElementById(movingEltId);

    marqueeCurrentX[movingEltId] = parseInt(MovingElt.style.left.replace(/px/,''));
    if (marqueeCurrentX[movingEltId] * (-1) > marqueeContentWidthCache[movingEltId])
    {
        Stage = document.getElementById(stageEltId);
        marqueeCurrentX[movingEltId] = Stage.offsetWidth - marqueeRightOffset;
    }
    else
    {
        marqueeCurrentX[movingEltId] = marqueeCurrentX[movingEltId] - marqueeOffset;
    }
    MovingElt.style.left = marqueeCurrentX[movingEltId] + 'px';
}
// End moveLeft

///////////////////////////////////////////////////////////////
// Ende des Lauftextsckripts für den Pagecontroller
///////////////////////////////////////////////////////////////

function moveImageEditIcon (imgId, iconId, hpos, vpos)
{
   EbobImage = document.getElementById(imgId);
   EbobIcon = document.getElementById(iconId);

   if (!EbobIcon)
      return false;
   else
      EbobIcon = EbobIcon.parentNode;

   var iconOffsetWidth = EbobIcon.offsetWidth;
   var iconOffsetHeight = EbobIcon.offsetHeight;

   Bodies = document.getElementsByTagName('body');
   BodyTag = Bodies[0];

   EbobIcon.parentNode.removeChild(EbobIcon);
   EbobIcon = copyNode(EbobIcon,BodyTag);

   EbobIcon.style.position = 'absolute';

   hpos = (hpos && (hpos == 'left' || hpos == 'right')) ? hpos : 'right';
   vpos = (vpos && (vpos == 'top' || vpos == 'bottom')) ? vpos : 'bottom';

   topPos = (vpos == 'bottom') ? (getEltPosTop(EbobImage) + EbobImage.offsetHeight - iconOffsetHeight) : (getEltPosTop(EbobImage));
   leftPos = (hpos == 'right') ? (getEltPosLeft(EbobImage) + EbobImage.offsetWidth - iconOffsetWidth) :(getEltPosLeft(EbobImage));

   setEltTop(EbobIcon, topPos);
   setEltLeft(EbobIcon, leftPos);
}

//////////////////////////////////////////////////////////////////////////////////////

function choosePageTitleComponent(Selectbox, textInputId)
{
    TextInputElt = document.getElementById(textInputId);

    if(!TextInputElt)
        return;

    selectedIndex = Selectbox.selectedIndex;

    if(!selectedIndex)
        return;

    selectedValue = Selectbox.options[selectedIndex];

    oldInput = TextInputElt.value;
    newInput = oldInput + '{' + selectedValue.value  + '}';

    TextInputElt.value = newInput;
}

//////////////////////////////////////////////////////////////////////////////////////

function cleanUrl(url, paramsToRemove)
{
    for(var i = paramsToRemove.length; i-- > 0;)
        url = removeUrlParameter(url, paramsToRemove[i]);

    return url;
}
function removeUrlParameter(url, param)
{
    var urlparts = url.split('?');
    if (urlparts.length >= 2)
    {
        var prefix = encodeURIComponent(param)+'=';
        var pars = urlparts[1].split(/[&;]/g);
        for (var i= pars.length; i-- > 0;)
            if (pars[i].indexOf(prefix, 0)==0)
                pars.splice(i, 1);
        if (pars.length > 0)
            return urlparts[0]+'?'+pars.join('&');
        else
            return urlparts[0];
    }

    return url;
}

