﻿
webframe.segmenttype.subnavigation = function (options)
{
  webframe.segments.common.GetSegmentData(options, function(segmentData)
  {
    $('#btnChoosePage').click(function ()
    {
      ShowPageChooserDialog(-1, 'Which Page?', 'Which Page?', function (pageId, pageName)
      {
        segmentData.DataAsJson.PageId = pageId;
        segmentData.DataAsJson.PageName = pageName;
        $("#pageChooserDialog").remove();
        PopulateControls(segmentData);
      });
    });

    OpenDialog(segmentData, options.closeWithoutSaveCallback, options.saveAndCloseCallback);
    PopulateControls(segmentData);
  });

  function PopulateControls(segmentData)
  {
    $("#txtPageName").val(segmentData.DataAsJson.PageName);
    $("#hidPageId").val(segmentData.DataAsJson.PageId);
  }

  function OpenDialog(segmentData, CloseWithoutSaveCallback, SaveAndCloseCallback)
  {
    var saveAction = $("#dialogSpace").find('form').attr('action');
    $("#dialogSpace").dialog(
		{
		  buttons:
			{
			  'Cancel': function ()
			  {
			    $(this).dialog('close');
			    CloseWithoutSaveCallback.call();
			  },
			  'Save': function ()
			  {
			    segmentData = UpdatePropertyDataFromForm(segmentData);
			    webframe.segments.common.SavePropertyData(segmentData, saveAction, function (updatedSegment)
			    { segmentData = updatedSegment; });
			  },
			  'OK': function ()
			  {
			    segmentData = UpdatePropertyDataFromForm(segmentData);
			    $(this).dialog('close');
			    webframe.segments.common.SavePropertyData(segmentData, saveAction, function (updatedSegment)
			    {
			      SaveAndCloseCallback.call();
			    });
			  }
			},
		  height: 400,
		  width: 650,
		  modal: false,
		  title: 'Segment Properties',		  
		  close: function ()
		  {
		    $("#dialogSpace").remove();
		    document.isDialogOpen = false;
		  }
		});
  }

  function UpdatePropertyDataFromForm(segmentData)
  {
    segmentData.DataAsJson.PageId = $("#hidPageId").val();
    segmentData.Data = JSON.stringify(segmentData.DataAsJson);
    segmentData.Subject = segmentData.Subject || '';
    segmentData = webframe.segments.common.UpdatePropertyDataFromStandardControls(segmentData);

    return segmentData;
  }
}
