- <script type="text/javascript">
- var auth_key = '<?=$_GET['auth_key']; ?>';
- var viewer_id = '<?=$_GET['viewer_id']; ?>';
- var app_id = <?=$_GET['api_id']; ?>;
- var userBalance = null;
- //Добавление в массив чисел от start до (start + count)
- Array.range = function(start, count) {
- if (arguments.length == 1) {
- count = start;
- start = 0;
- }
- var a = [];
- for (var i = start; i < start + count; i++) {
- a.push(i);
- }
- return a;
- }
- //Отображение всех linkVotes от 1 - 7
- function showLinkVotes(count){
- Array.range(count).forEach(function(i) {
- $("#linkVotes" + ( i + 1)).css("visibility", "visible");
- });
- }
- //Иницеализация VK
- VK.init(function(){
- setTimeout(showLinkVotes(7), 10000);
- userBalance = UserBalance(0);
- VK.addCallback("onBalanceChanged", userBalance.onBalanceChanged);
- });
- userBalance = UserBalance(0);
- function UserBalance(votes){
- //Начальный баланс
- var _balance = votes;
- //Голоса, которые мы хотим получить (для onBalanceChanged)
- var _votes = 0;
- //Обновление баланса
- function Update(func){
- VK.api("getUserBalance", {},
- function(data){
- if(!data.error){
- _balance = data.response;
- $('#balance').html('На счету <b>' + _balance + '</b> голосов');
- //Если баланс обновлен, выполняем функцию
- if(typeof func == 'function')func();
- } else {
- alert(data.error.error_code + '.\n' + data.error.error_msg);
- }
- });
- }
- //Отправляем запросна сервер
- function sendServer(votes, func){
- $.ajax({
- url: 'golosa.php',
- global: false,
- type: "GET",
- data: ({
- auth_key: auth_key,
- viewer_id: viewer_id,
- votes: votes
- }),
- dataType: "html",
- success: function(json){
- //alert(date);
- //Выполняем функцию, после получения ответа
- if(typeof func == 'function')func(json);
- }
- });
- }
- //Снимаем голоса
- function withdrawVotes(votes, func){
- //Сохраняем сколько голоса хотим получить( для onBalanceChanged)
- if(votes > 0) _votes = votes;
- if(_votes == 0) _votes = 100;
- //Если на балансе мало голосов, открываем PaymentBox
- if(_balance < _votes){
- VK.callMethod("showPaymentBox", ( _votes - _balance ));
- //Если голосов достаточно, посылаем запрос на свой сервер
- } else {
- sendServer(votes, func);
- }
- }
- //Тоже самое что и withdrawVotes, но перед этим обновляем баланс
- function updateWithdrawVotes(votes, func){
- Update(withdrawVotes(votes, func));
- }
- //После того как юзер изменил баланс, посылаем запрос к серверу
- function onBalanceChanged(balance){
- if( balance >= _votes) sendServer(_votes);
- else alert('Нехватает голосов');
- }
- return {
- Update: Update,
- sendServer: sendServer,
- withdrawVotes: withdrawVotes,
- updateWithdrawVotes: updateWithdrawVotes,
- onBalanceChanged: onBalanceChanged,
- balance: _balance
- }
- }
- </script>
- ...
- <a href="" onClick="userBalance.updateWithdrawVotes(100);return false;">Купить 1 фишку</a>