var chatRequests;
var lastChatID = 0;
var requestProgress = false;
var i=0;
var elementHTML;

// PHP override if necessary
var xPos = 0;
var yPos = 19;

$(document).ready(function() {
  $(".navLink span").hover(function() {
    $(this).addClass("hover");
    $(this).children(".navDiv").show();
  }, function() {
    $(this).removeClass("hover");
    $(this).children(".navDiv").hide();
  });
  
  $("#chat").each(function() {
    fetchChatsFirst();
    setInterval("fetchChats()", 5000);
  });
  
  $("#RPSGame").submit(function() {
    var rpsPlay = $("#RPSPlay").val();
    $("#RPSsubmit").attr("disabled", "disabled");
    $.post("mini/games_rps.php", {play: rpsPlay}, function(data) {
      $("#RPSsubmit").removeAttr("disabled");
      if(data.result == "noturns") {
        $("#RPSstatus").html("<span class=\"error\">You have no more turns!</span>");
      } else {
        if(data.result == "draw") {
          switch(rpsPlay) {
            case "rock":
              $("#RPSstatus").html("You play Rock! The game plays Rock! Nobody wins!");
            break;
            case "paper":
              $("#RPSstatus").html("You play Paper! The game plays Paper! Nobody wins!");
            break;
            case "scissors":
              $("#RPSstatus").html("You play Scissors! The game plays Scissors! Nobody wins!");
            break;
          }
          
        } else if(data.result == "win") {
          switch(rpsPlay) {
            case "rock":
              $("#RPSstatus").html("You play Rock! The game plays Scissors! You win 2 Gold!");
            break;
            case "paper":
              $("#RPSstatus").html("You play Paper! The game plays Rock! You win 2 Gold!");
            break;
            case "scissors":
              $("#RPSstatus").html("You play Scissors! The game plays Paper! You win 2 Gold!");
            break;
          }
        } else if(data.result == "lose") {
          switch(rpsPlay) {
            case "rock":
              $("#RPSstatus").html("You play Rock! The game plays Paper! You lose!");
            break;
            case "paper":
              $("#RPSstatus").html("You play Paper! The game plays Scissors! You lose!");
            break;
            case "scissors":
              $("#RPSstatus").html("You play Scissors! The game plays Rock! You lose!");
            break;
          }
        }
        $("#RPSturns").html(data.turns);
        $("#layoutTurns").html(data.turns);
      }
    }, "json");
    return false;
  });
  
  $("#chatPost").submit(function() {
    $("#chatText").attr("disabled", "disabled");
    var pText = $("#chatText").val();
    var pChat = $("#chatID").val();
    $.post("mini/chat_post.php", {text: pText, chat: pChat}, function() {
      $("#chatText").removeAttr("disabled");
      $("#chatText").focus();
      $("#chatText").val("");
    });
    return false;
  });
  
  $("#gryffSelect").change(function() {
    if($("#gryffSelect").val() != "") {
      $.get("mini/gryff.php?id="+$("#gryffSelect").val(), {}, function(data) {
        $("#gryffInfo").html(printGryff(data));
        $("#attacker").val(data.id);
        $("#battleButton").removeAttr("disabled");
      }, "json");
    } else {
      $("#battleButton").attr("disabled", "disabled");
    }
  });
  
  $("#initPos").each(function() {
    expRedraw();
    
    $("#expTop").click(function() {
      if(yPos > 0) {
        if(turnsRedo() == 1) {
          meadowTurn("up");
          yPos--;
          expRedraw();
        }
      }
    });
    $("#expLeft").click(function() {
      if(xPos > 0) {
        if(turnsRedo() == 1) {
          meadowTurn("left");
          xPos--;
          expRedraw();
        }
      }
    });
    $("#expBottom").click(function() {
      if(yPos < 19) {
        if(turnsRedo() == 1) {
          meadowTurn("down");
          yPos++;
          expRedraw();
        }
      }
    });
    $("#expRight").click(function() {
      if(xPos < 29) {
        if(turnsRedo() == 1) {
          meadowTurn("right");
          xPos++;
          expRedraw();
        }
      }
    });
  });
  
  $("#gryffHunt").change(function() {
    if($("#gryffHunt").val() != "") {
      $.get("mini/gryff.php?id="+$("#gryffHunt").val(), {}, function(data) {
        $("#huntDiv").html(printGryff(data));
        var enr = Math.floor(data.energy/2);
        $("#huntDiv").append("<table cellpadding=\"5\" cellspacing=\"5\" border=\"0\" class=\"gryffTable mup\"><tr><td>Times:</td><td><input type=\"text\" value=\""+enr+"\" size=\"3\" id=\"energy\" /></td><td><input type=\"submit\" value=\"Hunt!\" id=\"huntButton\" /></td></tr></table>");
        $("#huntButton").click(function() {
          $.post("mini/hunting.php", {area: $("#areaID").val(), gryff: $("#gryffHunt").val(), number: $("#energy").val()}, function(data) {
            if(data.status == -2) $("#huntDiv").html("<span class=\"error\">Invalid gryff!</span>");
            else if(data.status == -1) $("#huntDiv").html("<span class=\"error\">No energy...</span>");
            else if(data.status == 0) $("#huntDiv").html("<span class=\"error\">Your gryff was too hungry to hunt properly. It brought back "+data.number+" items, though!</span>");
            else $("#huntDiv").html("<span class=\"alert\">Your gryff brought back "+data.number+" items!</span>");
          }, "json");
          $("#huntDiv").html();
        });
        
      }, "json");
    }
  });
  
  $("#gryffFish").change(function() {
    if($("#gryffFish").val() != "") {
      $.get("mini/gryff.php?id="+$("#gryffFish").val(), {}, function(data) {
        $("#fishDiv").html(printGryff(data));
        var enr = Math.floor(data.energy/2);
        $("#fishDiv").append("<table cellpadding=\"5\" cellspacing=\"5\" border=\"0\" class=\"gryffTable mup\"><tr><td>Times:</td><td><input type=\"text\" value=\""+enr+"\" size=\"3\" id=\"energy\" /></td><td><input type=\"submit\" value=\"Fish!\" id=\"fishButton\" /></td></tr></table>");
        $("#fishButton").click(function() {
          $.post("mini/fishing.php", {area: $("#areaID").val(), gryff: $("#gryffFish").val(), number: $("#energy").val()}, function(data) {
            if(data.status == -2) $("#fishDiv").html("<span class=\"error\">Invalid gryff!</span>");
            else if(data.status == -1) $("#fishDiv").html("<span class=\"error\">No energy...</span>");
            else if(data.status == 0) $("#fishDiv").html("<span class=\"error\">Your gryff was too hungry to fish properly. It brought back "+data.number+" fishes though!</span>");
            else $("#fishDiv").html("<span class=\"alert\">Your gryff brought back "+data.number+" fishes!</span>");
          }, "json");
          $("#fishDiv").html();
        });
        
      }, "json");
    }
  });
  
  $("#gryff1").change(function() {
    if($("#gryff1").val() != "") {
      var gid = $("#gryff1").val();
      $.get("mini/gryff.php", {id: gid}, function(data) {
        $("#gryff1info").html(printGryff(data));
      }, "json");
    } else {
      $("#gryff1info").html("No gryff selected.");
    }
  });
  
  $("#gryff2").change(function() {
    if($("#gryff2").val() != "") {
      var gid = $("#gryff2").val();
      $.get("mini/gryff.php", {id: gid}, function(data) {
        $("#gryff2info").html(printGryff(data));
      }, "json");
    } else {
      $("#gryff2info").html("No gryff selected.");
    }
  });
  
  
  
});


