var LANGUAGE_CODE = "en";
var LANGUAGE_BIDI = false;

/* gettext library */

var catalog = new Array();

function pluralidx(count) { return (count == 1) ? 0 : 1; }


function gettext(msgid) {
  var value = catalog[msgid];
  if (typeof(value) == 'undefined') {
    return msgid;
  } else {
    return (typeof(value) == 'string') ? value : value[0];
  }
}

function ngettext(singular, plural, count) {
  value = catalog[singular];
  if (typeof(value) == 'undefined') {
    return (count == 1) ? singular : plural;
  } else {
    return value[pluralidx(count)];
  }
}

function gettext_noop(msgid) { return msgid; }

function interpolate(fmt, obj, named) {
  if (named) {
    return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])});
  } else {
    return fmt.replace(/%s/g, function(match){return String(obj.shift())});
  }
}

window.hgettext = function(text) { return gettext(text); };
window.hngettext = function(singular, plural, count) { return ngettext(singular, plural, count); };

window.site_data = {};window.site_data.settings = {"MEDIA_URL": "/media/56/"};
/*!
 * jQuery JavaScript Library v1.4.2
 * http://jquery.com/
 *
 * Copyright 2010, John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 * Copyright 2010, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 *
 * Date: Sat Feb 13 22:33:48 2010 -0500
 */
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
(function($) {
  /* Fix fadeIn and fadeOut cleartype bug in IE. */
  $.fn.originalFadeIn = $.fn.fadeIn
  $.fn.fadeIn = function(speed, callback) {
    $(this).originalFadeIn(speed, function() {
      if(jQuery.browser.msie)
        $(this).get(0).style.removeAttribute('filter');
      if(callback != undefined)
        callback();
    });
  };
  $.fn.originalFadeOut = $.fn.fadeOut
  $.fn.fadeOut = function(speed, callback) {
    $(this).originalFadeOut(speed, function() {
      if(jQuery.browser.msie)
        $(this).get(0).style.removeAttribute('filter');
      if(callback != undefined)
        callback();
    });
  };

  /* Set better default values that work the same with every browser. */
  $.ajaxSetup({cache: false, timeout: 10000});

  /* If a POST request doesn't contain any data we have to add at least an
   * empty string, so content-length gets set. Some servers refuse to accept
   * the request, otherwise. */
  $(document).ajaxSend(function(evt, request, options) {
    if (options['type'] == 'POST' && options['data'] == null)
      options['data'] = '';
  });
})(jQuery);

/*!
 * Ajax Queue Plugin
 * 
 * Homepage: http://jquery.com/plugins/project/ajaxqueue
 * Documentation: http://docs.jquery.com/AjaxQueue
 */

/**

<script>
$(function(){
	jQuery.ajaxQueue({
		url: "test.php",
		success: function(html){ jQuery("ul").append(html); }
	});
	jQuery.ajaxQueue({
		url: "test.php",
		success: function(html){ jQuery("ul").append(html); }
	});
	jQuery.ajaxSync({
		url: "test.php",
		success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
	});
	jQuery.ajaxSync({
		url: "test.php",
		success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
	});
});
</script>
<ul style="position: absolute; top: 5px; right: 5px;"></ul>

 */
/*
 * Queued Ajax requests.
 * A new Ajax request won't be started until the previous queued 
 * request has finished.
 */
jQuery.ajaxQueue = function(o){
	var _old = o.complete;
	o.complete = function(){
		if ( _old ) _old.apply( this, arguments );
		jQuery.dequeue( jQuery.ajaxQueue, "ajax" );
	};

	jQuery([ jQuery.ajaxQueue ]).queue("ajax", function(){
		jQuery.ajax( o );
	});
};

/*
 * Synced Ajax requests.
 * The Ajax request will happen as soon as you call this method, but
 * the callbacks (success/error/complete) won't fire until all previous
 * synced requests have been completed.
 */
jQuery.ajaxSync = function(o){
	var fn = jQuery.ajaxSync.fn, data = jQuery.ajaxSync.data, pos = fn.length;
	
	fn[ pos ] = {
		error: o.error,
		success: o.success,
		complete: o.complete,
		done: false
	};

	data[ pos ] = {
		error: [],
		success: [],
		complete: []
	};

	o.error = function(){ data[ pos ].error = arguments; };
	o.success = function(){ data[ pos ].success = arguments; };
	o.complete = function(){
		data[ pos ].complete = arguments;
		fn[ pos ].done = true;

		if ( pos == 0 || !fn[ pos-1 ] )
			for ( var i = pos; i < fn.length && fn[i].done; i++ ) {
				if ( fn[i].error ) fn[i].error.apply( jQuery, data[i].error );
				if ( fn[i].success ) fn[i].success.apply( jQuery, data[i].success );
				if ( fn[i].complete ) fn[i].complete.apply( jQuery, data[i].complete );

				fn[i] = null;
				data[i] = null;
			}
	};

	return jQuery.ajax(o);
};

jQuery.ajaxSync.fn = [];
jQuery.ajaxSync.data = [];


/*!
 * jquery.bgiframe
 * Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate$
 * $Rev$
 *
 * Version 2.1.1
 */

(function($){

/**
 * The bgiframe is chainable and applies the iframe hack to get 
 * around zIndex issues in IE6. It will only apply itself in IE6 
 * and adds a class to the iframe called 'bgiframe'. The iframe
 * is appeneded as the first child of the matched element(s) 
 * with a tabIndex and zIndex of -1.
 * 
 * By default the plugin will take borders, sized with pixel units,
 * into account. If a different unit is used for the border's width,
 * then you will need to use the top and left settings as explained below.
 *
 * NOTICE: This plugin has been reported to cause perfromance problems
 * when used on elements that change properties (like width, height and
 * opacity) a lot in IE6. Most of these problems have been caused by 
 * the expressions used to calculate the elements width, height and 
 * borders. Some have reported it is due to the opacity filter. All 
 * these settings can be changed if needed as explained below.
 *
 * @example $('div').bgiframe();
 * @before <div><p>Paragraph</p></div>
 * @result <div><iframe class="bgiframe".../><p>Paragraph</p></div>
 *
 * @param Map settings Optional settings to configure the iframe.
 * @option String|Number top The iframe must be offset to the top
 * 		by the width of the top border. This should be a negative 
 *      number representing the border-top-width. If a number is 
 * 		is used here, pixels will be assumed. Otherwise, be sure
 *		to specify a unit. An expression could also be used. 
 * 		By default the value is "auto" which will use an expression 
 * 		to get the border-top-width if it is in pixels.
 * @option String|Number left The iframe must be offset to the left
 * 		by the width of the left border. This should be a negative 
 *      number representing the border-left-width. If a number is 
 * 		is used here, pixels will be assumed. Otherwise, be sure
 *		to specify a unit. An expression could also be used. 
 * 		By default the value is "auto" which will use an expression 
 * 		to get the border-left-width if it is in pixels.
 * @option String|Number width This is the width of the iframe. If
 *		a number is used here, pixels will be assume. Otherwise, be sure
 * 		to specify a unit. An experssion could also be used.
 *		By default the value is "auto" which will use an experssion
 * 		to get the offsetWidth.
 * @option String|Number height This is the height of the iframe. If
 *		a number is used here, pixels will be assume. Otherwise, be sure
 * 		to specify a unit. An experssion could also be used.
 *		By default the value is "auto" which will use an experssion
 * 		to get the offsetHeight.
 * @option Boolean opacity This is a boolean representing whether or not
 * 		to use opacity. If set to true, the opacity of 0 is applied. If
 *		set to false, the opacity filter is not applied. Default: true.
 * @option String src This setting is provided so that one could change 
 *		the src of the iframe to whatever they need.
 *		Default: "javascript:false;"
 *
 * @name bgiframe
 * @type jQuery
 * @cat Plugins/bgiframe
 * @author Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 */
$.fn.bgIframe = $.fn.bgiframe = function(s) {
	// This is only for IE6
	if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
		s = $.extend({
			top     : 'auto', // auto == .currentStyle.borderTopWidth
			left    : 'auto', // auto == .currentStyle.borderLeftWidth
			width   : 'auto', // auto == offsetWidth
			height  : 'auto', // auto == offsetHeight
			opacity : true,
			src     : 'javascript:false;'
		}, s || {});
		var prop = function(n){return n&&n.constructor==Number?n+'px':n;},
		    html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+
		               'style="display:block;position:absolute;z-index:-1;'+
			               (s.opacity !== false?'filter:Alpha(Opacity=\'0\');':'')+
					       'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+
					       'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+
					       'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+
					       'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+
					'"/>';
		return this.each(function() {
			if ( $('> iframe.bgiframe', this).length == 0 )
				this.insertBefore( document.createElement(html), this.firstChild );
		});
	}
	return this;
};

})(jQuery);

/*! Copyright (c) 2008 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Version: 1.0.3
 * Requires jQuery 1.1.3+
 * Docs: http://docs.jquery.com/Plugins/livequery
 */

(function($) {
	
$.extend($.fn, {
	livequery: function(type, fn, fn2) {
		var self = this, q;
		
		// Handle different call patterns
		if ($.isFunction(type))
			fn2 = fn, fn = type, type = undefined;
			
		// See if Live Query already exists
		$.each( $.livequery.queries, function(i, query) {
			if ( self.selector == query.selector && self.context == query.context &&
				type == query.type && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid) )
					// Found the query, exit the each loop
					return (q = query) && false;
		});
		
		// Create new Live Query if it wasn't found
		q = q || new $.livequery(this.selector, this.context, type, fn, fn2);
		
		// Make sure it is running
		q.stopped = false;
		
		// Run it immediately for the first time
		q.run();
		
		// Contnue the chain
		return this;
	},
	
	expire: function(type, fn, fn2) {
		var self = this;
		
		// Handle different call patterns
		if ($.isFunction(type))
			fn2 = fn, fn = type, type = undefined;
			
		// Find the Live Query based on arguments and stop it
		$.each( $.livequery.queries, function(i, query) {
			if ( self.selector == query.selector && self.context == query.context && 
				(!type || type == query.type) && (!fn || fn.$lqguid == query.fn.$lqguid) && (!fn2 || fn2.$lqguid == query.fn2.$lqguid) && !this.stopped )
					$.livequery.stop(query.id);
		});
		
		// Continue the chain
		return this;
	}
});

$.livequery = function(selector, context, type, fn, fn2) {
	this.selector = selector;
	this.context  = context || document;
	this.type     = type;
	this.fn       = fn;
	this.fn2      = fn2;
	this.elements = [];
	this.stopped  = false;
	
	// The id is the index of the Live Query in $.livequery.queries
	this.id = $.livequery.queries.push(this)-1;
	
	// Mark the functions for matching later on
	fn.$lqguid = fn.$lqguid || $.livequery.guid++;
	if (fn2) fn2.$lqguid = fn2.$lqguid || $.livequery.guid++;
	
	// Return the Live Query
	return this;
};

$.livequery.prototype = {
	stop: function() {
		var query = this;
		
		if ( this.type )
			// Unbind all bound events
			this.elements.unbind(this.type, this.fn);
		else if (this.fn2)
			// Call the second function for all matched elements
			this.elements.each(function(i, el) {
				query.fn2.apply(el);
			});
			
		// Clear out matched elements
		this.elements = [];
		
		// Stop the Live Query from running until restarted
		this.stopped = true;
	},
	
	run: function() {
		// Short-circuit if stopped
		if ( this.stopped ) return;
		var query = this;
		
		var oEls = this.elements,
			els  = $(this.selector, this.context),
			nEls = els.not(oEls);
		
		// Set elements to the latest set of matched elements
		this.elements = els;
		
		if (this.type) {
			// Bind events to newly matched elements
			nEls.bind(this.type, this.fn);
			
			// Unbind events to elements no longer matched
			if (oEls.length > 0)
				$.each(oEls, function(i, el) {
					if ( $.inArray(el, els) < 0 )
						$.event.remove(el, query.type, query.fn);
				});
		}
		else {
			// Call the first function for newly matched elements
			nEls.each(function() {
				query.fn.apply(this);
			});
			
			// Call the second function for elements no longer matched
			if ( this.fn2 && oEls.length > 0 )
				$.each(oEls, function(i, el) {
					if ( $.inArray(el, els) < 0 )
						query.fn2.apply(el);
				});
		}
	}
};

$.extend($.livequery, {
	guid: 0,
	queries: [],
	queue: [],
	running: false,
	timeout: null,
	
	checkQueue: function() {
		if ( $.livequery.running && $.livequery.queue.length ) {
			var length = $.livequery.queue.length;
			// Run each Live Query currently in the queue
			while ( length-- )
				$.livequery.queries[ $.livequery.queue.shift() ].run();
		}
	},
	
	pause: function() {
		// Don't run anymore Live Queries until restarted
		$.livequery.running = false;
	},
	
	play: function() {
		// Restart Live Queries
		$.livequery.running = true;
		// Request a run of the Live Queries
		$.livequery.run();
	},
	
	registerPlugin: function() {
		$.each( arguments, function(i,n) {
			// Short-circuit if the method doesn't exist
			if (!$.fn[n]) return;
			
			// Save a reference to the original method
			var old = $.fn[n];
			
			// Create a new method
			$.fn[n] = function() {
				// Call the original method
				var r = old.apply(this, arguments);
				
				// Request a run of the Live Queries
				// PATCH: changed code in order to optimize addClass, removeClass and toggleClass
				if (n == 'addClass' || n == 'removeClass' || n == 'toogleClass')
				  $.livequery.run(undefined, arguments[0]);
				else
				  $.livequery.run();
				
				// Return the original methods result
				return r;
			};
		});
	},
	
	run: function(id, className) {
	  // PATCH
	  var pattern = null;
	  if (className) {
	    className = className.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '');
  	  if (className)
  	    pattern = RegExp('\\.' + className.split(' ').join('\\b\|\\.') + '\\b');
	  }
	  
		if (id != undefined) {
			// Put the particular Live Query in the queue if it doesn't already exist
			if ( $.inArray(id, $.livequery.queue) < 0 && (!pattern || pattern.test(val.selector)) )
				$.livequery.queue.push( id );
		}
		else
			// Put each Live Query in the queue if it doesn't already exist
			$.each( $.livequery.queries, function(id, val) {
				if ( $.inArray(id, $.livequery.queue) < 0 && (!pattern || pattern.test(val.selector)) )
					$.livequery.queue.push( id );
			});
		
		// Clear timeout if it already exists
		if ($.livequery.timeout) clearTimeout($.livequery.timeout);
		// Create a timeout to check the queue and actually run the Live Queries
		$.livequery.timeout = setTimeout($.livequery.checkQueue, 20);
	},
	
	stop: function(id) {
		if (id != undefined)
			// Stop are particular Live Query
			$.livequery.queries[ id ].stop();
		else
			// Stop all Live Queries
			$.each( $.livequery.queries, function(id) {
				$.livequery.queries[ id ].stop();
			});
	}
});

// Register core DOM manipulation methods
$.livequery.registerPlugin('append', 'prepend', 'after', 'before', 'wrap', 'attr', 'removeAttr', 'addClass', 'removeClass', 'toggleClass', 'empty', 'remove', 'show', 'hide');

// Run Live Queries when the Document is ready
$(function() { $.livequery.play(); });


// Save a reference to the original init method
var init = $.prototype.init;

// Create a new init method that exposes two new properties: selector and context
$.prototype.init = function(a,c) {
	// Call the original init and save the result
	var r = init.apply(this, arguments);
	
	// Copy over properties if they exist already
	if (a && a.selector)
		r.context = a.context, r.selector = a.selector;
		
	// Set properties
	if ( typeof a == 'string' )
		r.context = c || document, r.selector = a;
	
	// Return the result
	return r;
};

// Give the init function the jQuery prototype for later instantiation (needed after Rev 4091)
$.prototype.init.prototype = $.prototype;
	
})(jQuery);
/*
 * jQuery Form Plugin
 * version: 2.24 (10-MAR-2009)
 * @requires jQuery v1.2.2 or later
 *
 * Examples and documentation at: http://malsup.com/jquery/form/
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
;(function($) {

/*
    Usage Note:
    -----------
    Do not use both ajaxSubmit and ajaxForm on the same form.  These
    functions are intended to be exclusive.  Use ajaxSubmit if you want
    to bind your own submit handler to the form.  For example,

    $(document).ready(function() {
        $('#myForm').bind('submit', function() {
            $(this).ajaxSubmit({
                target: '#output'
            });
            return false; // <-- important!
        });
    });

    Use ajaxForm when you want the plugin to manage all the event binding
    for you.  For example,

    $(document).ready(function() {
        $('#myForm').ajaxForm({
            target: '#output'
        });
    });

    When using ajaxForm, the ajaxSubmit function will be invoked for you
    at the appropriate time.
*/

/**
 * ajaxSubmit() provides a mechanism for immediately submitting
 * an HTML form using AJAX.
 */
$.fn.ajaxSubmit = function(options) {
    // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
    if (!this.length) {
        log('ajaxSubmit: skipping submit process - no element selected');
        return this;
    }

    if (typeof options == 'function')
        options = { success: options };

    // clean url (don't include hash vaue)
    var url = this.attr('action') || window.location.href;
    url = (url.match(/^([^#]+)/)||[])[1];
    url = url || '';

    options = $.extend({
        url:  url,
        type: this.attr('method') || 'GET'
    }, options || {});

    // hook for manipulating the form data before it is extracted;
    // convenient for use with rich editors like tinyMCE or FCKEditor
    var veto = {};
    this.trigger('form-pre-serialize', [this, options, veto]);
    if (veto.veto) {
        log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
        return this;
    }

    // provide opportunity to alter form data before it is serialized
    if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
        log('ajaxSubmit: submit aborted via beforeSerialize callback');
        return this;
    }

    var a = this.formToArray(options.semantic);
    if (options.data) {
        options.extraData = options.data;
        for (var n in options.data) {
          if(options.data[n] instanceof Array) {
            for (var k in options.data[n])
              a.push( { name: n, value: options.data[n][k] } );
          }
          else
             a.push( { name: n, value: options.data[n] } );
        }
    }

    // give pre-submit callback an opportunity to abort the submit
    if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
        log('ajaxSubmit: submit aborted via beforeSubmit callback');
        return this;
    }

    // fire vetoable 'validate' event
    this.trigger('form-submit-validate', [a, this, options, veto]);
    if (veto.veto) {
        log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
        return this;
    }

    var q = $.param(a);

    if (options.type.toUpperCase() == 'GET') {
        options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
        options.data = null;  // data is null for 'get'
    }
    else
        options.data = q; // data is the query string for 'post'

    var $form = this, callbacks = [];
    if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
    if (options.clearForm) callbacks.push(function() { $form.clearForm(); });

    // perform a load on the target only if dataType is not provided
    if (!options.dataType && options.target) {
        var oldSuccess = options.success || function(){};
        callbacks.push(function(data) {
            $(options.target).html(data).each(oldSuccess, arguments);
        });
    }
    else if (options.success)
        callbacks.push(options.success);

    options.success = function(data, status) {
        for (var i=0, max=callbacks.length; i < max; i++)
            callbacks[i].apply(options, [data, status, $form]);
    };

    // are there files to upload?
    var files = $('input:file', this).fieldValue();
    var found = false;
    for (var j=0; j < files.length; j++)
        if (files[j])
            found = true;

    // options.iframe allows user to force iframe mode
   if (options.iframe || found) {
       // hack to fix Safari hang (thanks to Tim Molendijk for this)
       // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
       if (options.closeKeepAlive)
           $.get(options.closeKeepAlive, fileUpload);
       else
           fileUpload();
       }
   else
       $.ajax(options);

    // fire 'notify' event
    this.trigger('form-submit-notify', [this, options]);
    return this;


    // private function for handling file uploads (hat tip to YAHOO!)
    function fileUpload() {
        var form = $form[0];

        if ($(':input[name=submit]', form).length) {
            alert('Error: Form elements must not be named "submit".');
            return;
        }

        var opts = $.extend({}, $.ajaxSettings, options);
		var s = jQuery.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);

        var id = 'jqFormIO' + (new Date().getTime());
        var $io = $('<iframe id="' + id + '" name="' + id + '" src="about:blank" />');
        var io = $io[0];

        $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });

        var xhr = { // mock object
            aborted: 0,
            responseText: null,
            responseXML: null,
            status: 0,
            statusText: 'n/a',
            getAllResponseHeaders: function() {},
            getResponseHeader: function() {},
            setRequestHeader: function() {},
            abort: function() {
                this.aborted = 1;
                $io.attr('src','about:blank'); // abort op in progress
            }
        };

        var g = opts.global;
        // trigger ajax global events so that activity/block indicators work like normal
        if (g && ! $.active++) $.event.trigger("ajaxStart");
        if (g) $.event.trigger("ajaxSend", [xhr, opts]);

		if (s.beforeSend && s.beforeSend(xhr, s) === false) {
			s.global && jQuery.active--;
			return;
        }
        if (xhr.aborted)
            return;

        var cbInvoked = 0;
        var timedOut = 0;

        // add submitting element to data if we know it
        var sub = form.clk;
        if (sub) {
            var n = sub.name;
            if (n && !sub.disabled) {
                options.extraData = options.extraData || {};
                options.extraData[n] = sub.value;
                if (sub.type == "image") {
                    options.extraData[name+'.x'] = form.clk_x;
                    options.extraData[name+'.y'] = form.clk_y;
                }
            }
        }

        // take a breath so that pending repaints get some cpu time before the upload starts
        setTimeout(function() {
            // make sure form attrs are set
            var t = $form.attr('target'), a = $form.attr('action');

			// update form attrs in IE friendly way
			form.setAttribute('target',id);
			if (form.getAttribute('method') != 'POST')
				form.setAttribute('method', 'POST');
			if (form.getAttribute('action') != opts.url)
				form.setAttribute('action', opts.url);

            // ie borks in some cases when setting encoding
            if (! options.skipEncodingOverride) {
                $form.attr({
                    encoding: 'multipart/form-data',
                    enctype:  'multipart/form-data'
                });
            }

            // support timout
            if (opts.timeout)
                setTimeout(function() { timedOut = true; cb(); }, opts.timeout);

            // add "extra" data to form if provided in options
            var extraInputs = [];
            try {
                if (options.extraData)
                    for (var n in options.extraData)
                        extraInputs.push(
                            $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
                                .appendTo(form)[0]);

                // add iframe to doc and submit the form
                $io.appendTo('body');
                io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
                form.submit();
            }
            finally {
                // reset attrs and remove "extra" input elements
				form.setAttribute('action',a);
                t ? form.setAttribute('target', t) : $form.removeAttr('target');
                $(extraInputs).remove();
            }
        }, 10);

        var nullCheckFlag = 0;

        function cb() {
            if (cbInvoked++) return;

            io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);

            var ok = true;
            try {
                if (timedOut) throw 'timeout';
                // extract the server response from the iframe
                var data, doc;

                doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;

                if ((doc.body == null || doc.body.innerHTML == '') && !nullCheckFlag) {
                    // in some browsers (cough, Opera 9.2.x) the iframe DOM is not always traversable when
                    // the onload callback fires, so we give them a 2nd chance
                    nullCheckFlag = 1;
                    cbInvoked--;
                    setTimeout(cb, 100);
                    return;
                }

                xhr.responseText = doc.body ? doc.body.innerHTML : null;
                xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
                xhr.getResponseHeader = function(header){
                    var headers = {'content-type': opts.dataType};
                    return headers[header];
                };

                if (opts.dataType == 'json' || opts.dataType == 'script') {
                    var ta = doc.getElementsByTagName('textarea')[0];
                    xhr.responseText = ta ? ta.value : xhr.responseText;
                }
                else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
                    xhr.responseXML = toXml(xhr.responseText);
                }
                data = $.httpData(xhr, opts.dataType);
            }
            catch(e){
                ok = false;
                $.handleError(opts, xhr, 'error', e);
            }

            // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
            if (ok) {
                opts.success(data, 'success');
                if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
            }
            if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
            if (g && ! --$.active) $.event.trigger("ajaxStop");
            if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');

            // clean up
            setTimeout(function() {
                $io.remove();
                xhr.responseXML = null;
            }, 100);
        };

        function toXml(s, doc) {
            if (window.ActiveXObject) {
                doc = new ActiveXObject('Microsoft.XMLDOM');
                doc.async = 'false';
                doc.loadXML(s);
            }
            else
                doc = (new DOMParser()).parseFromString(s, 'text/xml');
            return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
        };
    };
};

/**
 * ajaxForm() provides a mechanism for fully automating form submission.
 *
 * The advantages of using this method instead of ajaxSubmit() are:
 *
 * 1: This method will include coordinates for <input type="image" /> elements (if the element
 *    is used to submit the form).
 * 2. This method will include the submit element's name/value data (for the element that was
 *    used to submit the form).
 * 3. This method binds the submit() method to the form for you.
 *
 * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
 * passes the options argument along after properly binding events for submit elements and
 * the form itself.
 */
$.fn.ajaxForm = function(options) {
    return this.ajaxFormUnbind().bind('submit.form-plugin',function() {
        $(this).ajaxSubmit(options);
        return false;
    }).each(function() {
        // store options in hash
        $(":submit,input:image", this).bind('click.form-plugin',function(e) {
            var form = this.form;
            form.clk = this;
            if (this.type == 'image') {
                if (e.offsetX != undefined) {
                    form.clk_x = e.offsetX;
                    form.clk_y = e.offsetY;
                } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
                    var offset = $(this).offset();
                    form.clk_x = e.pageX - offset.left;
                    form.clk_y = e.pageY - offset.top;
                } else {
                    form.clk_x = e.pageX - this.offsetLeft;
                    form.clk_y = e.pageY - this.offsetTop;
                }
            }
            // clear form vars
            setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 10);
        });
    });
};

// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
$.fn.ajaxFormUnbind = function() {
    this.unbind('submit.form-plugin');
    return this.each(function() {
        $(":submit,input:image", this).unbind('click.form-plugin');
    });

};

/**
 * formToArray() gathers form element data into an array of objects that can
 * be passed to any of the following ajax functions: $.get, $.post, or load.
 * Each object in the array has both a 'name' and 'value' property.  An example of
 * an array for a simple login form might be:
 *
 * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
 *
 * It is this array that is passed to pre-submit callback functions provided to the
 * ajaxSubmit() and ajaxForm() methods.
 */
$.fn.formToArray = function(semantic) {
    var a = [];
    if (this.length == 0) return a;

    var form = this[0];
    var els = semantic ? form.getElementsByTagName('*') : form.elements;
    if (!els) return a;
    for(var i=0, max=els.length; i < max; i++) {
        var el = els[i];
        var n = el.name;
        if (!n) continue;

        if (semantic && form.clk && el.type == "image") {
            // handle image inputs on the fly when semantic == true
            if(!el.disabled && form.clk == el)
                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
            continue;
        }

        var v = $.fieldValue(el, true);
        if (v && v.constructor == Array) {
            for(var j=0, jmax=v.length; j < jmax; j++)
                a.push({name: n, value: v[j]});
        }
        else if (v !== null && typeof v != 'undefined')
            a.push({name: n, value: v});
    }

    if (!semantic && form.clk) {
        // input type=='image' are not found in elements array! handle them here
        var inputs = form.getElementsByTagName("input");
        for(var i=0, max=inputs.length; i < max; i++) {
            var input = inputs[i];
            var n = input.name;
            if(n && !input.disabled && input.type == "image" && form.clk == input)
                a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
        }
    }
    return a;
};

/**
 * Serializes form data into a 'submittable' string. This method will return a string
 * in the format: name1=value1&amp;name2=value2
 */
$.fn.formSerialize = function(semantic) {
    //hand off to jQuery.param for proper encoding
    return $.param(this.formToArray(semantic));
};

/**
 * Serializes all field elements in the jQuery object into a query string.
 * This method will return a string in the format: name1=value1&amp;name2=value2
 */
$.fn.fieldSerialize = function(successful) {
    var a = [];
    this.each(function() {
        var n = this.name;
        if (!n) return;
        var v = $.fieldValue(this, successful);
        if (v && v.constructor == Array) {
            for (var i=0,max=v.length; i < max; i++)
                a.push({name: n, value: v[i]});
        }
        else if (v !== null && typeof v != 'undefined')
            a.push({name: this.name, value: v});
    });
    //hand off to jQuery.param for proper encoding
    return $.param(a);
};

/**
 * Returns the value(s) of the element in the matched set.  For example, consider the following form:
 *
 *  <form><fieldset>
 *      <input name="A" type="text" />
 *      <input name="A" type="text" />
 *      <input name="B" type="checkbox" value="B1" />
 *      <input name="B" type="checkbox" value="B2"/>
 *      <input name="C" type="radio" value="C1" />
 *      <input name="C" type="radio" value="C2" />
 *  </fieldset></form>
 *
 *  var v = $(':text').fieldValue();
 *  // if no values are entered into the text inputs
 *  v == ['','']
 *  // if values entered into the text inputs are 'foo' and 'bar'
 *  v == ['foo','bar']
 *
 *  var v = $(':checkbox').fieldValue();
 *  // if neither checkbox is checked
 *  v === undefined
 *  // if both checkboxes are checked
 *  v == ['B1', 'B2']
 *
 *  var v = $(':radio').fieldValue();
 *  // if neither radio is checked
 *  v === undefined
 *  // if first radio is checked
 *  v == ['C1']
 *
 * The successful argument controls whether or not the field element must be 'successful'
 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 * The default value of the successful argument is true.  If this value is false the value(s)
 * for each element is returned.
 *
 * Note: This method *always* returns an array.  If no valid value can be determined the
 *       array will be empty, otherwise it will contain one or more values.
 */
$.fn.fieldValue = function(successful) {
    for (var val=[], i=0, max=this.length; i < max; i++) {
        var el = this[i];
        var v = $.fieldValue(el, successful);
        if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
            continue;
        v.constructor == Array ? $.merge(val, v) : val.push(v);
    }
    return val;
};

/**
 * Returns the value of the field element.
 */
$.fieldValue = function(el, successful) {
    var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
    if (typeof successful == 'undefined') successful = true;

    if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
        (t == 'checkbox' || t == 'radio') && !el.checked ||
        (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
        tag == 'select' && el.selectedIndex == -1))
            return null;

    if (tag == 'select') {
        var index = el.selectedIndex;
        if (index < 0) return null;
        var a = [], ops = el.options;
        var one = (t == 'select-one');
        var max = (one ? index+1 : ops.length);
        for(var i=(one ? index : 0); i < max; i++) {
            var op = ops[i];
            if (op.selected) {
				var v = op.value;
				if (!v) // extra pain for IE...
                	v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
                if (one) return v;
                a.push(v);
            }
        }
        return a;
    }
    return el.value;
};

