$(document).ready(function(){

	$("#top-nav li:has(ul)").addClass("root").find("a:first").addClass("sub");
	
	$("#top-nav li.root").hover(function () {
		$(this).children('ul:hidden').slideDown(500); 
	
		},function(){
			$(this).children('ul:visible').slideUp(500);
    	}
    );
	
   var scroll_api;

   function calcPane() {
      var w = 0;
      if ($('#panel.gallery').length) {
         $('#panel .pane>*').each( function() {
           w += $(this).outerWidth(true);
           $(this).find('img').load( function() {
               w += $(this).outerWidth(true);
               $('#panel, #panel .pane').css('width', Math.max(w,1024)+'px');
           });
         });
         $('#panel, #panel .pane').css('width', Math.max(w,1024)+'px');
      } else {
         $('#panel').css('width', ($('#panel .pane').length)*1024+'px');      
      }
   }

   calcPane();
   scroll_api = initPane(scroll_api);

   var refr=setInterval(function() {
      scroll_api = initPane(scroll_api);   
   }, 1000);

   $(window).load(function() {
      calcPane();
      scroll_api = initPane(scroll_api);
      if (refr) window.clearInterval(refr);
   });

   
   
   function initPane(api) {
      if (api) { 
         api.reinitialise();
         return api;      
      }
	   var pane = $('#page #main');
	   pane.jScrollPane({
			   animateScroll: true,
			   verticalGutter: 0,
			   horizontalGutter: 44,
            horizontalDragMinWidth: 113,
            horizontalDragMaxWidth: 113
	   });
	   api = pane.data('jsp');

	   $('.scrollNav').click( function() {
			   var to = $(this).attr('href');
			   api.scrollTo($(to).position().left, 0);			
			   $('#sub-nav .current').removeClass('current');
			   $(this).closest('li').addClass('current');
			   return false;
		   }
	   );
	
	   $('.jspDragLeft').click( function() {
		   var nc = $('#sub-nav .current').prev('li');
		   if (nc.length) {
			   api.scrollBy(-10, 0);
		   }
		   return false;
	   });
	
	   $('.jspDragRight').click( function() {
		   var nc = $('#sub-nav .current').next('li');
		   if (nc.length) {
			   api.scrollBy(10, 0);
		   }
		   return false;
	   });

      return api;
   }

});

