
var d1 = 0;
var d2 = 0;
var d3 = 0;
var d4 = 0;
var d5 = 0;
var d6 = 0;

var rtimout;

var req1;
var req2;
var req3;
var req4;
var req5;
var req6;

var rel1 =  5;	//wer ist online
var rel2 =  7;	//status oben links
var rel3 = 11;	//pm popup
var rel4 = 23;	//besucherzähler
var rel5 = 29;	//banner oben
var rel6 =  3;	//chat

var updatepos = 0;

var dragobjekt = null;

var dragx = 0;
var dragy = 0;

var posx = 0;
var posy = 0;

var is_chat = 0;


function rand (min, max)
{
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

function addslashes(str)
{
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\0/g,'\\0');
	return str;
}

function stripslashes(str)
{
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\0/g,'\0');
	str=str.replace(/\\\\/g,'\\');
	return str;
}

function stripHTML(str)
{
	var tmp = str.replace(/(<.*['"])([^'"]*)(['"]>)/g, function(x, p1, p2, p3) { return  p1 + p3;} );
	return tmp.replace(/<\/?[^>]+>/gi, '');

}

function enableTooltips()
{
	var links, imgs,i,h;
	if(!document.getElementById || !document.getElementsByTagName)
	 return;
	h=document.createElement("span");
	h.id="btc";
	h.setAttribute("id","btc");
	h.style.position="absolute";
	document.getElementsByTagName("body")[0].appendChild(h);
	links=document.getElementsByTagName("a");
	imgs=document.getElementsByTagName("img");
	for(i=0;i<links.length; i++)
	{
		Prepare(links[i]);
	}
	for(i=0;i<imgs.length;i++)
	{
		Prepare(imgs[i]);
		Prepare2(imgs[i]);
	}
}

function Prepare(el)
{
	var tooltip,t,b,s,l;
	t=el.getAttribute("title");
	if(t!=null && t.length!=0)
	{
		el.removeAttribute("title");
		tooltip=CreateEl("span","tooltip");
		s=CreateEl("span","top");
		s.appendChild(document.createTextNode(t));
		tooltip.appendChild(s);
		b=CreateEl("b","bottom");
		tooltip.appendChild(b);
		setOpacity(tooltip);
		el.tooltip=tooltip;
		el.onmouseover=showTooltip;
		el.onmouseout=hideTooltip;
		el.onmousemove=Locate;
	}
}

function Prepare2(el)
{
	var tooltip,t,b,s,l,img;
	t=el.getAttribute("bigpre");
	if(t!=null && t.length!=0)
	{
		el.removeAttribute("bigpre");
		tooltip=CreateEl("span","tooltip");
		
		s=CreateEl("span","top");
		s.innerHTML='<img src="'+t+'" alt="">';
		tooltip.appendChild(s);
		b=CreateEl("b","bottom");
		tooltip.appendChild(b);
		setOpacity2(tooltip);
		el.tooltip=tooltip;
		el.onmouseover=showTooltip;
		el.onmouseout=hideTooltip;
		el.onmousemove=Locate;
	}
}

function showTooltip(e)
{
	document.getElementById("btc").appendChild(this.tooltip);
	Locate(e);
}

function hideTooltip(e)
{
	var d=document.getElementById("btc");
	if(d.childNodes.length>0)
	 d.removeChild(d.firstChild);
}

function setOpacity(el)
{
	el.style.filter="alpha(opacity:85)";
	el.style.KHTMLOpacity="0.85";
	el.style.MozOpacity="0.85";
	el.style.opacity="0.85";
}

function setOpacity2(el)
{
	el.style.filter="alpha(opacity:95)";
	el.style.KHTMLOpacity="0.95";
	el.style.MozOpacity="0.95";
	el.style.opacity="0.95";
}

function CreateEl(t,c)
{
	var x=document.createElement(t);
	x.className=c;
	x.style.display="block";
	return(x);
}

