var autoplayTimer = false;
var autoPlaySpeed = 5000;
var change_image = false;

(function($) {
	
	var menuL1 = $("#menuL1");
	var menuL2 = $(".menuL2");
	var menuL3 = $(".menuL3");
	var mainContainer = $('.content');
	var container = $(".mainContent");	
	var sideContainer = $(".sideContent");
	var alertDiv = $('<div id="alert" class="hidden"><img src="images/base/loadani.gif" alt="" width="24px" height="24px" /></div>');
	var loading_process = false;
	var map_coords = 'undefined';
	var content_hash = [];
		
	init_container();
	
	$.historyInit(changeContent);

	function removeSel() {
		$("li", menuL1).removeClass('current');
	}
	
	function selectMenu(url) {
		removeSel();
		$('a[href=' + url + ']', menuL1).parent('li').addClass("current");
	}
	
	function redirect(url) {
		if (jQuery.historyCurrentHash != '#' + url) {			
			$.historyLoad(url);
		}		
	}
	function changeMenu(menu1, menu2, menu3) {
		menuL1.html(menu1);
		init_container();	
		menuL2.fadeOut(function(){
			$(this).html(menu2).fadeIn('slow', function(){
				init_container();	
			});
		})
		menuL3.hide().removeClass('hidden').html(menu3);
		init_container();	
		if (menu3 == "") {
			menuL3.slideUp().addClass('hidden');
		} else {
			menuL3.slideDown();
		}
	}
	
	/**
	 * Simple
	function changeMenu(menu1, menu2, menu3) {
		menuL1.html(menu1);
		menuL2.html(menu2);
		menuL3.removeClass('hidden').html(menu3);
		init_container();	
		if (menu3 == "") {
			menuL3.addClass('hidden');
		} 
	}
	*/
	function changeSideContainer(html) {
			sideContainer.html(html).fadeIn();
			init_container();	
	}
	function changeContainer(content) {
    var newContent = '';
		container.fadeOut('fast', function(){
         $.each(content, function(j,html){
          	newContent += html;
            container.html(newContent);
           	container.fadeIn("slow", function(){
           		init_container();	
				});
         });         
      });		
	}

	
	function clearContainers() {
		container.fadeOut();
		sideContainer.fadeOut();
	}
		
	function changeContainer2(content) {
		container.animate({
			"opacity": 0
		}, 600, 'backout', function() {
			$.each(content, function(j,child){
          	container.html(child);
				container.animate({
					"opacity": 1
				}, 600, 'backout' ); 
			});
		}); 		
	}
	
	function beginAlert() {
		stopAlert();
		clearContainers();
		loading_process = true;
		$('#alert').removeClass('hidden');		
	}
	
	function stopAlert() {				
		$('#alert').addClass('hidden');
	}
	
	function changeContent(url) {		
		if (!loading_process && url && url != 'undefined') {			
			removeSel();
			selectMenu(url);
			if($.browser.msie) {				
				url = encodeURIComponent(url);
			}
			beginAlert();
			if (!$('body').data(url)) {
				$.getJSON("json.php?type=showcontent&url="+url,
					function(data){
						proceedJSONdata(data);
						loading_process = false;
						stopAlert();
						$('body').data(url, data);
		     		}
		     	);
			} else {				
				data = $('body').data(url);
				proceedJSONdata(data);
				loading_process = false;
				stopAlert();
			}
		} else if (loading_process) {
			beginAlert();
		}
	}
	/**
	 * JSON
	 *
	 * @param json $data
	 */
	function proceedJSONdata(data) {
		$('body').attr('id', data.type);
		document.title = data.title;
		changeMenu(data.menu1, data.menu2, data.menu3);
		changeSideContainer(data.sideContent);
		changeContainer(data.content);
	}
	
	// init_container
	function init_container()  {
		$('body').append(alertDiv);
		// Newsletters form
	  $('#newsletter').ajaxForm({
	      dataType:  'json',
	      url:        'json.php?type=showcontent&url=' + $('#url').val(), 
	      beforeSubmit : validateNewsletter,
	      success:   proceedJSONdata
	  });
		// Newsletters remove form
	  $('#newsletterremove').ajaxForm({
	      dataType:  'json',
	      url:        'json.php?type=showcontent&url=' + $('#url').val(), 
	      beforeSubmit : validateNewsletterremove,
	      success:   proceedJSONdata
	  });
	  // Contact form
	  $('#contact').ajaxForm({
	      dataType:  'json',
	      url:        'json.php?type=showcontent&url=' + $('#url').val(), 
	      beforeSubmit : validateContact,
	      success:   proceedJSONdata
	  });
//	  load_images();
	   // init Gallery
	   init_gallery();
		//Scrollbar
		initScrollbar();
		//A=Lightbox
		init_lightbox();
	  // Main menu
		menuL1.lavaLamp({
			fx: "backout",
			speed: 700,
			click: function(event, menuItem) {
				redirect($(menuItem).find('a').attr('href'));
				return false;
			}
		});
		// A=history
		$('a[rel=history]').bind('click', function(el){
			removeSel();
			redirect($(this).attr('href'));
			return false;
		})	
		//Googlemaps
		init_googlemaps();
	}
	
	function init_googlemaps(){
		if ($('#map').length > 0) {
			var map = new GMap2(document.getElementById("map"));
			if (map_coords == 'undefined') {
				$.getJSON("json.php?type=getcords",
				function(cords){
					map_coords = cords;
					configure_googlemaps(map, cords);
		      });    
			} else {
				configure_googlemaps(map, map_coords)
			}
		}
	}
	
	
})(jQuery);

