$(function(){

        $('#tx-solr-q').coolinput({});
        $('#tx-solr-q-search').coolinput({});

        $.urlParam = function(name){
            var results = new RegExp(name + '=([^&#]*)').exec(unescape(window.location.href));
            if (results) {
                return results[1] || '';
            }
            return '';
        }

        // xpress form remove file checkbox, if they check the box submit the form
        $(".removefile").click(function(){$("form").submit()});
	
	if($(".service-panel").length>0){
		FC.servicePanels();
	}
	if($(".careers-content").length>0){
		FC.careersPanels();
	}
       
	if($(".search-box").length>0){
        
        FC.searchPanel({
			targ: ".toggle-section",
			toggle: "p.toggle a"
		});	
	}
        

        /**
        if($(".team").length>0) {
                FC.team();
        }
        **/
	
	//News results AJAX load
	if($(".news-results").length>0 && $(".pagination").length>0){

            // Strip out any rjw[js]=true
            query = window.location.search.substr(1);
            query.replace(/rjw[js]=true/,"");
            
            FC.newsResults({
                url : window.location.pathname + "?rjw[js]=true&" + query,
			wrapper : $(".news-results .middle .wrapper"),
			inner : $(".news-results .middle .wrapper .inner"), 
                        pageGroup: 5,
                        pageVar: "rjw[page]" 
                        });
	}
	
	//Team results AJAX load
	if($(".team-search-results").length>0 && $(".pagination").length>0){
            
            // Strip out any rjw[js]=true
            query = window.location.search.substr(1);
            query.replace(/rjw[js]=true/,"");

		FC.newsResults({
			url : window.location.pathname + "?rjw[js]=true&" + query,
			wrapper : $(".team-search-results .wrapper"),
                        inner : $(".team-search-results .wrapper .inner"),
                        pageGroup: 6,
                        pageVar: "rjw[page]" 
		});
	}
	
        
	//Site Search results AJAX load
	if($(".site-search-results").length>0 && $(".pagination").length>0){
            // Strip out any rjw[js]=true
            query = window.location.search.substr(1);
            query.replace(/tx_solr[js]=true/,"");

		FC.newsResults({
			url : window.location.pathname + "?tx_solr[js]=true&" + query,
			wrapper : $(".site-search-results .wrapper"),
                        inner : $(".site-search-results .wrapper .inner"),
                        pageGroup: 5,
                        pageVar: "tx_solr[page]"
		});
	}
	
        
	//Recent cases results AJAX load
	if($(".case-search").length>0 && $(".pagination").length>0){

            // Strip out any rjw[js]=true
            query = window.location.search.substr(1);
            query.replace(/rjw[js]=true/,"");

            FC.newsResults({
                url : window.location.pathname + "?rjw[js]=true&" + query,
			wrapper : $(".case-search .wrapper"),
			inner : $(".case-search .wrapper .inner"),
                        pageGroup: 5,
                        pageVar: "rjw[page]" 
            });
	}
	
        
	
	//Form summary page
	if($(".form-section .summary").length>0){
		FC.formSummary({
					   
		});
	}
	


	if($(".carousel .items").length>0){
		setTimeout("FC.carousel({firstPause : 5000,pause : 3000});",1000);
	}

	
	if($(".read-more").length>0){
		FC.readMore();	
	}
	
	
	
	if($("fieldset.optional").length>0){
		FC.formOptions();
	}
	
	
	if($('#news_legal-practice-category').length>0){	
	$('#news_legal-practice-category').dependent({ parent:'news_legal-practice-area', group: 'selectable' });
        $('#news_legal-practice-sub-category').dependent({ parent:'news_legal-practice-category', group: 'selectable' });
	}

if($('#news_keyword').length>0){
	// first input box is a search box, notice passing of a custom class and an icon to the coolInput function
	$('#news_keyword').coolinput({});
}

	

	
	
	FC.pngFix();
	

});





FC.formSummary = function(){
	var __summaries = $(".form-section .summary");
	var __show = $(".form-section p.edit a");
	var __toggle = 0;

	for(i=0;i<__summaries.length;i++){
		$(__summaries[i]).attr("rel",$(__summaries[i]).height());	
	}
	
	
	__summaries.animate({height:0},0);
        
	__show.toggle(
				  
			function(){
				var __height = $(this).parent().parent().next().attr("rel");
				$(this).parent().parent().next().animate({height:__height},250);
				$(this).empty().append("Close");
			},
			function(){
				$(this).parent().parent().next().animate({height:0},250);
				$(this).empty().append("View");
			}

	);
	
	
}




    
FC.formOptionsFade = function() {
    var __fieldset = $(this).parent().next();
    var __val = $(this).attr("value");
    
    if(__val=="Yes"){
        __fieldset.fadeIn();
    }
    if(__val=="No"){
        __fieldset.fadeOut();
    }
}


