﻿
webframe.segmenttype.defaulthtml = function (options)
{
  //Private functions
  function destroyRTE()
  {
    var rteBodyInstance = CKEDITOR.instances['rteBody'];
    if (rteBodyInstance)
    {
      CKEDITOR.remove(rteBodyInstance);
    }
  }

  //this is DefaultHTML specific
  function submitForm(callback)
  {
    var $frm = $('#pageSegmentForm');

    //Do some data conditioning
    var submitData = $frm.serializeArray();

    Enumerable.From(submitData).Where(function (x) { return x.name == 'Body'; })
          .Single().value = CKEDITOR.instances.rteBody.getData();

    if (options.pageId)
    { submitData.push({ name: 'PageId', value: options.pageId }); }

    if (options.segmentTypeId)
    { submitData.push({ name: 'SegmentTypeId', value: options.segmentTypeId }); }

    $.ajax({
      url: $frm.attr("action"),
      type: 'POST',
      data: submitData,
      success: function (data)
      {
        if (callback != null)
        { callback.call(); }
      }
    });
  }

  //Entry point

  $("#dialogSpace").dialog(
	{
	  buttons:
		{
		  'OK': function ()
		  {
		    submitForm(function ()
		    {
		      $(this).dialog('close');

		      options.saveAndCloseCallback.call();
		    });
		  },
		  'Save': function ()
		  {
		    webframe.ui.BlockUIDisplay();
		    submitForm(function ()
		    {
		      webframe.ui.UnblockUIDisplay();
		    });
		  },
		  'Cancel': function ()
		  {
		    $(this).dialog('close');
		    options.closeWithoutSaveCallback.call();
		  }
		},
	  width: 800,
	  modal: false,
	  title: 'Segment Properties',
	  close: function ()
	  {
	    //DefaultHTML spec
	    destroyRTE();
	    $("#dialogSpace").remove();
	    document.isDialogOpen = false;
	  }
	});

  CKEDITOR.on('dialogDefinition', function (ev)
  {
    console.log(ev);
    var editor = ev.editor;
    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;

    // Check if the definition is from the dialog we're
    // interested on (the "Link" dialog).
    if (dialogName == 'link')
    {
      var infoTab = dialogDefinition.getContents('info');
      var linkTypeFld = infoTab.get('linkType');

      linkTypeFld.items[3] = ["Document", "doc"];

      var linkTypeValue;
      linkTypeFld.onChange = function ()
      {
        var dialog = this.getDialog(),
			    partIds = ['urlOptions', 'anchorOptions', 'emailOptions'],
			    typeValue = this.getValue(),
			    uploadTab = dialog.definition.getContents('upload'),
			    uploadInitiallyHidden = uploadTab && uploadTab.hidden;

        linkTypeValue = typeValue;

        if (typeValue == 'url' || typeValue == 'doc')
        {
          if (editor.config.linkShowTargetTab)
          { dialog.showPage('target'); }

          if (!uploadInitiallyHidden)
          { dialog.showPage('upload'); }
        }
        else
        {
          dialog.hidePage('target');
          if (!uploadInitiallyHidden)
          { dialog.hidePage('upload'); }
        }

        if (typeValue == 'doc')
        {
          var browseBtn = infoTab.get('browse');
          browseBtn.filebrowser.url = '/ControlPanel/MediaCenter/Dialog';

          //Set the type to URL because we want the UI to set up the same way.
          typeValue = 'url';
        }

        for (var i = 0; i < partIds.length; i++)
        {
          var element = dialog.getContentElement('info', partIds[i]);
          if (!element)
          { continue; }

          element = element.getElement().getParent().getParent();
          if (partIds[i] == typeValue + 'Options')
          { element.show(); }
          else
          { element.hide(); }
        }

        dialog.layout();
      };

      var origOnOk = dialogDefinition.onOk;
      dialogDefinition.onOk = function ()
      {
        if (linkTypeValue == 'doc')
        { this.setValueOf('info', 'linkType', 'url'); }

        origOnOk.call(this);
      };
    }
  });

  CKEDITOR.replace('rteBody', {
    filebrowserImageBrowseUrl: '/ControlPanel/MediaCenter/Dialog?types=2',
    filebrowserLinkBrowseUrl: '/ControlPanel/ContentPage/PageLinkList',
    filebrowserWindowWidth: '820',
    filebrowserWindowHeight: '550',
    filebrowserWindowFeatures: 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes'
  });

  $('#toggleLinkStuff').click(function ()
  {
    $('#linkStuff').toggle();
    return false;
  });
}
