(function($) {

	/*
	 * Liveticker methods
	 */

	var _updateTicker = function(tickerDiv, options) {
		$.getJSON("/netzwerk/bestenDerWoche/379402779304830775_verbandTicker-" + options.verband + ".json", function(data) {
			var feed = data.feed;
			ul = $("#ticker", tickerDiv);
			$(ul).html("");
			for( i=0; i<feed.entries.length; i++) {
				var entry = feed.entries[i];

				txt = "<p class='title'>";
				if( entry.type ) {
					txt += "<img src='/common_fos/dat/img/ticker/" + entry.type + ".png' />";
				}
				if( entry.link ) {
					txt += "<a title='Spielbericht &ouml;ffnen' href='" + entry.link + "' target='_blank'>" + entry.title + "</a>";
				} else {
					txt += "<a>" + entry.title + "</a>";
				}
				txt += "</p>";
				txt += "<div class='timestamp'>" + entry.timestamp + "</div>";
				txt += "<span class='text'>" + entry.text + "</span>";

				li = document.createElement("li");
				$(li).html(txt);
				$(ul).append(li);
			}

			$(ul).cycle({
				fx: 'scrollUp', 
				pause: true, 
				speed: 2000, 
				timeout: 8000, 
				nowrap: 1, 
				end: function() {
					_updateTicker(tickerDiv, options);
				}
			});
		});
	}, 

	_initTicker = function(tickerDiv, options) {
		try {
			var cookieName = options.cookieName + "_" + options.verband;

			if( $.cookie(cookieName) == 'true' ) {
				$(options.tickerButton).hide();
				$(tickerDiv).show();
				_updateTicker(tickerDiv, options);
			} else {
				$(options.tickerButton).show();
				$(tickerDiv).hide();
			}

			$(options.hideButton).click(function() {
				$(".box_content", tickerDiv).html("<ul id='ticker'></ul>");
				$(tickerDiv).slideToggle('slow');
				$(options.tickerButton).slideToggle('slow');
				_oewa(options);

				$.cookie(cookieName, 'false', { path : "/" });
			});

			$(options.tickerButton).click(function() {
				$(options.tickerButton).slideToggle('slow');
				$(tickerDiv).slideToggle('slow');
				$.cookie(cookieName, 'true', { path : "/" });
				_oewa(options);

				try {
					_updateTicker(tickerDiv, options);
				} catch( error ) {
					try { console.log("[liveticker] " + error); } catch( noConsole ) { alert("Liveticker: " + error); }
				}
			});
		} catch( error ) {
			try { console.log("[liveticker] " + error); } catch( noConsole ) { alert("Liveticker: " + error); }
		}
	}, 

	/*
	 * Unsere Vereine
	 */

	_initVereine = function(vereineElement, options) {
		$.getJSON("/netzwerk/bestenDerWoche/379402779304830775_zufallsvereine-" + options.verband + ".json", function(data) {
			var vereine = data.vereine;
			ul = $(vereineElement);
			$(ul).html("");
			for( i=0; i<vereine.length; i++) {
				var verein = vereine[i];

				var html = "<a href='" + verein.detailLink + "' title='Vereinsseite von \"" + verein.name + "\" &ouml;ffnen' target='_blank'>";
				html += "<img src='" + verein.logoUrl + "'>";
				html += "<div class='vereinsname'>" + verein.name + "<br />" + verein.hoechsteLiga + "</div>";
				html += "</a>";

				li = document.createElement("li");
				$(li).html(html);
				$(ul).append(li);
			}

			$(vereineElement).cycle({
			    fx: 'fade', 
			    random: 1, 
			    pause: true, 
			    speed: 2500, 
			    timeout: 10000
			});
		});
	}, 

	/*
	 * Verbandsdatenservice
	 */

	_initDatenservice = function(element, options) {
		$(window).hashchange( function(){
			_loadDatenservice(window.location.hash, element, options);
		});
		if( !window.location.hash || !window.location.hash.indexOf(options.hashPrefix) === 0 ) {
			window.location.hash = options.hashPrefix + options.startUrl;
		} else {
			_loadDatenservice(window.location.hash, element, options);
		}
	}, 

	_loadDatenservice = function(urlAsLocationHash, element, options) {
		_displayLoading(element, options);
		$.get(urlAsLocationHash.substring(options.hashPrefix.length), function(data) {
			_showDatenservice(data, element, options);
		});
	}, 

	_showDatenservice = function(data, element, options) {
		var startTag = "<!-- ** Datenservice Include Start ** -->";
		var endTag = "<!-- ** Datenservice Include End ** -->";
		
		var mydata = "";
		
		var input = data;
		while( input.indexOf(startTag) != -1 ) {
			mydata += input.substring(input.indexOf(startTag), input.indexOf(endTag));
			input = input.substring(input.indexOf(endTag) + endTag.length);
		}

		if( !options.maps ) {
			var mapsStart = "<!-- ** GoogleMaps Start ** -->";
			var mapsEnd = "<!-- ** GoogleMaps End ** -->";

			if( mydata.indexOf(mapsStart) != -1 ) {
				while( mydata.indexOf(mapsStart) != -1 ) {
					var idxStart = mydata.indexOf(mapsStart);
					var idxEnd = mydata.indexOf(mapsEnd);

					var before = mydata.substring(0, idxStart); 
					var after = mydata.substring(idxEnd + mapsEnd.length);

					mydata = before + after;
				}
			}
		}

		try {
			$(element).html(mydata);
			
			$("#spielsuche", element).html("<h2>Bitte w&auml;hlen Sie eine Gruppe und dann einen Bewerb aus.</h2>");

			$("#navigation .cssMenu ul li", element).click(function(){
				var link = $("a", this).attr("href");
				window.location=link;
			});
			
			$("#navigation .cssMenu ul li a", element).each(function() {
				if( $(this).attr("href") ) {
					$(this).attr("href", options.hashPrefix + $(this).attr("href"));
				}
			});
	
			$("#tabAuswahl li a", element).each(function() {
				if( $(this).attr("href") ) {
					$(this).attr("href", options.hashPrefix + $(this).attr("href"));
				}
			});
			
			$("tr[highlight]", element)
				.mouseover(function() {
					_highlightDatenservice(element, $(this).attr("highlight"));
				})
				.mouseout(function() {
					_highlightDatenservice(element);
				}
			);
			
			if( options.fancyMenu ) {
				$("#navigation .cssMenu", element)
					.mouseenter(function() {
						$("ul", this).slideDown(100);
						$("table", element).animate({opacity: 0.5}, 200);
					})
					.mouseleave(function() {
						if( !($(this).attr("clicked")) ) {
							$("ul", this).hide();
							$("table", element).animate({opacity: 1}, 100);
						}
					})
					.click(function() {
						if( $(this).attr("clicked") ) {
							$(this).removeAttr("clicked");
							$("ul", this).hide();
							$("table", element).animate({opacity: 1}, 100);
						} else {
							$(this).attr("clicked", "true");
							$("ul", this).slideDown(100);
							$("table", element).animate({opacity: 0.5}, 200);
						}
					}
				);
			} else {
				$("#navigation .cssMenu", element)
					.mouseenter(function() {
						$("ul", this).show();
					})
					.mouseleave(function() {
						if( !($(this).attr("clicked")) ) {
							$("ul", this).hide();
						}
					})
					.click(function() {
						if( $(this).attr("clicked") ) {
							$(this).removeAttr("clicked");
							$("ul", this).hide();
						} else {
							$(this).attr("clicked", "true");
							$("ul", this).show();
						}
					}
				);
			}


			$("#icalAuswahl", element)
				.mouseenter(function() {
					$("ul", this).show();
				})
				.mouseleave(function() {
					if( !($(this).attr("clicked")) ) {
						$("ul", this).hide();
					}
				})
				.click(function() {
					if( $(this).attr("clicked") ) {
						$(this).removeAttr("clicked");
						$("ul", this).hide();
					} else {
						$(this).attr("clicked", "true");
						$("ul", this).show();
					}
				}
			);

			$("a[rel=\"ppIframe\"]", element).fancybox({
				type : 'iframe',
				padding : 20,
				centerOnScroll : false,  
				overlayColor : "#000", 
				overlayOpacity : 0.7,
				autoDimensions : false, 
				showNavArrows : false, 
				width : 600,
				height : 400, 
				transitionIn : "fade", 
				transitionOut : "fade", 
				speedIn : 500, 
				speedOut : 50
			});
			
			$("#ds #tabelle .clubVote a").fancybox({
				type : 'iframe',
				padding : 5,
				centerOnScroll : false,  
				overlayColor : "#000", 
				overlayOpacity : 0.7,
				autoDimensions : false, 
				showNavArrows : false, 
				width : 670,
				height : 790, 
				transitionIn : "fade", 
				transitionOut : "fade", 
				speedIn : 500, 
				speedOut : 50, 
				titleShow : false
			});

			_oewa(options);

			// load callback
			try {
				eval(options.loadCallback);
			} catch(error) {
				try { console.log("[datenservice] " + error); } catch( noConsole ) { /* ignore */ }
			}
		} catch( error ) {
			try { console.log("[datenservice] " + error); } catch( noConsole ) { alert("Datenservice: " + error); }
		}
	}, 

	_highlightDatenservice = function(element, styleClasses) {
		$("tr[highlight]", element).removeClass("selected");
		
		if( styleClasses ) {
			var split = styleClasses.split(" ");
			for( i=0; i<split.length; i++ ) {
				styleClass = split[i];
				$("tr." + styleClass, element).addClass("selected");
			}
		}
	}, 

	_displayLoading = function(element, options) {
		$(element).prepend($(options.loadingTemplate).html());
		if( $(options.container).length > 0 ) {
			var height = $(options.container).height();
			$(".loading", element).css("height", height + "px");
		}
	}, 

	/*
	 * Vereinssuche
	 */

	_executeVereinQuery = function(element, options) {
		$.getJSON("/datenservice/vereine/vereinssucheJSON.ds?verbandKuerzel=" + options.verband + "&query=" + encodeURI(options.query), function(data) {
			if( data.searchresult.length === 0 ) {
				$(element).hide();
			} else {
				for( i = 0; i < data.searchresult.length; i++ ) {
					var verein = data.searchresult[i];

					var html = "<a href='" + verein.detailLink + "' title='Vereinsseite von \"" + verein.name + "\" &ouml;ffnen' target='_blank'>";
					html += "<div class='img_container'><img src='" + verein.logoUrl + "'></div>";
					html += "<div class='vereinsname'>" + verein.name + "<br />" + verein.hoechsteLiga + "</div>";
					html += "</a>";
		
					var li = document.createElement("li");
					$(li).html(html);

					$("ul", element).append(li);
				}
			}
		});
	}, 

	/*
	 * OEWA Pixel Updates
	 */

	_oewa = function(options) {
		var lnk = "http://oefb.oewabox.at/cgi-bin/ivw/CP/RedCont/Sport/Fussball/" + options.portal;
		lnk += "?r="+escape(document.referrer)+"&d="+(new Date()).getTime();
		$(options.oewaDiv).html("<img src='" + lnk + "' width='1' height='1'>");
	}, 

	/*
	 * fussballoesterreich.at Template Page
	 */

	_initPage = function(options) {
		_updateBannerPositions();
		$(window).resize(function() {
  			_updateBannerPositions();
			_updateDatenserviceBanners();
		});

		if( options.hyphenate ) {
			for( i=0; i<options.hyphenateElements.length; i++ ) {
				var elem = options.hyphenateElements[i];
				$(elem).hyphenate({
					minwordlength: 4, 
					displaytogglebox: false, 
					onhyphenationdonecallback : function () {
						$(elem).addClass('hyphenateDone');
					}
				});
			}
		}

		for( i=0; i<options.galleries.length; i++ ) {
			var elem = options.galleries[i];

			var gallerySize = $(elem + " ul li").length;
			$(elem + ' ul').jcarousel({
				scroll: 1, 
				auto: 4, 
				animation: 1000, 
				wrap: 'circular', 
				initCallback: function(carousel) {
					carousel.buttonNext.bind('click', function() {
						carousel.options.animation=150;
						carousel.startAuto(0);
					});
					carousel.buttonPrev.bind('click', function() {
						carousel.options.animation=150;
						carousel.startAuto(0);
					});

					if( gallerySize < (options.autoSlideGalleryLimit*2) || $(carousel.list[0]).attr("no-scroll") !== undefined ) {
						carousel.stopAuto(0);
					} else {
						carousel.clip.hover(function() {
						carousel.stopAuto();
					    }, function() {
						carousel.startAuto();
					    });
					}
				
				}, 
				buttonPrevHTML: '<div class="gallery_nav prev"><img class="arrow1" src="/common_fos/dat/img/pfeil_left.png" /><img class="arrow2" src="/common_fos/dat/img/pfeil_left.png" /><img class="arrow3" src="/common_fos/dat/img/pfeil_left.png" /></div>',
	 			buttonNextHTML: '<div class="gallery_nav next"><img class="arrow1" src="/common_fos/dat/img/pfeil_right.png" /><img class="arrow2" src="/common_fos/dat/img/pfeil_right.png" /><img class="arrow3" src="/common_fos/dat/img/pfeil_right.png" /></div>'
			});
		}

		$(".slideDown").weightedCycle({fx:"scrollDown"});
		$(".slideLeft").weightedCycle({fx:"scrollLeft"});
		$(".fade").weightedCycle({fx:"fade"});
		$(".fade_slow").weightedCycle({fx:"fade", random:1, speed:2500, timeout:10000});

		$(".light .galleryImg").fancybox({
			padding : 15,
			centerOnScroll : false,  
			overlayColor : "#000", 
			overlayOpacity : 0.7,
			transitionIn : "fade", 
			transitionOut : "fade", 
			speedIn : 500, 
			speedOut : 50,
			titleFormat : _fancyTitle
		});
	}, 

	_fancyTitle = function(title, currentArray, currentIndex, currentOpts) {
		var str = "<table cellspacing='0' cellpadding='0' id='fancybox-title-float-wrap'><tbody><tr><td id='fancybox-title-float-left'></td><td id='fancybox-title-float-main'>";
		str += "Bild " + (currentIndex+1) + " von " + currentArray.length + ": ";
		str += title;
		str += "</td><td id='fancybox-title-float-right'></td></tr></tbody></table>";
		return str;
	}, 


	_updateBannerPositions = function() {
		var left = $("#container").offset().left;
		var width = $("#container").width();
		$("#sky_side").css("left", (left+width+10));
		$("#sky_side").show();
	}, 

	_updateDatenserviceBanners = function(pageCategory) {
		var categorySelector = pageCategory === "nw" ? "showNW" : "showKM";
		var cycleSelectors = ["#ds_banner .slideDown .slide", "#ds_banner .slideLeft .slide", "#ds_banner .fade .slide"];
		for( var i=0; i < cycleSelectors.length; i++) {
			$(cycleSelectors[i]).each(function() {
				if( !$(this).hasClass(categorySelector) ) {
					$(this).remove();
				}
			});
		}

		var rectSourceSelector = "#ds_banner #rectangles";
		var rectTargetSelector = ".col2 #fos";
		var rectTargetContentSelector = ".col2 #fos .box_content";

		var sbSourceSelector = "#ds_banner #superbanner";
		var sbTargetSelector = "#superbannerContainer";
		var sbTargetContentSelector = "#superbannerContainer .box_content";
	

		if( $("#ds_content").length !== 0 && $("#ds_banner").length === 0 ) {
			// Datenservice aber ohne Banner
			$(rectTargetSelector).hide();
		}
		
		// copy rectangles to ".col2 #fos" element
		if( $(rectSourceSelector).length !== 0 ) {
			$(rectSourceSelector).hide();
			if( $("#ds_banner").length === 0 ) {
				$(rectTargetSelector).hide();
			} else {
				$(rectTargetContentSelector).html($(rectSourceSelector).html());
				$(rectTargetSelector).show();
			}
		}

		// copy superbanner to "#superbannerContainer" element (only in res1024 mode)
		if( $(".res1024 " + sbSourceSelector).length !== 0 ) {
			$(sbSourceSelector).hide();
			$(sbTargetContentSelector).html($(sbSourceSelector).html());
			$(sbTargetSelector).show();
		}

		$("#ds_banner .slideDown, #fos .slideDown, #superbannerContainer .slideDown").weightedCycle({fx:"scrollDown"});
		$("#ds_banner .slideLeft, #fos .slideLeft, #superbannerContainer .slideLeft").weightedCycle({fx: 'scrollLeft'});
		$("#ds_banner .fade, #fos .fade, #superbannerContainer .fade").weightedCycle({fx: 'fade'});		
	};

	/*
	 * jQuery public methods
	 */

	$.fn.extend({
		fos : function(options) {
			var defaults = {
				hyphenate : false, 
				hyphenateElements : [".hyphenate", "#news_content p"], 
				galleries : [".gallery"], 
				autoSlideGalleryLimit : 5
			};
			var options = $.extend(defaults, options);

			return this.each(function(index) {
				try {
					_initPage(options);
				} catch( error ) {
					try { console.log("[fos] " + error); } catch( noConsole ) { alert("Page Setup: " + error); }
				}

			});
		}, 

		liveticker : function(options) {
			var defaults = {
				verband : 'O', 
				cookieName : 'tickerVisible', 
				tickerButton : '#liveticker_button', 
				hideButton : '#liveticker_content .hide', 
				oewaDiv : '#oewa', 
				portal : 'ooefv.at'
			};
			var options = $.extend(defaults, options);

			return this.each(function(index) {
				try {
					_initTicker(this, options);
				} catch( error ) {
					try { console.log("[liveticker] " + error); } catch( noConsole ) { alert("Liveticker: " + error); }
				}
			});
		}, 

		zufallsvereine : function(options) {
			var defaults = {verband : 'O'};
			var options = $.extend(defaults, options);

			return this.each(function(index) {
				try {
					_initVereine(this, options);
				} catch( error ) {
					try { console.log("[zufallsvereine] " + error); } catch( noConsole ) { alert("Unsere Vereine: " + error); }
				}
			});
		}, 

		queryVereine : function(options) {
			var defaults = {
				verband : 'O', 
				query : ''
			};
			var options = $.extend(defaults, options);

			return this.each(function(index) {
				try {
					_executeVereinQuery(this, options);
				} catch( error ) {
					try { console.log("[queryVereine] " + error); } catch( noConsole ) { alert("Vereinssuche: " + error); }
				}
			});
		}, 

		datenservice : function(options) {
			var defaults = {
				verband : 'O', 
				startUrl : '/netzwerk/datenservice/379402779304830775_O.htm?verbandKuerzel=O', 
				hashPrefix : '#ds=', 
				container : "#ds_content", 
				loadingTemplate : '#template_loading', 
				maps : false, 
				oewaDiv : "#oewa", 
				portal : 'ooefv.at', 
				fancyMenu : false, 
				loadCallback : null
			};

			if( options.verband ) {
				defaults.startUrl = '/netzwerk/datenservice/379402779304830775_' + options.verband + '.htm?verbandKuerzel=' + options.verband;
			}

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

			return this.each(function(index) {
				try {
					_initDatenservice(this, options);
				} catch( error ) {
					try { console.log("[datenservice] " + error); } catch( noConsole ) { alert("Datenservice: " + error); }
				}
			});
		}, 

		updateDatenserviceBanners : function(pageCategory) {
			try {
				_updateDatenserviceBanners(pageCategory);
			} catch( error ) {
				try { console.log("[UpdateDatenserviceBanners] " + error); } catch( noConsole ) { alert("Datenservice Werbung: " + error); }
			}
		}
	});
})(jQuery);



