
Poller=function(freq,components){this.components=[];this.components=components;this.repeater=null;this.freq=freq;this.execute_move=false;this.is_black=false;Poller.ajaxHelper=null;Poller.component=this;Poller.counter=0;Poller.freq=freq;this.setup_done=false;Poller.dont_poll=false;this.repeat();this.string_players_old="";this.string_offers_old="";this.status=this.status_old=0;this.pos_old='';this.kib_timer_started=false;};Poller.monitor=function(){if(!Poller.dont_poll){clearInterval(Poller.fixer);return;}
g_counter++;servermsgToWindow(document.getElementById('server_msg_inner'),'Poll transmission failed:','Retry No. '+g_counter+' ...');g_poller.sendRequest();};Poller.fireRequest=function(){if(Poller.dont_poll){return;}
var name=document.getElementById('username').value;var url=server+path+'poller.php';var now=new Date();if(!g_poller){g_poller=new net.ContentLoader(Poller.component,url,"POST",["name="+name,"fact="+g_fact1,"freq="+this.freq]);}
g_poller.sendRequest();Poller.dont_poll=true;Poller.url=url;Poller.name=name;Poller.freq=this.freq;clearInterval(Poller.fixer);Poller.fixer=setInterval("Poller.monitor()",g_fact2*this.freq*1000);};Poller.prototype={repeat:function(){this.unrepeat();this.repeater=setInterval("Poller.fireRequest("+")",this.freq*1000);},unrepeat:function(){if(this.repeater){clearInterval(this.repeater);}
this.repeater=null;},ajaxUpdate:function(request){clearInterval(Poller.fixer);if(g_counter>0){servermsgToWindow(document.getElementById('server_msg_inner'),'','... Success.');g_counter=0;}
var xmlDoc=request.responseXML;var error=xmlDoc.getElementsByTagName('error')[0].firstChild.data;if(error){if(_DEBUG_&&error.indexOf('error')>=0&&error.indexOf('|')==-1){_console.toConsole('poller.php (1): '+error);}
var ind1=error.indexOf('chat_begin');var ind2=error.indexOf('chat_end');var string_chat=error.substring(ind1+10,ind2);var chat_entries=[];var chat_entry=[];if(string_chat.indexOf("~")>0){chat_entries=string_chat.split("~");}else{chat_entries[0]=string_chat;}
var che_0_old='';var che_1_old='';for(var i=0;i<chat_entries.length;i++){chat_entry=chat_entries[i].split("|");if(chat_entry[1]){if(chat_entry[0]!=che_0_old||chat_entry[1]!=che_1_old){chatToWindow(document.getElementById('w_chat'),chat_entry[0],chat_entry[1]);che_0_old=chat_entry[0];che_1_old=chat_entry[1];}}}
ind1=error.indexOf('players_begin');ind2=error.indexOf('players_end');var string_players=error.substring(ind1+13,ind2);if(string_players!=this.string_players_old){document.getElementById('w_players').innerHTML='';playersToWindow(document.getElementById('w_players'),string_players);document.getElementById('targets').innerHTML='';playersToTargets(document.getElementById('targets'),string_players);this.string_players_old=string_players;}
var ind_name=string_players.indexOf(document.getElementById('username').value);var part=string_players.slice(ind_name,ind_name+document.getElementById('username').value.length+7);this.status_old=this.status;if(part[part.length-1]=='~'){this.status=part[part.length-2];}else{this.status=part[part.length-1];}
if(g_playing&&this.status_old==0){if(document.getElementById('s_player1').firstChild.firstChild.data==document.getElementById('username').value){resultToNotation(document.getElementById('w_moves'),'0-1');GameOver(this.components[0],'0-1');}else if(document.getElementById('s_player2').firstChild.firstChild.data==document.getElementById('username').value){resultToNotation(document.getElementById('w_moves'),'1-0');GameOver(this.components[0],'1-0');}
this.setup_done=false;}
ind1=error.indexOf('offers_begin');ind2=error.indexOf('offers_end');var string_offers=error.substring(ind1+12,ind2);if(string_offers!=this.string_offers_old){document.getElementById('w_offers').innerHTML='';offersToWindow(document.getElementById('w_offers'),string_offers);this.string_offers_old=string_offers;}
ind1=error.indexOf('server_msg_begin');ind2=error.indexOf('server_msg_end');var string_servermsg=error.substring(ind1+16,ind2);var servermsg_entries=[];var servermsg_entry=[];if(string_servermsg.indexOf("~")>0){servermsg_entries=string_servermsg.split("~");}else{servermsg_entries[0]=string_servermsg;}
for(var i=0;i<servermsg_entries.length;i++){servermsg_entry=servermsg_entries[i].split("|");if(servermsg_entry[1]){servermsgToWindow(document.getElementById('server_msg_inner'),servermsg_entry[0],servermsg_entry[1]);if(servermsg_entry[1].indexOf('accept or decline')>0){document.getElementById('b_accept').disabled=false;document.getElementById('b_decline').disabled=false;document.getElementById('b_prefs').disabled=true;document.getElementById('b_offer').disabled=true;document.getElementById('b_withdraw').disabled=true;document.getElementById('b_exit').disabled=true;}
if(servermsg_entry[1].indexOf('is challenging you')>0){g_challenged=true;}
if(servermsg_entry[1].indexOf('declines your challenge')>0){g_challenging=false;}
if(servermsg_entry[1].indexOf('has withdrawn the challenge')>0){g_challenged=false;document.getElementById('b_accept').disabled=true;document.getElementById('b_decline').disabled=true;document.getElementById('b_prefs').disabled=false;document.getElementById('b_offer').disabled=false;document.getElementById('b_withdraw').disabled=false;document.getElementById('b_exit').disabled=false;}
if(servermsg_entry[1].indexOf('accepts your offer')>0){g_offering=false;document.getElementById('b_accept').disabled=true;document.getElementById('b_decline').disabled=true;}
if(servermsg_entry[1].indexOf('accepts your challenge')>0){g_challenging=false;document.getElementById('b_accept').disabled=true;document.getElementById('b_decline').disabled=true;}
if(servermsg_entry[1].indexOf('offer has been posted')>0){g_offering=true;}
if(servermsg_entry[1].indexOf('offer has expired')>0){g_offering=false;}
if(servermsg_entry[1].indexOf('challenge from')>0&&servermsg_entry[1].indexOf('has expired')>0){g_challenged=false;document.getElementById('b_accept').disabled=true;document.getElementById('b_decline').disabled=true;}
if(servermsg_entry[1].indexOf('challenge from')>0&&servermsg_entry[1].indexOf('has been withdrawn')>0){g_challenged=false;document.getElementById('b_accept').disabled=true;document.getElementById('b_decline').disabled=true;}
if(servermsg_entry[1].indexOf('is playing another gane')>0){g_challenging=false;}
if(servermsg_entry[1].indexOf('challenge to you has been withdrawn')>0){g_challenged=false;document.getElementById('b_accept').disabled=true;document.getElementById('b_decline').disabled=true;}
if(servermsg_entry[1].indexOf('last challenge has been withdrawn')>0){g_challenging=false;}
if(servermsg_entry[1].indexOf('offers a draw')>0){g_draw_offered=true;document.getElementById('b_accept_draw').disabled=false;document.getElementById('b_decline_draw').disabled=false;document.getElementById('b_draw').disabled=true;}
if(servermsg_entry[1].indexOf('declines your draw offer')>0){document.getElementById('b_draw').disabled=false;}
if(servermsg_entry[1].indexOf('opponent interrupted the connection')>0){if(document.getElementById('s_player1').firstChild.firstChild.data==document.getElementById('username').value){resultToNotation(document.getElementById('w_moves'),'1-0');GameOver(this.components[0],'1-0');}else if(document.getElementById('s_player2').firstChild.firstChild.data==document.getElementById('username').value){resultToNotation(document.getElementById('w_moves'),'0-1');GameOver(this.components[0],'0-1');}
this.setup_done=false;}}}
ind1=error.indexOf('game_begin');ind2=error.indexOf('game_end');var string_game=error.substring(ind1+10,ind2);var game_entry=[];if(string_game.indexOf("|")>0){game_entry=string_game.split("|");if(game_entry[5]=='-'){g_playing=true;}else{g_playing=false;}
this.is_black=false;if(document.getElementById('username').value==game_entry[2]){this.is_black=true;}
if(!this.setup_done&&g_playing){this.setup_done=true;this.components[0].disableBoard();if(this.is_black){this.components[0].setupBoard(1);}else{this.components[0].setupBoard(0);}
document.getElementById('s_player1').firstChild.firstChild.data=game_entry[1];document.getElementById('s_player2').firstChild.firstChild.data=game_entry[2];var opts=document.getElementsByTagName('option');var oppo;for(var i=0;i<opts.length;i++){if(opts[i].firstChild.nodeValue==game_entry[1]){oppo=game_entry[1];}else if(opts[i].firstChild.nodeValue==game_entry[2]){oppo=game_entry[2];}}
for(var i=0;i<opts.length;i++){if(opts[i].firstChild.nodeValue==oppo){opts[i].selected="selected";}}
var hours;var minutes;if(game_entry[3]==120){hours=2;minutes=0;}else if(game_entry[3]>60){hours=1;minutes=game_entry[3]-60;}else{hours=0;minutes=game_entry[3];}
if(minutes<10){minutes='0'+minutes;}
document.getElementById('s_clock1').firstChild.data=hours+':'+minutes+':00';document.getElementById('s_clock2').firstChild.data=hours+':'+minutes+':00';this.components[0].increment=game_entry[4];if(g_playing&&this.components[0].color===0){this.components[0].enableBoard(this.components[0].color);}
document.getElementById('buttons_inner_1').style.display='none';document.getElementById('buttons_inner_2').style.display='block';if(this.is_black){document.getElementById('b_claim_win').disabled=false;}else{document.getElementById('b_claim_win').disabled=true;}
document.getElementById('b_accept_draw').disabled=true;document.getElementById('b_decline_draw').disabled=true;document.getElementById('b_resign').disabled=false;document.getElementById('b_draw').disabled=false;document.getElementById('b_reset_ui').disabled=true;document.getElementById('w_moves_frame').style.display='block';document.getElementById('w_offers_frame').style.display='none';document.getElementById('w_players_frame').style.display='none';g_which_clock='white';var time_ref=new Date();var time_ref_ms=time_ref.getTime();g_timer=window.setInterval("tickDown( "+time_ref_ms+" )",100);}}
ind1=error.indexOf('move_begin');ind2=error.indexOf('move_end');var string_move=error.substring(ind1+10,ind2);if(document.getElementById('username').value=='sam'){_console.toConsole(string_move);}
var move_entry=[];if(string_move.indexOf("|")>0){move_entry=string_move.split("|");}
if(string_move.indexOf("|")>0&&!(move_entry[2]==6||move_entry[2]==7)){var src=move_entry[0];var dst=move_entry[1];var moveType=move_entry[2];var idNewPiece=move_entry[3];var msg=move_entry[4];var clock=move_entry[5];var epWhite=move_entry[6];var epBlack=move_entry[7];if(this.components[0].color==1){this.components[0].epBlack=epBlack;}
if(this.components[0].color===0){this.components[0].epWhite=epWhite;}
var play;if(g_which_clock=='white'){ply=1;}
else if(g_which_clock=='black'){ply=2;}
var capture=false;var check=0;if(msg.indexOf('capture')>-1){capture=true;}
if(msg.indexOf('check')>-1){check=1;}
if(msg.indexOf('mate')>-1){g_isMate=true;}
if(msg.indexOf('stalemate')>-1){g_isStalemate=true;}
if(msg.indexOf('draw')>-1){g_isDraw=true;}
this.components[0].displayNotation(capture,check,moveType,idNewPiece,ply,src,dst);if(moveType==1||moveType==5){this.components[0].removePiece(src,1,1);this.components[0].placePiece(dst,idNewPiece,1,2);}else if(moveType==2){this.components[0].movePiece(src,dst,1,1);if(this.components[0].color==1){this.components[0].movePiece(56,59,0,2);}else if(this.components[0].color===0){this.components[0].movePiece(0,3,0,2);}}else if(moveType==3){this.components[0].movePiece(src,dst,1,1);if(this.components[0].color==1){this.components[0].movePiece(63,61,0,2);}else if(this.components[0].color===0){this.components[0].movePiece(7,5,0,2);}}else if(moveType==4){this.components[0].removePiece(src,1,1);this.components[0].placePiece(dst,idNewPiece,1,2);var rowDel=this.components[0].row(src);var colDel=this.components[0].col(dst);this.components[0].removePiece(colDel+8*rowDel,0,3);}
if(g_which_clock=='white'){g_which_clock='black';}
else if(g_which_clock=='black'){g_which_clock='white';}
this.components[0].enableBoard(this.components[0].color);document.getElementById('b_claim_win').disabled=true;if(this.components[0].color===0){document.getElementById('s_clock2').firstChild.nodeValue=clock;}else if(this.components[0].color==1){document.getElementById('s_clock1').firstChild.nodeValue=clock;}}
if(game_entry[6]=='new_result'){this.setup_done=false;resultToNotation(document.getElementById('w_moves'),game_entry[5]);GameOver(this.components[0],game_entry[5]);}
ind1=error.indexOf('pos_begin');ind2=error.indexOf('pos_end');var string_pos=error.substring(ind1+9,ind2);var pos_entry=[];if(string_pos.indexOf("|")>0){pos_entry=string_pos.split("|");g_which_clock=pos_entry[6];if(pos_entry[4]!=this.pos_old){document.getElementById('s_clock1').firstChild.nodeValue=pos_entry[2];document.getElementById('s_clock2').firstChild.nodeValue=pos_entry[3];}
if(!g_kib_timer){var time_ref=new Date();var time_ref_ms=time_ref.getTime();g_kib_timer=window.setInterval("tickDown( "+time_ref_ms+" )",100);this.components[0].clearBoard();this.pos_old=pos_entry[4];}
document.getElementById('s_player1').firstChild.firstChild.nodeValue=pos_entry[0];document.getElementById('s_player2').firstChild.firstChild.nodeValue=pos_entry[1];if(pos_entry[5]=='-'){document.getElementById('s_result').firstChild.nodeValue='- : -';}else{document.getElementById('s_result').firstChild.nodeValue=pos_entry[5];if(g_kib_timer){clearInterval(g_kib_timer);g_kib_timer=null;}}
posToBoard(this.components[0],this.pos_old,pos_entry[4]);this.pos_old=pos_entry[4];}}
Poller.dont_poll=false;},handleError:function(request){Poller.dont_poll=false;Poller.ajaxHelper=null;return;switch(request.status){case 12029:case 12030:case 12031:case 12152:case 12159:if(_DEBUG_){_console.toConsole('handleError: Restoring connection ...');}
var now=new Date();Poller.dont_poll=false;g_poller.sendRequest();Poller.dont_poll=true;break;default:if(_DEBUG_){_console.toConsole("XMLHttpRequest error (poller (2)):");_console.toConsole('rS: '+request.readyState+' s: '+request.status);}}}};
