﻿var g_Cards = ["deck", "2H", "3H", "4H", "5H", "6H", "7H", "8H", "9H", "10H", "JH", "QH", "KH", "AH", "2D", "3D", "4D", "5D", "6D", "7D", "8D", "9D", "10D", "JD", "QD", "KD", "AD", "2S", "3S", "4S", "5S", "6S", "7S", "8S", "9S", "10S", "JS", "QS", "KS", "AS", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "10C", "JC", "QC", "KC", "AC"];
var g_CardWarGameSchema = "http://www.SimpleConnexion.com/games/cardwar/1.0";

function cardWarGamefactory(gameManager, connection, displayPanel){
    var game = new cardWarGame();
    game.gameManager = gameManager;
    game.connection = connection;
    game.displayPanel = displayPanel;
    return game; 
}


function cardWarGame(){
    __extendBaseGame(this);
    this.displayPanel = null;
    this.gameManager = null;
    this.connection = null;
    this.gameSessionID = null;
    this.schema = g_CardWarGameSchema;
    this.newGame = true;
    this.index = -1;
    this.drawMsgListener = null;
}

cardWarGame.prototype = {
    initGame:cardWarGame_InitGame,
    openGame:cardWarGame_OpenGame,
    closeGame:cardWarGame_CloseGame,
    startGame:cardWarGame_StartGame,
    drawCard:cardWarGame_DrawCard,
    createDrawCardMessage:cardWarGame_CreateDrawCardMessage
}


function cardWarGame_InitGame() {
    this.gameSessionID = this.gameManager.gameSessionID;
    
    drawMsgListener = new MessageListener("msg2", "*", "draw", g_CardWarGameSchema, handleCardWar, this);
    this.connection.messageListeners.addListener(drawMsgListener);
    this.connection.connected.addListener(Game_handleConnected);
    this.connection.discussionChanged.addListener(Game_handleDiscussionChanged);
}

function cardWarGame_StartGame(){
}

function cardWarGame_OpenGame(){
}

function cardWarGame_CloseGame(){
    this.connection.messageListeners.removeListener(drawMsgListener);
    this.connection.connected.removeListener(Game_handleConnected);
    this.connection.discussionChanged.removeListener(Game_handleDiscussionChanged);
}

function cardWarGame_DrawCard() {
    if (this.connection != null) {
        if (this.gameSessionID != null) {
            var m = this.createDrawCardMessage();
            this.connection.postMessageObject(m);
        } 
    }
}

function cardWarGame_CreateDrawCardMessage(){
    var m = new Message();
    m.id = this.connection.nextMessageID();
    m.schema = g_CardWarGameSchema;
    m.command = "draw";
    m.attributes.set("gamesessionid", this.gameSessionID);
    return m;
}

function handleCardWar(sender, msg, targetObj) {
    var lblYourScore = $("#lblYourScore")[0];
    var lblPeerScore = $("#lblPeerScore")[0];
    var imgYourCard = $("#imgYourCard")[0];
    var imgStrangerCard = $("#imgStrangerCard")[0];
    var tinyCardImg = "";

    if (targetObj.newGame) {
        ResetCards();
    }
    
    if (typeof (msg.gamesessionid) != "undefined") {
        targetObj.gameSessionID = msg.gamesessionid;
    }

    if (typeof (msg.cardID) != "undefined" && typeof (msg.player) != "undefined") {
        if (msg.player == "you") {
            targetObj.newGame = false;
            toggleDrawCard(false);
            imgYourCard.src = "images/cardwar/" + msg.cardID + "_small.png";
        } else if (msg.player == "peer") {
            targetObj.newGame = false;
            toggleDrawCard(true);
            imgStrangerCard.src = "images/cardwar/" + msg.cardID + "_small.png";
        }
        tinyCardImg = "<img onload='Game_CardLoaded()' style='margin-left:5px;'src='images/cardwar/tiny/" + msg.cardID + "_small_tiny.png'/>";
    }
    
    if (typeof (msg.yourScore) != "undefined") {
        lblYourScore.innerText = "You ("+ msg.yourScore +")";
    }

    if (typeof (msg.peerScore) != "undefined") {
        lblPeerScore.innerText = "Stranger (" + msg.peerScore + ")";
    }
    
        
    if (typeof (msg.text) != "undefined") {
        var src = "Game> ";
        g_NewMessageReceived = true && !g_hasfocus;
        g_dispMsg.writeHtml(src + msg.text + tinyCardImg, "DisplayMessageLine_GameNotif", false);
    }

    if (typeof (msg.result) != "undefined") {
        if (msg.result) {
            targetObj.newGame = true;
        }
    }


}

function Game_CardLoaded() {
    if (g_dispMsg.autoScroll) {
        g_dispMsg.scrollToEnd();
    }
}

function Game_handleConnected(sender, obj) {
}

function Game_handleDiscussionChanged(sender, obj) {
    var lblYourScore = $("#lblYourScore")[0];
    var lblPeerScore = $("#lblPeerScore")[0];
    var imgYourCard = $("#imgYourCard")[0];
    var imgStrangerCard = $("#imgStrangerCard")[0];

    toggleDrawCard(!(obj.status == "closed"));
    

    lblYourScore.innerText = "You (0)";
    lblPeerScore.innerText = "Stranger (0)";

    imgYourCard.src = "images/cardwar/deck_small.png"
    imgStrangerCard.src = "images/cardwar/deck_small.png"
    obj.newGame = true;
    obj.gameSessionID = null;
}

function ResetCards() {
    var imgYourCard = $("#imgYourCard")[0];
    var imgStrangerCard = $("#imgStrangerCard")[0];
    imgYourCard.src = "images/cardwar/deck_small.png"
    imgStrangerCard.src = "images/cardwar/deck_small.png"
}

function toggleDrawCard(enable) {
    var btn = $("#btnDrawCard")[0];
    btn.disabled = !enable;
}

function showCardWar() {
    var pnlGamePanel = $("#divGamePanel")[0];
    
    var html = '<div id="divCardWard" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;" >'
    +'<input id="btnDrawCard" type="button" value="Draw Card" onclick="drawCard()" disabled="disabled" />'
    +'<br />'
    +'<br />'
    +'<img alt="You draw a card and the stranger draws a card. The one who has a stronger card wins."                 src="images/orangequestionmark.gif" style="position: absolute; top: 0px; left: 200px;" />'
    +'<table style="width:100%">'
    +'<tr>'
    +'<td align="center">'
    +'<span id="lblYourScore">You (0)'
    +'</span>'
    +'</td>'
    +'<td align="center">'
    +'<span id="lblPeerScore">Stranger (0)'
    +'</span>'
    +'</td>'
    +'</tr>'
    +'<tr>'
    +'<td align="center">'
    +'<img alt="" src="images/cardwar/deck_small.png" id="imgYourCard"   />'
    +'</td>'
    +'<td align="center">'
    +'<img alt="" src="images/cardwar/deck_small.png" id="imgStrangerCard" />'
    +'</td>'
    +'</tr>'
    +'</table>'
    + '</div>';

    pnlGamePanel.innerHTML = html;
}

function drawCardButton_Clicked(){
    var gm = window[g_GameManagerID];
    if(gm != null){
        if(gm.currentGame != null && gm.currentGame.schema == g_CardWarGameSchema){
            gm.currentGame.drawCard();
        }else if(gm.currentGame == null){
            gm.startGame(g_CardWarGameSchema);
        }
    }
}

// register CardWar Game
window[g_GameManagerID].register(g_CardWarGameSchema, cardWarGamefactory);
