$(document).ready(function() {
						   
	// toggle links
	$('a.toggle').live('click', function() {
		$(this.hash).slideToggle();
		return false;
	});
	
	// ajax links
	$("a.ajax").live("click", function() {
	  var target = null;
	  var href = this.href;
	  var element = $(this);
	  var targetselector = element.attr('data-target');
	  var filter = element.attr('data-filter');
	  if(targetselector) {
	  	 target = $(targetselector);	  
	  }
	  if(!target || !target.length) {
		  target = $(this).parents("div:first");
	  }
	  if(filter) {
		href += ' ' + filter;  
	  }
	  target.load(href, td.widgetInit);
	  return false;
    });	
	
});

// datepickers, accordions, tabs & autocomplete
td = {};
td.widgetInit = function() {
	$("input.datepicker").datepicker({ dateFormat: 'dd-M-yy' });
	$(".accordion").accordion();
	$(".tabs").tabs();
	$(".sortable").sortable();
	$(".selectable").selectable();
	$(".draggable").draggable();
	$(".autocomplete").each(function() {
		$(this).autocomplete({ source: $(this).attr("data-source") });							 
	});
}
$(document).ready(td.widgetInit);

// patching ColdFusion.navigate function (used in AjaxLink coldfusion function) to always fire our custom callback
// which is used to initialise jQuery UI widgets e.g. datepickers
if(typeof ColdFusion != 'undefined') {
	var __currentNavigate = ColdFusion.navigate;
	ColdFusion.navigate = function(URL, container, callbackhandler, errorhandler, httpMethod, formId) {
		var customcallbackhandler;
		if(typeof callbackhandler != 'undefined') {
			customcallbackhandler = function() {
				 callbackhandler();
				 td.widgetInit();	 
			};
		} else {
			customcallbackhandler = td.widgetInit;
		}
		__currentNavigate(URL, container, customcallbackhandler, errorhandler, httpMethod, formId);
	};
}