
jQuery.fn.delay = function(func,time){
	this.each(function(){
		setTimeout(func,time);
	});
	return this;
};

$(document).ready(function() {
	$(".box_filters").css("display","none");
	$(".filter_showbutton").toggleClass("opened");
	$(".box_filters").toggleClass("opened");
	
	$(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
	
	$(".pager").each(function(){
		var widthPagerOl = $(this).find("ol").width();
		var widthPagerParent = $(this).parent("div").width();
		var marginPager = Math.round((widthPagerParent - widthPagerOl)/2)-1;
		$(this).find("ol").css("margin","0px "+Math.round(marginPager)+"px")
	});
	
	$(".filter_showbutton").click( function(){
		$(".box_filters").slideToggle();
		$(this).toggleClass("opened");
		$(".box_filters").toggleClass("opened");
		return false;
	});
	$(".resetfilters").click(function(){
		resetfilters();
		$("#filterForm").submit();
	
	});
	
});

function resetfilters()
{	$("#filterForm select").each(function(){this.selectedIndex = 0;});
}


var pagingCurPage = 1;
var pagingTotalPages = 1;
var maxDisplayedPages = 14;
var pageItemSize = 33;

function getContentAndPager()
{	var timeStamp=(new Date()).getTime();
	var contentUrl = "/work/projects/projectsoverview_ajaxcontent.cfm";
	var requestQueryString = window.location.search.substring(1);
	var contentQueryString = "pageNum=" + pagingCurPage;
	contentQueryString += "&timestamp=" + timeStamp;
	if(requestQueryString != "") contentQueryString += "&" + requestQueryString
	contentUrl += "?" +  contentQueryString;
	//TO DO : add filters
	$.getJSON(contentUrl,loadDataAndPagerFromJson); 
}

function getContent()
{	var timeStamp=(new Date()).getTime();
	var contentUrl = "/work/projects/projectsoverview_ajaxcontent.cfm";
	var requestQueryString = window.location.search.substring(1);
	var contentQueryString = "pageNum=" + pagingCurPage;
	contentQueryString += "&timestamp=" + timeStamp;
	
	contentUrl += "?" +  contentQueryString;
	$.getJSON(contentUrl,loadDataFromJson); 
}

function loadDataAndPagerFromJson(myData)
{	loadContent(myData.PAGECONTENT);
	loadPager(myData.PAGERNUMPAGES);
}

function loadDataFromJson(myData)
{	
	loadContent(myData.PAGECONTENT);
}

function loadContent(contentToLoad)
{	
	$("#projects_overview_content").text("");
	if(contentToLoad != "")
	{	$("#projects_overview_content").append(contentToLoad);
	}
	else
	{	$("#projects_overview_content").text("Sorry, no project matches your filter.");
	}
	
}

function loadPager(totalPages)
{	var pagerContent = "";
	var pagerControl = $("#mypager");
		if(totalPages>1)
	{	pagingTotalPages = totalPages;
		var myList =  $("<ol>");
		// Start button
		var startItem = $('<li class="start">');
		var startLink = $('<a href="#" rel="page_start"><<</a>');
		startLink.click(function(){moveToPage(1);return(false);});
		startItem.append(startLink);
		myList.append(startItem);
				
		//Previous button
		var prevItem = $('<li class="prev">');
		var prevLink = $('<a href="#" rel="page_prev"><</a>');
		prevLink.click(function(){movePrev();return(false);});
		prevItem.append(prevLink);
		myList.append(prevItem);
		
		var numeralItemsItem = $('<li class="pager_mask">');
		var numeralItemsList = $('<ol>');
		
		// Page numbers
		var curItem = new Object();
		var curLink = new Object();
		for(i=1;i<=totalPages;i++)
		{	curItem = $('<li>');
			curLink = $('<a href="#" rel="page_' + i + '" title="Page '+ i + '/' + totalPages +'">' + i + '</a>');
			curLink.click(function(){moveToPage($(this).attr("rel").replace("page_",""));return(false);});
			curItem.append(curLink);
			numeralItemsList.append(curItem);
		}
		
		numeralItemsItem.append(numeralItemsList);
		myList.append(numeralItemsItem);
				
		// next button
		var nextItem = $('<li class="next">');
		var nextLink = $('<a href="#" rel="page_next">></a>');
		nextLink.click(function(){moveNext();return(false);});
		nextItem.append(nextLink);
		myList.append(nextItem);
		// end button
		var endItem = $('<li class="end">');
		var endLink = $('<a href="#" rel="page_end">>></a>');
		endLink.click(function(){moveToPage(totalPages);return(false);});
		endItem.append(endLink);
		myList.append(endItem);
		$("#mypager").append(myList);
		$(numeralItemsList).width(pagingTotalPages*pageItemSize);
		if(pagingTotalPages<14)
		{	$(numeralItemsItem).width(pagingTotalPages*pageItemSize);
		}
		updatePagerActivePage();
	}
}

function updatePagerActivePage()
{	
	//Remove ol selection
	$("#mypager li.active").removeClass("active");
	//Place new selection
	$("#mypager li a[rel='page_" + pagingCurPage +"']").parent().addClass("active");
	//Make pager move
	var layerMargin = (pagingCurPage - (maxDisplayedPages/2))*pageItemSize*-1;
	var maxMargin = 0;
	var minMargin = (pagingTotalPages-maxDisplayedPages)*pageItemSize*-1;
	if(layerMargin>maxMargin) layerMargin=maxMargin;
	else if(layerMargin<minMargin) layerMargin=minMargin;
	$("#mypager ol li ol").animate({marginLeft:layerMargin},200);
	return true;
}

function moveToPage(destinationPage)
{	// virer la page en cours
	pagingCurPage=parseInt(destinationPage);
	//updater les données du pager
	updatePagerActivePage();	
	//recupérer le contenu de la page suivante
	getContent();
	
}

function movePrev()
{	
	var destPage = pagingCurPage - 1;
	if(destPage < 1) destPage = pagingTotalPages;
	moveToPage(destPage);
}

function moveNext()
{	
	var destPage = pagingCurPage + 1;
	if(destPage > pagingTotalPages) destPage = 1;
	moveToPage(destPage);
}

