/* alle hier als default gesetzten werte sind auch als cookie verfuegbar */
var HasCookie=false;
var HasAjax=false
var HasFlash=false;
var IsHTTPS=false;
/* moegliche werte (Firefox,Netscape,Opera,Safari,MSIE) */
var Browser=false;
/* kommt als double zurueck */
var Version=false;
var FlashVersion=false;
var DomainName=false;

/* andere globale Variablen */
var AjaxActive=false;
var TimeoutError=false;
var AjaxBatchList=new Array();
/* images die pregeloaded worden sind */
var preload_image = new Array();
var PopUpHandle=false;

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *<div id="flashcontent">This text is replaced by the Flash movie.</div>
 * <script type="text/javascript">var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);so.write("flashcontent");</script>
 * 
 * ACHTUNG!!! wenn ueber ein Flash movie ein layer gelegt werden soll musss zusaetzlich noch:
 * so.addParam("wmode", "transparent");
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;

/* developers only ;) */
var JSdebugMode=false;
function setDebugMode(state){
try{
	if(state && (state=="on" || state=="ON" || state==true)){
		JSdebugMode=true;
		setCookie("JSdebugMode","true",1);
	} else if(!state || state=="off" || state=="OFF"){
		JSdebugMode=false;
		PopUpHandle=false;
		setCookie("JSdebugMode","false",1);
	}
} catch(e){}
}

function writeDebugMessage(text){
try{
	if(!PopUpHandle || PopUpHandle.closed){
		JSdebugMode=false;
		popUp(600,800);
		JSdebugMode=true;
		var defaultText="<div style='font-size:10px;'>&copy; by Florian Neumair</div>";
			defaultText+="<h1>JS-Debugger</h1>";
			defaultText+="<hr><div style='font-size:12px;'><b>Vars:</b><br>HasCookie:"+HasCookie+"<br> HasAjax:"+HasAjax+"<br> HasFlash:"+HasFlash+"<br> FlashVersion:"+FlashVersion+"<br> IsHTTPS:"+IsHTTPS+"<br> Browser:"+Browser+"<br> Version:"+Version+"<br> DomainName:"+DomainName+"<br></div>";
			defaultText+="<hr><div style='font-size:12px;'><b>Cookies:</b><br>"+document.cookie+"</div><hr>";
		PopUpHandle.document.write(defaultText+text);
	} else if(!PopUpHandle.closed){
		var Div = document.createElement("div");
			Div.style.fontSize="12px";
			Div.appendChild(document.createTextNode(text));
		PopUpHandle.document.getElementsByTagName("BODY")[0].appendChild(Div);
	}
} catch(e){JSdebugMode=false;}
}

