/* Banana-Chat - The first Open Source Knuddels Emulator
 * Copyright (C) 2011 - 2012 Flav <http://banana-coding.com>
 * 
 * Diese Dateien unterliegen dem Coprytight von Banana-Coding und
 * darf verändert, aber weder in andere Projekte eingefügt noch
 * reproduziert werden.
 * 
 * Der Emulator dient - sofern der Client nicht aus Eigenproduktion
 * stammt - nur zu Lernzwecken, das Hosten des originalen Knuddels Clients
 * ist auf eigene Gefahr und verstößt möglicherweise gegen Schutzrechte
 * der Knuddels.de GmbH & Co KG
 * 
 * Autoren: Flav (Grundversion), Localhost (Erweiterte Version), Kokos-Ice (Erweiterte Version)
 */



package handler;

import tools.PacketCreator;
import java.util.Random;

import netchat.Channel;
import netchat.Client;
import netchat.FunctionParser;
import netchat.Server;

public class PingHandler {
    public static void handle(String[] tokens, Client client) {
    	String what = tokens[1];
    	
        if (what.equals("-")) {
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
            }

            client.send(PacketCreator.pong());
            
            if(client.getName() == null) {
            	return;
            }
            
            if(client.getTimeOut() != 0) { // Online
                long time = System.currentTimeMillis()/1000;
                Random zufall = new Random();
                int zufallInt = zufall.nextInt(150);
                
                
            /*  if (client.getOnlineTime() / 60 >= 10)
            for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Herzlich Willkommen bei Cuddly! - Ich bin James dein virtueller Butler.#In Kürze wirst du von mir viele Tipps und Wichtige Informationen zu dem Chat und den funktionen erhalten.");
            }
                
                if (client.getOnlineTime() == 10)
            for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Herzlich Willkommen bei Cuddly! - Ich bin James dein virtueller Butler.#In Kürze wirst du von mir viele Tipps und Wichtige Informationen zu dem Chat und den funktionen erhalten.");
            }
                if (client.getOnlineTime() == 100)
            for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Herzlich Willkommen bei Cuddly! - Ich bin James dein virtueller Butler.#In Kürze wirst du von mir viele Tipps und Wichtige Informationen zu dem Chat und den funktionen erhalten.");
            }
                
            */   
                
                
                if(client.getKnuddelscentLock() == 0) {
                	int actualLevel = client.getKnuddelscentLevel();
                	int nextLevel = actualLevel+1;
                	
                	for(Channel c : client.getChannels()) {
                		client.sendButlerMessage(c.getName(), String.format("Für den _Tageslogin_ erhältst du _°BB>_h5 Knuddels|/h knuddelscent<r°_. °>loginknuddelscent/loginbar-20_%sto%s...alwayscopy.gif<° °>loginknuddelscent/knuddel_small.gif<°", actualLevel, nextLevel));
                		
                		if(actualLevel == 19) {
                    		client.sendButlerMessage(c.getName(), "_Glückwunsch_, mit dem heutigen _Tageslogin_, hast du jetzt _einen ganzen Knuddel_ °>loginknuddelscent/knuddel_small.gif<° gesammelt!");
                    	}
                	}
                	
                	client.setKnuddelscentLevel((byte) (actualLevel == 19 ? 0 : nextLevel));
                	client.setKnuddelscentLock((byte) 1);
                	client.increaseKnuddels((float) 5.00);
                }
                
                 if (client.getOnlineTime() > 30)
                     if (client.getOnlineTime() < 80)
                    for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Willkommen bei Cuddly!#Ich bin dein _virtueller Butler °B°°>James|/w James<°§ und werde dir in den nächsten Minuten unseren Chat zeigen. Mach es dir gemütlich und schau dich in Ruhe bei uns um.");
            }
                 
                     if (client.getOnlineTime() > 70)
                     if (client.getOnlineTime() < 120)
                    for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Nette Frauen & Männer werden bei Knuddels oft angesprochen. Keine Angst, die meisten User sind ganz harmlos. Und allein _du entscheidest, mit wem du dich unterhalten möchtest._ Wenn du keine Lust auf ein Gespräch hast, dann ignorier deinen Gesprächspartner einfach.");
            }
                  
