// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// name/control.js
//
// copyright (c) 2008-2010 drow <drow@bin.sh>
// all rights reserved.

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// configuration

var form = 'name_form';
var rpc_url = '/name/rpc.cgi';

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// initialize form

function init_form () {
  client_form(form);

  if (! init_type(form)) {
    var form_elem = $(form).elements;
    var prefs = get_cookie('name') || {};

    if (value = prefs.type) setv(form_elem['type'],value);
  }
  type_reaction();
  get_name();
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// set field

function set_field (field) {
  save_prefs('name',field); get_name();
}
function set_type (field) {
  type_reaction(); set_field(field);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// type reaction

function type_reaction () {
  var form_elem = $(form).elements;
  var type_sel = form_elem['type'];
  var type = selv(type_sel);

  for (i = 0; i < type_sel.options.length; i++) {
    var id = type_sel.options[i].value;
    var tr = $('tr-' + id);
    if (tr) { if (id == type) { tr.show() } else { tr.hide() } }
  }
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// get random name

function get_name () {
  var form_elem = $(form).elements;
  var type = selv(form_elem['type']);
    if (form_elem[type]) type = selv(form_elem[type]);
    if (! type) return rpc_error('Invalid name type');

  var query = { 'type': type, 'n': form_elem['list'].rows };
  var opts = { 'method': 'get', 'parameters': query,
    'onSuccess': function (req) { recv_name(req.responseText); },
    'onFailure': function (req) { rpc_error(req.statusText); },
    'onException': function (req,err) { rpc_error('System Error'); } };

  new Ajax.Request(rpc_url,opts);
  form_elem['list'].value = 'Working...';

  herald_type(type);
}
function recv_name (text) {
  var form_elem = $(form).elements;
  form_elem['list'].value = text;
}
function rpc_error (string) {
  var form_elem = $(form).elements;
  form_elem['list'].value = string;
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// showtime

document.observe('dom:loaded',init_form);

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