/**
 * Clears the form data.  Takes the following actions on the form's input fields:
 *  - input text fields will have their 'value' property set to the empty string
 *  - select elements will have their 'selectedIndex' property set to -1
 *  - checkbox and radio inputs will have their 'checked' property set to false
 *  - inputs of type submit, button, reset, and hidden will *not* be effected
 *  - button elements will *not* be effected
 */
$.fn.clearForm = function() {
    return this.each(function() {
        $('input,select,textarea', this).clearFields();
    });
};

/**
 * Clears the selected form elements.
 */
$.fn.clearFields = $.fn.clearInputs = function() {
    return this.each(function() {
        var t = this.type, tag = this.tagName.toLowerCase();
        if (t == 'text' || t == 'password' || tag == 'textarea')
            this.value = '';
        else if (t == 'checkbox' || t == 'radio')
            this.checked = false;
        else if (tag == 'select')
            this.selectedIndex = -1;
    });
};

/**
 * Resets the form data.  Causes all form elements to be reset to their original value.
 */
$.fn.resetForm = function() {
    return this.each(function() {
        // guard against an input with the name of 'reset'
        // note that IE reports the reset function as an 'object'
        if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
            this.reset();
    });
};

/**
 * Enables or disables any matching elements.
 */
$.fn.enable = function(b) {
    if (b == undefined) b = true;
    return this.each(function() {
        this.disabled = !b;
    });
};

/**
 * Checks/unchecks any matching checkboxes or radio buttons and
 * selects/deselects and matching option elements.
 */
$.fn.selected = function(select) {
    if (select == undefined) select = true;
    return this.each(function() {
        var t = this.type;
        if (t == 'checkbox' || t == 'radio')
            this.checked = select;
        else if (this.tagName.toLowerCase() == 'option') {
            var $sel = $(this).parent('select');
            if (select && $sel[0] && $sel[0].type == 'select-one') {
                // deselect all other options
                $sel.find('option').selected(false);
            }
            this.selected = select;
        }
    });
};

// helper fn for console logging
// set $.fn.ajaxSubmit.debug to true to enable debug logging
function log() {
    if ($.fn.ajaxSubmit.debug && window.console && window.console.log)
        window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));
};

})(jQuery);

// tipsy, facebook style tooltips for jquery
// version 1.0.0a
// (c) 2008-2010 jason frame [jason@onehackoranother.com]
// releated under the MIT license

(function($) {
    
    function fixTitle($ele) {
        if ($ele.attr('title') || typeof($ele.attr('original-title')) != 'string') {
            $ele.attr('original-title', $ele.attr('title') || '').removeAttr('title');
        }
    }
    
    function Tipsy(element, options) {
        this.$element = $(element);
        this.options = options;
        this.enabled = true;
        fixTitle(this.$element);
    }
    
    Tipsy.prototype = {
        show: function() {
            var title = this.getTitle();
            if (title && this.enabled) {
                var $tip = this.tip();
                
                $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);
                $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity
                $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body);
                
                var pos = $.extend({}, this.$element.offset(), {
                    width: this.$element[0].offsetWidth,
                    height: this.$element[0].offsetHeight
                });
                
                var actualWidth = $tip[0].offsetWidth, actualHeight = $tip[0].offsetHeight;
                var gravity = (typeof this.options.gravity == 'function')
                                ? this.options.gravity.call(this.$element[0])
                                : this.options.gravity;
                
                var tp;
                switch (gravity.charAt(0)) {
                    case 'n':
                        tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};
                        break;
                    case 's':
                        tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};
                        break;
                    case 'e':
                        tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset};
                        break;
                    case 'w':
                        tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset};
                        break;
                }
                
                if (gravity.length == 2) {
                    if (gravity.charAt(1) == 'w') {
                        tp.left = pos.left + pos.width / 2 - 15;
                    } else {
                        tp.left = pos.left + pos.width / 2 - actualWidth + 15;
                    }
                }
                
                $tip.css(tp).addClass('tipsy-' + gravity);
                
                if (this.options.fade) {
                    $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity});
                } else {
                    $tip.css({visibility: 'visible', opacity: this.options.opacity});
                }
            }
        },
        
        hide: function() {
            if (this.options.fade) {
                this.tip().stop().fadeOut(function() { $(this).remove(); });
            } else {
                this.tip().remove();
            }
        },
        
        getTitle: function() {
            var title, $e = this.$element, o = this.options;
            fixTitle($e);
            var title, o = this.options;
            if (typeof o.title == 'string') {
                title = $e.attr(o.title == 'title' ? 'original-title' : o.title);
            } else if (typeof o.title == 'function') {
                title = o.title.call($e[0]);
            }
            title = ('' + title).replace(/(^\s*|\s*$)/, "");
            return title || o.fallback;
        },
        
        tip: function() {
            if (!this.$tip) {
                this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"/></div>');
            }
            return this.$tip;
        },
        
        validate: function() {
            if (!this.$element[0].parentNode) {
                this.hide();
                this.$element = null;
                this.options = null;
            }
        },
        
        enable: function() { this.enabled = true; },
        disable: function() { this.enabled = false; },
        toggleEnabled: function() { this.enabled = !this.enabled; }
    };
    
    $.fn.tipsy = function(options) {
        
        if (options === true) {
            return this.data('tipsy');
        } else if (typeof options == 'string') {
            return this.data('tipsy')[options]();
        }
        
        options = $.extend({}, $.fn.tipsy.defaults, options);
        
        function get(ele) {
            var tipsy = $.data(ele, 'tipsy');
            if (!tipsy) {
                tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));
                $.data(ele, 'tipsy', tipsy);
            }
            return tipsy;
        }
        
        function enter() {
            var tipsy = get(this);
            tipsy.hoverState = 'in';
            if (options.delayIn == 0) {
                tipsy.show();
            } else {
                setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn);
            }
        };
        
        function leave() {
            var tipsy = get(this);
            tipsy.hoverState = 'out';
            if (options.delayOut == 0) {
                tipsy.hide();
            } else {
                setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut);
            }
        };
        
        if (!options.live) this.each(function() { get(this); });
        
        if (options.trigger != 'manual') {
            var binder   = options.live ? 'live' : 'bind',
                eventIn  = options.trigger == 'hover' ? 'mouseenter' : 'focus',
                eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
            this[binder](eventIn, enter)[binder](eventOut, leave);
        }
        
        return this;
        
    };
    
    $.fn.tipsy.defaults = {
        delayIn: 0,
        delayOut: 0,
        fade: false,
        fallback: '',
        gravity: 'n',
        html: false,
        live: false,
        offset: 0,
        opacity: 0.8,
        title: 'title',
        trigger: 'hover'
    };
    
    // Overwrite this method to provide options on a per-element basis.
    // For example, you could store the gravity in a 'tipsy-gravity' attribute:
    // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
    // (remember - do not modify 'options' in place!)
    $.fn.tipsy.elementOptions = function(ele, options) {
        return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
    };
    
    $.fn.tipsy.autoNS = function() {
        return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
    };
    
    $.fn.tipsy.autoWE = function() {
        return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
    };
    
})(jQuery);

// tipsy.hovercard, twitter style hovercards for tipsy
// version 0.1.1
// (c) 2010 René Föhring rf@bamaru.de
// released under the MIT license

(function($) {
  $.fn.tipsyHoverCard = function(options) {
    var opts = $.extend({}, $.fn.tipsyHoverCard.defaults, options);
    this.tipsy(opts);
  
    function clearHideTimeout(ele) {
      if( ele.data('timeoutId') ) clearTimeout(ele.data('timeoutId'));
      ele.data('timeoutId', null);
    }
    function setHideTimeout(ele) {
      clearHideTimeout(ele);
      var options = ele.tipsy(true).options;
      var timeoutId = setTimeout(function() { $(ele).tipsy('hide'); }, options.hideDelay);
      ele.data('timeoutId', timeoutId);
    }
    
    function show(ele) {
      clearHideTimeout(ele);
      ele.tipsy('show');
      
      var tip = ele.tipsy('tip');
      tip.addClass('tipsy-hovercard');
      tip.data('tipsyAnchor', ele);
      tip.hover(tipEnter, tipLeave);
      ele.data('visible', true);
    }
    function hide(ele) {
      setHideTimeout(ele);
      ele.data('visible', false);
    }
    
    function enter() {
      var a = $(this);
      var url = a.attr('data-url');
      if( url && !a.data('ajax-success') ) {
        $.ajax({
          url: url,
          dataType: "html",
          success: function(data){
            a.data('ajax-success', true);
            a.attr('title', data);
            if( a.data('visible') ) show(a);
          },
          error: function() {
            a.attr('title', 'Error loading '+url);
            if( a.data('visible') ) show(a);
          },
          failure: function(){
            a.attr('title', 'Failed to load '+url);
            if( a.data('visible') ) show(a);
          }
        });
      }
      show(a);
    }
    function leave() {
      hide($(this));
    }
    
    function tipEnter() {
      var a = $(this).data('tipsyAnchor');
      clearHideTimeout(a);
    }
    function tipLeave() {
      var a = $(this).data('tipsyAnchor');
      setHideTimeout(a);
    }

    if( $.fn.hoverIntent && opts.hoverIntent ) {
      // 'out' is called with a latency, even if 'timeout' is set to 0
      // therefore, we're using good ol' mouseleave for out-handling
      var config = $.extend({over: enter, out: function(){}}, opts.hoverIntentConfig);
      this.hoverIntent(config).mouseleave(leave);
    } else {
      this.hover(enter, leave);
    }
    return this;
  }
  
  $.fn.tipsyHoverCard.defaults = {
    gravity: 'n',
    trigger: 'manual', 
    fallback: '...',
    html: true,
    hideDelay: 300,
    opacity: 1,
    hoverIntent: true,
    hoverIntentConfig: {
      sensitivity: 3,
      interval: 300,
      timeout: 0
    }
  };
})(jQuery);
/*

TO DO: Test in all browsers, clean up theme file, prepare documentation, minisite?

Uniform v1.5
Copyright © 2009 Josh Pyles / Pixelmatrix Design LLC
http://pixelmatrixdesign.com

Requires jQuery 1.3 or newer

Much thanks to Thomas Reynolds and Buck Wilson for their help and advice on this

Disabling text selection is made possible by Mathias Bynens <http://mathiasbynens.be/>
and his noSelect plugin. <http://github.com/mathiasbynens/noSelect-jQuery-Plugin>

Also, thanks to David Kaneda and Eugene Bond for their contributions to the plugin

License:
MIT License - http://www.opensource.org/licenses/mit-license.php

Usage:

$(function(){
  $("select, :radio, :checkbox").uniform();
});

You can customize the classes that Uniform uses:

$("select, :radio, :checkbox").uniform({
  selectClass: 'mySelectClass',
  radioClass: 'myRadioClass',
  checkboxClass: 'myCheckboxClass',
  checkedClass: 'myCheckedClass',
  focusClass: 'myFocusClass'
});

Enjoy!

*/

(function($) {
  $.uniform = {
    options: {
      selectClass:   'selector',
      radioClass: 'radio',
      checkboxClass: 'checker',
      fileClass: 'uploader',
      filenameClass: 'filename',
      fileBtnClass: 'action',
      fileDefaultText: 'No file selected',
      fileBtnText: 'Choose File',
      checkedClass: 'checked',
      focusClass: 'focus',
      disabledClass: 'disabled',
      activeClass: 'active',
      hoverClass: 'hover',
      useID: true,
      idPrefix: 'uniform',
      resetSelector: false
    },
    elements: []
  };

  if($.browser.msie && $.browser.version < 7){
    $.support.selectOpacity = false;
  }else{
    $.support.selectOpacity = true;
  }

  $.fn.uniform = function(options) {

    options = $.extend($.uniform.options, options);

    var el = this;
    //code for specifying a reset button
    if(options.resetSelector != false){
      $(options.resetSelector).mouseup(function(){
        function resetThis(){
          $.uniform.update(el);
        }
        setTimeout(resetThis, 10);
      });
    }

    function doSelect(elem){

      var divTag = $('<div />'),
          spanTag = $('<span />');

      divTag.addClass(options.selectClass);

      if(options.useID){
        divTag.attr("id", options.idPrefix+"-"+elem.attr("id"));
      }
      
      var selected = elem.find(":selected:first");
      if(selected.length == 0){
        selected = elem.find("option:first");
      }
      spanTag.html(selected.text());
      
      elem.css('opacity', 0);
      elem.wrap(divTag);
      elem.before(spanTag);

      //redefine variables
      divTag = elem.parent("div");
      spanTag = elem.siblings("span");

      elem.change(function() {
        spanTag.text(elem.find(":selected").text());
        divTag.removeClass(options.activeClass);
      })
      .focus(function() {
        divTag.addClass(options.focusClass);
      })
      .blur(function() {
        divTag.removeClass(options.focusClass);
        divTag.removeClass(options.activeClass);
      })
      .mousedown(function() {
        divTag.addClass(options.activeClass);
      })
      .mouseup(function() {
        divTag.removeClass(options.activeClass);
      })
      .click(function(){
        divTag.removeClass(options.activeClass);
      })
      .hover(function() {
        divTag.addClass(options.hoverClass);
      }, function() {
        divTag.removeClass(options.hoverClass);
      })
      .keyup(function(){
        spanTag.text(elem.find(":selected").text());
      });

      //handle disabled state
      if($(elem).attr("disabled")){
        //box is checked by default, check our box
        divTag.addClass(options.disabledClass);
      }
      $.uniform.noSelect(spanTag);
      
      storeElement(elem);

    }

    function doCheckbox(elem){

      var divTag = $('<div />'),
          spanTag = $('<span />');

      divTag.addClass(options.checkboxClass);

      //assign the id of the element
      if(options.useID){
        divTag.attr("id", options.idPrefix+"-"+elem.attr("id"));
      }

      //wrap with the proper elements
      $(elem).wrap(divTag);
      $(elem).wrap(spanTag);

      //redefine variables
      spanTag = elem.parent();
      divTag = spanTag.parent();

      //hide normal input and add focus classes
      $(elem)
      .css("opacity", 0)
      .focus(function(){

        divTag.addClass(options.focusClass);
      })
      .blur(function(){

        divTag.removeClass(options.focusClass);
      })
      .click(function(){

        if(!$(elem).attr("checked")){
          //box was just unchecked, uncheck span
          spanTag.removeClass(options.checkedClass);
        }else{
          //box was just checked, check span.
          spanTag.addClass(options.checkedClass);
        }
      })
      .mousedown(function() {
        divTag.addClass(options.activeClass);
      })
      .mouseup(function() {
        divTag.removeClass(options.activeClass);
      })
      .hover(function() {
        divTag.addClass(options.hoverClass);
      }, function() {
        divTag.removeClass(options.hoverClass);
      });

      //handle defaults
      if($(elem).attr("checked")){
        //box is checked by default, check our box
        spanTag.addClass(options.checkedClass);
      }

      //handle disabled state
      if($(elem).attr("disabled")){
        //box is checked by default, check our box
        divTag.addClass(options.disabledClass);
      }

      storeElement(elem);

    }

    function doRadio(elem){

      var divTag = $('<div />'),
          spanTag = $('<span />');

      divTag.addClass(options.radioClass);

      if(options.useID){
        divTag.attr("id", options.idPrefix+"-"+elem.attr("id"));
      }

      //wrap with the proper elements
      $(elem).wrap(divTag);
      $(elem).wrap(spanTag);

      //redefine variables
      spanTag = elem.parent();
      divTag = spanTag.parent();

      //hide normal input and add focus classes
      $(elem)
      .css("opacity", 0)
      .focus(function(){
        divTag.addClass(options.focusClass);
      })
      .blur(function(){
        divTag.removeClass(options.focusClass);
      })
      .click(function(){
        if(!$(elem).attr("checked")){
          //box was just unchecked, uncheck span
          spanTag.removeClass(options.checkedClass);
        }else{
          //box was just checked, check span
          $("."+options.radioClass + " span."+options.checkedClass + ":has([name='" + $(elem).attr('name') + "'])").removeClass(options.checkedClass);
          spanTag.addClass(options.checkedClass);
        }
      })
      .mousedown(function() {
        if(!$(elem).is(":disabled")){
          divTag.addClass(options.activeClass);
        }
      })
      .mouseup(function() {
        divTag.removeClass(options.activeClass);
      })
      .hover(function() {
        divTag.addClass(options.hoverClass);
      }, function() {
        divTag.removeClass(options.hoverClass);
      });

      //handle defaults
      if($(elem).attr("checked")){
        //box is checked by default, check span
        spanTag.addClass(options.checkedClass);
      }
      //handle disabled state
      if($(elem).attr("disabled")){
        //box is checked by default, check our box
        divTag.addClass(options.disabledClass);
      }

      storeElement(elem);

    }

    function doFile(elem){
      //sanitize input
      var $el = $(elem);

      var divTag = $('<div />'),
          filenameTag = $('<span>'+options.fileDefaultText+'</span>'),
          btnTag = $('<span>'+options.fileBtnText+'</span>');

      divTag.addClass(options.fileClass);
      filenameTag.addClass(options.filenameClass);
      btnTag.addClass(options.fileBtnClass);

      if(options.useID){
        divTag.attr("id", options.idPrefix+"-"+$el.attr("id"));
      }

      //wrap with the proper elements
      $el.wrap(divTag);
      $el.after(btnTag);
      $el.after(filenameTag);

      //redefine variables
      divTag = $el.closest("div");
      filenameTag = $el.siblings("."+options.filenameClass);
      btnTag = $el.siblings("."+options.fileBtnClass);

      //set the size
      if(!$el.attr("size")){
        var divWidth = divTag.width();
        //$el.css("width", divWidth);
        $el.attr("size", divWidth/10);
      }

      //actions
      var setFilename = function()
      {
        var filename = $el.val();
        if (filename === '')
        {
          filename = options.fileDefaultText;
        }
        else
        {
          filename = filename.split(/[\/\\]+/);
          filename = filename[(filename.length-1)];
        }
        filenameTag.text(filename);
      };

      // Account for input saved across refreshes
      setFilename();

      $el
      .css("opacity", 0)
      .focus(function(){
        divTag.addClass(options.focusClass);
      })
      .blur(function(){
        divTag.removeClass(options.focusClass);
      })
      .mousedown(function() {
        if(!$(elem).is(":disabled")){
          divTag.addClass(options.activeClass);
        }
      })
      .mouseup(function() {
        divTag.removeClass(options.activeClass);
      })
      .hover(function() {
        divTag.addClass(options.hoverClass);
      }, function() {
        divTag.removeClass(options.hoverClass);
      });

      // IE7 doesn't fire onChange until blur or second fire.
      if ($.browser.msie)
      {
        // IE considers browser chrome blocking I/O, so it
        // suspends tiemouts until after the file has been selected.
        $el.click(function() {
          setTimeout(setFilename, 0);
        });
      }
      else
      {
        // All other browsers behave properly
        $el.change(setFilename);
      }

      //handle defaults
      if($el.attr("disabled")){
        //box is checked by default, check our box
        divTag.addClass(options.disabledClass);
      }
      
      $.uniform.noSelect(filenameTag);
      $.uniform.noSelect(btnTag);
      storeElement(elem);

    }

    function storeElement(elem){
      //store this element in our global array
      elem = $(elem).get();
      if(elem.length > 1){
        $.each(elem, function(i, val){
          $.uniform.elements.push(val);
        });
      }else{
        $.uniform.elements.push(elem);
      }
    }
    
    //noSelect v1.0
    $.uniform.noSelect = function(elem) {
      function f() {
       return false;
      };
      $(elem).each(function() {
       this.onselectstart = this.ondragstart = f; // Webkit & IE
       $(this)
        .mousedown(f) // Webkit & Opera
        .css({ MozUserSelect: 'none' }); // Firefox
      });
     };

    $.uniform.update = function(elem){
      if(elem == undefined){
        elem = $($.uniform.elements);
      }
      //sanitize input
      elem = $(elem);

      elem.each(function(){
        //do to each item in the selector
        //function to reset all classes
        var $e = $(this);

        if($e.is("select")){
          //element is a select
          var spanTag = $e.siblings("span");
          var divTag = $e.parent("div");

          divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);

          //reset current selected text
          spanTag.html($e.find(":selected").text());

          if($e.is(":disabled")){
            divTag.addClass(options.disabledClass);
          }else{
            divTag.removeClass(options.disabledClass);
          }

        }else if($e.is(":checkbox")){
          //element is a checkbox
          var spanTag = $e.closest("span");
          var divTag = $e.closest("div");

          divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);
          spanTag.removeClass(options.checkedClass);

          if($e.is(":checked")){
            spanTag.addClass(options.checkedClass);
          }
          if($e.is(":disabled")){
            divTag.addClass(options.disabledClass);
          }else{
            divTag.removeClass(options.disabledClass);
          }

        }else if($e.is(":radio")){
          //element is a radio
          var spanTag = $e.closest("span");
          var divTag = $e.closest("div");

          divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);
          spanTag.removeClass(options.checkedClass);

          if($e.is(":checked")){
            spanTag.addClass(options.checkedClass);
          }

          if($e.is(":disabled")){
            divTag.addClass(options.disabledClass);
          }else{
            divTag.removeClass(options.disabledClass);
          }
        }else if($e.is(":file")){
          var divTag = $e.parent("div");
          var filenameTag = $e.siblings(options.filenameClass);
          btnTag = $e.siblings(options.fileBtnClass);

          divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);

          filenameTag.text($e.val());

          if($e.is(":disabled")){
            divTag.addClass(options.disabledClass);
          }else{
            divTag.removeClass(options.disabledClass);
          }
        }
      });
    }

    return this.each(function() {
      if($.support.selectOpacity){
        var elem = $(this);

        if(elem.is("select")){
          //element is a select
          if(elem.attr("multiple") != true){
            //element is not a multi-select
            if(elem.attr("size") == undefined || elem.attr("size") <= 1){
              doSelect(elem);
            }
          }
        }else if(elem.is(":checkbox")){
          //element is a checkbox
          doCheckbox(elem);
        }else if(elem.is(":radio")){
          //element is a radio
          doRadio(elem);
        }else if(elem.is(":file")){
          //element is a file upload
          doFile(elem);
        }

      }
    });
  };
})(jQuery);

/**
 *
 * Color picker
 * Author: Stefan Petre www.eyecon.ro
 * 
 * Dual licensed under the MIT and GPL licenses
 * 
 */
(function ($) {
	var ColorPicker = function () {
		var
			ids = {},
			inAction,
			charMin = 65,
			visible,
			tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
			defaults = {
				eventName: 'click',
				onShow: function () {},
				onBeforeShow: function(){},
				onHide: function () {},
				onChange: function () {},
				onSubmit: function () {},
				color: 'ff0000',
				livePreview: true,
				flat: false
			},
			fillRGBFields = function  (hsb, cal) {
				var rgb = HSBToRGB(hsb);
				$(cal).data('colorpicker').fields
					.eq(1).val(rgb.r).end()
					.eq(2).val(rgb.g).end()
					.eq(3).val(rgb.b).end();
			},
			fillHSBFields = function  (hsb, cal) {
				$(cal).data('colorpicker').fields
					.eq(4).val(hsb.h).end()
					.eq(5).val(hsb.s).end()
					.eq(6).val(hsb.b).end();
			},
			fillHexFields = function (hsb, cal) {
				$(cal).data('colorpicker').fields
					.eq(0).val(HSBToHex(hsb)).end();
			},
			setSelector = function (hsb, cal) {
				$(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
				$(cal).data('colorpicker').selectorIndic.css({
					left: parseInt(150 * hsb.s/100, 10),
					top: parseInt(150 * (100-hsb.b)/100, 10)
				});
			},
			setHue = function (hsb, cal) {
				$(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
			},
			setCurrentColor = function (hsb, cal) {
				$(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
			},
			setNewColor = function (hsb, cal) {
				$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
			},
			keyDown = function (ev) {
				var pressedKey = ev.charCode || ev.keyCode || -1;
				if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
					return false;
				}
				var cal = $(this).parent().parent();
				if (cal.data('colorpicker').livePreview === true) {
					change.apply(this);
				}
			},
			change = function (ev) {
				var cal = $(this).parent().parent(), col;
				if (this.parentNode.className.indexOf('_hex') > 0) {
					cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
				} else if (this.parentNode.className.indexOf('_hsb') > 0) {
					cal.data('colorpicker').color = col = fixHSB({
						h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
						s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
						b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
					});
				} else {
					cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
						r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
						g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
						b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
					}));
				}
				if (ev) {
					fillRGBFields(col, cal.get(0));
					fillHexFields(col, cal.get(0));
					fillHSBFields(col, cal.get(0));
				}
				setSelector(col, cal.get(0));
				setHue(col, cal.get(0));
				setNewColor(col, cal.get(0));
				cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
			},
			blur = function (ev) {
				var cal = $(this).parent().parent();
				cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
			},
			focus = function () {
				charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
				$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
				$(this).parent().addClass('colorpicker_focus');
			},
			downIncrement = function (ev) {
				var field = $(this).parent().find('input').focus();
				var current = {
					el: $(this).parent().addClass('colorpicker_slider'),
					max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
					y: ev.pageY,
					field: field,
					val: parseInt(field.val(), 10),
					preview: $(this).parent().parent().data('colorpicker').livePreview					
				};
				$(document).bind('mouseup', current, upIncrement);
				$(document).bind('mousemove', current, moveIncrement);
			},
			moveIncrement = function (ev) {
				ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
				if (ev.data.preview) {
					change.apply(ev.data.field.get(0), [true]);
				}
				return false;
			},
			upIncrement = function (ev) {
				change.apply(ev.data.field.get(0), [true]);
				ev.data.el.removeClass('colorpicker_slider').find('input').focus();
				$(document).unbind('mouseup', upIncrement);
				$(document).unbind('mousemove', moveIncrement);
				return false;
			},
			downHue = function (ev) {
				var current = {
					cal: $(this).parent(),
					y: $(this).offset().top
				};
				current.preview = current.cal.data('colorpicker').livePreview;
				$(document).bind('mouseup', current, upHue);
				$(document).bind('mousemove', current, moveHue);
			},
			moveHue = function (ev) {
				change.apply(
					ev.data.cal.data('colorpicker')
						.fields
						.eq(4)
						.val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
						.get(0),
					[ev.data.preview]
				);
				return false;
			},
			upHue = function (ev) {
				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
				$(document).unbind('mouseup', upHue);
				$(document).unbind('mousemove', moveHue);
				return false;
			},
			downSelector = function (ev) {
				var current = {
					cal: $(this).parent(),
					pos: $(this).offset()
				};
				current.preview = current.cal.data('colorpicker').livePreview;
				$(document).bind('mouseup', current, upSelector);
				$(document).bind('mousemove', current, moveSelector);
			},
			moveSelector = function (ev) {
				change.apply(
					ev.data.cal.data('colorpicker')
						.fields
						.eq(6)
						.val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
						.end()
						.eq(5)
						.val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
						.get(0),
					[ev.data.preview]
				);
				return false;
			},
			upSelector = function (ev) {
				fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
				fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
				$(document).unbind('mouseup', upSelector);
				$(document).unbind('mousemove', moveSelector);
				return false;
			},
			enterSubmit = function (ev) {
				$(this).addClass('colorpicker_focus');
			},
			leaveSubmit = function (ev) {
				$(this).removeClass('colorpicker_focus');
			},
			clickSubmit = function (ev) {
				var cal = $(this).parent();
				var col = cal.data('colorpicker').color;
				cal.data('colorpicker').origColor = col;
				setCurrentColor(col, cal.get(0));
				cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
			},
			show = function (ev) {
				var cal = $('#' + $(this).data('colorpickerId'));
				cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
				var pos = $(this).offset();
				var viewPort = getViewport();
				var top = pos.top + this.offsetHeight;
				var left = pos.left;
				if (top + 176 > viewPort.t + viewPort.h) {
					top -= this.offsetHeight + 176;
				}
				if (left + 356 > viewPort.l + viewPort.w) {
					left -= 356;
				}
				cal.css({left: left + 'px', top: top + 'px'});
				if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
					cal.show();
				}
				$(document).bind('mousedown', {cal: cal}, hide);
				return false;
			},
			hide = function (ev) {
				if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
					if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
						ev.data.cal.hide();
					}
					$(document).unbind('mousedown', hide);
				}
			},
			isChildOf = function(parentEl, el, container) {
				if (parentEl == el) {
					return true;
				}
				if (parentEl.contains) {
					return parentEl.contains(el);
				}
				if ( parentEl.compareDocumentPosition ) {
					return !!(parentEl.compareDocumentPosition(el) & 16);
				}
				var prEl = el.parentNode;
				while(prEl && prEl != container) {
					if (prEl == parentEl)
						return true;
					prEl = prEl.parentNode;
				}
				return false;
			},
			getViewport = function () {
				var m = document.compatMode == 'CSS1Compat';
				return {
					l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
					t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
					w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
					h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
				};
			},
			fixHSB = function (hsb) {
				return {
					h: Math.min(360, Math.max(0, hsb.h)),
					s: Math.min(100, Math.max(0, hsb.s)),
					b: Math.min(100, Math.max(0, hsb.b))
				};
			}, 
			fixRGB = function (rgb) {
				return {
					r: Math.min(255, Math.max(0, rgb.r)),
					g: Math.min(255, Math.max(0, rgb.g)),
					b: Math.min(255, Math.max(0, rgb.b))
				};
			},
			fixHex = function (hex) {
				var len = 6 - hex.length;
				if (len > 0) {
					var o = [];
					for (var i=0; i<len; i++) {
						o.push('0');
					}
					o.push(hex);
					hex = o.join('');
				}
				return hex;
			}, 
			HexToRGB = function (hex) {
				var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
				return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
			},
			HexToHSB = function (hex) {
				return RGBToHSB(HexToRGB(hex));
			},
			RGBToHSB = function (rgb) {
				var hsb = {
					h: 0,
					s: 0,
					b: 0
				};
				var min = Math.min(rgb.r, rgb.g, rgb.b);
				var max = Math.max(rgb.r, rgb.g, rgb.b);
				var delta = max - min;
				hsb.b = max;
				if (max != 0) {
					
				}
				hsb.s = max != 0 ? 255 * delta / max : 0;
				if (hsb.s != 0) {
					if (rgb.r == max) {
						hsb.h = (rgb.g - rgb.b) / delta;
					} else if (rgb.g == max) {
						hsb.h = 2 + (rgb.b - rgb.r) / delta;
					} else {
						hsb.h = 4 + (rgb.r - rgb.g) / delta;
					}
				} else {
					hsb.h = -1;
				}
				hsb.h *= 60;
				if (hsb.h < 0) {
					hsb.h += 360;
				}
				hsb.s *= 100/255;
				hsb.b *= 100/255;
				return hsb;
			},
			HSBToRGB = function (hsb) {
				var rgb = {};
				var h = Math.round(hsb.h);
				var s = Math.round(hsb.s*255/100);
				var v = Math.round(hsb.b*255/100);
				if(s == 0) {
					rgb.r = rgb.g = rgb.b = v;
				} else {
					var t1 = v;
					var t2 = (255-s)*v/255;
					var t3 = (t1-t2)*(h%60)/60;
					if(h==360) h = 0;
					if(h<60) {rgb.r=t1;	rgb.b=t2; rgb.g=t2+t3}
					else if(h<120) {rgb.g=t1; rgb.b=t2;	rgb.r=t1-t3}
					else if(h<180) {rgb.g=t1; rgb.r=t2;	rgb.b=t2+t3}
					else if(h<240) {rgb.b=t1; rgb.r=t2;	rgb.g=t1-t3}
					else if(h<300) {rgb.b=t1; rgb.g=t2;	rgb.r=t2+t3}
					else if(h<360) {rgb.r=t1; rgb.g=t2;	rgb.b=t1-t3}
					else {rgb.r=0; rgb.g=0;	rgb.b=0}
				}
				return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
			},
			RGBToHex = function (rgb) {
				var hex = [
					rgb.r.toString(16),
					rgb.g.toString(16),
					rgb.b.toString(16)
				];
				$.each(hex, function (nr, val) {
					if (val.length == 1) {
						hex[nr] = '0' + val;
					}
				});
				return hex.join('');
			},
			HSBToHex = function (hsb) {
				return RGBToHex(HSBToRGB(hsb));
			},
			restoreOriginal = function () {
				var cal = $(this).parent();
				var col = cal.data('colorpicker').origColor;
				cal.data('colorpicker').color = col;
				fillRGBFields(col, cal.get(0));
				fillHexFields(col, cal.get(0));
				fillHSBFields(col, cal.get(0));
				setSelector(col, cal.get(0));
				setHue(col, cal.get(0));
				setNewColor(col, cal.get(0));
			};
		return {
			init: function (opt) {
				opt = $.extend({}, defaults, opt||{});
				if (typeof opt.color == 'string') {
					opt.color = HexToHSB(opt.color);
				} else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
					opt.color = RGBToHSB(opt.color);
				} else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
					opt.color = fixHSB(opt.color);
				} else {
					return this;
				}
				return this.each(function () {
					if (!$(this).data('colorpickerId')) {
						var options = $.extend({}, opt);
						options.origColor = opt.color;
						var id = 'collorpicker_' + parseInt(Math.random() * 1000);
						$(this).data('colorpickerId', id);
						var cal = $(tpl).attr('id', id);
						if (options.flat) {
							cal.appendTo(this).show();
						} else {
							cal.appendTo(document.body);
						}
						options.fields = cal
											.find('input')
												.bind('keyup', keyDown)
												.bind('change', change)
												.bind('blur', blur)
												.bind('focus', focus);
						cal
							.find('span').bind('mousedown', downIncrement).end()
							.find('>div.colorpicker_current_color').bind('click', restoreOriginal);
						options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
						options.selectorIndic = options.selector.find('div div');
						options.el = this;
						options.hue = cal.find('div.colorpicker_hue div');
						cal.find('div.colorpicker_hue').bind('mousedown', downHue);
						options.newColor = cal.find('div.colorpicker_new_color');
						options.currentColor = cal.find('div.colorpicker_current_color');
						cal.data('colorpicker', options);
						cal.find('div.colorpicker_submit')
							.bind('mouseenter', enterSubmit)
							.bind('mouseleave', leaveSubmit)
							.bind('click', clickSubmit);
						fillRGBFields(options.color, cal.get(0));
						fillHSBFields(options.color, cal.get(0));
						fillHexFields(options.color, cal.get(0));
						setHue(options.color, cal.get(0));
						setSelector(options.color, cal.get(0));
						setCurrentColor(options.color, cal.get(0));
						setNewColor(options.color, cal.get(0));
						if (options.flat) {
							cal.css({
								position: 'relative',
								display: 'block'
							});
						} else {
							$(this).bind(options.eventName, show);
						}
					}
				});
			},
			showPicker: function() {
				return this.each( function () {
					if ($(this).data('colorpickerId')) {
						show.apply(this);
					}
				});
			},
			hidePicker: function() {
				return this.each( function () {
					if ($(this).data('colorpickerId')) {
						$('#' + $(this).data('colorpickerId')).hide();
					}
				});
			},
			setColor: function(col) {
				if (typeof col == 'string') {
					col = HexToHSB(col);
				} else if (col.r != undefined && col.g != undefined && col.b != undefined) {
					col = RGBToHSB(col);
				} else if (col.h != undefined && col.s != undefined && col.b != undefined) {
					col = fixHSB(col);
				} else {
					return this;
				}
				return this.each(function(){
					if ($(this).data('colorpickerId')) {
						var cal = $('#' + $(this).data('colorpickerId'));
						cal.data('colorpicker').color = col;
						cal.data('colorpicker').origColor = col;
						fillRGBFields(col, cal.get(0));
						fillHSBFields(col, cal.get(0));
						fillHexFields(col, cal.get(0));
						setHue(col, cal.get(0));
						setSelector(col, cal.get(0));
						setCurrentColor(col, cal.get(0));
						setNewColor(col, cal.get(0));
					}
				});
			}
		};
	}();
	$.fn.extend({
		ColorPicker: ColorPicker.init,
		ColorPickerHide: ColorPicker.hidePicker,
		ColorPickerShow: ColorPicker.showPicker,
		ColorPickerSetColor: ColorPicker.setColor
	});
})(jQuery)
/*
 * Code from: http://iantearle.com/blog/textarea-placeholder-text
 * 
 * Usage: 
 * if (!$.browser.webkit) {
 * 	$('input').placeholder();
 * }
 * 
 * 
 */