FC.formOptions = function(){

	var __options = $("fieldset.optional");
	var __openOptions = $("input[rel='options']");
	
        __options.fadeOut(0);
	
	__openOptions.bind("click",FC.formOptionsFade);

        $("input.radio:checked").each(FC.formOptionsFade);
}




/* CAROUSEL */
FC.carousel = function(o){	
	
	var __firstPause = o.firstPause;
	var __pause = o.pause;
	
	var __length = $(".carousel .item");

	var timer = setTimeout("FC.fader(0,"+__length.length+","+__pause+")",__firstPause);
	
}



FC.fader = function(__counterOut,__length,__pause){

	var __max = __length-1;	
	
	var __counterIn = __counterOut+1; 
	var __lyrOut = $(".carousel .item:eq("+__counterOut+")");

	
	__lyrOut.fadeOut(1000,function(){

		if(__counterOut==__max){
			__counterIn=0;
			__counterOut=-1;
		}				  
		var __lyrIn = $(".carousel .item:eq("+__counterIn+")");	
			
		__lyrIn.fadeIn(1000,function(){
			__counterOut = __counterOut+1;
			setTimeout("FC.fader("+__counterOut+","+__length+","+__pause+")",__pause);							
		});
		
	});
	
	
}



/* SERVICE PANELS */
FC.servicePanels = function(o){
	
	var __panels = $(".service-panel");
	var __show = __panels.find("ul.link a");
	var __state = 0;
	var __services = __panels.find(".services");
	
	/**/
	__show.toggle(
				  
		function(){
			$(this).empty().append("Hide services");
			$(this).addClass("hide");
			var __parent = $(this).parents(".service-panel");
			
			__parent.addClass("open");		
			__parent.find(".services").animate({height:"200px"},500,function(){
				__parent.find(".services").css({overflow:"auto"});											 
			});
			
		},
		function(){
			$(this).empty().append("See all services");
			$(this).removeClass("hide");
			var __parent = $(this).parents(".service-panel");
			__parent.find(".services").css({overflow:"hidden"});
			__parent.find(".services").animate({height:"0px"},500,function(){
				__parent.removeClass("open");
					
			});
		}

								  
	);
								 
}



/* CAREERS PANELS */
FC.careersPanels = function(){
	
	$('.careers-content').hide(); 

        
        // Removed trainees hard coding
	// $('.trainees').show();
        // Changed to automatically select the first element in the nav
        
        var __show = $('.careers-box ul.nav li');
        __show.removeClass("selected").attr("class");
        __show = __show.attr("class");

        $('.' + __show).show();


	var __links = $(".careers-box ul.nav li");
	
	__links.bind("mouseover focus", function(){

		var __class = $(this).attr("class");
		__class = __class.split(" ")
                $(".careers-content").hide(); 
		$("."+__class[0]).show();
		__links.removeClass("selected");
		$(this).addClass("selected");
		
	})
	
	// for keyboard accessibility	
	$(".careers-box ul.nav li a").focus( function() {  
		var __class = $(this).parent().attr("class");
		__class = __class.split(" ")
		$(".careers-content").hide(); 
		$("."+__class[0]).show();
		__links.removeClass("selected");
		$(this).parent().addClass("selected");
					 
	}) 
	


}


/* SEARCH PANEL */
FC.searchPanel = function(o){
	
	var __targ = $(o.targ);
	var __toggle = $(o.toggle);
	var __height = "108px";
        
        
        var __close = function(){
            __targ.animate({height:__height},500, function(){
                    __targ.find("fieldset").fadeIn(500, function(){	
                            __toggle.parent().removeClass("closed");
                            __toggle.parent().addClass("open");
                            __toggle.empty().append("Minimise search");				
                        });
                    
                });
        }

        var __open = function(){
            __targ.find("fieldset").fadeOut(500, function(){
                    __targ.animate({height:"0px"},500, function(){
                            __toggle.parent().removeClass("open");
                            __toggle.parent().addClass("closed");
                            __toggle.empty().append("Maximise search");												  
                        });														  
                });
        }	
        
                
        // Should the search be minimised or maximised?
        if(($.urlParam('rjw\\[news_legal\\-practice\\-area\\]') == '')
           && ($.urlParam('rjw\\[news_legal\\-practice\\-category\\]') == '')
           && ($.urlParam('rjw\\[news_date_month\\]') == '')
           && ($.urlParam('rjw\\[news_date_year\\]') == '')) {
            
            // Show the minimised view
            __targ.animate({height:"0px"},0);
            __targ.find("fieldset").fadeOut(0);
            
            __toggle.parent().removeClass("open");
            __toggle.parent().addClass("closed");
            
            __toggle.empty().append("Maximise search");
            
            __toggle.toggle(
                
                function(){
                    __close();
                },			
                function(){
                    __open();
                }
                );
        }
        else {
            // Show the maximised view
            
            // Show the minimised view
            __targ.animate({height:__height},0);
            __targ.find("fieldset").fadeIn(500);
            
            __toggle.parent().removeClass("closed");
            __toggle.parent().addClass("open");
            
            __toggle.empty().append("Minimise search");
            
            __toggle.toggle(
                
                function(){
                    __open();
                },			
                function(){
                    __close();
                }
                );
        }   
        
}




