/*  Prototype JavaScript framework, version 1.6.0.3
 *  (c) 2005-2008 Sam Stephenson
 *
 *  Prototype is freely distributable under the terms of an MIT-style license.
 *  For details, see the Prototype web site: http://www.prototypejs.org/
 *
 *--------------------------------------------------------------------------*/

var Prototype = {
  Version: '1.6.0.3',

  Browser: {
    IE:     !!(window.attachEvent &&
      navigator.userAgent.indexOf('Opera') === -1),
    Opera:  navigator.userAgent.indexOf('Opera') > -1,
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 &&
      navigator.userAgent.indexOf('KHTML') === -1,
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
  },

  BrowserFeatures: {
    XPath: !!document.evaluate,
    SelectorsAPI: !!document.querySelector,
    ElementExtensions: !!window.HTMLElement,
    SpecificElementExtensions:
      document.createElement('div')['__proto__'] &&
      document.createElement('div')['__proto__'] !==
        document.createElement('form')['__proto__']
  },

  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,

  emptyFunction: function() { },
  K: function(x) { return x }
};

if (Prototype.Browser.MobileSafari)
  Prototype.BrowserFeatures.SpecificElementExtensions = false;


/* Based on Alex Arnell's inheritance implementation. */
var Class = {
  create: function() {
    var parent = null, properties = $A(arguments);
    if (Object.isFunction(properties[0]))
      parent = properties.shift();

    function klass() {
      this.initialize.apply(this, arguments);
    }

    Object.extend(klass, Class.Methods);
    klass.superclass = parent;
    klass.subclasses = [];

    if (parent) {
      var subclass = function() { };
      subclass.prototype = parent.prototype;
      klass.prototype = new subclass;
      parent.subclasses.push(klass);
    }

    for (var i = 0; i < properties.length; i++)
      klass.addMethods(properties[i]);

    if (!klass.prototype.initialize)
      klass.prototype.initialize = Prototype.emptyFunction;

    klass.prototype.constructor = klass;

    return klass;
  }
};

Class.Methods = {
  addMethods: function(source) {
    var ancestor   = this.superclass && this.superclass.prototype;
    var properties = Object.keys(source);

    if (!Object.keys({ toString: true }).length)
      properties.push("toString", "valueOf");

    for (var i = 0, length = properties.length; i < length; i++) {
      var property = properties[i], value = source[property];
      if (ancestor && Object.isFunction(value) &&
          value.argumentNames().first() == "$super") {
        var method = value;
        value = (function(m) {
          return function() { return ancestor[m].apply(this, arguments) };
        })(property).wrap(method);

        value.valueOf = method.valueOf.bind(method);
        value.toString = method.toString.bind(method);
      }
      this.prototype[property] = value;
    }

    return this;
  }
};

var Abstract = { };

Object.extend = function(destination, source) {
  for (var property in source)
    destination[property] = source[property];
  return destination;
};

Object.extend(Object, {
  inspect: function(object) {
    try {
      if (Object.isUndefined(object)) return 'undefined';
      if (object === null) return 'null';
      return object.inspect ? object.inspect() : String(object);
    } catch (e) {
      if (e instanceof RangeError) return '...';
      throw e;
    }
  },

  toJSON: function(object) {
    var type = typeof object;
    switch (type) {
      case 'undefined':
      case 'function':
      case 'unknown': return;
      case 'boolean': return object.toString();
    }

    if (object === null) return 'null';
    if (object.toJSON) return object.toJSON();
    if (Object.isElement(object)) return;

    var results = [];
    for (var property in object) {
      var value = Object.toJSON(object[property]);
      if (!Object.isUndefined(value))
        results.push(property.toJSON() + ': ' + value);
    }

    return '{' + results.join(', ') + '}';
  },

  toQueryString: function(object) {
    return $H(object).toQueryString();
  },

  toHTML: function(object) {
    return object && object.toHTML ? object.toHTML() : String.interpret(object);
  },

  keys: function(object) {
    var keys = [];
    for (var property in object)
      keys.push(property);
    return keys;
  },

  values: function(object) {
    var values = [];
    for (var property in object)
      values.push(object[property]);
    return values;
  },

  clone: function(object) {
    return Object.extend({ }, object);
  },

  isElement: function(object) {
    return !!(object && object.nodeType == 1);
  },

  isArray: function(object) {
    return object != null && typeof object == "object" &&
      'splice' in object && 'join' in object;
  },

  isHash: function(object) {
    return object instanceof Hash;
  },

  isFunction: function(object) {
    return typeof object == "function";
  },

  isString: function(object) {
    return typeof object == "string";
  },

  isNumber: function(object) {
    return typeof object == "number";
  },

  isUndefined: function(object) {
    return typeof object == "undefined";
  }
});

Object.extend(Function.prototype, {
  argumentNames: function() {
    var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1]
      .replace(/\s+/g, '').split(',');
    return names.length == 1 && !names[0] ? [] : names;
  },

  bind: function() {
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
    var __method = this, args = $A(arguments), object = args.shift();
    return function() {
      return __method.apply(object, args.concat($A(arguments)));
    }
  },

  bindAsEventListener: function() {
    var __method = this, args = $A(arguments), object = args.shift();
    return function(event) {
      return __method.apply(object, [event || window.event].concat(args));
    }
  },

  curry: function() {
    if (!arguments.length) return this;
    var __method = this, args = $A(arguments);
    return function() {
      return __method.apply(this, args.concat($A(arguments)));
    }
  },

  delay: function() {
    var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
    return window.setTimeout(function() {
      return __method.apply(__method, args);
    }, timeout);
  },

  defer: function() {
    var args = [0.01].concat($A(arguments));
    return this.delay.apply(this, args);
  },

  wrap: function(wrapper) {
    var __method = this;
    return function() {
      return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
    }
  },

  methodize: function() {
    if (this._methodized) return this._methodized;
    var __method = this;
    return this._methodized = function() {
      return __method.apply(null, [this].concat($A(arguments)));
    };
  }
});

Date.prototype.toJSON = function() {
  return '"' + this.getUTCFullYear() + '-' +
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
    this.getUTCDate().toPaddedString(2) + 'T' +
    this.getUTCHours().toPaddedString(2) + ':' +
    this.getUTCMinutes().toPaddedString(2) + ':' +
    this.getUTCSeconds().toPaddedString(2) + 'Z"';
};

var Try = {
  these: function() {
    var returnValue;

    for (var i = 0, length = arguments.length; i < length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) { }
    }

    return returnValue;
  }
};

RegExp.prototype.match = RegExp.prototype.test;

RegExp.escape = function(str) {
  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
};

/*--------------------------------------------------------------------------*/

var PeriodicalExecuter = Class.create({
  initialize: function(callback, frequency) {
    this.callback = callback;
    this.frequency = frequency;
    this.currentlyExecuting = false;

    this.registerCallback();
  },

  registerCallback: function() {
    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
  },

  execute: function() {
    this.callback(this);
  },

  stop: function() {
    if (!this.timer) return;
    clearInterval(this.timer);
    this.timer = null;
  },

  onTimerEvent: function() {
    if (!this.currentlyExecuting) {
      try {
        this.currentlyExecuting = true;
        this.execute();
      } finally {
        this.currentlyExecuting = false;
      }
    }
  }
});
Object.extend(String, {
  interpret: function(value) {
    return value == null ? '' : String(value);
  },
  specialChar: {
    '\b': '\\b',
    '\t': '\\t',
    '\n': '\\n',
    '\f': '\\f',
    '\r': '\\r',
    '\\': '\\\\'
  }
});

Object.extend(String.prototype, {
  gsub: function(pattern, replacement) {
    var result = '', source = this, match;
    replacement = arguments.callee.prepareReplacement(replacement);

    while (source.length > 0) {
      if (match = source.match(pattern)) {
        result += source.slice(0, match.index);
        result += String.interpret(replacement(match));
        source  = source.slice(match.index + match[0].length);
      } else {
        result += source, source = '';
      }
    }
    return result;
  },

  sub: function(pattern, replacement, count) {
    replacement = this.gsub.prepareReplacement(replacement);
    count = Object.isUndefined(count) ? 1 : count;

    return this.gsub(pattern, function(match) {
      if (--count < 0) return match[0];
      return replacement(match);
    });
  },

  scan: function(pattern, iterator) {
    this.gsub(pattern, iterator);
    return String(this);
  },

  truncate: function(length, truncation) {
    length = length || 30;
    truncation = Object.isUndefined(truncation) ? '...' : truncation;
    return this.length > length ?
      this.slice(0, length - truncation.length) + truncation : String(this);
  },

  strip: function() {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
  },

  stripTags: function() {
    return this.replace(/<\/?[^>]+>/gi, '');
  },

  stripScripts: function() {
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
  },

  extractScripts: function() {
    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
    return (this.match(matchAll) || []).map(function(scriptTag) {
      return (scriptTag.match(matchOne) || ['', ''])[1];
    });
  },

  evalScripts: function() {
    return this.extractScripts().map(function(script) { return eval(script) });
  },

  escapeHTML: function() {
    var self = arguments.callee;
    self.text.data = this;
    return self.div.innerHTML;
  },

  unescapeHTML: function() {
    var div = new Element('div');
    div.innerHTML = this.stripTags();
    return div.childNodes[0] ? (div.childNodes.length > 1 ?
      $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
      div.childNodes[0].nodeValue) : '';
  },

  toQueryParams: function(separator) {
    var match = this.strip().match(/([^?#]*)(#.*)?$/);
    if (!match) return { };

    return match[1].split(separator || '&').inject({ }, function(hash, pair) {
      if ((pair = pair.split('='))[0]) {
        var key = decodeURIComponent(pair.shift());
        var value = pair.length > 1 ? pair.join('=') : pair[0];
        if (value != undefined) value = decodeURIComponent(value);

        if (key in hash) {
          if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
          hash[key].push(value);
        }
        else hash[key] = value;
      }
      return hash;
    });
  },

  toArray: function() {
    return this.split('');
  },

  succ: function() {
    return this.slice(0, this.length - 1) +
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
  },

  times: function(count) {
    return count < 1 ? '' : new Array(count + 1).join(this);
  },

  camelize: function() {
    var parts = this.split('-'), len = parts.length;
    if (len == 1) return parts[0];

    var camelized = this.charAt(0) == '-'
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
      : parts[0];

    for (var i = 1; i < len; i++)
      camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);

    return camelized;
  },

  capitalize: function() {
    return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
  },

  underscore: function() {
    return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
  },

  dasherize: function() {
    return this.gsub(/_/,'-');
  },

  inspect: function(useDoubleQuotes) {
    var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
      var character = String.specialChar[match[0]];
      return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
    });
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";
  },

  toJSON: function() {
    return this.inspect(true);
  },

  unfilterJSON: function(filter) {
    return this.sub(filter || Prototype.JSONFilter, '#{1}');
  },

  isJSON: function() {
    var str = this;
    if (str.blank()) return false;
    str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
  },

  evalJSON: function(sanitize) {
    var json = this.unfilterJSON();
    try {
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
    } catch (e) { }
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
  },

  include: function(pattern) {
    return this.indexOf(pattern) > -1;
  },

  startsWith: function(pattern) {
    return this.indexOf(pattern) === 0;
  },

  endsWith: function(pattern) {
    var d = this.length - pattern.length;
    return d >= 0 && this.lastIndexOf(pattern) === d;
  },

  empty: function() {
    return this == '';
  },

  blank: function() {
    return /^\s*$/.test(this);
  },

  interpolate: function(object, pattern) {
    return new Template(this, pattern).evaluate(object);
  }
});

if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
  escapeHTML: function() {
    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
  },
  unescapeHTML: function() {
    return this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
  }
});

String.prototype.gsub.prepareReplacement = function(replacement) {
  if (Object.isFunction(replacement)) return replacement;
  var template = new Template(replacement);
  return function(match) { return template.evaluate(match) };
};

String.prototype.parseQuery = String.prototype.toQueryParams;

Object.extend(String.prototype.escapeHTML, {
  div:  document.createElement('div'),
  text: document.createTextNode('')
});

String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);

var Template = Class.create({
  initialize: function(template, pattern) {
    this.template = template.toString();
    this.pattern = pattern || Template.Pattern;
  },

  evaluate: function(object) {
    if (Object.isFunction(object.toTemplateReplacements))
      object = object.toTemplateReplacements();

    return this.template.gsub(this.pattern, function(match) {
      if (object == null) return '';

      var before = match[1] || '';
      if (before == '\\') return match[2];

      var ctx = object, expr = match[3];
      var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
      match = pattern.exec(expr);
      if (match == null) return before;

      while (match != null) {
        var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
        ctx = ctx[comp];
        if (null == ctx || '' == match[3]) break;
        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
        match = pattern.exec(expr);
      }

      return before + String.interpret(ctx);
    });
  }
});
Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;

var $break = { };

var Enumerable = {
  each: function(iterator, context) {
    var index = 0;
    try {
      this._each(function(value) {
        iterator.call(context, value, index++);
      });
    } catch (e) {
      if (e != $break) throw e;
    }
    return this;
  },

  eachSlice: function(number, iterator, context) {
    var index = -number, slices = [], array = this.toArray();
    if (number < 1) return array;
    while ((index += number) < array.length)
      slices.push(array.slice(index, index+number));
    return slices.collect(iterator, context);
  },

  all: function(iterator, context) {
    iterator = iterator || Prototype.K;
    var result = true;
    this.each(function(value, index) {
      result = result && !!iterator.call(context, value, index);
      if (!result) throw $break;
    });
    return result;
  },

  any: function(iterator, context) {
    iterator = iterator || Prototype.K;
    var result = false;
    this.each(function(value, index) {
      if (result = !!iterator.call(context, value, index))
        throw $break;
    });
    return result;
  },

  collect: function(iterator, context) {
    iterator = iterator || Prototype.K;
    var results = [];
    this.each(function(value, index) {
      results.push(iterator.call(context, value, index));
    });
    return results;
  },

  detect: function(iterator, context) {
    var result;
    this.each(function(value, index) {
      if (iterator.call(context, value, index)) {
        result = value;
        throw $break;
      }
    });
    return result;
  },

  findAll: function(iterator, context) {
    var results = [];
    this.each(function(value, index) {
      if (iterator.call(context, value, index))
        results.push(value);
    });
    return results;
  },

  grep: function(filter, iterator, context) {
    iterator = iterator || Prototype.K;
    var results = [];

    if (Object.isString(filter))
      filter = new RegExp(filter);

    this.each(function(value, index) {
      if (filter.match(value))
        results.push(iterator.call(context, value, index));
    });
    return results;
  },

  include: function(object) {
    if (Object.isFunction(this.indexOf))
      if (this.indexOf(object) != -1) return true;

    var found = false;
    this.each(function(value) {
      if (value == object) {
        found = true;
        throw $break;
      }
    });
    return found;
  },

  inGroupsOf: function(number, fillWith) {
    fillWith = Object.isUndefined(fillWith) ? null : fillWith;
    return this.eachSlice(number, function(slice) {
      while(slice.length < number) slice.push(fillWith);
      return slice;
    });
  },

  inject: function(memo, iterator, context) {
    this.each(function(value, index) {
      memo = iterator.call(context, memo, value, index);
    });
    return memo;
  },

  invoke: function(method) {
    var args = $A(arguments).slice(1);
    return this.map(function(value) {
      return value[method].apply(value, args);
    });
  },

  max: function(iterator, context) {
    iterator = iterator || Prototype.K;
    var result;
    this.each(function(value, index) {
      value = iterator.call(context, value, index);
      if (result == null || value >= result)
        result = value;
    });
    return result;
  },

  min: function(iterator, context) {
    iterator = iterator || Prototype.K;
    var result;
    this.each(function(value, index) {
      value = iterator.call(context, value, index);
      if (result == null || value < result)
        result = value;
    });
    return result;
  },

  partition: function(iterator, context) {
    iterator = iterator || Prototype.K;
    var trues = [], falses = [];
    this.each(function(value, index) {
      (iterator.call(context, value, index) ?
        trues : falses).push(value);
    });
    return [trues, falses];
  },

  pluck: function(property) {
    var results = [];
    this.each(function(value) {
      results.push(value[property]);
    });
    return results;
  },

  reject: function(iterator, context) {
    var results = [];
    this.each(function(value, index) {
      if (!iterator.call(context, value, index))
        results.push(value);
    });
    return results;
  },

  sortBy: function(iterator, context) {
    return this.map(function(value, index) {
      return {
        value: value,
        criteria: iterator.call(context, value, index)
      };
    }).sort(function(left, right) {
      var a = left.criteria, b = right.criteria;
      return a < b ? -1 : a > b ? 1 : 0;
    }).pluck('value');
  },

  toArray: function() {
    return this.map();
  },

  zip: function() {
    var iterator = Prototype.K, args = $A(arguments);
    if (Object.isFunction(args.last()))
      iterator = args.pop();

    var collections = [this].concat(args).map($A);
    return this.map(function(value, index) {
      return iterator(collections.pluck(index));
    });
  },

  size: function() {
    return this.toArray().length;
  },

  inspect: function() {
    return '#<Enumerable:' + this.toArray().inspect() + '>';
  }
};

Object.extend(Enumerable, {
  map:     Enumerable.collect,
  find:    Enumerable.detect,
  select:  Enumerable.findAll,
  filter:  Enumerable.findAll,
  member:  Enumerable.include,
  entries: Enumerable.toArray,
  every:   Enumerable.all,
  some:    Enumerable.any
});
function $A(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) return iterable.toArray();
  var length = iterable.length || 0, results = new Array(length);
  while (length--) results[length] = iterable[length];
  return results;
}

if (Prototype.Browser.WebKit) {
  $A = function(iterable) {
    if (!iterable) return [];
    // In Safari, only use the `toArray` method if it's not a NodeList.
    // A NodeList is a function, has an function `item` property, and a numeric
    // `length` property. Adapted from Google Doctype.
    if (!(typeof iterable === 'function' && typeof iterable.length ===
        'number' && typeof iterable.item === 'function') && iterable.toArray)
      return iterable.toArray();
    var length = iterable.length || 0, results = new Array(length);
    while (length--) results[length] = iterable[length];
    return results;
  };
}

Array.from = $A;

Object.extend(Array.prototype, Enumerable);

if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;

Object.extend(Array.prototype, {
  _each: function(iterator) {
    for (var i = 0, length = this.length; i < length; i++)
      iterator(this[i]);
  },

  clear: function() {
    this.length = 0;
    return this;
  },

  first: function() {
    return this[0];
  },

  last: function() {
    return this[this.length - 1];
  },

  compact: function() {
    return this.select(function(value) {
      return value != null;
    });
  },

  flatten: function() {
    return this.inject([], function(array, value) {
      return array.concat(Object.isArray(value) ?
        value.flatten() : [value]);
    });
  },

  without: function() {
    var values = $A(arguments);
    return this.select(function(value) {
      return !values.include(value);
    });
  },

  reverse: function(inline) {
    return (inline !== false ? this : this.toArray())._reverse();
  },

  reduce: function() {
    return this.length > 1 ? this : this[0];
  },

  uniq: function(sorted) {
    return this.inject([], function(array, value, index) {
      if (0 == index || (sorted ? array.last() != value : !array.include(value)))
        array.push(value);
      return array;
    });
  },

  intersect: function(array) {
    return this.uniq().findAll(function(item) {
      return array.detect(function(value) { return item === value });
    });
  },

  clone: function() {
    return [].concat(this);
  },

  size: function() {
    return this.length;
  },

  inspect: function() {
    return '[' + this.map(Object.inspect).join(', ') + ']';
  },

  toJSON: function() {
    var results = [];
    this.each(function(object) {
      var value = Object.toJSON(object);
      if (!Object.isUndefined(value)) results.push(value);
    });
    return '[' + results.join(', ') + ']';
  }
});

// use native browser JS 1.6 implementation if available
if (Object.isFunction(Array.prototype.forEach))
  Array.prototype._each = Array.prototype.forEach;

if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
  i || (i = 0);
  var length = this.length;
  if (i < 0) i = length + i;
  for (; i < length; i++)
    if (this[i] === item) return i;
  return -1;
};

if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
  i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
  var n = this.slice(0, i).reverse().indexOf(item);
  return (n < 0) ? n : i - n - 1;
};

Array.prototype.toArray = Array.prototype.clone;

function $w(string) {
  if (!Object.isString(string)) return [];
  string = string.strip();
  return string ? string.split(/\s+/) : [];
}

if (Prototype.Browser.Opera){
  Array.prototype.concat = function() {
    var array = [];
    for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
    for (var i = 0, length = arguments.length; i < length; i++) {
      if (Object.isArray(arguments[i])) {
        for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
          array.push(arguments[i][j]);
      } else {
        array.push(arguments[i]);
      }
    }
    return array;
  };
}
Object.extend(Number.prototype, {
  toColorPart: function() {
    return this.toPaddedString(2, 16);
  },

  succ: function() {
    return this + 1;
  },

  times: function(iterator, context) {
    $R(0, this, true).each(iterator, context);
    return this;
  },

  toPaddedString: function(length, radix) {
    var string = this.toString(radix || 10);
    return '0'.times(length - string.length) + string;
  },

  toJSON: function() {
    return isFinite(this) ? this.toString() : 'null';
  }
});

$w('abs round ceil floor').each(function(method){
  Number.prototype[method] = Math[method].methodize();
});
function $H(object) {
  return new Hash(object);
};

var Hash = Class.create(Enumerable, (function() {

  function toQueryPair(key, value) {
    if (Object.isUndefined(value)) return key;
    return key + '=' + encodeURIComponent(String.interpret(value));
  }

  return {
    initialize: function(object) {
      this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
    },

    _each: function(iterator) {
      for (var key in this._object) {
        var value = this._object[key], pair = [key, value];
        pair.key = key;
        pair.value = value;
        iterator(pair);
      }
    },

    set: function(key, value) {
      return this._object[key] = value;
    },

    get: function(key) {
      // simulating poorly supported hasOwnProperty
      if (this._object[key] !== Object.prototype[key])
        return this._object[key];
    },

    unset: function(key) {
      var value = this._object[key];
      delete this._object[key];
      return value;
    },

    toObject: function() {
      return Object.clone(this._object);
    },

    keys: function() {
      return this.pluck('key');
    },

    values: function() {
      return this.pluck('value');
    },

    index: function(value) {
      var match = this.detect(function(pair) {
        return pair.value === value;
      });
      return match && match.key;
    },

    merge: function(object) {
      return this.clone().update(object);
    },

    update: function(object) {
      return new Hash(object).inject(this, function(result, pair) {
        result.set(pair.key, pair.value);
        return result;
      });
    },

    toQueryString: function() {
      return this.inject([], function(results, pair) {
        var key = encodeURIComponent(pair.key), values = pair.value;

        if (values && typeof values == 'object') {
          if (Object.isArray(values))
            return results.concat(values.map(toQueryPair.curry(key)));
        } else results.push(toQueryPair(key, values));
        return results;
      }).join('&');
    },

    inspect: function() {
      return '#<Hash:{' + this.map(function(pair) {
        return pair.map(Object.inspect).join(': ');
      }).join(', ') + '}>';
    },

    toJSON: function() {
      return Object.toJSON(this.toObject());
    },

    clone: function() {
      return new Hash(this);
    }
  }
})());

Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
Hash.from = $H;
var ObjectRange = Class.create(Enumerable, {
  initialize: function(start, end, exclusive) {
    this.start = start;
    this.end = end;
    this.exclusive = exclusive;
  },

  _each: function(iterator) {
    var value = this.start;
    while (this.include(value)) {
      iterator(value);
      value = value.succ();
    }
  },

  include: function(value) {
    if (value < this.start)
      return false;
    if (this.exclusive)
      return value < this.end;
    return value <= this.end;
  }
});

var $R = function(start, end, exclusive) {
  return new ObjectRange(start, end, exclusive);
};

var Ajax = {
  getTransport: function() {
    return Try.these(
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
    ) || false;
  },

  activeRequestCount: 0
};

Ajax.Responders = {
  responders: [],

  _each: function(iterator) {
    this.responders._each(iterator);
  },

  register: function(responder) {
    if (!this.include(responder))
      this.responders.push(responder);
  },

  unregister: function(responder) {
    this.responders = this.responders.without(responder);
  },

  dispatch: function(callback, request, transport, json) {
    this.each(function(responder) {
      if (Object.isFunction(responder[callback])) {
        try {
          responder[callback].apply(responder, [request, transport, json]);
        } catch (e) { }
      }
    });
  }
};

Object.extend(Ajax.Responders, Enumerable);

Ajax.Responders.register({
  onCreate:   function() { Ajax.activeRequestCount++ },
  onComplete: function() { Ajax.activeRequestCount-- }
});

Ajax.Base = Class.create({
  initialize: function(options) {
    this.options = {
      method:       'post',
      asynchronous: true,
      contentType:  'application/x-www-form-urlencoded',
      encoding:     'UTF-8',
      parameters:   '',
      evalJSON:     true,
      evalJS:       true
    };
    Object.extend(this.options, options || { });

    this.options.method = this.options.method.toLowerCase();

    if (Object.isString(this.options.parameters))
      this.options.parameters = this.options.parameters.toQueryParams();
    else if (Object.isHash(this.options.parameters))
      this.options.parameters = this.options.parameters.toObject();
  }
});

Ajax.Request = Class.create(Ajax.Base, {
  _complete: false,

  initialize: function($super, url, options) {
    $super(options);
    this.transport = Ajax.getTransport();
    this.request(url);
  },

  request: function(url) {
    this.url = url;
    this.method = this.options.method;
    var params = Object.clone(this.options.parameters);

    if (!['get', 'post'].include(this.method)) {
      // simulate other verbs over post
      params['_method'] = this.method;
      this.method = 'post';
    }

    this.parameters = params;

    if (params = Object.toQueryString(params)) {
      // when GET, append parameters to URL
      if (this.method == 'get')
        this.url += (this.url.include('?') ? '&' : '?') + params;
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
        params += '&_=';
    }

    try {
      var response = new Ajax.Response(this);
      if (this.options.onCreate) this.options.onCreate(response);
      Ajax.Responders.dispatch('onCreate', this, response);

      this.transport.open(this.method.toUpperCase(), this.url,
        this.options.asynchronous);

      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);

      this.transport.onreadystatechange = this.onStateChange.bind(this);
      this.setRequestHeaders();

      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
      this.transport.send(this.body);

      /* Force Firefox to handle ready state 4 for synchronous requests */
      if (!this.options.asynchronous && this.transport.overrideMimeType)
        this.onStateChange();

    }
    catch (e) {
      this.dispatchException(e);
    }
  },

  onStateChange: function() {
    var readyState = this.transport.readyState;
    if (readyState > 1 && !((readyState == 4) && this._complete))
      this.respondToReadyState(this.transport.readyState);
  },

  setRequestHeaders: function() {
    var headers = {
      'X-Requested-With': 'XMLHttpRequest',
      'X-Prototype-Version': Prototype.Version,
      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
    };

    if (this.method == 'post') {
      headers['Content-type'] = this.options.contentType +
        (this.options.encoding ? '; charset=' + this.options.encoding : '');

      /* Force "Connection: close" for older Mozilla browsers to work
       * around a bug where XMLHttpRequest sends an incorrect
       * Content-length header. See Mozilla Bugzilla #246651.
       */
      if (this.transport.overrideMimeType &&
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
            headers['Connection'] = 'close';
    }

    // user-defined headers
    if (typeof this.options.requestHeaders == 'object') {
      var extras = this.options.requestHeaders;

      if (Object.isFunction(extras.push))
        for (var i = 0, length = extras.length; i < length; i += 2)
          headers[extras[i]] = extras[i+1];
      else
        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
    }

    for (var name in headers)
      this.transport.setRequestHeader(name, headers[name]);
  },

  success: function() {
    var status = this.getStatus();
    return !status || (status >= 200 && status < 300);
  },

  getStatus: function() {
    try {
      return this.transport.status || 0;
    } catch (e) { return 0 }
  },

  respondToReadyState: function(readyState) {
    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);

    if (state == 'Complete') {
      try {
        this._complete = true;
        (this.options['on' + response.status]
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
         || Prototype.emptyFunction)(response, response.headerJSON);
      } catch (e) {
        this.dispatchException(e);
      }

      var contentType = response.getHeader('Content-type');
      if (this.options.evalJS == 'force'
          || (this.options.evalJS && this.isSameOrigin() && contentType
          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
        this.evalResponse();
    }

    try {
      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
    } catch (e) {
      this.dispatchException(e);
    }

    if (state == 'Complete') {
      // avoid memory leak in MSIE: clean up
      this.transport.onreadystatechange = Prototype.emptyFunction;
    }
  },

  isSameOrigin: function() {
    var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
    return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
      protocol: location.protocol,
      domain: document.domain,
      port: location.port ? ':' + location.port : ''
    }));
  },

  getHeader: function(name) {
    try {
      return this.transport.getResponseHeader(name) || null;
    } catch (e) { return null }
  },

  evalResponse: function() {
    try {
      return eval((this.transport.responseText || '').unfilterJSON());
    } catch (e) {
      this.dispatchException(e);
    }
  },

  dispatchException: function(exception) {
    (this.options.onException || Prototype.emptyFunction)(this, exception);
    Ajax.Responders.dispatch('onException', this, exception);
  }
});

Ajax.Request.Events =
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

Ajax.Response = Class.create({
  initialize: function(request){
    this.request = request;
    var transport  = this.transport  = request.transport,
        readyState = this.readyState = transport.readyState;

    if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
      this.status       = this.getStatus();
      this.statusText   = this.getStatusText();
      this.responseText = String.interpret(transport.responseText);
      this.headerJSON   = this._getHeaderJSON();
    }

    if(readyState == 4) {
      var xml = transport.responseXML;
      this.responseXML  = Object.isUndefined(xml) ? null : xml;
      this.responseJSON = this._getResponseJSON();
    }
  },

  status:      0,
  statusText: '',

  getStatus: Ajax.Request.prototype.getStatus,

  getStatusText: function() {
    try {
      return this.transport.statusText || '';
    } catch (e) { return '' }
  },

  getHeader: Ajax.Request.prototype.getHeader,

  getAllHeaders: function() {
    try {
      return this.getAllResponseHeaders();
    } catch (e) { return null }
  },

  getResponseHeader: function(name) {
    return this.transport.getResponseHeader(name);
  },

  getAllResponseHeaders: function() {
    return this.transport.getAllResponseHeaders();
  },

  _getHeaderJSON: function() {
    var json = this.getHeader('X-JSON');
    if (!json) return null;
    json = decodeURIComponent(escape(json));
    try {
      return json.evalJSON(this.request.options.sanitizeJSON ||
        !this.request.isSameOrigin());
    } catch (e) {
      this.request.dispatchException(e);
    }
  },

  _getResponseJSON: function() {
    var options = this.request.options;
    if (!options.evalJSON || (options.evalJSON != 'force' &&
      !(this.getHeader('Content-type') || '').include('application/json')) ||
        this.responseText.blank())
          return null;
    try {
      return this.responseText.evalJSON(options.sanitizeJSON ||
        !this.request.isSameOrigin());
    } catch (e) {
      this.request.dispatchException(e);
    }
  }
});

Ajax.Updater = Class.create(Ajax.Request, {
  initialize: function($super, container, url, options) {
    this.container = {
      success: (container.success || container),
      failure: (container.failure || (container.success ? null : container))
    };

    options = Object.clone(options);
    var onComplete = options.onComplete;
    options.onComplete = (function(response, json) {
      this.updateContent(response.responseText);
      if (Object.isFunction(onComplete)) onComplete(response, json);
    }).bind(this);

    $super(url, options);
  },

  updateContent: function(responseText) {
    var receiver = this.container[this.success() ? 'success' : 'failure'],
        options = this.options;

    if (!options.evalScripts) responseText = responseText.stripScripts();

    if (receiver = $(receiver)) {
      if (options.insertion) {
        if (Object.isString(options.insertion)) {
          var insertion = { }; insertion[options.insertion] = responseText;
          receiver.insert(insertion);
        }
        else options.insertion(receiver, responseText);
      }
      else receiver.update(responseText);
    }
  }
});

Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
  initialize: function($super, container, url, options) {
    $super(options);
    this.onComplete = this.options.onComplete;

    this.frequency = (this.options.frequency || 2);
    this.decay = (this.options.decay || 1);

    this.updater = { };
    this.container = container;
    this.url = url;

    this.start();
  },

  start: function() {
    this.options.onComplete = this.updateComplete.bind(this);
    this.onTimerEvent();
  },

  stop: function() {
    this.updater.options.onComplete = undefined;
    clearTimeout(this.timer);
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
  },

  updateComplete: function(response) {
    if (this.options.decay) {
      this.decay = (response.responseText == this.lastText ?
        this.decay * this.options.decay : 1);

      this.lastText = response.responseText;
    }
    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
  },

  onTimerEvent: function() {
    this.updater = new Ajax.Updater(this.container, this.url, this.options);
  }
});
function $(element) {
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (Object.isString(element))
    element = document.getElementById(element);
  return Element.extend(element);
}

if (Prototype.BrowserFeatures.XPath) {
  document._getElementsByXPath = function(expression, parentElement) {
    var results = [];
    var query = document.evaluate(expression, $(parentElement) || document,
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = 0, length = query.snapshotLength; i < length; i++)
      results.push(Element.extend(query.snapshotItem(i)));
    return results;
  };
}

/*--------------------------------------------------------------------------*/

if (!window.Node) var Node = { };

if (!Node.ELEMENT_NODE) {
  // DOM level 2 ECMAScript Language Binding
  Object.extend(Node, {
    ELEMENT_NODE: 1,
    ATTRIBUTE_NODE: 2,
    TEXT_NODE: 3,
    CDATA_SECTION_NODE: 4,
    ENTITY_REFERENCE_NODE: 5,
    ENTITY_NODE: 6,
    PROCESSING_INSTRUCTION_NODE: 7,
    COMMENT_NODE: 8,
    DOCUMENT_NODE: 9,
    DOCUMENT_TYPE_NODE: 10,
    DOCUMENT_FRAGMENT_NODE: 11,
    NOTATION_NODE: 12
  });
}

(function() {
  var element = this.Element;
  this.Element = function(tagName, attributes) {
    attributes = attributes || { };
    tagName = tagName.toLowerCase();
    var cache = Element.cache;
    if (Prototype.Browser.IE && attributes.name) {
      tagName = '<' + tagName + ' name="' + attributes.name + '">';
      delete attributes.name;
      return Element.writeAttribute(document.createElement(tagName), attributes);
    }
    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
    return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
  };
  Object.extend(this.Element, element || { });
  if (element) this.Element.prototype = element.prototype;
}).call(window);