function load_images() {
 	$('img[rel=loading]').each(function(){
 		var imgsrc = $(this).attr('src');
 		var imgparent = $(this).parent();
 		var imgalt = $(this).attr('alt');
 		var imgheight = $(this).height();
 		var imgwidth = $(this).width();
 		var imgid = $(this).attr('id');
 		var imgstyle = $(this).attr('style');
 		var imgclass = $(this).attr('class');
 		$(this).remove();
 		img = new Image();
 		$(img).load(function(){
 			$(this)
 				.hide()
	 		if (imgalt) {
	 			$(this).attr('alt', imgalt);
	 		}
	 		if (imgheight > 0) {
	 			$(this).height(imgheight);
	 		}
	 		if (imgwidth > 0) {
	 			$(this).width(imgwidth);
	 		}
	 		if (imgid) {
	 			$(this).attr('id', imgid);
	 		}
	 		if (imgstyle) {
	 			$(this).attr('style', imgstyle);
	 		}
	 		if (imgclass) {
	 			$(this).attr('class', imgclass);
	 		}
 			$(this).appendTo(imgparent);
 			$(this).fadeIn('slow');
 		})
 		.attr('src', imgsrc).attr('rel', 'loaded');
 	})
}

function configure_googlemaps(map, coords) {
	$.each(coords, function(j,cord){
		lat = cord[0];
		lng = cord[1];
		zm = cord[2];
		if (j == 'center') {
			map.setCenter(new GLatLng(lat,lng), zm);
			map.addOverlay(new GMarker(map.getCenter()));
		} else {
			map.addOverlay(new GMarker(new GLatLng(lat,lng), zm));
		}
	});
		
	map.enableScrollWheelZoom();
	map.addControl(new GLargeMapControl3D());
	map.addMapType(G_PHYSICAL_MAP);
}

// validate Newsletter
function validateNewsletter(){
    var accept = true;
    $('#newsletter .error').removeClass('error');

    if (!$('#name').val()) {
        $('#name').parent().parent().addClass('error');
        accept = false;
    }

    if (!$('#email').val().match(new RegExp('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$'))){
        $('#email').parent().parent().addClass('error');
        accept = false;
    }
    
    return accept;
}	
// validate Newsletterremove
function validateNewsletterremove(){
    var accept = true;
    $('#newsletterremove .error').removeClass('error');


    if (!$('#email').val().match(new RegExp('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$'))){
        $('#email').parent().parent().addClass('error');
        accept = false;
    }
    
    return accept;
}	
// validate Contact
function validateContact(){	
    var accept = true;
    $('#contact .error').removeClass('error');
    
    if (!$('#name').val()) {
        $('#name').parent().parent().addClass('error');
        accept = false;
    }
    if (!$('#email').val().match(new RegExp('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]{2,})+$'))){
        $('#email').parent().parent().addClass('error');
        accept = false;
    }
    
    if (!$('#message').val()){
        $('#message').parent().parent().addClass('error');
        accept = false;
    }
    
    return accept;
}	

// button hover
(function($) {

	var buttons = $(".button");
	var buttonBgs = $("span.hover", buttons);
	buttonBgs.css("opacity", "0");
	buttons.hover(function(){
			var el = this;
			var bg = $("span.hover", el);
			hover(el, bg);
		},function(){
			var el = this;
			var bg = $("span.hover", el);
			out(el, bg);
	}); 

	function hover(el, bg) {
		bg.animate({
			"opacity": 1
		}, 200, 'linear' ); 
	}

	function out(el, bg) {
		bg.animate({
			"opacity": 0
		}, 200, 'linear' ); 
	}

})(jQuery);