FC.newsResults = function(o){
	
	//The "rel" attribute on all the number and prev/next links is used to load and animate to the correct page.
	var __numPages = Math.ceil(__totalResults/5);
        
	//Make all the links for the page numbers
	for(i=6;i<__numPages;i++){
		var __li = document.createElement("li");
		var __a = document.createElement("a");
		__a.href="#";
		__a.rel=i;
		__a.appendChild(document.createTextNode(i));
		__li.appendChild(__a);
		$(".numbers")[0].appendChild(__li);
	}
	
	var __pages = $(".numbers a");
	var __number = 1;
	var __wrapper = o.wrapper;
	var __inner = o.inner;
	
	var __next = $("ul.next li a");
	var __previous = $("ul.previous li a");
	var __url = o.url;
	var __waiting = "images/waiting.gif";
	var __pageGroup = o.pageGroup;
        var __pageVar = o.pageVar;

        //__wrapper.hide();

        //The "rel" attribute on all the number and prev/next links is used to load and animate to the correct page.
	// Call the __numPages again to ensure that the page number total is correct
        var __numPages = Math.ceil(__totalResults/__pageGroup);
        
	
	//Hide all the numbers and show only the first 5
	__pages.hide();
	$(".numbers a:eq("+0+")").show();
	$(".numbers a:eq("+1+")").show();
	$(".numbers a:eq("+2+")").show();
	$(".numbers a:eq("+3+")").show();
	$(".numbers a:eq("+4+")").show();
	
	

	//Set the next button rel attribute to 2
	__next.attr("rel","2");

	//Build empty search results divs - ready for AJAX calls
	for(i=1;i<__numPages;i++){
		var __j = i+1;
		var __listDiv = document.createElement("div");
		__listDiv.className = "list page"+__j;
		$(__listDiv).attr("role","document");
		$(__listDiv).attr("aria-live","assertive");
		$(__listDiv).attr("aria-atomic","true");
		$(__listDiv).attr("relevant","additions");
		var __img = document.createElement("img");
		__img.src=__waiting;
		__img.className = "waiting";
		__img.alt = "";
		__listDiv.appendChild(__img);
		__inner[0].appendChild(__listDiv);
	}
	
	//Make the next button clickable
	__next.bind("click",function(){
		__number = $(this).attr("rel");
                __wrapper.stop();
		callNews();
		nextPrev();
		updatePageGroup();
		return false;
		
	});
	
	//Make the previous button clickable
	__previous.bind("click",function(){
		
		__number = $(this).attr("rel");
		__wrapper.stop();
		callNews();
		nextPrev();
		updatePageGroup();
		return false;
		
	});
	
	//Make the page numbers clickable
	__pages.bind("click", function(){

		__number = $(this).text();
		__wrapper.stop();
		callNews();	
		nextPrev();
		updatePageGroup();
		return false;
		
	});
	
	
	//Update the appropriate news div
	function callNews(){
		
		//Find appropriate div container and check to see if div is empty first
		var __empty = $(".list.page"+__number).find("ul");
		
		//If div is empty, then do the AJAX call
		if(__empty.length<1){
			
			$.ajax({
				//Append url with the querystring to tell server this is a JS call the page number.
				url: __url+"&"+__pageVar+"="+__number,
				cache: false,
				success: function(html){
						//Remove waiting graphic
						$(".list.page"+__number).find("img").remove();
						// place the AJAX results into it.
						$(".list.page"+__number).append(html)
				}
			});
			
			$("#ajaxUpdate").attr("value","1");
			
		}
		
		//Scroll to requested news
		__wrapper.scrollTo('.page'+__number+'', 400, {axis:'x'});
                               
		$(".page"+__number+"").focus();
		
		//Remove "selected" class from all page numbers
		__pages.removeClass("selected");
		for(i=0;i<__pages.length;i++){

			if(__pages[i].rel==__number){
				__pages[i].className="selected";	
			}	
		}
		
		
		
		
	}
	
	
	
	function nextPrev(){
		//Update the "previous" button
		if(__number>1){
			__previous.removeClass("off");
			var __prevNum = parseInt(__number);
			__previous.attr("rel",__prevNum-1);
		}
		else{__previous.addClass("off");}
		
		
		//Update the "next" button
                var __finalPage = parseInt(__number)+1;
		if(__finalPage>__numPages){__next.addClass("off");}
		else{
			__next.removeClass("off");
			var __nextNum = parseInt(__number);
			__next.attr("rel",__nextNum+1);
		}		
	}
	
	
	
	function updatePageGroup(){

		var __start = parseInt(__number)-3;
		var __end = parseInt(__number)+2;
		var __stop = __numPages-5;
		
		
		
		if(__start==-1){
			__pages.hide();
			for(i=0;i<5;i++){
				$(".numbers a:eq("+i+")").show();	
			}
		}
		
		if(__start>-1){
			
			if(__start==__stop){
				__start = __start-1;
			}
			if(__start<=__stop){
				__pages.hide();
				for(i=__start;i<__end;i++){
					$(".numbers a:eq("+i+")").show();	
				}
			}
		}

		
	}
	
}



