Advertisement
Guest User

Untitled

a guest
Dec 1st, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 61.33 KB | None | 0 0
  1. var Duraks = {
  2.  
  3. rpc:new RPC( '/games/duraks/app.php' ),
  4.  
  5. init:function(){
  6. this.node = document.getElementById( 'DuraksContent' );
  7. this.node.onselectstart = function(){
  8. return false;
  9. };
  10. var buf = '';
  11. this.s = new Socket( {
  12. //debug:this.DEV,
  13. connectTimeout:30000,
  14. host:this.host,
  15. port:this.port,
  16.  
  17. onInit:function(){
  18. var $s = this;
  19. Duraks.layers.intro();
  20. Duraks.layers.intro.status.innerHTML = 'Ielādē attēlus...';
  21. Duraks.loadImages( {
  22. onload:function(){
  23. Duraks.layers.intro.progress.style.display = 'none';
  24. //setTimeout( function(){
  25. Duraks.layers.intro.status.innerHTML = 'Pieslēdzas serverim...';
  26. $s.connect();
  27. //}, 1000 );
  28. }
  29. } );
  30. },
  31.  
  32. onConnect:function(){
  33. clearTimeout( this.reconnectTimeout );
  34. Duraks.send( 'auth', {
  35. uid:Duraks.auth.uid,
  36. name:Duraks.auth.name,
  37. icon:Duraks.auth.icon,
  38. t:Duraks.auth.t,
  39. h:Duraks.auth.h
  40. } );
  41. var refOnline = function(){
  42. Duraks.rp.online();
  43. };
  44. Duraks.onlineInterval = setInterval( refOnline, Duraks.DEV ? 20000 : 10000 );
  45. refOnline();
  46. },
  47.  
  48. onRecv:function(v){
  49. buf += v;
  50. var a = buf.split('\1');
  51. for( var i = 0; i < a.length - 1; ++ i ){
  52. Duraks.onRecvJSON( JSON.decode( a[i] ) );
  53. }
  54. buf = a[ a.length - 1 ];
  55. },
  56.  
  57. onDisconnect:function(){
  58. clearInterval( Duraks.onlineInterval );
  59. Duraks.layers.intro();
  60. Duraks.layers.intro.status.innerHTML = 'Neizdevās pieslēgties serverim!';
  61. this.reconnectTimeout = setTimeout( function(){
  62. Duraks.layers.intro.status.innerHTML = 'Pieslēdzas serverim atkārtoti...';
  63. Duraks.s.connect();
  64. }, 1500 );
  65. }
  66. } );
  67. },
  68.  
  69. onRecvJSON:function( data ){
  70. if( this.DEV ){
  71. D.console.info( 'recv: ', data );
  72. }
  73. if( typeof data == 'object' && data.m ){
  74. if( ! Duraks.rp[ '_' + data.m ] ){
  75. D.console.error( 'Undefined method: _' + data.m );
  76. return;
  77. }
  78. try{
  79. Duraks.rp[ '_' + data.m ]( data.d );
  80. } catch(e){
  81. D.console.error( e.name + ': ' + e.message + '@' + e.fileName + ' ' + e.lineNumber );
  82. if( e.stack ){
  83. D.console.info( e.stack );
  84. }
  85. }
  86. }
  87. },
  88.  
  89. sendJSON:function( data ){
  90. if( this.DEV ){
  91. D.console.info( 'send: ', data );
  92. }
  93. return this.s.send( JSON.encode( data ) + String.fromCharCode(1) + "\n" );
  94. },
  95.  
  96. send:function( method, data ){
  97. return this.sendJSON( {
  98. m:method,
  99. d:data || {}
  100. } );
  101. },
  102.  
  103. loadImages:function( par ){
  104. var images = [
  105. 'bg_intro.png',
  106. 'header.png',
  107. 'bg.jpg',
  108. 'bg_button.png',
  109. 'op40.png',
  110. 'top.png',
  111. 'games.png',
  112. 'bg_msg.png',
  113. 'kava.png',
  114. 'bg_count.png',
  115. 'bg_ucount.png',
  116. '52.png',
  117. '52d.png',
  118. 'send.png',
  119. 'sendd.png',
  120. 'priv.png',
  121. 'privd.png',
  122. 'vip.png',
  123. 'vipd.png',
  124. 'players.png',
  125. 'create_game_button.png',
  126. 'vip_big.png',
  127. 'vip_small.png'
  128. ];
  129. for( var k in images ){
  130. images[ k ] = Duraks.PIMG + 'games/duraks/img/' + images[ k ];
  131. }
  132. for( var i = 0; i < 4; i ++ ){
  133. for( var j = 2; j <= 14; j ++ ){
  134. images.push( Duraks.cardImg( { suit:i, v:j } ) )
  135. }
  136. }
  137. for( var k in D.smileys ){
  138. //images.push( D.smileys[ k ] );
  139. }
  140. for( var k in this.skinImgs ){
  141. images.push( Duraks.PIMG + 'games/duraks/img/bg/' + this.skinImgs[k] );
  142. images.push( Duraks.PIMG + 'games/duraks/img/bg/icon_' + this.skinImgs[k] );
  143. }
  144. var loaded = 0;
  145. var onload = function(){
  146. loaded ++;
  147. if( loaded == images.length ){
  148. par.onload();
  149. }
  150. Duraks.layers.intro.progressC.style.width = Math.round( loaded / images.length * 100 ) + '%';
  151. if( Duraks.DEV ){
  152. //D.console.info( this.src );
  153. }
  154. };
  155. for( var k in images ){
  156. var img = mkE( {
  157. tag:'img',
  158. prop:{
  159. onload:onload
  160. },
  161. style:{
  162. width:'1px',
  163. height:'1px',
  164. visibility:'hidden'
  165. }
  166. } ).append( document.body );
  167. img.src = images[ k ];
  168. }
  169. },
  170. skinImgs:{
  171. 1:'a4ea93.jpg',
  172. 2:'b5af9c.jpg',
  173. 3:'c8f6b0.jpg',
  174. 4:'cee4f2.jpg',
  175. 5:'d0d0d0.jpg',
  176. 6:'d896df.jpg',
  177. 7:'dbabaf.jpg',
  178. 8:'e0e0c7.jpg',
  179. 9:'f6ede0.jpg',
  180. 10:'f7f7f7.jpg',
  181. 11:'ffc98b.jpg'
  182. },
  183. memberColors:[ '#8d3571', '#007f00', '#246ea0', '#00867b', '#c01b20' ],
  184. members:{},
  185.  
  186. rp:{
  187.  
  188. online:function(){
  189. Duraks.send( 'online', {} );
  190. },
  191.  
  192. _online:function( re ){
  193. if( !Duraks.layers.games.node ){
  194. return;
  195. }
  196. Duraks.layers.games.online.innerHTML = 'Online: ' + re.count;
  197. Duraks.layers.games.gameCount.innerHTML = 'Spēles: ' + re.games;
  198. if( ! Duraks.layers.game.node ){
  199. return;
  200. }
  201. Duraks.layers.game.online.innerHTML = 'Online: ' + re.count;
  202. Duraks.layers.game.gameCount.innerHTML = 'Spēles: ' + re.games;
  203. },
  204.  
  205. _ugames:function( re ){ // nesāktās spēles
  206. Duraks.layers.games();
  207. clearNode( Duraks.layers.games.listNode );
  208. for( var k in re.games ){
  209. Duraks.layers.games.items[ re.games[ k ].id ] = Duraks.gameItem( re.games[ k ] ).append( Duraks.layers.games.listNode );
  210. }
  211. },
  212.  
  213. _ugame:function( re ){
  214. Duraks.layers.games();
  215. var node = Duraks.gameItem( re );
  216. if( Duraks.layers.games.items[ re.id ] ){
  217. D.insertBefore( node, Duraks.layers.games.items[ re.id ] );
  218. Duraks.layers.games.items[ re.id ].remove();
  219. delete Duraks.layers.games.items[ re.id ];
  220. } else {
  221. node.append( Duraks.layers.games.listNode );
  222. }
  223. Duraks.layers.games.items[ re.id ] = node;
  224. },
  225.  
  226. _ugameRemove:function( re ){
  227. if( ! Duraks.layers.games.items[ re.id ] ){
  228. return;
  229. }
  230. Duraks.layers.games.items[ re.id ].remove();
  231. delete Duraks.layers.games.items[ re.id ];
  232. },
  233.  
  234. _auth:function( re ){
  235. if( re.error ){
  236. switch( re.error ){
  237. case 'Session':
  238. Duraks.infoBox.show( {
  239. text:'Tev jau ir atvērta spēle citā logā!'
  240. } );
  241. break;
  242. }
  243. return;
  244. }
  245. Duraks.layers.games();
  246. if( re.vip ){
  247. Duraks.vip = true;
  248. removeClassName( Duraks.layers.games.create.vipIcon, 'DuraksVipDIcon' );
  249. removeClassName( Duraks.layers.games.create.privIcon, 'DuraksPrivDIcon' );
  250. removeClassName( Duraks.layers.games.create.skinIcon, 'DuraksSkinDIcon' );
  251. Duraks.layers.games.create.skin._disable(false);
  252. Duraks.layers.games.create.vip.disabled = false;
  253. Duraks.layers.games.create.password.disabled = false;
  254. Duraks.layers.games.create.vip.title = 'Tikai VIP istabās tiek uzskaitīts reitings,<br /> un tajās var piedalīties tikai VIP konta īpašnieki.';
  255. if( !Duraks.DEV ){
  256. Duraks.layers.games.buyVIPNode.style.display = 'none';
  257. }
  258. Duraks.layers.games.profileVIPNode.style.display = '';
  259. //Duraks.layers.games.rateNode.innerHTML = 'Tavs reitings: ' + re.rate;
  260. Duraks.restoreSkin();
  261. } else {
  262. //Duraks.layers.games.rateNode.innerHTML = 'Tavs reitings: tikai VIP';
  263. }
  264. Duraks.showTop();
  265. clearTimeout( Duraks.onlineInterval );
  266. Duraks.onlineInterval = setInterval( function(){ Duraks.rp.online(); }, Duraks.DEV ? 20000 : 10000 );
  267. Duraks.rp.online();
  268. },
  269.  
  270. create:function( par ){
  271. Duraks.send( 'create', {
  272. memberCount:Number( Duraks.layers.games.create.count._value() ),
  273. pass:Duraks.layers.games.create.pass.checked,
  274. '52':Duraks.layers.games.create[ '52' ].checked,
  275. vip:Duraks.layers.games.create.vip.checked,
  276. priv:Duraks.layers.games.create.password.value,
  277. skin:Duraks.layers.games.create.skin._value()
  278. } );
  279. },
  280.  
  281. _create:function( re ){
  282. if( re.countLimit ){
  283. Duraks.infoBox.show( {
  284. text:'Dienas limits: 10 bezmaksas spēles, ja vēlies turpināt - abonē VIP',
  285. buttons:[
  286. {
  287. caption:'Aizvērt',
  288. onclick:function(){
  289. Duraks.infoBox.close();
  290. }
  291. },
  292. {
  293. caption:'Pirkt VIP',
  294. onclick:function(){
  295. parent.D.pb('duraks_vip');
  296. }
  297. }
  298. ]
  299. } );
  300. return;
  301. }
  302. if( re.ban ){
  303. Duraks.infoBox.show( {
  304. text:'Par spēles pamešanu vai kavēšanu tev ir liegums spēlēt: ' + ( re.ban > 60 ? Math.round( re.ban / 60 ) + ' m' : re.ban + ' s' ),
  305. buttons:[
  306. {
  307. caption:'Aizvērt',
  308. onclick:function(){
  309. Duraks.infoBox.close();
  310. }
  311. }
  312. ]
  313. } );
  314. return;
  315. }
  316. },
  317.  
  318. join:function( par ){
  319. Duraks.send( 'join', par );
  320. },
  321.  
  322. joinInfoBox:function( re ){
  323. var buttons = [];
  324. if( re.cid == Duraks.auth.uid && re.memberCount > 1 ){
  325. buttons.push(
  326. {
  327. caption:'Sākt',
  328. onclick:function(){
  329. Duraks.send( 'start', {} );
  330. }
  331. }
  332. );
  333. }
  334. buttons.push( {
  335. caption:'Aizvērt',
  336. onclick:Duraks.rp.leave
  337. } );
  338. Duraks.infoBox.show( {
  339. text:'Spēle sāksies, kad pieteiksies visi dalībnieki! ' + '(' + re.memberCount + '/' + re.count + ')',
  340. buttons:buttons
  341. } );
  342. },
  343.  
  344. _join:function( re ){
  345. if( re.ban ){
  346. Duraks.infoBox.show( {
  347. text:'Par spēles pamešanu vai kavēšanu tev ir liegums spēlēt: ' + ( re.ban > 60 ? Math.round( re.ban / 60 ) + ' min' : re.ban + ' s' ),
  348. buttons:[
  349. {
  350. caption:'Aizvērt',
  351. onclick:function(){
  352. Duraks.infoBox.close();
  353. }
  354. }
  355. ]
  356. } );
  357. return;
  358. }
  359. if( re.countLimit ){
  360. Duraks.infoBox.show( {
  361. text:'Dienas limits: 10 bezmaksas spēles, ja vēlies turpināt - abonē VIP',
  362. buttons:[
  363. {
  364. caption:'Aizvērt',
  365. onclick:function(){
  366. Duraks.infoBox.close();
  367. }
  368. },
  369. {
  370. caption:'Pirkt VIP',
  371. onclick:function(){
  372. parent.D.pb('duraks_vip');
  373. }
  374. }
  375. ]
  376. } );
  377. return;
  378. }
  379. if( re.error ){
  380. switch( re.error ){
  381. case 'VIP':
  382. Duraks.infoBox.show( {
  383. text:'Spēlē var piedalīties tikai VIP spēlētāji!',
  384. buttons:[
  385. {
  386. caption:'Aizvērt',
  387. onclick:function(){
  388. Duraks.infoBox.close();
  389. }
  390. },
  391. {
  392. caption:'Pirkt VIP',
  393. onclick:function(){
  394. parent.D.pb( 'duraks_vip' );
  395. }
  396. }
  397. ]
  398. } );
  399. break;
  400. }
  401. return;
  402. }
  403. if( re.password ){
  404. var input;
  405. Duraks.infoBox.show( {
  406. text:'?ī ir privāta istaba!',
  407. beforeButtons:mkE( {
  408. tag:'center',
  409. id:'DuraksInfoBoxPassword',
  410. els:[
  411. mkE( {
  412. tag:'span',
  413. text:'Parole: '
  414. } ),
  415. input = mkE( {
  416. tag:'input',
  417. prop:{
  418. type:'password'
  419. }
  420. } )
  421. ]
  422. } ),
  423. buttons:[
  424. {
  425. caption:'Aizvērt',
  426. onclick:function(){
  427. Duraks.infoBox.close();
  428. }
  429. },
  430. {
  431. caption:'Pievienoties',
  432. onclick:function(){
  433. Duraks.infoBox.close();
  434. Duraks.rp.join( {
  435. id:re.id,
  436. password:input.value
  437. } )
  438. }
  439. }
  440. ]
  441. } );
  442. input.focus();
  443. return;
  444. }
  445. if( re.id > 0 ){
  446. Duraks.layers.game();
  447. if( Duraks.gameId != re.id ){
  448. clearNode( Duraks.layers.game.members );
  449. clearNode( Duraks.layers.game.chatItems );
  450. clearNode( Duraks.layers.game.tableCards );
  451. Duraks.layers.game.cardCountNode.style.display = 'none';
  452. Duraks.layers.game.suitImg.style.display = 'none';
  453. Duraks.layers.game.trumpImg.style.display = 'none';
  454. Duraks.layers.game.userCards.style.display = 'none';
  455. Duraks.layers.game.w52Node.style.display = 'none';
  456. Duraks.layers.game.passNode.style.display = 'none';
  457. Duraks.layers.game.vipNode.style.display = 'none';
  458. Duraks.layers.game.timerNode.style.display = 'none';
  459. Duraks.gameId = re.id;
  460. }
  461. Duraks.node.className = 'skin' + re.skin;
  462. this.joinInfoBox( re );
  463. Duraks.members[ re.user.uid ] = re.user;
  464. if( re.user.uid != Duraks.auth.uid ){
  465. Duraks.chatItem( {
  466. name:re.user.name,
  467. text:' pievienojās spēlei!'
  468. } );
  469. }
  470. }
  471. },
  472.  
  473. _unjoin:function( re ){
  474. if( re.user.uid == Duraks.auth.uid ){
  475. Duraks.restoreSkin();
  476. }
  477. Duraks.chatItem( {
  478. name:re.user.name,
  479. text:' pamet spēli'
  480. } );
  481. switch( re.status ){
  482. case 's':
  483. this.joinInfoBox( re );
  484. break;
  485. case 'e':
  486. if( ! re.statusChange ){
  487. return;
  488. }
  489. Duraks.infoBox.show( {
  490. text:'Spēle beidzās, jo ' + re.user.name + ' pameta spēli!',
  491. buttons:[
  492. {
  493. caption:'Aizvērt',
  494. onclick:Duraks.rp.leave
  495. }
  496. ]
  497. } );
  498. break;
  499. }
  500. Duraks.showTop();
  501. Duraks.updateAch();
  502. },
  503.  
  504. leave:function(){
  505. Duraks.send( 'leave', {} );
  506. },
  507.  
  508. _leave:function( re ){
  509. Duraks.restoreSkin();
  510. /*
  511. if( Duraks.vip ){
  512. Duraks.layers.games.rateNode.innerHTML = 'Tavs reitings: ' + re.rate;
  513. } else {
  514. Duraks.layers.games.rateNode.innerHTML = 'Tavs reitings: tikai VIP';
  515. }*/
  516. Duraks.showTop();
  517. },
  518.  
  519. _start:function( re ){
  520. Duraks.infoBox.close();
  521. Duraks.start = true;
  522. Duraks.trumpSuit = re.trump.suit;
  523. Duraks.layers.game.suitImg.src = Duraks.suitCardImg( re.trump.suit );
  524. Duraks.layers.game.suitImg.style.display = '';
  525. Duraks.layers.game.trumpImg.src = Duraks.cardImg( re.trump );
  526. Duraks.layers.game.trumpImg.style.display = '';
  527. Duraks.layers.game.userCards.style.display = '';
  528. Duraks.layers.game.w52Node.style.display = '';
  529. Duraks.layers.game.timerNode.style.display = '';
  530. if( re.game.w52 ){
  531. removeClassName( Duraks.layers.game.w52Node, 'Duraks52DIcon' );
  532. } else {
  533. addClassName( Duraks.layers.game.w52Node, 'Duraks52DIcon' );
  534. }
  535. Duraks.layers.game.passNode.style.display = '';
  536. if( re.game.pass ){
  537. removeClassName( Duraks.layers.game.passNode, 'DuraksPassDIcon' );
  538. } else {
  539. addClassName( Duraks.layers.game.passNode, 'DuraksPassDIcon' );
  540. }
  541. Duraks.layers.game.vipNode.style.display = '';
  542. if( re.game.vip ){
  543. removeClassName( Duraks.layers.game.vipNode, 'DuraksVipDIcon' );
  544. } else {
  545. addClassName( Duraks.layers.game.vipNode, 'DuraksVipDIcon' );
  546. }
  547. var tr;
  548. clearNode( Duraks.layers.game.members );
  549. mkE( {
  550. tag:'table',
  551. prop:{
  552. cellSpacing:'0'
  553. },
  554. els:[
  555. mkE( {
  556. tag:'tbody',
  557. els:[
  558. tr = mkE( {
  559. tag:'tr'
  560. } )
  561. ]
  562. } )
  563. ]
  564. } ).append( Duraks.layers.game.members );
  565. Duraks.members = {};
  566. for( var k in re.members ){
  567. var member = re.members[ k ];
  568. member.color = Duraks.memberColors[ k ];
  569. mkE( {
  570. tag:'td',
  571. prop:{
  572. align:'center'
  573. },
  574. els:[
  575. mkE( {
  576. tag:'div',
  577. className:'DuraksGameUser',
  578. style:{
  579. color:member.color
  580. },
  581. els:[
  582. mkE( {
  583. tag:'div',
  584. className:'DuraksBoxBorderRadius DuraksBox',
  585. els:[
  586. mkE( {
  587. tag:'img',
  588. src:member.icon,
  589. prop:{
  590. _drMember:member,
  591. onclick:function(){
  592. Duraks.showAch( this._drMember.uid );
  593. }
  594. }
  595. } ),
  596. member.cardCount = mkE( {
  597. tag:'div',
  598. className:'DuraksGameUserCount',
  599. els:[
  600. member.cardCountNode = mkE( {
  601. tag:'div'
  602. } )
  603. ]
  604. } )
  605. ]
  606. } ),
  607. mkE( {
  608. tag:'a',
  609. className:'DuraksGameUserN',
  610. text:re.members[ k ].name,
  611. prop:{
  612. href:'/user/' + member.uid,
  613. target:'_blank'
  614. }
  615. } ),
  616. member.iet = mkE( {
  617. tag:'div',
  618. className:'DuraksGameUserInfo DuraksGameUserIet',
  619. text:'Iet'
  620. } ),
  621. member.sit = mkE( {
  622. tag:'div',
  623. className:'DuraksGameUserInfo DuraksGameUserSit',
  624. text:'Sit'
  625. } ),
  626. member.pacel = mkE( {
  627. tag:'div',
  628. className:'DuraksGameUserInfo DuraksGameUserPacel',
  629. text:'Paceļ'
  630. } )
  631. ]
  632. } ) // .DuraksGameUser
  633. ]
  634. } ).append( tr );
  635. member.iet.style.display = 'none';
  636. member.sit.style.display = 'none';
  637. member.pacel.style.display = 'none';
  638. Duraks.members[ re.members[ k ].uid ] = member;
  639. }
  640. },
  641.  
  642. sendMsg:function(text){
  643. text = String(text ).replace( /^\s+|\s+$/g, '' );
  644. if(!text){
  645. return;
  646. }
  647. Duraks.send( 'sendMsg', { text:text } );
  648. },
  649.  
  650. _sendMsg:function( re ){
  651. },
  652.  
  653. _msg:function( re ){
  654. var name = Duraks.auth.uid == re.uid ? 'Es' : Duraks.members[ re.uid ].name;
  655. var color = Duraks.members[ re.uid ] ? Duraks.members[ re.uid ].color : '';
  656. Duraks.chatItem( {
  657. name:name,
  658. text:re.text,
  659. color:color,
  660. tp:( Duraks.auth.uid != re.uid ),
  661. id:re.id
  662. } );
  663. Duraks.layers.game.chatItems.scrollTop = Duraks.layers.game.chatItems.scrollHeight;
  664. },
  665.  
  666. _infoMsg:function( re ){
  667. var me = Duraks.auth.uid == re.uid;
  668. var name = me ? 'Es' : Duraks.members[ re.uid ].name;
  669. var color = Duraks.members[ re.uid ] ? Duraks.members[ re.uid ].color : '';
  670. switch( re.type ){
  671. case 'iet':
  672. Duraks.chatItem( {
  673. name:name,
  674. text:( me ? 'eju ar ' : 'iet ar ' ) + Duraks.cardText( re.card ),
  675. color:color
  676. } );
  677. break;
  678. case 'sit':
  679. Duraks.chatItem( {
  680. name:name,
  681. text:( me ? 'situ ar ' : 'sit ar ' ) + Duraks.cardText( re.card ),
  682. color:color
  683. } );
  684. break;
  685. case 'pievieno':
  686. Duraks.chatItem( {
  687. name:name,
  688. text:( me ? 'pievienoju ' : 'pievieno ' ) + Duraks.cardText( re.card ),
  689. color:color
  690. } );
  691. break;
  692. case 'pacel':
  693. Duraks.start = true;
  694. Duraks.chatItem( {
  695. name:name,
  696. text:( me ? ' paceļu galda kārtis' : ' paceļ galda kārtis' ),
  697. color:color
  698. } );
  699. if( Duraks.auth.uid == re.uid ){
  700. Duraks.start = true;
  701. break;
  702. }
  703. Duraks.tableMsg( {
  704. text:name + ' paceļ galda kārtis!',
  705. timeout:3000
  706. } );
  707. break;
  708. case 'pass':
  709. Duraks.chatItem( {
  710. name:name,
  711. text:( me ? ' padodu tālāk ar ' : ' padod tālāk ar ' ) + Duraks.cardText( re.card ),
  712. color:color
  713. } );
  714. if( Duraks.auth.uid == re.uid ){
  715. break;
  716. }
  717. if( re.next ){
  718. var text = name + ' padod Tev!';
  719. } else {
  720. var text = name + ( me ? ' padodu tālāk!' : ' padod tālāk!' );
  721. }
  722. Duraks.tableMsg( {
  723. text:text
  724. } );
  725. break;
  726. }
  727. },
  728.  
  729. _cards:function( re ){
  730. Duraks.layers.game();
  731. Duraks.layers.game.timerV = 30;
  732. /*
  733. if( re.current && ! re.next && re.table.length == 0 ){
  734. Duraks.tableMsg( {
  735. text:'Tev jāiet!'
  736. } );
  737. }
  738. if( re.next && ! re.current && re.table.length == 1 && re.undoted == 1 ){
  739. Duraks.tableMsg( {
  740. text:'Tev jāsit!'
  741. } );
  742. }*/
  743. if( empty( re.table ) ){
  744. clearTimeout( Duraks.takeUpTimeout );
  745. delete Duraks.takeUpTimeout;
  746. }
  747. var drawUserCards = function(){
  748. Duraks.layers.game.youCurrent.style.display = ( re.current && ! re.next ? '' : 'none' );
  749. Duraks.layers.game.youNext.style.display = ( re.next && ! re.current ? '' : 'none' );
  750. Duraks.layers.game.takeUp.style.display = ( ! Duraks.takeUpTimeout && re.next && re.table.length ? '' : 'none' );
  751. var showDotedButton = re.canAdd && ! re.undoted && ! re.done;
  752. Duraks.layers.game.done.style.display = ( showDotedButton ? '' : 'none' );
  753. clearTimeout( Duraks.dotedTimer );
  754. if( showDotedButton ){
  755. Duraks.dotedTimer = setTimeout( function(){
  756. Duraks.layers.game.done.onclick();
  757. }, 30 * 1000 );
  758. }
  759. Duraks.layers.game.kava.style.display = ( re.cardCount > 1 ? '' : 'none' );
  760. Duraks.layers.game.trump.style.display = ( re.cardCount > 0 ? '' : 'none' );
  761. Duraks.layers.game.cardCount.innerHTML = re.cardCount;
  762. Duraks.layers.game.cardCountNode.style.display = '';
  763. clearNode( Duraks.layers.game.userCards );
  764. var card, cardNode;
  765. var cards = Duraks.sortCards( re.user );
  766. var allNew = true;
  767. for( var k in cards ){
  768. if( ! cards[ k ].n ){
  769. allNew = false;
  770. break;
  771. }
  772. }
  773. for( var k in cards ){
  774. card = cards[ k ];
  775. cardNode = mkE( {
  776. tag:'div',
  777. className:'DuraksGameCard',
  778. prop:{
  779. _card:card,
  780. onclick:function(){
  781. Duraks.rp.addTableCard( this._card );
  782. }
  783. },
  784. els:[
  785. mkE( {
  786. tag:'img',
  787. prop:{
  788. src:Duraks.cardImg( card )
  789. }
  790. } )
  791. ]
  792. } ).append( Duraks.layers.game.userCards );
  793. if( k > 0 && cards.length > 3 ){
  794. cardNode.style.marginLeft = '-' + ( 136 - ( 340 / ( cards.length - 1 ) ) ) + 'px';
  795. }
  796. if( ! allNew && card.n ){
  797. cardNode.style.marginTop = '-15px';
  798. }
  799. }
  800. for( var k in Duraks.members ){
  801. Duraks.members[ k ].sit.style.display = 'none';
  802. Duraks.members[ k ].iet.style.display = 'none';
  803. }
  804. if( re.currentUid != re.nextUid ){
  805. if( Duraks.members[ re.currentUid ] ){
  806. Duraks.members[ re.currentUid ].iet.style.display = '';
  807. }
  808. if( Duraks.members[ re.nextUid ] ){
  809. Duraks.members[ re.nextUid ].sit.style.display = '';
  810. }
  811. }
  812. for( var k in re.counts ){
  813. if( ! Duraks.members[ k ] ){
  814. continue;
  815. }
  816. if( re.cardCount || re.counts[ k ] ){
  817. Duraks.members[ k ].cardCountNode.innerHTML = re.counts[ k ];
  818. Duraks.members[ k ].cardCount.style.display = '';
  819. } else {
  820. Duraks.members[ k ].cardCount.style.display = 'none';
  821. }
  822. }
  823. delete drawUserCards;
  824. }; // drawUserCards = function
  825. if( count( re.user ) > 12 ){
  826. addClassName( Duraks.layers.game.userCards, 'DuraksGameUserCardsH' );
  827. } else {
  828. removeClassName( Duraks.layers.game.userCards, 'DuraksGameUserCardsH' );
  829. }
  830. if( re.table.length || Duraks.start ){
  831. clearTimeout( Duraks.clearTableTimeout );
  832. clearNode( Duraks.layers.game.tableCards );
  833. drawUserCards();
  834. } else {
  835. Duraks.clearTableTimeout = setTimeout( function(){
  836. clearNode( Duraks.layers.game.tableCards );
  837. drawUserCards();
  838. }, 2000 );
  839. }
  840. var card;
  841. for( var k in re.table ){
  842. card = re.table[ k ][ 'd' ];
  843. mkE( {
  844. tag:'div',
  845. className:'DuraksGameCard',
  846. prop:{
  847. _card:card
  848. },
  849. els:[
  850. mkE( {
  851. tag:'img',
  852. prop:{
  853. src:Duraks.cardImg( card )
  854. }
  855. } )
  856. ]
  857. } ).append( Duraks.layers.game.tableCards );
  858. card = re.table[ k ][ 'u' ];
  859. if( card ){
  860. mkE( {
  861. tag:'div',
  862. className:'DuraksGameCard DuraksGameCardU',
  863. prop:{
  864. _card:card
  865. },
  866. els:[
  867. mkE( {
  868. tag:'img',
  869. prop:{
  870. src:Duraks.cardImg( card )
  871. }
  872. } )
  873. ]
  874. } ).append( Duraks.layers.game.tableCards );
  875. }
  876. }
  877. Duraks.start = false;
  878. },
  879.  
  880. addTableCard:function( card ){
  881. Duraks.send( 'addTableCard', { card:card, checkPass:true } );
  882. },
  883.  
  884. _addTableCard:function( re ){
  885. if( re.canPassOrAdd ){
  886. Duraks.infoBox.show( {
  887. text:'Tev ir iespēja:',
  888. buttons:[
  889. {
  890. caption:'Sist',
  891. onclick:function(){
  892. Duraks.send( 'addTableCard', { card:re.canPassOrAdd } );
  893. Duraks.infoBox.close();
  894. }
  895. },
  896. {
  897. caption:'Padot',
  898. onclick:function(){
  899. Duraks.send( 'pass', { card:re.canPassOrAdd } );
  900. Duraks.infoBox.close();
  901. }
  902. }
  903. ]
  904. } );
  905. }
  906. },
  907.  
  908. _doted:function(){
  909. setTimeout( function(){
  910. Duraks.tableMsg( {
  911. text:'Sists!'
  912. } );
  913. }, 1000 );
  914. },
  915.  
  916. takeUp:function(){
  917. Duraks.send( 'takeUp', {} );
  918. clearTimeout( Duraks.takeUpTimeout );
  919. Duraks.takeUpTimeout = setTimeout( function(){
  920. Duraks.send( 'doTakeUp', {} );
  921. }, 3000 );
  922. },
  923.  
  924. _takeUp:function(){
  925. },
  926.  
  927. setDone:function( v ){
  928. Duraks.send( 'setDone', { v:v } );
  929. },
  930.  
  931. _end:function( re ){
  932. var buttons = [
  933. {
  934. caption:'Aizvērt',
  935. onclick:Duraks.rp.leave
  936. }
  937. ];
  938. var beforeButtons = false;
  939. if( !empty( re.rate ) ){
  940. beforeButtons = mkE( {
  941. tag:'center',
  942. text:'Tu saņem: ' + re.rate + ' punktu'
  943. } );
  944. }
  945. if( Duraks.members[ re.looser ] ){
  946. Duraks.infoBox.show( {
  947. text:'Zaudēja: ' + Duraks.members[ re.looser ].name + '!',
  948. buttons:buttons,
  949. beforeButtons:beforeButtons
  950. } );
  951. } else {
  952. Duraks.infoBox.show( {
  953. text:'Tu zaudēji!',
  954. buttons:buttons
  955. //beforeButtons:beforeButtons
  956. } );
  957. }
  958. },
  959.  
  960. _win:function(re){
  961. var buttons = [
  962. {
  963. caption:'Aizvērt',
  964. onclick:Duraks.rp.leave
  965. }
  966. ];
  967. var text = 'Uzvarēji! ';
  968. if( re.rate ){
  969. text += 'Tu saņem 1 punktu.'
  970. }
  971. if( re.limit ){
  972. text += '?ajā kategroijā šonedēļ Tu vairs nevari saņemt punktus.';
  973. }
  974. Duraks.infoBox.show( {
  975. text:text,
  976. buttons:buttons
  977. } );
  978. }
  979. }, // rp
  980.  
  981. sortCards:function( cards ){
  982. var re = [];
  983. for( var k in cards ){
  984. re.push( cards[ k ] );
  985. }
  986. re.sort( Duraks.sortCardsFn );
  987. return re;
  988. },
  989.  
  990. sortCardsFn:function( c1, c2 ){
  991. var c1v = c1.v + ( c1.suit == Duraks.trumpSuit ? 100 : 0 );
  992. var c2v = c2.v + ( c2.suit == Duraks.trumpSuit ? 100 : 0 );
  993. if( c1v > c2v ){
  994. return 1;
  995. } else if( c1v < c2v ){
  996. return -1;
  997. }
  998. return 0;
  999. },
  1000.  
  1001. cardImg:function( card ){
  1002. var re = Duraks.PIMG + 'games/duraks/img/cards/';
  1003. if( card.v < 11 ){
  1004. re += card.v;
  1005. } else {
  1006. switch( card.v ){
  1007. case 11:
  1008. re += 'J';
  1009. break;
  1010. case 12:
  1011. re += 'Q';
  1012. break;
  1013. case 13:
  1014. re += 'K';
  1015. break;
  1016. case 14:
  1017. re += 'A';
  1018. break;
  1019. }
  1020. }
  1021. switch( card.suit ){
  1022. case 0:
  1023. re += 'e';
  1024. break;
  1025. case 1:
  1026. re += 'k';
  1027. break;
  1028. case 2:
  1029. re += 'kr';
  1030. break;
  1031. case 3:
  1032. re += 'p';
  1033. break;
  1034. }
  1035. re += '.png';
  1036. return re;
  1037. },
  1038.  
  1039. cardText:function( card ){
  1040. var re = '';
  1041. switch( card.suit ){
  1042. case 0:
  1043. re += '♥';
  1044. break;
  1045. case 1:
  1046. re += '♦';
  1047. break;
  1048. case 2:
  1049. re += '♣';
  1050. break;
  1051. case 3:
  1052. re += '?';
  1053. break;
  1054. }
  1055. re += ' ';
  1056. if( card.v < 11 ){
  1057. re += card.v;
  1058. } else {
  1059. switch( card.v ){
  1060. case 11:
  1061. re += 'Kalps';
  1062. break;
  1063. case 12:
  1064. re += 'Dāma';
  1065. break;
  1066. case 13:
  1067. re += 'Kungs';
  1068. break;
  1069. case 14:
  1070. re += 'Dūzis';
  1071. break;
  1072. }
  1073. }
  1074. return re;
  1075. },
  1076.  
  1077. suitCardImg:function( suit ){
  1078. return Duraks.PIMG + 'games/duraks/img/' + suit + '_.png';
  1079. },
  1080.  
  1081. showHelp:function(){
  1082. if( this._drNode ){
  1083. this._drNode.remove();
  1084. delete this._drNode;
  1085. return false;
  1086. }
  1087. var node;
  1088. this._drNode = mkE( {
  1089. tag:'div',
  1090. id:'DuraksHelp',
  1091. //className:'DuraksBox DuraksBoxBorderRadius',
  1092. els:[
  1093. node = mkE( {
  1094. tag:'div'
  1095. } )
  1096. ]
  1097. } ).append( Duraks.node );
  1098. rq( '/games/duraks/rules.php', node, { withoutLoading:true } );
  1099. return false;
  1100. },
  1101.  
  1102. achList:{
  1103. 1:{
  1104. img:'1win',
  1105. title:'Zilais diploms - 1 uzvara'
  1106. },
  1107. 2:{
  1108. img:'50win',
  1109. title:'Zaļais diploms - 50 uzvaras'
  1110. },
  1111. 3:{
  1112. img:'100win',
  1113. title:'Sarkanais diploms - 100 uzvaras'
  1114. },
  1115. 4:{
  1116. img:'500win',
  1117. title:'Bronzas medaļa - 500 uzvaras'
  1118. },
  1119. 16:{
  1120. img:'1000win',
  1121. title:'Sudraba medaļa - 1000 uzvaras'
  1122. },
  1123. 5:{
  1124. img:'3000win',
  1125. title:'Zelta medaļa - 3000 uzvaras'
  1126. },
  1127. 6:{
  1128. img:'5000win',
  1129. title:'Bronzas kronis - 5000 uzvaras'
  1130. },
  1131. 7:{
  1132. img:'10000win',
  1133. title:'Sudraba kronis - 10000 uzvaras'
  1134. },
  1135. 8:{
  1136. img:'30000win',
  1137. title:'Zelta kronis - 30000 uzvaras'
  1138. },
  1139. /*9:{
  1140. img:'weektop3',
  1141. title:'Iekļuvis dienas top 3'
  1142. },
  1143. 10:{
  1144. img:'monthtop3',
  1145. title:'Iekļuvis mēneša top 3'
  1146. },*/
  1147. 11:{
  1148. img:'win_playing2',
  1149. title:'Uzvarējis spēlējot divatā'
  1150. },
  1151. 12:{
  1152. img:'win_playing3',
  1153. title:'Uzvarējis spēlējot trijatā'
  1154. },
  1155. 13:{
  1156. img:'win_playing4',
  1157. title:'Uzvarējis spēlējot četratā'
  1158. },
  1159. 14:{
  1160. img:'win_playing5',
  1161. title:'Uzvarējis spēlējot piecatā'
  1162. },
  1163. 15:{
  1164. img:'win_playing6',
  1165. title:'Uzvarējis spēlējot sešatā'
  1166. },
  1167. 17:{
  1168. img:'win_10_row',
  1169. title:'Uzvarējis 10 spēles pēc kārtas'
  1170. },
  1171. 18:{
  1172. img:'100win_night',
  1173. title:'100 uzvaras spēlējot naktī (00:00 - 05:00)'
  1174. },
  1175. 19:{
  1176. img:'1000win_night',
  1177. title:'1000 uzvaras spēlējot naktī (00:00 - 05:00)'
  1178. }
  1179. },
  1180.  
  1181. showAch:function(uid){
  1182. if( this.achNode ){
  1183. this.achNode.remove();
  1184. delete this.achNode;
  1185. return false;
  1186. }
  1187. this.achNode = mkE( {
  1188. tag:'div',
  1189. id:'DuraksAch',
  1190. //className:'DuraksBox DuraksBoxBorderRadius',
  1191. els:[
  1192. ]
  1193. } ).append( Duraks.node );
  1194. this.rpc.send(
  1195. 'getAch',
  1196. {
  1197. uid:uid || false,
  1198. updateSeen:true
  1199. },
  1200. this.showAchRe,
  1201. this
  1202. );
  1203. return false;
  1204. },
  1205.  
  1206. showAchRe:function(re){
  1207. var itemsNode = mkE( {
  1208. tag:'div',
  1209. id:'DuraksAchItems'
  1210. } ).append( this.achNode );
  1211. for( var k in this.achList ){
  1212. var r = this.achList[k];
  1213. var achNode = mkE( {
  1214. tag:'div',
  1215. className:'DuraksAchItem',
  1216. prop:{
  1217. title:r.title || '',
  1218. style:{
  1219. backgroundImage:"url('" + Duraks.PIMG + 'games/duraks/img/ach/' + r.img + ( re.items[k] ? '' : '_inact' ) + ".png')"
  1220. }
  1221. }
  1222. } ).append(itemsNode);
  1223. if( re.items[k] && re.items[k].seen == 'N' ){
  1224. mkE( {
  1225. tag:'div',
  1226. className:'DuraksAchItemNew'
  1227. } ).append(achNode);
  1228. }
  1229. }
  1230. if( re.uid == D.ID ){
  1231. if( Duraks.layers.games.achCount ){
  1232. Duraks.layers.games.achCount.innerHTML = '';
  1233. Duraks.layers.games.achCount.style.display = 'none';
  1234. }
  1235. }
  1236. mkE( {
  1237. tag:'center',
  1238. els:[
  1239. {
  1240. tag:'button',
  1241. text:'Aizvērt',
  1242. className:'DuraksBorderRadius',
  1243. prop:{
  1244. onclick:function(){
  1245. Duraks.achNode.remove();
  1246. delete Duraks.achNode;
  1247. }
  1248. }
  1249. }
  1250. ]
  1251. } ).append( this.achNode );
  1252. },
  1253.  
  1254. updateAch:function(){
  1255. this.rpc.send(
  1256. 'getAch',
  1257. {
  1258. },
  1259. function( re ){
  1260. if( re['new'] ){
  1261. if( this.layers.games.achCount ){
  1262. this.layers.games.achCount.innerHTML = re['new'];
  1263. Duraks.layers.games.achCount.style.display = '';
  1264. }
  1265. } else {
  1266. this.layers.games.achCount.innerHTML = '';
  1267. Duraks.layers.games.achCount.style.display = 'none';
  1268. }
  1269. },
  1270. this
  1271. );
  1272. },
  1273.  
  1274. showResults:function(uid){
  1275. if( this._resultNode ){
  1276. this._resultNode.remove();
  1277. }
  1278. this._resultNode = mkE( {
  1279. tag:'div',
  1280. id:'DuraksResult',
  1281. //className:'DuraksBox DuraksBoxBorderRadius',
  1282. els:[
  1283. {
  1284. tag:'h1',
  1285. els:[
  1286. '?īs nedēļas statistika: ',
  1287. this._resultPlaceNode = mkE( {
  1288. tag:'span',
  1289. text:'-'
  1290. } ),
  1291. '. vieta'
  1292. ]
  1293. },
  1294. {
  1295. tag:'span',
  1296. className:'DuraksBoxBorderRadius DuraksBox',
  1297. els:[
  1298. {
  1299. tag:'div',
  1300. className:'DuraksError DuraksBox DuraksBorderRadius',
  1301. style:{
  1302. display:( this.vip ? 'none' : '' )
  1303. },
  1304. els:[
  1305. 'Tops pieejams tikai VIP spēlētājiem. ',
  1306. {
  1307. tag:'a',
  1308. text:'Abonēt',
  1309. prop:{
  1310. onclick:function(){
  1311. parent.D.pb( 'duraks_vip' );
  1312. }
  1313. }
  1314. }
  1315. ]
  1316. }, // div.DuraksError
  1317. {
  1318. tag:'table',
  1319. id:'DuraksResultGames',
  1320. els:[
  1321. this._resultBody = mkE( {
  1322. tag:'tbody'
  1323. } )
  1324. ]
  1325. }, // table
  1326. { tag:'br' },
  1327. { tag:'br' },
  1328. {
  1329. tag:'h2',
  1330. text:'Pēdējo 4 nedēļu rezultāti:'
  1331. },
  1332. {
  1333. tag:'table',
  1334. id:'DuraksWeek',
  1335. els:[
  1336. {
  1337. tag:'tbody',
  1338. els:[
  1339. this._resultLast4Node = mkE( {
  1340. tag:'tr'
  1341. } )
  1342. ]
  1343. } // tbody
  1344. ]
  1345. }, // table
  1346. {
  1347. tag:'center',
  1348. els:[
  1349. {
  1350. tag:'button',
  1351. className:'DuraksBorderRadius',
  1352. text:'Aizvērt',
  1353. prop:{
  1354. onclick:function(){
  1355. Duraks._resultNode.remove();
  1356. }
  1357. }
  1358. } //
  1359. ]
  1360. } // center
  1361. ]
  1362. } // div
  1363. ]
  1364. } ).append( Duraks.node );
  1365. this.rpc.send(
  1366. 'result',
  1367. {
  1368. uid:uid || false
  1369. },
  1370. this._showResultsRe,
  1371. this
  1372. );
  1373. },
  1374.  
  1375. _showResultsRe:function(re){
  1376. if(!re){
  1377. return;
  1378. }
  1379. if( re.place ){
  1380. this._resultPlaceNode.innerHTML = re.place;
  1381. }
  1382. var GAMES = 10;
  1383. var total = 0;
  1384. for( var i = 2; i <= 6; ++ i ){
  1385. var tr = mkE( {
  1386. tag:'tr',
  1387. els:[
  1388. {
  1389. tag:'td',
  1390. els:[
  1391. {
  1392. tag:'img',
  1393. src:D.PIMG + 'games/duraks/img/result/' + i + '.png'
  1394. } //img
  1395. ]
  1396. } // td
  1397. ]
  1398. } ).append( this._resultBody );
  1399. var sum = 0;
  1400. for( var k = 0; k < GAMES; ++ k ){
  1401. var item;
  1402. mkE( {
  1403. tag:'td',
  1404. attr:{
  1405. align:'center'
  1406. },
  1407. els:[
  1408. item = mkE( {
  1409. tag:'div',
  1410. className:'DuraksResultI'
  1411. } )
  1412. ]
  1413. } ).append(tr);
  1414. var result = re.games[i][k];
  1415. if( typeof result == 'undefined' ){
  1416. item.title = 'Nav spēlēts';
  1417. continue;
  1418. }
  1419. item._gid = result.gid;
  1420. if( result.win ){
  1421. addClassName( item, 'DuraksResultIWin' );
  1422. ++ sum;
  1423. } else {
  1424. addClassName( item, 'DuraksResultILoose' );
  1425. }
  1426. item.onmouseover = this._resultItemMouseOver;
  1427. } // for
  1428. total += sum;
  1429. mkE( {
  1430. tag:'td',
  1431. els:[
  1432. {
  1433. tag:'b',
  1434. text:sum
  1435. }
  1436. ]
  1437. } ).append(tr);
  1438. }
  1439. mkE( {
  1440. tag:'tr',
  1441. els:[
  1442. {
  1443. tag:'td',
  1444. text:'?onedēļ kopā punkti:',
  1445. prop:{
  1446. colSpan:11,
  1447. style:{
  1448. textAlign:'right'
  1449. }
  1450. }
  1451. },
  1452. {
  1453. tag:'td',
  1454. els:[
  1455. {
  1456. tag:'b',
  1457. text:total
  1458. }
  1459. ]
  1460. }
  1461. ]
  1462. } ).append( this._resultBody );
  1463. for( var k in re.weeks ){
  1464. mkE( {
  1465. tag:'td',
  1466. text:re.weeks[k]
  1467. } ).append( this._resultLast4Node )
  1468. }
  1469. },
  1470.  
  1471. _resultItemMouseOver:function(){
  1472. this.onmouseover = function(){};
  1473. this.title = '<img src="' + D.PIMG + 'i/loading/loading_black_trans.gif" />';
  1474. Duraks.rpc.send(
  1475. 'getGameMembers',
  1476. {
  1477. gid:this._gid
  1478. },
  1479. Duraks._resultGameMembers,
  1480. this
  1481. );
  1482. },
  1483.  
  1484. _resultGameMembers:function(re){
  1485. if( re.notEnd ){
  1486. $('.ToolTip').html("Rezultāti vēl nav pieejami");
  1487. this.onmouseover = Duraks._resultItemMouseOver;
  1488. return;
  1489. }
  1490. var node = mkE( {
  1491. tag:'div'
  1492. } );
  1493. var c = count( re.members );
  1494. for( var i = 0; i < c; ++ i ){
  1495. var m = re.members[i];
  1496. if( i + 1 == c ){
  1497. mkE( {
  1498. tag:'hr'
  1499. } ).append(node);
  1500. }
  1501. mkE( {
  1502. tag:'div',
  1503. els:[
  1504. String( i + 1 ),
  1505. '. ',
  1506. htmlspecialchars_decode( m.title )
  1507. ]
  1508. } ).append(node);
  1509. }
  1510. this._drTitle = node.innerHTML;
  1511. if( this.title ){
  1512. this.title = this._drTitle;
  1513. }
  1514. $('.ToolTip').html( node.innerHTML );
  1515. },
  1516.  
  1517. layers:{
  1518.  
  1519. show:function( leyer ){
  1520. if( leyer.parentNode === Duraks.node ){
  1521. return;
  1522. }
  1523. //clearNode( Duraks.node );
  1524. if( this.intro.node ){
  1525. this.intro.node.remove();
  1526. }
  1527. if( this.games.node ){
  1528. this.games.node.remove();
  1529. }
  1530. if( this.game.node ){
  1531. this.game.node.remove();
  1532. }
  1533. Duraks.infoBox.close();
  1534. leyer.append( Duraks.node );
  1535. },
  1536.  
  1537. intro:function(){
  1538. if( this.intro.node ){
  1539. this.show( this.intro.node );
  1540. return;
  1541. }
  1542. this.intro.node = mkE( {
  1543. tag:'div',
  1544. className:'DuraksView',
  1545. id:'DuraksIntro',
  1546. els:[
  1547. mkE( {
  1548. tag:'div',
  1549. id:'DuraksHeader'
  1550. } ),
  1551. this.intro.progress = mkE( {
  1552. tag:'div',
  1553. id:'DuraksIntroProgress',
  1554. className:'DuraksBorderRadius',
  1555. els:[
  1556. this.intro.progressC = mkE( {
  1557. tag:'div',
  1558. id:'DuraksIntroProgressC'
  1559. } )
  1560. ]
  1561. } ),
  1562. this.intro.status = mkE( {
  1563. tag:'center',
  1564. id:'DuraksIntroStatus'
  1565. } )
  1566. ]
  1567. } );
  1568. this.show( this.intro.node );
  1569. },
  1570.  
  1571. games:function(){
  1572. if( this.games.node ){
  1573. this.show( this.games.node );
  1574. return;
  1575. }
  1576. this.games.items = {};
  1577. this.games.create = {};
  1578. this.games.node = mkE( {
  1579. tag:'div',
  1580. className:'DuraksView',
  1581. els:[
  1582. mkE( {
  1583. tag:'div',
  1584. id:'DuraksHeader',
  1585. els:[
  1586. this.games.online = mkE( {
  1587. tag:'div',
  1588. id:'DuraksGamesOnline'
  1589. } ),
  1590. this.games.gameCount = mkE( {
  1591. tag:'div',
  1592. id:'DuraksGamesCount'
  1593. } ),
  1594. mkE( {
  1595. tag:'a',
  1596. className:'DuraksHeaderAch',
  1597. text_:'Sasniegumi',
  1598. href:'javascript:',
  1599. prop:{
  1600. onclick:function(){
  1601. return Duraks.showAch();
  1602. }
  1603. },
  1604. els:[
  1605. this.games.achCount = mkE( {
  1606. tag:'span'
  1607. } )
  1608. ]
  1609. } ),
  1610. mkE( {
  1611. tag:'a',
  1612. className:'DuraksHeaderHelp',
  1613. text:'Noteikumi',
  1614. href:'javscript:',
  1615. prop:{
  1616. onclick:function(){
  1617. return Duraks.showHelp();
  1618. }
  1619. }
  1620. } )
  1621. ]
  1622. } ), // #DuraksHeader
  1623. mkE( {
  1624. tag:'div',
  1625. id:'DuraksGameBg'
  1626. } ),
  1627. mkE( {
  1628. tag:'div',
  1629. id:'DuraksHello',
  1630. className:'DuraksBoxBorderRadius DuraksBox',
  1631. els:[
  1632. mkE( {
  1633. tag:'img',
  1634. prop:{
  1635. src:Duraks.auth.small
  1636. }
  1637. } ),
  1638. this.games.profileVIPNode = mkE( {
  1639. tag:'div',
  1640. id:'DuraksProfileVIP',
  1641. style:{
  1642. display:'none'
  1643. }
  1644. } ),
  1645. mkE( {
  1646. tag:'div',
  1647. id:'DuraksHelloName',
  1648. text:'Sveiki, ' + Duraks.auth.name
  1649. } ),
  1650. this.games.rateNode = mkE( {
  1651. tag:'div',
  1652. id:'DuraksHelloRate'
  1653. } ),
  1654. mkE( {
  1655. tag:'div',
  1656. text:'Nedēļas uzdevums',
  1657. id:'DuraksResultsButton',
  1658. className:'DuraksBorderRadius DuraksButton',
  1659. prop:{
  1660. onclick:function(){
  1661. Duraks.showResults();
  1662. }
  1663. }
  1664. } ),
  1665. this.games.buyVIPNode = mkE( {
  1666. tag:'div',
  1667. text:'Pirkt VIP',
  1668. id:'DuraksBuyVIP',
  1669. className:'DuraksBorderRadius DuraksButton',
  1670. prop:{
  1671. title:'Abonējot VIP kontu,<br /> varēsi krāt reitingu un iekļūt topā,<br /> un veidot ar paroli aizsargātas istabas.',
  1672. onclick:function(){
  1673. parent.D.pb( 'duraks_vip' );
  1674. }
  1675. },
  1676. els:[
  1677. mkE( {
  1678. tag:'div'
  1679. } )
  1680. ]
  1681. } )
  1682. ]
  1683. } ), // #DuraksHello
  1684. mkE( {
  1685. tag:'div',
  1686. id:'DuraksGamesTop',
  1687. className:'DuraksBoxBorderRadius DuraksBox',
  1688. els:[
  1689. mkE( {
  1690. tag:'div',
  1691. className:'DuraksTopIcon'
  1692. } ),
  1693. mkE( {
  1694. tag:'div',
  1695. id:'DuraksTopTitle',
  1696. text:'VIP TOP'
  1697. } ),
  1698. mkE( {
  1699. tag:'table',
  1700. id:'DuraksGamesTopPeriod',
  1701. els:[
  1702. mkE( {
  1703. tag:'tbody',
  1704. els:[
  1705. mkE( {
  1706. tag:'tr',
  1707. els:[
  1708. mkE( {
  1709. tag:'td',
  1710. els:[
  1711. this.topDayTab = mkE( {
  1712. tag:'a',
  1713. text:'Nedēļas',
  1714. className:'DuraksGamesTopA',
  1715. href:'javascript:',
  1716. prop:{
  1717. onclick:function(){
  1718. Duraks.top = 'day';
  1719. addClassName( Duraks.layers.topDayTab, 'DuraksGamesTopA' );
  1720. //removeClassName( Duraks.layers.topMonthTab, 'DuraksGamesTopA' );
  1721. Duraks.showTop();
  1722. return false;
  1723. }
  1724. }
  1725. } )
  1726. ]
  1727. } )/*,
  1728. mkE( {
  1729. tag:'td',
  1730. els:[
  1731. this.topMonthTab = mkE( {
  1732. tag:'a',
  1733. text:'Mēneša',
  1734. href:'javascript:',
  1735. prop:{
  1736. onclick:function(){
  1737. Duraks.top = 'month';
  1738. removeClassName( Duraks.layers.topDayTab, 'DuraksGamesTopA' );
  1739. addClassName( Duraks.layers.topMonthTab, 'DuraksGamesTopA' );
  1740. Duraks.showTop();
  1741. return false;
  1742. }
  1743. }
  1744. } )
  1745. ]
  1746. } )*/
  1747. ]
  1748. } ) // tr
  1749. ]
  1750. } )
  1751. ]
  1752. } ), // table#DuraksGamesTopPeriod
  1753. this.games.topListNode = mkE( {
  1754. tag:'div',
  1755. id:'DuraksTopList'
  1756. } )
  1757. ]
  1758. } ),
  1759. mkE( {
  1760. tag:'div',
  1761. id:'DuraksGamesList',
  1762. className:'DuraksBoxBorderRadius DuraksBox',
  1763. els:[
  1764. mkE( {
  1765. tag:'div',
  1766. className:'DuraksGamesIcon'
  1767. } ),
  1768. mkE( {
  1769. tag:'div',
  1770. id:'DuraksGamesListTitle',
  1771. text:'Izveidotās spēles'
  1772. } ),
  1773. this.games.listNode = mkE( {
  1774. tag:'div',
  1775. id:'DuraksGamesListItems'
  1776. } )
  1777. ]
  1778. } ), // #DuraksGamesList
  1779. mkE( {
  1780. tag:'div',
  1781. id:'DuraksGamesCreate',
  1782. className:'DuraksBoxBorderRadius DuraksBox',
  1783. els:[
  1784. // +++ 52 +++
  1785. mkE( {
  1786. tag:'div',
  1787. className:'Duraks52Icon'
  1788. } ),
  1789. this.games.create[ '52' ] = mkE( {
  1790. tag:'input',
  1791. id:'DuraksCreate52',
  1792. checked:D.Cookie.read('opt52') === null || D.Cookie.read('opt52') == 'Y',
  1793. prop:{
  1794. type:'checkbox',
  1795. onclick:function(){
  1796. D.Cookie.create( 'opt52', this.checked ? 'Y' : 'N', 7, '/games/duraks/' )
  1797. }
  1798. }
  1799. } ),
  1800. mkE( {
  1801. tag:'label',
  1802. id:'DuraksCreate52Label',
  1803. text:'Lielā kava',
  1804. attr:{
  1805. 'for':'DuraksCreate52'
  1806. }
  1807. } ),
  1808. // --- 52 ---
  1809. // +++ pass +++
  1810. mkE( {
  1811. tag:'div',
  1812. className:'DuraksPassIcon'
  1813. } ),
  1814. this.games.create.pass = mkE( {
  1815. tag:'input',
  1816. id:'DuraksCreatePass',
  1817. checked:D.Cookie.read('optPass') === null || D.Cookie.read('optPass') == 'Y',
  1818. prop:{
  1819. type:'checkbox',
  1820. onclick:function(){
  1821. D.Cookie.create( 'optPass', this.checked ? 'Y' : 'N', 7, '/games/duraks/' )
  1822. }
  1823. }
  1824. } ),
  1825. mkE( {
  1826. tag:'label',
  1827. id:'DuraksCreatePassLabel',
  1828. text:'Ar padošanu',
  1829. attr:{
  1830. 'for':'DuraksCreatePass'
  1831. }
  1832. } ),
  1833. // --- pass ---
  1834. // +++ players +++
  1835. mkE( {
  1836. tag:'div',
  1837. className:'DuraksPlayersIcon'
  1838. } ),
  1839. /*
  1840. this.games.create.count = mkE( {
  1841. tag:'select',
  1842. id:'DuraksCreateMembers',
  1843. els:[
  1844. mkE( {
  1845. tag:'option',
  1846. text:'2',
  1847. value:'2'
  1848. } ),
  1849. mkE( {
  1850. tag:'option',
  1851. text:'3',
  1852. value:'3'
  1853. } ),
  1854. mkE( {
  1855. tag:'option',
  1856. text:'4',
  1857. value:'4'
  1858. } ),
  1859. mkE( {
  1860. tag:'option',
  1861. text:'5',
  1862. value:'5'
  1863. } ),
  1864. mkE( {
  1865. tag:'option',
  1866. text:'6',
  1867. value:'6'
  1868. } )
  1869. ],
  1870. prop:{
  1871. value:D.Cookie.read('optCount') === null ? 4 : D.Cookie.read('optCount'),
  1872. onchange:function(){
  1873. D.Cookie.create( 'optCount',this.value, 7, '/games/duraks/' )
  1874. }
  1875. }
  1876. } ),*/
  1877. this.games.create.count = Duraks.dropDown( {
  1878. id:'DuraksCreateMembers',
  1879. options:[
  1880. {
  1881. text:2,
  1882. value:2
  1883. },
  1884. {
  1885. text:3,
  1886. value:3
  1887. },
  1888. {
  1889. text:4,
  1890. value:4
  1891. },
  1892. {
  1893. text:5,
  1894. value:5
  1895. },
  1896. {
  1897. text:6,
  1898. value:6
  1899. }
  1900. ],
  1901. value:D.Cookie.read('optCount') === null ? 4 : D.Cookie.read('optCount'),
  1902. onchange:function(v){
  1903. D.Cookie.create( 'optCount', v.value, 7, '/games/duraks/' )
  1904. }
  1905. } ),
  1906. mkE( {
  1907. tag:'div',
  1908. id:'DuraksCreatePlayersLabel',
  1909. text:'Spēlētāju skaits'
  1910. } ),
  1911. // --- players ---
  1912. // +++ vip +++
  1913. this.games.create.vipIcon = mkE( {
  1914. tag:'div',
  1915. className:'DuraksVipIcon DuraksVipDIcon',
  1916. prop:{
  1917. title:'Pieejams tikai VIP konta īpašniekiem.'
  1918. }
  1919. } ),
  1920. this.games.create.vip = mkE( {
  1921. tag:'input',
  1922. id:'DuraksCreateVip',
  1923. prop:{
  1924. type:'checkbox',
  1925. title:'Pieejams tikai VIP konta īpašniekiem.',
  1926. disabled:true,
  1927. checked:D.Cookie.read('optVIP') === null || D.Cookie.read('optVIP') == 'Y',
  1928. onclick:function(){
  1929. D.Cookie.create( 'optVIP', this.checked ? 'Y' : 'N', 7, '/games/duraks/' )
  1930. }
  1931. }
  1932. } ),
  1933. mkE( {
  1934. tag:'label',
  1935. id:'DuraksCreateVipLabel',
  1936. text:'VIP spēle',
  1937. attr:{
  1938. 'for':'DuraksCreateVip'
  1939. }
  1940. } ),
  1941. // --- vip ---
  1942. // +++ priv +++
  1943. this.games.create.privIcon = mkE( {
  1944. tag:'div',
  1945. className:'DuraksPrivIcon DuraksPrivDIcon'
  1946. } ),
  1947. mkE( {
  1948. tag:'div',
  1949. id:'DuraksCreatePrivLabel',
  1950. text:'Privāta istaba'
  1951. } ),
  1952. this.games.create.password = mkE( {
  1953. tag:'input',
  1954. id:'DuraksCreatePriv',
  1955. prop:{
  1956. type:'password',
  1957. title:'Parole, ar kuru var pievienoties citi dalībnieki.',
  1958. maxLength:10,
  1959. disabled:true
  1960. }
  1961. } ),
  1962. // --- priv ---
  1963. // +++ skin ---
  1964. this.games.create.skinIcon = mkE( {
  1965. tag:'div',
  1966. className:'DuraksSkinIcon DuraksSkinDIcon',
  1967. title:'Galda krāsa'
  1968. } ),
  1969. this.games.create.skin = Duraks.skinDropDown(),
  1970. mkE( {
  1971. tag:'div',
  1972. id:'DuraksCreateSkinLabel',
  1973. text:'Galda krāsa'
  1974. } ),
  1975. // --- skin ---
  1976. mkE( {
  1977. tag:'div',
  1978. id:'DuraksGamesCreateButton',
  1979. className:'DuraksBorderRadius',
  1980. prop:{
  1981. onclick:function(){
  1982. Duraks.rp.create();
  1983. }
  1984. },
  1985. els:[
  1986. mkE( {
  1987. tag:'center',
  1988. text:'Izveidot savu spēli'
  1989. } )
  1990. ]
  1991. } ) // #DuraksGamesCreate
  1992. ]
  1993. } ) // #DuraksGamesCreate
  1994. ]
  1995. } ); // div.DuraksView
  1996. this.show( this.games.node );
  1997. Duraks.updateAch();
  1998. }, // games
  1999.  
  2000. game:function(){
  2001. if( this.game.node ){
  2002. this.show( this.game.node );
  2003. return;
  2004. }
  2005. var $layers = this;
  2006. this.game.node = mkE( {
  2007. tag:'div',
  2008. id:'DuraksGame',
  2009. className:'DuraksView',
  2010. els:[
  2011. mkE( {
  2012. tag:'div',
  2013. id:'DuraksHeader',
  2014. els:[
  2015. this.game.online = mkE( {
  2016. tag:'div',
  2017. id:'DuraksGamesOnline'
  2018. } ),
  2019. this.game.gameCount = mkE( {
  2020. tag:'div',
  2021. id:'DuraksGamesCount'
  2022. } ),
  2023. mkE( {
  2024. tag:'a',
  2025. className:'DuraksHeaderHelp',
  2026. text:'Noteikumi',
  2027. href:'javscript:',
  2028. prop:{
  2029. onclick:function(){
  2030. return Duraks.showHelp();
  2031. }
  2032. }
  2033. } )
  2034. ]
  2035. } ),
  2036. mkE( {
  2037. tag:'div',
  2038. id:'DuraksGameBg'
  2039. } ),
  2040. this.game.members = mkE( {
  2041. tag:'div',
  2042. id:'DuraksGameUsers'
  2043. } ),
  2044. mkE( {
  2045. tag:'div',
  2046. id:'DuraksGameChat',
  2047. className:'DuraksBox DuraksBoxBorderRadius',
  2048. els:[
  2049. this.game.chatItems = mkE( {
  2050. tag:'div',
  2051. id:'DuraksGameChatItems'
  2052. } ),
  2053. mkE( {
  2054. tag:'textarea',
  2055. className:'DuraksBorderRadius',
  2056. prop:{
  2057. onkeyup:function( e ){
  2058. if(!e){
  2059. e = window.event;
  2060. }
  2061. if( !e.shiftKey && e.keyCode == 13 ){
  2062. Duraks.rp.sendMsg( this.value );
  2063. this.value = '';
  2064. }
  2065. }
  2066. }
  2067. } )
  2068. ]
  2069. } ), // div.DuraksView
  2070. this.game.userCards = mkE( {
  2071. tag:'div',
  2072. id:'DuraksGameUserCards'
  2073. } ),
  2074. this.game.tableCards = mkE( {
  2075. tag:'div',
  2076. id:'DuraksGameTable'
  2077. } ),
  2078. this.game.suitImg = mkE( {
  2079. tag:'img',
  2080. id:'DuraksGameTrump'
  2081. } ),
  2082. this.game.trump = mkE( {
  2083. tag:'div',
  2084. id:'DuraksGameCards',
  2085. els:[
  2086. this.game.trumpImg = mkE( {
  2087. tag:'img'
  2088. } )
  2089. ]
  2090. } ),
  2091. this.game.kava = mkE( {
  2092. tag:'div',
  2093. id:'DuraksGameKava',
  2094. els:[
  2095. this.game.cardCountNode = mkE( {
  2096. tag:'div',
  2097. id:'DuraksGameKavaCount',
  2098. els:[
  2099. this.game.cardCount = mkE( {
  2100. tag:'div'
  2101. } )
  2102. ]
  2103. } )
  2104. ]
  2105. } ),
  2106. this.game.w52Node = mkE( {
  2107. tag:'div',
  2108. className:'Duraks52Icon',
  2109. prop:{
  2110. title:'Lielā kava'
  2111. }
  2112. } ),
  2113. this.game.passNode = mkE( {
  2114. tag:'div',
  2115. className:'DuraksPassIcon',
  2116. prop:{
  2117. title:'Ar padošanu'
  2118. }
  2119. } ),
  2120. this.game.vipNode = mkE( {
  2121. tag:'div',
  2122. className:'DuraksVipIcon',
  2123. prop:{
  2124. title:'VIP spēle'
  2125. }
  2126. } ),
  2127. mkE( {
  2128. tag:'div',
  2129. id:'DuraksProfilePic',
  2130. className:'DuraksBox DuraksBoxBorderRadius',
  2131. els:[
  2132. mkE( {
  2133. tag:'img',
  2134. prop:{
  2135. src:Duraks.auth.small
  2136. }
  2137. } )
  2138. ]
  2139. } ),
  2140. this.game.youCurrent = mkE( {
  2141. tag:'div',
  2142. id:'DuraksGameYouCurrent',
  2143. text:'Tavs gājiens'
  2144. } ),
  2145. this.game.youNext = mkE( {
  2146. tag:'div',
  2147. id:'DuraksGameYouNext',
  2148. text:'Tev jāsit'
  2149. } ),
  2150. this.game.takeUp = mkE( {
  2151. tag:'div',
  2152. id:'',
  2153. className:'DuraksGameTakeUp',
  2154. prop:{
  2155. onclick:function(){
  2156. this.style.display = 'none';
  2157. Duraks.rp.takeUp();
  2158. }
  2159. },
  2160. els:[
  2161. mkE( {
  2162. tag:'div',
  2163. text:'Pacelt'
  2164. } )
  2165. ]
  2166. } ), // takeUp
  2167. this.game.done = mkE( {
  2168. tag:'div',
  2169. id:'',
  2170. className:'DuraksGameTakeUp',
  2171. prop:{
  2172. onclick:function(){
  2173. this.style.display = 'none';
  2174. Duraks.rp.setDone( true );
  2175. }
  2176. },
  2177. els:[
  2178. mkE( {
  2179. tag:'div',
  2180. text:'Sists!'
  2181. } )
  2182. ]
  2183. } ), // done
  2184. this.game.timerNode = mkE( {
  2185. tag:'div',
  2186. id:'DuraksGameTimer'
  2187. } )
  2188. ]
  2189. } );
  2190. this.game.timerV = 30;
  2191. setInterval( function(){
  2192. if( $layers.game.timerV > 0 ){
  2193. $layers.game.timerV --;
  2194. }
  2195. $layers.game.timerNode.innerHTML = ( $layers.game.timerV > 0 ? $layers.game.timerV : '' );
  2196. }, 1000 );
  2197. this.game.youCurrent.style.display = 'none';
  2198. this.game.youNext.style.display = 'none';
  2199. this.game.takeUp.style.display = 'none';
  2200. this.game.done.style.display = 'none';
  2201. this.show( this.game.node );
  2202. }
  2203.  
  2204. }, // layers
  2205.  
  2206. gameItem:function( game ){
  2207. var members;
  2208. var re = mkE( {
  2209. tag:'div',
  2210. className:'DuraksGameItem',
  2211. els:[
  2212. members = mkE( {
  2213. tag:'div',
  2214. className:'DuraksGameItemMembers'
  2215. } ),
  2216. mkE( {
  2217. tag:'div',
  2218. className:'Duraks52Icon' + ( game.w52 ? '' : ' Duraks52DIcon' )
  2219. } ),
  2220. mkE( {
  2221. tag:'div',
  2222. className:'DuraksPassIcon' + ( game.pass ? '' : ' DuraksPassDIcon' )
  2223. } ),
  2224. mkE( {
  2225. tag:'div',
  2226. className:'DuraksPrivIcon' + ( game.priv ? '' : ' DuraksPrivDIcon' )
  2227. } ),
  2228. mkE( {
  2229. tag:'div',
  2230. className:'DuraksVipIcon' + ( game.vip ? '' : ' DuraksVipDIcon' )
  2231. } ),
  2232. mkE( {
  2233. tag:'button',
  2234. className:'DuraksGameItemJoinButton DuraksBorderRadius',
  2235. text:'Pievienoties',
  2236. prop:{
  2237. onclick:function(){
  2238. Duraks.rp.join( {
  2239. id:game.id
  2240. } );
  2241. }
  2242. }
  2243. } ) // .DuraksGameItemJoinButton
  2244. ]
  2245. } );
  2246. var m;
  2247. for( var k in game.members ){
  2248. m = game.members[ k ];
  2249. mkE( {
  2250. tag:'div',
  2251. className:'DuraksGameItemMember',
  2252. els:[
  2253. mkE( {
  2254. tag:'div',
  2255. className:'DuraksGameItemMemberI DuraksBorderRadius DuraksBox',
  2256. els:[
  2257. mkE( {
  2258. tag:'img',
  2259. prop:{
  2260. src:m.icon.replace( 'http://', '//' ),
  2261. _drM:m,
  2262. onclick:function(){
  2263. Duraks.showAch( this._drM.uid );
  2264. }
  2265. }
  2266. } )/*,
  2267. mkE( {
  2268. tag:'div',
  2269. className:'DuraksGameItemMemberR DuraksBox DuraksBorderRadius',
  2270. text:m.rate,
  2271. style:{
  2272. display:( game.vip ? '' : 'none' )
  2273. }
  2274. } )*/
  2275. ]
  2276. } ),
  2277. mkE( {
  2278. tag:'div',
  2279. className:'DuraksGameItemMemberN',
  2280. text:m.name
  2281. } )
  2282. ]
  2283. } ).append( members );
  2284. }
  2285. var c = game.count - count( game.members );
  2286. for( var i = 0; i < c; i ++ ){
  2287. mkE( {
  2288. tag:'div',
  2289. className:'DuraksGameItemMember',
  2290. els:[
  2291. mkE( {
  2292. tag:'div',
  2293. className:'DuraksGameItemMemberI DuraksBorderRadius DuraksBox',
  2294. els:[
  2295. mkE( {
  2296. tag:'img',
  2297. prop:{
  2298. src:Duraks.PIMG + 'i/profile/i_no_pic.png'
  2299. }
  2300. } )
  2301. ]
  2302. } ),
  2303. mkE( {
  2304. tag:'div',
  2305. className:'DuraksGameItemMemberN',
  2306. text:'?'
  2307. } )
  2308. ]
  2309. } ).append( members );
  2310. }
  2311. return re;
  2312. },
  2313.  
  2314. tableMsg:function( par ){
  2315. clearTimeout( this.tableMsg.timeout );
  2316. this.tableMsg.close();
  2317. this.tableMsg.node = mkE( {
  2318. tag:'div',
  2319. id:'DuraksGameTableMsg',
  2320. className:'DuraksBox DuraksBoxBorderRadius',
  2321. text:par.text
  2322. } ).append( Duraks.layers.game.node );
  2323. this.tableMsg.timeout = setTimeout( function(){
  2324. Duraks.tableMsg.close();
  2325. }, par.timeout || 2000 );
  2326. },
  2327.  
  2328. infoBox:{
  2329. show:function( par ){
  2330. if( ! par ){
  2331. par = {};
  2332. }
  2333. this.close();
  2334. this.overlay = mkE( {
  2335. tag:'div',
  2336. className:'DuraksView',
  2337. id:'DuraksViewInfoBox',
  2338. els:[
  2339. mkE( {
  2340. tag:'div',
  2341. id:'DuraksViewInfoBoxBg'
  2342. } ),
  2343. this.content = mkE( {
  2344. tag:'div',
  2345. id:'DuraksViewInfoBoxC',
  2346. className:'DuraksBox DuraksBorderRadius',
  2347. els:[
  2348. mkE( {
  2349. tag:'div',
  2350. id:'DuraksViewInfoBoxText',
  2351. text:par.text || '...'
  2352. } )
  2353. ]
  2354. } )
  2355. ]
  2356. } );
  2357. if( par.beforeButtons ){
  2358. par.beforeButtons.append( this.content );
  2359. }
  2360. if( par.buttons ){
  2361. this.buttons = mkE( {
  2362. tag:'div',
  2363. id:'DuraksViewInfoBoxButton'
  2364. } ).append( this.content );
  2365. var button;
  2366. for( var k in par.buttons ){
  2367. button = par.buttons[ k ];
  2368. mkE( {
  2369. tag:'button',
  2370. className:'DuraksBorderRadius',
  2371. text:button.caption,
  2372. prop:{
  2373. onclick:button.onclick
  2374. }
  2375. } ).append( this.buttons );
  2376. }
  2377. }
  2378. this.overlay.append( Duraks.node );
  2379. },
  2380.  
  2381. close:function(){
  2382. if( this.overlay ){
  2383. this.overlay.remove();
  2384. }
  2385. }
  2386. }, // infoBox
  2387.  
  2388. user:function( par ){
  2389. this.node = mkE( {
  2390. tag:'div',
  2391. className:'DuraksMember',
  2392. els:[
  2393. mkE( {
  2394. tag:'div',
  2395. className:'DuraksMemberImg DuraksBorderRadius DuraksBox',
  2396. els:[
  2397. mkE( {
  2398. tag:'img',
  2399. prop:{
  2400. src:par.icon
  2401. }
  2402. } )
  2403. ]
  2404. } ) // .DuraksMemberImg
  2405. ]
  2406. } );
  2407. }, // user:function
  2408.  
  2409. chatItem:function( par ){
  2410. if( ! Duraks.layers.game.chatItems ){
  2411. return;
  2412. }
  2413. var textNode;
  2414. mkE( {
  2415. tag:'div',
  2416. els:[
  2417. {
  2418. tag:'span',
  2419. className:'DuraksTP',
  2420. text:'[TP] ',
  2421. prop:{
  2422. title:'Nosūdzēt Tautas policijā',
  2423. onclick:function(){
  2424. Duraks.rpc.send(
  2425. 'chatTP',
  2426. {
  2427. id:par.id
  2428. },
  2429. function(re){
  2430. Duraks.tableMsg( {
  2431. text:'Nosūdzēts!',
  2432. timeout:1000
  2433. } );
  2434. }
  2435. );
  2436. } // onclick
  2437. },
  2438. style:{
  2439. display:( par.tp ? '' : 'none' )
  2440. }
  2441. }, // span.DuraksTP
  2442. {
  2443. tag:'b',
  2444. text:par.name + ': '
  2445. },
  2446. textNode = mkE( {
  2447. tag:'span',
  2448. text:par.text
  2449. } )
  2450. ],
  2451. style:{
  2452. color:par.color || ''
  2453. }
  2454. } ).append( Duraks.layers.game.chatItems );
  2455. textNode.innerHTML = nl2br( textNode.innerHTML );
  2456. textNode.innerHTML = D.smileyReplace( textNode.innerHTML );
  2457. Duraks.layers.game.chatItems.scrollTop = Duraks.layers.game.chatItems.scrollHeight;
  2458. },
  2459.  
  2460.  
  2461. showTop:function(){
  2462. if( Duraks.top == 'month' ){
  2463. this.rpc.send( 'mTop', {}, Duraks._showTopRe );
  2464. } else {
  2465. this.rpc.send( 'dTop', {}, Duraks._showTopRe );
  2466. }
  2467. //this.rpc.send( 'top', {}, Duraks.showTopRe );
  2468. },
  2469.  
  2470. _showTopRe:function( re ){
  2471. clearNode( Duraks.layers.games.topListNode );
  2472. var tbody, table = mkE( {
  2473. tag:'table',
  2474. els:[
  2475. tbody = mkE( {
  2476. tag:'tbody'
  2477. } )
  2478. ]
  2479. } );
  2480. var r;
  2481. if( re.myrate && re.myplace > 20 ){
  2482. re.scores.push( {
  2483. i:D.ID,
  2484. p:re.myplace,
  2485. n:'Tu',
  2486. sm:D.me.image.small,
  2487. r:re.myrate
  2488. } );;
  2489. }
  2490. for( var k in re.scores ){
  2491. r = re.scores[k];
  2492. mkE( {
  2493. tag:'tr',
  2494. els:[
  2495. mkE( {
  2496. tag:'td',
  2497. text:r.p + '.'
  2498. } ),
  2499. mkE( {
  2500. tag:'td',
  2501. els:[
  2502. mkE( {
  2503. tag:'a',
  2504. className:'DuraksTopListN',
  2505. text:r.n,
  2506. prop:{
  2507. href:'/user/' + r.i,
  2508. title:'<img src="' + r.sm + '" />',
  2509. target:'_blank'
  2510. }
  2511. } )
  2512. ]
  2513. } ),
  2514. mkE( {
  2515. tag:'td',
  2516. text:r.r
  2517. } )
  2518. ]
  2519. } ).append( tbody );
  2520. }
  2521. table.append( Duraks.layers.games.topListNode );
  2522. },
  2523.  
  2524.  
  2525. restoreSkin:function(){
  2526. Duraks.node.className = 'skin' + Duraks.layers.games.create.skin._value();
  2527. },
  2528.  
  2529. skinDropDown:function( par ){
  2530. var onover = function(){
  2531. Duraks.node.className = 'skin' + this._skin;
  2532. };
  2533. var options = [
  2534. {
  2535. value:0,
  2536. els:[
  2537. mkE( {
  2538. tag:'img',
  2539. src:D.PIMG + 'games/duraks/img/bg/icon_bckgr.jpg',
  2540. prop:{
  2541. onmouseover:function(){
  2542. Duraks.node.className = '';
  2543. },
  2544. onmouseout:Duraks.restoreSkin
  2545. }
  2546. } )
  2547. ]
  2548. }
  2549. ];
  2550. for( var k in this.skinImgs ){
  2551. options.push( {
  2552. value:Number(k),
  2553. //text:this.skinImgs[k]
  2554. els:[
  2555. mkE( {
  2556. tag:'img',
  2557. src:D.PIMG + 'games/duraks/img/bg/icon_' + this.skinImgs[k],
  2558. prop:{
  2559. onmouseover:onover,
  2560. onmouseout:Duraks.restoreSkin,
  2561. _skin:k
  2562. }
  2563. } )
  2564. ]
  2565. } );
  2566. }
  2567. return this.dropDown( {
  2568. id:'DuraksCreateSkin',
  2569. disabled:true,
  2570. options:options,
  2571. onchange:function(v){
  2572. Duraks.node.className = 'skin' + v.value;
  2573. D.Cookie.create( 'skin', v.value, 7, '/games/duraks/' )
  2574. },
  2575. value:Number( D.Cookie.read('skin') ) || 0
  2576. } );
  2577. },
  2578.  
  2579. dropDown:function( par ){
  2580. var list, inp, overlay, value;
  2581. par = par || {};
  2582. par.options = par.options || [];
  2583. var to;
  2584. var re = mkE( {
  2585. tag:'div',
  2586. className:'DuraksDropDown',
  2587. id:par.id || '',
  2588. prop:{
  2589. onclick:function(){
  2590. inp.focus();
  2591. }
  2592. },
  2593. els:[
  2594. mkE( {
  2595. tag:'div',
  2596. className:'DuraksDropDownBorder'
  2597. } ),
  2598. inp = mkE( {
  2599. tag:'input',
  2600. prop:{
  2601. onfocus:function(){
  2602. clearTimeout(to);
  2603. $(list).slideDown('fast');
  2604. },
  2605. onblur:function(){
  2606. to = setTimeout( function(){
  2607. $(list).slideUp('fast');
  2608. }, 300 );
  2609. }
  2610. }
  2611. } ),
  2612. value = mkE( {
  2613. tag:'div',
  2614. className:'DuraksDropDownValue'
  2615. } ),
  2616. mkE( {
  2617. tag:'div',
  2618. className:'DuraksDropDownArrow'
  2619. } ),
  2620. list = mkE( {
  2621. tag:'div',
  2622. className:'DuraksDropDownList',
  2623. style:{
  2624. display:'none'
  2625. }
  2626. } ),
  2627. overlay = mkE( {
  2628. tag:'div',
  2629. className:'DuraksDropDownDisable',
  2630. style:{
  2631. display:'none'
  2632. }
  2633. } )
  2634. ]
  2635. } );
  2636. var options = [];
  2637. var option;
  2638. for( var k in par.options ){
  2639. option = par.options[k];
  2640. var optNode = mkE( {
  2641. tag:'div',
  2642. className:'DuraksDropDownOption',
  2643. text:option.text || '',
  2644. prop:{
  2645. onclick:function(e){
  2646. D.stopPropagation(e);
  2647. list.style.display = 'none';
  2648. if( par.onchange ){
  2649. par.onchange( this._option );
  2650. re._value( this._option.value )
  2651. }
  2652. },
  2653. _option:option
  2654. },
  2655. els:option.els
  2656. } ).append(list);
  2657. options.push(optNode);
  2658. }
  2659. re._disable = function(v){
  2660. inp.disabled = v;
  2661. overlay.style.display = ( v ? '' : 'none' );
  2662. };
  2663. if( par.disabled ){
  2664. re._disable(true);
  2665. }
  2666. re._value = function(v){
  2667. if( typeof v == 'undefined' ){
  2668. return this._val;
  2669. }
  2670. for( var k in options ){
  2671. if( v == options[k]._option.value ){
  2672. this._val = v;
  2673. clearNode(value);
  2674. var newOption = options[k].cloneNode(true);
  2675. newOption.onclick = function(){};
  2676. value.appendChild(newOption);
  2677. }
  2678. }
  2679. return this._val;
  2680. };
  2681. if( typeof par.value != 'undefined' ){
  2682. re._value( par.value );
  2683. }
  2684. return re;
  2685. }
  2686.  
  2687. }; // Duraks
  2688.  
  2689. Duraks.tableMsg.close = function(){
  2690. if( Duraks.tableMsg.node ){
  2691. Duraks.tableMsg.node.remove();
  2692. delete Duraks.tableMsg.node;
  2693. }
  2694. };
  2695.  
  2696. Duraks.reloadCSS = function(){
  2697. var links = document.getElementsByTagName( 'link' );
  2698. var t = ( new Date() ).getTime();
  2699. for( var i = 0; i < links.length; i ++ ){
  2700. if( links.item( i ).type == 'text/css' ){
  2701. links.item( i ).href = links.item( i ).href.split( '?' )[ 0 ] + '?' + t;
  2702. }
  2703. }
  2704. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement