/*************** doit24 dhtml-window main lib *********************
* version: 1.4.5
* date: 2009-10-04
*
* last changes: 
*
* v1.4.5
* ------
* - fixed IE xml_http bug (IE not supporting "xmlHttp.overrideMimeType('text/html; charset=utf8');")
*
* v1.4.4
* ------
* - changed box-mouseover effect
* - updated cb_getData()-function to deal with multiple <script>'s
* - tried to solve a charset problem with utf8-encoding, this bug possibly still exists
*
* v1.4.3
* ------
* - fixed IE Scrollbar-Click Bug by changing topelement to HTML for all Browsers
*
* v1.4.2
* ------
* - Safari Support (title-bar design-issues)
* - valid html prevented box-dragging *fixed*
* - design-fixes
*
* v1.4.1
* ------
* - AJAX doesn´t work with other (sub-)domains, so iframes 
*   are used in that case
* - IE6 select z-index bug *fixed*
* - shadow displayed twice *fixed*
* - gecko/presto fade in/out *working*
* - loads of other shit and browser-bug-workarounds
*
* (c) 2005-2009 Alexander Riedel / www.salesystems.com
*
* the following rendering engines are supported:
*  - Trident (IE/Win)
*  - Gecko 1.8+ (Mozilla, Firefox)
*  - Presto (Opera 7+)
*  - Webkit (Safari Mac/Win)
*
* known bugs:
* - safari title-bar looks messed up
* - gecko/presto fade-in/out can be extremely slow if current 
*   cpu-usage is high (e.g. badly written flash running on 
*   the same page)
*******************************************************************/


/*** uncomment for local testing! ***
var js_domain="http://www.doit24.de/";
var isNS4 = (document.layers);
var isIE = (document.all);
var isIE7 = (isIE && navigator.userAgent.indexOf("MSIE 7")>-1);
var isOP = (document.all && navigator.userAgent.toUpperCase().indexOf("OPERA")>-1);
var isNS_MZ = (document.getElementById && !document.all);
if (isOP) isIE = false;*/


var cb_number = "";				//### the caption is used as id/name now 
var cb_width = 0;
var cb_height = 0;
var cb_posTop = 10;
var cb_posLeft = 10;
var cb_src = "";
var cb_caption = "";
var cb_extraIdOnMin = "";
var cb_extraIdOnMax = "";
var cb_extraIdOnClose = "";
var cb_unmovable = false;
var cb_unclosable = false;
var cb_scrollbars = "auto";
var cb_zIndex = 100;

var cb_posX = 0;
var cb_posY = 0;
var cb_boxId = "";

var ob;
var mouseOverBox = false;
var curr_ob_id = "";

var ev_obj, posX, posY;

var cb_HTML = "";


//### preload content-box mouseover-gfx ###
cb_preload_filenames = new Array();
cb_preload_img_objects = new Array();
cb_preload_filenames[0] = js_domain+"images/boxes/maximize_2.gif";
cb_preload_filenames[1] = js_domain+"images/boxes/minimize_2.gif";
cb_preload_filenames[2] = js_domain+"images/boxes/close_2.gif";
cb_preload_filenames[3] = js_domain+"images/boxes/maximize_1.gif";
for (i=0; i<cb_preload_filenames.length; i++) {
	cb_preload_img_objects[i] = new Image();
	cb_preload_img_objects[i].src = cb_preload_filenames[i];
}
//### preloading end ###


//### fülle cb_HTML mit css-daten
//# - opera hat probleme mit "shadowed arial"
//# - "position: absolute" MUSS innerhalb des style-attributes sein, nicht in der css-class (??)
//# - IE will die style-angaben unbedingt erst nach dem html-inhalt haben
var cb_CSS_Tag = 
	"p.filter_div {font-size: 12pt; " + (isOP? "font-family: verdana;": "font-family: arial;") + " font-weight: bold; color: #EAEAEA; margin: 0 0 0 0;}\r\n" +
	
	".cb_caption1 {background: url('"+js_domain+"images/boxes/box_capt_bg/c_box_head.gif') repeat-x scroll; font-weight: bold; color: #EAEAEA; font-size: 12pt;}\r\n" + 
	
	".filter_div {height: 1em; filter: DropShadow(color=#454545, offx=2, offy=1); white-space: nowrap; position: relative; " + (!isIE? "top: "+(isOP? "-1": "-7")+"px; line-height: "+(isOP? "1.75": "1.9")+"em;": "") + "}\r\n" +
	".filter_div:before {display: block; margin: 0px 0px -1.9em 0.20em; padding: 0; color: #454545;}\r\n" +
	"html*.filter_div {[color:red; text-shadow: black 5px 5px 5px;] color:auto;}\r\n" + 
	".dummyend[id]{clear: both;}\r\n" + 
	"html*.filter_div:before {[color:red; display: none;]color:auto;}\r\n" +
	".dummyend[id]{clear: both;}\r\n" + 
	
	".filter_div_off {width: 100%;}\r\n" +
