
if (navigator.userAgent.match(/Firefox\/[4-8]/)) {
	runOnLoadFinish(function() {
		Ext.select('form').each(function(f) {
			foreach(f.dom.elements, function(el) {
				var pattern = el.getAttribute ? el.getAttribute('pattern') : null, reg = '.*';
				if (pattern) {
					reg = '.*';
					switch (pattern) {
						case "pass" :
							reg = '^.{7,}$';
							break;
						case "text" :
							reg = '^[a-zA-Z0-9äöü&szlig;]+$';
							break;
						case "int" :
							reg = '^[0-9]+$';
							break;
						case "lt" :
							reg = '^[0-9]+$';
							break;
						case "gt" :
							reg = '^[0-9]+$';
							break;
						case "plz" :
							reg = '\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?:[6][013-9]\d{3}))\b';
							break;
						case "mail" :
							reg = '[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}\b';
							break;
						case "date" :
							reg = '\b(((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?[13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))(\d{2}|(19|20)\d{2})\b';
							break;
						case "alldates" :
							reg = '^\b((((0?[1-9]|[12][0-9])\.(0?[1-9]|1[0-2])\.)|(30\.((0?[13-9])|(1[0-2]))\.)|(31\.(0?[13578]|1[02])\.))(\d{2}|(19|20)\d{2}))|((0?[1-9]|1[0-2])\.((19|20)\d{2}|\d{2}))\b';
							break;
						case "time" :
							reg = '\b([01][0-9]|2[0-3]):[0-5][0-9]\b';
							break;
					};
					el.setAttribute('pattern', reg);
				}
			});
		});
		cmslogin = function(f) {
			if (f.elements['username'].value.length && f.elements['password'].value.length) {
				f.elements['response'].value = MD5(f.elements['password'].value);
				f.elements['password'].value = "";
				f.elements['password'].setAttribute('valid', 'true');
				f.elements['password'].removeAttribute('required');
				return (true);
			};
			return (false);
		};
	});
};
if (navigator.userAgent.match(/MSIE\s9/)) {
	if ((typeof Range !== "undefined") && !Range.prototype.createContextualFragment) {
		Range.prototype.createContextualFragment = function(html) {
			var frag = document.createDocumentFragment(), div = document.createElement("div");
			frag.appendChild(div);
			div.outerHTML = html;
			return frag;
		};
	};
	Ext.Element.prototype.getAttributeNS = function(ns, name) {
		var d = this.dom;
		return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name) || d.getAttribute(name) || d[name];
	};
};




Ext.onReady(function() {
	var box;
	var swfs = {};
	var initlink = Ext.select('.extwndowlink');
	initlink.each(function(el) {
		var lnk = el.dom;
		var conf_title = 'Weitere Informationen';
		var conf_modal = true;
		var conf_width = 740;
		var conf_height = 460;
		var conf_display_header = true;
		Ext.MessageBox.maxWidth = 800;
		lnk.onclick = function() {
			box = Ext.MessageBox.show({
				title : conf_title,
				msg : 'Lade Daten...',
				animEl : lnk,
				modal : conf_modal,
				fn : function() {
					for ( var id in swfs) {
						Ext.get(swfs[id].attributes.id).remove(); // raus mit
						// den SWFs
					}
					Ext.MessageBox.hide();
				}
			});
			if (conf_display_header == false) {
				box.getDialog().header.dom.style.display = 'none';
			}
			var url = lnk.href;
			Ext.Ajax.request({
				url : url,
				success : function(req) {
					var treg = /<!--\sINHALT\s-->(.+)<!--\sINHALT\s-->/gi;
					var bd = treg.exec(req.responseText.split(/\n/).join(''));
					var swfHeight = 0;
					if (bd && bd[1]) {
						var txt = bd[1];
						var scripttoeval;
						swfs = {};
						txt.extractScripts().each(function(script) {
							var swfreg = /\('([^']+)',\s'([^']+)',\s'([^']+)'\)/;
							var movie = script.match(swfreg);
							if (script.substring(0, 8) == "loadGMap") {
								scripttoeval = script;
							};
							if (movie) {
								var w = parseInt(movie[2]) + 50;
								var h = parseInt(movie[3]);
								swfHeight = swfHeight + h;
								var src = movie[1];
								var id = getUniqueID();
								txt += '<div id="flash' + id + '" style="text-align:center;"></div>';
								var swf = new SWFObject(basepath + '_/flash/moviePlayer.swf', "flash" + id + "obj", w || 400, h || 362, "8");
								swf.addParam('wmode', 'transparent');
								swf.addParam('allowFullScreen', 'true');
								swf.addVariable("skinSource", basepath + '_/flash/SkinUnderAllNoCaption.swf');
								swf.addVariable("streamSource", src);
								swf.addVariable("startPlay", 1);
								swf.useExpressInstall(basepath + '_/flash/expressinstall.swf');
								swfs[id] = swf;
							}
						});
						txt = '<div id="mediacnt" style="width:' + (conf_width - 30) + 'px; overflow-x:hidden;overflow-y:auto;">' + txt + '</div>';
						Ext.MessageBox.updateText(txt);
						// txt.evalScripts();
						var dlg = Ext.MessageBox.getDialog();
						dlg.center();
						var mediacnt = Ext.get('mediacnt');
						if (mediacnt) {
							mediacnt.select('.c_teaser').each(function(el) {
								el.dom.style.display = "none";
							});
						};
						if (dlg.size.height > 500) {
							mediacnt.dom.style.height = "440px";
							dlg.resizeTo(conf_width, 500);
						} else {
							dlg.resizeTo(conf_width, dlg.size.height + swfHeight);
						};
						for ( var id in swfs) {
							swfs[id].write("flash" + id);
						};
						if (typeof scripttoeval != 'undefined') {
							eval(scripttoeval);
						}
					}
				}
			});
			return (false);
		}
	});
});

