Skip to content

Instantly share code, notes, and snippets.

@naterkane
Created March 20, 2010 11:26
Show Gist options
  • Save naterkane/338620 to your computer and use it in GitHub Desktop.
Save naterkane/338620 to your computer and use it in GitHub Desktop.
(function(window,undefined){var jQuery=function(selector,context){return new jQuery.fn.init(selector,context);},_jQuery=window.jQuery,_$=window.$,document=window.document,rootjQuery,quickExpr=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,isSimple=/^.[^:#\[\.,]*$/,rnotwhite=/\S/,rtrim=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,rsingleTag=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,userAgent=navigator.userAgent,browserMatch,readyBound=false,readyList=[],DOMContentLoaded,toString=Object.prototype.toString,hasOwnProperty=Object.prototype.hasOwnProperty,push=Array.prototype.push,slice=Array.prototype.slice,indexOf=Array.prototype.indexOf;jQuery.fn=jQuery.prototype={init:function(selector,context){var match,elem,ret,doc;if(!selector){return this;}
if(selector.nodeType){this.context=this[0]=selector;this.length=1;return this;}
if(typeof selector==="string"){match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1]){doc=(context?context.ownerDocument||context:document);ret=rsingleTag.exec(selector);if(ret){if(jQuery.isPlainObject(context)){selector=[document.createElement(ret[1])];jQuery.fn.attr.call(selector,context,true);}else{selector=[doc.createElement(ret[1])];}}else{ret=buildFragment([match[1]],[doc]);selector=(ret.cacheable?ret.fragment.cloneNode(true):ret.fragment).childNodes;}}else{elem=document.getElementById(match[2]);if(elem){if(elem.id!==match[2]){return rootjQuery.find(selector);}
this.length=1;this[0]=elem;}
this.context=document;this.selector=selector;return this;}}else if(!context&&/^\w+$/.test(selector)){this.selector=selector;this.context=document;selector=document.getElementsByTagName(selector);}else if(!context||context.jquery){return(context||rootjQuery).find(selector);}else{return jQuery(context).find(selector);}}else if(jQuery.isFunction(selector)){return rootjQuery.ready(selector);}
if(selector.selector!==undefined){this.selector=selector.selector;this.context=selector.context;}
return jQuery.isArray(selector)?this.setArray(selector):jQuery.makeArray(selector,this);},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length;},toArray:function(){return slice.call(this,0);},get:function(num){return num==null?this.toArray():(num<0?this.slice(num)[0]:this[num]);},pushStack:function(elems,name,selector){var ret=jQuery(elems||null);ret.prevObject=this;ret.context=this.context;if(name==="find"){ret.selector=this.selector+(this.selector?" ":"")+selector;}else if(name){ret.selector=this.selector+"."+name+"("+selector+")";}
return ret;},setArray:function(elems){this.length=0;push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},ready:function(fn){jQuery.bindReady();if(jQuery.isReady){fn.call(document,jQuery);}else if(readyList){readyList.push(fn);}
return this;},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1);},first:function(){return this.eq(0);},last:function(){return this.eq(-1);},slice:function(){return this.pushStack(slice.apply(this,arguments),"slice",slice.call(arguments).join(","));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},end:function(){return this.prevObject||jQuery(null);},push:push,sort:[].sort,splice:[].splice};jQuery.fn.init.prototype=jQuery.fn;jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options,name,src,copy;if(typeof target==="boolean"){deep=target;target=arguments[1]||{};i=2;}
if(typeof target!=="object"&&!jQuery.isFunction(target)){target={};}
if(length===i){target=this;--i;}
for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){src=target[name];copy=options[name];if(target===copy){continue;}
if(deep&&copy&&(jQuery.isPlainObject(copy)||jQuery.isArray(copy))){var clone=src&&(jQuery.isPlainObject(src)||jQuery.isArray(src))?src:jQuery.isArray(copy)?[]:{};target[name]=jQuery.extend(deep,clone,copy);}else if(copy!==undefined){target[name]=copy;}}}}
return target;};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep){window.jQuery=_jQuery;}
return jQuery;},isReady:false,ready:function(){if(!jQuery.isReady){if(!document.body){return setTimeout(jQuery.ready,13);}
jQuery.isReady=true;if(readyList){var fn,i=0;while((fn=readyList[i++])){fn.call(document,jQuery);}
readyList=null;}
if(jQuery.fn.triggerHandler){jQuery(document).triggerHandler("ready");}}},bindReady:function(){if(readyBound){return;}
readyBound=true;if(document.readyState==="complete"){return jQuery.ready();}
if(document.addEventListener){document.addEventListener("DOMContentLoaded",DOMContentLoaded,false);window.addEventListener("load",jQuery.ready,false);}else if(document.attachEvent){document.attachEvent("onreadystatechange",DOMContentLoaded);window.attachEvent("onload",jQuery.ready);var toplevel=false;try{toplevel=window.frameElement==null;}catch(e){}
if(document.documentElement.doScroll&&toplevel){doScrollCheck();}}},isFunction:function(obj){return toString.call(obj)==="[object Function]";},isArray:function(obj){return toString.call(obj)==="[object Array]";},isPlainObject:function(obj){if(!obj||toString.call(obj)!=="[object Object]"||obj.nodeType||obj.setInterval){return false;}
if(obj.constructor&&!hasOwnProperty.call(obj,"constructor")&&!hasOwnProperty.call(obj.constructor.prototype,"isPrototypeOf")){return false;}
var key;for(key in obj){}
return key===undefined||hasOwnProperty.call(obj,key);},isEmptyObject:function(obj){for(var name in obj){return false;}
return true;},error:function(msg){throw msg;},parseJSON:function(data){if(typeof data!=="string"||!data){return null;}
if(/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){return window.JSON&&window.JSON.parse?window.JSON.parse(data):(new Function("return "+data))();}else{jQuery.error("Invalid JSON: "+data);}},noop:function(){},globalEval:function(data){if(data&&rnotwhite.test(data)){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.support.scriptEval){script.appendChild(document.createTextNode(data));}else{script.text=data;}
head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()===name.toUpperCase();},each:function(object,callback,args){var name,i=0,length=object.length,isObj=length===undefined||jQuery.isFunction(object);if(args){if(isObj){for(name in object){if(callback.apply(object[name],args)===false){break;}}}else{for(;i<length;){if(callback.apply(object[i++],args)===false){break;}}}}else{if(isObj){for(name in object){if(callback.call(object[name],name,object[name])===false){break;}}}else{for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}}
return object;},trim:function(text){return(text||"").replace(rtrim,"");},makeArray:function(array,results){var ret=results||[];if(array!=null){if(array.length==null||typeof array==="string"||jQuery.isFunction(array)||(typeof array!=="function"&&array.setInterval)){push.call(ret,array);}else{jQuery.merge(ret,array);}}
return ret;},inArray:function(elem,array){if(array.indexOf){return array.indexOf(elem);}
for(var i=0,length=array.length;i<length;i++){if(array[i]===elem){return i;}}
return-1;},merge:function(first,second){var i=first.length,j=0;if(typeof second.length==="number"){for(var l=second.length;j<l;j++){first[i++]=second[j];}}else{while(second[j]!==undefined){first[i++]=second[j++];}}
first.length=i;return first;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++){if(!inv!==!callback(elems[i],i)){ret.push(elems[i]);}}
return ret;},map:function(elems,callback,arg){var ret=[],value;for(var i=0,length=elems.length;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret[ret.length]=value;}}
return ret.concat.apply([],ret);},guid:1,proxy:function(fn,proxy,thisObject){if(arguments.length===2){if(typeof proxy==="string"){thisObject=fn;fn=thisObject[proxy];proxy=undefined;}else if(proxy&&!jQuery.isFunction(proxy)){thisObject=proxy;proxy=undefined;}}
if(!proxy&&fn){proxy=function(){return fn.apply(thisObject||this,arguments);};}
if(fn){proxy.guid=fn.guid=fn.guid||proxy.guid||jQuery.guid++;}
return proxy;},uaMatch:function(ua){ua=ua.toLowerCase();var match=/(webkit)[ \/]([\w.]+)/.exec(ua)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(ua)||/(msie) ([\w.]+)/.exec(ua)||!/compatible/.test(ua)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(ua)||[];return{browser:match[1]||"",version:match[2]||"0"};},browser:{}});browserMatch=jQuery.uaMatch(userAgent);if(browserMatch.browser){jQuery.browser[browserMatch.browser]=true;jQuery.browser.version=browserMatch.version;}
if(jQuery.browser.webkit){jQuery.browser.safari=true;}
if(indexOf){jQuery.inArray=function(elem,array){return indexOf.call(array,elem);};}
rootjQuery=jQuery(document);if(document.addEventListener){DOMContentLoaded=function(){document.removeEventListener("DOMContentLoaded",DOMContentLoaded,false);jQuery.ready();};}else if(document.attachEvent){DOMContentLoaded=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",DOMContentLoaded);jQuery.ready();}};}
function doScrollCheck(){if(jQuery.isReady){return;}
try{document.documentElement.doScroll("left");}catch(error){setTimeout(doScrollCheck,1);return;}
jQuery.ready();}
function evalScript(i,elem){if(elem.src){jQuery.ajax({url:elem.src,async:false,dataType:"script"});}else{jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");}
if(elem.parentNode){elem.parentNode.removeChild(elem);}}
function access(elems,key,value,exec,fn,pass){var length=elems.length;if(typeof key==="object"){for(var k in key){access(elems,k,key[k],exec,fn,value);}
return elems;}
if(value!==undefined){exec=!pass&&exec&&jQuery.isFunction(value);for(var i=0;i<length;i++){fn(elems[i],key,exec?value.call(elems[i],i,fn(elems[i],key)):value,pass);}
return elems;}
return length?fn(elems[0],key):null;}
function now(){return(new Date).getTime();}
(function(){jQuery.support={};var root=document.documentElement,script=document.createElement("script"),div=document.createElement("div"),id="script"+now();div.style.display="none";div.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var all=div.getElementsByTagName("*"),a=div.getElementsByTagName("a")[0];if(!all||!all.length||!a){return;}
jQuery.support={leadingWhitespace:div.firstChild.nodeType===3,tbody:!div.getElementsByTagName("tbody").length,htmlSerialize:!!div.getElementsByTagName("link").length,style:/red/.test(a.getAttribute("style")),hrefNormalized:a.getAttribute("href")==="/a",opacity:/^0.55$/.test(a.style.opacity),cssFloat:!!a.style.cssFloat,checkOn:div.getElementsByTagName("input")[0].value==="on",optSelected:document.createElement("select").appendChild(document.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};script.type="text/javascript";try{script.appendChild(document.createTextNode("window."+id+"=1;"));}catch(e){}
root.insertBefore(script,root.firstChild);if(window[id]){jQuery.support.scriptEval=true;delete window[id];}
root.removeChild(script);if(div.attachEvent&&div.fireEvent){div.attachEvent("onclick",function click(){jQuery.support.noCloneEvent=false;div.detachEvent("onclick",click);});div.cloneNode(true).fireEvent("onclick");}
div=document.createElement("div");div.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";var fragment=document.createDocumentFragment();fragment.appendChild(div.firstChild);jQuery.support.checkClone=fragment.cloneNode(true).cloneNode(true).lastChild.checked;jQuery(function(){var div=document.createElement("div");div.style.width=div.style.paddingLeft="1px";document.body.appendChild(div);jQuery.boxModel=jQuery.support.boxModel=div.offsetWidth===2;document.body.removeChild(div).style.display='none';div=null;});var eventSupported=function(eventName){var el=document.createElement("div");eventName="on"+eventName;var isSupported=(eventName in el);if(!isSupported){el.setAttribute(eventName,"return;");isSupported=typeof el[eventName]==="function";}
el=null;return isSupported;};jQuery.support.submitBubbles=eventSupported("submit");jQuery.support.changeBubbles=eventSupported("change");root=script=div=all=a=null;})();jQuery.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var expando="jQuery"+now(),uuid=0,windowData={};var emptyObject={};jQuery.extend({cache:{},expando:expando,noData:{"embed":true,"object":true,"applet":true},data:function(elem,name,data){if(elem.nodeName&&jQuery.noData[elem.nodeName.toLowerCase()]){return;}
elem=elem==window?windowData:elem;var id=elem[expando],cache=jQuery.cache,thisCache;if(!name&&!id){return null;}
if(!id){id=++uuid;}
if(typeof name==="object"){elem[expando]=id;thisCache=cache[id]=jQuery.extend(true,{},name);}else if(cache[id]){thisCache=cache[id];}else if(typeof data==="undefined"){thisCache=emptyObject;}else{thisCache=cache[id]={};}
if(data!==undefined){elem[expando]=id;thisCache[name]=data;}
return typeof name==="string"?thisCache[name]:thisCache;},removeData:function(elem,name){if(elem.nodeName&&jQuery.noData[elem.nodeName.toLowerCase()]){return;}
elem=elem==window?windowData:elem;var id=elem[expando],cache=jQuery.cache,thisCache=cache[id];if(name){if(thisCache){delete thisCache[name];if(jQuery.isEmptyObject(thisCache)){jQuery.removeData(elem);}}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute){elem.removeAttribute(expando);}}
delete cache[id];}}});jQuery.fn.extend({data:function(key,value){if(typeof key==="undefined"&&this.length){return jQuery.data(this[0]);}else if(typeof key==="object"){return this.each(function(){jQuery.data(this,key);});}
var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length){data=jQuery.data(this[0],key);}
return data===undefined&&parts[1]?this.data(parts[0]):data;}else{return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});}},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});}});jQuery.extend({queue:function(elem,type,data){if(!elem){return;}
type=(type||"fx")+"queue";var q=jQuery.data(elem,type);if(!data){return q||[];}
if(!q||jQuery.isArray(data)){q=jQuery.data(elem,type,jQuery.makeArray(data));}else{q.push(data);}
return q;},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),fn=queue.shift();if(fn==="inprogress"){fn=queue.shift();}
if(fn){if(type==="fx"){queue.unshift("inprogress");}
fn.call(elem,function(){jQuery.dequeue(elem,type);});}}});jQuery.fn.extend({queue:function(type,data){if(typeof type!=="string"){data=type;type="fx";}
if(data===undefined){return jQuery.queue(this[0],type);}
return this.each(function(i,elem){var queue=jQuery.queue(this,type,data);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type);}});},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type);});},delay:function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(){var elem=this;setTimeout(function(){jQuery.dequeue(elem,type);},time);});},clearQueue:function(type){return this.queue(type||"fx",[]);}});var rclass=/[\n\t]/g,rspace=/\s+/,rreturn=/\r/g,rspecialurl=/href|src|style/,rtype=/(button|input)/i,rfocusable=/(button|input|object|select|textarea)/i,rclickable=/^(a|area)$/i,rradiocheck=/radio|checkbox/;jQuery.fn.extend({attr:function(name,value){return access(this,name,value,true,jQuery.attr);},removeAttr:function(name,fn){return this.each(function(){jQuery.attr(this,name,"");if(this.nodeType===1){this.removeAttribute(name);}});},addClass:function(value){if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);self.addClass(value.call(this,i,self.attr("class")));});}
if(value&&typeof value==="string"){var classNames=(value||"").split(rspace);for(var i=0,l=this.length;i<l;i++){var elem=this[i];if(elem.nodeType===1){if(!elem.className){elem.className=value;}else{var className=" "+elem.className+" ";for(var c=0,cl=classNames.length;c<cl;c++){if(className.indexOf(" "+classNames[c]+" ")<0){elem.className+=" "+classNames[c];}}}}}}
return this;},removeClass:function(value){if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);self.removeClass(value.call(this,i,self.attr("class")));});}
if((value&&typeof value==="string")||value===undefined){var classNames=(value||"").split(rspace);for(var i=0,l=this.length;i<l;i++){var elem=this[i];if(elem.nodeType===1&&elem.className){if(value){var className=(" "+elem.className+" ").replace(rclass," ");for(var c=0,cl=classNames.length;c<cl;c++){className=className.replace(" "+classNames[c]+" "," ");}
elem.className=className.substring(1,className.length-1);}else{elem.className="";}}}}
return this;},toggleClass:function(value,stateVal){var type=typeof value,isBool=typeof stateVal==="boolean";if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);self.toggleClass(value.call(this,i,self.attr("class"),stateVal),stateVal);});}
return this.each(function(){if(type==="string"){var className,i=0,self=jQuery(this),state=stateVal,classNames=value.split(rspace);while((className=classNames[i++])){state=isBool?state:!self.hasClass(className);self[state?"addClass":"removeClass"](className);}}else if(type==="undefined"||type==="boolean"){if(this.className){jQuery.data(this,"__className__",this.className);}
this.className=this.className||value===false?"":jQuery.data(this,"__className__")||"";}});},hasClass:function(selector){var className=" "+selector+" ";for(var i=0,l=this.length;i<l;i++){if((" "+this[i].className+" ").replace(rclass," ").indexOf(className)>-1){return true;}}
return false;},val:function(value){if(value===undefined){var elem=this[0];if(elem){if(jQuery.nodeName(elem,"option")){return(elem.attributes.value||{}).specified?elem.value:elem.text;}
if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type==="select-one";if(index<0){return null;}
for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery(option).val();if(one){return value;}
values.push(value);}}
return values;}
if(rradiocheck.test(elem.type)&&!jQuery.support.checkOn){return elem.getAttribute("value")===null?"on":elem.value;}
return(elem.value||"").replace(rreturn,"");}
return undefined;}
var isFunction=jQuery.isFunction(value);return this.each(function(i){var self=jQuery(this),val=value;if(this.nodeType!==1){return;}
if(isFunction){val=value.call(this,i,self.val());}
if(typeof val==="number"){val+="";}
if(jQuery.isArray(val)&&rradiocheck.test(this.type)){this.checked=jQuery.inArray(self.val(),val)>=0;}else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(val);jQuery("option",this).each(function(){this.selected=jQuery.inArray(jQuery(this).val(),values)>=0;});if(!values.length){this.selectedIndex=-1;}}else{this.value=val;}});}});jQuery.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(elem,name,value,pass){if(!elem||elem.nodeType===3||elem.nodeType===8){return undefined;}
if(pass&&name in jQuery.attrFn){return jQuery(elem)[name](value);}
var notxml=elem.nodeType!==1||!jQuery.isXMLDoc(elem),set=value!==undefined;name=notxml&&jQuery.props[name]||name;if(elem.nodeType===1){var special=rspecialurl.test(name);if(name==="selected"&&!jQuery.support.optSelected){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex;}}}
if(name in elem&&notxml&&!special){if(set){if(name==="type"&&rtype.test(elem.nodeName)&&elem.parentNode){jQuery.error("type property can't be changed");}
elem[name]=value;}
if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name)){return elem.getAttributeNode(name).nodeValue;}
if(name==="tabIndex"){var attributeNode=elem.getAttributeNode("tabIndex");return attributeNode&&attributeNode.specified?attributeNode.value:rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:undefined;}
return elem[name];}
if(!jQuery.support.style&&notxml&&name==="style"){if(set){elem.style.cssText=""+value;}
return elem.style.cssText;}
if(set){elem.setAttribute(name,""+value);}
var attr=!jQuery.support.hrefNormalized&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}
return jQuery.style(elem,name,value);}});var fcleanup=function(nm){return nm.replace(/[^\w\s\.\|`]/g,function(ch){return"\\"+ch;});};jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType===3||elem.nodeType===8){return;}
if(elem.setInterval&&(elem!==window&&!elem.frameElement)){elem=window;}
if(!handler.guid){handler.guid=jQuery.guid++;}
if(data!==undefined){var fn=handler;handler=jQuery.proxy(fn);handler.data=data;}
var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle"),eventHandle;if(!handle){eventHandle=function(){return typeof jQuery!=="undefined"&&!jQuery.event.triggered?jQuery.event.handle.apply(eventHandle.elem,arguments):undefined;};handle=jQuery.data(elem,"handle",eventHandle);}
if(!handle){return;}
handle.elem=elem;types=types.split(/\s+/);var type,i=0;while((type=types[i++])){var namespaces=type.split(".");type=namespaces.shift();if(i>1){handler=jQuery.proxy(handler);if(data!==undefined){handler.data=data;}}
handler.type=namespaces.slice(0).sort().join(".");var handlers=events[type],special=this.special[type]||{};if(!handlers){handlers=events[type]={};if(!special.setup||special.setup.call(elem,data,namespaces,handler)===false){if(elem.addEventListener){elem.addEventListener(type,handle,false);}else if(elem.attachEvent){elem.attachEvent("on"+type,handle);}}}
if(special.add){var modifiedHandler=special.add.call(elem,handler,data,namespaces,handlers);if(modifiedHandler&&jQuery.isFunction(modifiedHandler)){modifiedHandler.guid=modifiedHandler.guid||handler.guid;modifiedHandler.data=modifiedHandler.data||handler.data;modifiedHandler.type=modifiedHandler.type||handler.type;handler=modifiedHandler;}}
handlers[handler.guid]=handler;this.global[type]=true;}
elem=null;},global:{},remove:function(elem,types,handler){if(elem.nodeType===3||elem.nodeType===8){return;}
var events=jQuery.data(elem,"events"),ret,type,fn;if(events){if(types===undefined||(typeof types==="string"&&types.charAt(0)===".")){for(type in events){this.remove(elem,type+(types||""));}}else{if(types.type){handler=types.handler;types=types.type;}
types=types.split(/\s+/);var i=0;while((type=types[i++])){var namespaces=type.split(".");type=namespaces.shift();var all=!namespaces.length,cleaned=jQuery.map(namespaces.slice(0).sort(),fcleanup),namespace=new RegExp("(^|\\.)"+cleaned.join("\\.(?:.*\\.)?")+"(\\.|$)"),special=this.special[type]||{};if(events[type]){if(handler){fn=events[type][handler.guid];delete events[type][handler.guid];}else{for(var handle in events[type]){if(all||namespace.test(events[type][handle].type)){delete events[type][handle];}}}
if(special.remove){special.remove.call(elem,namespaces,fn);}
for(ret in events[type]){break;}
if(!ret){if(!special.teardown||special.teardown.call(elem,namespaces)===false){if(elem.removeEventListener){elem.removeEventListener(type,jQuery.data(elem,"handle"),false);}else if(elem.detachEvent){elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}}
ret=null;delete events[type];}}}}
for(ret in events){break;}
if(!ret){var handle=jQuery.data(elem,"handle");if(handle){handle.elem=null;}
jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(event,data,elem){var type=event.type||event,bubbling=arguments[3];if(!bubbling){event=typeof event==="object"?event[expando]?event:jQuery.extend(jQuery.Event(type),event):jQuery.Event(type);if(type.indexOf("!")>=0){event.type=type=type.slice(0,-1);event.exclusive=true;}
if(!elem){event.stopPropagation();if(this.global[type]){jQuery.each(jQuery.cache,function(){if(this.events&&this.events[type]){jQuery.event.trigger(event,data,this.handle.elem);}});}}
if(!elem||elem.nodeType===3||elem.nodeType===8){return undefined;}
event.result=undefined;event.target=elem;data=jQuery.makeArray(data);data.unshift(event);}
event.currentTarget=elem;var handle=jQuery.data(elem,"handle");if(handle){handle.apply(elem,data);}
var parent=elem.parentNode||elem.ownerDocument;try{if(!(elem&&elem.nodeName&&jQuery.noData[elem.nodeName.toLowerCase()])){if(elem["on"+type]&&elem["on"+type].apply(elem,data)===false){event.result=false;}}}catch(e){}
if(!event.isPropagationStopped()&&parent){jQuery.event.trigger(event,data,parent,true);}else if(!event.isDefaultPrevented()){var target=event.target,old,isClick=jQuery.nodeName(target,"a")&&type==="click";if(!isClick&&!(target&&target.nodeName&&jQuery.noData[target.nodeName.toLowerCase()])){try{if(target[type]){old=target["on"+type];if(old){target["on"+type]=null;}
this.triggered=true;target[type]();}}catch(e){}
if(old){target["on"+type]=old;}
this.triggered=false;}}},handle:function(event){var all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);event.currentTarget=this;var namespaces=event.type.split(".");event.type=namespaces.shift();all=!namespaces.length&&!event.exclusive;var namespace=new RegExp("(^|\\.)"+namespaces.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||namespace.test(handler.type)){event.handler=handler;event.data=handler.data;var ret=handler.apply(this,arguments);if(ret!==undefined){event.result=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}
if(event.isImmediatePropagationStopped()){break;}}}
return event.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(event){if(event[expando]){return event;}
var originalEvent=event;event=jQuery.Event(originalEvent);for(var i=this.props.length,prop;i;){prop=this.props[--i];event[prop]=originalEvent[prop];}
if(!event.target){event.target=event.srcElement||document;}
if(event.target.nodeType===3){event.target=event.target.parentNode;}
if(!event.relatedTarget&&event.fromElement){event.relatedTarget=event.fromElement===event.target?event.toElement:event.fromElement;}
if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0);}
if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode)){event.which=event.charCode||event.keyCode;}
if(!event.metaKey&&event.ctrlKey){event.metaKey=event.ctrlKey;}
if(!event.which&&event.button!==undefined){event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));}
return event;},guid:1E8,proxy:jQuery.proxy,special:{ready:{setup:jQuery.bindReady,teardown:jQuery.noop},live:{add:function(proxy,data,namespaces,live){jQuery.extend(proxy,data||{});proxy.guid+=data.selector+data.live;data.liveProxy=proxy;jQuery.event.add(this,data.live,liveHandler,data);},remove:function(namespaces){if(namespaces.length){var remove=0,name=new RegExp("(^|\\.)"+namespaces[0]+"(\\.|$)");jQuery.each((jQuery.data(this,"events").live||{}),function(){if(name.test(this.type)){remove++;}});if(remove<1){jQuery.event.remove(this,namespaces[0],liveHandler);}}},special:{}},beforeunload:{setup:function(data,namespaces,fn){if(this.setInterval){this.onbeforeunload=fn;}
return false;},teardown:function(namespaces,fn){if(this.onbeforeunload===fn){this.onbeforeunload=null;}}}}};jQuery.Event=function(src){if(!this.preventDefault){return new jQuery.Event(src);}
if(src&&src.type){this.originalEvent=src;this.type=src.type;}else{this.type=src;}
this.timeStamp=now();this[expando]=true;};function returnFalse(){return false;}
function returnTrue(){return true;}
jQuery.Event.prototype={preventDefault:function(){this.isDefaultPrevented=returnTrue;var e=this.originalEvent;if(!e){return;}
if(e.preventDefault){e.preventDefault();}
e.returnValue=false;},stopPropagation:function(){this.isPropagationStopped=returnTrue;var e=this.originalEvent;if(!e){return;}
if(e.stopPropagation){e.stopPropagation();}
e.cancelBubble=true;},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=returnTrue;this.stopPropagation();},isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse};var withinElement=function(event){var parent=event.relatedTarget;while(parent&&parent!==this){try{parent=parent.parentNode;}catch(e){break;}}
if(parent!==this){event.type=event.data;jQuery.event.handle.apply(this,arguments);}},delegate=function(event){event.type=event.data;jQuery.event.handle.apply(this,arguments);};jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(orig,fix){jQuery.event.special[orig]={setup:function(data){jQuery.event.add(this,fix,data&&data.selector?delegate:withinElement,orig);},teardown:function(data){jQuery.event.remove(this,fix,data&&data.selector?delegate:withinElement);}};});if(!jQuery.support.submitBubbles){jQuery.event.special.submit={setup:function(data,namespaces,fn){if(this.nodeName.toLowerCase()!=="form"){jQuery.event.add(this,"click.specialSubmit."+fn.guid,function(e){var elem=e.target,type=elem.type;if((type==="submit"||type==="image")&&jQuery(elem).closest("form").length){return trigger("submit",this,arguments);}});jQuery.event.add(this,"keypress.specialSubmit."+fn.guid,function(e){var elem=e.target,type=elem.type;if((type==="text"||type==="password")&&jQuery(elem).closest("form").length&&e.keyCode===13){return trigger("submit",this,arguments);}});}else{return false;}},remove:function(namespaces,fn){jQuery.event.remove(this,"click.specialSubmit"+(fn?"."+fn.guid:""));jQuery.event.remove(this,"keypress.specialSubmit"+(fn?"."+fn.guid:""));}};}
if(!jQuery.support.changeBubbles){var formElems=/textarea|input|select/i;function getVal(elem){var type=elem.type,val=elem.value;if(type==="radio"||type==="checkbox"){val=elem.checked;}else if(type==="select-multiple"){val=elem.selectedIndex>-1?jQuery.map(elem.options,function(elem){return elem.selected;}).join("-"):"";}else if(elem.nodeName.toLowerCase()==="select"){val=elem.selectedIndex;}
return val;}
function testChange(e){var elem=e.target,data,val;if(!formElems.test(elem.nodeName)||elem.readOnly){return;}
data=jQuery.data(elem,"_change_data");val=getVal(elem);if(e.type!=="focusout"||elem.type!=="radio"){jQuery.data(elem,"_change_data",val);}
if(data===undefined||val===data){return;}
if(data!=null||val){e.type="change";return jQuery.event.trigger(e,arguments[1],elem);}}
jQuery.event.special.change={filters:{focusout:testChange,click:function(e){var elem=e.target,type=elem.type;if(type==="radio"||type==="checkbox"||elem.nodeName.toLowerCase()==="select"){return testChange.call(this,e);}},keydown:function(e){var elem=e.target,type=elem.type;if((e.keyCode===13&&elem.nodeName.toLowerCase()!=="textarea")||(e.keyCode===32&&(type==="checkbox"||type==="radio"))||type==="select-multiple"){return testChange.call(this,e);}},beforeactivate:function(e){var elem=e.target;if(elem.nodeName.toLowerCase()==="input"&&elem.type==="radio"){jQuery.data(elem,"_change_data",getVal(elem));}}},setup:function(data,namespaces,fn){for(var type in changeFilters){jQuery.event.add(this,type+".specialChange."+fn.guid,changeFilters[type]);}
return formElems.test(this.nodeName);},remove:function(namespaces,fn){for(var type in changeFilters){jQuery.event.remove(this,type+".specialChange"+(fn?"."+fn.guid:""),changeFilters[type]);}
return formElems.test(this.nodeName);}};var changeFilters=jQuery.event.special.change.filters;}
function trigger(type,elem,args){args[0].type=type;return jQuery.event.handle.apply(elem,args);}
if(document.addEventListener){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){jQuery.event.special[fix]={setup:function(){this.addEventListener(orig,handler,true);},teardown:function(){this.removeEventListener(orig,handler,true);}};function handler(e){e=jQuery.event.fix(e);e.type=fix;return jQuery.event.handle.call(this,e);}});}
jQuery.each(["bind","one"],function(i,name){jQuery.fn[name]=function(type,data,fn){if(typeof type==="object"){for(var key in type){this[name](key,data,type[key],fn);}
return this;}
if(jQuery.isFunction(data)){fn=data;data=undefined;}
var handler=name==="one"?jQuery.proxy(fn,function(event){jQuery(this).unbind(event,handler);return fn.apply(this,arguments);}):fn;return type==="unload"&&name!=="one"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,handler,data);});};});jQuery.fn.extend({unbind:function(type,fn){if(typeof type==="object"&&!type.preventDefault){for(var key in type){this.unbind(key,type[key]);}
return this;}
return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function(type,data){if(this[0]){var event=jQuery.Event(type);event.preventDefault();event.stopPropagation();jQuery.event.trigger(event,data,this[0]);return event.result;}},toggle:function(fn){var args=arguments,i=1;while(i<args.length){jQuery.proxy(fn,args[i++]);}
return this.click(jQuery.proxy(fn,function(event){var lastToggle=(jQuery.data(this,"lastToggle"+fn.guid)||0)%i;jQuery.data(this,"lastToggle"+fn.guid,lastToggle+1);event.preventDefault();return args[lastToggle].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver);}});jQuery.each(["live","die"],function(i,name){jQuery.fn[name]=function(types,data,fn){var type,i=0;if(jQuery.isFunction(data)){fn=data;data=undefined;}
types=(types||"").split(/\s+/);while((type=types[i++])!=null){type=type==="focus"?"focusin":type==="blur"?"focusout":type==="hover"?types.push("mouseleave")&&"mouseenter":type;if(name==="live"){jQuery(this.context).bind(liveConvert(type,this.selector),{data:data,selector:this.selector,live:type},fn);}else{jQuery(this.context).unbind(liveConvert(type,this.selector),fn?{guid:fn.guid+this.selector+type}:null);}}
return this;}});function liveHandler(event){var stop,elems=[],selectors=[],args=arguments,related,match,fn,elem,j,i,l,data,live=jQuery.extend({},jQuery.data(this,"events").live);if(event.button&&event.type==="click"){return;}
for(j in live){fn=live[j];if(fn.live===event.type||fn.altLive&&jQuery.inArray(event.type,fn.altLive)>-1){data=fn.data;if(!(data.beforeFilter&&data.beforeFilter[event.type]&&!data.beforeFilter[event.type](event))){selectors.push(fn.selector);}}else{delete live[j];}}
match=jQuery(event.target).closest(selectors,event.currentTarget);for(i=0,l=match.length;i<l;i++){for(j in live){fn=live[j];elem=match[i].elem;related=null;if(match[i].selector===fn.selector){if(fn.live==="mouseenter"||fn.live==="mouseleave"){related=jQuery(event.relatedTarget).closest(fn.selector)[0];}
if(!related||related!==elem){elems.push({elem:elem,fn:fn});}}}}
for(i=0,l=elems.length;i<l;i++){match=elems[i];event.currentTarget=match.elem;event.data=match.fn.data;if(match.fn.apply(match.elem,args)===false){stop=false;break;}}
return stop;}
function liveConvert(type,selector){return"live."+(type?type+".":"")+selector.replace(/\./g,"`").replace(/ /g,"&");}
jQuery.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(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};if(jQuery.attrFn){jQuery.attrFn[name]=true;}});if(window.attachEvent&&!window.addEventListener){window.attachEvent("onunload",function(){for(var id in jQuery.cache){if(jQuery.cache[id].handle){try{jQuery.event.remove(jQuery.cache[id].handle.elem);}catch(e){}}}});}
(function(){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true;[0,0].sort(function(){baseHasDuplicate=false;return 0;});var Sizzle=function(selector,context,results,seed){results=results||[];var origContext=context=context||document;if(context.nodeType!==1&&context.nodeType!==9){return[];}
if(!selector||typeof selector!=="string"){return results;}
var parts=[],m,set,checkSet,extra,prune=true,contextXML=isXML(context),soFar=selector;while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3];parts.push(m[1]);if(m[2]){extra=m[3];break;}}
if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context);}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);while(parts.length){selector=parts.shift();if(Expr.relative[selector]){selector+=parts.shift();}
set=posProcess(selector,set);}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0];}
if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;if(parts.length>0){checkSet=makeArray(set);}else{prune=false;}
while(parts.length){var cur=parts.pop(),pop=cur;if(!Expr.relative[cur]){cur="";}else{pop=parts.pop();}
if(pop==null){pop=context;}
Expr.relative[cur](checkSet,pop,contextXML);}}else{checkSet=parts=[];}}
if(!checkSet){checkSet=set;}
if(!checkSet){Sizzle.error(cur||selector);}
if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet);}else if(context&&context.nodeType===1){for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i]);}}}else{for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i]);}}}}else{makeArray(checkSet,results);}
if(extra){Sizzle(extra,origContext,results,seed);Sizzle.uniqueSort(results);}
return results;};Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate;results.sort(sortOrder);if(hasDuplicate){for(var i=1;i<results.length;i++){if(results[i]===results[i-1]){results.splice(i--,1);}}}}
return results;};Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set);};Sizzle.find=function(expr,context,isXML){var set,match;if(!expr){return[];}
for(var i=0,l=Expr.order.length;i<l;i++){var type=Expr.order[i],match;if((match=Expr.leftMatch[type].exec(expr))){var left=match[1];match.splice(1,1);if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");set=Expr.find[type](match,context,isXML);if(set!=null){expr=expr.replace(Expr.match[type],"");break;}}}}
if(!set){set=context.getElementsByTagName("*");}
return{set:set,expr:expr};};Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.leftMatch[type].exec(expr))!=null&&match[2]){var filter=Expr.filter[type],found,item,left=match[1];anyFound=false;match.splice(1,1);if(left.substr(left.length-1)==="\\"){continue;}
if(curLoop===result){result=[];}
if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);if(!match){anyFound=found=true;}else if(match===true){continue;}}
if(match){for(var i=0;(item=curLoop[i])!=null;i++){if(item){found=filter(item,match,i,curLoop);var pass=not^!!found;if(inplace&&found!=null){if(pass){anyFound=true;}else{curLoop[i]=false;}}else if(pass){result.push(item);anyFound=true;}}}}
if(found!==undefined){if(!inplace){curLoop=result;}
expr=expr.replace(Expr.match[type],"");if(!anyFound){return[];}
break;}}}
if(expr===old){if(anyFound==null){Sizzle.error(expr);}else{break;}}
old=expr;}
return curLoop;};Sizzle.error=function(msg){throw"Syntax error, unrecognized expression: "+msg;};var Expr=Sizzle.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(elem){return elem.getAttribute("href");}},relative:{"+":function(checkSet,part){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;if(isTag){part=part.toLowerCase();}
for(var i=0,l=checkSet.length,elem;i<l;i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}
checkSet[i]=isPartStrNotTag||elem&&elem.nodeName.toLowerCase()===part?elem||false:elem===part;}}
if(isPartStrNotTag){Sizzle.filter(part,checkSet,true);}},">":function(checkSet,part){var isPartStr=typeof part==="string";if(isPartStr&&!/\W/.test(part)){part=part.toLowerCase();for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){var parent=elem.parentNode;checkSet[i]=parent.nodeName.toLowerCase()===part?parent:false;}}}else{for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part;}}
if(isPartStr){Sizzle.filter(part,checkSet,true);}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=part.toLowerCase();checkFn=dirNodeCheck;}
checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML);},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=part.toLowerCase();checkFn=dirNodeCheck;}
checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML);}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?[m]:[];}},NAME:function(match,context){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);for(var i=0,l=results.length;i<l;i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i]);}}
return ret.length===0?null:ret;}},TAG:function(match,context){return context.getElementsByTagName(match[1]);}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";if(isXML){return match;}
for(var i=0,elem;(elem=curLoop[i])!=null;i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").replace(/[\t\n]/g," ").indexOf(match)>=0)){if(!inplace){result.push(elem);}}else if(inplace){curLoop[i]=false;}}}
return false;},ID:function(match){return match[1].replace(/\\/g,"");},TAG:function(match,curLoop){return match[1].toLowerCase();},CHILD:function(match){if(match[1]==="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]==="even"&&"2n"||match[2]==="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);match[2]=(test[1]+(test[2]||1))-0;match[3]=test[3]-0;}
match[0]=done++;return match;},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name];}
if(match[2]==="~="){match[4]=" "+match[4]+" ";}
return match;},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop);}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);if(!inplace){result.push.apply(result,ret);}
return false;}}else if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true;}
return match;},POS:function(match){match.unshift(true);return match;}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden";},disabled:function(elem){return elem.disabled===true;},checked:function(elem){return elem.checked===true;},selected:function(elem){elem.parentNode.selectedIndex;return elem.selected===true;},parent:function(elem){return!!elem.firstChild;},empty:function(elem){return!elem.firstChild;},has:function(elem,i,match){return!!Sizzle(match[3],elem).length;},header:function(elem){return/h\d/i.test(elem.nodeName);},text:function(elem){return"text"===elem.type;},radio:function(elem){return"radio"===elem.type;},checkbox:function(elem){return"checkbox"===elem.type;},file:function(elem){return"file"===elem.type;},password:function(elem){return"password"===elem.type;},submit:function(elem){return"submit"===elem.type;},image:function(elem){return"image"===elem.type;},reset:function(elem){return"reset"===elem.type;},button:function(elem){return"button"===elem.type||elem.nodeName.toLowerCase()==="button";},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName);}},setFilters:{first:function(elem,i){return i===0;},last:function(elem,i,match,array){return i===array.length-1;},even:function(elem,i){return i%2===0;},odd:function(elem,i){return i%2===1;},lt:function(elem,i,match){return i<match[3]-0;},gt:function(elem,i,match){return i>match[3]-0;},nth:function(elem,i,match){return match[3]-0===i;},eq:function(elem,i,match){return match[3]-0===i;}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];if(filter){return filter(elem,i,match,array);}else if(name==="contains"){return(elem.textContent||elem.innerText||getText([elem])||"").indexOf(match[3])>=0;}else if(name==="not"){var not=match[3];for(var i=0,l=not.length;i<l;i++){if(not[i]===elem){return false;}}
return true;}else{Sizzle.error("Syntax error, unrecognized expression: "+name);}},CHILD:function(elem,match){var type=match[1],node=elem;switch(type){case'only':case'first':while((node=node.previousSibling)){if(node.nodeType===1){return false;}}
if(type==="first"){return true;}
node=elem;case'last':while((node=node.nextSibling)){if(node.nodeType===1){return false;}}
return true;case'nth':var first=match[2],last=match[3];if(first===1&&last===0){return true;}
var doneName=match[0],parent=elem.parentNode;if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;for(node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count;}}
parent.sizcache=doneName;}
var diff=elem.nodeIndex-last;if(first===0){return diff===0;}else{return(diff%first===0&&diff/first>=0);}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match;},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName.toLowerCase()===match;},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1;},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!==check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false;},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];if(filter){return filter(elem,i,match,array);}}}};var origPOS=Expr.match.POS;for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source.replace(/\\(\d+)/g,function(all,num){return"\\"+(num-0+1);}));}
var makeArray=function(array,results){array=Array.prototype.slice.call(array,0);if(results){results.push.apply(results,array);return results;}
return array;};try{Array.prototype.slice.call(document.documentElement.childNodes,0);}catch(e){makeArray=function(array,results){var ret=results||[];if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array);}else{if(typeof array.length==="number"){for(var i=0,l=array.length;i<l;i++){ret.push(array[i]);}}else{for(var i=0;array[i];i++){ret.push(array[i]);}}}
return ret;};}
var sortOrder;if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition){if(a==b){hasDuplicate=true;}
return a.compareDocumentPosition?-1:1;}
var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;if(ret===0){hasDuplicate=true;}
return ret;};}else if("sourceIndex"in document.documentElement){sortOrder=function(a,b){if(!a.sourceIndex||!b.sourceIndex){if(a==b){hasDuplicate=true;}
return a.sourceIndex?-1:1;}
var ret=a.sourceIndex-b.sourceIndex;if(ret===0){hasDuplicate=true;}
return ret;};}else if(document.createRange){sortOrder=function(a,b){if(!a.ownerDocument||!b.ownerDocument){if(a==b){hasDuplicate=true;}
return a.ownerDocument?-1:1;}
var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();aRange.setStart(a,0);aRange.setEnd(a,0);bRange.setStart(b,0);bRange.setEnd(b,0);var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);if(ret===0){hasDuplicate=true;}
return ret;};}
function getText(elems){var ret="",elem;for(var i=0;elems[i];i++){elem=elems[i];if(elem.nodeType===3||elem.nodeType===4){ret+=elem.nodeValue;}else if(elem.nodeType!==8){ret+=getText(elem.childNodes);}}
return ret;}
(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();form.innerHTML="<a name='"+id+"'/>";var root=document.documentElement;root.insertBefore(form,root.firstChild);if(document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[];}};Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return elem.nodeType===1&&node&&node.nodeValue===match;};}
root.removeChild(form);root=form=null;})();(function(){var div=document.createElement("div");div.appendChild(document.createComment(""));if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);if(match[1]==="*"){var tmp=[];for(var i=0;results[i];i++){if(results[i].nodeType===1){tmp.push(results[i]);}}
results=tmp;}
return results;};}
div.innerHTML="<a href='#'></a>";if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2);};}
div=null;})();if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");div.innerHTML="<p class='TEST'></p>";if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return;}
Sizzle=function(query,context,extra,seed){context=context||document;if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra);}catch(e){}}
return oldSizzle(query,context,extra,seed);};for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop];}
div=null;})();}
(function(){var div=document.createElement("div");div.innerHTML="<div class='test e'></div><div class='test'></div>";if(!div.getElementsByClassName||div.getElementsByClassName("e").length===0){return;}
div.lastChild.className="e";if(div.getElementsByClassName("e").length===1){return;}
Expr.order.splice(1,0,"CLASS");Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1]);}};div=null;})();function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;elem.sizset=i;}
if(elem.nodeName.toLowerCase()===cur){match=elem;break;}
elem=elem[dir];}
checkSet[i]=match;}}}
function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break;}
if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;elem.sizset=i;}
if(typeof cur!=="string"){if(elem===cur){match=true;break;}}else if(Sizzle.filter(cur,[elem]).length>0){match=elem;break;}}
elem=elem[dir];}
checkSet[i]=match;}}}
var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16;}:function(a,b){return a!==b&&(a.contains?a.contains(b):true);};var isXML=function(elem){var documentElement=(elem?elem.ownerDocument||elem:0).documentElement;return documentElement?documentElement.nodeName!=="HTML":false;};var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];selector=selector.replace(Expr.match.PSEUDO,"");}
selector=Expr.relative[selector]?selector+"*":selector;for(var i=0,l=root.length;i<l;i++){Sizzle(selector,root[i],tmpSet);}
return Sizzle.filter(later,tmpSet);};jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.filters;jQuery.unique=Sizzle.uniqueSort;jQuery.getText=getText;jQuery.isXMLDoc=isXML;jQuery.contains=contains;return;window.Sizzle=Sizzle;})();var runtil=/Until$/,rparentsprev=/^(?:parents|prevUntil|prevAll)/,rmultiselector=/,/,slice=Array.prototype.slice;var winnow=function(elements,qualifier,keep){if(jQuery.isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)===keep;});}else if(qualifier.nodeType){return jQuery.grep(elements,function(elem,i){return(elem===qualifier)===keep;});}else if(typeof qualifier==="string"){var filtered=jQuery.grep(elements,function(elem){return elem.nodeType===1;});if(isSimple.test(qualifier)){return jQuery.filter(qualifier,filtered,!keep);}else{qualifier=jQuery.filter(qualifier,filtered);}}
return jQuery.grep(elements,function(elem,i){return(jQuery.inArray(elem,qualifier)>=0)===keep;});};jQuery.fn.extend({find:function(selector){var ret=this.pushStack("","find",selector),length=0;for(var i=0,l=this.length;i<l;i++){length=ret.length;jQuery.find(selector,this[i],ret);if(i>0){for(var n=length;n<ret.length;n++){for(var r=0;r<length;r++){if(ret[r]===ret[n]){ret.splice(n--,1);break;}}}}}
return ret;},has:function(target){var targets=jQuery(target);return this.filter(function(){for(var i=0,l=targets.length;i<l;i++){if(jQuery.contains(this,targets[i])){return true;}}});},not:function(selector){return this.pushStack(winnow(this,selector,false),"not",selector);},filter:function(selector){return this.pushStack(winnow(this,selector,true),"filter",selector);},is:function(selector){return!!selector&&jQuery.filter(selector,this).length>0;},closest:function(selectors,context){if(jQuery.isArray(selectors)){var ret=[],cur=this[0],match,matches={},selector;if(cur&&selectors.length){for(var i=0,l=selectors.length;i<l;i++){selector=selectors[i];if(!matches[selector]){matches[selector]=jQuery.expr.match.POS.test(selector)?jQuery(selector,context||this.context):selector;}}
while(cur&&cur.ownerDocument&&cur!==context){for(selector in matches){match=matches[selector];if(match.jquery?match.index(cur)>-1:jQuery(cur).is(match)){ret.push({selector:selector,elem:cur});delete matches[selector];}}
cur=cur.parentNode;}}
return ret;}
var pos=jQuery.expr.match.POS.test(selectors)?jQuery(selectors,context||this.context):null;return this.map(function(i,cur){while(cur&&cur.ownerDocument&&cur!==context){if(pos?pos.index(cur)>-1:jQuery(cur).is(selectors)){return cur;}
cur=cur.parentNode;}
return null;});},index:function(elem){if(!elem||typeof elem==="string"){return jQuery.inArray(this[0],elem?jQuery(elem):this.parent().children());}
return jQuery.inArray(elem.jquery?elem[0]:elem,this);},add:function(selector,context){var set=typeof selector==="string"?jQuery(selector,context||this.context):jQuery.makeArray(selector),all=jQuery.merge(this.get(),set);return this.pushStack(isDisconnected(set[0])||isDisconnected(all[0])?all:jQuery.unique(all));},andSelf:function(){return this.add(this.prevObject);}});function isDisconnected(node){return!node||!node.parentNode||node.parentNode.nodeType===11;}
jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null;},parents:function(elem){return jQuery.dir(elem,"parentNode");},parentsUntil:function(elem,i,until){return jQuery.dir(elem,"parentNode",until);},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},nextUntil:function(elem,i,until){return jQuery.dir(elem,"nextSibling",until);},prevUntil:function(elem,i,until){return jQuery.dir(elem,"previousSibling",until);},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(until,selector){var ret=jQuery.map(this,fn,until);if(!runtil.test(name)){selector=until;}
if(selector&&typeof selector==="string"){ret=jQuery.filter(selector,ret);}
ret=this.length>1?jQuery.unique(ret):ret;if((this.length>1||rmultiselector.test(selector))&&rparentsprev.test(name)){ret=ret.reverse();}
return this.pushStack(ret,name,slice.call(arguments).join(","));};});jQuery.extend({filter:function(expr,elems,not){if(not){expr=":not("+expr+")";}
return jQuery.find.matches(expr,elems);},dir:function(elem,dir,until){var matched=[],cur=elem[dir];while(cur&&cur.nodeType!==9&&(until===undefined||cur.nodeType!==1||!jQuery(cur).is(until))){if(cur.nodeType===1){matched.push(cur);}
cur=cur[dir];}
return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir]){if(cur.nodeType===1&&++num===result){break;}}
return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){r.push(n);}}
return r;}});var rinlinejQuery=/ jQuery\d+="(?:\d+|null)"/g,rleadingWhitespace=/^\s+/,rxhtmlTag=/(<([\w:]+)[^>]*?)\/>/g,rselfClosing=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,rtagName=/<([\w:]+)/,rtbody=/<tbody/i,rhtml=/<|&\w+;/,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,fcloseTag=function(all,front,tag){return rselfClosing.test(tag)?all:front+"></"+tag+">";},wrapMap={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,"",""]};wrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;if(!jQuery.support.htmlSerialize){wrapMap._default=[1,"div<div>","</div>"];}
jQuery.fn.extend({text:function(text){if(jQuery.isFunction(text)){return this.each(function(i){var self=jQuery(this);self.text(text.call(this,i,self.text()));});}
if(typeof text!=="object"&&text!==undefined){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));}
return jQuery.getText(this);},wrapAll:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapAll(html.call(this,i));});}
if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0]);}
wrap.map(function(){var elem=this;while(elem.firstChild&&elem.firstChild.nodeType===1){elem=elem.firstChild;}
return elem;}).append(this);}
return this;},wrapInner:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i));});}
return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html);}else{self.append(html);}});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},unwrap:function(){return this.parent().each(function(){if(!jQuery.nodeName(this,"body")){jQuery(this).replaceWith(this.childNodes);}}).end();},append:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType===1){this.appendChild(elem);}});},prepend:function(){return this.domManip(arguments,true,function(elem){if(this.nodeType===1){this.insertBefore(elem,this.firstChild);}});},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this);});}else if(arguments.length){var set=jQuery(arguments[0]);set.push.apply(set,this.toArray());return this.pushStack(set,"before",arguments);}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});}else if(arguments.length){var set=this.pushStack(this,"after",arguments);set.push.apply(set,jQuery(arguments[0]).toArray());return set;}},clone:function(events){var ret=this.map(function(){if(!jQuery.support.noCloneEvent&&!jQuery.isXMLDoc(this)){var html=this.outerHTML,ownerDocument=this.ownerDocument;if(!html){var div=ownerDocument.createElement("div");div.appendChild(this.cloneNode(true));html=div.innerHTML;}
return jQuery.clean([html.replace(rinlinejQuery,"").replace(rleadingWhitespace,"")],ownerDocument)[0];}else{return this.cloneNode(true);}});if(events===true){cloneCopyEvent(this,ret);cloneCopyEvent(this.find("*"),ret.find("*"));}
return ret;},html:function(value){if(value===undefined){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(rinlinejQuery,""):null;}else if(typeof value==="string"&&!/<script/i.test(value)&&(jQuery.support.leadingWhitespace||!rleadingWhitespace.test(value))&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=value.replace(rxhtmlTag,fcloseTag);try{for(var i=0,l=this.length;i<l;i++){if(this[i].nodeType===1){jQuery.cleanData(this[i].getElementsByTagName("*"));this[i].innerHTML=value;}}}catch(e){this.empty().append(value);}}else if(jQuery.isFunction(value)){this.each(function(i){var self=jQuery(this),old=self.html();self.empty().append(function(){return value.call(this,i,old);});});}else{this.empty().append(value);}
return this;},replaceWith:function(value){if(this[0]&&this[0].parentNode){if(!jQuery.isFunction(value)){value=jQuery(value).detach();}else{return this.each(function(i){var self=jQuery(this),old=self.html();self.replaceWith(value.call(this,i,old));});}
return this.each(function(){var next=this.nextSibling,parent=this.parentNode;jQuery(this).remove();if(next){jQuery(next).before(value);}else{jQuery(parent).append(value);}});}else{return this.pushStack(jQuery(jQuery.isFunction(value)?value():value),"replaceWith",value);}},detach:function(selector){return this.remove(selector,true);},domManip:function(args,table,callback){var results,first,value=args[0],scripts=[];if(!jQuery.support.checkClone&&arguments.length===3&&typeof value==="string"&&rchecked.test(value)){return this.each(function(){jQuery(this).domManip(args,table,callback,true);});}
if(jQuery.isFunction(value)){return this.each(function(i){var self=jQuery(this);args[0]=value.call(this,i,table?self.html():undefined);self.domManip(args,table,callback);});}
if(this[0]){if(args[0]&&args[0].parentNode&&args[0].parentNode.nodeType===11){results={fragment:args[0].parentNode};}else{results=buildFragment(args,this,scripts);}
first=results.fragment.firstChild;if(first){table=table&&jQuery.nodeName(first,"tr");for(var i=0,l=this.length;i<l;i++){callback.call(table?root(this[i],first):this[i],results.cacheable||this.length>1||i>0?results.fragment.cloneNode(true):results.fragment);}}
if(scripts){jQuery.each(scripts,evalScript);}}
return this;function root(elem,cur){return jQuery.nodeName(elem,"table")?(elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody"))):elem;}}});function cloneCopyEvent(orig,ret){var i=0;ret.each(function(){if(this.nodeName!==(orig[i]&&orig[i].nodeName)){return;}
var oldData=jQuery.data(orig[i++]),curData=jQuery.data(this,oldData),events=oldData&&oldData.events;if(events){delete curData.handle;curData.events={};for(var type in events){for(var handler in events[type]){jQuery.event.add(this,type,events[type][handler],events[type][handler].data);}}}});}
function buildFragment(args,nodes,scripts){var fragment,cacheable,cacheresults,doc;if(args.length===1&&typeof args[0]==="string"&&args[0].length<512&&args[0].indexOf("<option")<0&&(jQuery.support.checkClone||!rchecked.test(args[0]))){cacheable=true;cacheresults=jQuery.fragments[args[0]];if(cacheresults){if(cacheresults!==1){fragment=cacheresults;}}}
if(!fragment){doc=(nodes&&nodes[0]?nodes[0].ownerDocument||nodes[0]:document);fragment=doc.createDocumentFragment();jQuery.clean(args,doc,fragment,scripts);}
if(cacheable){jQuery.fragments[args[0]]=cacheresults?fragment:1;}
return{fragment:fragment,cacheable:cacheable};}
jQuery.fragments={};jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var ret=[],insert=jQuery(selector);for(var i=0,l=insert.length;i<l;i++){var elems=(i>0?this.clone(true):this).get();jQuery.fn[original].apply(jQuery(insert[i]),elems);ret=ret.concat(elems);}
return this.pushStack(ret,name,insert.selector);};});jQuery.each({remove:function(selector,keepData){if(!selector||jQuery.filter(selector,[this]).length){if(!keepData&&this.nodeType===1){jQuery.cleanData(this.getElementsByTagName("*"));jQuery.cleanData([this]);}
if(this.parentNode){this.parentNode.removeChild(this);}}},empty:function(){if(this.nodeType===1){jQuery.cleanData(this.getElementsByTagName("*"));}
while(this.firstChild){this.removeChild(this.firstChild);}}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.extend({clean:function(elems,context,fragment,scripts){context=context||document;if(typeof context.createElement==="undefined"){context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;}
var ret=[];jQuery.each(elems,function(i,elem){if(typeof elem==="number"){elem+="";}
if(!elem){return;}
if(typeof elem==="string"&&!rhtml.test(elem)){elem=context.createTextNode(elem);}else if(typeof elem==="string"){elem=elem.replace(rxhtmlTag,fcloseTag);var tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,depth=wrap[0],div=context.createElement("div");div.innerHTML=wrap[1]+elem+wrap[2];while(depth--){div=div.lastChild;}
if(!jQuery.support.tbody){var hasBody=rtbody.test(elem),tbody=tag==="table"&&!hasBody?div.firstChild&&div.firstChild.childNodes:wrap[1]==="<table>"&&!hasBody?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j){if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length){tbody[j].parentNode.removeChild(tbody[j]);}}}
if(!jQuery.support.leadingWhitespace&&rleadingWhitespace.test(elem)){div.insertBefore(context.createTextNode(rleadingWhitespace.exec(elem)[0]),div.firstChild);}
elem=jQuery.makeArray(div.childNodes);}
if(elem.nodeType){ret.push(elem);}else{ret=jQuery.merge(ret,elem);}});if(fragment){for(var i=0;ret[i];i++){if(scripts&&jQuery.nodeName(ret[i],"script")&&(!ret[i].type||ret[i].type.toLowerCase()==="text/javascript")){scripts.push(ret[i].parentNode?ret[i].parentNode.removeChild(ret[i]):ret[i]);}else{if(ret[i].nodeType===1){ret.splice.apply(ret,[i+1,0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))));}
fragment.appendChild(ret[i]);}}}
return ret;},cleanData:function(elems){for(var i=0,elem,id;(elem=elems[i])!=null;i++){jQuery.event.remove(elem);jQuery.removeData(elem);}}});var rexclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,ralpha=/alpha\([^)]*\)/,ropacity=/opacity=([^)]*)/,rfloat=/float/i,rdashAlpha=/-([a-z])/ig,rupper=/([A-Z])/g,rnumpx=/^-?\d+(?:px)?$/i,rnum=/^-?\d/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssWidth=["Left","Right"],cssHeight=["Top","Bottom"],getComputedStyle=document.defaultView&&document.defaultView.getComputedStyle,styleFloat=jQuery.support.cssFloat?"cssFloat":"styleFloat",fcamelCase=function(all,letter){return letter.toUpperCase();};jQuery.fn.css=function(name,value){return access(this,name,value,true,function(elem,name,value){if(value===undefined){return jQuery.curCSS(elem,name);}
if(typeof value==="number"&&!rexclude.test(name)){value+="px";}
jQuery.style(elem,name,value);});};jQuery.extend({style:function(elem,name,value){if(!elem||elem.nodeType===3||elem.nodeType===8){return undefined;}
if((name==="width"||name==="height")&&parseFloat(value)<0){value=undefined;}
var style=elem.style||elem,set=value!==undefined;if(!jQuery.support.opacity&&name==="opacity"){if(set){style.zoom=1;var opacity=parseInt(value,10)+""==="NaN"?"":"alpha(opacity="+value*100+")";var filter=style.filter||jQuery.curCSS(elem,"filter")||"";style.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):opacity;}
return style.filter&&style.filter.indexOf("opacity=")>=0?(parseFloat(ropacity.exec(style.filter)[1])/100)+"":"";}
if(rfloat.test(name)){name=styleFloat;}
name=name.replace(rdashAlpha,fcamelCase);if(set){style[name]=value;}
return style[name];},css:function(elem,name,force,extra){if(name==="width"||name==="height"){var val,props=cssShow,which=name==="width"?cssWidth:cssHeight;function getWH(){val=name==="width"?elem.offsetWidth:elem.offsetHeight;if(extra==="border"){return;}
jQuery.each(which,function(){if(!extra){val-=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;}
if(extra==="margin"){val+=parseFloat(jQuery.curCSS(elem,"margin"+this,true))||0;}else{val-=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;}});}
if(elem.offsetWidth!==0){getWH();}else{jQuery.swap(elem,props,getWH);}
return Math.max(0,Math.round(val));}
return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style,filter;if(!jQuery.support.opacity&&name==="opacity"&&elem.currentStyle){ret=ropacity.test(elem.currentStyle.filter||"")?(parseFloat(RegExp.$1)/100)+"":"";return ret===""?"1":ret;}
if(rfloat.test(name)){name=styleFloat;}
if(!force&&style&&style[name]){ret=style[name];}else if(getComputedStyle){if(rfloat.test(name)){name="float";}
name=name.replace(rupper,"-$1").toLowerCase();var defaultView=elem.ownerDocument.defaultView;if(!defaultView){return null;}
var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle){ret=computedStyle.getPropertyValue(name);}
if(name==="opacity"&&ret===""){ret="1";}}else if(elem.currentStyle){var camelCase=name.replace(rdashAlpha,fcamelCase);ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!rnumpx.test(ret)&&rnum.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=camelCase==="fontSize"?"1em":(ret||0);ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}
return ret;},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}
callback.call(elem);for(var name in options){elem.style[name]=old[name];}}});if(jQuery.expr&&jQuery.expr.filters){jQuery.expr.filters.hidden=function(elem){var width=elem.offsetWidth,height=elem.offsetHeight,skip=elem.nodeName.toLowerCase()==="tr";return width===0&&height===0&&!skip?true:width>0&&height>0&&!skip?false:jQuery.curCSS(elem,"display")==="none";};jQuery.expr.filters.visible=function(elem){return!jQuery.expr.filters.hidden(elem);};}
var jsc=now(),rscript=/<script(.|\s)*?\/script>/gi,rselectTextarea=/select|textarea/i,rinput=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,jsre=/=\?(&|$)/,rquery=/\?/,rts=/(\?|&)_=.*?(&|$)/,rurl=/^(\w+:)?\/\/([^\/?#]+)/,r20=/%20/g;jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!=="string"){return this._load(url);}else if(!this.length){return this;}
var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}
var type="GET";if(params){if(jQuery.isFunction(params)){callback=params;params=null;}else if(typeof params==="object"){params=jQuery.param(params,jQuery.ajaxSettings.traditional);type="POST";}}
var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status==="success"||status==="notmodified"){self.html(selector?jQuery("<div />").append(res.responseText.replace(rscript,"")).find(selector):res.responseText);}
if(callback){self.each(callback,[res.responseText,status,res]);}}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return this.elements?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||rselectTextarea.test(this.nodeName)||rinput.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){type=type||callback;callback=data;data=null;}
return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){type=type||callback;callback=data;data={};}
return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:window.XMLHttpRequest&&(window.location.protocol!=="file:"||!window.ActiveXObject)?function(){return new window.XMLHttpRequest();}:function(){try{return new window.ActiveXObject("Microsoft.XMLHTTP");}catch(e){}},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(origSettings){var s=jQuery.extend(true,{},jQuery.ajaxSettings,origSettings);var jsonp,status,data,callbackContext=origSettings&&origSettings.context||s,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional);}
if(s.dataType==="jsonp"){if(type==="GET"){if(!jsre.test(s.url)){s.url+=(rquery.test(s.url)?"&":"?")+(s.jsonp||"callback")+"=?";}}else if(!s.data||!jsre.test(s.data)){s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";}
s.dataType="json";}
if(s.dataType==="json"&&(s.data&&jsre.test(s.data)||jsre.test(s.url))){jsonp=s.jsonpCallback||("jsonp"+jsc++);if(s.data){s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");}
s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=window[jsonp]||function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}
if(head){head.removeChild(script);}};}
if(s.dataType==="script"&&s.cache===null){s.cache=false;}
if(s.cache===false&&type==="GET"){var ts=now();var ret=s.url.replace(rts,"$1_="+ts+"$2");s.url=ret+((ret===s.url)?(rquery.test(s.url)?"&":"?")+"_="+ts:"");}
if(s.data&&type==="GET"){s.url+=(rquery.test(s.url)?"&":"?")+s.data;}
if(s.global&&!jQuery.active++){jQuery.event.trigger("ajaxStart");}
var parts=rurl.exec(s.url),remote=parts&&(parts[1]&&parts[1]!==location.protocol||parts[2]!==location.host);if(s.dataType==="script"&&type==="GET"&&remote){var head=document.getElementsByTagName("head")[0]||document.documentElement;var script=document.createElement("script");script.src=s.url;if(s.scriptCharset){script.charset=s.scriptCharset;}
if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){done=true;success();complete();script.onload=script.onreadystatechange=null;if(head&&script.parentNode){head.removeChild(script);}}};}
head.insertBefore(script,head.firstChild);return undefined;}
var requestDone=false;var xhr=s.xhr();if(!xhr){return;}
if(s.username){xhr.open(type,s.url,s.async,s.username,s.password);}else{xhr.open(type,s.url,s.async);}
try{if(s.data||origSettings&&origSettings.contentType){xhr.setRequestHeader("Content-Type",s.contentType);}
if(s.ifModified){if(jQuery.lastModified[s.url]){xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]);}
if(jQuery.etag[s.url]){xhr.setRequestHeader("If-None-Match",jQuery.etag[s.url]);}}
if(!remote){xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");}
xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}
if(s.beforeSend&&s.beforeSend.call(callbackContext,xhr,s)===false){if(s.global&&!--jQuery.active){jQuery.event.trigger("ajaxStop");}
xhr.abort();return false;}
if(s.global){trigger("ajaxSend",[xhr,s]);}
var onreadystatechange=xhr.onreadystatechange=function(isTimeout){if(!xhr||xhr.readyState===0||isTimeout==="abort"){if(!requestDone){complete();}
requestDone=true;if(xhr){xhr.onreadystatechange=jQuery.noop;}}else if(!requestDone&&xhr&&(xhr.readyState===4||isTimeout==="timeout")){requestDone=true;xhr.onreadystatechange=jQuery.noop;status=isTimeout==="timeout"?"timeout":!jQuery.httpSuccess(xhr)?"error":s.ifModified&&jQuery.httpNotModified(xhr,s.url)?"notmodified":"success";var errMsg;if(status==="success"){try{data=jQuery.httpData(xhr,s.dataType,s);}catch(err){status="parsererror";errMsg=err;}}
if(status==="success"||status==="notmodified"){if(!jsonp){success();}}else{jQuery.handleError(s,xhr,status,errMsg);}
complete();if(isTimeout==="timeout"){xhr.abort();}
if(s.async){xhr=null;}}};try{var oldAbort=xhr.abort;xhr.abort=function(){if(xhr){oldAbort.call(xhr);}
onreadystatechange("abort");};}catch(e){}
if(s.async&&s.timeout>0){setTimeout(function(){if(xhr&&!requestDone){onreadystatechange("timeout");}},s.timeout);}
try{xhr.send(type==="POST"||type==="PUT"||type==="DELETE"?s.data:null);}catch(e){jQuery.handleError(s,xhr,null,e);complete();}
if(!s.async){onreadystatechange();}
function success(){if(s.success){s.success.call(callbackContext,data,status,xhr);}
if(s.global){trigger("ajaxSuccess",[xhr,s]);}}
function complete(){if(s.complete){s.complete.call(callbackContext,xhr,status);}
if(s.global){trigger("ajaxComplete",[xhr,s]);}
if(s.global&&!--jQuery.active){jQuery.event.trigger("ajaxStop");}}
function trigger(type,args){(s.context?jQuery(s.context):jQuery.event).trigger(type,args);}
return xhr;},handleError:function(s,xhr,status,e){if(s.error){s.error.call(s.context||s,xhr,status,e);}
if(s.global){(s.context?jQuery(s.context):jQuery.event).trigger("ajaxError",[xhr,s,e]);}},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol==="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status===304||xhr.status===1223||xhr.status===0;}catch(e){}
return false;},httpNotModified:function(xhr,url){var lastModified=xhr.getResponseHeader("Last-Modified"),etag=xhr.getResponseHeader("Etag");if(lastModified){jQuery.lastModified[url]=lastModified;}
if(etag){jQuery.etag[url]=etag;}
return xhr.status===304||xhr.status===0;},httpData:function(xhr,type,s){var ct=xhr.getResponseHeader("content-type")||"",xml=type==="xml"||!type&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.nodeName==="parsererror"){jQuery.error("parsererror");}
if(s&&s.dataFilter){data=s.dataFilter(data,type);}
if(typeof data==="string"){if(type==="json"||!type&&ct.indexOf("json")>=0){data=jQuery.parseJSON(data);}else if(type==="script"||!type&&ct.indexOf("javascript")>=0){jQuery.globalEval(data);}}
return data;},param:function(a,traditional){var s=[];if(traditional===undefined){traditional=jQuery.ajaxSettings.traditional;}
if(jQuery.isArray(a)||a.jquery){jQuery.each(a,function(){add(this.name,this.value);});}else{for(var prefix in a){buildParams(prefix,a[prefix]);}}
return s.join("&").replace(r20,"+");function buildParams(prefix,obj){if(jQuery.isArray(obj)){jQuery.each(obj,function(i,v){if(traditional){add(prefix,v);}else{buildParams(prefix+"["+(typeof v==="object"||jQuery.isArray(v)?i:"")+"]",v);}});}else if(!traditional&&obj!=null&&typeof obj==="object"){jQuery.each(obj,function(k,v){buildParams(prefix+"["+k+"]",v);});}else{add(prefix,obj);}}
function add(key,value){value=jQuery.isFunction(value)?value():value;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value);}}});var elemdisplay={},rfxtypes=/toggle|show|hide/,rfxnum=/^([+-]=)?([\d+-.]+)(.*)$/,timerId,fxAttrs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];jQuery.fn.extend({show:function(speed,callback){if(speed||speed===0){return this.animate(genFx("show",3),speed,callback);}else{for(var i=0,l=this.length;i<l;i++){var old=jQuery.data(this[i],"olddisplay");this[i].style.display=old||"";if(jQuery.css(this[i],"display")==="none"){var nodeName=this[i].nodeName,display;if(elemdisplay[nodeName]){display=elemdisplay[nodeName];}else{var elem=jQuery("<"+nodeName+" />").appendTo("body");display=elem.css("display");if(display==="none"){display="block";}
elem.remove();elemdisplay[nodeName]=display;}
jQuery.data(this[i],"olddisplay",display);}}
for(var j=0,k=this.length;j<k;j++){this[j].style.display=jQuery.data(this[j],"olddisplay")||"";}
return this;}},hide:function(speed,callback){if(speed||speed===0){return this.animate(genFx("hide",3),speed,callback);}else{for(var i=0,l=this.length;i<l;i++){var old=jQuery.data(this[i],"olddisplay");if(!old&&old!=="none"){jQuery.data(this[i],"olddisplay",jQuery.css(this[i],"display"));}}
for(var j=0,k=this.length;j<k;j++){this[j].style.display="none";}
return this;}},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){var bool=typeof fn==="boolean";if(jQuery.isFunction(fn)&&jQuery.isFunction(fn2)){this._toggle.apply(this,arguments);}else if(fn==null||bool){this.each(function(){var state=bool?fn:jQuery(this).is(":hidden");jQuery(this)[state?"show":"hide"]();});}else{this.animate(genFx("toggle",3),fn,fn2);}
return this;},fadeTo:function(speed,to,callback){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);if(jQuery.isEmptyObject(prop)){return this.each(optall.complete);}
return this[optall.queue===false?"each":"queue"](function(){var opt=jQuery.extend({},optall),p,hidden=this.nodeType===1&&jQuery(this).is(":hidden"),self=this;for(p in prop){var name=p.replace(rdashAlpha,fcamelCase);if(p!==name){prop[name]=prop[p];delete prop[p];p=name;}
if(prop[p]==="hide"&&hidden||prop[p]==="show"&&!hidden){return opt.complete.call(this);}
if((p==="height"||p==="width")&&this.style){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}
if(jQuery.isArray(prop[p])){(opt.specialEasing=opt.specialEasing||{})[p]=prop[p][1];prop[p]=prop[p][0];}}
if(opt.overflow!=null){this.style.overflow="hidden";}
opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(rfxtypes.test(val)){e[val==="toggle"?hidden?"show":"hide":val](prop);}else{var parts=rfxnum.exec(val),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!=="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}
if(parts[1]){end=((parts[1]==="-="?-1:1)*end)+start;}
e.custom(start,end,unit);}else{e.custom(start,val,"");}}});return true;});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue){this.queue([]);}
this.each(function(){for(var i=timers.length-1;i>=0;i--){if(timers[i].elem===this){if(gotoEnd){timers[i](true);}
timers.splice(i,1);}}});if(!gotoEnd){this.dequeue();}
return this;}});jQuery.each({slideDown:genFx("show",1),slideUp:genFx("hide",1),slideToggle:genFx("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(name,props){jQuery.fn[name]=function(speed,callback){return this.animate(props,speed,callback);};});jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&typeof speed==="object"?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};opt.duration=jQuery.fx.off?0:typeof opt.duration==="number"?opt.duration:jQuery.fx.speeds[opt.duration]||jQuery.fx.speeds._default;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false){jQuery(this).dequeue();}
if(jQuery.isFunction(opt.old)){opt.old.call(this);}};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig){options.orig={};}}});jQuery.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this);}
(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style){this.elem.style.display="block";}},cur:function(force){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop];}
var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;var self=this;function t(gotoEnd){return self.step(gotoEnd);}
t.elem=this.elem;if(t()&&jQuery.timers.push(t)&&!timerId){timerId=setInterval(jQuery.fx.tick,13);}},show:function(){this.options.orig[this.prop]=jQuery.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now(),done=true;if(gotoEnd||t>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var i in this.options.curAnim){if(this.options.curAnim[i]!==true){done=false;}}
if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;var old=jQuery.data(this.elem,"olddisplay");this.elem.style.display=old?old:this.options.display;if(jQuery.css(this.elem,"display")==="none"){this.elem.style.display="block";}}
if(this.options.hide){jQuery(this.elem).hide();}
if(this.options.hide||this.options.show){for(var p in this.options.curAnim){jQuery.style(this.elem,p,this.options.orig[p]);}}
this.options.complete.call(this.elem);}
return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;var specialEasing=this.options.specialEasing&&this.options.specialEasing[this.prop];var defaultEasing=this.options.easing||(jQuery.easing.swing?"swing":"linear");this.pos=jQuery.easing[specialEasing||defaultEasing](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}
return true;}};jQuery.extend(jQuery.fx,{tick:function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++){if(!timers[i]()){timers.splice(i--,1);}}
if(!timers.length){jQuery.fx.stop();}},stop:function(){clearInterval(timerId);timerId=null;},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(fx){jQuery.style(fx.elem,"opacity",fx.now);},_default:function(fx){if(fx.elem.style&&fx.elem.style[fx.prop]!=null){fx.elem.style[fx.prop]=(fx.prop==="width"||fx.prop==="height"?Math.max(0,fx.now):fx.now)+fx.unit;}else{fx.elem[fx.prop]=fx.now;}}}});if(jQuery.expr&&jQuery.expr.filters){jQuery.expr.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};}
function genFx(type,num){var obj={};jQuery.each(fxAttrs.concat.apply([],fxAttrs.slice(0,num)),function(){obj[this]=type;});return obj;}
if("getBoundingClientRect"in document.documentElement){jQuery.fn.offset=function(options){var elem=this[0];if(options){return this.each(function(i){jQuery.offset.setOffset(this,options,i);});}
if(!elem||!elem.ownerDocument){return null;}
if(elem===elem.ownerDocument.body){return jQuery.offset.bodyOffset(elem);}
var box=elem.getBoundingClientRect(),doc=elem.ownerDocument,body=doc.body,docElem=doc.documentElement,clientTop=docElem.clientTop||body.clientTop||0,clientLeft=docElem.clientLeft||body.clientLeft||0,top=box.top+(self.pageYOffset||jQuery.support.boxModel&&docElem.scrollTop||body.scrollTop)-clientTop,left=box.left+(self.pageXOffset||jQuery.support.boxModel&&docElem.scrollLeft||body.scrollLeft)-clientLeft;return{top:top,left:left};};}else{jQuery.fn.offset=function(options){var elem=this[0];if(options){return this.each(function(i){jQuery.offset.setOffset(this,options,i);});}
if(!elem||!elem.ownerDocument){return null;}
if(elem===elem.ownerDocument.body){return jQuery.offset.bodyOffset(elem);}
jQuery.offset.initialize();var offsetParent=elem.offsetParent,prevOffsetParent=elem,doc=elem.ownerDocument,computedStyle,docElem=doc.documentElement,body=doc.body,defaultView=doc.defaultView,prevComputedStyle=defaultView?defaultView.getComputedStyle(elem,null):elem.currentStyle,top=elem.offsetTop,left=elem.offsetLeft;while((elem=elem.parentNode)&&elem!==body&&elem!==docElem){if(jQuery.offset.supportsFixedPosition&&prevComputedStyle.position==="fixed"){break;}
computedStyle=defaultView?defaultView.getComputedStyle(elem,null):elem.currentStyle;top-=elem.scrollTop;left-=elem.scrollLeft;if(elem===offsetParent){top+=elem.offsetTop;left+=elem.offsetLeft;if(jQuery.offset.doesNotAddBorder&&!(jQuery.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(elem.nodeName))){top+=parseFloat(computedStyle.borderTopWidth)||0;left+=parseFloat(computedStyle.borderLeftWidth)||0;}
prevOffsetParent=offsetParent,offsetParent=elem.offsetParent;}
if(jQuery.offset.subtractsBorderForOverflowNotVisible&&computedStyle.overflow!=="visible"){top+=parseFloat(computedStyle.borderTopWidth)||0;left+=parseFloat(computedStyle.borderLeftWidth)||0;}
prevComputedStyle=computedStyle;}
if(prevComputedStyle.position==="relative"||prevComputedStyle.position==="static"){top+=body.offsetTop;left+=body.offsetLeft;}
if(jQuery.offset.supportsFixedPosition&&prevComputedStyle.position==="fixed"){top+=Math.max(docElem.scrollTop,body.scrollTop);left+=Math.max(docElem.scrollLeft,body.scrollLeft);}
return{top:top,left:left};};}
jQuery.offset={initialize:function(){var body=document.body,container=document.createElement("div"),innerDiv,checkDiv,table,td,bodyMarginTop=parseFloat(jQuery.curCSS(body,"marginTop",true))||0,html="<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>";jQuery.extend(container.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});container.innerHTML=html;body.insertBefore(container,body.firstChild);innerDiv=container.firstChild;checkDiv=innerDiv.firstChild;td=innerDiv.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(checkDiv.offsetTop!==5);this.doesAddBorderForTableAndCells=(td.offsetTop===5);checkDiv.style.position="fixed",checkDiv.style.top="20px";this.supportsFixedPosition=(checkDiv.offsetTop===20||checkDiv.offsetTop===15);checkDiv.style.position=checkDiv.style.top="";innerDiv.style.overflow="hidden",innerDiv.style.position="relative";this.subtractsBorderForOverflowNotVisible=(checkDiv.offsetTop===-5);this.doesNotIncludeMarginInBodyOffset=(body.offsetTop!==bodyMarginTop);body.removeChild(container);body=container=innerDiv=checkDiv=table=td=null;jQuery.offset.initialize=jQuery.noop;},bodyOffset:function(body){var top=body.offsetTop,left=body.offsetLeft;jQuery.offset.initialize();if(jQuery.offset.doesNotIncludeMarginInBodyOffset){top+=parseFloat(jQuery.curCSS(body,"marginTop",true))||0;left+=parseFloat(jQuery.curCSS(body,"marginLeft",true))||0;}
return{top:top,left:left};},setOffset:function(elem,options,i){if(/static/.test(jQuery.curCSS(elem,"position"))){elem.style.position="relative";}
var curElem=jQuery(elem),curOffset=curElem.offset(),curTop=parseInt(jQuery.curCSS(elem,"top",true),10)||0,curLeft=parseInt(jQuery.curCSS(elem,"left",true),10)||0;if(jQuery.isFunction(options)){options=options.call(elem,i,curOffset);}
var props={top:(options.top-curOffset.top)+curTop,left:(options.left-curOffset.left)+curLeft};if("using"in options){options.using.call(elem,props);}else{curElem.css(props);}}};jQuery.fn.extend({position:function(){if(!this[0]){return null;}
var elem=this[0],offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].nodeName)?{top:0,left:0}:offsetParent.offset();offset.top-=parseFloat(jQuery.curCSS(elem,"marginTop",true))||0;offset.left-=parseFloat(jQuery.curCSS(elem,"marginLeft",true))||0;parentOffset.top+=parseFloat(jQuery.curCSS(offsetParent[0],"borderTopWidth",true))||0;parentOffset.left+=parseFloat(jQuery.curCSS(offsetParent[0],"borderLeftWidth",true))||0;return{top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};},offsetParent:function(){return this.map(function(){var offsetParent=this.offsetParent||document.body;while(offsetParent&&(!/^body|html$/i.test(offsetParent.nodeName)&&jQuery.css(offsetParent,"position")==="static")){offsetParent=offsetParent.offsetParent;}
return offsetParent;});}});jQuery.each(["Left","Top"],function(i,name){var method="scroll"+name;jQuery.fn[method]=function(val){var elem=this[0],win;if(!elem){return null;}
if(val!==undefined){return this.each(function(){win=getWindow(this);if(win){win.scrollTo(!i?val:jQuery(win).scrollLeft(),i?val:jQuery(win).scrollTop());}else{this[method]=val;}});}else{win=getWindow(elem);return win?("pageXOffset"in win)?win[i?"pageYOffset":"pageXOffset"]:jQuery.support.boxModel&&win.document.documentElement[method]||win.document.body[method]:elem[method];}};});function getWindow(elem){return("scrollTo"in elem&&elem.document)?elem:elem.nodeType===9?elem.defaultView||elem.parentWindow:false;}
jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn["inner"+name]=function(){return this[0]?jQuery.css(this[0],type,false,"padding"):null;};jQuery.fn["outer"+name]=function(margin){return this[0]?jQuery.css(this[0],type,false,margin?"margin":"border"):null;};jQuery.fn[type]=function(size){var elem=this[0];if(!elem){return size==null?null:this;}
if(jQuery.isFunction(size)){return this.each(function(i){var self=jQuery(this);self[type](size.call(this,i,self[type]()));});}
return("scrollTo"in elem&&elem.document)?elem.document.compatMode==="CSS1Compat"&&elem.document.documentElement["client"+name]||elem.document.body["client"+name]:(elem.nodeType===9)?Math.max(elem.documentElement["client"+name],elem.body["scroll"+name],elem.documentElement["scroll"+name],elem.body["offset"+name],elem.documentElement["offset"+name]):size===undefined?jQuery.css(elem,type):this.css(type,typeof size==="string"?size:size+"px");};});window.jQuery=window.$=jQuery;})(window);(function(){var window=this;Object.extend=function(destination,source){for(var property in source){destination[property]=source[property];}
return destination;};var _toString=Object.prototype.toString;Object.extend(Object,{clone:function(obj){return Object.extend({},obj);},toQueryString:function(params){var s=[];function add(key,value){s[s.length]=encodeURIComponent(key)+'='+
encodeURIComponent(value);}
if(Object.isArray(params)){for(var i=0,l=params.length;i<l;i++){add(this.name,this.value);}}else{var val;for(var k in params){val=params[k];if($.isArray(val)){for(var j=0,len=val.length;i<len;j++){add(k,val[j]);}}else{add(k,val);}}}
return s.join('&').replace(/%20/g,'+');},isArray:function(obj){return _toString.call(obj)==="[object Array]";},isFunction:function(obj){return typeof obj==="function";},isString:function(obj){return _toString.call(obj)=="[object String]";},isNumber:function(obj){return _toString.call(obj)=="[object Number]";},isUndefined:function(obj){return typeof obj==="undefined";}});if(!window.JSON){window.JSON={};}
if(!JSON.parse){JSON.parse=function(str){var obj;try{obj=eval("("+str+")");}catch(e){throw new SyntaxError();}};}
var AJAX_DEFAULT_OPTIONS={url:location.href,type:"GET",contentType:"application/x-www-form-urlencoded",async:true,xhr:function(){return new XMLHttpRequest();}};window.Ajax={_interpretOptions:function(options){var defaults=Object.clone(AJAX_DEFAULT_OPTIONS);return Object.extend(defaults,options);},_request:function(options){options=this._interpretOptions(options);var type=options.type.toUpperCase(),requestDone=false,data,status;if(options.data&&typeof options.data!=="string"){options.data=Object.toQueryString(options.data);}
if(options.data&&type==="GET"){options.url+=(options.url.match(/\?/)?"&":"?")+options.data;options.data=null;}
var xhr=options.xhr();xhr.open(type,options.url,options.async);if(options.data){xhr.setRequestHeader('Content-Type',options.contentType);}
xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");switch(options.dataType){case"json":xhr.setRequestHeader("Accept","application/json");break;default:xhr.setRequestHeader("Accept","*/*");}
if(options.beforeSend){options.beforeSend(xhr,options);}
var onreadystatechange=function(){if(!xhr)return;if(!requestDone&&xhr.readyState===4){requestDone=true;xhr.onreadystatechange=null;status=!Ajax._httpSuccess(xhr)?"error":"success";if(status==="success"){try{data=Ajax._httpData(xhr,options.dataType,options);}catch(e){status="parsererror";}}
if(status==="success"){success();}else{Ajax._handleError(options,xhr,status);}
complete();if(options.async){xhr=null;}}};xhr.onreadystatechange=onreadystatechange;try{xhr.send(options.data);}catch(e){Ajax._handleError(options,xhr,null,e);}
function success(){if(options&&options.success){try{options.success(data,status);}catch(e){}}}
function complete(){if(options.complete){options.complete(xhr,status);}}
return xhr;},_handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);},_httpData:function(xhr,type,s){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")
throw"parsererror";if(typeof data==="string"){if(type==="script"){$eval(data);}
if(type==="json"){data=eval('('+data+')');}}
return data;},_httpSuccess:function(xhr){var s=xhr.status;return(s>=200&&s<300)||s===304||s===1223;},_httpNotModified:function(xhr){return xhr.status===304;},get:function(options){options=options||{};options.type="GET";return this._request(options);},post:function(options){options=options||{};options.type="POST";return this._request(options);}};window.Viewport={getWidth:function(){return self.innerWidth||(document.documentElement.clientWidth||document.body.clientWidth);},getHeight:function(){return self.innerHeight||(document.documentElement.clientHeight||document.body.clientHeight);},getDimensions:function(){return{width:this.getWidth(),height:this.getHeight()};}};if(window.blackberry){Object.extend(Viewport,{getWidth:function(){return window.screen.width;},getHeight:function(){return window.screen.height;}});}})(window);(function($){$.fn.extend({hashchange:function(callback){this.bind('hashchange',callback)},openOnClick:function(href){if(href===undefined||href.length==0)
href='#';return this.click(function(ev){if(href&&href.charAt(0)=='#'){window.setTimeout(function(){$.locationHash(href)},0);}else{window.location(href);}
ev.stopPropagation();return false;});}});if($.browser.msie&&document.documentMode&&document.documentMode>=8){$.extend({locationHash:function(hash){if(!hash)hash='#';else if(hash.charAt(0)!='#')hash='#'+hash;location.hash=hash;}});return;}
var curHash;var iframe;$.extend({locationHash:function(hash){if(curHash===undefined)return;if(!hash)hash='#';else if(hash.charAt(0)!='#')hash='#'+hash;location.hash=hash;if(curHash==hash)return;curHash=hash;if($.browser.msie)updateIEFrame(hash);$.event.trigger('hashchange');}});$(document).ready(function(){curHash=location.hash;if($.browser.msie){if(curHash=='')curHash='#';iframe=$('<iframe />').hide().get(0);$('body').prepend(iframe);updateIEFrame(location.hash);setInterval(checkHashIE,100);}else{setInterval(checkHash,100);}});$(window).unload(function(){iframe=null});function checkHash(){var hash=location.hash;if(hash!=curHash){curHash=hash;$.event.trigger('hashchange');}}
if($.browser.msie){$('a[href^=#]').live('click',function(){var hash=$(this).attr('href');if($(hash).length==0&&$('a[name='+hash.slice(1)+']').length==0){$.locationHash(hash);return false;}});}
function checkHashIE(){var idoc=iframe.contentDocument||iframe.contentWindow.document;var hash=idoc.location.hash;if(hash=='')hash='#';if(hash!=curHash){if(location.hash!=hash)location.hash=hash;curHash=hash;$.event.trigger('hashchange');}}
function updateIEFrame(hash){if(hash=='#')hash='';var idoc=iframe.contentWindow.document;idoc.open();idoc.close();if(idoc.location.hash!=hash)idoc.location.hash=hash;}})(jQuery);(function(){if(window.google&&google.gears){return;}
var factory=null;if(typeof GearsFactory!='undefined'){factory=new GearsFactory();}else{try{factory=new ActiveXObject('Gears.Factory');if(factory.getBuildInfo().indexOf('ie_mobile')!=-1){factory.privateSetGlobalObject(this);}}catch(e){if((typeof navigator.mimeTypes!='undefined')&&navigator.mimeTypes["application/x-googlegears"]){factory=document.createElement("object");factory.style.display="none";factory.width=0;factory.height=0;factory.type="application/x-googlegears";document.documentElement.appendChild(factory);}}}
if(!factory){return;}
if(!window.google){google={};}
if(!google.gears){google.gears={factory:factory};}})();(function(){function GET(path,params,options){options=Object.extend({url:G.BASE_URL+path,data:params,dataType:'json',beforeSend:function(xhr){xhr.setRequestHeader('X-Gowalla-API-Key',G.API_KEY);xhr.setRequestHeader('X-Gowalla-API-Version','1');},success:function(json,status){},error:function(xhr,status,errorThrown){}},options||{});Ajax.get(options);}
function POST(path,params,options){options=Object.extend({url:G.BASE_URL+path,data:params,dataType:'json',beforeSend:function(xhr){xhr.setRequestHeader('X-Gowalla-API-Key',G.API_KEY);xhr.setRequestHeader('X-Gowalla-API-Version','1');},success:function(json,status){},error:function(xhr,status,errorThrown){}},options||{});Ajax.post(options);}
function _onSignIn(json){if(json&&json.url){G.currentUser=json;G.signedIn=true;G.delegate('signInSucceeded');_getVisitedSpotsURLs();}else{G.currentUser=null;G.signedIn=false;G.delegate('signInFailed',json);}}
function _onSignUp(json){if(json&&json.url){G.signedIn=true;G.delegate('signUpSucceeded');}else{G.currentUser=null;G.signedIn=false;G.delegate('signUpFailed',json);}}
function _makeCallbacks(methodName,options){return{success:function(json){if(options.success){options.success(json);}
G.delegate(methodName+'Succeeded',json);},error:function(xhr,status,errorThrown){var json="";if(xhr.responseText){try{json=JSON.parse(xhr.responseText);}catch(e){log("JSON error: "+xhr.responseText);}}
if(options.error){options.error(json);}
G.delegate(methodName+'Failed',json);}};}
function _getVisitedSpotsURLs(){if(!G.signedIn)return;var url=G.currentUser._visited_spots_urls_url;if(!url){throw"Can't find visited spots URL for user!";}
GET(url,{},{success:function(json){_visitedSpotsURLs=json.urls;}});}
function _parseDegrees(str){if(!isNaN(str))return Number(str);var degLL=str.replace(/^-/,'').replace(/[NSEW]/i,'');var dms=degLL.split(/[^0-9.,]+/);for(var i in dms)if(dms[i]=='')dms.splice(i,1);switch(dms.length){case 3:var deg=dms[0]/1+dms[1]/60+dms[2]/3600;break;case 2:var deg=dms[0]/1+dms[1]/60;break;case 1:if(/[NS]/i.test(str))degLL='0'+degLL;var deg=dms[0].slice(0,3)/1+dms[0].slice(3,5)/60+dms[0].slice(5)/3600;break;default:return NaN;}
if(/^-/.test(str)||/[WS]/i.test(str))deg=-deg;return deg;}
function _distanceFromPositionToSpot(position,spot){var c=position.coords;var lat1=c.latitude.toString(),lon1=c.longitude.toString();var lat2=spot.lat.toString(),lon2=spot.lng.toString();var pd=_parseDegrees;return _haversineDistance(pd(lat1),pd(lon1),pd(lat2),pd(lon2));}
function _haversineDistance(lat1,lon1,lat2,lon2){var toRad=function(n){return n*Math.PI/180;};var R=6371;var dLat=toRad(lat2-lat1);var dLon=toRad(lon2-lon1);lat1=toRad(lat1),lat2=toRad(lat2);var a=Math.sin(dLat/2)*Math.sin(dLat/2)+Math.cos(lat1)*Math.cos(lat2)*Math.sin(dLon/2)*Math.sin(dLon/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return R*c;}
var _visitedSpotsURLs=[];var G={BASE_URL:'',API_KEY:"fa574894bddc43aa96c556eb457b4009",GOOGLE_API_KEY:'ABQIAAAADHJ5HNCptL51yr_DS1fQThTNkmJxF8HHISZAOby6saXhCAx1rBTKWu_0yRBMTbHQ24Q2yV2iLnmpgA',currentPosition:null,currentUser:null,signedIn:false,delegate:function(){var args=Array.prototype.slice.call(arguments,0);var methodName=args.shift();var delegate=G.options.delegate;if(delegate&&(methodName in delegate)){delegate[methodName].apply(G,args);}},setup:function(options){G.options=options||{};G.getSession();},getSession:function(options){options=options||{};GET('/sessions',{},{success:function(json){_onSignIn(json);if(options.success){options.success(json);}}});},updatePosition:function(position){if(typeof position==='string'){G.delegate('locationUpdateFailed',position);return;}
var current=G.currentPosition;var now=(new Date()).getTime();var currentTime=null;if(current){currentTime=current.timestamp||now-15000;}
if(current&&current.coords.accuracy<position.coords.accuracy&&((currentTime-now)<10000)){return;}
if(current&&current.coords.latitude===position.coords.latitude&&current.coords.longitude===position.coords.longitude){current.timestamp=position.timestamp;return;}
G.currentPosition=position;G.delegate('locationUpdateSucceeded',position);},signIn:function(params,options){options=options||{};POST('/sessions',params,{success:function(json){_onSignIn(json);G.delegate('signInSucceeded',json);if(options.success){options.success(json);}}});},signUp:function(params,options){options=options||{};POST('/users',params,{success:function(json){_onSignUp(json);if(options.success){options.success(json);}},error:function(xhr,status,errorThrown){var json=eval('('+xhr.responseText+')');if(options.error){options.error(json);}
G.delegate('signUpFailed',json);}});},getSpots:function(options){options=options||{};var pos=G.currentPosition;if(!pos)return false;var params={radius:options.radius||50,lat:pos.coords.latitude,lng:pos.coords.longitude,limit:options.limit||20};if(options.in_group){params.in_group=options.in_group;}
GET('/spots',params,_makeCallbacks('getSpots',options));return true;},getSpot:function(id,options){if(String(id).substring(0,1)!=='/'){id='/spots/'+id}
GET(id,{},{success:function(json){if(json.url){G.currentSpot=json;G.delegate('loadSpotSucceeded',json);}else{this.error(json);}
if(options.success){options.success(json);}},error:function(json){G.delegate('loadSpotFailed',json);if(options.error){options.error(json);}}});},createSpot:function(params,options){var pos=G.currentPosition;if(typeof params.category_1_id==='string'){params.category_1_id=params.category_1_id.replace(/^\/categories\//,'');}
Object.extend(params,{lat:pos.coords.latitude,lng:pos.coords.longitude,accuracy_meters:pos.accuracy});POST('/spots',params,_makeCallbacks('createSpot',options));},checkIn:function(params,options){if(!G.canCheckIn()){return false;}
var pos=Gowalla.currentPosition;var p={post_to_twitter:(!!params.post_to_twitter)?"1":"0",post_to_facebook:(!!params.post_to_facebook)?"1":"0",comment:(!!params.comment)?params.comment:"",lat:pos.coords.latitude,lng:pos.coords.longitude};var spot=G.currentSpot;POST(spot.checkins_url,p,{success:function(json){var user=G.currentUser;if(!user.last_checkins)user.last_checkins=[];user.last_checkins[0]=json;if(!G.isCheckedIn()){user.current_checkins.push(json);}
G.delegate('checkInSucceeded',json);if(options.success){options.success(json);}},error:function(json){G.delegate('checkInFailed',json);if(options.error){options.error(json);}}});},canCheckIn:function(){var spot=G.currentSpot,pos=G.currentPosition;if(!spot||!pos)return false;var distanceInKm=_distanceFromPositionToSpot(pos,spot);return distanceInKm<1.0;},isCheckedIn:function(){var spot=G.currentSpot,user=G.currentUser;if(!spot)return false;var recents=user.current_checkins;for(var i=0;i<recents.length;i++){if(recents[i].spot.url===spot.url)return true;}
return false;},isFounder:function(){var spot=G.currentSpot,user=G.currentUser;if(!spot)return false;var founders=spot.founders;for(var i=0;i<founders.length;i++){if(founders[i].url===user.url)return true;}
return false;},distanceToSpot:function(spot){var pos=G.currentPosition;if(!pos)return"";var distanceInKm=_distanceFromPositionToSpot(pos,spot);return(distanceInKm>1)?Math.round(distanceInKm)+' km':Math.round(distanceInKm*1000)+' meters';},visited:function(spot){if(!spot)return;return _visitedSpotsURLs.indexOf(spot.url)!==-1;},getUser:function(username,options){if(typeof username==='undefined'){username=G.currentUser;}
var url;if(typeof username==='object'){url=username.url;}else{url='/users/'+username;}
GET(url,{},_makeCallbacks('getUser',options));},getTopSpots:function(options){if(typeof username==='undefined'){username=G.currentUser;}
var url;if(typeof username==='object'){url=username.stamps_url;}else{url='/users/'+username+'/stamps';}
GET(url,{},_makeCallbacks('getTopSpotsForUser',options));},getStamps:function(username,options){if(username===null||typeof username==='undefined'){username=G.currentUser;}
var url;if(typeof username==='object'){url=username.stamps_url;}else{url='/users/'+username+'/stamps';}
var params={};if(options.limit)params.limit=options.limit;if(options.offset)params.offset=options.offset;GET(url,params,_makeCallbacks('getStampsForUser',options));},getPins:function(username,options){if(typeof username==='undefined'){username=G.currentUser;}
var url;if(typeof username==='object'){url=username.pins_url;}else{url='/users/'+username+'/pins';}
GET(url,{},_makeCallbacks('getPins',options));},getItemsForUser:function(username,options){if(username===null||typeof username==='undefined'){username=G.currentUser;}
var url;if(typeof username==='object'){url=username.items_url;}else{url='/users/'+username+'/items';}
GET(url,{},_makeCallbacks('getItemsForUser',options));},getItemsForSpot:function(options){var spot=G.currentSpot;if(!spot)return false;var url=spot.items_url;GET(url,{},_makeCallbacks('getItemsForSpot',options));},getItem:function(item,options){var url;if(typeof item==='string'){url=item;}else{url=item.url;}
GET(url,{},_makeCallbacks('getItem',options));},vaultItem:function(item,options){var user=G.currentUser;if(!user){G.delegate('vaultItemFailed',{});return false;}
var url;if(typeof item==='object'&&('vault_url'in item)){url=item.vault_url;}else if(item.indexOf('/items/')===-1){url='/items/'+item+'/vault';}else{url=item;}
POST(url,{},_makeCallbacks('vaultItem',options));},pickUpItem:function(item,droppedItem,options){function _getItemId(item,suffix){var parts;if(Number(item).toString()===item.toString()){return item;}
if(typeof item==='object'&&item.url){parts=item.url.split('/');return parts[parts.length-1];}
if(typeof item==='string'){item=item.replace(/\/(?:pick_up|drop)$/gi,'');parts=item.split('/');return parts[parts.length-1];}
return null;}
var id=_getItemId(item);var params={};if(droppedItem){params.dropped_item_url='/items/'+_getItemId(droppedItem);}
POST('/items/'+id+'/pick_up',params,_makeCallbacks('pickUpItem',options));},dropItem:function(item,options){function _getItemId(item,suffix){var parts;if(Number(item).toString()===item.toString()){return item;}
if(typeof item==='object'&&item.url){parts=item.url.split('/');return parts[parts.length-1];}
if(typeof item==='string'){parts=item.split('/');return parts[parts.length-1];}
return null;}
var id=_getItemId(item);var params={spot_url:G.currentSpot.url};POST('/items/'+id+'/drop',params,_makeCallbacks('dropItem',options));},getCategories:function(options){GET('/categories',{},_makeCallbacks('getCategories',options));},getCategory:function(category,options){var url;if(typeof category==='object'){url=category.url;}else if(category.indexOf('/')>-1){url=category;}else{url='/categories/'+category;}
GET(url,{},_makeCallbacks('getCategory',options));},getEventsForSpot:function(options){var spot=G.currentSpot;if(!spot)return false;GET(spot.events_url,{},_makeCallbacks('getEventsForSpot',options));},getTrips:function(options){var params={},pos=G.currentPosition;if(pos){params.lat=pos.coords.latitude;params.lng=pos.coords.longitude;}
GET('/trips',params,_makeCallbacks('getTrips',options));},getTrip:function(trip,options){var url=(typeof trip==='object')?trip.url:trip;GET(url,{},_makeCallbacks('getTrip',options));},getFriends:function(){},getFriendEvents:function(options){GET('/checkins/recent',{},_makeCallbacks('getFriendEvents',options));}};window.Gowalla=G;})();(function(){var WATCH_ID;var GEOLOCATION_OPTIONS={enableHighAccuracy:true,maximumAge:600000,timeout:30000};var G=window.Gowalla;function _initGeolocation(){var geo=navigator.geolocation;if(typeof geo==='undefined'){if(typeof google!=='undefined'&&google.gears&&google.gears.factory.create){geo=google.gears.factory.create('beta.geolocation');}}
if(typeof geo!=='undefined'){WATCH_ID=geo.watchPosition(_positionSucceeded,_positionFailed,GEOLOCATION_OPTIONS);}else if(window.blackberry&&blackberry.location&&blackberry.location.GPSSupported){_initBlackberryGeolocation();}else{_initGoogleAjaxAPILoader();}}
window.addEventListener('load',function(){if(!window.Gowalla)return;_initGeolocation();},false);function _initBlackberryGeolocation(){blackberry.location.onLocationUpdate("_onBlackberryLocationUpdate()");blackberry.location.setAidMode(2);blackberry.location.refreshLocation();}
function _initGoogleAjaxAPILoader(callback){var script=document.createElement('script');script.src="http://www.google.com/jsapi?key="+
G.googleMapsKey+"&callback=_approximateLocation";script.type="text/javascript";document.getElementsByTagName("head")[0].appendChild(script);}
function _approximateLocation(){var cl=google.loader.ClientLocation;if(!cl)return;var area="Around "+cl.address.city+', '+cl.address.region;var position={coords:{latitude:cl.latitude,longitude:cl.longitude},accuracy:10000,timestamp:new Date(),description:area};G.updatePosition(position);}
window._approximateLocation=_approximateLocation;function _onBlackberryLocationUpdate(){var l=blackberry.location;var position={coords:{latitude:l.latitude,longitude:l.longitude},accuracy:1000,timestamp:new Date()};G.updatePosition(position);}
window._onBlackberryLocationUpdate=_onBlackberryLocationUpdate;function _positionSucceeded(position){G.updatePosition(position);}
function _positionFailed(error){var message="Can't get location";switch(error.code){case 0:break;case 1:message+=" (permission denied)";break;case 2:message+=" (unavailable)";break;case 3:message+=" (timeout)";}
G.updatePosition(message);}})();(function(){if(window.blackberry){jQuery.fn.extend({show:function(){for(var i=0,l=this.length;i<l;i++){this[i].style.display="block";}},addClass:function(value){var needle=" "+value+" ";for(var i=0,l=this.length,elem;i<l;i++){elem=this[i];if(!elem.className){elem.className=value;continue;}
var haystack=" "+elem.className+" ";if(haystack.indexOf(needle)===-1){elem.className+=" "+value;}}},removeClass:function(value){var needle=" "+value+" ",haystack;for(var i=0,l=this.length,elem;i<l;i++){elem=this[i];if(!elem.className)continue;if(elem.className===value){elem.className="";continue;}
haystack=" "+elem.className+" ";haystack=haystack.replace(needle,'');elem.className=haystack.substring(1,haystack.length-1);}}});}
var G=window.Gowalla,$=window.jQuery;function _hideOrShowCheckIn(){if(Gowalla.canCheckIn()){document.body.className+=" can-check-in";$('#check-in-button').show();$('#cant-check-in').hide();}else{document.body.className=document.body.className.replace('can-check-in','');$('#check-in-button').hide();$('#cant-check-in').show();}}
function _highlightTab(tab){try{var nav=document.getElementById('nav');if(!nav)return;}catch(e){log(e);}
var spans=nav.getElementsByTagName('span');for(var i=0,l=spans.length,span;i<l;i++){span=spans[i];var haystack=" "+span.className+" ";haystack=haystack.replace(" selected ",'');span.className=haystack.substring(1,haystack.length);}
if(tab){tab=document.getElementById(tab+'Tab');tab.className+=" selected";}}
function _descriptionForItemEvent(event){var type=event.type;switch(type){case"bonus":return"Received bonus item";case"vault":return"Vaulted this item";case"pick_up":return"Picked up this item at "+event.spot.name;case"drop":return"Dropped this item at "+event.spot.name;default:return"";}}
function _distanceInWords(fromTime,toTime){var fromSeconds=fromTime.getTime();var toSeconds=toTime.getTime();var distanceInSeconds=Math.round(Math.abs(fromSeconds-toSeconds)/1000)
var distanceInMinutes=Math.round(distanceInSeconds/60)
if(distanceInMinutes<=1)
return'a minute ago'if(distanceInMinutes<45)
return distanceInMinutes+' minutes ago'if(distanceInMinutes<90)
return"an hour ago"
if(distanceInMinutes<1440)
return""+(Math.round(distanceInMinutes/60))+' hours ago'if(distanceInMinutes<2880)
return"yesterday"
if(distanceInMinutes<43200)
return(Math.round(distanceInMinutes/1440))+' days ago'if(distanceInMinutes<86400)
return"a month ago"
if(distanceInMinutes<525600)
return(Math.round(distanceInMinutes/43200))+' months ago'if(distanceInMinutes<1051200)
return"a year ago"
return"over "+(Math.round(distanceInMinutes/525600))+' years ago'}
function _setupGhosting(elements){elements.each(function(i,element){var pText=$(element).attr('placeholdertext');if($(element).is('textarea')){$(element).html(pText);}else{$(element).val(pText);}
$(element).focus(function(){if($(this).val()===pText){$(this).removeClass('off').val('');}}).blur(function(){if($(this).val()===''){$(this).addClass('off').val(pText);}});});}
var _addressCache={};var GM={setup:function(){$('#wrapper').html(Jaml.render('body_template',{}));G.setup({delegate:GM.delegate});GM.checkDeviceSupport();for(var name in GM.handlers){$('.'+name).live('click',GM.handlers[name]);}},setHash:function(hash){if(window.blackberry)return;GM._expectedHash=hash;location.hash=hash;},checkDeviceSupport:function(){if(!GM.isSupportedDevice()){$('#device-warning').show();}
if(window.blackberry){$('#blackberry-warning').show();}},isSupportedDevice:function(){if(window.blackberry)return true;var agent=navigator.userAgent;return(agent.indexOf('iPhone')!==-1||agent.indexOf('Android')!==-1);},distanceInWords:function(){return _distanceInWords.apply(this,arguments);},descriptionForItemEvent:function(event){return _descriptionForItemEvent(event);},handleHash:function(){$('#modal_iframe_wrapper').hide();var hash=location.hash.substring(1);if(hash===GM._expectedHash)return true;if(hash===''){GM.handlers.loadPassport();return false;}
var routes=GM.routes,m;for(var i=0,route;route=routes[i];i++){m=hash.match(route.pattern);if(m){GM._expectedHash=hash;route.handler.call(GM,m);return true;}}
GM.setHash('');GM.handlers.loadPassport();return false;},loadView:function(template,options){function _render(template,data,options){if(options&&options.process){data=options.process(data);}
try{$('#main').html(Jaml.render(template,data));}catch(e){log(e);}
GM._currentView=template;window.scrollTo(0,1);if(options&&options.after){options.after.call(this,data);}}
$('#base').empty();var tab=options.tab||null;_highlightTab(tab);if(options.defaultData){options.defaultData.loading=true;_render(template,options.defaultData,{after:options.after||null});}else{_render(template,options.data||{},options);}
return function(json){if(GM._currentView===template){_render(template,json,options);}};},showHTML:function(html,options){$('#blackberry-warning').hide();options=options||{};try{var wrapper=document.getElementById('modal_iframe_wrapper');var iframe=document.getElementById('modal_iframe');wrapper.style.display="none";var doc=iframe.document;if(iframe.document){doc=iframe.contentDocument;}else if(iframe.contentWindow){doc=iframe.contentWindow.document;}
doc.open();doc.writeln(html);doc.close();wrapper.style.display="";iframe.style.display="";var d=Viewport.getDimensions();iframe.style.width=wrapper.style.width=d.width+'px';function _attach(){window.scrollTo(0,1);iframe.style.width=wrapper.style.width=d.width+'px';iframe.width=d.width;var height=doc.body.scrollHeight;if(!height&&window.blackberry){height=720;}
iframe.style.height=height+'px';wrapper.style.height=(height+45)+"px";doc.addEventListener('click',function(e){e.preventDefault();},false);}
window.setTimeout(_attach,0);if(options.dismiss){GM._dismissHTML=options.dismiss;}}catch(e){log(e);}},showBonusItem:function(item){$('#wrapper').hide();$('#modal').html(Jaml.render('bonus_item_template',item)).show();},setLocation:function(message){$('#location-bar').html(message);},showLoadingBox:function(message){var box=$('#loading-box');if(message===false){box.hide();}else{var d=Viewport.getDimensions();box.css('left',Math.floor((d.width-150)/2));box.html(message).show();}},validateNewSpot:function(){var valid=true;var spotName=$('#spot_name').val();if(spotName==='Spot Name'||spotName===''){alert("Please name this spot");valid=false;}
if(!$('#category_id').val()){alert("Please select a category");valid=false;}
if(!$('#category_2').val()){alert("Please select a subcategory");valid=false;}
if($('#spot_description').val()==='Description (optional)'){$('#spot_description').val('');}
if(!valid){window.scrollTo(0,1);}
return valid;},_cacheCategories:function(categories){GM._categoryCache=GM._categoryCache||{};var cache=GM._categoryCache;for(var i=0;i<categories.length;i++){cache[categories[i].name]=categories[i].url;}},_getCategory:function(name){if(!GM._categoryCache)return null;return GM._categoryCache[name]||null;}};GM.delegate={signInSucceeded:function(){GM.showLoadingBox(false);$(document).hashchange(GM.handleHash);GM.handleHash();},signInFailed:function(){GM.handlers.loadSignIn();},signUpSucceeded:function(){alert("You're signed up!");GM.showLoadingBox("Loading passport...");G.getSession({success:function(){GM.showLoadingBox(false);GM.handlers.loadPassport();}});},signUpFailed:function(json){var message="Something went wrong. Try again.";if(json&&json.message){message=json.message;}
alert(message);GM.showLoadingBox(false);},locationUpdateSucceeded:function(position){_hideOrShowCheckIn();if(GM._currentView==='spots_template'&&(document.body.className.indexOf('no-spots')>-1)){var cls=document.body.className;document.body.className=cls.replace('no-spots','');GM.handlers.loadSpots();}
GM.setLocation('Approximating address...');var key=position.coords.latitude+','+position.coords.longitude;var address=_addressCache[key];if(address){GM.setLocation(address);return;}else if(address===null){_addressCache[key]=null;GM.setLocation("Found location");return;}
var url="http://maps.google.com/maps/geo?q="+
position.coords.latitude+','+position.coords.longitude+"&sensor=true&output=json&key="+G.GOOGLE_API_KEY+"&_=foo&callback=?";$.getJSON(url,function(data,textStatus){if(data.Status.code!=200){GM.setLocation("Found location");return;}
GM.setLocation('Got address');try{var area=data.Placemark[0].AddressDetails.Country.AdministrativeArea;var subArea=area.SubAdministrativeArea;var locality=area.Locality;var str;if(subArea){str=subArea.Locality.Thoroughfare.ThoroughfareName+', '+
subArea.Locality.LocalityName;}else if(locality){str=locality.Thoroughfare.ThoroughfareName+', '+
locality.LocalityName;}else if(area){str=area.AdministrativeAreaName;}else{GM.setLocation("Found location");return;}
address="Near "+str;_addressCache[key]=address;GM.setLocation(address);}catch(e){GM.setLocation("Found location");}});}};GM.handlers={dismissHTML:function(){$('#modal_iframe_wrapper').hide();if(GM._dismissHTML){GM._dismissHTML();GM._dismissHTML=null;}},loadSignIn:function(){GM.setHash('/signin/');GM.loadView('signin_template',{tab:null});},loadSignUp:function(){GM.setHash('/users/new/');GM.loadView('signup_template',{tab:null});},doSignIn:function(){GM.showLoadingBox('Signing in...');G.signIn({email:$('#email').val(),password:$('#password').val()},{success:function(){GM.handlers.loadPassport();},error:function(){alert("Could not sign in.");}});},doSignUp:function(){GM.showLoadingBox('Signing up...');var paramNames=['first_name','last_name','username','email','password'],params={};$.each(paramNames,function(index,name){params[name]=$('#'+name).val();});G.signUp(params);},loadItem:function(event){var url;if(typeof event==='object'){var item=event.target;if(!$(item).is('img'))return false;url=$(item).attr('href');}else{url=event;}
GM.setHash(url);var callback=GM.loadView('view_item_template',{defaultData:{}});function _proceed(item){if(item.detail_html){GM.showHTML(item.detail_html,{dismiss:function(){GM.handlers.loadPassport();}});}else{callback(item);}}
G.getItem(url,{success:_proceed});},vaultItem:function(event){var url=$(this).attr('href');var confirmed=window.confirm("Are you sure you want to vault this item?");if(!confirmed)return;GM.showLoadingBox("Vaulting...");G.vaultItem(url,{success:function(json){alert(json.message);GM.handlers.loadPassport();GM.showLoadingBox(false);},error:function(json){alert(json.message);GM.showLoadingBox(false);}});},loadPassport:function(){GM.setHash('');if(!G.signedIn){GM.loadView('signin_template',{tab:null});return;}
var callback=GM.loadView('passport_template',{tab:'passport',defaultData:{user:G.currentUser,items:[]},process:function(json){return{user:G.currentUser,items:json.items};}});G.getItemsForUser(G.currentUser,{success:callback});},loadUser:function(event){var url;if(typeof event==='object'){url=$(this).attr('href');}else{url=event;}
var parts=url.split('/'),username=parts[parts.length-1];GM.setHash(url);var image=$(this).attr('data-image_url');var callback=GM.loadView('user_template',{tab:'friends',defaultData:{name:$(this).attr('data-name')||"&nbsp;",image_url:$(this).attr('data-image_url'),stamps_count:'&nbsp;',pins_count:'&nbsp;',stamps_url:'#',pins_url:'#',last_checkins:[]}});G.getUser(username,{success:callback});},loadTrips:function(event){GM.setHash('/trips/');var callback=GM.loadView('trips_template',{tab:'trips',defaultData:{}});G.getTrips({success:callback});},loadTrip:function(event){var url;if(typeof event==='object'){url=$(this).attr('href');}else{url=event;}
GM.setHash(url);var callback=GM.loadView('trip_template',{defaultData:{name:$(this).attr('data-name'),image_url:$(this).attr('data-image_url'),description:''}});G.getTrip(url,{success:callback});},loadStamps:function(event){var url;if(typeof event==='object'){url=$(this).attr('href');}else{url=event;}
GM.setHash(url);var parts=url.split('/'),username=parts[parts.length-2];var callback=GM.loadView('stamps_template',{defaultData:{stamps:[]}});G.getStamps(username,{limit:20,offset:0,success:callback});},loadMoreStamps:function(event){var url=location.hash.substring(1);var parts=url.split('/'),username=parts[parts.length-2];var offset=$('.stamp-list .icon-box').length;GM.showLoadingBox("Loading...");G.getStamps(username,{limit:20,offset:offset,success:function(data){GM.showLoadingBox(false);var stampList=$('.stamp-list');var html=Jaml.render('stamp_partial',data.stamps);stampList.append(html);if(data.stamps.length<20){$('.loadMoreStamps').hide();}}});},loadPins:function(event){var url;if(typeof event==='object'){url=$(this).attr('href');}else{url=event;}
GM.setHash(url);var parts=url.split('/'),username=parts[parts.length-2];var callback=GM.loadView('pins_template',{defaultData:{pins:[]}});G.getPins(username,{success:callback});},loadFriends:function(){GM.setHash('/friends/');var callback=GM.loadView('friendevents_template',{tab:'friends',defaultData:{},process:function(data){return{groups:data};}});G.getFriendEvents({success:callback});},loadSpots:function(){GM.setHash('/spots/');var callback=GM.loadView('spots_template',{tab:'spots',defaultData:{}});if(!G.currentPosition){document.body.className+=" no-spots";return;}
G.getSpots({success:function(json){if(json.length===0){document.body.className+=" no-spots";}else{var cls=document.body.className;document.body.className=cls.replace('no-spots','');}
callback(json);},error:function(json){if(json&&json.message){alert(json.message);}}});},loadSpot:function(event){var url,name,imageURL;if(typeof event==='object'){url=$(this).attr('href');name=$(this).attr('data-name');imageURL=$(this).attr('data-image_url');}else{url=event;name=GM._newSpotParams?GM._newSpotParams.name:"";imageURL="";}
GM.setHash(url);document.body.className=document.body.className.replace('can-check-in','');var callback=GM.loadView('spot_template',{tab:'spots',defaultData:{spot:{name:name,image_url:imageURL,description:'&nbsp;',checkins_count:'&nbsp;',visitors_count:'&nbsp;',checkins_url:'#',activity_url:'#'}},after:function(){_hideOrShowCheckIn();}});G.getSpot(url,{success:function(spotJSON){_hideOrShowCheckIn();callback({spot:spotJSON});G.getItemsForSpot({success:function(itemsJSON){$.extend(itemsJSON,{spot:spotJSON});callback(itemsJSON);}})}});},loadSpotGroup:function(event){var url;if(typeof event==='string'){url=event;}else{url=$(this).attr('href');}
GM.setHash(url);var queryString=url.split('?')[1];var group=queryString.split('=')[1];var callback=GM.loadView('spot_group_template',{tab:'spots',defaultData:{}});G.getSpots({in_group:group,success:callback});},loadSpotActivity:function(spot){var callback=GM.loadView('spot_activity_template',{tab:'spots',defaultData:{events:[],url:'#'}});GM.getSpotActivity(spot,{success:callback});},newSpot:function(){if(!G.currentPosition){alert("You can't create a new spot because we can't locate you.");return;}
GM.setHash('/spots/new/');var callback=GM.loadView('new_spot_template',{tab:'spots',defaultData:{},after:function(data){try{if(data.loading)return;var categories=data.spot_categories;var c1=$('#category_1'),c2=$('#category_2');c1.change(function(){var value=c1.val();value=GM._getCategory(value)||value;GM.handlers.loadCategory(value,2);});c2.change(function(){var value=c2.val();value=GM._getCategory(value)||value;GM.handlers.loadCategory(value,3);});_setupGhosting($('#spot_name, #spot_description'));}catch(e){if(!window.blackberry)log(e);}}});G.getCategories({success:function(data){GM._cacheCategories(data.spot_categories);callback(data);}});},confirmSpot:function(){if(!GM.validateNewSpot())return false;var cat=$('#category_id').val();cat=GM._getCategory(cat)||cat;GM._newSpotParams={name:$('#spot_name').val(),category_1_id:cat,description:$('#spot_description').val()};var callback=GM.loadView('confirm_spot_template',{tab:'spots',defaultData:{},process:function(data){var pos=G.currentPosition;return{image_url:data.image_url,lat:pos.coords.latitude,lng:pos.coords.longitude};},after:function(){if(!G.currentPosition){$('#btn_create_spot').removeClass('createSpot').addClass('disabled').html("Can't create spot");}}});if(G.currentPosition){G.getCategory(GM._newSpotParams.category_1_id,{success:callback});}else{G.getSpots({success:callback});}},createSpot:function(){GM.showLoadingBox('Saving...');var params=GM._newSpotParams;G.createSpot(params,{success:function(json){GM.showLoadingBox(false);alert(json.message);window.scrollTo(0,1);GM.handlers.loadSpot(json.spot.url);},error:function(json){GM.showLoadingBox(false);alert(json.message);window.scrollTo(0,1);}});},loadConfirmCheckin:function(){GM.loadView('confirm_checkin_template',{data:{url:$(this).attr('href'),name:$(this).attr('name')},after:function(){_setupGhosting($('#comment'));}});},doCheckin:function(){GM.showLoadingBox('Checking in...');var el=$('#comment'),comment=el.val();if(el.attr('placeholder')===comment){el.html('');comment='';}
var params={comment:comment,post_to_facebook:$('#post_to_facebook').attr('checked'),post_to_twitter:$('#post_to_twitter').attr('checked')};G.checkIn(params,{success:function(json){function _proceed(){window.scrollTo(0,1);GM.handlers.loadSpot(G.currentSpot.url);if(json.bonus_item){GM.showBonusItem(json.bonus_item);}}
GM.showLoadingBox(false);if(json.detail_html){GM.showHTML(json.detail_html,{dismiss:_proceed});}else if(json.message){alert(json.message);_proceed();}else{_proceed();}},error:function(req){GM.showLoadingBox(false);try{var json=JSON.parse(req.responseText);}catch(e){alert("Sorry — there's been an error.");return;}
if(json.message){alert(json.message);}else{alert("Sorry — there's been an error.");}
window.scrollTo(0,1);}});},loadCategory:function(id,level){var select=$('#category_'+level);select.empty().hide();$('#category_'+(level+1)).empty().hide();if(id==='')return false;G.getCategory(id,{success:function(json){select.append('<option value="">Select a subcategory</option>');var cats=json.spot_categories;GM._cacheCategories(json.spot_categories);var html=Jaml.render('new_spot_category_partial',cats);select.append(html);select[cats.length>0?'show':'hide']();}});$('#category_id').val(id);},pickUpItem:function(event){var item=event.target;if(!$(item).is('img'))return false;var path=$(item).attr('href');var callback=GM.loadView('swap_item_template',{defaultData:{pick_up_item:path},process:function(json){json.pick_up_item=path;return json;}});G.getItemsForUser(G.currentUser,{success:function(json){callback(json);},error:function(json){alert(json.message);}});},dropItem:function(event){var callback=GM.loadView('swap_item_template',{defaultData:{pick_up_item:""},process:function(json){json.pick_up_item="";return json;}});G.getItemsForUser(G.currentUser,{success:function(json){callback(json);},error:function(json){alert(json.message);}});},swapItem:function(event){function _backToSpotPage(){GM.handlers.loadSpot(G.currentSpot.url);}
var item=event.target;if(!$(item).is('img'))return false;var dItem=$(item).attr('href');var pItem=$('#pick_up_item').val();var confirmed=window.confirm("Are you sure?");if(!confirmed){_backToSpotPage();return;}
var options={success:function(json){GM.showLoadingBox(false);alert(json.message);_backToSpotPage();},error:function(json){GM.showLoadingBox(false);alert(json.message);_backToSpotPage();}}
GM.showLoadingBox("Loading...");if(pItem&&pItem!==''){G.pickUpItem(pItem,dItem,options);}else{G.dropItem(dItem,options);}},hideBonusItem:function(){$('#modal').hide().html('');$('#wrapper').show();}};GM.routes=[{pattern:/\/spots\/(\d+)\/?$/,handler:function(m){GM.handlers.loadSpot('/spots/'+m[1]);}},{pattern:/\/spots\/new\/?$/,handler:function(){GM.handlers.newSpot();}},{pattern:/\/users\/new\/?$/,handler:function(){GM.handlers.loadSignUp();}},{pattern:/\/signin\/?$/,handler:function(){GM.handlers.loadSignIn();}},{pattern:/\/trips\/?$/,handler:function(){GM.handlers.loadTrips();}},{pattern:/\/users\/(.+?)\/stamps\/?$/,handler:function(m){GM.handlers.loadStamps('/users/'+m[1]+'/stamps');}},{pattern:/\/users\/(.+?)\/pins\/?$/,handler:function(m){GM.handlers.loadPins('/users/'+m[1]+'/pins');}},{pattern:/\/users\/(.+?)\/?$/,handler:function(m){GM.handlers.loadUser('/users/'+m[1]);}},{pattern:/\/friends\/?$/,handler:function(m){GM.handlers.loadFriends();}},{pattern:/\/spots\/?$/,handler:function(m){GM.handlers.loadSpots();}},{pattern:/\/spots\/new\/?$/,handler:function(){GM.handlers.newSpot();}},{pattern:/\/spots\/new\/confirm\/?$/,handler:function(){GM.handlers.newSpot();}},{pattern:/\/spots\/(\d+)\/checkin\/?$/,handler:function(m){GM.handlers.loadSpot('/spots/'+m[1]);}},{pattern:/\/spots\/?\?in_group=(\d+)\/?$/,handler:function(m){GM.handlers.loadSpotGroup('/spots/?in_group='+m[1]);}}];window.GowallaMobile=GM;function log(msg){if(window.blackberry){alert(msg);}else{console.log(msg);}}
window.log=log;window.onerror=function(error){if(window.blackberry)log(error);};})();Jaml=function(){return{automaticScope:true,templates:{},helpers:{},register:function(name,template){this.templates[name]=template;},render:function(name,data){if(!(name in this.templates)){throw"Jaml error: Template '"+name+"' does not exist.";}
var template=this.templates[name],renderer=new Jaml.Template(template);try{return renderer.render(data);}catch(e){if(window.console&&console.log){console.log(e);}else if(window.blackberry){alert("Jaml error: "+e);}
throw e;}},registerHelper:function(name,helperFn){this.helpers[name]=helperFn;Jaml.Template.prototype[name]=helperFn;},registerHelpers:function(obj){for(var name in obj){Jaml.registerHelper(name,obj[name]);}}};}();Jaml.Node=function(tagName){this.tagName=tagName;this.attributes={};this.children=[];};Jaml.Node.prototype={setAttributes:function(attrs){for(var key in attrs){var mappedKey=key=='cls'?'class':key;this.attributes[mappedKey]=attrs[key];}},addChild:function(childText){this.children.push(childText);},render:function(lpad){lpad=lpad||0;function _interpret(item){switch(typeof item){case'number':return item+'';case'string':return item;default:if(!('render')in item){throw"Can't render "+item;}
return item.render(lpad+2);}}
var node=[],textnode=(this instanceof Jaml.TextNode),multiline=this.multiLineTag();if(!textnode)node.push(this.getPadding(lpad));node.push("<"+this.tagName);for(var key in this.attributes){node.push(" "+key+"=\""+this.attributes[key]+"\"");}
if(this.isSelfClosing()){node.push(" />\n");}else{node.push(">");if(multiline)node.push("\n");for(var i=0;i<this.children.length;i++){node.push(_interpret(this.children[i]));}
if(multiline)node.push(this.getPadding(lpad));node.push("</",this.tagName,">\n");}
return node.join("");},multiLineTag:function(){var childLength=this.children.length,multiLine=childLength>0;if(childLength==1&&this.children[0]instanceof Jaml.TextNode)multiLine=false;return multiLine;},getPadding:function(amount){return new Array(amount+1).join(" ");},isSelfClosing:function(){var selfClosing=false;for(var i=this.selfClosingTags.length-1;i>=0;i--){if(this.tagName==this.selfClosingTags[i])selfClosing=true;}
return selfClosing;},selfClosingTags:['img','meta','br','hr']};Jaml.TextNode=function(text){this.text=text;};Jaml.TextNode.prototype={render:function(){return this.text;}};Jaml.Template=function(tpl){this.tpl=tpl;this.nodes=[];};Jaml.Template.prototype={render:function(data){data=data||{};if(data.constructor.toString().indexOf("Array")==-1){data=[data];}
if(Jaml.automaticScope){with(this){for(var i=0;i<data.length;i++){eval("("+this.tpl.toString()+")(data[i], i)");};}}else{for(i=0;i<data.length;i++){this.tpl.call(this,data[i],i);}}
var roots=this.getRoots(),output="";for(i=0;i<roots.length;i++){output+=roots[i].render();};return output;},getRoots:function(){var roots=[];for(var i=0;i<this.nodes.length;i++){var node=this.nodes[i];if(node.parent==undefined)roots.push(node);};return roots;},tags:["html","head","body","script","meta","title","link","script","div","p","span","a","img","br","hr","table","tr","th","td","thead","tbody","ul","ol","li","dl","dt","dd","h1","h2","h3","h4","h5","h6","h7","form","input","textarea","button","label","fieldset","legend","select","option"]};(function(){var tags=Jaml.Template.prototype.tags;function makeTagHelper(tagName){var fn=function(attrs){var node=new Jaml.Node(tagName);var firstArgIsAttributes=(typeof attrs=='object')&&!(attrs instanceof Jaml.Node)&&!(attrs instanceof Jaml.TextNode);if(firstArgIsAttributes)node.setAttributes(attrs);var startIndex=firstArgIsAttributes?1:0;for(var i=startIndex;i<arguments.length;i++){var arg=arguments[i];if(typeof arg=="string"||arg==undefined){arg=new Jaml.TextNode(arg||"");}
if(arg instanceof Jaml.Node||arg instanceof Jaml.TextNode){arg.parent=node;}
node.addChild(arg);};this.nodes.push(node);return node;};fn.__isTagHelper=true;return fn;}
for(var i=tags.length-1;i>=0;i--){var tagName=tags[i];Jaml.Template.prototype[tagName]=makeTagHelper(tagName);};})();Jaml.registerHelpers({_interpretTemplate:function(arg){var template=null;if(typeof arg==='string'){template=(arg in Jaml.templates)?new Jaml.Template(Jaml.templates[arg]):arg;}
if(typeof arg==='function'){template=new Jaml.Template(arg);}
return template;},_normalize:function(item,data){if(typeof item==="undefined")debugger;return typeof item==='string'?item:item.render(data);},renderToString:function(template,data){template=this._interpretTemplate(template);return this._normalize(template,data);},renderIf:function(condition,template,data){if(!!condition){return this.renderToString(template,data);}},renderCollection:function(name,collection){var result=[],data;for(var i=0,len=collection.length;i<len;i++){data=collection[i];result.push(Jaml.render(name,data));}
return result.join('\n');}});Jaml.automaticScope=false;(function(){var ISO8601_PATTERN=new RegExp("([0-9]{4})(-([0-9]{2})(-([0-9]{2})"+"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?"+"(Z|(([-+])([0-9]{2}):([0-9]{2}))))?)?)?");Date.iso8601=function(str){var d=str.match(ISO8601_PATTERN),offset=0,ms=0;var date=new Date(d[1],0,1);if(d[3])date.setMonth(d[3]-1);if(d[5])date.setDate(d[5]);if(d[7])date.setHours(d[7]);if(d[8])date.setMinutes(d[8]);if(d[10])date.setSeconds(d[10]);if(d[12]){ms=Number("0."+d[12]*1000);date.setMilliseconds(ms);}
if(d[14]){offset=(Number(d[16])*60)+Number(d[17]);offset*=(d[15]==='-')?1:-1;}
offset-=date.getTimezoneOffset();time=Number(date)+(offset*60*1000);date.setTime(Number(time));return date;}})();Jaml.registerHelpers({nameForUser:function(user){if(user.name)return user.name;if(user.first_name&&user.last_name){return[user.first_name,user.last_name].join(' ');}
return"";},avatar:function(imageURL,attrs){var src=imageURL||"http://gowalla.com/images/default-user.jpg";attrs.src=src;return Jaml.render('avatar_partial',attrs);},truncate:function(str,length,separator){separator=separator||"...";var strLength=str.length;return(str.length<length)?str:str.substring(0,length-separator.length-1)+separator;},capitalize:function(str){var firstLetter=str.substring(0,1),restOfString=str.substring(1);return firstLetter.toUpperCase()+restOfString;},distanceInWords:function(fromTime,toTime){if(!(fromTime instanceof Date)){fromTime=this._interpretDate(fromTime);}
if(!(toTime instanceof Date)){toTime=this._interpretDate(toTime);}
var fromSeconds=fromTime.getTime();var toSeconds=toTime.getTime();var distanceInSeconds=Math.round(Math.abs(fromSeconds-toSeconds)/1000);var distanceInMinutes=Math.round(distanceInSeconds/60);if(distanceInMinutes<=1)
return'a minute ago';if(distanceInMinutes<45)
return distanceInMinutes+' minutes ago';if(distanceInMinutes<90)
return"an hour ago";if(distanceInMinutes<1440)
return""+(Math.round(distanceInMinutes/60))+' hours ago';if(distanceInMinutes<2880)
return"yesterday";if(distanceInMinutes<43200)
return(Math.round(distanceInMinutes/1440))+' days ago';if(distanceInMinutes<86400)
return"a month ago";if(distanceInMinutes<525600)
return(Math.round(distanceInMinutes/43200))+' months ago';if(distanceInMinutes<1051200)
return"a year ago";return"over "+(Math.round(distanceInMinutes/525600))+' years ago';},_interpretDate:function(str){if(!str)return"";if(str.indexOf('T')>-1){return Date.iso8601(str);}
var monthTable={"01":"Jan","02":"Feb","03":"Mar","04":"Apr","05":"May","06":"Jun","07":"Jul","08":"Aug","09":"Sep","10":"Oct","11":"Nov","12":"Dec"};var parts=str.split(' ');var dateParts=parts[0].split('/');var year=dateParts[0],month=dateParts[1],day=dateParts[2];newDate=[monthTable[month],day+',',year].join(' ');return new Date(newDate+' '+parts[1]+" GMT"+parts[2]);},timeAgoInWords:function(time){if(!(time instanceof Date)){time=this._interpretDate(time);}
return this.distanceInWords(new Date(),time);},googleMapsUrlForSpot:function(spot){var width=Viewport.getWidth()-16;return"http://maps.google.com/maps/api/staticmap?"+"center="+spot.lat+','+spot.lng+"&zoom=14&size="+width+"x130"+"&maptype=roadmap&mobile=true&markers=color:0xFF4400|"+spot.lat+','+spot.lng+"&key="+Gowalla.GOOGLE_API_KEY+"&sensor=false";},spinner:function(bool){if(typeof bool==='undefined')bool=true;if(!!bool){return this.renderToString('spinner_partial');}},roundBox:function(data){return Jaml.render('round_box_partial',data);}});Jaml.register('spinner_partial',function(bool){with(this){br({clear:'all'});br();p({align:'center'},img({src:'spinner.gif',width:24,height:24}));}});Jaml.register('nav_item',function(name){with(this){li(span({href:'/'+name,id:name+'Tab',cls:('load'+capitalize(name)),onclick:"void(0)"},capitalize(name)));}});Jaml.register('item_partial',function(item,i){var className=(i%5===4)?"none":"";this.img({src:item.image_url,href:item.url,cls:className});});Jaml.register('item_events_partial',function(item){if(!item.events||item.events.length===0)return;with(this){ul({cls:'events'},Jaml.render('item_event_partial',item.events));}});Jaml.register('item_event_partial',function(event){with(this){li({cls:'single-cell'},img({src:event.user.image_url}),p(span({cls:'user-name'},event.user.name),span({cls:'time-ago'},timeAgoInWords(event.created_at))),p({cls:'comment'},GowallaMobile.descriptionForItemEvent(event)));}});Jaml.register('user_last_checkin_partial',function(user){var checkin=user.last_checkins[0];if(!checkin)return;var spot=checkin.spot;if(!spot)return;var classNames='single-cell loadSpot';with(this){div({style:'clear: both;',cls:classNames,onclick:'void(0)',href:spot.url,'data-name':spot.name,'data-image_url':spot.image_url},img({cls:'spot',src:spot.image_url}),span({cls:'textLabel'},spot.name),span({cls:'detail'},timeAgoInWords(checkin.created_at)));}});Jaml.register('round_box_partial',function(data){var className='round-box ';if(data["cls"])className+=data["cls"];with(this){div({cls:className,style:data.style||"",href:data.href||""},span({cls:'num'},data.num),span({cls:'label'},data.label));}});Jaml.register('avatar_partial',function(data){this.img(data);});Jaml.register('check_in_buttons_partial',function(data){with(this){div({cls:'check-in-buttons'},div({id:'check-in-button',cls:'big-button loadConfirmCheckin',url:data.checkins_url,name:data.name,onclick:'void(0)'},"Check In"),div({id:'cant-check-in',cls:'big-button disabled'},"Can't Check In"));}});Jaml.register('spot_map_partial',function(spot){if(typeof spot.lat==='undefined')return;this.img({src:this.googleMapsUrlForSpot(spot)});});Jaml.register('spot_items_partial',function(data){var items=data.items;if(typeof items==='undefined'||items.length===0)return;if(!Gowalla.isCheckedIn())return;with(this){p({cls:'swap'},"Swap an item below with one in your pack:");div({cls:'items-container pickUpItem items'},Jaml.render('spot_item_partial',items));}});Jaml.register('spot_item_partial',function(item,i){var className=(i%5===4)?"none":"";this.img({src:item.image_url,href:item.pick_up_url,cls:className});});Jaml.register('spot_drop_item_partial',function(spot){if(typeof spot==='undefined')return;if(!Gowalla.isCheckedIn()||Gowalla.isFounder())return;if(spot.icons_count>=spot.max_items_count)return;with(this){p({cls:'drop'},"Drop an item from your pack to become a founder:");div({cls:'big-button dropItem'},"Drop Item");}});Jaml.register('trip_spots_partial',function(trip){this.h3("Spots in this trip");this.div({cls:'row-container'},Jaml.render('spot_partial',trip.spots));});Jaml.register('trip_spot_partial',function(spot){var classNames="row loadSpot ";if(!window.blackberry&&Gowalla.visited('spot')){classNames+="visited";}
with(this){div({cls:classNames,href:spot.url,onclick:'void(0)','data-name':spot.name,'data-image_url':spot.image_url},div({cls:'icon'},img({src:spot.image_url,cls:"spot"})),div({cls:'info'},p({cls:"name"},spot.name),p({cls:"detail"},Gowalla.distanceToSpot(spot))));}});Jaml.register('friendevents_group_events_partial',function(event){if(event.type!=='checkin')return;with(this){div({cls:'row loadUser',href:event.user.url,'data-name':nameForUser(event.user),'data-image_url':event.user.image_url,onclick:'void(0)'},div({cls:'icon'},img({src:event.user.image_url})),div({cls:'info'},p({cls:'name'},nameForUser(event.user)," ",span({cls:'time'},timeAgoInWords(event.created_at))),p({cls:'spot'},event.spot.name),(event.message?p({cls:'comment'},event.message):"")))}});Jaml.register('spot_partial',function(spot){var classNames="row loadSpot";if(!window.blackberry&&Gowalla.visited(spot)){classNames+=" visited";}
var src=spot.small_image_url||spot.image_url;with(this){div({cls:classNames,href:spot.url,onclick:'void(0)','data-name':spot.name,'data-image_url':src},div({cls:'icon'},img({cls:'spot',src:src})),div({cls:'info'},p({cls:'name'},spot.name),p({cls:'detail'},Gowalla.distanceToSpot(spot))));}});Jaml.register('spot_group_partial',function(group){with(this){div({cls:'loadSpotGroup',href:group.url,onclick:'void(0)','data-name':group.name},img({src:group.list_image_url_320,width:'320'}));}});Jaml.register('new_spot_category_partial',function(cat){this.option({value:cat.url},cat.name);});Jaml.register('trip_partial',function(trip){with(this){div({cls:'row loadTrip',href:trip.url,onclick:'void(0)','data-name':trip.name,'data-image_url':trip.image_url},div({cls:'icon'},img({src:trip.image_url})),div({cls:'info'},p({cls:'name'},trip.name),p({cls:'detail'},"0 of 6 completed")));}});Jaml.register('stamp_partial',function(stamp){var classNames="icon-box loadSpot ";if(!window.blackberry&&Gowalla.visited(stamp))classNames+="visited";var spot=stamp.spot;with(this){div({cls:classNames,href:spot.url,onclick:'void(0)','data-name':spot.name,'data-image_url':spot.image_url},img({src:spot.image_url}),span({cls:'label'},truncate(spot.name,25)));}});Jaml.register('pin_partial',function(pin){with(this){div({cls:'icon-box loadPin',href:pin.url,onclick:'void(0)'},img({src:pin.image_url}),span({cls:'label'},pin.name));}});Jaml.register('body_template',function(){with(this){div({id:'logo'},img({src:'logo.png'}));ul({id:'nav'},Jaml.render('nav_item','passport'),Jaml.render('nav_item','spots'),Jaml.render('nav_item','trips'),Jaml.render('nav_item','friends'));div({id:'main'},spinner());div({id:'loading-box',style:'display:none'},"Loading...");}});Jaml.register('passport_template',function(data){var user=data.user,items=data.items;var spot=user.last_checkin?user.last_checkin.spot:null;with(this){div({id:'content',cls:'hasPadding'},div({style:'overflow: hidden'},img({src:user.image_url,cls:'big-image'}),h2({cls:'name'},[user.first_name,user.last_name].join(' ')),roundBox({cls:'loadStamps',href:user.stamps_url||"#",num:user.stamps_count,label:"Stamps",style:"margin-right: 8px;"}),roundBox({cls:'loadPins',href:user.pins_url,num:user.pins_count,label:"Pins"})),Jaml.render('passport_last_checkin_partial',user),(items&&items.length>0?div({cls:'items loadItem'},Jaml.render('item_partial',items)):spinner()),div({cls:'action-buttons'},span({href:'/spots',cls:'checkin-btn loadSpots',onclick:'void(0)'},"Check In")));}});Jaml.register('passport_last_checkin_partial',function(user){if(!user.last_checkins||user.last_checkins.length===0)return;var last=user.last_checkins[0];var spot=last.spot
if(!spot)return;var classNames="single-cell loadSpot";if(!window.blackberry&&Gowalla.visited(spot)){classNames+=' visited';}
with(this){div({cls:classNames,href:spot.url,'data-name':spot.name,'data-image_url':spot.image_url},img({src:spot.image_url,cls:'spot'}),span(spot.name),span({cls:'detail'},"Last seen "+timeAgoInWords(last.created_at)));}});Jaml.register('view_item_template',function(item){with(this){if(item.loading){div({id:'content'},spinner());return;}
div({id:'content',cls:'hasPadding item-view'},div({cls:'heading'},img({cls:'icon',src:item.image_url}),span({cls:'name'},item.name)),div({cls:'issue-number'},span("Item number"),span({cls:'number'},item.issue_number)),Jaml.render('item_events_partial',item),(item.vault_url?div({'href':item.vault_url,cls:'big-button vaultItem',onclick:'void(0)'},"Vault Item"):""));}});Jaml.register('signin_template',function(){with(this){div({id:'content',cls:'hasPadding signup'},form({onsubmit:'return false;'},label({'for':'email'},"Username"),p(input({type:'text',name:'email',id:'email',cls:'big-field',autocorrect:'off',autocapitalize:'off',tabindex:'1'})),label({'for':'password'},"Password"),p(input({type:'password',name:'password',id:'password',cls:'big-field',autocorrect:'off',autocapitalize:'off',tabindex:'2'})),div({href:'/sessions',cls:'big-button doSignIn',onclick:'void(0)'},"Sign In")),p({cls:'new'},"New here? ",span({href:'/users/new',cls:'link loadSignUp',onclick:'void(0)'},"Join Gowalla!")));}});Jaml.register('signup_template',function(){with(this){div({id:'content',cls:'hasPadding signup'},h2("Sign Up"),label({'for':'first_name'},"First Name"),p(input({type:'text',name:'first_name',id:'first_name',cls:'big-field',autocorrect:'off'})),label({'for':'last_name'},"Last Name"),p(input({type:'text',name:'last_name',id:'last_name',cls:'big-field',autocorrect:'off',autocapitalize:'off'})),label({'for':'username'},"Username"),p(input({type:'text',name:'username',id:'username',cls:'big-field',autocorrect:'off',autocapitalize:'off'})),label({'for':'email'},"Email"),p(input({type:'text',name:'email',id:'email',cls:'big-field',autocorrect:'off',autocapitalize:'off'})),label({'for':'password'},"Password"),p(input({type:'password',name:'password',id:'password',cls:'big-field',autocorrect:'off',autocapitalize:'off'})),div({href:'/users',cls:'big-button doSignUp',onclick:'void(0)'},"Sign Up"));}});Jaml.register('user_template',function(user){with(this){div({id:'content',cls:'hasPadding'},avatar(user.image_url,{cls:'big-image'}),h2(nameForUser(user)),roundBox({cls:'loadStamps',num:user.stamps_count,href:user.stamps_url,label:"Stamps",style:"margin-right: 8px;"}),roundBox({cls:'loadPins',num:user.pins_count,href:user.pins_url,label:"Pins"}),((user.last_checkins&&user.last_checkins.length>0)?Jaml.render('user_last_checkin_partial',user):(user.loading?spinner():"")));}});Jaml.register('spot_template',function(data){var spot=data.spot,items=data.items;with(this){div({id:'content',cls:'hasPadding'},div({cls:'details-container'},div({cls:'details'},div({cls:'icon'},img({src:spot.image_url,cls:'big-image'})),(data.loading?"":div({cls:'info'},h2(spot.name),roundBox({num:spot.users_count,label:"People",style:"margin-right: 8px;"}),roundBox({num:spot.checkins_count,label:"Check-ins"}))))),(Gowalla.isCheckedIn()?div({id:'already-checked-in',cls:'big-button disabled'},"Checked In"):Jaml.render('check_in_buttons_partial',spot)),(data.loading?spinner():div({cls:'map-wrapper'},Jaml.render('spot_map_partial',spot))),(data.loading?"":p({cls:'description'},spot.description)),(data.loading?"":Jaml.render('spot_items_partial',{items:items})),(data.loading?"":Jaml.render('spot_drop_item_partial',spot)));}});Jaml.register('swap_item_template',function(data){var items=data.items;with(this){div({id:'content',cls:'hasPadding'},p("Please select an item in your pack to drop."),input({type:'hidden',id:'pick_up_item',value:data.pick_up_item}),(data.loading?spinner():div({cls:'items swapItem'},Jaml.render('item_partial',items))));}});Jaml.register('trip_template',function(trip){with(this){div({id:'content'},div({cls:'details-container hasPadding'},div({cls:'details'},div({cls:'icon'},img({src:trip.image_url,cls:'big-image'})),div({cls:'info'},h2(trip.name),p(trip.description)))),(typeof trip.loading!=='undefined'?spinner():Jaml.render('trip_spots_partial',trip)));}});Jaml.register('friendevents_template',function(data){if(data.loading){this.spinner();return;}
var recent=data.groups.activity;with(this){if(!recent){div(p({style:"padding: 8px; font-size: 14px;"},"You have not added any friends yet! "+"<a href='http://gowalla.com/friends/find'>Find friends</a> "+"on the full website."));return;}
if(recent.length===0){div(p({style:"padding: 8px; font-size: 14px;"},"Your friends haven't checked in anywhere recently."));return;}
div({cls:'row-container'},Jaml.render('friendevents_group_events_partial',recent));}});Jaml.register('spot_group_template',function(data){if(!Gowalla.currentPosition){this.div({id:'content',cls:'spots hasPadding'},"We haven't located you yet. Just a moment...");return;}
if(data.loading){this.div({id:'content',cls:'spots'},this.spinner());return;}
with(this){div({id:'content',cls:'spots'},div({cls:'row-container'},Jaml.render('spot_partial',data.spots)));}});Jaml.register('spots_template',function(data){if(!Gowalla.currentPosition){this.div({id:'content',cls:'spots hasPadding'},"We haven't located you yet. Just a moment...");}
if(data.loading){this.div({id:'content',cls:'spots'},this.spinner());return;}
with(this){div({id:'content',cls:'spots'},(data.groups&&data.groups.length>0?Jaml.render('spot_group_partial',data.groups):""),div({cls:'row-container'},Jaml.render('spot_partial',data.spots)),div({cls:'hasPadding',style:'width: 100%;',style:'border-top: 1px solid #38461f;'},div({cls:'action-buttons'},p({style:'padding-bottom: 10px;'},"Don't see your spot on the list?"),span({href:'/spots/new',cls:'newSpot',onclick:'void(0)'},"Create New Spot"))));}});Jaml.register('new_spot_template',function(data){if(typeof data.loading!=='undefined'){this.div({id:'content',cls:'hasPadding'},this.spinner());return;}
with(this){div({id:'new-spot'},h2("Create New Spot"),div({cls:'group'},input({id:'spot_name',placeholdertext:'Spot Name',cls:'off'})),div({cls:'group category'},input({type:'hidden',id:'category_id'}),select({id:'category_1'},option({value:''},"Select a category"),Jaml.render('new_spot_category_partial',data.spot_categories)),select({id:'category_2',style:'display: none'}),select({id:'category_3',style:'display: none'})),div({cls:'group'},textarea({id:'spot_description',placeholder:'Description (optional)',cls:'off'}))),span({href:'/spots',cls:'big-button confirmSpot',onclick:'void(0)'},"Save")}});Jaml.register('confirm_spot_template',function(data){if(typeof data.loading!=='undefined'){this.div({id:'content',cls:'hasPadding'},this.spinner());return;}
var spot=GowallaMobile._newSpotParams;with(this){div({id:'content',cls:'hasPadding'},div({id:'new-spot'},div({cls:'details'},div({cls:'icon'},img({src:data.image_url,cls:'big-image'})),div({cls:'info'},h2(spot.name),p(spot.description))),span({href:'/spots',id:'btn_create_spot',cls:'big-button createSpot',onclick:'void(0)',style:'margin: 10px 0;'},"Create Spot"),div({id:'created-map'},div({cls:'warning'},"This is where your spot will be created"),div({cls:'map'},Jaml.render('spot_map_partial',data)))));}});Jaml.register('trips_template',function(data){if(typeof data.loading!=='undefined'){this.div({id:'content',cls:'trips'},this.spinner());return;}
with(this){div({cls:'row-container'},Jaml.render('trip_partial',data.trips));}});Jaml.register('stamps_template',function(data){if(data.loading){this.div({id:'content'},this.spinner());return;}
with(this){div({id:'content',cls:'hasPadding'},div({cls:'stamp-list'},Jaml.render('stamp_partial',data.stamps)),(data.stamps.length===20?div({cls:'loadMoreStamps big-button',style:'clear: both'},"Load More"):""));}});Jaml.register('pins_template',function(data){if(typeof data.loading!=='undefined'){this.div({id:'content'},this.spinner());return;}
with(this){div({id:content,cls:'hasPadding'},Jaml.render('pin_partial',data.pins));}});Jaml.register('confirm_checkin_template',function(spot){var twitter=Gowalla.currentUser.can_post_to_twitter;var facebook=Gowalla.currentUser.can_post_to_facebook;with(this){div({id:'content',cls:'hasPadding'},h2({id:'check_in_header'},"Check in at "+spot.name),textarea({id:'comment',placeholder:'What are you doing (optional)?'}),div({style:'margin-bottom: 10px;'},(twitter?input({type:'checkbox',cls:'large',id:'post_to_twitter'}):""),(twitter?"Post to Twitter":""),(facebook?input({type:'checkbox',cls:'large',id:'post_to_facebook'}):""),(facebook?"Post to Facebook":"")),div({href:spot.url,cls:'big-button doCheckin',onclick:'void(0)'},"Confirm Check In"));}});Jaml.register('bonus_item_template',function(item){with(this){div({cls:'bonus-item'},img({src:item.image_url}),p("You have found"),p({cls:'item-name'},item.determiner," ",item.name),p("This item has been added to your pack. You may keep this item in your collection or drop it later."),div({cls:'big-button bonus-item-buton hideBonusItem',onclick:'GM.handlers.hideBonusItem();'},"Oh yeah!"));}});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment