//  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 + "&file=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);
	},


	uncheckDisable: function (me, uncheck) {
		var isChecked = false;
		for (var x = 0; x < me.length; x++) {
			if ($$(me[x]).checked)
				isChecked = true;
		}
		if (isChecked)
			for (var i = 0; i < uncheck.length; i++) {
				$$(uncheck[i]).disabled = true;
				$$(uncheck[i]).checked = false;
			}
		else
			for (var i = 0; i < uncheck.length; i++) {
				$$(uncheck[i]).disabled = false;
			}
	}
}

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);
}
