using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Net;
using Microsoft.WindowsMobile.Status;

namespace Connections
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            #if DEBUG
                MinimizeBox = false;
            #else       
                MinimizeBox = true;
            #endif
        }

                
        public static bool CheckUrl(string url)
        {
            if (url.ToLower().StartsWith("www."))
            {
                url = "http://" + url;
            }

            HttpWebRequest request = null;  //
            HttpWebResponse response = null; //
            
            try
            {
                //  Создаем объект HttpWebRequest
                request = (HttpWebRequest)WebRequest.Create(url);
                //  Устанавливаем его свойства
                request.Timeout = 10000;
                request.KeepAlive = false;
                request.Credentials = null;

                //  Работаем с объектом HttpWebResponse
                response = (HttpWebResponse)request.GetResponse();
                //  Проверяем на null
                //  Если адрес доступен, то возвращаем true
                if (response != null)
                    return response.StatusCode == HttpStatusCode.OK;
                else
                    return false;
            }
            catch
            {
                return false;
            }
            finally
            {
                //  Освобождаем ресурсы
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
                if (request != null)
                {
                    request.Abort();
                    request = null;
                }
            }
        }

        private void butCheckUrl_Click(object sender, EventArgs e)
        {
            // Проверяем доступность адреса, введенного в текстовое поле
            lblUrl.Text = CheckUrl(txtUrl.Text).ToString();
        }

        private void butCheckUrl2_Click(object sender, EventArgs e)
        {
            using (CursorWait cw = new CursorWait())
            {
                if (CheckUrl(txtUrl.Text))
                    lblUrl.Text = "Указанный адрес доступен";
                else
                    lblUrl.Text = "Указанный адрес не доступен";
            }
        }

        SystemState networkChecker = null;

        private void Form1_Load(object sender, EventArgs e)
        {
            networkChecker = new SystemState(SystemProperty.ConnectionsCount);
            networkChecker.Changed += new ChangeEventHandler(NetworkChecker_Changed);
            GetNetworkState(SystemState.ConnectionsCount);
        }

        void NetworkChecker_Changed(object sender, ChangeEventArgs args)
        {
            int connectionsCount = (int)args.NewValue;
            GetNetworkState(connectionsCount);
        }

        void GetNetworkState(int connectionsCount)
        {
            if (connectionsCount > 0)
            {
                lblNetworkState.Text = "Сетевые соединения установлены";
            }
            else
            {
                 lblNetworkState.Text = "Сетевые соединения не установлены";            
            }
        }



    }
}