//jquery-1.2.min.js
/*
 * jQuery 1.2 - New Wave Javascript
 *
 * Copyright (c) 2007 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2007-09-10 15:45:49 -0400 (Mon, 10 Sep 2007) $
 * $Rev: 3219 $
 */
(function(){if(typeof jQuery!="undefined")var _jQuery=jQuery;var jQuery=window.jQuery=function(a,c){if(window==this||!this.init)return new jQuery(a,c);return this.init(a,c);};if(typeof $!="undefined")var _$=$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;jQuery.fn=jQuery.prototype={init:function(a,c){a=a||document;if(typeof a=="string"){var m=quickExpr.exec(a);if(m&&(m[1]||!c)){if(m[1])a=jQuery.clean([m[1]],c);else{var tmp=document.getElementById(m[3]);if(tmp)if(tmp.id!=m[3])return jQuery().find(a);else{this[0]=tmp;this.length=1;return this;}else
a=[];}}else
return new jQuery(c).find(a);}else if(jQuery.isFunction(a))return new jQuery(document)[jQuery.fn.ready?"ready":"load"](a);return this.setArray(a.constructor==Array&&a||(a.jquery||a.length&&a!=window&&!a.nodeType&&a[0]!=undefined&&a[0].nodeType)&&jQuery.makeArray(a)||[a]);},jquery:"1.2",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(a){var ret=jQuery(a);ret.prevObject=this;return ret;},setArray:function(a){this.length=0;Array.prototype.push.apply(this,a);return this;},each:function(fn,args){return jQuery.each(this,fn,args);},index:function(obj){var pos=-1;this.each(function(i){if(this==obj)pos=i;});return pos;},attr:function(key,value,type){var obj=key;if(key.constructor==String)if(value==undefined)return this.length&&jQuery[type||"attr"](this[0],key)||undefined;else{obj={};obj[key]=value;}return this.each(function(index){for(var prop in obj)jQuery.attr(type?this.style:this,prop,jQuery.prop(this,obj[prop],type,index,prop));});},css:function(key,value){return this.attr(key,value,"curCSS");},text:function(e){if(typeof e!="object"&&e!=null)return this.empty().append(document.createTextNode(e));var t="";jQuery.each(e||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)t+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return t;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,1,function(a){this.appendChild(a);});},prepend:function(){return this.domManip(arguments,true,-1,function(a){this.insertBefore(a,this.firstChild);});},before:function(){return this.domManip(arguments,false,1,function(a){this.parentNode.insertBefore(a,this);});},after:function(){return this.domManip(arguments,false,-1,function(a){this.parentNode.insertBefore(a,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(t){var data=jQuery.map(this,function(a){return jQuery.find(t,a);});return this.pushStack(/[^+>] [^+>]/.test(t)||t.indexOf("..")>-1?jQuery.unique(data):data);},clone:function(events){var ret=this.map(function(){return this.outerHTML?jQuery(this.outerHTML)[0]:this.cloneNode(true);});if(events===true){var clone=ret.find("*").andSelf();this.find("*").andSelf().each(function(i){var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});}return ret;},filter:function(t){return this.pushStack(jQuery.isFunction(t)&&jQuery.grep(this,function(el,index){return t.apply(el,[index]);})||jQuery.multiFilter(t,this));},not:function(t){return this.pushStack(t.constructor==String&&jQuery.multiFilter(t,this,true)||jQuery.grep(this,function(a){return(t.constructor==Array||t.jquery)?jQuery.inArray(a,t)<0:a!=t;}));},add:function(t){return this.pushStack(jQuery.merge(this.get(),t.constructor==String?jQuery(t).get():t.length!=undefined&&(!t.nodeName||t.nodeName=="FORM")?t:[t]));},is:function(expr){return expr?jQuery.multiFilter(expr,this).length>0:false;},hasClass:function(expr){return this.is("."+expr);},val:function(val){if(val==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,a=[],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){var val=jQuery.browser.msie&&!option.attributes["value"].specified?option.text:option.value;if(one)return val;a.push(val);}}return a;}else
return this[0].value.replace(/\r/g,"");}}else
return this.each(function(){if(val.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,val)>=0||jQuery.inArray(this.name,val)>=0);else if(jQuery.nodeName(this,"select")){var tmp=val.constructor==Array?val:[val];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,tmp)>=0||jQuery.inArray(this.text,tmp)>=0);});if(!tmp.length)this.selectedIndex=-1;}else
this.value=val;});},html:function(val){return val==undefined?(this.length?this[0].innerHTML:null):this.empty().append(val);},replaceWith:function(val){return this.after(val).remove();},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(fn){return this.pushStack(jQuery.map(this,function(elem,i){return fn.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},domManip:function(args,table,dir,fn){var clone=this.length>1,a;return this.each(function(){if(!a){a=jQuery.clean(args,this.ownerDocument);if(dir<0)a.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(a[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(document.createElement("tbody"));jQuery.each(a,function(){if(jQuery.nodeName(this,"script")){if(this.src)jQuery.ajax({url:this.src,async:false,dataType:"script"});else
jQuery.globalEval(this.text||this.textContent||this.innerHTML||"");}else
fn.apply(obj,[clone?this.cloneNode(true):this]);});});}};jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},a=1,al=arguments.length,deep=false;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};}if(al==1){target=this;a=0;}var prop;for(;a<al;a++)if((prop=arguments[a])!=null)for(var i in prop){if(target==prop[i])continue;if(deep&&typeof prop[i]=='object'&&target[i])jQuery.extend(target[i],prop[i]);else if(prop[i]!=undefined)target[i]=prop[i];}return target;};var expando="jQuery"+(new Date()).getTime(),uuid=0,win={};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/function/i.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){if(window.execScript)window.execScript(data);else if(jQuery.browser.safari)window.setTimeout(data,0);else
eval.call(window,data);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?win:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!=undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?win:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(obj,fn,args){if(args){if(obj.length==undefined)for(var i in obj)fn.apply(obj[i],args);else
for(var i=0,ol=obj.length;i<ol;i++)if(fn.apply(obj[i],args)===false)break;}else{if(obj.length==undefined)for(var i in obj)fn.call(obj[i],i,obj[i]);else
for(var i=0,ol=obj.length,val=obj[0];i<ol&&fn.call(val,i,val)!==false;val=obj[++i]){}}return obj;},prop:function(elem,value,type,index,prop){if(jQuery.isFunction(value))value=value.call(elem,[index]);var exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i;return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(prop)?value+"px":value;},className:{add:function(elem,c){jQuery.each((c||"").split(/\s+/),function(i,cur){if(!jQuery.className.has(elem.className,cur))elem.className+=(elem.className?" ":"")+cur;});},remove:function(elem,c){elem.className=c!=undefined?jQuery.grep(elem.className.split(/\s+/),function(cur){return!jQuery.className.has(c,cur);}).join(" "):"";},has:function(t,c){return jQuery.inArray(c,(t.className||t).toString().split(/\s+/))>-1;}},swap:function(e,o,f){for(var i in o){e.style["old"+i]=e.style[i];e.style[i]=o[i];}f.apply(e,[]);for(var i in o)e.style[i]=e.style["old"+i];},css:function(e,p){if(p=="height"||p=="width"){var old={},oHeight,oWidth,d=["Top","Bottom","Right","Left"];jQuery.each(d,function(){old["padding"+this]=0;old["border"+this+"Width"]=0;});jQuery.swap(e,old,function(){if(jQuery(e).is(':visible')){oHeight=e.offsetHeight;oWidth=e.offsetWidth;}else{e=jQuery(e.cloneNode(true)).find(":radio").removeAttr("checked").end().css({visibility:"hidden",position:"absolute",display:"block",right:"0",left:"0"}).appendTo(e.parentNode)[0];var parPos=jQuery.css(e.parentNode,"position")||"static";if(parPos=="static")e.parentNode.style.position="relative";oHeight=e.clientHeight;oWidth=e.clientWidth;if(parPos=="static")e.parentNode.style.position="static";e.parentNode.removeChild(e);}});return p=="height"?oHeight:oWidth;}return jQuery.curCSS(e,p);},curCSS:function(elem,prop,force){var ret,stack=[],swap=[];function color(a){if(!jQuery.browser.safari)return false;var ret=document.defaultView.getComputedStyle(a,null);return!ret||ret.getPropertyValue("color")=="";}if(prop=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret;}if(prop.match(/float/i))prop=styleFloat;if(!force&&elem.style[prop])ret=elem.style[prop];else if(document.defaultView&&document.defaultView.getComputedStyle){if(prop.match(/float/i))prop="float";prop=prop.replace(/([A-Z])/g,"-$1").toLowerCase();var cur=document.defaultView.getComputedStyle(elem,null);if(cur&&!color(elem))ret=cur.getPropertyValue(prop);else{for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(a=0;a<stack.length;a++)if(color(stack[a])){swap[a]=stack[a].style.display;stack[a].style.display="block";}ret=prop=="display"&&swap[stack.length-1]!=null?"none":document.defaultView.getComputedStyle(elem,null).getPropertyValue(prop)||"";for(a=0;a<swap.length;a++)if(swap[a]!=null)stack[a].style.display=swap[a];}if(prop=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var newProp=prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();});ret=elem.currentStyle[prop]||elem.currentStyle[newProp];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var style=elem.style.left;var runtimeStyle=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;elem.style.left=ret||0;ret=elem.style.pixelLeft+"px";elem.style.left=style;elem.runtimeStyle.left=runtimeStyle;}}return ret;},clean:function(a,doc){var r=[];doc=doc||document;jQuery.each(a,function(i,arg){if(!arg)return;if(arg.constructor==Number)arg=arg.toString();if(typeof arg=="string"){arg=arg.replace(/(<(\w+)[^>]*?)\/>/g,function(m,all,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i)?m:all+"></"+tag+">";});var s=jQuery.trim(arg).toLowerCase(),div=doc.createElement("div"),tb=[];var wrap=!s.indexOf("<opt")&&[1,"<select>","</select>"]||!s.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||s.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!s.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!s.indexOf("<td")||!s.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!s.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+arg+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){if(!s.indexOf("<table")&&s.indexOf("<tbody")<0)tb=div.firstChild&&div.firstChild.childNodes;else if(wrap[1]=="<table>"&&s.indexOf("<tbody")<0)tb=div.childNodes;for(var n=tb.length-1;n>=0;--n)if(jQuery.nodeName(tb[n],"tbody")&&!tb[n].childNodes.length)tb[n].parentNode.removeChild(tb[n]);if(/^\s/.test(arg))div.insertBefore(doc.createTextNode(arg.match(/^\s*/)[0]),div.firstChild);}arg=jQuery.makeArray(div.childNodes);}if(0===arg.length&&(!jQuery.nodeName(arg,"form")&&!jQuery.nodeName(arg,"select")))return;if(arg[0]==undefined||jQuery.nodeName(arg,"form")||arg.options)r.push(arg);else
r=jQuery.merge(r,arg);});return r;},attr:function(elem,name,value){var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return jQuery.attr(elem.style,"cssText",value);else if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method"))return elem.getAttributeNode(name).nodeValue;else if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem.setAttribute(name,value);}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem))return elem.getAttribute(name,2);return elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(t){return(t||"").replace(/^\s+|\s+$/g,"");},makeArray:function(a){var r=[];if(typeof a!="array")for(var i=0,al=a.length;i<al;i++)r.push(a[i]);else
r=a.slice(0);return r;},inArray:function(b,a){for(var i=0,al=a.length;i<al;i++)if(a[i]==b)return i;return-1;},merge:function(first,second){if(jQuery.browser.msie){for(var i=0;second[i];i++)if(second[i].nodeType!=8)first.push(second[i]);}else
for(var i=0;second[i];i++)first.push(second[i]);return first;},unique:function(first){var r=[],done={};try{for(var i=0,fl=first.length;i<fl;i++){var id=jQuery.data(first[i]);if(!done[id]){done[id]=true;r.push(first[i]);}}}catch(e){r=first;}return r;},grep:function(elems,fn,inv){if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+"}");var result=[];for(var i=0,el=elems.length;i<el;i++)if(!inv&&fn(elems[i],i)||inv&&!fn(elems[i],i))result.push(elems[i]);return result;},map:function(elems,fn){if(typeof fn=="string")fn=eval("false||function(a){return "+fn+"}");var result=[];for(var i=0,el=elems.length;i<el;i++){var val=fn(elems[i],i);if(val!==null&&val!=undefined){if(val.constructor!=Array)val=[val];result=result.concat(val);}}return result;}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",styleFloat:jQuery.browser.msie?"styleFloat":"cssFloat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,innerHTML:"innerHTML",className:"className",value:"value",disabled:"disabled",checked:"checked",readonly:"readOnly",selected:"selected",maxlength:"maxLength"}});jQuery.each({parent:"a.parentNode",parents:"jQuery.dir(a,'parentNode')",next:"jQuery.nth(a,2,'nextSibling')",prev:"jQuery.nth(a,2,'previousSibling')",nextAll:"jQuery.dir(a,'nextSibling')",prevAll:"jQuery.dir(a,'previousSibling')",siblings:"jQuery.sibling(a.parentNode.firstChild,a)",children:"jQuery.sibling(a.firstChild)",contents:"jQuery.nodeName(a,'iframe')?a.contentDocument||a.contentWindow.document:jQuery.makeArray(a.childNodes)"},function(i,n){jQuery.fn[i]=function(a){var ret=jQuery.map(this,n);if(a&&typeof a=="string")ret=jQuery.multiFilter(a,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(i,n){jQuery.fn[i]=function(){var a=arguments;return this.each(function(){for(var j=0,al=a.length;j<al;j++)jQuery(a[j])[n](this);});};});jQuery.each({removeAttr:function(key){jQuery.attr(this,key,"");this.removeAttribute(key);},addClass:function(c){jQuery.className.add(this,c);},removeClass:function(c){jQuery.className.remove(this,c);},toggleClass:function(c){jQuery.className[jQuery.className.has(this,c)?"remove":"add"](this,c);},remove:function(a){if(!a||jQuery.filter(a,[this]).r.length){jQuery.removeData(this);this.parentNode.removeChild(this);}},empty:function(){jQuery("*",this).each(function(){jQuery.removeData(this);});while(this.firstChild)this.removeChild(this.firstChild);}},function(i,n){jQuery.fn[i]=function(){return this.each(n,arguments);};});jQuery.each(["Height","Width"],function(i,name){var n=name.toLowerCase();jQuery.fn[n]=function(h){return this[0]==window?jQuery.browser.safari&&self["inner"+name]||jQuery.boxModel&&Math.max(document.documentElement["client"+name],document.body["client"+name])||document.body["client"+name]:this[0]==document?Math.max(document.body["scroll"+name],document.body["offset"+name]):h==undefined?(this.length?jQuery.css(this[0],n):null):this.css(n,h.constructor==String?h:h+"px");};});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":"m[2]=='*'||jQuery.nodeName(a,m[2])","#":"a.getAttribute('id')==m[2]",":":{lt:"i<m[3]-0",gt:"i>m[3]-0",nth:"m[3]-0==i",eq:"m[3]-0==i",first:"i==0",last:"i==r.length-1",even:"i%2==0",odd:"i%2","first-child":"a.parentNode.getElementsByTagName('*')[0]==a","last-child":"jQuery.nth(a.parentNode.lastChild,1,'previousSibling')==a","only-child":"!jQuery.nth(a.parentNode.lastChild,2,'previousSibling')",parent:"a.firstChild",empty:"!a.firstChild",contains:"(a.textContent||a.innerText||'').indexOf(m[3])>=0",visible:'"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden"',hidden:'"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden"',enabled:"!a.disabled",disabled:"a.disabled",checked:"a.checked",selected:"a.selected||jQuery.attr(a,'selected')",text:"'text'==a.type",radio:"'radio'==a.type",checkbox:"'checkbox'==a.type",file:"'file'==a.type",password:"'password'==a.type",submit:"'submit'==a.type",image:"'image'==a.type",reset:"'reset'==a.type",button:'"button"==a.type||jQuery.nodeName(a,"button")',input:"/input|select|textarea|button/i.test(a.nodeName)",has:"jQuery.find(m[3],a).length",header:"/h\\d/i.test(a.nodeName)",animated:"jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length"}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&!context.nodeType)context=null;context=context||document;var ret=[context],done=[],last;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){var nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName.toUpperCase()))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var nodeName=m[2],merge={};m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName.toUpperCase()){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=jQuery.filter(m[3],r,true).r;else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(\d*)n\+?(\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"n+"+m[3]||m[3]),first=(test[1]||1)-0,last=test[2]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==1){if(last==0||node.nodeIndex==last)add=true;}else if((node.nodeIndex+last)%first==0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var f=jQuery.expr[m[1]];if(typeof f!="string")f=jQuery.expr[m[1]][m[2]];f=eval("false||function(a,i){return "+f+"}");r=jQuery.grep(r,f,not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){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&&(!elem||n!=elem))r.push(n);}return r;}});jQuery.event={add:function(element,type,handler,data){if(jQuery.browser.msie&&element.setInterval!=undefined)element=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var parts=type.split(".");type=parts[0];handler.type=parts[1];var events=jQuery.data(element,"events")||jQuery.data(element,"events",{});var handle=jQuery.data(element,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered)return val;val=jQuery.event.handle.apply(element,arguments);return val;});var handlers=events[type];if(!handlers){handlers=events[type]={};if(element.addEventListener)element.addEventListener(type,handle,false);else
element.attachEvent("on"+type,handle);}handlers[handler.guid]=handler;this.global[type]=true;},guid:1,global:{},remove:function(element,type,handler){var events=jQuery.data(element,"events"),ret,index;if(typeof type=="string"){var parts=type.split(".");type=parts[0];}if(events){if(type&&type.type){handler=type.handler;type=type.type;}if(!type){for(type in events)this.remove(element,type);}else if(events[type]){if(handler)delete events[type][handler.guid];else
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(element.removeEventListener)element.removeEventListener(type,jQuery.data(element,"handle"),false);else
element.detachEvent("on"+type,jQuery.data(element,"handle"));ret=null;delete events[type];}}for(ret in events)break;if(!ret){jQuery.removeData(element,"events");jQuery.removeData(element,"handle");}}},trigger:function(type,data,element,donative,extra){data=jQuery.makeArray(data||[]);if(!element){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{var val,ret,fn=jQuery.isFunction(element[type]||null),evt=!data[0]||!data[0].preventDefault;if(evt)data.unshift(this.fix({type:type,target:element}));if(jQuery.isFunction(jQuery.data(element,"handle")))val=jQuery.data(element,"handle").apply(element,data);if(!fn&&element["on"+type]&&element["on"+type].apply(element,data)===false)val=false;if(evt)data.shift();if(extra&&extra.apply(element,data)===false)val=false;if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(element,'a')&&type=="click")){this.triggered=true;element[type]();}this.triggered=false;}return val;},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var c=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in c){args[0].handler=c[j];args[0].data=c[j].data;if(!parts[1]||c[j].type==parts[1]){var tmp=c[j].apply(this,args);if(val!==false)val=tmp;if(tmp===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return val;},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target&&event.srcElement)event.target=event.srcElement;if(jQuery.browser.safari&&event.target.nodeType==3)event.target=originalEvent.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 e=document.documentElement,b=document.body;event.pageX=event.clientX+(e&&e.scrollLeft||b.scrollLeft||0);event.pageY=event.clientY+(e&&e.scrollTop||b.scrollTop||0);}if(!event.which&&(event.charCode||event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(){var a=arguments;return this.click(function(e){this.lastToggle=0==this.lastToggle?1:0;e.preventDefault();return a[this.lastToggle].apply(this,[e])||false;});},hover:function(f,g){function handleHover(e){var p=e.relatedTarget;while(p&&p!=this)try{p=p.parentNode;}catch(e){p=this;};if(p==this)return false;return(e.type=="mouseover"?f:g).apply(this,[e]);}return this.mouseover(handleHover).mouseout(handleHover);},ready:function(f){bindReady();if(jQuery.isReady)f.apply(document,[jQuery]);else
jQuery.readyList.push(function(){return f.apply(this,[jQuery]);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}if(jQuery.browser.mozilla||jQuery.browser.opera)document.removeEventListener("DOMContentLoaded",jQuery.ready,false);if(!window.frames.length)jQuery(window).load(function(){jQuery("#__ie_init").remove();});}}});jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,o){jQuery.fn[o]=function(f){return f?this.bind(o,f):this.trigger(o);};});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(jQuery.browser.mozilla||jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);else if(jQuery.browser.msie){document.write("<scr"+"ipt id=__ie_init defer=true "+"src=//:><\/script>");var script=document.getElementById("__ie_init");if(script)script.onreadystatechange=function(){if(this.readyState!="complete")return;jQuery.ready();};script=null;}else if(jQuery.browser.safari)jQuery.safariTimer=setInterval(function(){if(document.readyState=="loaded"||document.readyState=="complete"){clearInterval(jQuery.safariTimer);jQuery.safariTimer=null;jQuery.ready();}},10);jQuery.event.add(window,"load",jQuery.ready);}jQuery.fn.extend({load:function(url,params,callback){if(jQuery.isFunction(url))return this.bind("load",url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);setTimeout(function(){self.each(callback,[res.responseText,status,res]);},13);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(i,val){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);};});var jsc=(new Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){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)){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:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null},lastModified:{},ajax:function(s){var jsonp,jsre=/=(\?|%3F)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);var q=s.url.indexOf("?");if(q>-1){s.data=(s.data?s.data+"&":"")+s.url.slice(q+1);s.url=s.url.slice(0,q);}if(s.dataType=="jsonp"){if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&s.data&&s.data.match(jsre)){jsonp="jsonp"+jsc++;s.data=s.data.replace(jsre,"="+jsonp);s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&s.type.toLowerCase()=="get")s.data=(s.data?s.data+"&":"")+"_="+(new Date()).getTime();if(s.data&&s.type.toLowerCase()=="get"){s.url+="?"+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if(!s.url.indexOf("http")&&s.dataType=="script"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(!jsonp&&(s.success||s.complete)){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return;}var requestDone=false;var xml=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async);if(s.data)xml.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");if(s.beforeSend)s.beforeSend(xml);if(s.global)jQuery.event.trigger("ajaxSend",[xml,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xml)&&"error"||s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xml.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
jQuery.handleError(s,xml,status);complete();if(s.async)xml=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xml){xml.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xml.send(s.data);}catch(e){jQuery.handleError(s,xml,null,e);}if(!s.async)onreadystatechange();return xml;function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xml,s]);}function complete(){if(s.complete)s.complete(xml,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}},handleError:function(s,xml,status,e){if(s.error)s.error(xml,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xml,s,e]);},active:0,httpSuccess:function(r){try{return!r.status&&location.protocol=="file:"||(r.status>=200&&r.status<300)||r.status==304||jQuery.browser.safari&&r.status==undefined;}catch(e){}return false;},httpNotModified:function(xml,url){try{var xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||xmlRes==jQuery.lastModified[url]||jQuery.browser.safari&&xml.status==undefined;}catch(e){}return false;},httpData:function(r,type){var ct=r.getResponseHeader("content-type");var xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0;var data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock?this.oldblock:"";if(jQuery.css(this,"display")=="none")this.style.display="block";}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");if(this.oldblock=="none")this.oldblock="block";this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var opt=jQuery.speed(speed,easing,callback);return this[opt.queue===false?"each":"queue"](function(){opt=jQuery.extend({},opt);var hidden=jQuery(this).is(":hidden"),self=this;for(var p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return jQuery.isFunction(opt.complete)&&opt.complete.apply(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}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(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]?)([\d.]+)(.*)$/),start=e.cur(true)||0;if(parts){end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=end+unit;start=(end/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;});},queue:function(type,fn){if(!fn){fn=type;type="fx";}if(!arguments.length)return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.apply(this);}});},stop:function(){var timers=jQuery.timers;return this.each(function(){for(var i=0;i<timers.length;i++)if(timers[i].elem==this)timers.splice(i--,1);}).dequeue();}});var queue=function(elem,type,array){if(!elem)return;var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[]);return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].apply(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;opt.old=opt.complete;opt.complete=function(){jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.apply(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.apply(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.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.curCSS(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.css(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=(new Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(){return self.step();}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timers.length==1){var timer=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length)clearInterval(timer);},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(){var t=(new Date()).getTime();if(t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=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;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done&&jQuery.isFunction(this.options.complete))this.options.complete.apply(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}};jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var absolute=jQuery.css(elem,"position")=="absolute",parent=elem.parentNode,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&!absolute&&parseInt(version)<522;if(elem.getBoundingClientRect){box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));if(msie){var border=jQuery("html").css("borderWidth");border=(border=="medium"||jQuery.boxModel&&parseInt(version)>=7)&&2||border;add(-border,-border);}}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&/^t[d|h]$/i.test(parent.tagName)||!safari2)border(offsetParent);if(safari2&&!absolute&&jQuery.css(offsetParent,"position")=="absolute")absolute=true;offsetParent=offsetParent.offsetParent;}while(parent.tagName&&/^body|html$/i.test(parent.tagName)){if(/^inline|table-row.*$/i.test(jQuery.css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&jQuery.css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if(safari&&absolute)add(-doc.body.offsetLeft,-doc.body.offsetTop);}results={top:top,left:left};}return results;function border(elem){add(jQuery.css(elem,"borderLeftWidth"),jQuery.css(elem,"borderTopWidth"));}function add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0;}};})();

