/*
 * MiniGame
 * Copyright(c) 2007, Will Gillen.
 * 
 * This code is protected by copyright.  Some portions of this code may be copyright Yahoo! and/or JackSlocum.
 */


function trim(str)
{return str.replace(/^\s*|\s*$/g,"");}
function getCurrentGames()
{DebugWrite('calling AJAX.GetCurrentGames');SWIRL.DNN.Modules.MiniGame.AJAX.GetCurrentGames(callback_GetCurrentGames);}
function callback_GetCurrentGames(res)
{if(res)
{DebugWrite('writing current games');var oGames=res.value;var tbodyElem=document.getElementById('_minigame_gametable');while(tbodyElem.rows.length>0)
{tbodyElem.deleteRow(tbodyElem.rows.length-1);}
var trElem,tdElem;for(var x=0;x<oGames.length;x++)
{trElem=tbodyElem.insertRow(tbodyElem.rows.length);trElem.Class='games';tdElem=trElem.insertCell(trElem.cells.length);tdElem.Class='games';tdElem.innerHTML=oGames[x].game_name;tdElem=trElem.insertCell(trElem.cells.length);tdElem.Class='games';tdElem.innerHTML=oGames[x].gametype_name;tdElem=trElem.insertCell(trElem.cells.length);tdElem.Class='games';tdElem.innerHTML=oGames[x].num_players+'/'+oGames[x].max_players;tdElem=trElem.insertCell(trElem.cells.length);tdElem.Class='games';tdElem.innerHTML=oGames[x].skill_level;if(trElem.addEventListener)
{trElem.addEventListener('click',SelectGame,true);}
else if(trElem.attachEvent)
{trElem.attachEvent('onclick',SelectGame);}
trElem.style.width='100%'
trElem.gameid=oGames[x].game_id;if(selectedGameID==trElem.gameid)
{trElem.style.backgroundColor='white';selectedElem=trElem;}}}}
function monitorPolling()
{try{currTime=new Date();if(Math.ceil(currTime.getTime()-lastPoll.getTime())>20000)
{PollLobby();}
setTimeout('monitorPolling()',5000);}
catch(e){alert('ERR (monitorPolling): '+e.message);}}
function PollLobby()
{try{lastPoll=new Date();DebugWrite('Polling Lobby');SWIRL.DNN.Modules.MiniGame.AJAX.PollLobby(intModuleID,strUserid,strUserListGUID,callback_PollLobby);}
catch(e){alert('ERR (PollLobby): '+e.message);setTimeout('PollLobby()',3500);}}
function callback_PollLobby(res)
{try{var pollObj=res.value
if(typeof(pollObj)=="object")
{if(pollObj!=null)
{strUserListGUID=pollObj.strUserListGUID;DebugWrite('strUserListGUID='+strUserListGUID);if(pollObj.bNewMessages)
{DebugWrite('Calling getLobbyChatMessages');getLobbyChatMessages();}
if(pollObj.bNewUsers)
{DebugWrite('Calling getGamePlayers');getLobbyPlayers();strUserListGUID=pollObj.strUserListGUID;}
if(pollObj.bGameChanges)
{getCurrentGames();}}
else
{}}}catch(e){drawMessage('<font color=red>PollLobby_Callback Error, Trying Again.</font><br/>');}
setTimeout('PollLobby()',3500);}
function checkEnter(e)
{var characterCode
if(e&&e.which)
{e=e
characterCode=e.which}
else
{e=event
characterCode=e.keyCode}
if(characterCode==13)
{SendLobbyMsg()
return false}
else
{return true}}
function SendLobbyMsg()
{try{if(document.getElementById('_minigame_chatmsg').value!='')
{document.getElementById('_minigame_lobbychat').innerHTML+='<b>'+strPlayerName+':</b> '+document.getElementById('_minigame_chatmsg').value+'<br>';setTimeout('chatScroll()',50);SWIRL.DNN.Modules.MiniGame.AJAX.AddLobbyChatMessage(intModuleID,document.getElementById('_minigame_chatmsg').value,'black',intPlayerID,1,callback_SendLobbyMsg)
document.getElementById('_minigame_chatmsg').value='';}}catch(e){drawMessage('<font color=red>Unable to contact server, please try again in a few moments.</font><br/>');}}
function callback_SendLobbyMsg(res)
{if(res.error){drawMessage('<font color=red>Temporarily unable to connect to server. Error Details: '+res.error.Message+'</font><br/>');}
res=null;getLobbyChatMessages();}
function getLobbyChatMessages()
{try{DebugWrite('trying getlobbymessages');SWIRL.DNN.Modules.MiniGame.AJAX.GetLobbyChatMessages(intModuleID,callback_getLobbyChatMessages);}catch(e){DebugWrite(e.Message);}}
function callback_getLobbyChatMessages(res)
{try{DebugWrite('callback_getLobbyChatMessages: '+res.value);var oMsgs=res.value;if(typeof(oMsgs)=="object")
{if(oMsgs!=null)
{DebugWrite('writing newest messages');for(var x=0;x<oMsgs.length;x++)
{if((trim(oMsgs[x].from_player_name)!=trim(strPlayerName))||(blnFirstLoad))
{if(oMsgs[x].msg_type==1){document.getElementById('_minigame_lobbychat').innerHTML+='<b>'+oMsgs[x].from_player_name+':</b> '+oMsgs[x].msg_text+'<br>';}else{document.getElementById('_minigame_lobbychat').innerHTML+='<b>'+oMsgs[x].msg_text+'</b><br>';}}}
blnFirstLoad=false;setTimeout('chatScroll()',50);}}}catch(e){alert('ERR: (callback_getLobbyChatMessages): '+e.Message);}}
function chatScroll()
{document.getElementById('_minigame_lobbychat').scrollTop=document.getElementById('_minigame_lobbychat').scrollHeight-document.getElementById('_minigame_lobbychat').clientHeight;}
function getLobbyPlayers()
{try{DebugWrite('Trying AJAX.GetUserList');SWIRL.DNN.Modules.MiniGame.AJAX.GetUserList(intModuleID,callback_GetUserList)}catch(e){alert('ERR: (getLobbyPlayers): '+e.Message);}}
function callback_GetUserList(res)
{try{DebugWrite('callback_GetUserList');if(res.value!=null)
{document.getElementById('_minigame_lobbyusers').innerHTML='';for(var x=0;x<res.value.length;x++)
{document.getElementById('_minigame_lobbyusers').innerHTML=document.getElementById('_minigame_lobbyusers').innerHTML+res.value[x]+'<br>';}}}catch(e){alert('ERR: (callback_GetUserList): '+e.Message);}}
function SelectGame(evt)
{var e_out;var ie_var='srcElement';var moz_var='target';var prop_var='gameid';var elem;evt[moz_var]?elem=evt[moz_var]:elem=evt[ie_var];while(elem.nodeName!='TR')
{elem=elem.parentNode;}
var game_id;game_id=elem[prop_var];if(selectedElem)
{selectedElem.style.backgroundColor='#a4adce';selectedElem.style.border='0px solid blue';}
selectedElem=elem;selectedGameID=game_id;elem.style.backgroundColor='white';}
function JoinGame()
{if(selectedGameID!=0)
{window.open(strModulePath+'minigame.aspx?portalid='+intPortalID+'&GAME_ID='+selectedGameID,'MINIGAME_game_'+selectedGameID+'_'+intPlayerID,'toolbar=no,resizable=yes,menubar=no,location=yes,status=yes,scrollbars=yes')}}
function CreateGame()
{window.open(strModulePath+'NewGame.aspx?portalid='+intPortalID,'MINIGAME_game_'+selectedGameID+'_'+intPlayerID,'toolbar=no,resizable=yes,menubar=no,location=yes,status=yes,scrollbars=yes')}
function showDebug()
{if(blnDebug)
{SWIRL_Debug=document.createElement('DIV');SWIRL_Debug.innerHTML+='DEBUG:<br>';SWIRL_Debug.id='SWIRL_Debug';with(SWIRL_Debug.style)
{position='absolute';zIndex=999;top=2;left=200;height='250px';width='350px';backgroundColor='white';fontFamily='Arial';padding='3px';fontSize=9;overflow='auto';border='1px solid black';}
document.body.appendChild(SWIRL_Debug);ADD_DHTML('SWIRL_Debug'+RESIZABLE);}}
function showDebugButton()
{if(blnDebug){document.write("<input type='button' onclick='showDebug();' id='show_debug' name='Show Debug' value='Show Debug' style='position:absolute;top:10;left:10'>");}}
function DebugWrite(strMsg)
{if(blnDebug)
{if(document.getElementById('SWIRL_Debug'))
{SWIRL_Debug.innerHTML+=strMsg+'<br>';document.getElementById('SWIRL_Debug').scrollTop=document.getElementById('SWIRL_Debug').scrollHeight-document.getElementById('SWIRL_Debug').clientHeight}}}
function drawMessage(msg)
{document.getElementById('_minigame_lobbychat').innerHTML=document.getElementById('_minigame_lobbychat').innerHTML+msg;document.getElementById('_minigame_lobbychat').scrollTop=document.getElementById('_minigame_lobbychat').scrollHeight-document.getElementById('_minigame_lobbychat').clientHeight}
function InitChatUser()
{getCurrentGames();getLobbyChatMessages();PollLobby();monitorPolling();}