Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 10th, 2012  |  syntax: None  |  size: 4.33 KB  |  hits: 16  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <script type="text/javascript">
  2.  
  3. var auth_key = '<?=$_GET['auth_key']; ?>';
  4. var viewer_id = '<?=$_GET['viewer_id']; ?>';
  5. var app_id = <?=$_GET['api_id']; ?>;
  6.  
  7. var userBalance = null;
  8.  
  9. //Добавление в массив чисел от start до (start + count)
  10. Array.range = function(start, count) {
  11.        
  12.     if (arguments.length == 1) {
  13.        
  14.         count = start;
  15.         start = 0;
  16.        
  17.     }
  18.    
  19.     var a = [];
  20.     for (var i = start; i < start + count; i++) {
  21.        
  22.         a.push(i);
  23.        
  24.     }
  25.    
  26.     return a;
  27. }
  28.  
  29. //Отображение всех linkVotes от 1 - 7
  30. function showLinkVotes(count){
  31.        
  32.         Array.range(count).forEach(function(i) {
  33.                
  34.                 $("#linkVotes" + ( i + 1)).css("visibility", "visible");
  35.                
  36.     });
  37.    
  38. }
  39.  
  40. //Иницеализация VK
  41. VK.init(function(){
  42.        
  43.         setTimeout(showLinkVotes(7), 10000);
  44.         userBalance = UserBalance(0);
  45.        
  46.         VK.addCallback("onBalanceChanged", userBalance.onBalanceChanged);
  47.        
  48. });
  49.  
  50. userBalance = UserBalance(0);
  51.  
  52. function UserBalance(votes){
  53.        
  54.         //Начальный баланс
  55.         var _balance = votes;
  56.        
  57.         //Голоса, которые мы хотим получить (для onBalanceChanged)
  58.         var _votes = 0;
  59.        
  60.         //Обновление баланса
  61.         function Update(func){
  62.                
  63.                 VK.api("getUserBalance", {},
  64.                          
  65.                         function(data){
  66.                                
  67.                                 if(!data.error){
  68.                                        
  69.                                         _balance = data.response;
  70.                     $('#balance').html('На счету <b>' + _balance + '</b> голосов');
  71.                    
  72.                     //Если баланс обновлен, выполняем функцию
  73.                     if(typeof func == 'function')func();
  74.                    
  75.                 } else {
  76.                        
  77.                         alert(data.error.error_code + '.\n' + data.error.error_msg);
  78.                        
  79.                 }
  80.                
  81.          });
  82.          
  83.     }
  84.    
  85.     //Отправляем запросна сервер
  86.     function sendServer(votes, func){
  87.        
  88.         $.ajax({
  89.                
  90.                 url: 'golosa.php',
  91.             global: false,
  92.             type: "GET",
  93.                        
  94.              data: ({
  95.                  
  96.                  auth_key: auth_key,
  97.                  viewer_id: viewer_id,
  98.                  votes: votes
  99.                          
  100.                          }),
  101.                                  
  102.              dataType: "html",
  103.              success: function(json){
  104.                  
  105.                  //alert(date);
  106.                  
  107.                  //Выполняем функцию, после получения ответа
  108.                  if(typeof func == 'function')func(json);
  109.                  
  110.              }
  111.              
  112.            });
  113.            
  114.     }
  115.    
  116.     //Снимаем голоса
  117.     function withdrawVotes(votes, func){
  118.        
  119.         //Сохраняем сколько голоса хотим получить( для onBalanceChanged)
  120.         if(votes > 0) _votes = votes;
  121.         if(_votes == 0) _votes = 100;
  122.        
  123.         //Если на балансе мало голосов, открываем PaymentBox
  124.         if(_balance < _votes){
  125.                
  126.                 VK.callMethod("showPaymentBox", ( _votes - _balance ));
  127.        
  128.         //Если голосов достаточно, посылаем запрос на свой сервер       
  129.         } else {
  130.                
  131.                 sendServer(votes, func);
  132.                    
  133.        }
  134.        
  135.     }
  136.    
  137.     //Тоже самое что и withdrawVotes, но перед этим обновляем баланс
  138.     function updateWithdrawVotes(votes, func){
  139.        
  140.         Update(withdrawVotes(votes, func));
  141.            
  142.     }
  143.    
  144.     //После того как юзер изменил баланс, посылаем запрос к серверу
  145.     function onBalanceChanged(balance){
  146.        
  147.         if( balance >= _votes) sendServer(_votes);
  148.          else alert('Нехватает голосов');
  149.          
  150.     }
  151.    
  152.    return {
  153.          
  154.           Update: Update,
  155.           sendServer: sendServer,
  156.           withdrawVotes: withdrawVotes,
  157.           updateWithdrawVotes: updateWithdrawVotes,
  158.           onBalanceChanged: onBalanceChanged,
  159.                  
  160.           balance: _balance
  161.                  
  162.       }
  163.    
  164. }
  165.  
  166. </script>
  167. ...
  168. <a href="" onClick="userBalance.updateWithdrawVotes(100);return false;">Купить 1 фишку</a>