/* Copyright (c) 2007 Paul Bakaus (paul.bakaus@googlemail.com) and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-08-17 13:14:11 -0500 (Fri, 17 Aug 2007) $
 * $Rev: 2759 $
 *
 * Version: 1.1.2
 *
 * Requires: jQuery 1.1.3+
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(9($){l e=$.1q.C,r=$.1q.r;$.1q.M({C:9(){3(!1[0])f();3(1[0]==p)3($.7.O||($.7.E&&U($.7.13)>11))6 n.19-(($(5).C()>n.19)?i():0);k 3($.7.E)6 n.19;k 6 $.I&&5.P.1E||5.o.1E;3(1[0]==5)6 1C.1y(($.I&&5.P.1w||5.o.1w),5.o.1u);6 e.1T(1,1P)},r:9(){3(!1[0])f();3(1[0]==p)3($.7.O||($.7.E&&U($.7.13)>11))6 n.1b-(($(5).r()>n.1b)?i():0);k 3($.7.E)6 n.1b;k 6 $.I&&5.P.1N||5.o.1N;3(1[0]==5)3($.7.1M){l a=n.1p;n.1a(27,n.1o);l b=n.1p;n.1a(a,n.1o);6 5.o.1c+b}k 6 1C.1y((($.I&&!$.7.E)&&5.P.1L||5.o.1L),5.o.1c);6 r.1T(1,1P)},19:9(){3(!1[0])f();6 1[0]==p||1[0]==5?1.C():1.14(\':N\')?1[0].1u-h(1,\'q\')-h(1,\'1I\'):1.C()+h(1,\'1h\')+h(1,\'1H\')},1b:9(){3(!1[0])f();6 1[0]==p||1[0]==5?1.r():1.14(\':N\')?1[0].1c-h(1,\'s\')-h(1,\'1F\'):1.r()+h(1,\'1v\')+h(1,\'1D\')},21:9(a){3(!1[0])f();a=$.M({A:w},a||{});6 1[0]==p||1[0]==5?1.C():1.14(\':N\')?1[0].1u+(a.A?(h(1,\'L\')+h(1,\'1x\')):0):1.C()+h(1,\'q\')+h(1,\'1I\')+h(1,\'1h\')+h(1,\'1H\')+(a.A?(h(1,\'L\')+h(1,\'1x\')):0)},1Y:9(a){3(!1[0])f();a=$.M({A:w},a||{});6 1[0]==p||1[0]==5?1.r():1.14(\':N\')?1[0].1c+(a.A?(h(1,\'K\')+h(1,\'1U\')):0):1.r()+h(1,\'s\')+h(1,\'1F\')+h(1,\'1v\')+h(1,\'1D\')+(a.A?(h(1,\'K\')+h(1,\'1U\')):0)},m:9(a){3(!1[0])f();3(a!=1S)6 1.1Q(9(){3(1==p||1==5)p.1a(a,$(p).u());k 1.m=a});3(1[0]==p||1[0]==5)6 n.1p||$.I&&5.P.m||5.o.m;6 1[0].m},u:9(a){3(!1[0])f();3(a!=1S)6 1.1Q(9(){3(1==p||1==5)p.1a($(p).m(),a);k 1.u=a});3(1[0]==p||1[0]==5)6 n.1o||$.I&&5.P.u||5.o.u;6 1[0].u},12:9(a){6 1.1O({A:w,J:w,v:1.z()},a)},1O:9(b,c){3(!1[0])f();l x=0,y=0,H=0,G=0,8=1[0],4=1[0],T,10,Z=$.D(8,\'12\'),F=$.7.1M,S=$.7.26,18=$.7.O,1n=$.7.E,R=$.7.E&&U($.7.13)>11,1m=w,1l=w,b=$.M({A:Q,15:w,1k:w,J:Q,1K:w,v:5.o},b||{});3(b.1K)6 1.1J(b,c);3(b.v.1j)b.v=b.v[0];3(8.B==\'Y\'){x=8.V;y=8.X;3(F){x+=h(8,\'K\')+(h(8,\'s\')*2);y+=h(8,\'L\')+(h(8,\'q\')*2)}k 3(18){x+=h(8,\'K\');y+=h(8,\'L\')}k 3((S&&1g.I)){x+=h(8,\'s\');y+=h(8,\'q\')}k 3(R){x+=h(8,\'K\')+h(8,\'s\');y+=h(8,\'L\')+h(8,\'q\')}}k{17{10=$.D(4,\'12\');x+=4.V;y+=4.X;3((F&&!4.B.1G(/^t[d|h]$/i))||S||R){x+=h(4,\'s\');y+=h(4,\'q\');3(F&&10==\'1i\')1m=Q;3(S&&10==\'25\')1l=Q}T=4.z||5.o;3(b.J||F){17{3(b.J){H+=4.m;G+=4.u}3(18&&($.D(4,\'24\')||\'\').1G(/23-22|20/)){H=H-((4.m==4.V)?4.m:0);G=G-((4.u==4.X)?4.u:0)}3(F&&4!=8&&$.D(4,\'1e\')!=\'N\'){x+=h(4,\'s\');y+=h(4,\'q\')}4=4.1B}W(4!=T)}4=T;3(4==b.v&&!(4.B==\'Y\'||4.B==\'1d\')){3(F&&4!=8&&$.D(4,\'1e\')!=\'N\'){x+=h(4,\'s\');y+=h(4,\'q\')}3(((1n&&!R)||18)&&10!=\'1r\'){x-=h(T,\'s\');y-=h(T,\'q\')}1A}3(4.B==\'Y\'||4.B==\'1d\'){3(((1n&&!R)||(S&&$.I))&&Z!=\'1i\'&&Z!=\'1z\'){x+=h(4,\'K\');y+=h(4,\'L\')}3(R||(F&&!1m&&Z!=\'1z\')||(S&&Z==\'1r\'&&!1l)){x+=h(4,\'s\');y+=h(4,\'q\')}1A}}W(4)}l a=j(8,b,x,y,H,G);3(c){$.M(c,a);6 1}k{6 a}},1J:9(b,c){3(!1[0])f();l x=0,y=0,H=0,G=0,4=1[0],z,b=$.M({A:Q,15:w,1k:w,J:Q,v:5.o},b||{});3(b.v.1j)b.v=b.v[0];17{x+=4.V;y+=4.X;z=4.z||5.o;3(b.J){17{H+=4.m;G+=4.u;4=4.1B}W(4!=z)}4=z}W(4&&4.B!=\'Y\'&&4.B!=\'1d\'&&4!=b.v);l a=j(1[0],b,x,y,H,G);3(c){$.M(c,a);6 1}k{6 a}},z:9(){3(!1[0])f();l a=1[0].z;W(a&&(a.B!=\'Y\'&&$.D(a,\'12\')==\'1r\'))a=a.z;6 $(a)}});l f=9(){1Z"1X: 1g 1W 14 1V";};l h=9(a,b){6 U($.D(a.1j?a[0]:a,b))||0};l j=9(a,b,x,y,d,c){3(!b.A){x-=h(a,\'K\');y-=h(a,\'L\')}3(b.15&&(($.7.E&&U($.7.13)<11)||$.7.O)){x+=h(a,\'s\');y+=h(a,\'q\')}k 3(!b.15&&!(($.7.E&&U($.7.13)<11)||$.7.O)){x-=h(a,\'s\');y-=h(a,\'q\')}3(b.1k){x+=h(a,\'1v\');y+=h(a,\'1h\')}3(b.J&&(!$.7.O||a.V!=a.m&&a.X!=a.m)){d-=a.m;c-=a.u}6 b.J?{1f:y-c,1t:x-d,u:c,m:d}:{1f:y,1t:x}};l g=0;l i=9(){3(!g){l a=$(\'<1s>\').D({r:16,C:16,1e:\'2d\',12:\'1i\',1f:-1R,1t:-1R}).2c(\'o\');g=16-a.2b(\'<1s>\').2a(\'1s\').D({r:\'16%\',C:29}).r();a.28()}6 g}})(1g);',62,138,'|this||if|parent|document|return|browser|elem|function|||||||||||else|var|scrollLeft|self|body|window|borderTopWidth|width|borderLeftWidth||scrollTop|relativeTo|false|||offsetParent|margin|tagName|height|css|safari|mo|st|sl|boxModel|scroll|marginLeft|marginTop|extend|visible|opera|documentElement|true|sf3|ie|op|parseInt|offsetLeft|while|offsetTop|BODY|elemPos|parPos|520|position|version|is|border|100|do|oa|innerHeight|scrollTo|innerWidth|offsetWidth|HTML|overflow|top|jQuery|paddingTop|absolute|jquery|padding|relparent|absparent|sf|pageYOffset|pageXOffset|fn|static|div|left|offsetHeight|paddingLeft|scrollHeight|marginBottom|max|fixed|break|parentNode|Math|paddingRight|clientHeight|borderRightWidth|match|paddingBottom|borderBottomWidth|offsetLite|lite|scrollWidth|mozilla|clientWidth|offset|arguments|each|1000|undefined|apply|marginRight|empty|collection|Dimensions|outerWidth|throw|inline|outerHeight|row|table|display|relative|msie|99999999|remove|200|find|append|appendTo|auto'.split('|'),0,{}));

window.jqCw = jQuery.noConflict(true);
//framework.js
/* :framework */
if(!window["goodold"])
    window.goodold={};