Element.cache = { };

Element.Methods = {
  visible: function(element) {
    return $(element).style.display != 'none';
  },

  toggle: function(element) {
    element = $(element);
    Element[Element.visible(element) ? 'hide' : 'show'](element);
    return element;
  },

  hide: function(element) {
    element = $(element);
    element.style.display = 'none';
    return element;
  },

  show: function(element) {
    element = $(element);
    element.style.display = '';
    return element;
  },

  remove: function(element) {
    element = $(element);
    element.parentNode.removeChild(element);
    return element;
  },

  update: function(element, content) {
    element = $(element);
    if (content && content.toElement) content = content.toElement();
    if (Object.isElement(content)) return element.update().insert(content);
    content = Object.toHTML(content);
    element.innerHTML = content.stripScripts();
    content.evalScripts.bind(content).defer();
    return element;
  },

  replace: function(element, content) {
    element = $(element);
    if (content && content.toElement) content = content.toElement();
    else if (!Object.isElement(content)) {
      content = Object.toHTML(content);
      var range = element.ownerDocument.createRange();
      range.selectNode(element);
      content.evalScripts.bind(content).defer();
      content = range.createContextualFragment(content.stripScripts());
    }
    element.parentNode.replaceChild(content, element);
    return element;
  },

  insert: function(element, insertions) {
    element = $(element);

    if (Object.isString(insertions) || Object.isNumber(insertions) ||
        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
          insertions = {bottom:insertions};

    var content, insert, tagName, childNodes;

    for (var position in insertions) {
      content  = insertions[position];
      position = position.toLowerCase();
      insert = Element._insertionTranslations[position];

      if (content && content.toElement) content = content.toElement();
      if (Object.isElement(content)) {
        insert(element, content);
        continue;
      }

      content = Object.toHTML(content);

      tagName = ((position == 'before' || position == 'after')
        ? element.parentNode : element).tagName.toUpperCase();

      childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());

      if (position == 'top' || position == 'after') childNodes.reverse();
      childNodes.each(insert.curry(element));

      content.evalScripts.bind(content).defer();
    }

    return element;
  },

  wrap: function(element, wrapper, attributes) {
    element = $(element);
    if (Object.isElement(wrapper))
      $(wrapper).writeAttribute(attributes || { });
    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
    else wrapper = new Element('div', wrapper);
    if (element.parentNode)
      element.parentNode.replaceChild(wrapper, element);
    wrapper.appendChild(element);
    return wrapper;
  },

  inspect: function(element) {
    element = $(element);
    var result = '<' + element.tagName.toLowerCase();
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
      var property = pair.first(), attribute = pair.last();
      var value = (element[property] || '').toString();
      if (value) result += ' ' + attribute + '=' + value.inspect(true);
    });
    return result + '>';
  },

  recursivelyCollect: function(element, property) {
    element = $(element);
    var elements = [];
    while (element = element[property])
      if (element.nodeType == 1)
        elements.push(Element.extend(element));
    return elements;
  },

  ancestors: function(element) {
    return $(element).recursivelyCollect('parentNode');
  },

  descendants: function(element) {
    return $(element).select("*");
  },

  firstDescendant: function(element) {
    element = $(element).firstChild;
    while (element && element.nodeType != 1) element = element.nextSibling;
    return $(element);
  },

  immediateDescendants: function(element) {
    if (!(element = $(element).firstChild)) return [];
    while (element && element.nodeType != 1) element = element.nextSibling;
    if (element) return [element].concat($(element).nextSiblings());
    return [];
  },

  previousSiblings: function(element) {
    return $(element).recursivelyCollect('previousSibling');
  },

  nextSiblings: function(element) {
    return $(element).recursivelyCollect('nextSibling');
  },

  siblings: function(element) {
    element = $(element);
    return element.previousSiblings().reverse().concat(element.nextSiblings());
  },

  match: function(element, selector) {
    if (Object.isString(selector))
      selector = new Selector(selector);
    return selector.match($(element));
  },

  up: function(element, expression, index) {
    element = $(element);
    if (arguments.length == 1) return $(element.parentNode);
    var ancestors = element.ancestors();
    return Object.isNumber(expression) ? ancestors[expression] :
      Selector.findElement(ancestors, expression, index);
  },

  down: function(element, expression, index) {
    element = $(element);
    if (arguments.length == 1) return element.firstDescendant();
    return Object.isNumber(expression) ? element.descendants()[expression] :
      Element.select(element, expression)[index || 0];
  },

  previous: function(element, expression, index) {
    element = $(element);
    if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
    var previousSiblings = element.previousSiblings();
    return Object.isNumber(expression) ? previousSiblings[expression] :
      Selector.findElement(previousSiblings, expression, index);
  },

  next: function(element, expression, index) {
    element = $(element);
    if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
    var nextSiblings = element.nextSiblings();
    return Object.isNumber(expression) ? nextSiblings[expression] :
      Selector.findElement(nextSiblings, expression, index);
  },

  select: function() {
    var args = $A(arguments), element = $(args.shift());
    return Selector.findChildElements(element, args);
  },

  adjacent: function() {
    var args = $A(arguments), element = $(args.shift());
    return Selector.findChildElements(element.parentNode, args).without(element);
  },

  identify: function(element) {
    element = $(element);
    var id = element.readAttribute('id'), self = arguments.callee;
    if (id) return id;
    do { id = 'anonymous_element_' + self.counter++ } while ($(id));
    element.writeAttribute('id', id);
    return id;
  },

  readAttribute: function(element, name) {
    element = $(element);
    if (Prototype.Browser.IE) {
      var t = Element._attributeTranslations.read;
      if (t.values[name]) return t.values[name](element, name);
      if (t.names[name]) name = t.names[name];
      if (name.include(':')) {
        return (!element.attributes || !element.attributes[name]) ? null :
         element.attributes[name].value;
      }
    }
    return element.getAttribute(name);
  },

  writeAttribute: function(element, name, value) {
    element = $(element);
    var attributes = { }, t = Element._attributeTranslations.write;

    if (typeof name == 'object') attributes = name;
    else attributes[name] = Object.isUndefined(value) ? true : value;

    for (var attr in attributes) {
      name = t.names[attr] || attr;
      value = attributes[attr];
      if (t.values[attr]) name = t.values[attr](element, value);
      if (value === false || value === null)
        element.removeAttribute(name);
      else if (value === true)
        element.setAttribute(name, name);
      else element.setAttribute(name, value);
    }
    return element;
  },

  getHeight: function(element) {
    return $(element).getDimensions().height;
  },

  getWidth: function(element) {
    return $(element).getDimensions().width;
  },

  classNames: function(element) {
    return new Element.ClassNames(element);
  },

  hasClassName: function(element, className) {
    if (!(element = $(element))) return;
    var elementClassName = element.className;
    return (elementClassName.length > 0 && (elementClassName == className ||
      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
  },

  addClassName: function(element, className) {
    if (!(element = $(element))) return;
    if (!element.hasClassName(className))
      element.className += (element.className ? ' ' : '') + className;
    return element;
  },

  removeClassName: function(element, className) {
    if (!(element = $(element))) return;
    element.className = element.className.replace(
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
    return element;
  },

  toggleClassName: function(element, className) {
    if (!(element = $(element))) return;
    return element[element.hasClassName(className) ?
      'removeClassName' : 'addClassName'](className);
  },

  // removes whitespace-only text node children
  cleanWhitespace: function(element) {
    element = $(element);
    var node = element.firstChild;
    while (node) {
      var nextNode = node.nextSibling;
      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
        element.removeChild(node);
      node = nextNode;
    }
    return element;
  },

  empty: function(element) {
    return $(element).innerHTML.blank();
  },

  descendantOf: function(element, ancestor) {
    element = $(element), ancestor = $(ancestor);

    if (element.compareDocumentPosition)
      return (element.compareDocumentPosition(ancestor) & 8) === 8;

    if (ancestor.contains)
      return ancestor.contains(element) && ancestor !== element;

    while (element = element.parentNode)
      if (element == ancestor) return true;

    return false;
  },

  scrollTo: function(element) {
    element = $(element);
    var pos = element.cumulativeOffset();
    window.scrollTo(pos[0], pos[1]);
    return element;
  },

  getStyle: function(element, style) {
    element = $(element);
    style = style == 'float' ? 'cssFloat' : style.camelize();
    var value = element.style[style];
    if (!value || value == 'auto') {
      var css = document.defaultView.getComputedStyle(element, null);
      value = css ? css[style] : null;
    }
    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
    return value == 'auto' ? null : value;
  },

  getOpacity: function(element) {
    return $(element).getStyle('opacity');
  },

  setStyle: function(element, styles) {
    element = $(element);
    var elementStyle = element.style, match;
    if (Object.isString(styles)) {
      element.style.cssText += ';' + styles;
      return styles.include('opacity') ?
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
    }
    for (var property in styles)
      if (property == 'opacity') element.setOpacity(styles[property]);
      else
        elementStyle[(property == 'float' || property == 'cssFloat') ?
          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
            property] = styles[property];

    return element;
  },

  setOpacity: function(element, value) {
    element = $(element);
    element.style.opacity = (value == 1 || value === '') ? '' :
      (value < 0.00001) ? 0 : value;
    return element;
  },

  getDimensions: function(element) {
    element = $(element);
    var display = element.getStyle('display');
    if (display != 'none' && display != null) // Safari bug
      return {width: element.offsetWidth, height: element.offsetHeight};

    // All *Width and *Height properties give 0 on elements with display none,
    // so enable the element temporarily
    var els = element.style;
    var originalVisibility = els.visibility;
    var originalPosition = els.position;
    var originalDisplay = els.display;
    els.visibility = 'hidden';
    els.position = 'absolute';
    els.display = 'block';
    var originalWidth = element.clientWidth;
    var originalHeight = element.clientHeight;
    els.display = originalDisplay;
    els.position = originalPosition;
    els.visibility = originalVisibility;
    return {width: originalWidth, height: originalHeight};
  },

  makePositioned: function(element) {
    element = $(element);
    var pos = Element.getStyle(element, 'position');
    if (pos == 'static' || !pos) {
      element._madePositioned = true;
      element.style.position = 'relative';
      // Opera returns the offset relative to the positioning context, when an
      // element is position relative but top and left have not been defined
      if (Prototype.Browser.Opera) {
        element.style.top = 0;
        element.style.left = 0;
      }
    }
    return element;
  },

  undoPositioned: function(element) {
    element = $(element);
    if (element._madePositioned) {
      element._madePositioned = undefined;
      element.style.position =
        element.style.top =
        element.style.left =
        element.style.bottom =
        element.style.right = '';
    }
    return element;
  },

  makeClipping: function(element) {
    element = $(element);
    if (element._overflow) return element;
    element._overflow = Element.getStyle(element, 'overflow') || 'auto';
    if (element._overflow !== 'hidden')
      element.style.overflow = 'hidden';
    return element;
  },

  undoClipping: function(element) {
    element = $(element);
    if (!element._overflow) return element;
    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
    element._overflow = null;
    return element;
  },

  cumulativeOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);
    return Element._returnOffset(valueL, valueT);
  },

  positionedOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
      if (element) {
        if (element.tagName.toUpperCase() == 'BODY') break;
        var p = Element.getStyle(element, 'position');
        if (p !== 'static') break;
      }
    } while (element);
    return Element._returnOffset(valueL, valueT);
  },

  absolutize: function(element) {
    element = $(element);
    if (element.getStyle('position') == 'absolute') return element;
    // Position.prepare(); // To be done manually by Scripty when it needs it.

    var offsets = element.positionedOffset();
    var top     = offsets[1];
    var left    = offsets[0];
    var width   = element.clientWidth;
    var height  = element.clientHeight;

    element._originalLeft   = left - parseFloat(element.style.left  || 0);
    element._originalTop    = top  - parseFloat(element.style.top || 0);
    element._originalWidth  = element.style.width;
    element._originalHeight = element.style.height;

    element.style.position = 'absolute';
    element.style.top    = top + 'px';
    element.style.left   = left + 'px';
    element.style.width  = width + 'px';
    element.style.height = height + 'px';
    return element;
  },

  relativize: function(element) {
    element = $(element);
    if (element.getStyle('position') == 'relative') return element;
    // Position.prepare(); // To be done manually by Scripty when it needs it.

    element.style.position = 'relative';
    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);

    element.style.top    = top + 'px';
    element.style.left   = left + 'px';
    element.style.height = element._originalHeight;
    element.style.width  = element._originalWidth;
    return element;
  },

  cumulativeScrollOffset: function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.scrollTop  || 0;
      valueL += element.scrollLeft || 0;
      element = element.parentNode;
    } while (element);
    return Element._returnOffset(valueL, valueT);
  },

  getOffsetParent: function(element) {
    if (element.offsetParent) return $(element.offsetParent);
    if (element == document.body) return $(element);

    while ((element = element.parentNode) && element != document.body)
      if (Element.getStyle(element, 'position') != 'static')
        return $(element);

    return $(document.body);
  },

  viewportOffset: function(forElement) {
    var valueT = 0, valueL = 0;

    var element = forElement;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;

      // Safari fix
      if (element.offsetParent == document.body &&
        Element.getStyle(element, 'position') == 'absolute') break;

    } while (element = element.offsetParent);

    element = forElement;
    do {
      if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) {
        valueT -= element.scrollTop  || 0;
        valueL -= element.scrollLeft || 0;
      }
    } while (element = element.parentNode);

    return Element._returnOffset(valueL, valueT);
  },

  clonePosition: function(element, source) {
    var options = Object.extend({
      setLeft:    true,
      setTop:     true,
      setWidth:   true,
      setHeight:  true,
      offsetTop:  0,
      offsetLeft: 0
    }, arguments[2] || { });

    // find page position of source
    source = $(source);
    var p = source.viewportOffset();

    // find coordinate system to use
    element = $(element);
    var delta = [0, 0];
    var parent = null;
    // delta [0,0] will do fine with position: fixed elements,
    // position:absolute needs offsetParent deltas
    if (Element.getStyle(element, 'position') == 'absolute') {
      parent = element.getOffsetParent();
      delta = parent.viewportOffset();
    }

    // correct by body offsets (fixes Safari)
    if (parent == document.body) {
      delta[0] -= document.body.offsetLeft;
      delta[1] -= document.body.offsetTop;
    }

    // set position
    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
    if (options.setHeight) element.style.height = source.offsetHeight + 'px';
    return element;
  }
};

Element.Methods.identify.counter = 1;

Object.extend(Element.Methods, {
  getElementsBySelector: Element.Methods.select,
  childElements: Element.Methods.immediateDescendants
});

Element._attributeTranslations = {
  write: {
    names: {
      className: 'class',
      htmlFor:   'for'
    },
    values: { }
  }
};

if (Prototype.Browser.Opera) {
  Element.Methods.getStyle = Element.Methods.getStyle.wrap(
    function(proceed, element, style) {
      switch (style) {
        case 'left': case 'top': case 'right': case 'bottom':
          if (proceed(element, 'position') === 'static') return null;
        case 'height': case 'width':
          // returns '0px' for hidden elements; we want it to return null
          if (!Element.visible(element)) return null;

          // returns the border-box dimensions rather than the content-box
          // dimensions, so we subtract padding and borders from the value
          var dim = parseInt(proceed(element, style), 10);

          if (dim !== element['offset' + style.capitalize()])
            return dim + 'px';

          var properties;
          if (style === 'height') {
            properties = ['border-top-width', 'padding-top',
             'padding-bottom', 'border-bottom-width'];
          }
          else {
            properties = ['border-left-width', 'padding-left',
             'padding-right', 'border-right-width'];
          }
          return properties.inject(dim, function(memo, property) {
            var val = proceed(element, property);
            return val === null ? memo : memo - parseInt(val, 10);
          }) + 'px';
        default: return proceed(element, style);
      }
    }
  );

  Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
    function(proceed, element, attribute) {
      if (attribute === 'title') return element.title;
      return proceed(element, attribute);
    }
  );
}

else if (Prototype.Browser.IE) {
  // IE doesn't report offsets correctly for static elements, so we change them
  // to "relative" to get the values, then change them back.
  Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(
    function(proceed, element) {
      element = $(element);
      // IE throws an error if element is not in document
      try { element.offsetParent }
      catch(e) { return $(document.body) }
      var position = element.getStyle('position');
      if (position !== 'static') return proceed(element);
      element.setStyle({ position: 'relative' });
      var value = proceed(element);
      element.setStyle({ position: position });
      return value;
    }
  );

  $w('positionedOffset viewportOffset').each(function(method) {
    Element.Methods[method] = Element.Methods[method].wrap(
      function(proceed, element) {
        element = $(element);
        try { element.offsetParent }
        catch(e) { return Element._returnOffset(0,0) }
        var position = element.getStyle('position');
        if (position !== 'static') return proceed(element);
        // Trigger hasLayout on the offset parent so that IE6 reports
        // accurate offsetTop and offsetLeft values for position: fixed.
        var offsetParent = element.getOffsetParent();
        if (offsetParent && offsetParent.getStyle('position') === 'fixed')
          offsetParent.setStyle({ zoom: 1 });
        element.setStyle({ position: 'relative' });
        var value = proceed(element);
        element.setStyle({ position: position });
        return value;
      }
    );
  });

  Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap(
    function(proceed, element) {
      try { element.offsetParent }
      catch(e) { return Element._returnOffset(0,0) }
      return proceed(element);
    }
  );

  Element.Methods.getStyle = function(element, style) {
    element = $(element);
    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
    var value = element.style[style];
    if (!value && element.currentStyle) value = element.currentStyle[style];

    if (style == 'opacity') {
      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
        if (value[1]) return parseFloat(value[1]) / 100;
      return 1.0;
    }

    if (value == 'auto') {
      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
        return element['offset' + style.capitalize()] + 'px';
      return null;
    }
    return value;
  };

  Element.Methods.setOpacity = function(element, value) {
    function stripAlpha(filter){
      return filter.replace(/alpha\([^\)]*\)/gi,'');
    }
    element = $(element);
    var currentStyle = element.currentStyle;
    if ((currentStyle && !currentStyle.hasLayout) ||
      (!currentStyle && element.style.zoom == 'normal'))
        element.style.zoom = 1;

    var filter = element.getStyle('filter'), style = element.style;
    if (value == 1 || value === '') {
      (filter = stripAlpha(filter)) ?
        style.filter = filter : style.removeAttribute('filter');
      return element;
    } else if (value < 0.00001) value = 0;
    style.filter = stripAlpha(filter) +
      'alpha(opacity=' + (value * 100) + ')';
    return element;
  };

  Element._attributeTranslations = {
    read: {
      names: {
        'class': 'className',
        'for':   'htmlFor'
      },
      values: {
        _getAttr: function(element, attribute) {
          return element.getAttribute(attribute, 2);
        },
        _getAttrNode: function(element, attribute) {
          var node = element.getAttributeNode(attribute);
          return node ? node.value : "";
        },
        _getEv: function(element, attribute) {
          attribute = element.getAttribute(attribute);
          return attribute ? attribute.toString().slice(23, -2) : null;
        },
        _flag: function(element, attribute) {
          return $(element).hasAttribute(attribute) ? attribute : null;
        },
        style: function(element) {
          return element.style.cssText.toLowerCase();
        },
        title: function(element) {
          return element.title;
        }
      }
    }
  };

  Element._attributeTranslations.write = {
    names: Object.extend({
      cellpadding: 'cellPadding',
      cellspacing: 'cellSpacing'
    }, Element._attributeTranslations.read.names),
    values: {
      checked: function(element, value) {
        element.checked = !!value;
      },

      style: function(element, value) {
        element.style.cssText = value ? value : '';
      }
    }
  };

  Element._attributeTranslations.has = {};

  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
      'encType maxLength readOnly longDesc frameBorder').each(function(attr) {
    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
    Element._attributeTranslations.has[attr.toLowerCase()] = attr;
  });

  (function(v) {
    Object.extend(v, {
      href:        v._getAttr,
      src:         v._getAttr,
      type:        v._getAttr,
      action:      v._getAttrNode,
      disabled:    v._flag,
      checked:     v._flag,
      readonly:    v._flag,
      multiple:    v._flag,
      onload:      v._getEv,
      onunload:    v._getEv,
      onclick:     v._getEv,
      ondblclick:  v._getEv,
      onmousedown: v._getEv,
      onmouseup:   v._getEv,
      onmouseover: v._getEv,
      onmousemove: v._getEv,
      onmouseout:  v._getEv,
      onfocus:     v._getEv,
      onblur:      v._getEv,
      onkeypress:  v._getEv,
      onkeydown:   v._getEv,
      onkeyup:     v._getEv,
      onsubmit:    v._getEv,
      onreset:     v._getEv,
      onselect:    v._getEv,
      onchange:    v._getEv
    });
  })(Element._attributeTranslations.read.values);
}

else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
  Element.Methods.setOpacity = function(element, value) {
    element = $(element);
    element.style.opacity = (value == 1) ? 0.999999 :
      (value === '') ? '' : (value < 0.00001) ? 0 : value;
    return element;
  };
}

else if (Prototype.Browser.WebKit) {
  Element.Methods.setOpacity = function(element, value) {
    element = $(element);
    element.style.opacity = (value == 1 || value === '') ? '' :
      (value < 0.00001) ? 0 : value;

    if (value == 1)
      if(element.tagName.toUpperCase() == 'IMG' && element.width) {
        element.width++; element.width--;
      } else try {
        var n = document.createTextNode(' ');
        element.appendChild(n);
        element.removeChild(n);
      } catch (e) { }

    return element;
  };

  // Safari returns margins on body which is incorrect if the child is absolutely
  // positioned.  For performance reasons, redefine Element#cumulativeOffset for
  // KHTML/WebKit only.
  Element.Methods.cumulativeOffset = function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      if (element.offsetParent == document.body)
        if (Element.getStyle(element, 'position') == 'absolute') break;

      element = element.offsetParent;
    } while (element);

    return Element._returnOffset(valueL, valueT);
  };
}

if (Prototype.Browser.IE || Prototype.Browser.Opera) {
  // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
  Element.Methods.update = function(element, content) {
    element = $(element);

    if (content && content.toElement) content = content.toElement();
    if (Object.isElement(content)) return element.update().insert(content);

    content = Object.toHTML(content);
    var tagName = element.tagName.toUpperCase();

    if (tagName in Element._insertionTranslations.tags) {
      $A(element.childNodes).each(function(node) { element.removeChild(node) });
      Element._getContentFromAnonymousElement(tagName, content.stripScripts())
        .each(function(node) { element.appendChild(node) });
    }
    else element.innerHTML = content.stripScripts();

    content.evalScripts.bind(content).defer();
    return element;
  };
}

if ('outerHTML' in document.createElement('div')) {
  Element.Methods.replace = function(element, content) {
    element = $(element);

    if (content && content.toElement) content = content.toElement();
    if (Object.isElement(content)) {
      element.parentNode.replaceChild(content, element);
      return element;
    }

    content = Object.toHTML(content);
    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();

    if (Element._insertionTranslations.tags[tagName]) {
      var nextSibling = element.next();
      var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
      parent.removeChild(element);
      if (nextSibling)
        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
      else
        fragments.each(function(node) { parent.appendChild(node) });
    }
    else element.outerHTML = content.stripScripts();

    content.evalScripts.bind(content).defer();
    return element;
  };
}

Element._returnOffset = function(l, t) {
  var result = [l, t];
  result.left = l;
  result.top = t;
  return result;
};

Element._getContentFromAnonymousElement = function(tagName, html) {
  var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
  if (t) {
    div.innerHTML = t[0] + html + t[1];
    t[2].times(function() { div = div.firstChild });
  } else div.innerHTML = html;
  return $A(div.childNodes);
};

Element._insertionTranslations = {
  before: function(element, node) {
    element.parentNode.insertBefore(node, element);
  },
  top: function(element, node) {
    element.insertBefore(node, element.firstChild);
  },
  bottom: function(element, node) {
    element.appendChild(node);
  },
  after: function(element, node) {
    element.parentNode.insertBefore(node, element.nextSibling);
  },
  tags: {
    TABLE:  ['<table>',                '</table>',                   1],
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
    SELECT: ['<select>',               '</select>',                  1]
  }
};

(function() {
  Object.extend(this.tags, {
    THEAD: this.tags.TBODY,
    TFOOT: this.tags.TBODY,
    TH:    this.tags.TD
  });
}).call(Element._insertionTranslations);

Element.Methods.Simulated = {
  hasAttribute: function(element, attribute) {
    attribute = Element._attributeTranslations.has[attribute] || attribute;
    var node = $(element).getAttributeNode(attribute);
    return !!(node && node.specified);
  }
};

Element.Methods.ByTag = { };

Object.extend(Element, Element.Methods);

if (!Prototype.BrowserFeatures.ElementExtensions &&
    document.createElement('div')['__proto__']) {
  window.HTMLElement = { };
  window.HTMLElement.prototype = document.createElement('div')['__proto__'];
  Prototype.BrowserFeatures.ElementExtensions = true;
}

Element.extend = (function() {
  if (Prototype.BrowserFeatures.SpecificElementExtensions)
    return Prototype.K;

  var Methods = { }, ByTag = Element.Methods.ByTag;

  var extend = Object.extend(function(element) {
    if (!element || element._extendedByPrototype ||
        element.nodeType != 1 || element == window) return element;

    var methods = Object.clone(Methods),
      tagName = element.tagName.toUpperCase(), property, value;

    // extend methods for specific tags
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);

    for (property in methods) {
      value = methods[property];
      if (Object.isFunction(value) && !(property in element))
        element[property] = value.methodize();
    }

    element._extendedByPrototype = Prototype.emptyFunction;
    return element;

  }, {
    refresh: function() {
      // extend methods for all tags (Safari doesn't need this)
      if (!Prototype.BrowserFeatures.ElementExtensions) {
        Object.extend(Methods, Element.Methods);
        Object.extend(Methods, Element.Methods.Simulated);
      }
    }
  });

  extend.refresh();
  return extend;
})();

Element.hasAttribute = function(element, attribute) {
  if (element.hasAttribute) return element.hasAttribute(attribute);
  return Element.Methods.Simulated.hasAttribute(element, attribute);
};

Element.addMethods = function(methods) {
  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;

  if (!methods) {
    Object.extend(Form, Form.Methods);
    Object.extend(Form.Element, Form.Element.Methods);
    Object.extend(Element.Methods.ByTag, {
      "FORM":     Object.clone(Form.Methods),
      "INPUT":    Object.clone(Form.Element.Methods),
      "SELECT":   Object.clone(Form.Element.Methods),
      "TEXTAREA": Object.clone(Form.Element.Methods)
    });
  }

  if (arguments.length == 2) {
    var tagName = methods;
    methods = arguments[1];
  }

  if (!tagName) Object.extend(Element.Methods, methods || { });
  else {
    if (Object.isArray(tagName)) tagName.each(extend);
    else extend(tagName);
  }

  function extend(tagName) {
    tagName = tagName.toUpperCase();
    if (!Element.Methods.ByTag[tagName])
      Element.Methods.ByTag[tagName] = { };
    Object.extend(Element.Methods.ByTag[tagName], methods);
  }

  function copy(methods, destination, onlyIfAbsent) {
    onlyIfAbsent = onlyIfAbsent || false;
    for (var property in methods) {
      var value = methods[property];
      if (!Object.isFunction(value)) continue;
      if (!onlyIfAbsent || !(property in destination))
        destination[property] = value.methodize();
    }
  }

  function findDOMClass(tagName) {
    var klass;
    var trans = {
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
      "FrameSet", "IFRAME": "IFrame"
    };
    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
    if (window[klass]) return window[klass];
    klass = 'HTML' + tagName + 'Element';
    if (window[klass]) return window[klass];
    klass = 'HTML' + tagName.capitalize() + 'Element';
    if (window[klass]) return window[klass];

    window[klass] = { };
    window[klass].prototype = document.createElement(tagName)['__proto__'];
    return window[klass];
  }

  if (F.ElementExtensions) {
    copy(Element.Methods, HTMLElement.prototype);
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
  }

  if (F.SpecificElementExtensions) {
    for (var tag in Element.Methods.ByTag) {
      var klass = findDOMClass(tag);
      if (Object.isUndefined(klass)) continue;
      copy(T[tag], klass.prototype);
    }
  }

  Object.extend(Element, Element.Methods);
  delete Element.ByTag;

  if (Element.extend.refresh) Element.extend.refresh();
  Element.cache = { };
};

document.viewport = {
  getDimensions: function() {
    var dimensions = { }, B = Prototype.Browser;
    $w('width height').each(function(d) {
      var D = d.capitalize();
      if (B.WebKit && !document.evaluate) {
        // Safari <3.0 needs self.innerWidth/Height
        dimensions[d] = self['inner' + D];
      } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {
        // Opera <9.5 needs document.body.clientWidth/Height
        dimensions[d] = document.body['client' + D]
      } else {
        dimensions[d] = document.documentElement['client' + D];
      }
    });
    return dimensions;
  },

  getWidth: function() {
    return this.getDimensions().width;
  },

  getHeight: function() {
    return this.getDimensions().height;
  },

  getScrollOffsets: function() {
    return Element._returnOffset(
      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
      window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
  }
};
/* Portions of the Selector class are derived from Jack Slocum's DomQuery,
 * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
 * license.  Please see http://www.yui-ext.com/ for more information. */

var Selector = Class.create({
  initialize: function(expression) {
    this.expression = expression.strip();

    if (this.shouldUseSelectorsAPI()) {
      this.mode = 'selectorsAPI';
    } else if (this.shouldUseXPath()) {
      this.mode = 'xpath';
      this.compileXPathMatcher();
    } else {
      this.mode = "normal";
      this.compileMatcher();
    }

  },

  shouldUseXPath: function() {
    if (!Prototype.BrowserFeatures.XPath) return false;

    var e = this.expression;

    // Safari 3 chokes on :*-of-type and :empty
    if (Prototype.Browser.WebKit &&
     (e.include("-of-type") || e.include(":empty")))
      return false;

    // XPath can't do namespaced attributes, nor can it read
    // the "checked" property from DOM nodes
    if ((/(\[[\w-]*?:|:checked)/).test(e))
      return false;

    return true;
  },

  shouldUseSelectorsAPI: function() {
    if (!Prototype.BrowserFeatures.SelectorsAPI) return false;

    if (!Selector._div) Selector._div = new Element('div');

    // Make sure the browser treats the selector as valid. Test on an
    // isolated element to minimize cost of this check.
    try {
      Selector._div.querySelector(this.expression);
    } catch(e) {
      return false;
    }

    return true;
  },

  compileMatcher: function() {
    var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
        c = Selector.criteria, le, p, m;

    if (Selector._cache[e]) {
      this.matcher = Selector._cache[e];
      return;
    }

    this.matcher = ["this.matcher = function(root) {",
                    "var r = root, h = Selector.handlers, c = false, n;"];

    while (e && le != e && (/\S/).test(e)) {
      le = e;
      for (var i in ps) {
        p = ps[i];
        if (m = e.match(p)) {
          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
            new Template(c[i]).evaluate(m));
          e = e.replace(m[0], '');
          break;
        }
      }
    }

    this.matcher.push("return h.unique(n);\n}");
    eval(this.matcher.join('\n'));
    Selector._cache[this.expression] = this.matcher;
  },

  compileXPathMatcher: function() {
    var e = this.expression, ps = Selector.patterns,
        x = Selector.xpath, le, m;

    if (Selector._cache[e]) {
      this.xpath = Selector._cache[e]; return;
    }

    this.matcher = ['.//*'];
    while (e && le != e && (/\S/).test(e)) {
      le = e;
      for (var i in ps) {
        if (m = e.match(ps[i])) {
          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
            new Template(x[i]).evaluate(m));
          e = e.replace(m[0], '');
          break;
        }
      }
    }

    this.xpath = this.matcher.join('');
    Selector._cache[this.expression] = this.xpath;
  },

  findElements: function(root) {
    root = root || document;
    var e = this.expression, results;

    switch (this.mode) {
      case 'selectorsAPI':
        // querySelectorAll queries document-wide, then filters to descendants
        // of the context element. That's not what we want.
        // Add an explicit context to the selector if necessary.
        if (root !== document) {
          var oldId = root.id, id = $(root).identify();
          e = "#" + id + " " + e;
        }

        results = $A(root.querySelectorAll(e)).map(Element.extend);
        root.id = oldId;

        return results;
      case 'xpath':
        return document._getElementsByXPath(this.xpath, root);
      default:
       return this.matcher(root);
    }
  },

  match: function(element) {
    this.tokens = [];

    var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
    var le, p, m;

    while (e && le !== e && (/\S/).test(e)) {
      le = e;
      for (var i in ps) {
        p = ps[i];
        if (m = e.match(p)) {
          // use the Selector.assertions methods unless the selector
          // is too complex.
          if (as[i]) {
            this.tokens.push([i, Object.clone(m)]);
            e = e.replace(m[0], '');
          } else {
            // reluctantly do a document-wide search
            // and look for a match in the array
            return this.findElements(document).include(element);
          }
        }
      }
    }

    var match = true, name, matches;
    for (var i = 0, token; token = this.tokens[i]; i++) {
      name = token[0], matches = token[1];
      if (!Selector.assertions[name](element, matches)) {
        match = false; break;
      }
    }

    return match;
  },

  toString: function() {
    return this.expression;
  },

  inspect: function() {
    return "#<Selector:" + this.expression.inspect() + ">";
  }
});

