//COMMON SITE SCRIPT

$(function(){

	//nav submenus
	//--------------------------------------------
/*
	$('.site-nav .parent').hover(function(){
		$(this).addClass('hover');
		$(this).find('ul').slideDown('fast');
	}, function(){
		$(this).removeClass('hover');
		$(this).find('ul').slideUp(100);
	});
*/
	
	//feature rotator
	//--------------------------------------------	
	$('.feature-items').cycle({
		fx:					'fade',
		speed:				800,
		timeout:			5000,
		next:				'#feature-next',
		cleartype:     		!$.support.opacity,
		cleartypeNoBg: 		true,
		pager:				'#feature-nav',
		activePagerClass: 	'active',
		pause:				true
	});
	
	
	//tabs
	//--------------------------------------------
	$('.tab-box .tab-content').hide();
	$('.tab-box .tab-content:first').show();
	$('.tab-box .tabs ul li:first').addClass('active');
	
	$('.tab-box .tabs ul li a').click(function(){
		$('.tab-box .tabs ul li').removeClass('active');
		$(this).parent().addClass('active');
		
		var currentTab = $(this).attr('href');
		$('.tab-box .tab-content').fadeOut('fast');
		$(currentTab).fadeIn('fast');
		return false;
	});
		
	
	//form validation
	//--------------------------------------------
	$('form.panel').validate({
   		errorPlacement: function(error, element) {
           element.parent().addClass('error');
        }
	});
	
	
	
	//<details> fallback by @mathias | http://mths.be/aaq | MIT/GPL license */
	//--------------------------------------------

	  var isDetailsSupported = (function(doc) {
	    var el = doc.createElement('details'),
	        fake,
	        root,
	        diff;
	    if (!('open' in el)) {
	      return false;
	    }
	    root = doc.body || (function() {
	      var de = doc.documentElement;
	      fake = true;
	      return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
	    }());
	    el.innerHTML = '<summary>a</summary>b';
	    el.style.display = 'block';
	    root.appendChild(el);
	    diff = el.offsetHeight;
	    el.open = true;
	    diff = diff != el.offsetHeight;
	    root.removeChild(el);
	    if (fake) {
	      root.parentNode.removeChild(root);
	    }
	    return diff;
	  }(document));
	
	  // Execute the fallback only if there’s no native `details` support
	  if (!isDetailsSupported) {
	  

	
	    // Loop through all `details` elements
	    $('details').each(function() {
	
	      // Store a reference to the current `details` element in a variable
	      var $details = $(this),
	          // Store a reference to the `summary` element of the current `details` element (if any) in a variable
	          $detailsSummary = $('summary', $details),
	          // Do the same for the info within the `details` element
	          $detailsNotSummary = $details.children(':not(summary)'),
	          // This will be used later to look for direct child text nodes
	          $detailsNotSummaryContents = $details.contents(':not(summary)'),
	          // This will be used later on
	          open = this.getAttribute('open');
	
	      // If there is no `summary` in the current `details` element…
	      if (!$detailsSummary.length) {
	        // …create one with default text
	        $detailsSummary = $(document.createElement('summary')).text('Details').prependTo($details);
	      }
	
	      // Look for direct child text nodes
	      if ($detailsNotSummary.length !== $detailsNotSummaryContents.length) {
	        // Wrap child text nodes in a `span` element
	        $detailsNotSummaryContents.filter(function() {
	          // Only keep the node in the collection if it’s a text node containing more than only whitespace
	          return (this.nodeType === 3) && (/[^\t\n\r ]/.test(this.data));
	        }).wrap('<span>');
	        // There are now no direct child text nodes anymore — they’re wrapped in `span` elements
	        $detailsNotSummary = $details.children(':not(summary)');
	      }
	
	      // Hide content unless there’s an `open` attribute
	      // Chrome 10 already recognizes the `open` attribute as a boolean (even though it doesn’t support rendering `<details>` yet
	      // Other browsers without `<details>` support treat it as a string
	      if (typeof open == 'string' || (typeof open == 'boolean' && open)) {
	        $details.addClass('open');
	        $detailsNotSummary.show();
	      } else {
	        $detailsNotSummary.hide();
	      }
	
	      // Set the `tabIndex` of the `summary` element to 0 to make it keyboard accessible
	      $detailsSummary.attr('tabIndex', 0).click(function() {
	        // Focus on the `summary` element
	        $detailsSummary.focus();
	        // Toggle the `open` attribute of the `details` element
	        typeof $details.attr('open') !== 'undefined' ? $details.removeAttr('open') : $details.attr('open', 'open');
	        // Toggle the additional information in the `details` element
	        $detailsNotSummary.toggle(0);
	        $details.toggleClass('open');
	      }).keyup(function(event) {
	        if (13 === event.keyCode || 32 === event.keyCode) {
	          // Enter or Space is pressed — trigger the `click` event on the `summary` element
	          // Opera already seems to trigger the `click` event when Enter is pressed
	          if (!($.browser.opera && 13 === event.keyCode)) {
	            event.preventDefault();
	            $detailsSummary.click();
	          }
	        }
	      });
	
	    });
	
	  } // end <details> fallback
	
});
