startStack=function()
{
	/* futuresign durch domainnamen ersetzen*/
	linkTargetSetter('plastische-schoenheitschirurgie.ch',new Array('plastische-schönheitschirurgie.ch'),new Array(".pdf",".docx",".doc"));
};
registerOnLoad = function(func)
{
	var orgOnLoad = startStack;
	startStack = function ()
	{
		orgOnLoad();
		func();
		return;
	}
}
var ranOnload=false; // Flag to determine if we've ran the starting stack already.
if(document.addEventListener)
{ 
	// Mozilla actually has a DOM READY event.
	document.addEventListener
	(
	 	"DOMContentLoaded",
		function(){if (!ranOnload) {ranOnload=true; startStack();}},
		false
	);
} 
else if(document.all && !window.opera)
{
	// This is the IE style which exploits a property of the (standards defined) defer attribute
	document.write("<scr" + "ipt id='DOMReady' defer=true " + "src=//:><\/scr" + "ipt>");
	document.getElementById("DOMReady").onreadystatechange=function()
	{
		if(this.readyState=="complete"&&(!ranOnload))
		{
			ranOnload=true;
			startStack();
		}
	}
}
var orgOnLoad=window.onload;
window.onload=function()
{
	if (typeof(orgOnLoad)=='function')
	{
		orgOnLoad();
	}
	if(!ranOnload)
	{
		ranOnload=true;
		startStack();
	}
}

/* customized alert and confirm */
var LockPageOpacity = 50;
var MSG;
var LockPage;

function my_alert(title, text, functionOk)
{
	createMSG('alert', title, text, false, functionOk);
}
function my_confirm(title, text, functionOk, functionFalse)
{
	createMSG('alert', title, text, functionOk, functionFalse);
}
function createMSG(type, title, text, functionOk, functionFalse)
{
	lockPage();
	var pageSize = getPageSize();
	var pageScroll = getPageScroll();
	try
	{
		MSG = document.getElementById('msg');
		if(MSG.style.display.toLowerCase() == 'block')
		{
			return false;
		}
		MSG.style.display = 'block';
	}
	catch(e)
	{
		MSG = document.createElement('div');
		MSG.id = 'msg';
		MSG.style.display = 'block';
		document.body.appendChild(MSG);
	}
	var bttnHTML = '';
	switch(type)
	{
		case'confirm':
			var imgSrc = 'pix/msg/icon_frage.gif';
			var bttnHTML = '<img class="msg_bttn" onclick="eval(\''+functionOk+'\'); closeMSG();" onmouseover="this.src=\'pix/msg/button_ok_over.gif\'" onmouseout="this.src=\'pix/msg/button_ok.gif\'" src="pix/msg/button_ok.gif" /><img class="msg_bttn" onclick="eval(\''+functionFalse+'\'); closeMSG();" onmouseover="this.src=\'pix/msg/button_abbrechen_over.gif\'" onmouseout="this.src=\'pix/msg/button_abbrechen.gif\'" src="pix/msg/button_abbrechen.gif" />';
			break;
		default:
			var imgSrc = 'pix/msg/icon_alert.gif';
			var bttnHTML = '<img class="msg_bttn" onclick="eval(\''+functionFalse+'\'); closeMSG();" onmouseover="this.src=\'pix/msg/button_ok_over.gif\'" onmouseout="this.src=\'pix/msg/button_ok.gif\'" src="pix/msg/button_ok.gif" />';
			break;			
	}
	
	MSG.innerHTML =
	'<div id="msg">'
		+'<img id="msg_ico" src="'+imgSrc+'" />'
		+'<div id="msg_top">'
			+'<img id="msg_close" onclick="eval(\''+functionFalse+'\'); closeMSG();" onmouseover="this.src=\'pix/msg/button_schliessen_over.gif\'" onmouseout="this.src=\'pix/msg/button_schliessen.gif\'" src="pix/msg/button_schliessen.gif" />'
		+'</div>'
		+'<div id="msg_content">'
			+'<div id="msg_title">'
				+title
			+'</div>'
			+text
			+bttnHTML
		+'</div>'
	+'</div>';
	var msgHeight = 0;
	for(var i = 0; i < MSG.childNodes.length; i++)
	{
		if(MSG.childNodes[i].nodeName.toLowerCase() == 'div')
		{
			 msgHeight += MSG.childNodes[i].offsetHeight;	
		}
	}
	try
	{
		MSG.style.top = (pageScroll.yScroll + (pageSize.windowHeight - msgHeight) / 2) + 'px';
		MSG.style.left = ((pageSize.pageWidth - MSG.offsetWidth) / 2) + 'px';
	}
	catch(e){null;}
}
function closeMSG()
{
	try
	{
		MSG.style.display = 'none';
		unlockPage();
	}
	catch(e){null;}
}
function lockPage()
{
	var pageSize = getPageSize();
	try
	{
		LockPage = document.getElementById('page_lock');
		if(LockPage.style.display.toLowerCase() == 'block')
		{
			return false;
		}
		LockPage.style.display = 'block';
	}
	catch(e)
	{
		LockPage = document.createElement('div');
		LockPage.id = 'page_lock';
		LockPage.style.display = 'block';
		document.body.appendChild(LockPage);
	}
	try
	{
		LockPage.style.filter = 'alpha(opacity='+LockPageOpacity +')';
		LockPage.style.opacity = LockPageOpacity/100;
		LockPage.style.height = pageSize.pageHeight + 'px';
		LockPage.style.width = '100%';
	}
	catch(e){null;}
}
function unlockPage()
{
	try
	{
		LockPage.style.display = 'none';
	}
	catch(e){null;}
}