function Locate(e)
{
	var posx=0,posy=0;
	if(e==null)
	 e=window.event;
	if(e.pageX || e.pageY)
	{
  		posx=e.pageX; posy=e.pageY;
	}else if(e.clientX || e.clientY)
	{
  		if(document.documentElement.scrollTop)
  		{
			posx=e.clientX+document.documentElement.scrollLeft;
			posy=e.clientY+document.documentElement.scrollTop;
		}else{
			posx=e.clientX+document.body.scrollLeft;
			posy=e.clientY+document.body.scrollTop;
		}
	}
	document.getElementById("btc").style.top=(posy+10)+"px";
	document.getElementById("btc").style.left=(posx-20)+"px";
}


function disableselect()
{
	return false;
}

function enableselect()
{
	return true;
}

function add_html(html)
{
	var myTableContent = top.chatfenster.document.getElementById("chat_table_body").innerHTML;
	var tableHead = '<table id="chat_table"><tbody id="chat_table_body">';
	var tableFooter = '</tbody></table>';
	top.chatfenster.document.getElementById("chat_div").innerHTML = tableHead + myTableContent + html + tableFooter;
}

function reload_stuff()
{
	function new_req()
	{
		var req = null;
		try
		{
			req = new XMLHttpRequest();
		}
		catch (ms)
		{
			try
			{
				req = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (nonms)
			{
				try
				{
					req = new ActiveXObject("Microsoft.XMLHTTP");
				} 
				catch (failed)
				{
					req = null;
				}
			}  
		}
		if (req == null)
		{
			alert("Fehler beim Erstellen des Request-Objektes!");
		}
		return req;
	}
	
/*###############################################*/

	if (d1==0) req1 = new_req();
	if (d2==0) req2 = new_req();
	if (d3==0) req3 = new_req();
	if (d4==0) req4 = new_req();
	if (d5==0) req5 = new_req();
	if (d6==0) req6 = new_req();
	
/*###############################################*/

	if ((d1 % rel1)==0)
	{
		req1.open("GET", '/inc/online.inc.php?sessid='+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML, true);

		req1.onreadystatechange = function()
		{            
			switch(req1.readyState)
			{
				case 4:
					if(req1.status==200)
					{
						document.getElementById('online').innerHTML = req1.responseText;
						document.getElementById('val').innerHTML = parseInt(document.getElementById('val').innerHTML)+1;
					}
					break;
				default:
					return false;
				break;     
			}
		};
		req1.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req1.setRequestHeader("Pragma", "no-cache");
		req1.setRequestHeader("Cache-Control", "must-revalidate");
		req1.setRequestHeader("If-Modified-Since", document.lastModified);
		req1.send(null);
	}
	
/*###############################################*/

	if ((d2 % rel2)==0)
	{
		req2.open("GET", '/inc/status.inc.php?sessid='+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML, true);

		req2.onreadystatechange = function()
		{            
			switch(req2.readyState)
			{
				case 4:
					if(req2.status==200)
					{
						if (req2.responseText.length != 0)
						{
							document.getElementById('status').innerHTML = req2.responseText;
							document.getElementById('val').innerHTML = parseInt(document.getElementById('val').innerHTML)+1;
						}
					}
					break;
				default:
					return false;
				break;     
			}
		};
		req2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req2.setRequestHeader("Pragma", "no-cache");
		req2.setRequestHeader("Cache-Control", "must-revalidate");
		req2.setRequestHeader("If-Modified-Since", document.lastModified);
		req2.send(null);
	}

/*###############################################*/

	if ((d3 % rel3)==0)
	{
		req3.open("GET", '/inc/newpms.inc.php?sessid='+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML, true);

		req3.onreadystatechange = function()
		{            
			switch(req3.readyState)
			{
				case 4:
					if(req3.status==200)
					{
						if (req3.responseText.length != 0)
						{
							document.getElementById("pm_popup").style.filter = "alpha(opacity:90)";
							document.getElementById("pm_popup").style.KHTMLOpacity = "0.90";
							document.getElementById("pm_popup").style.MozOpacity = "0.90";
							document.getElementById("pm_popup").style.opacity = "0.90";
							document.getElementById("pm_popup").style.visibility = "visible";
							document.getElementById('val').innerHTML = parseInt(document.getElementById('val').innerHTML)+1;
						}
					}
					break;
				default:
					return false;
				break;     
			}
		};
		req3.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req3.setRequestHeader("Pragma", "no-cache");
		req3.setRequestHeader("Cache-Control", "must-revalidate");
		req3.setRequestHeader("If-Modified-Since", document.lastModified);
		req3.send(null);
	}

/*###############################################*/

	if ((d4 % rel4)==0)
	{
		req4.open("GET", '/counter/counter.php?sessid='+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML, true);

		req4.onreadystatechange = function()
		{            
			switch(req4.readyState)
			{
				case 4:
					if(req4.status==200)
					{
						document.getElementById('counter').innerHTML = req4.responseText;
						document.getElementById('val').innerHTML = parseInt(document.getElementById('val').innerHTML)+1;
					}
					break;
				default:
					return false;
				break;     
			}
		};
		req4.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req4.setRequestHeader("Pragma", "no-cache");
		req4.setRequestHeader("Cache-Control", "must-revalidate");
		req4.setRequestHeader("If-Modified-Since", document.lastModified);
		req4.send(null);
	}

/*###############################################*/

	if ((d5 % rel5)==0)
	{
		req5.open("GET", 'banner.inc.php?sessid='+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML, true);

		req5.onreadystatechange = function()
		{
			switch(req5.readyState)
			{
				case 4:
					if(req5.status==200)
					{
						document.getElementById('banner_pic').innerHTML = req5.responseText;
						document.getElementById('val').innerHTML = parseInt(document.getElementById('val').innerHTML)+1;
					}
					break;
				default:
					return false;
				break;
			}
		};
		req5.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req5.setRequestHeader("Pragma", "no-cache");
		req5.setRequestHeader("Cache-Control", "must-revalidate");
		req5.setRequestHeader("If-Modified-Since", document.lastModified);
		req5.send(null);
	}

//#########################################################

	if (((d6 % rel6) == 1)&&(top.frames.length == 1))
	{
		is_chat = 0;
		try
		{
			var oldid = parseInt(top.chatfenster.document.getElementById('last_id').innerHTML);
		}catch (e){
			is_chat = 1;
		}
		if (is_chat == 0)
		{
			req6.open("GET", '/chat/chatmessages.php?last_id='+oldid+'&sessid='+document.getElementById('sessid').innerHTML+"&val="+top.chatfenster.document.getElementById('val').innerHTML, true);
			req6.onreadystatechange = function()
			{
				switch(req6.readyState)
				{
					case 4:
						if(req6.status==200)
						{
							if (req6.responseText.length!=0)
							{
								add_html(req6.responseText);
								top.chatfenster.document.getElementById('last_id').innerHTML = top.chatfenster.document.getElementById('cid').innerHTML;
								top.chatfenster.document.getElementById('cid').parentNode.removeChild(top.chatfenster.document.getElementById('cid'));
								if (req6.responseText.length != 26)
								{
									if(top.chatfenster.document.getElementsByName){top.chatfenster.scrollTo(0,top.chatfenster.document.getElementsByName('cende')[0].offsetTop);}
								}
								top.chatfenster.document.getElementById('val').innerHTML = parseInt(top.chatfenster.document.getElementById('val').innerHTML)+1;
							}
							updatepos += 10;
							if (updatepos > 610)
							{
								updatepos = 10;
							}
							top.chatfenster.document.getElementById('updater').style.width = updatepos+'px';
						}
						break;
					default:
						return false;
					break;
				}
			};
			req6.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			req6.setRequestHeader("Pragma", "no-cache");
			req6.setRequestHeader("Cache-Control", "must-revalidate");
			req6.setRequestHeader("If-Modified-Since", document.lastModified);
			req6.send(null);
		}
	}

//#########################################################

	d1++;
	d2++;
	d3++;
	d4++;
	d5++;
	d6++;
	enableTooltips();
	window.clearTimeout(rtimout);
	rtimout = window.setTimeout('reload_stuff()', 1000);
}

function calender(day, month, cmonth, year, cyear)
{
	var req = null;
	try
	{
		req = new XMLHttpRequest();
	}
	catch (ms)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (nonms)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed)
			{
				req = null;
			}
		}  
	}
	if (req == null)
		alert("Fehler beim Erstellen des Request-Objektes!");
		
	req.open("GET", '/inc/calender.inc.php?day='+day+'&month='+month+'&cmonth='+cmonth+'&year='+year+'&cyear='+cyear+'&sessid='+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML, true);

	req.onreadystatechange = function()
	{            
		switch(req.readyState)
		{
			case 4:
				if(req.status==200)
				{
					document.getElementById('calender').innerHTML = req.responseText;
					document.getElementById('val').innerHTML = parseInt(document.getElementById('val').innerHTML)+1;
					enableTooltips();
				}
				break;
			default:
				return false;
			break;     
		}
	};
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(null);
}