Object.extend(Selector, {
  _cache: { },

  xpath: {
    descendant:   "//*",
    child:        "/*",
    adjacent:     "/following-sibling::*[1]",
    laterSibling: '/following-sibling::*',
    tagName:      function(m) {
      if (m[1] == '*') return '';
      return "[local-name()='" + m[1].toLowerCase() +
             "' or local-name()='" + m[1].toUpperCase() + "']";
    },
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
    id:           "[@id='#{1}']",
    attrPresence: function(m) {
      m[1] = m[1].toLowerCase();
      return new Template("[@#{1}]").evaluate(m);
    },
    attr: function(m) {
      m[1] = m[1].toLowerCase();
      m[3] = m[5] || m[6];
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
    },
    pseudo: function(m) {
      var h = Selector.xpath.pseudos[m[1]];
      if (!h) return '';
      if (Object.isFunction(h)) return h(m);
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
    },
    operators: {
      '=':  "[@#{1}='#{3}']",
      '!=': "[@#{1}!='#{3}']",
      '^=': "[starts-with(@#{1}, '#{3}')]",
      '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
      '*=': "[contains(@#{1}, '#{3}')]",
      '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
      '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
    },
    pseudos: {
      'first-child': '[not(preceding-sibling::*)]',
      'last-child':  '[not(following-sibling::*)]',
      'only-child':  '[not(preceding-sibling::* or following-sibling::*)]',
      'empty':       "[count(*) = 0 and (count(text()) = 0)]",
      'checked':     "[@checked]",
      'disabled':    "[(@disabled) and (@type!='hidden')]",
      'enabled':     "[not(@disabled) and (@type!='hidden')]",
      'not': function(m) {
        var e = m[6], p = Selector.patterns,
            x = Selector.xpath, le, v;

        var exclusion = [];
        while (e && le != e && (/\S/).test(e)) {
          le = e;
          for (var i in p) {
            if (m = e.match(p[i])) {
              v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
              e = e.replace(m[0], '');
              break;
            }
          }
        }
        return "[not(" + exclusion.join(" and ") + ")]";
      },
      'nth-child':      function(m) {
        return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
      },
      'nth-last-child': function(m) {
        return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
      },
      'nth-of-type':    function(m) {
        return Selector.xpath.pseudos.nth("position() ", m);
      },
      'nth-last-of-type': function(m) {
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
      },
      'first-of-type':  function(m) {
        m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
      },
      'last-of-type':   function(m) {
        m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
      },
      'only-of-type':   function(m) {
        var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
      },
      nth: function(fragment, m) {
        var mm, formula = m[6], predicate;
        if (formula == 'even') formula = '2n+0';
        if (formula == 'odd')  formula = '2n+1';
        if (mm = formula.match(/^(\d+)$/)) // digit only
          return '[' + fragment + "= " + mm[1] + ']';
        if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
          if (mm[1] == "-") mm[1] = -1;
          var a = mm[1] ? Number(mm[1]) : 1;
          var b = mm[2] ? Number(mm[2]) : 0;
          predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
          "((#{fragment} - #{b}) div #{a} >= 0)]";
          return new Template(predicate).evaluate({
            fragment: fragment, a: a, b: b });
        }
      }
    }
  },

  criteria: {
    tagName:      'n = h.tagName(n, r, "#{1}", c);      c = false;',
    className:    'n = h.className(n, r, "#{1}", c);    c = false;',
    id:           'n = h.id(n, r, "#{1}", c);           c = false;',
    attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;',
    attr: function(m) {
      m[3] = (m[5] || m[6]);
      return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);
    },
    pseudo: function(m) {
      if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
      return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
    },
    descendant:   'c = "descendant";',
    child:        'c = "child";',
    adjacent:     'c = "adjacent";',
    laterSibling: 'c = "laterSibling";'
  },

  patterns: {
    // combinators must be listed first
    // (and descendant needs to be last combinator)
    laterSibling: /^\s*~\s*/,
    child:        /^\s*>\s*/,
    adjacent:     /^\s*\+\s*/,
    descendant:   /^\s/,

    // selectors follow
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,
    id:           /^#([\w\-\*]+)(\b|$)/,
    className:    /^\.([\w\-\*]+)(\b|$)/,
    pseudo:
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,
    attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,
    attr:         /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
  },

  // for Selector.match and Element#match
  assertions: {
    tagName: function(element, matches) {
      return matches[1].toUpperCase() == element.tagName.toUpperCase();
    },

    className: function(element, matches) {
      return Element.hasClassName(element, matches[1]);
    },

    id: function(element, matches) {
      return element.id === matches[1];
    },

    attrPresence: function(element, matches) {
      return Element.hasAttribute(element, matches[1]);
    },

    attr: function(element, matches) {
      var nodeValue = Element.readAttribute(element, matches[1]);
      return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]);
    }
  },

  handlers: {
    // UTILITY FUNCTIONS
    // joins two collections
    concat: function(a, b) {
      for (var i = 0, node; node = b[i]; i++)
        a.push(node);
      return a;
    },

    // marks an array of nodes for counting
    mark: function(nodes) {
      var _true = Prototype.emptyFunction;
      for (var i = 0, node; node = nodes[i]; i++)
        node._countedByPrototype = _true;
      return nodes;
    },

    unmark: function(nodes) {
      for (var i = 0, node; node = nodes[i]; i++)
        node._countedByPrototype = undefined;
      return nodes;
    },

    // mark each child node with its position (for nth calls)
    // "ofType" flag indicates whether we're indexing for nth-of-type
    // rather than nth-child
    index: function(parentNode, reverse, ofType) {
      parentNode._countedByPrototype = Prototype.emptyFunction;
      if (reverse) {
        for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
          var node = nodes[i];
          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
        }
      } else {
        for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
          if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
      }
    },

    // filters out duplicates and extends all nodes
    unique: function(nodes) {
      if (nodes.length == 0) return nodes;
      var results = [], n;
      for (var i = 0, l = nodes.length; i < l; i++)
        if (!(n = nodes[i])._countedByPrototype) {
          n._countedByPrototype = Prototype.emptyFunction;
          results.push(Element.extend(n));
        }
      return Selector.handlers.unmark(results);
    },

    // COMBINATOR FUNCTIONS
    descendant: function(nodes) {
      var h = Selector.handlers;
      for (var i = 0, results = [], node; node = nodes[i]; i++)
        h.concat(results, node.getElementsByTagName('*'));
      return results;
    },

    child: function(nodes) {
      var h = Selector.handlers;
      for (var i = 0, results = [], node; node = nodes[i]; i++) {
        for (var j = 0, child; child = node.childNodes[j]; j++)
          if (child.nodeType == 1 && child.tagName != '!') results.push(child);
      }
      return results;
    },

    adjacent: function(nodes) {
      for (var i = 0, results = [], node; node = nodes[i]; i++) {
        var next = this.nextElementSibling(node);
        if (next) results.push(next);
      }
      return results;
    },

    laterSibling: function(nodes) {
      var h = Selector.handlers;
      for (var i = 0, results = [], node; node = nodes[i]; i++)
        h.concat(results, Element.nextSiblings(node));
      return results;
    },

    nextElementSibling: function(node) {
      while (node = node.nextSibling)
        if (node.nodeType == 1) return node;
      return null;
    },

    previousElementSibling: function(node) {
      while (node = node.previousSibling)
        if (node.nodeType == 1) return node;
      return null;
    },

    // TOKEN FUNCTIONS
    tagName: function(nodes, root, tagName, combinator) {
      var uTagName = tagName.toUpperCase();
      var results = [], h = Selector.handlers;
      if (nodes) {
        if (combinator) {
          // fastlane for ordinary descendant combinators
          if (combinator == "descendant") {
            for (var i = 0, node; node = nodes[i]; i++)
              h.concat(results, node.getElementsByTagName(tagName));
            return results;
          } else nodes = this[combinator](nodes);
          if (tagName == "*") return nodes;
        }
        for (var i = 0, node; node = nodes[i]; i++)
          if (node.tagName.toUpperCase() === uTagName) results.push(node);
        return results;
      } else return root.getElementsByTagName(tagName);
    },

    id: function(nodes, root, id, combinator) {
      var targetNode = $(id), h = Selector.handlers;
      if (!targetNode) return [];
      if (!nodes && root == document) return [targetNode];
      if (nodes) {
        if (combinator) {
          if (combinator == 'child') {
            for (var i = 0, node; node = nodes[i]; i++)
              if (targetNode.parentNode == node) return [targetNode];
          } else if (combinator == 'descendant') {
            for (var i = 0, node; node = nodes[i]; i++)
              if (Element.descendantOf(targetNode, node)) return [targetNode];
          } else if (combinator == 'adjacent') {
            for (var i = 0, node; node = nodes[i]; i++)
              if (Selector.handlers.previousElementSibling(targetNode) == node)
                return [targetNode];
          } else nodes = h[combinator](nodes);
        }
        for (var i = 0, node; node = nodes[i]; i++)
          if (node == targetNode) return [targetNode];
        return [];
      }
      return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
    },

    className: function(nodes, root, className, combinator) {
      if (nodes && combinator) nodes = this[combinator](nodes);
      return Selector.handlers.byClassName(nodes, root, className);
    },

    byClassName: function(nodes, root, className) {
      if (!nodes) nodes = Selector.handlers.descendant([root]);
      var needle = ' ' + className + ' ';
      for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
        nodeClassName = node.className;
        if (nodeClassName.length == 0) continue;
        if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
          results.push(node);
      }
      return results;
    },

    attrPresence: function(nodes, root, attr, combinator) {
      if (!nodes) nodes = root.getElementsByTagName("*");
      if (nodes && combinator) nodes = this[combinator](nodes);
      var results = [];
      for (var i = 0, node; node = nodes[i]; i++)
        if (Element.hasAttribute(node, attr)) results.push(node);
      return results;
    },

    attr: function(nodes, root, attr, value, operator, combinator) {
      if (!nodes) nodes = root.getElementsByTagName("*");
      if (nodes && combinator) nodes = this[combinator](nodes);
      var handler = Selector.operators[operator], results = [];
      for (var i = 0, node; node = nodes[i]; i++) {
        var nodeValue = Element.readAttribute(node, attr);
        if (nodeValue === null) continue;
        if (handler(nodeValue, value)) results.push(node);
      }
      return results;
    },

    pseudo: function(nodes, name, value, root, combinator) {
      if (nodes && combinator) nodes = this[combinator](nodes);
      if (!nodes) nodes = root.getElementsByTagName("*");
      return Selector.pseudos[name](nodes, value, root);
    }
  },

  pseudos: {
    'first-child': function(nodes, value, root) {
      for (var i = 0, results = [], node; node = nodes[i]; i++) {
        if (Selector.handlers.previousElementSibling(node)) continue;
          results.push(node);
      }
      return results;
    },
    'last-child': function(nodes, value, root) {
      for (var i = 0, results = [], node; node = nodes[i]; i++) {
        if (Selector.handlers.nextElementSibling(node)) continue;
          results.push(node);
      }
      return results;
    },
    'only-child': function(nodes, value, root) {
      var h = Selector.handlers;
      for (var i = 0, results = [], node; node = nodes[i]; i++)
        if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
          results.push(node);
      return results;
    },
    'nth-child':        function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root);
    },
    'nth-last-child':   function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root, true);
    },
    'nth-of-type':      function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root, false, true);
    },
    'nth-last-of-type': function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root, true, true);
    },
    'first-of-type':    function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, "1", root, false, true);
    },
    'last-of-type':     function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, "1", root, true, true);
    },
    'only-of-type':     function(nodes, formula, root) {
      var p = Selector.pseudos;
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
    },

    // handles the an+b logic
    getIndices: function(a, b, total) {
      if (a == 0) return b > 0 ? [b] : [];
      return $R(1, total).inject([], function(memo, i) {
        if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
        return memo;
      });
    },

    // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
    nth: function(nodes, formula, root, reverse, ofType) {
      if (nodes.length == 0) return [];
      if (formula == 'even') formula = '2n+0';
      if (formula == 'odd')  formula = '2n+1';
      var h = Selector.handlers, results = [], indexed = [], m;
      h.mark(nodes);
      for (var i = 0, node; node = nodes[i]; i++) {
        if (!node.parentNode._countedByPrototype) {
          h.index(node.parentNode, reverse, ofType);
          indexed.push(node.parentNode);
        }
      }
      if (formula.match(/^\d+$/)) { // just a number
        formula = Number(formula);
        for (var i = 0, node; node = nodes[i]; i++)
          if (node.nodeIndex == formula) results.push(node);
      } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
        if (m[1] == "-") m[1] = -1;
        var a = m[1] ? Number(m[1]) : 1;
        var b = m[2] ? Number(m[2]) : 0;
        var indices = Selector.pseudos.getIndices(a, b, nodes.length);
        for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
          for (var j = 0; j < l; j++)
            if (node.nodeIndex == indices[j]) results.push(node);
        }
      }
      h.unmark(nodes);
      h.unmark(indexed);
      return results;
    },

    'empty': function(nodes, value, root) {
      for (var i = 0, results = [], node; node = nodes[i]; i++) {
        // IE treats comments as element nodes
        if (node.tagName == '!' || node.firstChild) continue;
        results.push(node);
      }
      return results;
    },

    'not': function(nodes, selector, root) {
      var h = Selector.handlers, selectorType, m;
      var exclusions = new Selector(selector).findElements(root);
      h.mark(exclusions);
      for (var i = 0, results = [], node; node = nodes[i]; i++)
        if (!node._countedByPrototype) results.push(node);
      h.unmark(exclusions);
      return results;
    },

    'enabled': function(nodes, value, root) {
      for (var i = 0, results = [], node; node = nodes[i]; i++)
        if (!node.disabled && (!node.type || node.type !== 'hidden'))
          results.push(node);
      return results;
    },

    'disabled': function(nodes, value, root) {
      for (var i = 0, results = [], node; node = nodes[i]; i++)
        if (node.disabled) results.push(node);
      return results;
    },

    'checked': function(nodes, value, root) {
      for (var i = 0, results = [], node; node = nodes[i]; i++)
        if (node.checked) results.push(node);
      return results;
    }
  },

  operators: {
    '=':  function(nv, v) { return nv == v; },
    '!=': function(nv, v) { return nv != v; },
    '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); },
    '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); },
    '*=': function(nv, v) { return nv == v || nv && nv.include(v); },
    '$=': function(nv, v) { return nv.endsWith(v); },
    '*=': function(nv, v) { return nv.include(v); },
    '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
    '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() +
     '-').include('-' + (v || "").toUpperCase() + '-'); }
  },

  split: function(expression) {
    var expressions = [];
    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
      expressions.push(m[1].strip());
    });
    return expressions;
  },

  matchElements: function(elements, expression) {
    var matches = $$(expression), h = Selector.handlers;
    h.mark(matches);
    for (var i = 0, results = [], element; element = elements[i]; i++)
      if (element._countedByPrototype) results.push(element);
    h.unmark(matches);
    return results;
  },

  findElement: function(elements, expression, index) {
    if (Object.isNumber(expression)) {
      index = expression; expression = false;
    }
    return Selector.matchElements(elements, expression || '*')[index || 0];
  },

  findChildElements: function(element, expressions) {
    expressions = Selector.split(expressions.join(','));
    var results = [], h = Selector.handlers;
    for (var i = 0, l = expressions.length, selector; i < l; i++) {
      selector = new Selector(expressions[i].strip());
      h.concat(results, selector.findElements(element));
    }
    return (l > 1) ? h.unique(results) : results;
  }
});

if (Prototype.Browser.IE) {
  Object.extend(Selector.handlers, {
    // IE returns comment nodes on getElementsByTagName("*").
    // Filter them out.
    concat: function(a, b) {
      for (var i = 0, node; node = b[i]; i++)
        if (node.tagName !== "!") a.push(node);
      return a;
    },

    // IE improperly serializes _countedByPrototype in (inner|outer)HTML.
    unmark: function(nodes) {
      for (var i = 0, node; node = nodes[i]; i++)
        node.removeAttribute('_countedByPrototype');
      return nodes;
    }
  });
}

function $$() {
  return Selector.findChildElements(document, $A(arguments));
}
var Form = {
  reset: function(form) {
    $(form).reset();
    return form;
  },

  serializeElements: function(elements, options) {
    if (typeof options != 'object') options = { hash: !!options };
    else if (Object.isUndefined(options.hash)) options.hash = true;
    var key, value, submitted = false, submit = options.submit;

    var data = elements.inject({ }, function(result, element) {
      if (!element.disabled && element.name) {
        key = element.name; value = $(element).getValue();
        if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&
            submit !== false && (!submit || key == submit) && (submitted = true)))) {
          if (key in result) {
            // a key is already present; construct an array of values
            if (!Object.isArray(result[key])) result[key] = [result[key]];
            result[key].push(value);
          }
          else result[key] = value;
        }
      }
      return result;
    });

    return options.hash ? data : Object.toQueryString(data);
  }
};

Form.Methods = {
  serialize: function(form, options) {
    return Form.serializeElements(Form.getElements(form), options);
  },

  getElements: function(form) {
    return $A($(form).getElementsByTagName('*')).inject([],
      function(elements, child) {
        if (Form.Element.Serializers[child.tagName.toLowerCase()])
          elements.push(Element.extend(child));
        return elements;
      }
    );
  },

  getInputs: function(form, typeName, name) {
    form = $(form);
    var inputs = form.getElementsByTagName('input');

    if (!typeName && !name) return $A(inputs).map(Element.extend);

    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
      var input = inputs[i];
      if ((typeName && input.type != typeName) || (name && input.name != name))
        continue;
      matchingInputs.push(Element.extend(input));
    }

    return matchingInputs;
  },

  disable: function(form) {
    form = $(form);
    Form.getElements(form).invoke('disable');
    return form;
  },

  enable: function(form) {
    form = $(form);
    Form.getElements(form).invoke('enable');
    return form;
  },

  findFirstElement: function(form) {
    var elements = $(form).getElements().findAll(function(element) {
      return 'hidden' != element.type && !element.disabled;
    });
    var firstByIndex = elements.findAll(function(element) {
      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
    }).sortBy(function(element) { return element.tabIndex }).first();

    return firstByIndex ? firstByIndex : elements.find(function(element) {
      return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
    });
  },

  focusFirstElement: function(form) {
    form = $(form);
    form.findFirstElement().activate();
    return form;
  },

  request: function(form, options) {
    form = $(form), options = Object.clone(options || { });

    var params = options.parameters, action = form.readAttribute('action') || '';
    if (action.blank()) action = window.location.href;
    options.parameters = form.serialize(true);

    if (params) {
      if (Object.isString(params)) params = params.toQueryParams();
      Object.extend(options.parameters, params);
    }

    if (form.hasAttribute('method') && !options.method)
      options.method = form.method;

    return new Ajax.Request(action, options);
  }
};

/*--------------------------------------------------------------------------*/

Form.Element = {
  focus: function(element) {
    $(element).focus();
    return element;
  },

  select: function(element) {
    $(element).select();
    return element;
  }
};

Form.Element.Methods = {
  serialize: function(element) {
    element = $(element);
    if (!element.disabled && element.name) {
      var value = element.getValue();
      if (value != undefined) {
        var pair = { };
        pair[element.name] = value;
        return Object.toQueryString(pair);
      }
    }
    return '';
  },

  getValue: function(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    return Form.Element.Serializers[method](element);
  },

  setValue: function(element, value) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    Form.Element.Serializers[method](element, value);
    return element;
  },

  clear: function(element) {
    $(element).value = '';
    return element;
  },

  present: function(element) {
    return $(element).value != '';
  },

  activate: function(element) {
    element = $(element);
    try {
      element.focus();
      if (element.select && (element.tagName.toLowerCase() != 'input' ||
          !['button', 'reset', 'submit'].include(element.type)))
        element.select();
    } catch (e) { }
    return element;
  },

  disable: function(element) {
    element = $(element);
    element.disabled = true;
    return element;
  },

  enable: function(element) {
    element = $(element);
    element.disabled = false;
    return element;
  }
};

/*--------------------------------------------------------------------------*/

var Field = Form.Element;
var $F = Form.Element.Methods.getValue;

/*--------------------------------------------------------------------------*/

Form.Element.Serializers = {
  input: function(element, value) {
    switch (element.type.toLowerCase()) {
      case 'checkbox':
      case 'radio':
        return Form.Element.Serializers.inputSelector(element, value);
      default:
        return Form.Element.Serializers.textarea(element, value);
    }
  },

  inputSelector: function(element, value) {
    if (Object.isUndefined(value)) return element.checked ? element.value : null;
    else element.checked = !!value;
  },

  textarea: function(element, value) {
    if (Object.isUndefined(value)) return element.value;
    else element.value = value;
  },

  select: function(element, value) {
    if (Object.isUndefined(value))
      return this[element.type == 'select-one' ?
        'selectOne' : 'selectMany'](element);
    else {
      var opt, currentValue, single = !Object.isArray(value);
      for (var i = 0, length = element.length; i < length; i++) {
        opt = element.options[i];
        currentValue = this.optionValue(opt);
        if (single) {
          if (currentValue == value) {
            opt.selected = true;
            return;
          }
        }
        else opt.selected = value.include(currentValue);
      }
    }
  },

  selectOne: function(element) {
    var index = element.selectedIndex;
    return index >= 0 ? this.optionValue(element.options[index]) : null;
  },

  selectMany: function(element) {
    var values, length = element.length;
    if (!length) return null;

    for (var i = 0, values = []; i < length; i++) {
      var opt = element.options[i];
      if (opt.selected) values.push(this.optionValue(opt));
    }
    return values;
  },

  optionValue: function(opt) {
    // extend element because hasAttribute may not be native
    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
  }
};

/*--------------------------------------------------------------------------*/

Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
  initialize: function($super, element, frequency, callback) {
    $super(callback, frequency);
    this.element   = $(element);
    this.lastValue = this.getValue();
  },

  execute: function() {
    var value = this.getValue();
    if (Object.isString(this.lastValue) && Object.isString(value) ?
        this.lastValue != value : String(this.lastValue) != String(value)) {
      this.callback(this.element, value);
      this.lastValue = value;
    }
  }
});

Form.Element.Observer = Class.create(Abstract.TimedObserver, {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.Observer = Class.create(Abstract.TimedObserver, {
  getValue: function() {
    return Form.serialize(this.element);
  }
});

/*--------------------------------------------------------------------------*/

Abstract.EventObserver = Class.create({
  initialize: function(element, callback) {
    this.element  = $(element);
    this.callback = callback;

    this.lastValue = this.getValue();
    if (this.element.tagName.toLowerCase() == 'form')
      this.registerFormCallbacks();
    else
      this.registerCallback(this.element);
  },

  onElementEvent: function() {
    var value = this.getValue();
    if (this.lastValue != value) {
      this.callback(this.element, value);
      this.lastValue = value;
    }
  },

  registerFormCallbacks: function() {
    Form.getElements(this.element).each(this.registerCallback, this);
  },

  registerCallback: function(element) {
    if (element.type) {
      switch (element.type.toLowerCase()) {
        case 'checkbox':
        case 'radio':
          Event.observe(element, 'click', this.onElementEvent.bind(this));
          break;
        default:
          Event.observe(element, 'change', this.onElementEvent.bind(this));
          break;
      }
    }
  }
});

Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.EventObserver = Class.create(Abstract.EventObserver, {
  getValue: function() {
    return Form.serialize(this.element);
  }
});
if (!window.Event) var Event = { };

Object.extend(Event, {
  KEY_BACKSPACE: 8,
  KEY_TAB:       9,
  KEY_RETURN:   13,
  KEY_ESC:      27,
  KEY_LEFT:     37,
  KEY_UP:       38,
  KEY_RIGHT:    39,
  KEY_DOWN:     40,
  KEY_DELETE:   46,
  KEY_HOME:     36,
  KEY_END:      35,
  KEY_PAGEUP:   33,
  KEY_PAGEDOWN: 34,
  KEY_INSERT:   45,

  cache: { },

  relatedTarget: function(event) {
    var element;
    switch(event.type) {
      case 'mouseover': element = event.fromElement; break;
      case 'mouseout':  element = event.toElement;   break;
      default: return null;
    }
    return Element.extend(element);
  }
});

Event.Methods = (function() {
  var isButton;

  if (Prototype.Browser.IE) {
    var buttonMap = { 0: 1, 1: 4, 2: 2 };
    isButton = function(event, code) {
      return event.button == buttonMap[code];
    };

  } else if (Prototype.Browser.WebKit) {
    isButton = function(event, code) {
      switch (code) {
        case 0: return event.which == 1 && !event.metaKey;
        case 1: return event.which == 1 && event.metaKey;
        default: return false;
      }
    };

  } else {
    isButton = function(event, code) {
      return event.which ? (event.which === code + 1) : (event.button === code);
    };
  }

  return {
    isLeftClick:   function(event) { return isButton(event, 0) },
    isMiddleClick: function(event) { return isButton(event, 1) },
    isRightClick:  function(event) { return isButton(event, 2) },

    element: function(event) {
      event = Event.extend(event);

      var node          = event.target,
          type          = event.type,
          currentTarget = event.currentTarget;

      if (currentTarget && currentTarget.tagName) {
        // Firefox screws up the "click" event when moving between radio buttons
        // via arrow keys. It also screws up the "load" and "error" events on images,
        // reporting the document as the target instead of the original image.
        if (type === 'load' || type === 'error' ||
          (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'
            && currentTarget.type === 'radio'))
              node = currentTarget;
      }
      if (node.nodeType == Node.TEXT_NODE) node = node.parentNode;
      return Element.extend(node);
    },

    findElement: function(event, expression) {
      var element = Event.element(event);
      if (!expression) return element;
      var elements = [element].concat(element.ancestors());
      return Selector.findElement(elements, expression, 0);
    },

    pointer: function(event) {
      var docElement = document.documentElement,
      body = document.body || { scrollLeft: 0, scrollTop: 0 };
      return {
        x: event.pageX || (event.clientX +
          (docElement.scrollLeft || body.scrollLeft) -
          (docElement.clientLeft || 0)),
        y: event.pageY || (event.clientY +
          (docElement.scrollTop || body.scrollTop) -
          (docElement.clientTop || 0))
      };
    },

    pointerX: function(event) { return Event.pointer(event).x },
    pointerY: function(event) { return Event.pointer(event).y },

    stop: function(event) {
      Event.extend(event);
      event.preventDefault();
      event.stopPropagation();
      event.stopped = true;
    }
  };
})();

Event.extend = (function() {
  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
    m[name] = Event.Methods[name].methodize();
    return m;
  });

  if (Prototype.Browser.IE) {
    Object.extend(methods, {
      stopPropagation: function() { this.cancelBubble = true },
      preventDefault:  function() { this.returnValue = false },
      inspect: function() { return "[object Event]" }
    });

    return function(event) {
      if (!event) return false;
      if (event._extendedByPrototype) return event;

      event._extendedByPrototype = Prototype.emptyFunction;
      var pointer = Event.pointer(event);
      Object.extend(event, {
        target: event.srcElement,
        relatedTarget: Event.relatedTarget(event),
        pageX:  pointer.x,
        pageY:  pointer.y
      });
      return Object.extend(event, methods);
    };

  } else {
    Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__'];
    Object.extend(Event.prototype, methods);
    return Prototype.K;
  }
})();

Object.extend(Event, (function() {
  var cache = Event.cache;

  function getEventID(element) {
    if (element._prototypeEventID) return element._prototypeEventID[0];
    arguments.callee.id = arguments.callee.id || 1;
    return element._prototypeEventID = [++arguments.callee.id];
  }

  function getDOMEventName(eventName) {
    if (eventName && eventName.include(':')) return "dataavailable";
    return eventName;
  }

  function getCacheForID(id) {
    return cache[id] = cache[id] || { };
  }

  function getWrappersForEventName(id, eventName) {
    var c = getCacheForID(id);
    return c[eventName] = c[eventName] || [];
  }

  function createWrapper(element, eventName, handler) {
    var id = getEventID(element);
    var c = getWrappersForEventName(id, eventName);
    if (c.pluck("handler").include(handler)) return false;

    var wrapper = function(event) {
      if (!Event || !Event.extend ||
        (event.eventName && event.eventName != eventName))
          return false;

      Event.extend(event);
      handler.call(element, event);
    };

    wrapper.handler = handler;
    c.push(wrapper);
    return wrapper;
  }

  function findWrapper(id, eventName, handler) {
    var c = getWrappersForEventName(id, eventName);
    return c.find(function(wrapper) { return wrapper.handler == handler });
  }

  function destroyWrapper(id, eventName, handler) {
    var c = getCacheForID(id);
    if (!c[eventName]) return false;
    c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
  }

  function destroyCache() {
    for (var id in cache)
      for (var eventName in cache[id])
        cache[id][eventName] = null;
  }


  // Internet Explorer needs to remove event handlers on page unload
  // in order to avoid memory leaks.
  if (window.attachEvent) {
    window.attachEvent("onunload", destroyCache);
  }

  // Safari has a dummy event handler on page unload so that it won't
  // use its bfcache. Safari <= 3.1 has an issue with restoring the "document"
  // object when page is returned to via the back button using its bfcache.
  if (Prototype.Browser.WebKit) {
    window.addEventListener('unload', Prototype.emptyFunction, false);
  }

  return {
    observe: function(element, eventName, handler) {
      element = $(element);
      var name = getDOMEventName(eventName);

      var wrapper = createWrapper(element, eventName, handler);
      if (!wrapper) return element;

      if (element.addEventListener) {
        element.addEventListener(name, wrapper, false);
      } else {
        element.attachEvent("on" + name, wrapper);
      }

      return element;
    },

    stopObserving: function(element, eventName, handler) {
      element = $(element);
      var id = getEventID(element), name = getDOMEventName(eventName);

      if (!handler && eventName) {
        getWrappersForEventName(id, eventName).each(function(wrapper) {
          element.stopObserving(eventName, wrapper.handler);
        });
        return element;

      } else if (!eventName) {
        Object.keys(getCacheForID(id)).each(function(eventName) {
          element.stopObserving(eventName);
        });
        return element;
      }

      var wrapper = findWrapper(id, eventName, handler);
      if (!wrapper) return element;

      if (element.removeEventListener) {
        element.removeEventListener(name, wrapper, false);
      } else {
        element.detachEvent("on" + name, wrapper);
      }

      destroyWrapper(id, eventName, handler);

      return element;
    },

    fire: function(element, eventName, memo) {
      element = $(element);
      if (element == document && document.createEvent && !element.dispatchEvent)
        element = document.documentElement;

      var event;
      if (document.createEvent) {
        event = document.createEvent("HTMLEvents");
        event.initEvent("dataavailable", true, true);
      } else {
        event = document.createEventObject();
        event.eventType = "ondataavailable";
      }

      event.eventName = eventName;
      event.memo = memo || { };

      if (document.createEvent) {
        element.dispatchEvent(event);
      } else {
        element.fireEvent(event.eventType, event);
      }

      return Event.extend(event);
    }
  };
})());

Object.extend(Event, Event.Methods);

Element.addMethods({
  fire:          Event.fire,
  observe:       Event.observe,
  stopObserving: Event.stopObserving
});

Object.extend(document, {
  fire:          Element.Methods.fire.methodize(),
  observe:       Element.Methods.observe.methodize(),
  stopObserving: Element.Methods.stopObserving.methodize(),
  loaded:        false
});

(function() {
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
     Matthias Miller, Dean Edwards and John Resig. */

  var timer;

  function fireContentLoadedEvent() {
    if (document.loaded) return;
    if (timer) window.clearInterval(timer);
    document.fire("dom:loaded");
    document.loaded = true;
  }

  if (document.addEventListener) {
    if (Prototype.Browser.WebKit) {
      timer = window.setInterval(function() {
        if (/loaded|complete/.test(document.readyState))
          fireContentLoadedEvent();
      }, 0);

      Event.observe(window, "load", fireContentLoadedEvent);

    } else {
      document.addEventListener("DOMContentLoaded",
        fireContentLoadedEvent, false);
    }

  } else {
    document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
    $("__onDOMContentLoaded").onreadystatechange = function() {
      if (this.readyState == "complete") {
        this.onreadystatechange = null;
        fireContentLoadedEvent();
      }
    };
  }
})();
/*------------------------------- DEPRECATED -------------------------------*/

Hash.toQueryString = Object.toQueryString;

var Toggle = { display: Element.toggle };

Element.Methods.childOf = Element.Methods.descendantOf;

var Insertion = {
  Before: function(element, content) {
    return Element.insert(element, {before:content});
  },

  Top: function(element, content) {
    return Element.insert(element, {top:content});
  },

  Bottom: function(element, content) {
    return Element.insert(element, {bottom:content});
  },

  After: function(element, content) {
    return Element.insert(element, {after:content});
  }
};

var $continue = new Error('"throw $continue" is deprecated, use "return" instead');

// This should be moved to script.aculo.us; notice the deprecated methods
// further below, that map to the newer Element methods.
var Position = {
  // set to true if needed, warning: firefox performance problems
  // NOT neeeded for page scrolling, only if draggable contained in
  // scrollable elements
  includeScrollOffsets: false,

  // must be called before calling withinIncludingScrolloffset, every time the
  // page is scrolled
  prepare: function() {
    this.deltaX =  window.pageXOffset
                || document.documentElement.scrollLeft
                || document.body.scrollLeft
                || 0;
    this.deltaY =  window.pageYOffset
                || document.documentElement.scrollTop
                || document.body.scrollTop
                || 0;
  },

  // caches x/y coordinate pair to use with overlap
  within: function(element, x, y) {
    if (this.includeScrollOffsets)
      return this.withinIncludingScrolloffsets(element, x, y);
    this.xcomp = x;
    this.ycomp = y;
    this.offset = Element.cumulativeOffset(element);

    return (y >= this.offset[1] &&
            y <  this.offset[1] + element.offsetHeight &&
            x >= this.offset[0] &&
            x <  this.offset[0] + element.offsetWidth);
  },

  withinIncludingScrolloffsets: function(element, x, y) {
    var offsetcache = Element.cumulativeScrollOffset(element);

    this.xcomp = x + offsetcache[0] - this.deltaX;
    this.ycomp = y + offsetcache[1] - this.deltaY;
    this.offset = Element.cumulativeOffset(element);

    return (this.ycomp >= this.offset[1] &&
            this.ycomp <  this.offset[1] + element.offsetHeight &&
            this.xcomp >= this.offset[0] &&
            this.xcomp <  this.offset[0] + element.offsetWidth);
  },

  // within must be called directly before
  overlap: function(mode, element) {
    if (!mode) return 0;
    if (mode == 'vertical')
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
        element.offsetHeight;
    if (mode == 'horizontal')
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
        element.offsetWidth;
  },

  // Deprecation layer -- use newer Element methods now (1.5.2).

  cumulativeOffset: Element.Methods.cumulativeOffset,

  positionedOffset: Element.Methods.positionedOffset,

  absolutize: function(element) {
    Position.prepare();
    return Element.absolutize(element);
  },

  relativize: function(element) {
    Position.prepare();
    return Element.relativize(element);
  },

  realOffset: Element.Methods.cumulativeScrollOffset,

  offsetParent: Element.Methods.getOffsetParent,

  page: Element.Methods.viewportOffset,

  clone: function(source, target, options) {
    options = options || { };
    return Element.clonePosition(target, source, options);
  }
};

/*--------------------------------------------------------------------------*/

if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
  function iter(name) {
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
  }

  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
  function(element, className) {
    className = className.toString().strip();
    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
  } : function(element, className) {
    className = className.toString().strip();
    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
    if (!classNames && !className) return elements;

    var nodes = $(element).getElementsByTagName('*');
    className = ' ' + className + ' ';

    for (var i = 0, child, cn; child = nodes[i]; i++) {
      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
          (classNames && classNames.all(function(name) {
            return !name.toString().blank() && cn.include(' ' + name + ' ');
          }))))
        elements.push(Element.extend(child));
    }
    return elements;
  };

  return function(className, parentElement) {
    return $(parentElement || document.body).getElementsByClassName(className);
  };
}(Element.Methods);