// langmenu
(function($) {

	var changeLang = $("#changeLang");
	var langPopup = document.getElementById("langPopup");
	var langPopupO = $(langPopup);
	var opened = false, animating = false;
	var debug = false;

	langPopupO.css("opacity", 0);

	changeLang.click(function() {
		if (!animating) {
			animating = true;
			if (debug) {
				console.log("animating");
			}

			if (opened) {
				langPopupO.animate({
						"opacity": "0"
				}, 800, 'easeinout', function() { langPopup.style.display = "none"; opened = false; animating = false; if (debug) { console.log("stopped");} } );
			} else {
				langPopup.style.display = "block";
				langPopupO.animate({
						"opacity": "1"
				}, 800, 'easeinout', function() { opened = true; animating = false; if (debug) { console.log("stopped");} }  );
				
			}
		}
		
	});
	
	langPopupO.hover(function(){
		if (opened) {
			langPopupO.stop().css('opacity', 1);
		}
	}, function (){
		langPopupO.animate({
				"opacity": "0"
		}, 800, 'easeinout', function() { langPopup.style.display = "none"; opened = false; animating = false; if (debug) { console.log("stopped");} } );			
	});
	
	

})(jQuery);

// init scrollbar
function initScrollbar() {
	if (!$('.menuL3').is('.hidden')) {
		$('.content_wrapper').height($('.content').height() - $('.menuL3').height()).css('top', $('.menuL3').height());
		if ($('.mainContent').parent().is('.jScrollPaneContainer')) {
			$('.jScrollPaneContainer').height($('.content_wrapper').height());
		}
	} else {
		$('.content_wrapper').height($('.content').height()).css('top', 0);
	}
	
	if ($('.mainContent').parent().is('.jScrollPaneContainer')) {				
		$('.mainContent').parent().width(
			$('.mainContent').parent().parent().parent().width() 
			- 
			$('.mainContent').parent().parent().parent().find('.sideContent').width()
		);
	}
	$('.mainContent').jScrollPane({
		scrollbarWidth : 25,
		showArrows : true,
		dragMinHeight : 75,
		dragMaxHeight : 75,
		arrowSize: 25
	});
}

//gallery funcs



function init_gallery() {
	
	$('.galWidget .forward').click(function(){
		clearInterval(autoplayTimer);
		autoplayTimer = false;
		play_forward();
		return false;
	})
  
  $('.galWidget .back').click(function(){
		clearInterval(autoplayTimer);
		autoplayTimer = false; 
		play_backwards();
		return false;
	})
	
	$('.galleryThumbs .image a').click(function(){
		var current_image = $('.galWidget .image:not(.hidden)');
		var next_image = $('#image' + $(this).parent('.image').attr('id').split('thumb')[1]);
		changeImage(current_image, next_image);
		return false;
	})	
	if ($('#frontpage').length > 0) {
		autoPlay();
	} else {
		clearInterval(autoplayTimer);
	}
	
}

function play_backwards() {
		var current_image = $('.galWidget .image:not(.hidden)');
		//var next_image = current_image.next().next('.image');
		var prev_image = current_image.prev().prev('.image');
		
	
		//if (next_image.length == 0) {
		//	next_image = $('.galWidget .image:first');
		//}	
		if (prev_image.length == 0) {
			prev_image = $('.galWidget .image:last');
		}			
		changeImage(current_image, prev_image);	
}

function play_forward() {
    var current_image = $('.galWidget .image:not(.hidden)');
    var next_image = current_image.next().next('.image');
    //var prev_image = current_image.prev().prev('.image');
    

    if (next_image.length == 0) {
      next_image = $('.galWidget .image:first');
    }	
    //if (prev_image.length == 0) {
    //  prev_image = $('.galWidget .image:last');
    //}				
    changeImage(current_image, next_image);	
}

function autoPlay() {	
	autoplayTimer = setInterval(play_forward, autoPlaySpeed);
}

function changeImage(current_image, incoming_image) {

  if (change_image == false) {
    change_image = true;
		if ($('.galleryThumbs').length > 0) {
      $('.galleryThumbs .imageSelected').removeClass('imageSelected');
			$('#thumb' + incoming_image.attr('id').split('image')[1]).addClass('imageSelected');
		}
		
		current_image.next('.alt').addClass('hidden');
		incoming_image.next('.alt').removeClass('hidden');	
		
		$('.galWidgetPhotogallery .zoom').attr('href', incoming_image.find('a').attr('href'));

    current_image.css('z-index', 2);
    incoming_image.fadeIn(1, function(){
			$(this).removeClass('hidden');
			current_image.fadeOut(1800,function(){
				$(this).addClass('hidden');
				change_image = false;
        current_image.css('z-index', 1);
			});		
		});
    
	}

}