function chatpost(message)
{
	var req = null;
	try
	{
		req = new XMLHttpRequest();
	}
	catch (ms)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (nonms)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed)
			{
				req = null;
			}
		}  
	}
	if (req == null)
		alert("Fehler beim Erstellen des Request-Objektes!");
		
	req.open("POST", '/chat/chatpost.php?sessid='+document.getElementById('sessid').innerHTML, true);
	var params = "nachricht="+message;

	req.onreadystatechange = function()
	{            
		switch(req.readyState)
		{
			case 4:
				if(req.status==200)
				{
				}
				break;
			default:
				return false;
			break;     
		}
	};
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.setRequestHeader("Pragma", "no-cache");
	req.setRequestHeader("Cache-Control", "must-revalidate");
	req.setRequestHeader("If-Modified-Since", document.lastModified);
	req.setRequestHeader("Content-length", params.length);
	req.setRequestHeader("Connection", "close");
	req.send(params);
}

function quickpos(quickx, quicky)
{
	var req = null;
	try
	{
		req = new XMLHttpRequest();
	}
	catch (ms)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (nonms)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed)
			{
				req = null;
			}
		}  
	}
	if (req == null)
		alert("Fehler beim Erstellen des Request-Objektes!");
		
	req.open("GET", '/inc/quickbar.inc.php?quickx='+quickx+'&quicky='+quicky+'&sessid='+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML, true);

	req.onreadystatechange = function()
	{            
		switch(req.readyState)
		{
			case 4:
				if(req.status==200)
				{
				}
				break;
			default:
				return false;
			break;     
		}
	};
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(null);
}


