/**
 * Fade clip to/from cursor position
 *
 * Written By: Edward Troxel
 * www.jetdv.com/tts
 * Modified: 04-21-2003
 * Copyright 2003 - JET Digital Video
 **/

var VerNo = "1.0";

import System;
import System.Collections;
import System.Text;
import System.IO;
import System.Drawing;
import System.Windows.Forms;
import SonicFoundry.Vegas;



try {


  var OrgCursor;
  var dofront;
  var doend;

  OrgCursor = Vegas.Cursor;

  var dlog = new fioDialog();
  if (DialogResult.OK == dlog.ShowDialog()) {

    dofront = dlog.chkdofront.Checked;
    doend = dlog.chkdoend.Checked;


    //Go through the list of Tracks
    var trackEnum = new Enumerator(Vegas.Project.Tracks);
    while (!trackEnum.atEnd()) {
      var track : Track = Track(trackEnum.item());

      //Go through the list of Events
      var eventEnum = new Enumerator(track.Events);
      while (!eventEnum.atEnd()) {
        var evnt : TrackEvent = TrackEvent(eventEnum.item());

        if (evnt.Selected) {

          if (dofront) {
            if (((evnt.Start + evnt.Length) > OrgCursor) & (evnt.Start < OrgCursor)) {
              evnt.FadeIn.Length = OrgCursor - evnt.Start;
            }
          }

          if (doend) {
            if (((evnt.Start + evnt.Length) > OrgCursor) & (evnt.Start < OrgCursor)) {
              evnt.FadeOut.Length = evnt.Length - (OrgCursor - evnt.Start);
            }
          }
        }
        eventEnum.moveNext();
      }
      trackEnum.moveNext();
    }


    Vegas.UpdateUI();

  }

} catch (e) {
    MessageBox.Show(e);
}


class fioDialog extends Form {
    var chkdofront : CheckBox;
    var chkdoend : CheckBox;


    function fioDialog() {
        this.Text = "Fade Selected Event In/Out To/From Cursor.  -  Version: " + VerNo;
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
        this.MaximizeBox = false;
        this.StartPosition = FormStartPosition.CenterScreen;
        this.Width = 600;

        var titleBarHeight = this.Height - this.ClientSize.Height;
        var buttonWidth = 80;

        chkdofront = addCheckbox("Fade from beginning to cursor.",1 , 150, 4);
        chkdoend = addCheckbox("Fade from cursor to end.",1 , 150, chkdofront.Bottom + 4);

        //OK & Cancel Buttons
        var buttonTop = chkdoend.Bottom + 5;

        var okButton = new Button();
        okButton.Text = "OK";
        okButton.Left = this.Width - (2*(buttonWidth+10));
        okButton.Top = buttonTop - 10;
        okButton.Width = buttonWidth;
        okButton.Height = okButton.Font.Height + 12;
        okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
        AcceptButton = okButton;
        Controls.Add(okButton);

        var cancelButton = new Button();
        cancelButton.Text = "Cancel";
        cancelButton.Left = this.Width - (1*(buttonWidth+10));
        cancelButton.Top = buttonTop - 10;
        cancelButton.Height = cancelButton.Font.Height + 12;
        cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
        CancelButton = cancelButton;
        Controls.Add(cancelButton);

        this.Height = titleBarHeight + okButton.Bottom + 8;

    }

    function addCheckbox(labelName, checkbox, left, top) {
        var label = new Label();
        label.AutoSize = true;
        label.Text = labelName;
        label.Left = left + 18;
        label.Top = top + 4;
        Controls.Add(label);

        if (checkbox == 1) {
           var checkbox = new CheckBox();
           checkbox.Left = left;
           checkbox.Width = 36;
           checkbox.Top = top;
           Controls.Add(checkbox);

           return checkbox;
        }
    }

}
