var Update = {
  request: function(id, url, params) {
    // params: page, s (series), ...
    params = $H(params).merge({_remote: true});
    
    new Ajax.Updater(id, url,  {
       method: 'get',
      evalScripts: true,
      parameters: params
    });
    return false;
  }
}

Object.extend(Update, {

  activateProgPlayButtons: function() {
    $$('a[rel="p_play"]').each(function(i) {
      i.onclick = function(e) {
        var params = {page: 'player'};
        /* // автостарт?
        if (this.hasClassName('autostart')) {
          params['autostart'] = true;
        }*/
        // сделать автостарт всем ссылкам
        params['autostart'] = true;
        return Update.request('player', this.href, params);
      }
    });
  },

  // update top rated program list
  progTopRatedList: function(url, params) {
    params = $H(params).merge({page: 'news/program/top_rated_list'});
    return Update.request('p_top_rated_list', url, params);
  },

  // update top rated program list
  progTopShowsList: function(url, params) {
    params = $H(params).merge({page: 'news/program/top_shows_list'});
    return Update.request('p_top_shows_list', url, params);
  },

  // update top rated program list
  gameListWRemote: function(url, params) {
    params = $H(params).merge({page: 'games/list_w_remote'});
    return Update.request('g_list', url, params);
  },

  // update top rated program list
  /*
  gameOneColumnList: function(params) {
    params['page'] = 'games/one_column_list';
    return Update.request('g_one_column_list', params);
  },
  */

  // update bottom program list by alias
  bottomProgListBySeriesAlias: function(id, url, series_alias, params) {
    params = $H(params).merge({page: 'news/program/bottom_list', s: series_alias});
    return Update.request(id, url, params);
  },

  progCalendar : function(url, params) {
    params = $H(params).merge({page: 'calendar'});
    return Update.request('calendar', url, params);
  }
});

// ------------------------------------------------------------

Ajax.Process = {
  S_PROCESS: "пожалуйста подождите...",
  DIV_ID: 'ajax-process',

  init: function() {
    /*
    var db = document.documentElement ? document.documentElement : document.body;
    var div = document.createElement(this.DIV_ID);
    div.id = this.DIV_ID;
    db.appendChild(div);
    */
    this.hide();
  },

  show: function() {
    if (!this.process) {
      this.process = $(this.DIV_ID);
      if (!this.process) return;
    }

    var top = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    this.process.style.top = top + "px";
    this.process.innerHTML = this.S_PROCESS;
    this.process.style.display = "block";
  },

  hide: function() {
    if (!this.process) {
      this.process = $(this.DIV_ID);
      if (!this.process) return;
    }
    this.process.style.display = "none";
  }
};

Ajax.Responders.register({
  onCreate: function() {
    Ajax.Process.show();
  },

  onComplete: function() {
    if(Ajax.activeRequestCount == 0){
      Ajax.Process.hide();
    }
  }
});

// ------------------------------------------------------------