"";



//############################ AJAX-Component ############################### 
//## this is a "loader" for the xmlhttp Component for IE6 and older         # 
 
/*@cc_on @if (@_win32 && @_jscript_version >= 5) if (!window.XMLHttpRequest) 
function XMLHttpRequest() { return new ActiveXObject('Microsoft.XMLHTTP') } 
@end @*/ 
  
function cb_getData(the_url, the_div) {
 	 div_obj = document.getElementById(the_div);
	 div_obj.innerHTML = '<b>es wird geladen...</b>';
     var xmlHttp = new XMLHttpRequest(); 
	 
	 try {
		xmlHttp.open('GET', the_url, true); 
		//xmlHttp.overrideMimeType('text/html; charset=utf8');
		xmlHttp.setRequestHeader('Content-Type', 'text/html; charset=utf8');
	    
		xmlHttp.onreadystatechange = function () { 
			if (xmlHttp.readyState==4) {
				rt = xmlHttp.responseText;
				
				div_obj.innerHTML = rt; 
				
				//the_script = rt.substring((rt.indexOf("<script>")+8), rt.indexOf("</script>"));
				//try {eval(the_script);} catch(e) {}
				
				i = 0, bis = 0;
				while (rt.indexOf("<script", bis)>-1) {
					//### quit after max. 100 script-blocks to prevent endless-loop ###
					if (i>=100) break;
					
					von = rt.indexOf(">", rt.indexOf("<script", bis))+1;
					bis = rt.indexOf("</script>", von);
					the_script = rt.substring(von, bis);
					
					//alert(the_script);
					try {eval(the_script);} catch(e) {}
					
				i++;
				}
			
			}
     	}; 
		
     	xmlHttp.send(null); 
	} catch (e) {
		//div_obj.innerHTML = "FEHLER: diese Seite kann nicht geöffnet werden!<br><br>Technischer Grund: " + e;
		alert("FEHLER: diese Seite kann nicht geöffnet werden!\r\nTechnischer Grund: " + e);
		div_obj.innerHTML = '<iframe src=\"'+cb_src+'\" id="iframe_old_'+cb_number+'" width=\"'+cb_width+'\" height=\"'+cb_height+'\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"'+cb_scrollbars+'\" frameborder=\"0\"></iframe>';
	}
}
//########################################################################### 


//########################## helper - functions #############################
function replace(s, s1, s2) {
	if(s==null || s1==null || s2==null) return null;
	s3 = s;
	for(i=s3.indexOf(s1); i!=-1; i=s3.indexOf(s1)) {
	    s5 = s3.substring(0, i);
	    s7 = s3.substring(i + s1.length);
	    s3 = s5 + s2 + s7;
	}
	return s3;
}


function setOpacity(obj, opacity) {
	opacity = (opacity==100)? 99.999: opacity;
	obj.style.filter = "alpha(opacity:"+opacity+")";
	obj.style.KHTMLOpacity = opacity/100;
	obj.style.MozOpacity = opacity/100;
	obj.style.opacity = opacity/100;
}


function DispNone(id) {
	if (document.getElementById(id)!=null) document.getElementById(id).style.display = "none";
}

function DispInl(id) {
	if (document.getElementById(id)!=null) document.getElementById(id).style.display = "inline";
}

function VisiShow(id) {
	if (document.getElementById(id)!=null) document.getElementById(id).style.visibility = "visible";
}

function VisiHide(id) {
	if (document.getElementById(id)!=null) document.getElementById(id).style.visibility = "hidden";
}
//###########################################################################



