/***************************************************************************
 *                               Insensitive.cs
 *                            -------------------
 *   begin                : May 1, 2002
 *   copyright            : (C) The RunUO Software Team
 *   email                : info@runuo.com
 *
 *   $Id: Insensitive.cs 567 2010-10-20 01:09:57Z asayre $
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

using System;
using System.Collections;

namespace Server
{
    public static class Insensitive
	{
		private static IComparer m_Comparer = CaseInsensitiveComparer.Default;

		public static IComparer Comparer
		{
			get{ return m_Comparer; }
		}

		public static int Compare( string a, string b )
		{
			return m_Comparer.Compare( a, b );
		}

		public static bool Equals( string a, string b )
		{
			if ( a == null && b == null )
				return true;
			else if ( a == null || b == null || a.Length != b.Length )
				return false;

			return ( m_Comparer.Compare( a, b ) == 0 );
		}

		public static bool StartsWith( string a, string b )
		{
			if ( a == null || b == null || a.Length < b.Length )
				return false;

			return ( m_Comparer.Compare( a.Substring( 0, b.Length ), b ) == 0 );
		}

		public static bool EndsWith( string a, string b )
		{
			if ( a == null || b == null || a.Length < b.Length )
				return false;

			return ( m_Comparer.Compare( a.Substring( a.Length - b.Length ), b ) == 0 );
		}

		public static bool Contains( string a, string b )
		{
			if ( a == null || b == null || a.Length < b.Length )
				return false;

			a = a.ToLower();
			b = b.ToLower();

			return ( a.IndexOf( b ) >= 0 );
		}
	}
}