

	function tableHighlighter () {
		Ext.each(Ext.query('tr[class="base"]'),function(item,index,all) {
			Ext.get(item).addClassOnOver("hover");
		});		
	};

	function ImageLoader(url,callback) {
		var fn = callback;
		var t = Ext.DomHelper.append(Ext.getBody(),{
			tag:"img",
			src:url
		},true).setVisibilityMode(Ext.Element.DISPLAY).hide();

		
		var checkload = function() {
			return t.dom.complete;
		};
		
		var load = function() {
			if (checkload()) {
				fn.call();
				t.remove();
			}
			else
				load.defer(100);
		};
		
		load();
	};


	function Reseter() {
		Ext.get(Ext.query('input[type="reset"]')[0]).on("click",function() {
			Ext.each(Ext.query('input[type="text"]'),function(item) {
			//	console.log(item.value);
				
				item.setAttribute("value","");
			});
			Ext.each(Ext.query('option'),function(item) {
				item.removeAttribute("selected");
			});
			Ext.each(Ext.query('input[type="checkbox"]'),function(item) {
				item.removeAttribute("checked");
			});
		});
	};

	
	var init = function() {		
		var map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.enableScrollWheelZoom();
		
		var addAll = function (ad) {
			//alert(ad[0].geo.x);
			map.setCenter(new GLatLng(ad[0].geo.y,ad[0].geo.x));
			map.setZoom(15);
			map.addOverlay(new GMarker(new GLatLng(ad[0].geo.y,ad[0].geo.x)));
			eventmessager.call("printtrigger");
		};
		
		var trans = new geoAdressManager();
		ad = trans.init(ad);
		var mycache = new geoCodeCache();
		mycache.init(ad,function(ad) {
			addAll(ad);
		},this);
		
	};


	function geoAdressManager () {
		var ret = [];
		var arrIndexOf = function (arr,val) {
			for (var i=0;i<arr.length;i++)
				if (arr[i].adress==val)
					return i;
			return false;
		};
			
		var add2List = function(item) {
			if (!arrIndexOf(ret,item.adress))
				ret.push({adress:item.adress,displayadress:item.displayadress,data:[{id:item.id,text:item.text}]});
			else
				ret[arrIndexOf(ret,item.adress)].data.push({id:item.id,text:item.text});
		};
		return {
			init:function(list) {
				list.remove(null);
				Ext.each(list,add2List);
				return ret;	
			},
			getAdresses:function() {
				return ret;
			}
		}	
		
	};

	function mapStateSaver () {
		var cp = new Ext.state.CookieProvider({
			expires: new Date(new Date().getTime()+(1000*60*60*24*30)) //30 day
		});
		var m = null;
		var mid = "map"+ident;
		var setting = null;
		var save = function(m) {
			var data = {zoom:m.getZoom(),geo:m.getCenter()};	
			cp.set(mid,Ext.util.JSON.encode(data));
		};
		
		var load = function() {
			setting = cp.get(mid,null);
			if (setting!=null) {
				setting = Ext.util.JSON.decode(setting);
				
				m.setZoom(setting.zoom);
				m.setCenter(new GLatLng(setting.geo.y,setting.geo.x));
			}
				
		};
		
		return {
			init:function(map) {
				m = map;
				hash = window.location.search;
				eventmessager.register("map_ze",save,this,map);
				eventmessager.register("map_de",save,this,map);		
				load();
			}
		}	
	};

	function collapse () {		
		var btn = [];
		var state = [];
		var coll = [];
		
		var itemtoogle = function(index) {
			if (state[index]) {
				btn[index].update("Mehr Details");
				coll[index].hide();
			}
			else {
				btn[index].update("Weniger Details");
				coll[index].show();
				coll[index].frame("A2A2A2",1,{duration:0.5});
				//eventmessager.call("img"+index);
			}
			state[index]=!state[index];
		};
		
		Ext.each(Ext.query('a[class="collapse"]'),function(item,index,all) {
			btn.push(Ext.get(item).update("Mehr Details"));
			state.push(false);
		});
		
		Ext.each(Ext.query('tr[class="additional"]'),function(item,index,all) {
			coll.push(Ext.get(item).setVisibilityMode(Ext.Element.DISPLAY).hide());
		});
		
		Ext.each(btn,function(item,index,all) {
			item.on("mousedown",function() {
				itemtoogle(index);
			});
		});
		
		
	};
		
	function inlinePopup () {
		
		var i = null;

		var fn = null;
		
		var setSize = function() {
			//alert("setsize");
			var container = Ext.get("maincontainer");
			var containerheight = container.getHeight() + container.getTop();
			var bodyheight = Ext.getBody().getViewSize().height;
			Ext.DomHelper.applyStyles(i,{
				height: (containerheight > bodyheight ? containerheight-1 : bodyheight-1) + "px",
				width: (Ext.getBody().getViewSize().width-1)+"px"
			});
		};
		
		
		var build = function() {
		//	console.log("init");
			i = Ext.DomHelper.append(Ext.getBody(),{
				tag:"div"
			},true);
			
			Ext.DomHelper.applyStyles(i, {
				backgroundColor:"#FFFFFF",
				position:"absolute",
				top:"0",
				left:"0",
				zIndex:"1000"
			});
			setSize();
			i.setOpacity(0.75);
			i.setVisibilityMode(Ext.Element.DISPLAY);
			i.hide();
			i.on("click",function() {
				i.hide();
				fn.call();
			});
		};
	
		return {

			init:function(hidecallback) {
				fn = hidecallback;
				build();
				Ext.EventManager.onWindowResize(setSize);
			},

			show:function() {
				i.show();
			},

			hide:function() {
				i.hide();
			}
		}
	};

	
	function initialize() {
		var adressManager = new geoAdressManager();
		var adresses = adressManager.init(list);	
		
		var addAll = function (ad) {
		
			var map = new GMap2(document.getElementById("mapcontainer"));
			map.addControl(new GLargeMapControl());
			map.enableScrollWheelZoom();
			map.setCenter(ad[0].geo!=null?ad[0].geo:ad[1].geo);
			
			map.setZoom(12);
			
			var bounds = new GLatLngBounds();
			
			Ext.each(ad,function(item,index,all){
			//	alert("next item");
				if (item.geo!=null)	{
					bounds.extend(new GLatLng(item.geo.y,item.geo.x));
					var m = new GMarker(new GLatLng(item.geo.y,item.geo.x));
					m.val = index;
					GEvent.addListener(m,"click",function() {
						var html = "<div class=\"mapinfocontainer\">"+item.displayadress;
						for (var j=0;j<item.data.length;j++)
							html+="<br />"+item.data[j].text;
						html+="</div>";
						map.openInfoWindowHtml(item.geo,html);
					});
					map.addOverlay(m);
				}
			});
			
			map.setZoom(map.getBoundsZoomLevel(bounds)-1);
			map.setCenter(bounds.getCenter());
			
			var saver = new mapStateSaver();
			saver.init(map);
			GEvent.addListener(map,"zoomend",function() {
				eventmessager.call("map_ze");
			});
			
			GEvent.addListener(map,"dragend",function() {
				eventmessager.call("map_de");
			});
		};		
		
			
		var mycache = new geoCodeCache();
		mycache.init(adresses,function(ad) {
			
			addAll(ad);
		},this);
	};


	function inlineSearchForm() {
		var inline = new inlinePopup();
		var sf = null;
		
		var init = function () {
			inline.init(hidesearch);
			sf = Ext.DomHelper.append(Ext.getBody(),{
				tag:"div",
				cls:"inlineinner smallinner",
				id:"inlinesearchform",
				children:[{
					tag:"table",
					cls:"head",
					cellpadding:0,
					cellspacing:0,
					children:[{
						tag:"tr",
						children:[{
							tag:"td",
							cls:"head",
							children:[{
								tag:"span",
								html:"Sucheanfrage &auml;ndern"
							}]
						},{
							tag:"td",
							cls:"close",
							align:"right",
							children:[{
								tag:"img",
								cls:"closebutton",
								src:"img/close.gif"
							}]
						}]
					}]
				},{
					tag:"div",
					cls:"iframe"
					//style:"width:400px;height:450px; border-width:0px;",
					//src:searchform
				}]
			},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
			
			var iframe = Ext.get(sf.query('div[class="iframe"]')[0]);
			iframe.update("<iframe src=\""+searchform+"\" name=\"int\" width=\"400\" height=\"470\" border=\"0\" frameborder=\"0\"></iframe>");
			Ext.get(sf.query('img[class="closebutton"]')[0]).on("click",hidesearch);
			
			Ext.get("inlinesearch_base").on("click",showsearch);
		};
		
		var showsearch = function() {
			sf.show();
			inline.show();
			if (Ext.isIE6)
				window.scrollTo(1,1);
		};	
		
		var hidesearch = function() {
			sf.hide();
			inline.hide();
		};	
		init();
	};


	function geoCodeCache () {
		var ad = null;
		var fn = null;
		var sc = this;
		var names = [];
		var geo = new GClientGeocoder();
		var trans = new GGeocodeCache();
		var counter = 0;
		var nc = 0;
		var ng = 0;
		
		var performedOne = function() {
			counter++;
			if (counter == ad.length) {
		//		Ext.get("geocoded").update(ng);
		//		Ext.get("cached").update(nc);
				fn.call(sc,ad);
			}
				
		};
		
		var loadFromCache = function(i) {
			//alert("cache.php?action=load&id="+encodeURI(ad[i].adress));
			Ext.Ajax.request({
				url:"cache.php?action=load&id="+encodeURI(ad[i].adress),
				success:function(response,options) {
			//		alert(response.responseText);
					var t = Ext.util.JSON.decode(response.responseText);
					ad[i].geo = new GLatLng(t.y,t.x);
					//ad[i].geo = Ext.util.JSON.decode(response.responseText);
					nc++;
					performedOne();
				},
				error:error
			});
		};
		
		var loadFromGeo = function(i) {
			geo.getLatLng(ad[i].adress,function(result) {
				ad[i].geo=result;
				ng++;
				if (result!==null) {
					Ext.Ajax.request({
						url:"cache.php?action=save",
						method:"POST",
						params:{id:ad[i].adress,data:Ext.util.JSON.encode(result)},
						error:error,
						success:function() { /*alert("saved: "+ad[i].adress); */ }
					});
				}
				performedOne();
			});			
		};
				
		var loaded = function() {
		//	alert(ad.length);
			Ext.each(ad,function(item,index,all) {
				ad[index].adress = trans.toCanonical(item.adress);
			});
			Ext.each(ad,function(item,index,all) {
				if (names.indexOf(item.adress)!=-1)
					loadFromCache(index);
				else
					loadFromGeo(index);	
			});
			
		};
		
		var load = function() {
			Ext.Ajax.request({
				url:"cache.php?action=loadlist",
				success:function(response,options) {
					names=Ext.util.JSON.decode(response.responseText).list;
					//alert(names);
					//alert(names);
					loaded();
				},
				error:error
			});
		};
		
		var error = function() {
			alert("Fehler");
		};
		
		return {
			init:function(adresses,callback,scope) {
				ad=adresses;
				fn=callback;
				sc = scope;
				load();
			}
		}
	};
	
	var quality = 90;

	function imageswap () {
		var list = [];
		Ext.each(allimg,function(item,index,all) {
			item.remove('');
			list[index]=[];
			Ext.each(item,function(subitem,subindex,suball) {
				list[index][subindex]="thumb/phpThumb.php?src="+subitem+"&w=110&h=110&q="+quality+"&aoe=1&zc=1"
			});
		});
		
		var bases = [];
		var left = [];
		var right = [];
		var images = [];
		var states = [];
		var loader = Ext.DomHelper.append(Ext.getBody(),{
			tag:"img",
			src:"img/load.gif"
		},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
		
		Ext.DomHelper.append(Ext.getBody(),{
			tag:"img",
			src:"img/load3.gif"
		},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
		
		
		var preload = function(i) {
						
		};
		
		var build = function(el,i) {
			var ret =  Ext.DomHelper.append(el,{
				tag:"table",
				style:"width:220px;margin-left:0px;",
				children:[{
					tag:"tr",
					valign:"middle",
					children:[{
						tag:"td",
						width:"20",
						style:"text-align:right",
						children:[{
							tag:"img",
							id:"imgswap_la_"+i,
							src:"img/arrow_left.jpg",
							style:"cursor:pointer;",
							width:"8",
							height:"14"
						}]
					},{
						tag:"td",
						style:"text-align:center;",
						children:[{
							tag:"img",
							id:"imgswap_im_"+i,
							src:"img/load3.gif",
							height:"110",
							widht:"110"
						}]
					},{
						tag:"td",
						width:"20",
						style:"text-align:left;",
						children:[{
							tag:"img",
							id:"imgswap_ra_"+i,
							src:"img/arrow_right.jpg",
							style:"cursor:pointer;",
							width:"8",
							height:"14"
						}]
					}]
				}]},true);
				
				var img = Ext.get("imgswap_im_"+i);
				var loader = new ImageLoader(list[i][0],function(){
					img.dom.src = list[i][0];
					img.on("click",function() {
						eventmessager.call("showgallery",[i,0]);
					});
					img.on("mouseover",function(e) {
						Ext.get(e.getTarget()).setOpacity(0.5);
					});
					img.on("mouseout",function(e) {
						Ext.get(e.getTarget()).setOpacity(1);
					});
				})
				return ret;
				
				
		};
		
		var showloader = function(index) {
			loader.show();
			loader.setX(images[index].getX()+(images[index].getWidth()/2)-(loader.getWidth()/2));
			loader.setY(images[index].getY()+(images[index].getHeight()/2)-(loader.getHeight()/2));
		};
		
		var hideloader = function() {
			loader.hide();
		};
		
		var changeimg = function(index,url) {
			images[index].dom.src="img/load3.gif";
			var loader = new ImageLoader(url,function(){
				images[index].dom.src=url;
				images[index].on("click",function() {
					eventmessager.call("showgallery",[index,states[index]]);
				});
				images[index].on("mouseover",function(e) {
					Ext.get(e.getTarget()).setOpacity(0.5);
				});
				images[index].on("mouseout",function(e) {
					Ext.get(e.getTarget()).setOpacity(1);
				});
				
			});
		};
		
		Ext.each(Ext.query('div[class="imageswap"]'),function(item,index,all) {
			item = Ext.get(item);
			build(item,index);
			left.push(Ext.get("imgswap_la_"+index));
			right.push(Ext.get("imgswap_ra_"+index));
			images.push(Ext.get("imgswap_im_"+index));
			bases.push(item);
			states.push(0);
		});
		
		
		
		Ext.each(left,function(item,index,all) {
			item.on("click",function() {
				states[index]--;
				if (states[index]<0)
					states[index]=list[index].length-1;
				changeimg(index,list[index][states[index]]);

			//	trace(list[index][states[index]]);
			});
		});
		
		Ext.each(right,function(item,index,all) {
			item.on("click",function() {
				states[index]++;
				if (states[index]==list[index].length)
					states[index]=0;
				changeimg(index,list[index][states[index]]);
			});
		});
		
		
	};

	var quality = 90;

	function imageGallery() {
		var inline = new inlinePopup();
		var largeimg = [];
		var thumbimg = [];
		var realimg = [];
		var captions = captiondata;
		var cur = '';
		allimg.remove('');
		allimg.remove(null);
		Ext.each(allimg,function(item,index,all){
			item.remove('');
			item.remove(null);
			largeimg[index]=[];
			thumbimg[index]=[];
			realimg[index]=[];
			Ext.each(item,function(subitem,subindex,suball){
				largeimg[index][subindex]="thumb/phpThumb.php?src="+subitem+"&w=800&h=410&q="+quality+"&aoe=1";
				thumbimg[index][subindex]="thumb/phpThumb.php?src="+subitem+"&w=70&h=70&q="+quality+"&aoe=1&zc=1";
				realimg[index][subindex]=subitem;
			});
		});
		Ext.each(captions,function(item,index,all) {
			Ext.each(item,function(subitem,subindex,suball) {
				captions[index][subindex]=subitem.replace(/^(-\s)/,"");
			});
		});
		var out;
		var imageholder;
		var thumbholder;
		var captionholder;
		var myscope = this;
		
		var init = function() {
			
			eventmessager.register("showgallery",openGallery,myscope,[0,0]);
			
			Ext.each(Ext.query('img[class="gallery_button"]'),function(item,index,all) {
				var i = Ext.get(item);
				/g_(\d+)_(\d+)/.exec(i.dom.id);
				var id = parseInt(RegExp.$1);
				var sid = parseInt(RegExp.$2);
				i.addClass("hand");
				i.on("mouseover",function(e) {
					Ext.get(e.getTarget()).setOpacity(0.5);
				});
				i.on("mouseout",function(e) {
					Ext.get(e.getTarget()).setOpacity(1);
				});
				i.on("click",function(){
					openGallery(id,sid);
				});
				
			});
			
			out = Ext.DomHelper.append(Ext.getBody(),{
				tag:"div",
				cls:"inlineinner",
				id:"gallery",
				children:[{
					tag:"table",
					cls:"head",
					cellpadding:0,
					cellspacing:0,
					children:[{
						tag:"tr",
						children:[{
							tag:"td",
							cls:"head",
							children:[{
								tag:"span",
								html:"Bildergalerie"
							}]
						},{
							tag:"td",
							html:"&nbsp;"
						},{
							tag:"td",
							cls:"print",
							align:"right",
							children:[{
								tag:"div",
								cls:"print",
								html:"Drucken"
							}]
						},{
							tag:"td",
							cls:"close",
							align:"right",
							children:[{
								tag:"img",
								cls:"closebutton",
								src:"img/close.gif"
							}]
						}]
					}]
				},{
					tag:"div",
					cls:"imageholder",
					children:[{
						tag:"table",
						cellspacing:"0",
						cellpadding:"0",
						children:[{
							tag:"tr",
							valign:"middle",
							children:[{
								tag:"td",
								children:[{
									tag: "img",
									src: "img/load.gif"
								}]
							}]
						}]
					}]
				},{
					tag:"div",
					cls:"captionholder"
				},{
					tag:"div",
					cls:"thumbholder"
				}]
			},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
			
			Ext.get(out.query('img[class="closebutton"]')[0]).on("click",closeGallery);
			
			Ext.get(out.query('div[class="print"]')[0]).on("click",function() {
				window.open("print_image.php?img="+cur,"Drucken","height=400,width=400,toolbar=no,status=no,resizable=yes,menubar=no,location=no,dependent=yes");
			});
			
			
			imageholder = Ext.get(out.query('img')[1]);
			
			thumbholder = Ext.get(out.query('div[class="thumbholder"]')[0]);
			
			captionholder = Ext.get(out.query('div[class="captionholder"]')[0]);
			
			Ext.DomHelper.append(Ext.getBody(),{
				tag:"img",
				src:"img/load.gif"
			},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
			
			Ext.DomHelper.append(Ext.getBody(),{
				tag:"img",
				src:"img/load2.gif"
			},true).setVisibilityMode(Ext.Element.DISPLAY).hide();

			
		};
		
		
		
		var openGallery = function(idx,sidx) {
			cur = realimg[idx][sidx];
			captionholder.update(captions[idx][sidx]);
			inline.show();
			if (Ext.isIE6)
				window.scrollTo(1,1);
			out.show();
			imageholder.dom.src = "img/load.gif";
			var l = new ImageLoader(largeimg[idx][sidx],function(){
				imageholder.dom.src = largeimg[idx][sidx];
			});
			thumbholder.update("");
			Ext.each(thumbimg[idx],function(thumb,index,all){
				var t = Ext.DomHelper.append(thumbholder,{
					tag:"img",
					src:"img/load2.gif"
				},true);
				t.on("click",function(){
					imageholder.dom.src = "img/load.gif";
					cur = realimg[idx][index];
					captionholder.update(captions[idx][index]);
					var f = new ImageLoader(largeimg[idx][index],function(){
						imageholder.dom.src = largeimg[idx][index];
					});
				});
				var s = new ImageLoader(thumbimg[idx][index],function(){
					t.dom.src = thumbimg[idx][index];
				})
			});
		};
		
		var closeGallery = function() {
			inline.hide();
			out.hide();
		};
		
		init();
		
		inline.init(closeGallery);
				
	};

//	alert("fileload");
	
	function contactform() {
		//alert("in");
		var inline = new inlinePopup();
		var out;

		var opencontact = function() {
			//alert("open contact");
			initcontact();
			inline.show();
			if (Ext.isIE6)
				window.scrollTo(1,1);
			out.show();
		};
		
		var closecontact = function() {
			inline.hide();
			out.hide();
		};
		
		var initcontact = function() {
			out = Ext.DomHelper.append(Ext.getBody(),{
				tag:"div",
				cls:"inlineinner smallinner",
				id:"contactform",
				style:"height:280px;",
				children:[{
					tag:"table",
					cls:"head",
					cellpadding:0,
					cellspacing:0,
					children:[{
						tag:"tr",
						children:[{
							tag:"td",
							cls:"head",
							children:[{
								tag:"span",
								html:"Schnellkontakt"
							}]
						},{
							tag:"td",
							html:"&nbsp;"
						},{
							tag:"td",
							cls:"close",
							align:"right",
							children:[{
								tag:"img",
								cls:"closebutton",
								src:"img/close.gif"
							}]
						}]
					}]
				},{
					tag:"div",
					id:"contactcontent",
					children:[{
						tag:"table",
						children:[{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Ihr Name:"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									type:"text",
									name:"name",
									value:""
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Email-Adresse:"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									name:"mail",
									type:"text",
									value:"@"
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Rückrufnummer:"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									type:"text",
									name:"number",
									value:""
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Betreff"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									type:"text",
									name:"subject",
									value:window.location.href.match(/id=(.*?)$/)[1],
									readonly:"readonly"
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"R&uuml;ckruf erw&uuml;nscht"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									type:"checkbox",
									name:"callback",
									checked:"checked"
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Nachricht"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"textarea",
									name:"message"
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"&nbsp;"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									type:"button",
									name:"submit",
									value:"Absenden"
								}]
							}]
						}]
					}]
				}]
			},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
			
			
			Ext.get(out.query('input[type="button"]')[0]).on("click",function() {
				var el = this;
				this.dom.disabled="disabled";
				this.dom.value="Bitte warten...";
				
				var vidx = [];
				var vval = [];
				Ext.each(out.query("input"),function(item) {
					vidx.push(item.name);
					vval.push((item.name=="callback")?(item.checked?"1":"0"):(item.value));
				});
				
				var name = vval[vidx.indexOf("name")];
				var mail = vval[vidx.indexOf("mail")];
				var number = vval[vidx.indexOf("number")];
				var contact = (mail.length>2 || number.length > 2);
				
				if (!((contact) && (name.length>0))) {
					alert("Bitte geben Sie ihren Namen sowie eine Telefonnummer oder eine E-Mail Adresse an!");
					this.dom.removeAttribute("disabled");
					this.dom.value="Absenden";
				}
				else {
					//console.log(vidx);
					//console.log(vval);
				
					Ext.Ajax.request({
						url:"contact.php",
						success: function(){
							el.dom.removeAttribute("disabled");
							el.dom.value = "Absenden";
							closecontact();
						},
						method:"POST",
						params:{
							name:vval[vidx.indexOf("name")],
							mail:vval[vidx.indexOf("mail")],
							subject:vval[vidx.indexOf("subject")],
							number:vval[vidx.indexOf("number")],
							callback:vval[vidx.indexOf("callback")],
							message:out.query("textarea")[0].value
						}
					});
				}
			});
			
			Ext.get(out.query('img[class="closebutton"]')[0]).on("click",closecontact);
		};
		
//		console.log();
		//alert("start");
		inline.init(closecontact);
		//alert("inline");
		//alert("init contact");
		//console.log(Ext.query('a[class="contact"]')[0]);
		Ext.get(Ext.query('a[class="contact"]')[0]).on("click",opencontact);
	}; 
	
	
	function sendform() {
		//alert("in");
		var inline = new inlinePopup();
		var out;

		var opensend = function() {
			initsend();
			inline.show();
			if (Ext.isIE6)
				window.scrollTo(1,1);
			out.show();
		};
		
		var closesend = function() {
			inline.hide();
			out.hide();
		};
		
		var initsend = function() {
			out = Ext.DomHelper.append(Ext.getBody(),{
				tag:"div",
				cls:"inlineinner smallinner",
				id:"contactform",
				style:"height:380px;",
				children:[{
					tag:"table",
					cls:"head",
					cellpadding:0,
					cellspacing:0,
					children:[{
						tag:"tr",
						children:[{
							tag:"td",
							cls:"head",
							children:[{
								tag:"span",
								html:"Exposé verschicken"
							}]
						},{
							tag:"td",
							html:"&nbsp;"
						},{
							tag:"td",
							cls:"close",
							align:"right",
							children:[{
								tag:"img",
								cls:"closebutton",
								src:"img/close.gif"
							}]
						}]
					}]
				},{
					tag:"div",
					id:"contactcontent",
					children:[{
						tag:"table",
						children:[{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Ihr Name:"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									type:"text",
									name:"name",
									value:""
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Empfänger (E-Mail):"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									name:"mail",
									type:"text",
									value:"@"
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Ihre Mail"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"textarea",
									html:	"< Ihre persöhnliche Nachricht steht hier >\n\nTraumwohnung aufrufen: "+(etitle?etitle:"kein Titel")+
											"\nVielen Dank, dass Sie accept-immobilien besucht haben.\nFür Fragen zu unseren  Angeboten stehen wir Ihnen gern zur Verfügung.\nIhr Team von accept-immobilien\n***************************************************************************\nKontaktdaten:\naccept-immobilien\nLöhrstraße 11\n04105 Leipzig\nTel.: 03 41 / 5 83 10 30\nFax: 03 41/ 5 83 10 31\ne-mail: info@accept-immobilien.de\nweb: www.accept-immobilien.de\nIhre persönlichen Ansprechpartner sind auch am Wochenende erreichbar unter:\nKristin Barth       0178/ 5831033\nHolger König      0178/ 5831032",
									readonly:"readonly",
									wrap:"off",
									style:"height:120px;"
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"Persönliche Nachricht"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"textarea",
									name:"subject",
									style:"height:120px;",
									html:""
								}]
							}]
						},{
							tag:"tr",
							children:[{
								tag:"td",
								cls:"first",
								html:"&nbsp;"
							},{
								tag:"td",
								cls:"last",
								children:[{
									tag:"input",
									type:"button",
									name:"submit",
									value:"Absenden"
								}]
							}]
						}]
					}]
				}]
			},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
			
			
			Ext.get(out.query('input[type="button"]')[0]).on("click",function() {
				var el = this;
				this.dom.disabled="disabled";
				this.dom.value="Bitte warten...";
				
				var vidx = [];
				var vval = [];
				Ext.each(out.query("input"),function(item) {
					vidx.push(item.name);
					vval.push(item.value);
				});
				
				var name = vval[vidx.indexOf("name")];
				var mail = vval[vidx.indexOf("mail")];
				var subject = Ext.get(out.query('textarea[name="subject"]')[0]).dom.value;
				
				if ((name.length==0) || (mail.length==0)) {
					alert("Bitte geben Sie ihren Namen sowie die E-Mail Adresse des Empfängers an!");
					this.dom.removeAttribute("disabled");
					this.dom.value="Absenden";
				}
				else {
					//console.log(vidx);
					//console.log(vval);
				
					Ext.Ajax.request({
						url:"send.php",
						success: function(){
							el.dom.removeAttribute("disabled");
							el.dom.value = "Absenden";
							closesend();
						},
						method:"POST",
						params:{
							name:name,
							mail:mail,
							subject:subject,
							/*subject:vval[vidx.indexOf("subject")],*/
							title:etitle
						}
					});
				}
			});
			
			Ext.get(out.query('img[class="closebutton"]')[0]).on("click",closesend);
		};
		
