﻿// ///////////////////////////////////////////////////
// handles the left menubar
// ///////////////////////////////////////////////////

$(document).ready(function()
{
	control_accordion();
	getNews();
	getUploadForm();
	getSearchForm();
});

// ///////////////////////////////////////////////////

function control_accordion()
{
    $("#accordion h1").eq(0).addClass("active");
    $("#accordion .par").eq(0).show();

    // set the default button graphics
    $("#accordion h1").each(function(i)
    {
        var strID = $(this).attr("id");
        $(this).css("backgroundImage", "url(img/menu_" + strID + ".png)");
    });

    // show highlighted _mo graphic onmouseover and toggle back again
    $("#accordion h1").hover(
        function()
        {
            if (!$(this).hasClass("clicked"))
                $(this).css("backgroundImage", "url(img/menu_" + $(this).attr("id") + "_mo.png)");
        },
        function()
        {
            if (!$(this).hasClass("clicked"))
                $(this).css("backgroundImage", "url(img/menu_" + $(this).attr("id") + ".png)");
        }
    );

    // open active window, set button state to 'clicked' and remove any possible 'clicked' states from the other buttons
        $("#accordion h1").click(function()
        {
        	if (!$(this).next(".par").is(":visible"))
        	{
        		var strID = $(this).attr("id");

        		//if ($(this).attr("id") == "search")
        		//    $(this).prev(".par").slideToggle("slow").siblings(".par:visible").slideUp("slow");
        		//else
        		$(this).next(".par").slideToggle("200").siblings(".par:visible").slideUp("200");

        		$(this).toggleClass("active");

        		$("#accordion h1").each(function(i)
        		{
        			if ($(this).attr("id") == strID)
        			{
        				if (strID == "search")
        				{
        					$(this).css("backgroundImage", "url(img/menu_" + strID + "_open.png)");
        					$(this).addClass("clicked");
        					// set bottom of the accordion to 'open'
	       					$("#accordionbottom").css("backgroundImage", "url(img/menu_shadow_bottom_open.png)");
        				}
        			}
        			else
        			{
        				$(this).css("backgroundImage", "url(img/menu_" + $(this).attr("id") + ".png)");
        				$(this).removeClass("clicked");
        				// reset bottom of the accordion to default
        				$("#accordionbottom").css("backgroundImage", "url(img/menu_shadow_bottom.png)");
        			}
        		});

        		$(this).siblings("h1").removeClass("active");
        	}
        });

    // controls for the up/down scroller
    $("#sidebar_down").click(function()
    {
        var intTopSidebar = $("#sidebar_news_meta").offset().top;
        var intBottomSidebar = intTopSidebar + $("#sidebar_news_meta").height();
        var intTopSidebarContent = $("#sidebar_news_content").offset().top;
        var intBottomSidebarContent = intTopSidebarContent + $("#sidebar_news_content").height();

        //var intScrollDown = $(".sidebar_news_item").height();

        if (intBottomSidebarContent > intBottomSidebar)
        {
            $("#sidebar_news_content").animate({ top: "-=150px" }, 250);
            $("#sidebar_news_content").animate({ top: "+=5px" }, 200);
        }
    });

    $("#sidebar_up").click(function()
    {
        var intTopSidebar = $("#sidebar_news_meta").offset().top;
        var intTopSidebarContent = $("#sidebar_news_content").offset().top;

        if (intTopSidebarContent < intTopSidebar)
        {
            $("#sidebar_news_content").animate({ top: "+=150px" }, 250);
            $("#sidebar_news_content").animate({ top: "-=5px" }, 200);
        }
    });

}

// normally handled by control_accordion, but we need to access this specific one from outside the accordion as well
function openUploader()
{
	$("#upload").next(".par").slideToggle("slow").siblings(".par:visible").slideUp("slow");

	$(this).siblings("h1").removeClass("active");
}

function getNews()
{
  $.ajax (
  {
    method: "get",
    url: "weblog.pp",
    dataType: "html",
    data: "option=sidebar&items=10",
    success: function(html)
    {
        $("#sidebar_news_content").html(html)
    },
    error: function()
    {
    	$("#sidebar_news_content").html("Er is een fout opgetreden.")
    }
  });
}