/* setzt cookies wobei der dritte wert die lebensdauer in Tagen ist und default auf 1Jahr gesetzt wird */
function setCookie(designator,value,dur){
try{if(JSdebugMode){writeDebugMessage("setCookie();");}}catch(e){}
try{
	if(document.cookie){
	var duration=(arguments.length==3)?arguments[2]:365;
	var now=new Date();
	var timeOut=new Date(now.getTime()+duration*86400000);
	document.cookie=escape(designator)+"="+escape(value)+";expires="+timeOut.toGMTString()+";path=/;";
	return true;
	} else {
	return false;
	}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* liest cookies aus und gibt sie zurueck */
function getCookie(designator){
try{if(JSdebugMode){writeDebugMessage("getCookie();");}}catch(e){}
try{
	if(document.cookie){
		var tmp = document.cookie.split("; ");
		for(i=0;i<tmp.length;i++)
		{
			tmp2 = tmp[i].split("="); 
			if(tmp2.length > 0 && tmp2[0]==escape(designator))
				return unescape(tmp2[1]);
		}
	}
	return "false";
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* gibt den handel auf ein element mit der uebergebene ID zurueck */
function getElement(id){
try{if(JSdebugMode){writeDebugMessage("getElement();");}}catch(e){}
try{
		if(!id) 						return false;
		if (document.getElementById)	return document.getElementById(id);	/* DOM*/
		else if (document.all)			return document.all[id];			/*  IE 4 und h&ouml;her*/   
		else if (document.layers) 		return document.layers[id];			/* NS 4 u. h&ouml;her*/  
	return false;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/*Cross-Browser Ereignis-Register Funktion (fuegt nur hinzu und ueberschreibt nicht) */
/*Cross-Browser Ereignis-Register Funktion (fuegt nur hinzu und ueberschreibt nicht) */
function addEvent(Obj,EvName,Fkt){
try{if(JSdebugMode){writeDebugMessage("addEvent()");}}catch(e){}
try{
	Obj=(Obj)?Obj:window;
	EvName=(EvName)?EvName:"load";
	Fkt=(Fkt)?Fkt:void(0);
	if (Obj.addEventListener){
		Obj.addEventListener(EvName,Fkt,false );
	}else if (Obj.attachEvent){
		Obj["e"+EvName+Fkt] = Fkt;
		Obj[EvName+Fkt] = function(){Obj["e"+EvName+Fkt](window.event);}
		Obj.attachEvent("on"+EvName,Obj[EvName+Fkt]);
		
	}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/*Cross-Browser Ereignis-Unregister Funktion loescht den event handler */
function removeEvent(Obj,EvName,Fkt){
try{if(JSdebugMode){writeDebugMessage("removeEvent()");}}catch(e){}
try{
	Obj=(Obj)?Obj:window;
	EvName=(EvName)?EvName:load;
	Fkt=(Fkt)?Fkt:void(0);
	if (Obj.removeEventListener){
		Obj.removeEventListener( EvName, Fkt, false );
	}else if (Obj.detachEvent){
		Obj.detachEvent( "on"+EvName, Obj[EvName+Fkt] );
		Obj[EvName+Fkt] = null;
		Obj["e"+EvName+Fkt] = null;
	}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* gibt den handel auf das Objekt zurueck dass das event ausgeloest hat*/
function getEventSourceObject(e){
try{if(JSdebugMode){writeDebugMessage("getEventSourceObject()");}}catch(e){}
try{
	var obj=(e.target)?e.target:window.event.srcElement; 
	if(obj.nodeType == 3) obj = obj.parentNode;
    return obj;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* gibt die x und y koordinaten eines Events zurueck */
function getEventPos(e){
try{if(JSdebugMode){writeDebugMessage("getEventPos()");}}catch(e){}
try{
	if(!document.all && e.pageX){
		Left = e.pageX;	
		Top = e.pageY;
		} 
	else if(window.event && window.event.clientX){
		var isStrictMode = document.compatMode && document.compatMode != 'BackCompat' ? true : false;
		var scrollLeft = isStrictMode ? document.documentElement.scrollLeft : document.body.scrollLeft;
		var scrollTop	= isStrictMode ? document.documentElement.scrollTop : document.body.scrollTop;
		Left = window.event.clientX + scrollLeft;
		Top = window.event.clientY + scrollTop;
		}
	return [Left,Top];
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* liefert den tastencode zu dem event zurueck */
function getEventKeyCode(e){
try{if(JSdebugMode){writeDebugMessage("getEventKeyCode()");}}catch(e){}
try{
	if (!e) var e = window.event;
	if (e.keyCode) return e.keyCode;
	else if (e.which) return e.which;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ueberprueft ob der uebergeben string numerisch ist */
function isNumeric(strString){
try{if(JSdebugMode){writeDebugMessage("isNumeric()");}}catch(e){}
try{
var strValidChars = "0123456789.-";
var strChar;
var blnResult = true;
if (strString.length == 0) return false;
for (i = 0; i < strString.length && blnResult == true; i++){
  strChar = strString.charAt(i);
  if (strValidChars.indexOf(strChar) == -1)
	{blnResult = false;}
}
return blnResult;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ermittelt die maximal anzeigbare breite des Browserfensters*/
function bodyWidth(){
try{if(JSdebugMode){writeDebugMessage("bodyWidth()");}}catch(e){}
try{
	if (window.innerWidth && window.innerHeight && isNumeric(window.innerWidth) && isNumeric(window.innerHeight))
		return window.innerWidth;
	else if (document.body.clientHeight && document.body.clientWidth  && isNumeric(document.body.clientHeight) && isNumeric(document.body.clientWidth))
		return document.body.clientWidth;
	else if (document.documentElement.clientHeight && document.documentElement.clientWidth && isNumeric(document.documentElement.clientHeight) && isNumeric(document.documentElement.clientWidth))
		return document.documentElement.clientWidth;
	return false;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ermittelt die maximal anzeigbare hoehe des Browserfensters*/
function bodyHeight(){
try{if(JSdebugMode){writeDebugMessage("bodyHeight()");}}catch(e){}
try{
	if (window.innerWidth && window.innerHeight && isNumeric(window.innerWidth) && isNumeric(window.innerHeight))
		return window.innerHeight;
	else if (document.body.clientHeight && document.body.clientWidth  && isNumeric(document.body.clientHeight) && isNumeric(document.body.clientWidth))
		return document.body.clientHeight;
	else if (document.documentElement.clientHeight && document.documentElement.clientWidth && isNumeric(document.documentElement.clientHeight) && isNumeric(document.documentElement.clientWidth))
		return document.documentElement.clientHeight;
	return false;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ermittelt den horizontal zu scrollenden Bereich in Pixel */
function getScrollHor(){
try{if(JSdebugMode){writeDebugMessage("getScrollHor()");}}catch(e){}
try{
	if(typeof(window.pageXOffset)!='undefined')
		return window.pageXOffset;
	else if(document.documentElement.scrollLeft)
		return document.documentElement.scrollLeft;
	else if(document.body.scrollLeft)
		return document.body.scrollLeft;
	return 0;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ermittelt den vertikal zu scrollenden Bereich in Pixel */
function getScrollVer(){
try{if(JSdebugMode){writeDebugMessage("getScrollVer()");}}catch(e){}
try{
	if(typeof(window.pageYOffset)!='undefined')
		return window.pageYOffset;
	else if(document.documentElement.scrollTop)
		return document.documentElement.scrollTop;
	else if(document.body.scrollTop)
		return document.body.scrollTop;
	return 0;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ermittelt den abstand von link zum uebergebenen Element */
function getPosLeft(Obj,recursive){
try{if(JSdebugMode){writeDebugMessage("findPosLeft()");}}catch(e){}
try{
    var curleft = 0;
	var recursive=(arguments.length>1)?recursive:true;
	if(Obj.offsetParent && recursive){
        while(Obj.offsetParent){
          curleft += Obj.offsetLeft;
          Obj = Obj.offsetParent;
        }
	} else if(Obj.offsetParent && !recursive){
		curleft += Obj.offsetLeft;
	}else if(Obj.x){
        curleft += Obj.x;
	}
    return curleft;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
  }

/* ermittelt den abstand von oben zum uebergebenen Element */
function getPosTop(Obj,recursive){
try{if(JSdebugMode){writeDebugMessage("findPosTop()");}}catch(e){}
try{
    var curtop = 0;
	var recursive=(arguments.length>1)?recursive:true;
    if(Obj.offsetParent && recursive){
        while(Obj.offsetTop){
          curtop += Obj.offsetTop;
          Obj = Obj.offsetParent;
        }
	} else if(Obj.offsetParent && !recursive){
		curtop += Obj.offsetTop;
	} else if(Obj.y){
        curtop += Obj.y;
	}
    return curtop;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ermittelt die hoehe in Pixel eines HTML-Elements*/
function elemWidth(Obj){
try{if(JSdebugMode){writeDebugMessage("elemWidth()");}}catch(e){}
try{

    if (Obj.clip && Obj.clip.width){
		return Obj.clip.width;
    } else if (Obj.offsetWidth) {
        return Obj.offsetWidth;
    } else if (Obj.style.pixelWidth) {
        return Obj.style.pixelWidth;
	} else {
		return false;
	}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ermittelt die weite in Pixel eines HTML-Elements*/
function elemHeight(Obj){
try{if(JSdebugMode){writeDebugMessage("elemHeight()");}}catch(e){}
try{
    if (Obj.clip && e.clip.height)
        return Obj.clip.height;
    else if (Obj.offsetHeight)
        return Obj.offsetHeight;
    else if (Obj.style.pixelHeight)
        return Obj.style.pixelHeight;
    return false;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* gibt die x und y Koordinaten zurueck in abhaengigkeit ob sich das element in der hoehe/2 oder breite/2 befindet */
function calcAutoPosition(Obj){
try{if(JSdebugMode){writeDebugMessage("calcAutoPosition()");}}catch(e){}
try{
	var width=elemWidth(Obj);
	var height=elemHeight(Obj);
	var top=findPosTop(Obj);
	var left=findPosLeft(Obj);
	var Bwidth=bodyWidth();
	var Bheight=bodyHeight();
	if(width && height && top && left && Bwidth && Bheight)
		return [(((Bwidth/2)<=left)?(left-width):left),(((Bheight/2)<=top)?(top-height):top)];
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}	
}

/* bilder vorlade funtion unterstuetzt sowohl einzel-bilder(strings) als auch listen (arrays) */
function preloadImages(imageSrc){
try{if(JSdebugMode){writeDebugMessage("preloadImages()");}}catch(e){}
try{
    if (document.images){
		if(typeof(imageSrc) == "string"){
			var pos=preload_image.length;
			preload_image[pos] = new Image();
			preload_image[pos].src=imageSrc;
		} else if(typeof(imageSrc) == "object"){
			for (keyVar in imageSrc){
				preload_image[keyVar] = new Image();
				preload_image[keyVar].src=imageSrc[keyVar];
			}
			
		}
    }
	return true;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* gibt die Versionsnummer des installierten Flash players zurueck */
function getFlashVersion(){
try{if(JSdebugMode){writeDebugMessage("getFlashVersion()");}}catch(e){}
try{
	var version = deconcept.SWFObjectUtil.getPlayerVersion();
	if (version["major"] > 0) {
		return version['major'] +"."+ version['minor'];
	} else {
		return false;
	}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* erzeugt aus einem uebergebenen string eine eindeutige ID */
function generateUniqueID(str){
try{if(JSdebugMode){writeDebugMessage("generateUniqueID()");}}catch(e){}
	try{
	var preSet=(str)?str+"_":"";
	var zeit = new Date();
	var ts = Date.parse(zeit);
		callCount++;
	return preSet+Number(ts+callCount).toString(16);
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* loescht alle Kindknoten zu einem Element */
function removeChildNodes(node){
try{if(JSdebugMode){writeDebugMessage("removeChildNodes()");}}catch(e){}
try{
	for (var i=(node.childNodes.length-1);i>=0;i--){
		node.removeChild(node.childNodes[i]);
	}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* revovet das uebergebene Object*/
function removeObject(Obj){
try{if(JSdebugMode){writeDebugMessage("removeObject()");}}catch(e){}
try{
	if(Obj && Obj.parentNode) Obj.parentNode.removeChild(Obj);
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* 
 * Ajaxrequest wrapper der sich um Timmouts und umd doppelte requests kuemmert 
 * standard Server timeout ist auf 10sek gestellt
 * aufruf beispiel: ajaxXMLRequest("index.xml","foobar(ajaxReq);fooobar(ajaxReq);");
 */
function ajaxXMLRequest(ajaxUrl,ajaxFkt,ErrorTimeout){
try{if(JSdebugMode){writeDebugMessage("ajaxXMLRequest()");}}catch(e){}
try{
	var defaultTimeout=10;
	if(AjaxActive){
		TimeoutErrorTime=(!ErrorTimeout)?defaultTimeout:ErrorTimeout;
		ajaxAddBatchJob(ajaxUrl,ajaxFkt,TimeoutErrorTime);
	} else {
	TimeoutErrorTime=(!ErrorTimeout)?defaultTimeout:ErrorTimeout;
	TimeoutError=window.setTimeout("ajaxXMLRequestTimeoutError('"+(ajaxUrl.split("'").join("\\\'"))+"');",(TimeoutErrorTime*1000));
	AjaxActive=true;
	if (window.XMLHttpRequest){
		ajaxReq = new XMLHttpRequest();
		ajaxReq.onreadystatechange = new Function("ajaxReady", "if(ajaxReq.readyState==4 && ajaxReq.status==200){"+ajaxFkt+";clearTimeout(TimeoutError);AjaxActive=false;ajaxNextBatchJob();}");
		ajaxReq.open("GET", ajaxUrl, true);
		ajaxReq.send(null);
	}
	else if (window.ActiveXObject){
		ajaxReq = new ActiveXObject("Microsoft.XMLHttp");
		if (ajaxReq){
			ajaxReq.onreadystatechange =  new Function("ajaxReady", "if(ajaxReq.readyState==4 && ajaxReq.status==200){"+ajaxFkt+";clearTimeout(TimeoutError);AjaxActive=false;ajaxNextBatchJob();}");
			ajaxReq.open("GET", ajaxUrl, true);
			ajaxReq.send();
		}
	}
	}
}catch(e){
	if(JSdebugMode){writeDebugMessage("URL:"+ajaxUrl+" ERROR: "+e);}
	try{
		ajaxReq.onreadystatechange=void(0);
		AjaxActive=false;
		ajaxNextBatchJob();
	}catch(e){}
}
}

/* fuegt de ajaxanfrage zur wrteliste hinzu */
function ajaxAddBatchJob(ajaxUrl,ajaxFkt,ErrorTimeout){
try{if(JSdebugMode){writeDebugMessage("ajaxAddBatchJob()");}}catch(e){}
try{
	AjaxBatchList[AjaxBatchList.length]=new Array(ajaxUrl,ajaxFkt,ErrorTimeout);
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* fuehrt den naechsten request aus */
function ajaxNextBatchJob(){
try{if(JSdebugMode){writeDebugMessage("ajaxNextBatchJob()");}}catch(e){}
try{
	if(AjaxBatchList.length>0){
		var newAjaxJob=AjaxBatchList.shift();
		ajaxXMLRequest(newAjaxJob[0],newAjaxJob[1],newAjaxJob[2]);
	}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* ignoriert die fehlgeschlagene anfrage und fuehrt dei naechst in der liste aus */
function ajaxXMLRequestTimeoutError(URL){
try{if(JSdebugMode){writeDebugMessage("ajaxXMLRequestTimeoutError('"+URL+"')");}}catch(e){}
try{
	ajaxReq.onreadystatechange=void(0);
	AjaxActive=false;
	ajaxNextBatchJob();
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* makiert den unterschied zwischen newText und oldText in einem Input element (Obj)*/
function markText(Obj,newText,oldText){
try{
	oldText=(oldText)?oldText:Obj.value;
	Obj.value=newText;
	if (Obj.createTextRange){
	var sRange = Obj.createTextRange();
		sRange.moveStart("character", oldText.length);
		sRange.moveEnd("character", newText.length);
		sRange.select();
		Obj.focus();
	} else {
		Obj.setSelectionRange(oldText.length,newText.length);
		Obj.focus();
	}
}catch(e){}
}

/* legt einen IFrame hinter ein uebergebene Element um Select felder und flash movies zu ueberlagern */
function makeTopMost(Obj,XtraTop,XtraLeft,XtryHeight,XtraWidth){
	try{if(JSdebugMode){writeDebugMessage("makeTopMost()");}}catch(e){}
	try{
	XtraTop=(XtraTop)?XtraTop:0;
	XtraLeft=(XtraLeft)?XtraLeft:0;
	XtryHeight=(XtryHeight)?XtryHeight:0;
	XtraWidth=(XtraWidth)?XtraWidth:0;
	if(Obj.nextSibling && Obj.nextSibling.nodeName=="IFRAME"){
		iframe=Obj.nextSibling;
		iframe.style.width=(elemWidth(Obj)+XtraWidth)+"px";
		iframe.style.height=(elemHeight(Obj)+XtryHeight)+"px";
		if(iframe.style.display=="none"){
			iframe.style.display="block";
		}
	} else {
	var iframe = document.createElement("iframe");
		iframe.frameBorder="no";
		iframe.scrolling="no";
		iframe.src=(!IsHTTPS)?'about:blank':'/blank.htm';
		iframe.style.position="absolute";
		iframe.style.top=(getPosTop(Obj,false)+XtraTop)+"px";
		iframe.style.left=(getPosLeft(Obj,false)+XtraLeft)+"px";
		iframe.style.width=(elemWidth(Obj)+XtraWidth)+"px";
		iframe.style.height=(elemHeight(Obj)+XtryHeight)+"px";
		iframe.style.zIndex="998";
		if(Obj.nextSibling)
			Obj.parentNode.insertBefore(iframe, Obj.nextSibling);
		else
			Obj.parentNode.appendChild(iframe);
		Obj.style.zIndex="999";
	}
	}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* versteckt den IFRAME der in Topmost erzeugt wurde */
function removeTopMost(Obj){
	try{if(JSdebugMode){removeTopMost("makeTopMost()");}}catch(e){}
	try{
	if(Obj.nextSibling && Obj.nextSibling.nodeName=="IFRAME"){
		Obj.nextSibling.style.display="none";
	}
	}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* erzeugt am Bildschirm zentrierte Popups */
function popUp(w, h, site, scroll, resize, menu, toolbar, status) {
	try{if(JSdebugMode){writeDebugMessage("popUp()");}}catch(e){}
	try{
	var site = (!site)?"about:blank":site;
	var scroll = (!scroll)?"yes":(scroll == 1)?"yes":"no";
	var menu = (!menu)?"no":(menu == 1)?"yes":"no";
	var resize = (!resize)?"no":(resize == 1)?"yes":"no";	
	var toolbar = (!toolbar)?"no":(toolbar == 1)?"yes":"no";	
	var status = (!status)?"yes":(status == 1)?"yes":"no";
	var x = screen.availWidth/2-w/2;
	var y = screen.availHeight/2-h/2;
	var popupWindow = window.open(site,DomainName,'width='+w+', height='+h+', left='+x+', top='+y+', screenX='+x+', screenY='+y+', menubar='+menu+', scrollbars='+scroll+', toolbar='+toolbar+', resizeable='+resize);
	if (window.focus) popupWindow.focus();
	PopUpHandle=popupWindow;
	addEvent(popupWindow,"close",function(){PopUpHandle=false;});
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/*
 * submitted automatisch gehighlitete Form-Felder durch bestaetigung mit [ENTER]
 * ausgenommen sind alle elementtypen die in noevent deklariert sind und Felder 
 * mit der id der Variable noevent_id. Wenn noevent_id="" dann wird sie ignoriert
 * EINBAU: <FORM onKeyPress="submitEnter(this,event)">
 * ACHTUNG: FORM-TAGS muessen ausserhalb eines TABLE-TAGS liegen !!!
 * TESTED: Firefox 1.0.6, Netscape Navigator 7.0, Safari, >=IE 6.0
*/
function submitEnter(myform,e){
try{if(JSdebugMode){writeDebugMessage("submitEnter()");}}catch(e){}
try{
var keycode;
var noevent = new Array("textarea","reset","file");
var noevent_id = "noevent";
if (window.event) keycode = window.event.keyCode;
else if (e) {keycode = e.which;}
else {return true;}
/*event_element enthaelt das object von dem aus das event initialisiert wurde*/
event_element = getEventSourceObject(e); 
for(i=0;i<noevent.length;i++){
	if(event_element.type.toLowerCase() == noevent[i].toLowerCase())
		return true;
	}
if (keycode == 13 && event_element.id.toLowerCase() != noevent_id.toLowerCase() || noevent_id == "" && keycode == 13)
	myform.submit();
return true;
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}
}

/* setzt browserinformationen */
try{
if(setCookie("HasCookie","true",1) && getCookie("HasCookie")=="true"){
	HasCookie=true
}
if(getCookie("HasAjax")!="false"){
	HasAjax=true;
} else if(window.XMLHttpRequest || window.ActiveXObject){
	HasAjax=true;
	setCookie("HasAjax","true",1);
}

if(getFlashVersion()){
	HasFlash=true;
	FlashVersion=getFlashVersion();
	setCookie("HasFlash","true",1);
	setCookie("FlashVersion",FlashVersion,1);
}

if(getCookie("Browser")!="false"){
	Browser=getCookie("Browser");
	Version=getCookie("Version");
}else{
	if(navigator.userAgent.indexOf("Firefox/")>-1){
	var tmp = navigator.userAgent.match(/Firefox\/([0-9|.]{1,7})/g)[0].replace(/Firefox\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Firefox";
	setCookie("Browser","Firefox",1);
	setCookie("Version",Version,1);
	}
	else if(navigator.userAgent.indexOf("Netscape/")>-1){
	var tmp = navigator.userAgent.match(/Netscape\/([0-9|.]{1,7})/g)[0].replace(/Netscape\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Netscape";
	setCookie("Browser","Netscape",1);
	setCookie("Version",Version,1);
	}
	else if(navigator.userAgent.indexOf("Opera ")>-1){
	var tmp = navigator.userAgent.match(/Opera ([0-9|.]{1,7})/g)[0].replace(/Opera /,"");
	Version = VersionString.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Opera";
	setCookie("Browser","Opera",1);
	setCookie("Version",Version,1);
	}
	else if(navigator.userAgent.indexOf("Opera/")>-1){
	var tmp = navigator.userAgent.match(/Opera\/([0-9|.]{1,7})/g)[0].replace(/Opera\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Opera";
	setCookie("Browser","Opera",1);
	setCookie("Version",Version,1);
	}
	else if(navigator.userAgent.indexOf("Safari/")>-1){
	var tmp = navigator.userAgent.match(/Safari\/([0-9|.]{1,7})/g)[0].replace(/Safari\//,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="Safari";
	setCookie("Browser","Safari",1);
	setCookie("Version",Version,1);
	}
	else if(navigator.userAgent.indexOf("MSIE ")>-1){
	var tmp = navigator.userAgent.match(/MSIE ([0-9|.]{1,4})/g)[0].replace(/MSIE /,"");
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	Browser="MSIE";
	setCookie("Browser","MSIE",1);
	setCookie("Version",Version,1);
	}
	else if(navigator.userAgent.indexOf("Mozilla/")>-1){
	var tmp = navigator.userAgent.match(/Mozilla\/([0-9|.]{1,7})/g)[0].replace(/Mozilla\//,"");
	Browser="Mozilla";
	Version = tmp.substr(0,tmp.indexOf("."))+"."+tmp.substr(tmp.indexOf("."),tmp.length).split(".").join("");
	setCookie("Browser","Mozilla",1);
	setCookie("Version",Version,1);
	}
	}
if(location.protocol=='http:'){
	IsHTTPS=false;
	setCookie("IsHTTPS","false",1);
}
else if(location.protocol=='https:'){
	IsHTTPS=true;
	setCookie("IsHTTPS","true",1);
}
if(document.domain!=""){
	setCookie("DomainName",document.domain,1);
	DomainName=document.domain;
} else {
	setCookie("DomainName","unknown",1);
	DomainName="unknown";
}
if(getCookie("JSdebugMode")=="true"){
	JSdebugMode=true;
}
}catch(e){if(JSdebugMode){writeDebugMessage("ERROR: "+e);}}

function callPopUpHelp(url, name, width, height, style)
{	
	if(name == "") name = "Hilfe";
	if(!width) width = 550;
	if(!height) height = 500;
	
	if(!style)
		style="resizable=yes,toolbar=no,menubar=no,locationbar=no,scrollbars=yes,status=no,top=0";
	style+=",width="+width+",height="+height;

	if(url != "") window.open("http://www.weinwelt.at"+url, name, style);
}

var cc=0;
function setHeightIE(){
try{
		if(document.getElementById("footer")){
			var cn = 0;
				cn += (document.getElementById("left"))?1:0;
				cn += (document.getElementById("middle"))?1:0;
				cn += (document.getElementById("right"))?1:0;
			try{
			if(cn >= 2){
				var left = (document.getElementById("left") && document.getElementById("left").offsetHeight)?document.getElementById("left").offsetHeight:0;
				var middle = (document.getElementById("middle") && document.getElementById("middle").offsetHeight)?document.getElementById("middle").offsetHeight:0;
				var right = (document.getElementById("right") && document.getElementById("right").offsetHeight)?document.getElementById("right").offsetHeight:0;
				var max=Math.max(right,Math.max(left,middle));
				try{document.getElementById("middle").style.height=max+"px";}catch(e){}
				try{document.getElementById("left").style.height=max+"px";}catch(e){}
				try{document.getElementById("right").style.height=max+"px";}catch(e){}
				
				try{
					if(document.getElementById("fallbackStartpage")){
						document.getElementById("footer").style.marginTop="5px";
						document.getElementById("footer").style.position="relative";
					}
				}catch(e){}
			} else if(document.getElementById("content").getElementsByTagName("div")[0].className == "journal_startpage"){
					document.getElementById("footer").style.position="relative";
					document.getElementById("footer").style.marginTop="-35px";
				}
			}catch(e){}
		} else {
			if(cc<100){
				cc++;
				window.setTimeout(function(){setHeightIE();},100);
			}
		}
	}catch(e){}
}
