
// $Id: site.js

var Site = Site || {
  initialize:  function() {
    $(document).ready(Site.onLoad);
  },

  onLoad: function() {
    Site.currentTimeInit();
    Site.initBlockUI();
    Site.addAjaxSubmitOnCompleteEvent(Site.siteAjaxSubmitOncomplete);
    Site.initLoginLinks();

    $(window).scroll( function() { Site.onScrollHandler(); } );
  },

  monthNames: [
    "Января","Февраля","Марта","Апреля","Мая","Июня","Июля",
    "Августа","Сентября","Октября","Ноября","Декабря"
  ],

  weekDays: [
    "Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг","Пятница", "Суббота"
  ],

  currentTimeInit: function() {
    $('#site-current-time').each(function(){
      Site.currentTime_tick();
    });
  },

  currentTime_tick: function () {
    $('#site-current-time').each(function(){
      var now = new Date();
      var result = "";

      result += Site.weekDays[now.getDay()] + ', ';
      result += now.getDate() + ' ';
      result += Site.monthNames[now.getMonth()] + ' ';
      result += now.getFullYear() + ', ';

      var minutes = now.getMinutes();
      if (minutes <= 9) {
        minutes = "0" + minutes;
      }

      result += now.getHours() + ":" + minutes;

      $(this).html(result);
      setTimeout(Site.currentTime_tick, 1000);
    });
  },

  initBlockUI: function() {
    $.blockUI.defaults.overlayCSS = { backgroundColor: '#C0C0C0', opacity: '0.8' };
    $.blockUI.defaults.css = { margin:'-120px 0 0 -300px', top:'50%', left:'50%', color:'#000', backgroundColor:'#fff', border:'3px solid #aaa' };
  },

  initLoginLinks: function() {
    $('.login-link').bind('click', function(event){
      event.preventDefault();
      Site.renderLoginForm(this.href);
    });
  },

  siteAjaxSubmitOncomplete: function(data) {
    if(this.form.id == 'user-login' || this.form.id == 'user-register') {
      if (data['errors'] ) {
        if(this.form.id == 'user-register') {
          Site.clearCaptcha();
          Site.ajaxGetRegisterForm(Site.renderCaptcha);
        }
      } else {
        if(this.form.id == 'user-login') {
          STools.gotoUrl(Site.loginRedirect);
          Site.loginRedirect = null;
          return Site.SITE_AJAXSUBMIT_RESULT_PROCESSED_AND_EXIT;
        }

        if(this.form.id == 'user-register') {
          $('#edit-form-redirect').each( function() {
            STools.gotoUrl(this.value);
          });
          return Site.SITE_AJAXSUBMIT_RESULT_PROCESSED_AND_EXIT;
        }
      }
      return Site.SITE_AJAXSUBMIT_RESULT_PROCESSED;
    }
    return Site.SITE_AJAXSUBMIT_RESULT_NONE;
  },

  renderLoginForm: function(redirectUrl) {
    Site.loginRedirect = redirectUrl;
    Site.ajaxGetLoginForm(Site.renderModalBlock)
  },

  renderRegisterBox: function() {
    Site.ajaxGetRegisterForm(Site.renderModalBlock);
  },

  renderSearchBox: function() {
    Site.ajaxGetSearchForm(Site.renderModalBlock);
  },


  ajaxGetLoginForm: function(handler) {
    $.ajax({ type: "GET", url: "ajax/site-login-form", success: handler });
  },

  ajaxGetRegisterForm: function(handler) {
    $.ajax({ type: "GET", url: "ajax/site-register-form", success: handler });
  },

  ajaxGetSearchForm: function(handler) {
    $.ajax({ type: "GET", url: "ajax/site-search-form", success: handler });
  },

  blockUISetDefaultStyle: function() {
    $.blockUI.defaults.css.width = '433px';
    $.blockUI.defaults.css.height = '274px';
    $.blockUI.defaults.css.border = '0px none transparent';
    $.blockUI.defaults.css.margin = '-135px 0 0 -216px';
    $.blockUI.defaults.css.top = '30%';
  },

  renderModalBlock: function(data) {
    // Site.blockUISetDefaultStyle();
    $.blockUI({ 
      message: data,
      css: { width: '433px', height: '274px', border: '0px none transparent', margin: '-135px 0 0 -216px', top: '30%' }
    });
    Drupal.attachBehaviors(document);

    $('#block-modal-close-bnt').click(function(){
      $.unblockUI();
    });
  },

  clearCaptcha: function() {
    $('#captcha-area IMG').remove();
  },

  renderCaptcha: function(data) {
    $('#captcha-area', data).each( function() {
      $('#captcha-area').html(this.innerHTML);
    });
  },


  SITE_AJAXSUBMIT_RESULT_NONE: 0,
  SITE_AJAXSUBMIT_RESULT_PROCESSED: 1,
  SITE_AJAXSUBMIT_RESULT_PROCESSED_AND_EXIT: 2,
  addAjaxSubmitOnCompleteEvent: function(handler) {
    if(!Site.ajaxSubmitOncomleteEvents) {
      Site.ajaxSubmitOncomleteEvents = [];
      Site.oldAjaxSubmitOncomplete = Drupal.ajaxsubmit.prototype.oncomplete;
      Drupal.ajaxsubmit.prototype.oncomplete = Site.ajaxSubmitOncomplete;
    }
    Site.ajaxSubmitOncomleteEvents.push(handler);
  },

  ajaxSubmitOncomplete: function(data) {
    var result;
    if(Site.ajaxSubmitOncomleteEvents) {
      for (var i = 0; i < Site.ajaxSubmitOncomleteEvents.length; i++) {
        result = Site.ajaxSubmitOncomleteEvents[i].call(this, data);
        if( result == Site.SITE_AJAXSUBMIT_RESULT_PROCESSED_AND_EXIT ) return true;
        if( result == Site.SITE_AJAXSUBMIT_RESULT_PROCESSED ) break;
      }
    }
    return Site.oldAjaxSubmitOncomplete.call(this, data);
  },

  registerFromModalBlock: function() {
    $.unblockUI();
    Site.renderRegisterBox();
  },

  SITE_SEARCH_KEYS: 'edit-site-search-keys',
  searchAction: function() {
    STools.gotoUrl('search/node/' + encodeURI(STools.FValue(Site.SITE_SEARCH_KEYS) ) );
    return false;
  },

  onScrollHandler: function() {
    $('#go-top-page-button').css('display', $(window).scrollTop() > 18 ? 'block' : 'none');
  }
}
Site.initialize();



