$(document).ready(function() {
  menus.init();
  headerImages.init();
  quicksearch.init();
	mainMenu.init();
  // inlineForms.init();
});

var headerImages = 
{
  init : function()
  {
    //make headerimages clickable
    $('#header_image img').click(function()
    {
      var url = $(this).attr('name');
      
      if(url && url != '')
        document.location = url;
    });
  }
};

/*
var inlineForms = {
  placeholders: {
    textarea: 'Gaarne invullen:\r- Bestemming\r- Aantal dagen\r- Ca. aantal pers.\r\rVoor ontvangst brochure, CD\'s, e.d. adres vermelden.'
  },
  init: function() {
    var commentsField = $('#inline-form textarea');
    if (commentsField) {

      if (commentsField.val() == '') {
        commentsField
          .val(inlineForms.placeholders.textarea)
          .addClass('placeholder')
          .bind('focus', function(e) {
            if ($(this).val().indexOf(inlineForms.placeholders.textarea.substr(0, 16)) != -1) {
              $(this)
                .val('')
                .removeClass('placeholder')
              ;
            }
          })
        ;
      }

      $('#inline-form form').bind('submit', function(e) {
        var textarea = $(this).find('textarea');
        if (textarea.val().indexOf(inlineForms.placeholders.textarea.substr(0, 16)) != -1) {
          textarea.val('');
        }
      });
      
    }
  }
};*/

/**
 * menus
 */
var menus = {

  hoverTimeout : null,

  init: function() {

    // hide all submenu items
    $('#main-menu .menu ul').addClass('hidden');

    // show selected menu item on init
    $('.menu .selected').each(function() {
      var selectedParentItem = $(this);
      while (!selectedParentItem.parent().hasClass('menu')) {
        selectedParentItem = selectedParentItem.parent();
      }

      $('#submenu-holder')
        .stop(true, true)
        .html(selectedParentItem.children('ul').clone())
        .slideDown(500)
        .addClass(selectedParentItem.attr('class'))
      ;
      selectedParentItem.children('a').addClass('selected');
    });

    // set event listeners
    menus.initEventListeners();
  },


  initEventListeners : function() {
    
    // on menu item hover
    $('#main-menu .menu > li > a')
      .stop(true, true)
      .hover(function(e) {
        menus.clearMenuHoverTimeout();
        menus.setMenuHoverTimeout($(this));
      }, function(e) {
        menus.clearMenuHoverTimeout();
      })
    ;

    // on mouseout of menu-item or submenu-holder
    $('#main-menu, #submenu-holder')
      .stop(true, true)
      .bind('mouseleave', function() {
        $('#submenu-holder').slideUp(250);
      })
    ;
  },

  setMenuHoverTimeout : function(menuItem) {

    menus.hoverTimeout = window.setTimeout(function() {
      menus.menuItemHover(menuItem);
    }, 300);

  },

  clearMenuHoverTimeout : function() {
    window.clearTimeout(menus.hoverTimeout);
  },


  menuItemHover : function(clickedItem) {

    // clear submenu holder
    $('#submenu-holder').children().remove();

    // get styling for clicked item
    var styling = clickedItem.attr('class').split(' ');

    // get submenu items
    var children = clickedItem.next();
    if (children && children.length > 0) {
      $('#submenu-holder')
        .html(children.clone())
        .slideDown(250, function(e) {
          $('#submenu-holder .open-additional-locations').click(function(e) { 
            mainMenu.showHiddenMenuItems(e, $(this));
          });
        })
        .removeClass()
        .addClass(styling[0])
      ;
    }
    
  }

};



/**
 * main menu options
 */
var mainMenu =
{
	btnOpenAdditionalLocations : '.open-additional-locations',
	liAdditionalLocation: '.additional-location',
	
	/**
	 * constructor
	 */
	init : function() {

    $('.open-additional-locations').show();
    
    // get visible open-additional-locations buttons
		$(mainMenu.btnOpenAdditionalLocations).each(function(e) {
			$(this).click(function(e) {
        mainMenu.showHiddenMenuItems(e, $(this));
      });
		}).stop(true, true);
	},
	
	
	/**
	 * display additional locations
	 */
	showHiddenMenuItems : function(e, openLink) {
		// prevent default link functionality
		e.preventDefault();
		
		if(! openLink) {
      return;
    }
		
		// show additional locations
		$(openLink)
			.parent()
			.find(mainMenu.liAdditionalLocation)
			.removeClass('extra')
		;
		
		// hide button
		openLink.hide();
	}
	
}


/**
 * quicksearch options
 */
var quicksearch =
{
  defaultInputValue : 'zoeken',
  
  init : function()
  {
    //form input quicksearch
    $('#quicksearch-form input[type=text]').focus(function(){quicksearch.onFocus($(this));});
    
    $('#quicksearch-form input[type=text]').blur(function()
    {
      if($(this).val() == quicksearch.defaultInputValue || $(this).val() == '')
        quicksearch.reset();    
    });
    
    //reset form
    quicksearch.reset();
  },
  
  
  /**
   * on input focus
   */
  onFocus : function(obj)
  {
    if(obj.val() == '' || obj.val() == quicksearch.defaultInputValue)
    {      
      obj.css
      ({
        'font-style' : 'normal',
        'color' : '#000000'
      });
      
      obj.val("");
    }
  },
  
  
  /**
   * reset display of quicksearch
   */
  reset : function()
  {
    var input = $('#quicksearch-form input[type=text]');
    
    if(input)
    {
      input.val(quicksearch.defaultInputValue);
      
      input.css
      ({
        'font-style' : 'italic',
        'color' : '#999999'
      });
    }
  }
}
