/// <summary>Default constructor</summary>
		public BrowserCompatSpec(string[] datepatterns, BrowserCompatSpecFactory.SecurityLevel
			 securityLevel) : base()
		{
			// superclass is @NotThreadSafe
			if (datepatterns != null)
			{
				this.datepatterns = datepatterns.Clone();
			}
			else
			{
				this.datepatterns = DefaultDatePatterns;
			}
			switch (securityLevel)
			{
				case BrowserCompatSpecFactory.SecurityLevel.SecuritylevelDefault:
				{
					RegisterAttribHandler(ClientCookie.PathAttr, new BasicPathHandler());
					break;
				}

				case BrowserCompatSpecFactory.SecurityLevel.SecuritylevelIeMedium:
				{
					RegisterAttribHandler(ClientCookie.PathAttr, new _BasicPathHandler_95());
					// No validation
					break;
				}

				default:
				{
					throw new RuntimeException("Unknown security level");
				}
			}
			RegisterAttribHandler(ClientCookie.DomainAttr, new BasicDomainHandler());
			RegisterAttribHandler(ClientCookie.MaxAgeAttr, new BasicMaxAgeHandler());
			RegisterAttribHandler(ClientCookie.SecureAttr, new BasicSecureHandler());
			RegisterAttribHandler(ClientCookie.CommentAttr, new BasicCommentHandler());
			RegisterAttribHandler(ClientCookie.ExpiresAttr, new BasicExpiresHandler(this.datepatterns
				));
			RegisterAttribHandler(ClientCookie.VersionAttr, new BrowserCompatVersionAttributeHandler
				());
		}
 public BrowserCompatSpecFactory(string[] datepatterns, BrowserCompatSpecFactory.SecurityLevel
                                 securityLevel) : base()
 {
     this.datepatterns  = datepatterns;
     this.securityLevel = securityLevel;
 }