//		console.log();
		//alert("start");
		inline.init(closesend);
		//alert("inline");
	//	initsend();
		//alert("init send");
	//	console.log(Ext.query('a[class="contact"]')[1]);
		Ext.get(Ext.query('a[class="contact"]')[1]).on("click",opensend);
	}; 


	var quality = 90;

	function reminder() {
		var btn = [];
		var data = reminderdata;
		var i = new inlinePopup();
		var out = null;
		var content = null;
		Ext.each(data,function(item) {
			delete remove;
		});
		var list = [];
		var base = Ext.get("reminder_base");
		var cp = new Ext.state.CookieProvider({
			expires: new Date(new Date().getTime()+(1000*60*60*24*30)) //30 days
		});
		
		var load = function() {
			list = cp.get("reminder",null);

			if (list==null)
				list=[];
			else
				list = Ext.util.JSON.decode(list);
			updateBase();
		};
		
		var updateBase = function() {
			base.update("Merkliste ("+list.length+")");
		};
		
		var save = function() {
			//console.log(Ext.util.JSON.encode(list));
			cp.set("reminder",Ext.util.JSON.encode(list));
			updateBase();
		};
		
		var compare = function(a,b) {
			for (var i in a)
				if (a[i]!=b[i])
					return false;
			return true;			
		};
		
		var getIndexOf = function(list,obj) {
			var ret = false;
			Ext.each(list,function(item,index,all){
				if (compare(item,obj))
					ret = index;
			});
			return ret;
		};
		
		var add = function(index) {
			if (getIndexOf(list,data[index])===false)
				list.push(data[index]);
			save();
		};
		
		var remove = function(index) {
			var i = getIndexOf(list,data[index]);
			if (i!==false)
				list.remove(list[i]);				
			save();
		};
		
		var click = function(index) {
			if (btn[index].dom.firstChild.nodeValue=="Merken") {
				btn[index].update("L&ouml;schen");
				add(index);
			}
			else {
				btn[index].update("Merken");
				remove(index);
			}
		};
		
		var closeList = function() {
			out.hide();
			i.hide();
		};
		
		var showlist = function() {
			i.show();
			out.show();
			if (Ext.isIE6)
				window.scrollTo(1,1);
			var tr = [];
			if (list.length == 0) 
				tr.push({
					tag: "tr",
					children: [{
						tag: "td",
						html: "Es befinden sich keine Objekte in der Merkliste."
					}]
				});
			else {
				Ext.each(list, function(item){
					//alert("thumb/phpThumb.php?src="+item.img+"&w=70&h=70&q="+quality+"&aoe=1&zc=1");
					tr.push({
						tag: "tr",
						children: [{
							tag: "td",
							children: [{
								tag: "a",
								href: item.url,
								children: [{
									tag: "img",
									//src:"img/load2.gif",
									src: "thumb/phpThumb.php?src=" + item.img + "&w=70&h=70&q=" + quality + "&aoe=1&zc=1",
									height: "70",
									width: "70"
								}]
							}]
						}, {
							tag: "td",
							children: [{
								tag: "a",
								href: item.url,
								html: item.headline
							}, {
								tag: "br"
							}, {
								tag: "span",
								html: item.adress
							}]
						}, {
							tag: "td",
							children: [{
								tag: "a",
								cls: "btn",
								href: "javascript:void(0);",
								html: "L&ouml;schen"
							}]
						}]
					})
				});
			}
			

			content.update("");
			Ext.DomHelper.append(content,{
				tag:"table",
				cellpadding:"0",
				cellspacing:"0",
				children:tr
			});
			
			/*console.log(content.query('a img'));
			Ext.each(out.query('img'),function(item,index,all) {
				var i = Ext.get(item);
				i.setVisibilityMode(Ext.Element.DISPLAY);
				i.hide();
				i.show();
				i.repaint();
				var loader = new ImageLoader(list[index].img,function() {
					alert("loaded");
					i.dom.src = list[index].img;
					i.setVisibilityMode(Ext.Element.DISPLAY);
					i.hide();
					i.show();
					i.repaint();
				});
			}); */
			
			
			Ext.each(out.query('a[class="btn"]'),function(item,index,all) {
				Ext.get(item).on("click",function() {
					var i = getIndexOf(data,list[index]);
					if (i !== false) 
						click(i);
					else {
						list.remove(list[index]);
						save();
					}
					updateBase();
					closeList();
					showlist();
				});
			});
			
			out.repaint();
			Ext.each(out.query('img'),function(item) {
				var i = Ext.get(item);
				i.setVisibilityMode(Ext.Element.DISPLAY);
				i.hide();
				i.show();
				i.repaint();
			});
			
		};
		
		var init = function() {
			i.init(closeList);
			Ext.each(Ext.query('a[class="reminder_button"]'),function(item,index,all) {
				btn.push(Ext.get(item));
				
			});
			Ext.each(btn,function(item,index,all) {
				if (getIndexOf(list,data[index])!==false)
					btn[index].update("L&ouml;schen");
				item.on("click",function() {
					click(index);
				});
			});
			
			base.on("click",showlist);
			
			out = Ext.DomHelper.append(Ext.getBody(),{
				tag:"div",
				cls:"inlineinner",
				id:"reminderlist",
				children:[{
					tag:"table",
					cls:"head",
					cellpadding:0,
					cellspacing:0,
					children:[{
						tag:"tr",
						children:[{
							tag:"td",
							cls:"head",
							children:[{
								tag:"span",
								html:"Merkliste"
							}]
						},{
							tag:"td",
							html:"&nbsp;"
						},{
							tag:"td",
							cls:"close",
							align:"right",
							children:[{
								tag:"img",
								cls:"closebutton",
								src:"img/close.gif"
							}]
						}]
					}]
				},{
					tag:"div",
					id:"remindercontent"
				}]
			},true).setVisibilityMode(Ext.Element.DISPLAY).hide();
			
			Ext.get(out.query('img[class="closebutton"]')[0]).on("click",closeList);
			
			content = Ext.get("remindercontent");
			
			
		};
		load();		
		init();

		
	};

	fulldecompress = true;
	
	var PrintTrigger = function() {
		var call = function() {
			var imgs = Ext.query("img");
			var c=0;
			Ext.each(imgs,function(item,index,all){
				if (item.complete)
					c++;
				else
					return false;
			});
			if (c==imgs.length)
				window.print();
			else
				window.setTimeout(function() {call();},100);
		}
		eventmessager.register("printtrigger",call,this,[]);// function(id,callback,scope,param) {
	}