/* Hilfsfunktionen um die Seitengröße und den scrollstand auszumessen */
function getPageSize()
{
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY)
	{	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	}
	else if(document.body.scrollHeight > document.body.offsetHeight)
	{// all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	}
	else
	{// Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if(self.innerHeight)
	{// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	}
	else if(document.documentElement && document.documentElement.clientHeight)
	{// Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	}
	else if(document.body)
	{// other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	}
	else
	{ 
		pageHeight = yScroll;
	}
	
	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth)
	{	
		pageWidth = windowWidth;
	}
	else
	{
		pageWidth = xScroll;
	}	
	var arrayPageSize = new Object();
	arrayPageSize.pageWidth = pageWidth;
	arrayPageSize.pageHeight = pageHeight;
	arrayPageSize.windowWidth = windowWidth;
	arrayPageSize.windowHeight = windowHeight;
	return arrayPageSize;
}
function getPageScroll()
{
	var yScroll;
	if (self.pageYOffset)
	{
		yScroll = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
	{// Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	}
	else if(document.body)
	{// all other Explorers
		yScroll = document.body.scrollTop;
	}
	var arrayPageScroll = new Object(); 
	arrayPageScroll.yScroll = yScroll; 
	arrayPageScroll.xScroll = ''; 
	return arrayPageScroll;
}
function return_absolute_pos(obj)
{
	var pos = new Object();
	pos.top = 0;
	pos.left = 0;
	while(obj && obj.nodeName.toLowerCase() != 'body')
	{
		pos.top += obj.offsetTop;
		pos.left += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return pos;
}
function retutn_radio_checkedOb_by_elementName(name)
{
	var Obj = document.getElementsByName(name);
	for(var i=0; i< Obj.length; i++)
	{
		if(Obj[i].checked)
		{
			return Obj[i];
		}
	}
	return false;
}
/* Linktargetsetter */
function linkTargetSetter(domain,forbiddenBlank,allowedBlank)
{
	domain = domain.toLowerCase();
	var doclinks = document.getElementsByTagName("a");
	for (var i = 0; i < doclinks.length; i++)
	{
		var url = doclinks[i].href.toLowerCase();
		if((url.indexOf(domain) == -1 && isInTargetSetterArray(forbiddenBlank, url) === false) || (isInTargetSetterArray(allowedBlank, url) === true))
		{
			doclinks[i].target = "_blank";
		}
	}
}
function isInTargetSetterArray(array, value)
{
	for(var i = 0; i < array.length; i++)
	{
		if(value.indexOf(array[i]) != -1)
		{
			return true;	
		}
	}
	return false;	
}

/* Eventhandler */
function addEvent( obj, type, fn )
{
   obj.fn = fn;
   if (obj.addEventListener) {
      obj.addEventListener( type, fn, false );
   } else if (obj.attachEvent) {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}
function removeEvent( obj, type, fn )
{
   if (obj.removeEventListener) {
      obj.removeEventListener( type, fn, false );
   } else if (obj.detachEvent) {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}

/* Flackern von Hintergrundbildern im IE6 bei abgeschaltetem Cache verhindern*/
try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}

/* HTTP Request (=Ajax Request) */
var requestQue = new HttpRequestQue();
function HttpRequestQue()
{
	this.List = new Array();
	this.requestAddWork = false;
	
	this.add = function(http)
	{
		var index = this.List.length;
		this.List[index] = new Http(http.url, http.onreadyst, http.method, http.body, http.headers, http.sync);
		this.List[index].onreadyst = http.onreadyst;
		this.send();
	}
	
	this.send = function()
	{
		if(this.requestAddWork === false)
		{
			if(this.List.length>0)
			{
				this.requestAddWork = true;
				this.List[0].doRequest();
			}
		}
	}
	
	this.requExecuted = function()
	{
		var cacheList = new Array();
		for (var i = 0; i < (this.List.length - 1); i ++)
		{
			cacheList[i] = this.List[i+1];
		}
		this.List = cacheList;
		cacheList = null;
		this.requestAddWork = false;
		this.send();
	}
}
var request = null;
function Http(url, onreadyst, method, body, headers, sync)
{
	this.url = url;
	this.onreadyst = onreadyst || function(){};
	this.method = method || 'GET';
	this.body = body || null;
	this.headers = headers || false;
	this.sync = sync || true;
	this.abortReq = false;
	this.req = (window.XMLHttpRequest)
		?
		new XMLHttpRequest()
		:
		((window.ActiveXObject)
		?
		new ActiveXObject("Microsoft.XMLHTTP")
		:
		false
		);
	this.doRequest = function()
	{
		this.req.open(this.method,this.url,this.sync);
		if (this.headers)
		{
			for (var i = 0; i < this.headers.length; i += 2)
			{
				this.req.setRequestHeader(
					this.headers[i], this.headers[i+1]
				);
			}
		}
		this.req.onreadystatechange = this.onreadyst;
		this.req.send(this.body);
	}
}

/* Flashintegration */
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}
function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';
  AC_FL_RunContent_GET = '';
  return str;
}
//fusi extension Set_AC_FL_RunContent_GET(?get=xx); is to use, before calling AC_FL_RunContent
var AC_FL_RunContent_GET = '';
function Set_AC_FL_RunContent_GET(get){AC_FL_RunContent_GET = get;}
function AC_SW_GetSWFObjectForMoz(name)
{
	var embeds = document.getElementsByTagName("embed");
	for(var i = 0; i < embeds.length; i++)
	{
		if(embeds[i].name == name){return embeds[i];}
	}
	return false;
}
//end fusi extension
function AC_FL_RunContent()
{
	var ret = 
	AC_GetArgs
	(
	 	arguments, ".swf"+AC_FL_RunContent_GET, "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash"
	);
	return AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_SW_RunContent()
{
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}
function AC_GetArgs(args, ext, srcParamName, classid, mimeType)
{
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    
    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
	  	ret.embedAttrs[args[i]] = args[i+1];//mozilla bug - cant catche the Element - have to use AC_SW_GetSWFObjectForMoz(name) if you need the Object
      case "id":
	  	ret.objAttrs[args[i]] = args[i+1];
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
function flash_detection(required, max)
{
	var required_version = required;
	var max_version = max;
	var available_version = 0;

	if(typeof(navigator.plugins["Shockwave Flash"]) == "object")
	{
		var description = navigator.plugins["Shockwave Flash"].description;
		available_version = description.substr(16, (description.indexOf(".", 16) - 16));
	}
	else if(typeof(ActiveXObject) == "function")
	{
		for(var i = 2; i < (max_version + 1); i ++)
		{
			try
			{
				if(typeof(new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + i)) == "object")
				{
					available_version = i;
				}
		   }
		   catch(error)
		   {
		   }
		}
	}
	return [available_version, required_version];
}