function user_image(image, act, x, y)
{
	var req = null;
	try
	{
		req = new XMLHttpRequest();
	}
	catch (ms)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (nonms)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed)
			{
				req = null;
			}
		}  
	}
	if (req == null)
		alert("Fehler beim Erstellen des Request-Objektes!");
		
	req.open("POST", '/inc/user_image.inc.php', true);
	var params = "image="+image+"&act="+act+"&x="+x+"&y="+y+"sessid="+document.getElementById('sessid').innerHTML+"&val="+document.getElementById('val').innerHTML;

	req.onreadystatechange = function()
	{
		switch(req.readyState)
		{
			case 4:
				if(req.status==200)
				{
					if (req.responseText.length!=0)
					{
						document.getElementById('verlinker').innerHTML = req.responseText;
					}
					enableTooltips();
				}
				break;
			default:
				return false;
			break;
		}
	};
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	req.send(params);
}

//###############################################################################


var $utf8 = {  
      
    encode : function (string) {  
        string = string.replace(/\r\n/g,"\n");  
        string = string.replace(/\+/g,"-:#43:-");  
        var utftext = "";  
  
        for (var n=0, k=string.length; n < k; n++) {  
            var c = string.charCodeAt(n);  
  
            if (c < 128) {  
                utftext += String.fromCharCode(c);  
            }  
            else if((c > 127) && (c < 2048)) {  
                utftext += String.fromCharCode((c >> 6) | 192);  
                utftext += String.fromCharCode((c & 63) | 128);  
            }  
            else {  
                utftext += String.fromCharCode((c >> 12) | 224);  
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
                utftext += String.fromCharCode((c & 63) | 128);  
            }  
        }  
        return utftext;  
    },  
  
    decode : function (utftext) {  
        var string = "";  
        var i = 0;  
        var c = c1 = c2 = 0;  
  
        while ( i < utftext.length ) {  
            c = utftext.charCodeAt(i);  
            if (c < 128) {  
                string += String.fromCharCode(c);  
                i++;  
            }  
            else if((c > 191) && (c < 224)) {  
                c2 = utftext.charCodeAt(i+1);  
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
                i += 2;  
            }  
            else {  
                c2 = utftext.charCodeAt(i+1);  
                c3 = utftext.charCodeAt(i+2);  
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
                i += 3;  
            }  
  
        }  
        return string;  
    }  

}