new function($) {
    $.fn.placeholder = function(settings) {
        settings = settings || {};
        var key = settings.dataKey || "placeholderValue";
        var attr = settings.attr || "placeholder";
        var className = settings.className || "placeholder";
        var values = settings.values || [];
        var block = settings.blockSubmit || false;
        var blank = settings.blankSubmit || false;
        var submit = settings.onSubmit || false;
        var value = settings.value || "";
        var position = settings.cursor_position || 0;

        function isBlankOrPlaceholder(val, placeholderValue) {
          return $.trim(val) === "" || val === placeholderValue;
        }

        return this.filter(":input").each(function(index) {
            $.data(this, key, values[index] || $(this).attr(attr));
        }).each(function() {
            var placeholderValue = $.data(this, key);
            if (isBlankOrPlaceholder($(this).val(), placeholderValue))
                $(this).addClass(className).val($.data(this, key));
        }).focus(function() {
            if ($.trim($(this).val()) === $.data(this, key))
                $(this).removeClass(className).val(value)
                if ($.fn.setCursorPosition) {
                  $(this).setCursorPosition(position);
                }
        }).blur(function() {
            if ($.trim($(this).val()) === value)
                $(this).addClass(className).val($.data(this, key));
        }).each(function(index, elem) {
            if (block)
                new function(e) {
                    $(e.form).submit(function() {
                        return $.trim($(e).val()) != $.data(e, key)
                    });
                }(elem);
            else if (blank)
                new function(e) {
                    $(e.form).submit(function() {
                        if ($.trim($(e).val()) == $.data(e, key))
                            $(e).removeClass(className).val("");
                        return true;
                    });
                }(elem);
            else if (submit)
                new function(e) { $(e.form).submit(submit); }(elem);
        });
    };
}(jQuery);

/*
* jquery-google-analytics plugin
*
* A jQuery plugin that makes it easier to implement Google Analytics tracking,
* including event and link tracking.
*
* Adds the following methods to jQuery:
*   - $.trackPage() - Adds Google Analytics tracking on the page from which
*     it's called.
*   - $.trackPageview() - Tracks a pageview using the given uri. Can be used for tracking Ajax requests: http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=55519
*   - $.trackEvent() - Tracks an event using the given parameters.
*   - $('a').track() - Adds event tracking to element(s).
*   - $.timePageLoad() - Measures the time it takes  an event using the given parameters.
*
* Features:
*   - Improves page load time by loading Google Analytics code without blocking.
*   - Easy and extensible event and link tracking plugin for jQuery and Google Analytics
*   - Automatic internal/external link detection. Default behavior is to skip
*     tracking of internal links.
*   - Enforces that tracking event handler is added to an element only once.
*   - Configurable: custom event tracking, skip internal links, metadata
*     extraction using callbacks.
*
* Copyright (c) 2008-09 Christian Hellsten
*
* Plugin homepage:
*   http://aktagon.com/projects/jquery/google-analytics/
*   http://github.com/christianhellsten/jquery-google-analytics/
*
* Examples:
*   http://aktagon.com/projects/jquery/google-analytics/examples/
*   http://code.google.com/apis/analytics/docs/eventTrackerGuide.html
*
* Repository:
*   git://github.com/christianhellsten/jquery-google-analytics.git
*
* Version 1.1.3
*
* Tested with:
*   - Mac: Firefox 3, Safari 3
*   - Linux: Firefox 3
*   - Windows: Firefox 3, Internet Explorer 6
*
* Licensed under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*
* Credits:
*   - http://google.com/analytics
*   - http://lyncd.com: 
*       Idea for trackPage method came from this blog post: http://lyncd.com/2009/03/better-google-analytics-javascript/
*/
(function($) {

  var pageTracker;

  /**
   * Enables Google Analytics tracking on the page from which it's called. 
   *
   * Usage:
   *  <script type="text/javascript">
   *    $.trackPage('UA-xxx-xxx', options);
   *  </script>
   *
   * Parameters:
   *   account_id - Your Google Analytics account ID.
   *   options - An object containing one or more optional parameters:
   *     - onload - boolean - If false, the Google Analytics code is loaded
   *       when this method is called instead of on window.onload.
   *     - status_code - The HTTP status code of the current server response.
   *       If this is set to something other than 200 then the page is tracked
   *       as an error page. For more details: http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=86927
   *     - callback  - function to be executed after the Google Analytics code is laoded and initialized
   *
   */
  $.trackPage = function(account_id, options) {
    var host = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    var script;

    // Use default options, if necessary
    var settings = $.extend({}, {onload: true, status_code: 200}, options);
    var src  = host + 'google-analytics.com/ga.js';

    function init_analytics() {
      if (typeof _gat != undefined) {
        debug('Google Analytics loaded');

        pageTracker = _gat._getTracker(account_id);

        if(settings.status_code == null || settings.status_code == 200) {
          pageTracker._trackPageview();
        } else {
          debug('Tracking error ' + settings.status_code);
          pageTracker._trackPageview("/" + settings.status_code + ".html?page=" + document.location.pathname + document.location.search + "&from=" + document.referrer);
        }
        if($.isFunction(settings.callback)){
          settings.callback();
        }
      }
      else { 
        throw "_gat is undefined"; // setInterval loading?
      }
    }

    load_script = function() {
      $.ajax({
        type: "GET",
        url: src,
        success: function() {          
          init_analytics(); 
        },
        dataType: "script",
        cache: true // We want the cached version
      });
    }
    
    // Enable tracking when called or on page load?
    if(settings.onload == true || settings.onload == null) {
      $(window).load(load_script);
    } else {
      load_script();
    }
  }

  /**
   * Tracks an event using the given parameters. 
   *
   * The trackEvent method takes four arguments:
   *
   *  category - required string used to group events
   *  action - required string used to define event type, eg. click, download
   *  label - optional label to attach to event, eg. buy
   *  value - optional numerical value to attach to event, eg. price
   *  skip_internal - optional boolean value. If true then internal links are not tracked.
   *
   */
  $.trackEvent = function(category, action, label, value) {
    if(typeof pageTracker == 'undefined') {
      debug('FATAL: pageTracker is not defined'); // blocked by whatever
    } else {
      pageTracker._trackEvent(category, action, label, value);
    }
  };

  /**
   * Tracks a pageview using the given uri.
   *
   */
  $.trackPageview = function(uri) {
    if(typeof pageTracker == 'undefined') {
      debug('FATAL: pageTracker is not defined');
    } else {
      pageTracker._trackPageview(uri);
    }
  }

  /**
   * Adds click tracking to elements. Usage:
   *
   *  $('a').track()
   *
   */
  $.fn.track = function(options) {
    // Add event handler to all matching elements
    return this.each(function() {
      var element = $(this);

      // Prevent an element from being tracked multiple times.
      if (element.hasClass('tracked')) {
        return false;
      } else {
        element.addClass('tracked');
      } 

      // Use default options, if necessary
      var settings = $.extend({}, $.fn.track.defaults, options);

      // Merge custom options with defaults.
      var category = evaluate(element, settings.category);
      var action   = evaluate(element, settings.action);
      var label    = evaluate(element, settings.label);
      var value    = evaluate(element, settings.value);
      var event_name = evaluate(element, settings.event_name);
      
      var message = "category:'" + category + "' action:'" + action + "' label:'" + label + "' value:'" + value + "'";
      
      debug('Tracking ' + event_name + ' ' + message);

      // Bind the event to this element. 
      // TODO Use .live since jQuery 1.4 now supports it better.
      element.bind(event_name + '.track', function() {       
        // Should we skip internal links? REFACTOR
        var skip = settings.skip_internal && (element[0].hostname == location.hostname);
      
        if(!skip) {
          $.trackEvent(category, action, label, value);
          debug('Tracked ' + message);
        } else {
          debug('Skipped ' + message);
        }

        return true;
      });
    });
    
    /**
     * Checks whether a setting value is a string or a function.
     * 
     * If second parameter is a string: returns the value of the second parameter.
     * If the second parameter is a function: passes the element to the function and returns function's return value.
     */
    function evaluate(element, text_or_function) {
      if(typeof text_or_function == 'function') {
        text_or_function = text_or_function(element);
      }
      return text_or_function;
    };
  };

  /**
   * Prints to Firebug console, if available. To enable:
   *   $.fn.track.defaults.debug = true;
   */
  function debug(message) {
    if (typeof console != 'undefined' && typeof console.debug != 'undefined' && $.fn.track.defaults.debug) {
      console.debug(message);
    }
  };

  /**
   * Default (overridable) settings.
   */
  $.fn.track.defaults = {
    category      : function(element) { return (element[0].hostname == location.hostname) ? 'internal':'external'; },
    action        : 'click',
    label         : function(element) { return element.attr('href'); },
    value         : null,
    skip_internal : true,
    event_name    : 'click',
    debug         : false
  };
})(jQuery);
/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
/**
 * jQuery BASE64 functions
 * 
 * 	<code>
 * 		Encodes the given data with base64. 
 * 		String $.base64Encode ( String str )
 *		<br />
 * 		Decodes a base64 encoded data.
 * 		String $.base64Decode ( String str )
 * 	</code>
 * 
 * Encodes and Decodes the given data in base64.
 * This encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies.
 * Base64-encoded data takes about 33% more space than the original data. 
 * This javascript code is used to encode / decode data using base64 (this encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean). Script is fully compatible with UTF-8 encoding. You can use base64 encoded data as simple encryption mechanism.
 * If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag). 
 * This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin.
 * 
 * Example
 * 	Code
 * 		<code>
 * 			$.base64Encode("I'm Persian."); 
 * 		</code>
 * 	Result
 * 		<code>
 * 			"SSdtIFBlcnNpYW4u"
 * 		</code>
 * 	Code
 * 		<code>
 * 			$.base64Decode("SSdtIFBlcnNpYW4u");
 * 		</code>
 * 	Result
 * 		<code>
 * 			"I'm Persian."
 * 		</code>
 * 
 * @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com >
 * @link http://www.semnanweb.com/jquery-plugin/base64.html
 * @see http://www.webtoolkit.info/
 * @license http://www.gnu.org/licenses/gpl.html [GNU General Public License]
 * @param {jQuery} {base64Encode:function(input))
 * @param {jQuery} {base64Decode:function(input))
 * @return string
 */

(function($){
	
	var keyString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	
	var uTF8Encode = function(string) {
		string = string.replace(/\x0d\x0a/g, "\x0a");
		var output = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				output += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				output += String.fromCharCode((c >> 6) | 192);
				output += String.fromCharCode((c & 63) | 128);
			} else {
				output += String.fromCharCode((c >> 12) | 224);
				output += String.fromCharCode(((c >> 6) & 63) | 128);
				output += String.fromCharCode((c & 63) | 128);
			}
		}
		return output;
	};
	
	var uTF8Decode = function(input) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < input.length ) {
			c = input.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if ((c > 191) && (c < 224)) {
				c2 = input.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = input.charCodeAt(i+1);
				c3 = input.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
	
	$.extend({
		base64Encode: function(input) {
			var output = "";
			var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
			var i = 0;
			input = uTF8Encode(input);
			while (i < input.length) {
				chr1 = input.charCodeAt(i++);
				chr2 = input.charCodeAt(i++);
				chr3 = input.charCodeAt(i++);
				enc1 = chr1 >> 2;
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
				enc4 = chr3 & 63;
				if (isNaN(chr2)) {
					enc3 = enc4 = 64;
				} else if (isNaN(chr3)) {
					enc4 = 64;
				}
				output = output + keyString.charAt(enc1) + keyString.charAt(enc2) + keyString.charAt(enc3) + keyString.charAt(enc4);
			}
			return output;
		},
		base64Decode: function(input) {
			var output = "";
			var chr1, chr2, chr3;
			var enc1, enc2, enc3, enc4;
			var i = 0;
			input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
			while (i < input.length) {
				enc1 = keyString.indexOf(input.charAt(i++));
				enc2 = keyString.indexOf(input.charAt(i++));
				enc3 = keyString.indexOf(input.charAt(i++));
				enc4 = keyString.indexOf(input.charAt(i++));
				chr1 = (enc1 << 2) | (enc2 >> 4);
				chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
				chr3 = ((enc3 & 3) << 6) | enc4;
				output = output + String.fromCharCode(chr1);
				if (enc3 != 64) {
					output = output + String.fromCharCode(chr2);
				}
				if (enc4 != 64) {
					output = output + String.fromCharCode(chr3);
				}
			}
			output = uTF8Decode(output);
			return output;
		}
	});
})(jQuery);
/*
    http://www.JSON.org/json2.js
    2010-03-20

    Public Domain.

    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.

    See http://www.JSON.org/js.html


    This code should be minified before deployment.
    See http://javascript.crockford.com/jsmin.html

    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
    NOT CONTROL.


    This file creates a global JSON object containing two methods: stringify
    and parse.

        JSON.stringify(value, replacer, space)
            value       any JavaScript value, usually an object or array.

            replacer    an optional parameter that determines how object
                        values are stringified for objects. It can be a
                        function or an array of strings.

            space       an optional parameter that specifies the indentation
                        of nested structures. If it is omitted, the text will
                        be packed without extra whitespace. If it is a number,
                        it will specify the number of spaces to indent at each
                        level. If it is a string (such as '\t' or '&nbsp;'),
                        it contains the characters used to indent at each level.

            This method produces a JSON text from a JavaScript value.

            When an object value is found, if the object contains a toJSON
            method, its toJSON method will be called and the result will be
            stringified. A toJSON method does not serialize: it returns the
            value represented by the name/value pair that should be serialized,
            or undefined if nothing should be serialized. The toJSON method
            will be passed the key associated with the value, and this will be
            bound to the value

            For example, this would serialize Dates as ISO strings.

                Date.prototype.toJSON = function (key) {
                    function f(n) {
                        // Format integers to have at least two digits.
                        return n < 10 ? '0' + n : n;
                    }

                    return this.getUTCFullYear()   + '-' +
                         f(this.getUTCMonth() + 1) + '-' +
                         f(this.getUTCDate())      + 'T' +
                         f(this.getUTCHours())     + ':' +
                         f(this.getUTCMinutes())   + ':' +
                         f(this.getUTCSeconds())   + 'Z';
                };

            You can provide an optional replacer method. It will be passed the
            key and value of each member, with this bound to the containing
            object. The value that is returned from your method will be
            serialized. If your method returns undefined, then the member will
            be excluded from the serialization.

            If the replacer parameter is an array of strings, then it will be
            used to select the members to be serialized. It filters the results
            such that only members with keys listed in the replacer array are
            stringified.

            Values that do not have JSON representations, such as undefined or
            functions, will not be serialized. Such values in objects will be
            dropped; in arrays they will be replaced with null. You can use
            a replacer function to replace those with JSON values.
            JSON.stringify(undefined) returns undefined.

            The optional space parameter produces a stringification of the
            value that is filled with line breaks and indentation to make it
            easier to read.

            If the space parameter is a non-empty string, then that string will
            be used for indentation. If the space parameter is a number, then
            the indentation will be that many spaces.

            Example:

            text = JSON.stringify(['e', {pluribus: 'unum'}]);
            // text is '["e",{"pluribus":"unum"}]'


            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'

            text = JSON.stringify([new Date()], function (key, value) {
                return this[key] instanceof Date ?
                    'Date(' + this[key] + ')' : value;
            });
            // text is '["Date(---current time---)"]'


        JSON.parse(text, reviver)
            This method parses a JSON text to produce an object or array.
            It can throw a SyntaxError exception.

            The optional reviver parameter is a function that can filter and
            transform the results. It receives each of the keys and values,
            and its return value is used instead of the original value.
            If it returns what it received, then the structure is not modified.
            If it returns undefined then the member is deleted.

            Example:

            // Parse the text. Values that look like ISO date strings will
            // be converted to Date objects.

            myData = JSON.parse(text, function (key, value) {
                var a;
                if (typeof value === 'string') {
                    a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                    if (a) {
                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                            +a[5], +a[6]));
                    }
                }
                return value;
            });

            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                var d;
                if (typeof value === 'string' &&
                        value.slice(0, 5) === 'Date(' &&
                        value.slice(-1) === ')') {
                    d = new Date(value.slice(5, -1));
                    if (d) {
                        return d;
                    }
                }
                return value;
            });


    This is a reference implementation. You are free to copy, modify, or
    redistribute.
*/

/*jslint evil: true, strict: false */

/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
    lastIndex, length, parse, prototype, push, replace, slice, stringify,
    test, toJSON, toString, valueOf
*/


// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

if (!this.JSON) {
    this.JSON = {};
}

