/**
 * Toggles element
 *
 * @package    app.oferia.lib
 * @subpackage widget
 * @author     Bartosz "Inc!" Kielczewski
 * @version    SVN: $Id: toggle.js 9176 2009-06-06 11:36:12Z amos $
 */

function Toggle(element, state, options)
{
  this.element = element;
  this.state   = state;
  this.options = options;

  Event.observe(this.element, 'click', this.onSwitch.bindAsEventListener(this));
}

Toggle.prototype.onSwitch = function(event)
{  
  new Ajax.Request(this.getOption('url'), {
    method: 'get',
    parameters: { state: (this.state == 1) ? 0 : 1 },
    onSuccess: this.update.bind(this)
  });  
}

Toggle.prototype.update = function(transport, json)
{
  this.state = json.state;
  
  if (this.state == 1)
  {
    $(this.element).removeClassName('off');
    $(this.element).addClassName('on');
    $(this.element).update(this.getOption('on', 'on'));
    $(this.element + '_indicator').update(this.getOption('on_indicator', ''));
  }
  else if (this.state == -1)	  
  {
	document.location = json['url'];
    //$(this.element).removeClassName('off');
    //$(this.element).addClassName('on');
    //$(this.element).update(this.getOption('login', 'login'));
  }
  else
  {
    $(this.element).removeClassName('on');
    $(this.element).addClassName('off');
    $(this.element).update(this.getOption('off', 'off'));
    $(this.element + '_indicator').update(this.getOption('off_indicator', ''));
  }
}

Toggle.prototype.getOption = function(name, defaultValue)
{
  return eval('this.options.' + name) ? eval('(this.options.' + name + ')') : defaultValue;
}