function set_curr_ob_id(the_id) {
	curr_ob_id=the_id;
	if (the_id!="") {
		cb_zIndex++;
		document.getElementById("cb_div_"+the_id).style.zIndex = cb_zIndex;
	}
}

function isBoxClicked(ibc) {mouseOverBox=(ibc);}


function MD(e) {
	ob = document.getElementById("cb_div_" + curr_ob_id);
	var firedobj = (isNS_MZ) ? e.target : event.srcElement;
	//var topelement = (isNS_MZ || isOP) ? "HTML" : "BODY";
	var topelement = "HTML";
	
	//alert("top: " + topelement + "/fired: " + firedobj.tagName);
	while (firedobj.tagName != topelement && firedobj.id != "mid_capt_td_"+curr_ob_id) {
		firedobj = (isNS_MZ) ? firedobj.parentNode : firedobj.parentElement;
	}
	
	if (firedobj.id=="mid_capt_td_"+curr_ob_id) {
		offsetx = (isIE||isOP) ? event.clientX : e.clientX;
		offsety = (isIE||isOP) ? event.clientY : e.clientY;
		tempx = parseInt(ob.style.left);
		tempy = parseInt(ob.style.top);
		mouseOverBox = true;
		
		document.onmousemove = MM;
	}
}


function MM(e) {
	if (ob && mouseOverBox) {
		ev_obj = (isIE||isOP)? event: e;
		
		posX = tempx+ev_obj.clientX-offsetx;
		posY = tempy+ev_obj.clientY-offsety;
				
		if (posX<0) posX=0;
		if (posY<0) posY=0;
		
		ob.style.left = posX+"px";
		ob.style.top = posY+"px";
		//window.status = (posX + "_" + posY + " - " + ob.style.left + "_" + ob.style.top);
		
		return(false);
	}
}


function MU() {mouseOverBox = false; ob = null;}

document.onmousedown = MD;
document.onmouseup = MU;


function BoxOver(id) {
	setOpacity(document.getElementById(id), 100);  
	//document.getElementById(id).style.border = "1px solid red";
}
function BoxOut(id) {
	setOpacity(document.getElementById(id), 80); 
	//document.getElementById(id).style.border = "1px solid black";
}

function BoxFocus(id) {cb_zIndex++;}


function MixBox(id, picId, min_xtra_func, max_xtra_func) {
	//p = document.getElementById(picId).src;
	s = document.getElementById(id).style;
	//window.status = "id: " + id + "; picId: " + picId + "; s: " + s.display;
	
	if(s.display == "none") {
		s.display = "inline";
		eval(max_xtra_func);
	} else {
		s.display = "none";
		eval(min_xtra_func);
	}
	MinimizeOver(id, picId);
}

function MinimizeOver(boxId, picId) {
	document.getElementById(picId).src = (document.getElementById(boxId).style.display=="none")? cb_preload_filenames[0]: cb_preload_filenames[1];
}

function MinimizeOut(boxId, picId) {
	s = document.getElementById(boxId).style;
	p = document.getElementById(picId);
	p.src = (s.display == "none") ? cb_preload_filenames[3] : js_domain+'images/boxes/minimize_1.gif';
}

function CloseOver(boxId) {document.getElementById(boxId).src = cb_preload_filenames[2];}
function CloseOut(boxId)  {document.getElementById(boxId).src = js_domain+'images/boxes/close_1.gif';}

function CloseBox(cb_no) {
	//### the next line is a workaround for an IE-Filter-Bug ###
	if (isIE) document.getElementById("cb_capt_div" + cb_no).className = "filter_div_off";
	
	BlendOut(cb_no, 100);
}


function BlendOut(id, opacity) {
	div_ob = document.getElementById("cb_div_" + id);
	tbl_ob = document.getElementById("out_tab" + id);
	
	if (div_ob!=null) {
		if (isIE) {
			tbl_ob.style.filter = "blendTrans(Duration=0.7)";
			tbl_ob.filters[0].Apply();
			tbl_ob.style.visibility = "hidden";
			tbl_ob.filters[0].Play();
			
			div_ob.style.visibility = "hidden";
		} else {
			if (opacity>0) {
				opacity=opacity-20;
				setOpacity(tbl_ob, opacity);
				window.setTimeout("BlendOut('"+id+"',"+opacity+")", 40);
			} else {
				//VisiHide(id);
				tbl_ob.style.visibility = "hidden";
				div_ob.style.visibility = "hidden";
			}
		}	
	}
}


