DialogPerfect = function() { };

jQuery(window).load(function() {
	jQuery('body').supersleight();
});

jQuery(document).ready(function() {	
	jQuery('ul.submenu > li').hover(function() {
		jQuery(this).children('ul.subsubmenu').css('visibility', 'visible');
	}, function() {
		jQuery(this).children('ul.subsubmenu').css('visibility', 'hidden');
	});

    jQuery('.mediumBeschriftung').each(function() {
    	jQuery(this).parent().prev('a').attr('title', $(this).text());
	});
});

DialogPerfect.initMap = function(options) {
	if (GBrowserIsCompatible())
	{
		var defaults = {
			zoom: 13,
			center: new GLatLng(51.726284, 8.797302),
			divContainer: 'googleMap'
		};

		var options = $.extend(defaults, options);

		this.searchAddress = options.searchAddress;

		this.map = new GMap2(document.getElementById(options.divContainer));
		this.map.setCenter(options.center, options.zoom);
		this.map.enableScrollWheelZoom();
		this.map.addControl(new GSmallMapControl());

		marker = new GMarker(options.center);
		this.map.addOverlay(marker);

		GEvent.addListener(marker, "mouseover", function() {
			marker.openInfoWindowHtml(options.markerText);
		});

		GEvent.addListener(marker, "mouseout", function() {
			marker.closeInfoWindow();
		});
	}
};

DialogPerfect.findAddress = function(from, to) {
	if(this.gdir === undefined)
	{
		this.gdir = new GDirections(this.map, document.getElementById("maps_ergebnis"));

		GEvent.addListener(this.gdir, "load", function() { });
		GEvent.addListener(this.gdir, "error", function() {
			var statusCode = DialogPerfect.gdir.getStatus().code;

			if (statusCode == G_GEO_UNKNOWN_ADDRESS || statusCode == G_GEO_MISSING_QUERY)
			{
				alert("Die gesuchte Adresse wurde nicht gefunden.");
			}
			else if (statusCode == G_GEO_SERVER_ERROR || statusCode == G_GEO_BAD_KEY || statusCode == G_GEO_BAD_REQUEST)
			{
				alert("Der Geo-Server wurde nicht erreicht.");
			}
			else alert("Es ist ein fehler aufgetreten.");
		});
	}

	if(to === undefined) to = this.searchAddress;

	this.gdir.load("from: " + from + " to: " + to, { "locale": "de_DE" });
};

jQuery.fn.ticker = function(options) {
	var defaults = {
		speed: 50
	};

	var options = jQuery.extend(defaults, options);

	var leftPosition = jQuery(this).width();
	var startPosition = leftPosition;
	var tickerDiv = jQuery(this).children().eq(0);
	var isMouseOver = false;

	jQuery(tickerDiv).css('left', leftPosition + 'px').hover(function() {
		isMouseOver = true;
	}, function() {
		isMouseOver = false;
	});

	jQuery.fn.ticker.tickerTimer = function() {
		if(!isMouseOver) leftPosition -= 3;

		if(leftPosition < -(tickerDiv.width()))
		{
			leftPosition = startPosition;
		}

		jQuery(tickerDiv).css('left', leftPosition + 'px');

		setTimeout("jQuery.fn.ticker.tickerTimer()", options.speed);
	};

	jQuery.fn.ticker.tickerTimer();
};

jQuery.fn.supersleight = function(settings) {
	settings = jQuery.extend({
		imgs: true,
		backgrounds: true,
		shim: baseUrl + 'images/blank.gif',
		apply_positioning: false
	}, settings);

	return this.each(function(){
		if (jQuery.browser.msie && parseInt(jQuery.browser.version, 10) < 7 && parseInt(jQuery.browser.version, 10) > 4) {
			jQuery(this).find('*').andSelf().each(function(i,obj) {
				var self = jQuery(obj);
				if (settings.backgrounds && self.css('background-image').match(/\.png/i) !== null) {
					var bg = self.css('background-image');
					var src = bg.substring(5,bg.length-2);
					var mode = (self.css('background-repeat') == 'no-repeat' ? 'crop' : 'scale');
					var styles = {
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='" + mode + "')",
						'background-image': 'url('+settings.shim+')'
					};
					self.css(styles);
				};
				if (settings.imgs && self.is('img[src$=png]')){
					var styles = {
						'width': self.width() + 'px',
						'height': self.height() + 'px',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + self.attr('src') + "', sizingMethod='scale')"
					};
					self.css(styles).attr('src', settings.shim);
				};
				/* apply position to 'active' elements */
				if (settings.apply_positioning && self.is('a, input') && (self.css('position') === '' || self.css('position') == 'static')){
					self.css('position', 'relative');
				};
			});
		};
	});
};
