var Piplex = {
  reload: false,

  setReload: function(mode) {
    Piplex.reload = mode;
  },

  doReload: function() {
    if (Piplex.reload) {
      window.location.reload();
    }
    return false;
  },

  accountLogin: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      async: false,
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        var training = form.find('*[name=training]');
        if(training.length)
        {
          Piplex.gameJoin(training.val(), '', '0', '2');
        }

        Piplex.doReload();
        Piplex.accountRefresh();
      },
      error: Piplex.errorServerHandler
    });
  },

  accountCreate: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      async: false,
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        var training = form.find('*[name=training]');

        if (training.length) {
          Piplex.gameJoin(training.val(), '', '0', '2');
        }

        Piplex.doReload();

        $.facebox.close();
        Piplex.infoHandler(response);
        Piplex.accountLeadRefresh();
      },
      error: Piplex.errorServerHandler
    });
  },

  accountUpdate: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        Piplex.infoHandler(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  accountUpdateSocial: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }
        
        $.facebox.close();
        
        $('.pplx-twitter-connect').show();
        $('.pplx-twitter-button').html('');
        
        Piplex.infoHandler(response);
      },
      error: Piplex.errorServerHandler
    });
  },
  
  twitterRemove: function()
  {
    $.ajax({
      url: Piplex.BASE_URL + '/account/twitter-remove',
      cache: false,
      success: function(response) {
        if (Piplex.errorHandler(response)) {
          return;
        }
        window.location.reload();
      },
      error: Piplex.errorServerHandler
    });
  },

  accountRetrieve: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();

        Piplex.infoHandler(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  friendCreate: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();
        Piplex.infoHandler(response);
        Piplex.accountRefresh();
      },
      error: Piplex.errorServerHandler
    });
  },

  friendDestroy: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();
        Piplex.infoHandler(response);
        Piplex.contentRefresh();
      },
      error: Piplex.errorServerHandler
    });
  },

  messageCreate: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();
        Piplex.infoHandler(response);
        //Piplex.contentRefresh();
      },
      error: Piplex.errorServerHandler
    });
  },

  messageDestroy: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();
        Piplex.infoHandler(response);
        Piplex.contentRefresh();
      },
      error: Piplex.errorServerHandler
    });
  },

  accountRefresh: function(gameId)
  {
    var data = {};

    if (gameId != undefined) {
      data.currentGameId = gameId;
    }

    $('.pplx-account:first').load(Piplex.BASE_URL + '/index/account', data);
  },
  
  accountLeadRefresh: function()
  {
    $('.pplx-account:first').load(Piplex.BASE_URL + '/index/account', {lead: 1});
  },

  contentRefresh: function() {
    Piplex.accountRefresh();
    $('#col-hp-03').load(window.location.href);
  },

  withdrawalCreate: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();
        Piplex.infoHandler(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  contactSend: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();
        Piplex.infoHandler(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  forwardSend: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        $.facebox.close();
        Piplex.infoHandler(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  homeFocusGame: function(link) {
    if (link == undefined)
      var link = $('*[class*=pplx-game-category-tab-]:first');

    if ($(link).length) {
      var matches = $(link).attr('class').match(/pplx-game-category-tab-(\d+)/);
      var gameCategoryId = matches[1];

      $('*[class*=games-hp-cat-selected]').removeClass('games-hp-cat-selected');
      $(link).parent('li').addClass('games-hp-cat-selected');

      $('*[class*=pplx-game-focus-]').hide();
      $('.pplx-game-focus-'+gameCategoryId).show();
    }
  },

  siteCreate: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      dataType: 'json',
      success: function(response) {
        if (Piplex.errorHandler(response, form)) {
          return;
        }

        alert(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  gamePopup: function(url) {
    window.open(url, '_blank', 'height=600, width=800, toolbar=0, menubar=0, location=0, scrollbars=0, resizable=0, directories=0, status=0');
  },

  gameJoin: function(gameId, bet, level, maxUser) {
    $.ajax({
      url: Piplex.BASE_URL + '/game-instance/join',
      type: 'POST',
      dataType: 'json',
      async: false,
      data: {gameId: gameId, bet: bet, hasLevel: level, maxUser: maxUser},
      success: function(response) {
        if (Piplex.errorHandler(response)) {
          Piplex.accountRefresh(gameId);
          return;
        }
        Piplex.gamePopup(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  gameDuelCreate: function(gameId, bet, opponentId) {
    $.ajax({
      url: Piplex.BASE_URL + '/game-instance/create-duel',
      type: 'POST',
      dataType: 'json',
      async: false,
      data: {gameId: gameId, bet: bet, opponentId: opponentId},
      success: function(response) {
        if (Piplex.errorHandler(response)) {
          Piplex.accountRefresh(gameId);
          return;
        }

        Piplex.gamePopup(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  gameDuelJoin: function(gameInstanceId) {
    $.ajax({
      url: Piplex.BASE_URL + '/game-instance/join-duel',
      type: 'POST',
      dataType: 'json',
      async: false,
      data: {id: gameInstanceId},
      success: function(response) {
        if (Piplex.errorHandler(response)) {
          Piplex.accountRefresh();
          return;
        }

        Piplex.gamePopup(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  gameDuelDeny: function(gameInstanceId) {
    $.ajax({
      url: Piplex.BASE_URL + '/game-instance/deny-duel',
      type: 'POST',
      dataType: 'json',
      data: {id: gameInstanceId},
      success: function(response) {
        if (Piplex.errorHandler(response)) {
          return;
        }

       Piplex.contentRefresh();
      },
      error: Piplex.errorServerHandler
    });
  },

  autocompleteLiveOpponent: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      success: function(response) {
        $('.pplx-live-opponent').html(response);
      },
      error: Piplex.errorServerHandler
    });
  },

  autocompleteUserSearch: function(form) {
    form = $(form);
    var username = form.find('input[name=username]');
    window.location = form.attr('action')+'/'+username.val();
  },

  refreshUserList: function(form) {
    form = $(form);

    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      cache: false,
      data: form.serialize(),
      success: function(response) {
        form.parents('.pplx-user-list:first').html(response);
      },
      error: Piplex.errorServerHandler
    });
  },
  
  /*facebookAuthorize: function(session_key, user_id)
  {
    //iframe execution
    $.ajax({
      url: Piplex.BASE_URL + '/account/facebook-authorize-callback',
      cache: false,
      data: {fb_sig_session_key: session_key, user_id: user_id},
      success: function(response) {
        if (Piplex.errorHandler(response)) {
          return;
        }
        
        //window.parent.$('.pplx-facebook-connect').show();
        //window.parent.$('.pplx-facebook-button').html('');
        //if(window.parent.$.facebox)
        //  window.parent.$.facebox.close();
      },
      error: Piplex.errorServerHandler
    });
  },*/
  
  facebookRemove: function()
  {
    $.ajax({
      url: Piplex.BASE_URL + '/account/facebook-remove-callback',
      cache: false,
      success: function(response) {
        if (Piplex.errorHandler(response)) {
          return;
        }
        window.location.reload();
      },
      error: Piplex.errorServerHandler
    });
  },

  responseHasError: function(response) {
    return (response && (response.error || response.errors));
  },

  responseHasInfo: function(response) {
    return (response && response.info);
  },

  errorHandler: function(response, form) {
    if (Piplex.responseHasError(response)) {
      if (response.error) {
        Piplex.globalError(response.error);
        $.scrollTo('body');
      }
      else if (response.errors) {
        $.each(response.errors, function(k, v) {
          var errorField = $(form).find('*[name='+k+']').nextAll('*[class=error]');
          if (!errorField.length) {
            errorField = $(form).find('*[name='+k+']').parent().nextAll('*[class=error]');
          }
          errorField.parents('tr:first').addClass('error');

          var errorSpan = errorField.find('*[class*=pplx-error-'+v+']');
          if (!errorSpan.length) {
            errorSpan = errorField.find('*[class*=pplx-error-]:first');
            if (!errorSpan.length) {
              alert(k + ' input error : ' + v); // DEV TMP
            }
          }

          Piplex.removeComments(errorSpan);
        });
      }

      return true;
    }

    return false;
  },

  errorServerHandler: function(xhr, status, error) {
    alert('Status:' + status + "\n\n" + xhr.responseText + "\n\n" + error);
  },

  infoHandler: function(response) {
    if (Piplex.responseHasInfo(response))
    {
      Piplex.globalInfo(response.info);
      $.scrollTo('body');
    }
  },

  validateForm: function(form, input) {
    var errors = {};

    var inputs = input == undefined ? $(form).find(':input') : [input];

    $(inputs).each(function() {
      var val = $.trim($(this).val());
      var name = $(this).attr('name');

      if ($(this).hasClass('pplx-validator-birthdate')) {
        var matches = $(this).attr('name').match(/^(\w+)(_day|_month|_year)$/);
        var input = $(form).find('*[name='+matches[1]+']');

        name = $(input).attr('name');
        val = $(input).val();
      }

      var errorField = $(this).nextAll('*[class=error]');
      if (!errorField.length) {
        errorField = $(this).parent().nextAll('*[class=error]');
      }

      errorField.find('*[class*=pplx-error-]').each(function() {
        errorField.parents('tr[class=error]:first').removeClass('error');
        var errorSpan = $(this);
        if (!Piplex.hasComments(errorSpan)) {
          Piplex.addComments(errorSpan);
        }
      });

      if ($(this).hasClass('pplx-validator-notempty') && (val == '' || ($(this).attr('type') == 'checkbox' && !this.checked))) {
        errors[name] = 'notempty';
      }

      if (val != '' && $(this).hasClass('pplx-validator-int') && !val.match(/^\d*$/)) {
        errors[name] = 'int';
      }

      if (val != '' && $(this).hasClass('pplx-validator-password') && !val.match(/^\w{6,}$/)) {
        errors[name] = 'password';
      }

      if (val != '' && $(this).hasClass('pplx-validator-email') && !val.match(/^([a-z0-9+_\.-]+)@([a-z0-9]+)(([\.\-]?[a-z0-9]+)*)\.([a-z]{2,6})$/i)) {
        errors[name] = 'email';
      }

      if (val != '' && $(this).hasClass('pplx-validator-hostname') && !val.match(/^([a-z0-9]+)(([\.\-]?[a-z0-9]+)*)\.([a-z]{2,6})$/i)) {
        errors[name] = 'hostname';
      }

      if (val != '' && $(this).hasClass('pplx-validator-birthdate') && !val.match(/^\d{4}-\d{2}-\d{2}$/)) {
        errors[name+'_day'] = 'birthdate';
        errors[name+'_month'] = 'birthdate';
        errors[name+'_year'] = 'birthdate';
      }

      if (val != '' && $(this).hasClass('pplx-validator-alias') && !val.match(/^[a-z0-9_-]{3,}$/i)) {
        errors[name] = 'alias';
      }

      if (val != '' && $(this).hasClass('pplx-validator-tva') && !val.match(/^[a-z]{2}\d{11}$/i)) {
        errors[name] = 'tva';
      }
    });

    if (!Piplex.objectIsEmpty(errors)) {
      Piplex.errorHandler({errors: errors}, form);
      return false;
    }

    return true;
  },

  globalError: function(error) {
    $.facebox('<div id="infobox"><h4 class="warning">' + error.title + '</h4><p>' + error.msg + '</p></div>', 'pplx-error-dialog');
  },

  globalInfo: function(info) {
    $.facebox('<div id="infobox"><h4 class="confirm">' + info.title + '</h4><p>' + info.msg + '</p></div>', 'pplx-info-dialog');
  },

  removeComments: function(obj) {
    var html = obj.html();
    html = html.replace(/^\<\!--\s*/, '');
    html = html.replace(/\s*--\>$/, '');

    return obj.html(html);
  },

  hasComments: function(obj) {
    return obj.html().match(/^\<\!--\s*.+\s*--\>$/);
  },

  addComments: function(obj) {
    obj.get(0).innerHTML = '<!-- ' + obj.html() + ' -->';
    return obj.html();
  },

  objectIsEmpty: function(object) {
    for (var k in object) { return false; }
    return true;
  },
  
  analytics: function(tag) {
    try {
      if(pageTracker != undefined)
      {
        pageTracker._trackPageview(tag);        
      }        
    } catch(err) {}
  },

  initInputs: function(root) {
    if (root == undefined) {
      root = document;
    }

    $(root).find('*[class*=pplx-ui-birthdate]').change(function() {
      var matches = $(this).attr('name').match(/^(\w+)(_day|_month|_year)$/);
      name = matches[1];

      var day = $('*[name='+name+'_day]').val();
      var month = $('*[name='+name+'_month]').val();
      var year = $('*[name='+name+'_year]').val();

      $('*[name='+name+']').val(year || month || day ? year+'-'+month+'-'+day : '');
    });

    $(root).find('*[class*=pplx-validator]').change(function() {
      Piplex.validateForm(this.form, this);
    });

    $(root).find('#form-reg-nick').change(function() {
      var input = this;
      $.ajax({
        url: Piplex.BASE_URL + '/account/username-unique',
        dataType: 'json',
        data: {username: $(this).val()},
        success: function(response) {
          Piplex.errorHandler(response, input.form);
        }
      })
    });

    $(root).find('#form-reg-email').change(function() {
      var input = this;
      $.ajax({
        url: Piplex.BASE_URL + '/account/email-unique',
        dataType: 'json',
        data: {email: $(this).val()},
        success: function(response) {
          Piplex.errorHandler(response, input.form);
        }
      })
    });

    $(root).find('#form-siteurl').change(function() {
      var input = this;
      $.ajax({
        url: Piplex.BASE_URL + '/site/alias-unique',
        dataType: 'json',
        data: {alias: $(this).val()},
        success: function(response) {
          Piplex.errorHandler(response, input.form);
        }
      })
    });

    $(root).find('#form-sitedomain').change(function() {
      var input = this;
      $.ajax({
        url: Piplex.BASE_URL + '/site/hostname-unique',
        dataType: 'json',
        data: {hostname: $(this).val()},
        success: function(response) {
          Piplex.errorHandler(response, input.form);
        }
      })
    });
  },
  
  alertNetwork: function()
  {
    $.facebox({ajax: Piplex.BASE_URL + '/account/social-network/alert/1'});
  },
  
  alertCredit: function()
  {
    $.facebox({ajax: Piplex.BASE_URL + '/account/alert-credit'});
  },
  
  alertNetworkStop: function(a)
  {
    var a = $(a);
    
    $.ajax({
      url: a.attr('href'),
      cache: false,
      dataType: 'json',
      async: false,
      success: function(response) {
        $.facebox.close();
      },
      error: Piplex.errorServerHandler
    });
  }
};

jQuery(document).ready(function($) {
  $('.pplx-facebox-link').live('click', function(event) {
    event.preventDefault();
    Piplex.analytics($(this).attr('href'));
    $.facebox({ajax: $(this).attr('href')});
  });
  $('.pplx-facebox-img').live('click', function(event) {
    event.preventDefault();
    $.facebox({image: $(this).attr('href')});
  });
  
  // ACCOUNT - LOGIN
  $('.pplx-account-login-form').submit(function(event) {
    event.preventDefault();

    if (Piplex.validateForm(this)) {
      Piplex.accountLogin(this);
    }
  });

  // ACCOUNT - EDIT
  $('.pplx-account-edit-form').submit(function(event) {
    event.preventDefault();

    if (Piplex.validateForm(this)) {
      Piplex.accountUpdate(this);
    }
  });

  // ACCOUNT - DELETE
  $('.pplx-account-delete-form').submit(function(event) {
    event.preventDefault();

    $.facebox({ajax: $(this).attr('action')});
  });
  
  // ACCOUNT - PASSWORD RESET
  $('.pplx-account-reset-form').submit(function(event) {
    event.preventDefault();

    if (Piplex.validateForm(this)) {
      this.submit();
    }
  });
  
  // MESSAGE - SUBMIT DELETE
  $('.pplx-message-delete-button').live('click', function(event){
    event.preventDefault();
    var checkbox = $(this).parent().next().find('input[type=checkbox]');
    checkbox.attr('checked', 'checked');
    $('.pplx-message-delete-submit').trigger('click');
    checkbox.attr('checked', '');
  });
  $('.pplx-message-delete-submit').live('click', function(event){
    event.preventDefault();
    var form = $('.pplx-message-delete-form');

    if(form.find('tbody input[type=checkbox]:checked').length)
      $.facebox({ajax: form.attr('action')+'?'+form.serialize()});
  });
  $('#check-all-message').live('click', function(event){
    $('.pplx-message-delete-form').find('tbody input[type=checkbox]').attr('checked', $(this).attr('checked'));
  });
  $('.pplx-facebox-link-unread').live('click', function(event){
    setTimeout(function(){ Piplex.contentRefresh(); }, 2000);
  })

  // HOME - TAB
  $('*[class*=pplx-game-category-tab-]').click(function(event) {
    event.preventDefault();

    Piplex.homeFocusGame(this);
  });

  // GAME - LOADING
  $('*[class*=pplx-avatar-loading]').each(function() {
    var imgLoading = $(this);
    var imgAvatar = $(this).next('img');

    setTimeout(function() {
      imgLoading.hide();
      imgAvatar.show();
    }, Math.random()*2000);
  });

  // GAME - SELECTION
  $('*[class*=pplx-bet-select]').change(function() {
    var select = $(this);
    var matches = select.attr('name').match(/(.*bet)(\d+)$/);
    var gamers = Number(matches[2]);
    var bet = Number(select.val());

    var total = Math.round(gamers*bet*.75*100).toString();
    total = total.replace(/^(\d*)(\d{2})$/, '$1,$2');
    if (total.indexOf(',') == 0) {
      total = '0'+total;
    }

    var html = select.parent().nextAll('span').html();
    html = html.replace(/\d{1,2}(,\d{2})?/, total);
    select.parent().nextAll('span').html(html);

    $.ajax({
      url: Piplex.BASE_URL + '/account/extra',
      dataType: 'json',
      success: function(response) {
        if (response)
        {
          var gameId = $('input[name=gameId]:first').val();
          Piplex.accountRefresh(gameId);

          var tr = select.parents('tr:first');
          if (Number(response.amount) < bet && tr.hasClass('pay-game-line')) {
            tr.removeClass('pay-game-line').addClass('pay-game-nomoney');
            tr.find('.pay-game-table-pay span').show();
            tr.find('.game-player-thumb:last').hide();

            if (matches[1] == 'duelbet') {
              tr.find('input[type=submit]').attr('disabled', 'disabled');
              $('.pplx-live-opponent').hide();
            }
          }
          else if (Number(response.amount) >= bet && tr.hasClass('pay-game-nomoney')) {
            var tr = select.parents('tr:first').removeClass('pay-game-nomoney').addClass('pay-game-line');
            tr.find('.pay-game-table-pay span').hide();
            tr.find('.game-player-thumb:last').show();

            if (matches[1] == 'duelbet') {
              tr.find('input[type=submit]').removeAttr('disabled');
              $('.pplx-live-opponent').show();
            }
          }
        }
      }
    });
  });

  // GAME AUTOCOMPLETE OPPONENT
  var autocompleteOpponent = $(".pplx-opponent-autocomplete");
  if(autocompleteOpponent.length)
  {
    autocompleteOpponent.autocomplete({
      serviceUrl: Piplex.BASE_URL + '/user/autocomplete',
      minChars: 2
    });
    $('.pplx-opponent-form').submit(function(event) {
      event.preventDefault();
      Piplex.autocompleteLiveOpponent(this);
    });
  }
  // USER SEARCH AUTOCOMPLETE
  var autocompleteUserSearch = $('.pplx-user-search-autocomplete');
  if(autocompleteUserSearch.length)
  {
    autocompleteUserSearch.autocomplete({
      serviceUrl: Piplex.BASE_URL + '/user/autocomplete',
      minChars: 2
    });
    $('.pplx-user-search-form').submit(function(event) {
      event.preventDefault();
      Piplex.autocompleteUserSearch(this);
    });
  }

  // SITE - CREATE
  $('.pplx-site-new-form-2').hide();
  $('.pplx-site-new-form-3').hide();
  $('.pplx-site-new-form-button-1').click(function(event){
    event.preventDefault();
    var form = $('.pplx-site-new-form');
    if (Piplex.validateForm(form, $('#form-sitename')) && Piplex.validateForm(form, $('#form-siteurl')) && Piplex.validateForm(form, $('#form-sitedomain'))) {
      $('.pplx-site-new-form-1').hide();
      $('.pplx-site-new-form-2').show();
    }
  });

  $('.pplx-site-new-form-button-2').click(function(event){
    event.preventDefault();
    $('.pplx-site-new-form-2').hide();
    $('.pplx-site-new-form-3').show();
  });
  $('.pplx-site-new-form').submit(function(event) {
    if (!Piplex.validateForm(this)) {
      //Piplex.siteCreate(this);
      event.preventDefault();
    }
  });

  // FACEBOX INIT
  $(document).bind('init.facebox', function(){
    $.facebox.settings.loadingImage = Piplex.BASE_URL + '/img' + $.facebox.settings.loadingImage;
    $.facebox.settings.closeImage = Piplex.BASE_URL + '/img' + $.facebox.settings.closeImage;
  });

  $(document).bind('reveal.facebox', function() {
    $('#facebox.pplx-info-dialog, #facebox.pplx-error-dialog').hide().css('top', '-10px').slideDown();
    var facebox = $('#facebox.pplx-info-dialog');
    facebox.find('.footer').hide();
    setTimeout(function() {
      facebox.slideUp().find('.footer').show();
    }, 5000);


    // ACCOUNT - LOGIN
    $('.pplx-account-login-form-dialog').submit(function(event) {
      event.preventDefault();

      if (Piplex.validateForm(this)) {
        Piplex.accountLogin(this);
      }
    });

    // ACCOUNT - CREATE FORM
    $('.pplx-account-new-form').submit(function(event) {
      event.preventDefault();

      if (Piplex.validateForm(this)) {
        Piplex.accountCreate(this);
      }
    });

    // ACCOUNT - DESTROY FORM
    $('.pplx-account-confirm-delete-form input[type=reset]').click(function(event) {
      $.facebox.close();
      return false;
    });

    // ACCOUNT - FORGET FORM
    $('.pplx-account-forget-form').submit(function(event) {
      event.preventDefault();

      if (Piplex.validateForm(this)) {
        Piplex.accountRetrieve(this);
      }
    });
    
    // ACCOUNT - TWITTER FORM
    $('.pplx-account-social-form').submit(function(event) {
      event.preventDefault();

      if (Piplex.validateForm(this)) {
        Piplex.accountUpdateSocial(this);
      }
    });
    
    // ALERT - REMOVE NETWORK
    $('.pplx-alert-network-link').click(function(event) {
      event.preventDefault();
      Piplex.alertNetworkStop(this);
    });
    
    // FRIEND - CREATE FORM
    $('.pplx-user-friend-new-form').submit(function(event) {
      event.preventDefault();
      Piplex.friendCreate(this);
    });
    $('.pplx-user-friend-new-form input[type=reset]').click(function(event) {
      $.facebox.close();
      return false;
    });

    // FRIEND - DESTROY FORM
    $('.pplx-user-friend-delete-form').submit(function(event) {
      event.preventDefault();
      Piplex.friendDestroy(this);
    });
    $('.pplx-user-friend-delete-form input[type=reset]').click(function(event) {
      $.facebox.close();
      return false;
    });

    $('.pplx-user-game-form').submit(function(event) {
      if(!$(this).find('select[name=id]').val())
        event.preventDefault();
    });

    // MESSAGE - CREATE FORM
    $('.pplx-message-new-form').submit(function(event) {
      event.preventDefault();
      if (Piplex.validateForm(this)) {
        Piplex.messageCreate(this);
      }
    });
    $('.pplx-message-new-form input[type=reset]').click(function(event) {
      $.facebox.close();
      return false;
    });

    // MESSAGE - DESTROY FORM
    $('.pplx-message-confirm-delete-form').submit(function(event) {
      event.preventDefault();
      Piplex.messageDestroy(this);
    });
    $('.pplx-message-confirm-delete-form input[type=reset]').click(function(event) {
      $.facebox.close();
      return false;
    });

    // WITHDRAWAL - CREATE FORM
    $('.pplx-withdrawal-new-form').submit(function(event) {
      event.preventDefault();
      if (Piplex.validateForm(this)) {
        Piplex.withdrawalCreate(this);
      }
    });
    $('.pplx-withdrawal-new-form input[type=reset]').click(function(event) {
      $.facebox.close();
      return false;
    });

    // CONTACT - CREATE FORM
    $('.pplx-contact-form').submit(function(event) {
      event.preventDefault();
      if (Piplex.validateForm(this)) {
        Piplex.contactSend(this);
      }
    });

    // FORWARD - CREATE FORM
    $('.pplx-forward-form').submit(function(event) {
      event.preventDefault();
      if (Piplex.validateForm(this)) {
        Piplex.forwardSend(this);
      }
    });

    Piplex.initInputs($('#facebox'));
  });

  Piplex.homeFocusGame();

  Piplex.initInputs();

  Piplex.errorHandler(eval('(' + $('.pplx-error-messenger').html() + ')'));
  Piplex.infoHandler(eval('(' + $('.pplx-info-messenger').html() + ')'));
  
  if($('#screencasts').length)
    $('#screencasts').flash({swf: Piplex.BASE_URL + '/ScreenCast.swf', width: 453 , height: 340, wmode: 'transparent'});
});