function BlendIn(id, opacity) {
	div_ob = document.getElementById("cb_div_"+id);
	tbl_ob = document.getElementById("out_tab"+id);
	
	//if (document.getElementById(id)!=null && document.getElementById(id).style.visibility!="visible") {
	if (div_ob!=null) {
		if (isIE) {
			
			//### IE shadow-filter must be disabled while fading in ###
			document.getElementById("cb_capt_div"+id).className = "filter_div_off";
			
			tbl_ob.style.filter = "blendTrans(Duration=0.7)";
			tbl_ob.filters[0].Apply();
			tbl_ob.style.visibility = "visible";
			tbl_ob.filters[0].Play();
			
			setTimeout("div_ob.style.visibility = 'visible';", 700);
			//setTimeout("tbl_ob.style.filter = '';", 800);
			setTimeout("document.getElementById('cb_capt_div"+id+"').className = 'filter_div';", 900);
		} else {
			if (opacity==0) {
				tbl_ob.style.visibility = "visible";
				div_ob.style.visibility = "visible";
			}
			
			if (opacity<=100) {
				setOpacity(tbl_ob, opacity);
				opacity=opacity+20;
				window.setTimeout("BlendIn('"+id+"',"+opacity+")", 40);
			}
		}
	}
}


function fillHTML() {
	
	scrollY = 0;
	try {scrollY = (isIE)? document.body.scrollTop: window.pageYOffset;}
	catch(e) {scrollY = 0;}
	
	cb_posTop += scrollY;
	//var s_body = document.getElementsByTagName("body")[0];
	//if (s_body) {
		cb_HTML += 
		//'<div id="xb_div_'+cb_number+'" style="visibility:hidden; position:absolute; overflow:hidden; top: 10px; left: 10px;"></div>\r\n' +
		'<div id="cb_div_'+cb_number+'" style="visibility:hidden; position:absolute; overflow:hidden; top:'+cb_posTop+'px; left:'+cb_posLeft+'px; width:'+(cb_width+2)+'px; z-index:'+cb_zIndex+';"><div>\r\n' +
		'<table border="0" cellpadding="0" cellspacing="0" width="'+(cb_width>0?cb_width:'')+'" id="out_tab'+cb_number+'" style="border:1px solid black;" onMouseOver="BoxOver(this.id);" onMouseOut="BoxOut(this.id);">\r\n' +
		' <tr>\r\n' +
		'  <td valign="top" style="height:26px;">\r\n' +
		
		'	<table border="0" cellpadding="0" cellspacing="0" style="width:100%; height:26px;">\r\n' +
		'	 <tr>\r\n' +
		'	  <td class="cb_caption1" style="width:26px; height:26px; vertical-align:top;"><img ' +
		'			src="'+js_domain+'images/boxes/minimize_1.gif" ' +
		'			onMouseOver="MinimizeOver(\'mid_tab_'+cb_number+'\', this.id);" ' +
		'			onMouseOut="MinimizeOut(\'mid_tab_'+cb_number+'\', this.id);" ' +
		'			onClick="MixBox(\'mid_tab_'+cb_number+'\', this.id, \''+cb_extraIdOnMin+'\', \''+cb_extraIdOnMax+'\')" ' +
		'			id="min_max_box'+cb_number+'" title="Fenster minimieren"></td>\r\n' +
		'	  \r\n' +
		'	  <td class="cb_caption1" ' +
		'		style="width:'+(cb_width-52)+'px; height:26px; text-align:center; cursor:move;" ' +
		'		id="mid_capt_td_'+cb_number+'" ' +
		'		'+(!cb_unmovable?'onMouseDown="set_curr_ob_id(\''+cb_number+'\');" onMouseUp="set_curr_ob_id(\'\');"':'') + '' +
		'		onDblClick="MixBox(\'mid_tab_'+cb_number+'\', this.id, \''+cb_extraIdOnMin+'\', \''+cb_extraIdOnMax+'\')">\r\n' + 
		'			<p id="cb_capt_div'+cb_number+'" class="filter_div">' + cb_caption + '</p>\r\n' +
		'	  </td>\r\n' +
		'	  <td class="cb_caption1" style="width:26px; height:26px; vertical-align:top; text-align:right;">' +
					(!cb_unclosable? '<img src="'+js_domain+'images/boxes/close_1.gif" ' +
		'			onClick="CloseBox(\''+cb_number+'\'); '+(cb_extraIdOnClose!=''?cb_extraIdOnClose+';':'')+'" ' +
		'			onMouseOver="CloseOver(this.id);" onMouseOut="CloseOut(this.id);" id="close_box'+cb_number+'" ' +
		'			title="Fenster schlie&umls;en">': '&nbsp;') + '</td>\r\n' +
		'	 </tr>\r\n' +
		'	</table>\r\n' +
		
		'  </td>\r\n' +
		' </tr>\r\n' +
		' <tr>\r\n' +
		'  <td valign="top">\r\n' +
		
		'	<table border="0" cellpadding="0" cellspacing="0" width="100%" id="mid_tab_'+cb_number+'">\r\n' +
		'	 <tr>\r\n' +
		'	  <td style="height:'+cb_height+'px; vertical-align: top;">\r\n' +
		'		<div id="iframe_'+cb_number+'" style=\"background-color:white; overflow:auto; margin:0 0 0 0; width:'+cb_width+'px; height:'+cb_height+'px;\"></div>\r\n' +
		'	  </td>\r\n' +
		'	 </tr>\r\n' +
		'	</table>\r\n' +
		
		'  </td>\r\n' +
		' </tr>\r\n' +
		'</table>\r\n' +
		'</div><!--[if lte IE 6.5]><iframe style="display:none; display:block; position:absolute; top:0; left:0; z-index:-1; filter:mask(); width:3000px; height:3000px;"></iframe><![endif]--></div>\r\n' +
		
		//'<style>#cb_capt_div'+cb_number+':before {content: \''+cb_caption+'\';}</style>\r\n' +
		'';
		
		cb_HTML += '<style>\r\n' + 
			cb_CSS_Tag + 
			'#cb_capt_div'+cb_number+':before {content: \''+cb_caption+'\';}' +
		'</style>\r\n';
		
		//alert(cb_HTML);
		
	//} else {
	//	setTimeout("fillHTML();", 1000);
	//}

}



