var Game=new Class({initialize:function(a){this.ids=[0,1,2,3,4,5,6,7,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,-2,-2,-2,-2,-2,10,-2,11,-2,12,-2,13,-2,14,-2,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,16,-2,17,-2,18,-2,19,-2,20,-2,21,-2,-2,-2,-2,-2,22,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,23,24,25,26,27,28,29,30,31];this.colors=[0,0,0,0,0,0,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,-2,-2,-2,-2,-2,0,-2,0,-2,0,-2,0,-2,0,-2,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,-2,1,-2,1,-2,1,-2,1,-2,1,-2,-2,-2,-2,-2,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1];this.types=[5,3,2,1,6,1,2,3,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,-2,-2,-2,-2,-2,4,-2,0,-2,0,-2,0,-2,0,-2,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,-2,0,-2,0,-2,0,-2,0,-2,4,-2,-2,-2,-2,-2,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,3,2,1,6,1,2,3,5];this.generalId=[4,27];this.boardView={};this.piece=[];this.vertex=[];this.hashPieces=[];this.numOfPieces=0;this.container=$(a.piecesContainerId);this.capturedPieces=[];this.timerPieces=[];this.pieceFactory=[function(b,f,d,e,c){return new pragmaticLogic.Pawn(b,f,d,e,c)},function(b,f,d,e,c){return new pragmaticLogic.Guard(b,f,d,e,c)},function(b,f,d,e,c){return new pragmaticLogic.Elephant(b,f,d,e,c)},function(b,f,d,e,c){return new pragmaticLogic.Horse(b,f,d,e,c)},function(b,f,d,e,c){return new pragmaticLogic.Cannon(b,f,d,e,c)},function(b,f,d,e,c){return new pragmaticLogic.Tank(b,f,d,e,c)},function(b,f,d,e,c){return new pragmaticLogic.General(b,f,d,e,c)}];this.DRAGDROP=0;this.POINTCLICK=1;this.moveStyle=0},addPiece:function(a){this.container.appendChild(a)},findLegalMoves:function(a){return this.piece[a].findLegalMoves()},checkAttackingPiece:function(j,k,d,h,c,b){var a=[];var g=[];for(var f=0;f<this.vertex.length;f++){a[f]=this.vertex[f]!=null?this.vertex[f].position:-2;g[f]=this.vertex[f]!=null?this.vertex[f].color:-2}a[k]=a[j];a[j]=-2;g[k]=g[j];g[j]=-2;var e=false;for(var f=0;f<this.hashPieces[d][h].length&&!e;f++){var l=this.hashPieces[d][h][f];if(l.alive&&l.position!=k){e=l.attackGeneral(c,b,a,g)}}return e},checkLegalMove:function(e,b,a){var d=false;for(var c=0;c<a.length;c++){}a.each(function(f){if(f.dest==b){d=true}});return d},isGameOver:function(b){for(var a=0;a<16;a++){var c=this.piece[b*16+a];if(c.alive==true){if(c.findLegalMoves().length>0){return false}}}return true},isChecked:function(c){var a=this.generalId[c];var h=pragmaticLogic.Board.X_LOOKUP[this.piece[a].position];var f=pragmaticLogic.Board.Y_LOOKUP[this.piece[a].position];var g=[];var e=[];for(var b=0;b<this.vertex.length;b++){g[b]=this.vertex[b]!=null?this.vertex[b].position:-2;e[b]=this.vertex[b]!=null?this.vertex[b].color:-2}c=(c==0?1:0);for(var b=0;b<16;b++){var d=this.piece[c*16+b];if(d.alive==true&&d.attackGeneral(h,f,g,e)){return true}}return false},showPieces:function(a){this.container.setStyle("visibility",a?"visible":"hidden")},showSideBar:function(a){$("computerOppSideBar").setStyle("display",a?"block":"none")},getIds:function(){var a=[];this.vertex.each(function(c,b){if(c!=null){a.push(c.type)}else{a.push(7)}});return a},getColors:function(){var a=[];this.vertex.each(function(c,b){if(c!=null){a.push(c.color)}else{a.push(7)}});return a},getPiece:function(a){return this.piece[a]},makeMove:function(b,c,a){if(this.opponent!=null&&this.gameState!=this.NOGAME){this.updateBoard(b,c,a)}},updateBoard:function(e,d,a){var c=false;if(this.vertex[a]==null){this.vertex[a]=this.piece[e]}else{var b=this.vertex[a];b.die();this.showCapturedPiece(b);this.vertex[a]=this.piece[e]}this.vertex[d]=null;this.piece[e].moveToPos(a);return c},showCapturedPiece:function(b){var a=new pragmaticLogic.CapturedPiece(b.type,b.color,b.id,b.set);this.capturedPieces.push(a);a.render()},getGameId:function(){return this.gameId},setupPieces:function(){for(var h=0;h<2;h++){this.hashPieces[h]=[];for(var a=0;a<=6;a++){this.hashPieces[h][a]=[]}}var f=Cookie.read("sets");var g=["set2","set1"];if(f!=null){g=f.split(",")}var d=0;for(var e=0,d=0;e<this.ids.length;e++){if(this.ids[e]!=-2){this.piece[d]=this.pieceFactory[this.types[e]](e,this.ids[e],this.colors[e],g[this.colors[e]],this);this.vertex[e]=this.piece[d];this.hashPieces[this.colors[e]][this.types[e]].push(this.piece[d]);d++}else{this.vertex[e]=null}}this.numOfPieces=d;for(var e=0;e<this.numOfPieces;e++){this.piece[e].render()}if(pragmaticLogic.TimerPiece!=null){var c=["opponent_time_img","self_time_img"];var b=["opponent_vs_img","self_vs_img"];for(var e=0;e<c.length;e++){this.timerPieces.push(new pragmaticLogic.TimerPiece(e,g[e],c[e]))}for(var e=0;e<b.length;e++){this.timerPieces.push(new pragmaticLogic.TimerPiece(e,g[e],b[e]))}}},reset:function(){for(var b=0;b<this.numOfPieces;b++){this.piece[b].reset()}for(var b=0,a=0;b<this.ids.length;b++){if(this.ids[b]!=-2){this.vertex[b]=this.piece[a];a++}else{this.vertex[b]=null}}},changeSet:function(c){Cookie.write("sets",c[0]+","+c[1],{duration:735});for(var a=0;a<this.numOfPieces;a++){var b=this.piece[a];b.changeSet(c[b.color])}this.capturedPieces.each(function(d,e){d.changeSet(c[d.color])});this.timerPieces.each(function(d,e){d.changeSet(c[d.color])})}});