/*
	ocio.js
*/

jQuery.noConflict();

jQuery( document ).ready( init );

function init() {
	jQuery( '#main-nav ul.sf-menu' ).superfish();
		
	jQuery( '#search-box, #knowledge-base-keyword-search-box' ).focus( clearSearchText );
	jQuery( '#search-box' ).blur( restoreSearchOCIOText );
	jQuery( '#knowledge-base-keyword-search-box' ).blur( restoreSearchByKeywordText );
	jQuery( '.knowledge-base-category-search' ).linkedListToSelectForm;
	
	jQuery( '#SearchForm_SearchForm' ).submit( addOCIOSiteSearch );
	jQuery( 'form.knowledge-base-keyword-search' ).submit( addHelpAndSupportSiteSearch );
	
	linkedListToSelectForm( jQuery( '.knowledge-base-category-search' ) );
	jQuery( '.knowledge-base-category-search form' ).live( 'submit', categorySearchJump );
	jQuery( '.knowledge-base-category-search form' ).live( 'change', categorySearchJump );
	
	jQuery( '.child-navigation' ).each(
		function ( index, value ) {
			listToTreeMenu( jQuery( this ) );
		}
	);
	jQuery( '.tree-menu-collapsed a' ).live( 'focus', openSubList );
	jQuery( '.tree-menu-open a' ).live( 'blur', closeSubList );
	
	jQuery( '.tree-menu-collapsed' ).live( 'click', subListToggle );
	jQuery( '.tree-menu-open' ).live( 'click', subListToggle );
	
	//collapsible content structure
	setUpCollapsibleContent();
	
	// This is more or less a hack to make sure the OSU navbar doesn't break layout
	if( parseInt( jQuery( '#osu-Navbar' ).css( 'font-size' ) ) > 16 ) {
		jQuery( '#osu-Navbar' ).css( 'font-size', '15px' );
	}

}

function clearSearchText() {
	jQuery( this ).attr( 'value', '' );	
}

function restoreSearchOCIOText() {
	if( jQuery( this ).attr( 'value' ) == '' ) {
		jQuery( this ).attr( 'value', 'Search OCIO' );
	}
}

function restoreSearchByKeywordText() {
	if( jQuery( this ).attr( 'value' ) == '' ) {
		jQuery( this ).attr( 'value', 'Search by Keyword' );
	}
}

function addOCIOSiteSearch() {
	var searchStr = jQuery( '#search-box' ).val();
	var siteSearchStr = 'site:ocio.osu.edu OR site:8help.osu.edu OR site:wireless.osu.edu OR site:elearning.osu.edu/carmen-help OR https://assist-erp.osu.edu OR site:digitalunion.osu.edu OR site:registration.it.ohio-state.edu';
	
	searchStr = searchStr + ' ' + siteSearchStr;
	
	jQuery( this ).find( '#search-box' ).attr( 'value', searchStr );
	
}

function addHelpAndSupportSiteSearch() {
	var searchStr = jQuery( '#knowledge-base-keyword-search-box' ).val();
	var siteSearchStr = 'site:8help.osu.edu';
	
	searchStr = searchStr + ' ' + siteSearchStr;
	
	jQuery( this ).find( '#knowledge-base-keyword-search-box' ).attr( 'value', searchStr );
}

function linkedListToSelectForm( element ) {
	var list_items = element.find( 'li' );
	element.find( 'ul' ).replaceWith( '<form><select class="knowledge-base-category"></select></form>' );
	var select_element = element.find( 'select' );
	
	select_element.append( '<option value="">Select Category</option>' );
	
	list_items.each( 
		function( index ) {
			var text = jQuery( this ).text();
			var link = jQuery( this ).find( 'a' ).attr( 'href' );
			var option_element = '<option value="' + link + '">' + text + '</option>';
			select_element.append( option_element );
		}
	);
	
}

function categorySearchJump() {
	var url = jQuery( this ).find( 'select option:selected' ).val();
	if( url != '' ) {
		location.href = url;
	}
}

function listToTreeMenu( element ) {
	element.find( 'li:has(ul)' ).addClass( 'tree-menu-collapsed' );	
};

function openSubList(e) {
	if( this == e.target ) {
		jQuery( this ).parents( 'li:has(ul)' ).removeClass( 'tree-menu-collapsed' );
		jQuery(this ).parents( 'li:has(ul)' ).addClass( 'tree-menu-open' );
	}
}

function closeSubList(e) {
	if( this == e.target ) {
		jQuery( this ).parents( 'li:has(ul)' ).removeClass( 'tree-menu-open' );
		jQuery(this ).parents( 'li:has(ul)' ).addClass( 'tree-menu-collapsed' );
	}
}

function subListToggle(e) {
	if( this == e.target ) {
		if( jQuery( this ).hasClass( 'tree-menu-collapsed' ) ) {
			jQuery( this ).removeClass( 'tree-menu-collapsed' );
			jQuery(this ).addClass( 'tree-menu-open' );
		}
		else if ( jQuery( this ).hasClass( 'tree-menu-open' ) ) {
			jQuery( this ).removeClass( 'tree-menu-open' );
			jQuery(this ).addClass( 'tree-menu-collapsed' );
		}
	}
}

function setUpCollapsibleContent() {
  // hide all collapsible content
  jQuery( '.collapsible-content' ).hide();
 
  // make sure headers are linked (accessiblity)
  jQuery( '.collapsible-header' ).wrapInner( '<a href="#"></a>' );
  jQuery( '.collapsible-header a' ).addClass( 'collapsible-closed' );
  jQuery( '.collapsible-header a' ).click( toggleCollapsibleContent );
  
}

function toggleCollapsibleContent(e) {
  e.preventDefault();
  var link = jQuery( this );
  
  link.parent().next().slideToggle();
  
  if( link.hasClass( 'collapsible-closed' ) ) {
    link.removeClass( 'collapsible-closed' );
    link.addClass( 'collapsible-open' );
  }
  else {
    link.removeClass( 'collapsible-open' );
    link.addClass( 'collapsible-closed' );
  }
}

