$(document).ready(function() {

/* custom sorter for dates that are surrounded by html code */
     jQuery.fn.dataTableExt.oSort['htmldate-case-asc']  = function(a,b) {  
    	return getDateFromHtml(a) - getDateFromHtml(b);
     };
				
     jQuery.fn.dataTableExt.oSort['htmldate-case-desc']  = function(a,b) {  
    	 return getDateFromHtml(b) - getDateFromHtml(a);
     };
     
     $.fn.dataTableExt.oPagination['osec_style'] = {
        "fnInit": function ( oSettings, fnCallbackDraw ) {
            var prevDiv = document.createElement( 'div' );
            var nextDiv = document.createElement( 'div' );
            prevDiv.className = "previous";
            nextDiv.className = "";
    	 
			var nPrevious = document.createElement( 'a' );
			var nList = document.createElement( 'div' );
			var nNext = document.createElement( 'a' );
			
			prevDiv.appendChild(nPrevious);
			nextDiv.appendChild(nNext);
			
			nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );
			nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );
			
			nPrevious.className = "previous int";
			nNext.className = "next int";
			nList.className = "pages";
			
			oSettings.nPaginate.className ="dataTables_paginate resultPaging clearfix";
			oSettings.nPaginate.appendChild( prevDiv );
			oSettings.nPaginate.appendChild( nList );
			oSettings.nPaginate.appendChild( nextDiv );
			
			$(nPrevious).click( function() {
				oSettings.iDisplayStart -= oSettings.iDisplayLength;
				
				/* Correct for underrun */
				if ( oSettings.iDisplayStart < 0 ) {
				  oSettings.iDisplayStart = 0;
				}
				
				fnCallbackDraw( oSettings );
			} );
			
			$(nNext).click( function() {
				if ( oSettings.iDisplayStart + oSettings.iDisplayLength < (oSettings.aaData.length) ) {
					oSettings.iDisplayStart += oSettings.iDisplayLength;
				}
				
				fnCallbackDraw( oSettings );
			} );
			
			oSettings.nPaginateList = nList;
		},
		
		"fnUpdate": function ( oSettings, fnCallbackDraw ) {
			var iPages = parseInt( (oSettings.aaData.length-1) / oSettings.iDisplayLength ) + 1;
			var iCurrentPage = parseInt( oSettings.iDisplayStart / oSettings.iDisplayLength ) + 1;
			var sList = "";
			var iStartButton = iCurrentPage-5<1 ? 1 : iCurrentPage-5;
			var iEndButton = iCurrentPage+5>iPages ? iPages : iCurrentPage+5;
			
			if ( iPages < 5 ) {
				iStartButton = 1;
				iEndButton = iPages;
			} else {
				if ( iCurrentPage < 3 ) {
					iStartButton = 1;
					iEndButton = 5;
				} else if ( iCurrentPage > iPages - 3 ) {
					iStartButton = iPages-4;
					iEndButton = iPages;
				} else {
					iStartButton = iCurrentPage-2;
					iEndButton = iCurrentPage+2;
				}
			}
			
			for ( var i=iStartButton ; i<=iEndButton ; i++ ) {
				if ( iCurrentPage != i ) {
					sList += '<span><a class="int">'+i+'</a></span>';
				} else {
					sList += '<span class="active">'+i+'</span>';
				}
			}
			
			oSettings.nPaginateList.innerHTML = sList;
			
			$('a', oSettings.nPaginateList).click( function() {
				var iTarget = (this.innerHTML * 1) - 1;
				oSettings.iDisplayStart = iTarget * oSettings.iDisplayLength;
				
				fnCallbackDraw( oSettings );
			} );
		}
	}
    	 
});


function DateGood(y, m, d) {
    var D;
    with (D = new Date(y, --m, d)) {
        return (getMonth() == m && getDate() == d) ? D : NaN;
    }
}

function DateOK(D) {
    var X = D.split(/\D+/);
    return DateGood(+ X[2], + X[1], + X[0]);
}

function getDateFromHtml(somehtml){
	var somehtmlShort = somehtml.replace( /<.*?>/g, "" ).toLowerCase();
	var startDate = somehtmlShort.substring(0,10);
	if (startDate.indexOf("-") != -1) {
		startDate = somehtmlShort.substring(0,5) + "." + somehtmlShort.substring(14,18);
	}
 	var parsedDate = DateOK( startDate );
 	if ( isNaN( parsedDate ) ) {
 		parsedDate = Date.parse( "01/01/1970 00:00:00" );
 	}
 	return parsedDate;
}

function getStrToday(){
	var now = new Date();
	var day = now.getDate();
	var month = now.getMonth() + 1;
	var year = now.getYear() < 1000 ? now.getYear()+1900 : now.getYear();

	if (day <= 9){
		day = "0" + day;
	}
	
	if (month <= 9){
		month = "0" + month;
	}
	
	return sNow = day + "." + month + "." + year;
}

