// JavaScript Document
$(document).ready(function(){

        // Initialise our tabs!
	initTabMenus()

}); 

/* ***************************************
	TABS
*************************************** */
function initTabMenus() {

       // This initialises out tabs and detects if our tabs have the .main class enabled.
       // If so then they will be integrated with submenu items that have a .tab class and rel tab index number.
	var pageHasTabs = false;
	var $tabs = $('.tabs > ul').tabs({
	    show: function(ui) {
		bindInnerLinks()
	        bindPagination()
   		setup_avatar_menu()
		if ($(this).parent().hasClass('main')) {
			pageHasTabs = true;
		}
	    }
	});

	// Initialise submenu integration with Tabs.
	// submenu items will need to have a class of .tab with rel="(tab index number)" to communicate with our tabs.
	$("#submenu a.tab").click(function () {	

		$(this).parent().parent().find('li').removeClass();
		$(this).parent().addClass('selected');		

		if (pageHasTabs == true) {
			var tabid = parseInt(this.rel);
			$tabs.tabs('select',tabid);
			return false;
		} else {
			return true;
		}
	});		

}

function bindInnerLinks() {
	$('.tabs_inner_controls a').click(function() {		

		//Menu interaction
		$(this).parent().parent().find('li').removeClass('selected');
		$(this).parent('li').addClass('selected');

		// Display the loading animation
		$(".search_results").html('').addClass('ajax_loader');

		// Load search results dynamically
		$(".ui-tabs-panel").load(this.href, {limit: 10}, function(){
			$(this).removeClass('ajax_loader');
		   bindInnerLinks()
			bindPagination()
 		});

	   return false;
	});
}

function bindPagination() {
	$('.tabs .pagination a').click(function() {		

		$(".search_results").html('').addClass('ajax_loader');

		var url = this.href;
		var query = url.replace(/^[^\?]+\??/,'');
		var params = getUrlParams(query);
		var limit = params['limit'] || 10;

		// Load search results dynamically
		$(".ui-tabs-panel").load(this.href, {limit: limit}, function(){
			$(this).removeClass('ajax_loader');
		        bindInnerLinks()
			bindPagination()
   		        setup_avatar_menu()
 		});

	   return false;
	});
}

/* ***************************************
	SEARCH FILTER FORM
*************************************** */	

function bindSearchFilterForm(data, form, searchFilterOptions) { 

    $(".search_filter form").ajaxForm({
        target:        '.search_results',
        beforeSubmit:  searchFilterFormRequest,
        success:       searchFilterFormResponse 

    }); 

 	 $(".search_filter form input").blur(function() {
			$(this).parents("form").submit();
	 });
 	 $(".search_filter form select").change(function() {
			$(this).parents("form").submit();
	 }); 

}	 

// Pre submit callback
function searchFilterFormRequest(data, form, searchFilterOptions) { 

    //var queryString = $.param(data);
    //alert('About to submit: \n\n' + queryString); 

	 $(searchFilterOptions['target']).html('').addClass("ajax_loader");
    return true;
} 

// Post submit callback
function searchFilterFormResponse(response, status, searchFilterOptions) {
	 $('.search_results').removeClass("ajax_loader");
} 

/* ***************************************
	MISC FUNCTIONS
*************************************** */
function getUrlParams(query) {
   var Params = {};
   if (!query) {return Params;}// return empty object
   var Pairs = query.split(/[;&]/);
   for (var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if (!KeyVal || KeyVal.length != 2) {continue;}
      var key = unescape(KeyVal[0]);
      var val = unescape(KeyVal[1]);
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}
