
$(function(){
    $('.dialoggable').dialog({autoOpen:false,
                              dgraggable:true,
//                              modal:true,
                              width:500,
                              resizable:false
                         });
	
	function isEmpty(str){
	    return (str === '') || (str === '&nbsp;');
	}
	var DATE_MONTHS = {
	    'January':0,
	    'February':1,
	    'March':2,
	    'April':3,
	    'May':4,
	    'June':5,
	    'July':6,
	    'August':7,
	    'September':8,
	    'October':9,
	    'November':10,
	    'December':11
	}
	function nullDateSort(a,b) {
	    if (isEmpty(a) && isEmpty(b)) return 0;
	    if (isEmpty(a)) return 1;
	    if (isEmpty(b)) return 1;
	    
	    var aMatches = a.split(',');
	    var bMatches = b.split(',');
	    
	    var aYear = $.trim(aMatches[1]);
	    var bYear = $.trim(bMatches[1]);
	    var aMonth = DATE_MONTHS[aMatches[0]];
	    var bMonth = DATE_MONTHS[bMatches[0]];
	    
	    return (aYear === bYear)? (aMonth-bMonth) : (aYear-bYear);
	}
	function nullHTMLSort (a,b) {
		var x = $.trim(a.replace( /<.*?>/g, "" ).toLowerCase());
		var y = $.trim(b.replace( /<.*?>/g, "" ).toLowerCase());
		    
	    if (isEmpty(x) && isEmpty(y)) return 0;
	    if (isEmpty(x)) return 1;
	    if (isEmpty(y)) return 1;
	    
		return ((x < y) ? -1 : ((x > y) ? 1 : 0));
	}
	function nullStringSort (a,b) {
	    if (isEmpty(a) && isEmpty(b)) return 0;
	    if (isEmpty(a)) return 1;
	    if (isEmpty(b)) return 1;
	    
		var x = $.trim(a.toLowerCase());
		var y = $.trim(b.toLowerCase());
		return ((x < y) ? -1 : ((x > y) ? 1 : 0));
	}
	$.fn.dataTableExt.oSort['nullString-asc'] =
	    function(a,b) {
	        return nullStringSort(a,b);
	    };
	$.fn.dataTableExt.oSort['nullString-desc'] =
	    function(a,b) {
	        return -nullStringSort(a,b);
	    };
	$.fn.dataTableExt.oSort['nullHTML-asc'] =
	    function(a,b) {
	        return nullHTMLSort(a,b);
	    };
	$.fn.dataTableExt.oSort['nullHTML-desc'] =
	    function(a,b) {
	        return -nullHTMLSort(a,b);
	    };
	$.fn.dataTableExt.oSort['nullDate-asc'] =
	    function(a,b) {
	        return nullDateSort(a,b);
	    };
	$.fn.dataTableExt.oSort['nullDate-desc'] =
	    function(a,b) {
	        return -nullDateSort(a,b);
	    };
	var htmlCol = { 'sType':'nullHTML' };
	var stringCol = { 'sType':'nullString' };
	var dateCol = { 'sType':'nullDate' };
	var nosortCol = { 'bSearchable':false, 'bSortable':false };
	var invisibleCol = { 'bVisible':false };
	$('table.dataTable').dataTable({
	    'sDom':'<"top"lifp>t',
	    'sPaginationType':'full_numbers',
	    'aaSorting':[[4,'desc'],[1,'asc']],
	    'aoColumns':[
	               nosortCol,
	               stringCol,
	               stringCol,
	               stringCol,
	               dateCol,
	               stringCol,
	               invisibleCol
	              ]
    });
});