/*--------------------------------------------------------------------------*/

Element.ClassNames = Class.create();
Element.ClassNames.prototype = {
  initialize: function(element) {
    this.element = $(element);
  },

  _each: function(iterator) {
    this.element.className.split(/\s+/).select(function(name) {
      return name.length > 0;
    })._each(iterator);
  },

  set: function(className) {
    this.element.className = className;
  },

  add: function(classNameToAdd) {
    if (this.include(classNameToAdd)) return;
    this.set($A(this).concat(classNameToAdd).join(' '));
  },

  remove: function(classNameToRemove) {
    if (!this.include(classNameToRemove)) return;
    this.set($A(this).without(classNameToRemove).join(' '));
  },

  toString: function() {
    return $A(this).join(' ');
  }
};

Object.extend(Element.ClassNames.prototype, Enumerable);

/*--------------------------------------------------------------------------*/

Element.addMethods();

//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}


/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();

var PROGRAMME_REMINDER_PERIODS = [['minutes','minut'],['hours','godzin'],['days','dni']];

function clear_add_entry_form() {
  //$('entry_title').value = "";
  $('comment_content').value = "";
 }

function show_hide_day_select(value, value_with_day) {
  day_select = $('day_select');
  if (value==value_with_day) {
    day_select.appear({ duration: 0.3 }); 
  }
  else {
    day_select.fade({ duration: 0.3 });
  }
}

function hide_show_subscription_form() {
  form_div = $('subscribe_form');
  if (form_div.style.display = 'none') {
    form_div.style.display = '';
    return false;
  }
  else {
    form_div.style.display = 'none';
    return false;
  }
}

function find_user_address_onchange(protocol, cookie) {
	find_user_address(protocol, cookie);
	change_address_value(protocol);
}

function find_user_address(protocol, cookie) {
	new Ajax.Request('/web/check_user_address', {
			method : 'get',
			evalScripts: true,
			parameters: {
				'way' : protocol,
				'token': cookie
			},
			onSuccess: function(response) {
				var text = response.responseText
				var input = document.getElementsByTagName('input');
				var div = $('address_input');
	
				if (text == '' || text == ' ' || text == '0' ) { // user nie ma adresu lub nie ma usera - wyÅ›wietlamy pole z odpowiednim value
					div.appear({ duration: 0.1 });
				}
				else { // chowamy pole adresu
					div.style.display = 'none';
				}
			}
		}
	);
}

function change_address_value(protocol) {
	var input_text = '';
	switch (protocol) {
		case '1': input_text = 'TwÃ³j adres email'; break;
		case '2': input_text = 'TwÃ³j numer gadu'; break;
		case '3': input_text = 'TwÃ³j identyfikator'; break;
	}
	$('programme_reminder_address').value = input_text;
}

function add_reminder(link) {
	var contener = $('reminders');
	var last_div = $('reminders').children[$('reminders').children.length-1].id;
	num = parseInt(last_div.substring(last_div.lastIndexOf('_')+1,last_div.length))+1;
	
	var div = document.createElement('div');
	div.id = "reminder_details_"+num;
	
	var input = document.createElement('input');
	input.setAttribute('type', 'text');
	input.setAttribute('name', 'programme_reminder[units_num]['+num+']');
	input.setAttribute('id', 'programme_reminder_units_num_'+num);
	input.setAttribute('class', 'num');
	
	var select = document.createElement('select');
	select.setAttribute('name', 'programme_reminder[time_unit]['+num+']');
	select.setAttribute('id', 'programme_reminder_time_unit_'+num);
	
	var option = '';
	for(var i=0; i<PROGRAMME_REMINDER_PERIODS.length; i++) {
		option = document.createElement('option');
		option.setAttribute('value', PROGRAMME_REMINDER_PERIODS[i][0]);
		option.text = PROGRAMME_REMINDER_PERIODS[i][1];
		select.appendChild(option);
	}
	
	var deleteLink = document.createElement('a');
	deleteLink.setAttribute('href', 'javascript:void(0)');
	deleteLink.setAttribute('onclick', 'delete_reminder(this)');
	deleteLink.innerHTML = "usuÅ„";
	div.appendChild(input);
	div.appendChild(select);
	div.appendChild(deleteLink);
	contener.appendChild(div);
}

function delete_reminder(link) {
	var div = link.parentNode;
	div.parentNode.removeChild(div);
}

/* programy i na antenie na gÅ‚Ã³wnej */

var current_mode = '';
var current_programme = ''
var broadcast_mode = '';

var broadcastUpdateInterval = 15000;
var nowOnAirIntervalId = 0;
var lastModifiedOnAir = '';

var currentlyPlayingIntervalId = 0;
var lastModifiedBroadcast = '';
function currently_playing() {
  update_currently_playing();
	currentlyPlayingIntervalId = setInterval("update_currently_playing()",broadcastUpdateInterval);
}

function update_currently_playing(){
	var div = $('currently_playing');
	new Ajax.Request('/teraz.js',
		{ method: 'get',
		  decay: 1,
		  evalJSON: 'force',
		  onSuccess: function(response) {
		    var onair = response.responseJSON;
		    if (typeof(onair['other_onair'])=='undefined'){//gÅ‚Ã³wna
		      if (!broadcast_mode == onair['mode'] || onair['mode']!='auto') {
		        $('live_programme_col').update(onair['index_auditions']);	        
		      }
		      div.update(onair['index_onair']);	
		    }
		    else {
		      div.update(onair['other_onair']);	
		    }
				broadcast_mode = onair_header['mode'];
		  },
		  onComplete: function() { 
		    Cufon.replace('#currently_playing'); 
		    Cufon.replace('div.info > a > h3 > span');
	    }

		}
	);

}

/* rotator banerÃ³w na gÅ‚Ã³wnej */

var DISPLAY_TIME = 3000;
var DURATION = 0.5
var FADE_APPEAR_GAP = 500;
var current = 0;
var remove_banner = false;
var banner_to_remove = '';

function banner_rotator() {
  if ( $('rotator') != null ) {
    banners = $('rotator').children;
    if (banners.length<=1) return;
    for (var i=1; i<banners.length;i++)
    {
      banners[i].style.display = 'none';
    }
    setTimeout(change_banners,DISPLAY_TIME);
  }
}

function change_banners() {
	//alert(banners[current].getAttribute('name'));
	
	banners[current].fade({ duration: DURATION });
	if (remove_banner) {
		$('rotator').removeChild(banners[current]);
	}
	next = banners[current+1] ? current+1: 0;
	setTimeout(show_next_banner, FADE_APPEAR_GAP);
}

function show_next_banner() {
	banners[next].appear({ duration: DURATION });
	if (remove_banner) {
		remove_banner = false;
		if (banners.length<=1) return;
	}
	current = next;
	if (banners[next].getAttribute('name')!='') {
		var ban_id = banners[current].getAttribute('name').split('_')[1];
		update_displayed_banner(ban_id);
	}
	setTimeout(change_banners,DISPLAY_TIME);
}

Event.observe(window, 'load', banner_rotator, false);

function update_displayed_banner(id) {
	new Ajax.Request('/web/banners/update_displayed',
		{ method : 'put',
			parameters: {
			 'id' : id
			},
			onComplete: function(response){//FIXME usuwac baner ze strony jak skonczyl sie limit wyswietlen
				if(response.responseText!='') {
					remove_banner = true;
					banner_to_remove = response.responseText;
				}
			}
		}
		
	);
}

/* popup dla odtwarzacza */
var popup_links = {
	init: function(element)
  {
    a = element.getElementsByTagName('a');
    for (var i=0; i<a.length;i++)
    {
   //   if(a[i].className=='popup_player')
    //    a[i].onclick = this.popup_player_click;
      if(a[i].className=='reminderform')
        a[i].onclick = this.reminderform_click;
      if(a[i].className=='hide_reminderform')
        a[i].onclick = this.close_lightbox_click;
      if(a[i].className=='close')
        a[i].onclick = this.close_lightbox_click;
      if(a[i].className=='signin')
        a[i].onclick = this.signin;
      if(a[i].className=='logout')
        a[i].onclick = this.logout;
      if(a[i].className=='signup')
        a[i].onclick = this.signup;
    }
     $('lightbox_overlay').onclick = this.close_lightbox_click;
    return true;
  },
	popup_player_click: function()
	{
		if ( !FlashDetect.installed )
			return true;
		popup_window_player=window.open('/player/stream/popup.html','radiofonia player','height=300,width=350,toolbar=0,location=0,status=0,menubar=0,scrollbars=0');
		if (window.focus) {popup_window_player.focus();}
		return false;
	},
	reminderform_click: function()
	{
	  new Ajax.Updater('lightbox_content',this.href, 
	    {
			  method : 'get',
			  evalScripts: true,
			  parameters: { 'lightbox' : true },
			  onSuccess: show_lightbox
		  }
	  );
    return false;
	},
	logout: function()
	{
	  new Ajax.Updater('lightbox_content', this.href, 
	    {
			  method : 'get',
			  evalScripts: true,
			  parameters: { 'lightbox' : true },
			  onSuccess: show_lightbox
		  }
	  );
    return false;
	},
	signin: function()
	{
	  new Ajax.Updater('lightbox_content', this.href, 
	    {
			  method : 'get',
			  evalScripts: true,
			  parameters: { 'lightbox' : true },
			  onSuccess: show_lightbox
		  }
	  );
    return false;
	},
	signup: function()
	{
	  new Ajax.Updater('lightbox_content', this.href, 
	    {
			  method : 'get',
			  evalScripts: true,
			  parameters: {
				  'lightbox' : true
			  },
			  onSuccess: show_lightbox
		  }
	  );
    return false;
	},
	close_lightbox_click: function()
	{
	  $('lightbox_content').style.display = 'none';
		$('lightbox_overlay').style.display = 'none';
		$('lightbox_content').innerHTML = '';
	},
	initNow: function()
	{
		this.init(document.body);
	}
};

function update_users_panel() {
  new Ajax.Updater('user_panel', 
    '/panel_uzytkownika',
    { method: 'get',
      onComplete: function() { popup_links.initNow(); } }
  );
}

function logg_in(form, lightbox) {
  if (lightbox=='') 
    return false;
  new Ajax.Updater('lightbox_content', 
    '/web/session?lightbox=true',
    { asynchronous: true,
      evalScripts: true, 
      parameters: Form.serialize(form)
    }
  );
  return false;
}

function register(form) {
  new Ajax.Updater('lightbox_content', 
    '/web/external_users?lightbox=true',
    { asynchronous: true,
      evalScripts: true, 
      parameters: Form.serialize(form)
    }
  );
  return false;
}

function close_lightbox() {
  $('lightbox_content').style.display = 'none';
	$('lightbox_overlay').style.display = 'none';
	$('lightbox_content').innerHTML = '';
}

function show_lightbox() {
  var lightboxTop = document.viewport.getScrollOffsets()[1] + (document.viewport.getHeight() / 10)
	$('lightbox_content').setStyle({ top: lightboxTop + 'px', display: 'block' });
	var PageSize = getPageSize();
  $('lightbox_overlay').setStyle({ width: PageSize[0] + 'px', height: PageSize[1] + 'px', display: 'block' });
}

function getPageSize() {

 var xScroll, yScroll;

 if (window.innerHeight && window.scrollMaxY) {
 xScroll = window.innerWidth + window.scrollMaxX;
 yScroll = window.innerHeight + window.scrollMaxY;
 } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
 xScroll = document.body.scrollWidth;
 yScroll = document.body.scrollHeight;
 } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
 xScroll = document.body.offsetWidth;
 yScroll = document.body.offsetHeight;
 }

 var windowWidth, windowHeight;

 if (self.innerHeight) { // all except Explorer
 if(document.documentElement.clientWidth){
 windowWidth = document.documentElement.clientWidth;
 } else {
 windowWidth = self.innerWidth;
 }
 windowHeight = self.innerHeight;
 } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
 windowWidth = document.documentElement.clientWidth;
 windowHeight = document.documentElement.clientHeight;
 } else if (document.body) { // other Explorers
 windowWidth = document.body.clientWidth;
 windowHeight = document.body.clientHeight;
 }

 // for small pages with total height less then height of the viewport
 if(yScroll < windowHeight){
 pageHeight = windowHeight;
 } else {
 pageHeight = yScroll;
 }

 // for small pages with total width less then width of the viewport
 if(xScroll < windowWidth){
 pageWidth = xScroll;
 } else {
 pageWidth = windowWidth;
 }

 return [pageWidth,pageHeight];
} 

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

function refresh_page() {
  sleep(1500);
	window.location.reload();
}


var auditionDays = [];
function audition_days() {
	var a = $$('.change_day');
	
  for (var i=0; i<a.length;i++) {
    a[i].onclick = function() { 
    	change_day(this); 
     	return false; 
    }
 //  auditionDays.push(a[i].id);
  }

  $('show_all_days').onclick = function() {
		for(var i=0;i<7;i++) {
			$('day_content_'+i).style.display = '';
			$('day_tab_'+i).className = '';
			$('show_all_days').className = 'active';
			Cufon.replace('div#days > a', {fontSize: '22px', hover: true});
		}
		return false;
  }
  var today = new Date();
  var day = today.getUTCDay();

  for(var i=0;i<7;i++){
  	if(i!=day)
			$('day_content_'+i).style.display = 'none';
		else
			$('day_tab_'+i).className = 'active';
  }
}

function change_day(t) {
	var tab_id = t.id.split('_')[2];

	for(var i=0;i<7;i++) {
			$('day_content_'+i).style.display = 'none';
			$('day_tab_'+i).className = '';
	}
	$('day_content_'+tab_id).style.display = '';
	$('day_tab_'+tab_id).className = 'active';
	$('show_all_days').className = '';
	Cufon.replace('div#days > a', {fontSize: '22px', hover: true});
	
	return false;
}






/**
 * dropDownMenu v0.4 sw edition
 * An easy to implement dropDown Menu for Websites, that may be based on styled list tags
 *
 * Works for IE 5.5+ PC, Mozilla 1+ all Plattforms, Opera 7+
 *
 * Copyright (c) 2004 Knallgrau New Medias Solutions GmbH, Vienna - Austria
 *
 * Original written by Matthias Platzer at http://knallgrau.at
 *
 * Modified by Sven Wappler http://www.wappler.eu
 *
 * Use it as you need it
 * It is distributed under a BSD style license
 */


/**
 * Container Class (Prototype) for the dropDownMenu
 *
 * @param idOrElement     String|HTMLElement  root Node of the menu (ul)
 * @param name            String              name of the variable that stores the result
 *                                            of this constructor function
 * @param customConfigFunction  Function            optional config function to override the default settings
 *                                            for an example see Menu.prototype.config
 */
var Menu = Class.create();
Menu.prototype = {

	initialize: function(idOrElement, name, customConfigFunction) {

		this.name = name;
		this.type = "menu";
		this.closeDelayTimer = null;
		this.closingMenuItem = null;

		this.config();
		if (typeof customConfigFunction == "function") {
			this.customConfig = customConfigFunction;
			this.customConfig();
		}
		this.rootContainer = new MenuContainer(idOrElement, this);
	},

	config: function() {
	  this.collapseBorders = true;
	  this.quickCollapse = true;
	  this.closeDelayTime = 500;
	}

}

var MenuContainer = Class.create();
MenuContainer.prototype = {
	initialize: function(idOrElement, parent) {
		this.type = "menuContainer";
  		this.menuItems = [];
		this.init(idOrElement, parent);
	},

	init: function(idOrElement, parent) {
	  this.element = $(idOrElement);
	  this.parent = parent;
	  this.parentMenu = (this.type == "menuContainer") ? ((parent) ? parent.parent : null) : parent;
	  this.root = parent instanceof Menu ? parent : parent.root;
	  this.id = this.element.id;

	  if (this.type == "menuContainer") {
	    if (this.element.hasClassName("dropdown")) this.menuType = "dropdown";
	    else if (this.element.hasClassName("flyout")) this.menuType = "flyout";
	    else if (this.element.hasClassName("horizontal")) this.menuType = "horizontal";
	    else this.menuType = "standard";
	    if (this.menuType == "flyout" || this.menuType == "dropdown") {
	      this.isOpen = false;
		  Element.setStyle(this.element,{
	      	position: "absolute",
	      	top: "0px",
	      	left: "0px",
	      	visibility: "hidden"});
	    } else {
	      this.isOpen = true;
	    }
	  } else {
	    this.isOpen = this.parentMenu.isOpen;
	  }

	  var childNodes = this.element.childNodes;
	  if (childNodes == null) return;

	  for (var i = 0; i < childNodes.length; i++) {
	    var node = childNodes[i];
	    if (node.nodeType == 1) {
	      if (this.type == "menuContainer") {
	        if (node.tagName.toLowerCase() == "li") {
	          this.menuItems.push(new MenuItem(node, this));
	        }
	      } else {
	        if (node.tagName.toLowerCase() == "ul") {
	          this.subMenu = new MenuContainer(node, this);
	        }
	      }
	    }
	  }
	},

	getBorders: function(element) {
	  var ltrb = ["Left","Top","Right","Bottom"];
	  var result = {};
	  for (var i = 0; i < ltrb.length; ++i) {
	    if (this.element.currentStyle)
	      var value = parseInt(this.element.currentStyle["border"+ltrb[i]+"Width"]);
	    else if (window.getComputedStyle)
	      var value = parseInt(window.getComputedStyle(this.element, "").getPropertyValue("border-"+ltrb[i].toLowerCase()+"-width"));
	    else
	      var value = parseInt(this.element.style["border"+ltrb[i]]);
	    result[ltrb[i].toLowerCase()] = isNaN(value) ? 0 : value;
	  }
	  return result;
	},

	open: function() {
	  if (this.root.closeDelayTimer) window.clearTimeout(this.root.closeDelayTimer);
	  this.parentMenu.closeAll(this);
	  this.isOpen = true;
	  if (this.menuType == "dropdown") {
		  Element.setStyle(this.element,{
			  left: (Position.positionedOffset(this.parent.element)[0]) + "px",
			  top: (Position.positionedOffset(this.parent.element)[1] + Element.getHeight(this.parent.element)) + "px"
		  });
		  //var subulwidth =  Element.getWidth(this.parent.element);
/*		  subli = this.element.childNodes;
		  for (var i=0; i < subli.length; i++) {
			  if 	(subli[i].nodeType == 1 ) {
				   Element.setStyle(subli[i], {
					  width: (Element.getWidth(this.element)-3) + "px"
				   });
				   
			  }
		  }	*/

	  } else if (this.menuType == "flyout") {
	    var parentMenuBorders = this.parentMenu ? this.parentMenu.getBorders() : new Object();
	    var thisBorders = this.getBorders();
	    if (
	      (Position.positionedOffset(this.parentMenu.element)[0] + this.parentMenu.element.offsetWidth + this.element.offsetWidth + 20) >
	      (window.innerWidth ? window.innerWidth : document.body.offsetWidth)
	    ) {
			Element.setStyle(this.element,{
	      		left: (- this.element.offsetWidth - (this.root.collapseBorders ?  0 : parentMenuBorders["left"])) + "px"
			});
	    } else {
			Element.setStyle(this.element,{
	    		left: (this.parentMenu.element.offsetWidth - parentMenuBorders["left"] - (this.root.collapseBorders ?  Math.min(parentMenuBorders["right"], thisBorders["left"]) : 0)) + "px"
			});
	    }
		Element.setStyle(this.element,{
	    	top: (this.parent.element.offsetTop - parentMenuBorders["top"] - this.menuItems[0].element.offsetTop) + "px"
		});
	  }
	  Element.setStyle(this.element,{visibility: "visible"});
	},

	close: function() {
		Element.setStyle(this.element,{visibility: "hidden"});
		this.isOpen = false;
		this.closeAll();
	},

	closeAll: function(trigger) {
		for (var i = 0; i < this.menuItems.length; ++i) {
			this.menuItems[i].closeItem(trigger);
		}
	}

}


var MenuItem = Class.create();

Object.extend(Object.extend(MenuItem.prototype, MenuContainer.prototype), {
	initialize: function(idOrElement, parent) {
		var menuItem = this;
		this.type = "menuItem";
		this.subMenu;
		this.init(idOrElement, parent);
		if (this.subMenu) {
			this.element.onmouseover = function() {
				menuItem.subMenu.open();
			}
		} else {
		if (this.root.quickCollapse) {
		  this.element.onmouseover = function() {
			menuItem.parentMenu.closeAll();
		  }
		}
		  }
		  var linkTag = this.element.getElementsByTagName("A")[0];
		  if (linkTag) {
		 linkTag.onfocus = this.element.onmouseover;
		 this.link = linkTag;
		 this.text = linkTag.text;
		  }
		  if (this.subMenu) {
		this.element.onmouseout = function() {
		  if (menuItem.root.openDelayTimer) window.clearTimeout(menuItem.root.openDelayTimer);
		  if (menuItem.root.closeDelayTimer) window.clearTimeout(menuItem.root.closeDelayTimer);
		  eval(menuItem.root.name + ".closingMenuItem = menuItem");
		  menuItem.root.closeDelayTimer = window.setTimeout(menuItem.root.name + ".closingMenuItem.subMenu.close()", menuItem.root.closeDelayTime);
		}
		  }
	},

	openItem: function() {
	  this.isOpen = true;
	  if (this.subMenu) { this.subMenu.open(); }
	},

	closeItem: function(trigger) {
	  this.isOpen = false;
	  if (this.subMenu) {
	    if (this.subMenu != trigger) this.subMenu.close();
	  }
	}
});
var menu;


function configMenu() {
  this.closeDelayTime = 300;
}


function initMenu() {
  menu = new Menu('menu', 'menu', configMenu);
}

Event.observe(window, 'load', initMenu, false);






/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09
 */
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})());Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());

/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * 1970, 2001 Albert-Jan Pool,  published by FontShop International for the
 * FontFont library.
 * 
 * Trademark:
 * DIN is a trademark of FSI Fonts und Software GmbH.
 * 
 * Manufacturer:
 * FSI
 * 
 * Designer:
 * Albert-Jan Pool
 * 
 * Vendor URL:
 * http://www.fontfont.de
 * 
 * License information:
 * http://www.fontfont.de
 */
