jQuery(function () {
/********** EffectImgOverlay **********/
    jQuery(".EffectImgOverlay").each(function () {
        var EffectImgOverlay = jQuery(this);
        var Description = EffectImgOverlay.attr("alt");

        var WrapDiv = jQuery("<div class='EffectImgOverlay'>");
        var DescriptionSpan = jQuery("<span>" + Description + "</span>");
        DescriptionSpan.width(EffectImgOverlay.width() - 10);
        EffectImgOverlay.removeClass("EffectImgOverlay").wrap(WrapDiv).after(DescriptionSpan);
        EffectImgOverlay.hoverIntent(function (e) {
            jQuery(this).next('span').fadeOut(650);
        }, function (e) {
            if (e.relatedTarget.tagName != "SPAN")
                jQuery(this).next('span').fadeIn();
            else {
                jQuery(e.relatedTarget).mouseleave(function (e) {
                    if (e.relatedTarget.tagName != "IMG")
                        jQuery(this).fadeOut();
                });
            }
        });
    });

/********** EffectPopup **********/	
		jQuery(".EffectPopup").each(function(i){
			jQuery(this).wrap("<div id='Popup" + i + "'>");
			var Container = jQuery(this).closest("div");
			var PopupWidth = jQuery(this).width();
			var PopupContent1 = jQuery("td:eq(0)", this).html();
			var PopupContent2 = jQuery("td:eq(1)", this).html();
			jQuery(this).remove();
			var Content = jQuery("<div style='display:none;'><div id='Popup_" + i +"' style='width:" + PopupWidth + "px;'>" + PopupContent2 + "</div></div>");
			Container.append(PopupContent1);
			jQuery(Container).append(Content);
			var PopupButton = jQuery(".EffectPopupButton", Container).html();
			var Link = jQuery("<a href='#Popup_" + i +"'>" + PopupButton + "</a>").addClass("EffectPopupButton");
			jQuery(".EffectPopupButton", Container).replaceWith(Link);
		});
		
		jQuery("a.EffectPopupButton").fancybox({
				'type': 'inline',
        'transitionIn': 'elastic',
        'transitionOut': 'elastic',
        'speedIn': 600,
        'speedOut': 200,
        'overlayShow': true,
				'overlayOpacity': 0,
				'showCloseButton': true,
				'titleShow': false,
				'padding': 20
    });

/********** EffectLightbox **********/
		jQuery("a.EffectLightbox").fancybox({
        'transitionIn': 'elastic',
        'transitionOut': 'elastic',
        'speedIn': 400,
        'speedOut': 200,
        'overlayShow': true,
				'overlayOpacity': 0.6,
				'overlayColor': '#000',
				'showCloseButton': true,
				'padding': 0	
    });

    jQuery(".EffectLightbox").attr("rel", "Slideshow");


/********** EffectZoom **********/
    jQuery('.EffectZoom').each(function () {
        var options = {
            zoomWidth: jQuery('img', this).width() * 1.8,
            zoomHeight: jQuery('img', this).height() * 1.8,
            xOffset: 10,
            yOffset: 0,
            title: false,
            showEffect: "fadein",
            fadeinSpeed: "medium",
            hideEffect: "fadeout",
            fadeoutSpeed: "medium",
            position: "right"
        };
        jQuery(this).jqzoom(options);
    });

/********** EffectExpand **********/
jQuery('.EffectExpandTable').each(function(i){
		jQuery(this).after($("<div class='EffectExpander_" + i +"'>" + jQuery('td:first', this).html() + "</div><div class='EffectExpandContent_" + i + "'>" + jQuery('.EffectExpandContent', this).html() + "</div>")).remove();
		jQuery(".EffectExpander_" + i + " .EffectExpandButton").wrap("<a class='EffectExpandLink' href='javascript:void(0)' />");
		jQuery('.EffectExpandContent_' + i ).hide();
    jQuery(".EffectExpander_" + i + " .EffectExpandLink").click(function () {
        jQuery('.EffectExpandContent_' + i ).slideToggle();
    });
		
		});
});<!-- close event -->

/********** GoogleMap **********/
// Extend javascript array with search function
Array.prototype.search = function (s, d) {
    var len = this.length;
    for (var i = 0; i < len; i++) {
        if (this[i][0] == s)
            return this[i][1];
    }
    return d;
}

