//  Variables
var Doc = document;
var ax = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
var selectFields = 0, activeSelect, p = '';
var baseURL = Doc.getElementsByTagName('head')[0].getElementsByTagName('script')[0].src.replace(/include\/(.*?)$/, '');
var Debug = false;
var Layer;
var InnerLayer;
var OldImageSrc;
var IE4 = Doc.all;
var NS6 = Doc.getElementById && !Doc.all;
var Browser = navigator.appName;
// position of the tooltip relative to the mouse in pixel //
var OffSetX = 25;
var OffSetY = 20;


var $$ = function(objID) {
    return Doc.getElementById(objID);
}

var GargoyleCMS = {

closePopUp: function(ObjID) {
     $$(ObjID).style.display = 'none';
 },
  

changeImage: function(ObjID, NewImageSrc) {
    OldImageSrc = $$(ObjID).src;
    $$(ObjID).src = NewImageSrc;
  },


restoreImage: function(ObjID) {
    $$(ObjID).src = OldImageSrc;
  },


createEMailAddress: function(ObjID, TLD, First, Second) {
    var adr;
    adr = "mailto:" + First + "\@" + Second + "." + TLD;
    ObjID.href = adr;
  },


disableFormButton: function(Value, FormID) {
    Doc.forms[FormID].send.value = Value;
    Doc.forms[FormID].send.disabled = true;
  },


changeDisplayType: function(ObjID) {
    var DisplayType = ($$(ObjID).style.display == 'none') ? '' : 'none';
    $$(ObjID).style.display = DisplayType;
    return;
  },


changeVisibility: function(ObjID) {
    var VisibilityType = ($$(ObjID).style.visibility == 'hidden') ? 'visible' : 'hidden';
    $$(ObjID).style.visibility = VisibilityType;
    return;
  },


onChange: function(href, SelectedValue) {
    Doc.location.href = href + SelectedValue.value;
  },


setBG: function(ObjID ,SelectedValue) {
    $$(ObjID).style.backgroundImage = "url(" + baseURL + "images/flags/" + SelectedValue.value + ".gif)";
  },


imagePreview: function(ObjID, PrevImageSrc) {
    $$(ObjID).src = PrevImageSrc;
  },


adminLogout: function(Text) {
    Check = confirm(Text);
    if (Check == true) {
        window.close();
    }
  },


confirmDelete: function(Text, Link) {
    Check = confirm(Text);
    if (Check == true) {
        Doc.location.href = Link;
    }
  },


confirmDeleteWithFiles: function(EntryText, FilesText, Link) {
    Check = confirm(EntryText);
    if (Check == true) {
        CheckFiles = confirm(FilesText);
        if (CheckFiles == true)
            Doc.location.href = Link+"&files=true";
        else
            Doc.location.href = Link;
    }
  },


requestNewCaptcha: function(ObjID) {
    var ImageSrc;
    ImageSrc = ObjID.src + "&time" + new Date().getTime();

    ObjID.src = ImageSrc;
  },


setLinkActive: function() {
    var A = Doc.getElementsByTagName("a");
    if (window.location.href.search(/p-(.*?).php/) != -1)
        var EndIndex = -1;
    else if (window.location.href.search(/page.php/) != -1)
        var EndIndex = -1;
    else
        var EndIndex = window.location.href.indexOf("?");

    if (window.location.href.substr(location.href.length - 1, 1) == '/')
        var Loc = window.location.href + "index.php";
    else if (EndIndex != -1)
        var Loc = window.location.href.substr(0, EndIndex);
    else
        var Loc = window.location.href;

    for (var i = 0; i < A.length; i++)
        if (A[i].href == Loc) {
        if (A[i].getAttribute("class") == null || A[i].getAttribute("className") == null) {
            A[i].setAttribute("class", "Active");
            A[i].setAttribute("className", "Active");
        }
        else {
            A[i].setAttribute("class", A[i].getAttribute("class") + "_Active");
            A[i].setAttribute("className", A[i].getAttribute("className") + "_Active");
        }
    }
},


setMeActive: function(Loc) {
    var A = Doc.getElementsByTagName("a");
    for (var i = 0; i < A.length; i++) {
        var href=A[i].href.toLowerCase()
        if (href.indexOf(Loc.toLowerCase()) != -1) {
            if (A[i].getAttribute("class") == null || A[i].getAttribute("className") == null) {
                A[i].setAttribute("class", "Active");
                A[i].setAttribute("className", "Active");
            }
            else {
                A[i].setAttribute("class", A[i].getAttribute("class") + "_Active");
                A[i].setAttribute("className", A[i].getAttribute("className") + "_Active");
            }
        }
    }
},


addFlash: function() {
    var ret = new Object();
    ret.embedAttrs = new Object();
    ret.params = new Object();
    ret.objAttrs = new Object();

    for (var i = 0; i < arguments.length; i = i + 2) {
        ret.objAttrs[arguments[i]] = arguments[i + 1];
        ret.embedAttrs[arguments[i]] = ret.params[arguments[i]] = arguments[i + 1];
        ret.params[arguments[i]] = arguments[i + 1];
    }

    ret.objAttrs['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';
    ret.embedAttrs['type'] = 'application/x-shockwave-flash';

    var str = '<object ';
    for (var i in ret.objAttrs) str += i + '="' + ret.objAttrs[i] + '" '; str += '>';
    for (var i in ret.params) str += '<param name="' + i + '" value="' + ret.params[i] + '" /> '; str += '<embed ';
    for (var i in ret.embedAttrs) str += i + '="' + ret.embedAttrs[i] + '" '; str += ' ></embed></object>';

    Doc.write(str);
  },

// USAGE:
//
//      <script language="javascript" type="text/javascript">
//        <!--
//          addFlash(  
//            'src','test.swf',
//            'width','150',
//            'height','150',
//            'quality','high',
//            'wmode','transparent'
//          );
//        //-->
//      </script>
//


addEvent: function(obj, evType, fn) {
      if(obj.addEventListener) {
        obj.addEventListener(evType, fn, false);
        return true;
      } else if (obj.attachEvent) {
        var r = obj.attachEvent('on' + evType, fn);
        return r;
      } else return false;
  },


initToolTips: function() {
    var div = Doc.createElement('div');
    div.setAttribute('id', 'infoDiv');
    Doc.body.appendChild(div);
    with (div.style) {
        visibility = 'hidden';
        position = 'absolute';
    }
    Layer = $$('infoDiv');
    Doc.body.onmousemove = GargoyleCMS.trackMousePosition;
  },


showToolTip: function(Head, Text) {
    if (typeof (Layer) == 'object') {
        GargoyleCMS.trackMousePosition;
        Layer.innerHTML = "<div id=\"ToolTip\" style=\"position:absolute;\"><b>" + Head + "</b><br/>" + Text + "</div>";
        Layer.style.visibility = 'visible';
    }
  },


hideToolTip: function() {
    if (typeof (Layer) == 'object') {
        Layer.innerHTML = '';
        Layer.style.visibility = 'hidden';
    }
  },


trackMousePosition: function(Evt) {
    var InnerLayer = $$('ToolTip');
    if (typeof (Layer) == 'object') {
        var WindowWidth = 0
        var WindowHeight = 0;
        var scrOfY = 0
        var scrOfX = 0;

        if (!Evt && window.event)
            Evt = window.event;

        // Getting window size for IE
        if (Doc.documentElement && (Doc.documentElement.clientWidth || Doc.documentElement.clientHeight)) {
            //IE 6+ in 'standards compliant mode'
            WindowWidth = Doc.documentElement.clientWidth;
            WindowHeight = Doc.documentElement.clientHeight;
        }
        else if (Doc.body && (Doc.body.clientWidth || Doc.body.clientHeight)) {
            //IE 4 compatible
            WindowWidth = Doc.body.clientWidth;
            WindowHeight = Doc.body.clientHeight;
        }

        // Getting scroll pos for IE
        if (Doc.body && (Doc.body.scrollLeft || Doc.body.scrollTop)) {
            //DOM compliant
            scrOfY = Doc.body.scrollTop;
            scrOfX = Doc.body.scrollLeft;
        }
        else if (Doc.documentElement && (Doc.documentElement.scrollLeft || Doc.documentElement.scrollTop)) {
            //IE6 standards compliant mode
            scrOfY = Doc.documentElement.scrollTop;
            scrOfX = Doc.documentElement.scrollLeft;
        }

        var PosX = (NS6) ? Evt.pageX : window.event.clientX + scrOfX;
        var PosY = (NS6) ? Evt.pageY : window.event.clientY + scrOfY;

        var winW = (NS6) ? (window.innerWidth) + window.pageXOffset - 12 : WindowWidth + scrOfX;

        var winH = (NS6) ? (window.innerHeight) + window.pageYOffset : WindowHeight + scrOfY;

        if (InnerLayer) {
            var layerW = ((IE4) ? InnerLayer.offsetWidth : InnerLayer.clientWidth) - 3;
            var layerH = ((IE4) ? InnerLayer.offsetHeight : InnerLayer.clientHeight);
        }
        else {
            var layerW = ((IE4) ? Layer.clientWidth : Layer.offsetWidth) - 3;
            var layerH = ((IE4) ? Layer.clientHeight : Layer.offsetHeight);
        }

        Layer.style.left = ((PosX + OffSetX + layerW >= winW - OffSetX) ? PosX - (layerW + OffSetX) : PosX + OffSetX) + "px";
        Layer.style.top = ((PosY + OffSetY + layerH >= winH - OffSetY) ? winH - (layerH + OffSetY) : PosY + OffSetY) + "px";
    }
  },


arrayShuffle: function() {
    var tmp, rand;
    for (var i = 0; i < this.length; i++) {
        rand = Math.floor(Math.random() * this.length);
        tmp = this[i];
        this[i] = this[rand];
        this[rand] = tmp;
    }
  },


getOffsetTop: function(elm) {
    var mOffsetTop = elm.offsetTop;
    var mOffsetParent = elm.offsetParent;
    while (mOffsetParent) {
        mOffsetTop += mOffsetParent.offsetTop;
        mOffsetParent = mOffsetParent.offsetParent;
    }
    return mOffsetTop;
  },


getOffsetLeft: function(elm) {
    var mOffsetLeft = elm.offsetLeft;
    var mOffsetParent = elm.offsetParent;
    while (mOffsetParent) {
        mOffsetLeft += mOffsetParent.offsetLeft;
        mOffsetParent = mOffsetParent.offsetParent;
    }
    return mOffsetLeft;
  },


ieError: function() {
  var div = Doc.createElement('div');
      div.setAttribute('id', 'Error');
      div.innerHTML = 'Das Gargoyle CMS unterst&uuml;tzt durchweg neue Standards, Technologien und Barrierefreiheit, die im Internet Explorer 6 leider nicht oder nur unzureichend umgesetzt worden sind. Aus diesem Grund ist diese Homepage nur noch kompatibel mit den neuesten Browsergenerationen.<br/><br/>Neuere Browserversionen bieten mehr Funktionen, bessere Sicherheit und Standardkonformit&auml;t. Daher empfehlen wir dringend, ihre Installation auf den neusten Stand zu bringen.<br/><br/>Um diese neue Homepage besuchen zu k&ouml;nnen ben&ouml;tigen Sie:<br/>&bull; <a href="http://www.microsoft.com/germany/windows/downloads/ie/getitnow.mspx" target="_blank">Microsoft Internet Explorer</a> 7.x oder besser<br/>&bull; <a href="http://www.mozilla-europe.org/de/firefox/" target="_blank">Mozilla Firefox</a> 2.x oder besser';
      Doc.body.appendChild(div);
  }
}

Array.prototype.shuffle = GargoyleCMS.arrayShuffle;
GargoyleCMS.addEvent(window, 'load', GargoyleCMS.initToolTips);

// IE Error & PNG Fix
if (window.clipboardData && Doc.compatMode && !window.XMLHttpRequest) {
    Doc.styleSheets[0].addRule('img', 'behavior: url(' + baseURL + '/include/hotfixes/iepngfix.htc)');
    GargoyleCMS.addEvent(window, 'load', GargoyleCMS.ieError);
}