//=============================================================================
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            // Apply application theme from TXT file
            var assembly     = Assembly.GetExecutingAssembly();
            var resourceName = "RackDrawingApp.Resources.ApplicationTheme.txt";

            //
            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
            {
                ColorTheme appTheme = ColorTheme.ReadFromStream(stream);

                // apply theme
                if (appTheme != null)
                {
                    CurrentTheme.CurrentColorTheme = appTheme;
                }
            }

            // Application should be closed after 24 hours run.
            AppCloseTimer.Initialize(AppShutdown);

            bool bShowLoginWindows = true;

            // If some arguments are passed, then try to get login, password and license path.
            if (e.Args.Count() > 0)
            {
                string strLogin          = string.Empty;
                string strPassword       = string.Empty;
                string strLicensePath    = string.Empty;
                string strCutomerName    = string.Empty;
                string strEnqNo          = string.Empty;
                string strContactNo      = string.Empty;
                string strEmailID        = string.Empty;
                string strBillingAddress = string.Empty;
                string strSiteAddress    = string.Empty;
                string strDrawingPath    = string.Empty;
                //
                foreach (string strArg in e.Args)
                {
                    if (string.IsNullOrEmpty(strArg))
                    {
                        continue;
                    }

                    if (strArg.StartsWith(ARG_LOGIN))
                    {
                        strLogin = strArg.Replace(ARG_LOGIN, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_PASSWORD))
                    {
                        strPassword = strArg.Replace(ARG_PASSWORD, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_LICENSE))
                    {
                        strLicensePath = strArg.Replace(ARG_LICENSE, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_CUSTOMER_NAME))
                    {
                        strCutomerName = strArg.Replace(ARG_CUSTOMER_NAME, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_ENQ_NO))
                    {
                        strEnqNo = strArg.Replace(ARG_ENQ_NO, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_CONTACT_NO))
                    {
                        strContactNo = strArg.Replace(ARG_CONTACT_NO, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_EMAIL_ID))
                    {
                        strEmailID = strArg.Replace(ARG_EMAIL_ID, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_BILLING_ADDRESS))
                    {
                        strBillingAddress = strArg.Replace(ARG_BILLING_ADDRESS, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_SITE_ADDRESS))
                    {
                        strSiteAddress = strArg.Replace(ARG_SITE_ADDRESS, string.Empty);
                    }
                    else if (strArg.StartsWith(ARG_DRAWING_PATH))
                    {
                        strDrawingPath = strArg.Replace(ARG_DRAWING_PATH, string.Empty);
                    }
                }

                UserInfo.Login                  = strLogin;
                UserInfo.CustomerName           = strCutomerName;
                UserInfo.EnqNo                  = strEnqNo;
                UserInfo.CustomerContactNo      = strContactNo;
                UserInfo.CustomerEmailID        = strEmailID;
                UserInfo.CustomerBillingAddress = strBillingAddress;
                UserInfo.CustomerSiteAddress    = strSiteAddress;
                UserInfo.DrawingPath            = strDrawingPath;
                if (!string.IsNullOrEmpty(strLicensePath))
                {
                    string strError;
                    int    iRes = LicenseUtilities.IsValidLicense(strLicensePath, strLogin, strPassword, out strError);
                    if (iRes >= 0)
                    {
                        bShowLoginWindows = false;
                    }
                }
            }

            if (bShowLoginWindows)
            {
                LoginWindow loginWnd = new LoginWindow();
                loginWnd.Show();
            }
            else
            {
                StartupWindow startupWnd = new StartupWindow();
                if (!string.IsNullOrEmpty(UserInfo.DrawingPath))
                {
                    startupWnd.StartOldApp();
                }
                else
                {
                    startupWnd.Show();
                }
            }
        }
        //=============================================================================
        private void LoginButton_Click(object sender, RoutedEventArgs e)
        {
            if (m_VM == null)
            {
                return;
            }

            string strLicenseFilePath = string.Empty;

            if (m_VM.ConnectToServer)
            {
                try
                {
                    // Try to connect to the login server.
                    using (WebClient webClient = new WebClient())
                    {
                        webClient.QueryString.Add(LoginServerData.PARAM_USERNAME, m_VM.UserName);
                        webClient.QueryString.Add(LoginServerData.PARAM_PASSWORD, _PasswordBox.Password.ToString());

                        // Try to create license file in the assembly directory.
                        string assemblyFolder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                        strLicenseFilePath = assemblyFolder + "\\RackDrawingAppLicense.lic";

                        //
                        webClient.DownloadFile(LoginServerData.LOGIN_SERVER_URI, strLicenseFilePath);
                    }
                }
                catch (Exception exception)
                {
                    m_VM.Error = exception.Message;
                    return;
                }
            }
            else
            {
                strLicenseFilePath = m_VM.LicenseFilePath;
            }

            if (string.IsNullOrEmpty(strLicenseFilePath))
            {
                if (m_VM.ConnectToServer)
                {
                    m_VM.Error = "An error occurred while downloading the license file";
                }
                else
                {
                    m_VM.Error = "License file is not selected.";
                }
                return;
            }

            if (!File.Exists(strLicenseFilePath))
            {
                if (m_VM.ConnectToServer)
                {
                    m_VM.Error = "An error occurred while downloading the license file";
                }
                else
                {
                    m_VM.Error = "License file doesnt exists.";
                }
                return;
            }

            string strError;
            int    iRes = LicenseUtilities.IsValidLicense(strLicenseFilePath, m_VM.UserName, _PasswordBox.Password.ToString(), out strError);

            if (iRes >= 0)
            {
                UserInfo.Login = m_VM.UserName;

                StartupWindow startupWnd = new StartupWindow();
                if (!string.IsNullOrEmpty(UserInfo.DrawingPath))
                {
                    startupWnd.StartOldApp();
                }
                else
                {
                    startupWnd.Show();
                }
                this.Close();
            }
            else
            {
                m_VM.Error = strError;
            }
        }