(function () {

    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    if (typeof Date.prototype.toJSON !== 'function') {

        Date.prototype.toJSON = function (key) {

            return isFinite(this.valueOf()) ?
                   this.getUTCFullYear()   + '-' +
                 f(this.getUTCMonth() + 1) + '-' +
                 f(this.getUTCDate())      + 'T' +
                 f(this.getUTCHours())     + ':' +
                 f(this.getUTCMinutes())   + ':' +
                 f(this.getUTCSeconds())   + 'Z' : null;
        };

        String.prototype.toJSON =
        Number.prototype.toJSON =
        Boolean.prototype.toJSON = function (key) {
            return this.valueOf();
        };
    }

    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap,
        indent,
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        rep;


    function quote(string) {

// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.

        escapable.lastIndex = 0;
        return escapable.test(string) ?
            '"' + string.replace(escapable, function (a) {
                var c = meta[a];
                return typeof c === 'string' ? c :
                    '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
            }) + '"' :
            '"' + string + '"';
    }


    function str(key, holder) {

// Produce a string from holder[key].

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind = gap,
            partial,
            value = holder[key];

// If the value has a toJSON method, call it to obtain a replacement value.

        if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.

        if (typeof rep === 'function') {
            value = rep.call(holder, key, value);
        }

// What happens next depends on the value's type.

        switch (typeof value) {
        case 'string':
            return quote(value);

        case 'number':

// JSON numbers must be finite. Encode non-finite numbers as null.

            return isFinite(value) ? String(value) : 'null';

        case 'boolean':
        case 'null':

// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.

            return String(value);

// If the type is 'object', we might be dealing with an object or an array or
// null.

        case 'object':

// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.

            if (!value) {
                return 'null';
            }

// Make an array to hold the partial results of stringifying this object value.

            gap += indent;
            partial = [];

// Is the value an array?

            if (Object.prototype.toString.apply(value) === '[object Array]') {

// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.

                length = value.length;
                for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                }

// Join all of the elements together, separated with commas, and wrap them in
// brackets.

                v = partial.length === 0 ? '[]' :
                    gap ? '[\n' + gap +
                            partial.join(',\n' + gap) + '\n' +
                                mind + ']' :
                          '[' + partial.join(',') + ']';
                gap = mind;
                return v;
            }

// If the replacer is an array, use it to select the members to be stringified.

            if (rep && typeof rep === 'object') {
                length = rep.length;
                for (i = 0; i < length; i += 1) {
                    k = rep[i];
                    if (typeof k === 'string') {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            } else {

// Otherwise, iterate through all of the keys in the object.

                for (k in value) {
                    if (Object.hasOwnProperty.call(value, k)) {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            }

// Join all of the member texts together, separated with commas,
// and wrap them in braces.

            v = partial.length === 0 ? '{}' :
                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                        mind + '}' : '{' + partial.join(',') + '}';
            gap = mind;
            return v;
        }
    }

// If the JSON object does not yet have a stringify method, give it one.

    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function (value, replacer, space) {

// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.

            var i;
            gap = '';
            indent = '';

// If the space parameter is a number, make an indent string containing that
// many spaces.

            if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                    indent += ' ';
                }

// If the space parameter is a string, it will be used as the indent string.

            } else if (typeof space === 'string') {
                indent = space;
            }

// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.

            rep = replacer;
            if (replacer && typeof replacer !== 'function' &&
                    (typeof replacer !== 'object' ||
                     typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
            }

// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.

            return str('', {'': value});
        };
    }


// If the JSON object does not yet have a parse method, give it one.

    if (typeof JSON.parse !== 'function') {
        JSON.parse = function (text, reviver) {

// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.

            var j;

            function walk(holder, key) {

// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.

                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                    for (k in value) {
                        if (Object.hasOwnProperty.call(value, k)) {
                            v = walk(value, k);
                            if (v !== undefined) {
                                value[k] = v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder, key, value);
            }


// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.

            text = String(text);
            cx.lastIndex = 0;
            if (cx.test(text)) {
                text = text.replace(cx, function (a) {
                    return '\\u' +
                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function' ?
                    walk({'': j}, '') : j;
            }

// If the text is not JSON parseable, then a SyntaxError is thrown.

            throw new SyntaxError('JSON.parse');
        };
    }
}());

/*!
 * geo-location-javascript v0.4.3
 * http://code.google.com/p/geo-location-javascript/
 *
 * Copyright (c) 2009 Stan Wiechers
 * Licensed under the MIT licenses.
 *
 * Revision: $Rev: 68 $: 
 * Author: $Author: whoisstan $:
 * Date: $Date: 2010-02-15 13:42:19 +0100 (Mon, 15 Feb 2010) $:    
 */
var bb_successCallback;
var bb_errorCallback;
var bb_blackberryTimeout_id=-1;

function handleBlackBerryLocationTimeout()
{
	if(bb_blackberryTimeout_id!=-1)
	{
		bb_errorCallback({message:"Timeout error", code:3});
	}
}
function handleBlackBerryLocation()
{
		clearTimeout(bb_blackberryTimeout_id);
		bb_blackberryTimeout_id=-1;
        if (bb_successCallback && bb_errorCallback)
        {
                if(blackberry.location.latitude==0 && blackberry.location.longitude==0)
                {
                        //http://dev.w3.org/geo/api/spec-source.html#position_unavailable_error
                        //POSITION_UNAVAILABLE (numeric value 2)
                        bb_errorCallback({message:"Position unavailable", code:2});
                }
                else
                {  
                        var timestamp=null;
                        //only available with 4.6 and later
                        //http://na.blackberry.com/eng/deliverables/8861/blackberry_location_568404_11.jsp
                        if (blackberry.location.timestamp)
                        {
                                timestamp=new Date(blackberry.location.timestamp);
                        }
                        bb_successCallback({timestamp:timestamp, coords: {latitude:blackberry.location.latitude,longitude:blackberry.location.longitude}});
                }
                //since blackberry.location.removeLocationUpdate();
                //is not working as described http://na.blackberry.com/eng/deliverables/8861/blackberry_location_removeLocationUpdate_568409_11.jsp
                //the callback are set to null to indicate that the job is done

                bb_successCallback = null;
                bb_errorCallback = null;
        }
}

var geo_position_js=function() {

        var pub = {};
        var provider=null;

        pub.getCurrentPosition = function(successCallback,errorCallback,options)
        {
                provider.getCurrentPosition(successCallback, errorCallback,options);
        }

        pub.init = function()
        {			
                try
                {
                        if (typeof(geo_position_js_simulator)!="undefined")
                        {
                                provider=geo_position_js_simulator;
                        }
                        else if (typeof(bondi)!="undefined" && typeof(bondi.geolocation)!="undefined")
                        {
                                provider=bondi.geolocation;
                        }
                        else if (typeof(navigator.geolocation)!="undefined")
                        {
                                provider=navigator.geolocation;
                                pub.getCurrentPosition = function(successCallback, errorCallback, options)
                                {
                                        function _successCallback(p)
                                        {
                                                //for mozilla geode,it returns the coordinates slightly differently
                                                if(typeof(p.latitude)!="undefined")
                                                {
                                                        successCallback({timestamp:p.timestamp, coords: {latitude:p.latitude,longitude:p.longitude}});
                                                }
                                                else
                                                {
                                                        successCallback(p);
                                                }
                                        }
                                        provider.getCurrentPosition(_successCallback,errorCallback,options);
                                }
                        }
                         else if(typeof(window.google)!="undefined" && typeof(google.gears)!="undefined")
                        {
                                provider=google.gears.factory.create('beta.geolocation');
                        }
                        else if ( typeof(Mojo) !="undefined" && typeof(Mojo.Service.Request)!="Mojo.Service.Request")
                        {
                                provider=true;
                                pub.getCurrentPosition = function(successCallback, errorCallback, options)
                                {

                                parameters={};
                                if(options)
                                {
                                         //http://developer.palm.com/index.php?option=com_content&view=article&id=1673#GPS-getCurrentPosition
                                         if (options.enableHighAccuracy && options.enableHighAccuracy==true)
                                         {
                                                parameters.accuracy=1;
                                         }
                                         if (options.maximumAge)
                                         {
                                                parameters.maximumAge=options.maximumAge;
                                         }
                                         if (options.responseTime)
                                         {
                                                if(options.responseTime<5)
                                                {
                                                        parameters.responseTime=1;
                                                }
                                                else if (options.responseTime<20)
                                                {
                                                        parameters.responseTime=2;
                                                }
                                                else
                                                {
                                                        parameters.timeout=3;
                                                }
                                         }
                                }


                                 r=new Mojo.Service.Request('palm://com.palm.location', {
                                        method:"getCurrentPosition",
                                            parameters:parameters,
                                            onSuccess: function(p){successCallback({timestamp:p.timestamp, coords: {latitude:p.latitude, longitude:p.longitude,heading:p.heading}});},
                                            onFailure: function(e){
                                                                if (e.errorCode==1)
                                                                {
                                                                        errorCallback({code:3,message:"Timeout"});
                                                                }
                                                                else if (e.errorCode==2)
                                                                {
                                                                        errorCallback({code:2,message:"Position Unavailable"});
                                                                }
                                                                else
                                                                {
                                                                        errorCallback({code:0,message:"Unknown Error: webOS-code"+errorCode});
                                                                }
                                                        }
                                            });
                                }

                        }
                        else if (typeof(device)!="undefined" && typeof(device.getServiceObject)!="undefined")
                        {
                                provider=device.getServiceObject("Service.Location", "ILocation");

                                //override default method implementation
                                pub.getCurrentPosition = function(successCallback, errorCallback, options)
                                {
                                        function callback(transId, eventCode, result) {
                                            if (eventCode == 4)
                                                {
                                                errorCallback({message:"Position unavailable", code:2});
                                            }
                                                else
                                                {
                                                        //no timestamp of location given?
                                                        successCallback({timestamp:null, coords: {latitude:result.ReturnValue.Latitude, longitude:result.ReturnValue.Longitude, altitude:result.ReturnValue.Altitude,heading:result.ReturnValue.Heading}});
                                                }
                                        }
                                        //location criteria
                                    var criteria = new Object();
                                criteria.LocationInformationClass = "BasicLocationInformation";
                                        //make the call
                                        provider.ILocation.GetLocation(criteria,callback);
                                }
                        }
                        else if(typeof(window.blackberry)!="undefined" && blackberry.location.GPSSupported)
                        {

                                // set to autonomous mode
								if(typeof(blackberry.location.setAidMode)=="undefined")
								{
	                                return false;									
								}
								blackberry.location.setAidMode(2);
                                //override default method implementation
                                pub.getCurrentPosition = function(successCallback,errorCallback,options)
                                {
										//alert(parseFloat(navigator.appVersion));
                                        //passing over callbacks as parameter didn't work consistently
                                        //in the onLocationUpdate method, thats why they have to be set
                                        //outside
                                        bb_successCallback=successCallback;
                                        bb_errorCallback=errorCallback;
                                        //function needs to be a string according to
                                        //http://www.tonybunce.com/2008/05/08/Blackberry-Browser-Amp-GPS.aspx
										if(options['timeout'])  
										{
										 	bb_blackberryTimeout_id=setTimeout("handleBlackBerryLocationTimeout()",options['timeout']);
										}
										else
										//default timeout when none is given to prevent a hanging script
										{
											bb_blackberryTimeout_id=setTimeout("handleBlackBerryLocationTimeout()",60000);
										}										
										blackberry.location.onLocationUpdate("handleBlackBerryLocation()");
                                        blackberry.location.refreshLocation();
                                }
                                provider=blackberry.location;				
                        }
                }
                catch (e){ 
					alert("error="+e);
					if(typeof(console)!="undefined")
					{
						console.log(e);
					}
					return false;
				}
                return  provider!=null;
        }


        return pub;
}();
// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
(function(){
  var cache = {};

  this.tmpl = function tmpl(str, data){
    // Figure out if we're getting a template, or if we need to
    // load the template - and be sure to cache the result.
    var fn = !/\W/.test(str) ?
      cache[str] = cache[str] ||
        tmpl(document.getElementById(str).innerHTML) :

      // Generate a reusable function that will serve as a template
      // generator (and which will be cached).
      new Function("obj",
        "var p=[],print=function(){p.push.apply(p,arguments);};" +

        // Introduce the data as local variables using with(){}
        "with(obj){p.push('" +

        // Convert the template into pure JavaScript
		str.replace(/[\r\t\n]/g, " ")
		   .replace(/'(?=[^#]*#>)/g,"\t")
		   .split("'").join("\\'")
		   .split("\t").join("'")
		   .replace(/<#=(.+?)#>/g, "',$1,'")
		   .split("<#").join("');")
		   .split("#>").join("p.push('")
		   + "');}return p.join('');");

    // Provide some basic currying to the user
    return data ? fn( data ) : fn;
  };
})();
/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09i
 */
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("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}})());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}})());
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Copr. 1996, Tobias Frere-Jones. Designed by Tobias Frere-Jones. Produced by The
 * Font Bureau, Inc.
 * 
 * Manufacturer:
 * Copr. Tobias Frere-Jones. Designed by Tobias Frere-Jones. Produced by The Font
 * Bureau, Inc
 */
Cufon.registerFont({"w":194,"face":{"font-family":"Interstate Cond Mono - Blk","font-weight":400,"font-stretch":"normal","units-per-em":"360","panose-1":"2 0 5 6 4 0 0 2 0 4","ascent":"288","descent":"-72","x-height":"4","bbox":"-23 -326 455 69","underline-thickness":"7.2","underline-position":"-40.68","unicode-range":"U+0020-U+FB02"},"glyphs":{" ":{"w":93},"\u0141":{"d":"25,0r0,-82r-15,11r0,-55r15,-11r0,-115r59,0r0,78r28,-20r0,55r-28,20r0,66r79,0r0,53r-138,0","w":173},"\u0142":{"d":"76,-116r0,116r-53,0r0,-83r-17,11r0,-53r17,-12r0,-104r53,-21r0,93r17,-12r0,54","w":99},"\u0160":{"d":"131,-179v-9,-19,-50,-43,-58,-9v9,41,68,37,86,68v9,15,15,27,16,50v4,91,-134,91,-165,30r41,-37v13,15,24,29,43,31v27,4,27,-37,7,-47v-38,-20,-86,-31,-86,-90v0,-72,97,-94,142,-50v5,5,10,11,15,17xm114,-267r-42,0r-40,-58r38,0r23,24r23,-24r37,0","w":186},"\u0161":{"d":"77,-149v-12,-1,-13,13,-8,21v28,19,72,24,72,74v0,68,-96,72,-132,33r27,-39v15,11,21,18,39,20v27,-5,12,-26,-4,-32v-30,-12,-56,-21,-56,-64v0,-64,88,-71,124,-34r-26,39v-14,-11,-18,-17,-36,-18xm96,-212r-42,0r-40,-58r38,0r23,24r23,-24r37,0","w":152},"\u00dd":{"d":"132,-98r0,98r-61,0r0,-96r-67,-156r66,0v10,34,26,70,32,106v5,-37,21,-73,32,-106r65,0xm120,-267r-39,0r26,-58r64,0","w":202},"\u00fd":{"d":"93,67r-53,0r20,-62r-56,-194r58,0r23,136v2,-48,14,-91,22,-136r58,0xm103,-209r-39,0r26,-58r64,0","w":168},"\u00de":{"d":"77,-211v65,-3,104,15,104,79v0,63,-38,86,-104,82r0,50r-59,0r0,-252r59,0r0,41xm77,-98v29,2,45,-2,45,-33v0,-30,-16,-34,-45,-32r0,65","w":189},"\u00fe":{"d":"105,-193v41,4,52,45,52,98v-1,55,-10,95,-53,99v-14,0,-27,-7,-34,-14r0,58r-55,21r0,-310r55,-21r0,84v10,-7,18,-16,35,-15xm70,-50v31,22,31,-14,32,-44v1,-30,-4,-65,-32,-46r0,90","w":166},"\u017d":{"d":"15,0r0,-45r89,-158r-84,1r0,-50r151,0r0,45r-89,158r89,-1r0,50r-156,0xm117,-266r-42,0r-40,-58r38,0r23,24r23,-24r37,0","w":187},"\u017e":{"d":"12,0r0,-41r69,-103r-64,1r0,-46r126,0r0,41r-68,103r68,-1r0,46r-131,0xm102,-212r-42,0r-40,-58r38,0r23,24r23,-24r37,0","w":156},"\u00bd":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00bc":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00b9":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00be":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00b3":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00b2":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00a6":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u2212":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00d7":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00f0":{"d":"123,-220v43,51,62,228,-41,224v-50,-3,-68,-36,-72,-88v-4,-64,56,-114,102,-70v-3,-15,-8,-28,-17,-38r-14,15r-23,-20r13,-13v-8,-4,-18,-7,-30,-7r0,-39v24,1,43,6,59,16r16,-16r22,20xm83,-42v17,-2,18,-17,18,-42v0,-24,-2,-38,-18,-41v-17,2,-18,16,-18,41v0,25,0,40,18,42","w":165},"!":{"d":"69,-78r-40,0v-10,-51,-11,-111,-10,-174r59,0v1,62,0,122,-9,174xm49,-60v19,0,32,14,32,32v0,18,-13,32,-32,32v-18,0,-32,-14,-32,-32v0,-18,14,-32,32,-32","w":98},"\"":{"d":"157,-134r-41,0r-13,-118r65,0xm69,-134r-41,0r-12,-118r65,0","w":185,"k":{"\u0153":4,"\u00e6":6,"z":2,"x":5,"t":-4,"s":4,"q":4,"o":4,"g":4,"e":4,"d":4,"c":4,"a":6,"Z":2,"X":6,"J":26,"A":26}},"#":{"d":"163,-49r0,49r-50,0r0,-49r-32,0r0,49r-49,0r0,-49r-22,0r0,-46r22,0r0,-62r-22,0r0,-46r22,0r0,-49r49,0r0,49r32,0r0,-49r50,0r0,49r21,0r0,46r-21,0r0,62r21,0r0,46r-21,0xm115,-159r-36,0r0,66r36,0r0,-66"},"$":{"d":"124,-191v-9,-16,-51,-24,-53,3v9,39,76,36,94,68v34,36,13,114,-38,118r0,32r-61,0r0,-31v-27,-6,-44,-22,-59,-41r42,-35v18,20,34,31,49,31v22,0,33,-28,17,-40v-38,-29,-104,-30,-103,-97v1,-36,23,-59,54,-67r0,-32r61,0r0,31v24,7,37,20,52,37r-43,35"},"&":{"d":"127,-113r14,-35r45,18r-29,64r42,66r-61,0r-12,-18v-35,40,-127,25,-119,-45v4,-35,21,-57,42,-78v-11,-16,-22,-32,-23,-55v-5,-72,108,-74,138,-30r-33,41v-12,-11,-19,-22,-37,-22v-18,0,-10,25,-4,35xm75,-99v-21,12,-16,69,15,52v3,-2,6,-5,10,-11","w":198,"k":{"\ufb02":5,"\ufb01":5,"\u0152":4,"\u00c6":4,"y":15,"w":11,"v":14,"u":2,"t":4,"s":4,"f":5,"c":2,"Y":22,"X":4,"W":14,"V":18,"U":6,"T":16,"S":6,"Q":4,"O":4,"J":2,"G":4,"C":4}},"'":{"d":"72,-134r-43,0r-12,-118r67,0","w":101,"k":{"\u0153":4,"\u00e6":6,"z":2,"x":5,"t":-4,"s":4,"q":4,"o":4,"g":4,"e":4,"d":4,"c":4,"a":6,"Z":2,"X":6,"J":26,"A":26}},"(":{"d":"96,-239v-40,64,-40,195,0,259r-33,20v-53,-54,-70,-192,-21,-266v7,-10,13,-22,21,-32","w":97,"k":{"\ufb02":6,"\ufb01":6,"\u0153":14,"\u0152":9,"\u00e6":12,"\u00c6":5,"\u00df":4,"z":5,"y":11,"x":5,"w":11,"v":11,"u":9,"t":5,"s":9,"r":6,"q":11,"o":14,"n":6,"m":6,"j":-16,"g":11,"f":6,"e":14,"d":11,"c":14,"a":12,"X":2,"S":5,"Q":9,"O":9,"J":6,"G":9,"C":9,"A":5}},")":{"d":"35,-258v52,56,68,192,20,266v-7,11,-12,22,-20,32r-34,-20v41,-65,40,-194,0,-259","w":97},"*":{"d":"137,-120r-39,-34r10,51r-47,0r10,-51r-39,33r-24,-39r51,-17r-51,-18r24,-40r39,34r-10,-51r47,0r-10,51r39,-34r24,40r-52,17r52,18","w":169,"k":{"\ufb02":-2,"\ufb01":-2,"\u00e6":6,"\u00c6":26,"z":1,"t":-4,"f":-2,"a":6,"Z":6,"Y":8,"X":13,"W":2,"V":4,"J":47,"A":26}},"+":{"d":"125,-98r0,56r-56,0r0,-56r-50,0r0,-52r50,0r0,-55r56,0r0,55r51,0r0,52r-51,0"},",":{"d":"53,42r-36,0r6,-104r61,0","w":97,"k":{"\ufb02":5,"\ufb01":5,"\u2019":18,"\u201d":18,"\u0153":5,"\u0152":8,"\u00c6":2,"y":22,"x":3,"w":22,"v":25,"u":2,"t":8,"q":2,"o":5,"j":-4,"g":2,"f":5,"e":5,"d":2,"c":5,"Y":40,"X":1,"W":21,"V":31,"U":6,"T":32,"Q":8,"O":8,"J":-2,"G":8,"C":8,"A":2,"'":18,"\"":18}},"-":{"d":"22,-95r0,-57r150,0r0,57r-150,0","k":{"\u00e6":4,"\u00c6":18,"z":5,"y":2,"x":8,"w":1,"v":2,"a":4,"Z":21,"Y":26,"X":24,"W":9,"V":13,"T":28,"S":5,"J":24,"A":18}},".":{"d":"49,-66v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35","w":97,"k":{"\ufb02":5,"\ufb01":5,"\u2019":18,"\u201d":18,"\u0153":6,"\u0152":12,"y":22,"w":21,"v":23,"u":2,"t":8,"q":3,"o":6,"g":3,"f":5,"e":6,"d":3,"c":6,"Y":44,"X":2,"W":24,"V":35,"U":10,"T":32,"Q":12,"O":12,"J":-2,"G":12,"C":12,"'":18,"\"":18}},"\/":{"d":"57,0r-61,0r142,-252r60,0","k":{"\ufb02":9,"\ufb01":9,"\u0153":25,"\u0152":13,"\u00e6":26,"\u00c6":35,"\u00df":12,"z":19,"y":11,"x":18,"w":11,"v":11,"u":18,"t":6,"s":26,"r":19,"q":23,"p":19,"o":25,"n":19,"m":19,"l":2,"k":2,"j":3,"i":3,"h":2,"g":23,"f":9,"e":25,"d":23,"c":25,"b":2,"a":26,"Z":4,"X":8,"S":9,"Q":13,"O":13,"J":29,"G":13,"C":13,"A":35}},"0":{"d":"98,-256v65,0,87,54,86,130v0,75,-22,130,-87,130v-64,0,-87,-54,-87,-130v-1,-75,24,-130,88,-130xm98,-48v31,-3,26,-44,26,-78v0,-35,4,-74,-27,-78v-31,4,-26,42,-26,78v0,37,-4,73,27,78"},"1":{"d":"32,-222v27,-1,44,-9,50,-30r50,0r0,207r41,0r0,45r-145,0r0,-45r45,0r0,-140r-41,0r0,-37"},"2":{"d":"174,-190v1,79,-88,74,-99,140r100,0r0,50r-165,0v-1,-91,52,-125,101,-167v13,-11,7,-41,-14,-39v-23,2,-33,14,-46,29r-40,-33v20,-25,42,-46,87,-46v46,0,76,23,76,66"},"3":{"d":"140,-135v24,7,38,28,38,60v0,73,-80,96,-136,67v-14,-7,-25,-20,-36,-36r43,-31v9,31,70,45,71,-1v1,-31,-24,-33,-56,-32r0,-48v28,2,51,0,50,-27v-1,-14,-10,-24,-24,-24v-21,0,-28,12,-40,26r-39,-33v19,-23,40,-42,81,-42v47,0,80,21,80,66v1,29,-14,46,-32,55"},"4":{"d":"163,-49r0,49r-52,0r0,-50r-104,0r0,-41r95,-161r61,0r0,155r22,0r0,48r-22,0xm113,-189v-15,33,-31,66,-50,93r49,-1"},"5":{"d":"122,-85v6,-43,-41,-49,-55,-23r-49,-13r7,-131r144,0r0,50r-96,0r-2,40v52,-30,117,6,108,75v12,99,-126,118,-169,48r38,-36v13,16,22,29,45,29v24,0,26,-14,29,-39"},"6":{"d":"116,-162v46,1,65,31,66,79v0,55,-32,87,-87,87v-100,0,-97,-144,-51,-203v23,-30,53,-50,99,-58r15,46v-43,10,-72,29,-87,63v12,-8,25,-15,45,-14xm97,-44v19,-1,28,-12,28,-35v0,-23,-7,-37,-27,-37v-23,0,-28,14,-28,38v0,22,6,34,27,34"},"7":{"d":"181,-206v-47,51,-74,107,-71,206r-57,0v-1,-89,22,-152,63,-202r-106,0r0,-50r171,0r0,46"},"8":{"d":"153,-137v18,12,31,30,31,60v1,53,-35,81,-87,81v-53,0,-86,-29,-87,-81v0,-30,13,-48,32,-59v-14,-10,-26,-25,-25,-49v2,-47,33,-71,81,-71v47,0,78,24,79,71v1,23,-11,38,-24,48xm98,-158v16,0,24,-10,23,-26v0,-18,-8,-27,-24,-27v-16,1,-24,9,-24,27v0,16,9,26,25,26xm98,-44v22,0,29,-11,29,-34v0,-22,-9,-34,-30,-34v-19,0,-29,11,-29,34v0,24,9,33,30,34"},"9":{"d":"99,-256v101,0,97,143,52,203v-23,30,-54,50,-100,58r-14,-46v43,-10,72,-29,87,-63v-46,33,-112,5,-112,-65v0,-54,33,-87,87,-87xm96,-136v22,0,29,-14,29,-38v1,-22,-8,-34,-28,-34v-19,1,-28,12,-27,35v0,22,7,37,26,37"},":":{"d":"49,-193v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35xm49,-66v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35","w":97,"k":{"t":-1,"Y":22,"X":2,"W":6,"V":14,"T":20}},";":{"d":"49,-193v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35xm49,42r-35,0r5,-103r60,0","w":97,"k":{"Y":22,"X":2,"W":6,"V":14,"T":20}},"<":{"d":"19,-102r0,-46r155,-91r0,65r-92,49r92,48r0,66"},"=":{"d":"21,-139r0,-55r153,0r0,55r-153,0xm21,-54r0,-55r153,0r0,55r-153,0"},">":{"d":"20,-11r0,-65r93,-49r-93,-48r0,-66r156,91r0,46"},"?":{"d":"87,-256v45,0,71,22,74,65v4,59,-60,55,-57,113r-53,0v0,-38,12,-59,34,-75v12,-10,19,-21,19,-33v0,-37,-49,-13,-59,8r-40,-34v18,-24,40,-44,82,-44xm77,-60v19,0,33,14,33,32v0,18,-14,32,-33,32v-18,0,-32,-14,-32,-32v0,-18,14,-32,32,-32","w":168},"@":{"d":"38,-126v-4,75,53,130,119,97r10,20v-81,41,-158,-26,-153,-117v4,-74,33,-130,105,-130v70,0,104,54,104,126v0,40,-6,73,-43,75v-16,0,-29,-7,-35,-16v-25,26,-85,21,-77,-32v-4,-39,33,-56,64,-40v9,-35,-31,-32,-47,-20r-11,-25v30,-19,96,-21,91,31v4,27,-12,76,15,80v21,-3,19,-29,19,-53v0,-58,-24,-103,-80,-103v-60,0,-78,48,-81,107xm100,-103v-2,22,21,22,32,13r0,-28v-13,-8,-35,-6,-32,15","w":237},"A":{"d":"136,0r-9,-47r-50,0r-9,47r-62,0r66,-252r62,0r64,252r-62,0xm117,-96r-15,-92v-3,31,-8,62,-15,92r30,0","w":204,"k":{"\u00b7":18,"\ufb02":6,"\ufb01":6,"\u2039":4,"\u2019":29,"\u2018":24,"\u201d":29,"\u2014":18,"\u2013":18,"\u0153":5,"\u0152":5,"\u00ab":4,"\u00e6":2,"\u2122":31,"\u00a9":10,"\u00ae":10,"\u2022":17,"\u2020":18,"}":5,"y":18,"w":16,"v":18,"u":4,"t":8,"q":4,"o":5,"g":4,"f":6,"e":5,"d":4,"c":5,"a":2,"]":5,"\\":35,"Y":29,"W":16,"V":26,"U":7,"T":24,"S":4,"Q":5,"O":5,"G":5,"C":5,"?":21,"-":18,"*":26,")":5,"'":26,"&":5,"\"":26}},"B":{"d":"152,-134v21,9,34,26,33,57v-1,51,-26,77,-78,77r-89,0r0,-252v76,1,163,-15,163,67v0,29,-11,41,-29,51xm123,-180v0,-29,-22,-25,-47,-25r0,51v26,0,47,5,47,-26xm126,-76v0,-33,-20,-34,-50,-32r0,61v28,0,50,5,50,-29","w":196,"k":{"\u201e":6,"\u201a":6,"\u00b7":2,"\ufb02":4,"\ufb01":4,"\u203a":5,"\u2019":4,"\u201d":4,"\u0153":2,"\u0152":1,"\u00bb":5,"\u00e6":2,"\u00c6":8,"\u2122":6,"}":4,"z":6,"y":7,"x":8,"w":8,"v":7,"u":2,"t":4,"s":2,"q":2,"o":2,"l":2,"j":2,"i":2,"g":2,"f":4,"e":2,"d":2,"c":2,"a":2,"]":4,"\\":12,"Z":4,"Y":12,"X":7,"W":8,"V":8,"T":9,"Q":1,"O":1,"G":1,"C":1,"A":6,"?":4,"\/":2,".":6,",":6,"*":2,")":4,"'":4,"&":2,"\"":4}},"C":{"d":"183,-70v-11,43,-30,75,-83,74v-67,-1,-88,-56,-88,-130v0,-90,41,-149,123,-125v30,9,41,40,47,74r-58,15v-5,-21,-4,-40,-23,-42v-31,4,-27,42,-27,78v0,36,-3,74,28,78v21,-2,19,-22,25,-41","w":192,"k":{"\u201e":4,"\u201a":4,"\u00b7":10,"\ufb02":4,"\ufb01":4,"\u2039":3,"\u2014":13,"\u2013":13,"\u0153":5,"\u0152":6,"\u00ab":3,"\u00e6":4,"\u00c6":5,"\u00a9":5,"\u00ae":5,"\u2022":9,"\u2020":5,"z":4,"y":6,"x":5,"w":6,"v":6,"u":2,"t":4,"s":4,"q":4,"o":5,"g":4,"f":4,"e":5,"d":4,"c":5,"a":4,"\\":10,"Z":4,"Y":9,"X":5,"V":4,"U":2,"T":4,"S":4,"Q":6,"O":6,"J":2,"G":6,"C":6,"A":1,"\/":4,".":4,"-":13,",":4,"*":2,"&":2}},"D":{"d":"91,-252v73,1,98,45,98,124v0,78,-25,128,-103,128r-68,0r0,-252r73,0xm78,-50v49,5,49,-32,49,-77v0,-44,0,-81,-49,-75r0,152","w":200,"k":{"\u201e":13,"\u201a":13,"\u203a":2,"\u00bb":2,"\u00c6":13,"\u2122":4,"}":8,"z":2,"x":2,"]":8,"\\":13,"Z":7,"Y":14,"X":13,"W":5,"V":10,"T":10,"S":2,"J":4,"A":8,"?":6,"\/":13,".":14,",":13,")":8,"&":2}},"E":{"d":"18,0r0,-252r148,0r0,51r-88,0r0,44r57,0r0,51r-57,0r0,55r90,0r0,51r-150,0","w":181,"k":{"\u00b7":16,"\ufb02":5,"\ufb01":5,"\u2039":5,"\u2014":18,"\u2013":18,"\u0153":6,"\u0152":9,"\u00ab":5,"\u00e6":4,"\u00a9":6,"\u00ae":6,"\u2022":17,"\u2020":13,"z":2,"y":13,"w":12,"v":13,"u":4,"t":5,"q":5,"o":6,"g":5,"f":5,"e":6,"d":5,"c":6,"a":4,"Y":2,"S":2,"Q":9,"O":9,"G":9,"C":9,"-":18,"*":4,"&":4}},"F":{"d":"78,-200r0,44r60,0r0,51r-60,0r0,105r-60,0r0,-252r152,0r0,52r-92,0","w":178,"k":{"\u0131":21,"\u201e":44,"\u201a":44,"\u00b7":16,"\u2021":13,"\ufb02":10,"\ufb01":10,"\u203a":9,"\u2039":14,"\u2019":-2,"\u201d":-2,"\u2014":18,"\u2013":18,"\u0153":25,"\u0152":9,"\u00bb":9,"\u00ab":14,"\u00e6":28,"\u00c6":40,"\u2122":-5,"\u00a9":9,"\u00ae":9,"\u2022":17,"\u2020":13,"z":24,"y":18,"x":24,"w":18,"v":18,"u":21,"t":5,"s":21,"r":21,"q":22,"p":21,"o":25,"n":21,"m":21,"g":22,"f":10,"e":25,"d":22,"c":25,"a":28,"Z":2,"X":2,"S":2,"Q":9,"O":9,"J":51,"G":9,"C":9,"A":25,"?":-4,";":14,":":14,"\/":32,".":44,"-":18,",":44,"&":14}},"G":{"d":"188,-135v5,79,-11,141,-87,139v-66,-2,-89,-53,-89,-130v0,-89,41,-149,124,-125v30,9,40,37,48,70r-57,17v-6,-22,-5,-37,-25,-40v-31,4,-28,42,-28,78v0,38,-4,77,31,79v24,1,26,-18,26,-42r-29,0r0,-46r86,0","w":200,"k":{"\u201e":10,"\u201a":10,"\ufb02":2,"\ufb01":2,"\u00c6":6,"}":5,"z":4,"y":6,"x":5,"w":2,"v":2,"t":2,"f":2,"]":5,"\\":13,"Z":4,"Y":13,"X":6,"W":4,"V":6,"T":10,"S":2,"A":5,"?":5,"\/":8,".":8,",":10,")":2}},"H":{"d":"130,0r0,-105r-51,0r0,105r-61,0r0,-252r61,0r0,94r51,0r0,-94r61,0r0,252r-61,0","w":209},"I":{"d":"19,0r0,-252r61,0r0,252r-61,0","w":100},"J":{"d":"174,-252v-3,119,32,294,-119,250v-31,-9,-44,-38,-50,-73r58,-13v6,21,6,39,28,40v14,0,22,-11,22,-32r0,-172r61,0","w":191,"k":{"\u201e":10,"\u201a":10,"\u00c6":12,"z":4,"x":2,"s":1,"X":4,"J":4,"A":7,"\/":10,".":10,",":10,"&":4}},"K":{"d":"131,0r-37,-106r-15,22r0,84r-61,0r0,-252r61,0r-1,93r47,-93r68,0r-54,91r59,161r-67,0","w":202,"k":{"\u00b7":25,"\u2021":8,"\ufb02":8,"\ufb01":8,"\u203a":2,"\u2039":8,"\u2019":10,"\u2018":14,"\u201d":10,"\u2014":24,"\u2013":24,"\u0153":7,"\u0152":9,"\u00bb":2,"\u00ab":8,"\u00e6":2,"\u00a9":6,"\u00ae":6,"\u2022":20,"\u2020":14,"}":5,"z":4,"y":20,"x":5,"w":18,"v":21,"u":5,"t":8,"s":4,"q":8,"o":7,"g":8,"f":8,"e":7,"d":8,"c":7,"a":2,"]":5,"\\":4,"Y":6,"X":3,"W":6,"V":6,"U":4,"T":4,"S":2,"Q":9,"O":9,"J":5,"G":9,"C":9,"?":6,"-":24,"*":12,"'":4,"&":4,"\"":4,"!":3}},"L":{"d":"18,0r0,-252r61,0r0,199r78,0r0,53r-139,0","w":166,"k":{"\u00b7":35,"\ufb02":6,"\ufb01":6,"\u2039":4,"\u2019":32,"\u2018":26,"\u201d":32,"\u2014":31,"\u2013":31,"\u0153":4,"\u0152":8,"\u00ab":4,"\u2122":38,"\u00a9":9,"\u00ae":9,"\u2022":24,"\u2020":21,"}":5,"y":21,"w":18,"v":21,"t":8,"q":4,"o":4,"g":4,"f":6,"e":4,"d":4,"c":4,"]":5,"\\":39,"Y":39,"X":5,"W":18,"V":32,"U":9,"T":33,"Q":8,"O":8,"G":8,"C":8,"?":26,"-":31,"*":36,")":5,"'":26,"&":2,"\"":26}},"M":{"d":"165,0r2,-129r-48,137r-47,-137r1,129r-55,0r0,-252r55,0r37,105v4,14,7,25,9,34r46,-139r55,0r0,252r-55,0","w":238},"N":{"d":"143,0r-70,-141r2,141r-57,0r0,-252r53,0r65,128r-2,-128r57,0r0,252r-48,0","w":209},"O":{"d":"102,-256v65,0,91,53,90,130v0,74,-21,130,-91,130v-65,0,-89,-53,-89,-130v0,-78,24,-130,90,-130xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78","w":203,"k":{"\u201e":13,"\u201a":13,"\u203a":4,"\u2019":4,"\u00bb":4,"\u00e6":2,"\u00c6":12,"}":10,"z":3,"x":5,"a":2,"]":10,"\\":13,"Z":10,"Y":12,"X":12,"W":5,"V":10,"T":12,"S":4,"J":4,"A":5,"?":6,"\/":13,".":12,",":13,")":9,"&":4}},"P":{"d":"18,-252v82,-1,163,-10,163,78v0,63,-38,87,-104,83r0,91r-59,0r0,-252xm77,-140v29,2,45,-2,45,-32v0,-29,-17,-33,-45,-31r0,63","w":189,"k":{"\u201e":44,"\u201a":44,"\ufb02":-1,"\ufb01":-1,"\u2039":5,"\u0153":5,"\u00ab":5,"\u00e6":9,"\u00c6":33,"}":2,"z":5,"y":-2,"x":4,"w":-2,"v":-2,"t":-2,"s":3,"q":4,"o":5,"g":4,"f":-1,"e":5,"d":4,"c":5,"a":9,"]":2,"\\":6,"Z":10,"Y":8,"X":11,"W":3,"V":5,"T":2,"J":46,"A":20,"\/":24,".":44,",":44,"&":8}},"Q":{"d":"102,-256v96,-5,108,143,71,216r20,20r-33,32r-18,-19v-77,36,-130,-26,-130,-119v0,-78,24,-126,90,-130xm73,-126v0,38,-5,79,32,80r-18,-20r32,-31r10,11v-2,-47,12,-110,-27,-118v-33,3,-29,42,-29,78","w":203,"k":{"\u201e":11,"\u201a":11,"\u203a":4,"\u2019":4,"\u00bb":4,"\u00e6":2,"\u00c6":8,"}":9,"z":3,"x":3,"a":2,"]":9,"\\":13,"Z":9,"Y":12,"X":12,"W":5,"V":10,"T":12,"S":4,"A":5,"?":6,"\/":8,".":10,",":11,")":8,"&":4}},"R":{"d":"184,-175v0,34,-13,54,-34,66r37,109r-64,0r-29,-96r-17,0r0,96r-59,0r0,-252v83,-1,166,-10,166,77xm77,-143v29,2,47,0,47,-31v0,-31,-18,-32,-47,-30r0,61","w":198,"k":{"\u201e":6,"\u201a":6,"\u2039":4,"\u0153":6,"\u0152":4,"\u00ab":4,"\u00e6":2,"\u00c6":4,"}":5,"z":2,"y":2,"x":2,"w":2,"v":2,"u":2,"s":4,"q":5,"o":6,"g":5,"e":6,"d":5,"c":6,"a":2,"]":5,"\\":12,"Z":3,"Y":10,"X":4,"V":8,"U":1,"T":6,"Q":4,"O":4,"J":7,"G":4,"C":4,"A":4,"?":4,"\/":2,".":5,",":6,")":2,"&":5}},"S":{"d":"131,-179v-9,-19,-50,-43,-58,-9v9,41,68,37,86,68v9,15,15,27,16,50v4,91,-134,91,-165,30r41,-37v13,15,24,29,43,31v27,4,27,-37,7,-47v-38,-20,-86,-31,-86,-90v0,-72,97,-94,142,-50v5,5,10,11,15,17","w":186,"k":{"\u201e":5,"\u201a":5,"\ufb02":3,"\ufb01":3,"\u203a":8,"\u2039":-4,"\u2019":8,"\u2018":9,"\u201d":5,"\u2014":5,"\u2013":5,"\u0153":2,"\u0152":1,"\u00bb":8,"\u00ab":-4,"\u00e6":2,"\u00c6":4,"\u2020":6,"}":6,"z":5,"y":9,"x":8,"w":9,"v":9,"u":2,"t":4,"s":2,"q":2,"o":2,"g":2,"f":3,"e":2,"d":2,"c":2,"a":2,"]":6,"\\":10,"Y":12,"X":6,"W":2,"V":7,"T":5,"S":4,"Q":1,"O":1,"G":1,"C":1,"A":3,"?":4,"\/":4,".":4,"-":5,",":5,"*":5,")":5,"'":4,"\"":4}},"T":{"d":"121,-199r0,199r-61,0r0,-199r-51,0r0,-53r163,0r0,53r-51,0","w":181,"k":{"\u0131":26,"\u201e":32,"\u201a":32,"\u00b7":29,"\u2021":16,"\ufb02":13,"\ufb01":13,"\u203a":18,"\u2039":26,"\u2018":4,"\u2014":28,"\u2013":28,"\u0153":32,"\u0152":12,"\u00bb":18,"\u00ab":26,"\u00e6":33,"\u00c6":32,"\u2122":-4,"\u00a9":14,"\u00ae":14,"\u2022":22,"\u2020":16,"z":29,"y":28,"x":29,"w":29,"v":28,"u":26,"t":9,"s":29,"r":26,"q":31,"p":26,"o":32,"n":26,"m":26,"l":4,"k":4,"j":2,"i":2,"h":4,"g":31,"f":13,"e":32,"d":31,"c":32,"b":4,"a":33,"Z":6,"X":5,"S":5,"Q":12,"O":12,"J":30,"G":12,"C":12,"A":24,";":20,":":20,"\/":30,".":32,"-":28,",":32,"&":12}},"U":{"d":"190,-88v0,60,-30,91,-87,92v-56,0,-87,-32,-86,-91r0,-165r61,0r0,167v0,22,5,37,26,37v20,0,25,-15,25,-37r0,-167r61,0r0,164","w":207,"k":{"\u201e":10,"\u201a":10,"\u203a":2,"\u00bb":2,"\u00e6":2,"\u00c6":12,"z":2,"x":6,"a":2,"Z":4,"X":4,"J":3,"A":7,"\/":10,".":10,",":10,"&":4}},"V":{"d":"130,0r-61,0r-63,-252r65,0r29,180r29,-180r63,0","w":199,"k":{"\u0131":14,"\u201e":35,"\u201a":35,"\u00b7":16,"\u2021":8,"\ufb02":8,"\ufb01":8,"\u203a":10,"\u2039":22,"\u2018":4,"\u2014":13,"\u2013":13,"\u0153":20,"\u0152":10,"\u00bb":10,"\u00ab":22,"\u00e6":15,"\u00c6":33,"\u00a9":9,"\u00ae":9,"\u2022":13,"\u2020":8,"z":16,"y":10,"x":14,"w":10,"v":10,"u":14,"t":6,"s":17,"r":14,"q":14,"p":14,"o":20,"n":14,"m":14,"l":4,"k":4,"j":4,"i":4,"h":4,"g":14,"f":8,"e":20,"d":14,"c":20,"b":4,"a":15,"Z":4,"Y":4,"X":8,"V":2,"S":5,"Q":10,"O":10,"J":29,"G":10,"C":10,"A":26,"?":-2,";":14,":":14,"\/":35,".":35,"-":13,",":35,"*":4,"&":10}},"W":{"d":"207,0r-56,0r-22,-152r-22,152r-55,0r-43,-252r58,0r16,152r20,-152r53,0r20,152r16,-152r58,0","w":258,"k":{"\u0131":8,"\u201e":25,"\u201a":25,"\u00b7":8,"\u2021":4,"\ufb02":4,"\ufb01":4,"\u203a":8,"\u2039":13,"\u2018":2,"\u2014":9,"\u2013":9,"\u0153":9,"\u0152":5,"\u00bb":8,"\u00ab":13,"\u00e6":9,"\u00c6":20,"\u00a9":5,"\u00ae":5,"\u2022":6,"\u2020":4,"z":9,"y":5,"x":6,"w":5,"v":5,"u":8,"t":2,"s":10,"r":8,"q":7,"p":8,"o":9,"n":8,"m":8,"l":2,"k":2,"j":2,"i":2,"h":2,"g":7,"f":4,"e":9,"d":7,"c":9,"b":2,"a":9,"Z":2,"Y":2,"X":5,"S":3,"Q":5,"O":5,"J":16,"G":5,"C":5,"A":16,"?":-2,";":6,":":6,"\/":24,".":24,"-":9,",":25,"*":2,"&":9}},"X":{"d":"126,0r-28,-81v-7,28,-17,56,-28,81r-64,0r60,-129r-57,-123r65,0r25,75r26,-75r64,0r-57,122r59,130r-65,0","w":197,"k":{"\u0131":2,"\u201e":2,"\u201a":2,"\u00b7":21,"\u2021":9,"\ufb02":6,"\ufb01":6,"\u203a":5,"\u2039":14,"\u2019":5,"\u2018":12,"\u201d":5,"\u2014":24,"\u2013":24,"\u0153":10,"\u0152":9,"\u00bb":5,"\u00ab":14,"\u00e6":5,"\u00a9":12,"\u00ae":12,"\u2022":21,"\u2020":14,"}":5,"z":2,"y":17,"w":17,"v":17,"u":8,"t":5,"s":4,"r":2,"q":9,"o":10,"n":2,"m":2,"g":9,"f":6,"e":10,"d":9,"c":10,"a":5,"]":5,"\\":8,"Y":6,"W":2,"V":5,"U":4,"T":2,"S":7,"Q":9,"O":9,"J":7,"G":8,"C":8,"?":4,";":2,":":2,".":2,"-":24,",":2,"*":13,")":2,"'":6,"&":7,"\"":6}},"Y":{"d":"132,-98r0,98r-61,0r0,-96r-67,-156r66,0v10,34,26,70,32,106v5,-37,21,-73,32,-106r65,0","w":202,"k":{"\u0131":21,"\u201e":44,"\u201a":44,"\u00b7":24,"\u2021":17,"\ufb02":12,"\ufb01":12,"\u203a":18,"\u2039":29,"\u2018":6,"\u2014":26,"\u2013":26,"\u0153":27,"\u0152":12,"\u00bb":18,"\u00ab":29,"\u00e6":25,"\u00c6":41,"\u00a9":16,"\u00ae":16,"\u2022":21,"\u2020":17,"z":24,"y":18,"x":21,"w":18,"v":18,"u":24,"t":12,"s":26,"r":21,"q":25,"p":21,"o":27,"n":21,"m":21,"l":4,"k":4,"j":4,"i":4,"h":4,"g":25,"f":12,"e":27,"d":25,"c":27,"b":4,"a":25,"Z":5,"Y":2,"X":6,"W":2,"V":4,"S":10,"Q":12,"O":12,"J":38,"G":12,"C":12,"A":29,"?":2,";":22,":":22,"\/":44,".":44,"-":26,",":44,"*":8,"&":18}},"Z":{"d":"15,0r0,-45r89,-158r-84,1r0,-50r151,0r0,45r-89,158r89,-1r0,50r-156,0","w":187,"k":{"\u0131":2,"\u00b7":13,"\u2021":6,"\ufb02":4,"\ufb01":4,"\u2039":13,"\u2018":5,"\u2014":21,"\u2013":21,"\u0153":9,"\u0152":10,"\u00ab":13,"\u00e6":6,"\u00c6":2,"\u00a9":6,"\u00ae":6,"\u2022":10,"\u2020":10,"}":2,"z":2,"y":9,"x":5,"w":9,"v":9,"u":5,"t":5,"s":5,"r":2,"q":8,"p":2,"o":9,"n":2,"m":2,"g":8,"f":4,"e":9,"d":8,"c":9,"a":6,"]":2,"\\":2,"Z":2,"Y":2,"X":2,"S":4,"Q":10,"O":10,"J":2,"G":10,"C":10,"A":2,"-":21,"*":2,"&":8}},"[":{"d":"20,36r0,-288r93,0r0,47r-37,0r0,195r37,0r0,46r-93,0","w":132,"k":{"\ufb02":6,"\ufb01":6,"\u0153":14,"\u0152":10,"\u00e6":12,"\u00c6":5,"\u00df":2,"z":5,"y":11,"x":5,"w":11,"v":11,"u":9,"t":5,"s":9,"r":6,"q":12,"o":14,"n":6,"m":6,"j":-16,"g":12,"f":6,"e":14,"d":12,"c":14,"a":12,"Z":4,"X":5,"S":6,"Q":10,"O":10,"J":10,"G":10,"C":10,"A":5}},"\\":{"d":"90,32r-95,-316r57,0r96,316r-58,0","w":142,"k":{"\ufb02":6,"\ufb01":6,"\u0153":5,"\u0152":13,"\u00e6":1,"y":19,"w":18,"v":21,"u":6,"t":10,"s":1,"q":8,"o":5,"j":-31,"g":8,"f":6,"e":5,"d":8,"c":5,"a":1,"Y":44,"W":24,"V":35,"U":10,"T":35,"S":2,"Q":13,"O":13,"J":-4,"G":13,"C":13}},"]":{"d":"19,36r0,-46r38,0r0,-195r-38,0r0,-47r94,0r0,288r-94,0","w":132},"^":{"d":"105,-134r-20,-64r-19,64r-57,0r51,-118r50,0r52,118r-57,0","w":171},"_":{"d":"0,67r0,-44r134,0r0,44r-134,0","w":133},"`":{"d":"75,-212r-52,-58r64,0r26,58r-38,0","w":149},"a":{"d":"17,-174v39,-28,132,-33,132,41r0,133r-54,0r0,-11v-34,31,-94,9,-86,-49v-5,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14xm61,-60v-3,24,20,28,34,17r0,-38v-16,-8,-38,-4,-34,21","w":162,"k":{"}":6,"y":4,"w":4,"v":4,"]":6,"\\":25,"?":21,")":6}},"b":{"d":"105,-193v41,4,52,45,52,98v-1,55,-10,95,-53,99v-14,0,-27,-7,-34,-14r0,10r-55,0r0,-241r55,-21r0,84v10,-7,18,-16,35,-15xm70,-50v31,22,31,-14,32,-44v1,-30,-4,-65,-32,-46r0,90","w":166,"k":{"\u201e":4,"\u201a":4,"\ufb02":2,"\ufb01":2,"\u203a":5,"\u2019":6,"\u201d":6,"\u00bb":5,"}":12,"z":6,"y":8,"x":8,"w":4,"v":5,"t":1,"s":2,"f":2,"]":12,"\\":23,"?":21,"\/":8,".":3,",":4,")":11,"'":4,"\"":4}},"c":{"d":"147,-51v-12,33,-26,55,-65,55v-52,0,-72,-38,-72,-98v0,-85,58,-123,114,-84v12,8,16,24,22,40r-44,21v-5,-17,-5,-27,-20,-30v-18,5,-17,24,-17,53v0,29,-1,48,19,52v14,-3,16,-17,21,-31","w":154,"k":{"\u201e":1,"\u201a":1,"\u203a":2,"\u2039":5,"\u0153":4,"\u00bb":2,"\u00ab":5,"\u00e6":1,"}":6,"z":3,"y":1,"x":5,"w":4,"v":2,"u":1,"s":1,"q":4,"o":4,"g":4,"e":4,"d":4,"c":4,"a":1,"]":6,"\\":18,"?":17,"\/":2,",":1,")":6,"'":1,"&":5,"\"":1}},"d":{"d":"63,-193v14,0,26,7,33,14r0,-62r56,-21r0,262r-56,0r0,-11v-9,8,-18,16,-35,15v-41,-4,-51,-45,-51,-98v0,-55,10,-95,53,-99xm65,-95v0,30,3,65,31,46r0,-90v-31,-21,-31,14,-31,44","w":166,"k":{"\\":2}},"e":{"d":"81,-193v56,0,71,51,69,115r-88,0v-5,46,39,46,52,17r33,26v-15,21,-31,39,-66,39v-52,-1,-71,-43,-71,-98v0,-58,19,-99,71,-99xm100,-115v2,-27,-17,-48,-33,-28v-3,5,-4,14,-5,28r38,0","w":159,"k":{"\u201e":6,"\u201a":6,"\ufb02":1,"\ufb01":1,"\u203a":9,"\u2019":5,"\u201d":5,"\u00bb":9,"\u00e6":1,"}":11,"z":4,"y":6,"x":8,"w":5,"v":7,"t":2,"s":2,"f":1,"a":1,"]":11,"\\":23,"?":21,"\/":6,".":6,",":6,")":11,"'":4,"\"":4}},"f":{"d":"26,-212v-6,-47,44,-57,81,-44r0,40v-10,-4,-27,-7,-27,10r0,17r24,0r0,46r-24,0r0,143r-54,0r0,-143r-17,0r0,-46r17,0r0,-23","w":111,"k":{"\u201e":14,"\u201a":14,"\u00b7":2,"\ufb02":4,"\ufb01":4,"\u2039":6,"\u2019":-7,"\u2018":-6,"\u201d":-7,"\u2014":2,"\u2013":2,"\u0153":6,"\u00ab":6,"\u00e6":6,"\u2122":-12,"\u00df":1,"\u2022":2,"}":-8,"z":3,"x":2,"t":-6,"s":5,"q":6,"o":6,"l":1,"j":1,"i":1,"g":6,"f":4,"e":6,"d":6,"c":6,"a":6,"\\":-8,"?":-8,";":2,":":2,"\/":15,".":15,"-":2,",":15,"*":-8,")":-5,"'":-8,"&":5,"\"":-8}},"g":{"d":"63,-193v14,0,26,7,33,14r0,-10r56,0v-2,68,9,149,-5,208v-8,34,-43,45,-84,50r-17,-36v31,-4,53,-9,50,-45v-9,8,-18,16,-35,15v-41,-3,-51,-45,-51,-97v0,-55,10,-95,53,-99xm65,-95v0,30,3,65,31,46r0,-90v-31,-21,-31,14,-31,44","w":166,"k":{"j":-4,"\\":19,"?":12}},"h":{"d":"70,-178v29,-29,87,-15,87,44r0,134r-56,0r0,-124v2,-25,-20,-24,-31,-14r0,138r-55,0r0,-241r55,-21r0,84","w":170,"k":{"\ufb02":4,"\ufb01":4,"\u2019":6,"\u201d":6,"}":6,"y":5,"w":5,"v":6,"f":4,"]":6,"\\":26,"?":21,")":6,"'":5,"\"":5}},"i":{"d":"44,-264v17,0,31,12,31,29v0,17,-14,28,-31,28v-17,0,-32,-10,-32,-28v0,-17,14,-29,32,-29xm16,0r0,-189r55,0r0,189r-55,0","w":87,"k":{"\\":3}},"j":{"d":"44,-264v17,0,31,12,31,29v0,17,-14,28,-31,28v-17,0,-32,-10,-32,-28v0,-17,14,-29,32,-29xm-17,30v20,-3,33,-9,33,-32r0,-187r55,0v-2,71,8,152,-4,216v-6,30,-35,37,-70,42","w":87,"k":{"j":-6,"\\":3}},"k":{"d":"104,0r-23,-81v-15,15,-10,51,-11,81r-55,0r0,-241r55,-21r-1,136v7,-18,22,-44,33,-63r59,0r-39,59r40,130r-58,0","w":166,"k":{"\u00b7":12,"\ufb02":6,"\ufb01":6,"\u203a":-2,"\u2039":6,"\u2019":6,"\u2018":2,"\u201d":6,"\u2014":10,"\u2013":10,"\u0153":6,"\u00bb":-2,"\u00ab":6,"\u00e6":3,"\u2122":16,"\u00a9":4,"\u00ae":4,"\u2022":12,"\u2020":8,"}":6,"z":1,"y":2,"x":2,"w":2,"v":2,"u":3,"t":3,"s":5,"q":4,"o":6,"g":4,"f":3,"e":6,"d":4,"c":6,"a":3,"]":6,"\\":21,"?":12,";":1,":":1,"-":11,"*":4,")":6,"'":8,"&":5,"\"":8}},"l":{"d":"16,0r0,-241r55,-21r0,262r-55,0","w":87,"k":{"\\":2}},"m":{"d":"149,-175v29,-32,91,-22,91,41r0,134r-55,0r0,-124v2,-25,-19,-24,-30,-14r0,138r-55,0r0,-124v2,-25,-19,-24,-30,-14r0,138r-55,0r0,-189r55,0r0,11v15,-20,67,-21,79,3","w":254,"k":{"\ufb02":4,"\ufb01":4,"\u2019":6,"\u201d":6,"}":6,"y":5,"w":5,"v":6,"f":4,"]":6,"\\":26,"?":21,")":6,"'":5,"\"":5}},"n":{"d":"70,-178v29,-29,87,-15,87,44r0,134r-56,0r0,-124v2,-25,-20,-24,-31,-14r0,138r-55,0r0,-189r55,0r0,11","w":170,"k":{"\ufb02":4,"\ufb01":4,"\u2019":6,"\u201d":6,"}":6,"y":5,"w":5,"v":6,"f":4,"]":6,"\\":26,"?":21,")":6,"'":5,"\"":5}},"o":{"d":"83,-193v51,0,73,40,73,98v0,59,-21,99,-74,99v-51,0,-72,-40,-72,-98v0,-58,19,-99,73,-99xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53","w":165,"k":{"\u201e":7,"\u201a":7,"\ufb02":4,"\ufb01":4,"\u203a":10,"\u2019":8,"\u2018":2,"\u201d":8,"\u00bb":10,"}":14,"z":4,"y":6,"x":8,"w":5,"v":5,"t":1,"s":2,"f":4,"]":14,"\\":25,"?":25,"\/":9,".":6,",":8,")":14,"'":4,"\"":4}},"p":{"d":"105,-193v41,4,52,45,52,98v-1,55,-10,95,-53,99v-14,0,-27,-7,-34,-14r0,58r-55,21r0,-258r55,0r0,11v10,-7,18,-16,35,-15xm70,-50v31,22,31,-14,32,-44v1,-30,-4,-65,-32,-46r0,90","w":166,"k":{"\u201e":4,"\u201a":4,"\ufb02":2,"\ufb01":2,"\u203a":5,"\u2019":6,"\u201d":6,"\u00bb":5,"}":12,"z":6,"y":8,"x":8,"w":4,"v":5,"t":1,"s":2,"f":2,"]":12,"\\":23,"?":21,"\/":8,".":3,",":4,")":11,"'":4,"\"":4}},"q":{"d":"63,-193v14,0,26,7,33,14r0,-10r56,0r0,237r-56,21r0,-80v-9,8,-18,16,-35,15v-41,-4,-51,-45,-51,-98v0,-55,10,-95,53,-99xm65,-95v0,30,3,65,31,46r0,-90v-31,-21,-31,14,-31,44","w":166,"k":{"j":-16,"\\":19,"?":12}},"r":{"d":"70,-177v9,-15,37,-21,55,-11r-10,58v-10,-13,-44,-17,-45,7r0,123r-55,0r0,-189r55,0r0,12","w":129,"k":{"\u201e":26,"\u201a":26,"\u2021":-4,"\u2039":8,"\u2019":-2,"\u2018":-2,"\u201d":-2,"\u2014":-1,"\u2013":-1,"\u0153":6,"\u00ab":8,"\u00e6":9,"\u2022":-2,"\u2020":-4,"}":9,"z":5,"y":-2,"x":3,"v":-2,"t":-4,"s":5,"q":5,"o":6,"g":5,"e":6,"d":5,"c":6,"a":9,"]":9,"\\":11,"?":6,";":-2,":":-2,"\/":23,".":27,"-":-1,",":27,"*":-2,")":9,"&":9}},"s":{"d":"77,-149v-12,-1,-13,13,-8,21v28,19,72,24,72,74v0,68,-96,72,-132,33r27,-39v15,11,21,18,39,20v27,-5,12,-26,-4,-32v-30,-12,-56,-21,-56,-64v0,-64,88,-71,124,-34r-26,39v-14,-11,-18,-17,-36,-18","w":152,"k":{"\u201e":3,"\u201a":3,"\u00b7":2,"\ufb02":2,"\ufb01":2,"\u203a":5,"\u2039":1,"\u2019":5,"\u2018":2,"\u201d":5,"\u2014":5,"\u2013":5,"\u0153":2,"\u00bb":5,"\u00ab":1,"\u00e6":1,"\u2022":2,"\u2020":5,"}":9,"z":5,"y":5,"x":6,"w":5,"v":5,"t":2,"s":2,"q":2,"o":2,"g":2,"f":2,"e":2,"d":2,"c":2,"a":1,"]":9,"\\":26,"?":17,"\/":5,".":5,"-":5,",":6,"*":2,")":9,"'":8,"\"":8}},"t":{"d":"82,-60v-1,20,24,17,34,8r-6,48v-36,17,-82,8,-82,-42r0,-97r-20,0r0,-46r20,0r0,-52r54,-21r0,73r32,0r0,46r-32,0r0,83","w":127,"k":{"\u201e":2,"\u201a":2,"\u00b7":2,"\ufb02":6,"\ufb01":6,"\u2039":6,"\u2019":2,"\u201d":2,"\u2014":5,"\u2013":5,"\u0153":5,"\u00ab":6,"\u00e6":3,"\u00a9":2,"\u00ae":2,"\u2022":2,"\u2020":1,"}":5,"z":4,"y":5,"x":4,"w":4,"v":4,"u":2,"t":4,"s":1,"q":6,"o":5,"g":6,"f":6,"e":5,"d":6,"c":5,"a":3,"]":5,"\\":15,"?":6,":":1,"\/":5,".":2,"-":5,",":2,"*":2,")":5,"'":4,"&":4,"\"":4}},"u":{"d":"69,-65v-2,25,20,24,31,14r0,-138r56,0r0,189r-56,0r0,-11v-29,29,-86,15,-86,-44r0,-134r55,0r0,124","w":170,"k":{"}":6,"]":6,"\\":19,"?":12,")":6}},"v":{"d":"110,0r-55,0r-51,-189r58,0v7,43,18,85,20,132v4,-46,13,-90,21,-132r58,0","w":165,"k":{"\u201e":20,"\u201a":20,"\u2039":8,"\u2014":2,"\u2013":2,"\u0153":5,"\u00ab":8,"\u00e6":5,"}":11,"z":3,"x":2,"s":5,"q":4,"o":5,"g":4,"e":5,"d":4,"c":5,"a":5,"]":11,"\\":11,"?":6,"\/":21,".":23,"-":2,",":21,")":11,"&":8}},"w":{"d":"179,0r-50,0r-18,-121r-18,121r-49,0r-39,-189r52,0r13,114r17,-114r49,0r17,114r13,-114r51,0","w":222,"k":{"\u201e":17,"\u201a":17,"\u2039":8,"\u2014":1,"\u2013":1,"\u0153":5,"\u00ab":8,"\u00e6":4,"}":11,"z":3,"x":2,"s":4,"q":3,"o":5,"g":3,"e":4,"d":3,"c":5,"a":4,"]":11,"\\":11,"?":6,"\/":18,".":21,"-":1,",":18,")":11,"&":9}},"x":{"d":"103,0r-21,-58r-21,58r-57,0r50,-98r-46,-91r59,0v7,17,15,39,17,52v3,-17,10,-36,16,-52r57,0r-45,89r50,100r-59,0","w":165,"k":{"\u00b7":5,"\ufb02":2,"\ufb01":2,"\u2039":12,"\u2019":5,"\u201d":5,"\u2014":8,"\u2013":8,"\u0153":8,"\u00ab":12,"\u00e6":6,"\u00a9":3,"\u00ae":3,"\u2022":4,"\u2020":2,"}":5,"y":2,"w":2,"v":2,"u":3,"s":5,"q":6,"o":8,"g":6,"e":8,"d":6,"c":8,"a":6,"]":5,"\\":18,"?":6,"-":8,")":5,"'":5,"&":6,"\"":5}},"y":{"d":"93,67r-53,0r20,-62r-56,-194r58,0r23,136v2,-48,14,-91,22,-136r58,0","w":168,"k":{"\u201e":20,"\u201a":20,"\u2039":8,"\u2014":2,"\u2013":2,"\u0153":6,"\u00ab":8,"\u00e6":5,"}":11,"z":3,"x":2,"s":6,"q":4,"o":6,"g":4,"e":6,"d":4,"c":6,"a":5,"]":11,"\\":11,"?":6,"\/":21,".":23,"-":2,",":21,")":11,"&":8}},"z":{"d":"12,0r0,-41r69,-103r-64,1r0,-46r126,0r0,41r-68,103r68,-1r0,46r-131,0","w":156,"k":{"\ufb02":1,"\ufb01":1,"\u2039":8,"\u2014":2,"\u2013":2,"\u0153":4,"\u00ab":8,"\u00e6":3,"}":5,"z":2,"u":2,"s":2,"q":5,"o":4,"g":5,"f":1,"e":4,"d":5,"c":4,"a":3,"]":5,"\\":18,"?":8,"-":2,")":5,"&":5}},"{":{"d":"132,40v-73,2,-92,-29,-92,-103v0,-18,-11,-22,-30,-21r0,-47v33,6,30,-23,30,-53v0,-53,32,-71,92,-71r0,41v-30,0,-35,20,-33,52v2,33,-11,48,-36,54v31,6,39,31,36,72v-1,25,10,34,33,35r0,41","w":144,"k":{"\ufb02":6,"\ufb01":6,"\u0153":14,"\u0152":10,"\u00e6":12,"\u00c6":5,"\u00df":2,"z":5,"y":11,"x":5,"w":11,"v":11,"u":9,"t":5,"s":9,"r":6,"q":12,"o":14,"n":6,"m":6,"j":-17,"g":12,"f":6,"e":14,"d":12,"c":14,"a":12,"Z":4,"X":5,"S":6,"Q":10,"O":10,"J":10,"G":10,"C":10,"A":5}},"|":{"d":"20,67r0,-355r55,0r0,355r-55,0","w":95},"}":{"d":"105,-184v0,28,-6,60,30,53r0,47v-34,-6,-30,23,-30,53v0,54,-32,71,-92,71r0,-41v30,0,35,-21,33,-52v-1,-34,10,-49,36,-55v-32,-5,-36,-31,-36,-72v0,-23,-10,-33,-33,-34r0,-41v60,0,90,18,92,71","w":144},"~":{"d":"162,-157v-11,28,-18,54,-50,57v-25,2,-31,-21,-53,-22v-7,5,-8,14,-12,23r-37,-12v11,-27,17,-55,50,-57v25,-2,32,23,53,21v6,-5,8,-13,12,-22","w":172},"\u00c4":{"d":"136,0r-9,-47r-50,0r-9,47r-62,0r66,-252r62,0r64,252r-62,0xm117,-96r-15,-92v-3,31,-8,62,-15,92r30,0xm139,-323v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm67,-323v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":204},"\u00c5":{"d":"103,-308v37,0,56,43,35,71r60,237r-62,0r-9,-47r-50,0r-9,47r-62,0r62,-237v-22,-26,-4,-71,35,-71xm103,-246v10,0,17,-7,17,-18v0,-11,-6,-19,-17,-19v-11,0,-17,7,-17,19v0,12,7,18,17,18xm117,-96r-15,-92v-3,31,-8,62,-15,92r30,0","w":204},"\u00c7":{"d":"183,-70v-10,41,-28,73,-78,74r-3,12v19,-9,40,2,40,24v0,38,-59,32,-82,18r7,-15v16,8,41,15,45,-3v2,-12,-14,-10,-20,-5r-13,-8r7,-24v-56,-8,-74,-59,-74,-129v0,-90,41,-149,123,-125v30,9,41,40,47,74r-56,15v-5,-19,-4,-42,-25,-42v-31,0,-27,42,-27,78v0,36,-3,74,28,78v21,-2,22,-21,27,-41","w":192},"\u00c9":{"d":"18,0r0,-252r148,0r0,51r-88,0r0,44r57,0r0,51r-57,0r0,55r90,0r0,51r-150,0xm105,-266r-39,0r26,-58r64,0","w":181},"\u00d1":{"d":"143,0r-70,-141r2,141r-57,0r0,-252r53,0r65,128r-2,-128r57,0r0,252r-48,0xm171,-318v0,30,-13,52,-39,53v-21,1,-30,-15,-47,-18v-9,-1,-11,7,-11,17r-34,0v0,-30,12,-52,40,-53v23,-1,29,16,47,18v6,0,10,-6,11,-17r33,0","w":209},"\u00d6":{"d":"102,-256v65,0,91,53,90,130v0,74,-21,130,-91,130v-65,0,-89,-53,-89,-130v0,-78,24,-130,90,-130xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78xm138,-323v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm66,-323v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":203},"\u00dc":{"d":"190,-88v0,60,-30,91,-87,92v-56,0,-87,-32,-86,-91r0,-165r61,0r0,167v0,22,5,37,26,37v20,0,25,-15,25,-37r0,-167r61,0r0,164xm140,-323v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm68,-323v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":207},"\u00e1":{"d":"17,-174v39,-28,132,-33,132,41r0,133r-54,0r0,-11v-34,31,-94,9,-86,-49v-5,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14xm61,-60v-3,24,20,28,34,17r0,-38v-16,-8,-38,-4,-34,21xm93,-212r-39,0r26,-58r64,0","w":162},"\u00e0":{"d":"17,-174v39,-28,132,-33,132,41r0,133r-54,0r0,-11v-34,31,-94,9,-86,-49v-5,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14xm61,-60v-3,24,20,28,34,17r0,-38v-16,-8,-38,-4,-34,21xm74,-212r-52,-58r64,0r26,58r-38,0","w":162},"\u00e2":{"d":"17,-174v39,-28,132,-33,132,41r0,133r-54,0r0,-11v-34,31,-94,9,-86,-49v-5,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14xm61,-60v-3,24,20,28,34,17r0,-38v-16,-8,-38,-4,-34,21xm104,-211r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":162},"\u00e4":{"d":"17,-174v39,-28,132,-33,132,41r0,133r-54,0r0,-11v-34,31,-94,9,-86,-49v-5,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14xm61,-60v-3,24,20,28,34,17r0,-38v-16,-8,-38,-4,-34,21xm118,-268v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm46,-268v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":162},"\u00e3":{"d":"17,-174v39,-28,132,-33,132,41r0,133r-54,0r0,-11v-34,31,-94,9,-86,-49v-5,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14xm61,-60v-3,24,20,28,34,17r0,-38v-16,-8,-38,-4,-34,21xm148,-264v0,30,-13,52,-39,53v-21,1,-30,-15,-47,-18v-9,-1,-11,7,-11,17r-34,0v0,-30,12,-52,40,-53v23,-1,29,16,47,18v6,0,10,-6,11,-17r33,0","w":162},"\u00e5":{"d":"17,-174v39,-28,132,-33,132,41r0,133r-54,0r0,-11v-34,31,-94,9,-86,-49v-5,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14xm61,-60v-3,24,20,28,34,17r0,-38v-16,-8,-38,-4,-34,21xm83,-300v26,0,44,18,44,44v0,27,-18,44,-44,44v-26,0,-45,-17,-45,-44v0,-26,18,-44,45,-44xm83,-237v11,0,17,-8,17,-19v0,-11,-7,-18,-17,-18v-10,0,-17,6,-17,18v0,12,6,19,17,19","w":162},"\u00e7":{"d":"147,-51v-12,32,-26,53,-62,55r-4,12v19,-9,40,2,40,24v0,38,-58,32,-81,18r7,-15v16,8,40,15,45,-3v0,-11,-15,-10,-21,-5r-13,-8r8,-24v-40,-9,-56,-44,-56,-97v0,-85,58,-123,114,-84v12,8,16,24,22,40r-44,21v-5,-17,-5,-27,-20,-30v-18,5,-17,24,-17,53v0,29,-1,48,19,52v14,-3,16,-17,21,-31","w":154},"\u00e9":{"d":"81,-193v56,0,71,51,69,115r-88,0v-5,46,39,46,52,17r33,26v-15,21,-31,39,-66,39v-52,-1,-71,-43,-71,-98v0,-58,19,-99,71,-99xm100,-115v2,-27,-17,-48,-33,-28v-3,5,-4,14,-5,28r38,0xm97,-212r-39,0r26,-58r64,0","w":159},"\u00e8":{"d":"81,-193v56,0,71,51,69,115r-88,0v-5,46,39,46,52,17r33,26v-15,21,-31,39,-66,39v-52,-1,-71,-43,-71,-98v0,-58,19,-99,71,-99xm100,-115v2,-27,-17,-48,-33,-28v-3,5,-4,14,-5,28r38,0xm67,-212r-52,-58r64,0r26,58r-38,0","w":159},"\u00ea":{"d":"81,-193v56,0,71,51,69,115r-88,0v-5,46,39,46,52,17r33,26v-15,21,-31,39,-66,39v-52,-1,-71,-43,-71,-98v0,-58,19,-99,71,-99xm100,-115v2,-27,-17,-48,-33,-28v-3,5,-4,14,-5,28r38,0xm103,-209r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":159},"\u00eb":{"d":"81,-193v56,0,71,51,69,115r-88,0v-5,46,39,46,52,17r33,26v-15,21,-31,39,-66,39v-52,-1,-71,-43,-71,-98v0,-58,19,-99,71,-99xm100,-115v2,-27,-17,-48,-33,-28v-3,5,-4,14,-5,28r38,0xm117,-268v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm45,-268v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":159},"\u00ed":{"d":"16,0r0,-189r55,0r0,189r-55,0xm61,-212r-39,0r26,-58r64,0","w":87},"\u00ec":{"d":"16,0r0,-189r55,0r0,189r-55,0xm29,-212r-52,-58r64,0r26,58r-38,0","w":87},"\u00ee":{"d":"16,0r0,-189r55,0r0,189r-55,0xm66,-207r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":87},"\u00ef":{"d":"16,0r0,-189r55,0r0,189r-55,0xm80,-269v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm8,-269v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":87},"\u00f1":{"d":"70,-178v29,-29,87,-15,87,44r0,134r-56,0r0,-124v2,-25,-20,-24,-31,-14r0,138r-55,0r0,-189r55,0r0,11xm152,-264v0,30,-13,52,-39,53v-21,1,-30,-15,-47,-18v-9,-1,-11,7,-11,17r-34,0v0,-30,12,-52,40,-53v23,-1,29,16,47,18v6,0,10,-6,11,-17r33,0","w":170},"\u00f3":{"d":"83,-193v51,0,73,40,73,98v0,59,-21,99,-74,99v-51,0,-72,-40,-72,-98v0,-58,19,-99,73,-99xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53xm100,-212r-39,0r26,-58r64,0","w":165},"\u00f2":{"d":"83,-193v51,0,73,40,73,98v0,59,-21,99,-74,99v-51,0,-72,-40,-72,-98v0,-58,19,-99,73,-99xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53xm66,-212r-52,-58r64,0r26,58r-38,0","w":165},"\u00f4":{"d":"83,-193v51,0,73,40,73,98v0,59,-21,99,-74,99v-51,0,-72,-40,-72,-98v0,-58,19,-99,73,-99xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53xm105,-209r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":165},"\u00f6":{"d":"83,-193v51,0,73,40,73,98v0,59,-21,99,-74,99v-51,0,-72,-40,-72,-98v0,-58,19,-99,73,-99xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53xm119,-266v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm47,-266v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":165},"\u00f5":{"d":"83,-193v51,0,73,40,73,98v0,59,-21,99,-74,99v-51,0,-72,-40,-72,-98v0,-58,19,-99,73,-99xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53xm148,-264v0,30,-13,52,-39,53v-21,1,-30,-15,-47,-18v-9,-1,-11,7,-11,17r-34,0v0,-30,12,-52,40,-53v23,-1,29,16,47,18v6,0,10,-6,11,-17r33,0","w":165},"\u00fa":{"d":"69,-65v-2,25,20,24,31,14r0,-138r56,0r0,189r-56,0r0,-11v-29,29,-86,15,-86,-44r0,-134r55,0r0,124xm101,-212r-39,0r26,-58r64,0","w":170},"\u00f9":{"d":"69,-65v-2,25,20,24,31,14r0,-138r56,0r0,189r-56,0r0,-11v-29,29,-86,15,-86,-44r0,-134r55,0r0,124xm70,-212r-52,-58r64,0r26,58r-38,0","w":170},"\u00fb":{"d":"69,-65v-2,25,20,24,31,14r0,-138r56,0r0,189r-56,0r0,-11v-29,29,-86,15,-86,-44r0,-134r55,0r0,124xm107,-212r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":170},"\u00fc":{"d":"69,-65v-2,25,20,24,31,14r0,-138r56,0r0,189r-56,0r0,-11v-29,29,-86,15,-86,-44r0,-134r55,0r0,124xm121,-269v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm49,-269v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":170},"\u2020":{"d":"114,-129r0,165r-56,0r0,-165r-45,0r0,-52r45,0r0,-71r56,0r0,71r46,0r0,52r-46,0","w":172,"k":{"\u00e6":5,"\u00c6":18,"x":2,"t":-5,"a":5,"Z":13,"Y":17,"X":14,"W":4,"V":8,"T":16,"J":18,"A":18}},"\u00b0":{"d":"80,-256v42,0,67,27,67,67v0,41,-25,68,-67,68v-42,0,-67,-26,-67,-68v0,-41,25,-67,67,-67xm80,-157v17,0,28,-14,28,-32v0,-17,-11,-30,-28,-30v-17,0,-29,13,-29,30v0,19,12,32,29,32","w":159},"\u00a2":{"d":"99,-78v20,0,24,-12,34,-29r50,22v-12,27,-30,44,-52,51r0,38r-63,0r0,-39v-35,-13,-56,-42,-56,-92v0,-50,19,-83,56,-94r0,-35r63,0r0,34v25,7,41,27,50,50r-54,22v-8,-17,-9,-28,-30,-28v-23,0,-26,23,-26,51v0,29,3,49,28,49"},"\u00a3":{"d":"24,-192v3,-44,34,-64,82,-64v37,0,64,16,82,48r-40,28v-12,-18,-21,-27,-44,-27v-40,0,-13,49,-5,68r47,0r0,44r-45,0v-3,21,-10,32,-19,47r103,0r0,48r-171,0r0,-42v17,-11,31,-28,33,-53r-32,0r0,-44r27,0v-5,-18,-19,-30,-18,-53"},"\u00a7":{"d":"101,-209v-24,-1,-15,28,-2,32v36,22,89,24,89,82v0,27,-12,44,-27,57v24,43,-3,101,-60,97v-35,-2,-61,-19,-72,-45r33,-28v10,14,20,26,41,26v21,1,15,-28,2,-32v-37,-22,-91,-24,-90,-82v0,-26,13,-43,28,-56v-25,-44,2,-102,60,-98v35,2,61,19,72,45r-34,28v-10,-14,-21,-25,-40,-26xm95,-123v-19,-15,-30,7,-23,25v7,18,36,22,54,31v21,-27,-6,-52,-31,-56","w":203},"\u2022":{"d":"85,-199v41,0,67,27,67,67v0,40,-26,66,-67,66v-40,0,-66,-26,-66,-66v0,-40,26,-67,66,-67","w":171,"k":{"\u00e6":4,"\u00c6":17,"z":2,"x":4,"t":-2,"a":4,"Z":12,"Y":21,"X":21,"W":6,"V":13,"T":22,"S":2,"J":13,"A":17}},"\u00b6":{"d":"11,-177v0,-48,28,-75,74,-75r113,0r0,319r-42,0r0,-282r-20,0r0,282r-43,0r0,-169v-53,2,-82,-25,-82,-75","w":220},"\u00df":{"d":"85,-261v68,-6,88,86,44,116v24,9,40,27,39,62v0,58,-25,84,-83,83r0,-45v22,0,26,-11,26,-36v0,-24,-4,-39,-26,-39v1,-14,-2,-32,1,-44v12,-2,13,-8,13,-24v0,-17,0,-28,-15,-28v-14,0,-13,11,-14,26r0,238r-55,21r0,-257v0,-47,24,-69,70,-73","w":177,"k":{"\ufb02":2,"\ufb01":2,"\u203a":6,"\u2014":3,"\u2013":3,"\u00bb":6,"\u00e6":1,"\u2020":6,"}":12,"z":2,"y":5,"x":6,"w":4,"v":5,"t":2,"s":2,"f":2,"a":1,"]":12,"\\":19,"?":12,"\/":8,".":5,"-":3,",":5,"*":5,")":12}},"\u00ae":{"d":"118,-256v71,0,105,55,105,130v0,75,-34,130,-105,130v-71,0,-104,-56,-104,-130v0,-74,33,-130,104,-130xm118,-19v57,0,81,-46,81,-107v0,-61,-24,-107,-81,-107v-57,0,-80,48,-80,107v0,59,23,107,80,107xm125,-201v46,-6,58,63,25,81r21,62r-37,0r-16,-55r-9,0r0,55r-34,0r0,-143r50,0xm109,-139v28,10,36,-31,13,-35r-13,0r0,35","w":237,"k":{"\u00e6":4,"z":4,"x":3,"a":4,"Z":6,"Y":16,"X":12,"W":5,"V":9,"T":14,"S":4,"J":2,"A":10}},"\u00a9":{"d":"118,-256v71,0,105,55,105,130v0,75,-34,130,-105,130v-71,0,-104,-56,-104,-130v0,-74,33,-130,104,-130xm118,-19v57,0,81,-46,81,-107v0,-61,-24,-107,-81,-107v-57,0,-80,48,-80,107v0,59,23,107,80,107xm119,-83v12,-2,12,-9,16,-23r30,11v-6,25,-17,41,-46,41v-39,0,-48,-30,-51,-73v-4,-57,42,-94,83,-61v6,8,11,20,14,32r-32,9v-4,-12,-1,-24,-14,-24v-17,3,-15,20,-15,44v0,24,-2,41,15,44","w":237,"k":{"\u00e6":4,"z":4,"x":3,"a":4,"Z":6,"Y":16,"X":12,"W":5,"V":9,"T":14,"S":4,"J":2,"A":10}},"\u2122":{"d":"198,-109r1,-74r-27,78v-9,-25,-21,-51,-27,-78r1,74r-31,0r0,-143r31,0v9,25,20,52,26,79v5,-27,17,-54,26,-79r31,0r0,143r-31,0xm69,-222r0,113r-34,0r0,-113r-29,0r0,-30r92,0r0,30r-29,0","w":238},"\u00b4":{"d":"75,-212r-39,0r26,-58r64,0","w":149},"\u00a8":{"d":"111,-269v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm39,-269v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":149},"\u2260":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00c6":{"d":"135,0r0,-38r-58,0r-13,38r-61,0r111,-252r160,0r0,51r-84,0r0,44r53,0r0,51r-53,0r0,55r86,0r0,51r-141,0xm135,-193r-38,107r38,0r0,-107","w":289,"k":{"\u00b7":16,"\ufb02":5,"\ufb01":5,"\u2039":5,"\u2014":18,"\u2013":18,"\u0153":6,"\u0152":9,"\u00ab":5,"\u00e6":4,"\u2022":17,"\u2020":13,"z":2,"y":13,"w":12,"v":13,"u":4,"t":5,"q":5,"o":6,"g":5,"f":5,"e":6,"d":5,"c":6,"a":4,"Y":5,"W":2,"V":2,"S":4,"Q":9,"O":9,"G":9,"C":9,"-":18,"*":4,"&":4}},"\u00d8":{"d":"12,-126v0,-87,34,-142,116,-127r8,-17r61,0r-25,52v42,78,24,255,-97,218r-8,18r-61,0r25,-52v-13,-21,-19,-52,-19,-92xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78","w":203},"\u221e":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00b1":{"d":"123,-127r0,55r-52,0r0,-55r-52,0r0,-49r52,0r0,-56r52,0r0,56r53,0r0,49r-53,0xm19,0r0,-48r157,0r0,48r-157,0"},"\u2264":{"d":"102,42r-36,0r5,-104r61,0"},"\u2265":{"d":"97,-66v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35"},"\u00a5":{"d":"127,-95r0,11r45,0r0,48r-45,0r0,36r-59,0r0,-36r-45,0r0,-48r45,0r0,-10r-69,-158r67,0v10,35,25,72,32,109v5,-38,20,-76,32,-109r66,0"},"\u00b5":{"d":"182,-74v-11,10,-22,2,-19,-13r3,-15r-84,0v5,16,4,45,-16,28r-62,-53r62,-54v12,-10,24,-1,19,14r-3,14r84,0v-5,-15,-4,-45,16,-28r62,54","w":248},"\u2202":{"d":"94,-70v18,-7,45,-3,28,16r-53,61r-54,-61v-10,-12,-1,-24,14,-19r14,3r0,-112v-15,5,-45,4,-28,-16r54,-61r53,61v10,11,2,24,-13,19r-15,-3r0,112","w":137},"\u2211":{},"\u220f":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u03c0":{"d":"118,-256v71,0,105,55,105,130v0,75,-34,130,-105,130v-71,0,-104,-56,-104,-130v0,-74,33,-130,104,-130xm118,-19v57,0,81,-46,81,-107v0,-61,-24,-107,-81,-107v-57,0,-80,48,-80,107v0,59,23,107,80,107xm79,-197v47,-1,92,-6,92,44v0,36,-21,49,-58,47r0,51r-34,0r0,-142xm113,-134v16,2,24,-2,24,-18v0,-16,-8,-20,-24,-18r0,36","w":237},"\u222b":{"d":"63,-193v14,0,26,7,33,14r0,-10r56,0r0,189r-56,0r0,-11v-9,8,-18,16,-35,15v-41,-4,-51,-45,-51,-98v0,-55,10,-95,53,-99xm65,-95v0,30,3,65,31,46r0,-90v-31,-21,-31,14,-31,44","w":166},"\u00aa":{"d":"102,-110v0,64,32,94,73,121r-17,29v-65,-31,-119,-67,-119,-149v0,-82,55,-118,119,-150r17,29v-40,26,-73,57,-73,120"},"\u00ba":{"d":"37,-259v65,31,118,67,118,148v0,83,-54,120,-118,151r-17,-29v40,-27,73,-58,73,-120v0,-63,-33,-94,-73,-121"},"\u2126":{"d":"122,-198v10,11,2,24,-13,19r-15,-3r0,182r-51,0r0,-182v-15,5,-45,4,-28,-16r54,-61","w":137},"\u00e6":{"d":"231,-35v-15,37,-87,56,-111,17v-11,12,-30,22,-53,22v-42,-1,-55,-21,-58,-64v-3,-52,43,-73,86,-56v1,-18,1,-34,-19,-33v-18,1,-30,5,-43,14r-16,-39v24,-18,93,-32,108,2v8,-11,22,-21,42,-21v54,0,73,53,67,115r-88,0v-5,46,39,46,53,17xm184,-115v2,-27,-16,-47,-32,-28v-3,5,-5,14,-6,28r38,0xm61,-60v-3,28,23,26,36,16v-2,-11,-2,-23,-2,-37v-16,-8,-38,-4,-34,21","w":244,"k":{"\u201e":6,"\u201a":6,"\ufb02":1,"\ufb01":1,"\u203a":9,"\u2019":5,"\u201d":5,"\u00bb":9,"\u00e6":1,"}":11,"z":4,"y":6,"x":8,"w":5,"v":7,"t":2,"s":2,"f":1,"a":1,"]":11,"\\":23,"?":21,"\/":6,".":6,",":6,")":11,"'":4,"\"":4}},"\u00f8":{"d":"26,-25v-34,-60,-18,-193,77,-166r8,-16r50,0r-21,42v35,60,16,196,-78,166r-8,17r-50,0xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53","w":165},"\u00bf":{"d":"91,-256v18,0,33,14,33,32v0,18,-15,32,-33,32v-19,0,-32,-14,-32,-32v0,-18,13,-32,32,-32xm65,-66v0,37,49,13,59,-8r39,34v-20,26,-40,44,-81,44v-45,0,-71,-21,-74,-65v-3,-58,59,-55,56,-113r54,0v0,38,-12,59,-34,75v-12,10,-19,21,-19,33","w":168,"k":{"\ufb02":5,"\ufb01":5,"\u0152":6,"\u00e6":-2,"\u00c6":2,"z":-4,"y":16,"x":4,"w":12,"v":12,"t":4,"f":4,"a":-2,"Y":28,"X":2,"W":14,"V":21,"U":6,"T":26,"Q":6,"O":6,"J":-2,"G":6,"C":6}},"\u00a1":{"d":"49,-256v18,0,33,14,33,32v0,18,-15,32,-33,32v-19,0,-32,-14,-32,-32v0,-18,13,-32,32,-32xm20,0v-1,-62,0,-122,9,-174r40,0v10,51,11,111,10,174r-59,0","w":98,"k":{"Y":2,"W":2,"V":3,"T":2}},"\u00ac":{"d":"121,-74v-11,10,-22,2,-19,-13r3,-15r-93,0r0,-51r93,0v-5,-15,-4,-45,16,-28r62,54","w":187},"\u221a":{"d":"117,0r-59,0r-50,-122r58,0v9,21,15,47,20,71v9,-72,29,-134,43,-201r59,0","w":195},"\u0192":{"d":"176,-211v-22,-6,-56,-6,-54,22r44,0r-9,45r-44,0r-31,144r-54,0r30,-144r-36,0r10,-45r36,0v2,-59,57,-79,116,-61"},"\u2248":{"d":"142,-42r-45,-47r-44,47r-38,-37r47,-45r-47,-44r38,-38r44,47r45,-47r37,38r-47,44r47,45"},"\u2206":{"d":"82,-102v5,16,4,45,-16,28r-62,-53r62,-54v12,-10,24,-1,19,14r-3,14r93,0r0,51r-93,0","w":187},"\u00ab":{"d":"137,0r-41,-94r41,-95r57,0r-41,94r41,95r-57,0xm49,0r-41,-94r41,-95r56,0r-40,94r40,95r-56,0","w":205,"k":{"\u0153":10,"\u0152":4,"\u00e6":5,"s":4,"q":5,"o":10,"g":5,"e":10,"d":5,"c":10,"a":5,"Y":18,"X":5,"W":8,"V":10,"U":2,"T":18,"S":2,"Q":4,"O":4,"J":5,"G":4,"C":4}},"\u00bb":{"d":"157,0r-57,0r41,-94r-41,-95r57,0r41,94xm69,0r-57,0r41,-94r-41,-95r57,0r41,94","w":205,"k":{"\ufb02":4,"\ufb01":4,"\u00c6":10,"z":8,"y":8,"x":12,"w":8,"v":8,"t":2,"s":5,"f":4,"Z":9,"Y":29,"X":14,"W":13,"V":22,"T":26,"S":8,"J":-2,"A":4}},"\u2026":{"d":"97,-193v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35xm98,42r-35,0r5,-103r60,0"},"\u00a0":{"w":97},"\u00c0":{"d":"136,0r-9,-47r-50,0r-9,47r-62,0r66,-252r62,0r64,252r-62,0xm117,-96r-15,-92v-3,31,-8,62,-15,92r30,0xm86,-266r-52,-58r64,0r26,58r-38,0","w":204},"\u00c3":{"d":"136,0r-9,-47r-50,0r-9,47r-62,0r66,-252r62,0r64,252r-62,0xm117,-96r-15,-92v-3,31,-8,62,-15,92r30,0xm168,-318v0,30,-13,52,-39,53v-21,1,-30,-15,-47,-18v-9,-1,-11,7,-11,17r-34,0v0,-30,12,-52,40,-53v23,-1,29,16,47,18v6,0,10,-6,11,-17r33,0","w":204},"\u00d5":{"d":"102,-256v65,0,91,53,90,130v0,74,-21,130,-91,130v-65,0,-89,-53,-89,-130v0,-78,24,-130,90,-130xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78xm166,-318v0,30,-13,52,-39,53v-21,1,-30,-15,-47,-18v-9,-1,-11,7,-11,17r-34,0v0,-30,12,-52,40,-53v23,-1,29,16,47,18v6,0,10,-6,11,-17r33,0","w":203},"\u0152":{"d":"12,-126v0,-72,20,-130,86,-130v22,0,38,8,48,24r0,-20r127,0r0,51r-86,0r0,44r55,0r0,51r-55,0r0,55r88,0r0,51r-129,0r0,-20v-10,16,-26,24,-48,24v-67,-3,-86,-58,-86,-130xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78","w":288,"k":{"\u00b7":16,"\ufb02":5,"\ufb01":5,"\u2039":5,"\u2014":18,"\u2013":18,"\u0153":6,"\u0152":9,"\u00ab":5,"\u00e6":4,"\u00a9":6,"\u00ae":6,"\u2022":17,"\u2020":13,"z":2,"y":13,"w":12,"v":13,"u":4,"t":5,"q":5,"o":6,"g":5,"f":5,"e":6,"d":5,"c":6,"a":4,"Y":2,"S":2,"Q":9,"O":9,"G":9,"C":9,"-":18,"*":4,"&":4}},"\u0153":{"d":"238,-35v-16,37,-89,56,-111,15v-10,13,-22,24,-45,24v-51,-2,-73,-40,-72,-98v0,-58,19,-99,72,-99v21,1,38,10,46,23v10,-13,23,-22,44,-23v55,0,73,53,68,115r-88,0v-5,46,39,46,53,17xm190,-115v2,-27,-16,-47,-32,-28v-3,5,-5,14,-6,28r38,0xm83,-42v18,-4,18,-24,18,-52v0,-24,2,-50,-18,-53v-18,5,-18,23,-18,52v0,30,-1,48,18,53","w":250,"k":{"\u201e":6,"\u201a":6,"\ufb02":1,"\ufb01":1,"\u203a":9,"\u2019":5,"\u201d":5,"\u00bb":9,"\u00e6":1,"}":11,"z":4,"y":6,"x":8,"w":5,"v":7,"t":2,"s":2,"f":1,"a":1,"]":11,"\\":23,"?":21,"\/":6,".":6,",":6,")":11,"'":4,"\"":4}},"\u2013":{"d":"17,-103r0,-54r126,0r0,54r-126,0","w":160,"k":{"\u00e6":4,"\u00c6":18,"z":5,"y":2,"x":8,"w":1,"v":2,"a":4,"Z":21,"Y":26,"X":24,"W":9,"V":13,"T":28,"S":5,"J":24,"A":18}},"\u2014":{"d":"17,-103r0,-54r157,0r0,54r-157,0","w":191,"k":{"\u00e6":4,"\u00c6":18,"z":5,"y":2,"x":8,"w":1,"v":2,"a":4,"Z":21,"Y":26,"X":24,"W":9,"V":13,"T":28,"S":5,"J":24,"A":18}},"\u201c":{"d":"157,-152r-61,0r30,-100r36,0xm73,-152r-61,0r31,-100r35,0","w":180,"k":{"\u0153":8,"\u00e6":10,"\u00c6":29,"z":4,"x":5,"t":-4,"s":5,"q":6,"o":8,"g":6,"e":8,"d":6,"c":8,"a":10,"Z":2,"X":5,"J":43,"A":29}},"\u201d":{"d":"138,-152r-36,0r5,-100r61,0xm54,-152r-36,0r6,-100r61,0","w":180},"\u2018":{"d":"73,-152r-61,0r31,-100r35,0","w":96,"k":{"\u0153":8,"\u0152":4,"\u00e6":10,"\u00c6":29,"z":4,"x":5,"t":-4,"s":8,"q":6,"o":8,"g":6,"e":8,"d":6,"c":8,"a":10,"Z":2,"X":5,"S":2,"Q":4,"O":4,"J":43,"G":4,"C":4,"A":29}},"\u2019":{"d":"54,-152r-36,0r6,-100r61,0","w":96,"k":{"\ufb02":2,"\ufb01":2,"\u0153":19,"\u0152":13,"\u00e6":14,"\u00c6":29,"z":10,"y":8,"x":8,"w":8,"v":8,"u":5,"s":17,"r":5,"q":16,"p":5,"o":19,"n":5,"m":5,"g":16,"f":2,"e":19,"d":16,"c":19,"a":14,"Z":5,"X":5,"S":6,"Q":13,"O":13,"J":40,"G":13,"C":13,"A":29}},"\u00f7":{"d":"97,-239v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35xm19,-98r0,-52r157,0r0,52r-157,0xm97,-79v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35"},"\u25ca":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u00ff":{"d":"93,67r-53,0r20,-62r-56,-194r58,0r23,136v2,-48,14,-91,22,-136r58,0xm121,-266v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm49,-266v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":168},"\u0178":{"d":"132,-98r0,98r-61,0r0,-96r-67,-156r66,0v10,34,26,70,32,106v5,-37,21,-73,32,-106r65,0xm138,-323v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm66,-323v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":202},"\u2044":{"d":"46,0r-64,0r137,-252r64,0","w":164},"\u00a4":{"d":"207,-80v-10,10,-22,1,-17,-12r3,-13r-37,0r0,44v13,-6,41,-4,26,14r-48,56r-48,-56v-10,-10,-1,-22,12,-17r13,3r0,-44r-36,0v6,14,3,40,-15,25r-56,-47r56,-48v11,-10,21,-1,18,12r-3,13r36,0r0,-41v-13,7,-40,4,-25,-14r48,-56r48,56v8,11,1,22,-13,17r-13,-3r0,41r37,0v-7,-13,-4,-40,14,-25r56,48","w":267},"\u2039":{"d":"49,0r-41,-94r41,-95r56,0r-40,94r40,95r-56,0","w":117,"k":{"\u0153":10,"\u0152":4,"\u00e6":5,"s":4,"q":5,"o":10,"g":5,"e":10,"d":5,"c":10,"a":5,"Y":18,"X":5,"W":8,"V":10,"U":2,"T":18,"S":2,"Q":4,"O":4,"J":5,"G":4,"C":4}},"\u203a":{"d":"69,0r-57,0r41,-94r-41,-95r57,0r41,94","w":117,"k":{"\ufb02":4,"\ufb01":4,"\u00c6":10,"z":8,"y":8,"x":12,"w":8,"v":8,"t":2,"s":5,"f":4,"Z":9,"Y":29,"X":14,"W":13,"V":22,"T":26,"S":8,"J":-2,"A":4}},"\ufb01":{"d":"154,-264v18,0,32,12,32,29v0,18,-15,28,-32,28v-17,0,-31,-11,-31,-28v0,-17,14,-29,31,-29xm127,0r0,-189r55,0r0,189r-55,0xm26,-212v-6,-47,44,-57,81,-44r0,40v-10,-4,-27,-7,-27,10r0,17r24,0r0,46r-24,0r0,143r-54,0r0,-143r-17,0r0,-46r17,0r0,-23","w":198,"k":{"\\":3}},"\ufb02":{"d":"127,0r0,-241r55,-21r0,262r-55,0xm26,-212v-6,-47,44,-57,81,-44r0,40v-10,-4,-27,-7,-27,10r0,17r24,0r0,46r-24,0r0,143r-54,0r0,-143r-17,0r0,-46r17,0r0,-23","w":198,"k":{"\\":2}},"\u2021":{"d":"113,-35r0,71r-53,0r0,-71r-47,0r0,-50r47,0r0,-47r-47,0r0,-49r47,0r0,-71r53,0r0,71r47,0r0,49r-47,0r0,47r47,0r0,50r-47,0","w":172,"k":{"Z":4,"Y":17,"X":9,"W":4,"V":8,"T":16}},"\u00b7":{"d":"47,-166v21,0,35,14,35,34v0,20,-14,34,-35,34v-20,0,-35,-14,-35,-34v0,-20,15,-34,35,-34","w":93,"k":{"\u00e6":4,"\u00c6":18,"x":5,"t":-4,"a":4,"Z":13,"Y":24,"X":21,"W":8,"V":16,"T":29,"J":24,"A":18}},"\u201a":{"d":"54,38r-36,0r5,-100r61,0","w":96},"\u201e":{"d":"137,38r-35,0r5,-100r60,0xm54,38r-36,0r5,-100r61,0","w":180},"\u2030":{"d":"393,-153v42,0,62,30,62,78v0,47,-20,79,-62,79v-42,0,-62,-31,-62,-78v0,-47,20,-79,62,-79xm255,-153v42,0,62,31,62,78v0,48,-20,79,-63,79v-42,0,-61,-31,-61,-78v0,-47,20,-79,62,-79xm121,0r-49,0r133,-252r49,0xm72,-256v42,0,62,31,62,78v0,47,-21,79,-63,79v-42,0,-62,-31,-62,-78v0,-48,20,-79,63,-79xm393,-34v18,-1,15,-21,15,-40v0,-23,1,-38,-15,-41v-17,1,-14,22,-14,40v0,23,-2,38,14,41xm255,-34v17,-1,14,-22,14,-40v0,-23,2,-38,-14,-41v-18,1,-15,21,-15,40v0,23,-1,38,15,41xm72,-137v16,-2,14,-21,14,-40v0,-24,2,-39,-15,-41v-17,2,-14,22,-14,40v0,24,-2,39,15,41","w":461},"\u00c2":{"d":"136,0r-9,-47r-50,0r-9,47r-62,0r66,-252r62,0r64,252r-62,0xm117,-96r-15,-92v-3,31,-8,62,-15,92r30,0xm125,-268r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":204},"\u00ca":{"d":"18,0r0,-252r148,0r0,51r-88,0r0,44r57,0r0,51r-57,0r0,55r90,0r0,51r-150,0xm115,-266r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":181},"\u00c1":{"d":"136,0r-9,-47r-50,0r-9,47r-62,0r66,-252r62,0r64,252r-62,0xm117,-96r-15,-92v-3,31,-8,62,-15,92r30,0xm119,-266r-39,0r26,-58r64,0","w":204},"\u00cb":{"d":"18,0r0,-252r148,0r0,51r-88,0r0,44r57,0r0,51r-57,0r0,55r90,0r0,51r-150,0xm129,-323v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm57,-323v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":181},"\u00c8":{"d":"18,0r0,-252r148,0r0,51r-88,0r0,44r57,0r0,51r-57,0r0,55r90,0r0,51r-150,0xm78,-266r-52,-58r64,0r26,58r-38,0","w":181},"\u00cd":{"d":"19,0r0,-252r61,0r0,252r-61,0xm69,-266r-39,0r26,-58r64,0","w":100},"\u00ce":{"d":"19,0r0,-252r61,0r0,252r-61,0xm73,-264r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":100},"\u00cf":{"d":"19,0r0,-252r61,0r0,252r-61,0xm87,-322v16,1,28,11,28,29v-1,40,-55,32,-57,0v0,-15,14,-30,29,-29xm15,-322v35,1,35,57,0,57v-16,0,-28,-11,-29,-28v0,-15,14,-29,29,-29","w":100},"\u00cc":{"d":"19,0r0,-252r61,0r0,252r-61,0xm33,-266r-52,-58r64,0r26,58r-38,0","w":100},"\u00d3":{"d":"102,-256v65,0,91,53,90,130v0,74,-21,130,-91,130v-65,0,-89,-53,-89,-130v0,-78,24,-130,90,-130xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78xm118,-267r-39,0r26,-58r64,0","w":203},"\u00d4":{"d":"102,-256v65,0,91,53,90,130v0,74,-21,130,-91,130v-65,0,-89,-53,-89,-130v0,-78,24,-130,90,-130xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78xm124,-266r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":203},"\u00d2":{"d":"102,-256v65,0,91,53,90,130v0,74,-21,130,-91,130v-65,0,-89,-53,-89,-130v0,-78,24,-130,90,-130xm102,-48v32,-4,28,-43,28,-78v0,-36,3,-73,-28,-78v-33,3,-29,42,-29,78v0,36,-2,73,29,78xm83,-267r-52,-58r64,0r26,58r-38,0","w":203},"\u00da":{"d":"97,-193v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35xm97,-66v19,0,35,16,35,35v0,19,-16,35,-35,35v-19,0,-35,-16,-35,-35v0,-19,16,-35,35,-35"},"\u00db":{"d":"190,-88v0,60,-30,91,-87,92v-56,0,-87,-32,-86,-91r0,-165r61,0r0,167v0,22,5,37,26,37v20,0,25,-15,25,-37r0,-167r61,0r0,164xm126,-266r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":207},"\u00d9":{"d":"190,-88v0,60,-30,91,-87,92v-56,0,-87,-32,-86,-91r0,-165r61,0r0,167v0,22,5,37,26,37v20,0,25,-15,25,-37r0,-167r61,0r0,164xm88,-264r-52,-58r64,0r26,58r-38,0","w":207},"\u0131":{"d":"16,0r0,-189r55,0r0,189r-55,0","w":87},"\u02c6":{"d":"97,-212r-23,-24r-23,24r-37,0r40,-58r42,0r39,58r-38,0","w":149},"\u02dc":{"d":"140,-264v0,30,-13,52,-39,53v-21,1,-30,-15,-47,-18v-9,-1,-11,7,-11,17r-34,0v0,-30,12,-52,40,-53v23,-1,29,16,47,18v6,0,10,-6,11,-17r33,0","w":149},"\u00af":{"d":"21,-218r0,-37r107,0r0,37r-107,0","w":149},"\u02d8":{"d":"135,-267v-5,34,-23,54,-60,55v-35,0,-55,-19,-60,-55r33,0v3,14,10,22,27,22v17,0,24,-8,27,-22r33,0","w":149},"\u02d9":{"d":"75,-270v15,0,29,15,29,30v-1,17,-12,27,-29,28v-18,0,-28,-12,-30,-28v-2,-15,15,-31,30,-30","w":149},"\u02da":{"d":"75,-300v26,0,44,18,44,44v0,27,-18,44,-44,44v-26,0,-45,-17,-45,-44v0,-26,18,-44,45,-44xm75,-237v11,0,17,-8,17,-19v0,-11,-7,-18,-17,-18v-10,0,-17,6,-17,18v0,12,6,19,17,19","w":149},"\u00b8":{"d":"73,16v19,-9,40,2,40,24v0,38,-58,32,-81,18r7,-15v16,8,40,15,45,-3v0,-11,-15,-10,-21,-5r-13,-8r9,-27r19,0","w":149},"\u02dd":{"d":"107,-212r-36,0r27,-58r59,0xm38,-212r-36,0r26,-58r59,0","w":149},"\u02db":{"d":"117,56v-18,16,-76,23,-76,-14v1,-19,12,-31,23,-42r21,0v-6,15,-11,20,-11,36v1,19,24,14,37,6","w":149},"\u02c7":{"d":"96,-212r-42,0r-40,-58r38,0r23,24r23,-24r37,0","w":149},"\u00d0":{"d":"98,-252v71,1,97,45,97,124v0,79,-26,127,-102,128r-68,0r0,-107r-17,0r0,-47r17,0r0,-98r73,0xm82,-50v50,5,51,-31,51,-77v-1,-45,-1,-82,-51,-75r0,48r22,0r0,47r-22,0r0,57","w":207}}});

var Fiddme = {
	last_visited_place: null,
	
	log: function(msg) {
		if (window.console) {
			if (console.debug) console.debug(msg)
			else if (console.log) console.log(msg)
		}
	},

	init: function() {
		$('select, input:checkbox, input:radio, input:file').uniform();
		this.initFollowButtons();	
		
		// GA Event tracking
		$('#footer-wrapper #footer a').track({
			category : 'footer'
		});
		
		$('#profile_progress a').track({
			category : 'profile_progress'
		});
		
		$('#pagination a').track({
			category : 'pagination',
			action: 'more'
		});
		
		$('#ajax-error').bind("ajaxError", function() {
			$('#ajax-error').fadeIn('slow', function() {
				window.setTimeout(function() {
					$('#ajax-error').fadeOut('slow');
				}, 3000);
			});
		});
	},
	
	initFollowButtons: function() {
		// Follow buttons
		$('.button-follow').click(function() {
			var o = $(this);
	        var username = o.attr("id");
	        username = username.replace('follow_', '')
	        url = "/user/" + username + "/follow"
	        
	        o.removeClass('button-follow');
	        o.addClass('button-follow-loading');
	        
	        jQuery.ajax({
	            type: "POST",
	            url: url,
	            dataType:"json",
	            //data:"",
	            success:function(response){
			    	//alert("follow worked!");

		    		// Hide the follow button
		    		o.hide();
					o.removeClass('button-follow-loading');
					o.addClass('button-follow');
		    		
		    		// Show the unfollow button
		    		$('#unfollow_' + username).fadeIn(200);
	            },
	            error:function (xhr, ajaxOptions, thrownError){
	    	    	//alert("it didnt...");
	            	
	    	    	o.removeClass('button-loading');
	    	    	o.addClass('button-follow');
	            }    
	        });
	        
	        return false;
		});
		
		// Unfollow buttons
		$('.button-unfollow').click(function() {
			var o = $(this);
	        var username = o.attr("id");
	        username = username.replace('unfollow_', '')
	        url = "/user/" + username + "/unfollow"
	        
	        o.removeClass('button-unfollow');
	        o.addClass('button-follow-loading');
	        
	        jQuery.ajax({
	            type: "POST",
	            url: url,
	            dataType:"json",
	            //data:"",
	            success:function(response){
			    	//alert("unfollow worked!");

		    		// Hide the follow button
		    		o.fadeOut(200);
					o.removeClass('button-follow-loading');
					o.addClass('button-unfollow');
	        		
		    		
		    		// Show the unfollow button
		    		$('#follow_' + username).fadeIn(200);
	            },
	            error:function (xhr, ajaxOptions, thrownError){
	    	    	//alert("it didnt...");
	            	
	    	    	o.removeClass('button-loading');
	    	    	o.addClass('unbutton-follow');
	            }    
	        });
	        
	        return false;
		});
		
		// Display relevant buttons based on follow status
		$('.button-follow').each(function() {
			var o = $(this);
	        var username = o.attr("id");
	        username = username.replace('follow_', '')
	        url = "/user/" + username + "/is_following"
	        
	        jQuery.ajax({
	            type: "POST",
	            url: url,
	            dataType:"json",
	            //data:"",
	            success:function(response){
	        		if (!response) {
	        			o.fadeIn(200)	        		
	        		}
	        		else {
	        			id = o.attr("id");
	        			$("#un" + id).fadeIn(200)
	        		}
	            },
	            error:function (xhr, ajaxOptions, thrownError){
	            	// If there was an error just show the follow button
	            	// TODO: maybe show an error to user or retry...
	            	o.fadeIn(200)
	            }    
	        });
		})		
	},
	
	fb_login: function(callback_url) {
		FB.login(function(response) {
		  if (response && response.session) {
		    if (response.perms) {
		      // user is logged in and granted some permissions.
		      // perms is a comma separated list of granted permissions
		      Fiddme.log(response.perms);
			  
			  has_offline_access = (response.perms.indexOf('offline_access') > -1);
			  has_publish_stream = (response.perms.indexOf('publish_stream') > -1);
			  has_publish_checkins=(response.perms.indexOf('publish_checkins') > -1);
			  
			  if (has_offline_access && has_publish_stream && has_publish_checkins) {
				  Fiddme.log("We have a the required permissions!")
				  
				  FB.api('/me', function(me) {
					  FB.ui(
					   {
						   method: 'stream.publish',
						   message: 'I just started using Fiddme to share my favorite food!',
						   attachment: {
							   name: 'Connect with ' + me.name + ' on Fiddme',
							   /*caption: 'Broadcast your food',*/
							   description: 'Fiddme aims to be your local visual guide to culinary wonders around you, exposing you to new places and interesting people in your area.',
							   href: 'http://www.fiddme.com',
							   media : [{
							            'type' : 'image',
							            'src' : 'http://www.fiddme.com/media_global_images/footer-chef.png',
							            'href' : 'http://www.fiddme.com?utm_source=facebook&utm_medium=wall%2Bpost&utm_campaign=Started%2Busing%2BFiddme'
							            }]
					   	   },
					   	   action_links: [
					   	       { text: 'Download the iPhone App', href: 'http://www.fiddme.com/itunes?utm_source=facebook&utm_medium=wall%2Bpost&utm_campaign=Started%2Busing%2BFiddme' }
					   	   ],
					   	   user_message_prompt: 'Tell your friends about Fiddme'
					   },
					   function(response) {
						   
						   if (response && response.post_id) {
							   //alert('Post was published.');
							   $.trackEvent('facebook', 'started using fiddme');
						   } else {
							   //alert('Post was not published.');
							   $.trackEvent('facebook', 'started using fiddme skipped');
						   }
						   
						     
						   window.location = callback_url;
					   });							  
				  });
			  	
			  }
		    } else {
		      // user is logged in, but did not grant any permissions
		    }
		  } else {
		    // user is not logged in
		  }
		}, {perms:'publish_stream,offline_access,publish_checkins,user_checkins'});
	},
	
	showNearbyBites : function(options) {
		Fiddme.Location.getLocationCB(function(loc){
			lat = loc[0];
			lng = loc[1];
			url = options.endpoint + "?lat=" + lat + "&lng=" + lng;

			$.ajax({url : url,
					dataType : 'json',
					context: options,
					success : function(data) {
						if (data != null) {
							bites = data.bites
							html = "";
							for (i = 0; i < bites.length; i++) {
								bites[i].date_created = relative_time(bites[i].date_created)
								htmlStr = tmpl('bite_tmpl', {
									bite : bites[i]
								});
								html = html + htmlStr;
							}
							$(this.container).html(html);
							if (this.success)
								this.success();
						}
					},
					error : function(XMLHttpRequest, textStatus, errorThrown) {
					}
			});			
		});
	},
		
	// Fiddme.showBites({container: '.public_timeline', endpoint: '/activity/public_timeline'})
	showBites: function(options) {
		cursor = $(options.container + " #more").attr('href')
		url = options.endpoint + "?cursor=" + cursor
		
		// Turn on AJAX Loading icon
		$(options.container + " #more").addClass('loading');
		$(options.container + " #more span").hide();
		
		$.ajax({
		  url: url,
		  dataType: 'json',
		  success: function(data){
		  	if (data != null) {
				bites = data.bites
				for (i = 0; i < bites.length; i++) {
					bites[i].date_created = relative_time(bites[i].date_created)
					htmlStr = tmpl('bite_tmpl', {
						bite: bites[i]
					});
					//$(options.container).children('#pagination').before(htmlStr).fadeIn('slow');
					insert_before = $(options.container).children('#pagination');
					$(htmlStr).insertBefore(insert_before).fadeIn('slow');
				}
				
				// Update the cursor
				if (typeof(data.cursor) == 'undefined') {
					$(options.container).children('#pagination').hide();
				}
				else {
					$(options.container + " #more").attr('href', data.cursor);
				}
				//update tipsy hover card
				$('.hover-card').tipsyHoverCard({ delayIn: 300, fade: true });
			}
			
			// Turn off AJAX Loading icon
			$(options.container + " #more").removeClass('loading');
			$(options.container + " #more span").show();
		  },
		  error: function(XMLHttpRequest, textStatus, errorThrown) {
		  	// Turn off AJAX Loading icon
			$(options.container + " #more").removeClass('loading');
			$(options.container + " #more span").show();
		  }
		});
	},
	
	// Fiddme.showUserBadges({container: '.public_timeline', endpoint: '/user/ekampf/badges'})
	showUserBadges: function(options) {
		url = options.endpoint;
		$.getJSON(url, function(data){
			if (data == null) return;
			
			for (i = 0; i < data.length; i++) {
				htmlStr = tmpl('userbadge_tmpl', {b: data[i]});
				$(options.container).append(htmlStr);
			}
		})		
	},
	
	getFlickrImagesForPlace: function(placeURL) {
		var placeId = placeURL.split('/')[2];
		var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=fiddme%3Aplace%3D" + spotId + "&lang=en-us&format=json&jsoncallback=?";
		$.getJSON(url, function(data) {
			$.each(data.items, function(i, item) {
				$("<img/>").attr("src", item.media.m).appendTo("#flickr-images");
				if ( i == 3 ) return false;
			});
		});	
	},
	
	loadTwitterFriends: function(url) {
        $.getJSON(url, function(data){
              $.each(data['twitter_friends'], function(i, user) {
                $("<li><a href=\"" + user.url + "\">" + h(user.name) + "</a> - <a href=\"#\" onclick=\"Fiddme.follow('" + user.request_url + "'); return false;\">Add</a></li>").appendTo("#twitter_friends");
              });
        });
    },
	
	showFlags: function() {
		
		$(".activity-body").each(function(){
			
			loc = $(this).find('.location').first();
			lat = loc.attr('latitude');
			lon = loc.attr('longitude');
			url = "http://maps.google.com/maps/geo?q=" + lat + "," + lon +"&output=json&sensor=false&key=ABQIAAAAXbxfNrgmZkXHltEbgRyKfRRcys3N9kzEgj8zplfJ1_hf65QVShT_44d8nfZsrUNyv4O-qNi0_7KytA"
			
			published = $(this).find('.published');
			
			$.ajax({
			  url: url,
			  context: published,
			  dataType: 'jsonp',
			  success: function(data) {
			  	if (data==null){
					$(this).append("error");
				}
				
				name = "";
				code = "";
				try {
				
				
					for (i = 0; i < data.Placemark.length; i++) {
						try {
							p = data.Placemark[i];
							if (p.AddressDetails === undefined) {
								continue;
							}
							
							if (p.AddressDetails.Country == undefined) {
								continue;
							}
							name = data.Placemark[0].AddressDetails.Country.CountryName;
							code = data.Placemark[0].AddressDetails.Country.CountryNameCode;
							break
						} 
						catch (err) {
							continue;
						}
					}
				}
				catch(err)
				{
					
				}
				if (code != "") {
					if ($(this).find('.country').length == 0) {
						$(this).append(" <span class='country'>from <img src='"+site_data.settings.MEDIA_URL +"global/images/flags/" + code.toLowerCase() + ".gif' /> " + name + "</span>");
					}
				}
				
			  }
			});
		})
		
		
	},
	
	popup: function(url) {
		$.ajax({
		  type: "GET",
		  url: url,
		  dataType: 'html',
		  success: function(html) { $('#popup').html(html) }
		});
	},
	
	searchPlaces: function(params, callback) {
		base = '/place/search.json?';
		url = 'q=' + params['term'];
		
		if (params['ne'] != null) {
			url += '&north=' + params['ne'][0];
			url += '&east=' + params['ne'][1];
		}
		
		if (params['sw'] != null) {
			url += '&south=' + params['sw'][0];
			url += '&west=' + params['sw'][1];
		}
		
		if (params['category'] != null)
			url += '&cat=' + params['category'];

		if (params['friends'] != null)
			url += '&friends=' + params['friends'];

		if (params['order'] != null)
			url += '&order=' + params['order'];

		$.getJSON(base + url, callback);
		return url;
	},
	
	getLetterForIndex: function(i){
        return String.fromCharCode("A".charCodeAt(0) + i);
    }
}

Fiddme.Location = (function() {
  var WATCH_ID;
  var POSITION;
  var CB;
  var INITIALIZED = false;

  function _initGeolocation(callback) {
	CB = callback;
  	if(geo_position_js.init()){
		geo_position_js.getCurrentPosition(_positionSucceeded,_positionFailed);
	}
	else{
   		_positionFailed();
		//alert("Functionality not available");
	}
  }

  function _positionSucceeded(position) {
  	//position parameter looks like this: {coords:{latitude:theLatitude,longitude:theLongitude},timestamp:whenTheLocationWasRetrieved}
    POSITION = position;
    INITIALIZED = true;
    if (CB)
    	CB();
  }

  function _positionFailed(error) {
    POSITION = null;
    INITIALIZED = true;
    if (CB)
    	CB();
  }

  return {
	init: function(callback) {
	  _initGeolocation(callback);
    },
	  
    getLocation: function() {
      var lat, lng;
	  //var lastSpot = Fiddme._lastVisitedPlace;
      
      if (POSITION) {
        var coords = POSITION.coords;
        return [coords.latitude, coords.longitude];
      } 
      //else if (lastSpot) {
      //  return lastSpot;
      //}

	  return [32.078069, 34.770368]; // Tel aviv fallback for debugging :)
    },
    
    getLocationCB: function(cb) {
    	if (!INITIALIZED){
    		_initGeolocation(function(){
    			loc = Fiddme.Location.getLocation();
    			cb(loc);
    		})
    	}
    	else {
    		loc = Fiddme.Location.getLocation();
			cb(loc);
    	}
    },
    
    isLocationAvailable: function() {
    	if (POSITION) {
    		return true;
    	}
    	
    	return false;
    }
  };
})();



Array.prototype.unique = function( b ) {
    var a = [], i, l = this.length;
    for( i=0; i<l; i++ ) {
        if( a.indexOf( this[i], 0, b ) < 0 ) { a.push( this[i] ); }
    }
    return a;
};

function relative_time(time_value) {
    var values = time_value.split(" ");
    time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
    //var parsed_date = Date.parse(time_value);
	var parsed_date = Date.parse(values[0]);
	
    var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
    var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
    delta = delta + (relative_to.getTimezoneOffset() * 60);

    if (delta < 60) {
      return 'less than a minute ago';
    } else if(delta < 120) {
      return 'about a minute ago';
    } else if(delta < (60*60)) {
      return (parseInt(delta / 60)).toString() + ' minutes ago';
    } else if(delta < (120*60)) {
      return 'about an hour ago';
    } else if(delta < (24*60*60)) {
      return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
    } else if(delta < (48*60*60)) {
      return '1 day ago';
    } else {
      return (parseInt(delta / 86400)).toString() + ' days ago';
    }
}

Fiddme.Map = (function($) {
    function h(str){
        if (!str)return;
        return str.replace(/\&/gi, '&amp;').replace(/\"/gi, "\&quot;").replace(/\>/gi, "&gt;").replace(/\</gi, "&lt;");
    }
    
    function getLetterForIndex(i){
        return String.fromCharCode("A".charCodeAt(0) + i);
    }
    
    var CODE_A = "A".charCodeAt(0);
	var CODE_Z = "Z".charCodeAt(0);
    
    function makeIcon(letter){
        if (typeof letter === 'number') {
            letter = getLetterForIndex(letter);
        }
       
        var code = letter.charCodeAt(0), url;
        if (code > CODE_Z || code < CODE_A) {
            url = "http://www.google.com/mapfiles/marker.png";
        }
        else {
            //url = "http://www.google.com/mapfiles/marker" + letter + ".png";
			url = "http://"+ window.location.host + site_data.settings.MEDIA_URL + 'global/images/mapmarkers/' + letter.toLowerCase() + '.png';
        }
		
		return new M.MarkerImage(url, new M.Size(45, 41), null, new M.Point(9, 34), null);
		/*
		var baseIcon = new google.maps.Icon(G_DEFAULT_ICON);
        baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        baseIcon.iconSize = new GSize(20, 34);
        baseIcon.shadowSize = new GSize(37, 34);
        baseIcon.iconAnchor = new GPoint(9, 34);
        baseIcon.infoWindowAnchor = new GPoint(9, 2);
        baseIcon.infoShadowAnchor = new GPoint(18, 25);
		
		var letterIcon = new GIcon(baseIcon);
		letterIcon.image = url
		
		return letterIcon;
		*/
    }
    
    function clone(object){
        return $.extend({}, object);
    }
    
    function makeResponder(property, that){
        var opt = that.options;
        return function(){
            if (opt.handlers[property] && !that._ignoreEvents) {
                return opt.handlers[property].apply(that.map, arguments);
            }
        };
    }
	
	function isIsrael(point) {
	    var israelBounds = new M.LatLngBounds()
	    israelBounds.extend(new M.LatLng(29.63650088703565, 34.21142578125));
	    israelBounds.extend(new M.LatLng(33.21663143472972, 34.112548828125));
	    israelBounds.extend(new M.LatLng(33.26257546740698, 36.5625));
	    israelBounds.extend(new M.LatLng(29.569635031197144, 35.26611328125));
	    return israelBounds.contains(point);
	}
    
	var M = google.maps;
    var DEFAULT_OPTIONS = {
        SETUP: {
            selector: '#map',
			zoom: 7,
            handlers: {}
        },
        
        MAP: {
			zoom: 12,
			mapTypeId: M.MapTypeId.ROADMAP
		},
        
        MARKER: {}
    };
    
    var EVENTS = ('bounds_changed center_changed click dblclick drag dragend ' +
   'dragstart idle maptypeid_changed mousemove mouseout mouseover ' +
   'projection_changed resize rightclick tilesloaded zoom_changed').split(' ');
    
    return {
        setup: function(options){
            options = $.extend(clone(DEFAULT_OPTIONS.SETUP), options || {});
            this.options = options;
            
            this.element = $(options.selector)[0];
            
            var mapOptions = clone(DEFAULT_OPTIONS.MAP);
            if (options.center) {
				mapOptions.center = options.center;
				if (isIsrael(mapOptions.center)){
					mapOptions.mapTypeId = google.maps.MapTypeId.HYBRID;
				}
			}
            if (options.zoom)   mapOptions.zoom   = options.zoom;
			//if (options.size)   mapOptions.size = options.size;
            
            this.map = new M.Map(this.element, mapOptions);
			
            var handlers = options.handlers;
            var that = this;
            			
            $.each(EVENTS, function(i, eventName){
				M.event.addListener(that.map, eventName, makeResponder(eventName, that));
            });
                        
            this.places = [];            
        },
        
        setOptions: function(options){
            $.extend(this.options, options || {});
            return this.options;
        },
        
        clearPlaces: function(){
			$.each(this.places, function(i, place) { if (place.marker) place.marker.setMap(null); });
		    this.places = [];
        },
        
        ignoreEvents: function(bool){
            this._ignoreEvents = bool;
        },
        
        addPoint: function(lat, lng, options){
            options = $.extend(clone(DEFAULT_OPTIONS.MARKER), options || {});
            var point = new M.LatLng(lat, lng);
            
			options = $.extend({ position: point, map: this.map }, options);
			if ('letter' in options) {
                options.icon = makeIcon(options.letter);
                delete options.letter;
            }
			
            var marker = new M.Marker(options);
			if (options.onclick) {
		        M.event.addListener(marker, 'click', function() {
          			options.onclick.apply(this, [marker, this.map]);
        		});
      		}

			marker.setMap(this.map)			
            return marker;
        },
        
        addPlace: function(place, options){
            if (this._inPlacesList(place)) 
                return;
				
            this.places.push(place);
			
            options = options || {};
            if (place.name && !options.title) {
                options.title = h(place.name);
            }
			
            var marker = this.addPoint(place.lat, place.long, options);
            place.marker = marker;
            return marker;
        },
        
        openPlaceInfoWindow: function(place, marker){
			var content = tmpl('place_map_info_window', { place: place });
			var infoWindow = new M.InfoWindow({ content: content });
            infoWindow.open(this.map, marker);
        },
        
        zoomAndCenter: function(){
            var places = this.places;
            if (places.length === 0) 
                return false;
				
			if (places.length === 1) {
				p = places[0];
				center = new M.LatLng(p.lat, p.long);
				this.setCenter(center);
				this.map.setZoom(16); 
				return;
			}
            
			var sorted = places.slice(0);
      		var n = sorted.sort(function(a ,b){ return b.lat - a.lat })[0].lat;
  			var e = sorted.sort(function(a, b){ return b.long - a.long })[0].long;
  			var s = sorted.sort(function(a, b){ return a.lat - b.lat })[0].lat;
  			var w = sorted.sort(function(a, b){ return a.long - b.long })[0].long;

  			var sw = new M.LatLng(s, w);
			var ne = new M.LatLng(n, e);
			
  			var bounds = new M.LatLngBounds(sw, ne);
  			this.map.fitBounds(bounds);
        },
        
		setBounds: function(bounds) {
	    	this.map.fitBounds(bounds);
    	},
		panTo: function(center) {
			this.map.panTo(center);
		},
		setCenter: function(center) {
			this.map.setCenter(center);
		},
        
        _inPlacesList: function(place){
            if (!place.url) 
                return false;
				
            var result = false;
            $.each(this.places, function(i, s){
                if (s.url === place.url) 
                    result = true;
            });
            return result;
        }
    };
})(jQuery);
Fiddme.NewBite = (function($) {
	var DEFAULT_OPTIONS = {
			SETUP: {}
	};
	
	function clone(object){
        return $.extend({}, object);
    }
	
	function openNewBitedialog(place) {
		// Init overlay
		$('#dialog-container').load('/get_dialog_new_bite', function(){
			//$('select, input:checkbox, input:radio, input:file', this).uniform();
			$('select, input:checkbox, input:radio', this).uniform();
			Cufon.refresh();
			
			// Rating buttons				
			$('ul.rating li', this).click(function(){
				$this= $(this)
				
				// Turn off all the rest
				$this.parent('ul.rating').find('li a').removeClass('selected')

				// Select clicked element
				$anchor = $('a', $this).addClass('selected')

				// Set form value
				v = $anchor.attr('emotion');
				$('#id_emotion').val(v);
			})
			
			
			// Sharing buttons
			$('ul.sharing li', this).click(function(){
				$this= $(this)
				$anchor = $('a', $this).toggleClass('on').toggleClass('off').blur();
				
				input_selector = '#id_sharing_' + $anchor.attr('service');
				$input = $(input_selector);
				v = $anchor.hasClass('on') ? 'True' : 'False';
				$input.val( v );				
			})
			
			
			var $overlay_new_bite = $('#overlay_new_bite');
			var $place_details = $('.place-details', $overlay_new_bite);
			
			// Fill place data
			
			if (place.id !== undefined) {
				$('#id_place', $place_details).val(place.id)
			}
			else {
				json_place = JSON.stringify(place)
				$('#id_newplacedetails', $place_details).val(json_place)
			}
			$('.name', $place_details).html(place.name)
			
			address = place.address.split(',');
			$('.address:first', $place_details).html(address[0]);
			$('.address:gt(0)', $place_details).html(address[1]);

			if (place.category) {
				$('.category', $place_details).attr('alt', place.category.name)
										  	  .attr('src', place.category.image);
			}
			
			// Form validation 
			var $form = $("#new_bite_form");
			$form.submit(function(){
				// Base64 encode the caption
				$caption = $('#id_caption', $form)
				$caption_b64 = $('#id_caption_base64', $form)
				
				encoded_caption = $.base64Encode($caption.val()); 
				$caption_b64.val(encoded_caption);
				
				// Check that we have an image
				$file_input = $('#id_file', $form)
				if ($file_input.val()) {
					return true
				}
				else {
					tipsy_settings = {
							trigger: 'manual',
							title: function() { return 'Image is required'; },
							fade: true,
							gravity: 'w'
					};
					$file_input.tipsy(tipsy_settings).tipsy("show");
					setTimeout(function(){
						$file_input.tipsy(tipsy_settings).tipsy("hide")
					}, 1000)
					return false;
				}
			})
			
			
			// Init
			$overlay_new_bite.show();
		});			
	}	
	
	return {
		setup: function(options){
			options = $.extend(clone(DEFAULT_OPTIONS.SETUP), options || {});
			this.options = options;
			
			// Initialize variables
			var that = this;
			this.place = null;
			this.$place_search_banner = $('#place-search-banner');
			this.$ac_widget = $('#place-search input');
						
			// Init autocomplete
			this.$ac_widget.autocomplete({
				delay: 500,
				minLength: 4,
				//source: "/places/live_search_newbite",
				source: function(request, response) {
					$.ajax({
						url: "/places/live_search_newbite",
						dataType: "json",
						data: request,
						success: function( data ) {
							response( data );
						},
						error: function(XMLHttpRequest, textStatus, errorThrown) {
							$('.search-box').removeClass('search-box-loading');
						}
					});
			    },
				search: function(event, ui) {
					$('.search-box').addClass('search-box-loading');
				},
				open: function(event, ui) {
					$('.search-box').removeClass('search-box-loading');
					
					$('ul.ui-autocomplete').removeAttr('style').hide().appendTo('.results-container').show();
					//$('ul.ui-autocomplete').appendTo('.results-container');
					
					// Add some styling
					$("ul.ui-autocomplete li:odd").addClass("odd")
					$("ul.ui-autocomplete li:even").addClass("even")
	    		},
				focus: function(event, ui) {
					$('#place-search input').val(ui.item.name);
					return false;
				},
				select: function(event, ui) {
					$('#place-search-banner').fadeOut();

					$('#place-search input').val(ui.item.name);
					
					// Set the current place
					that.place = ui.item
					
					// Launch bite edit dialog
					//that.$overlay_new_bite.show();
					$('#overlay_new_bite').remove();
					openNewBitedialog(that.place);
					
					return false;
				}
			});
			
            // Replace the _renderItem method			
            this.$ac_widget.data("autocomplete")._renderItem = function(ul, item){
                return $("<li></li>").data("item.autocomplete", item)
														  .append("<a><span class='name'>" + item.name + "</span><span class='address'>" + item.address + "</span></a>")
														  .appendTo(ul);
            };
            
			
			/*
			 * 
			 * This is what gets rendered by default:
			 * <li class="ui-menu-item even" role="menuitem"><a class="ui-corner-all" tabindex="-1">undefined</a></li>
			 * 
			 * This is the original _renderItem:
			 * _renderItem: function( ul, item) {
			 * 		return $( "<li></li>" )
			 * 			.data( "item.autocomplete", item ).append( "<a>" + item.label + "</a>" ).appendTo( ul ); 
			 * },
			 *  
			 */			
		},
		
		showPlaceSearchBanner : function(){
			this.$place_search_banner.fadeIn('slow');
		},
		hidePlaceSearchBanner : function(){
			this.$place_search_banner.fadeOut('slow');
		}
		
	};
})(jQuery)

Fiddme.Widgets = (function($) {
	var DEFAULT_OPTIONS = {
			SETUP: {}
	};	

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

	function updateIframe(that) {
		var str='';
		var stc= '';
		
		if (that.options.current == 'play') {
			var bg = $('#play-bg').val();
			if (bg.length > 1) {
				if (bg.charAt(0)=="#")
					bg = bg.substring(1,bg.length);
			}
			
			var title = $('#play-title').val();
			if (title.length > 1) {
				if (title.charAt(0)=="#")
					title = title.substring(1,title.length);
			}
			var un = that.options.play.value;
			if (!un)
				return false;

			src = that.options.play_src.replace('@host', window.location.host).replace('@username', un).replace('@background', bg).replace('@title', title);
			str = that.options.iframe_str.replace('@src',src).replace('@width','280').replace('@height','410');
		}
		
		if (that.options.current == 'user') {
			var bg = $('#user-bg').val();
			if (bg.length > 1) {
				if (bg.charAt(0)=="#")
					bg = bg.substring(1,bg.length);
			}
			
			var title = $('#user-title').val();
			if (title.length > 1) {
				if (title.charAt(0)=="#")
					title = title.substring(1,title.length);
			}

			var un = that.options.user.value;
			if (!un)
				return false;

			src = that.options.user_src.replace('@host', window.location.host).replace('@username', un).replace('@background', bg).replace('@title', title);
			str = that.options.iframe_str.replace('@src',src).replace('@width','280').replace('@height','450');
		}

		if (that.options.current == 'place') {
			var bg = $('#place-bg').val();
			if (bg.length > 1) {
				if (bg.charAt(0)=="#")
					bg = bg.substring(1,bg.length);
			}

			var placeId = that.options.place.value;
			if (!placeId)
				return false;

			src = that.options.place_src.replace('@host', window.location.host).replace('@place',placeId).replace('@background', bg).replace('@utm_source', that.options.user.value);
			str = that.options.iframe_str.replace('@src',src).replace('@width','500').replace('@height','250');
		}

		if (that.options.current == 'mouse') {
			var bg = $('#mouse-bg').val();
			if (bg.length > 1) {
				if (bg.charAt(0)=="#")
					bg = bg.substring(1,bg.length);
			}

			var placeId = that.options.mouse.value;
			if (!placeId)
				return false;

			src = that.options.mouse_src.replace('@host', window.location.host).replace('@place',placeId).replace('@background', bg).replace('@utm_source', that.options.user.value);
			str = that.options.iframe_str.replace('@src',src).replace('@width','500').replace('@height','300');
		}

		$('.iframe').html(str);
		$('#widget-code').val(str);
	}
	
	function updateWidgetSelectors(that) {
		$('#type-widget li').removeClass('selected');
		$('.cust-panel').hide();
		updateIframe(that);

		if (that.options.current == 'play') {
			$('#play').parent().addClass('selected')
			$('#play-customize').fadeIn('slow');
		}
		if (that.options.current == 'user') {
			$('#user').parent().addClass('selected')
			$('#user-customize').fadeIn('slow');
		}
		if (that.options.current == 'place') {
			$('#place').parent().addClass('selected')
			$('#place-customize').fadeIn('slow');
		}
		if (that.options.current == 'mouse') {
			$('#mouse').parent().addClass('selected')
			$('#mouse-customize').fadeIn('slow');
		}
	}
	
	return {
		setup: function(options) {
			options = $.extend(clone(DEFAULT_OPTIONS.SETUP), options || {});
			this.options = options;

			var that = this;

			// Initialize variables
			this.options.iframe_str = '<iframe src="@src" scrolling="no" frameborder="0" width="@width" height="@height" allowtransparency="true" ></iframe>';
			this.options.play_src = 'http://@host/widgets/user/@username?design=2&background=@background&titleColor=@title';		
			this.options.user_src = 'http://@host/widgets/user/@username?design=1&background=@background&titleColor=@title';		
			this.options.place_src = 'http://@host/widgets/place/@place?background=@background&utm_source=@utm_source';		
			this.options.mouse_src = 'http://@host/widgets/place/@place?design=mouse&background=@background&utm_source=@utm_source';		

			//default values
			this.options.current = 'play';
			this.options.mouse = this.options.place;
			
			//parsed values from url
			if (options.url.view && options.url.view != '') {
				if (options.url.view == 'play') {
					this.options.current = 'play';
					this.options.play.label = options.url.label;
					this.options.play.value = options.url.value;
				}
				if (options.url.view == 'user') {
					this.options.current = 'user';
					this.options.user.label = options.url.label;
					this.options.user.value = options.url.value;
				}
				if (options.url.view == 'place') {
					this.options.current = 'place';
					this.options.place.label = options.url.label;
					this.options.place.value = options.url.value;
				}
				if (options.url.view == 'mouse') {
					this.options.current = 'mouse';
					this.options.mouse.label = options.url.label;
					this.options.mouse.value = options.url.value;
				}
			}

			$('#play-un').val(this.options.play.label);
			$('#user-un').val(this.options.user.label);
			$('#place-name').val(this.options.place.label);
			$('#mouse-name').val(this.options.mouse.label);
			updateWidgetSelectors(this);
			
			// Init autocomplete
			$('#play-un').autocomplete({
				delay: 300,
				source: "/user/live_search",
				search: function(event, ui) {
					$('#play-un').parent().siblings().children('div').addClass('ac-loading');
				},
				open: function(event, ui) {
					$('#play-un').parent().siblings().children('div').removeClass('ac-loading');

					// Add some styling
					$("ul.ui-autocomplete li:odd").addClass("odd");
					$("ul.ui-autocomplete li:even").addClass("even");
					$("ul.ui-autocomplete").css('width', '300px');
	    		},
				focus: function(event, ui) {
					$('#play-un').val(ui.item.label);
					return false;
				},
				select: function(event, ui) {
					// Set the current place
					that.options.play = ui.item
					updateIframe(that);
					return false;
				}
			});
			
			$('#user-un').autocomplete({
				delay: 300,
				source: "/user/live_search",
				search: function(event, ui) {
					$('#user-un').parent().siblings().children('div').addClass('ac-loading');
				},
				open: function(event, ui) {
					$('#user-un').parent().siblings().children('div').removeClass('ac-loading');

					// Add some styling
					$("ul.ui-autocomplete li:odd").addClass("odd");
					$("ul.ui-autocomplete li:even").addClass("even");
					$("ul.ui-autocomplete").css('width', '300px');
	    		},
				focus: function(event, ui) {
					$('#user-un').val(ui.item.label);
					return false;
				},
				select: function(event, ui) {
					// Set the current place
					that.options.user = ui.item
					updateIframe(that);
					return false;
				}
			});

			$('#place-name').autocomplete({
				delay: 300,
				source: "/places/live_search",
				search: function(event, ui) {
					$('#place-name').parent().siblings().children('div').addClass('ac-loading');
				},
				open: function(event, ui) {
					$('#place-name').parent().siblings().children('div').removeClass('ac-loading');

					// Add some styling
					$("ul.ui-autocomplete li:odd").addClass("odd");
					$("ul.ui-autocomplete li:even").addClass("even");
					$("ul.ui-autocomplete").css('width', '300px');
	    		},
				focus: function(event, ui) {
					$('#place-name').val(ui.item.label);
					return false;
				},
				select: function(event, ui) {
					// Set the current place
					that.options.place = ui.item
					updateIframe(that);
					return false;
				}
			});
			
			$('#mouse-name').autocomplete({
				delay: 300,
				source: "/places/live_search",
				search: function(event, ui) {
					$('#mouse-name').parent().siblings().children('div').addClass('ac-loading');
				},
				open: function(event, ui) {
					$('#mouse-name').parent().siblings().children('div').removeClass('ac-loading');

					// Add some styling
					$("ul.ui-autocomplete li:odd").addClass("odd");
					$("ul.ui-autocomplete li:even").addClass("even");
					$("ul.ui-autocomplete").css('width', '300px');
	    		},
				focus: function(event, ui) {
					$('#mouse-name').val(ui.item.label);
					return false;
				},
				select: function(event, ui) {
					// Set the current place
					that.options.mouse = ui.item
					updateIframe(that);
					return false;
				}
			});

			//set default context
			updateIframe(that);
			
			$('#play').click(function() {
				console.log(that);
				that.options.current = 'play';
				updateWidgetSelectors(that);
				return false;
			});
			
			$('#user').click(function() {
				console.log(that);
				that.options.current = 'user';
				updateWidgetSelectors(that);
				return false;				
			});
			
			$('#place').click(function() {
				that.options.current = 'place';
				updateWidgetSelectors(that);
				return false;
			});

			$('#mouse').click(function() {
				that.options.current = 'mouse';
				updateWidgetSelectors(that);
				return false;
			});
			
			$('#prev-button').click(function() {
				updateIframe(that);
				return false;
			});
			
			$('#play-bg-cp').ColorPicker({
				color: '#000',
				onShow: function (colpkr) {
					$(colpkr).fadeIn(500);
					return false;
				},
				onHide: function (colpkr) {
					$(colpkr).fadeOut(500);
					updateIframe(that);
					return false;
				},
				onChange: function (hsb, hex, rgb) {
					$('#play-bg-cp').css('backgroundColor', '#' + hex);
					$('#play-bg').val('#' + hex);
				}
			});
			$('#play-title-cp').ColorPicker({
				color: '#fff',
				onShow: function (colpkr) {
					$(colpkr).fadeIn(500);
					return false;
				},
				onHide: function (colpkr) {
					$(colpkr).fadeOut(500);
					updateIframe(that);
					return false;
				},
				onChange: function (hsb, hex, rgb) {
					$('#play-title-cp').css('backgroundColor', '#' + hex);
					$('#play-title').val('#' + hex);
				}
			});
			$('#user-bg-cp').ColorPicker({
				color: '#fff',
				onShow: function (colpkr) {
					$(colpkr).fadeIn(500);
					return false;
				},
				onHide: function (colpkr) {
					$(colpkr).fadeOut(500);
					updateIframe(that);
					return false;
				},
				onChange: function (hsb, hex, rgb) {
					$('#user-bg-cp').css('backgroundColor', '#' + hex);
					$('#user-bg').val('#' + hex);
				}
			});
			$('#user-title-cp').ColorPicker({
				color: '#fff',
				onShow: function (colpkr) {
					$(colpkr).fadeIn(500);
					return false;
				},
				onHide: function (colpkr) {
					$(colpkr).fadeOut(500);
					updateIframe(that);
					return false;
				},
				onChange: function (hsb, hex, rgb) {
					$('#user-title-cp').css('backgroundColor', '#' + hex);
					$('#user-title').val('#' + hex);
				}
			});
			$('#place-bg-cp').ColorPicker({
				color: '#fff',
				onShow: function (colpkr) {
					$(colpkr).fadeIn(500);
					return false;
				},
				onHide: function (colpkr) {
					$(colpkr).fadeOut(500);
					updateIframe(that);
					return false;
				},
				onChange: function (hsb, hex, rgb) {
					$('#place-bg-cp').css('backgroundColor', '#' + hex);
					$('#place-bg').val('#' + hex);
				}
			});
			$('#mouse-bg-cp').ColorPicker({
				color: '#fff',
				onShow: function (colpkr) {
					$(colpkr).fadeIn(500);
					return false;
				},
				onHide: function (colpkr) {
					$(colpkr).fadeOut(500);
					updateIframe(that);
					return false;
				},
				onChange: function (hsb, hex, rgb) {
					$('#mouse-bg-cp').css('backgroundColor', '#' + hex);
					$('#mouse-bg').val('#' + hex);
				}
			});
		}
	};
})(jQuery)

Fiddme.Places = (function($) {
	var DEFAULT_OPTIONS = {
			SETUP: {
    		}
	};
	
	var placesSearchAJAX = null;
	var searchBounds = null;
	var isShowingExtra = false;
	
	function clone(object) {
		return $.extend({}, object);
	}
	
    function handleWindowScroll(){
        $results = $("#places_results");
        results = $results[0];
        
        $map = $("#map-wrapper");
        
        $(window).scroll(function(){
            var rect = results.getBoundingClientRect();
            if (rect.top < 0) {
                $map.addClass('fixed');
                $map.css('left', rect.left + 480);
            }
            else {
                $map.removeClass('fixed');
                $map.css('left', '');
            }
        });
    }

    function toggleExtraSearch() {
    	isShowingExtra = !isShowingExtra;
    	if (isShowingExtra) {
            $('#more').html('Hide');
            $('.hideshow_arrow').removeClass('down');
            $('.hideshow_arrow').addClass('up');
            $('.popular ul').hide();
            $('.details').show();
    	}
    	else {
            $('#more').html('Advanced options');
            $('.hideshow_arrow').removeClass('up');
            $('.hideshow_arrow').addClass('down');
            $('.popular ul').show();
            $('.details').hide();
    	}
    }

    function handleSuggestions(param){
        left = param.charAt(0);
        right = param.substring(2, param.length);
        
        if (left == 't') 
            input = $('#what_input');
        if (left == 'r') 
            input = $('#where_input');
        
        input.css('color', '#000');
        input.val(right);
    }
	
	function getFeatured() {
		current_location = Fiddme.Location.getLocation();
        visitorsAJAX = $.ajax({
            type: 'GET',
            url: '/places/featured.json?lat=' + current_location[0] + '&lng=' + current_location[1],
            dataType: 'json',
			//data: 'count=3',
            success: function(data) {
        		if (data && data.featured && data.featured.length > 0) {
        			for (i=0; i<data.featured.length; i++) {
        				if (i % 3 == 2)
        					data.featured[i].table_tag = '</tr><tr>';
        				else
        					data.featured[i].table_tag = '';
        				
        				if (data.featured[i].recent_activities && data.featured[i].recent_activities.length > 0)
        					data.featured[i].thumbnail_url = data.featured[i].recent_activities[0].thumbnail_url;
        				else
        					data.featured[i].thumbnail_url = '';
        			}

                    $('#featured_container').hide();
                    htmlStr = tmpl('featured_tmpl', { data: data });
                    $('#featured_container').html(htmlStr);
                    $('#featured_container').fadeIn('slow');

        		}
        	}
        });
	}
	
	function getVisitors(context) {
		id = context.attr('id').substring(2, context.attr('id').length);
        visitorsAJAX = $.ajax({
            type: 'GET',
            url: '/place/' + id + '/recent_visitors.json?count=10',
            dataType: 'json',
            context: context,
            success: function(data) {
	        	if (data.visitors && data.visitors.length > 0) {
	        		max = Math.min(3, data.visitors.length);
		        	for (i=0; i<max; i++) {
		        		str = '<div class="friends friend' + i + ' round" style="background:url(' + data.visitors[i].profile_image_url +'?size=30);" title="' + data.visitors[i].first_name + ' ' + data.visitors[i].last_name + '"><a href="/user/' + data.visitors[i].username + '"></a></div>';
		        		$(this).append(str);
		        	}
		        	$(this).children('.friends').tipsy({gravity: 'n', fade: true});
		        	
		        	if (data.visitors.length > 3)
		        	$(this).append('<div class="friends friends_text">and ' + (data.visitors.length - 3) + ' more people ate here recently</div>');
	        	}
	        }
        });
	}

	// Note: The initial map setup must be when visible or its visualization gets messed up.
	// thats why we only initialize it here and not during setup()
    function setupMap() {
		if (!Fiddme.Map.map) {
			Fiddme.Map.setup({ 
				zoom: 12,
				handlers : { "dragend" : function() {
					newBounds = this.getBounds();
					northEast = newBounds.getNorthEast();
					southWest = newBounds.getSouthWest();

					// Add bounding box to options object
					$('#where_input').val('');
					
    				searchBounds = [];
    				searchBounds['north'] = northEast.lat();
    				searchBounds['east'] = northEast.lng();
    				searchBounds['south'] = southWest.lat();
    				searchBounds['west'] = southWest.lng();

    				$('#submit_search').addClass('loading');
    				gatherParamsAndSearch(this);
				}}
			});
		}
    }
    
	function doSearch(options, sender) {
		options = options || {}; 
		
        paramsStr = serializeSearchParameters(options);
		if (paramsStr.length > 0)
			window.location.hash = paramsStr;
		
        if (placesSearchAJAX && 'abort' in placesSearchAJAX) {
            placesSearchAJAX.abort();
        }
		
        placesSearchAJAX = $.ajax({
            type: 'GET',
            url: '/place/search.json',
            dataType: 'json',
			data: paramsStr,
            error: function(xhr, textStatus){
				$('#submit_search').removeClass('loading');
                // TODO: show message to user
            },
            success: function(data){
                $('#submit_search').removeClass('loading');

				if (data.results) {
					data = data.results
				}

                if (!data || data.length == 0) {
	                $('#default_container').fadeOut('fast', function() {
                    	$('#places_results .results').hide();
                    	$('#no_results').show();
	                    $('#places_results').fadeIn('fast', function() {
	                    	
	                    	setupMap();

	                    	if (searchBounds) {
		                		var northEast = new google.maps.LatLng(searchBounds['north'], searchBounds['east']);
	                    		var southWest = new google.maps.LatLng(searchBounds['south'], searchBounds['west']);
		                		bounds = new google.maps.LatLngBounds(southWest,northEast);
	                        	Fiddme.Map.setBounds(bounds);
	                    	}
	                    	
	                    	// Clear the places currently displayed
							Fiddme.Map.clearPlaces();

							$("#map").hide().show().height("341px");
	                        
	                        Fiddme.Map.ignoreEvents(false);
	                    })
	                });
                    return;
                }

                //we have results, hide no-results from possible other queries.
				$('#no_results').fadeOut('fast', function() {
					$('#places_results .results').fadeIn('fast');
				});
								
                for (i = 0; i < data.length; i++) {
                    if (data[i].category != null) 
                        data[i].category_tag = '<img src="' + data[i].category.icon + '" alt="' + data[i].category.name + '"/>';
                    else {
                        default_url = site_data.settings.MEDIA_URL + 'global/images/category/default-30.jpg'
                        data[i].category_tag = '<img src="' + default_url + '" />'
                    }
					
                    if (data[i].recent_activities != null && data[i].recent_activities.length > 0) {
                    	data[i].activity_tag = '<div class="activity-pic"><a href="/place/' + data[i].id + '"><img src="' + data[i].recent_activities[0].thumbnail_url +'" class="frame" /></a></div>';
                    }
                    
                    data[i].letter_tag = Fiddme.getLetterForIndex(i);
					
                }
				
				// display results list
				htmlStr = tmpl('places_tmpl', {data:data});
				$('#places_results .results').html(htmlStr);
				
				$('#places_results .place').each(function() {
					getVisitors($(this));
				})
				
				$('#places_results .place_focus').click(function() {
					Fiddme.Map.panTo(new google.maps.LatLng($(this).attr('latitude'), $(this).attr('longitude')));
					return false;
				});
				
                $('#default_container').fadeOut('fast', function(){
                    $('#places_results').fadeIn('fast', function(){
						
                    	setupMap();
                    	
						// Clear the places currently displayed
						Fiddme.Map.clearPlaces();
						
                        Fiddme.Map.ignoreEvents(true);
                        for (i = 0; i < data.length; i++) {
                            Fiddme.Map.addPlace(data[i], {letter: i});
                        }
                        if (sender != Fiddme.Map.map) {
                        	Fiddme.Map.zoomAndCenter();
                        }
                        
                        $("#map").hide().show().height("341px");
                        
                        Fiddme.Map.ignoreEvents(false);
						
					});
                });				
            }
        
        });
	}
	
	
	function serializeSearchParameters(options) {
		options = options || {}; 
		
		params = [];
		
		if (options.term) {
			params.push('q=' + options.term);
		}
		
		if (options.where) {
			params.push('l=' + options.where);
		}
		
		if (options.friends) {
			params.push('friends=' + options.term);
		}
		
		if (options.category) {
			params.push('cat=' + options.category);
		}
		
		if ((options.ne) && (options.sw)) {
            params.push('north=' + options.ne[0]);
            params.push('east=' + options.ne[1]);
            
            params.push('south=' + options.sw[0]);
            params.push('west=' + options.sw[1]);
		}
		
		result = params.join('&');
		return encodeURI(result);
	}
	
    function gatherParamsAndSearch(sender) {
        term = $('#what_input').val();
        if (term == $('#what_input').attr('placeholder'))
        	term = '';
        
        where = $('#where_input').val();
        if (where == $('#where_input').attr('placeholder'))
        	where = '';
		
		// Friends only?        
        if ($('#friends_checkbox').is(':checked')) 
            friends = 1;
        else 
            friends = 0;
			
		// Category filter?
        category = null;
        if ($('#cat_select').val() != 'default') 
            category = $('#cat_select').val();
		
		options = {
			term : term,
			where : where,
			friends : friends,
			category : category
		}

		if (sender && sender != Fiddme.Map.map) {

			geocoder = new google.maps.Geocoder();
			if (geocoder && where) {
	            geocoder.geocode({'address': where }, function(results, status) {
	                if (status == google.maps.GeocoderStatus.OK) {
						bounds = results[0].geometry.viewport;
						if (bounds != null) {
							southWest = bounds.getSouthWest();
	                        northEast = bounds.getNorthEast();
	                        
							// Add bounding box to options object
	                        options.ne = [northEast.lat(), northEast.lng()];
	                        options.sw = [southWest.lat(), southWest.lng()];

	                        //set map bounds
	        				searchBounds = [];
	        				searchBounds['north'] = northEast.lat();
	        				searchBounds['east'] = northEast.lng();
	        				searchBounds['south'] = southWest.lat();
	        				searchBounds['west'] = southWest.lng();

	                        //set the map to the new search term
	                        if (Fiddme.Map.map) {
	                        	bounds = new google.maps.LatLngBounds(southWest,northEast);
	                        	Fiddme.Map.setBounds(bounds);
	                        }
						} 
	                }
	                
					// Perform the search
					doSearch(options, sender);
	            });
	
			} else {			
	            // Perform the search with default location
	            doSearch(options, sender);
			}
		} else {
			if (searchBounds) {
				//we have bounds from searchURL or from the map
				options.ne = [searchBounds['north'], searchBounds['east']];
				options.sw = [searchBounds['south'], searchBounds['west']];
			}

			// Perform the search
			doSearch(options, sender);
		}
    }
			
    function handleSearchUrl() {
    	north = south = east = west = null;
    	term = $.trim(window.location.hash);

    	if (term && term.length > 1) {
    		term = decodeURI(term);
    		term = term.substring(1,term.length);
    		params = term.split('&');
    		for (i=0;i<params.length;i++) {
    			kvp = params[i].split('=');
    			if (kvp[0].length > 0) {
    				switch (kvp[0]) {
	    			case 'q':
	    				$('#what_input').val(kvp[1]);
	    				break;
	    			case 'l':
	    				$('#where_input').val(kvp[1]);
	    				break;
	    			case 'cat':
	    				$('#cat_select').val(kvp[1]);
	    				break;
	    			case 'north':
	    				north = kvp[1];
	    				break;
	    			case 'south':
	    				south = kvp[1];
	    				break;
	    			case 'east':
	    				east = kvp[1];
	    				break;
	    			case 'west':
	    				west = kvp[1];
	    				break;
	    			}
    			}

    			//update map bounds
    			if (north && south && east && west) {
    				searchBounds = [];
    				searchBounds['north'] = north;
    				searchBounds['south'] = south;
    				searchBounds['east'] = east;
    				searchBounds['west'] = west;
    			}    			
    		}
    		
            $('#submit_search').addClass('loading');
			gatherParamsAndSearch(null);
			return true;
    	}
    	return false;
    }
        
	// Return public interface to the outside    
    return {
        setup: function(options){
            options = $.extend(clone(DEFAULT_OPTIONS.SETUP), options || {});
            this.options = options;
            
            // Do initialization stuff
            current_location = Fiddme.Location.getLocation();
            this.curloc = new google.maps.LatLng(current_location[0], current_location[1])
            
			// Set fonts styles
			//Cufon.replace('#submit_search', {	hover: true });
									
            // Init placeholder
            if (!$.browser.webkit) {
                $('input[type=text]').placeholder();
            }
            
            // Init window scroll handling
            handleWindowScroll();
            
			// Event Handlers
			$('#what_input').keypress(function(e){                
                if ((e.which && e.which == 13) || (e.jeyCode && e.keyCode == 13)) {
                    $('#submit_search').click();
                    return false;
                }
                else {
                    return true;
                }
			});
			
			$('#where_input').keypress(function(e){ 
                if ((e.which && e.which == 13) || (e.jeyCode && e.keyCode == 13)) {
                    $('#submit_search').click();
                    return false;
                }
                else {
                    return true;
                }				
			});
						
            $('#submit_search').click(function() {
                $('#submit_search').addClass('loading');
				gatherParamsAndSearch(this);
            });
			
            $('#more').click(function(){
            	toggleExtraSearch();
            });
            
            $('.hideshow_arrow').click(function() {
            	toggleExtraSearch();
            });
            
            $('.suggestions a').click(function(){
                str = this.hash.substring(1, this.hash.length);
                handleSuggestions(str);
                return false;
            });
            
            //handle url with search query
            if (handleSearchUrl()) {
            	$('#default_container').hide();
            	$('#places_results').show();
            } else {
            	$('#default_container').show();
            	$('#places_results').hide();
                //fire featured places query
                getFeatured();
            }

        }
    };
	
})(jQuery)