if(!goodold.dataSet)
    goodold.dataSet = function(data){return {"Tables":data};};
if(!goodold.dataTable)
{
    goodold.dataTable = function(data)
    {
        if(data && data.fields && data.data)
        {
            for(var r=0; r<data.data.length; r++)
            {
                var row=data.data[r];
                for(var i=0; i<data.fields.length; i++)
                    row[data.fields[i]]=row[i];
            }
            return {'Columns': data.fields, 'Rows': data.data};
        }
        return null;
    };
}

if(window["jqCwConf"])
{
    var dayMilli=(1000*60*60*24);
    var conf = window.jqCwConf;
    if(!conf)
        conf={};
    if(!conf.monthNames)
        conf.monthNames=[
            "Januari","Februari","Mars","April","Maj","Juni",
            "Juli","Augusti","September","Oktober","November","December"];
    if(!conf.dayNames)
        conf.dayNames=[
            "S&ouml;ndag","M&aring;ndag","Tisdag","Onsdag","Torsdag","Fredag","L&ouml;rdag","S&ouml;ndag"];
    
    window.cwFunctions =
    {
        widgets: {},
        callbacks: {},
        selectionCallbacks: [],
        browseCallbacks: [],
        loadedCss: {},
        
        loadCss: function(url)
        {
            if(!this.loadedCss[url])
            {
                jqCw("head").append("<link href='" + url + "' type='text/css' rel='stylesheet' />");
                this.loadedCss[url]=true;
            }
        },
        
        addWidget: function(name, constructor)
        {
            this.widgets[name]=constructor;
        },
        
        addDateSelectionCallback: function(obj, func)
        {
            if(obj && func)
                this.selectionCallbacks.push(this.hitch(obj,func));
            else if(obj)
                this.selectionCallbacks.push(obj);
        },
        
        addDateBrowseCallback: function(obj, func)
        {
            if(obj && func)
                this.browseCallbacks.push(this.hitch(obj,func));
            else if(obj)
                this.browseCallbacks.push(obj);
        },
        
        dateSelected: function(date, interval, expand)
        {
            for(var i=0; i<this.selectionCallbacks.length; i++)
                if(this.isFunction(this.selectionCallbacks[i]))
                    if(this.selectionCallbacks[i](date, interval, expand))
                        return;
            
            var query=this.resultUrl(date, interval, expand);
            if(query)
                this.goTo(query);
        },
        
        dateBrowse: function(date, interval, expand)
        {
            for(var i=0; i<this.browseCallbacks.length; i++)
                if(this.isFunction(this.browseCallbacks[i]))
                    if(this.browseCallbacks[i](date, interval, expand))
                        return;
        },
        
        processHtml: function(html, params)
		{
			if(params.stripTags || params.truncate)
				html=html.replace(/<[^>]+>/g,"");
				
			if(params.truncate && html.length>params.truncate)
			{
				html=html.substr(0,params.truncate)+"...";
				html=html.replace(/\s+[^\s]*\s*\.{3}$/,"...");
			}
			
			return html;
        },
        
        resultUrl: function(date, interval, expand)
        {
            if(conf.result_url)
            {
                var query=conf.result_url;
                if(conf.result_url.indexOf('?')>=0)
                    query+="&";
                else
                    query+="?";
                query+="date="+this.toIso8601Date(date)+"&interval=" + interval + (expand?"&expand="+expand:"");
                
                return query;
            }
        },
        
        leadingZeroPad: function(number,minlen)
        {
            if(!minlen)
                minlen=2;
            var str=number.toString();
            while(str.length<minlen)
                str="0"+str;
            return str; 
        },
        
        isIe6: function()
        {
            return jqCw.browser.msie && jqCw.browser.version.search(/6\..*/)==0;
        },
        
        goTo: function(url)
        {
            if(this.isIe6())
                setTimeout(function(){window.location.href=url;},50);
            else
                window.location.href=url;
        },
        
        toIso8601Date: function(date)
        {
            var p=this.leadingZeroPad;
            return date.getFullYear() + "-" + p(date.getMonth()+1) + "-" + p(date.getDate());
        },
        
        toIso8601Time: function(date)
        {
            var p=this.leadingZeroPad;
            return p(date.getHours()) + ":" + p(date.getMinutes())  + ":" + p(date.getSeconds());
        },
    
        serializeForUrl: function(data)
        {
            if(data && data["getTime"]!=null)
            {
                var p=this.leadingZeroPad;
                return this.toIso8601Date(data) + " " + this.toIso8601Time(data);
            }
            return data;
        },
        
        permaStopWords:
        {
            'och':true,
            'med':true,
            'the':true,
            'of':true,
            'an':true,
            'a':true,
            'av':true,
            'ar':true,
            'ett':true,
            'en':true,
            'eller':true,
            'till':true,
            'i':true,
            'fran':true,
            'man':true,
            'om':true,
            'pa':true
        },
        
        ungunkRegex: /[^a-z0-9]{1,}/g,
        
        sanitizeUri: function(description)
        {
            if(!description || !this.isString(description) || description.length==0)
                return "";

	        description=description.toLowerCase();
            description=description.replace(/\u00F6/g,"o");
            description=description.replace(/\u00E5/g,"a");
            description=description.replace(/\u00E4/g,"a");
            description=description.replace(/\u00E9/g,"e");
            
            var parts=description.replace(this.ungunkRegex, " ").split(" ");
            var selected=new Array();
            for(var i=0; i<parts.length && selected.length<5; i++)
                if(!this.permaStopWords[parts[i]] && parts[i].length>0)
                    selected.push(parts[i]);
            
            return selected.join("-");
        },
        
        /* Functions from the dojo toolkit */
        isString: function (it) 
        {
	        return (typeof it == "string" || it instanceof String);
        },
        
        isFunction: function (it) 
        {
	        return (it instanceof Function || typeof it == "function");
        },
        
        hitch: function (thisObject, method) 
        {
	        var args = [];
	        for (var x = 2; x < arguments.length; x++) args.push(arguments[x]);
	        var fcn = (cwFunctions.isString(method) ? thisObject[method] : method) || function () {};
	        return function () {
		        var ta = args.concat([]);
		        for (var x = 0; x < arguments.length; x++) ta.push(arguments[x]);
		        return fcn.apply(thisObject, ta);
	        };
        },
        
        curry: function(thisObj, func /* args ... */)
        {
	        var outerArgs = [];
	        thisObj = thisObj||dj_global;
	        if(cwFunctions.isString(func)) func = thisObj[func];
	        for(var x=2; x<arguments.length; x++) outerArgs.push(arguments[x]);
	        
	        var ecount = (func["__preJoinArity"]||func.length) - outerArgs.length;
	        
	        function gather(nextArgs, innerArgs, expected){
		        var texpected = expected;
		        var totalArgs = innerArgs.slice(0); // copy
		        for(var x=0; x<nextArgs.length; x++) totalArgs.push(nextArgs[x]);
		        expected = expected-nextArgs.length;
		        if(expected<=0){
			        var res = func.apply(thisObj, totalArgs);
			        expected = texpected;
			        return res;
		        }else{
			        return function(){ return gather(arguments,totalArgs,expected); };
		        }
	        }
	        return gather([], outerArgs, ecount);
        },
        
        setIso8601: function(/*Date*/dateObject, /*String*/formattedString){
	        // summary: sets a Date object based on an ISO 8601 formatted string (uses date and time)
	        var comps = (formattedString.indexOf("T") == -1) ? formattedString.split(" ") : formattedString.split("T");
	        dateObject = this.setIso8601Date(dateObject, comps[0]);
	        if(comps.length == 2){ dateObject = this.setIso8601Time(dateObject, comps[1]); }
	        return dateObject; /* Date or null */
        },

        fromIso8601: function(/*String*/formattedString){
	        // summary: returns a Date object based on an ISO 8601 formatted string (uses date and time)
	        return this.setIso8601(new Date(0, 0), formattedString);
        },

        setIso8601Date: function(/*String*/dateObject, /*String*/formattedString){
	        // summary: sets a Date object based on an ISO 8601 formatted string (date only)
	        var regexp = "^([0-9]{4})((-?([0-9]{2})(-?([0-9]{2}))?)|" +
			        "(-?([0-9]{3}))|(-?W([0-9]{2})(-?([1-7]))?))?$";
	        var d = formattedString.match(new RegExp(regexp));
	        if(!d){
		        return null; // null
	        }
	        var year = d[1];
	        var month = d[4];
	        var date = d[6];
	        var dayofyear = d[8];
	        var week = d[10];
	        var dayofweek = d[12] ? d[12] : 1;

	        dateObject.setFullYear(year);

	        if(dayofyear){
		        dateObject.setMonth(0);
		        dateObject.setDate(Number(dayofyear));
	        }
	        else if(week){
		        dateObject.setMonth(0);
		        dateObject.setDate(1);
		        var gd = dateObject.getDay();
		        var day =  gd ? gd : 7;
		        var offset = Number(dayofweek) + (7 * Number(week));
        		
		        if(day <= 4){ dateObject.setDate(offset + 1 - day); }
		        else{ dateObject.setDate(offset + 8 - day); }
	        } else{
		        if(month){
			        dateObject.setDate(1);
			        dateObject.setMonth(month - 1); 
		        }
		        if(date){ dateObject.setDate(date); }
	        }
        	
	        return dateObject; // Date
        },
        
        arrayContains: function(array, needle)
        {
			for(var i=0; i<array.length; i++)
			{
				if(array[i]==needle)
					return true;
			}
			return false;
        },

        fromIso8601Date: function(/*String*/formattedString){
	        // summary: returns a Date object based on an ISO 8601 formatted string (date only)
	        return this.setIso8601Date(new Date(0, 0), formattedString);
        },

        setIso8601Time: function(/*Date*/dateObject, /*String*/formattedString){
	        // summary: sets a Date object based on an ISO 8601 formatted string (time only)

	        // first strip timezone info from the end
	        var timezone = "Z|(([-+])([0-9]{2})(:?([0-9]{2}))?)$";
	        var d = formattedString.match(new RegExp(timezone));

	        var offset = 0; // local time if no tz info
	        if(d){
		        if(d[0] != 'Z'){
			        offset = (Number(d[3]) * 60) + Number(d[5]);
			        offset *= ((d[2] == '-') ? 1 : -1);
		        }
		        offset -= dateObject.getTimezoneOffset();
		        formattedString = formattedString.substr(0, formattedString.length - d[0].length);
	        }

	        // then work out the time
	        var regexp = "^([0-9]{2})(:?([0-9]{2})(:?([0-9]{2})(\.([0-9]+))?)?)?$";
	        d = formattedString.match(new RegExp(regexp));
	        if(!d){
		        dojo.debug("invalid time string: " + formattedString);
		        return null; // null
	        }
	        var hours = d[1];
	        var mins = Number((d[3]) ? d[3] : 0);
	        var secs = (d[5]) ? d[5] : 0;
	        var ms = d[7] ? (Number("0." + d[7]) * 1000) : 0;

	        dateObject.setHours(hours);
	        dateObject.setMinutes(mins);
	        dateObject.setSeconds(secs);
	        dateObject.setMilliseconds(ms);

	        if(offset !== 0){
		        dateObject.setTime(dateObject.getTime() + offset * 60000);
	        }	
	        return dateObject; // Date
        },

        fromIso8601Time: function(/*String*/formattedString){
	        // summary: returns a Date object based on an ISO 8601 formatted string (date only)
	        return this.setIso8601Time(new Date(0, 0), formattedString);
        },
        //End of dojo functions
        
        dayOffset: function(a, b)
        {
            var az=new Date(a.getTime());
            var bz=new Date(b.getTime());
            az.setHours(0,0,0,0);
            bz.setHours(0,0,0,0);
            return Math.round((bz-az)/dayMilli);
        },
        
        firstInMonth: function(date)
        {
            var first=new Date(date.getTime());
            first.setDate(1);
            return first;
        },
        
        lastInMonth: function(date)
        {
            var last=new Date(date.getTime());
            last.setDate(28);
            
            while(date.getMonth()==last.getMonth())
                last.setTime(last.getTime()+dayMilli);
            last.setTime(last.getTime()-dayMilli);
            return last;
        },
        
        getPreferredEncoding: function()
        {
            if(jqCw.browser.safari && jqCw.browser.version.search(/^[21]\..*/))
                return "latin1";
            if(conf.default_encoding)
                return conf.default_encoding;
            return "utf-8";
        },
    
        fetchData: function(method, params, obj, func)
        {
            var url = conf.provider + "ajax.ashx?__execute=true&__method=" + method;
            var key = Math.floor(Math.random()*100000) + "_" + new Date().getTime();
            var callback = null;
            var enc = this.getPreferredEncoding();
            
            if(obj && func)
                callback = cwFunctions.curry(obj, func, { "method": method, "params": params });
            else if(this.isFunction(obj))
                callback = cwFunctions.curry(obj, { "method": method, "params": params });
            
            url += "&__callback=cwFunctions.callbacks['" + key + "']";
            url += "&__encoding=" + enc;
            for(var k in params)
                url+="&_" + k + "=" + escape(this.serializeForUrl(params[k]));
            
            this.callbacks[key]=function(data)
            {
                callback(data);
                window.cwFunctions.callbacks[key]=null;
            };

			setTimeout(function(){jqCw.getScript(url);},10);
        }
    };
    
    jqCw(document).ready(function()
    {
        if(!conf.widgets)
            conf.widgets=[];
        
        if(conf.calendar)
            conf.widgets.push({ name: "calendar", query: conf.calendar });
        
        if(conf.result)
            conf.widgets.push({ name: "result", query: conf.result });
        
        if(conf.day_display)
            conf.widgets.push({ name: "day_display", query: conf.day_display });
        
        for(var i=0; i<conf.widgets.length; i++)
        {
            var constructor=window.cwFunctions.widgets[conf.widgets[i].name];
            if(constructor)
            {
                var res = jqCw(conf.widgets[i].query);
                var params = conf.widgets[i]["parameters"];
                if(!params) params = {};
                for(var j=0; j<res.length; j++) new constructor(res[j], params);
            }
        }
    });
}
//ufo.js
/*	Unobtrusive Flash Objects (UFO) v3.22 <http://www.bobbyvandersluis.com/ufo/>
	Copyright 2005-2007 Bobby van der Sluis
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/
var UFO = {
	req: ["movie", "width", "height", "majorversion", "build"],
	opt: ["play", "loop", "menu", "quality", "scale", "salign", "wmode", "bgcolor", "base", "flashvars", "devicefont", "allowscriptaccess", "seamlesstabbing", "allowfullscreen", "allownetworking"],
	optAtt: ["id", "name", "align"],
	optExc: ["swliveconnect"],
	ximovie: "ufo.swf",
	xiwidth: "215",
	xiheight: "138",
	ua: navigator.userAgent.toLowerCase(),
	pluginType: "",
	fv: [0,0],
	foList: [],
		
	create: function(FO, id) {
		if (!UFO.uaHas("w3cdom") || UFO.uaHas("ieMac")) return;
		UFO.getFlashVersion();
		UFO.foList[id] = UFO.updateFO(FO);
		UFO.createCSS("#" + id, "visibility:hidden;");
		UFO.domLoad(id);
	},

	updateFO: function(FO) {
		if (typeof FO.xi != "undefined" && FO.xi == "true") {
			if (typeof FO.ximovie == "undefined") FO.ximovie = UFO.ximovie;
			if (typeof FO.xiwidth == "undefined") FO.xiwidth = UFO.xiwidth;
			if (typeof FO.xiheight == "undefined") FO.xiheight = UFO.xiheight;
		}
		FO.mainCalled = false;
		return FO;
	},

	domLoad: function(id) {
		var _t = setInterval(function() {
			if ((document.getElementsByTagName("body")[0] != null || document.body != null) && document.getElementById(id) != null) {
				UFO.main(id);
				clearInterval(_t);
			}
		}, 250);
		if (typeof document.addEventListener != "undefined") {
			document.addEventListener("DOMContentLoaded", function() { UFO.main(id); clearInterval(_t); } , null); // Gecko, Opera 9+
		}
	},

	main: function(id) {
		var _fo = UFO.foList[id];
		if (_fo.mainCalled) return;
		UFO.foList[id].mainCalled = true;
		document.getElementById(id).style.visibility = "hidden";
		if (UFO.hasRequired(id)) {
			if (UFO.hasFlashVersion(parseInt(_fo.majorversion, 10), parseInt(_fo.build, 10))) {
				if (typeof _fo.setcontainercss != "undefined" && _fo.setcontainercss == "true") UFO.setContainerCSS(id);
				UFO.writeSWF(id);
			}
			else if (_fo.xi == "true" && UFO.hasFlashVersion(6, 65)) {
				UFO.createDialog(id);
			}
		}
		document.getElementById(id).style.visibility = "visible";
	},
	
	createCSS: function(selector, declaration) {
		var _h = document.getElementsByTagName("head")[0]; 
		var _s = UFO.createElement("style");
		if (!UFO.uaHas("ieWin")) _s.appendChild(document.createTextNode(selector + " {" + declaration + "}")); // bugs in IE/Win
		_s.setAttribute("type", "text/css");
		_s.setAttribute("media", "screen"); 
		_h.appendChild(_s);
		if (UFO.uaHas("ieWin") && document.styleSheets && document.styleSheets.length > 0) {
			var _ls = document.styleSheets[document.styleSheets.length - 1];
			if (typeof _ls.addRule == "object") _ls.addRule(selector, declaration);
		}
	},
	
	setContainerCSS: function(id) {
		var _fo = UFO.foList[id];
		var _w = /%/.test(_fo.width) ? "" : "px";
		var _h = /%/.test(_fo.height) ? "" : "px";
		UFO.createCSS("#" + id, "width:" + _fo.width + _w +"; height:" + _fo.height + _h +";");
		if (_fo.width == "100%") {
			UFO.createCSS("body", "margin-left:0; margin-right:0; padding-left:0; padding-right:0;");
		}
		if (_fo.height == "100%") {
			UFO.createCSS("html", "height:100%; overflow:hidden;");
			UFO.createCSS("body", "margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0; height:100%;");
		}
	},

	createElement: function(el) {
		return (UFO.uaHas("xml") && typeof document.createElementNS != "undefined") ?  document.createElementNS("http://www.w3.org/1999/xhtml", el) : document.createElement(el);
	},

	createObjParam: function(el, aName, aValue) {
		var _p = UFO.createElement("param");
		_p.setAttribute("name", aName);	
		_p.setAttribute("value", aValue);
		el.appendChild(_p);
	},

	uaHas: function(ft) {
		var _u = UFO.ua;
		switch(ft) {
			case "w3cdom":
				return (typeof document.getElementById != "undefined" && typeof document.getElementsByTagName != "undefined" && (typeof document.createElement != "undefined" || typeof document.createElementNS != "undefined"));
			case "xml":
				var _m = document.getElementsByTagName("meta");
				var _l = _m.length;
				for (var i = 0; i < _l; i++) {
					if (/content-type/i.test(_m[i].getAttribute("http-equiv")) && /xml/i.test(_m[i].getAttribute("content"))) return true;
				}
				return false;
			case "ieMac":
				return /msie/.test(_u) && !/opera/.test(_u) && /mac/.test(_u);
			case "ieWin":
				return /msie/.test(_u) && !/opera/.test(_u) && /win/.test(_u);
			case "gecko":
				return /gecko/.test(_u) && !/applewebkit/.test(_u);
			case "opera":
				return /opera/.test(_u);
			case "safari":
				return /applewebkit/.test(_u);
			default:
				return false;
		}
	},
	
	getFlashVersion: function() {
		if (UFO.fv[0] != 0) return;  
		if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") {
			UFO.pluginType = "npapi";
			var _d = navigator.plugins["Shockwave Flash"].description;
			if (typeof _d != "undefined") {
				_d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
				var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10);
				var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
				UFO.fv = [_m, _r];
			}
		}
		else if (window.ActiveXObject) {
			UFO.pluginType = "ax";
			try { // avoid fp 6 crashes
				var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
			}
			catch(e) {
				try { 
					var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
					UFO.fv = [6, 0];
					_a.AllowScriptAccess = "always"; // throws if fp < 6.47 
				}
				catch(e) {
					if (UFO.fv[0] == 6) return;
				}
				try {
					var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
				}
				catch(e) {}
			}
			if (typeof _a == "object") {
				var _d = _a.GetVariable("$version"); // bugs in fp 6.21/6.23
				if (typeof _d != "undefined") {
					_d = _d.replace(/^\S+\s+(.*)$/, "$1").split(",");
					UFO.fv = [parseInt(_d[0], 10), parseInt(_d[2], 10)];
				}
			}
		}
	},

	hasRequired: function(id) {
		var _l = UFO.req.length;
		for (var i = 0; i < _l; i++) {
			if (typeof UFO.foList[id][UFO.req[i]] == "undefined") return false;
		}
		return true;
	},
	
	hasFlashVersion: function(major, release) {
		return (UFO.fv[0] > major || (UFO.fv[0] == major && UFO.fv[1] >= release)) ? true : false;
	},

	writeSWF: function(id) {
		var _fo = UFO.foList[id];
		var _e = document.getElementById(id);
		if (UFO.pluginType == "npapi") {
			if (UFO.uaHas("gecko") || UFO.uaHas("xml")) {
				while(_e.hasChildNodes()) {
					_e.removeChild(_e.firstChild);
				}
				var _obj = UFO.createElement("object");
				_obj.setAttribute("type", "application/x-shockwave-flash");
				_obj.setAttribute("data", _fo.movie);
				_obj.setAttribute("width", _fo.width);
				_obj.setAttribute("height", _fo.height);
				var _l = UFO.optAtt.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[UFO.optAtt[i]] != "undefined") _obj.setAttribute(UFO.optAtt[i], _fo[UFO.optAtt[i]]);
				}
				var _o = UFO.opt.concat(UFO.optExc);
				var _l = _o.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[_o[i]] != "undefined") UFO.createObjParam(_obj, _o[i], _fo[_o[i]]);
				}
				_e.appendChild(_obj);
			}
			else {
				var _emb = "";
				var _o = UFO.opt.concat(UFO.optAtt).concat(UFO.optExc);
				var _l = _o.length;
				for (var i = 0; i < _l; i++) {
					if (typeof _fo[_o[i]] != "undefined") _emb += ' ' + _o[i] + '="' + _fo[_o[i]] + '"';
				}
				_e.innerHTML = '<embed type="application/x-shockwave-flash" src="' + _fo.movie + '" width="' + _fo.width + '" height="' + _fo.height + '" pluginspage="http://www.macromedia.com/go/getflashplayer"' + _emb + '></embed>';
			}
		}
		else if (UFO.pluginType == "ax") {
			var _objAtt = "";
			var _l = UFO.optAtt.length;
			for (var i = 0; i < _l; i++) {
				if (typeof _fo[UFO.optAtt[i]] != "undefined") _objAtt += ' ' + UFO.optAtt[i] + '="' + _fo[UFO.optAtt[i]] + '"';
			}
			var _objPar = "";
			var _l = UFO.opt.length;
			for (var i = 0; i < _l; i++) {
				if (typeof _fo[UFO.opt[i]] != "undefined") _objPar += '<param name="' + UFO.opt[i] + '" value="' + _fo[UFO.opt[i]] + '" />';
			}
			var _p = window.location.protocol == "https:" ? "https:" : "http:";
			_e.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + _objAtt + ' width="' + _fo.width + '" height="' + _fo.height + '" codebase="' + _p + '//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + _fo.majorversion + ',0,' + _fo.build + ',0"><param name="movie" value="' + _fo.movie + '" />' + _objPar + '</object>';
		}
	},
		
	createDialog: function(id) {
		var _fo = UFO.foList[id];
		UFO.createCSS("html", "height:100%; overflow:hidden;");
		UFO.createCSS("body", "height:100%; overflow:hidden;");
		UFO.createCSS("#xi-con", "position:absolute; left:0; top:0; z-index:1000; width:100%; height:100%; background-color:#fff; filter:alpha(opacity:75); opacity:0.75;");
		UFO.createCSS("#xi-dia", "position:absolute; left:50%; top:50%; margin-left: -" + Math.round(parseInt(_fo.xiwidth, 10) / 2) + "px; margin-top: -" + Math.round(parseInt(_fo.xiheight, 10) / 2) + "px; width:" + _fo.xiwidth + "px; height:" + _fo.xiheight + "px;");
		var _b = document.getElementsByTagName("body")[0];
		var _c = UFO.createElement("div");
		_c.setAttribute("id", "xi-con");
		var _d = UFO.createElement("div");
		_d.setAttribute("id", "xi-dia");
		_c.appendChild(_d);
		_b.appendChild(_c);
		var _mmu = window.location;
		if (UFO.uaHas("xml") && UFO.uaHas("safari")) {
			var _mmd = document.getElementsByTagName("title")[0].firstChild.nodeValue = document.getElementsByTagName("title")[0].firstChild.nodeValue.slice(0, 47) + " - Flash Player Installation";
		}
		else {
			var _mmd = document.title = document.title.slice(0, 47) + " - Flash Player Installation";
		}
		var _mmp = UFO.pluginType == "ax" ? "ActiveX" : "PlugIn";
		var _uc = typeof _fo.xiurlcancel != "undefined" ? "&xiUrlCancel=" + _fo.xiurlcancel : "";
		var _uf = typeof _fo.xiurlfailed != "undefined" ? "&xiUrlFailed=" + _fo.xiurlfailed : "";
		UFO.foList["xi-dia"] = { movie:_fo.ximovie, width:_fo.xiwidth, height:_fo.xiheight, majorversion:"6", build:"65", flashvars:"MMredirectURL=" + _mmu + "&MMplayerType=" + _mmp + "&MMdoctitle=" + _mmd + _uc + _uf };
		UFO.writeSWF("xi-dia");
	},

	expressInstallCallback: function() {
		var _b = document.getElementsByTagName("body")[0];
		var _c = document.getElementById("xi-con");
		_b.removeChild(_c);
		UFO.createCSS("body", "height:auto; overflow:auto;");
		UFO.createCSS("html", "height:auto; overflow:auto;");
	},

	cleanupIELeaks: function() {
		var _o = document.getElementsByTagName("object");
		var _l = _o.length
		for (var i = 0; i < _l; i++) {
			_o[i].style.display = "none";
			for (var x in _o[i]) {
				if (typeof _o[i][x] == "function") {
					_o[i][x] = null;
				}
			}
		}
	}

};

if (typeof window.attachEvent != "undefined" && UFO.uaHas("ieWin")) {
	window.attachEvent("onunload", UFO.cleanupIELeaks);
}
//widgets/*.js
if(window["cwFunctions"])
window.cwFunctions.addWidget("calendar", function(domNode, params)
{
    this.day_cells = [];
    this.shownDate = new Date();
    this.selectedDate = new Date();
    var dayMilli=(1000*60*60*24);
        
    var paramRegex=/date=(\d{10,})/;
    var res=paramRegex.exec(window.location.href);
    if(res)
    {
      this.shownDate = new Date(parseInt(res[1],10));
      this.selectedDate = new Date(parseInt(res[1],10));
    }
    this.params=params;
    
    if(params.helperCalendar)
    {
        this.showPopup = function()
        {
            var val=this.textField.val();
            if(val=="" || !cwFunctions.fromIso8601Date(val))
            {
                val=cwFunctions.toIso8601Date(new Date());
                this.textField.val(val);
            }
            
            this.shownDate = cwFunctions.fromIso8601Date(val);
            this.selectedDate = cwFunctions.fromIso8601Date(val);
            this.updateCalendar();
            
            var offset = this.textField.position();
            
            var width=this.textField.width();
            domNode.css("position","absolute");
            domNode.css("top",(offset.top) + "px");
            domNode.css("left",(offset.left + width) + "px");
            domNode.show();
        };
    
        if(!params.pickerLinkContent)
            params.pickerLinkContent="V&auml;lj datum";
    
        this.textField=jqCw(domNode);
        this.textField.after("<a class='ChooseDate' title='V&auml;lj datum' href='javascript://V&auml;lj datum'>" + params.pickerLinkContent + "</a><div class='PopupDatePicker'></div>");
        
        var chooseLink = this.textField.next("a.ChooseDate");
        chooseLink.click(cwFunctions.hitch(this, "showPopup"));
        
        domNode = chooseLink.next("div.PopupDatePicker");
        domNode.hide();
        
        var val=this.textField.val();
        if(val=="" || !cwFunctions.fromIso8601Date(val))
        {
            val=cwFunctions.toIso8601Date(new Date());
            this.textField.val(val);
        }
        this.shownDate = cwFunctions.fromIso8601Date(val);
        this.selectedDate = cwFunctions.fromIso8601Date(val);
    }
    
    if(params.sync)
    {
        this.syncWith=jqCw(params.sync["with"]);
        if(this.syncWith.length>0)
        {
            if(!params.sync.offset)
                params.sync.offset=0;
                
            this.keepInSync = function()
            {
                var thisDate=cwFunctions.fromIso8601Date(this.textField.val());
                var thatDate=cwFunctions.fromIso8601Date(this.syncWith.val());
                
                if(!thisDate || !thatDate)
                    return;
                    
                var offset = this.params.sync.offset * 1000 * 60 * 60 * 24;
                thisDate=thisDate.getTime();
                thatDate=thatDate.getTime();
                
                if(this.params.sync.direction=="before" && !(thisDate + offset <= thatDate))
                    this.textField.val(cwFunctions.toIso8601Date(new Date(thatDate-offset)));
                else if(this.params.sync.direction=="after" && !(thisDate - offset >= thatDate))
                    this.textField.val(cwFunctions.toIso8601Date(new Date(thatDate+offset)));
            };
            
            this.syncWith.change(cwFunctions.hitch(this, "keepInSync"));
        }
    }
    
    this.calculateFirstDate = function(date)
    {
      var firstDate=new Date();
      firstDate.setTime(date.getTime());
      firstDate.setDate(1);
      while(firstDate.getDay()!=1)
        firstDate.setTime(firstDate.getTime()-dayMilli);
      return firstDate;
    };
    
    this.showPreviousMonth = function()
    {
      var prev=new Date(this.shownDate.getTime());
      while(prev.getMonth()==this.shownDate.getMonth())
        prev.setTime(prev.getTime()-dayMilli*10); 
      this.shownDate=prev;
      this.updateCalendar(true);
    };
    
    this.showNextMonth = function()
    {
      var next=new Date(this.shownDate.getTime());
      while(next.getMonth()==this.shownDate.getMonth())
        next.setTime(next.getTime()+dayMilli*10); 
      this.shownDate=next;
      this.updateCalendar(true);
    };
    
    this.dateClicked = function(offset, evt)
    {
        if(this.selectedDay)
            jqCw(this.selectedDay).removeClass("SelectedDay");
        this.selectedDay=this.day_cells[offset+1];
        var first=this.calculateFirstDate(this.shownDate);
        this.selectedDate=new Date(first.getTime()+dayMilli*offset);
        
        if(this.shownDate.getMonth()!=this.selectedDate.getMonth() || 
            this.selectedDate.getFullYear()!=this.shownDate.getFullYear())
        {
            this.shownDate=this.selectedDate;
            this.updateCalendar();
        }
        
        if(this.selectedDay)
            jqCw(this.selectedDay).addClass("SelectedDay");
            
        if(params["helperCalendar"])
        {
            this.textField.val(cwFunctions.toIso8601Date(this.selectedDate));
            this.textField.trigger("change");
            domNode.hide();
        }
        else
            window.cwFunctions.dateSelected(this.selectedDate, "day");
    };
    
    this.updateCell = function(cell, link, date)
    {
        if(date.getMonth()==this.shownDate.getMonth())
            cell.attr("class", "");
        else if(date.getMonth()<this.shownDate.getMonth())
            cell.attr("class", "LastMonth");
        else
            cell.attr("class", "NextMonth");
           
        if(date.toDateString()==this.selectedDate.toDateString())
        {
            cell.addClass("SelectedDay");
            this.selectedDay=cell;
        }
        if(date.toDateString()==new Date().toDateString())
            cell.addClass("Today");
        
        link.text(date.getDate().toString());
    };
    
    this.updateCalendar = function(triggerEvent)
    {
        if(!params["helperCalendar"] && triggerEvent)
            window.cwFunctions.dateBrowse(this.shownDate, "month");
            
        this.headline.text((!params.helperCalendar?"Kalendarium ":"") + conf.monthNames[this.shownDate.getMonth()] + " " + this.shownDate.getFullYear());
        var first=this.calculateFirstDate(this.shownDate);
        for(var c=0; c<=this.day_cells.length; c++)
        {
            var date=new Date(first.getTime()+dayMilli*c);
            var cell=jqCw(this.day_cells[c+1]);
            var link=cell.children("a");
            
            this.updateCell(cell, link, date);
        }
    }
    
    jqCw(domNode).append("<h2>Kalendarium</h2><ul><li class='PreviousMonth'><a href='javascript://F&ouml;reg&aring;ende m&aring;nad'>&laquo;F&ouml;reg&aring;ende m&aring;nad</a></li>"+
        "<li class='NextMonth'><a href='javascript://N&auml;sta m&aring;nad'>N&auml;sta m&aring;nad&raquo;</a></li></ul>"+
        "<table class='CalendarTable'><thead><tr><th>m</th><th>t</th><th>o</th><th>t</th><th>f</th><th>l</th><th>s</th></tr></thead>"+
        "<tbody></tbody></table>");
    jqCw(domNode).find("li.PreviousMonth").children("a").click(cwFunctions.hitch(this,"showPreviousMonth"));
    jqCw(domNode).find("li.NextMonth").children("a").click(cwFunctions.hitch(this, "showNextMonth"));
    
    var first=this.calculateFirstDate(this.shownDate);
    if(!params.helperCalendar && !params.hideMonthLink)
    {
        jqCw(domNode).append("<div class='WholeMonth'><a href='javascript://M&aring;nadens program'>&raquo;M&aring;nadens program</a></div>");
        jqCw(domNode).children(".WholeMonth").children("a").click(cwFunctions.hitch(this, function()
            {cwFunctions.dateSelected(this.shownDate, "month");}));
    }
    
    this.headline=jqCw(domNode).children("h2");
    this.headline.text((!params.helperCalendar?"Kalendarium ":"") + conf.monthNames[this.shownDate.getMonth()] + " " + this.shownDate.getFullYear());            
    var tbody=jqCw(domNode).children("table").children("tbody");
    for(var i=0; i<6; i++)
    {
        var tr=document.createElement("tr");
        tbody[0].appendChild(tr);
        
        for(var d=0; d<7; d++)
        {
            var offset=this.day_cells.push(td)-1;
            
            var td=document.createElement("td");
            var dd=new Date(first.getTime()+dayMilli*offset);
            tr.appendChild(td);
            
            var link=document.createElement("a");
            td.appendChild(link);
            jqCw(link).click(cwFunctions.curry(this,"dateClicked",offset));
            jqCw(link).attr("href","javascript://V%C3%A4lj dag");
            
            this.updateCell(jqCw(td), jqCw(link), dd);
            
            if(d==0)
            {
                if(dd.getMonth()>this.shownDate.getMonth())
                    jqCw(tr).attr("class", "ExtraRow");
                else
                    jqCw(tr).attr("class", "");
            }       
        }
    }
});
if(window["cwFunctions"])
window.cwFunctions.addWidget("day_display", function(domNode, params)
{
    this.shownDay=new Date();
    
    this.updateList = function()
    {
      this.headline.html("H&auml;nder" + 
        (this.shownDay.toDateString()==new Date().toDateString()?" idag":"") + " " + 
        this.shownDay.getDate() + " " + conf.monthNames[this.shownDay.getMonth()] + " " + this.shownDay.getFullYear());
      var startTime=new Date(this.shownDay.getTime());
      var endTime=new Date(this.shownDay.getTime());
      startTime.setHours(6,0,0,0);
      endTime.setHours(6,0,0,0);
      endTime.setTime(endTime.getTime()+dayMilli);
      this.listing.empty();
      this.listing.append("<li class='LoadingEvents'>H&auml;mtar evenemang</li>");
      
      //Get the events for a specific applicationDomainName and a specific date span
      //if the applicationDomainName parameter is provided.
      if(!params.applicationDomainName)
      {
        cwFunctions.fetchData("GetEventsWithTag", { 'tag': conf.result_tag, start: startTime, end: endTime }, this, "gotEvents")
      } 
      else
      {
        cwFunctions.fetchData("GetApplicationDomainEventsWithTag", { 'tag': conf.result_tag, 'applicationDomainName': params.applicationDomainName, start: startTime, end: endTime }, this, "gotEvents");
      }
    };
    
    this.gotEvents = function(request, data)
    {
      this.listing.empty();
      for(var i=0; i<data.Rows.length; i++)
        {
            var row=data.Rows[i];
            var node=jqCw(document.createElement("li"));
            this.listing.append(node);
            
            node.addClass("Event");
            node.append(
                "<a class='InfoLink' href='javascript://Visa mer info'>" + row.name + ", kl: " + 
                    cwFunctions.leadingZeroPad(row.starts.getHours()) + "." + 
                    cwFunctions.leadingZeroPad(row.starts.getMinutes()) + "</a>");   
                
            node.children("a.InfoLink").click(cwFunctions.curry(
                this, "showInfo", row));
        }
        if(data.Rows.length==0)
            this.listing.append("<li class='NoEvents'>Inga evenemang</li>");
    };
    
    this.showInfo = function(row, evt)
    {
      cwFunctions.dateSelected(this.shownDay, "day", row.id);
    };
    
    this.previousDay = function()
    {
      this.shownDay=new Date(this.shownDay.getTime()-(1000*60*60*24));
      this.updateList();
    };
    
    this.nextDay = function()
    {
      this.shownDay=new Date(this.shownDay.getTime()+(1000*60*60*24));
      this.updateList();
    };
    
    jqCw(domNode).append("<h2></h2>");
    this.headline=jqCw(domNode).children("h2");
    if(!params.hidePrevNextNavigation)
    {
        jqCw(domNode).append("<ul><li class='PreviousDay'><a href='javascript://F&ouml;reg&aring;ende dag'>&laquo;F&ouml;reg&aring;ende dag</a></li><li class='NextDay'><a href='javascript://N&auml;sta dag'>N&auml;sta dag&raquo;</a></li></ul>");
        jqCw(domNode).find("li.PreviousDay").children("a").click(
          cwFunctions.hitch(this,"previousDay"));
        jqCw(domNode).find("li.NextDay").children("a").click(
          cwFunctions.hitch(this,"nextDay"));
      }
    jqCw(domNode).append("<ol></ol>");
    this.listing=jqCw(domNode).children("ol");
    this.updateList();
});
/* :w:result */
if(window["cwFunctions"])
window.cwFunctions.addWidget("result", function(domNode, params)
{
    this.random_id = Math.floor(Math.random()*100000) + "_" + new Date().getTime();
    this.shownDate = new Date();
    this.interval = "day"
    var dayMilli=(1000*60*60*24);
    
    var paramRegex=/date=([^&]*)&interval=([^&]{1,})(&expand=(\d{1,}))?/;
    var res=paramRegex.exec(window.location.href);
    if(res)
    {
        this.shownDate = cwFunctions.fromIso8601(res[1]);
        this.interval = res[2];
        if(res.length==5)
          this.expand=parseInt(res[4]);
    }
    
    conf.result_url=null;
    
    this.showDate = function(date, interval, expand)
    {
        this.shownDate=date;
        this.interval=interval;
        this.expand=expand;
        
        var startTime=new Date(date.getTime());
        var endTime=new Date(date.getTime());
        
        this.headline.text(conf.monthNames[date.getMonth()]);
        if(interval=="day")
            this.headline.append(" " + date.getDate());
        else if(interval=="month")
        {
            startTime=cwFunctions.firstInMonth(date);
            endTime=cwFunctions.lastInMonth(date);
        }
        
        startTime.setHours(6,0,0,0);
        endTime.setHours(6,0,0,0);
        endTime.setTime(endTime.getTime()+dayMilli);
            
        this.mainLoadingTable.show();
        this.listing.empty().hide();
        
        cwFunctions.fetchData("GetEventsWithTag", { 'tag': conf.result_tag, start: startTime, end: endTime }, this, "gotEvents");
    };
    
    this.gotEvents = function(request, data)
    {                
        for(var i=0; i<data.Rows.length; i++)
        {
            var row=data.Rows[i];
            
            if(this.interval=="month" && (i==0 || row.starts.toDateString()!=data.Rows[i-1].starts.toDateString()))
            {
                this.listing.append("<li class='DayHeader'>" + conf.dayNames[row.starts.getDay()] + " " + row.starts.getDate() + "</li>");
            }
            var node=jqCw(document.createElement("li"));
            this.listing.append(node);
            
            row.text=row.text.replace(/\\{1,}n/g,"");
            
            node.addClass("Event");
            node.append(
                (!jqCwConf["no_images"]?"<img class='Thumb' width='64' height='64' src='" + conf.provider + "entity_thumb.aspx?id=" + row.id + "'/>":"")+
                "<a class='InfoLink' href='javascript://Visa mer info'>" + row.name + ", kl: " + 
                    cwFunctions.leadingZeroPad(row.starts.getHours()) + "." + 
                    cwFunctions.leadingZeroPad(row.starts.getMinutes()) + "</a>"+
                "<p>" + cwFunctions.processHtml(row.text,{truncate:100}) + "</p>");   
                
            node.children("a.InfoLink").click(cwFunctions.curry(
                this, "showInfo", node, row, false));
                
            if(this["expand"] && this.expand==row.id)
              this.showInfo(node, row, true, null);
        }
        
        if(data.length==0)
            this.listing.append("<li class='NoEvents'>Inga evenemang<li>");
        
        this.mainLoadingTable.hide();
        this.listing.show();
    };
    
    this.showInfo = function(node, data, jumpTo, evt)
    {
        node.hide();
        
        node.after("<li class='InfoLoading'><div class='Swf' id='swf_item_" + data.id + "_" + this.random_id + "'></div>Laddar info</li>");
        if(conf.load_swf)
            UFO.create(conf.load_swf, "swf_item_" + data.id + "_" + this.random_id);
        var loadingBadge=node.next("li.InfoLoading");
        
        var handler={
            notify: cwFunctions.hitch(this,"gotInfo"),
            node: node,
            data: data,
            loading: loadingBadge,
            jumpTo: jumpTo,
            handle: function(request, info)
            {
                this.notify(this.node, this.loading, this.data, request, info, this.jumpTo);
            }
        };
        
        cwFunctions.fetchData("GetEventInfo", {id: data.id}, handler, "handle");
    };
    
    this.gotInfo = function(node, loadingNode, data, request, info, jumpTo)
    {
        var data_res=info.resource;
        if(data_res && data_res.Rows.length>0)
            data_res=data_res.Rows[0];
        var data_info=info.info.Rows[0];
        
        var anchor="evt_" + data.id + "_" + data.starts.getTime(); 
        var timeString = conf.dayNames[data.starts.getDay()] + " " + data.starts.getDate() + " " + 
            conf.monthNames[data.starts.getMonth()] + " kl: " + 
            cwFunctions.leadingZeroPad(data.starts.getHours()) + "." + 
            cwFunctions.leadingZeroPad(data.starts.getMinutes());
        var ageString="";
        if(data_info.ageLimit)
            ageString = "&Aring;ldersgr&auml;ns: " + data_info.ageLimit + " &aring;r";
        var feeString="";
        if(data_info.fee && data_info.fee.length>0)
            feeString="Intr&auml;de: " + data_info.fee;
        
        loadingNode.empty();
        loadingNode.hide();

        node.after("<li id='" + anchor + "' class='ExtendedInfo" + (data_res?" HasImage":"") + "'><div class='Wrapper'>"+
            (data_res && !jqCwConf["no_images"]?("<img class='FullImage' src='" + data_res.url + "ill.resource?id=" + data_res.id + "&filter=width&width=260'/>"):"")+
            "<div class='InfoColumn'><div class='Time'>" + timeString + "</div>"+
            "<div class='Info'><div class='Location'>Plats: " + data.location_name + "</div><div class='AgeLimit'>" + ageString + "</div><div class='Fee'>" + feeString + "</div></div>"+
            "<div class='InfoText'></div>"+
			"<div class='MoreLink'><a href='http://dygnetrunt.se/" + cwFunctions.sanitizeUri(data.name) + "/" + data.id + "'>L&auml;s mer och kommentera p&aring; DygnetRunt.se</a></div>" +
            "</div></li>");
        var extendedInfo=node.next("li.ExtendedInfo");
        
        var infoText=extendedInfo.find("div.InfoText");
        infoText.append("<h3>" + data.name + "</h3>");
        if(jumpTo)
          window.location.href=window.location.href.split('#')[0]+"#"+anchor;
        
        if(info.text && info.text.Rows.length>0)
        {
            var data_text=info.text.Rows;
            
            for(var i=0; i<data_text.length; i++)
                if(data_text[i].type=="o")
                {
					if(jqCwConf["delegate"] && cwFunctions.arrayContains(jqCwConf["delegate"],data_info.owner))
						infoText.append(data_text[i].text);
					else
						infoText.append(cwFunctions.processHtml(data_text[i].text, { stripTags: true, truncate: 100}));
                }
        }
    };
    
    jqCw(domNode).append("<h2></h2><div class='LoadingInfo'><div class='Swf' id='swf_main_" + this.random_id + "'></div><p>Laddar information</p></div>"+
        "<ol class='Listing'><ol>");
    this.mainLoadingTable=jqCw(domNode).children("div.LoadingInfo");
    this.headline = jqCw(domNode).children('h2');
    this.listing = jqCw(domNode).children('ol.Listing');
    
    if(conf.load_swf)
        UFO.create(conf.load_swf, "swf_main_" + this.random_id);
    
    this.showDate(this.shownDate, this.interval, this.expand);
    
    cwFunctions.addDateSelectionCallback(this, "showDate");
    if(params["updateOnBrowse"])
        cwFunctions.addDateBrowseCallback(this, "showDate");
});
if(window["cwFunctions"])
window.cwFunctions.addWidget("styled_day_display", function(domNode, params)
{
    cwFunctions.loadCss(params["widgetCss"]);
    
    this.shownDay=new Date();
    
    this.updateList = function()
    {
      this.headline.html("Detta h&auml;nder" + 
        (this.shownDay.toDateString()==new Date().toDateString()?" idag":"") + " " +  conf.dayNames[this.shownDay.getDay()] + " " +
        this.shownDay.getDate() + " " + conf.monthNames[this.shownDay.getMonth()] + " " + this.shownDay.getFullYear());
      var startTime=new Date(this.shownDay.getTime());
      var endTime=new Date(this.shownDay.getTime());
      startTime.setHours(6,0,0,0);
      endTime.setHours(6,0,0,0);
      endTime.setTime(endTime.getTime()+dayMilli);
      this.listing.empty();
      this.listing.append("<li class='LoadingEvents'>H&auml;mtar evenemang</li>");
      
      //Get the events for a specific applicationDomainName and a specific date span
      //if the applicationDomainName parameter is provided.
      if(!params.applicationDomainName)
      {
        cwFunctions.fetchData("GetEventsWithTag", { 'tag': conf.result_tag, start: startTime, end: endTime }, this, "gotEvents")
      } 
      else
      {
        cwFunctions.fetchData("GetApplicationDomainEvents", { 'applicationDomainName': params.applicationDomainName, start: startTime, end: endTime }, this, "gotEvents");
      }
    };
    
    this.gotEvents = function(request, data)
    {
      this.listing.empty();
      for(var i=0; i<data.Rows.length; i++)
        {
            var row=data.Rows[i];
            var node=jqCw(document.createElement("li"));
            this.listing.append(node);
            
            i % 2 == 0? node.addClass("Event") : node.addClass("EventOdd");
            node.append(
                "<div class='Time'>" + 
                    cwFunctions.leadingZeroPad(row.starts.getHours()) + "." + 
                    cwFunctions.leadingZeroPad(row.starts.getMinutes()) + "</div>"); 
            node.append(
                "<div class='Name'><a class='InfoLink' href='" + params.applicationDomainURL + cwFunctions.sanitizeUri(row.name) + "/" + row.id + "'>" + row.name + 
                ", " + row.location_name + "</a></div>");   
            node.children("a.InfoLink").click(cwFunctions.curry(
                this, "showInfo", row));
        }
        if(data.Rows.length==0)
            this.listing.append("<li class='NoEvents'>Inga evenemang</li>");
    };
    
    this.showInfo = function(row, evt)
    {
      cwFunctions.dateSelected(this.shownDay, "day", row.id);
    };
    
    this.previousDay = function()
    {
      this.shownDay=new Date(this.shownDay.getTime()-(1000*60*60*24));
      this.updateList();
    };
    
    this.nextDay = function()
    {
      this.shownDay=new Date(this.shownDay.getTime()+(1000*60*60*24));
      this.updateList();
    };

    jqCw(domNode).append("<h2 class='day_display_header'></h2>");
    this.headline=jqCw(domNode).children("h2");
    if(params.showPrevNextNavigation)
    {
        jqCw(domNode).append("<ul><li class='PreviousDay'><a href='javascript://F&ouml;reg&aring;ende dag'>&laquo;F&ouml;reg&aring;ende dag</a></li><li class='NextDay'><a href='javascript://N&auml;sta dag'>N&auml;sta dag&raquo;</a></li></ul>");
        jqCw(domNode).find("li.PreviousDay").children("a").click(
          cwFunctions.hitch(this,"previousDay"));
        jqCw(domNode).find("li.NextDay").children("a").click(
          cwFunctions.hitch(this,"nextDay"));
      }
    jqCw(domNode).append("<ol class='TodaysEvents'></ol>");
    this.listing=jqCw(domNode).children("ol");
    jqCw(domNode).append("<a class='day_display_logo' href='" + params.applicationDomainURL + "'>&nbsp;</a>");
    this.updateList();
});
if(window["cwFunctions"])
window.cwFunctions.addWidget("upcoming", function(domNode, parameters)
{
    if(!parameters.limit)
        parameters.limit=5;
            
    this.updateList = function()
    {
      var startTime=new Date();
      startTime.setHours(6,0,0,0);
      this.listing.empty();
      jqCw(domNode).append("<div class='LoadingEvents'>H&auml;mtar evenemang</div>");
      cwFunctions.fetchData("GetUpcomingEventsWithTag", { 'tag': conf.result_tag, 'limit': parameters.limit }, this, "gotEvents");
    };
    
    this.gotEvents = function(request, data)
    {
      jqCw(domNode).children(".LoadingEvents").remove();
      var today = new Date();
      
      for(var i=0; i<data.Rows.length; i++)
        {
            var row=data.Rows[i];
            var offset = cwFunctions.dayOffset(today, row.starts); 
            var dateText;
            if(offset == 0)
                dateText = "Idag";
            else if(offset == 1)
                dateText = "Imorgon";
            else if(offset < 7)
                dateText = conf.dayNames[row.starts.getDay()];
            else
                dateText = conf.dayNames[row.starts.getDay()] + " " + row.starts.getDate() + " " + conf.monthNames[row.starts.getMonth()];
            
            var item=this.addItemNode(row, dateText);
                
            if(parameters && cwFunctions.isFunction(parameters["modifyItem"]))
                parameters.modifyItem(item, row);
        }
        
        if(data.Rows.length==0)
            this.listing.append("<li class='NoEvents'>Inga evenemang</li>");
    };
    
    this.addItemNode = function(row, dateText)
    {
        var node=jqCw(document.createElement("li"));
        this.listing.append(node);
        node.addClass("Event");
        node.append(
            "<a class='InfoLink' href='javascript://Visa mer info'>" + row.name + " <span class='Time'>" + dateText + " kl " + 
                cwFunctions.leadingZeroPad(row.starts.getHours()) + "." + 
                cwFunctions.leadingZeroPad(row.starts.getMinutes()) + "</span></a>");   
        var item=node.children("a.InfoLink");    
        item.click(cwFunctions.curry(
            this, "showInfo", row));
        return item;
    };
    
    this.styles = {
        'table': 
        {
            createListingRoot:function()
            {
                jqCw(domNode).append("<table><tbody></tbody></table>");
                return jqCw(domNode).children("table").children("tbody");
            },
            addItemNode:function(row, dateText)
            {
                var node=jqCw(document.createElement("tr"));
                this.listing.append(node);
                node.addClass("Event");
                node.append(
                    "<td><a class='InfoLink' href='javascript://Visa mer info'>" + row.name + "</a></td><td class='Time'>" + dateText + " kl " + 
                        cwFunctions.leadingZeroPad(row.starts.getHours()) + "." + 
                        cwFunctions.leadingZeroPad(row.starts.getMinutes()) + "</td>");   
                var links=node.select("a.InfoLink");    
                links.click(cwFunctions.curry(
                    this, "showInfo", row));
                return node;
            }
        }
    };
    
    this.showInfo = function(row, evt)
    {
      cwFunctions.dateSelected(row.starts, "day", row.id);
    };
    
    this.createListingRoot = function()
    {
        jqCw(domNode).append("<ol></ol>");
        return jqCw(domNode).children("ol");
    };
    
    if(parameters.style && this.styles[parameters.style])
    {
        var style=this.styles[parameters.style];
        for(var k in style)
            this[k]=style[k];
    }
    
    this.listing=this.createListingRoot();
    this.updateList();
});