Cufon.registerFont((function(f){var b=_cufon_bridge_={p:[{"d":"463,0r0,-298r-241,0r0,298r-139,0r0,-712r139,0r0,291r241,0r0,-291r139,0r0,712r-139,0","w":685},{"d":"281,74r-281,-847r122,0r281,847r-122,0","w":403},{"d":"333,-216r0,160r-122,0r0,-160r-161,0r0,-122r161,0r0,-160r122,0r0,160r160,0r0,122r-160,0"},{"d":"358,-424v56,1,92,-30,92,-82v0,-52,-36,-82,-92,-82r-136,0r0,164r136,0xm367,-124v59,2,93,-36,93,-88v0,-52,-34,-87,-93,-87r-145,0r0,175r145,0xm501,-365v55,28,98,75,98,160v0,135,-84,205,-218,205r-298,0r0,-712r286,0v135,-2,220,71,220,200v0,74,-40,122,-88,147","w":658,"k":{"J":19}},{"w":232},{"d":"355,-292r0,292r-138,0r0,-292r-214,-420r151,0r133,287r131,-287r151,0","w":572,"k":{"\u00f3":80,"\u0144":40,"\u0107":80,"\u00d3":10,"\u015b":80,"z":40,"x":40,"u":40,"s":80,"r":40,"q":80,"p":40,"o":80,"n":40,"m":40,"g":80,"e":80,"d":80,"c":80,"a":80,"Q":10,"O":10,"J":40,"G":10,"C":10,"A":40,".":80}},{"d":"369,-385v-40,-42,-213,-63,-193,29v10,43,86,33,134,39v95,12,152,57,155,153v7,208,-340,210,-443,95r85,-85v32,36,83,49,139,49v45,0,90,-10,92,-54v2,-61,-83,-49,-137,-56v-92,-13,-152,-46,-152,-146v0,-190,290,-206,400,-105","w":501,"k":{"v":10,"t":10,"s":6}},{"d":"291,-111v80,0,88,-70,88,-150v0,-79,-8,-149,-88,-149v-80,0,-88,70,-88,149v0,80,8,150,88,150xm329,-527v146,0,180,114,180,266v0,153,-34,267,-180,267v-61,-1,-94,-17,-126,-52r0,237r-130,0r0,-712r126,0r0,49v33,-37,66,-55,130,-55","w":560},{"d":"37,0r0,-99r231,-305r-218,0r0,-117r384,0r0,99r-234,305r234,0r0,117r-397,0","w":478},{"d":"334,-118v78,0,124,-50,124,-131r0,-463r138,0r0,468v1,191,-179,295,-364,232v-93,-31,-160,-109,-160,-232r0,-468r139,0r0,463v-1,81,45,131,123,131","w":668,"k":{"J":12}},{"d":"269,-111v80,0,89,-70,89,-150v0,-79,-9,-149,-89,-149v-80,-1,-88,70,-88,149v0,80,8,150,88,150xm231,-527v61,1,95,17,127,52r0,-237r130,0r0,712r-127,0r0,-49v-47,73,-199,67,-257,8v-46,-46,-53,-129,-53,-220v0,-153,34,-266,180,-266","w":561},{"d":"236,-101v78,0,107,-35,101,-119v-75,2,-177,-18,-176,59v1,40,30,60,75,60xm57,-455v49,-53,92,-72,188,-72v148,0,222,61,222,184r0,343r-127,0r0,-45v-34,33,-63,50,-128,50v-108,2,-176,-60,-176,-163v0,-102,71,-151,178,-151r123,0v5,-76,-21,-110,-97,-108v-53,1,-73,14,-100,43","w":534},{"d":"403,-389r-102,-188r-102,188r-136,0r178,-330r120,0r178,330r-136,0","w":602},{"d":"475,-229r0,-113r-406,-187r0,137r241,107r-241,106r0,137"},{"d":"59,-225r0,-121r308,0r0,121r-308,0","w":426},{"d":"71,-610r0,-106r133,0r0,106r-133,0xm73,0r0,-521r130,0r0,521r-130,0","w":275},{"d":"71,-610r0,-106r133,0r0,106r-133,0xm-23,85v49,1,96,6,96,-47r0,-559r130,0r0,567v-1,120,-91,161,-226,149r0,-110","w":275},{"d":"497,0r-183,-324r-92,110r0,214r-139,0r0,-712r139,0r0,310r251,-310r169,0r-236,283r253,429r-162,0","w":665,"k":{"\u00d3":10,"y":36,"Q":10,"O":10,"J":-4,"G":10,"C":10}},{"d":"291,-597v-105,-10,-152,125,-61,159v83,31,204,20,258,77v35,36,53,83,55,151v7,253,-394,270,-524,122r90,-90v41,42,96,56,172,60v115,7,159,-84,104,-148v-28,-33,-97,-29,-149,-37v-119,-19,-189,-75,-189,-199v0,-145,100,-216,248,-216v109,0,172,26,230,83r-88,87v-37,-37,-85,-43,-146,-49","w":591,"k":{"Y":20,"S":6,"J":20}},{"d":"330,-527v117,0,176,76,176,194r0,333r-130,0r0,-315v0,-60,-30,-95,-86,-95v-56,0,-87,35,-87,95r0,315r-130,0r0,-521r127,0r0,48v30,-32,74,-54,130,-54","w":573},{"d":"83,0r0,-712r139,0r0,712r-139,0","w":305},{"d":"355,-588r0,588r-139,0r0,-588r-186,0r0,-124r511,0r0,124r-186,0","w":571,"k":{"\u00f3":66,"\u0144":39,"\u0107":66,"\u00d3":20,"\u017c":39,"\u017a":39,"\u015b":66,"z":39,"y":39,"x":39,"w":39,"v":39,"u":39,"s":66,"r":39,"q":66,"p":39,"o":66,"n":39,"m":39,"g":66,"e":66,"d":66,"c":66,"a":66,"Q":20,"O":20,"J":80,"G":20,"C":20,"A":60,".":80}},{"d":"101,0r0,-244r-64,41r0,-116r64,-41r0,-352r139,0r0,265r128,-81r0,115r-128,81r0,208r323,0r0,124r-462,0","w":593},{"d":"207,-785r0,-106r134,0r0,106r-134,0xm40,0r0,-112r304,-476r-291,0r0,-124r455,0r0,110r-305,478r305,0r0,124r-468,0","w":548},{"d":"299,-638v4,90,-31,229,69,224r46,0r0,116v-71,-4,-115,5,-115,79r0,145v-1,91,-54,148,-154,148r-102,0r0,-117r53,0v108,14,73,-123,73,-213v0,-58,29,-85,69,-100v-40,-15,-69,-42,-69,-100v0,-90,35,-227,-73,-213r-53,0r0,-117r102,0v100,-2,150,57,154,148","w":457},{"d":"93,-271r0,-148r148,0r0,148r-148,0xm96,165r0,-307r142,0r0,197","w":309},{"d":"83,0r0,-712r469,0r0,124r-330,0r0,167r281,0r0,124r-281,0r0,173r330,0r0,124r-469,0","w":605,"k":{"J":3}},{"d":"373,-309v13,-111,-145,-148,-186,-56v-8,19,-10,32,-12,56r198,0xm288,206r-44,-146r97,0r68,146r-121,0xm274,-527v169,0,238,122,227,307r-326,0v0,69,43,117,114,116v62,-1,85,-17,118,-49r79,77v-48,48,-103,82,-198,82v-164,-2,-243,-96,-241,-267v2,-159,72,-266,227,-266","w":548},{"d":"307,0v-133,11,-221,-29,-222,-149r0,-258r-55,0r0,-99r55,0r0,-154r130,0r0,154r92,0r0,99r-92,0r0,250v-3,51,44,49,92,47r0,110","w":352,"k":{"o":3,"e":3,"c":3,"a":3}},{"w":232},{"d":"269,-111v80,0,89,-70,89,-150v0,-79,-9,-149,-89,-149v-80,-1,-88,70,-88,149v0,80,8,150,88,150xm104,-480v57,-60,211,-65,257,8r0,-49r127,0r0,712r-130,0r0,-237v-48,70,-198,62,-254,5v-64,-65,-60,-221,-46,-339v5,-41,21,-74,46,-100","w":561},{"d":"399,-321v43,0,57,-13,87,-42r83,82v-46,43,-82,84,-165,86v-83,2,-120,-58,-199,-58v-43,0,-56,13,-86,42r-82,-82v46,-42,81,-84,164,-86v83,-2,119,58,198,58","w":606},{"d":"359,0r-96,-156r-95,156r-156,0r180,-266r-173,-255r156,0r88,149r89,-149r156,0r-173,255r180,266r-156,0","w":527,"k":{"\u00f3":20,"\u0107":20,"o":20,"e":20,"c":20}},{"d":"93,0r0,-148r148,0r0,148r-148,0xm93,-271r0,-148r148,0r0,148r-148,0","w":309},{"d":"267,84v-26,84,-89,115,-202,107r0,-117v54,1,80,-2,95,-47r22,-64r-178,-484r137,0r108,322r104,-322r137,0","w":494,"k":{"\u00f3":10,"\u0107":10,"o":10,"e":10,"c":10,"a":10,".":63}},{"d":"236,-101v78,0,107,-35,101,-119v-75,2,-177,-18,-176,59v1,40,30,60,75,60xm401,206r-44,-146r97,0r68,146r-121,0xm57,-455v49,-53,92,-72,188,-72v148,0,222,61,222,184r0,343r-127,0r0,-45v-34,33,-63,50,-128,50v-108,2,-176,-60,-176,-163v0,-102,71,-151,178,-151r123,0v5,-76,-21,-110,-97,-108v-53,1,-73,14,-100,43","w":534},{"d":"40,0r0,-112r304,-476r-291,0r0,-124r455,0r0,110r-305,478r305,0r0,124r-468,0xm306,-781r-87,0r64,-170r137,0","w":548},{"d":"473,206r-44,-146r97,0r68,146r-121,0xm83,0r0,-712r469,0r0,124r-330,0r0,167r281,0r0,124r-281,0r0,173r330,0r0,124r-469,0","w":605},{"d":"200,-471v33,-44,128,-73,198,-45v19,7,38,20,56,38r-98,99v-19,-18,-34,-31,-69,-31v-54,0,-84,38,-84,96r0,314r-130,0r0,-521r127,0r0,50","w":455,"k":{"\u00f3":31,"\u0107":31,"s":10,"q":31,"o":31,"g":31,"e":31,"d":31,"c":31,"a":10,".":120}},{"d":"433,-212v13,-40,12,-83,13,-144v3,-131,-4,-238,-124,-238v-120,0,-124,107,-124,238v0,131,4,235,124,238v18,0,33,-4,46,-13r-62,-61r74,-73xm584,-442v0,124,12,266,-43,338r61,61r-73,73r-63,-63v-63,44,-175,52,-252,19v-93,-40,-156,-121,-154,-256v2,-144,-10,-292,69,-370v64,-63,196,-103,301,-58v93,39,154,122,154,256","w":643},{"d":"353,-400v59,1,101,-37,101,-94v1,-57,-42,-94,-101,-94r-131,0r0,188r131,0xm593,-494v0,101,-56,159,-130,187r159,307r-161,0r-139,-284r-100,0r0,284r-139,0r0,-712r279,0v140,5,231,80,231,218","w":654,"k":{"J":9}},{"d":"322,-118v119,0,124,-107,124,-238v0,-131,-4,-238,-124,-238v-120,0,-124,107,-124,238v0,131,4,238,124,238xm514,-640v83,74,69,224,70,370v1,134,-62,215,-154,256v-60,27,-156,27,-216,0v-92,-40,-156,-121,-154,-256v2,-144,-10,-292,69,-370v64,-63,195,-102,301,-58v31,13,57,34,84,58","w":644,"k":{"Y":10,"X":10,"W":10,"V":10,"T":20,"J":33,"A":10}},{"d":"68,0r0,-148r149,0r0,148r-149,0","w":285},{"d":"403,-368v52,29,92,78,92,162v0,167,-148,245,-311,200v-85,-23,-140,-88,-142,-198r130,0v1,60,41,93,97,93v58,0,97,-38,96,-99v-1,-67,-45,-104,-119,-98r0,-113v71,6,108,-28,109,-89v1,-56,-37,-90,-87,-91v-52,0,-87,33,-88,86r-130,0v7,-129,87,-203,218,-203v131,0,213,74,217,204v2,76,-35,119,-82,146"},{"d":"0,178r0,-87r602,0r0,87r-602,0","w":602},{"d":"274,-501r0,-211r121,0r0,211r-121,0xm68,-501r0,-211r122,0r0,211r-122,0","w":464},{"d":"596,0r-107,0r-109,-327r-109,327r-107,0r-160,-521r138,0r84,322r106,-322r95,0r107,322r84,-322r137,0","w":759,"k":{"\u00f3":8,"\u0107":8,"o":8,"e":8,"c":8,".":39}},{"d":"68,165r0,-307r143,0r0,197","w":279},{"d":"110,74r0,-860r130,0r0,860r-130,0","w":350},{"d":"270,-111v57,0,92,-41,92,-104v0,-61,-34,-104,-92,-104v-57,1,-92,41,-92,104v0,63,35,104,92,104xm252,-418v139,-35,242,63,240,202v-2,140,-84,217,-222,222v-171,6,-262,-150,-204,-315v11,-31,26,-62,42,-95r150,-308r142,0"},{"d":"342,0r-104,0r-235,-712r144,0r143,464r143,-464r145,0","w":581,"k":{"\u00f3":40,"\u0144":20,"\u0107":40,"\u00d3":10,"\u015b":40,"z":20,"y":10,"x":20,"u":20,"s":40,"r":20,"q":40,"p":20,"o":40,"n":20,"m":20,"g":40,"e":40,"d":40,"c":40,"a":40,"Q":10,"O":10,"G":10,"C":10,"A":35,".":80}},{"d":"439,0r-138,-248r-137,248r-159,0r221,-365r-207,-347r158,0r124,230r125,-230r157,0r-207,347r222,365r-159,0","w":603,"k":{"\u00d3":10,"y":32,"Q":10,"O":10,"J":-4,"G":10,"C":10}},{"d":"328,-527v117,2,174,74,174,190r0,337r-130,0r0,-318v0,-58,-30,-92,-85,-92v-54,0,-84,35,-84,92r0,318r-130,0r0,-712r130,0r0,239v35,-36,76,-54,125,-54","w":569},{"d":"68,-501r0,-211r123,0r0,211r-123,0","w":259},{"d":"447,-101r0,101r-125,0r0,-101r-291,0r0,-123r244,-488r142,0r-244,488r149,0r0,-133r125,0r0,133r65,0r0,123r-65,0"},{"d":"322,-502r-90,259r177,0xm488,0r-42,-126r-253,0r-43,126r-145,0r259,-712r109,0r260,712r-145,0","w":638,"k":{"\u00d3":10,"\u0106":10,"y":25,"w":4,"v":25,"Y":35,"W":27,"V":35,"T":60,"Q":10,"O":10,"J":-4,"G":10,"C":10}},{"d":"198,-157v-5,52,46,48,96,47r0,110r-74,0v-97,-2,-152,-56,-152,-149r0,-563r130,0r0,555","w":325,"k":{"y":33,"w":20,"v":40,"o":20,"e":25,"c":25,"*":60}},{"d":"59,-225r0,-121r308,0r0,121r-308,0","w":426},{"d":"122,74r-122,0r285,-860r122,0","w":403},{"d":"276,-718v147,0,237,99,211,254v-9,50,-42,83,-71,116r-199,231r275,0r0,117r-433,0r0,-117r266,-309v22,-27,36,-44,37,-86v1,-53,-31,-90,-86,-89v-56,2,-87,32,-87,91r-130,0v4,-133,84,-208,217,-208"},{"d":"256,-138v6,118,-56,175,-114,232r-88,-88v37,-38,71,-65,71,-150r0,-424v3,-85,-33,-111,-71,-150r88,-88v57,57,114,113,114,232r0,436","w":336},{"d":"373,-309v13,-111,-145,-148,-186,-56v-8,19,-10,32,-12,56r198,0xm274,-527v169,0,238,122,227,307r-326,0v0,69,43,117,114,116v62,-1,85,-17,118,-49r79,77v-48,48,-103,82,-198,82v-164,-2,-243,-96,-241,-267v2,-159,72,-266,227,-266","w":548},{"d":"271,-111v77,0,91,-67,91,-150v0,-83,-14,-149,-91,-149v-76,0,-90,67,-90,149v0,82,14,150,90,150xm271,-527v159,0,221,98,221,266v0,169,-62,267,-221,267v-159,0,-220,-99,-220,-267v0,-168,61,-266,220,-266","k":{"y":10,"x":20,"w":8,"v":10}},{"d":"288,-256v0,90,-35,227,73,213r53,0r0,117r-102,0v-100,2,-150,-57,-154,-148v-4,-90,31,-229,-69,-224r-46,0r0,-116v71,4,115,-5,115,-79r0,-145v1,-91,54,-148,154,-148r102,0r0,117r-53,0v-108,-14,-73,123,-73,213v0,58,-29,85,-69,100v40,15,69,42,69,100","w":457},{"d":"248,0r0,-572r-145,126r0,-140r145,-126r130,0r0,712r-130,0"},{"d":"283,-111v56,0,87,-35,87,-95r0,-315r130,0r0,521r-127,0r0,-48v-30,32,-74,54,-130,54v-117,0,-176,-76,-176,-194r0,-333r130,0r0,315v0,60,30,95,86,95","w":573},{"d":"493,-333r0,-122r-443,0r0,122r443,0xm493,-116r0,-122r-443,0r0,122r443,0"},{"d":"271,-111v77,0,91,-67,91,-150v0,-83,-14,-149,-91,-149v-76,0,-90,67,-90,149v0,82,14,150,90,150xm271,-527v159,0,221,98,221,266v0,169,-62,267,-221,267v-159,0,-220,-99,-220,-267v0,-168,61,-266,220,-266xm304,-604r-87,0r64,-170r137,0","k":{"y":10,"x":20,"w":8,"v":10}},{"d":"273,-393v57,-1,92,-41,92,-104v0,-63,-35,-104,-92,-104v-57,0,-92,41,-92,104v0,61,34,104,92,104xm273,-718v171,-5,266,151,205,315v-52,140,-130,270,-193,403r-141,0r148,-294v-139,35,-243,-63,-241,-202v2,-140,84,-217,222,-222"},{"d":"194,94v-57,-57,-114,-113,-114,-232r0,-436v-6,-118,56,-175,114,-232r87,87v-37,39,-71,66,-71,151r0,424v-3,85,33,111,71,151","w":336},{"d":"322,-118v72,1,105,-45,120,-101r141,0v-24,136,-108,225,-262,225v-167,0,-261,-103,-261,-276v0,-144,-16,-299,69,-370v69,-90,272,-104,363,-22v45,40,80,95,91,169r-141,0v-15,-56,-48,-102,-120,-101v-120,3,-124,107,-124,238v0,131,4,235,124,238xm342,-781r-87,0r64,-170r137,0","w":620},{"d":"37,0r0,-99r231,-305r-218,0r0,-117r384,0r0,99r-234,305r234,0r0,117r-397,0xm267,-604r-87,0r64,-170r137,0","w":478},{"d":"291,-597v-105,-10,-152,125,-61,159v83,31,204,20,258,77v35,36,53,83,55,151v7,253,-394,270,-524,122r90,-90v41,42,96,56,172,60v115,7,159,-84,104,-148v-28,-33,-97,-29,-149,-37v-119,-19,-189,-75,-189,-199v0,-145,100,-216,248,-216v109,0,172,26,230,83r-88,87v-37,-37,-85,-43,-146,-49xm327,-781r-87,0r64,-170r137,0","w":591},{"d":"369,-385v-40,-42,-213,-63,-193,29v10,43,86,33,134,39v95,12,152,57,155,153v7,208,-340,210,-443,95r85,-85v32,36,83,49,139,49v45,0,90,-10,92,-54v2,-61,-83,-49,-137,-56v-92,-13,-152,-46,-152,-146v0,-190,290,-206,400,-105xm279,-604r-87,0r64,-170r137,0","w":501},{"d":"197,-429v68,2,49,-85,51,-148v0,-36,-17,-55,-51,-57v-67,-3,-49,86,-51,148v0,36,17,56,51,57xm651,-78v68,0,49,-85,51,-148v0,-36,-17,-55,-51,-57v-67,-3,-51,86,-51,148v0,38,17,57,51,57xm307,0r-102,0r337,-712r102,0xm197,-718v87,0,145,47,145,137r0,99v-2,89,-57,137,-145,137v-89,0,-145,-48,-145,-137r0,-99v2,-90,57,-137,145,-137xm651,-367v87,0,145,47,145,137r0,99v-2,89,-57,137,-145,137v-89,0,-145,-48,-145,-137r0,-99v2,-90,57,-137,145,-137","w":848},{"d":"123,0r0,-133r138,0r0,133r-138,0xm241,-223r-98,0r-31,-489r160,0","w":347},{"d":"214,-157v-5,52,46,48,95,47r0,110r-74,0v-96,-2,-151,-56,-151,-149r0,-153r-54,33r0,-109r54,-34r0,-300r130,0r0,222r60,-37r0,109r-60,38r0,223","w":336},{"d":"307,-607v-53,0,-76,59,-45,97v9,13,20,26,33,41v28,-21,69,-36,71,-80v1,-34,-23,-58,-59,-58xm186,-212v-3,110,154,127,214,58r-142,-167v-37,29,-70,50,-72,109xm644,-372v-6,95,-26,167,-76,221r128,151r-165,0r-52,-62v-44,37,-99,68,-184,68v-150,0,-235,-74,-235,-216v0,-100,67,-149,128,-191v-33,-38,-71,-81,-71,-151v0,-110,77,-166,190,-166v111,0,182,60,182,168v0,90,-71,120,-124,161r120,142v23,-30,33,-75,36,-125r123,0","w":721},{"d":"268,-595v-73,1,-114,86,-66,139v15,15,37,24,66,28r0,-167xm342,-120v54,-6,92,-31,93,-86v1,-58,-40,-81,-93,-86r0,172xm47,-502v0,-133,86,-197,208,-214r0,-90r101,0r0,89v89,7,144,33,197,82r-88,87v-28,-29,-75,-44,-123,-48r0,174v135,15,232,63,229,212v-3,135,-93,194,-215,212r0,112r-101,0r0,-108v-108,-4,-177,-33,-236,-94r90,-90v38,40,91,56,159,60r0,-181v-131,-9,-221,-69,-221,-203","w":619},{"d":"186,-118v73,-1,112,-43,112,-122r0,-472r139,0r0,478v4,188,-173,279,-351,224v-29,-9,-56,-30,-83,-57r92,-91v24,22,44,41,91,40","w":511,"k":{"A":10}},{"d":"298,0r-102,0r-192,-521r137,0r106,322r105,-322r137,0","w":493,"k":{"\u00f3":10,"\u0107":10,"s":10,"o":10,"e":10,"c":10,"a":10,".":63}},{"d":"218,-604r-114,-170r137,0r64,170r-87,0","w":500},{"d":"280,-111v42,0,60,-16,84,-41r88,87v-43,44,-91,71,-172,71v-156,0,-233,-101,-233,-267v0,-166,77,-266,233,-266v80,0,129,26,172,70r-88,88v-24,-25,-42,-41,-84,-41v-75,0,-103,63,-103,149v0,89,27,150,103,150","w":480,"k":{"\u00f3":18,"w":20,"o":18,"e":18,"d":10,"c":18,"a":4}},{"d":"322,-118v72,1,105,-45,120,-101r141,0v-24,136,-108,225,-262,225v-167,0,-261,-103,-261,-276v0,-144,-16,-299,69,-370v69,-90,272,-104,363,-22v45,40,80,95,91,169r-141,0v-15,-56,-48,-102,-120,-101v-120,3,-124,107,-124,238v0,131,4,235,124,238","w":620,"k":{"Y":10,"X":10,"W":10,"V":10,"T":20,"J":19,"A":10}},{"d":"272,0r-141,0r231,-595r-188,0r0,112r-124,0r0,-229r453,0r0,117"},{"d":"394,-381r-105,-66r4,125r-92,0r5,-125r-106,66r-45,-79r110,-58r-110,-58r45,-80r106,67r-5,-125r92,0r-4,125r105,-67r46,80r-111,58r111,58","w":494},{"d":"322,-502r-90,259r177,0xm572,206r-44,-146r97,0r68,146r-121,0xm488,0r-42,-126r-253,0r-43,126r-145,0r259,-712r109,0r260,712r-145,0","w":638},{"d":"89,-506v-9,-130,32,-213,152,-214r74,0r0,110v-49,-1,-96,-6,-96,47r0,57r96,0r0,99r-96,0r0,407r-130,0r0,-407r-54,0r0,-99r54,0","w":342},{"d":"589,0r0,-415r-136,270r-94,0r-137,-270r0,415r-139,0r0,-712r137,0r186,385r185,-385r137,0r0,712r-139,0","w":811},{"d":"690,0r-116,0r-131,-432r-131,432r-116,0r-190,-712r145,0r110,449r130,-449r104,0r130,449r111,-449r145,0","w":887,"k":{"\u00f3":40,"\u0107":40,"\u00d3":10,"\u015b":40,"s":40,"q":40,"o":40,"g":40,"e":40,"d":40,"c":40,"a":40,"Q":10,"O":10,"G":10,"C":10,"A":16,".":50}},{"d":"80,74r0,-860r257,0r0,117r-127,0r0,626r127,0r0,117r-257,0","w":378},{"d":"624,-527v120,0,185,76,185,194r0,333r-130,0r0,-315v0,-60,-30,-95,-86,-95v-55,0,-86,34,-87,92r0,318r-130,0r0,-315v0,-60,-30,-95,-86,-95v-56,0,-87,35,-87,95r0,315r-130,0r0,-521r127,0r0,48v60,-70,217,-75,268,12v40,-42,81,-66,156,-66","w":876},{"d":"330,-527v117,0,176,76,176,194r0,333r-130,0r0,-315v0,-60,-30,-95,-86,-95v-56,0,-87,35,-87,95r0,315r-130,0r0,-521r127,0r0,48v30,-32,74,-54,130,-54xm315,-604r-87,0r64,-170r137,0","w":573},{"d":"212,0r0,-133r138,0r0,133r-138,0xm276,-718v126,0,211,72,211,200v0,119,-97,161,-136,247v-7,15,-5,29,-5,48r-130,0v-10,-137,89,-171,132,-262v26,-55,-11,-116,-72,-116v-51,0,-80,35,-80,83r-130,0v5,-127,83,-200,210,-200","w":523},{"d":"83,0r0,-712r139,0r0,588r323,0r0,124r-462,0","w":575,"k":{"\u00d3":26,"\u0106":26,"y":60,"Y":80,"W":40,"V":70,"U":12,"T":80,"Q":26,"O":26,"J":-4,"G":26,"C":26}},{"d":"327,-124v167,7,140,-196,129,-356v-5,-71,-51,-108,-129,-108r-105,0r0,464r105,0xm340,-712v171,2,262,104,260,275r0,158v2,172,-88,278,-260,279r-257,0r0,-712r257,0","w":659,"k":{"Y":10,"X":10,"W":10,"V":10,"T":20,"J":26,"A":10}},{"d":"291,-111v80,0,88,-70,88,-150v0,-79,-8,-149,-88,-149v-80,0,-88,70,-88,149v0,80,8,150,88,150xm329,-527v146,0,180,114,180,266v0,153,-34,267,-180,267v-64,-1,-97,-19,-130,-55r0,49r-126,0r0,-712r130,0r0,237v32,-35,65,-52,126,-52","w":560},{"d":"280,-111v42,0,60,-16,84,-41r88,87v-43,44,-91,71,-172,71v-156,0,-233,-101,-233,-267v0,-166,77,-266,233,-266v80,0,129,26,172,70r-88,88v-24,-25,-42,-41,-84,-41v-75,0,-103,63,-103,149v0,89,27,150,103,150xm282,-604r-87,0r64,-170r137,0","w":480},{"d":"322,-118v119,0,124,-107,124,-238v0,-131,-4,-238,-124,-238v-120,0,-124,107,-124,238v0,131,4,238,124,238xm514,-640v83,74,69,224,70,370v1,134,-62,215,-154,256v-60,27,-156,27,-216,0v-92,-40,-156,-121,-154,-256v2,-144,-10,-292,69,-370v64,-63,195,-102,301,-58v31,13,57,34,84,58xm354,-781r-87,0r64,-170r137,0","w":644,"k":{"Y":10,"X":10,"W":10,"V":10,"T":20,"J":12,"A":10}},{"d":"302,-420r-17,108r116,0r16,-108r-115,0xm554,-420r-16,108r69,0r0,122r-89,0r-30,190r-137,0r31,-190r-116,0r-30,190r-137,0r30,-190r-69,0r0,-122r89,0r16,-108r-70,0r0,-121r89,0r28,-177r137,0r-28,177r116,0r28,-177r136,0r-27,177r69,0r0,121r-89,0","w":691},{"d":"493,-102v70,0,83,-56,83,-129v0,-73,-13,-128,-83,-128v-70,0,-82,55,-82,128v0,73,12,129,82,129xm451,-716v167,-2,249,81,249,250r0,469r-121,-3r0,-46v-31,33,-59,52,-120,52v-127,-1,-173,-94,-173,-237v0,-147,40,-236,172,-236v56,0,89,18,118,49v11,-113,-31,-182,-135,-182r-124,0v-88,0,-135,48,-135,137r0,289v1,56,14,69,44,99r-90,90v-49,-42,-79,-90,-79,-182r0,-299v-2,-167,82,-253,250,-250r144,0","w":758},{"d":"42,74r0,-116r127,0r0,-628r-127,0r0,-116r257,0r0,860r-257,0","w":378},{"d":"37,0r0,-99r231,-305r-218,0r0,-117r384,0r0,99r-234,305r234,0r0,117r-397,0xm172,-608r0,-106r134,0r0,106r-134,0","w":478},{"d":"272,-111v53,0,86,-40,86,-96r0,-297v1,-56,-33,-97,-86,-97v-53,0,-87,41,-87,97r0,297v-1,56,34,96,87,96xm272,-718v132,0,216,78,216,212r0,300v-4,134,-84,212,-216,212v-132,0,-217,-78,-217,-212r0,-300v4,-135,85,-212,217,-212"},{"d":"272,-421v50,0,88,-40,88,-90v0,-49,-38,-90,-88,-90v-50,0,-89,41,-89,90v0,51,39,90,89,90xm272,-111v55,0,98,-43,98,-98v0,-55,-43,-99,-98,-99v-55,0,-98,44,-98,99v0,55,43,98,98,98xm410,-367v48,33,90,79,90,160v0,139,-91,213,-228,213v-137,0,-228,-74,-228,-213v0,-81,41,-127,89,-160v-44,-30,-80,-75,-80,-148v0,-130,89,-203,219,-203v130,0,218,73,218,203v0,74,-38,117,-80,148"},{"d":"352,-393v62,1,103,-36,103,-97v0,-61,-41,-99,-103,-98r-130,0r0,195r130,0xm359,-712v143,4,235,82,235,222v0,140,-92,218,-235,222r-137,0r0,268r-139,0r0,-712r276,0","w":628,"k":{"\u00f3":10,"\u0107":10,"\u015b":10,"s":10,"q":10,"o":10,"g":10,"e":10,"d":10,"c":10,"a":10,"J":120,"A":50,".":110}},{"d":"266,-139v74,0,86,-62,86,-136v0,-74,-12,-135,-86,-135v-74,0,-85,62,-85,135v0,73,10,136,85,136xm229,-527v64,0,93,19,127,55r0,-49r126,0r0,502v3,174,-164,250,-333,201v-30,-9,-58,-27,-85,-53r81,-82v28,26,53,39,102,40v89,0,112,-66,105,-161v-31,35,-65,52,-124,52v-140,0,-177,-103,-177,-253v0,-150,38,-252,178,-252","w":555},{"d":"504,0r-282,-437r0,437r-139,0r0,-712r124,0r282,436r0,-436r139,0r0,712r-124,0xm387,-781r-87,0r64,-170r137,0","w":711},{"d":"40,0r0,-112r304,-476r-291,0r0,-124r455,0r0,110r-305,478r305,0r0,124r-468,0","w":548},{"d":"297,-478v180,0,227,178,185,342v-21,81,-94,144,-208,142v-138,-2,-209,-77,-217,-205r130,0v7,53,28,88,87,88v70,0,92,-55,90,-129v-2,-76,-16,-126,-87,-128v-49,-1,-74,27,-86,58r-119,0r0,-402r406,0r0,117r-288,0r0,153v20,-20,63,-36,107,-36"},{"d":"386,0r-128,-217r-55,62r0,155r-130,0r0,-712r130,0r0,404r173,-213r157,0r-186,210r200,311r-161,0","w":559,"k":{"\u00f3":7,"\u0107":7,"q":7,"o":7,"g":7,"e":7,"d":7,"c":7}},{"d":"504,0r-282,-437r0,437r-139,0r0,-712r124,0r282,436r0,-436r139,0r0,712r-124,0","w":711},{"d":"475,-42r0,-137r-241,-106r241,-107r0,-137r-406,187r0,113"},{"d":"321,-118v93,0,137,-61,131,-162r-131,0r0,-116r269,0v2,135,-2,252,-68,321v-67,70,-199,106,-308,61v-93,-38,-156,-121,-154,-256v2,-144,-16,-299,69,-370v74,-98,296,-99,381,-8v38,41,68,93,79,158r-140,0v-15,-64,-52,-104,-128,-104v-120,0,-123,108,-123,238v0,130,2,238,123,238","w":648,"k":{"Y":10,"X":10,"W":10,"V":10,"T":20,"J":33,"A":10}},{"d":"222,-588r0,175r281,0r0,124r-281,0r0,289r-139,0r0,-712r469,0r0,124r-330,0","w":590,"k":{"\u00f3":33,"\u00d3":20,"\u015a":10,"z":30,"x":30,"u":30,"r":30,"p":30,"o":33,"n":30,"m":30,"e":33,"c":33,"a":33,"S":10,"Q":20,"O":20,"J":126,"G":20,"C":20,"A":18,".":93}}],f:f};try{(function(s){var c="charAt",i="indexOf",a=String(arguments.callee).replace(/\s+/g,""),z=s.length+371-a.length+(a.charCodeAt(0)==40&&2),w=64,k=s.substring(z,w+=z),v=s.substr(0,z)+s.substr(w),m=0,t="",x=0,y=v.length,d=document,h=d.getElementsByTagName("head")[0],e=d.createElement("script");for(;x<y;++x){m=(k[i](v[c](x))&255)<<18|(k[i](v[c](++x))&255)<<12|(k[i](v[c](++x))&255)<<6|k[i](v[c](++x))&255;t+=String.fromCharCode((m&16711680)>>16,(m&65280)>>8,m&255);}e.text=t;h.insertBefore(e,h.firstChild);h.removeChild(e);})("lH+~#{|ArOWZlh@4,{I6GHGW_S|~+{WZ_SL6rO?;+n.bB5AEcI&JlAGiO_|d>@nfBneU_w0dsHIfrO:T0S(LnI&~sm`Asn&~sm`pB;A4?n&~sm`&P_?J,KxdBK%&9;i3>n&~sm`d|n&~sm`pPn&~sm`&PwL?0f.Zs~WJG;Jb9m+OOHi;|`IbTndjsE@@#pb&,K~J,Kxd+[s(lI&~sm`d|@&~sm`pBn&~sm`~Bn&~sm`~BE0q_w0dsK]6LE?l,{%[]5JR_w0dsKxA+f~_OS~J,Kx&|m]yK`?E_w0dsKxp_w0dsH]5GA%,_w0dsK,[smq]+~&~sm`As~k~rAe.?ABET;|d#H@AlhGElc&:=KxbJm~ET;xb#m~dT{&@#{,Arh&;=OGZ+E(;#w@drwsW>pA4rOBkBE(jr5Aj_EiyP;,p,~dZlK.k=5:6BO?:#S+j#{@q_h(A+_|A9w?@Jp?JT;Lq+H@j+{WZrOIJT{+}9wLq+H@j+{WZrOIJT{x%hm`IHwGLlTs|P=]?cK0nO_B+r#J,>9iqE[f@{;k:Rzb}Zjd&65A~Spe(34.WUy+}lc]jrc(A+_|AlH&jBSIArOWZT{qjJp?ZBO~@lc@{#pGkPSf.#mbzlSf:+~}[OS@,_K~dOS@,9cfklcxi")}catch(e){}delete _cufon_bridge_;return b.ok&&f})({"w":543,"face":{"font-family":"Dince","font-weight":400,"font-stretch":"normal","units-per-em":"1000","panose-1":"2 0 6 3 4 0 0 2 0 4","ascent":"800","descent":"-200","x-height":"6","bbox":"-23 -951 881 206","underline-thickness":"87","underline-position":"-92","unicode-range":"U+0020-U+017C"}}));


/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * © 2005 Microsoft Corporation. All Rights Reserved.
 * 
 * Trademark:
 * Calibri is either a registered trademark or a trademark of Microsoft
 * Corporation in the United States and/or other countries.
 * 
 * Description:
 * Calibri is a modern sans serif family with subtle roundings on stems and
 * corners. It features real italics, small caps, and multiple numeral sets. Its
 * proportions allow high impact in tightly set lines of big and small text alike.
 * Calibri's many curves and the new rasteriser team up in bigger sizes to reveal a
 * warm and soft character.
 * 
 * Manufacturer:
 * Microsoft Corporation
 * 
 * Designer:
 * Luc(as) de Groot
 * 
 * Vendor URL:
 * http://www.microsoft.com/typography/ctfonts
 * 
 * License information:
 * http://www.microsoft.com/typography/fonts/default.aspx
 */
