
var popupCacheHash = new Array();
var popupCacheContent = new Array();
var popupDelayHandler = -1;
var newMailToken = "<!-- Neue Post (";

function cachePut(hash, content) {
	for (i=0; i<popupCacheHash.length; i++) {
		if (popupCacheHash[i]==hash) {
			popupCacheContent[i] = content;
			return true;
		}
	}
	popupCacheHash.push(hash);
	popupCacheContent.push(content);
}

function cacheGet(hash) {
	for (i=0; i<popupCacheHash.length; i++) {
		if (popupCacheHash[i]==hash) {
			return popupCacheContent[i];
		}
	}
	return false;
}
 
function loadFragmentInToElement(fragment_url, element_id) {
	return loadFragmentInToElement(fragment_url, element_id, false);
}
 
function loadFragmentInToElement(fragment_url, element_id, useCache, retry) {
	
	var findretry = 0;
	var temp = window;
	
	while ((!element) && (findretry<4)) {
		var element = temp.document.getElementById(element_id);
		temp=temp.opener;
		findretry++;
	}
	if (!element) {
		alert(element_id+" nicht gefunden!");
		return false; 
	}

	if (retry) {
		retry++;
	} else {
		retry=1;
	}
	
	if (useCache) {
		if (temp=cacheGet(fragment_url)) {
			element.innerHTML = temp;
			return true;
		}
	}
	
		
		
	var xmlhttp;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	  try {
	  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")
	 } catch (e) {
	  try {
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
	  } catch (E) {
	   xmlhttp=false
	  }
	 }
	@else
	 xmlhttp=false
	@end @*/
	
	if (!xmlhttp) {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {
			xmlhttp=false;
		}
	}
	 
	
	if (!xmlhttp) {
		//alert("XMLHTTP nicht initialisiert!");
		return false;
	}
	
	try {
		xmlhttp.open("GET", fragment_url);
		xmlhttp.onreadystatechange = function() {
			try {
				if (xmlhttp && xmlhttp.readyState && xmlhttp.readyState == 4) {
					if (xmlhttp.status && xmlhttp.status == 200) {
						temp = window;
						i=0;
						while (!temp.cachePut) {
							i++;
							if (i>10) {
								break;
							}
							if (temp.opener && !temp.opener.closed) {
								temp = temp.opener;
							} else {
								break;
							}
						}
						if (temp.cachePut) {
							temp.cachePut(fragment_url, xmlhttp.responseText);
						}
	
						element.innerHTML = xmlhttp.responseText;
						
						var script = xmlhttp.responseText.match(/<script[^>]*><!--[ \t\n\r]*(([^-].*[\n\r]*)*)--><\/script>/i);
						if (script) {
							//try {
								eval(script[1]);
							//}
							//catch (e) {
							//}
						}
					} else {
						// dann hats nicht geklappt!? Nochmal!
						if (retry<=3) {
							loadFragmentInToElement(fragment_url, element_id, useCache, retry);
						} else {
							element.innerHTML = "Fehler beim Laden! (1)";
						}
					}
				}
			} catch(e) {
				if (retry<=3) {
					loadFragmentInToElement(fragment_url, element_id, useCache, retry);
				} else {
					element.innerHTML = "Fehler beim Laden! (2)";
				}
			}
		}
		xmlhttp.send(null);
	} catch(e) {
		if (retry<=3) {
			loadFragmentInToElement(fragment_url, element_id, useCache, retry);
		} else {
			element.innerHTML = "Fehler beim Laden! (2)";
		}
	}
}

function loadFragmentDelayed(fragment_url, element_id) {
	stopDelayHandler();
	if (temp=cacheGet(fragment_url)) { // falls schon gecached, direkt anzeigen
		var element = document.getElementById(element_id);
		element.innerHTML = temp;
	} else {
		// ansonsten 500ms timeout vorm Laden
		popupDelayHandler = window.setTimeout("loadFragmentInToElement('"+fragment_url+"','"+element_id+"', true); popupDelayHandler=-1;", 500);
	}
}

function stopDelayHandler() {
	if (popupDelayHandler != -1) {
		window.clearTimeout(popupDelayHandler);
		popupDelayHandler = -1;
	}
}