/*var $ = require("jquery");*//*
var CardManager = require("./CardManager");*//*
var PubSub = require("./pubsub");*/
var Card = require("./Card");


var Hand = (function(){
  var Hand = function(){
    if(!(this instanceof Hand)){
      return (new Hand());
    }
    /**
     * constructor here
     */

    this._hand = [];
  };
  var r = Hand.prototype;
  /**
   * methods && properties here
   * r.property = null;
   * r.getProperty = function() {...}
   */
  r._hand = null;

  r.add = function(card){
    this._hand.push(card);
  }

  r.getCards = function(){
    return this._hand;
  }

  r.getCard = function(id) {
    for(var i=0; i< this.length(); i++) {
      var card = this.getCards()[i];
      if(card.getID() === id) return card;
    }
    return -1;
  }

  r.remove = function(id){
    var n = this.length();

    //console.trace(id);
    id = id instanceof Card ? id.getID() : id;

    for(var i = 0; i < n; i++) {
      if(this._hand[i].getID() != id) continue;
      return this._hand.splice(i, 1);
    }

    return -1;
  }

  r.getRandomCard = function(){
    var rnd = (Math.random() * this._hand.length) | 0;
    return this._hand[rnd];
  }

  r.getLength = function(){
    return this._hand.length;
  }

  r.length = function(){
    return this._hand.length;
  }

  r.find = function(key, val) {
    var res = [];
    this._hand.forEach(function(card){
      if(card.getProperty(key) == val){
        res.push(card);
      }
    });
    return res;
  }


  return Hand;
})();

module.exports = Hand;