	$.tablesorter.addParser({
		id: "ukcurrency",
		is: function(s) {
			return false;
			return /^[£$€?.]/.test(s);
		},
		format: function(s) {
			return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.\s]/g),""));
		},
		type: "numeric"
	});
	$.tablesorter.addParser({
		id: "ukLongDate",
		is: function(s) {
			return false;
			return s.match(new RegExp(/^[0-9]{1,2} [A-Za-z]{3,10}\.?,? ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));
		},
		format: function(s) {
			return $.tablesorter.formatFloat(new Date(s).getTime());
		},
		type: "numeric"
	});
	
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preloadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery);
//###########################################################################//
$(document).ready(function() {
   // put all your jQuery goodness in here.
	if ($('#subscribe-panel').length) {  
		$('#page').append('<a href="" id="subscribe">Subscribe</a>');
	}
	$("#subscribe").click(function(){
		$("#subscribe-panel").slideToggle("slow", function () { 
			ststate = ($(this).is(":hidden") ? 'Hide' : 'Show');
			_gaq.push(['_trackEvent', 'Top Panel', ststate]);
		});
		// Ideally class shouldn't be toggled until panel has finished sliding
		$(this).toggleClass("active"); return false;
	});
	
	// Round the corners
	$('#footer .footer-box').cornerz({ radius: 20, background: '#333333' });
	$('.box').cornerz({ radius: 15 });
	$('.box-course').cornerz({ radius: 15 });
	$('#menu').cornerz({ radius: 5 });
	
	// Lightbox
	//$("a.lightbox").colorbox({ innerWidth: '900px', innerHeight: '500px', iframe: true });
	
	// Make tables sortable
	$("#tbl-coursedetails").tablesorter({ 
		headers: {
			1: { sorter: 'ukLongDate'},
			3: { sorter: 'ukcurrency'}
		},
		sortList: [[0,0]] /*, 
		debug: 1 */
	}); 
	$("#tbl-coursedates").tablesorter(); 
	
	// The slow bit - see if there are any tooltips. ID would be faster...
	//$(".tooltip").tooltip({ effect: 'slide'});
/*	
	// Subnav hover animation
	$('#subnav a').wrapInner('<span></span>').prepend('<span class="hover" style="cursor:pointer"></span>').each(function () {
	  var $span = $('> span.hover', this).css('opacity', 0);
	  $(this).hover(function () {
	    $span.stop().fadeTo(500, 1);
	  }, function () {
	    $span.stop().fadeTo(300, 0);
	  });
	});
*/
	// Subnav hover animation
	$('#subnav a').wrapInner('<span></span>').prepend('<span class="hover" style="cursor:pointer; display: none"></span>').each(function () {
	  var $span = $('> span.hover', this).hide();
	  $(this).hover(function () {
	    $span.stop().show();
	  }, function () {
	    $span.stop().hide();
	  });
	});

	// Preload images
	$.preloadImages("/images/nav/consulting_on.png", "/images/nav/e-careers_on.png", "/images/nav/training-courses_on.png", "/images/mega-bullet.png")
	
	// Finally... form validation
	var validator = $("#formemaillist").validate({
	    errorClass: "invalid",
	    validClass: "valid",
	    wrapper: 'ul class=error_list',
	    errorElement: 'li',
	    success: function(label)
	    {
	      $(label).closest(".form-row").addClass("valid").removeClass("invalid");
	    },
	    highlight: function( element, errorClass, validClass )
	    {
	      if (element.name in this.validElements)
	      {
	        $(element).closest(".form-row").addClass(errorClass).removeClass(validClass);
	      }
	      else if(element.name in this.errorMap)
	      {
	        $(element).closest(".form-row").addClass(errorClass).removeClass(validClass);
	      }
	      else if ($(element).val() == "" && this.optional(element) == "dependency-mismatch")
	      {
	        $(element).closest(".form-row").removeClass(errorClass).removeClass(validClass);
	      }
	    },
	    unhighlight: function( element, errorClass, validClass )
	    {
	      if (element.name in this.errorMap)
	      {
	        $(element).closest(".form-row").addClass(errorClass).removeClass(validClass);
	      }
	      else if (element.name in this.validElements)
	      {
	        $(element).closest(".form-row").removeClass(errorClass).removeClass(validClass);
	      }
	      else if ($(element).val() == "" && this.optional(element) == "dependency-mismatch")
	      {
	        $(element).closest(".form-row").removeClass(errorClass).removeClass(validClass);
	      }
	    },
	/*    errorPlacement: function(error, element)
	    {
	      if(element.parents(".radio_list").is("*") || element.parents(".checkbox_list").is("*"))
	      {
	        error.prependTo( element.parent().parent().parent() );
	      }
	      else
	      {
	        error.appendTo( element.parent() );
	      }
	    }, */
	    rules: {
			'cm-f-209800': 
			{
				required: true,
				minlength: 2,
				maxlength: 55
			},
			'cm-f-209801': 
			{
				required: true,
				minlength: 2,
				maxlength: 55
			},
			'cm-434538-434538': 
			{
				required: true,
				email: true
			}
	    },
	    messages: {
			'cm-f-209800': 
			{
				required: 'Please enter your first name',
				minlength: 'Must be at least 2 characters long',
				maxlength: 'Must be less than 55 characters long'
			},
			'cm-f-209801': 
			{
				required: 'Please enter your last name',
				minlength: 'Must be at least 2 characters long',
				maxlength: 'Must be less than 55 characters long'
			},
			'cm-434538-434538':
			{
				required: 'Your email address is required',
				email: 'Your email address is invalid'
			}
	    },
	    submitHandler: function(form) {	
	    	
	    	// First, disable the form from submitting
	    	//$('form#formemaillist').submit(function() { return false; });
	    	
	    	// Grab form action
	    	formAction = $("form#formemaillist").attr("action");
	    	
	    	// Serialize form values to be submitted with POST
	    	var str = $("form#formemaillist").serialize();
	    	
	    	// Add form action to end of serialized data
	    	final = str + "&action=" + formAction;
	    	
	    	// Submit the form via ajax
	    	$.ajax({
	    		url: "proxy.php",
	    		type: "POST",
	    		data: final,
	    		success: function(html){
	    			// If successfully submitted hides the form
	    			$("#formemaillist").hide();
	    			// Shows "Thanks for subscribing" div
	    			$("#form-emaillist-confirmation").fadeIn("slow");
	    			
	    			// Fire off Google Analytics fake pageview
	    			var pageTracker = _gat._getTracker("UA-639623-7");
	    			pageTracker._trackPageview("/newsletter_signup");
	    		}
	    	});
	    	return false;
	    }
	});
	
	
	
	
	
	
//On Hover Over
function megaHoverOver(){
    $(this).find(".sub").stop().fadeTo('fast', 1).show(); //Find sub and fade it in
}
//On Hover Out
function megaHoverOut(){
  $(this).find(".sub").stop().fadeTo('fast', 0, function() { //Fade to 0 opactiy
      $(this).hide();  //after fading, hide it
  });
}
//$("#course-dropdown").appendTo("#nav-courses").css('display', 'block').hide();
$("#course-dropdown").insertAfter("#nav-courses").css('display', 'block').hide();
//$("ul#nav li .sub").css({'opacity':'0'}); //Fade sub nav to 0 opacity on default
////$("ul#nav li").hover(megaHoverOver, megaHoverOut);

var hiconfig = {
     sensitivity: 200, // number = sensitivity threshold (must be 1 or higher)
     interval: 50, // number = milliseconds for onMouseOver polling interval
     over: megaHoverOver, // function = onMouseOver callback (REQUIRED)
     timeout: 350, // number = milliseconds delay before onMouseOut
     out: megaHoverOut // function = onMouseOut callback (REQUIRED)
};
$("ul#nav li").hoverIntent(hiconfig);

}); // end onready





