﻿
//function Deck() {
//    var ms_cards = new Cards(52);
//    this.Cards = ms_cards;
//    
//    for(var li_suit = 1; li_suit <= 4; li_suit++) {
//        for(var li_rank = 1; li_rank <= 13; li_rank++) {
//            var ls_suit = "scdh".charAt(li_suit - 1); // suits
//            var ls_rank = "23456789TJQKA".charAt(li_rank - 1); //ranks
//            
//            ms_cards.AddCard(ls_rank + ls_suit);
//        }
//    }        
//}

function Cards(ai_numCards) {
    var ms_cards = new Array();

	this.CardLimit = ai_numCards;
	this.AddCard = _AddCard;
	this.RemoveCard = _RemoveCard;
	this.RemoveAt = _RemoveAt;
	this.Cards = ms_cards;
	this.Parse = _Parse;
	this.Count = _Count;
	this.GetCard = _GetCard;
	this.ToString = _ToString;


	function _Parse(as_cards) {
		var ls_text = _RemoveSpaces(as_cards);
		var ls_out = '';

		for (var i = 0; i < ls_text.length; i+=2) {
			ls_out = ls_out + ls_text.substring(i, i +  2) ;

			if (i < (ls_text.length - 2))
				ls_out =  ls_out +  ',';
		}

		var lo_cards = ls_out.split(',');

		for (var i = 0; i < lo_cards.length; i++)
			this.AddCard(lo_cards[i]);
		
	}

    function _Count() {
        return ms_cards.length;
    }
    
    function _GetCard(ai_pos) {
        return ms_cards[ai_pos];
    }
    
    function _AddCard(as_card) {
        if (ms_cards.length < this.CardLimit) 
            if ( !_CardExists(as_card) )
                if (_ValidCard(as_card)) {
            	    ms_cards[ms_cards.length] = _FormatCard(as_card);
            	    return true;
            	}
        return false;
    }

    function _RemoveCard(as_card) {
		for(var i = 0; i < ms_cards.length; i++) {
			if( ms_cards[i] == _FormatCard(as_card) ) {
				ms_cards.splice(i, 1);
			}
		}
    }
    
    function _ValidCard(as_card) {
        var ls_card = _FormatCard(as_card);
        var ls_rank = ls_card.charAt(0);
        var ls_suit = ls_card.charAt(1);
        
        switch (ls_rank) {
            case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": case "T": case "J": case "Q": case "K": case "A": 
                break;
                
            default:
                return false;
        }
        switch (ls_suit) {
            case "c": case "s": case "h": case "d": 
                break;
            default:
                return false;
        }
        
        return true;
    }

    function _RemoveAt(ai_pos) {
    	ms_cards.splice(ai_pos, 1);
    }

	function _CardExists(as_card) {
		for(var i = 0; i < ms_cards.length; i++)
			if( ms_cards[i] == _FormatCard(as_card) )
				return true;

		return false;
	}

	function _ToString(as_format) {
		return ms_cards.join(' ');
	}

    function _FormatCard(as_card) {
    	return ( as_card.charAt(0).toUpperCase() + as_card.charAt(1).toLowerCase() );
    }


    function _RemoveSpaces(as_text) {
	    while(as_text.indexOf(' ') >= 0) {
	        as_text = as_text.replace(' ', '');
	    }

	    return as_text;
	}

}


