var arVermeldplaatsenOmschrijving = new Array();
var arVermeldplaatsenSoort = new Array();
var arVermeldplaatsenNummer = new Array();
var adminUser = false;

$(function () {
			
	$.getJSON("/catalog/users/getuser/", function(response) {
		if (response.code == 0)
		{
			// Admin logged in
			adminUser = true;	
			$("#admin_selection").show();
		}
		
		fInitPage();
	});
	
	// Initialise datepicker
	Date.format = 'dd-mm-yyyy';
	$('.date-pick').datePicker(
		{
			startDate: '01-01-1970',
			endDate: (new Date()).asString()
		}
	);

});

function fInitPage() {
	
	//fDefineButtons();
	
	$("#loading").ajaxStart(function(){
					$(this).show();
				 })
				 .ajaxComplete(function(){
					 $(this).hide();
				 });
				 
	$('#data_form').submit(function() { 
		// Get search results based on search input
		$(this).ajaxSubmit({ beforeSubmit: fFormBeforeSubmit, success: fFormSuccess, url:'/catalog/search/search', dataType: null}); 
		
		// Get banners based on search input
		$(this).ajaxSubmit({ beforeSubmit: fFormBannersBeforeSubmit, success: fFormBannersSuccess, url:'/catalog/search/searchbanners', dataType: null}); 
		return false; 
	});

	fFillSelectLand();
	fFillSelectProvincie();
	
	// Initialise actions
	fInitActions();
	
	// Initialise Vermeldplaatsen array
	fInitVermeldplaatsen();
};

function fInitVermeldplaatsen() {		
	// Initialise Vermeldplaatsen array
	
	$.getJSON("/catalog/profile/getvermeldplaatsen/", function(response) {
		for (var i = 0; i < response.length; i++) {
			arVermeldplaatsenOmschrijving[i] = response[i].Omschrijving;
			arVermeldplaatsenNummer[i] = response[i].Nummer;
			arVermeldplaatsenSoort[i] = response[i].Soort;
		}
		fFillSelectVermeldplaatsen();
		
		// Now we are ready to init the values that were passed in the query string (if any)
		fInitValues();
	});		
}

function fFillSelectVermeldplaatsen() {

	// Update the select boxes
	$("select#sv1").html('');
	$("select#sv2").html('');
	//$("#sv").val('');
	
	$("select#sv1").append('<option value=""></option>');

	for (var i = 0; i < arVermeldplaatsenNummer.length; i++)
	{
		if (arVermeldplaatsenSoort[i] == 2)
		{
			$("select#sv1").append('<option value="' + arVermeldplaatsenNummer[i] + '">' + arVermeldplaatsenOmschrijving[i] + '</option>');
		}
	}
	
	$("select#sv2").append('<option value=""></option>');
		
	for (var i = 0; i < arVermeldplaatsenNummer.length; i++)
	{
		if (arVermeldplaatsenSoort[i] == 1)
		{
			$("select#sv2").append('<option value="' + arVermeldplaatsenNummer[i] + '">' + arVermeldplaatsenOmschrijving[i] + '</option>');
		}
	}	
	
	
};

function fInitValues()
{
   	// Get selected user and tag in query string (these are only processed once when entering the page!)
   	var sv = getParameterByName('sv');
   	var st = getParameterByName('st');
   	var sl = getParameterByName('sl');
   	var sp = getParameterByName('sp');
   	var sc = getParameterByName('sc');
    var sn = getParameterByName('sn');
	var sb = getParameterByName('sb');
	
	var sg = getParameterByName('sg');
	var sa = getParameterByName('sa');
	var sd = getParameterByName('sd');
		
	var np = getParameterByName('np');
	
	if (sv != '') {
		$("#sv").val(sv);
		$("#sv1").val(sv);
		$("#sv2").val(sv);
	}
	
	$("#st").val(st);
	$("#sl").val(sl);
	$("#sp").val(sp);
	$("#sc").val(sc);
	$("#sn").val(sn);
	$("#sb").val(sb);
	
	if (adminUser)
	{
		$("#sg").val(sg);
		$("#sa").val(sa);
		$("#sd").val(sd);
	}
	
	fSearchPage(np);
}

function fResetValues()
{
	window.location = HTTPBASE + "/search/index/"; 
}

function fInitActions()
{
	$("#sv1").change(function() {
		
		$("#sv2").val("");
		$("#sv").val($("#sv1").val());
		
		fSearch();
		return false;

	});
	
	$("#sv2").change(function() {
	
		$("#sv1").val("");	
		$("#sv").val($("#sv2").val())
		
		fSearch();
		return false;

	});
	
	$("#st").change(function() {
		
		fSearch();
		return false;

	});	
	
	$("#sl").change(function() {
		
		fSearch();
		return false;

	});
	
	$("#sp").change(function() {
		
		fSearch();
		return false;

	});
	
	$("#sc").change(function() {
		
		fSearch();
		return false;

	});
	
	$("#sn").change(function() {
		
		fSearch();
		return false;

	});	
	
	$("#sb").change(function() {
		
		fSearch();
		return false;

	});	
	
	$("#sg").change(function() {
		
		fSearch();
		return false;

	});	
	
	$("#sa").change(function() {
		
		fSearch();
		return false;

	});	

	$("#sd").change(function() {
		
		fSearch();
		return false;

	});	
	
	$("#sk_search").click(function() {
		
		fShowEntry($("#sk").val(),$("#sk").val());
		return false;

	});	
}

function fSearch()
{
	// Submit data form
	$("#np").val(0);
	$('#data_form').submit();
}

function fSearchPage(page)
{
	$("#np").val(page);
	$('#data_form').submit();
}

function fFormBeforeSubmit(formData, jqForm, options)  {

};

function fFormSuccess(response, statusText)  { 

	$("#search_result").html(response);
	
};

function fFormBannersBeforeSubmit(formData, jqForm, options)  {

};

function fFormBannersSuccess(response, statusText)  { 

	$("#banners").html(response);
	
};


function fFillSelectLand() {

	// Update the select boxes
	$("#sl").html('');
	
	for (sItem in LANDEN)
	{
		$("#sl").append('<option value="' + LANDEN[sItem] + '">' + LANDEN[sItem] + '</option>');
	}

};

function fFillSelectProvincie() {

	// Update the select boxes
	$("#sp").html('');
	
	for (sItem in PROVINCIES)
	{
		$("#sp").append('<option value="' + PROVINCIES[sItem] + '">' + PROVINCIES[sItem] + '</option>');
	}

};

function fShowEntry(k,ktitle)
{
	ktitle = ktitle.replace(/\//g,""); // Remove forward slashes from the title (they will damage the URL) 
	ktitle = ktitle.replace(/ /g,""); // Remove spaces from the title
	
	// Show this entry and include all search options to return be able to return to the search results
	window.location = HTTPBASE + "/profile/fetchone/" + $.URLEncode(ktitle) + "/?k=" + k + "&sa=" + $("#sa").val() + "&sv=" + $("#sv").val() + "&st=" + $.URLEncode($("#st").val()) + "&sl=" + $("#sl").val() + "&sp=" + $.URLEncode($("#sp").val()) + "&sc=" + $.URLEncode($("#sc").val()) + "&sn=" + $.URLEncode($("#sn").val()) + "&sb=" + $.URLEncode($("#sb").val()) + "&np=" + $("#np").val() + "&sg=" + $("#sg").val() + "&sd=" + $("#sd").val(); 
}

/*
**
** Helper functions
**
*/

function getParameterByName(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return $.URLDecode(results[1].replace(/\+/g, '%20')); /* FIX: Replace + by %20 before decoding) */
}
