/// <summary>
        /// Returns a clone of the object.
        /// </summary>
        /// <param name="sessionScripting"> The session scripting.</param>
        /// <returns> A clone of the object.</returns>
        public static object Clone(ScriptingApplication sessionScripting)
        {
            if ( serializer == null )
            {
                // Initiate serializer.
                ScriptingApplicationSerializer init = new ScriptingApplicationSerializer();
            }

            XmlNode node = serializer.WriteXmlNode(typeof(ScriptingApplication), sessionScripting, "ScriptingApplication");
            XmlNode clone = node.Clone();
            return serializer.ReadXmlNode(typeof(ScriptingApplication), clone, "ScriptingApplication");
        }
 /// <summary>
 /// Creates a new ScriptingApplicationArgumentForm.
 /// </summary>
 /// <param name="file"> The scripting application package to run.</param>
 //        public ScriptingApplicationArgumentForm(string file) : this()
 //        {
 //            FileInfo fileInfo = new FileInfo(file);
 //            this.Text = "Scripting Application Form - " + fileInfo.Name.Replace(fileInfo.Extension, "");
 //            _packageFile = file;
 //            RunScriptingApplication(file);
 //        }
 /// <summary>
 /// Creates a new ScriptingApplicationArgumentForm.
 /// </summary>
 /// <param name="application"> The ScriptingApplication type.</param>
 /// <param name="arguments"> The ScriptingApplicationArgs type.</param>
 public ScriptingApplicationArgumentForm(ScriptingApplication application, ScriptingApplicationArgs arguments)
     : this()
 {
     if ( arguments == null )
     {
         _args = new ScriptingApplicationArgs();
     }
     else
     {
         _args = arguments;
     }
     _scrapp = application;
 }
 /// <summary>
 /// Closes the command.
 /// </summary>
 public void Close()
 {
     _sessionScripting = null;
     parser = null;
 }
        /// <summary>
        /// Loads an exising Session type.
        /// </summary>
        /// <param name="session"> Loads a session type in the ScriptingDataDesigner.</param>
        public void LoadSession(Session session)
        {
            ScriptingApplication sd = new ScriptingApplication();

            foreach (SessionRequest req in session.SessionRequests )
            {
                if ( req.RequestType == HttpRequestType.GET )
                {
                    GetWebRequest getRequest = new GetWebRequest((GetSessionRequest)req);
                    sd.AddWebRequest(getRequest);
                }
                else if ( req.RequestType == HttpRequestType.POST )
                {
                    PostWebRequest postRequest = new PostWebRequest((PostSessionRequest)req);
                    sd.AddWebRequest(postRequest);
                }
            }

            _scriptingData = sd;
        }
 /// <summary>
 /// Creates a new Scripting Designer.
 /// </summary>
 /// <param name="fileName"> The file name to open.</param>
 public ScriptingDataDesigner(string fileName)
     : this()
 {
     currentScriptingApplicationName = fileName;
     _scriptingData = new ScriptingApplication();
     LoadFile(fileName);
 }
        public override void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
        {
            base.LoadTransformEditorValues (requestIndex, scriptingData, transform);

            this.Clear();
            lstActions.Items.Clear();

            CookiesTransform tvalue = (CookiesTransform)base.WebTransform;

            // Load any tranform actions, if available
            if ( tvalue.CookieTransformActions.Length > 0 )
            {
                int i = 0;
                foreach ( TransformAction ta in  tvalue.CookieTransformActions )
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = ta.Name;
                    listItem.SubItems.Add(ta.Description);

                    if ( ta is AddTransformAction )
                    {
                        Cookie ck = tvalue.GetCookie(ta.Name);
                        listItem.Tag = new CookieListItemArgs(ck, ta);
                    }
                    else
                    {
                        listItem.Tag = new CookieListItemArgs(null, ta);
                    }

                    lstActions.Items.Add(listItem);
                    i++;
                }
            }

            if ( _headerList.Count <= 0 )
            {
                // Load the header combo list.
                _headerList.AddRange(HeaderTransform.GetRestrictedHeaders);

                foreach ( WebHeader header in base.SessionScripting.WebRequests[base.SelectedWebRequestIndex].RequestHttpSettings.AdditionalHeaders )
                {
                    _headerList.Add(header.Name);
                }
            }

            WebRequest req = base.SessionScripting.WebRequests[base.SelectedWebRequestIndex];
            LoadHeaderList(_headerList);
            LoadFormValues(req);
            LoadCookieNames(req);
        }
        public override void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
        {
            base.LoadTransformEditorValues (requestIndex, scriptingData, transform);

            this.Clear();
            lstActions.Items.Clear();

            FillFormTransform fillFormTransform = (FillFormTransform)base.WebTransform;

            // Load any tranform actions, if available
            if ( fillFormTransform.FormFields.Length > 0 )
            {
                foreach ( FormField formField in fillFormTransform.FormFields )
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = formField.FieldName;
                    listItem.SubItems.Add(formField.Index.ToString());
                    listItem.SubItems.Add(formField.Description);
                    listItem.Tag = formField;

                    lstActions.Items.Add(listItem);
                }
            }

            if ( _headerList.Count <= 0 )
            {
                // Load the header combo list.
                _headerList.AddRange(HeaderTransform.GetRestrictedHeaders);

                foreach ( WebHeader header in base.SessionScripting.WebRequests[base.SelectedWebRequestIndex].RequestHttpSettings.AdditionalHeaders )
                {
                    _headerList.Add(header.Name);
                }
            }

            WebRequest req = base.SessionScripting.WebRequests[base.SelectedWebRequestIndex];
            LoadHeaderList(_headerList);
            LoadFormValues(req);
            LoadCookieNames(req);
        }
        //        private void toolBar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
        //        {
        //            if ( e.Button == tbSaveApplication )
        //            {
        //                if ( this.Parent.Parent is ScriptingDataDesigner )
        //                {
        //                    ScriptingDataDesigner designer = (ScriptingDataDesigner)this.Parent.Parent;
        //                    designer.SaveApplication();
        //                }
        //            }
        //
        //            if ( e.Button == tbArguments )
        //            {
        //                if ( this.Parent.Parent is ScriptingDataDesigner )
        //                {
        //                    ScriptingDataDesigner designer = (ScriptingDataDesigner)this.Parent.Parent;
        //                    designer.ShowScriptingArgumentsDesigner();
        //                }
        //            }
        //        }
        /// <summary>
        /// Loads the request.
        /// </summary>
        /// <param name="index"> The current request index.</param>
        /// <param name="scripting"> The scripting application.</param>
        /// <param name="request"> The current web request.</param>
        public override void LoadRequest(int index, ScriptingApplication scripting ,Ecyware.GreenBlue.Engine.Scripting.WebRequest request)
        {
            base.LoadRequest (index, scripting, request);

            this.EditorText = "";
            string postData = string.Empty;
            if ( request.RequestType == HttpRequestType.POST )
            {
                postData = ((PostWebRequest)request).PostData;
                request.UpdateXmlEnvelope(postData);
            }
            if ( request.RequestType == HttpRequestType.PUT )
            {
                postData = ((PutWebRequest)request).PostData;
                request.UpdateXmlEnvelope(postData);
            }

            if ( request.XmlEnvelope != null )
            {
                this.EditorText = this.IndentFormatXml(request.XmlEnvelope);
            }
        }
        /// <summary>
        /// Loads the request.
        /// </summary>
        /// <param name="index"> The selected web request index.</param>
        /// <param name="scripting"> The scripting application.</param>
        /// <param name="request"> The current web request.</param>
        public override void LoadRequest(int index, ScriptingApplication scripting ,Ecyware.GreenBlue.Engine.Scripting.WebRequest request)
        {
            if ( request is PostWebRequest )
            {
                chkUsePostData.Visible = true;
                chkUsePostData.Checked = ((PostWebRequest)request).UsePostData;
            }
            else
            {
                chkUsePostData.Visible = false;
            }

            base.LoadRequest (index, scripting, request);
            txtUrl.Text = request.Url;
            txtRequestID.Text = request.ID;
            this.LoadHttpProperties(request.RequestHttpSettings);
        }
 /// <summary>
 /// Loads a transform editor values.
 /// </summary>
 /// <param name="requestIndex"> The selected web request index.</param>
 /// <param name="scriptingData"> The session scripting data.</param>
 /// <param name="transform"> Loads a WebTransform.</param>
 public virtual void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
 {
     _requestIndex  = requestIndex;
     _transform = transform;
     _scripting = scriptingData;
 }
        /// <summary>
        /// Loads the request.
        /// </summary>
        /// <param name="request"></param>
        public override void LoadRequest(int index, ScriptingApplication scripting ,Ecyware.GreenBlue.Engine.Scripting.WebRequest request)
        {
            base.LoadRequest (index, scripting, request);

            this.SuspendLayout();
            tvTransforms.ContextMenu = this.mnuOutputMenu;

            pnTransformEditor.Controls.Clear();
            tvTransforms.Nodes.Clear();

            tvTransforms.Nodes.Add(new TreeNode("Transforms"));

            if ( request.OutputTransforms.Length > 0 )
            {
                // Load transforms
                WebTransformPageUIHelper.LoadTransforms(tvTransforms.Nodes[0],request.OutputTransforms);
            }

            tvTransforms.ExpandAll();
            tvTransforms.SelectedNode = tvTransforms.Nodes[0];
            this.ResumeLayout(false);
        }
 /// <summary>
 /// Loads a WebRequest.
 /// </summary>
 /// <param name="request"> Loads a WebRequest.</param>
 public virtual void LoadRequest(int requestIndex, ScriptingApplication sessionScripting, WebRequest request)
 {
     _requestIndex = requestIndex;
     _scripting = sessionScripting;
     _request = request;
 }
 /// <summary>
 /// Initiate the test.
 /// </summary>
 /// <param name="application"> The scripting application.</param>
 /// <param name="index"> The index.</param>
 public void TestRequestUntilIndex(ScriptingApplication application, int index)
 {
     _appClone = application.Clone();
     _startingIndex = index;
     scriptingCommand.ExecuteSessionUntilEnd(application.Clone(), index);
 }
        /// <summary>
        /// Executes a session that executes until the end index and uses a scripting file. 
        /// </summary>
        /// <param name="application"> The scripting application.</param>
        /// <param name="endIndex"> The index where the last request executes.</param>
        /// <param name="scriptingFileLocation"> The scripting file location.</param>
        //        public void ExecuteScriptedSession(ScriptingApplication application, int endIndex, string scriptingFileLocation)
        //        {
        //            _sessionScripting = application;
        //            IVsaItems    items = _engine.Items;
        //
        //            // Load the script code
        //            // NOTE: For VB, the name of the item, "Script", must match the name of the Module,
        //            //       or adding global items won't work <sigh>
        //            IVsaCodeItem codeItem = (IVsaCodeItem)items.CreateItem("Script",
        //                VsaItemType.Code,
        //                VsaItemFlag.None);
        //
        //            StreamReader reader = new StreamReader(scriptingFileLocation);
        //            codeItem.SourceText = reader.ReadToEnd();
        //            reader.Close();
        //
        //            // Add the global "This" item
        //            IVsaGlobalItem  scommand = (IVsaGlobalItem)items.CreateItem("This",
        //                VsaItemType.AppGlobal,
        //                VsaItemFlag.None);
        //            scommand.TypeString = "Ecyware.GreenBlue.Engine.Scripting.ScriptingCommand";
        //
        //            // Add the global "MyScriptingApplication" item
        //            IVsaGlobalItem  sapplication = (IVsaGlobalItem)items.CreateItem("MyScriptingApplication",
        //                VsaItemType.AppGlobal,
        //                VsaItemFlag.None);
        //            sapplication.TypeString = "Ecyware.GreenBlue.Engine.Scripting.ScriptingApplication";
        //            
        ////			_engine.SetOption("print", true);
        //
        ////			// Set the JS output stream once for this appdomain
        ////			if( _jsStream == null )
        ////			{
        ////				StreamWriter    writer = new StreamWriter(@"c:\jsout.txt");
        ////				writer.AutoFlush = true;
        ////				_jsStream = writer;
        ////				Microsoft.JScript.ScriptStream.Out = _jsStream;
        ////			}
        //
        //            try
        //            {
        //                // Run the script
        //                if ( _engine.Compile() )
        //                {
        //                    _engine.Run();
        //                    ExecuteSessionUntilEnd(application, endIndex);
        //                }
        //            }
        //            catch ( Exception ex )
        //            {
        //                System.Windows.Forms.MessageBox.Show(ex.ToString());
        //            }
        //        }
        //
        //
        /// <summary>
        /// Executes a session that executes until the end index.
        /// </summary>
        /// <param name="application"> The scripting application.</param>
        /// <param name="endIndex"> The index where the last request executes.</param>
        public void ExecuteSessionUntilEnd(ScriptingApplication application, int endIndex)
        {
            ScriptingApplication temp = application.Clone();
            temp.ClearWebRequests();

            // if endIndex is 0, we want to include it.
            for ( int i=0;i<=endIndex;i++ )
            {
                // add to new scripting data.
                temp.AddWebRequest(application.WebRequests[i]);
            }

            // Replace Scripting Data with current.
            _sessionScripting = temp;

            // Start from zero.
            IsRunning = true;
            ExecuteRequest(temp.WebRequests[0],0);
        }
        public override void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
        {
            base.LoadTransformEditorValues (requestIndex, scriptingData, transform);

            this.Clear();
            RequestTransform requestTransform = (RequestTransform)base.WebTransform;

            TransformValue = requestTransform.UpdateTransformAction.Value;
            txtTransformDescription.Text = requestTransform.UpdateTransformAction.Description;

            #region Request Fields
            if ( _requestFields.Count <= 0 )
            {
                _requestFields.Add(new NameValueObject("Change Complete Url", "Url"));
                _requestFields.Add(new NameValueObject("Change Url Hostname", "ChangeUrlHostname"));
                _requestFields.Add(new NameValueObject("Change Url Path", "ChangeUrlPath"));
                _requestFields.Add(new NameValueObject("Set Request ID", "ID"));
                _requestFields.Add(new NameValueObject("Set Basic Authentication Username", "Username"));
                _requestFields.Add(new NameValueObject("Set Basic Authentication Password", "Password"));

                this.cmbRequestField.DataSource = _requestFields;
                this.cmbRequestField.DisplayMember = "Name";
                this.cmbRequestField.ValueMember = "Value";
            }
            #endregion

            if ( requestTransform.RequestFieldName != null )
            {
                cmbRequestField.SelectedValue = requestTransform.RequestFieldName;
            }

            this.cmbTransformValue.SelectedIndex = this.GetTransformValueComboIndex(TransformValue);

            #region Headers Dialog
            if ( _headerList.Count <= 0 )
            {
                // Load the header combo list.
                _headerList.AddRange(HeaderTransform.GetRestrictedHeaders);

                foreach ( WebHeader header in base.SessionScripting.WebRequests[base.SelectedWebRequestIndex].RequestHttpSettings.AdditionalHeaders )
                {
                    _headerList.Add(header.Name);
                }
            }

            WebRequest req = base.SessionScripting.WebRequests[base.SelectedWebRequestIndex];
            LoadHeaderList(_headerList);
            LoadFormValues(req);
            LoadCookieNames(req);
            #endregion
        }
        /// <summary>
        /// Loads the request.
        /// </summary>
        /// <param name="index"> The current request index.</param>
        /// <param name="scripting"> The scripting application.</param>
        /// <param name="request"> The current web request.</param>
        public override void LoadRequest(int index, ScriptingApplication scripting ,Ecyware.GreenBlue.Engine.Scripting.WebRequest request)
        {
            base.LoadRequest (index, scripting, request);

            try
            {
                //_httpRequestType = request.RequestType;
                _currentRequestUri = new Uri(request.Url);

                if ( request.Form.Elements.Length > 0 )
                {
                    HtmlFormTagCollection forms = new HtmlFormTagCollection(1);
                    _form = request.Form.WriteHtmlFormTag();
                    forms.Add(request.Form.Name, _form);

                    // Load tree
                    LoadFormTree(forms);
                }
                else
                {
                    DisplayNoDataMessage();
                }
            }
            catch ( Exception ex )
            {
                MessageBox.Show(ex.ToString(), AppLocation.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        public override void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
        {
            base.LoadTransformEditorValues (requestIndex, scriptingData, transform);

            this.Clear();
            lvValues.Items.Clear();

            GmailSmtpTransform gmtransform = (GmailSmtpTransform)transform;

            if ( gmtransform.Transport  != null )
            {
                GmailTransport transport = (GmailTransport)gmtransform.Transport;
                this.txtBcc.Text = transport.Bcc;
                this.txtCc.Text = transport.Cc;
                if ( transport.Format ==  System.Web.Mail.MailFormat.Html )
                {
                    this.rbHTML.Checked = true;
                }
                if ( transport.Format ==  System.Web.Mail.MailFormat.Text )
                {
                    this.rbText.Checked = true;
                }
                this.txtFrom.Text = transport.From;
                this.txtPassword.Text = transport.Password;
                this.txtUsername.Text = transport.Username;
                this.txtTo.Text = transport.To;
                this.txtSubject.Text = transport.Subject;
            }

            // Load any tranform value, if available
            if ( gmtransform.QueryCommandActions.Length > 0 )
            {
                foreach ( QueryCommandAction action in gmtransform.QueryCommandActions )
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = action.Description;
                    listItem.Tag = action;

                    lvValues.Items.Add(listItem);
                }
            }

            if ( _headerList.Count <= 0 )
            {
                // Load the header combo list.
                _headerList.AddRange(HeaderTransform.GetRestrictedHeaders);

                foreach ( WebHeader header in base.SessionScripting.WebRequests[base.SelectedWebRequestIndex].RequestHttpSettings.AdditionalHeaders )
                {
                    _headerList.Add(header.Name);
                }
            }

            //this.cmbTransformValue.SelectedIndex = this.GetTransformValueComboIndex(queryTransform);

            WebRequest req = base.SessionScripting.WebRequests[base.SelectedWebRequestIndex];
            LoadHeaderList(_headerList);
            LoadFormValues(req);
            LoadCookieNames(req);
        }
        /// <summary>
        /// Saves the application to store.
        /// </summary>
        /// <param name="fileName"> The filename.</param>
        public void SaveApplicationToStore(string fileName)
        {
            FileInfo fi = new FileInfo(fileName);
            string filePath = AppLocation.DocumentFolder + "\\" + fi.Name;

            try
            {
                File.Copy(fileName, filePath);
                string xml = AppLocation.GetMIMEType(fileName);

                if ( xml.CompareTo("text/xml") == 0 )
                {
                    string packageFileName = AppLocation.DocumentFolder + "\\" + fi.Name.Replace(fi.Extension,"") + ".gbscr";
                    ScriptingApplication app = new ScriptingApplication();
                    app.Load(filePath);
                    ScriptingApplicationPackage.CreatePackage(app, null, packageFileName, false);
                    File.Delete(filePath);
                }
            }
            catch ( IOException ex )
            {
                System.Windows.Forms.MessageBox.Show("There is already a file with name " + fi.Name + " in the local store.",AppLocation.ApplicationName, MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
            catch ( Exception ex )
            {
                System.Windows.Forms.MessageBox.Show(ex.Message,AppLocation.ApplicationName, MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }
        public override void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
        {
            base.LoadTransformEditorValues (requestIndex, scriptingData, transform);

            ResponseResultTransform rtransform = (ResponseResultTransform)base.WebTransform;

            this.cmbTransports.SelectedIndex = GetTransportValueComboIndex(rtransform.Transport);

            if ( rtransform != null )
            {
                this.chkUseSession.Checked = rtransform.UseSession;
                this.txtSessionName.Text = rtransform.SessionName;
                _transport = rtransform.Transport;
            }
        }
        /// <summary>
        /// Opens a package from a web instance.
        /// </summary>
        /// <param name="fileName"> The package file name.</param>
        public void OpenPackageWeb(string fileName)
        {
            C1ZipFile zipFile = new C1ZipFile();
            //  package = new ScriptingApplicationPackage();

            try
            {
                zipFile.Open(fileName);

                // Application
                C1ZipEntry entry = zipFile.Entries[0];
                // Get entry name and convert to guid
                // if invalid GUID, throw exception
                string name = entry.FileName;
                string applicationXml = string.Empty;
                string applicationArgumentsXml = string.Empty;

                // Get Scripting Application Xml.
                Guid g = new Guid(name);
                StreamReader reader = new StreamReader(entry.OpenReader(),System.Text.Encoding.UTF8);
                applicationXml= reader.ReadToEnd();
                reader.Close();

                if ( zipFile.Entries.Count > 1 )
                {
                    // Arguments
                    entry = zipFile.Entries[1];
                    reader = new StreamReader(entry.OpenReader(),System.Text.Encoding.UTF8);
                    applicationArgumentsXml = reader.ReadToEnd();

                    if ( applicationArgumentsXml.ToLower() != "none" )
                    {
                        _arguments = ScriptingApplicationArgs.FromXml(applicationArgumentsXml);
                    }
                    else
                    {
                        _arguments = null;
                    }

                    reader.Close();
                }

                // Get Custom Transforms
                int start = 2;
                for ( int i=2;i<zipFile.Entries.Count;i++ )
                {
                    entry = zipFile.Entries[i];

                    if ( entry.FileName == "CustomTransformsSeparator" )
                    {
                        start = i+1;
                        break;
                    }

                    // Add File References to Application Startup
                    // string location = System.Windows.Forms.Application.StartupPath + Path.DirectorySeparatorChar + entry.FileName;
            //					if ( !File.Exists(location) )
            //					{
            //						zipFile.Entries.Extract(i, location);
            //					}
                    // Add WebTransform Entry in Configuration.
                    // if exists don't add.
                    // RegisterWebTransform(location);
                    // ScriptingApplicationSerializer.UpdateSerializer();
                }

                // Generate scripting application.
                XmlDocument document = new XmlDocument();
                document.LoadXml(applicationXml);
                _application = ScriptingApplication.Decrypt(document);
                //	_application = ScriptingApplication.FromXml(applicationXml);
            //
            //				for ( int i=start;i<zipFile.Entries.Count;i++ )
            //				{
            //					entry = zipFile.Entries[i];
            //
            //					// Add File References to Internet Cache
            //					string location = Utils.AppLocation.InternetTemp + Path.DirectorySeparatorChar + _application.Header.ApplicationID + Path.DirectorySeparatorChar + entry.FileName;
            //					if ( File.Exists(location) )
            //					{
            //						File.Delete(location);
            //					}
            //					zipFile.Entries.Extract(i, location);
            //				}
            }
            catch
            {
                throw;
            }
            finally
            {
                zipFile.Close();
            }
        }
        /// <summary>
        /// Runs the scripting application as a Windows Form application.
        /// </summary>
        /// <param name="file"> The ScriptingApplication or ScriptingApplicationPackage to run.</param>
        public void RunScriptingApplication(string file)
        {
            FileInfo fileInfo = new FileInfo(file);
            _packageFile = file;
            this.Text = "Scripting Application Form - " + fileInfo.Name.Replace(fileInfo.Extension, "");
            string contentType = AppLocation.GetMIMEType(file);

            if ( contentType.IndexOf("xml") == -1 )
            {
                ScriptingApplicationPackage package = new ScriptingApplicationPackage(file);
                _args = package.ScriptingApplicationArguments;
                _scrapp = package.ScriptingApplication;
            }
        }
        /// <summary>
        /// Creates a new ScriptingApplicationPackage.
        /// </summary>
        /// <param name="application"> The scripting application.</param>
        /// <param name="arguments"> The application arguments.</param>
        /// <param name="filePath"> The output file path.</param>
        /// <param name="doEncrypt"> Sets the encrypttion setting for a scripting application.</param>
        public static void CreatePackage(ScriptingApplication application, ScriptingApplicationArgs arguments, string filePath, bool doEncrypt)
        {
            try
            {
                if ( application.Header.ApplicationID == null )
                {
                    application.Header.ApplicationID = System.Guid.NewGuid().ToString();
                }

                // Get all FileReference elements.
                FileReference[] fileReferences = application.GetFileReferences();
                string applicationPath = System.Windows.Forms.Application.UserAppDataPath;

                string temp = applicationPath + "/temp/";

                if ( !Directory.Exists(temp) )
                {
                    Directory.CreateDirectory(temp);
                }

                C1.C1Zip.C1ZipFile zipFile = new C1.C1Zip.C1ZipFile();
                zipFile.Create(filePath);
                zipFile.Open(filePath);

                string argumentsFileName = application.Header.ApplicationID + "-applicationArguments.xml";

                FileReference argumentsFileReference = new FileReference(argumentsFileName);
                application.Header.ScriptingApplicationArgumentsReference = argumentsFileReference;

                // Add Scripting Application
                string xml = string.Empty;
                if ( doEncrypt )
                {
                    xml = application.Encrypt();
                }
                else
                {
                    xml = application.ToXml();
                }

                MemoryStream mem = new MemoryStream(System.Text.Encoding.UTF8.GetByteCount(xml));
                StreamWriter writer =  new StreamWriter(mem, System.Text.Encoding.UTF8);
                writer.Write(xml);
                writer.Flush();
                mem.Position = 0;
                zipFile.Entries.Add(writer.BaseStream, application.Header.ApplicationID);
                writer.Close();

                string argsXml = "None";
                if ( arguments != null )
                {
                    // Add Scripting Application Arguments
                    argsXml = arguments.ToXml();
                }
                mem = new MemoryStream(System.Text.Encoding.UTF8.GetByteCount(argsXml));
                writer =  new StreamWriter(mem, System.Text.Encoding.UTF8);
                writer.Write(argsXml);
                writer.Flush();
                mem.Position = 0;
                zipFile.Entries.Add(writer.BaseStream, argumentsFileName);
                writer.Close();

                FileReference[] customTransforms = application.GetCustomTransforms();

                // add custom transforms
                foreach ( FileReference reference in customTransforms )
                {
                    if ( File.Exists(reference.FileName) )
                    {
                        FileInfo fileInfo = new FileInfo(reference.FileName);
                        zipFile.Entries.Add(reference.FileName, fileInfo.Name);
                    }
                }

                MemoryStream stream = new MemoryStream();
                stream.Write(new byte[] {0}, 0, 1);
                zipFile.Entries.Add(stream, "CustomTransformsSeparator");
                stream.Close();

                // add file references that are not custom transforms
                foreach ( FileReference reference in fileReferences )
                {
                    if ( File.Exists(reference.FileName) )
                    {
                        FileInfo fileInfo = new FileInfo(reference.FileName);
                        zipFile.Entries.Add(reference.FileName, fileInfo.Name);
                    }
                }

                zipFile.Close();
            }
            catch
            {
                throw;
            }
        }
 /// <summary>
 /// Shows the scripting data as xml.
 /// </summary>
 /// <param name="scriptingData"> The ScriptingData type.</param>
 public void ShowScriptingDataXml(ScriptingApplication scriptingData)
 {
     this.EditorText = scriptingData.ToXml();
 }
 /// <summary>
 /// Loads the request.
 /// </summary>
 /// <param name="request"></param>
 public override void LoadRequest(int index, ScriptingApplication scripting ,Ecyware.GreenBlue.Engine.Scripting.WebRequest request)
 {
     base.LoadRequest (index, scripting, request);
     this.SetCookies(request.Cookies);
 }
        /// <summary>
        /// Saves the changes in the page.
        /// </summary>
        /// <param name="sender"> The sender object.</param>
        /// <param name="e"> The event arguments.</param>
        private void tvSessionTree_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
        {
            if ( tvSessionTree.SelectedNode != null )
            {
                Type pageType = (Type)tvSessionTree.SelectedNode.Tag;
                BaseScriptingDataPage page = GetPageControl(pageType);

                if ( pageType == typeof(ScriptingMainPage) )
                {
                    // Save scripting application
                    ScriptingMainPage control = (ScriptingMainPage)page;
                    ScriptingApplication newApplication = control.LoadScriptingApplication();

                    if ( newApplication != null )
                    {
                        _scriptingData = newApplication;
                    }
                }
                else if ( pageType == typeof(WebRequestPage) )
                {
                    // Update current changes
                    _scriptingData.UpdateWebRequest(tvSessionTree.SelectedNode.Index, page.WebRequest);
                }
                else
                {
                    // Update current changes
                    _scriptingData.UpdateWebRequest(tvSessionTree.SelectedNode.Parent.Index, page.WebRequest);
                }
            }
        }
        public override void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
        {
            base.LoadTransformEditorValues (requestIndex, scriptingData, transform);

            this.Clear();
            lstActions.Items.Clear();

            SecurityTransform securityTransform = (SecurityTransform)base.WebTransform;

            // Load any tranform actions, if available
            if ( securityTransform.SecurityTransformActions.Length > 0 )
            {

                foreach ( SecurityTransformAction action in securityTransform.SecurityTransformActions )
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = action.RequestStateDataType.ToString();
                    listItem.SubItems.Add(action.TestValue.Value);
                    listItem.Tag = action;

                    lstActions.Items.Add(listItem);
                }
            }

            //			if ( _headerList.Count <= 0 )
            //			{
            //				// Load the header combo list.
            //				_headerList.AddRange(HeaderTransform.GetRestrictedHeaders);
            //
            //				foreach ( WebHeader header in base.SessionScripting.WebRequests[base.SelectedWebRequestIndex].RequestHttpSettings.AdditionalHeaders )
            //				{
            //					_headerList.Add(header.Name);
            //				}
            //			}

            WebRequest req = base.SessionScripting.WebRequests[base.SelectedWebRequestIndex];
            //LoadHeaderList(_headerList);
            //LoadFormValues(req);
            //LoadCookieNames(req);
        }
        /// <summary>
        /// Loads a scripting file.
        /// </summary>
        /// <param name="fileName"> The file name to load.</param>
        public void LoadFile(string fileName)
        {
            string contentType = AppLocation.GetMIMEType(fileName);

            // xml file
            if ( contentType.IndexOf("xml") > -1 )
            {
                _scriptingData.Load(fileName);
            }
            else
            {
                ScriptingApplicationPackage package
                    = new ScriptingApplicationPackage(fileName);
                _scriptingData = package.ScriptingApplication;
                _scriptingArgumentsDef = package.ScriptingApplicationArguments;
            }
        }
        /// <summary>
        /// Loads the request.
        /// </summary>
        /// <param name="index"> The selected web request index.</param>
        /// <param name="scripting"> The scripting data.</param>
        /// <param name="request"> The web request.</param>
        public override void LoadRequest(int index, ScriptingApplication scripting ,Ecyware.GreenBlue.Engine.Scripting.WebRequest request)
        {
            base.LoadRequest (index, scripting, request);

            this.SuspendLayout();

            tvTransforms.ContextMenu = this.mnuInputMenu;

            // Clear
            pnTransformEditor.Controls.Clear();
            tvTransforms.Nodes.Clear();

            //			if ( index == 0 )
            //			{
            //				tvTransforms.Nodes.Add(new TreeNode("There is no previous web result to process."));
            //			}
            //			else
            //			{

                tvTransforms.Nodes.Add(new TreeNode("Transforms"));

                if ( request.InputTransforms.Length > 0 )
                {
                    // Load transforms
                    WebTransformPageUIHelper.LoadTransforms(tvTransforms.Nodes[0],request.InputTransforms);
                }

                this.Focus();
                tvTransforms.ExpandAll();
            //	}

            tvTransforms.SelectedNode = tvTransforms.Nodes[0];
            this.ResumeLayout(false);
        }
        public override void LoadTransformEditorValues(int requestIndex, ScriptingApplication scriptingData, WebTransform transform)
        {
            base.LoadTransformEditorValues (requestIndex, scriptingData, transform);

            this.Clear();
            lstActions.Items.Clear();

            QueryTransform queryTransform = (QueryTransform)base.WebTransform;

            this.cmbTransports.SelectedIndex = GetTransportValueComboIndex(queryTransform.Transport);

            if ( queryTransform.Transport != null )
            {
                _transport = queryTransform.Transport;
            }

            // Load any tranform value, if available
            if ( queryTransform.QueryCommandActions.Length > 0 )
            {
                foreach ( QueryCommandAction action in queryTransform.QueryCommandActions )
                {
                    ListViewItem listItem = new ListViewItem();
                    listItem.Text = action.Description;
                    listItem.Tag = action;

                    lstActions.Items.Add(listItem);
                }
            }

            if ( _headerList.Count <= 0 )
            {
                // Load the header combo list.
                _headerList.AddRange(HeaderTransform.GetRestrictedHeaders);

                foreach ( WebHeader header in base.SessionScripting.WebRequests[base.SelectedWebRequestIndex].RequestHttpSettings.AdditionalHeaders )
                {
                    _headerList.Add(header.Name);
                }
            }

            //this.cmbTransformValue.SelectedIndex = this.GetTransformValueComboIndex(queryTransform);

            WebRequest req = base.SessionScripting.WebRequests[base.SelectedWebRequestIndex];
            LoadHeaderList(_headerList);
            LoadFormValues(req);
            LoadCookieNames(req);
        }
 /// <summary>
 /// Creates a new ScriptingCommand.
 /// </summary>
 /// <param name="sessionScripting"> The ScriptingData to load.</param>
 public ScriptingCommand(ScriptingApplication sessionScripting)
     : this()
 {
     _sessionScripting = sessionScripting;
 }