function meadowTurn(pos) {
  $.post("mini/meadow_explore.php", {move: pos}, function(data) {
    if(data.status == -1) {
      xPos = data.xPos;
      yPos = data.yPos;
      expRedraw();
    } else if(data.status == 0) {
      $("#meadowMessage").html("No more turns...");
      xPos = data.xPos;
      yPos = data.yPos;
      expRedraw();
    } else {
      if(data.gold > 0) {
        var gold = parseInt($("#layoutGold").html());
        $("#layoutGold").html(gold + data.gold);
        $("#meadowMessage").html("You find "+data.gold+" Gold. "+data.item);
      } else {
        $("#meadowMessage").html(data.item);
      }
      $("#meadowMessage").html("("+data.xPos+","+data.yPos+") "+$("#meadowMessage").html());
      xPos = data.xPos;
      yPos = data.yPos;
      expRedraw();
    }
  }, "json");
}

function expRedraw() {
  $("#initPos").css("margin-left", (xPos*25)+"px");
  $("#initPos").css("margin-top", (yPos*25)+"px");
}

function turnsRedo() {
  var turns = parseInt($("#layoutTurns").html());
  
  if(turns > 0) {
    $("#layoutTurns").html(turns - 1);
    return 1;
  }
  else return 0;
}

function printGryffs(data, selName) {
  
  var htmlGryffs = "<select id=\""+selName+"\">";
  var i = 0;
  for(i = 0; i < data.total; i++) {
    htmlGryffs += "<option value=\""+data.gryffs[i].id+"\">"+data.gryffs[i].name+"</option>";
  }
  htmlGryffs += "</select>";
  return htmlGryffs;
}

