﻿﻿(function($){ 
     $.fn.extend({  
         accordion: function(options) {       
            $.fn.accordion.defaults = {					
					links_selector: 'li.acc>a',  /* li.acc>a if only a-tag or li.acc>hx if h-tag around a-tag */
					li_selector: 'li.acc',
					// contents_selector: 'ul.acc_sub, div.acc_sub',
					contents_selector: 'div.acc_sub',
					current_selector: 'li.current',
					link_highlight_class: 'highlight',
					li_highlight_class: 'active',
					open_selector: 'a.show_all_accordion',
					txt_open: 'show all',
					txt_close: 'close all',
					count_li: -1,
					close_other: false
			};
			
			// build main options before element iteration
			var opts = $.extend({}, $.fn.accordion.defaults, options);
			
			// get link tag out of links_selector
			var link_tag = opts.links_selector.split(">")[1];
			
			return this.each(function() {
				if($(this).data('accordiated'))
					return false;									
				$.each($(this).find(opts.contents_selector), function(){
					$(this).data('accordiated', true);
					$(this).hide();
				});
				$.each($(this).find(opts.links_selector), function(){				
					$(this).click(function(e){	
						if (opts.close_other) activate(e.target, 'slideToggle','',true);
						//else activate(e.target, 'slideToggle', 'parents', false);
						else activate(e.target, 'slideToggle','',false);
						return false;
					});
				});
				
				//open selected item------
				var active = false;
				
				if(location.hash && location.hash != '#')
					active = $(this).find('a[href=' + location.hash + ']')[0];
					
				else {				
					if($(this).find(opts.current_selector).length > 0) {
						active = $(this).find(opts.current_selector+' a')[0];
						//2nd level?
						if ($(active).parent().find(opts.current_selector).length > 0) active = $(active).parent().find(opts.current_selector+' a')[0];
					}
				}	
				
				if(window.location.href.match(/\/lfs\/Careers\/$/) || window.location.href.match(/\/lfs\/Careers\/index.html$/)){
					active = false;
					$('h3').after('<p>To search for vacancies, please click on the corresponding category</p>');
				}	
			
				
				if(active){
					activate(active, 'slideToggle','parents', true);
					$(active).parents().show();					
				}
				
				//init show all button -----------------------------------------
				opts.count_li = $(this).find(opts.links_selector).length;	
				
				//$(opts.open_selector).click(function(e){
				$(this).find(opts.open_selector).click(function(e){
						showAll(e.target);
						return false;
				});
				
				
				function activate(el,effect,parents, close_other){
		
					var liTag = $(el)[(parents || 'parent')](opts.li_selector);	
					
					if (close_other) liTag.siblings().children('a').removeClass(opts.link_highlight_class);
					liTag.toggleClass(opts.li_highlight_class);
					if (close_other) liTag.siblings().removeClass(opts.li_highlight_class).children(opts.contents_selector).slideUp('fast');
	
	
					if(link_tag == 'a') {
						$(el).siblings(opts.contents_selector)[(effect || 'slideToggle')]((!effect)?'fast':'fast',function(){                        
                           				 if ($.browser.msie) 
                               					 this.style.removeAttribute('filter');        /* rendering bug in IE */                
                       					 });
						//liTag.find('a').toggleClass(opts.link_highlight_class);
						liTag.children('a').toggleClass(opts.link_highlight_class);
					}
					else {
						$(el).parent().siblings(opts.contents_selector)[(effect || 'slideToggle')]((!effect)?'fast':'fast',function(){                        
                           				 if ($.browser.msie) 
                               					 this.style.removeAttribute('filter');        /* rendering bug in IE */                
                        				});    							
						$(el).parent().children(link_tag).toggleClass(opts.link_highlight_class);
					}
					
					/*************************************/
					
					updateShowAllBtn(el);
				}
				
				function showAll(el) {	
					
					var elem = $(el);
					
					//alert(elem.parent().parant().html());
					
					var open = elem.hasClass(opts.link_highlight_class); 
					
					if (open) {
						//close
						elem.html(opts.txt_open);					
						if($(el).hasClass('close_all')) {$(el).removeClass('close_all')};						
						
						elem.parent().parent().find(opts.li_selector).removeClass(opts.li_highlight_class).find(link_tag).removeClass(opts.link_highlight_class).siblings(opts.contents_selector).slideUp('fast');
						
						//$(opts.li_selector).removeClass(opts.li_highlight_class).find(link_tag).removeClass(opts.link_highlight_class).siblings(opts.contents_selector).slideUp('fast');
					} else {
						//open
						elem.html(opts.txt_close);
						$(el).addClass('close_all');
						
						elem.parent().parent().find(opts.li_selector).addClass(opts.li_highlight_class).find(link_tag).addClass(opts.link_highlight_class).siblings(opts.contents_selector).slideDown('fast');
						
						//$(opts.li_selector).addClass(opts.li_highlight_class).find(link_tag).addClass(opts.link_highlight_class).siblings(opts.contents_selector).slideDown('fast');
					}
					
					elem.toggleClass(opts.link_highlight_class);
				}
				
				function updateShowAllBtn(el) {
					var elem = $(el);
					var list_el = elem.parent().parent();
					var currentCount =  list_el.find(opts.li_selector+"."+opts.li_highlight_class).length;
					
					if (currentCount == 0) {
						list_el.find(opts.open_selector).removeClass(opts.link_highlight_class).html(opts.txt_open);
					}

					if (currentCount == opts.count_li) {
						list_el.find(opts.open_selector).addClass(opts.link_highlight_class).html(opts.txt_close);
					}					
				}
				
            });
        } 
    }); 
})(jQuery);


