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

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

  var cookie_opts = { 'domain': location.hostname };

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// init skin

  function init_skin () {
    if (title = get_cookie('skin')) {
      if (! set_actcss(title)) {
        delete_cookie('skin',cookie_opts);
        default_skin();
      }
    }
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// default skin

  function default_skin () {
    if (title = get_prefcss()) {
      set_actcss(title);
    } else if (list = list_stylesheets()) {
      set_actcss(list[0].title);
    }
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// set skin

  function set_skin (title) {
    if (set_actcss(title)) {
      persistent_cookie('skin',title,cookie_opts);
    } else {
      default_skin();
    }
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// list named stylesheets

  function list_stylesheets () {
    return $$('link').select(named_link).map(link_meta);
  }
  function named_link (link) {
    return (link.readAttribute('rel').indexOf('style') != -1
         && link.readAttribute('title'));
  }
  function link_meta (link) {
    return { 'link': link, 'title': link.readAttribute('title') };
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// get preferred stylesheet

  function get_prefcss () {
    if (css = list_stylesheets().find(pref_css)) return css.title;
  }
  function pref_css (meta) {
    return (meta.link.readAttribute('rel').indexOf('alt') == -1);
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// get active stylesheet

  function get_actcss () {
    if (css = list_stylesheets().find(active_css)) return css.title;
  }
  function active_css (meta) {
    return (! meta.link.disabled);
  }

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// set active stylesheet

  function set_actcss (title) {
    var actcss = false;

    list_stylesheets().each(function (meta) {
      if (meta.title == title) {
        meta.link.disabled = false;
        actcss = title;
      } else {
        meta.link.disabled = true;
      }
    });
    return actcss;
  }

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

  init_skin();

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


