﻿var Special = new Class({
  initialize: function(self, target) {
    this.self = $type(self) == "string" ? QuekClient.queksByName[self] : self;
    this.target = $type(target) == "string" ? QuekClient.queksByName[target] : target;

    if (this.self && this.target && this.self != this.target)
      this.start();
  },

  start: function() {
    for (var frame in this) {
      if (frame.indexOf("_") == 0) {
        var delay = frame.substr(1).toInt();
        if ($chk(delay))
          this[frame].delay(delay, this);
      }
    }
  },

  getAllQueks: function() {
    var queks = [];
    for (var id in QuekClient.queks)
      queks.push(QuekClient.queks[id]);
    return queks;
  },

  getRestQueks: function() {
    var queks = this.getAllQueks();
    queks.erase(this.self);
    queks.erase(this.target);
    return queks;
  }
});

Special.Gift = new Class({
  Extends: Special,

  initialize: function(self, target, gift) {
    this.parent(self, target);
    this.gift = gift;
    this.giftSelf = this.createGift(this.self);
    this.giftTarget = this.createGift(this.target);
  },

  _0: function() {
    this.self.setMood("geven");
  },
  _600: function() {
    this.giftSelf.fade("in");
  },
  _1200: function() {
    this.self.savePosition();
    this.self.moveTo(this.target, 75, 10, 1);
  },
  _2500: function() {
    this.giftTarget.fade("show");
  },
  _2600: function() {
    this.self.setMood("neutraal");
    this.giftSelf.dispose();
    this.self.revertPosition();
  },
  _10000: function() {
    this.giftTarget.fade("out");
  },
  _11000: function() {
    this.giftTarget.dispose();
  },

  createGift: function(quek) {
    var gift = this.self.elements.gift.clone();
    switch (this.gift) {
      case "beer":
        new Swiff("/flash/biertje.swf", { width: 40, height: 40, container: gift });
        break;
      /*
      default:
      var src = "/img/" + gift + ".gif";
      var image = new Element("img", {src: src});
      gift.adopt(image);
      */ 
    }
    gift.fade("hide");
    gift.addClass("gift-active");
    if (quek == this.target)
      gift.addClass("gift-given");
    quek.elements.quek.adopt(gift);

    return gift;
  }
});

Special.Kiss = new Class({
  Extends: Special,

  _0: function() {
    this.self.savePosition();
    this.self.moveTo(this.target, 75, 10, 1);
  },
  _1100: function() {
    this.self.setMood("kussen");
  },
  _1800: function() {
    this.target.setMood("gekust");
  },
  _2500: function() {
    this.self.revertPosition();
  }
});