                     if (client.getOnlineTime() > 110)
                     if (client.getOnlineTime() < 160)
                    for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Gestalte _°BB°°>dein Profil|/w<°_§ individuell - lade doch jetzt ein schönes Foto von dir hoch.'(BUTTON)Hier geht's zum Foto-Upload'");
            }
                     
                     if (client.getOnlineTime() > 150)
                     if (client.getOnlineTime() < 210)
                    for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Du kannst _°BB°°>in deinem Profil|/w<°_§ etwas über deine _Person_, deine _Hobbies_ und _was du magst und nicht magst_ erzählen. So wird dein Profil zu deiner persönlichen Visitenkarte#(Button)'Hier kannst du dein Profil ausfüllen'");
            }
       
                     if (client.getOnlineTime() > 190)
                     if (client.getOnlineTime() < 250)
                    for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Willst du _Bilder_ und _persönliche Infos_ von deinen Gesprächspartner sehen? überall im Chat kannst du das Profil anderer User öffnen, wenn du mit der _rechten Maustaste_ auf ihre Namen klickst. Das geht auch rechts in der Nickliste.");
            }
                     if (client.getOnlineTime() > 230)
                     if (client.getOnlineTime() < 290)
                    for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Bei Cuddly gibt es über _100 Channels_ zum Flirten, Spielen und Leute Kennenlernen.#Flirten im Channel Flirt - _°BB°°>da will ich hin!|/go flirt<°_§#WordMix spielen - _°BB°°>da will ich hin!|/go WordMix<°_§#Leute aus deiner Gegend, z.B in den Channels _°BB°°>Essen|/go Essen<°_§, _°BB°°>Hamburg|/go Hamburg<°_§");
            }
       
                     if (client.getOnlineTime() > 270)
                     if (client.getOnlineTime() < 330)
                    for(Channel c : client.getChannels()) {
                    client.sendButlerMessage(c.getName(), "Willst du noch schneller Aktionen ausführen? Du kannst Befehle direkt in die Eingabezeile schreiben.#_/w NAME_ ruft das Profil(die '_w_hois') auf: °>James|/w James<°#_/p NAME:TEXT_ schreibt _p_rivat einen Text: _°>/p James:Ich schreibe dir|/p James:Ich schreibe dir<°_#_/go CHANNEL_ wechselt den Chatraum: °>/go Flirt|/go Flirt<°");
            }
 
                     
                     
                if ((client.getTutOpen() == 1) && (client.getOnlineTime() / 60 >= 10) && (client.getTutAktiv() == 1) && (client.getAktuTut() == 1)) {
                	FunctionParser.parse("/tut", client, client.getChannel());
                	client.setTutOpen((byte)0);
           		}
           	    
                int mins = 0;
           		int rang = 0;
           		 
           		for(int tutorial : Server.tutorials.keySet()) {
           			String[] more = Server.tutorials.get(tutorial);
           		 						
           		 	if(tutorial <= client.getAktuTut()) {
           		 		rang = Integer.parseInt(more[5]);
           		 		mins = more[6].isEmpty()?0:Integer.parseInt(more[6]);
           		 	}
           		 						
           		 	if ((client.getTutOpen() == 1) && (mins <= client.getOnlineTime() / 60) && (rang <= client.getRank()) && (client.getTutAktiv() == 1)) {
           		 		FunctionParser.parse("/tut", client, client.getChannel());
           		 		client.setTutOpen((byte)0);
           		 	}
           		}
                
            	if(time >= client.getTimeOut()) {
            		client.disconnect();
            	}
            	
            	if(client.getBotkontrolleAn() != null) {
                    Long rest = client.getBotkontrolleZeit()+300;
                    Long rest2 = rest-time;
       
                    if (rest2 <= 0) {
                    	Client an = Server.get().getClient(client.getBotkontrolleAn());
                		
                    	if(an != null) {
                    		Server.get().newMessage(Server.get().getButler(), an.getBotkontrolleVon(), String.format("Bestätigt: Botkontrolle %s", an.getName()), String.format("%s hat nicht auf eine Kontroll-Nachricht reagiert, damit hat sich der _Bot-Verdacht bestätigt_. %s wurde aus dem Chat gekickt und ein Eintrag in die Admininfo wurde getätigt.", an.getName(), an.getName()), time);
                        	an.setComment(time, null, null,Server.get().getButler().getName(), String.format("Botkontrolle durch %s _positiv_.", client.getName()));
                    		an.setBotkontrolleVon(null);
                    		an.disconnect();
                    	} else {
                        	for(Channel s : client.getChannels()) {
                        		client.sendButlerMessage(s.getName(), String.format("%s hat die Botkontrolle _nicht beantwortet_, weil %s mittlerweile _offline_ ist.", client.getBotkontrolleAn(), client.getBotkontrolleAn()));
                        	}
                    	}
                    	
                    	client.setBotkontrolleAn(null);
                    	client.setBotkontrolleZeit(0);
                    }
           	 	}
            	
            	if(zufallInt == 50) {
            		try {
            			Channel channel = client.getChannel();
                	
            			if(channel.checkCm(client.getName())) {
            				channel.broadcastAction("°r°", String.format("Für den ehrenamtlichen Einsatz als Channelmoderator (°>cm.png<°) erhält _°BB>_h%s|/serverpp \"|/w \"<r°_ als kleines Dankeschön einen Knuddel!", client.getName().replace("<", "\\<")));
            				client.increaseKnuddels(1);
            			}
            		} catch(Exception ex) {
            		}
            	}
            } else {
            	//Offline
            	
            }
        } else {
        	String infos = tokens[1].trim();
        	System.out.println(infos);
        }
    }
}