function submitKtlgForm(frmname) {
	var formular = cmsForms.ansprechpartnerform;
	var frm = Ext.get(frmname);
	cmsForms[frm] = new Ext.form.BasicForm(frm);
	cmsForms._count++;
	var paramsobj = cmsForms[frm].getValues();
	paramsobj.catselected = paramsobj.catselected == 464 ? '' : paramsobj.catselected;
	

	
	if (Ext.get('stadtteillist').dom.value == '' && Ext.get('strasselist').dom.value == ''){
		alert("Bitte wählen Sie den Stadtteil oder die Straße aus.");
		return false;
	}
	
	if (paramsobj.catselected != paramsobj["kt[cat]"]) {
		paramsobj.detID = '';
		Ext.get('strasselist').dom.value = '';
		Ext.getDom(frmname).submit();
		return false;
	}
	var params = cmsForms[frm].getValues(true);
	var url = window.location.pathname + '?' + params;
	Ext.Ajax.request({
		url : url,
		success : function(req) {
			var treg = /<!--\sKATALOG\s-->(.+)<!--\sKATALOG\s-->/gi;
			var bd = treg.exec(req.responseText.split(/\n/).join(''));
			
			var counter = 0;
			while (!bd && counter < 3) { // 5x probieren zu holen, wenn da nichts mehr ist...dann aus...
				var bd = treg.exec(req.responseText.split(/\n/).join(''));
				counter++;
			}
			
			if (bd && bd[1]) {
				var txt = bd[1];
				var listinh = Ext.get('listinh');
				listinh.dom.innerHTML = txt;
			}
		}
	});
};
function chngPic(where, src) {
	where = Ext.get(where);
	if (!where || src == where.dom.src) return false;
	where.fadeOut({
		endOpacity : 0,
		easing : 'easeOut',
		duration : .5,
		remove : false,
		useDisplay : false,
		callback : function(el) {
			where.dom.src = src;
			where.on('load', whereLoad, where);
		}
	});
};
var whereLoad = function() {
	this.un('load', whereLoad);
	this.fadeIn({
		duration : .5,
		easing : 'easeIn'
	});
};
var convertSelectNoSubmit = function(el) {
	var fld = Ext.get(el);
	if (fld) {
		var converted = new Ext.form.ComboBox({
			typeAhead : false,
			triggerAction : 'all',
			transform : fld,
			width : 204,
			forceSelection : true,
			displayField : 'text',
			valueField : 'value'
		});
		converted.show();
	}
};
function openPopDetails(txt, lnk) {
	var box;
	var conf_title = 'Weitere Informationen/Details';
	var conf_modal = true;
	var conf_width = 640;
	var conf_height = 480;
	var conf_display_header = true;
	box = Ext.MessageBox.show({
		title : conf_title,
		msg : '<img src=\"' + basepath + '_/scripts/ext/resources/images/default/grid/loading.gif\" alt=\"\" style=\"border:0; vertical-align:middle;\"> Loading...',
		animEl : lnk,
		modal : conf_modal,
		fn : function() {
			Ext.MessageBox.hide();
		}
	});
	box.updateText('<div id="popupmessageboxtxt" style="text-align: center;">' + txt + '</div>');
	var dlg = Ext.MessageBox.getDialog();
	dlg.center();
	var msgbox = Ext.get('popupmessageboxtxt');
	dlg.refreshSize();
	dlg.resizeTo(msgbox.getWidth() + 40, msgbox.getHeight() + 40);
};
runOnLoad(function() {
	var gebietemap = Ext.get('gebietemap');
	var gebietemap_map = Ext.get('gebietemap_map');
	var stadtteillist = Ext.get('stadtteillist');
	var stadtteillist_options = Ext.select('#stadtteillist option');
	if (gebietemap && gebietemap_map) {
		if (stadtteillist && stadtteillist.dom.value != '') {
			var defaultsrc = '/__/images/gebiete/' + stadtteillist.dom.value + '.gif';
			gebietemap.dom.src = defaultsrc;
		} else {
			var defaultsrc = '/__/images/gebiete/karte.gif';
		}
		gebietemap.on('mouseout', function(e, eld) {
			if (e.within('gebietemap', true)) {
				return;
			}
			gebietemap.dom.src = defaultsrc;
		});
		var areas = Ext.select('#gebietemap_map area');
		areas.each(function(el) {
			var stadtteil = el.dom.getAttribute('stadtteil');
			if (stadtteil) {
				var img = new Image();
				img.src = '/__/images/gebiete/' + stadtteil + '.gif';
			}
			el.on('mouseover', function(e, eld) {
				s = Ext.get(eld);
				var stadtteil = s.dom.getAttribute('stadtteil');
				gebietemap.dom.src = '/__/images/gebiete/' + stadtteil + '.gif';
			});
		});
	};
	var ktform = Ext.get('ktfrm');
	if (ktform) {
		ktform.select('.ktfausst').each(function(el) {
			var html = el.dom.innerHTML;
			el.dom.innerHTML = html.replace(/ \(zus\. 17\.000,- EUR\)/, '');
			el.dom.style.visibility = 'visible';
		});
	};
	var ktlgpict = Ext.select('.ktlgpict');
	ktlgpict.each(function(el) {
		el.on('click', function(e, eld) {
			var txt = '<img src="' + eld.src + '">';
			openPopDetails(txt, eld);
		});
	});
	
	
	
	/**** AB DA CAROUSEL ***/ 
	Ext.select('div.slmask').setOpacity(0);
	var cPosition = 1;
	var maxPicWidth = 220;
	var totalWidth = 0;
	var cPos = [];
	var sl = Ext.get('slider');
	if (sl) {
		var startX = sl.getX();
		var allebilder = sl.select('img');
		var c = allebilder.getCount();
		var f1 = Ext.get(allebilder.elements[0]);
		var f2 = Ext.get(allebilder.elements[1]);
		var l1 = Ext.get(allebilder.elements[c - 2]);
		var l2 = Ext.get(allebilder.elements[c - 1]);
		var ftg = '<img src="' + f1.dom.src + '" orgwidth="' + f1.dom.getAttribute('orgwidth') + '"  orgheight="' + f1.dom.getAttribute('orgheight') + '">';
		ftg += '<img src="' + f2.dom.src + '" orgwidth="' + f2.dom.getAttribute('orgwidth') + '"  orgheight="' + f2.dom.getAttribute('orgheight') + '">';
		var ltg = '<img src="' + l1.dom.src + '" orgwidth="' + l1.dom.getAttribute('orgwidth') + '"  orgheight="' + l1.dom.getAttribute('orgheight') + '">';
		ltg += '<img src="' + l2.dom.src + '" orgwidth="' + l2.dom.getAttribute('orgwidth') + '"  orgheight="' + l2.dom.getAttribute('orgheight') + '">';
		Ext.DomHelper.insertHtml('afterBegin', sl.dom, ltg);
		Ext.DomHelper.insertHtml('beforeEnd', sl.dom, ftg);
		/*
		 * Refresh
		 */
		allebilder = sl.select('img');
		allebilder.each(function(el) {
			cPos.push(el.getWidth());
			totalWidth += cPos[cPos.length - 1];
			el.on('click', function(e, eld) {
				var src = eld.src;
				var orgsrc = src.replace('thm/med_', 'media/med_');
				var orgsrc = '<img src="' + orgsrc + '" width="' + eld.getAttribute('orgwidth') + '" height="' + eld.getAttribute('orgheight') + '">';
				openPopDetails(orgsrc, eld);
			});
		});
		c = allebilder.getCount();
		sl.setWidth(totalWidth);
		var calcOffset = function() {
			var offset = 0;
			for ( var z = 0; z <= cPosition; z++) {
				offset += cPos[z];
			}
			offset -= cPos[cPosition] / 2;
			return (offset);
		}
		sl.setX(startX - calcOffset());
		Ext.select('.slbtn ').each(function(el, els) {
			el.fadeIn({
				duration : 2
			});
			el.on('click', function(e, eld) {
				var dir = Ext.get(eld).hasClass('sright') ? 'r' : 'l';
				switch (dir) {
					case 'r' :
						cPosition++;
						if (cPosition >= c - 3) {
							cPosition = 0;
							sl.setX(startX - (cPos[cPosition] / 2));
							cPosition = 1;
						}
						break;
					case 'l' :
						cPosition--;
						if (cPosition < 1) {
							cPosition = c - 3;
							sl.setX(startX - calcOffset());
							cPosition = c - 4;
						}
						break;
				};
				var newx = startX - calcOffset();
				// Ext.getDom('dbgcnt').innerHTML = 'c: ' + c + '<br>cPosition: ' + cPosition + '<br>newx: ' + newx;
				sl.shift({
					x : newx
				});
			});
		});
	}
});
runOnLoadFinish(function() {
	if (tabs.lay_middle_funcs_from_ressort && Ext.isIE == false) {
		tabs.lay_middle_funcs_from_ressort.items.each(function(el) {
			el.el.dom.style.borderBottom = "1px solid #868889";
			el.on('activate', function(tabelem) {
				tabs.lay_middle_funcs_from_ressort.items.each(function(elems) {
					elems.el.dom.style.borderBottom = "1px solid #868889";
				});
				el.el.dom.style.borderBottom = "none";
			});
		});
		tabs.lay_middle_funcs_from_ressort.getActiveTab().el.dom.style.borderBottom = "none";
	};
});
function openFAQ(id) {
	var faqid = 'faq' + id;
	var linkid = 'faqlink' + id;
	var elems = Ext.select('.faqdisplays');
	Ext.select('.c_titlemi').each(function(ele) {
		ele.dom.className = 'c_titlenomi';
	});
	if (elems) {
		elems.each(function(el) {
			if (el.dom.id == faqid) {
				if (el.dom.style.display == 'none') {
					Ext.get(linkid).dom.className = 'c_titlemi';
					el.fadeIn({
						easing : 'easeOut',
						duration : 1,
						useDisplay : true
					});
				} else if (el.dom.style.display == 'block') {
					el.fadeOut({
						easing : 'easeOut',
						duration : 0.5,
						useDisplay : true
					});
					Ext.get(linkid).dom.className = 'c_titlenomi';
				} else {
					Ext.get(linkid).dom.className = 'c_titlemi';
					el.fadeIn({
						easing : 'easeOut',
						duration : 1,
						useDisplay : true
					});
				}
			} else {
				if (el.dom.style.display == 'block') {
					var idnumber = el.dom.id;
					var numberofid = idnumber.substr(3);
					Ext.get('faqlink' + numberofid).dom.className = 'c_titlemi';
				}
			}
		});
	}
};
function checkTabForContent(trid) {
	tab = Ext.select("#atab_" + trid + " .c_content");
	tab.elements.each(function(el) {
		if (tab.elements.length > 1) {
			Ext.get(el).dom.style.display = "none";
			Ext.get("more" + el.id).dom.style.display = 'block';
			Ext.get("thm" + el.id).dom.style.display = 'block';
			Ext.get("back2all" + el.id).dom.style.display = 'none';
		} else {
			Ext.get(el).dom.style.display = "block";
		}
	})
}
function openDetails(trid, id, open) {
	tab = Ext.select("#atab_" + trid + " .c_ansicht");
	tab.elements.each(function(el) {
		var ansichtel = Ext.get(el.id);
		mod = ansichtel.getStyle("display");
		ansichtel.setStyle("display", open === true ? 'none' : 'block');
	});
	if (open === false) {
		checkTabForContent(trid);
		return false;
	}
	Ext.get("c_ansicht" + id).dom.style.display = "block";
	Ext.get("back2allc_content" + id).dom.style.display = "block";
	Ext.get("morec_content" + id).dom.style.display = 'none'; // mehr button einblenden...
	Ext.get("thmc_content" + id).dom.style.display = 'none'; // mehr button einblenden...
	var art = Ext.get("c_content" + id);
	art.dom.style.display = 'block';
};
var showAdressMap = function(id) {
	var map = Ext.get(id);
	if (!map) {
		var html = '<div id="' + id + '" style="height:500px; width:500px;" class="gmapmaps"></div>';
		Ext.MessageBox.show({
			title : 'Karte',
			msg : html,
			modal : false
		});
		var mconfig = {
			id : id
		};
		initGMap(mconfig);
	} else {
		Ext.MessageBox.getDialog().show();
	}
};
