Blackjack JS Game

Made for Code Academy's Final Blackjack Game - part 3.5 (http://www.codecademy.com/courses/blackjack-part-3/2/5).

by NicholasRBowers

JavaScript

// Deck Constructor
function Deck() {
    var suits = [];
    var ranks = [];
    var cards = [];

    // Construct the deck
    for(i=1; i<=4; i++) {
        suits.push(i);
    }
    for(i=1; i<=13; i++) {
        ranks.push(i);
    }
    for(i in suits) {
        for(j in ranks) {
            cards.push([suits[i], ranks[j]]);
        }
    }

    // Shuffle the deck
    cards.sort(function(a, b){ return 0.5 - Math.random(); });

    // Deal method
    this.deal = function() {
        var card = cards.pop();
        return new Card(card[0], card[1]);
    };
}

// Card Constructor
function Card(s, r) {
    var suit = parseInt(s);
    var rank = parseInt(r);

    this.getSuit = function() {
        switch(suit){
            case 1:
                return "Clubs";
            case 2:
                return "Diamonds";
            case 3:
                return "Spades";
            case 4:
                return "Hearts";
        }
    };
    this.getRank = function() {
        switch(rank){
            case 1:
                return "Ace";
            case 11:
                return "Jack";
            case 12:
                return "Queen";
            case 13:
                return "King";
            default:
                return rank;
        }
    };
    this.getValue = function() {
        if(rank === 1) {
            return 11;
        } else if(rank > 10) {
            return 10;
        } else {
            return rank;
        }
    };
}

 // Hand Constructor
function Hand(deck) {
    var card1 = deck.deal();
    var card2 = deck.deal();
    var hand = [card1, card2];

    this.getHand = function() {
        return hand;
    };
    this.score = function() {
        var score = 0;
        var aces = 0;
        for(var i in hand) {
            if(hand[i].getValue() === 11) {
                aces += 1;
            }
            score += hand[i].getValue();
        }
        while(aces > 0 && score > 21) {
            score -= 10;
            aces--;
   ...