function printGryff(data) {
  return "<div class=\"calign\"><table cellpadding=\"5\" cellspacing=\"5\" border=\"0\" class=\"gryffTable\"><tr><td><strong>"+data.name+"</strong><br />"+data.breed+"<br /><img src=\"static/gryffs/thumb_"+data.id+".png\" class=\"line\" /><br /><img src=\"mini/bars/"+data.hunger+".gif\" class=\"bar\" /><small>Hunger</small><br /><img src=\"mini/bars/"+data.energy+".gif\" class=\"bar\" /><small>Energy</small><br />Level "+data.level+"</td></tr></table></div>";
}



function fetchChats() {
  if(requestProgress == true) return false;
  else requestProgress = true;
  $.post("mini/chat.php", {lastid: lastChatID}, function(data) {
    requestProgress = false;
    chatRequests = data;
    if(chatRequests.allowed == 0) {
      $("#chat").html("<span class=\"error\">You have been banned from the chat.</span>");
      requestProgress = 0;
      return true;
    } else {
      if(chatRequests.chatsnr > 0) {
        $.each(chatRequests.chats, function(i,chat) {
          elementHTML = "<tr><td valign=\"top\">";
          if(chat.tag != "") {
            elementHTML += "<img src=\"static/users/"+chat.tag+"\" class=\"miniicon\" />";
          } else elementHTML += "&nbsp;";
          elementHTML += "</td><td nowrap=\"nowrap\" valign=\"top\"><a href=\"profile.php?id=" + chat.user + "\">"+ chat.uname + "<br />(#" + chat.user + ")";
          
          elementHTML += "</a></td><td valign=\"top\">" + chat.ctext + "<br /><small>" + chat.date + "</small></td></tr>";
          if(lastChatID > 0) $("#chatTable tr:last").remove();
          $("#chatTable tr:first").before(elementHTML);
          });
        lastChatID = chatRequests.lastChatID;
      }
    }
    
  }, "json");
  
}

function fetchChatsFirst() {
  
  $.get("mini/chat.php", {}, function(data) {
    
    chatRequests = data;
    if(chatRequests.allowed == 0) {
      $("#chat").html("<span class=\"error\">You have been banned from the chat.</span>");
      return true;
    } else {
      //$("#chatStatus").html(data);
      if(chatRequests.chatsnr > 0) {
        $.each(chatRequests.chats, function(i,chat) {
          elementHTML = "<tr><td valign=\"top\">";
          if(chat.tag != "") {
            elementHTML += "<img src=\"static/users/"+chat.tag+"\" class=\"miniicon\" />";
          } else elementHTML += "&nbsp;";
          elementHTML += "</td><td nowrap=\"nowrap\" valign=\"top\"><a href=\"profile.php?id=" + chat.user + "\">"+ chat.uname + "<br />(#" + chat.user + ")";
          
          elementHTML += "</a></td><td valign=\"top\">" + chat.ctext + "<br /><small>" + chat.date + "</small></td></tr>";
          $("#chatTable").append(elementHTML);
        });
        
        lastChatID = chatRequests.lastChatID;
      }
    }
    
  }, "json");
  
}