

red.prototype.window = {
	
	drag : true,

	resize : true,
		
	contentarea : false,
	
	head_color : '#ddc581',
	
	head_color_active : '#9c4418',
	
	win_color : '#e6d8ae',

	win_border_left : '#fff',
	
	win_border_right : '#808080',
	
	win_border_top : '#fff',
	
	win_border_bottom : '#808080',
	
	content_color : '#ffffff',
	
	content_border_left : '#808080',
	
	content_border_right : '#fff',
	
	content_border_top : '#808080',
	
	content_border_bottom : '#fff',
	
	minimize_button : true,
	
	minimized : false,
	
	minimized_size : 250,
	
	outerwin : null,
	
	close_button : false,
	
	dblclick : false,
	
	footer : false,
	
	footer_color : '#e6d8ae',
	
	footer_border_left : '#c6a646',
	
	footer_border_right : '#f2ecd7',
	
	footer_border_top : '#c6a646',
	
	footer_border_bottom : '#f2ecd7',

	change_btn_size : true,
			
	init : function(title,contentfn,x,y,b,h,minb,maxb,minh,maxh,cookiesave,id){
		// text markieren im Contentdiv für IE
		if(red.prototype.browser == 'IE'){document.body.style.height = '100%';}
		
		if(x == null){x = 0;}
		if(y == null){y = 0;}
		if(b == null){b = 250;}
		if(h == null){h = 250;}
		if(minb == null){minb = 250;}
		if(maxb == null){maxb = 640;}
		if(minh == null){minh = 70;}
		if(maxh == null){maxh = 480;}
		if(cookiesave == null){cookiesave = false;}
		if(id == null){id = 'redwin';}
				
		var foot_padding_right = 2;
		
		if(!red.prototype.window.contentarea){
			content_color = red.prototype.window.win_color;
			content_border_left = red.prototype.window.win_color;
			content_border_right = red.prototype.window.win_color;
			content_border_top = red.prototype.window.win_color;
			content_border_bottom = red.prototype.window.win_color;
		}
		else{
			content_color = red.prototype.window.content_color;
			content_border_left = red.prototype.window.content_border_left;
			content_border_right = red.prototype.window.content_border_right;
			content_border_top = red.prototype.window.content_border_top;
			content_border_bottom = red.prototype.window.content_border_bottom;
		}
				
		var outerwin = red.prototype.dom.create('div');
		
		outerwin.mini = red.prototype.window.minimized;
		outerwin.cookiesave = false;
		outerwin.id_ = id;
		outerwin.lastwh = new Array(b,h);
		
		if(cookiesave){
			outerwin.cookiesave = true;
			var cookieval = red.prototype.cookie.get(id);
			if(cookieval){
				var cookiearr = cookieval.split(';');
				x = cookiearr[0];
				y = cookiearr[1];
				b = cookiearr[2];
				h = cookiearr[3];
				
				outerwin.lastwh = new Array(b,h);
				//alert(b+','+h);
				
				outerwin.mini = cookiearr[4];
				//alert(outerwin.mini);
				
				if(outerwin.mini=='false'){
					outerwin.mini = false;
				}
				else{
					outerwin.mini = true;
				}
				
				red.prototype.window.minimized = outerwin.mini;
			}
		}
		
		outerwin.className = 'redwindow';
		red.prototype.css.set(outerwin,"position:absolute;left:"+x+"px;top:"+y+"px;width:"+b+"px;height:"+h+"px;"+
							"border-left:1px solid "+red.prototype.window.win_border_left+";"+
							"border-right:1px solid "+red.prototype.window.win_border_right+";"+
							"border-top:1px solid "+red.prototype.window.win_border_top+";"+
							"border-bottom:1px solid "+red.prototype.window.win_border_bottom+";"+
							"background-color:"+red.prototype.window.win_color+";");
		
		var div = red.prototype.dom.element('div');
		red.prototype.css.set(div,"background-color:"+red.prototype.window.head_color+";height:20px;position:relative;left:0px;top:0px;");
				
		
		if(red.prototype.window.footer){
			var resizer_size = 13;
			var footer_height = 35;
			var resizer_img = "pics/resizer_big.gif";
			var resizer_padding = 3;
		}
		else{
			var resizer_size = 8;
			var footer_height = 30;
			var resizer_img = "pics/resizer.gif";
			var resizer_padding = 2;
		}
		
		// contentdiv
		var contentdiv = red.prototype.dom.element('div');
		red.prototype.css.set(contentdiv,"background-color:"+content_color+";"+
								"border-left:1px solid "+content_border_left+";"+
								"border-right:1px solid "+content_border_right+";"+
								"border-top:1px solid "+content_border_top+";"+
								"border-bottom:1px solid "+content_border_bottom+";"+
								"margin:2px;padding:1px;overflow:auto;width:"+(b-8)+"px;height:"+(h-footer_height-resizer_size)+"px;");
				
		outerwin.contentdiv = contentdiv;
		red.prototype.window.fill(outerwin,contentfn);
				
		// drag
		if(red.prototype.window.drag){	
			red.prototype.drag.opacitychange = false;
			red.prototype.drag.is_resizer = false;
			red.prototype.drag.cursor = 'move';
			red.prototype.drag.active_color = red.prototype.window.head_color_active;
			red.prototype.drag.init(div,outerwin,0,null,0,null);
			
			outerwin.ondragstart = function(){
				//this.style.position = 'absolute';
			}
			
			outerwin.ondragend = function(){
				//this.style.position = 'relative';
				if(cookiesave){
					red.prototype.cookie.set(id,parseInt(outerwin.style.left)+';'+parseInt(outerwin.style.top)+';'+
											outerwin.lastwh[0]+';'+outerwin.lastwh[1]+';'+outerwin.mini);
				}
			}
		}	
		
		//resize
		if(red.prototype.window.resize){
			var foot_padding_right = 13;
			red.prototype.drag.is_resizer = true;
			red.prototype.drag.cursor = 'nw-resize';
			red.prototype.resize.image = resizer_img;
			red.prototype.resize.padding = resizer_padding;
			red.prototype.resize.resizer_size = resizer_size;
			var resizer = red.prototype.resize.init(outerwin,minb,maxb,minh,maxh);	
			outerwin.startwh = red.prototype.css.getsizexy(outerwin);
			outerwin.onresizestart = function(){
				this.startwh = red.prototype.css.getsizexy(outerwin);
				this.contentdiv.startwh = red.prototype.css.getsizexy(outerwin.contentdiv);
			}
			
			outerwin.onresize = function(){
				this.wh = [parseInt(outerwin.style.width),parseInt(outerwin.style.height)];
				var neux = outerwin.wh[0]-outerwin.startwh[0];
				var neuy = outerwin.wh[1]-outerwin.startwh[1];
				var altxy = outerwin.contentdiv.startwh;
				var neux = altxy[0]+neux;
				var neuy = altxy[1]+neuy;
				red.prototype.css.setsizexy(outerwin.contentdiv,[neux,neuy]);
			}
			
			if(red.prototype.window.change_btn_size){
				outerwin.onresizeend = function(){
					var endwh = red.prototype.css.getsizexy(outerwin);
					outerwin.minimized_size = endwh[0];
					outerwin.lastwh = new Array(parseInt(outerwin.style.width),parseInt(outerwin.style.height));
					if(cookiesave){
						red.prototype.cookie.set(id,parseInt(outerwin.style.left)+';'+parseInt(outerwin.style.top)+';'+
											parseInt(outerwin.style.width)+';'+parseInt(outerwin.style.height)+';'+outerwin.mini);
					}
				}
			}	
		}
				
		// buttons
		var minimize = '';
		if(red.prototype.window.minimize_button){	
			var minimize = red.prototype.dom.element('button');
			minimize.style.width = "16px";
			minimize.style.height = "16px";
			minimize.style.fontSize = "1pt";
			minimize.style.marginRight = "3px";
			minimize.style.marginTop = "2px";
			
			var img = "<img border=0 src='"+red.prototype.path+"pics/window_minimize.gif' style='padding-top:0px;margin:0px;'>";
			minimize.innerHTML = img;
			minimize.style.textAlign = 'center';
			minimize.contentdiv = contentdiv;
			minimize.outerwin = outerwin;
					
			if(red.prototype.window.resize){
				minimize.resizer = resizer;
			}
			minimize.onclick = red.prototype.window.minimize;
		}
				
		var close = '';
		if(red.prototype.window.close_button){	
			var close = red.prototype.dom.element('button');
			close.style.width = "16px";
			close.style.height = "16px";
			close.style.fontSize = "1pt";
			close.style.marginRight = "3px";
			close.style.marginLeft = "0px";
			close.style.marginTop = "2px";
			
			var img = "<img border=0 src='"+red.prototype.path+"pics/window_close.gif' style='padding-top:0px;margin:0px;'>";
			close.innerHTML = img;
			close.style.textAlign = 'center';
			close.outerwin = outerwin;
			close.onclick = red.prototype.window.close;
		}
		/////////////////////////////////////////////////////////////////////////////
		
		// header
		
		var titlediv = red.prototype.dom.element('div');
		titlediv.style.marginLeft = "3px";
		titlediv.innerHTML = title;
		titlediv.style.overflow = 'hidden';
		titlediv.style.height = '18px';
				
		var headtable = red.prototype.table.create([[{data:titlediv,align:'left',valign:'top'},{data:minimize,align:'right',valign:'top',width:'1px'},{data:close,align:'right',valign:'top',width:'1px'}]]);
		headtable.setAttribute("width", "100%");
		headtable.setAttribute("cellPadding", "0");
		headtable.setAttribute("cellSpacing", "0");
		headtable.style.padding = '0px';
		headtable.style.margin = '0px';
		
		red.prototype.dom.insert(headtable,div);		
		red.prototype.dom.insert(div,outerwin);
		red.prototype.dom.insert(contentdiv,outerwin);
		
		// footer
		if(red.prototype.window.footer){
			var footerdiv = red.prototype.dom.element('div');
			red.prototype.css.set(footerdiv,"background-color:"+red.prototype.window.footer_color+";"+
									"border-left:1px solid "+red.prototype.window.footer_border_left+";"+
									"border-right:1px solid "+red.prototype.window.footer_border_right+";"+
									"border-top:1px solid "+red.prototype.window.footer_border_top+";"+
									"border-bottom:1px solid "+red.prototype.window.footer_border_bottom+";"+
									"margin:2px;padding-left:2px;padding-top:0px;padding-right:"+foot_padding_right+"px;"
									);
			
			footerdiv.style.overflow = 'hidden';
			footerdiv.style.height = '16px';
			footerdiv.style.fontSize = '8pt';
			footerdiv.setAttribute("width", "100%");
						
			red.prototype.dom.insert(footerdiv,outerwin);
			outerwin.footerdiv = footerdiv;
		}
		
		outerwin.minimized_size = red.prototype.window.minimized_size;
				
		red.prototype.window.outerwin = outerwin;
				
		// doppelklick auf dragger (vorsicht -> bugs) 
		if(red.prototype.window.dblclick){	
			div.minimizer = minimize;
			if(!red.prototype.window.minimized){
				div.ondblclick = red.prototype.window.minimize;
			}
			else{
				div.ondblclick = red.prototype.window.maximize;
			}
		}
		
		//klein machen, falls minimized
		if(red.prototype.window.minimized){
			red.prototype.window.minimize(minimize);
		}
		
		return outerwin;
	
	},
	
	minimize : function(elem){
		red.prototype.window.minimized = true;
				
		if(elem == null){
			if(this.minimizer){
				elem = this.minimizer;
				this.ondblclick = red.prototype.window.maximize;
			}
			else{
				elem = this;
			}
		}
		else{
			if(elem.type == 'click'){
				elem = elem.currentTarget;
			}
			else if(elem.type == 'dblclick'){
				elem.currentTarget.ondblclick = red.prototype.window.maximize;
				elem = elem.currentTarget.minimizer;
			}
			else{
				elem = elem;
			}
		}
		
		elem.outerwin.mini = true;
		
		var img = "<img border=0 src='"+red.prototype.path+"pics/window_open.gif' style='padding-top:0px;margin:0px;'>";
		elem.innerHTML = img;
				
		elem.contentdiv.style.display = 'none';
		elem.outerwin.lastwh = [parseInt(elem.outerwin.style.width),parseInt(elem.outerwin.style.height)];
		elem.outerwin.style.width = elem.outerwin.minimized_size+'px';
		elem.outerwin.style.height = '20px';
				
		elem.outerwin.onresizestart = function(){};
		elem.outerwin.onresize = function(){};
		
		if(elem.resizer){
			elem.resizer.style.display = 'none';
		}
		
		if(elem.outerwin.footerdiv){
			elem.outerwin.footerdiv.style.display = 'none';
		}
		
		if(elem.outerwin.cookiesave){
			red.prototype.cookie.set(elem.outerwin.id_,parseInt(elem.outerwin.style.left)+';'+parseInt(elem.outerwin.style.top)+';'+
									elem.outerwin.lastwh[0]+';'+elem.outerwin.lastwh[1]+';true');
		}
		
		elem.onclick = red.prototype.window.maximize;
	},
	
	maximize : function(elem){
		red.prototype.window.minimized = false;
				
		if(elem == null){
			if(this.minimizer){
				elem = this.minimizer;
				this.ondblclick = red.prototype.window.minimize;
			}
			else{
				elem = this;
			}
		}
		else{
			if(elem.type == 'click'){
				elem = elem.currentTarget;
			}
			else if(elem.type == 'dblclick'){
				elem.currentTarget.ondblclick = red.prototype.window.minimize;
				elem = elem.currentTarget.minimizer;
			}
		}
		
		elem.outerwin.mini = false;
		
		var img = "<img border=0 src='"+red.prototype.path+"pics/window_minimize.gif' style='padding-top:0px;margin:0px;'>";
		elem.innerHTML = img;
				
		elem.contentdiv.style.display = '';
		var wh = elem.outerwin.lastwh;
		elem.outerwin.style.width 	= wh[0]+'px';
		elem.outerwin.style.height 	= wh[1]+'px';
							
		if(elem.resizer){
			elem.resizer.style.display = '';
		}
		
		if(elem.outerwin.footerdiv){
			elem.outerwin.footerdiv.style.display = '';
		}
		
		elem.onclick = red.prototype.window.minimize;
		
		if(elem.outerwin.cookiesave){
			red.prototype.cookie.set(elem.outerwin.id_,parseInt(elem.outerwin.style.left)+';'+parseInt(elem.outerwin.style.top)+';'+
									parseInt(elem.outerwin.style.width)+';'+parseInt(elem.outerwin.style.height)+';false');
		}
		
		//resize
		if(red.prototype.window.resize && !red.prototype.window.minimized){
			var outerwin = elem.outerwin;
			outerwin.startwh = red.prototype.css.getsizexy(outerwin.contentdiv);
						
			outerwin.onresizestart = function(){
				this.startwh = red.prototype.css.getsizexy(outerwin);
				this.contentdiv.startwh = red.prototype.css.getsizexy(outerwin.contentdiv);
			}
			
			outerwin.onresize = function(){
				outerwin.wh = [parseInt(outerwin.style.width),parseInt(outerwin.style.height)];
				var neux = outerwin.wh[0]-outerwin.startwh[0];
				var neuy = outerwin.wh[1]-outerwin.startwh[1];
				var altxy = this.contentdiv.startwh;
				var neux = altxy[0]+neux;
				var neuy = altxy[1]+neuy;
				red.prototype.css.setsizexy(outerwin.contentdiv,[neux,neuy]);
			}
			
			if(red.prototype.window.change_btn_size){
				outerwin.onresizeend = function(){
					var endwh = red.prototype.css.getsizexy(outerwin);
					outerwin.minimized_size = endwh[0];
					outerwin.lastwh = new Array(parseInt(outerwin.style.width),parseInt(outerwin.style.height));
					if(outerwin.cookiesave){
						red.prototype.cookie.set(outerwin.id_,parseInt(outerwin.style.left)+';'+parseInt(outerwin.style.top)+';'+
											parseInt(outerwin.style.width)+';'+parseInt(outerwin.style.height)+';'+outerwin.mini);
					}
				}
			}
		}
	},
	
	fill : function(outerwin,contentfn,overwrite){
		if(overwrite == null){overwrite = true;}
		contentdiv = outerwin.contentdiv;
		
		//leeren
		if(overwrite){		
			red.prototype.dom.clear(contentdiv);
			contentdiv.innerHTML = '';
		}
		
		if(contentfn == null){var content = '';}
		else{
			content = red.prototype.format(contentfn);
		}
						
		if(typeof content === 'string'){
			contentdiv.innerHTML += content;
		}
		else if(typeof content === 'object'){
			red.prototype.dom.insert(content,contentdiv);
		}
			
	},
	
	fill_footer : function(outerwin,footerfn,overwrite){
		if(overwrite == null){overwrite = true;}
		if(!outerwin.footerdiv){
			return false;
		}
		
		footerdiv = outerwin.footerdiv;
		
		//leeren
		if(overwrite){	
			red.prototype.dom.clear(footerdiv);
			footerdiv.innerHTML = '';
		}
		
		if(footerfn == null){var footer = '';}
		else{
			footer = red.prototype.format(footerfn);		
		}
						
		if(typeof footer === 'string'){
			footerdiv.innerHTML += footer;
		}
		else if(typeof footer === 'object'){
			red.prototype.dom.insert(footer,footerdiv);
		}
			
	},
	
	close : function(elem){
		if(elem == null){
			elem = this;
		}
		else{
			if(elem.type == 'click'){
				elem = elem.currentTarget;
			}
		}
		red.prototype.dom.remove(elem.outerwin);
	}


};