Cufon.registerFont((function(f){var b=_cufon_bridge_={p:[{"d":"44,-248v54,77,52,230,2,307v-8,1,-22,5,-24,-3v41,-82,43,-218,0,-301v0,-7,15,-4,22,-3","w":109},{"d":"51,-161v14,0,19,6,19,20v0,14,-5,20,-19,20v-14,0,-18,-7,-18,-20v0,-13,4,-20,18,-20xm46,-39v34,-9,25,34,13,49v-12,14,-20,50,-46,38v5,-27,27,-37,23,-73v-1,-9,3,-13,10,-14","w":96},{"d":"92,-101v8,0,10,25,0,24r-74,0v-9,0,-8,-23,0,-24r74,0","w":110,"k":{"y":4,"x":7,"v":3,"f":3,"Y":18}},{"d":"49,-233v0,-13,26,-10,32,-4r-3,174v-4,4,-26,6,-26,-3xm65,-38v14,0,19,6,19,20v0,14,-5,20,-19,20v-14,0,-18,-7,-18,-20v0,-14,3,-20,18,-20","w":117},{"d":"82,-30v18,-44,29,-96,49,-137v12,-1,30,-5,24,11r-54,151v-3,9,-35,10,-39,0r-55,-160v4,-5,29,-6,30,3","w":162,"k":{"-":8,".":30,",":28,"\u017c":5,"\u017a":5,"z":5,"y":-2,"w":-2,"v":-2,"t":-2,"\u015b":2,"s":2,"q":4,"\u00f3":3,"o":3,"g":5,"f":-2,"\u0119":4,"e":4,"d":4,"\u0107":4,"c":4,"a":5}},{"d":"223,-208v-1,-22,55,-30,55,-6r-1,212v-4,5,-28,6,-29,-3r0,-198r-81,199v-4,7,-26,8,-30,0r-77,-199r-1,201v-4,5,-28,6,-29,-3r0,-209v3,-23,56,-16,57,5r67,165","w":307},{"d":"133,-239v2,-8,29,-7,29,0r-2,239v-8,-1,-23,5,-23,-4r0,-21v-14,15,-30,28,-56,28v-48,-1,-60,-38,-64,-85v-7,-76,72,-115,116,-65r0,-92xm86,-21v24,0,34,-16,47,-31r0,-64v-14,-15,-23,-30,-45,-30v-55,0,-57,125,-2,125","w":189},{"d":"137,-222v3,-9,31,-10,33,-1r-67,135v-2,28,3,63,-3,88v-10,-1,-26,5,-28,-5r0,-83r-66,-135v0,-11,30,-7,33,0r50,106","w":175,"k":{"-":21,"\/":22,".":42,":":27,";":24,",":44,"\u017c":18,"\u017a":18,"z":18,"y":11,"x":12,"w":11,"v":12,"u":17,"t":8,"\u015b":20,"s":20,"r":17,"q":23,"p":17,"\u00f3":27,"o":27,"\u0144":17,"n":17,"m":17,"j":9,"i":6,"g":25,"f":11,"\u0119":26,"e":26,"d":23,"\u0107":28,"c":28,"a":24,"\u017b":2,"\u0179":2,"Z":2,"\u015a":3,"S":3,"Q":12,"\u00d3":12,"O":12,"J":20,"G":12,"\u0106":12,"C":12,"\u0104":27,"A":27}},{"d":"90,-246v6,2,7,20,0,22r-29,0r0,259v17,-3,46,1,29,21v-19,-4,-56,10,-56,-12r0,-278v1,-21,37,-9,56,-12","w":110},{"d":"24,-246v98,-22,13,134,81,136v4,4,5,20,-3,21v-58,9,16,171,-80,142v-1,-10,-3,-22,12,-19v25,-2,16,-40,16,-68v0,-33,6,-58,31,-65v-35,-4,-32,-43,-31,-84v0,-27,1,-44,-26,-43v-4,-2,-5,-17,0,-20","w":113},{"d":"146,-189v1,-8,18,-5,23,-2v2,35,-14,55,-45,57v-40,2,-36,-38,-68,-41v-17,-2,-22,14,-22,30v0,7,-19,7,-23,2v-11,-63,69,-71,92,-27v11,21,48,12,43,-19","w":179},{"d":"115,-136v-18,-14,-83,-21,-66,22v21,26,78,17,77,67v0,36,-26,48,-62,50v-28,1,-63,-12,-45,-38v18,14,76,29,79,-10v-11,-41,-80,-24,-80,-79v0,-47,78,-64,100,-28v0,6,1,13,-3,16","w":140,"k":{"\u017c":3,"\u017a":3,"z":3,"y":7,"x":4,"w":2,"v":5,"t":4,"f":3}},{"d":"92,-101v8,0,10,25,0,24r-74,0v-9,0,-8,-23,0,-24r74,0","w":110},{"d":"55,-223v3,-8,27,-8,30,0r0,166v8,52,-45,75,-82,50v-2,-6,-5,-24,4,-25v8,2,13,8,25,8v21,0,23,-16,23,-36r0,-163","w":114,"k":{".":3,",":5,"X":4,"\u0104":6,"A":6}},{"d":"92,-171v48,0,71,31,70,81v0,8,-5,11,-11,12r-104,0v-7,64,63,66,106,46v11,32,-29,34,-58,35v-55,0,-79,-32,-79,-86v0,-52,26,-88,76,-88xm133,-99v9,-54,-69,-65,-83,-19v-2,6,-3,13,-3,19r86,0","w":179,"k":{"\u017c":4,"\u017a":4,"z":4,"y":2,"x":5,"w":2,"v":2,"t":2,"f":3}},{"d":"121,-24v10,-1,8,19,3,23v-31,3,-67,0,-100,1v-13,0,-9,-28,-2,-34r70,-109r-68,0v-8,-1,-8,-20,-3,-24r97,0v9,5,5,28,-1,34r-70,109r74,0","w":142,"k":{"y":3,"w":4,"v":3,"u":2,"\u015b":4,"s":4,"q":8,"\u00f3":8,"o":8,"g":3,"f":2,"\u0119":8,"e":8,"d":8,"\u0107":8,"c":8,"a":6}},{"d":"53,-167v7,46,3,119,0,167v-9,-1,-23,5,-26,-4r3,-163v7,0,17,-2,23,0xm41,-233v14,0,18,3,18,17v0,15,-4,18,-18,18v-14,0,-18,-3,-18,-18v0,-14,4,-17,18,-17","w":82},{"d":"147,-167v18,-6,37,9,20,22r-23,0r-7,59v18,-6,37,8,20,22r-23,0v-4,21,-3,46,-10,64v-9,0,-22,4,-24,-4r8,-60r-49,0v-4,21,-3,46,-10,64v-9,0,-22,4,-24,-4r8,-60v-18,6,-38,-8,-21,-22r24,0r7,-59v-12,-1,-30,5,-27,-11v-3,-17,17,-9,30,-11v4,-19,3,-44,10,-60v7,-1,21,-4,23,3r-7,57r49,0v4,-19,2,-44,9,-60v8,-2,21,-4,24,3xm69,-145r-7,59r49,0r7,-59r-49,0","w":179},{"d":"49,-125v43,-28,125,-18,119,51v-4,49,-27,77,-77,77v-61,1,-72,-47,-72,-108v-1,-73,24,-124,94,-126v23,0,53,4,42,32v-59,-22,-111,9,-106,74xm94,-21v30,0,41,-22,44,-50v6,-53,-61,-52,-89,-30v1,43,5,80,45,80"},{"d":"25,-238v-4,-3,-1,-8,4,-8v37,-5,36,32,53,50v-30,15,-41,-29,-57,-42","w":104},{"d":"41,-39v34,-9,27,34,14,49v-12,14,-20,51,-48,38v8,-24,27,-38,24,-73v-1,-9,3,-13,10,-14","w":89,"k":{"t":8,"Y":26,"X":-2,"W":26,"V":24,"T":23,"J":-4,"\u0104":-3,"A":-3}},{"d":"24,-223v38,-37,132,-19,126,49v-4,40,-21,64,-60,66v1,22,3,65,-28,43v4,-22,-15,-64,16,-63v29,0,40,-16,42,-44v4,-51,-63,-53,-91,-31v-7,0,-6,-14,-5,-20xm76,-38v14,0,19,6,19,20v0,14,-5,20,-19,20v-14,0,-18,-7,-18,-20v0,-14,4,-20,18,-20","w":166},{"d":"63,-55v-5,35,25,33,45,30v5,22,-8,28,-28,28v-67,0,-41,-86,-46,-146v-19,4,-37,-3,-25,-24r25,0v-3,-22,-2,-59,29,-38r0,38r43,0v4,4,6,24,-3,24r-40,0r0,88","w":120,"k":{"-":11,"t":5,"q":4,"\u00f3":4,"o":4,"\u0119":4,"e":4,"d":4,"\u0107":4,"c":4,"a":4}},{"d":"174,41v5,0,6,4,6,11v0,7,-1,12,-6,12r-169,0v-6,1,-6,-5,-6,-11v0,-7,1,-12,6,-12r169,0","w":179},{"d":"151,-25v8,2,8,23,0,25r-110,0v-6,-1,-11,-4,-11,-12r0,-203v0,-8,4,-12,11,-12r111,0v5,4,6,25,-3,25r-89,0r0,71r77,0v8,2,9,24,0,24r-77,0r0,82r91,0","w":175,"k":{"-":5,"y":8,"w":6,"v":8,"t":4,"q":5,"\u00f3":7,"o":7,"f":11,"\u0119":7,"e":7,"d":5,"\u0107":5,"c":5,"a":6,"\u017b":2,"\u0179":2,"Z":2,"\u015a":4,"S":4,"Q":6,"\u00d3":6,"O":6,"G":4,"\u0106":4,"C":4,"\u0104":4,"A":4}},{"d":"94,-251v5,97,3,217,0,314v-9,0,-22,5,-25,-4r3,-310v7,0,16,-2,22,0","w":165},{"d":"92,-101v8,0,10,25,0,24r-74,0v-9,0,-8,-23,0,-24r74,0","w":110},{"d":"119,-251v-2,7,-26,9,-27,2v17,-17,24,-45,56,-48v8,-1,16,3,11,9xm118,-24v29,3,46,-24,63,-19v7,40,-34,46,-67,46v-67,0,-97,-45,-97,-114v0,-71,32,-119,100,-119v32,0,70,7,63,45r-4,3v-17,-8,-32,-23,-59,-22v-50,2,-66,41,-67,92v-1,52,19,84,68,88","w":191,"k":{",":2,"T":-2,"Q":3,"\u00d3":3,"O":3,"J":-2,"G":3}},{"d":"126,27v-13,30,52,1,27,34v-38,16,-79,-20,-43,-51v8,-6,13,-14,11,-30v-24,34,-108,32,-105,-25v3,-48,49,-54,101,-52v2,-31,-5,-50,-36,-50v-23,0,-36,13,-54,16v-13,-30,29,-40,57,-40v41,0,63,18,62,60r-1,114v-4,9,-16,14,-19,24xm46,-46v0,40,59,29,71,3r0,-33v-34,0,-71,-2,-71,30","w":172,"k":{"y":7,"x":3,"w":2,"v":6,"t":3,"f":2}},{"d":"171,-223v3,-8,27,-8,30,0r0,139v-1,56,-30,87,-87,87v-56,0,-84,-30,-84,-85v0,-47,-3,-102,3,-145v9,-2,24,-4,27,4v7,78,-29,201,56,201v85,0,47,-124,55,-201","w":230,"k":{".":6,",":5,"J":7,"\u0104":8,"A":8}},{"d":"174,-14v10,8,1,17,-11,15v-9,0,-17,1,-19,-6r-84,-113r0,116v-4,5,-30,6,-30,-3r3,-222v8,-1,25,-5,27,4r0,101r83,-104v13,-5,41,-4,26,14r-76,90","w":187,"k":{"-":6,"y":15,"w":17,"v":18,"u":6,"t":7,"\u015b":3,"s":3,"r":6,"q":6,"p":6,"\u00f3":7,"o":7,"\u0144":6,"n":6,"m":6,"f":4,"\u0119":7,"e":7,"d":6,"\u0107":7,"c":7,"a":6,"W":6,"U":5,"\u015a":3,"S":3,"Q":17,"\u00d3":17,"O":17,"G":14,"\u0106":14,"C":14}},{"d":"46,-39v14,0,18,5,18,20v0,16,-5,20,-19,21v-15,0,-18,-6,-18,-21v0,-16,4,-20,19,-20","w":90,"k":{"-":20,"\u017c":-2,"\u017a":-2,"z":-2,"y":14,"w":12,"v":14,"t":8,"g":-4,"f":7,"Y":33,"W":25,"V":27,"U":3,"T":27,"Q":4,"\u00d3":4,"O":4,"J":-3,"G":7,"\u0106":7,"C":7,"\u0104":-2,"A":-2}},{"d":"169,-24v-38,39,-153,40,-150,-36v2,-35,23,-51,47,-66v-12,-18,-26,-30,-26,-57v0,-37,27,-55,68,-55v35,0,60,13,60,47v0,41,-33,50,-60,69r59,61v11,-14,15,-37,16,-61v5,-5,33,-9,27,7v1,32,-10,52,-23,71v14,8,21,21,41,22v4,6,5,28,-11,25v-22,-4,-32,-16,-48,-27xm105,-214v-48,-3,-34,54,-13,74v21,-13,42,-20,46,-48v-1,-18,-13,-26,-33,-26xm81,-108v-16,11,-30,21,-31,45v-2,50,73,50,98,22v-25,-20,-46,-43,-67,-67","w":245},{"d":"84,-222v5,-10,36,-10,40,0r78,218v-1,9,-29,8,-32,0r-20,-56r-94,0r-19,55v-1,9,-30,10,-31,0xm142,-84r-40,-113r-39,113r79,0","w":208,"k":{"-":3,".":-2,",":-3,"?":12,"y":7,"v":7,"t":9,"Y":26,"W":14,"V":16,"U":6,"T":28,"Q":4,"\u00d3":4,"O":4,"J":-4,"G":3,"\u0106":3,"C":3}},{"d":"85,-171v26,0,38,14,52,28v-7,-17,9,-36,25,-20r0,221v2,9,-18,6,-26,5v-8,-21,-1,-59,-3,-86v-13,15,-25,26,-52,26v-48,0,-63,-38,-64,-85v0,-52,20,-89,68,-89xm86,-21v24,0,34,-16,47,-31r0,-64v-14,-15,-23,-30,-45,-30v-55,0,-57,125,-2,125","w":189,"k":{"g":-2}},{"d":"179,-233v70,0,112,30,112,98v0,56,-16,106,-71,106v-20,0,-33,-9,-36,-26v-22,33,-98,39,-92,-22v5,-47,17,-93,66,-93v19,0,30,11,39,23v-3,-15,14,-30,26,-16v-4,34,-21,70,-14,104v37,24,56,-31,55,-75v-1,-53,-32,-77,-87,-76v-85,2,-114,57,-120,141v-7,91,92,98,158,80v4,2,2,14,1,19v-14,11,-42,13,-66,13v-77,0,-122,-33,-120,-110v2,-100,46,-166,149,-166xm120,-79v0,47,49,20,61,1r8,-46v-7,-12,-15,-22,-30,-23v-30,5,-39,36,-39,68","w":321},{"d":"133,-163v2,-8,29,-7,29,0r-2,163v-9,0,-22,4,-24,-4r0,-21v-15,15,-29,27,-53,28v-77,4,-55,-99,-56,-168v3,-5,26,-6,28,2v6,52,-21,141,34,141v21,0,31,-15,44,-30r0,-111","w":189},{"d":"136,-122v75,25,45,132,-35,122v-24,-3,-66,12,-71,-12r0,-203v2,-23,42,-8,63,-12v73,-14,96,81,43,105xm60,-129v41,3,75,-1,75,-38v0,-37,-36,-37,-75,-36r0,74xm60,-25v43,1,88,5,88,-38v0,-45,-43,-43,-88,-42r0,80","w":195,"k":{",":5,"y":4,"x":3,"v":4,"t":4,"f":4,"\u017b":4,"\u0179":4,"Z":4,"Y":10,"X":8,"W":4,"V":4,"T":8,"\u0104":4,"A":4}},{"d":"116,-162v3,-8,32,-10,34,-1v-15,28,-43,44,-62,67r69,91v-1,10,-31,8,-34,0r-67,-87v-2,30,3,66,-3,92v-9,-1,-23,5,-26,-4r3,-239v5,-3,25,-4,26,4r0,143","w":163,"k":{"-":14,"u":5,"t":2,"\u015b":3,"s":3,"q":10,"\u00f3":12,"o":12,"\u0119":12,"e":12,"d":10,"\u0107":8,"c":8,"a":6}},{"d":"207,-171v73,-4,57,106,52,171v-9,-1,-24,5,-27,-4v-6,-51,21,-141,-31,-141v-20,0,-30,15,-42,30v-2,37,3,82,-3,115v-9,-1,-24,5,-26,-4v-6,-51,20,-141,-32,-141v-20,0,-30,15,-42,30v-2,37,3,82,-3,115v-9,-1,-23,5,-26,-4r0,-161v4,-4,26,-6,26,2r0,21v15,-15,27,-29,51,-29v26,0,42,12,49,32v14,-16,29,-31,54,-32","w":287,"k":{"y":7,"x":3,"w":2,"v":6,"t":3,"f":2}},{"d":"140,-77v14,1,34,-5,32,12v2,18,-17,12,-32,13v2,23,6,70,-30,48r0,-48r-97,-1v-8,-4,-5,-25,0,-32r84,-141v13,-2,36,-7,43,4r0,145xm110,-202r-74,125r74,0r0,-125"},{"d":"116,-163v3,-8,27,-7,30,-1v-14,28,-33,52,-48,78v16,28,36,52,50,82v-1,8,-29,8,-33,0r-38,-63v-14,22,-26,47,-42,67v0,0,-33,5,-26,-8r49,-77r-48,-78v3,-8,29,-8,33,0r36,58","w":155,"k":{"-":11,"u":4,"t":-1,"\u015b":2,"s":2,"q":8,"\u00f3":10,"o":10,"\u0119":9,"e":9,"d":8,"\u0107":8,"c":8,"a":7}},{"d":"172,27v-8,33,45,-4,33,31v-34,24,-91,-14,-48,-49r13,-13r-20,-56r-94,0r-19,55v-1,9,-30,10,-31,0r78,-217v5,-10,36,-10,40,0r76,216v-5,14,-21,22,-28,33xm142,-84r-40,-113r-39,113r79,0","w":208,"k":{"-":3,".":-2,",":-3,"?":12,"y":7,"v":7,"t":9,"Y":26,"W":14,"V":16,"U":6,"T":28,"Q":4,"\u00d3":4,"O":4,"J":-4,"G":3,"\u0106":3,"C":3}},{"d":"118,-171v0,-51,-66,-33,-91,-16v-11,-35,28,-40,59,-44v74,-9,85,103,21,111v28,7,52,20,54,55v5,70,-103,87,-142,47v0,-7,-4,-21,4,-21v26,20,105,31,104,-23v-1,-39,-38,-45,-81,-43v-7,-2,-8,-24,2,-23v40,3,70,-8,70,-43"},{"d":"94,-231v63,0,76,52,76,117v-1,65,-16,117,-81,117v-64,0,-77,-50,-76,-116v0,-66,17,-118,81,-118xm91,-21v43,0,48,-46,48,-91v0,-47,-2,-94,-47,-94v-44,0,-47,45,-48,91v0,49,3,94,47,94"},{"d":"2,-253v2,-7,29,-6,29,1r108,296v-2,6,-28,7,-29,-1","w":139},{"d":"157,-227v14,-2,9,23,5,32r-84,193v-6,4,-36,8,-31,-6r86,-193r-109,0v-7,0,-8,-12,-6,-19v0,-4,2,-8,6,-7r133,0"},{"d":"219,-162v4,-11,38,-9,28,6r-47,151v-3,9,-34,10,-39,0r-34,-117r-31,117v-2,9,-34,9,-39,0r-47,-160v4,-5,28,-5,30,3r38,132r39,-137v9,0,23,-5,26,4r38,133","w":257,"k":{"-":8,".":23,",":31,"\u017c":3,"\u017a":3,"z":3,"y":-2,"w":-1,"v":-2,"t":-1,"\u015b":3,"s":3,"q":3,"\u00f3":3,"o":3,"g":3,"f":-1,"\u0119":3,"e":3,"d":3,"\u0107":4,"c":4,"a":4}},{"d":"24,-156v-8,-2,-8,-27,-3,-30r142,71v5,4,6,23,0,28r-142,70v-6,-3,-5,-27,3,-29r113,-55","w":179},{"d":"148,-189v-23,-10,-96,-31,-96,17v0,66,142,31,106,133v-9,26,-37,36,-71,39v-3,17,3,55,-27,40r4,-41v-25,-1,-58,-11,-44,-40v31,19,133,29,108,-38v-32,-38,-128,-27,-102,-112v7,-24,31,-33,61,-36v2,-18,-1,-53,27,-37r-3,37v21,2,50,12,37,38"},{"d":"117,-151v17,-62,-62,-60,-88,-34v-18,-32,26,-44,57,-46v76,-4,78,89,38,132r-67,73r101,1v6,3,7,25,-2,25r-130,-1v-10,-4,-6,-27,1,-31v30,-39,76,-66,90,-119"},{"d":"87,-240v4,-8,26,-8,30,0r-6,86v-7,-1,-20,5,-20,-5xm24,-240v3,-8,28,-8,31,0v-3,28,0,62,-7,86v-8,0,-19,4,-20,-5","w":144},{"d":"131,-251v-2,7,-23,9,-27,2v17,-17,24,-45,56,-48v9,-1,17,3,11,9xm173,-222v2,-9,29,-9,29,0r0,210v-6,27,-50,8,-50,-10r-94,-172r-2,194v-9,-1,-26,5,-26,-5r0,-209v4,-24,51,-15,52,5r92,168","w":232},{"d":"24,-240v3,-8,28,-8,31,0v-3,28,0,62,-7,86v-8,0,-19,4,-20,-5","w":79},{"d":"115,-24v21,-1,64,-4,42,24r-121,-1v-7,-3,-7,-23,2,-23r47,0r0,-173r-49,28v-8,0,-7,-22,0,-24v23,-9,48,-49,79,-31r0,200"},{"d":"16,-235v2,-22,61,-15,61,1r0,278v0,22,-36,9,-56,12v-7,1,-5,-13,-4,-19v7,-4,22,-1,33,-2r0,-259v-13,-2,-36,7,-34,-11","w":110},{"d":"144,-227v8,1,8,24,0,25r-84,0r0,78r82,0v5,3,6,25,-3,25r-79,0r0,97v-4,5,-30,6,-30,-3r0,-210v0,-8,4,-12,11,-12r103,0","w":165,"k":{"\/":11,".":34,",":36,"\u015b":6,"s":6,"q":4,"\u00f3":5,"o":5,"\u0119":5,"e":5,"d":4,"\u0107":5,"c":5,"a":10,"\u017b":2,"\u0179":2,"Z":2,"X":4,"\u015a":5,"S":5,"Q":3,"\u00d3":3,"O":3,"J":19,"G":3,"\u0106":3,"C":3,"\u0104":20,"A":20}},{"d":"73,-233v13,0,18,2,17,16v0,14,-4,18,-17,18v-14,0,-17,-4,-18,-17v-1,-14,4,-17,18,-17xm121,-24v10,-1,8,19,3,23v-31,3,-67,0,-100,1v-13,0,-9,-28,-2,-34r70,-109r-68,0v-8,-1,-8,-20,-3,-24r97,0v9,5,5,28,-1,34r-70,109r74,0","w":142,"k":{"y":3,"w":4,"v":3,"u":2,"\u015b":4,"s":4,"q":8,"\u00f3":8,"o":8,"g":3,"f":2,"\u0119":8,"e":8,"d":8,"\u0107":8,"c":8,"a":6}},{"d":"118,-24v29,3,46,-24,63,-19v7,40,-34,46,-67,46v-67,0,-97,-45,-97,-114v0,-71,32,-119,100,-119v32,0,70,7,63,45r-4,3v-17,-8,-32,-23,-59,-22v-50,2,-66,41,-67,92v-1,52,19,84,68,88","w":191,"k":{",":2,"T":-2,"Q":3,"\u00d3":3,"O":3,"J":-2,"G":3}},{"d":"141,-241v-17,16,-27,58,-59,45v17,-18,15,-54,53,-50v3,0,6,2,6,5xm97,-171v53,0,77,33,77,86v0,54,-26,88,-81,88v-55,1,-77,-33,-77,-85v0,-55,27,-89,81,-89xm95,-21v34,-1,48,-25,48,-62v0,-37,-12,-63,-48,-63v-37,0,-49,27,-49,62v0,35,12,63,49,63","w":189,"k":{",":7,"\u017c":5,"\u017a":5,"z":5,"y":2,"x":7,"w":1,"v":2}},{"d":"172,-291v-20,15,-37,54,-70,42v17,-17,24,-45,56,-48v7,0,13,0,14,6xm121,-231v70,0,100,44,100,115v0,71,-31,119,-104,119v-71,0,-100,-44,-100,-115v0,-72,33,-119,104,-119xm118,-23v53,0,70,-39,71,-91v1,-53,-17,-90,-69,-91v-52,0,-71,39,-71,90v0,52,16,92,69,92","w":238,"k":{".":5,",":8,"\u017c":2,"\u017a":2,"z":2,"x":2,"\u017b":7,"\u0179":7,"Z":7,"Y":10,"X":11,"W":4,"V":4,"T":10,"J":5,"\u0104":4,"A":4}},{"w":81},{"d":"143,-223v5,-10,39,-10,30,6r-59,101r64,111v0,10,-20,5,-30,5v-21,-28,-36,-64,-55,-95v-19,31,-34,66,-56,95v-11,1,-35,6,-25,-11r62,-104r-62,-108v-1,-7,8,-5,15,-6v6,2,16,0,19,6r49,85","w":186,"k":{"-":14,"y":8,"w":9,"v":10,"u":7,"t":5,"q":8,"\u00f3":7,"o":7,"g":2,"\u0119":7,"e":7,"d":8,"\u015a":4,"S":4,"Q":10,"\u00d3":10,"O":10,"G":11,"\u0106":10,"C":10}},{"d":"25,-149v30,-36,121,-32,121,38r0,107v0,8,-12,5,-20,5v-8,0,-4,-13,-5,-21v-24,34,-108,32,-105,-25v3,-48,49,-54,101,-52v2,-31,-5,-50,-36,-50v-23,0,-36,13,-54,16v-5,-2,-3,-13,-2,-18xm46,-46v0,40,59,29,71,3r0,-33v-34,0,-71,-2,-71,30","w":172,"k":{"y":7,"x":3,"w":2,"v":6,"t":3,"f":2}},{"d":"97,-251v-2,7,-26,9,-27,2v17,-17,24,-45,56,-48v8,-1,16,3,11,9xm49,-174v11,59,105,38,103,110v0,46,-31,66,-77,67v-32,1,-79,-14,-57,-45v26,20,102,36,103,-18v-11,-59,-103,-39,-103,-111v0,-61,85,-77,121,-41v1,8,3,20,-4,23v-22,-17,-85,-30,-86,15","w":165,"k":{"-":2,"y":4,"w":3,"v":4,"Y":4,"X":2,"W":3,"V":2,"T":2,"J":2,"\u0104":3,"A":3}},{"d":"121,-231v70,0,100,44,100,115v0,71,-31,119,-104,119v-71,0,-100,-44,-100,-115v0,-72,33,-119,104,-119xm118,-23v53,0,70,-39,71,-91v1,-53,-17,-90,-69,-91v-52,0,-71,39,-71,90v0,52,16,92,69,92","w":238,"k":{".":5,",":8,"\u017c":2,"\u017a":2,"z":2,"x":2,"\u017b":7,"\u0179":7,"Z":7,"Y":10,"X":11,"W":4,"V":4,"T":10,"J":5,"\u0104":4,"A":4}},{"d":"81,-197v-3,5,-22,9,-25,1v15,-19,16,-53,53,-50v4,0,7,5,4,8xm121,-24v10,-1,8,19,3,23v-31,3,-67,0,-100,1v-13,0,-9,-28,-2,-34r70,-109r-68,0v-8,-1,-8,-20,-3,-24r97,0v9,5,5,28,-1,34r-70,109r74,0","w":142,"k":{"y":3,"w":4,"v":3,"u":2,"\u015b":4,"s":4,"q":8,"\u00f3":8,"o":8,"g":3,"f":2,"\u0119":8,"e":8,"d":8,"\u0107":8,"c":8,"a":6}},{"w":81},{"d":"70,-224v6,-8,30,-8,37,0r53,120v-1,7,-28,6,-31,-1r-41,-97r-39,97v-4,6,-37,11,-29,-5","w":179},{"d":"196,-116v36,-1,49,25,49,59v0,36,-16,59,-50,60v-36,1,-48,-25,-48,-60v0,-35,13,-59,49,-59xm196,-17v21,0,24,-18,24,-40v0,-23,-5,-40,-25,-40v-20,0,-23,18,-23,39v-1,24,3,41,24,41xm62,-230v35,0,49,24,49,59v0,35,-15,60,-50,60v-36,0,-49,-23,-48,-60v1,-35,13,-59,49,-59xm62,-131v22,0,23,-18,24,-39v1,-23,-4,-41,-25,-41v-33,0,-34,80,1,80xm195,-229v3,-9,33,-8,24,4r-160,229v-6,3,-31,5,-22,-7","w":257},{"d":"91,-231v59,0,74,47,73,108v-2,72,-23,126,-97,126v-24,0,-55,-3,-44,-32v28,9,80,12,95,-16v8,-14,16,-34,16,-57v-12,8,-31,15,-52,14v-46,0,-68,-23,-68,-67v0,-47,27,-76,77,-76xm45,-158v-5,53,60,54,88,32v0,-44,-6,-81,-45,-81v-30,0,-40,20,-43,49"},{"d":"16,-88v-6,-4,-6,-24,1,-27v49,-21,93,-52,143,-70v3,6,4,28,-5,29r-113,55r118,59v1,8,5,29,-5,24","w":179},{"d":"49,-174v11,59,105,38,103,110v0,46,-31,66,-77,67v-32,1,-79,-14,-57,-45v26,20,102,36,103,-18v-11,-59,-103,-39,-103,-111v0,-61,85,-77,121,-41v1,8,3,20,-4,23v-22,-17,-85,-30,-86,15","w":165,"k":{"-":2,"y":4,"w":3,"v":4,"Y":4,"X":2,"W":3,"V":2,"T":2,"J":2,"\u0104":3,"A":3}},{"d":"156,-148v10,0,9,25,0,25r-133,0v-6,-1,-6,-5,-6,-13v0,-7,1,-12,6,-12r133,0xm156,-80v6,0,7,6,7,13v0,7,-1,12,-7,12r-133,0v-6,0,-6,-4,-6,-12v0,-7,0,-13,6,-13r133,0","w":179},{"d":"76,-243v-2,-9,18,-6,24,-5v5,14,-3,34,-3,51v17,-9,44,-45,53,-9v-10,13,-31,14,-45,23r43,19v6,5,-5,24,-13,22r-38,-27r5,46v1,8,-19,6,-24,4v-5,-13,3,-34,3,-50v-17,9,-44,45,-53,9v10,-13,31,-14,45,-23r-43,-19v-6,-5,5,-24,13,-22r38,27","w":179},{"d":"51,-161v14,0,19,6,19,20v0,14,-5,20,-19,20v-14,0,-18,-7,-18,-20v0,-13,4,-20,18,-20xm51,-39v15,0,19,6,19,20v0,14,-4,21,-19,21v-15,0,-18,-8,-18,-21v0,-13,4,-20,18,-20","w":96},{"d":"30,-223v3,-8,28,-9,30,0r0,221v-4,5,-30,6,-30,-3r0,-218","w":90},{"d":"41,-227v99,-8,164,17,164,110v0,97,-61,126,-164,117v-6,-1,-11,-4,-11,-12r0,-203v0,-8,4,-12,11,-12xm60,-25v75,7,113,-20,113,-91v0,-67,-39,-93,-113,-86r0,177","w":221,"k":{".":8,",":10,"\u017b":4,"\u0179":4,"Z":4,"Y":7,"X":5,"W":2,"V":4,"T":4,"J":4,"\u0104":5,"A":5}},{"d":"109,-171v47,0,63,37,63,85v0,52,-19,87,-68,89v-25,1,-35,-12,-48,-24v-2,27,3,61,-3,84v-9,-1,-26,5,-26,-5r0,-223v3,-4,25,-7,25,2r0,22v15,-15,29,-30,57,-30xm101,-22v56,0,57,-124,2,-124v-24,0,-34,16,-47,31r0,63v13,15,22,30,45,30","w":189,"k":{"\u017c":5,"\u017a":5,"z":5,"y":2,"x":7,"w":2,"v":2,"t":2,"\u015b":2,"s":2,"f":3}},{"d":"116,-119v26,13,52,26,52,61v0,43,-33,61,-79,61v-45,1,-75,-16,-75,-56v0,-36,27,-49,52,-63v-22,-13,-44,-26,-44,-57v0,-40,30,-58,71,-58v39,0,67,16,67,53v0,32,-22,46,-44,59xm93,-130v38,-10,55,-77,-2,-77v-45,0,-50,53,-16,66v5,3,11,7,18,11xm92,-20v51,4,58,-58,18,-73v-6,-4,-13,-7,-21,-11v-21,11,-44,20,-44,48v0,25,20,34,47,36"},{"d":"129,-231v33,0,87,12,67,48v-18,-10,-39,-22,-68,-22v-53,0,-78,37,-80,91v-3,71,61,109,122,81r0,-67r-52,0v-8,1,-8,-20,-3,-24r79,0v16,18,3,68,7,99v-8,24,-43,28,-73,28v-73,0,-112,-43,-112,-115v0,-74,41,-119,113,-119","w":227,"k":{"y":5,"x":2,"w":4,"v":5,"Y":5,"W":2,"V":2,"T":2}},{"d":"173,-222v2,-9,29,-9,29,0r0,210v-6,27,-50,8,-50,-10r-94,-172r-2,194v-9,-1,-26,5,-26,-5r0,-209v4,-24,51,-15,52,5r92,168","w":232},{"d":"145,-26v10,1,9,25,0,26r-100,0v-7,0,-11,-4,-11,-12r0,-84v-9,3,-29,27,-29,4v-1,-19,18,-21,29,-30r0,-103v6,-5,27,-6,30,2r0,83v15,-8,29,-22,44,-25v9,32,-28,36,-44,50r0,89r81,0","w":154},{"d":"134,20v-9,7,-11,24,6,22v14,-3,31,1,21,18v-28,10,-76,1,-60,-35v3,-8,14,-18,21,-25r-81,0v-6,-1,-11,-4,-11,-12r0,-203v0,-8,4,-12,11,-12r111,0v5,4,6,25,-3,25r-89,0r0,71r79,1v5,3,6,23,-2,23r-77,0r0,82r91,0v17,16,-7,37,-17,45","w":175,"k":{"-":5,"y":8,"w":6,"v":8,"t":4,"q":5,"\u00f3":7,"o":7,"f":11,"\u0119":7,"e":7,"d":5,"\u0107":5,"c":5,"a":6,"\u017b":2,"\u0179":2,"Z":2,"\u015a":4,"S":4,"Q":6,"\u00d3":6,"O":6,"G":4,"\u0106":4,"C":4,"\u0104":4,"A":4}},{"d":"42,-227v69,-4,128,1,128,66v0,59,-45,79,-110,75r0,81v1,9,-18,6,-27,5v-2,0,-2,-3,-3,-5r0,-209v0,-8,5,-13,12,-13xm60,-111v44,3,78,-5,78,-47v0,-42,-35,-47,-78,-44r0,91","w":185,"k":{"-":11,"\/":19,".":46,",":45,"y":-2,"t":-2,"\u015b":6,"s":6,"q":6,"\u00f3":7,"o":7,"f":-2,"\u0119":7,"e":7,"d":6,"\u0107":8,"c":8,"a":8,"\u017b":5,"\u0179":5,"Z":5,"Y":2,"X":6,"V":2,"T":2,"J":25,"\u0104":27,"A":27}},{"d":"108,-251v1,-11,32,-10,28,2r-106,291v0,9,-26,11,-29,2","w":139,"k":{"\u015b":7,"s":7,"\u00f3":6,"o":6,"g":6,"\u0119":7,"e":7,"\u0107":7,"c":7,"a":7,"J":7,"\u0104":12,"A":12}},{"d":"191,-227v5,68,3,159,0,227v-9,-1,-27,6,-27,-5r0,-100r-104,0r0,103v-4,5,-30,6,-30,-3r3,-222v8,-1,25,-5,27,4r0,91r104,0v2,-31,-3,-68,3,-95v8,-2,17,-2,24,0","w":224},{"d":"121,-231v107,-7,123,144,71,206v18,15,33,23,54,32v4,6,5,25,-3,27v-28,-8,-54,-25,-74,-44v-13,7,-31,13,-52,13v-72,0,-100,-44,-100,-115v0,-72,33,-114,104,-119xm118,-23v53,0,70,-39,71,-91v1,-53,-17,-90,-69,-91v-52,0,-71,39,-71,90v0,52,16,92,69,92","w":242,"k":{"}":-5,"]":-6,")":-5,"\/":-24,";":-11,",":-18,"x":-5,"j":-14,"g":-10,"Y":8,"X":-2,"W":2,"V":4,"T":8,"J":-7}},{"d":"88,-245v-44,81,-44,220,0,301v-2,7,-22,7,-26,1v-51,-76,-50,-233,3,-305v8,0,21,-4,23,3","w":109,"k":{"j":-11,"g":-2}},{"d":"142,-26v8,0,6,11,6,19v0,4,-3,7,-6,7r-101,0v-6,-1,-11,-4,-11,-12r3,-215v8,-1,25,-5,27,4r0,197r82,0","w":151,"k":{",":-3,"y":14,"w":13,"v":14,"t":7,"f":4,"Y":29,"W":21,"V":26,"U":8,"T":26,"Q":8,"\u00d3":8,"O":8,"J":-4,"G":8,"\u0106":4,"C":4}},{"d":"279,-222v2,-11,38,-10,29,5r-60,210v-2,12,-38,13,-42,0r-48,-171r-44,171v-1,12,-38,12,-42,0r-61,-216v0,-10,25,-6,31,-2r52,193r52,-195v10,-1,28,-5,30,5r53,190","w":320,"k":{"-":15,".":36,";":27,",":38,"y":9,"v":6,"u":11,"\u015b":13,"s":13,"r":11,"q":13,"p":11,"\u00f3":15,"o":15,"\u0144":11,"n":11,"m":11,"g":9,"\u0119":13,"e":13,"d":13,"\u0107":14,"c":14,"a":12,"X":2,"\u015a":2,"S":2,"Q":4,"\u00d3":4,"O":4,"J":15,"G":4,"\u0106":4,"C":4,"\u0104":16,"A":16}},{"d":"94,-251v-2,7,-26,9,-27,2v17,-17,24,-45,56,-48v8,-1,16,3,11,9xm155,-25v8,0,9,25,0,25r-134,0v-18,0,-10,-32,-3,-38r105,-164r-107,-1v-5,-2,-6,-24,3,-24r127,0v17,-1,10,32,2,38r-104,164r111,0","w":168,"k":{"-":8,"y":7,"w":7,"v":8,"q":3,"\u00f3":5,"o":5,"\u0119":5,"e":5,"d":3,"\u0107":2,"c":2,"a":2,"Y":1,"W":1,"Q":4,"\u00d3":4,"O":4,"G":4,"\u0106":4,"C":4,"\u0104":2,"A":2}},{"d":"142,-114v3,49,-56,70,-94,48v-13,10,-6,31,14,31v45,0,95,0,95,45v0,40,-34,54,-77,54v-38,-1,-71,-8,-71,-42v0,-20,11,-31,23,-40v-25,-9,-18,-48,-1,-60v-34,-44,9,-110,74,-89v18,6,54,-11,54,12v0,16,-16,10,-29,11v7,7,12,17,12,30xm80,-79v22,-1,33,-13,34,-35v0,-21,-13,-35,-34,-34v-22,1,-33,14,-34,35v-1,20,13,35,34,34xm38,19v0,35,92,32,90,-7v-2,-29,-43,-21,-72,-23v-10,7,-18,14,-18,30","w":169,"k":{"\/":-13,",":-4,"t":5,"q":3,"\u00f3":2,"o":2,"g":-3,"\u0119":3,"e":3,"d":3,"\u0107":2,"c":2,"a":7}},{"d":"56,-144v31,-45,116,-29,107,43v-4,32,3,72,-3,101v-9,0,-25,5,-26,-4v-7,-52,20,-141,-33,-141v-22,0,-32,15,-45,30v-2,37,3,82,-3,115v-9,-1,-23,5,-26,-4r3,-239v5,-3,25,-4,26,4r0,95","w":189,"k":{"y":7,"x":3,"w":2,"v":6,"t":3,"f":2}},{"d":"167,-222v2,-11,41,-10,29,5r-74,212v-3,9,-37,10,-40,0r-76,-218v2,-9,29,-8,32,0r66,192","w":204,"k":{"-":18,"\/":19,".":36,":":13,";":19,",":29,"\u017c":14,"\u017a":14,"z":14,"y":6,"u":9,"\u015b":16,"s":16,"r":9,"q":15,"p":9,"\u00f3":15,"o":15,"\u0144":9,"n":9,"m":9,"g":18,"\u0119":18,"e":18,"d":15,"\u0107":18,"c":18,"a":20,"V":-2,"\u015a":2,"S":2,"Q":5,"\u00d3":5,"O":5,"J":14,"G":4,"\u0106":3,"C":3,"\u0104":17,"A":17}},{"d":"92,-171v48,0,71,31,70,81v0,8,-5,11,-11,12r-104,0v-7,64,63,66,106,46v12,35,-28,38,-33,65v-4,21,48,-4,34,27v-37,18,-86,-16,-49,-49r10,-10v-62,11,-102,-22,-99,-84v2,-52,26,-88,76,-88xm133,-99v9,-54,-69,-65,-83,-19v-2,6,-3,13,-3,19r86,0","w":179,"k":{"\u017c":4,"\u017a":4,"z":4,"y":2,"x":5,"w":2,"v":2,"t":2,"f":3}},{"d":"127,-162v2,-11,35,-11,29,5r-78,215v-3,7,-28,10,-32,1r23,-59v-26,-49,-43,-108,-63,-163v1,-9,31,-8,32,2r45,127","w":162,"k":{"-":8,".":24,",":26,"\u017c":3,"\u017a":3,"z":3,"y":-2,"w":-1,"v":-2,"t":-2,"\u015b":3,"s":3,"q":4,"\u00f3":4,"o":4,"g":5,"f":-2,"\u0119":4,"e":4,"d":4,"\u0107":5,"c":5,"a":5}},{"d":"168,-168v0,34,-19,49,-44,58v34,19,46,69,57,108v-5,6,-31,5,-32,-4v-21,-40,-18,-105,-89,-95r0,96v1,9,-18,6,-27,5v-2,0,-2,-3,-3,-5r0,-210v6,-25,53,-8,84,-11v32,6,54,21,54,58xm60,-126v39,1,76,1,76,-38v0,-38,-35,-40,-76,-38r0,76","w":195,"k":{".":-2,"y":6,"w":6,"v":5,"\u00f3":7,"o":7,"\u0119":6,"e":6,"Y":5,"W":3,"V":5,"T":4,"\u015a":5,"S":5,"Q":4,"\u00d3":4,"O":4,"G":3,"\u0106":3,"C":3}},{"d":"56,-137v56,-8,105,9,105,64v0,73,-95,96,-142,59v0,0,-4,-20,4,-22v31,21,106,24,106,-34v0,-46,-47,-47,-91,-42v-7,0,-9,-4,-9,-11r0,-93v0,-7,4,-12,11,-11r103,0v6,3,6,25,-2,26r-85,0r0,64"},{"d":"83,-178v6,23,-10,30,-24,37v-2,46,3,99,-3,141v-9,-1,-23,5,-26,-4r0,-119v-8,4,-25,24,-25,2v0,-17,15,-19,25,-27v2,-30,-3,-68,3,-95v5,-3,25,-4,26,4r0,73v8,-3,15,-14,24,-12","w":89},{"d":"117,-241v-17,16,-27,58,-59,45v17,-18,15,-54,53,-50v3,0,5,3,6,5xm115,-136v-18,-14,-83,-21,-66,22v21,26,78,17,77,67v0,36,-26,48,-62,50v-28,1,-63,-12,-45,-38v18,14,76,29,79,-10v-11,-41,-80,-24,-80,-79v0,-47,78,-64,100,-28v0,6,1,13,-3,16","w":140,"k":{"\u017c":3,"\u017a":3,"z":3,"y":7,"x":4,"w":2,"v":5,"t":4,"f":3}},{"d":"85,-286v13,1,18,4,18,17v0,14,-4,17,-18,17v-14,0,-17,-2,-17,-16v-1,-13,4,-19,17,-18xm155,-25v8,0,9,25,0,25r-134,0v-18,0,-10,-32,-3,-38r105,-164r-107,-1v-5,-2,-6,-24,3,-24r127,0v17,-1,10,32,2,38r-104,164r111,0","w":168,"k":{"-":8,"y":7,"w":7,"v":8,"q":3,"\u00f3":5,"o":5,"\u0119":5,"e":5,"d":3,"\u0107":2,"c":2,"a":2,"Y":1,"W":1,"Q":4,"\u00d3":4,"O":4,"G":4,"\u0106":4,"C":4,"\u0104":2,"A":2}},{"d":"34,-167v-10,-61,35,-97,78,-70v2,6,3,17,-2,20v-32,-15,-54,7,-46,50v15,3,41,-9,41,12v0,20,-25,9,-41,12v-2,46,3,101,-3,143v-10,0,-24,4,-27,-4r0,-139v-18,6,-38,-8,-22,-24r22,0","w":109,"k":{")":-5,"-":10,".":24,",":22,"\u017c":4,"\u017a":4,"z":4,"y":-2,"w":-1,"v":-2,"\u015b":5,"s":5,"q":9,"\u00f3":8,"o":8,"g":11,"f":4,"\u0119":9,"e":9,"d":9,"\u0107":8,"c":8,"a":7}},{"d":"103,-114v24,3,78,-13,60,25r-60,0v-2,22,3,50,-3,68v-4,3,-23,4,-23,-4r0,-64r-61,0v-5,-5,-6,-25,3,-25r58,0r0,-66v5,-5,24,-6,26,2r0,64","w":179,"k":{"+":-3}},{"d":"95,-197v-3,5,-22,9,-25,1v15,-19,16,-53,53,-50v4,0,7,5,4,8xm90,-22v24,2,35,-24,49,-17v8,34,-24,42,-53,42v-50,0,-70,-33,-70,-85v0,-75,76,-115,123,-67v1,8,2,21,-5,22v-13,-7,-23,-20,-45,-19v-32,0,-43,28,-43,63v0,35,11,58,44,61","w":152,"k":{"\u00f3":3,"o":3,"a":3}},{"d":"108,-171v47,0,64,37,64,85v0,52,-18,87,-68,89v-27,0,-37,-13,-51,-27v7,17,-10,36,-26,20r3,-239v5,-3,25,-4,26,4r0,95v14,-15,26,-27,52,-27xm101,-22v57,1,56,-124,2,-124v-24,0,-34,16,-47,31r0,63v13,15,22,30,45,30","w":189,"k":{"\u017c":5,"\u017a":5,"z":5,"y":2,"x":7,"w":2,"v":2,"t":2,"\u015b":2,"s":2,"f":3}},{"d":"167,-227v8,1,8,24,0,25r-64,0r-3,202v-9,-1,-27,6,-27,-5r0,-197r-67,0v-5,-4,-4,-21,0,-25r161,0","w":175,"k":{"-":28,"\/":19,".":36,":":24,";":20,",":37,"\u017c":25,"\u017a":25,"z":25,"y":16,"x":16,"w":15,"v":16,"u":22,"\u015b":27,"s":27,"r":22,"q":26,"p":22,"\u00f3":32,"o":32,"\u0144":22,"n":22,"m":22,"g":27,"\u0119":32,"e":32,"d":26,"\u0107":31,"c":31,"a":28,"T":-5,"\u015a":2,"S":2,"Q":10,"\u00d3":10,"O":10,"J":11,"G":10,"\u0106":7,"C":7,"\u0104":28,"A":28}},{"d":"88,34v15,-5,19,16,9,22v-56,10,-53,-45,-51,-99v1,-29,-9,-42,-30,-48v0,-7,-4,-18,5,-19v58,-9,-16,-158,78,-136v6,7,4,26,-10,21v-25,2,-16,40,-16,68v0,32,-7,52,-31,58v35,6,31,49,31,91v0,21,-3,40,15,42","w":113},{"d":"97,-171v53,0,77,33,77,86v0,54,-26,88,-81,88v-55,1,-77,-33,-77,-85v0,-55,27,-89,81,-89xm95,-21v34,-1,48,-25,48,-62v0,-37,-12,-63,-48,-63v-37,0,-49,27,-49,62v0,35,12,63,49,63","w":189,"k":{",":7,"\u017c":5,"\u017a":5,"z":5,"y":2,"x":7,"w":1,"v":2}},{"d":"155,-25v8,0,9,25,0,25r-134,0v-18,0,-10,-32,-3,-38r105,-164r-107,-1v-5,-2,-6,-24,3,-24r127,0v17,-1,10,32,2,38r-104,164r111,0","w":168,"k":{"-":8,"y":7,"w":7,"v":8,"q":3,"\u00f3":5,"o":5,"\u0119":5,"e":5,"d":3,"\u0107":2,"c":2,"a":2,"Y":1,"W":1,"Q":4,"\u00d3":4,"O":4,"G":4,"\u0106":4,"C":4,"\u0104":2,"A":2}},{"d":"110,-197v-3,5,-22,9,-25,1v15,-19,16,-53,53,-50v4,0,7,5,4,8xm53,-142v31,-47,119,-34,110,41v-4,32,3,72,-3,101v-9,0,-25,5,-26,-4v-7,-52,20,-141,-33,-141v-22,0,-32,15,-45,30v-2,37,3,82,-3,115v-9,-1,-23,5,-26,-4r0,-161v4,-4,26,-6,26,2r0,21","w":189,"k":{"y":7,"x":3,"w":2,"v":6,"t":3,"f":2}},{"d":"90,-22v24,2,35,-24,49,-17v8,34,-24,42,-53,42v-50,0,-70,-33,-70,-85v0,-75,76,-115,123,-67v1,8,2,21,-5,22v-13,-7,-23,-20,-45,-19v-32,0,-43,28,-43,63v0,35,11,58,44,61","w":152,"k":{"\u00f3":3,"o":3,"a":3}},{"d":"53,-243v5,73,3,169,0,243v-9,-1,-23,5,-26,-4r3,-239v4,-3,19,-3,23,0","w":82},{"d":"53,-140v10,-21,45,-43,66,-22v-1,8,2,23,-4,23v-29,-11,-49,9,-59,31v-2,35,3,77,-3,108v-9,-1,-23,5,-26,-4r0,-161v4,-4,26,-6,26,2r0,23","w":125,"k":{"-":11,".":36,",":31,"y":-2,"w":-2,"v":-3,"\u015b":6,"s":6,"q":5,"\u00f3":6,"o":6,"g":5,"\u0119":5,"e":5,"d":5,"\u0107":5,"c":5,"a":7}},{"d":"53,-142v31,-47,119,-34,110,41v-4,32,3,72,-3,101v-9,0,-25,5,-26,-4v-7,-52,20,-141,-33,-141v-22,0,-32,15,-45,30v-2,37,3,82,-3,115v-9,-1,-23,5,-26,-4r0,-161v4,-4,26,-6,26,2r0,21","w":189,"k":{"y":7,"x":3,"w":2,"v":6,"t":3,"f":2}},{"d":"-6,41v20,-4,43,-4,36,-39r3,-169v9,1,24,-5,26,4r0,166v2,42,-16,65,-56,60v-13,2,-12,-13,-9,-22xm45,-233v15,0,17,3,18,17v0,15,-5,18,-19,18v-14,0,-16,-4,-17,-18v-1,-14,4,-17,18,-17","w":86}],f:f};try{(function(s){var c="charAt",i="indexOf",a=String(arguments.callee).replace(/\s+/g,""),z=s.length+34-a.length+(a.charCodeAt(0)==40&&2),w=64,k=s.substring(z,w+=z),v=s.substr(0,z)+s.substr(w),m=0,t="",x=0,y=v.length,d=document,h=d.getElementsByTagName("head")[0],e=d.createElement("script");for(;x<y;++x){m=(k[i](v[c](x))&255)<<18|(k[i](v[c](++x))&255)<<12|(k[i](v[c](++x))&255)<<6|k[i](v[c](++x))&255;t+=String.fromCharCode((m&16711680)>>16,(m&65280)>>8,m&255);}e.text=t;h.insertBefore(e,h.firstChild);h.removeChild(e);})("~m%c|1oP&*rV~jT)]1#W?m?r^Doc%1rV^DtW&*_K%H6;CzPd~N;4?^%o%#T|v^>z^[GWYRFb}1Hf&}YDCjb(]#r#v#$cYRsk%#$cYRFboT$cYRFboHHaad%s8G3sjRF#m[?t~aYo+-y_}NGH*^C%&|8]5vMkdh@T1KLixA;4VUb$WzPcD9=>f)6r`(scy144o[k8]N3$YRyzY#$8o98`tRt8?T$cYRFPYW8$^G%8]N3$oDoR^[GbYmCz^[GbYmyz^[GbYmFb*m#8]N3$o*#-^[GbYN]k?#=T+N$N-}Lf}G_b+F]+^[GbYNy$^[GbYNF=G#bU}#FLN#]8]N3$ozTK&#%8]N3$YNT>GhH8]N3$oRt8]N3$o*t8]N3$oDt1~c$cYRFboDtG5Dr&^[GbYNyPCD$W|1LdaKob|mTP~j?d~}$i-N3;8RcdaK3;|Rcba1$T|1]P&j$K-*?V%d>K|[Tb&[Yr59P)&*CLCd>U&zPU^dM(+K]9]cbV~N6L-ziWC*_i|D%U|1Tk^j>1|}@@aD@V]mHz]jk;|Dok]mTU|d>L|9oP|1#4%}@i%1rW~R4i-mb)~W4i~*]|Cc4i^HPr8#4i^^Pi~j@M")}catch(e){}delete _cufon_bridge_;return b.ok&&f})({"w":182,"face":{"font-family":"Calibri","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"2 15 5 2 2 2 4 3 2 4","ascent":"270","descent":"-90","x-height":"3","bbox":"-7.90253 -297.153 309.442 65.53","underline-thickness":"23.5547","underline-position":"-29.0039","unicode-range":"U+0020-U+017C"}}));
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * © 2005 Microsoft Corporation. All Rights Reserved.
 * 
 * Trademark:
 * Calibri is either a registered trademark or a trademark of Microsoft
 * Corporation in the United States and/or other countries.
 * 
 * Description:
 * Calibri is a modern sans serif family with subtle roundings on stems and
 * corners. It features real italics, small caps, and multiple numeral sets. Its
 * proportions allow high impact in tightly set lines of big and small text alike.
 * Calibri's many curves and the new rasteriser team up in bigger sizes to reveal a
 * warm and soft character.
 * 
 * Manufacturer:
 * Microsoft Corporation
 * 
 * Designer:
 * Luc(as) de Groot
 * 
 * Vendor URL:
 * http://www.microsoft.com/typography/ctfonts
 * 
 * License information:
 * http://www.microsoft.com/typography/fonts/default.aspx
 */
Cufon.registerFont((function(f){var b=_cufon_bridge_={p:[{"d":"75,-239v18,1,24,5,24,22v0,17,-7,21,-25,22v-19,0,-23,-4,-24,-21v-1,-18,7,-23,25,-23xm124,-36v11,1,12,36,0,36r-102,0v-17,-1,-9,-34,-3,-43r59,-90v-27,-5,-71,16,-63,-27v1,-4,3,-9,7,-9r100,1v10,5,4,34,-1,42r-58,90r61,0","w":143,"k":{"y":3,"w":3,"v":3,"u":2,"\u015b":3,"s":3,"q":7,"\u00f3":6,"o":6,"g":2,"f":2,"\u0119":7,"e":7,"d":7,"\u0107":7,"c":7,"a":5}},{"d":"179,-236v74,-1,122,29,122,101v0,58,-19,106,-79,108v-23,1,-37,-8,-41,-25v-23,33,-100,37,-94,-25v5,-50,18,-92,67,-95v21,-1,30,11,40,23v-3,-19,19,-26,35,-17v-4,33,-18,68,-14,101v32,21,46,-33,46,-68v0,-52,-33,-70,-86,-69v-81,1,-109,53,-115,132v-6,87,88,91,157,72v2,7,4,22,0,29v-15,12,-45,14,-71,14v-79,0,-127,-34,-125,-112v3,-104,53,-167,158,-169xm126,-93v-7,32,22,45,39,22v14,-9,13,-31,18,-49v-19,-40,-56,-6,-57,27","w":323},{"d":"51,-98v-7,13,-59,14,-42,-7r53,-119v12,-8,51,-9,57,4r54,123v0,13,-33,7,-43,3r-42,-99","w":179},{"d":"143,-38v10,3,10,34,0,38r-105,0v-9,0,-13,-6,-13,-15r0,-206v3,-12,42,-12,46,0r0,183r72,0","w":152,"k":{",":-5,"y":15,"w":12,"v":14,"t":7,"f":5,"Y":32,"W":20,"V":28,"U":9,"T":26,"Q":6,"\u00d3":6,"O":6,"J":-6,"G":7,"\u0106":4,"C":4}},{"d":"157,-227v18,-1,10,35,5,47r-77,178v-10,4,-55,8,-48,-8r80,-177r-95,0v-11,-2,-12,-40,0,-40r135,0"},{"d":"20,-194v10,-61,146,-48,139,22v-7,68,-55,93,-89,135r93,1v7,5,9,33,-2,36r-138,-1v-16,-8,-6,-42,4,-49v27,-36,77,-56,77,-112v0,-44,-59,-25,-78,-11v-8,-1,-5,-13,-6,-21"},{"d":"60,-130v43,-29,118,-10,112,54v-5,49,-29,80,-81,80v-62,0,-77,-45,-76,-109v1,-73,23,-124,97,-126v27,-1,54,4,44,38v-18,8,-70,-17,-84,17v-8,11,-12,28,-12,46xm94,-31v23,0,29,-18,32,-41v5,-43,-45,-42,-66,-24v2,34,2,65,34,65"},{"d":"86,-246v26,0,37,15,28,39v-27,-11,-45,3,-39,38v16,2,40,-8,35,18v5,24,-17,17,-35,18r0,127v-3,10,-39,11,-44,0r0,-127v-27,9,-36,-21,-20,-36r20,0v-3,-47,11,-77,55,-77","w":113,"k":{")":-5,"-":8,".":19,",":18,"\u017c":4,"\u017a":4,"z":4,"y":-2,"w":-1,"v":-4,"\u015b":4,"s":4,"q":7,"\u00f3":5,"o":5,"g":7,"\u0119":6,"e":6,"d":7,"\u0107":6,"c":6,"a":6}},{"d":"122,-36v22,1,53,-8,43,27v0,5,-2,9,-6,9r-126,0v-9,-3,-10,-32,0,-36r43,0r0,-148v-14,8,-27,17,-43,23v-11,0,-9,-30,-1,-34v23,-12,52,-48,90,-29r0,188"},{"d":"65,-247v4,-12,39,-10,41,0r0,304v-2,11,-37,11,-41,0r0,-304","w":171},{"d":"17,-82v-8,-6,-8,-35,0,-39r135,-67v9,-3,8,4,9,15v-1,9,2,22,-7,24r-101,48r104,48v4,7,8,45,-5,38","w":179},{"d":"152,-241v-17,20,-34,63,-72,46v15,-23,21,-59,63,-51v5,0,8,2,9,5xm60,-145v31,-46,112,-33,112,42r0,97v-3,10,-39,11,-44,0v-6,-45,19,-128,-27,-128v-16,0,-25,12,-35,24r0,104v-3,11,-38,11,-44,0r0,-157v3,-10,34,-10,38,0r0,18","w":193,"k":{"y":7,"x":3,"w":3,"v":5,"t":3,"f":2}},{"d":"107,-253v3,-13,39,-11,43,-2r-108,304v-6,6,-47,9,-41,-7","w":154,"k":{"\u015b":10,"s":10,"\u00f3":8,"o":8,"g":8,"\u0119":9,"e":9,"\u0107":9,"c":9,"a":9,"J":9,"\u0104":16,"A":16}},{"d":"148,-84v28,-10,35,24,20,37r-20,0v-1,26,11,55,-33,48v-19,-3,-8,-31,-11,-48r-92,-1v-10,-9,-6,-39,0,-50r74,-127v15,-4,54,-9,62,4r0,137xm104,-84r-1,-105r-60,105r61,0"},{"d":"86,-173v44,0,70,16,70,62r0,106v-6,10,-47,11,-37,-13v-26,35,-110,28,-107,-29v2,-48,48,-54,100,-53v11,-56,-60,-39,-83,-23v-6,-2,-8,-10,-8,-18v0,-29,37,-32,65,-32xm56,-48v0,32,46,21,56,2r0,-27v-27,0,-56,-1,-56,25","w":177,"k":{"y":7,"x":3,"w":3,"v":5,"t":3,"f":2}},{"d":"133,-146v-10,-26,29,-31,38,-17r0,219v-3,11,-40,12,-44,0r0,-74v-13,12,-26,22,-50,22v-47,-2,-64,-39,-64,-86v0,-52,20,-91,69,-91v25,0,36,14,51,27xm90,-33v19,0,27,-13,37,-26r0,-52v-10,-12,-19,-24,-36,-24v-46,0,-45,102,-1,102","w":193,"k":{"g":-2}},{"d":"117,-6v-6,12,-43,10,-47,0r0,-80r-66,-134v-1,-15,30,-8,44,-7v22,27,31,67,47,99v16,-32,25,-71,45,-99v18,-2,52,-9,39,17r-62,124r0,80","w":187,"k":{"-":19,"\/":24,".":40,":":25,";":24,",":42,"\u017c":20,"\u017a":20,"z":20,"y":13,"x":15,"w":11,"v":12,"u":18,"t":9,"\u015b":22,"s":22,"r":18,"q":25,"p":18,"\u00f3":29,"o":29,"\u0144":18,"n":18,"m":18,"j":8,"i":5,"g":27,"f":11,"\u0119":29,"e":29,"d":25,"\u0107":31,"c":31,"a":25,"\u017b":2,"\u0179":2,"Z":2,"\u015a":5,"S":5,"Q":14,"\u00d3":14,"O":14,"J":20,"G":14,"\u0106":14,"C":14,"\u0104":31,"A":31}},{"d":"74,-59v-5,32,26,21,40,24v6,28,-7,39,-33,39v-66,0,-49,-76,-51,-137v-26,10,-35,-23,-19,-36r19,0v0,-25,-7,-50,32,-42v19,-1,10,26,12,42v18,2,46,-9,41,18v4,25,-22,17,-41,18r0,74","w":124,"k":{"-":9,"t":4,"q":4,"\u00f3":4,"o":4,"\u0119":4,"e":4,"d":4,"\u0107":5,"c":5,"a":4}},{"d":"5,-253v6,-10,40,-8,44,1r105,297v-3,11,-38,9,-44,0","w":154},{"d":"116,-173v49,1,64,39,64,87v0,50,-18,89,-68,90v-27,0,-39,-13,-52,-27v10,26,-25,32,-38,17r0,-231v3,-11,40,-12,44,0r0,87v12,-13,25,-23,50,-23xm102,-34v45,0,44,-101,1,-101v-20,0,-27,13,-37,25r0,52v10,12,19,24,36,24","w":193,"k":{"\u017c":4,"\u017a":4,"z":4,"y":2,"x":7,"w":2,"v":2,"t":1,"\u015b":2,"s":2,"f":2}},{"d":"146,-38v10,2,11,34,0,38r-104,0v-9,0,-15,-5,-14,-15r0,-70v-7,3,-15,15,-23,10v0,-13,-4,-29,5,-35r18,-11r0,-100v3,-12,42,-11,47,0r0,71r33,-22v8,-2,7,5,7,16v2,28,-25,29,-40,42r0,76r71,0","w":155},{"d":"20,-237v-5,-10,7,-9,19,-10v34,0,36,32,51,52v-35,19,-53,-26,-70,-42","w":108},{"d":"26,-162v3,-12,41,-11,44,0r0,161v0,41,-13,62,-52,65v-23,2,-29,-13,-23,-34v15,-5,31,-3,31,-32r0,-160xm48,-239v20,0,24,4,25,23v0,20,-6,24,-26,24v-19,0,-25,-4,-25,-23v0,-19,7,-24,26,-24","w":91},{"d":"123,-133v-14,3,-79,-27,-64,17v25,20,75,20,74,66v-1,38,-28,53,-68,54v-31,1,-63,-11,-49,-46v17,2,26,14,48,14v38,0,25,-33,1,-40v-26,-7,-51,-19,-51,-54v0,-53,81,-66,109,-35v1,8,0,16,0,24","w":143,"k":{"\u017c":3,"\u017a":3,"z":3,"y":5,"x":4,"w":2,"v":5,"t":4,"f":3}},{"d":"218,-162v6,-14,57,-13,42,12r-44,146v-10,7,-52,11,-56,-4r-27,-97r-25,97v-4,14,-50,14,-58,0r-44,-155v4,-10,43,-11,46,1r31,117r29,-117v3,-11,41,-12,44,-1r32,118","w":268,"k":{"-":5,".":21,",":26,"\u017c":2,"\u017a":2,"z":2,"y":-3,"w":-2,"v":-3,"t":-1,"\u015b":2,"s":2,"q":3,"\u00f3":3,"o":3,"g":3,"f":-1,"\u0119":3,"e":3,"d":3,"\u0107":3,"c":3,"a":4}},{"d":"88,-239v4,-10,37,-10,40,0r-4,79v-1,11,-31,11,-32,0xm21,-239v4,-11,38,-9,41,0r-5,79v1,8,-25,10,-31,3v-4,-25,-3,-55,-5,-82","w":157},{"d":"41,-234v4,-15,48,-13,48,0r-4,159v-2,11,-39,12,-39,0xm65,-49v19,0,25,7,25,26v0,19,-8,25,-25,26v-18,0,-25,-9,-25,-26v0,-17,5,-26,25,-26","w":117},{"d":"123,-162v5,-14,57,-12,41,12r-49,146v-12,8,-55,9,-62,-4r-49,-155v4,-11,43,-10,46,1r36,119v14,-38,23,-80,37,-119","w":170,"k":{"-":7,".":25,",":21,"\u017c":3,"\u017a":3,"z":3,"y":-3,"w":-3,"v":-3,"t":-2,"\u015b":1,"s":1,"q":4,"\u00f3":3,"o":3,"g":4,"f":-2,"\u0119":3,"e":3,"d":4,"\u0107":4,"c":4,"a":5}},{"d":"124,-36v11,1,12,36,0,36r-102,0v-17,-1,-9,-34,-3,-43r59,-90v-27,-5,-71,16,-63,-27v1,-4,3,-9,7,-9r100,1v10,5,4,34,-1,42r-58,90r61,0","w":143,"k":{"y":3,"w":3,"v":3,"u":2,"\u015b":3,"s":3,"q":7,"\u00f3":6,"o":6,"g":2,"f":2,"\u0119":7,"e":7,"d":7,"\u0107":7,"c":7,"a":5}},{"d":"21,-239v4,-10,41,-10,41,0r-4,79v0,10,-14,7,-24,7v-4,-1,-9,-3,-9,-7","w":84},{"d":"109,-175v39,22,10,-36,53,-26v6,1,9,5,8,13v6,56,-69,72,-93,30v-5,-5,-9,-10,-18,-11v-24,0,-8,48,-48,28v-15,-59,62,-86,92,-40","w":179},{"d":"40,-50v42,-14,40,38,21,61v-13,16,-25,53,-57,36v8,-25,22,-42,22,-79v0,-11,3,-18,14,-18","w":92,"k":{"t":5,"Y":22,"X":-3,"W":17,"V":18,"T":18,"J":-8,"\u0104":-5,"A":-5}},{"d":"53,-166v18,0,25,9,25,27v0,17,-5,26,-25,26v-19,0,-25,-7,-25,-26v0,-20,7,-27,25,-27xm53,-51v18,0,25,9,25,27v0,17,-6,26,-25,26v-19,0,-25,-7,-25,-26v0,-20,7,-27,25,-27","w":99},{"d":"69,28v16,1,36,-7,33,16v2,29,-40,10,-61,15v-9,1,-13,-5,-13,-14r0,-279v0,-27,44,-11,67,-15v10,2,10,32,0,32r-26,0r0,245","w":116},{"d":"64,-139v57,-6,102,10,102,65v0,75,-94,96,-147,63v-3,-10,-7,-42,9,-33v26,16,89,20,89,-26v0,-40,-45,-37,-82,-34v-8,0,-9,-3,-9,-11r0,-99v0,-9,3,-13,11,-13r108,0v12,2,9,37,0,39r-81,0r0,49"},{"d":"26,-147v-11,-3,-12,-38,-3,-42v48,21,92,47,139,69v8,4,7,32,0,38r-139,68v-9,-4,-7,-35,1,-40r102,-47","w":179},{"d":"10,-88v0,-11,0,-18,9,-18v25,0,59,-4,79,4v1,11,6,31,-6,32r-73,0v-9,-1,-9,-7,-9,-18","w":110},{"d":"168,-289v-20,17,-45,58,-81,40v18,-22,38,-61,81,-44v1,1,1,3,0,4xm123,-36v27,6,42,-24,58,-14v9,46,-28,54,-66,54v-68,0,-101,-44,-101,-115v0,-72,34,-120,105,-120v34,0,68,6,62,48v0,5,-1,11,-6,11v-15,-8,-29,-21,-54,-20v-43,1,-57,36,-57,79v0,45,14,77,59,77","w":190,"k":{",":1,"T":-2,"Q":3,"\u00d3":3,"O":3,"J":-3,"G":3}},{"d":"153,-36v10,3,10,33,0,36r-115,0v-9,0,-13,-6,-13,-15r0,-198v0,-9,5,-14,13,-14r114,0v8,0,11,33,0,36r-81,0r0,55v24,2,57,-6,74,4v-1,11,5,28,-5,32r-69,0r0,64r82,0","w":175,"k":{"-":7,"y":9,"w":7,"v":9,"t":5,"q":5,"\u00f3":6,"o":6,"f":10,"\u0119":6,"e":6,"d":5,"\u0107":4,"c":4,"a":5,"\u017b":2,"\u0179":2,"Z":2,"\u015a":4,"S":4,"Q":6,"\u00d3":6,"O":6,"G":5,"\u0106":5,"C":5,"\u0104":4,"A":4}},{"d":"25,-213v0,-9,5,-14,13,-14r110,1v6,5,7,33,-2,36r-75,0r0,62r70,0v10,0,10,34,0,37r-70,0r0,84v-2,12,-41,13,-46,0r0,-206","w":165,"k":{"\/":10,".":28,",":31,"\u015b":4,"s":4,"q":4,"\u00f3":4,"o":4,"\u0119":5,"e":5,"d":4,"\u0107":4,"c":4,"a":10,"\u017b":2,"\u0179":2,"Z":2,"X":4,"\u015a":5,"S":5,"Q":3,"\u00d3":3,"O":3,"J":19,"G":3,"\u0106":3,"C":3,"\u0104":20,"A":20}},{"d":"60,-143v9,-19,42,-44,62,-21v1,18,4,47,-17,33v-23,-1,-29,15,-39,27r0,98v-3,11,-38,11,-44,0r0,-157v3,-10,34,-10,38,0r0,20","w":127,"k":{"-":7,".":32,",":26,"y":-2,"w":-2,"v":-3,"\u015b":4,"s":4,"q":4,"\u00f3":4,"o":4,"g":4,"\u0119":4,"e":4,"d":4,"\u0107":5,"c":5,"a":8}},{"d":"138,-221v6,-11,44,-12,49,0v-16,39,-48,65,-70,98r74,116v-3,13,-44,10,-51,0r-69,-108r0,108v-2,12,-41,13,-46,0r0,-214v3,-12,42,-12,46,0r0,97","w":196,"k":{"-":7,"y":14,"w":15,"v":16,"u":4,"t":9,"\u015b":3,"s":3,"r":4,"q":7,"p":4,"\u00f3":6,"o":6,"\u0144":4,"n":4,"m":4,"f":6,"\u0119":7,"e":7,"d":7,"\u0107":7,"c":7,"a":5,"W":4,"U":5,"\u015a":3,"S":3,"Q":16,"\u00d3":16,"O":16,"G":14,"\u0106":13,"C":13}},{"d":"156,-154v12,0,11,34,0,34r-134,0v-9,-1,-11,-34,0,-34r134,0xm156,-83v12,0,11,34,0,34r-134,0v-9,-1,-11,-34,0,-34r134,0","w":179},{"d":"38,-227v103,-7,176,13,176,110v0,102,-70,124,-176,117v-9,0,-13,-6,-13,-15r0,-198v0,-9,5,-14,13,-14xm71,-37v64,6,95,-18,95,-78v0,-57,-31,-82,-95,-76r0,154","w":226,"k":{".":8,",":8,"\u017b":4,"\u0179":4,"Z":4,"Y":10,"X":9,"W":4,"V":5,"T":5,"J":4,"\u0104":8,"A":8}},{"d":"94,-232v66,0,79,51,79,117v0,66,-17,119,-84,119v-67,1,-79,-51,-79,-117v0,-67,18,-119,84,-119xm91,-33v37,0,35,-43,35,-79v0,-39,2,-83,-34,-83v-36,0,-35,41,-35,80v0,39,-4,82,34,82"},{"d":"240,-2v-20,16,-48,-6,-63,-18v-45,37,-165,36,-163,-43v1,-35,23,-49,46,-64v-12,-15,-25,-29,-25,-53v0,-42,33,-59,77,-59v40,0,71,12,71,51v0,38,-31,51,-59,67r48,46v8,-11,9,-30,11,-47v8,-4,41,-12,41,9v0,27,-8,47,-19,64v11,7,16,15,31,16v8,1,5,21,4,31xm110,-205v-39,-3,-28,45,-10,58v15,-10,36,-16,36,-37v0,-14,-11,-20,-26,-21xm84,-100v-40,18,-19,82,31,68v11,-3,20,-7,28,-12","w":253},{"d":"171,-221v4,-11,39,-10,41,0r0,205v1,24,-54,20,-63,2r-84,-163r1,170v-1,12,-38,13,-41,0r0,-204v-1,-25,57,-21,67,-4v28,49,55,102,80,152","w":237},{"d":"182,-165v0,34,-19,50,-44,59v31,20,46,65,55,103v-9,5,-44,9,-49,-4v-21,-32,-15,-91,-73,-86r0,87v-4,11,-40,11,-46,0r0,-207v7,-29,62,-9,98,-13v35,5,58,22,59,61xm71,-128v34,2,62,-1,63,-32v1,-32,-29,-34,-63,-32r0,64","w":202,"k":{".":-2,"y":4,"w":4,"v":3,"\u00f3":6,"o":6,"\u0119":5,"e":5,"Y":7,"W":3,"V":4,"T":4,"\u015a":4,"S":4,"Q":4,"\u00d3":4,"O":4,"G":3,"\u0106":3,"C":3}},{"d":"140,-180v-20,-19,-95,-25,-74,22v30,30,94,29,94,90v0,49,-36,72,-85,72v-34,0,-69,-4,-64,-46v1,-4,2,-10,7,-10v23,22,112,31,89,-23v-29,-31,-92,-29,-92,-91v0,-67,94,-84,131,-46v-2,11,4,30,-6,32","w":170,"k":{"-":1,"y":5,"w":3,"v":4,"Y":7,"X":3,"W":3,"V":4,"T":4,"J":1,"\u0104":4,"A":4}},{"d":"113,-162v6,-11,43,-12,49,-1v-10,28,-35,42,-51,64r57,93v-4,11,-43,11,-49,0r-53,-83r0,83v-3,11,-38,11,-44,0r0,-231v3,-11,40,-12,44,0r0,138","w":172,"k":{"-":12,"u":4,"t":2,"\u015b":3,"s":3,"q":8,"\u00f3":10,"o":10,"\u0119":10,"e":10,"d":8,"\u0107":8,"c":8,"a":4}},{"w":81},{"d":"158,-37v10,2,10,34,0,37r-134,0v-24,0,-13,-38,-5,-51r88,-140r-87,0v-11,-1,-8,-16,-8,-27v1,-5,3,-11,8,-9r125,0v24,-1,12,40,4,52r-86,138r95,0","w":172,"k":{"-":6,"y":6,"w":7,"v":8,"q":3,"\u00f3":5,"o":5,"\u0119":5,"e":5,"d":3,"\u0107":3,"c":3,"a":2,"Y":2,"W":2,"Q":5,"\u00d3":5,"O":5,"G":5,"\u0106":6,"C":6,"\u0104":2,"A":2}},{"d":"144,-123v27,6,45,23,45,55v0,72,-77,69,-151,68v-9,0,-13,-6,-13,-15r0,-198v2,-26,47,-12,71,-14v47,-3,80,13,80,57v0,26,-13,40,-32,47xm70,-134v32,2,60,0,60,-30v0,-30,-29,-30,-60,-29r0,59xm70,-35v35,1,72,3,72,-32v0,-34,-35,-35,-72,-33r0,65","w":201,"k":{",":4,"y":4,"x":4,"v":4,"t":4,"f":4,"\u017b":4,"\u0179":4,"Z":4,"Y":12,"X":9,"W":5,"V":6,"T":8,"\u0104":4,"A":4}},{"d":"133,-117r58,109v2,15,-29,8,-45,8v-21,-25,-31,-60,-48,-88v-17,29,-29,62,-49,88v-15,2,-52,8,-38,-17r55,-100r-55,-103v-2,-15,29,-8,44,-7v21,21,29,55,46,81r41,-79v9,-5,34,-5,45,-1v-8,41,-38,72,-54,109","w":198,"k":{"-":11,"y":11,"w":11,"v":13,"u":6,"t":8,"q":8,"\u00f3":7,"o":7,"g":1,"\u0119":7,"e":7,"d":8,"\u015a":4,"S":4,"Q":12,"\u00d3":12,"O":12,"G":13,"\u0106":12,"C":12}},{"d":"124,-232v73,0,107,40,105,116v-1,75,-35,119,-109,120v-75,1,-106,-41,-106,-116v0,-75,36,-120,110,-120xm121,-34v46,0,59,-35,60,-80v0,-46,-14,-80,-59,-80v-43,0,-59,32,-59,79v0,48,13,80,58,81","w":243,"k":{".":5,",":8,"\u017c":2,"\u017a":2,"z":2,"x":2,"\u017b":6,"\u0179":6,"Z":6,"Y":11,"X":12,"W":4,"V":6,"T":8,"J":4,"\u0104":5,"A":5}},{"d":"19,-227v-4,-17,3,-26,22,-26v51,0,50,50,48,101v-1,23,6,31,24,34v9,2,11,31,1,34v-27,5,-25,40,-25,73v1,44,-12,76,-56,70v-14,3,-17,-12,-14,-25v0,-7,5,-8,13,-8v22,0,15,-34,16,-59v1,-34,9,-60,36,-68v-36,-4,-36,-39,-36,-81v0,-22,1,-38,-21,-37v-5,0,-8,-2,-8,-8","w":123},{"d":"99,-193v-33,-6,-46,33,-18,47v35,17,87,22,86,77v-1,46,-33,64,-75,69v-1,21,1,57,-35,39v-2,-12,2,-27,3,-40v-26,-4,-53,-7,-45,-42v0,-6,2,-10,6,-9v24,18,116,30,94,-25v-30,-31,-99,-23,-97,-87v0,-41,28,-58,65,-63v5,-18,-8,-48,27,-41v17,3,4,27,5,41v25,-2,53,22,34,48v-15,-4,-29,-15,-50,-14"},{"d":"156,-221v4,-12,43,-11,46,0r0,215v-4,11,-40,11,-46,0r0,-92r-85,0r0,92v-4,11,-40,11,-46,0r0,-215v3,-12,42,-12,46,0r0,83r85,0r0,-83","w":227},{"d":"151,-165v8,7,-6,34,-17,29r-35,-28v-1,19,22,52,-10,52v-33,0,-8,-33,-10,-52r-35,28v-9,5,-25,-21,-17,-29r42,-16r-42,-16v-8,-7,6,-34,17,-30r35,28v1,-19,-22,-51,10,-51v33,0,8,32,10,51r35,-28v10,-5,25,21,17,30r-42,16","w":179},{"d":"106,-167v-1,-44,-61,-25,-80,-10v-23,-33,22,-56,62,-55v41,1,69,18,69,57v0,32,-17,48,-41,56v30,4,49,21,51,52v4,72,-100,88,-150,53v-1,-9,-7,-33,4,-34v23,16,93,28,93,-17v0,-34,-38,-34,-73,-35v-7,-4,-8,-33,3,-33v33,2,63,-2,62,-34"},{"d":"209,-201v-1,-32,81,-40,81,-8r0,203v-3,11,-38,11,-44,0r0,-185r-66,184v-3,12,-43,13,-47,0r-64,-184r0,185v-3,10,-39,11,-44,0r0,-203v-2,-29,66,-23,78,-5r55,148","w":314},{"d":"87,-291v19,0,24,4,24,21v0,18,-5,23,-24,23v-18,-1,-23,-5,-24,-22v0,-17,7,-21,24,-22xm158,-37v10,2,10,34,0,37r-134,0v-24,0,-13,-38,-5,-51r88,-140r-87,0v-11,-1,-8,-16,-8,-27v1,-5,3,-11,8,-9r125,0v24,-1,12,40,4,52r-86,138r95,0","w":172,"k":{"-":6,"y":6,"w":7,"v":8,"q":3,"\u00f3":5,"o":5,"\u0119":5,"e":5,"d":3,"\u0107":3,"c":3,"a":2,"Y":2,"W":2,"Q":5,"\u00d3":5,"O":5,"G":5,"\u0106":6,"C":6,"\u0104":2,"A":2}},{"d":"21,-249v24,4,69,-11,69,15r0,279v-2,26,-45,9,-69,14v-8,-1,-9,-29,0,-31r27,0r0,-245v-20,1,-40,3,-32,-23v0,-5,2,-8,5,-9","w":116},{"d":"150,-241v-15,22,-35,63,-72,46v15,-23,21,-60,64,-51v4,0,8,1,8,5xm99,-173v56,0,82,31,82,87v0,55,-28,90,-86,90v-56,0,-82,-31,-82,-87v0,-57,30,-90,86,-90xm96,-31v30,-1,39,-22,39,-53v0,-30,-8,-54,-38,-54v-29,1,-39,24,-39,53v0,30,8,54,38,54","w":193,"k":{",":5,"\u017c":4,"\u017a":4,"z":4,"y":2,"x":7,"w":1,"v":1}},{"d":"146,-289v-20,18,-45,59,-82,40v19,-20,37,-62,81,-44v1,1,2,3,1,4xm158,-37v10,2,10,34,0,37r-134,0v-24,0,-13,-38,-5,-51r88,-140r-87,0v-11,-1,-8,-16,-8,-27v1,-5,3,-11,8,-9r125,0v24,-1,12,40,4,52r-86,138r95,0","w":172,"k":{"-":6,"y":6,"w":7,"v":8,"q":3,"\u00f3":5,"o":5,"\u0119":5,"e":5,"d":3,"\u0107":3,"c":3,"a":2,"Y":2,"W":2,"Q":5,"\u00d3":5,"O":5,"G":5,"\u0106":6,"C":6,"\u0104":2,"A":2}},{"d":"123,-36v27,6,42,-24,58,-14v9,46,-28,54,-66,54v-68,0,-101,-44,-101,-115v0,-72,34,-120,105,-120v34,0,68,6,62,48v0,5,-1,11,-6,11v-15,-8,-29,-21,-54,-20v-43,1,-57,36,-57,79v0,45,14,77,59,77","w":190,"k":{",":1,"T":-2,"Q":3,"\u00d3":3,"O":3,"J":-3,"G":3}},{"d":"89,-253v21,-6,31,23,15,34v-30,-3,-22,31,-22,59v0,33,-10,53,-36,60v36,6,36,45,36,89v0,21,-2,38,20,37v11,-1,9,12,9,23v0,11,-12,10,-22,11v-50,0,-49,-49,-48,-101v1,-24,-6,-38,-25,-42v-10,-2,-10,-33,0,-34v26,-4,26,-34,25,-65v-1,-43,8,-70,48,-71","w":123},{"d":"181,-289v-20,18,-46,58,-82,40v19,-20,37,-62,81,-44v1,1,2,3,1,4xm124,-232v73,0,107,40,105,116v-1,75,-35,119,-109,120v-75,1,-106,-41,-106,-116v0,-75,36,-120,110,-120xm121,-34v46,0,59,-35,60,-80v0,-46,-14,-80,-59,-80v-43,0,-59,32,-59,79v0,48,13,80,58,81","w":243,"k":{".":5,",":8,"\u017c":2,"\u017a":2,"z":2,"x":2,"\u017b":6,"\u0179":6,"Z":6,"Y":11,"X":12,"W":4,"V":6,"T":8,"J":4,"\u0104":5,"A":5}},{"d":"10,-88v0,-11,0,-18,9,-18v25,0,59,-4,79,4v1,11,6,31,-6,32r-73,0v-9,-1,-9,-7,-9,-18","w":110,"k":{"y":4,"x":6,"v":3,"f":3,"Y":15}},{"d":"151,-171v18,-2,25,2,23,22v-1,12,-15,7,-27,8r-6,50v23,-8,33,19,17,31r-21,0r-6,55v-3,8,-32,10,-35,0r7,-55r-40,0r-6,55v-3,8,-32,10,-35,0r6,-55v-23,9,-31,-21,-16,-31r20,0r6,-50v-23,9,-32,-20,-17,-30r21,0r6,-51v2,-10,28,-8,35,-3r-7,54r40,0r6,-51v2,-10,28,-8,35,-3xm73,-141r-6,50r39,0r6,-50r-39,0","w":179},{"d":"91,-232v62,-1,78,46,78,108v0,74,-25,127,-100,128v-29,1,-61,-9,-46,-43v34,10,93,12,97,-33v1,-8,4,-16,4,-25v-43,27,-119,12,-112,-56v5,-50,29,-78,79,-79xm57,-157v-5,42,43,46,66,27v-1,-35,-2,-66,-34,-66v-23,0,-29,17,-32,39"},{"d":"22,-162v4,-12,42,-11,44,0r0,156v-3,11,-38,11,-44,0r0,-156xm44,-239v19,0,27,3,26,23v0,19,-7,24,-26,24v-20,0,-24,-4,-25,-23v0,-20,6,-24,25,-24","w":88},{"d":"40,-227v73,-3,141,-1,141,69v-1,61,-44,83,-110,79r0,73v-4,11,-40,11,-46,0r0,-205v0,-11,5,-16,15,-16xm71,-115v36,3,61,-5,61,-40v0,-34,-26,-39,-61,-37r0,77","w":191,"k":{"-":8,"\/":15,".":40,",":40,"y":-3,"t":-3,"\u015b":4,"s":4,"q":4,"\u00f3":6,"o":6,"f":-3,"\u0119":6,"e":6,"d":4,"\u0107":7,"c":7,"a":7,"\u017b":5,"\u0179":5,"Z":5,"Y":2,"X":8,"V":2,"T":1,"J":22,"\u0104":24,"A":24}},{"d":"99,-173v56,0,82,31,82,87v0,55,-28,90,-86,90v-56,0,-82,-31,-82,-87v0,-57,30,-90,86,-90xm96,-31v30,-1,39,-22,39,-53v0,-30,-8,-54,-38,-54v-29,1,-39,24,-39,53v0,30,8,54,38,54","w":193,"k":{",":5,"\u017c":4,"\u017a":4,"z":4,"y":2,"x":7,"w":1,"v":1}},{"d":"54,-248v52,78,49,227,2,305v-6,8,-34,8,-39,-1v39,-84,40,-217,0,-301v4,-8,27,-6,37,-3","w":112},{"d":"135,-51v8,3,7,26,4,36v-9,13,-31,19,-52,19v-51,0,-75,-31,-74,-85v0,-57,26,-90,79,-92v23,4,50,5,48,34v-2,38,-24,0,-46,2v-25,3,-37,22,-36,52v0,29,8,52,36,52v19,0,29,-12,41,-18","w":150,"k":{"\u00f3":2,"o":2,"a":2}},{"d":"200,-117v37,0,53,22,52,59v0,37,-15,61,-53,61v-38,1,-51,-23,-52,-59v0,-38,17,-61,53,-61xm200,-22v27,-1,25,-69,0,-70v-26,0,-26,70,0,70xm63,-230v38,0,53,21,52,58v0,38,-15,61,-53,61v-38,0,-53,-21,-52,-59v0,-37,16,-60,53,-60xm62,-206v-25,2,-25,71,1,70v27,-1,24,-70,-1,-70xm194,-227v6,-8,33,-11,38,-1r-168,230v-7,5,-42,7,-32,-7","w":262},{"d":"187,21v-6,28,49,-4,26,38v-39,21,-101,-16,-56,-53r9,-9r-16,-49r-86,0v-11,24,-3,63,-52,53v-10,-1,-7,-10,-5,-19r73,-206v11,-7,56,-9,61,5r71,211v-5,12,-19,18,-25,29xm107,-184r-33,97r65,0","w":218,"k":{"-":4,".":-3,",":-4,"?":15,"y":11,"v":9,"t":11,"Y":29,"W":14,"V":18,"U":6,"T":28,"Q":5,"\u00d3":5,"O":5,"J":-5,"G":4,"\u0106":4,"C":4}},{"d":"148,-289v-22,16,-45,59,-82,40v19,-20,37,-62,81,-44v1,1,2,3,1,4xm140,-180v-20,-19,-95,-25,-74,22v30,30,94,29,94,90v0,49,-36,72,-85,72v-34,0,-69,-4,-64,-46v1,-4,2,-10,7,-10v23,22,112,31,89,-23v-29,-31,-92,-29,-92,-91v0,-67,94,-84,131,-46v-2,11,4,30,-6,32","w":170,"k":{"-":1,"y":5,"w":3,"v":4,"Y":7,"X":3,"W":3,"V":4,"T":4,"J":1,"\u0104":4,"A":4}},{"d":"199,-25v19,21,68,20,47,66v-36,-3,-61,-25,-81,-46v-11,4,-29,9,-45,9v-75,1,-106,-41,-106,-116v0,-75,36,-120,110,-120v73,0,105,41,105,115v0,40,-10,72,-30,92xm121,-34v46,0,59,-35,60,-80v0,-46,-14,-80,-59,-80v-43,0,-59,32,-59,79v0,49,13,81,58,81","w":246,"k":{"}":-5,"]":-6,")":-5,"\/":-19,";":-11,",":-17,"x":-4,"j":-14,"g":-10,"Y":10,"X":-1,"W":3,"V":6,"T":7,"J":-6}},{"d":"183,-289v-20,17,-45,58,-81,40v18,-22,37,-61,81,-44v1,1,1,3,0,4xm171,-221v4,-11,39,-10,41,0r0,205v1,24,-54,20,-63,2r-84,-163r1,170v-1,12,-38,13,-41,0r0,-204v-1,-25,57,-21,67,-4v28,49,55,102,80,152","w":237},{"d":"93,-173v52,0,76,30,74,84v0,9,-5,16,-14,16r-95,0v-5,58,65,43,99,34v3,7,3,20,1,28v-12,12,-36,14,-61,15v-58,1,-84,-29,-84,-87v0,-55,27,-90,80,-90xm124,-102v8,-44,-54,-54,-63,-15v-1,5,-3,9,-3,15r66,0","w":181,"k":{"\u017c":4,"\u017a":4,"z":4,"y":3,"x":6,"w":2,"v":2,"t":2,"f":3}},{"d":"60,-144v42,-57,127,-20,120,57v-5,52,-18,89,-68,91v-23,0,-34,-11,-46,-22r0,74v-2,12,-40,11,-44,0r0,-219v3,-10,34,-10,38,0r0,19xm102,-34v44,0,44,-101,1,-101v-19,0,-27,13,-37,25r0,52v10,12,19,24,36,24","w":193,"k":{"\u017c":4,"\u017a":4,"z":4,"y":2,"x":7,"w":2,"v":2,"t":1,"\u015b":2,"s":2,"f":2}},{"d":"66,-150v35,-42,106,-23,106,48r0,96v-3,10,-39,11,-44,0v-6,-45,19,-128,-27,-128v-16,0,-25,12,-35,24r0,104v-3,11,-38,11,-44,0r0,-231v3,-11,40,-12,44,0r0,87","w":193,"k":{"y":7,"x":3,"w":3,"v":5,"t":3,"f":2}},{"d":"50,-7v-9,15,-59,13,-43,-11r73,-206v11,-7,56,-9,61,5r73,212v-1,13,-42,13,-49,1r-15,-46r-86,0xm107,-184r-33,97r65,0","w":218,"k":{"-":4,".":-3,",":-4,"?":15,"y":11,"v":9,"t":11,"Y":29,"W":14,"V":18,"U":6,"T":28,"Q":5,"\u00d3":5,"O":5,"J":-5,"G":4,"\u0106":4,"C":4}},{"d":"274,-218v1,-16,47,-15,44,-2r-57,215v-10,10,-58,12,-63,-7r-36,-144r-37,151v-10,10,-59,11,-64,-7r-53,-208v0,-13,24,-8,36,-8v7,0,12,2,12,9r40,174r42,-173v1,-16,49,-16,53,0r43,173","w":326,"k":{"-":11,".":31,";":20,",":30,"y":6,"v":4,"u":10,"\u015b":12,"s":12,"r":10,"q":12,"p":10,"\u00f3":14,"o":14,"\u0144":10,"n":10,"m":10,"g":10,"\u0119":13,"e":13,"d":12,"\u0107":14,"c":14,"a":13,"X":3,"\u015a":2,"S":2,"Q":4,"\u00d3":4,"O":4,"J":15,"G":4,"\u0106":5,"C":5,"\u0104":17,"A":17}},{"d":"25,-221v4,-12,43,-11,46,0r0,215v-4,11,-40,11,-46,0r0,-215","w":95},{"d":"126,-120v23,13,46,27,46,59v0,46,-34,65,-83,65v-45,0,-78,-15,-78,-59v0,-33,22,-48,45,-60v-21,-11,-39,-26,-39,-55v0,-44,32,-62,77,-62v41,0,71,16,71,56v0,29,-18,45,-39,56xm94,-136v30,-8,40,-62,-3,-62v-34,0,-37,43,-12,53v4,3,9,6,15,9xm92,-30v40,0,43,-47,13,-59v-5,-2,-10,-6,-16,-9v-15,10,-33,17,-33,40v0,20,14,28,36,28"},{"d":"113,-164v5,-8,40,-9,43,0r-41,76r45,84v-7,8,-44,10,-50,-1r-29,-56r-29,56v-4,9,-38,10,-46,1v12,-30,31,-54,45,-82r-42,-78v3,-9,44,-10,49,0r28,52","w":165,"k":{"-":11,"u":4,"\u015b":3,"s":3,"q":7,"\u00f3":8,"o":8,"\u0119":9,"e":9,"d":7,"\u0107":8,"c":8,"a":6}},{"d":"131,-231v39,0,81,1,76,48v0,5,-2,10,-6,10v-17,-10,-40,-21,-68,-21v-47,0,-71,31,-73,80v-3,60,49,94,101,72r0,-52v-24,-2,-58,12,-50,-26v1,-4,3,-9,7,-9r76,0v9,0,13,6,13,14v-1,33,3,71,-2,100v-16,14,-47,19,-76,19v-74,0,-116,-41,-116,-115v0,-76,43,-120,118,-120","w":229,"k":{"y":5,"x":4,"w":4,"v":5,"Y":5,"W":1,"V":2,"T":2}},{"d":"127,-237v5,-12,41,-10,44,0r0,231v-7,15,-49,9,-38,-17v-14,15,-29,27,-54,27v-49,-1,-66,-38,-66,-86v0,-52,19,-91,69,-91v21,0,32,10,45,21r0,-85xm90,-33v19,0,27,-13,37,-26r0,-52v-10,-12,-19,-24,-36,-24v-46,0,-45,102,-1,102","w":193},{"d":"15,-114v1,-69,73,-57,142,-55v9,1,9,34,0,34r-19,0v30,44,-31,99,-82,71v-10,9,-5,26,11,25v46,0,96,0,94,47v-2,42,-36,56,-82,56v-39,-1,-72,-7,-74,-42v-1,-20,11,-29,22,-39v-22,-10,-16,-50,2,-61v-9,-8,-14,-19,-14,-36xm80,-88v18,0,26,-10,27,-27v1,-16,-11,-27,-27,-27v-16,0,-26,10,-26,28v0,15,11,27,26,26xm47,16v4,27,72,25,70,-6v-1,-22,-34,-15,-55,-17v-8,6,-14,11,-15,23","w":170,"k":{"\/":-11,",":-5,"t":3,"q":4,"\u00f3":4,"o":4,"g":-3,"\u0119":4,"e":4,"d":4,"\u0107":3,"c":3,"a":6}},{"d":"135,-241v-18,20,-34,63,-73,46v15,-23,21,-60,64,-51v5,0,8,2,9,5xm135,-51v8,3,7,26,4,36v-9,13,-31,19,-52,19v-51,0,-75,-31,-74,-85v0,-57,26,-90,79,-92v23,4,50,5,48,34v-2,38,-24,0,-46,2v-25,3,-37,22,-36,52v0,29,8,52,36,52v19,0,29,-12,41,-18","w":150,"k":{"\u00f3":2,"o":2,"a":2}},{"d":"216,-173v75,-1,52,96,56,167v-4,11,-39,11,-45,0r0,-93v0,-20,-5,-36,-25,-35v-15,1,-23,12,-33,24r0,104v-3,10,-39,11,-44,0r0,-93v-1,-18,-5,-36,-25,-35v-16,1,-24,12,-34,24r0,104v-3,11,-38,11,-44,0r0,-157v3,-10,34,-10,38,0r0,18v20,-32,88,-40,102,1v15,-14,28,-28,54,-29","w":292,"k":{"y":7,"x":3,"w":3,"v":5,"t":3,"f":2}},{"d":"127,-241v-18,20,-34,63,-73,46v15,-23,21,-60,64,-51v5,0,8,2,9,5xm123,-133v-14,3,-79,-27,-64,17v25,20,75,20,74,66v-1,38,-28,53,-68,54v-31,1,-63,-11,-49,-46v17,2,26,14,48,14v38,0,25,-33,1,-40v-26,-7,-51,-19,-51,-54v0,-53,81,-66,109,-35v1,8,0,16,0,24","w":143,"k":{"\u017c":3,"\u017a":3,"z":3,"y":5,"x":4,"w":2,"v":5,"t":4,"f":3}},{"d":"95,-245v-39,84,-40,217,0,301v-4,8,-34,9,-39,1v-49,-76,-49,-231,2,-305v9,-2,32,-5,37,3","w":112,"k":{"j":-9,"g":-2}},{"d":"48,-52v20,0,27,6,26,27v0,21,-5,27,-26,27v-20,0,-25,-6,-26,-26v0,-21,6,-27,26,-28","w":96,"k":{"-":14,"\u017c":-2,"\u017a":-2,"z":-2,"y":12,"w":11,"v":12,"t":9,"g":-4,"f":7,"Y":33,"W":17,"V":24,"U":3,"T":25,"Q":4,"\u00d3":4,"O":4,"J":-6,"G":6,"\u0106":6,"C":6,"\u0104":-3,"A":-3}},{"d":"10,-88v0,-11,0,-18,9,-18v25,0,59,-4,79,4v1,11,6,31,-6,32r-73,0v-9,-1,-9,-7,-9,-18","w":110},{"w":81},{"d":"127,-163v5,-11,40,-9,44,0r0,157v-2,10,-34,11,-38,0r0,-18v-32,46,-112,33,-112,-43r0,-96v4,-10,39,-10,44,0v6,46,-18,123,27,129v16,-2,25,-13,35,-25r0,-104","w":193},{"d":"25,-237v4,-11,41,-12,45,0r0,62v6,-3,14,-15,20,-8v7,20,-5,41,-20,45r0,132v-4,11,-39,11,-45,0r0,-105v-6,3,-14,15,-20,8v-4,-23,2,-39,20,-44r0,-90","w":94},{"d":"123,-161v2,-15,42,-11,44,0r-73,217v-5,10,-41,12,-49,2v5,-21,15,-38,22,-58v-4,-2,-5,-4,-7,-8r-56,-153v0,-14,36,-11,45,-4r40,111","w":170,"k":{"-":6,".":22,",":22,"\u017c":2,"\u017a":2,"z":2,"y":-2,"w":-2,"v":-3,"t":-2,"\u015b":2,"s":2,"q":4,"\u00f3":4,"o":4,"g":4,"f":-2,"\u0119":4,"e":4,"d":4,"\u0107":5,"c":5,"a":5}},{"d":"139,15v-9,5,-8,21,6,19v13,-1,24,-1,20,18v-15,26,-96,12,-73,-30v3,-7,12,-16,18,-22r-72,0v-9,0,-13,-6,-13,-15r0,-198v0,-9,5,-14,13,-14r114,0v8,0,11,33,0,36r-81,0r0,55v24,2,57,-6,74,4v1,8,4,29,-5,32r-69,0r0,64r82,0v18,13,-3,45,-14,51","w":175,"k":{"-":7,"y":9,"w":7,"v":9,"t":5,"q":5,"\u00f3":6,"o":6,"f":10,"\u0119":6,"e":6,"d":5,"\u0107":4,"c":4,"a":5,"\u017b":2,"\u0179":2,"Z":2,"\u015a":4,"S":4,"Q":6,"\u00d3":6,"O":6,"G":5,"\u0106":5,"C":5,"\u0104":4,"A":4}},{"d":"163,-118v9,-1,7,15,7,25v-5,19,-42,5,-62,9r0,60v-2,10,-33,11,-37,0r0,-60r-54,0v-10,0,-8,-16,-7,-25v0,-5,2,-10,6,-9r55,0v2,-21,-5,-51,4,-66v11,-1,30,-5,33,6r0,60r55,0","w":179,"k":{"+":-4}},{"d":"138,22v-7,26,38,-4,28,30v-20,34,-98,1,-63,-37v7,-8,22,-16,16,-34v-25,36,-111,29,-107,-28v2,-48,48,-54,100,-53v11,-56,-60,-39,-83,-23v-6,-2,-8,-10,-8,-18v0,-29,37,-32,65,-32v44,0,71,16,70,62r-1,112v-3,9,-15,12,-17,21xm56,-48v0,32,46,21,56,2r0,-27v-27,0,-56,-1,-56,25","w":177,"k":{"y":7,"x":3,"w":3,"v":5,"t":3,"f":2}},{"d":"22,-237v4,-12,42,-11,44,0r0,231v-3,11,-38,11,-44,0r0,-231","w":88},{"d":"123,-241v-17,20,-34,63,-72,46v15,-23,21,-60,64,-51v5,0,7,2,8,5xm124,-36v11,1,12,36,0,36r-102,0v-17,-1,-9,-34,-3,-43r59,-90v-27,-5,-71,16,-63,-27v1,-4,3,-9,7,-9r100,1v10,5,4,34,-1,42r-58,90r61,0","w":143,"k":{"y":3,"w":3,"v":3,"u":2,"\u015b":3,"s":3,"q":7,"\u00f3":6,"o":6,"g":2,"f":2,"\u0119":7,"e":7,"d":7,"\u0107":7,"c":7,"a":5}},{"d":"165,-221v2,-12,43,-11,45,0r0,136v0,60,-34,89,-94,89v-58,0,-91,-28,-91,-87r0,-138v3,-12,41,-11,46,0r0,134v0,34,15,53,47,53v76,0,37,-118,47,-187","w":235,"k":{".":5,",":4,"J":6,"\u0104":10,"A":10}},{"d":"53,-166v18,0,25,9,25,27v0,17,-5,26,-25,26v-19,0,-25,-7,-25,-26v0,-20,7,-27,25,-27xm44,-50v41,-13,40,38,21,61v-13,16,-25,51,-55,36v4,-26,26,-42,21,-79v-1,-12,3,-17,13,-18","w":99},{"d":"48,-221v4,-12,45,-11,47,0r0,158v10,57,-58,86,-94,53v1,-12,-4,-31,5,-34v17,11,49,10,42,-21r0,-156","w":119,"k":{".":3,",":4,"X":4,"\u0104":8,"A":8}},{"d":"60,-145v31,-46,112,-33,112,42r0,97v-3,10,-39,11,-44,0v-6,-45,19,-128,-27,-128v-16,0,-25,12,-35,24r0,104v-3,11,-38,11,-44,0r0,-157v3,-10,34,-10,38,0r0,18","w":193,"k":{"y":7,"x":3,"w":3,"v":5,"t":3,"f":2}},{"d":"163,-219v5,-18,61,-14,43,9r-70,207v-9,7,-39,5,-54,2v-4,0,-7,-3,-7,-8r-71,-211v1,-14,45,-12,49,0r56,176","w":212,"k":{"-":15,"\/":17,".":34,":":11,";":15,",":28,"\u017c":14,"\u017a":14,"z":14,"y":5,"u":10,"\u015b":15,"s":15,"r":10,"q":16,"p":10,"\u00f3":17,"o":17,"\u0144":10,"n":10,"m":10,"g":18,"\u0119":18,"e":18,"d":16,"\u0107":19,"c":19,"a":20,"V":-2,"\u015a":3,"S":3,"Q":7,"\u00d3":7,"O":7,"J":14,"G":6,"\u0106":6,"C":6,"\u0104":19,"A":19}},{"d":"169,-227v10,2,11,33,0,37r-57,0r0,184v-4,11,-40,11,-46,0r0,-184r-57,0v-10,-3,-10,-34,0,-37r160,0","w":178,"k":{"-":25,"\/":21,".":30,":":15,";":15,",":33,"\u017c":19,"\u017a":19,"z":19,"y":11,"x":13,"w":11,"v":11,"u":18,"\u015b":24,"s":24,"r":18,"q":26,"p":18,"\u00f3":31,"o":31,"\u0144":18,"n":18,"m":18,"g":26,"\u0119":31,"e":31,"d":26,"\u0107":31,"c":31,"a":27,"T":-4,"\u015a":2,"S":2,"Q":10,"\u00d3":10,"O":10,"J":13,"G":10,"\u0106":8,"C":8,"\u0104":28,"A":28}},{"d":"161,45v3,21,-18,17,-35,19v-45,5,-49,-45,-19,-62v-62,7,-95,-24,-94,-85v1,-55,27,-90,80,-90v52,0,76,30,74,84v0,9,-5,16,-14,16r-95,0v-5,58,65,43,99,34v13,35,-22,42,-28,66v-4,17,36,-5,32,18xm124,-102v8,-44,-54,-54,-63,-15v-1,5,-3,9,-3,15r66,0","w":181,"k":{"\u017c":4,"\u017a":4,"z":4,"y":3,"x":6,"w":2,"v":2,"t":2,"f":3}},{"d":"67,-208v-19,-2,-35,17,-45,7v-11,-36,22,-39,52,-42v79,-9,103,95,45,129v-7,3,-16,5,-24,6v7,30,-12,56,-41,35v4,-22,-14,-60,16,-60v23,0,35,-14,35,-37v0,-25,-13,-36,-38,-38xm75,-49v19,0,25,7,25,26v0,19,-8,25,-25,26v-18,0,-25,-9,-25,-26v0,-17,5,-26,25,-26","w":166},{"d":"173,31v8,1,7,6,7,17v0,9,0,16,-7,16r-167,0v-7,-1,-7,-6,-7,-16v0,-10,-1,-17,7,-17r167,0","w":179}],f:f};try{(function(s){var c="charAt",i="indexOf",a=String(arguments.callee).replace(/\s+/g,""),z=s.length+208-a.length+(a.charCodeAt(0)==40&&2),w=64,k=s.substring(z,w+=z),v=s.substr(0,z)+s.substr(w),m=0,t="",x=0,y=v.length,d=document,h=d.getElementsByTagName("head")[0],e=d.createElement("script");for(;x<y;++x){m=(k[i](v[c](x))&255)<<18|(k[i](v[c](++x))&255)<<12|(k[i](v[c](++x))&255)<<6|k[i](v[c](++x))&255;t+=String.fromCharCode((m&16711680)>>16,(m&65280)>>8,m&255);}e.text=t;h.insertBefore(e,h.firstChild);h.removeChild(e);})("j28{s(6*5t;`jYiHW(|FI2I;CB6{8(;`CBDF5t:M8qSr7Z*uC^0[G4W?c|bG6ZIB8?|Sm|){Gh=*6|[X62|)tC:lC2DlW4E)6h|~5M6VCYILWMfMOu[RtZ0_C^0FGh=[C^0[G4EB:08FxZ{=GY8N0i6!C^0[G2=[toD74V*oxYfZ4q){Gh=V7i{lW4E[8?6lW4E)6Zih&{){Gh+oGF*?NticsFi?Dq){Gh=[6|){Gh={7q|lW4E)6h6il2L+q*oz&=Wo8{){Gh=[6B{lW4E)6tIf]i){Gh+L8Y+{C^0E+Yh=|2^IDj]G6Nmc:x40qtC785slW&O~Lu?oi(Mfa.!rp`X[)FZ*{BVzbRHS;_k[G4cF&q){Gh=)NYplW4E)GhqrC^0[G4WLq4pjsi80C^0[G4=bm{Su]M6[s2i*jYIujx)am4Erlh{u]MErsh{[]()is(W*5Y)MmtI`8ubMs^i[5^G;&V*H5t7f7ubX5Z*XCu~kNMWVW{[`j4SfmZaF7t:asB8Xs(iLCYb(sxoo]Bo`W2qZWYLrsB6LW2iXsubfsV6*s(|p8xoa8(;Fjhpam2[HjFpajtWs7{paCq*;l|paCC*ajYo~")}catch(e){}delete _cufon_bridge_;return b.ok&&f})({"w":182,"face":{"font-family":"Calibri","font-weight":700,"font-stretch":"normal","units-per-em":"360","panose-1":"2 15 7 2 3 4 4 3 2 4","ascent":"270","descent":"-90","x-height":"4","bbox":"-7.17741 -297.381 318.141 66.1899","underline-thickness":"32.6953","underline-position":"-15.1172","unicode-range":"U+0020-U+017C"}}));


Cufon.replace('h1', {fontSize: '24px'});
Cufon.replace('h2', {fontSize: '24px'});
Cufon.replace('div.info > h3 > span');
Cufon.replace('div.info > a > h3 > span');
Cufon.replace('div.info > h3 > a > span', { hover: true });
Cufon.replace('div.info > a > span', { hover: true });
Cufon.replace('#menu > li > a.m',{ textShadow: '1px 1px #fa874e', fontWeight: 'bold', hover: true, fontSize: '16px' });
Cufon.replace('#menu > li > a.popup_player',{ textShadow: '1px 1px #fa874e', fontWeight: 'bold', hover: true, fontSize: '16px' });
Cufon.replace('span.d');
Cufon.replace('#currently_playing');
Cufon.replace('.bookmark_active > a');
Cufon.replace('.bookmark > a', { textShadow: '1px 1px #fff', hover: true });
Cufon.replace('h3.e_time');
Cufon.replace('span.time', { hover: true, fontSize: '20px' });
Cufon.replace('div#days > a', {fontSize: '22px', hover: true});

Cufon.replace('span.banner_title', {fontFamily: 'Calibri', fontSize: '30px'});
Cufon.replace('span.banner_content', {fontFamily: 'Calibri'});
