$(document).ready(function(){
	$.myVar = {}; //global
	var qs = "";
	var pc = '<div id="progressControl" class="progressControl"><img src="images/progress.gif" /></div>';
	$("#fec_mainContentWide").append(pc);
	
	var dataCatalog = new DataCatalog();
	$.get("DataCatalogData.do?format=html", {}, function(data){
		$("#dataCatalog").html(data);
		delete data;
		$("#progressControl").remove().insertBefore("#dataCatalog").hide();
		sort();
	});
	
	var pagination = function(){
		$(".showAllLink a, #pagination ul li a, .prevNext a").click(function(event){
			dataCatalog.queryString($(this).attr("href"), $.myVar);
			$.ajax({
				type: "GET",
				url: "DataCatalogData.do",
				data: ({
					format:"html",
					sortField: $.myVar.qs.sortField,
					sortOrder: $.myVar.qs.sortOrder,
					category: $.myVar.qs.category,
					page: $.myVar.qs.page
				}),
				beforeSend: function(){$("#dataCatalog").animate({opacity: 0.2}, 500);},
				success: function(data){
					$("#dataCatalog").html(data);
					delete data;
					pagination();
					sort();
					selectionChange();
				},
				complete: function(){$("#dataCatalog").animate({opacity: 1}, 2000);}
			});
			event.preventDefault();
			return false;
		});
	};
	
	var sort = function(){
		$("#dataCatalog .header td.sortascending, #dataCatalog .header td.sortascending a, #dataCatalog .header td.sortdescending, #dataCatalog .header td.sortdescending a").click(function(event){		
			if($(event.target).is("td")){
				dataCatalog.queryString($(this).find("a").attr("href"), $.myVar);
			}else{
				dataCatalog.queryString($(this).attr("href"), $.myVar);
			}
			$.ajax({
				type: "GET",
				url: "DataCatalogData.do",
				data: ({
					format:"html",
					sortField: $.myVar.qs.sortField, 
					sortOrder: $.myVar.qs.sortOrder,
					category: $.myVar.qs.category,
					page: $.myVar.qs.page
				}),
				beforeSend: function(){$("#dataCatalog").animate({opacity: 0.2}, 500);},
				success: function(data){
					$("#dataCatalog").html(data);
					delete data;
					pagination();
					sort();
					selectionChange();
				},
				complete: function(){$("#dataCatalog").animate({opacity: 1}, 2000);}
			});
			event.preventDefault();
			return false;
		});
	};
	
	var selectionChange = function(){
		$("#catalog-category").ready(function(){
			$("#catalog-category").change(function(event){
				dataCatalog.queryString(window.location, $.myVar);
				$.ajax({
					type: "GET",
					url: "DataCatalogData.do",
					data: ({
						format:"html",
						sortField: $.myVar.qs.sortField, 
						sortOrder: $.myVar.qs.sortOrder,
						category: $(this).find(':selected').text(),
						page: $.myVar.qs.page
					}),
					beforeSend: function(){$("#dataCatalog").animate({opacity: 0.2}, 500);},
					success: function(data){
						$("#dataCatalog").html(data);
						delete data;
						pagination();
						sort();
						selectionChange();
					},
					complete: function(){$("#dataCatalog").animate({opacity: 1}, 2000);}
				});
				event.preventDefault();
				return false;
			});
		});
	};
	pagination();
	sort();
	selectionChange();
});

function DataCatalog(){}
DataCatalog.prototype.queryString = function(qs, myVar){
	var qsReg = new RegExp("[?][^#]*","i");
    hRef = unescape(qs);
    var qsMatch = hRef.match(qsReg) + "";
    qsMatch = qsMatch.substr(1, qsMatch.length -1);
	var qsArray = qsMatch.split("&");
	var qsLength = qsArray.length;
	myVar.qs = new Object();
	for(var i=0; i<qsLength; i++){
		var pair = qsArray[i].split("=");
		myVar.qs[pair[0]] = pair[1];
	}
	if($.myVar.qs.sortField == undefined){
		$.myVar.qs.sortField = "title";
	}if($.myVar.qs.sortOrder == undefined){
		$.myVar.qs.sortOrder = 0;
	}
};