FC.readMore = function(){

	var __more = $(".read-more");
	
	for(i=0;i<__more.length;i++){
		$(__more[i]).attr("rel",$(__more[i]).height());	
	}

	var __openAnc = document.createElement("a");
	__openAnc.appendChild(document.createTextNode("Read more..."));
	__openAnc.href="#";
	__openAnc.className="readMore";
	
	var __closeAnc = document.createElement("a");
	__closeAnc.appendChild(document.createTextNode("Read less..."));
	__closeAnc.href="#";
	__closeAnc.className="readLess";
	
	__more.animate({height:0},0);
	
	//Inserts the "read more" link into the first paragraph of the page
	__more.parent().find("p:eq("+0+")").append(" ").append(__openAnc);
	
	__more.parent().find(".readMore").bind("click", function(){
	
		var __height = __more.attr("rel");
		__more.animate({height:__height},250);
		__more.parent().find(".readMore").remove();
		
		var __paras = __more.find("p")
		var __targ = __paras.length-1;
		
		__more.find("p:eq("+__targ+")").append(" ").append(__closeAnc);
		
		__more.find(".readLess").bind("click", function(){
		
			__more.animate({height:0},250);
			FC.readMore();
			__more.find(".readLess").remove();
			return false;
		
		});

		return false;

	});
	
}

/* VIEW / CLOSE PANELS ON THE FORM */
FC.showHideFormPanel = function(){
	$('.show-hide').hide();
}

/* TEAM VIEW */
FC.team = function(){
   
    /* Retrieve all the titles */

    var __titles = new Array();
    var __experienceOptions;

    var __additionalExperience = $(".additionalExperience").find("h3").each(
        function() {
            __titles.push(this.innerHTML);
            __experienceOptions = __experienceOptions + '<option value="' + this.innerHTML + '">' + this.innerHTML + '</option>';
            $(this).parent().hide();
        }
        );
    
    // Add content to the experienceOverview

    var __experienceOverview = $(".experienceOverview").html();
    //$(".experienceOverview").html(
      
    var __experienceSelect = '<div class="experience">'
                             + '<div class="experience-bottom">'
                             + '<form action="#" method="post">'
                             + '<fieldset class="clear">'
                             + '<label for="experience">View experience:</label>'
                             + '<select id="experience" onChange="FC.teamExperience(this)">'
                             + '<option value="Experience overview">Experience overview</option>'
                             + __experienceOptions
                             + '</select>'
                             + '</fieldset>'
                             + '</form>'
                             + '</div>'
                             + '</div>';
                           
    $(".experienceOverview").html(__experienceSelect + __experienceOverview);  
   
}

FC.teamExperience = function(element){
    __title = element.value;

    if (__title == 'Experience overview') {
        $(".experienceOverview .details").show();
    }
     
    $(".additionalExperience").find("h3").each(
        function() {
            $(this).parent().hide();
            if (this.innerHTML == __title) {  
                $(".experienceOverview .details").hide();
                // Show this experience details
                $(this).hide();
                $(this).parent().show();
            }
        }
    );
   

}


















