├── .DS_Store ├── .gitignore ├── README.md ├── ROADMAP.md ├── models ├── game.js ├── player.js ├── room.js ├── stopwatch.js ├── table.js └── utility.js ├── public ├── .DS_Store ├── css │ ├── .DS_Store │ ├── jquery.mobile-1.1.1.min.css │ └── style.css ├── img │ ├── .DS_Store │ ├── ajax-loader.gif │ ├── ajax-loader.png │ ├── icons-18-black.png │ ├── icons-18-white.png │ ├── icons-36-black.png │ ├── icons-36-white.png │ └── table-images │ │ ├── back.png │ │ ├── blurry.jpg │ │ ├── botleft.png │ │ ├── botright.png │ │ ├── gradback.png │ │ ├── gradhead.png │ │ ├── gradhover.png │ │ ├── header.jpg │ │ ├── left.png │ │ ├── pattern-head.png │ │ ├── pattern.gif │ │ ├── pattern.png │ │ ├── patternb-head.png │ │ ├── patternb.png │ │ └── right.png ├── js │ ├── .DS_Store │ ├── game.js │ ├── graphic.js │ ├── jquery.min.js │ ├── jquery.mobile-1.1.1.min.js │ └── viewporter.js └── viewporter.js ├── server.js └── views └── index.ejs /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | 10 | pids 11 | logs 12 | results 13 | 14 | node_modules 15 | npm-debug.log -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Node.js, Socket.io and Express based Multiplayer Bingo Game 2 | =========================================================== 3 | 4 | Bingo game developing in Node.js using Socket.io and Express -------------------------------------------------------------------------------- /ROADMAP.md: -------------------------------------------------------------------------------- 1 | Roadmap of Bingo 2 | ================ 3 | 4 | 1. Messaging between Client and Server is like that: 5 | * connectToServer(username) - Client 6 | * newUserOnline(tables,user) - Server 7 | * connectToTable(tableID) - Client 8 | * userConnectedToTable(tables,user) - Server 9 | * gameStarted(tables) - Server 10 | * numberChosen(table,number) - Server 11 | * gameFinished(table,winner) - Server 12 | * gameRestarted(tables) - Server 13 | * userLeaveFromTable(user) - Client 14 | * userDisconnectedFromTable(tables,players) - Server 15 | * userDisconnectedFromGame(tables,players) - Server 16 | * sendChatMessage(message) - Client 17 | * userSendChatMessage(user.message) - Server 18 | * sendChatMessageToUser(message,user) - Client 19 | * userSentChatMessageToUser(message,user) - Server 20 | 2. Messages should be implemented 21 | 3. Client design should be completed 22 | 4. Client implementation should be started 23 | -------------------------------------------------------------------------------- /models/game.js: -------------------------------------------------------------------------------- 1 | r = require('mersenne'); 2 | Stopwatch = require('./stopwatch.js'); 3 | 4 | Array.prototype.remove = function(from, to) { 5 | var rest = this.slice((to || from) + 1 || this.length); 6 | this.length = from < 0 ? this.length + from : from; 7 | return this.push.apply(this, rest); 8 | }; 9 | 10 | function Game(){ 11 | this.numbers = [1,2,3,4,5,6,7,8,9,10 12 | ,11,12,13,14,15,16,17,18,19,20 13 | ,21,22,23,24,25,26,27,28,29,30 14 | ,31,32,33,34,35,36,37,38,39,40 15 | ,41,42,43,44,45,46,47,48,49,50 16 | ,51,52,53,54,55,56,57,58,59,60 17 | ,61,62,63,64,65,66,67,68,69,70 18 | ,71,72,73,74,75,76,77,78,79,80 19 | ,81,82,83,84,85,86,87,88,89,90]; 20 | this.nonSelectedNumbers = [1,2,3,4,5,6,7,8,9,10 21 | ,11,12,13,14,15,16,17,18,19,20 22 | ,21,22,23,24,25,26,27,28,29,30 23 | ,31,32,33,34,35,36,37,38,39,40 24 | ,41,42,43,44,45,46,47,48,49,50 25 | ,51,52,53,54,55,56,57,58,59,60 26 | ,61,62,63,64,65,66,67,68,69,70 27 | ,71,72,73,74,75,76,77,78,79,80 28 | ,81,82,83,84,85,86,87,88,89,90]; 29 | this.selectedNumbers = []; 30 | }; 31 | 32 | Game.prototype.chooseNumber = function() { 33 | //Remove from nonSelectedNumbers and add to the selectedNumbers 34 | if(this.selectedNumbers.length < 89){ 35 | var chosenNumberIndex = r.rand(this.nonSelectedNumbers.length - 1); 36 | var number = this.nonSelectedNumbers[chosenNumberIndex]; 37 | this.nonSelectedNumbers.remove(chosenNumberIndex); 38 | this.selectedNumbers.push(number); 39 | return number; 40 | } 41 | else if(this.nonSelectedNumbers.length == 1){ 42 | var chosenNumberIndex = 0; 43 | var number = this.nonSelectedNumbers[chosenNumberIndex]; 44 | this.nonSelectedNumbers.remove(chosenNumberIndex); 45 | this.selectedNumbers.push(number); 46 | return number; 47 | } 48 | }; 49 | 50 | Game.prototype.createPlayerCard = function(player){ 51 | var newNumberArray = this.numbers.slice(); 52 | var chosenNumberArray = []; 53 | //Choose 15 numbers from the numbers array 54 | var card = [[],[],[],[],[],[],[],[],[]]; 55 | var cardNumberCount = 0; 56 | while(cardNumberCount < 15){ 57 | var chosenNumberIndex = r.rand(89 - cardNumberCount); 58 | var chosenNumber = newNumberArray[chosenNumberIndex]; 59 | newNumberArray.remove(chosenNumberIndex); 60 | if(chosenNumber == 90 && card[8].length < 3){ 61 | card[8].push(chosenNumber); 62 | cardNumberCount++; 63 | chosenNumberArray.push(chosenNumber); 64 | } 65 | else if(card[parseInt(chosenNumber / 10)].length < 3){ 66 | card[parseInt(chosenNumber / 10)].push(chosenNumber); 67 | cardNumberCount++; 68 | chosenNumberArray.push(chosenNumber); 69 | } 70 | } 71 | player.card = card; 72 | player.cardInStraight = chosenNumberArray; 73 | }; 74 | 75 | Game.prototype.isPlayerWinsBingo = function (player) { 76 | var bingoArray = []; 77 | console.log("Player Card Length: " + player.cardInStraight.length); 78 | for (var i = 0; i < this.selectedNumbers.length; i++) { 79 | for(var j = 0; j < player.cardInStraight.length; j++){ 80 | if(this.selectedNumbers[i] == player.cardInStraight[j]){ 81 | bingoArray.push(true); 82 | } 83 | } 84 | } 85 | console.log(bingoArray); 86 | return bingoArray.length == 15; 87 | }; 88 | 89 | Game.prototype.startGame = function(utility,io,table) { 90 | var stopwatch = new Stopwatch(); 91 | var gameObject = this; 92 | stopwatch.on('tick', function(time) { 93 | var chosenNumber = gameObject.chooseNumber(); 94 | utility.sendEventToTableInPlay('numberChosen',{chosenNumber: chosenNumber},io,table); 95 | var bingoWinners = gameObject.checkAnyPlayerWinsBingo(table); 96 | console.log(gameObject.selectedNumbers.length); 97 | console.log(gameObject.nonSelectedNumbers.length); 98 | if(bingoWinners.length > 0){ 99 | //Whoorayyy at least one player wins the bingo 100 | utility.sendEventToTableInPlay('gameFinished',{message:"Game is finished"},io,table); 101 | utility.sendEventToSelectedPlayers('bingoWinner',{message:"You are the bingo winner!"},io,bingoWinners); 102 | stopwatch.stop(); 103 | stopwatch.reset(); 104 | table.status = "full"; 105 | for(var i = 0; i < table.players.length; i++){ 106 | table.players[i].status = "inTable"; 107 | } 108 | //Ask players to play again or leave the room 109 | } 110 | }); 111 | stopwatch.start(); 112 | }; 113 | 114 | Game.prototype.checkAnyPlayerWinsBingo = function(table) { 115 | var found = []; 116 | for(var i = 0; i < table.players.length; i++){ 117 | if(this.isPlayerWinsBingo(table.players[i])){ 118 | found.push(table.players[i]); 119 | } 120 | } 121 | return found; 122 | }; 123 | 124 | module.exports = Game; -------------------------------------------------------------------------------- /models/player.js: -------------------------------------------------------------------------------- 1 | function Player(playerID){ 2 | this.id = playerID; 3 | this.name = ""; 4 | this.tableID = ""; 5 | this.status = "available"; 6 | this.card = []; 7 | this.cardInStraight = []; 8 | }; 9 | 10 | Player.prototype.setName = function(name){ 11 | this.name = name; 12 | }; 13 | 14 | Player.prototype.getName = function(){ 15 | return this.name; 16 | }; 17 | 18 | Player.prototype.setTableID = function(tableID){ 19 | this.tableID = tableID; 20 | }; 21 | 22 | Player.prototype.getTableID = function(){ 23 | return this.tableID; 24 | }; 25 | 26 | Player.prototype.setCard = function(card){ 27 | this.card = card; 28 | }; 29 | 30 | Player.prototype.getCard = function(){ 31 | return this.card; 32 | }; 33 | 34 | Player.prototype.setStatus = function(status){ 35 | this.status = status; 36 | }; 37 | 38 | Player.prototype.isAvailable = function(){ 39 | return this.status === "available"; 40 | }; 41 | 42 | Player.prototype.isInTable = function(){ 43 | return this.status === "inTable"; 44 | }; 45 | 46 | Player.prototype.isPlaying = function(){ 47 | return this.status === "playing"; 48 | }; 49 | 50 | module.exports = Player; -------------------------------------------------------------------------------- /models/room.js: -------------------------------------------------------------------------------- 1 | Array.prototype.remove = function(from, to) { 2 | var rest = this.slice((to || from) + 1 || this.length); 3 | this.length = from < 0 ? this.length + from : from; 4 | return this.push.apply(this, rest); 5 | }; 6 | function Room(name){ 7 | this.players = []; 8 | this.tables = []; 9 | this.name = name; 10 | }; 11 | 12 | Room.prototype.addPlayer = function(player) { 13 | this.players.push(player); 14 | }; 15 | 16 | Room.prototype.removePlayer = function(player) { 17 | var playerIndex = -1; 18 | for(var i = 0; i < this.players.length; i++){ 19 | if(this.players[i].id == player.id){ 20 | playerIndex = i; 21 | break; 22 | } 23 | } 24 | this.players.remove(playerIndex); 25 | }; 26 | 27 | Room.prototype.addTable = function(table) { 28 | this.tables.push(table); 29 | }; 30 | 31 | Room.prototype.removeTable = function(table) { 32 | var tableIndex = -1; 33 | for(var i = 0; i < this.tables.length; i++){ 34 | if(this.tables[i].id == table.id){ 35 | tableIndex = i; 36 | break; 37 | } 38 | } 39 | this.tables.remove(tableIndex); 40 | }; 41 | 42 | Room.prototype.getPlayer = function(playerId) { 43 | var player = null; 44 | for(var i = 0; i < this.players.length; i++){ 45 | if(this.players[i].id == playerId){ 46 | player = this.players[i]; 47 | break; 48 | } 49 | } 50 | return player; 51 | }; 52 | 53 | Room.prototype.getTable = function(tableId) { 54 | var table = null; 55 | for(var i = 0; i < this.tables.length; i++){ 56 | if(this.tables[i].id == tableId){ 57 | table = this.tables[i]; 58 | break; 59 | } 60 | } 61 | return table; 62 | }; 63 | 64 | Room.prototype.getTableMessage = function() { 65 | var tableMessageList = []; 66 | for (var i = 0; i < this.tables.length; i++) { 67 | tableMessageList.push(this.tables[i].createMessageObject()); 68 | }; 69 | return tableMessageList; 70 | }; 71 | 72 | module.exports = Room; -------------------------------------------------------------------------------- /models/stopwatch.js: -------------------------------------------------------------------------------- 1 | var util = require('util'), 2 | events = require('events') 3 | _ = require('underscore'); 4 | 5 | // --------------------------------------------- 6 | // Constructor 7 | // --------------------------------------------- 8 | function Stopwatch() { 9 | if(false === (this instanceof Stopwatch)) { 10 | return new Stopwatch(); 11 | } 12 | 13 | this.hour = 3600000; 14 | this.minute = 60000; 15 | this.second = 1000; 16 | this.time = this.hour; 17 | this.interval = undefined; 18 | 19 | events.EventEmitter.call(this); 20 | 21 | // Use Underscore to bind all of our methods 22 | // to the proper context 23 | _.bindAll(this); 24 | }; 25 | 26 | // --------------------------------------------- 27 | // Inherit from EventEmitter 28 | // --------------------------------------------- 29 | util.inherits(Stopwatch, events.EventEmitter); 30 | 31 | // --------------------------------------------- 32 | // Methods 33 | // --------------------------------------------- 34 | Stopwatch.prototype.start = function() { 35 | console.log('Starting Stopwatch!'); 36 | // note the use of _.bindAll in the constructor 37 | // with bindAll we can pass one of our methods to 38 | // setInterval and have it called with the proper 'this' value 39 | this.interval = setInterval(this.onTick, this.second / 2); 40 | this.emit('start'); 41 | }; 42 | 43 | Stopwatch.prototype.stop = function() { 44 | console.log('Stopping Stopwatch!'); 45 | if (this.interval) { 46 | clearInterval(this.interval); 47 | this.emit('stop'); 48 | } 49 | }; 50 | 51 | Stopwatch.prototype.reset = function() { 52 | console.log('Resetting Stopwatch!'); 53 | this.time = this.hour; 54 | this.emit('reset'); 55 | }; 56 | 57 | Stopwatch.prototype.onTick = function() { 58 | var remainder = this.time, 59 | numHours, 60 | numMinutes, 61 | numSeconds, 62 | output = ""; 63 | 64 | if (this.time === 0) { 65 | this.stop(); 66 | return; 67 | } 68 | 69 | numHours = String(parseInt(remainder / this.hour, 10)); 70 | remainder -= this.hour * numHours; 71 | 72 | numMinutes = String(parseInt(remainder / this.minute, 10)); 73 | remainder -= this.minute * numMinutes; 74 | 75 | numSeconds = String(parseInt(remainder / this.second, 10)); 76 | 77 | output = _.map([numHours, numMinutes, numSeconds], function(str) { 78 | if (str.length === 1) { 79 | str = "0" + str; 80 | } 81 | return str; 82 | }).join(":"); 83 | 84 | this.emit('tick', output); 85 | this.time -= this.second / 2; 86 | }; 87 | 88 | // --------------------------------------------- 89 | // Export 90 | // --------------------------------------------- 91 | module.exports = Stopwatch; -------------------------------------------------------------------------------- /models/table.js: -------------------------------------------------------------------------------- 1 | Game = require('./game.js'); 2 | 3 | 4 | Array.prototype.remove = function(from, to) { 5 | var rest = this.slice((to || from) + 1 || this.length); 6 | this.length = from < 0 ? this.length + from : from; 7 | return this.push.apply(this, rest); 8 | }; 9 | 10 | function Table(tableID){ 11 | this.id = tableID; 12 | this.name = ""; 13 | this.status = "available"; 14 | this.players = []; 15 | this.playerLimit = 2; 16 | this.gameObj = null; 17 | }; 18 | 19 | Table.prototype.setName = function(name){ 20 | this.name = name; 21 | }; 22 | 23 | Table.prototype.getName = function(){ 24 | return this.name; 25 | }; 26 | 27 | Table.prototype.setStatus = function(status){ 28 | this.status = status; 29 | }; 30 | 31 | Table.prototype.isAvailable = function(){ 32 | return this.status === "available"; 33 | }; 34 | 35 | Table.prototype.isFull = function(){ 36 | return this.status === "full"; 37 | }; 38 | 39 | Table.prototype.isPlaying = function(){ 40 | return this.status === "playing"; 41 | }; 42 | 43 | Table.prototype.addPlayer = function(player) { 44 | //Check table state 45 | if(this.state == "available"){ 46 | //Check this player is in table or not 47 | var found = false; 48 | for(var i = 0; i < this.players.length; i++){ 49 | if(this.players[i].id == player.id){ 50 | found = true; 51 | break; 52 | } 53 | } 54 | if(!found){ 55 | this.players.push(player); 56 | if(this.players.length == this.playerLimit){ 57 | this.status = "playing"; 58 | //Change status of the each player 59 | this.gameObj = new Game(); 60 | for(var i = 0; i < this.players.length; i++){ 61 | this.players[i].status = "playing"; 62 | this.gameObj.createPlayerCard(this.players[i]); 63 | } 64 | } 65 | return true; 66 | } 67 | } 68 | return false; 69 | }; 70 | 71 | Table.prototype.removePlayer = function(player){ 72 | var index = -1; 73 | for(var i = 0; i < this.players.length; i++){ 74 | if(this.players[i].id === player.id){ 75 | index = i; 76 | break; 77 | } 78 | } 79 | if(index != -1){ 80 | this.players.remove(index); 81 | } 82 | }; 83 | 84 | Table.prototype.isTableAvailable = function() { 85 | return (this.playerLimit > this.players.length); 86 | }; 87 | 88 | Table.prototype.createMessageObject = function() { 89 | var table = this; 90 | var TableMessage = function(){ 91 | this.id = table.id; 92 | this.name = table.name; 93 | this.status = table.status; 94 | this.players = table.players; 95 | this.playerLimit = table.playerLimit; 96 | }; 97 | 98 | return new TableMessage(); 99 | }; 100 | 101 | module.exports = Table; -------------------------------------------------------------------------------- /models/utility.js: -------------------------------------------------------------------------------- 1 | Game = require('./game.js'); 2 | Table = require('./table.js'); 3 | var uuid = require('node-uuid'); 4 | 5 | function Utility () {}; 6 | 7 | Utility.prototype.sendEventToAllPlayers = function(event,message,io,players) { 8 | for(var i = 0; i < players.length; i++){ 9 | io.sockets.socket(players[i].id).emit(event, message); 10 | } 11 | }; 12 | 13 | Utility.prototype.sendEventToAllPlayersButPlayer = function(event,message,io,players,player) { 14 | for(var i = 0; i < players.length; i++){ 15 | if(players[i].id != player.id){ 16 | io.sockets.socket(players[i].id).emit(event, message); 17 | } 18 | } 19 | }; 20 | 21 | Utility.prototype.sendEventToSpecificPlayer = function(event,message,io,player) { 22 | io.sockets.socket(player.id).emit(event,message); 23 | }; 24 | 25 | Utility.prototype.sendEventToTable = function(event,message,io,table) { 26 | for(var i = 0; i < table.players.length; i++){ 27 | io.sockets.socket(table.players[i].id).emit(event, message); 28 | } 29 | }; 30 | 31 | Utility.prototype.sendEventToTableInPlay = function(event,message,io,table) { 32 | for (var i = 0; i < table.players.length; i++) { 33 | message.userId = table.players[i].id; 34 | message.userCard = table.players[i].card; 35 | message.userCardInStraight = table.players[i].cardInStraight; 36 | io.sockets.socket(table.players[i].id).emit(event, message); 37 | }; 38 | }; 39 | 40 | Utility.prototype.sendEventToAllFreePlayers = function(event,message,io,players) { 41 | for(var i = 0; i < players.length; i++){ 42 | if(players[i].status === "available"){ 43 | io.sockets.socket(players[i].id).emit(event, message); 44 | } 45 | } 46 | }; 47 | 48 | Utility.prototype.sendEventToAllFreePlayersButPlayer = function(event,message,io,players,player) { 49 | for(var i = 0; i < players.length; i++){ 50 | if(players[i].status === "available" && players[i].id != player.id){ 51 | io.sockets.socket(players[i].id).emit(event, message); 52 | } 53 | } 54 | }; 55 | 56 | Utility.prototype.sendEventToSelectedPlayers = function(event,message,io,players) { 57 | for(var i = 0; i < players.length; i++){ 58 | io.sockets.socket(players[i].id).emit(event, message); 59 | } 60 | }; 61 | 62 | Utility.prototype.createSampleTables = function(tableListSize) { 63 | var tableList = []; 64 | for(var i = 0; i < tableListSize; i++){ 65 | var game = new Game(); 66 | var table = new Table(uuid.v4()); 67 | table.setName("jstanbul Room " + (i + 1)); 68 | table.gameObj = game; 69 | table.state = "available"; 70 | tableList.push(table); 71 | } 72 | return tableList; 73 | }; 74 | 75 | module.exports = Utility; -------------------------------------------------------------------------------- /public/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/.DS_Store -------------------------------------------------------------------------------- /public/css/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/css/.DS_Store -------------------------------------------------------------------------------- /public/css/jquery.mobile-1.1.1.min.css: -------------------------------------------------------------------------------- 1 | /*! jQuery Mobile v1.1.1 1981b3f5ec22675ae47df8f0bdf9622e7780e90e jquerymobile.com | jquery.org/license */ 2 | .ui-bar-a{border:1px solid #333;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(#3c3c3c,#111);background-image:-moz-linear-gradient(#3c3c3c,#111);background-image:-ms-linear-gradient(#3c3c3c,#111);background-image:-o-linear-gradient(#3c3c3c,#111);background-image:linear-gradient(#3c3c3c,#111)}.ui-bar-a,.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a .ui-link-inherit{color:#fff}.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-body-a,.ui-overlay-a{border:1px solid #444;background:#222;color:#fff;text-shadow:0 1px 1px #111;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#222));background-image:-webkit-linear-gradient(#444,#222);background-image:-moz-linear-gradient(#444,#222);background-image:-ms-linear-gradient(#444,#222);background-image:-o-linear-gradient(#444,#222);background-image:linear-gradient(#444,#222)}.ui-overlay-a{background-image:none;border-width:0}.ui-body-a,.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a .ui-link-inherit{color:#fff}.ui-body-a .ui-link{color:#2489ce;font-weight:bold}.ui-body-a .ui-link:visited{color:#2489ce}.ui-body-a .ui-link:hover{color:#2489ce}.ui-body-a .ui-link:active{color:#2489ce}.ui-btn-up-a{border:1px solid #111;background:#333;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#2d2d2d));background-image:-webkit-linear-gradient(#444,#2d2d2d);background-image:-moz-linear-gradient(#444,#2d2d2d);background-image:-ms-linear-gradient(#444,#2d2d2d);background-image:-o-linear-gradient(#444,#2d2d2d);background-image:linear-gradient(#444,#2d2d2d)}.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#383838));background-image:-webkit-linear-gradient(#555,#383838);background-image:-moz-linear-gradient(#555,#383838);background-image:-ms-linear-gradient(#555,#383838);background-image:-o-linear-gradient(#555,#383838);background-image:linear-gradient(#555,#383838)}.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#222;font-weight:bold;color:#fff;text-shadow:0 1px 1px #111;background-image:-webkit-gradient(linear,left top,left bottom,from(#202020),to(#2c2c2c));background-image:-webkit-linear-gradient(#202020,#2c2c2c);background-image:-moz-linear-gradient(#202020,#2c2c2c);background-image:-ms-linear-gradient(#202020,#2c2c2c);background-image:-o-linear-gradient(#202020,#2c2c2c);background-image:linear-gradient(#202020,#2c2c2c)}.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 1px 1px #3e6790;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#497bae));background-image:-webkit-linear-gradient(#6facd5,#497bae);background-image:-moz-linear-gradient(#6facd5,#497bae);background-image:-ms-linear-gradient(#6facd5,#497bae);background-image:-o-linear-gradient(#6facd5,#497bae);background-image:linear-gradient(#6facd5,#497bae)}.ui-bar-b,.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b .ui-link-inherit{color:#fff}.ui-bar-b a.ui-link{color:#ddf0f8;font-weight:bold}.ui-bar-b a.ui-link:visited{color:#ddf0f8}.ui-bar-b a.ui-link:hover{color:#ddf0f8}.ui-bar-b a.ui-link:active{color:#ddf0f8}.ui-body-b,.ui-overlay-b{border:1px solid #999;background:#f3f3f3;color:#222;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#ccc));background-image:-webkit-linear-gradient(#ddd,#ccc);background-image:-moz-linear-gradient(#ddd,#ccc);background-image:-ms-linear-gradient(#ddd,#ccc);background-image:-o-linear-gradient(#ddd,#ccc);background-image:linear-gradient(#ddd,#ccc)}.ui-overlay-b{background-image:none;border-width:0}.ui-body-b,.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-body-b .ui-link:visited{color:#2489ce}.ui-body-b .ui-link:hover{color:#2489ce}.ui-body-b .ui-link:active{color:#2489ce}.ui-btn-up-b{border:1px solid #044062;background:#396b9e;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(#5f9cc5,#396b9e);background-image:-moz-linear-gradient(#5f9cc5,#396b9e);background-image:-ms-linear-gradient(#5f9cc5,#396b9e);background-image:-o-linear-gradient(#5f9cc5,#396b9e);background-image:linear-gradient(#5f9cc5,#396b9e)}.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00415e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#6facd5),to(#4272a4));background-image:-webkit-linear-gradient(#6facd5,#4272a4);background-image:-moz-linear-gradient(#6facd5,#4272a4);background-image:-ms-linear-gradient(#6facd5,#4272a4);background-image:-o-linear-gradient(#6facd5,#4272a4);background-image:linear-gradient(#6facd5,#4272a4)}.ui-btn-hover-b:visited,.ui-btn-hover-a:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 1px 1px #194b7e;background-image:-webkit-gradient(linear,left top,left bottom,from(#295b8e),to(#3e79b5));background-image:-webkit-linear-gradient(#295b8e,#3e79b5);background-image:-moz-linear-gradient(#295b8e,#3e79b5);background-image:-ms-linear-gradient(#295b8e,#3e79b5);background-image:-o-linear-gradient(#295b8e,#3e79b5);background-image:linear-gradient(#295b8e,#3e79b5)}.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px solid #b3b3b3;background:#eee;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#ddd));background-image:-webkit-linear-gradient(#f0f0f0,#ddd);background-image:-moz-linear-gradient(#f0f0f0,#ddd);background-image:-ms-linear-gradient(#f0f0f0,#ddd);background-image:-o-linear-gradient(#f0f0f0,#ddd);background-image:linear-gradient(#f0f0f0,#ddd)}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:bold}.ui-bar-c a.ui-link:visited{color:#2489ce}.ui-bar-c a.ui-link:hover{color:#2489ce}.ui-bar-c a.ui-link:active{color:#2489ce}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c,.ui-overlay-c{border:1px solid #aaa;color:#333;text-shadow:0 1px 0 #fff;background:#f9f9f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#eee));background-image:-webkit-linear-gradient(#f9f9f9,#eee);background-image:-moz-linear-gradient(#f9f9f9,#eee);background-image:-ms-linear-gradient(#f9f9f9,#eee);background-image:-o-linear-gradient(#f9f9f9,#eee);background-image:linear-gradient(#f9f9f9,#eee)}.ui-overlay-c{background-image:none;border-width:0}.ui-body-c,.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-body-c .ui-link:visited{color:#2489ce}.ui-body-c .ui-link:hover{color:#2489ce}.ui-body-c .ui-link:active{color:#2489ce}.ui-btn-up-c{border:1px solid #ccc;background:#eee;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f1f1f1));background-image:-webkit-linear-gradient(#fff,#f1f1f1);background-image:-moz-linear-gradient(#fff,#f1f1f1);background-image:-ms-linear-gradient(#fff,#f1f1f1);background-image:-o-linear-gradient(#fff,#f1f1f1);background-image:linear-gradient(#fff,#f1f1f1)}.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dfdfdf;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f6f6f6),to(#e0e0e0));background-image:-webkit-linear-gradient(#f6f6f6,#e0e0e0);background-image:-moz-linear-gradient(#f6f6f6,#e0e0e0);background-image:-ms-linear-gradient(#f6f6f6,#e0e0e0);background-image:-o-linear-gradient(#f6f6f6,#e0e0e0);background-image:linear-gradient(#f6f6f6,#e0e0e0)}.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #bbb;background:#d6d6d6;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#d0d0d0),to(#dfdfdf));background-image:-webkit-linear-gradient(#d0d0d0,#dfdfdf);background-image:-moz-linear-gradient(#d0d0d0,#dfdfdf);background-image:-ms-linear-gradient(#d0d0d0,#dfdfdf);background-image:-o-linear-gradient(#d0d0d0,#dfdfdf);background-image:linear-gradient(#d0d0d0,#dfdfdf)}.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px solid #bbb;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(#ddd,#bbb);background-image:-moz-linear-gradient(#ddd,#bbb);background-image:-ms-linear-gradient(#ddd,#bbb);background-image:-o-linear-gradient(#ddd,#bbb);background-image:linear-gradient(#ddd,#bbb)}.ui-bar-d,.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d .ui-link-inherit{color:#333}.ui-bar-d a.ui-link{color:#2489ce;font-weight:bold}.ui-bar-d a.ui-link:visited{color:#2489ce}.ui-bar-d a.ui-link:hover{color:#2489ce}.ui-bar-d a.ui-link:active{color:#2489ce}.ui-body-d,.ui-overlay-d{border:1px solid #bbb;color:#333;text-shadow:0 1px 0 #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(#fff,#fff);background-image:-moz-linear-gradient(#fff,#fff);background-image:-ms-linear-gradient(#fff,#fff);background-image:-o-linear-gradient(#fff,#fff);background-image:linear-gradient(#fff,#fff)}.ui-overlay-d{background-image:none;border-width:0}.ui-body-d,.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d .ui-link:visited{color:#2489ce}.ui-body-d .ui-link:hover{color:#2489ce}.ui-body-d .ui-link:active{color:#2489ce}.ui-btn-up-d{border:1px solid #bbb;background:#fff;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#f6f6f6));background-image:-webkit-linear-gradient(#fafafa,#f6f6f6);background-image:-moz-linear-gradient(#fafafa,#f6f6f6);background-image:-ms-linear-gradient(#fafafa,#f6f6f6);background-image:-o-linear-gradient(#fafafa,#f6f6f6);background-image:linear-gradient(#fafafa,#f6f6f6)}.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;cursor:pointer;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(#eee,#fff);background-image:-moz-linear-gradient(#eee,#fff);background-image:-ms-linear-gradient(#eee,#fff);background-image:-o-linear-gradient(#eee,#fff);background-image:linear-gradient(#eee,#fff)}.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#333}.ui-btn-down-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#e5e5e5),to(#f2f2f2));background-image:-webkit-linear-gradient(#e5e5e5,#f2f2f2);background-image:-moz-linear-gradient(#e5e5e5,#f2f2f2);background-image:-ms-linear-gradient(#e5e5e5,#f2f2f2);background-image:-o-linear-gradient(#e5e5e5,#f2f2f2);background-image:linear-gradient(#e5e5e5,#f2f2f2)}.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#333}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fceda7),to(#fbef7e));background-image:-webkit-linear-gradient(#fceda7,#fbef7e);background-image:-moz-linear-gradient(#fceda7,#fbef7e);background-image:-ms-linear-gradient(#fceda7,#fbef7e);background-image:-o-linear-gradient(#fceda7,#fbef7e);background-image:linear-gradient(#fceda7,#fbef7e)}.ui-bar-e,.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e .ui-link-inherit{color:#333}.ui-bar-e a.ui-link{color:#2489ce;font-weight:bold}.ui-bar-e a.ui-link:visited{color:#2489ce}.ui-bar-e a.ui-link:hover{color:#2489ce}.ui-bar-e a.ui-link:active{color:#2489ce}.ui-body-e,.ui-overlay-e{border:1px solid #f7c942;color:#222;text-shadow:0 1px 0 #fff;background:#fff9df;background-image:-webkit-gradient(linear,left top,left bottom,from(#fffadf),to(#fff3a5));background-image:-webkit-linear-gradient(#fffadf,#fff3a5);background-image:-moz-linear-gradient(#fffadf,#fff3a5);background-image:-ms-linear-gradient(#fffadf,#fff3a5);background-image:-o-linear-gradient(#fffadf,#fff3a5);background-image:linear-gradient(#fffadf,#fff3a5)}.ui-overlay-e{background-image:none;border-width:0}.ui-body-e,.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e .ui-link:visited{color:#2489ce}.ui-body-e .ui-link:hover{color:#2489ce}.ui-body-e .ui-link:active{color:#2489ce}.ui-btn-up-e{border:1px solid #f4c63f;background:#fadb4e;font-weight:bold;color:#222;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#ffefaa),to(#ffe155));background-image:-webkit-linear-gradient(#ffefaa,#ffe155);background-image:-moz-linear-gradient(#ffefaa,#ffe155);background-image:-ms-linear-gradient(#ffefaa,#ffe155);background-image:-o-linear-gradient(#ffefaa,#ffe155);background-image:linear-gradient(#ffefaa,#ffe155)}.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#222}.ui-btn-hover-e{border:1px solid #f2c43d;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff5ba),to(#fbdd52));background-image:-webkit-linear-gradient(#fff5ba,#fbdd52);background-image:-moz-linear-gradient(#fff5ba,#fbdd52);background-image:-ms-linear-gradient(#fff5ba,#fbdd52);background-image:-o-linear-gradient(#fff5ba,#fbdd52);background-image:linear-gradient(#fff5ba,#fbdd52)}.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f2c43d;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8d94c),to(#fadb4e));background-image:-webkit-linear-gradient(#f8d94c,#fadb4e);background-image:-moz-linear-gradient(#f8d94c,#fadb4e);background-image:-ms-linear-gradient(#f8d94c,#fadb4e);background-image:-o-linear-gradient(#f8d94c,#fadb4e);background-image:linear-gradient(#f8d94c,#fadb4e)}.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-btn-active{border:1px solid #2373a5;background:#5393c5;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 1px 1px #3373a5;text-decoration:none;background-image:-webkit-gradient(linear,left top,left bottom,from(#5393c5),to(#6facd5));background-image:-webkit-linear-gradient(#5393c5,#6facd5);background-image:-moz-linear-gradient(#5393c5,#6facd5);background-image:-ms-linear-gradient(#5393c5,#6facd5);background-image:-o-linear-gradient(#5393c5,#6facd5);background-image:linear-gradient(#5393c5,#6facd5);font-family:Helvetica,Arial,sans-serif}.ui-btn-active:visited,.ui-btn-active:hover,.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-disabled .ui-btn-text{-ms-filter:"alpha(opacity=30)";filter:alpha(opacity=30);zoom:1}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(../img/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(../img/icons-18-black.png);background-repeat:no-repeat}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(../img/icons-36-white.png);-moz-background-size:776px 18px;-o-background-size:776px 18px;-webkit-background-size:776px 18px;background-size:776px 18px}.ui-icon-alt{background-image:url(../img/icons-36-black.png)}}.ui-icon-plus{background-position:-0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-612px 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px 50%}.ui-icon-radio-off{background-position:-756px 50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-checkbox .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{background-color:#4596ce}.ui-icon-loading{background:url(../img/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-btn:focus,.ui-link-inherit:focus{outline:0}.ui-btn.ui-focus{z-index:1}.ui-focus,.ui-btn:focus{-moz-box-shadow:inset 0 0 3px #387bbe,0px 0 9px #387bbe;-webkit-box-shadow:inset 0 0 3px #387bbe,0px 0 9px #387bbe;box-shadow:inset 0 0 3px #387bbe,0px 0 9px #387bbe}.ui-input-text.ui-focus,.ui-input-search.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus,.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile,.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile,.ui-mobile .ui-page{min-height:300px}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-110px;margin-top:-43px;padding:10px}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:16px;margin:0;text-align:center}.ui-loader .ui-icon{background-color:#000;display:block;margin:0;width:44px;height:44px;padding:1px;-webkit-border-radius:36px;-moz-border-radius:36px;border-radius:36px}.ui-loader-verbose .ui-icon{margin:0 auto 10px;opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{position:relative;border-left-width:0;border-right-width:0;zoom:1}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-footer .ui-btn-left,.ui-footer .ui-btn-right{position:absolute;top:3px}.ui-header .ui-btn-left,.ui-footer .ui-btn-left{left:5px}.ui-header .ui-btn-right,.ui-footer .ui-btn-right{right:5px}.ui-footer .ui-btn-icon-notext,.ui-header .ui-btn-icon-notext{top:6px}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 30% .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label.ui-input-text,.ui-hide-label label.ui-select,.ui-hide-label label.ui-slider,.ui-hide-label label.ui-submit,.ui-hide-label .ui-controlgroup-label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-moz-transform:scale(1);opacity:1;-webkit-animation-name:popin;-moz-animation-name:popin;-webkit-animation-duration:350ms;-moz-animation-duration:350ms}.pop.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;opacity:0;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-moz-transform:scale(.8);-webkit-animation-name:popout;-moz-animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-moz-transform:translateX(0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-moz-transform:translateX(0);-moz-animation-name:fadein;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-moz-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-moz-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-moz-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.viewport-turn{-webkit-perspective:1000;-moz-perspective:1000;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0 0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0 0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-moz-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-moz-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-moz-transform-origin:none;-webkit-box-shadow:none;-moz-box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-grid-solo .ui-block-a{display:block;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:49.95%}.ui-grid-a>:nth-child(n){width:50%;margin-right:-.5px}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.25%}.ui-grid-b>:nth-child(n){width:33.333%;margin-right:-.5px}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:24.925%}.ui-grid-c>:nth-child(n){width:25%;margin-right:-.5px}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:19.925%}.ui-grid-d>:nth-child(n){width:20%}.ui-grid-d .ui-block-a{clear:left}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-page-pre-in{opacity:0}.ui-header-fixed{top:0}.ui-footer-fixed{bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{opacity:.9}.ui-page-header-fixed{padding-top:2.6875em}.ui-page-footer-fixed{padding-bottom:2.6875em}.ui-page-header-fullscreen .ui-content,.ui-page-footer-fullscreen .ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{left:-99999em}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-navbar{max-width:100%}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:hidden}.ui-navbar li .ui-btn{display:block;text-align:center;margin:0 -1px 0 0;border-right-width:0}.ui-navbar li .ui-btn-icon-right .ui-icon{right:6px}.ui-navbar li:last-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:0;border-right-width:1px}.ui-header .ui-navbar li:last-child .ui-btn,.ui-footer .ui-navbar li:last-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:-1px;border-right-width:0}.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn{margin-right:-1px;border-right-width:1px}.ui-header .ui-navbar li .ui-btn,.ui-footer .ui-navbar li .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn{margin-right:-5px}.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn{margin-right:-4px}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon{right:8px}.ui-navbar li .ui-btn .ui-btn-inner{padding-top:.7em;padding-bottom:.8em}.ui-navbar li .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 0;padding:0}.ui-btn.ui-mini{margin-top:.25em;margin-bottom:.25em}.ui-btn-left,.ui-btn-right,.ui-input-clear,.ui-btn-inline,.ui-grid-a .ui-btn,.ui-grid-b .ui-btn,.ui-grid-c .ui-btn,.ui-grid-d .ui-btn,.ui-grid-e .ui-btn,.ui-grid-solo .ui-btn{margin-right:5px;margin-left:5px}.ui-btn-inner{font-size:16px;padding:.6em 20px;min-width:.75em;display:block;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block;vertical-align:middle}.ui-btn-block{display:block}.ui-header .ui-btn,.ui-footer .ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-block,.ui-footer .ui-btn-block{display:block}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-header .ui-fullsize .ui-btn-inner,.ui-footer .ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 25px}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:0;height:100%}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin:2px 1px 2px 3px;float:left}.ui-btn-text{position:relative;z-index:1;width:100%;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-btn-icon-top .ui-btn-inner{padding-top:40px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:40px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-mini .ui-btn-icon-left .ui-btn-inner{padding-left:30px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-mini .ui-btn-icon-right .ui-btn-inner{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em 3px}.ui-mini.ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px 3px}.ui-mini.ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left>.ui-btn-inner>.ui-icon,.ui-btn-icon-right>.ui-btn-inner>.ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-btn-inner .ui-icon,.ui-btn-icon-bottom .ui-btn-inner .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-mini.ui-btn-icon-left .ui-icon,.ui-mini .ui-btn-icon-left .ui-icon{left:5px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-mini.ui-btn-icon-right .ui-icon,.ui-mini .ui-btn-icon-right .ui-icon{right:5px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-mini.ui-btn-icon-top .ui-icon,.ui-mini .ui-btn-icon-top .ui-icon{top:5px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-mini.ui-btn-icon-bottom .ui-icon,.ui-mini .ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;opacity:.1;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);font-size:1px;border:0;text-indent:-9999px}.ui-field-contain .ui-btn.ui-submit{margin:0}label.ui-submit{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}@media all and (min-width:450px){.ui-field-contain label.ui-submit{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-btn.ui-submit{width:60%;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label .ui-btn.ui-submit{width:auto}}.ui-collapsible{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading .ui-btn{text-align:left;margin:0}.ui-collapsible-heading .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-left:12px;padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{padding-right:40px;text-align:center}.ui-collapsible-heading .ui-btn span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -8px;padding:10px 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0;zoom:1}.ui-controlgroup.ui-mini,fieldset.ui-controlgroup.ui-mini{margin:.25em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-bar .ui-controlgroup{margin:0 5px}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .4em}.ui-controlgroup-controls{display:block;width:100%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-controls label.ui-select{position:absolute;left:-9999px}.ui-controlgroup .ui-btn-icon-notext{width:24px;height:24px}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;right:50%;margin:-9px -9px 0 0}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls{zoom:1}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal .ui-btn,.ui-controlgroup-horizontal .ui-select,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio{float:left;clear:none;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-select .ui-btn,.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}@media all and (min-width:450px){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:60%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%;display:block}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}.ui-hide-label .ui-controlgroup-controls{width:100%}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px auto;padding:0}.ui-dialog .ui-header{margin-top:15%;border:0;overflow:hidden}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog .ui-footer{display:block;position:relative;width:auto}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;padding:0}.ui-dialog .ui-footer{padding:0 15px}.ui-dialog .ui-content{padding:15px}.ui-dialog{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:0;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{margin:.5em 0;text-align:left;z-index:2}.ui-checkbox .ui-btn.ui-mini,.ui-radio .ui-btn.ui-mini{margin:.25em 0}.ui-controlgroup .ui-checkbox .ui-btn,.ui-controlgroup .ui-radio .ui-btn{margin:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner{padding-left:36px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:36px}.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner,.ui-radio .ui-btn-icon-bottom .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon,.ui-radio .ui-mini.ui-btn-icon-left .ui-icon{left:9px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox .ui-btn-icon-top .ui-icon,.ui-radio .ui-btn-icon-top .ui-icon{top:10px}.ui-checkbox .ui-btn-icon-bottom .ui-icon,.ui-radio .ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain,fieldset.ui-field-contain{padding:.8em 0;margin:0;border-width:0 0 1px 0;overflow:visible}.ui-field-contain:last-child{border-bottom-width:0}.ui-field-contain{max-width:100%}@media all and (min-width:450px){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden;opacity:1}.ui-field-contain .ui-select .ui-btn{margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:none;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}.ui-select .ui-disabled{opacity:.3}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0}.ui-select .ui-btn-icon-right .ui-btn-inner,.ui-select .ui-li-has-count .ui-btn-inner{padding-right:45px}.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:32px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:80px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:67px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count{right:45px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count{right:32px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{position:absolute;padding:0;z-index:1100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-99999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:450px){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:60%;display:inline-block}.ui-hide-label .ui-select{width:100%}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;margin:.5em 0;line-height:1.4;font-size:16px;display:block;width:100%;outline:0}input.ui-input-text.ui-mini,textarea.ui-input-text.ui-mini{margin:.25em 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text{margin:0}input.ui-input-text,textarea.ui-input-text,.ui-input-search{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0 30px;margin:.5em 0;background-image:none;position:relative}.ui-input-search.ui-mini{margin:.25em 0}.ui-field-contain .ui-input-search{margin:0}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-mini .ui-input-clear{right:-3px}.ui-input-search .ui-input-clear-hidden{display:none}input.ui-mini,.ui-mini input,textarea.ui-mini{font-size:14px}textarea.ui-mini{height:45px}@media all and (min-width:450px){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search{width:60%;display:inline-block}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search{width:100%}.ui-input-search input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content .ui-listview-inset{margin:1em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em 15px;font-size:14px;font-weight:bold}.ui-li-divider .ui-btn-text,.ui-li-static .ui-btn-text{font-size:16px}.ui-li-divider .ui-mini .ui-btn-text,.ui-li-static .ui-mini .ui-btn-text{font-size:inherit}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count,.ui-li-divider.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:40px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:16px;max-width:16px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:53px}.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt.ui-li-has-count{padding-right:88px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:10px}.ui-li-has-count.ui-li-divider .ui-li-count,.ui-li-has-count .ui-link-inherit .ui-li-count{margin-top:-.95em}.ui-li-has-arrow.ui-li-has-count .ui-li-count{right:40px}.ui-li-has-alt.ui-li-has-count .ui-li-count{right:53px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-13px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}input.ui-slider-input,.ui-field-contain input.ui-slider-input{display:inline-block;width:50px;background-image:none;padding:.4em;margin:.5em 0;line-height:1.4;font-size:16px;outline:0}input.ui-slider-input.ui-mini,.ui-field-contain input.ui-slider-input.ui-mini{width:45px;margin:.25em 0;font-size:14px}.ui-field-contain input.ui-slider-input{margin:0}input.ui-slider-input,.ui-field-contain input.ui-slider-input{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0 2% 0 20px;top:4px;width:65%}div.ui-slider-mini{height:12px;margin-left:10px;top:2px}div.ui-slider-bg{border:0;height:100%;padding-right:8px}.ui-controlgroup a.ui-slider-handle,a.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px;outline:0}a.ui-slider-handle .ui-btn-inner{padding:0;height:100%}div.ui-slider-mini a.ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -7px}div.ui-slider-mini a.ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:-9px 0 0 -9px;border-top:0}@media all and (min-width:450px){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{width:43%}.ui-field-contain div.ui-slider-switch{width:5.5em}}div.ui-slider-switch{height:32px;margin-left:0;width:5.8em}a.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear}div.ui-slider-switch .ui-slider-handle{margin-top:1px}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}div.ui-slider-switch.ui-slider-mini{width:5em;height:29px}div.ui-slider-switch.ui-slider-mini .ui-slider-inneroffset{margin:0 15px 0 14px}div.ui-slider-switch.ui-slider-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px}div.ui-slider-switch.ui-slider-mini a.ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:0}span.ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;border-width:0;white-space:nowrap}.ui-slider-mini span.ui-slider-label{font-size:14px}span.ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}span.ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}.ui-slider-inline{width:120px;display:inline-block} -------------------------------------------------------------------------------- /public/css/style.css: -------------------------------------------------------------------------------- 1 | /* ------------------ 2 | styling for the tables 3 | ------------------ */ 4 | 5 | 6 | body 7 | { 8 | line-height: 1.6em; 9 | } 10 | 11 | #hor-minimalist-a 12 | { 13 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 14 | font-size: 12px; 15 | background: #fff; 16 | margin: 45px; 17 | width: 480px; 18 | border-collapse: collapse; 19 | text-align: left; 20 | } 21 | #hor-minimalist-a th 22 | { 23 | font-size: 14px; 24 | font-weight: normal; 25 | color: #039; 26 | padding: 10px 8px; 27 | border-bottom: 2px solid #6678b1; 28 | } 29 | #hor-minimalist-a td 30 | { 31 | color: #669; 32 | padding: 9px 8px 0px 8px; 33 | } 34 | #hor-minimalist-a tbody tr:hover td 35 | { 36 | color: #009; 37 | } 38 | 39 | 40 | #hor-minimalist-b 41 | { 42 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 43 | font-size: 12px; 44 | background: #fff; 45 | margin: 45px; 46 | width: 480px; 47 | border-collapse: collapse; 48 | text-align: left; 49 | } 50 | #hor-minimalist-b th 51 | { 52 | font-size: 14px; 53 | font-weight: normal; 54 | color: #039; 55 | padding: 10px 8px; 56 | border-bottom: 2px solid #6678b1; 57 | } 58 | #hor-minimalist-b td 59 | { 60 | border-bottom: 1px solid #ccc; 61 | color: #669; 62 | padding: 6px 8px; 63 | } 64 | #hor-minimalist-b tbody tr:hover td 65 | { 66 | color: #009; 67 | } 68 | 69 | 70 | #ver-minimalist 71 | { 72 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 73 | font-size: 12px; 74 | margin: 45px; 75 | width: 480px; 76 | text-align: left; 77 | border-collapse: collapse; 78 | } 79 | #ver-minimalist th 80 | { 81 | padding: 8px 2px; 82 | font-weight: normal; 83 | font-size: 14px; 84 | border-bottom: 2px solid #6678b1; 85 | border-right: 30px solid #fff; 86 | border-left: 30px solid #fff; 87 | color: #039; 88 | } 89 | #ver-minimalist td 90 | { 91 | padding: 12px 2px 0px 2px; 92 | border-right: 30px solid #fff; 93 | border-left: 30px solid #fff; 94 | color: #669; 95 | } 96 | 97 | 98 | #box-table-a 99 | { 100 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 101 | font-size: 12px; 102 | margin: 45px; 103 | width: 480px; 104 | text-align: left; 105 | border-collapse: collapse; 106 | } 107 | #box-table-a th 108 | { 109 | font-size: 13px; 110 | font-weight: normal; 111 | padding: 8px; 112 | background: #b9c9fe; 113 | border-top: 4px solid #aabcfe; 114 | border-bottom: 1px solid #fff; 115 | color: #039; 116 | } 117 | #box-table-a td 118 | { 119 | padding: 8px; 120 | background: #e8edff; 121 | border-bottom: 1px solid #fff; 122 | color: #669; 123 | border-top: 1px solid transparent; 124 | } 125 | #box-table-a tr:hover td 126 | { 127 | background: #d0dafd; 128 | color: #339; 129 | } 130 | 131 | 132 | #box-table-b 133 | { 134 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 135 | font-size: 12px; 136 | margin: 45px; 137 | width: 480px; 138 | text-align: center; 139 | border-collapse: collapse; 140 | border-top: 7px solid #9baff1; 141 | border-bottom: 7px solid #9baff1; 142 | } 143 | #box-table-b th 144 | { 145 | font-size: 13px; 146 | font-weight: normal; 147 | padding: 8px; 148 | background: #e8edff; 149 | border-right: 1px solid #9baff1; 150 | border-left: 1px solid #9baff1; 151 | color: #039; 152 | } 153 | #box-table-b td 154 | { 155 | padding: 8px; 156 | background: #e8edff; 157 | border-right: 1px solid #aabcfe; 158 | border-left: 1px solid #aabcfe; 159 | color: #669; 160 | } 161 | 162 | 163 | #hor-zebra 164 | { 165 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 166 | font-size: 12px; 167 | margin: 45px; 168 | width: 480px; 169 | text-align: left; 170 | border-collapse: collapse; 171 | } 172 | #hor-zebra th 173 | { 174 | font-size: 14px; 175 | font-weight: normal; 176 | padding: 10px 8px; 177 | color: #039; 178 | } 179 | #hor-zebra td 180 | { 181 | padding: 8px; 182 | color: #669; 183 | } 184 | #hor-zebra .odd 185 | { 186 | background: #e8edff; 187 | } 188 | 189 | 190 | #ver-zebra 191 | { 192 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 193 | font-size: 12px; 194 | margin: 45px; 195 | width: 480px; 196 | text-align: left; 197 | border-collapse: collapse; 198 | } 199 | #ver-zebra th 200 | { 201 | font-size: 14px; 202 | font-weight: normal; 203 | padding: 12px 15px; 204 | border-right: 1px solid #fff; 205 | border-left: 1px solid #fff; 206 | color: #039; 207 | } 208 | #ver-zebra td 209 | { 210 | padding: 8px 15px; 211 | border-right: 1px solid #fff; 212 | border-left: 1px solid #fff; 213 | color: #669; 214 | } 215 | .vzebra-odd 216 | { 217 | background: #eff2ff; 218 | } 219 | .vzebra-even 220 | { 221 | background: #e8edff; 222 | } 223 | #ver-zebra #vzebra-adventure, #ver-zebra #vzebra-children 224 | { 225 | background: #d0dafd; 226 | border-bottom: 1px solid #c8d4fd; 227 | } 228 | #ver-zebra #vzebra-comedy, #ver-zebra #vzebra-action 229 | { 230 | background: #dce4ff; 231 | border-bottom: 1px solid #d6dfff; 232 | } 233 | 234 | 235 | #one-column-emphasis 236 | { 237 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 238 | font-size: 12px; 239 | margin: 45px; 240 | width: 480px; 241 | text-align: left; 242 | border-collapse: collapse; 243 | } 244 | #one-column-emphasis th 245 | { 246 | font-size: 14px; 247 | font-weight: normal; 248 | padding: 12px 15px; 249 | color: #039; 250 | } 251 | #one-column-emphasis td 252 | { 253 | padding: 10px 15px; 254 | color: #669; 255 | border-top: 1px solid #e8edff; 256 | } 257 | .oce-first 258 | { 259 | background: #d0dafd; 260 | border-right: 10px solid transparent; 261 | border-left: 10px solid transparent; 262 | } 263 | #one-column-emphasis tr:hover td 264 | { 265 | color: #339; 266 | background: #eff2ff; 267 | } 268 | 269 | 270 | #newspaper-a 271 | { 272 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 273 | font-size: 12px; 274 | margin: 45px; 275 | width: 480px; 276 | text-align: left; 277 | border-collapse: collapse; 278 | border: 1px solid #69c; 279 | } 280 | #newspaper-a th 281 | { 282 | padding: 12px 17px 12px 17px; 283 | font-weight: normal; 284 | font-size: 14px; 285 | color: #039; 286 | border-bottom: 1px dashed #69c; 287 | } 288 | #newspaper-a td 289 | { 290 | padding: 7px 17px 7px 17px; 291 | color: #669; 292 | } 293 | #newspaper-a tbody tr:hover td 294 | { 295 | color: #339; 296 | background: #d0dafd; 297 | } 298 | 299 | 300 | #newspaper-b 301 | { 302 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 303 | font-size: 12px; 304 | margin: 45px; 305 | width: 480px; 306 | text-align: left; 307 | border-collapse: collapse; 308 | border: 1px solid #69c; 309 | } 310 | #newspaper-b th 311 | { 312 | padding: 15px 10px 10px 10px; 313 | font-weight: normal; 314 | font-size: 14px; 315 | color: #039; 316 | } 317 | #newspaper-b tbody 318 | { 319 | background: #e8edff; 320 | } 321 | #newspaper-b td 322 | { 323 | padding: 10px; 324 | color: #669; 325 | border-top: 1px dashed #fff; 326 | } 327 | #newspaper-b tbody tr:hover td 328 | { 329 | color: #339; 330 | background: #d0dafd; 331 | } 332 | 333 | 334 | #newspaper-c 335 | { 336 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 337 | font-size: 12px; 338 | margin: 45px; 339 | width: 480px; 340 | text-align: left; 341 | border-collapse: collapse; 342 | border: 1px solid #6cf; 343 | } 344 | #newspaper-c th 345 | { 346 | padding: 20px; 347 | font-weight: normal; 348 | font-size: 13px; 349 | color: #039; 350 | text-transform: uppercase; 351 | border-right: 1px solid #0865c2; 352 | border-top: 1px solid #0865c2; 353 | border-left: 1px solid #0865c2; 354 | border-bottom: 1px solid #fff; 355 | } 356 | #newspaper-c td 357 | { 358 | padding: 10px 20px; 359 | color: #669; 360 | border-right: 1px dashed #6cf; 361 | } 362 | 363 | 364 | #rounded-corner 365 | { 366 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 367 | font-size: 12px; 368 | margin: 45px; 369 | width: 480px; 370 | text-align: left; 371 | border-collapse: collapse; 372 | } 373 | #rounded-corner thead th.rounded-company 374 | { 375 | background: #b9c9fe url('img/table-images/left.png') left -1px no-repeat; 376 | } 377 | #rounded-corner thead th.rounded-q4 378 | { 379 | background: #b9c9fe url('img/table-images/right.png') right -1px no-repeat; 380 | } 381 | #rounded-corner th 382 | { 383 | padding: 8px; 384 | font-weight: normal; 385 | font-size: 13px; 386 | color: #039; 387 | background: #b9c9fe; 388 | } 389 | #rounded-corner td 390 | { 391 | padding: 8px; 392 | background: #e8edff; 393 | border-top: 1px solid #fff; 394 | color: #669; 395 | } 396 | #rounded-corner tfoot td.rounded-foot-left 397 | { 398 | background: #e8edff url('img/table-images/botleft.png') left bottom no-repeat; 399 | } 400 | #rounded-corner tfoot td.rounded-foot-right 401 | { 402 | background: #e8edff url('img/table-images/botright.png') right bottom no-repeat; 403 | } 404 | #rounded-corner tbody tr:hover td 405 | { 406 | background: #d0dafd; 407 | } 408 | 409 | 410 | #background-image 411 | { 412 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 413 | font-size: 12px; 414 | margin: 45px; 415 | width: 480px; 416 | text-align: left; 417 | border-collapse: collapse; 418 | background: url('img/table-images/blurry.jpg') 330px 59px no-repeat; 419 | } 420 | #background-image th 421 | { 422 | padding: 12px; 423 | font-weight: normal; 424 | font-size: 14px; 425 | color: #339; 426 | } 427 | #background-image td 428 | { 429 | padding: 9px 12px; 430 | color: #669; 431 | border-top: 1px solid #fff; 432 | } 433 | #background-image tfoot td 434 | { 435 | font-size: 11px; 436 | } 437 | #background-image tbody td 438 | { 439 | background: url('img/table-images/back.png'); 440 | } 441 | * html #background-image tbody td 442 | { 443 | /* 444 | ---------------------------- 445 | PUT THIS ON IE6 ONLY STYLE 446 | AS THE RULE INVALIDATES 447 | YOUR STYLESHEET 448 | ---------------------------- 449 | */ 450 | filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='img/table-images/back.png',sizingMethod='crop'); 451 | background: none; 452 | } 453 | #background-image tbody tr:hover td 454 | { 455 | color: #339; 456 | background: none; 457 | } 458 | 459 | 460 | #gradient-style 461 | { 462 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 463 | font-size: 12px; 464 | margin: 45px; 465 | width: 480px; 466 | text-align: left; 467 | border-collapse: collapse; 468 | } 469 | #gradient-style th 470 | { 471 | font-size: 13px; 472 | font-weight: normal; 473 | padding: 8px; 474 | background: #b9c9fe url('img/table-images/gradhead.png') repeat-x; 475 | border-top: 2px solid #d3ddff; 476 | border-bottom: 1px solid #fff; 477 | color: #039; 478 | } 479 | #gradient-style td 480 | { 481 | padding: 8px; 482 | border-bottom: 1px solid #fff; 483 | color: #669; 484 | border-top: 1px solid #fff; 485 | background: #e8edff url('img/table-images/gradback.png') repeat-x; 486 | } 487 | #gradient-style tfoot tr td 488 | { 489 | background: #e8edff; 490 | font-size: 12px; 491 | color: #99c; 492 | } 493 | #gradient-style tbody tr:hover td 494 | { 495 | background: #d0dafd url('img/table-images/gradhover.png') repeat-x; 496 | color: #339; 497 | } 498 | 499 | 500 | #pattern-style-a 501 | { 502 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 503 | font-size: 12px; 504 | margin: 45px; 505 | width: 480px; 506 | text-align: left; 507 | border-collapse: collapse; 508 | background: url('img/table-images/pattern.png'); 509 | } 510 | #pattern-style-a thead tr 511 | { 512 | background: url('img/table-images/pattern-head.png'); 513 | } 514 | #pattern-style-a th 515 | { 516 | font-size: 13px; 517 | font-weight: normal; 518 | padding: 8px; 519 | border-bottom: 1px solid #fff; 520 | color: #039; 521 | } 522 | #pattern-style-a td 523 | { 524 | padding: 8px; 525 | border-bottom: 1px solid #fff; 526 | color: #669; 527 | border-top: 1px solid transparent; 528 | } 529 | #pattern-style-a tbody tr:hover td 530 | { 531 | color: #339; 532 | background: #fff; 533 | } 534 | 535 | 536 | #pattern-style-b 537 | { 538 | font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; 539 | font-size: 12px; 540 | margin: 45px; 541 | width: 480px; 542 | text-align: left; 543 | border-collapse: collapse; 544 | background: url('img/table-images/patternb.png'); 545 | } 546 | #pattern-style-b thead tr 547 | { 548 | background: url('img/table-images/patternb-head.png'); 549 | } 550 | #pattern-style-b th 551 | { 552 | font-size: 13px; 553 | font-weight: normal; 554 | padding: 8px; 555 | border-bottom: 1px solid #fff; 556 | color: #039; 557 | } 558 | #pattern-style-b td 559 | { 560 | padding: 8px; 561 | border-bottom: 1px solid #fff; 562 | color: #669; 563 | border-top: 1px solid transparent; 564 | } 565 | #pattern-style-b tbody tr:hover td 566 | { 567 | color: #339; 568 | background: #cdcdee; 569 | } -------------------------------------------------------------------------------- /public/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/.DS_Store -------------------------------------------------------------------------------- /public/img/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/ajax-loader.gif -------------------------------------------------------------------------------- /public/img/ajax-loader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/ajax-loader.png -------------------------------------------------------------------------------- /public/img/icons-18-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/icons-18-black.png -------------------------------------------------------------------------------- /public/img/icons-18-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/icons-18-white.png -------------------------------------------------------------------------------- /public/img/icons-36-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/icons-36-black.png -------------------------------------------------------------------------------- /public/img/icons-36-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/icons-36-white.png -------------------------------------------------------------------------------- /public/img/table-images/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/back.png -------------------------------------------------------------------------------- /public/img/table-images/blurry.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/blurry.jpg -------------------------------------------------------------------------------- /public/img/table-images/botleft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/botleft.png -------------------------------------------------------------------------------- /public/img/table-images/botright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/botright.png -------------------------------------------------------------------------------- /public/img/table-images/gradback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/gradback.png -------------------------------------------------------------------------------- /public/img/table-images/gradhead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/gradhead.png -------------------------------------------------------------------------------- /public/img/table-images/gradhover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/gradhover.png -------------------------------------------------------------------------------- /public/img/table-images/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/header.jpg -------------------------------------------------------------------------------- /public/img/table-images/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/left.png -------------------------------------------------------------------------------- /public/img/table-images/pattern-head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/pattern-head.png -------------------------------------------------------------------------------- /public/img/table-images/pattern.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/pattern.gif -------------------------------------------------------------------------------- /public/img/table-images/pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/pattern.png -------------------------------------------------------------------------------- /public/img/table-images/patternb-head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/patternb-head.png -------------------------------------------------------------------------------- /public/img/table-images/patternb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/patternb.png -------------------------------------------------------------------------------- /public/img/table-images/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/img/table-images/right.png -------------------------------------------------------------------------------- /public/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/emrahayanoglu/Node.js--Socket.io-and-Express-based-Multiplayer-Bingo-Game/113e27c8defcbb595514e7d7ce8122857ffd7364/public/js/.DS_Store -------------------------------------------------------------------------------- /public/js/game.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | $(".backToRoomPage").click(function(){ 3 | socket.emit('userLeaveFromTable',{}); 4 | isCardShown = false; 5 | for(var i = 0; i < 9; i++){ 6 | for(var j = 0; j < 3; j++){ 7 | var className = (j + 1) + "_row_" + (i + 1) + "_column"; 8 | $("." + className).empty(); 9 | } 10 | } 11 | $("#gameFinishedSpan").text(""); 12 | }); 13 | }); 14 | 15 | var socket = io.connect('http://localhost:8080'); 16 | var isCardShown = false; 17 | 18 | socket.on('userOnline', function (data) { 19 | socket.emit('connectToServer', { username : 'emrahayanoglu' }); 20 | }); 21 | socket.on('newUserOnline',function(data){ 22 | //Write on the user log that a new user has come to room 23 | }); 24 | socket.on('tableList',function(data){ 25 | var html = ""; 26 | for(var i = 0; i < data.tableList.length; i++){ 27 | html += "
  • "+ data.tableList[i].name +"     " 28 | + data.tableList[i].players.length +"/"+ data.tableList[i].playerLimit +"
  • " 29 | } 30 | $('#roomList').empty(); 31 | $('#roomList').append(html); 32 | $('#roomList').listview('refresh'); 33 | $('.showGamePage').click(function(){ 34 | var selectedTableId = $(this).attr('data-id'); 35 | socket.emit('connectToTable', {tableID: selectedTableId}); 36 | $.mobile.changePage("#gamePage"); 37 | }); 38 | 39 | $("#onlineUserCount").empty(); 40 | $("#onlineUserCount").text("-- " + data.playerCount + " Online Users --"); 41 | }); 42 | socket.on('userConnectedToTable',function(data){ 43 | //Write on the user log that a new user has come to table 44 | }); 45 | socket.on('gameStarted',function(data){ 46 | console.log("A new game is started"); 47 | console.log(data); 48 | //Draw card and start playing 49 | }); 50 | socket.on('numberChosen',function(data){ 51 | console.log(data); 52 | //Draw chosen number and if number is on the card, then fill the chosen number on the card 53 | $("#chosenNumberSpan").text(data.chosenNumber); 54 | if(!isCardShown){ 55 | for(var i = 0; i < data.userCard.length; i++){ 56 | for(var j = 0; j < data.userCard[i].length; j++){ 57 | var className = (j + 1) + "_row_" + (i + 1) + "_column"; 58 | $("." + className).empty(); 59 | $("." + className).append(data.userCard[i][j]); 60 | } 61 | } 62 | isCardShown = true; 63 | } 64 | else{ 65 | for(var i = 0; i < data.userCard.length; i++){ 66 | for(var j = 0; j < data.userCard[i].length; j++){ 67 | var className = (j + 1) + "_row_" + (i + 1) + "_column"; 68 | if(parseInt($("." + className).text()) == data.chosenNumber){ 69 | $("." + className).empty(); 70 | $("." + className).append("Secili " + data.userCard[i][j]); 71 | break; 72 | } 73 | } 74 | } 75 | } 76 | }); 77 | socket.on('gameFinished',function(data){ 78 | $("#gameFinishedSpan").text("Game is Finished"); 79 | }); 80 | socket.on('bingoWinner',function(data){ 81 | $("#gameFinishedSpan").text("You are the Bingo Winner"); 82 | }); 83 | socket.on('gameRestarted',function(data){ 84 | console.log(data); 85 | }); 86 | socket.on('userDisconnectedFromTable',function(data){ 87 | //Write on the user log that a user has disconnected from table 88 | }); 89 | socket.on('playerDisconnectedFromTable',function(data){ 90 | $.mobile.changePage("#roomPage"); 91 | }); 92 | socket.on('userDisconnectedFromGame',function(data){ 93 | //Write on the user log that a user has disconnected 94 | }); 95 | socket.on('userSendChatMessage',function(data){ 96 | console.log(data); 97 | }); 98 | socket.on('userSentChatMessageToUser',function(data){ 99 | console.log(data); 100 | }); 101 | socket.on('errorEvent',function(data){ 102 | 103 | }); 104 | 105 | -------------------------------------------------------------------------------- /public/js/graphic.js: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /public/js/jquery.mobile-1.1.1.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery Mobile v1.1.1 1981b3f5ec22675ae47df8f0bdf9622e7780e90e jquerymobile.com | jquery.org/license */ 2 | (function(l,t,k){typeof define==="function"&&define.amd?define(["jquery"],function(E){k(E,l,t);return E.mobile}):k(l.jQuery,l,t)})(this,document,function(l,t,k,E){(function(a,c,b,d){function e(a){for(;a&&typeof a.originalEvent!=="undefined";)a=a.originalEvent;return a}function g(b){for(var e={},g,d;b;){g=a.data(b,s);for(d in g)if(g[d])e[d]=e.hasVirtualBinding=true;b=b.parentNode}return e}function f(){y&&(clearTimeout(y),y=0);y=setTimeout(function(){G=y=0;A.length=0;F=false;H=true},a.vmouse.resetTimerDuration)} 3 | function j(b,g,c){var f,h;if(!(h=c&&c[b])){if(c=!c)a:{for(c=g.target;c;){if((h=a.data(c,s))&&(!b||h[b]))break a;c=c.parentNode}c=null}h=c}if(h){f=g;var c=f.type,j,F;f=a.Event(f);f.type=b;h=f.originalEvent;j=a.event.props;c.search(/^(mouse|click)/)>-1&&(j=w);if(h)for(F=j.length;F;)b=j[--F],f[b]=h[b];if(c.search(/mouse(down|up)|click/)>-1&&!f.which)f.which=1;if(c.search(/^touch/)!==-1&&(b=e(h),c=b.touches,b=b.changedTouches,c=c&&c.length?c[0]:b&&b.length?b[0]:d))for(h=0,len=x.length;hh||Math.abs(c.pageY-C)>h;flags=g(b.target);z&&!d&&j("vmousecancel",b,flags);j("vmousemove",b,flags);f()}}function v(a){if(!H){H=true;var b=g(a.target),c;j("vmouseup",a,b);if(!z&&(c=j("vclick",a,b))&&c.isDefaultPrevented())c=e(a).changedTouches[0],A.push({touchID:G,x:c.clientX,y:c.clientY}),F=true;j("vmouseout",a,b);z=false;f()}}function n(b){var b= 6 | a.data(b,s),e;if(b)for(e in b)if(b[e])return true;return false}function k(){}function p(b){var e=b.substr(1);return{setup:function(){n(this)||a.data(this,s,{});a.data(this,s)[b]=true;l[b]=(l[b]||0)+1;l[b]===1&&J.bind(e,h);a(this).bind(e,k);if(M)l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&J.bind("touchstart",q).bind("touchend",v).bind("touchmove",m).bind("scroll",o)},teardown:function(){--l[b];l[b]||J.unbind(e,h);M&&(--l.touchstart,l.touchstart||J.unbind("touchstart",q).unbind("touchmove",m).unbind("touchend", 7 | v).unbind("scroll",o));var g=a(this),c=a.data(this,s);c&&(c[b]=false);g.unbind(e,k);n(this)||g.removeData(s)}}}var s="virtualMouseBindings",u="virtualTouchID",c="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),x="clientX clientY pageX pageY screenX screenY".split(" "),w=a.event.props.concat(a.event.mouseHooks?a.event.mouseHooks.props:[]),l={},y=0,t=0,C=0,z=false,A=[],F=false,H=false,M="addEventListener"in b,J=a(b),N=1,G=0;a.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10, 8 | resetTimerDuration:1500};for(var K=0;K7);a.fn[e]=function(a){return a?this.bind(e,a):this.trigger(e)};a.fn[e].delay=50;j[e]=a.extend(j[e],{setup:function(){if(q)return false;a(f.start)},teardown:function(){if(q)return false;a(f.stop)}});f=function(){function f(){var b=d(),g=s(n);if(b!==n)p(n=b,g),a(c).trigger(e);else if(g!==n)location.href=location.href.replace(/#.*/,"")+g;j=setTimeout(f,a.fn[e].delay)}var h={},j,n=d(),k=function(a){return a},p= 10 | k,s=k;h.start=function(){j||f()};h.stop=function(){j&&clearTimeout(j);j=b};a.browser.msie&&!q&&function(){var b,c;h.start=function(){if(!b)c=(c=a.fn[e].src)&&c+d(),b=a('