function getSearchForm()
{
	// load static form from html-file
	$("#sidebar_search").load("content/searchform.html");

	// inject tagcloud
	search_getTagCloud();
}

function search_getTagCloud()
{
	var strTagCloud = "<strong>Populaire trefwoorden:</strong><br>";
	var i = 1;
	var intClassCounter = 1;

	$.ajax(
    {
    	method: "get",
    	url: "downloadxmlkeyword.pp?option=tagcloud",
    	dataType: "xml",
    	success: function(data)
    	{
    		$(data).find('keyword').each(function()
    		{
    			var strKeyword = $(this).find("string").text();
    			strTagCloud += " <a class=\"cloud" + intClassCounter + "\" href=\"#\" onclick=\"javascript:closePreviewAndContentPopup(); SearchForm_LoadData('" + strKeyword + "');\">" + strKeyword + "</a>";

					// change to next class? (only every three steps)
    			if ((i % 3) == 0)
    			{
    				intClassCounter++;
    			}

    			i++;
    		});

    		// put the result in the div
    		$("#search_tagcloud").html(strTagCloud);
    	},
    	error: function() { /*alert('xml error');*/ }
    });
}

function SearchForm_LoadData(strTagFromCloud)
{
		var strSearch;
		if ( strTagFromCloud!=undefined && strTagFromCloud != '' )
		{
			strSearch = strTagFromCloud;
		}
		else
		{
				strSearch = $("#sidebar_search_stringsearch").val();
		}

		var blnIncludeHistoric = 0;
		if ($("#sidebar_search_historic:checked").val()==1)
			blnIncludeHistoric = 1;

//		var blnIncludeHistoric = $("#sidebar_search_historic:checked").val();
		//alert(blnIncludeHistoric);

		var arrCategoryIDs = new Array;
		for (var i=1; i<5; i++)
		{
		if ($("#sidebar_search_categoryid_" + i + ":checked").val())
		{
		arrCategoryIDs[i] = $("#sidebar_search_categoryid_" + i + ":checked").val();
		}
		}

		// add data to #sidebar_search
		$("#sidebar_search").data("search", strSearch);
		$("#sidebar_search").data("categoryids", arrCategoryIDs);
		$("#sidebar_search").data("includehistoric", blnIncludeHistoric);

		// feed to map
		map_showSearchResult();
}

function getUploadForm(strData)
{
	$.ajax(
  {
  	method: "get",
  	url: "downloadxmlupload.pp",
  	dataType: "xml",
  	data: strData,
  	success: function(data)
  	{
  		var strCode = $(data).find('code').text();
  		var strID = $(data).find('id').text();
  		if (strCode == "UploadForm" || strCode == "LoginForm" || strCode == "LocationForm")
  		{
  			$("#sidebar_uploader").html($(data).find('data').text())

  			if (strCode == "UploadForm")
  			{
  				new AjaxUpload('UploadForm_button', {
  					action: 'downloadxmlupload.pp?option=uploadfile',
  					onSubmit: function() { showHourGlass(); },
  					onComplete: getUploadedFileStatus
  				});
  			}

  			if (strCode == "LocationForm")
  			{
  				//$('#map').jmap('RemoveAllMarkers');
  				var objMarkerManager = $('#map').data('objMarkerManager');
  				if (objMarkerManager)
  					objMarkerManager.clearMarkers();

  				map_removeListeners();

  				var objMap = $('#map').data('objMap')
  				var objCenter = objMap.getCenter();

  				var objIcon = new GIcon();
  				objIcon.image = "http://nieuwegroetenuit.picturepack.com/img/upload_pointer.png";
  				objIcon.iconSize = new GSize(200, 200);
  				objIcon.iconAnchor = new GPoint(99, 96);

  				// create markerOptions object
  				markerOptions = { icon: objIcon, draggable: false };

  				var LatLng = new GLatLng(objCenter.y, objCenter.x)

  				// put the marker on the map
  				var objMarker = new GMarker(LatLng, markerOptions);

  				objMarkerManager.addMarker(objMarker, 0);

  				LocationForm_markerAddCallBack(objMarker, strID);

  				/*$('#map').jmap('AddMarker', {
  				'pointLatLng': [objCenter.y, objCenter.x],
  				'pointHTML': '<strong>Plaatsbepaling<br />Verplaats de kaart zodat deze markering op de juiste plek staat.</strong>',
  				'pointIsDraggable': false,
  				'pointIcon': objIcon
  				}, function(objMarker) { LocationForm_markerAddCallBack(objMarker, strID); });*/

  			}
  		}
  	},
  	error: function()
  	{
  		$("#sidebar_uploader").html("Er is een fout opgetreden.")
  	}
  });
}