function openWin(src, wdh, hgh, capt, scrbr) {
	cb_width = wdh;
	cb_height = hgh;
	cb_caption = capt;
	cb_src = (src.indexOf("http://")==-1)? js_domain+src: src;
	cb_scrollbars = scrbr;
	
	//### cb_number is now the box-caption, since it should be unique on a page ###
	//cb_number = cb_caption.replace(/.+\s/, "_").replace(/(/, "").replace(/)/, "").replace(/-/, "_").replace(/./, "_");
	cb_number = replace(replace(replace(replace(replace(cb_caption, " ", "_") , "(", "") , ")", ""), "-", "_"), ".", "_");
	
	if (document.getElementById("out_tab"+cb_number)==null) {
		fillHTML();
		
		//### doesn´t work on pages with forms (form-defaults - bug) ###
		//document.getElementsByTagName("body")[0].innerHTML += cb_HTML;
		
		if (document.getElementById("afterContent")==null) {
			document.write(cb_HTML);
		} else {
			document.getElementById("afterContent").innerHTML += cb_HTML;
			//alert(cb_HTML);
			//alert(document.getElementById("afterContent").innerHTML);
		}

		
		cb_getData(cb_src, "iframe_"+cb_number);
		
		
		cb_HTML = "";
		
		cb_caption = "";
		cb_src = "";
		cb_width = 0;
		cb_height = 0;
		cb_posTop += 10 - scrollY;
		cb_posLeft += 10;
		cb_extraIdOnMin = "";
		cb_extraIdOnMax = "";
		cb_extraIdOnClose = "";
		cb_unmovable = false;
		cb_unclosable = false;
		cb_scrollbars = "auto";
		cb_zIndex++;
	}
	
	BlendIn(cb_number, 0);
	
	cb_number = "";
}

