shp = 
{
	addr: {
		
		haveMaps: function() {
			return window["GBrowserIsCompatible"] && GBrowserIsCompatible();
		},
		
		init: function() {
			if(!shp.addr.haveMaps())
				return;
			if(!$("#addr_list").length)
				return;
			shp.addr.gcCache = {}
			$("#addr_list div").click(function() {
				shp.addr.select(this);
			});
			shp.addr.select($("#addr_list div:first"));
			$("#addr_dir_form").submit(function() {
				try {
					$("#addr_directions").html("");
					shp.addr.mapDirections($("#addr_from").val());
				} catch(e) { }
				return false;
			});
			$("body").unload(function() {
				GUnload();
			});
		},
	
		select: function(div) {
			var addr = $(div).find("h2").html();
			shp.addr.mapGoto(addr);
			$("#addr_list div").removeClass("on");
			$(div).addClass("on");
			$("#addr_directions").html("");
			$("#addr_link").html("");
			
		},
		
		snorm: function(s) {
			s = (s + "").replace(/<.+?>/g, " ").replace(/\s+/g, " ");
			var m = s.match(/\[(.+?)\]/);
			if(m) return m[1];
			return s;
		},
	
		mapGeoDecode: function(addr, onDecode) { 
			var a = shp.addr.snorm(addr);
			if(shp.addr.gcCache[a]) {
				return shp.addr.gcCache[a];
			}
			var geocoder = new GClientGeocoder();
			geocoder.getLatLng(a, function(pt) {
				if(pt) {
					shp.addr.gcCache[a] = pt;
					onDecode();
				}
			});
			return null;
		},

		mapGoto: function(addr) {
			if(!shp.addr.haveMaps())
				return;
			shp.addr.last = addr;
			var pt = shp.addr.mapGeoDecode(addr, function() { shp.addr.mapGoto(addr) });
			if(!pt)
				return;
			var map = new GMap2(document.getElementById("addr_map"));
			map.setCenter(pt, 12);
			var marker = new GMarker(pt);
			map.addOverlay(marker);
			marker.openInfoWindowHtml(addr.replace(/\[.+?\]/g, ""));
		},
		
		mapDirections: function(from, to) {
			if(!shp.addr.haveMaps())
				return;
			to = to || shp.addr.last;
			var pt = shp.addr.mapGeoDecode(to, function() { shp.addr.mapDirections(from, to) });
			if(!pt)
				return;

			var map = new GMap2(document.getElementById("addr_map"));
			map.setCenter(pt, 12);

			var dp = document.getElementById("addr_directions")
		 	var dirs = new GDirections(map, dp);
		
			var from = shp.addr.snorm(from)
			var to = shp.addr.snorm(to);
		
			var q = "from: " + from + " to: " + to;
			dirs.load(q);
			
			q = encodeURIComponent(q);
			$("#addr_link").html("<a target=_blank href='http://maps.google.com/maps?q=" + q + "'>in Google Maps öffnen</a>");
			
		}		
	},
	
	vt: {
		init: function() {
			var h = [];
			for(var c in vt_list) {
				if(c != '*')
					h.push("<option value='" + c + "'>" + vt_name[c] + "</option>");
			}
			h.sort();
			$("#vt_country").html($("#vt_country").html() + h.join("\n"));
			$("#vt_country").change(function() {
				shp.vt.countrySelected($(this).val());
			});
			$("#vt_f2_ok").click(function() {
				shp.vt.detailsSelected($("#vt_country").val(), $("#vt_f2_text").val());
			});
			$("#vt_f2_text").keydown(function(e) {
				if(e.which == 13)
					shp.vt.detailsSelected($("#vt_country").val(), $("#vt_f2_text").val());
			})
		},
		countrySelected: function(cntry) {
			$("#vt_error").hide();			
			if(!cntry.length) return;
			var c = vt_list[cntry] || vt_list['*'];
			if(typeof(c) == "string") {
				$("#vt_form2").hide();
				shp.vt.showAddr(c);
			} else {
				$("#vt_form2").show();
				shp.vt.showAddr("");
			}
		},
		detailsSelected: function(cntry, det) {
			$("#vt_error").hide();			
			var c = vt_list[cntry] || vt_list['*'];
			if(typeof(c) == "string")
				return shp.vt.countrySelected(cntry);
			for(var pattern in c) {
				if(shp.vt.match(pattern, det))
					return shp.vt.showAddr(c[pattern]);
			}
			shp.vt.showAddr("");
			$("#vt_error").show();
		},
		match: function(pattern, det) {
			var ok = false;
			det = "1" + det;
			$.each(pattern.split(","), function() {
				var s = this.split("-")
				var z = parseInt("1" + (s[1] || s[0]));
				var a = parseInt("1" + s[0]);
				while(a <= z) {
					if(det.indexOf(a) == 0)
						ok = true;
					a++;
				}
			});
			return ok
		},
		showAddr: function(ids) {
			$("#vt_addr div").hide();
			$.each(ids.split(","), function(e) {
				$("#vt_" + this).show();
			});
		}
	},
	
	showFilm: function(name, title) {
		var h = flh.getHTML("/fileadmin/flash/player.swf?u=" + name, 540, 300);
		if(document.documentElement.scrollTop);
			document.documentElement.scrollTop = 0;
		if(document.body.scrollTop);
			document.body.scrollTop = 0;
		$("body").append("<div id='flvMain'><div id='flvBackground'></div><div id='flvContent'><h1>" + title + "</h1>" + h + "</div></div>");
		$("#flvBackground").css("height", $("body")[0].scrollHeight);
		$("#flvContent h1").click(shp.hideFilm);
		$("#flvContent").css("top", $(window).scrollTop() + 50);
	},
	
	hideFilm: function() {
		$("#flvMain").remove();
		
		
	},
	
	
	addHover: function(s) {
		$(s).hover(
			function() { $(this).addClass("hover"); },
			function() { $(this).removeClass("hover"); }
		);
	},
	// box = <div>h1 div</div>
	slideToggle: function(box, boxes) {
		var details = $(box).find("div");
		if(details.css("display") == "none") {
			$(boxes).removeClass("on").find("div").hide();
			$(box).addClass("on");
			//details.css("opacity", 0)
			details.slideDown(200, function() {
				//$(this).animate({opacity: 1}, 500);
			});
		} else {
			$(box).removeClass("on");
			details.slideUp(100);
		}
	},

	scrollTop: function() {
		return self.pageYOffset ||
			$.boxModel && document.documentElement.scrollTop ||
			document.body.scrollTop;
	},


	tabClick: function(a, level) {
		var id = $(a).parent().attr("id");
		var n = id.split("_")[1];
		var ul = $(a).parents(".tntabs");
		
		ul.find(".tntab" + level).removeClass("on");
		$("#tntab_" + n).addClass("on");
		ul.nextAll(".tnboxes").find(".tnbox" + level).removeClass("on");
		$("#tnbox_" + n).addClass("on");
	},

	later: function(func, delay) {
		if(shp.timer)
			clearTimeout(shp.timer);
		shp.timer = setTimeout(func, delay || 100);
	},

	init: function() {
		this.lame = 
			($.browser.msie && parseFloat($.browser.version) < 7) ||
			($.browser.opera);
		
		$("#toplogo").click(function() {
			location.href = $(this).find("a").attr("href");
		});
		
		var si = $("#search input");
		if(!si.val().length) {
			var m = (location + "").match(/[?&]sword=([^&]+)/);
			if(m && decodeURIComponent)
				si.val(decodeURIComponent(m[1].replace(/\+/g, " ")));
			else 
				si.val(si.attr("title")).focus(function() {
					$(this).val("").unbind("focus");
				});
		}
		
		$("#topmenu > li").hover(
			function () { 
				shp.later(function() { $("iframe").css("visibility", "hidden") });
				$(this).addClass("hover"); 
			},
			function () { 
				shp.later(function() { $("iframe").css("visibility", "visible") });
				$(this).removeClass("hover"); 
			}
		)
		
		// .find("div").hide()
		
		$("#toplang").hover(
			function () { $(this).addClass("hover"); },
			function () { $(this).removeClass("hover"); }
		)
		
		$("div.product").mouseover(function() {
			var t = $(this);
			if($("#col3").find("h1").text() == t.find("h1").text())
				return;

			var o = {
				src: t.find("img").attr("src"),
				h1: t.find("h1").text(),
				h2: t.find("h2").text()
			};
			var h = "<div><img src='$src'></div><h1>$h1</h1><h2>$h2</h2>".replace(/\$(\w+)/g, function($0, $1) {
				return o[$1];
			});
			if(0 == $("#col3 img").length)
				$("#col3").html(h);
			else $("#col3 img").fadeOut(300, function() {
				$("#col3").html(h);
				$("#col3 img").fadeIn();
			})
		})
		
		$("div.product h1").click(function() {
			shp.slideToggle($(this).parent(), $(".product"));
		})

		$("div.job h1").click(function() {
			shp.slideToggle($(this).parent(), $(".job"));
		})

		$(".job_form_link").click(function() {
			$("#job_form").css("top", shp.scrollTop()).fadeIn(500);
		})
		
		$(".close").click(function() {
			$(this).parent().fadeOut('fast');
		});
		
		$(".products_submenu li").mouseover(function() {
			if($("#col3").find("h1").text() == $(this).find("h1").text())
				return;
			var h = $(this).html();
			if(0 == $("#col3 img").length)
				$("#col3").html(h);
			else $("#col3 img").fadeOut(300, function() {
				$("#col3").html(h);
				$("#col3 img").fadeIn();
			})
		});

		$(".tntab1 a").click(function() {
			shp.tabClick(this, "1");
			return false;

		});
		$(".tntab2 a").click(function() {
			shp.tabClick(this, "2");
			return false;
		});
		
		if($("#vt_addr").length)
			shp.vt.init();
		
		$("#printico").click(function() {
			window.print();
		});
		
		
		$("#downloads h1").click(function() {
			$("#downloads h1").removeClass("on");
			$(this).addClass("on");
			$(this).parent().find("div").removeClass("on");
			$(this).next("div").addClass("on");
		});
		
		shp.addHover("#gloss_tab thead div");
		
		$("a").each(function() {
			var m = ($(this).attr("href") ||  "").match(/film[_\W]+(\w+)/);
			if(m) {
				var f = m[1];
				var t = $(this).attr("title");
				$(this).click(function() {
					shp.showFilm(f, t);
					return false;
				});
			}
		});
	
		$("#topnavi").append($("#stoerer"));
		$("#stoerer").click(function() { $(this).toggleClass("on") });
		
		shp.addr.init();
	}
}

$(function() { 
	return shp.init($)
	try {
		shp.init($)
	} catch(e) {}
})