function showHourGlass()
{
	// hide submitbutton first
	$("#UploadForm_button").hide();
	// then show hourglass
	$("#uploadform_hourglass").show();
}

function getUploadAddress()
{
	var strAddress = $("#uploadform_address").val();

	var objMap = $('#map').data('objMap')
	if (objMap)
	{
		objGeocoder = new GClientGeocoder();
		if (objGeocoder)
		{
			objGeocoder.getLatLng(
        strAddress,
        function(point)
        {
        	if (!point)
        	{
        		alert(address + " niet gevonden.");
        	}
        	else
        	{
        		objMap.setCenter(point, 16);
        	}
        }
      );
		}
	}
}

function clearField(strID, strValDefault)
{
	if ($("#" + strID).val() == strValDefault)
	{
		$("#" + strID).val("");
	}
}


function LocationForm_markerAddCallBack(objMarker, strID)
{
  $("#sidebar_uploader").data("locationmarker", objMarker);

  var objMap = $('#map').data('objMap')
  GEvent.addListener(objMap, "moveend", function()
  {
    var objCenter = objMap.getCenter();
    var objMarker = $("#sidebar_uploader").data("locationmarker");
    if (objMarker)
    {
      objMarker.setLatLng(objCenter);
    }
  });

  $("#LocationForm_button").click(function()
  {
  	var objMarker = $("#sidebar_uploader").data("locationmarker");
  	var objLatLng = objMarker.getLatLng();
  	var strData = "&id=" + strID + "&x=" + objLatLng.lng() + "&y=" + objLatLng.lat()

  	$.ajax({
  		type: "POST",
  		url: "downloadxmlupload.pp?option=setlocation",
  		data: strData,
  		success: function(data)
  		{
  			//$('#map').jmap('RemoveAllMarkers');
  			var objMarkerManager = $('#map').data('objMarkerManager');
  			if (objMarkerManager)
  				objMarkerManager.clearMarkers();

  			getUploadForm();
  			openPreviewPopup(strID, "edit");
  			map_addListeners();

  		}
  	});

  });
}


function LogOut()
{
  $.ajax({
    type: "POST",
    url: "processclient.pp?option=logout",
    data: "",
    complete: function()
    {
      getUploadForm();
    }
  });
}

function submitLoginForm()
{
  var strLoginname = $('#LoginForm_loginname').val();
  var strPassword = $('#LoginForm_password').val();
  var strData = '&loginname=' + strLoginname + '&password=' + strPassword;

  $.ajax({
    type: "POST",
    url: "processclient.pp?option=login",
    data: strData,
    complete: function()
    {
      getUploadForm();
    }
  });
}

function getUploadedFileStatus(strFile, data)
{
  var strCode = $(data).find('code').text();
  var strData = $(data).find('data').text();
  if (strCode == "ok")
  {
		// make sure the map is clean
  	closePreviewAndContentPopup();

  	getUploadForm(strData);
  }
  else
  {
  	alert(strData);
  	getUploadForm();
  }
 }

function cancelUpload()
{
	getUploadForm();

	// fresh start
	map_showSearchResult();
}

function enterPressed(e)
{
	var keycode;
	if (window.event)
	{
		keycode = window.event.keyCode;
	}
	else if (e)
	{
		keycode = e.which;
	}
	else
	{
		return false;
	}
	return (keycode == 13);
}


