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();
    //Special offers list
    init_specialofferslist();
    //Special offer view
    init_specialoffersview();

    if(!$.fontAvailable("Bliss Pro Light")) {
      Cufon.replace('h1');
      Cufon.now();
    } else {
      $(".def DIV.h1 h1").css("margin-bottom", "8px");
    }

  }
	
  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)
      }
    }
  }

  function init_specialofferslist(){
    if ($('.offersTable').length > 0) {
      if($('.galWidget').length > 0)
        $('.offersTable').addClass('offersTableAlternative');
      $(".offersTable .tabs li a").click(function() {
        var id = $(this).attr("id").substr(7);
        $(".offersTable .tabs li").removeClass("selected");
        $(this).parent().addClass("selected");
        $(".offersTable .offersTableContent").addClass("hidden");
        $(".offersTable #offers_" + id).removeClass("hidden");
      });
    }
  }

  function init_specialoffersview(){
    if ($('.currencySelector').length > 0) {
      $('.currencySelector').unbind('click');
      $('.currencySelector').click(function() {
        $('.currencyPopup .animateme').stop(true,true).slideToggle();
        return false;
      });

      if($('.galWidget').length > 0)
        $(' .currency').addClass('currencyAlternative');


      $('.currencyPopup li').unbind('click');
      $('.currencyPopup li').click(function() {
        var charcode = $(this).attr("id").substr(9);
        var currency = $(this).find("span.currencyname").html();
        var rate = eval($(this).find("span.rate").html());

        $('.list span.money').each(function() {
          var newvalue = (eval($(this).find('span.defaultvalue').html()) / rate).toFixed(2);
          $(this).find("span.value").html(newvalue);
          $(this).find("span.curr").html(charcode);
        })

        html = ((currency.length > 10) ? currency.substr(0,8) + '...' : currency) + ' (' + charcode + ')';



        $('.currencySelector span.value').html(html);
        $('.currencyPopup .animateme').slideUp();
      })
    }
  }
	
	
})(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;
  })
  clearInterval(autoplayTimer);
  if ($('#frontpage').length > 0) {
    autoPlay();
  }
	
}

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);
      });
    });
    
  }

}

// popupbanner
(function($) {

  var image_path = $(".popupbanner .image_path").html();

  // cache
  var popupbanner = $(".popupbanner");
  var banner = $(".popupbanner .banner");

  // create new extension
  $.fn.hv_popupbanner = {};

  $.fn.hv_popupbanner.open = function () {
    if(!$.cookie("bannerhidden")) {
      if ($.browser.msie && $.browser.version.substr(0,1)<7) {

      } else {
        banner.css("background-image", "url('"+bannerImage.src+"')");
      }
      popupbanner.animate({
        top: 0
      }, 600);
    }
  }

  $.fn.hv_popupbanner.close = function () {
    $.cookie("bannerhidden", true, {
      expires: null
    });
    popupbanner.animate({
      top: "-210px"
    }, 600);
  }

  // preload image and init the whole stuff when done downloading
  var bannerImage = new Image();
  bannerImage.onload = $.fn.hv_popupbanner.open;
  bannerImage.src = image_path;

})(jQuery);