/********** Youtube **********/
var ToFlexYoutube = {
    SwfObjectFilePath: SkinPath + 'HtmlTemplates/swfobject/swfobject.js',
    GetSwfUrl: function (url) {
        if (url.substr(0, 31) == "http://www.youtube.com/watch?v=") url = "http://www.youtube.com/v/" + url.substr(31);
        return url;
    },
    InitializePlayer: function () {
        if (typeof (swfobject) == "undefined") {
            jQuery.getScript(this.SwfObjectFilePath, this.EmbedSwfPlayer);
        } else
            this.EmbedSwfPlayer();
    },
    EmbedSwfPlayer: function () {
        jQuery(".xEffectYoutube").each(function (i) {
            var EffYoutube = jQuery(this);
            var swfWidth = EffYoutube.width();
            var swfHeight = EffYoutube.height();
            var url = ToFlexYoutube.GetSwfUrl(jQuery.trim(jQuery(".xEffectYoutubeAddress", this).text()));
            var ID = "EffectYoutube_" + i;
            EffYoutube.after(jQuery("<div id='" + ID + "'></div>"));
            if (url.match(/^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/))
                swfobject.embedSWF(url, ID, swfWidth, swfHeight, "8", "", {}, { menu: "false", loop: "false", wmode: "opaque" });
            else
                jQuery("#" + ID).text("Video konnte nicht geladen werden. Möglicherweise haben Sie eine falsche Adresse angegeben.");
            jQuery("#" + ID).wrap("<div>");
            EffYoutube.remove();
        });
    }
};

/********** Google Maps **********/
var ToFlexGMap = {
	GMapScriptURL: "http://maps.google.com/maps/api/js?sensor=false",
	ScriptIsLoaded: false,
	InitializeMap: function () {
		jQuery.getScript(ToFlexGMap.GMapScriptURL + "&callback=ToFlexGMap.ApplyMap");
	},
	ApplyMap: function () {
		jQuery(".xEffectGMap").each(function (o) {
			var Table = jQuery(this);
			var Wrapper = jQuery("<div class='EffectGMapWrapper'></div>");
			Table.after(Wrapper);
			var ID = "EffectGMap_" + o;
			var Map = jQuery("<div class='EffectGMapContent' id='" + ID + "'></div>").width(Table.width()).height(Table.height()).appendTo(Wrapper);
			
			var MapOptions = {
				mapTypeControl: true,
				mapTypeControlOptions: { mapTypeIds: [ google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.ROADMAP ] },
				zoom: parseInt(jQuery(".Zoom", this).text()) || 10,
				disableDefaultUI: true,
				mapTypeId: jQuery(".MapType", this).text() == "SATELLITE" ? google.maps.MapTypeId.SATELLITE 
					: jQuery(".MapType", this).text() == "HYBRID" ? google.maps.MapTypeId.HYBRID
					: jQuery(".MapType", this).text() == "ROADMAP" ? google.maps.MapTypeId.ROADMAP
					: jQuery(".MapType", this).text() == "TERRAIN" ? google.maps.MapTypeId.TERRAIN
					: google.maps.MapTypeId.ROADMAP,
				panControl: true,
				zoomControl: true,
				scrollwheel: false
			};
			
			var Map = new google.maps.Map(document.getElementById(ID), MapOptions);
			
			jQuery("tbody tr", Table).each(function (i) {
				var MapData = {
					Address: jQuery.trim(jQuery(".xEffectGMapAddress", this).text().replace(/[\r\n]+/g, "")),
					BubbleText: jQuery(".xEffectGMapCallout", this).html(),
					UseExactPos: jQuery(".UseExactPos", this).text().toLowerCase() == "true",
					ExactLat: parseFloat(jQuery(".ExactLat", this).text()),
					ExactLng: parseFloat(jQuery(".ExactLng", this).text()),
					OpenMarker: jQuery(".OpenMarker", this).text().toLowerCase() == "true"
				};
				
				if(MapData.UseExactPos)
				{
					var point = new google.maps.LatLng(MapData.ExactLat, MapData.ExactLng);
					if (point) {
						Map.setCenter(point);
						ToFlexGMap.AddMarker(Map, MapData, point);
					}
				}
				else if (MapData.Address != "" || MapData.Address != " ") {
					var geocoder = new google.maps.Geocoder();
					geocoder.geocode({'address' : MapData.Address}, function(results, status) {
						if (status == google.maps.GeocoderStatus.OK) {
							Map.setCenter(results[0].geometry.location);
							ToFlexGMap.AddMarker(Map, MapData, results[0].geometry.location);
						}
					});
				}
			});
			
			Table.remove();
		});
	},
	
	AddMarker: function (Map, MapData, Position) {
		// Create InfoWindow
		var infoWindow = new google.maps.InfoWindow({
			content : MapData.BubbleText
		});
		
		// Create Marker
		var marker = new google.maps.Marker({
			position: Position,
			map: Map
		});
	
		// Add Event listener
		google.maps.event.addListener(marker, 'click', function(){
			infoWindow.open(Map, marker);
		});
		
		google.maps.event.addListener(Map, 'tilesloaded', function(){
			infoWindow.open(Map, marker);
			google.maps.event.clearListeners(Map, 'tilesloaded');
		});
	}
};

//Initialize Player and Maps
jQuery(function () {
    ToFlexGMap.InitializeMap();
    ToFlexYoutube.InitializePlayer();
});