function URLEncode(url) //Function to encode URL.
{
	var SAFECHARS = "0123456789" + // Numeric
	"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
	"abcdefghijklmnopqrstuvwxyz" +
	"-_.!~*'()"; // RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = url;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ )
	{
		var ch = plaintext.charAt(i);
		if (ch == " ")
		{
			encoded += "+"; // x-www-urlencoded, rather than %20
		}else if (SAFECHARS.indexOf(ch) != -1){
			encoded += ch;
		}else{
			var charCode = ch.charCodeAt(0);
			if (charCode > 255)
			{
				alert( "Unicode Character '"
				+ ch
				+ "' cannot be encoded using standard URL encoding.\n" +
				"(URL encoding only supports 8-bit characters.)\n" +
				"A space (+) will be substituted." );
				encoded += "+";
			}else{
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}
	return encoded;
};

function URLDecode(url) //function decode URL
{
	var HEXCHARS = "0123456789ABCDEFabcdef";
	var encoded = url;
	var plaintext = "";
	var i = 0;
	while (i < encoded.length)
	{
		var ch = encoded.charAt(i);
		if (ch == "+")
		{
			plaintext += " ";
			i++;
		}else if (ch == "%"){
			if (i < (encoded.length-2)
			&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1
			&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 )
			{
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			}else{
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		}else{
			plaintext += ch;
			i++;
		}
	} // while
	return plaintext;
};

function insert_tags(input, aTag, eTag)
{
	input.focus();
	if(typeof document.selection != 'undefined')
	{
		var range = document.selection.createRange();
		var insText = range.text;
		range.text = aTag + insText + eTag;
		range = document.selection.createRange();
		if (insText.length == 0)
		{
			range.move('character', -eTag.length);
		}else{
			range.moveStart('character', aTag.length + insText.length + eTag.length);
		}
		range.select();
	}else if(typeof input.selectionStart != 'undefined'){
		var start = input.selectionStart;
		var end = input.selectionEnd;
		var insText = input.value.substring(start, end);
		input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
		var pos;
		if (insText.length == 0){
			pos = start + aTag.length;
		}else{
			pos = start + aTag.length + insText.length + eTag.length;
		}
		input.selectionStart = pos;
		input.selectionEnd = pos;
	}else{
		var pos;
		var re = new RegExp('^[0-9]{0,3}$');
		while(!re.test(pos))
		{
			pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
		}
		if(pos > input.value.length)
		{
			pos = input.value.length;
		}
		var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
		input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
	}
}

function draginit()
{
	document.onmousemove = drag;
	document.onmouseup = dragstop;
}

function dragstart(element)
{
	dragobjekt = element;
	dragx = posx - dragobjekt.offsetLeft;
	dragy = posy - dragobjekt.offsetTop;
}

function dragstop()
{
	if (dragobjekt.id=='quickbarbox')
	{
		quickpos(dragobjekt.offsetLeft, dragobjekt.offsetTop);
	}
	if (dragobjekt.id=='my_ball')
	{
		user_image(dragobjekt.title, '0', dragobjekt.offsetLeft, dragobjekt.offsetTop);
	}
	dragobjekt=null;
}

function drag(ereignis)
{
	posx = document.all ? window.event.clientX : ereignis.pageX;
	posy = document.all ? window.event.clientY : ereignis.pageY;
	if(dragobjekt != null)
	{
		dragobjekt.style.left = (posx - dragx) + "px";
		dragobjekt.style.top = (posy - dragy) + "px";
	}
}

function DropDownMenu(select)
{
	var wert = select.options[select.options.selectedIndex].value;
	if (wert == "leer")
	{
		select.form.reset();
		return;
	}else{
		top.location.href = wert;
	}
}
