// History Enabling
(function($)
{
	var origContent = "";
	
	// Funktion um alte ajax responsed zu killen
	var lastAjaxCall = null;

	function loadContent(hash) 
	{
		if(hash != "") 
		{
			// write something on content that news page is not loaded
			$('#content').html("..");	
				
			// needed for hirtory
			if (origContent == "") { origContent = $('#content').html(); }
			
			// show loading image
			$('#content').showLoading();
			
			// get element
			var e = '#_'+hash;
			e = e.replace('=', '');
			e = e.replace('?', '');
			//alert (e);
			
			// just do something when element is known
			if ($(e).length)
			{
			
				// change style classes
				$('#menu ul li a').removeClass("active");
				$(e).addClass("active");
				
				// check element and create vars
				var isSubmenu = 			$(e).parent().parent().parent().hasClass("submenu");
				var isSubActiveSubView = 	$(e).parent().parent().parent().is(':visible');
				var isSubActiveMenuView = 	$(e).next('.submenu').is(':visible');			
				
				// when link is not in submenu and submenu is not opened
				if (!isSubmenu && !isSubActiveMenuView)
				{
					// close all submenus
					$(".submenu").slideUp(100);
				
					// open needed submenu
					$(e).next(".submenu").slideDown(100);
				}
				
				// when link is in submenu, open the submenu if it's not opened
				else if (isSubmenu && !isSubActiveSubView)
				{
					// close all submenus
					$(".submenu").slideUp(100);
				
					// open needed submenu
					$(e).parent().parent().parent().slideDown(100);
				}
			}
			
			// Load page
			$.ajax({
				url: $page_order(hash),
				cache: false,
				beforeSend: function(jqXHR) {
					if (lastAjaxCall != null)
						lastAjaxCall.abort();
   					lastAjaxCall = jqXHR;
  				},
				success: function(data)
				{
       				$('#content').html(data);
       				$load_scripts();
       				$('#content').hideLoading();
       				
       				$('#content a[href^=#]').click(function(e)
					{
						var url = $(this).attr('href');
						url = url.replace(/^.*#/, '');
						$.history.load(url);
				
						// Prevent the default click behavior.
						return false;
					});
      			},
      			error: function(xhr, ajaxOptions, thrownError){
                    var msg = "<h1>Fehler 404 - Page not found</h1>Diese Seite konnte nicht gefunden werden. Dies kann 2 Ursachen haben:<ul><li>Die Seite wurde ver&auml;ndert und ihr Link zeigt auf eine nicht mehr verf&uuml;gbare Seite.</li><li>Sie haben eine falsche URL eingebenen, &uuml;berpr&uuml;fen Sie den Link nochmals!</li></ul>";
					$("#content").html(msg);
					$('#content').hideLoading();
                } 
      		});
      					
		}
		else 
		{
			// page first load
			if ($('#content').html() == "")
			{
				$('#content').load('pages/news.php', {}, function()
				{ 
					$load_scripts();
				});
			}
		}
	}


$(document).ready(function() 
	{
		/*// SNOW
		options = {
			flakeCount : 0,        // number
			minSize : 2,            // number
			maxSize : 10,            // number
			minSpeed : 1,           // number
			maxSpeed : 4,           // number
			round : true,          // bool
			shadow : true          // bool
		};
		$(document).snowfall(options);
		*/
		
		// initialize history
		$.history.init(loadContent);
		
		$('#menu ul li a:not(.noscript)').click(function(e) 
		{
			var url = $(this).attr('href');
			url = url.replace(/^.*#/, '');
			$.history.load(url);
			
			// Prevent the default click behavior.
			return false;
		});
	});

	
	// Create Page Mapping
	var $page_order = function(page)
	{	
		var p = "";
		if (page.indexOf("?") != -1)
		{
			t = page.split("?");
			p = "?"+t[1];
		}
		
		// TODO: Staatsmeisterschaft 2011
		if (page.indexOf("staatsmeisterschaft") != -1) 									return "pages/news.php"+p;
		// TODO: 20 Jahresfeier 2011
		else if (page.indexOf("20jahresfeier") != -1) 									return "pages/news.php"+p;
		// Add news
		else if (page.indexOf("newsadd") != -1)											return "pages/news-add.php"+p;
		// Edit news
		else if (page.indexOf("newsedit") != -1) 										return "pages/news-edit.php"+p;
		// Newsletter
		else if (page.indexOf("newslettermenu") != -1) 									return "pages/newsletter.php"+p;
		// Send Newsletter
		else if (page.indexOf("sendnewsletter") != -1) 									return "pages/newsletter-send.php"+p;
		// Newsdetail
		else if (page.indexOf("shownews") != -1) 										return "pages/news-detail.php"+p;
		// News
		else if (page.indexOf("homemenu") != -1 || page.indexOf("newshome") != -1) 		return "pages/news.php"+p;
		// Couples
		else if (page.indexOf("couplesmenu") != -1 || page.indexOf("aboutmenu") != -1) 	return "pages/couples.php"+p;
		// Couples Details
		else if (page.indexOf("coupleshow") != -1) 										return "pages/couples-detail.php"+p;
		// Couple Add
		else if (page.indexOf("coupleadd") != -1) 										return "pages/couples-add.php"+p;
		// Login
		else if (page.indexOf("admin") != -1) 											return "pages/login.php"+p;
		// History
		else if (page.indexOf("historymenu") != -1) 									return "pages/history.php"+p;
		// History Add
		else if (page.indexOf("historyadd") != -1) 										return "pages/history-add.php"+p;
		// History Edit
		else if (page.indexOf("historyedit") != -1) 									return "pages/history-edit.php"+p;
		// Vorstand
		else if (page.indexOf("vorstand") != -1) 										return "pages/vorstand.php"+p;
		// Mitgliedschaft
		else if (page.indexOf("membership") != -1) 										return "pages/membership.php"+p;
		// Erfolge
		else if (page.indexOf("achievements") != -1) 									return "pages/achievements.php"+p;
		// Add Erfolg
		else if (page.indexOf("achievementadd") != -1) 									return "pages/achievements-add.php"+p;
		// Training Turnier
		else if (page.indexOf("trainingmenu") != -1 || page.indexOf("trainingcomp") != -1) 	return "pages/training-competition.php"+p;
		// Training Perfektion
		else if (page.indexOf("trainingperf") != -1) 									return "pages/training-perfektion.php"+p;
		// Training Seminare
		else if (page.indexOf("trainingsem") != -1) 									return "pages/training-seminare.php"+p;
		// Kalender
		else if (page.indexOf("schedule") != -1) 										return "pages/schedule.php"+p;
		// Event Add
		else if (page.indexOf("eventadd") != -1) 										return "pages/schedule-add.php"+p;
		// Event Edit
		else if (page.indexOf("eventedit") != -1) 										return "pages/schedule-edit.php"+p;
		// Boogienight
		else if (page.indexOf("boogienight") != -1) 									return "pages/boogienight.php"+p;
		// Galerie
		else if (page.indexOf("multimediamenu") != -1 || page.indexOf("photos") != -1) 	return "pages/galerie.php"+p;
		// Galerie Details
		else if (page.indexOf("galerieshow") != -1) 									return "pages/galerie-detail.php"+p;
		// Galerie Add
		else if (page.indexOf("galerieadd") != -1) 										return "pages/galerie-add.php"+p;
		// Galerie Edit
		else if (page.indexOf("galerieedit") != -1) 									return "pages/galerie-edit.php"+p;
		// Imprint
		else if (page.indexOf("imprint") != -1) 										return "pages/imprint.php"+p;
		// Links
		else if (page.indexOf("links") != -1) 											return "pages/links.php"+p;
		// Link Add
		else if (page.indexOf("linkadd") != -1) 										return "pages/links-add.php"+p;
		// Link Edit
		else if (page.indexOf("linkedit") != -1) 										return "pages/links-edit.php"+p;
		// Presse
		else if (page.indexOf("pressemenu") != -1) 										return "pages/presse.php"+p;
		// Presse Add
		else if (page.indexOf("presseadd") != -1) 										return "pages/presse-add.php"+p;
		// Presse Edit
		else if (page.indexOf("presseedit") != -1) 										return "pages/presse-edit.php"+p;
		// Downloads
		else if (page.indexOf("downloads") != -1) 										return "pages/downloads.php"+p;
		// Masters
		else if (page.indexOf("mastersmenu") != -1) 									return "pages/masters.php"+p;
		// Masters Details
		else if (page.indexOf("masterscat") != -1) 										return "pages/masters-detail.php"+p;
		// Competitions
		else if (page.indexOf("competitionsmenu") != -1 || page.indexOf("results") != -1) return "pages/competitions.php"+p;
		// Competitions Details
		else if (page.indexOf("competitionshow") != -1)									return "pages/competitions-detail.php"+p;
		// Competition Add
		else if (page.indexOf("compadd") != -1)											return "pages/competitions-add.php"+p;
		// Competition Edit
		else if (page.indexOf("compedit") != -1)										return "pages/competitions-edit.php"+p;
		// Competition Couples
		else if (page.indexOf("compcouples") != -1)										return "pages/competitions-couples.php"+p;
		// Shows
		else if (page.indexOf("showsmenu") != -1)										return "pages/shows.php"+p;
		// Show Add
		else if (page.indexOf("showsadd") != -1)										return "pages/shows-add.php"+p;
		// Show Edit
		else if (page.indexOf("showsedit") != -1)										return "pages/shows-edit.php"+p;
		// Video
		else if (page.indexOf("videomenu") != -1)										return "pages/videos.php"+p;
		// Video Detail
		else if (page.indexOf("videoshow") != -1)										return "pages/videos-detail.php"+p;
		// Video Add
		else if (page.indexOf("videoadd") != -1)										return "pages/videos-add.php"+p;
		// Video Edit
		else if (page.indexOf("videoedit") != -1)										return "pages/videos-edit.php"+p;
		// Specials
		else if (page.indexOf("specials") != -1)										return "pages/specials.php"+p;
		// Members
		else if (page.indexOf("members") != -1)											return "pages/members.php"+p;
		// Members edit
		else if (page.indexOf("memberedit") != -1)										return "pages/members-edit.php"+p;
		// Members add
		else if (page.indexOf("memberadd") != -1)										return "pages/members-add.php"+p;
		
		return "NOTFOUND.php";
	}
	
	// load jquery scripts
	var $load_scripts = function() 
	{
		$('.thumb').thumbs();
		$('a[rel*=lightbox]').lightBox();
	}
})(jQuery);
