﻿// JScript File
Array.prototype.find = function (key)
{
    for (var i=0 ; i < this.length ; i++)
        if (this.compare2key (this[i], key) == 0)
            return (this[i]);
    return (null);
}
if (typeof (Array.prototype.indexOf) == 'undefined')
{
    Array.prototype.indexOf = function(s)
    {
        for (var i = 0; i < this.length; i++)
            if (this[i] === s)
                return (i);
        return (-1);
    }
}
Number.prototype.formatFromSpec = function (currency, thousandSeparator, decimals, percent)
{
    var n = this;
    if (percent)
        n *= 100;
    var s = ((currency) ? currency + ' ' : '') + ((n < 0) ? '-' : '');
    var t = Math.abs(Math.floor (n.toFixed((decimals >= 0) ? decimals : 0))).toString();
    for (var i=0 ; i < t.length ; i++)
    {
        if (i > 0 && (t.length - i) % 3 == 0)
            s+= '.';
        s += t.substr(i, 1);
    }
    if (decimals >= 0)
        s += (n - Math.floor(n)).toFixed (decimals).toString().substr(1).replace('.', ',');
    else
        s+= (n - Math.floor(n)).toString().substr(1);
    if (percent)
        s += '%';
    return(s);
}
String.prototype.compareTo = function (other)
{
    return ((this < other) ? -1 : ((this == other) ? 0 : 1));
}
String.prototype.hasOtherCharsThan = function(chars)
{
    for (var i=0 ; i < this.length ; i++)
        if (chars.indexOf(this.substr (i, 1)) < 0)
            return(true);
    return (false);
}
if (typeof (String.prototype.lastOccurrenceOf) == 'undefined')
{
    String.prototype.lastOccurrenceOf = function(subString, n)
    {
        var nInt = (n == undefined) ? 1 : n;
        var iO = this.length - 1;
        for (var i=0 ; i < nInt ; i++)
            if ((iO = this.lastIndexOf(subString, iO-1)) < 0)
                return (iO);
        return (iO);
    }
}
String.prototype.removeAllChars = function (chars2remove)
{
    var s = '';
    for (var i=0 ; i < this.length ; i++)
    {
        var c = this.substr(i, 1);
        if (chars2remove.indexOf (c) < 0)
            s += c;
    }
    return(s);
}
String.prototype.removeBetween = function(from, to)
{
    var rt = this;
    var i;
    while ((i = rt.indexOf (from)) >= 0)
    {
        var e = rt.indexOf(to, i+1);
        if (e >= 0)
            rt = rt.substr (0, i) + ((e >= 0) ? rt.substr (e+1) : '');
    }
    return(rt);
}
String.prototype.toNumber=function()
{
    var s = this.removeAllChars('.').replace (',', '.').replace ('€ ', '');
    var p = 1;
    if (s.length > 0 && s.substr(s.length-1, 1) == '%')
    {
        p = 0.01;
        s = s.substr(0, s.length - 1);
    }
    return((s.length <= 0) ? null : new Number(s) * p);
}
function activeElementTrack(evt)
{
    if (evt && evt.target)
        document.activeElement = (evt.target == document) ? null : evt.target;
}
function activeElementTrackLost(evt) { document.activeElement = null; }
if (document.activeElement == undefined && document.addEventListener)
{
    document.addEventListener("click", activeElementTrack,true);
    document.addEventListener("focus", activeElementTrack,true);
    document.addEventListener("blur", activeElementTrackLost,true);
}
function clickButton(e, buttonid)
{
    var bt = document.getElementById(buttonid); 
    var f = document.activeElement.onblur;
    if (typeof bt == 'object')
    {
        if(navigator.appName.indexOf("Netscape")>(-1))
        {
            if (e.keyCode == 13)
            {
//                eval(bt.href);
                if (f)
                    f();
                location = bt.href;
                return false; 
            } 
        }
        if (navigator.appName.indexOf("Microsoft Internet Explorer")>(-1))
            if (event.keyCode == 13)
            { 
                if (f)
                    f();
                bt.click(); 
                return false; 
            } 
     }
} 
function currentStyle(element, property)
{
    if (typeof(element.currentStyle) == 'undefined')
        return (window.getComputedStyle(element, null).getPropertyValue(property));
    else
        return(element.currentStyle[property]);
}
function debug(html) { document.getElementById('debugDiv').innerHTML = html;}
function elementPosition(element)
{
    var x = 0, y = 0;
    for ( ; element != null ; element = element.offsetParent)
    {        
        x += element.offsetLeft;
        y += element.offsetTop;
    }
    return (new position(x, y));
}
function eventOffsetX(event, parentOffset)
{
    return((typeof (event.offsetX) == 'undefined') ? event.layerX : parentOffset + event.offsetX);
}
function eventOffsetY(event, parentOffset)
{
    return((typeof (event.offsetY) == 'undefined') ? event.layerY : parentOffset + event.offsetY);
}
function elementSameLevel(otherElement, id)
{
    return (document.getElementById(otherElement.id.substring(0, otherElement.id.lastIndexOf('_')+1)+id));
}
function eventSrcElement(event){return((event.srcElement) ? event.srcElement : event.target);}
function getElementsByClass(className)
{
    var a = new Array ();
    for (var i=0 ; i < document.all.length ; i++)
    {
        var e = document.all[i];
        if (e.className == className)
            a.concat (e);
    }
    return(a);
}
function inlineElement(element) { return (currentStyle(element, 'display') == 'inline'); }
function offsetParentDebug(element)
{
    var s = '';
    for (var e = element ; e != null ; e = e.offsetParent)
        s += e.tagName + ' ' + e.id + ' ' + currentStyle(e, 'position') + ' ' + currentStyle(e, 'display')
            + 'style(' + currentStyle(e, 'left') + ', ' + currentStyle(e, 'top') + ')'
            + 'offset(' + e.offsetLeft + ', ' + e.offsetTop + ')<br />';
    return(s);
}
function parentByTagName(start, tagName)
{
    for (var e = start ; e != null ; e = e.parentElement)
        if (e.tagName == tagName)
            return(e);
    return (null);
}
function parentFromSelectionRange (range, tag)
{
    for (var p = brRangeParentElement(range); p != null ; p = p.parentElement)
        if (p.tagName == tag)
            return(p);
    return (null);
}
function position(x, y)
{
    this.x = x;
    this.y = y;
}
function positionElement (event, element, offsetX, offsetY)
{
    var srcElement = eventSrcElement(event);
    var l, t;
    if (typeof (event.offsetX) == 'undefined')
    {
        l = event.layerX;
        t = event.layerY;
        for (var e = srcElement ; e != null && (!inlineElement(e) || currentStyle(e, 'position') == 'absolute') && e.id != ''
            ; e = e.offsetParent)
        {
            l += e.offsetLeft;
            t += e.offsetTop;
        }
        l = event.clientX + offsetX;
        t = event.clientY + offsetY;
        for (var e = element.offsetParent ; e != null ; e = e.offsetParent)
        {
            l -= e.offsetLeft;
            t -= e.offsetTop;
        }
    }
    else
    {
        l = event.offsetX;
        t = event.offsetY;
        for (var e = srcElement ; e != null && currentStyle(e, 'position') != 'absolut' ; e = e.offsetParent)
            {
                l += e.offsetLeft;
                t += e.offsetTop;
            }
        for (var e = element.offsetParent; e != null && currentStyle(e, 'position') != 'absolut' ; e = e.offsetParent)
            {
                l -= e.offsetLeft;
                t -= e.offsetTop;
            }
    }
    return (new position(l, t));
//    debug ('event (' + event.layerX + ', ' + event.layerY + ')<br /><br />' + offsetParentDebug(srcElement));
}
function scrollToElement(element)
{
    var p = elementPosition(element);
    window.scrollTo (p.x, p.y);
}
function setSelected(select, value)
{
    for (var i=0 ; i < select.length ; i++)
        if (select[i].value == value)
            select[i].selected = true;
}
function siblingByClassName(start, className)
{
    var p = start.parentNode;
    if (p != null)
    {
        var cs = p.childNodes;
        for (var i=0 ; i < cs.length ; i++)
        {
            var e = cs[i];
            if (e.className == className)
                return (e);
        }
    }
    return(null);
}
function siblingByTagName(start, tagName)
{
    var p = start.parentNode;
    if (p != null)
    {
        var cs = p.childNodes;
        for (var i=0 ; i < cs.length ; i++)
        {
            var e = cs[i];
            if (e.tagName == tagName)
                return (e);
        }
    }
}
function toogleDisplay(button, elementName, openClass, closedClass)
{
    var b = document.getElementById(button);
    var e = document.getElementById (elementName);
    if (e.currentStyle.display == 'none')
    {
        b.className = openClass;
        e.style.display = 'block';
    }
    else
    {
        b.className = closedClass;
        e.style.display = 'none';
    }
}

function windowHeight()
{
    if (document.documentElement && document.documentElement.clientHeight)
        return(document.documentElement.clientHeight);
    else if (typeof(window.innerHeight) == "number")
        return(window.innerHeight);
    else if (document.body && document.body.clientHeight)
        return(document.body.clientHeight);
    else
        return(0);
}
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();