package com.l2jfrozen.gameserver.handler.voicedcommandhandlers;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map.Entry;


//import java.text.SimpleDateFormat;

//import java.util.Date;
import java.util.Calendar;
import java.util.logging.Logger;

import com.l2jfrozen.Config;
import com.l2jfrozen.util.CloseUtil;
import com.l2jfrozen.util.database.L2DatabaseFactory;
import com.l2jfrozen.gameserver.cache.HtmCache;
import com.l2jfrozen.gameserver.handler.IVoicedCommandHandler;
import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminPremium;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.event.TvTEvent;
import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.network.serverpackets.MagicSkillUser;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.templates.StatsSet;

public class Menu
	implements IVoicedCommandHandler
	{
		private static final String[] VOICED_COMMANDS = { "menu", "fir_menu_" };
		private boolean _ipblock;
		String str = "";
		protected StatsSet _StateSet;
		//private long time;
   
		public Menu()
		{
			_ipblock = false;
		}
		
		private static final String UPDATE_PREMIUMSERVICE = "UPDATE account_premium SET premium_service=?,enddate=? WHERE account_name=?"; 
		private static final Logger _log = Logger.getLogger(AdminPremium.class.getName());

		public boolean useVoicedCommand(String command, L2PcInstance player, String target)
		{
    		if (command.equalsIgnoreCase("menu"))
    		{
    			showHtm(player);
    		}

			else if (command.startsWith("fir_menu_"))
    		{
       			String addcmd = command.substring(9).trim();
       			
       			if (addcmd.startsWith("exp"))
      			{
         			int flag = Integer.parseInt(addcmd.substring(3).trim());
         			if (flag == 0)
        			{
         				player.setStopExp(true);
         				player.sendMessage("Получение опыта отключено. Помни! Для отмытия кармы нужен опыт!");
        			}
        			else
        			{
        				player.setStopExp(false);
        				player.sendMessage("Получение опыта возобновлено");
        			}
         			showHtm(player);
         			return true;
      			}

       			if (addcmd.startsWith("loot"))
      			{
         			int flag = Integer.parseInt(addcmd.substring(4).trim());
         			if (flag == 0)
        			{
         				player.setAutoLoot(false);
         				player.sendMessage("Автолут отключен!");
        			}
        			else
        			{
        				player.setAutoLoot(true);
        				player.sendMessage("Автолут включен!");
        			}
         			showHtm(player);
         			return true;
      			}

       			if (addcmd.startsWith("offline"))
      			{
         			if (((Config.OFFLINE_TRADE_ENABLE) && ((player.getPrivateStoreType() == 1) || (player.getPrivateStoreType() == 3) || (player.getPrivateStoreType() == 8))) || ((Config.OFFLINE_CRAFT_ENABLE) && (player.getPrivateStoreType() == 5)))
        			{
         				player.store();
         				player.closeNetConnection(true);
        			}
        			else
        			{
        				player.sendMessage("Вы не можете использовать оффлайн торговлю/крафт в данный момент");
           				showHtm(player);
        			}
         			return true;
      			}
       			
       			if (addcmd.startsWith("repair"))
       			{
       				String nick = addcmd.substring(6);
       	         	if ((nick != null) && (nick.length() > 0))
       	         	{
       	         		repair(player, nick);
       	         	}
       	         	else
       	         	{
       	         		player.sendMessage("Введите ник");
       	         	}
       	         	showHtm(player);
       	         	return true;
       			}
 
       			if (addcmd.startsWith("trade"))
      			{
         			int flag = Integer.parseInt(addcmd.substring(5).trim());
         			if (flag == 0)
        			{
         				player.setTradeRefusal(false);
         				player.sendMessage("Возможность использовать трейд включена");
        			}
        			else
        			{
        				player.setTradeRefusal(true);
        				player.sendMessage("Возможность использовать трейд отключена");
        			}
         			showHtm(player);
         			return true;
      			}

       			if (addcmd.startsWith("pm"))
      			{
         			int flag = Integer.parseInt(addcmd.substring(2).trim());
         			if (flag == 0)
        			{
         				player.setMessageRefusal(false);
         				player.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_ACCEPTANCE_MODE));
        			}
        			else
        			{
        				player.setMessageRefusal(true);
        				player.sendPacket(new SystemMessage(SystemMessageId.MESSAGE_REFUSAL_MODE));
        			}
         			showHtm(player);
         			return true;
      			}

       			if (addcmd.startsWith("ip"))
      			{
         			int flag = Integer.parseInt(addcmd.substring(2).trim());
         			if (flag == 0)
        			{
           				ipblockadd(player);
           				_ipblock = true;
        			}
        			else
        			{
           				ipblockdel(player);
           				_ipblock = false;
        			}
         			showHtm(player);
         			return true;
      			}
       			
       			if (addcmd.startsWith("evt"))
       			{
       				int flag = Integer.parseInt(addcmd.substring(3).trim());
       	            if (flag == 0)
       	            {
       	            	showEvtHtm(player);
       	            }
       	         	else if (flag == 1)
       	         	{
       	         		if (TvTEvent.isPlayerParticipant(player.getObjectId()))
       	         		{
       	         			player.sendMessage("Вы уже зарегистрированы на участие в ТвТ");
       	             		showEvtHtm(player);
       	             		return false;
       	         		}
       	         		if (TvTEvent.isParticipating())
       	         		{
       	         			TvTEvent.addParticipant(player);
       	         			player.sendMessage("Вы зарегистрированы на участие в ТвТ");
       	             		showEvtHtm(player);
       	         		}
       	         		else
       	         		{
       	         			player.sendMessage("ТвТ не активен или уже идет турнир");
       	             		showHtm(player);
       	             		return false;
       	         		}
       	         	}
       	         	else if (flag == 2)
       	         	{
       	         		if (TvTEvent.isParticipating())
       	         		{
       	         			if (!TvTEvent.isPlayerParticipant(player.getObjectId()))
       	         			{
       	         				player.sendMessage("Вы не были зарегистрированы на участие в ТвТ");
       	               			showEvtHtm(player);
       	               			return false;
       	         			}
       	         			TvTEvent.removeParticipant(player.getObjectId());
       	         			player.sendMessage("Вы больше не зарегистрированы на участие в ТвТ");
                    		showEvtHtm(player);
       	         		}
       	         		else
       	         		{
       	         			player.sendMessage("ТвТ не активен или уже идет турнир");
                    		showHtm(player);
                    		return false;
       	         		}
       				}
       	         	else if (flag == 3)
       	        	{
       	        		if (CTF.is_joining())
       	          		{
       	             		CTF.addPlayer(player, "eventShuffle");
       	             		player.sendMessage("Вы зарегистрированы на участие в CTF");
       	             		showEvtHtm(player);
       	          		}
       	          		else
       	          		{
       	          			player.sendMessage("CTF не активен или уже идет турнир");
       	             		showHtm(player);
       	             		return false;
       	          		}
       	        	}
       	         	else if (flag == 4)
       	        	{
       	        		if (CTF.is_joining())
       	          		{
       	             		CTF.removePlayer(player);
       	             		player.sendMessage("Вы больше не зарегистрированы на участие в CTF");
       	             		showEvtHtm(player);
       	          		}
       	          		else
       	          		{
       	          			player.sendMessage("CTF не активен или уже идет турнир");
       	             		showHtm(player);
       	             		return false;
       	          		}
       	        	}
       	         	else if (flag == 5)
    	        	{
    	        		if (DM.is_joining())
    	          		{
    	             		DM.addPlayer(player);
    	             		player.sendMessage("Вы зарегистрированы на участие в DM");
    	             		showEvtHtm(player);
    	          		}
    	          		else
    	          		{
    	          			player.sendMessage("DM не активен или уже идет турнир");
    	             		showHtm(player);
    	             		return false;
    	          		}
    	        	}
       	         	else if (flag == 6)
    	        	{
    	        		if (DM.is_joining())
    	          		{
    	             		DM.removePlayer(player);
    	             		player.sendMessage("Вы больше не зарегистрированы на участие в DM");
    	             		showEvtHtm(player);
    	          		}
    	          		else
    	          		{
    	          			player.sendMessage("DM не активен или уже идет турнир");
    	             		showHtm(player);
    	             		return false;
    	          		}
    	        	}
       	            if (flag == 9)
       	            {
       	            	showHtm(player);
       	            }
       	         	return true;
       			}
       			if (addcmd.startsWith("prem"))
       			{
       				int flag = Integer.parseInt(addcmd.substring(4).trim());
       	            if (flag == 0)
       	            {
       	            	showPremHtm(player);
       	            }
       	         	else if (flag == 1)
       	         	{
       	         		if ((player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM) == null) || (player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM).getCount() < Config.SET_PREMIUM1_ITEM_COUNT))
						{
       	         			player.sendMessage("Не хватает предметов");
       	         			showPremHtm(player);
       	         			return false;
						}
       	         		if (player.getPremiumService() > 0)
       	         		{
       	         			player.sendMessage("У вас уже есть премиум, дождитесь его окончания");
       	         			return false;
       	         		}
						player.destroyItemByItemId("Consume", Config.SET_PREMIUM_ITEM, Config.SET_PREMIUM1_ITEM_COUNT, player, false);
						if (Config.PREMIUM_FIREWORKS) {
							MagicSkillUser MSU = new MagicSkillUser(player, player, 2023, 1, 1, 0);
							player.sendPacket(MSU);
							player.broadcastPacket(MSU);
						}
						String acc = player.getAccountName();
						addPremiumServices(1, acc);
						player.broadcastUserInfo();
						showPremHtm(player);
						player.sendMessage("Вы получили премиум аккаунт на 1 день. Новое получение не добавляет время, а обновляет. Изменения вступят после перезахода в игру !");
       	         	}
       	         	else if (flag == 2)
       	         	{
       	         		if ((player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM) == null) || (player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM).getCount() < Config.SET_PREMIUM2_ITEM_COUNT))
						{
       	         			player.sendMessage("Не хватает предметов");
       	         			showPremHtm(player);
       	         			return false;
						}
       	         		if (player.getPremiumService() > 0)
       	         		{
       	         			player.sendMessage("У вас уже есть премиум, дождитесь его окончания");
       	         			return false;
       	         		}
						player.destroyItemByItemId("Consume", Config.SET_PREMIUM_ITEM, Config.SET_PREMIUM2_ITEM_COUNT, player, false);
						if (Config.PREMIUM_FIREWORKS) {
							MagicSkillUser MSU = new MagicSkillUser(player, player, 2023, 1, 1, 0);
							player.sendPacket(MSU);
							player.broadcastPacket(MSU);
						}
						String acc = player.getAccountName();
						addPremiumServices(2, acc);
						player.broadcastUserInfo();
						showPremHtm(player);
						player.sendMessage("Вы получили премиум аккаунт на 2 дня. Новое получение не добавляет время, а обновляет. Изминения вступят после перезахода в игру !");
       	         	}
					else if (flag == 3)
       	         	{
       	         		if ((player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM) == null) || (player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM).getCount() < Config.SET_PREMIUM3_ITEM_COUNT))
						{
       	         			player.sendMessage("Не хватает предметов");
       	         			showPremHtm(player);
       	         			return false;
						}
       	         		if (player.getPremiumService() > 0)
       	         		{
       	         			player.sendMessage("У вас уже есть премиум, дождитесь его окончания");
       	         			return false;
       	         		}
						player.destroyItemByItemId("Consume", Config.SET_PREMIUM_ITEM, Config.SET_PREMIUM3_ITEM_COUNT, player, false);
						if (Config.PREMIUM_FIREWORKS) {
							MagicSkillUser MSU = new MagicSkillUser(player, player, 2023, 1, 1, 0);
							player.sendPacket(MSU);
							player.broadcastPacket(MSU);
						}
						String acc = player.getAccountName();
						addPremiumServices(7, acc);
						player.broadcastUserInfo();
						showPremHtm(player);
						player.sendMessage("Вы получили премиум аккаунт на 7 дней. Новое получение не добавляет время, а обновляет. Изминения вступят после перезахода в игру !");
       	         	}
					else if (flag == 4)
       	         	{
       	         		if ((player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM) == null) || (player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM).getCount() < Config.SET_PREMIUM4_ITEM_COUNT))
						{
       	         			player.sendMessage("Не хватает предметов");
       	         			showPremHtm(player);
       	         			return false;
						}
       	         		if (player.getPremiumService() > 0)
       	         		{
       	         			player.sendMessage("У вас уже есть премиум, дождитесь его окончания");
       	         			return false;
       	         		}
						player.destroyItemByItemId("Consume", Config.SET_PREMIUM_ITEM, Config.SET_PREMIUM4_ITEM_COUNT, player, false);
						if (Config.PREMIUM_FIREWORKS) {
							MagicSkillUser MSU = new MagicSkillUser(player, player, 2023, 1, 1, 0);
							player.sendPacket(MSU);
							player.broadcastPacket(MSU);
						}
						String acc = player.getAccountName();
						addPremiumServices(31, acc);
						player.broadcastUserInfo();
						showPremHtm(player);
						player.sendMessage("Вы получили премиум аккаунт на 1 месяц. Новое получение не добавляет время, а обновляет. Изминения вступят после перезахода в игру !");
       	         	}
					else if (flag == 5)
       	         	{
       	         		if ((player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM) == null) || (player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM).getCount() < Config.SET_PREMIUM5_ITEM_COUNT))
						{
       	         			player.sendMessage("Не хватает предметов");
       	         			showPremHtm(player);
       	         			return false;
						}
       	         		if (player.getPremiumService() > 0)
       	         		{
       	         			player.sendMessage("У вас уже есть премиум, дождитесь его окончания");
       	         			return false;
       	         		}
						player.destroyItemByItemId("Consume", Config.SET_PREMIUM_ITEM, Config.SET_PREMIUM5_ITEM_COUNT, player, false);
						if (Config.PREMIUM_FIREWORKS) {
							MagicSkillUser MSU = new MagicSkillUser(player, player, 2023, 1, 1, 0);
							player.sendPacket(MSU);
							player.broadcastPacket(MSU);
						}
						String acc = player.getAccountName();
						addPremiumServices(93, acc);
						player.broadcastUserInfo();
						showPremHtm(player);
						player.sendMessage("Вы получили премиум аккаунт на 3 месяца. Новое получение не добавляет время, а обновляет. Изминения вступят после перезахода в игру !");
       	         	}
					else if (flag == 6)
       	         	{
       	         		if ((player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM) == null) || (player.getInventory().getItemByItemId(Config.SET_PREMIUM_ITEM).getCount() < Config.SET_PREMIUM6_ITEM_COUNT))
						{
       	         			player.sendMessage("Не хватает предметов");
       	         			showPremHtm(player);
       	         			return false;
						}
       	         		if (player.getPremiumService() > 0)
       	         		{
       	         			player.sendMessage("У вас уже есть премиум, дождитесь его окончания");
       	         			return false;
       	         		}
						player.destroyItemByItemId("Consume", Config.SET_PREMIUM_ITEM, Config.SET_PREMIUM6_ITEM_COUNT, player, false);
						if (Config.PREMIUM_FIREWORKS) {
							MagicSkillUser MSU = new MagicSkillUser(player, player, 2023, 1, 1, 0);
							player.sendPacket(MSU);
							player.broadcastPacket(MSU);
						}
						String acc = player.getAccountName();
						addPremiumServices(186, acc);
						player.broadcastUserInfo();
						showPremHtm(player);
						player.sendMessage("Вы получили премиум аккаунт на 6 месяцев. Новое получение не добавляет время, а обновляет. Изминения вступят после перезахода в игру !");
       	         	}
       	            if (flag == 9)
       	            {
       	            	showHtm(player);
       	            }
       	         	return true;
       			}
       			
      			return false;
    		}
     		return true;
		}

  		private void showHtm(L2PcInstance activeChar)
  		{
     		NpcHtmlMessage htm = new NpcHtmlMessage(activeChar.getLastQuestNpcObject());
     		String text = HtmCache.getInstance().getHtm("data/html/menu/menu.htm");
     		htm.setHtml(text);
     		activeChar.sendPacket(htm);
     		int CountTrick = L2World.getInstance().getAllPlayers().size() * Config.UP_ONLINE / 100;
     		int PLAYERS_ONLINE = L2World.getInstance().getAllPlayers().size() + CountTrick;
     		String online = str + PLAYERS_ONLINE;
     		htm.replace("%online%", online);
     		if (activeChar.getStopExp())
    		{
       			htm.replace("%gainexp%", "OFF");
    		}
    		else
    		{
       			htm.replace("%gainexp%", "ON");
    		}
     		if (activeChar.isAutoLoot())
    		{
       			htm.replace("%autoloot%", "ON");
    		}
    		else
    		{
       			htm.replace("%autoloot%", "OFF");
    		}
     		if (activeChar.getTradeRefusal())
    		{
       			htm.replace("%trade%", "OFF");
    		}
    		else
    		{
       			htm.replace("%trade%", "ON");
    		}
     		if (activeChar.getMessageRefusal())
    		{
       			htm.replace("%pm%", "OFF");
    		}
    		else
    		{
       			htm.replace("%pm%", "ON");
    		}
     		if (this._ipblock)
    		{
       			htm.replace("%ip%", "ON");
    		}
    		else
    		{
       			htm.replace("%ip%", "OFF");
    		}
  		}
  		
  		private void showPremHtm(L2PcInstance player)
  		{
  			NpcHtmlMessage htm = new NpcHtmlMessage(player.getLastQuestNpcObject());
  			String text = HtmCache.getInstance().getHtm("data/html/menu/menu-pa.htm");
  			htm.setHtml(text);
  			player.sendPacket(htm);
  			htm.replace("%price1%", str + Config.SET_PREMIUM1_ITEM_COUNT);
  			htm.replace("%price2%", str + Config.SET_PREMIUM2_ITEM_COUNT);
  			htm.replace("%price3%", str + Config.SET_PREMIUM3_ITEM_COUNT);
  			htm.replace("%price4%", str + Config.SET_PREMIUM4_ITEM_COUNT);
  			htm.replace("%price5%", str + Config.SET_PREMIUM5_ITEM_COUNT);
  			htm.replace("%price6%", str + Config.SET_PREMIUM6_ITEM_COUNT);
  		}
  		
  		private void repair(L2PcInstance activeChar, String nick)
  		{
  			for(Entry<Integer, String> entry : activeChar.getAccountChars().entrySet())
  			{
  				int obj_id = ((Integer)entry.getKey()).intValue();
  	    		int karma = 0;
  	    		if (!activeChar.getAccountChars().containsValue(nick.substring(1)))
  	    		{
  	       			activeChar.sendMessage("Вы не можете восстановить персонажа с другого аккаунта или сами себя!");
  	         		return;
  	    		}
  	    		Connection con = null;
  	    		PreparedStatement statement = null;
  	    		ResultSet rset = null;
  	    		try
  	    		{
  	    			con = L2DatabaseFactory.getInstance().getConnection();

  	        		statement = con.prepareStatement("SELECT karma FROM characters where char_name='" + nick.substring(1) + "';");
  	        		rset = statement.executeQuery();
  	        		while (rset.next())
  	        			karma = rset.getInt("karma");

  	      			rset.close();
          			statement.close();
          			if (karma > 0)
          			{
          				statement = con.prepareStatement("UPDATE `characters` SET `x`='17144', `y`='170156', `z`='-3502', `heading`='0' WHERE `obj_Id`='" + obj_id + "' LIMIT 1");
                		statement.executeUpdate();
                		statement.close();
          			}
          			else
          			{
          				statement = con.prepareStatement("UPDATE `characters` SET `x`='82698', `y`='148638', `z`='-3470', `heading`='0' WHERE `obj_Id`='" + obj_id + "' LIMIT 1");
                		statement.executeUpdate();
                		statement.close();
          			}
          			activeChar.sendMessage("Восстановление успешно!");
				}
  	  			catch (Exception e)
      			{
         			activeChar.sendMessage("Ошибка.");
      			}
  	  			finally	
  	  			{
  	  				try 
  	  				{
  	  					con.close();
  	  				}
  	  				catch (SQLException e)
  	  				{
  	  					e.printStackTrace();
  	  				}
  	   			}
  			}
  		}

  		public void ipblockdel(L2PcInstance l2pcinstance)
  		{
  			Connection con = null;
    		try
    		{
       			con = L2DatabaseFactory.getInstance().getConnection(false);
       			PreparedStatement preparedstatement = con.prepareStatement("SELECT * FROM accounts WHERE login=?");
       			preparedstatement.setString(1, l2pcinstance.getAccountName());
       			ResultSet resultset = preparedstatement.executeQuery();
       			resultset.next();
       			PreparedStatement preparedstatement1 = con.prepareStatement("UPDATE accounts SET IPBlock = 0 WHERE login=?");
       			preparedstatement1.setString(1, l2pcinstance.getAccountName());
       			preparedstatement1.execute();
       			l2pcinstance.sendMessage("Привязка аккаунта к IP снята");
    		}
    		catch (Exception e)
    		{
    		}
    		finally
    		{
    			CloseUtil.close(con);
    		}
  		}

  		public void ipblockadd(L2PcInstance l2pcinstance)
  		{
  			Connection con = null;
    		try 
    		{
       			con = L2DatabaseFactory.getInstance().getConnection(false);
       			PreparedStatement preparedstatement = con.prepareStatement("SELECT * FROM accounts WHERE login=?");
       			preparedstatement.setString(1, l2pcinstance.getAccountName());
       			ResultSet resultset = preparedstatement.executeQuery();
       			resultset.next();
       			PreparedStatement preparedstatement2 = con.prepareStatement("UPDATE accounts SET IPBlock = 1 WHERE login=?");
       			preparedstatement2.setString(1, l2pcinstance.getAccountName());
       			preparedstatement2.execute();
       			l2pcinstance.sendMessage("Ваш аккаунт привязан к вашему текущему IP: " + resultset.getString("lastIP"));
    		}
    		catch (Exception e)
    		{
    		}
    		finally
    		{
    			CloseUtil.close(con);
    		}
  		}
  		
  		private void showEvtHtm(L2PcInstance activeChar)
  		{
  			NpcHtmlMessage htm = new NpcHtmlMessage(activeChar.getLastQuestNpcObject());
  			String text = HtmCache.getInstance().getHtm("data/html/menu/menu-evt.htm");
  			htm.setHtml(text);
  			activeChar.sendPacket(htm);
  			
  			if ((TvTEvent.isInactive()) || (TvTEvent.isInactivating()))
  				htm.replace("%tvt%", "<font color=ff0000>Не активен</font>");
  			else if (TvTEvent.isParticipating())
  				htm.replace("%tvt%", "<font color=00ff00>Регистрация</font>");
  			else if ((TvTEvent.isStarted()) || (TvTEvent.isStarting()) || (TvTEvent.isRewarding()))
  				htm.replace("%tvt%", "<font color=0000ff>Активен</font>");
  			
  			if (CTF.is_joining())
  		       htm.replace("%ctf%", "<font color=00ff00>Регистрация</font>");
  		    else if ((CTF.is_started()) || (CTF.is_teleport()))
  		       htm.replace("%ctf%", "<font color=0000ff>Активен</font>");
  		    else
  		       htm.replace("%ctf%", "<font color=ff0000>Не активен</font>");
  			
  			if (DM.is_joining())
  		       htm.replace("%dm%", "<font color=00ff00>Регистрация</font>");
  		    else if ((DM.is_started()) || (DM.is_teleport()))
  		       htm.replace("%dm%", "<font color=0000ff>Активен</font>");
  		    else
  		       htm.replace("%dm%", "<font color=ff0000>Не активен</font>");
  		}
  		
  		private void addPremiumServices(int Days, String AccName) 
  		{ 
  	  		Connection con = null; 
  	  		try 
  	  		{ 
  	   			Calendar finishtime = Calendar.getInstance(); 
  	   			finishtime.setTimeInMillis(System.currentTimeMillis()); 
  	   			finishtime.set(Calendar.SECOND, 0); 
  	   			
  	   			finishtime.add(Calendar.DAY_OF_MONTH, Days); 
  	     
  	   			con = L2DatabaseFactory.getInstance().getConnection(); 
  	   			PreparedStatement statement = con.prepareStatement(UPDATE_PREMIUMSERVICE); 
  	   			statement.setInt(1, 1); 
  	   			statement.setLong(2, finishtime.getTimeInMillis()); 
  	   			statement.setString(3, AccName); 
  	   			statement.execute(); 
  	   			statement.close(); 
  	   		} 
  	  		catch (SQLException e) 
  	  		{ 
  	   			_log.info("PremiumService: Could not increase data"); 
  	  		} 
  	  		finally 
  	  		{ 
  	   			try 
  	   			{ 
  	    			if (con != null) 
  	     			con.close(); 
  	   			} 
  	   			catch (SQLException e) 
  	   			{ 
  	    			e.printStackTrace(); 
  	   			} 
  	  		}    
  		}
  		public String[] getVoicedCommandList() 
  		{
     		return VOICED_COMMANDS;
  		}
	}