/* Base64 Encode */
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4)}return output},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}output=Base64._utf8_decode(output);return output},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c)}else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}return utftext},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++}else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3}}return string}}
/* Cookie plugin // Klaus Hartl */
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};
/* Galleriffic // http://www.twospy.com/galleriffic/#1 // 2.0 */
(function(b){var d={};var a=0;b.galleriffic={version:"2.0.1",normalizeHash:function(e){return e.replace(/^.*#/,"").replace(/\?.*$/,"")},getImage:function(e){if(!e){return undefined}e=b.galleriffic.normalizeHash(e);return d[e]},gotoImage:function(f){var g=b.galleriffic.getImage(f);if(!g){return false}var e=g.gallery;e.gotoImage(g);return true},removeImageByHash:function(g,f){var h=b.galleriffic.getImage(g);if(!h){return false}var e=h.gallery;if(f&&f!=e){return false}return e.removeImageByIndex(h.index)}};var c={delay:3000,numThumbs:20,preloadAhead:40,enableTopPager:false,enableBottomPager:true,maxPagesToShow:7,imageContainerSel:"",captionContainerSel:"",controlsContainerSel:"",loadingContainerSel:"",renderSSControls:true,renderNavControls:true,playLinkText:"Play",pauseLinkText:"Pause",prevLinkText:"Previous",nextLinkText:"Next",nextPageLinkText:"Next &rsaquo;",prevPageLinkText:"&lsaquo; Prev",enableHistory:false,enableKeyboardNavigation:true,autoStart:false,syncTransitions:false,defaultTransitionDuration:1000,onSlideChange:undefined,onTransitionOut:undefined,onTransitionIn:undefined,onPageTransitionOut:undefined,onPageTransitionIn:undefined,onImageAdded:undefined,onImageRemoved:undefined};b.fn.galleriffic=function(g){b.extend(this,{version:b.galleriffic.version,isSlideshowRunning:false,slideshowTimeout:undefined,clickHandler:function(m,k){this.pause();if(!this.enableHistory){var l=b.galleriffic.normalizeHash(b(k).attr("href"));b.galleriffic.gotoImage(l);m.preventDefault()}},appendImage:function(k){this.addImage(k,false,false);return this},insertImage:function(l,k){this.addImage(l,false,true,k);return this},addImage:function(l,q,u,r){var s=(typeof l==="string")?b(l):l;var m=s.find("a.thumb");var n=m.attr("href");var t=m.attr("title");var p=s.find(".caption").remove();var o=m.attr("name");a++;if(!o||d[""+o]){o=a}if(!u){r=this.data.length}var k={title:t,slideUrl:n,caption:p,hash:o,gallery:this,index:r};if(u){this.data.splice(r,0,k);this.updateIndices(r)}else{this.data.push(k)}var v=this;if(!q){this.updateThumbs(function(){var w=v.find("ul.thumbs");if(u){w.children(":eq("+r+")").before(s)}else{w.append(s)}if(v.onImageAdded){v.onImageAdded(k,s)}})}d[""+o]=k;m.attr("rel","history").attr("href","#"+o).removeAttr("name").click(function(w){v.clickHandler(w,this)});return this},removeImageByIndex:function(k){if(k<0||k>=this.data.length){return false}var l=this.data[k];if(!l){return false}this.removeImage(l);return true},removeImageByHash:function(k){return b.galleriffic.removeImageByHash(k,this)},removeImage:function(l){var k=l.index;this.data.splice(k,1);delete d[""+l.hash];this.updateThumbs(function(){var m=e.find("ul.thumbs").children(":eq("+k+")").remove();if(e.onImageRemoved){e.onImageRemoved(l,m)}});this.updateIndices(k);return this},updateIndices:function(k){for(i=k;i<this.data.length;i++){this.data[i].index=i}return this},initializeThumbs:function(){this.data=[];var k=this;this.find("ul.thumbs > li").each(function(l){k.addImage(b(this),true,false)});return this},isPreloadComplete:false,preloadInit:function(){if(this.preloadAhead==0){return this}this.preloadStartIndex=this.currentImage.index;var k=this.getNextIndex(this.preloadStartIndex);return this.preloadRecursive(this.preloadStartIndex,k)},preloadRelocate:function(k){this.preloadStartIndex=k;return this},preloadRecursive:function(p,m){if(p!=this.preloadStartIndex){var k=this.getNextIndex(this.preloadStartIndex);return this.preloadRecursive(this.preloadStartIndex,k)}var l=this;var n=m-p;if(n<0){n=this.data.length-1-p+m}if(this.preloadAhead>=0&&n>this.preloadAhead){setTimeout(function(){l.preloadRecursive(p,m)},500);return this}var q=this.data[m];if(!q){return this}if(q.image){return this.preloadNext(p,m)}var o=new Image();o.onload=function(){q.image=this;l.preloadNext(p,m)};o.alt=q.title;o.src=q.slideUrl;return this},preloadNext:function(n,m){var k=this.getNextIndex(m);if(k==n){this.isPreloadComplete=true}else{var l=this;setTimeout(function(){l.preloadRecursive(n,k)},100)}return this},getNextIndex:function(l){var k=l+1;if(k>=this.data.length){k=0}return k},getPrevIndex:function(k){var l=k-1;if(l<0){l=this.data.length-1}return l},pause:function(){this.isSlideshowRunning=false;if(this.slideshowTimeout){clearTimeout(this.slideshowTimeout);this.slideshowTimeout=undefined}if(this.$controlsContainer){this.$controlsContainer.find("div.ss-controls a").removeClass().addClass("play").attr("title",this.playLinkText).attr("href","#play").html(this.playLinkText)}return this},play:function(){this.isSlideshowRunning=true;if(this.$controlsContainer){this.$controlsContainer.find("div.ss-controls a").removeClass().addClass("pause").attr("title",this.pauseLinkText).attr("href","#pause").html(this.pauseLinkText)}if(!this.slideshowTimeout){var k=this;this.slideshowTimeout=setTimeout(function(){k.ssAdvance()},this.delay)}return this},toggleSlideshow:function(){if(this.isSlideshowRunning){this.pause()}else{this.play()}return this},ssAdvance:function(){if(this.isSlideshowRunning){this.next(true)}return this},next:function(k,l){this.gotoIndex(this.getNextIndex(this.currentImage.index),k,l);return this},previous:function(k,l){this.gotoIndex(this.getPrevIndex(this.currentImage.index),k,l);return this},nextPage:function(l,p){var n=this.getCurrentPage();var m=this.getNumPages()-1;if(n<m){var o=n*this.numThumbs;var k=o+this.numThumbs;this.gotoIndex(k,l,p)}return this},previousPage:function(k,o){var m=this.getCurrentPage();if(m>0){var n=m*this.numThumbs;var l=n-this.numThumbs;this.gotoIndex(l,k,o)}return this},gotoIndex:function(l,k,m){if(!k){this.pause()}if(l<0){l=0}else{if(l>=this.data.length){l=this.data.length-1}}var n=this.data[l];if(!m&&this.enableHistory){b.historyLoad(String(n.hash))}else{this.gotoImage(n)}return this},gotoImage:function(l){var k=l.index;if(this.onSlideChange){this.onSlideChange(this.currentImage.index,k)}this.currentImage=l;this.preloadRelocate(k);this.refresh();return this},getDefaultTransitionDuration:function(k){if(k){return this.defaultTransitionDuration}return this.defaultTransitionDuration/2},refresh:function(){var k=this.currentImage;if(!k){return this}var o=k.index;if(this.$controlsContainer){this.$controlsContainer.find("div.nav-controls a.prev").attr("href","#"+this.data[this.getPrevIndex(o)].hash).end().find("div.nav-controls a.next").attr("href","#"+this.data[this.getNextIndex(o)].hash)}var r=this.$imageContainer.find("span.current").addClass("previous").removeClass("current");var q=0;if(this.$captionContainer){q=this.$captionContainer.find("span.current").addClass("previous").removeClass("current")}var n=this.syncTransitions&&k.image;var l=true;var s=this;var p=function(){l=false;r.remove();if(q){q.remove()}if(!n){if(k.image&&k.hash==s.data[s.currentImage.index].hash){s.buildImage(k,n)}else{if(s.$loadingContainer){s.$loadingContainer.show()}}}};if(r.length==0){p()}else{if(this.onTransitionOut){this.onTransitionOut(r,q,n,p)}else{r.fadeTo(this.getDefaultTransitionDuration(n),0,p);if(q){q.fadeTo(this.getDefaultTransitionDuration(n),0)}}}if(n){this.buildImage(k,n)}if(!k.image){var m=new Image();m.onload=function(){k.image=this;if(!l&&k.hash==s.data[s.currentImage.index].hash){s.buildImage(k,n)}};m.alt=k.title;m.src=k.slideUrl}this.relocatePreload=true;return this.syncThumbs()},buildImage:function(p,n){var m=this;var k=this.getNextIndex(p.index);var l=this.$imageContainer.append('<span class="image-wrapper current"><a class="advance-link" rel="history" href="#'+this.data[k].hash+'" title="'+p.title+'">&nbsp;</a></span>').find("span.current").css("opacity","0");l.find("a").append(p.image).click(function(q){m.clickHandler(q,this)});var o=0;if(this.$captionContainer){o=this.$captionContainer.append('<span class="image-caption current"></span>').find("span.current").css("opacity","0").append(p.caption)}if(this.$loadingContainer){this.$loadingContainer.hide()}if(this.onTransitionIn){this.onTransitionIn(l,o,n)}else{l.fadeTo(this.getDefaultTransitionDuration(n),1);if(o){o.fadeTo(this.getDefaultTransitionDuration(n),1)}}if(this.isSlideshowRunning){if(this.slideshowTimeout){clearTimeout(this.slideshowTimeout)}this.slideshowTimeout=setTimeout(function(){m.ssAdvance()},this.delay)}return this},getCurrentPage:function(){return Math.floor(this.currentImage.index/this.numThumbs)},syncThumbs:function(){var l=this.getCurrentPage();if(l!=this.displayedPage){this.updateThumbs()}var k=this.find("ul.thumbs").children();k.filter(".selected").removeClass("selected");k.eq(this.currentImage.index).addClass("selected");return this},updateThumbs:function(k){var l=this;var m=function(){if(k){k()}l.rebuildThumbs();if(l.onPageTransitionIn){l.onPageTransitionIn()}else{l.show()}};if(this.onPageTransitionOut){this.onPageTransitionOut(m)}else{this.hide();m()}return this},rebuildThumbs:function(){var m=this.data.length>this.numThumbs;if(this.enableTopPager){var k=this.find("div.top");if(k.length==0){k=this.prepend('<div class="top pagination"></div>').find("div.top")}else{k.empty()}if(m){this.buildPager(k)}}if(this.enableBottomPager){var o=this.find("div.bottom");if(o.length==0){o=this.append('<div class="bottom pagination"></div>').find("div.bottom")}else{o.empty()}if(m){this.buildPager(o)}}var p=this.getCurrentPage();var q=p*this.numThumbs;var l=q+this.numThumbs-1;if(l>=this.data.length){l=this.data.length-1}var n=this.find("ul.thumbs");n.find("li").each(function(r){var s=b(this);if(r>=q&&r<=l){s.show()}else{s.hide()}});this.displayedPage=p;n.removeClass("noscript");return this},getNumPages:function(){return Math.ceil(this.data.length/this.numThumbs)},buildPager:function(m){var u=this;var l=this.getNumPages();var o=this.getCurrentPage();var s=o*this.numThumbs;var k=this.maxPagesToShow-1;var p=o-Math.floor((this.maxPagesToShow-1)/2)+1;if(p>0){var t=l-p;if(t<k){p=p-(k-t)}}if(p<0){p=0}if(o>0){var n=s-this.numThumbs;m.append('<a rel="history" href="#'+this.data[n].hash+'" title="'+this.prevPageLinkText+'">'+this.prevPageLinkText+"</a>")}if(p>0){this.buildPageLink(m,0,l);if(p>1){m.append('<span class="ellipsis">&hellip;</span>')}k--}while(k>0){this.buildPageLink(m,p,l);k--;p++}if(p<l){var r=l-1;if(p<r){m.append('<span class="ellipsis">&hellip;</span>')}this.buildPageLink(m,r,l)}var q=s+this.numThumbs;if(q<this.data.length){m.append('<a rel="history" href="#'+this.data[q].hash+'" title="'+this.nextPageLinkText+'">'+this.nextPageLinkText+"</a>")}m.find("a").click(function(v){u.clickHandler(v,this)});return this},buildPageLink:function(m,p,n){var l=p+1;var o=this.getCurrentPage();if(p==o){m.append('<span class="current">'+l+"</span>")}else{if(p<n){var k=p*this.numThumbs;m.append('<a rel="history" href="#'+this.data[k].hash+'" title="'+l+'">'+l+"</a>")}}return this}});b.extend(this,c,g);if(this.enableHistory&&!b.historyInit){this.enableHistory=false}if(this.imageContainerSel){this.$imageContainer=b(this.imageContainerSel)}if(this.captionContainerSel){this.$captionContainer=b(this.captionContainerSel)}if(this.loadingContainerSel){this.$loadingContainer=b(this.loadingContainerSel)}this.initializeThumbs();if(this.maxPagesToShow<3){this.maxPagesToShow=3}this.displayedPage=-1;this.currentImage=this.data[0];var e=this;if(this.$loadingContainer){this.$loadingContainer.hide()}if(this.controlsContainerSel){this.$controlsContainer=b(this.controlsContainerSel).empty();if(this.renderSSControls){if(this.autoStart){this.$controlsContainer.append('<div class="ss-controls"><a href="#pause" class="pause" title="'+this.pauseLinkText+'">'+this.pauseLinkText+"</a></div>")}else{this.$controlsContainer.append('<div class="ss-controls"><a href="#play" class="play" title="'+this.playLinkText+'">'+this.playLinkText+"</a></div>")}this.$controlsContainer.find("div.ss-controls a").click(function(k){e.toggleSlideshow();k.preventDefault();return false})}if(this.renderNavControls){this.$controlsContainer.append('<div class="nav-controls"><a class="prev" rel="history" title="'+this.prevLinkText+'">'+this.prevLinkText+'</a><a class="next" rel="history" title="'+this.nextLinkText+'">'+this.nextLinkText+"</a></div>").find("div.nav-controls a").click(function(k){e.clickHandler(k,this)})}}var f=!this.enableHistory||!location.hash;if(this.enableHistory&&location.hash){var h=b.galleriffic.normalizeHash(location.hash);var j=d[h];if(!j){f=true}}if(f){this.gotoIndex(0,false,true)}if(this.enableKeyboardNavigation){b(document).keydown(function(l){var k=l.charCode?l.charCode:l.keyCode?l.keyCode:0;switch(k){case 32:e.next();l.preventDefault();break;case 33:e.previousPage();l.preventDefault();break;case 34:e.nextPage();l.preventDefault();break;case 35:e.gotoIndex(e.data.length-1);l.preventDefault();break;case 36:e.gotoIndex(0);l.preventDefault();break;case 37:e.previous();l.preventDefault();break;case 39:e.next();l.preventDefault();break}})}if(this.autoStart){this.play()}setTimeout(function(){e.preloadInit()},1000);return this}})(jQuery);
/* mousewheel // Brandon Aaron // 3.0.2 */
(function($){var types=['DOMMouseScroll','mousewheel'];$.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var i=types.length;i;)this.addEventListener(types[--i],handler,false);else this.onmousewheel=handler},teardown:function(){if(this.removeEventListener)for(var i=types.length;i;)this.removeEventListener(types[--i],handler,false);else this.onmousewheel=null}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel")},unmousewheel:function(fn){return this.unbind("mousewheel",fn)}});function handler(event){var args=[].slice.call(arguments,1),delta=0,returnValue=true;event=$.event.fix(event||window.event);event.type="mousewheel";if(event.wheelDelta)delta=event.wheelDelta/120;if(event.detail)delta=-event.detail/3;args.unshift(event,delta);return $.event.handle.apply(this,args)}})(jQuery);
/* jQuery.timers // Blair Mitchelmore // 1.1.2 (2009/02/08) */
jQuery.fn.extend({everyTime:function(b,c,d,e,a){return this.each(function(){jQuery.timer.add(this,b,c,d,e,a);});},oneTime:function(a,b,c){return this.each(function(){jQuery.timer.add(this,a,b,c,1);});},stopTime:function(a,b){return this.each(function(){jQuery.timer.remove(this,a,b);});}});jQuery.event.special;jQuery.extend({timer:{global:[],guid:1,dataKey:"jQuery.timer",regex:/^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,powers:{"ms":1,"cs":10,"ds":100,"s":1000,"das":10000,"hs":100000,"ks":1000000},timeParse:function(c){if(c==undefined||c==null){return null;}var a=this.regex.exec(jQuery.trim(c.toString()));if(a[2]){var b=parseFloat(a[1]);var d=this.powers[a[2]]||1;return b*d;}else{return c;}},add:function(e,c,h,g,b,f){var a=0;if(jQuery.isFunction(h)){if(!b){b=g;}g=h;h=c;}c=jQuery.timer.timeParse(c);if(typeof c!="number"||isNaN(c)||c<=0){return;}if(b&&b.constructor!=Number){f=!!b;b=0;}b=b||0;f=f||false;var d=jQuery.data(e,this.dataKey)||jQuery.data(e,this.dataKey,{});if(!d[h]){d[h]={};}g.timerID=g.timerID||this.guid++;var i=function(){if(f&&this.inProgress){return;}this.inProgress=true;if((++a>b&&b!==0)||g.call(e,a)===false){jQuery.timer.remove(e,h,g);}this.inProgress=false;};i.timerID=g.timerID;if(!d[h][g.timerID]){d[h][g.timerID]=window.setInterval(i,c);}this.global.push(e);},remove:function(c,b,d){var e=jQuery.data(c,this.dataKey),a;if(e){if(!b){for(b in e){this.remove(c,b,d);}}else{if(e[b]){if(d){if(d.timerID){window.clearInterval(e[b][d.timerID]);delete e[b][d.timerID];}}else{for(var d in e[b]){window.clearInterval(e[b][d]);delete e[b][d];}}for(a in e[b]){break;}if(!a){a=null;delete e[b];}}}for(a in e){break;}if(!a){jQuery.removeData(c,this.dataKey);}}}}});jQuery(window).bind("unload",function(){jQuery.each(jQuery.timer.global,function(a,b){jQuery.timer.remove(b);});});
/* jQuery validation plug-in // Jörn Zaefferer // 1.5.5 2009-06-17 // http://bassistance.de/jquery-plugins/jquery-plugin-validation/ */
(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return;}var validator=$.data(this[0],'validator');if(validator){return validator;}validator=new $.validator(options,this[0]);$.data(this[0],'validator',validator);if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true;});if(validator.settings.submitHandler){this.find("input, button").filter(":submit").click(function(){validator.submitButton=this;});}this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){if(validator.submitButton){var hidden=$("<input type='hidden'/>").attr("name",validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);}validator.settings.submitHandler.call(validator,validator.currentForm);if(validator.submitButton){hidden.remove();}return false;}return true;}if(validator.cancelSubmit){validator.cancelSubmit=false;return handle();}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;return false;}return handle();}else{validator.focusInvalid();return false;}});}return validator;},valid:function(){if($(this[0]).is('form')){return this.validate().form();}else{var valid=true;var validator=$(this[0].form).validate();this.each(function(){valid&=validator.element(this);});return valid;}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(index,value){result[value]=$element.attr(value);$element.removeAttr(value);});return result;},rules:function(command,argument){var element=this[0];if(command){var settings=$.data(element.form,'validator').settings;var staticRules=settings.rules;var existingRules=$.validator.staticRules(element);switch(command){case"add":$.extend(existingRules,$.validator.normalizeRule(argument));staticRules[element.name]=existingRules;if(argument.messages)settings.messages[element.name]=$.extend(settings.messages[element.name],argument.messages);break;case"remove":if(!argument){delete staticRules[element.name];return existingRules;}var filtered={};$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];delete existingRules[method];});return filtered;}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);if(data.required){var param=data.required;delete data.required;data=$.extend({required:param},data);}return data;}});$.extend($.expr[":"],{blank:function(a){return!$.trim(a.value);},filled:function(a){return!!$.trim(a.value);},unchecked:function(a){return!a.checked;}});$.validator=function(options,form){this.settings=$.extend({},$.validator.defaults,options);this.currentForm=form;this.init();};$.validator.format=function(source,params){if(arguments.length==1)return function(){var args=$.makeArray(arguments);args.unshift(source);return $.validator.format.apply(this,args);};if(arguments.length>2&&params.constructor!=Array){params=$.makeArray(arguments).slice(1);}if(params.constructor!=Array){params=[params];}$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n);});return source;};$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(element){this.lastActive=element;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass,this.settings.validClass);this.errorsFor(element).hide();}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element))){this.element(element);}},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement){this.element(element);}},onclick:function(element){if(element.name in this.submitted)this.element(element);},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass);},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass);}},setDefaults:function(settings){$.extend($.validator.defaults,settings);},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",dateDE:"Bitte geben Sie ein gültiges Datum ein.",number:"Please enter a valid number.",numberDE:"Bitte geben Sie eine Nummer ein.",digits:"Please enter only digits",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.validator.format("Please enter no more than {0} characters."),minlength:$.validator.format("Please enter at least {0} characters."),rangelength:$.validator.format("Please enter a value between {0} and {1} characters long."),range:$.validator.format("Please enter a value between {0} and {1}."),max:$.validator.format("Please enter a value less than or equal to {0}."),min:$.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var groups=(this.groups={});$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key;});});var rules=this.settings.rules;$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value);});function delegate(event){var validator=$.data(this[0].form,"validator");validator.settings["on"+event.type]&&validator.settings["on"+event.type].call(validator,this[0]);}$(this.currentForm).delegate("focusin focusout keyup",":text, :password, :file, select, textarea",delegate).delegate("click",":radio, :checkbox",delegate);if(this.settings.invalidHandler)$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler);},form:function(){this.checkForm();$.extend(this.submitted,this.errorMap);this.invalid=$.extend({},this.errorMap);if(!this.valid())$(this.currentForm).triggerHandler("invalid-form",[this]);this.showErrors();return this.valid();},checkForm:function(){this.prepareForm();for(var i=0,elements=(this.currentElements=this.elements());elements[i];i++){this.check(elements[i]);}return this.valid();},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);this.currentElements=$(element);var result=this.check(element);if(result){delete this.invalid[element.name];}else{this.invalid[element.name]=true;}if(!this.numberOfInvalids()){this.toHide=this.toHide.add(this.containers);}this.showErrors();return result;},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]});}this.successList=$.grep(this.successList,function(element){return!(element.name in errors);});}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors();},resetForm:function(){if($.fn.resetForm)$(this.currentForm).resetForm();this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass);},numberOfInvalids:function(){return this.objectLength(this.invalid);},objectLength:function(obj){var count=0;for(var i in obj)count++;return count;},hideErrors:function(){this.addWrapper(this.toHide).hide();},valid:function(){return this.size()==0;},size:function(){return this.errorList.length;},focusInvalid:function(){if(this.settings.focusInvalid){try{$(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus();}catch(e){}}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name;}).length==1&&lastActive;},elements:function(){var validator=this,rulesCache={};return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&window.console&&console.error("%o has no name assigned",this);if(this.name in rulesCache||!validator.objectLength($(this).rules()))return false;rulesCache[this.name]=true;return true;});},clean:function(selector){return $(selector)[0];},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext);},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=$([]);this.toHide=$([]);this.formSubmitted=false;this.currentElements=$([]);},prepareForm:function(){this.reset();this.toHide=this.errors().add(this.containers);},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(element);},check:function(element){element=this.clean(element);if(this.checkable(element)){element=this.findByName(element.name)[0];}var rules=$(element).rules();var dependencyMismatch=false;for(method in rules){var rule={method:method,parameters:rules[method]};try{var result=$.validator.methods[method].call(this,element.value.replace(/\r/g,""),element,rule.parameters);if(result=="dependency-mismatch"){dependencyMismatch=true;continue;}dependencyMismatch=false;if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));return;}if(!result){this.formatAndAdd(element,rule);return false;}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id+", check the '"+rule.method+"' method");throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true;},customMetaMessage:function(element,method){if(!$.metadata)return;var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();return meta&&meta.messages&&meta.messages[method];},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method]);},findDefined:function(){for(var i=0;i<arguments.length;i++){if(arguments[i]!==undefined)return arguments[i];}return undefined;},defaultMessage:function(element,method){return this.findDefined(this.customMessage(element.name,method),this.customMetaMessage(element,method),!this.settings.ignoreTitle&&element.title||undefined,$.validator.messages[method],"<strong>Warning: No message defined for "+element.name+"</strong>");},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method);if(typeof message=="function")message=message.call(this,rule.parameters,element);this.errorList.push({message:message,element:element});this.errorMap[element.name]=message;this.submitted[element.name]=message;},addWrapper:function(toToggle){if(this.settings.wrapper)toToggle=toToggle.add(toToggle.parent(this.settings.wrapper));return toToggle;},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass,this.settings.validClass);this.showLabel(error.element,error.message);}if(this.errorList.length){this.toShow=this.toShow.add(this.containers);}if(this.settings.success){for(var i=0;this.successList[i];i++){this.showLabel(this.successList[i]);}}if(this.settings.unhighlight){for(var i=0,elements=this.validElements();elements[i];i++){this.settings.unhighlight.call(this,elements[i],this.settings.errorClass,this.settings.validClass);}}this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show();},validElements:function(){return this.currentElements.not(this.invalidElements());},invalidElements:function(){return $(this.errorList).map(function(){return this.element;});},showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message);}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper){label=label.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();}if(!this.labelContainer.append(label).length)this.settings.errorPlacement?this.settings.errorPlacement(label,$(element)):label.insertAfter(element);}if(!message&&this.settings.success){label.text("");typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label);}this.toShow=this.toShow.add(label);},errorsFor:function(element){return this.errors().filter("[for='"+this.idOrName(element)+"']");},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:element.id||element.name);},checkable:function(element){return/radio|checkbox/i.test(element.type);},findByName:function(name){var form=this.currentForm;return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null;});},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case'select':return $("option:selected",element).length;case'input':if(this.checkable(element))return this.findByName(element.name).filter(':checked').length;}return value.length;},depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true;},dependTypes:{"boolean":function(param,element){return param;},"string":function(param,element){return!!$(param,element.form).length;},"function":function(param,element){return param(element);}},optional:function(element){return!$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch";},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;this.pending[element.name]=true;}},stopRequest:function(element,valid){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();}else if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",previous={old:null,valid:true,message:this.defaultMessage(element,"remote")});}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className);},classRules:function(element){var rules={};var classes=$(element).attr('class');classes&&$.each(classes.split(' '),function(){if(this in $.validator.classRuleSettings){$.extend(rules,$.validator.classRuleSettings[this]);}});return rules;},attributeRules:function(element){var rules={};var $element=$(element);for(method in $.validator.methods){var value=$element.attr(method);if(value){rules[method]=value;}}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength)){delete rules.maxlength;}return rules;},metadataRules:function(element){if(!$.metadata)return{};var meta=$.data(element.form,'validator').settings.meta;return meta?$(element).metadata()[meta]:$(element).metadata();},staticRules:function(element){var rules={};var validator=$.data(element.form,'validator');if(validator.settings.rules){rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{};}return rules;},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];return;}if(val.param||val.depends){var keepRule=true;switch(typeof val.depends){case"string":keepRule=!!$(val.depends,element.form).length;break;case"function":keepRule=val.depends.call(element,element);break;}if(keepRule){rules[prop]=val.param!==undefined?val.param:true;}else{delete rules[prop];}}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter;});$.each(['minlength','maxlength','min','max'],function(){if(rules[this]){rules[this]=Number(rules[this]);}});$.each(['rangelength','range'],function(){if(rules[this]){rules[this]=[Number(rules[this][0]),Number(rules[this][1])];}});if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];delete rules.min;delete rules.max;}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];delete rules.minlength;delete rules.maxlength;}}if(rules.messages){delete rules.messages}return rules;},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true;});data=transformed;}return data;},addMethod:function(name,method,message){$.validator.methods[name]=method;$.validator.messages[name]=message||$.validator.messages[name];if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name));}},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case'select':var options=$("option:selected",element);return options.length>0&&(element.type=="select-multiple"||($.browser.msie&&!(options[0].attributes['value'].specified)?options[0].text:options[0].value).length>0);case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return $.trim(value).length>0;}},remote:function(value,element,param){if(this.optional(element))return"dependency-mismatch";var previous=this.previousValue(element);if(!this.settings.messages[element.name])this.settings.messages[element.name]={};this.settings.messages[element.name].remote=typeof previous.message=="function"?previous.message(value):previous.message;param=typeof param=="string"&&{url:param}||param;if(previous.old!==value){previous.old=value;var validator=this;this.startRequest(element);var data={};data[element.name]=value;$.ajax($.extend(true,{url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){var valid=response===true;if(valid){var submitted=validator.formSubmitted;validator.prepareElement(element);validator.formSubmitted=submitted;validator.successList.push(element);validator.showErrors();}else{var errors={};errors[element.name]=previous.message=response||validator.defaultMessage(element,"remote");validator.showErrors(errors);}previous.valid=valid;validator.stopRequest(element,valid);}},param));return"pending";}else if(this.pending[element.name]){return"pending";}return previous.valid;},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param;},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param;},rangelength:function(value,element,param){var length=this.getLength($.trim(value),element);return this.optional(element)||(length>=param[0]&&length<=param[1]);},min:function(value,element,param){return this.optional(element)||value>=param;},max:function(value,element,param){return this.optional(element)||value<=param;},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1]);},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);},url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value));},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);},dateDE:function(value,element){return this.optional(element)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);},numberDE:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value);},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);var nDigit=parseInt(cDigit,10);if(bEven){if((nDigit*=2)>9)nDigit-=9;}nCheck+=nDigit;bEven=!bEven;}return(nCheck%10)==0;},accept:function(value,element,param){param=typeof param=="string"?param.replace(/,/g,'|'):"png|jpe?g|gif";return this.optional(element)||value.match(new RegExp(".("+param+")$","i"));},equalTo:function(value,element,param){return value==$(param).val();}}});$.format=$.validator.format;})(jQuery);;(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));var port=settings.port;if(settings.mode=="abort"){if(pendingRequests[port]){pendingRequests[port].abort();}return(pendingRequests[port]=ajax.apply(this,arguments));}return ajax.apply(this,arguments);};})(jQuery);;(function($){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){if($.browser.msie)return false;this.addEventListener(original,$.event.special[fix].handler,true);},teardown:function(){if($.browser.msie)return false;this.removeEventListener(original,$.event.special[fix].handler,true);},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments);}};});$.extend($.fn,{delegate:function(type,delegate,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate)){return handler.apply(target,arguments);}});},triggerEvent:function(type,target){return this.triggerHandler(type,[$.event.fix({type:type,target:target})]);}})})(jQuery);
/* 'jquery.jsonp 1.1.0 (c)2009 Julian Aubourg | MIT License
http://code.google.com/p/jquery-jsonp/ */
(function(d){var b=function(n){return n!==undefined&&n!==null},m=function(p,n,o){b(p)&&p.apply(n,o)},e=function(n){setTimeout(n,0)},f="",a="&",k="?",l="success",g="error",i=d("head"),h={},c={callback:"C",url:location.href},j=function(s){s=d.extend({},c,s);var r=s.beforeSend,A=0;s.abort=function(){A=1};if(b(r)&&(r(s,s)===false||A)){return s}var q=s.success,o=s.complete,v=s.error,C=s.dataFilter,G=s.callbackParameter,w=s.callback,D=s.cache,n=s.pageCache,t=s.url,I=s.data,x=s.timeout,z,H,F,E;t=b(t)?t:f;I=b(I)?((typeof I)=="string"?I:d.param(I)):f;b(G)&&(I+=(I==f?f:a)+escape(G)+"=?");!D&&!n&&(I+=(I==f?f:a)+"_"+(new Date()).getTime()+"=");z=t.split(k);if(I!=f){H=I.split(k);E=z.length-1;E&&(z[E]+=a+H.shift());z=z.concat(H)}F=z.length-2;F&&(z[F]+=w+z.pop());var p=z.join(k),B=function(J){b(C)&&(J=C.apply(s,[J]));m(q,s,[J,l]);m(o,s,[s,l])},y=function(J){m(v,s,[s,J]);m(o,s,[s,J])},u=h[p];if(n&&b(u)){e(function(){b(u.s)?B(u.s):y(g)});return s}e(function(){if(A){return}var J=d("<iframe />").appendTo(i),L=J[0],N=L.contentWindow||L.contentDocument,P=N.document,K,Q,R=function(S,T){n&&!b(T)&&(h[p]=f);K();y(b(T)?T:g)},M=function(T){N[T]=undefined;try{delete N[T]}catch(S){}},O=w=="E"?"X":"E";if(!b(P)){P=N;N=P.getParentNode()}P.open();N[w]=function(S){A=1;n&&(h[p]={s:S});e(function(){K();B(S)})};N[O]=function(S){(!S||S=="complete")&&!A++&&e(R)};s.abort=K=function(){clearTimeout(Q);P.open();M(O);M(w);P.write(f);P.close();J.remove()};P.write(['<html><head><script src="',p,'" onload="',O,'()" onreadystatechange="',O,'(this.readyState)"><\/script></head><body onload="',O,'()"></body></html>'].join(f));P.close();x>0&&(Q=setTimeout(function(){!A&&R(f,"timeout")},x))});return s};j.setup=function(n){d.extend(c,n)};d.jsonp=j})(jQuery);
/* PHPDate */
(function(f){var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var h=["January","February","March","April","May","June","July","August","September","October","November","December"];f.PHPDate=function(j,l){var n="";var q="";j=j.replace(/r/g,"D, j M Y H;i:s O");for(var p=0;p<j.length;p++){n=j.charAt(p);switch(n){case"a":n=g(l.getHours());break;case"c":n=(l.getFullYear()+"-"+b(l.getMonth())+"-"+b(l.getDate())+"T"+b(l.getHours())+":"+b(l.getMinutes())+":"+b(l.getSeconds()));var m=l.toString().split(" ")[5];if(m.indexOf("-")>-1){n+=m.substr(m.indexOf("-"))}else{if(m.indexOf("+")>-1){n+=m.substr(m.indexOf("+"))}else{n+="+0000"}}break;case"d":n=b(l.getDate());break;case"g":n=a(l.getHours());break;case"h":n=b(a(l.getHours()));break;case"i":n=b(l.getMinutes());break;case"j":n=l.getDate();break;case"l":n=c[l.getDay()];break;case"m":n=b(l.getMonth()+1);break;case"n":n=l.getMonth()+1;break;case"o":(new Date(d(l.getFullYear()))>l)?n=(l.getFullYear()-1):n=l.getFullYear();break;case"s":n=b(l.getSeconds());break;case"t":var u=new Date(l.valueOf());u.setMonth(u.getMonth()+1);u.setDate(0);n=u.getDate();break;case"u":n=l.getMilliseconds();break;case"w":n=l.getDay();break;case"y":n=l.getFullYear().toString().substr(2,2);break;case"z":var v=new Date(l.getFullYear(),0,1,0,0,0,0);var s=new Date(l.getFullYear(),l.getMonth(),l.getDate(),0,0,0,0);n=Math.round((s.valueOf()-v.valueOf())/1000/60/60/24);break;case"A":n=g(l.getHours()).toUpperCase();break;case"B":n=Math.floor(((l.getHours()*60*60*1000)+(l.getMinutes()*60*1000)+(l.getSeconds()*1000)+(l.getMilliseconds()))/86400);break;case"D":n=c[l.getDay()].substr(0,3);break;case"F":n=h[l.getMonth()];break;case"G":n=l.getHours();break;case"H":n=b(l.getHours());break;case"I":var o=new Date(l.getFullYear(),0,1);var t=new Date(l.getFullYear(),l.getMonth(),l.getDate());var k=(t.valueOf()-o.valueOf())/1000/60/60/24;(k==Math.round(k))?n=0:n=1;break;case"L":((new Date(l.getFullYear(),2,0)).getDate()==29)?n=1:n=0;break;case"M":n=h[l.getMonth()].substr(0,3);break;case"N":(l.getDay()==0)?n=7:n=l.getDay();break;case"O":var m=l.toString().split(" ")[5];if(m.indexOf("-")>-1){n=m.substr(m.indexOf("-"))}else{if(m.indexOf("+")>-1){n=m.substr(m.indexOf("+"))}else{n="+0000"}}break;case"P":var m=l.toString().split(" ")[5];if(m.indexOf("-")>-1){var r=m.substr(m.indexOf("-")+1).split("");n=("-"+r[0]+r[1]+":"+r[2]+r[3])}else{if(m.indexOf("+")>-1){var r=m.substr(m.indexOf("+")+1).split("");n=("+"+r[0]+r[1]+":"+r[2]+r[3])}else{n="+00:00"}}break;case"S":n=e(l.getDate());break;case"T":n=l.toString().split(" ")[5];if(n.indexOf("+")>-1){n=n.substr(0,n.indexOf("+"))}else{if(n.indexOf("-")>-1){n=n.substr(0,n.indexOf("-"))}}break;case"U":n=Math.floor(l.getTime()/1000);break;case"W":var o=new Date(d(l.getFullYear()));var t=new Date(l.getFullYear(),l.getMonth(),l.getDate());n=Math.ceil(Math.round((t.valueOf()-o.valueOf())/1000/60/60/24)/7);break;case"Y":n=l.getFullYear();break;case"Z":(l.getTimezoneOffset()<0)?n=Math.abs(l.getTimezoneOffset()*60):n=(0-(l.getTimezoneOffset()*60));break}q+=n.toString()}return q};function b(i){if(i<10){i=("0"+i)}return i}function g(i){if(i>11){return"pm"}else{return"am"}}function e(j){var i="th";switch(parseInt(j)){case 1:case 21:case 31:i="st";break;case 2:case 22:i="nd";break;case 3:case 23:i="rd"}return i}function d(j){var i=new Date(j,0,1);while(i.getDay()!=1){i.setDate(i.getDate()+1)}return i.valueOf()}function a(i){if(i==0){i=24}else{if(i>12){i-=12}}return i}})(jQuery);
/* JQuery Twitter Plugin */
/**
 * @author Stéphane Roucheray
 * @extends jQuery
 */


(function($){

var base_url    = "http://twitter.com/",
search_base_url = "http://search.twitter.com/",
urls = {
	search         : search_base_url + "search",
	help_test      : base_url + "help/test",
	
	trends         : search_base_url + "trends",
	trends_current : search_base_url + "trends/current",
	trends_daily   : search_base_url + "trends/daily",
	trends_weekly  : search_base_url + "trends/weekly",
	
	statuses_public_timeline  : base_url + "statuses/public_timeline",
	statuses_friends_timeline : base_url + "statuses/friends_timeline",
	statuses_user_timeline    : base_url + "statuses/user_timeline",
	statuses_mentions         : base_url + "statuses/mentions",
	statuses_show             : base_url + "statuses/show",
	statuses_update           : base_url + "statuses/update",
	statuses_destroy          : base_url + "statuses/destroy",
	statuses_friends          : base_url + "statuses/friends",
	statuses_followers        : base_url + "statuses/followers",
	
	retweeted_by_me			  : base_url + "statuses/retweeted_by_me",
	
	users_show : base_url + "users/show",
	
	direct_messages      : base_url + "direct_messages",
	direct_messages_sent : base_url + "direct_messages/sent",
	direct_messages_new  : base_url + "direct_messages/new",
	direct_messages      : base_url + "direct_messages/destroy",
	
	friendship_create    : base_url + "friendships/create",
	friendship_destroy   : base_url + "friendships/destroy",
	friendship_exists    : base_url + "friendships/exists",
	
	friends_ids          : base_url + "friends/ids",
	followers_ids        : base_url + "followers/ids",
	
	account_verify_credentials               : base_url + "account/verify_credentials",
	account_rate_limit_status                : base_url + "account/rate_limit_status",
	account_end_session                      : base_url + "account/end_session",
	account_update_delivery_device           : base_url + "account/update_delivery_device",
	account_update_profile_colors            : base_url + "account/update_profile_colors",
	account_update_profile_image             : base_url + "account/update_profile_image",
	account_update_profile_background_image  : base_url + "account/",
	account_update_profile                   : base_url + "account/update_profile/update_profile_background_image",
	
	favorites              : base_url + "favorites",
	favorites_create       : base_url + "favorites/create/",
	favorites_destroy      : base_url + "favorites/destroy",
	 
	notifications_follow   : base_url + "notifications/follow",
	notifications_leave    : base_url + "notifications/leave",
	
	blocks_create          : base_url + "blocks/create",
	blocks_destroy         : base_url + "blocks/destroy",
	blocks_exists          : base_url + "blocks/exists",
	blocks_blocking        : base_url + "blocks/blocking",
	blocks_ids             : base_url + "blocks/blocking/ids",
	
	saved_searches         : base_url + "saved_searches",
	saved_searches_show    : base_url + "saved_searches/show",
	saved_searches_create  : base_url + "saved_searches/create",
	saved_searches_destroy : base_url + "saved_searches/destroy",
	
	oauth_request_token    : base_url + "oauth/request_token",
	oauth_authorize        : base_url + "oauth/authorize",
	oauth_authenticate     : base_url + "oauth/authenticate",
	oauth_access_token     : base_url + "oauth/access_token"
	
};

//Generic private methods to build requests
// parameters : $.ajax method specific parameters
// data : data encoded in the get url string
function request(parameters /* Object */, data /* Object */){
	parameters = $.extend({
		data:data
	}, parameters);
	
	parameters.url = parameters.url + ".json";

	//Bug in jQuery with jsonp, if "jsonp" plugin is present then use it  
	if ($.jsonp && $.isFunction($.jsonp)) {
		parameters.url += "?callback=?";
		$.jsonp(parameters);
	}else{
		parameters.dataType = "jsonp";
		$.ajax( parameters );
	}
};

// Delete all parameters Object properties not specified in the authorized Array
function cleanupParam(parameters /* Object */, authorized /* Array */){
	if (parameters) {
		$.each(parameters, function(key, value){
			if ($.inArray(key, authorized) == -1) {
				delete parameters[key];
			}
		});
	}
	
	return parameters || {};
}

// Delete non wanted 
function getAjaxParam(options, url, success){
	var ajaxParams = [
		"async",
		"cache",
		"complete",
		"contentType",
	//	"data",   // In our case, data is set outside this object
		"dataFilter",
	//	"dataType", // Always jsonp
		"error",
		"global",
		"ifModified",
	//	"jsonp", // callback name must not be renamed
		"password",
		"processData",
		"scriptCharset",
	//	"success", // In our case, success is set outside this object
		"timeout",
	//	"type", // Type, GET or POST, is determined by the calling method
	//	"url", //  User not need to set the url
		"username",
		"xhr"],
		
	output = {};
	if (ajaxParams && options) {
		//Delete extra parameters
		$.each(options, function(key, value){
			if ($.inArray(key, ajaxParams) != -1) {
				output[key] = value;
			}
		});
	}
	
	output.url = url;
	output.success = success;
	
	return output;
}

/* 
 * Generic twitter object method 
 */
$.twitter = {

	/* Help Methods */
	test : function(callback, options){
		var ajaxParam = getAjaxParam(options, urls.help_test, callback);
		request(ajaxParam);
	},

	/* Search API Methods */ 
	search : function(query, callback, options){
		// From options, extract jQuery Ajax param
		// And add the url and the callback method 
		var ajaxParam = getAjaxParam(options, urls.search, callback);
		
		// From options cleanup non Twitter params
		options = cleanupParam(
			options, 
			["callback","lang","rpp","page","since_id","geocode","show_user"]
		);
					
		// Limit search to 140 characters
		// And add the query to the options
		options = $.extend(
			{
				q : query.substr(0, 140)
			},options
		);
		
		// Make the request
		request(ajaxParam, options);
	},
	
	/* Trends main method */
	trends : function(callback, options){
		var ajaxParam = getAjaxParam(options, urls.trends, callback);
		request(ajaxParam);
	},
	
	statuses : {}, //No direct function
	
	users : {}, //No direct function
	
	direct_messages : function(){}, //TODO: implements
	
	friendships : {}, //No direct function
	
	friends : {}, //No direct function
	
	followers : {}, //No direct function
	
	account : {}, //No direct function
	
	favorites : function(){}, //TODO: implements
	
	notifications : {}, //No direct function
	
	blocks : {},
	
	saved_searches : function(){}, //TODO: implements
	
	oauth : {}  //No direct function
	
};

/* Simple searches */
$.twitter.search.user = function(username, callback, options){
	$.twitter.search("from:"+username, callback, options);
};
	
$.twitter.search.repliesTo = function(username, callback, options){
	$.twitter.search("to:"+username, callback, options);
};
	
$.twitter.search.mentioned = function(username, callback, options){
	$.twitter.search("@"+username, callback, options);
};
	
$.twitter.search.hashtag = function(hashtag, callback, options){
	$.twitter.search("#"+hashtag, callback, options);
};

/* Specifics trends */
$.twitter.trends.current = function(callback, options){
	// From options, extract jQuery Ajax param
	// And add the url and the callback method 
	var ajaxParam = getAjaxParam(options, urls.trends_current, callback);
	
	// From options cleanup non Twitter params		
	options = cleanupParam(
		options, 
		["exclude"]
	);
	
	request(ajaxParam, options);
};
$.twitter.trends.daily = function(callback){//TODO: implements options
	request(
		{
			url: urls.trends_daily,
			success: callback
		}
	);
};
$.twitter.trends.weekly = function(callback){//TODO: implements options
	request(
		{
			url: urls.trends_weekly,
			success: callback
		}
	);
};

/* Timeline Methods */

$.twitter.statuses.publicTimeline = function(callback, options){
	var ajaxParam = getAjaxParam(options, urls.statuses_public_timeline, callback);

	request(ajaxParam);
};

$.twitter.statuses.userTimeline = function(userid, callback, options){
	var ajaxParam = getAjaxParam(options, urls.statuses_user_timeline + "/" + userid, callback);
	request(ajaxParam);
};

/* Status Methods */

//Requires authentication if the author of the status is protected
$.twitter.statuses.show = function(userid, callback, options){
	var ajaxParam = getAjaxParam(options, urls.statuses_show + "/" + userid, callback);
	request(ajaxParam);
};

/* User Methods */

$.twitter.users.show = function(userid, callback, options){	
	//TODO : check userid is number until
	if (userid){
		options.user_id = userid;
	}
	
	var ajaxParam = getAjaxParam(options, urls.users_show + "/" + userid, callback);
	
	options = cleanupParam(
			options, 
			["id","user_id","screen_name"]
		);

	request(ajaxParam, options);
};


$.twitter.statuses.friends = function(userid, callback, options){
	if (userid){
		options.user_id = userid;
	}
	
	var ajaxParam = getAjaxParam(options, urls.statuses_friends + "/" + userid, callback);
	
	options = cleanupParam(
			options, 
			["id","user_id","screen_name", "page"]
		);
		
	request(ajaxParam, options);
};

/* Social Graph Methods */
$.twitter.friends.ids = function(userid, callback, options){
	if (userid){
		options.user_id = userid;
	}
	
	var ajaxParam = getAjaxParam(options, urls.friends_ids + "/" + userid, callback);
	
	options = cleanupParam(
			options, 
			["id","user_id","screen_name", "page"]
		);
		
	request(ajaxParam, options);
};
$.twitter.followers.ids = function(userid, callback, options){
	if (userid){
		options.user_id = userid;
	}
	
	var ajaxParam = getAjaxParam(options, urls.followers_ids + "/" + userid, callback);
	
	options = cleanupParam(
			options, 
			["id","user_id","screen_name", "page"]
		);
		
	request(ajaxParam, options);
};

//Only for IP rate limit status
$.twitter.account.rateLimitStatus = function(callback, options){
	var ajaxParam = getAjaxParam(options, urls.account_rate_limit_status, callback);
	
	request(ajaxParam);
};

})(jQuery);

/* Autolink */
jQuery.fn.autolink = function () {
	return this.each( function(){
		var re = /((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g;
		$(this).html( $(this).html().replace(re, '<a href="$1">$1</a> ') );
	});
}

/* ePSIplatform JS */
$(document).ready(function(){

	function setEqualHeight(container) {
		columns = container.children().filter("div");
		var tallestcolumn = 0;
		columns.each(
			function() {
				currentHeight = $(this).height();
				if(currentHeight > tallestcolumn) {
					tallestcolumn  = currentHeight;
				}
			}
		);
		container.css("height",tallestcolumn);
	}
	$("#nav-toolbox #login-link").click(function() {
		$("#login-form").fadeIn(500, function() { $(this).css("display", "inline") });
		$("#login-link").fadeOut();
		return false;
	});
	
	$.twitter.statuses.userTimeline("epsiplatform",twitterSuccess);
	
	setEqualHeight($("#main"));
	setEqualHeight($(".main-content .block"));
	setEqualHeight($(".folder .panel"));
	
	// AJAX Paginator
	$('.paginator a').live('click', function() {
		var id = $(this).attr("id").split("_")[2];
		var url = Base64.encode($(this).attr("href"));
		var url = $(this).attr("href");
		url = url.replace("ezwebin_site/","");
		$('.main-content:first').load('/layout/set/ajax/'+url);
		return false;
	});
	$('.search .paginator a').die('click');
	/*var loader = $('<div>');
	loader.addClass('loader');
	$('.main-content:first').ajaxStart(function() {
		$(this).html("");
		$(this).append($(loader));
		$('html, body').animate({scrollTop:0}, 'slow');
	});
	$('.main-content:first').ajaxComplete(function() {
		$(this).fadeIn();
	});*/
	
	// Sitemap Toggle
	if($.cookie('epsiplatform_showsitemap')=="false") {
		$('.sitemap').hide();
	}
	$('.sitemap-toggle').click(function() {
		if($('.sitemap').css('display')=='none') {
			$('.sitemap').slideDown('slow');
			$.cookie('epsiplatform_showsitemap', 'true');
		} else {
			$('.sitemap').slideUp('slow');
			$.cookie('epsiplatform_showsitemap', 'false');
		}
		return false;
	});
	
	// Search Field
	$("#search-section").change(function() {
		$("#search-from").attr("checked","checked");
	});
	
  // Registration Validation
  $(".register.section form").validate();
	jQuery.fn.fadeToggle = function(speed, easing, callback) { 
   		return this.animate({opacity: 'toggle'}, speed, easing, callback); 
	};
	$('.report-link').wrap("<a></a>");
	$('.report-comment form').wrap("<div></div>").parent().addClass("report-box");
	$('.report-comment a').click(function(){
		$(this).siblings(".report-box").fadeToggle();
		return false;
	});

  
  // Blogger Toggle
  $('.section.blogger-info').addClass('toggle');
  $('.section.blogger-info:first').addClass('main').addClass('show');
  $('.section.weblog-group').not('.section.weblog-group:first').hide();
  $('.blogger-info').click(function() {
    $(this).toggleClass('show');
    $(this).next('.weblog-group').slideToggle();
  });
  
  $("a[href='#aboutthisblog']").parent().parent().next().hide();
	toggleStatus = $("<span>");
	toggleStatus.html("+ ");
	toggleStatus.css("font-size", "16px");
	$("a[href='#aboutthisblog']").prepend(toggleStatus);
	$("a[href='#aboutthisblog']").click(function() {
		var aboutthisblog = $(this).parent().parent().next();
		if(aboutthisblog.css('display')=='none') {
			aboutthisblog.slideDown('slow');
			toggleStatus.html("- ");
		} else {
			aboutthisblog.slideUp('slow');
			toggleStatus.html("+ ");
		}
		return false;
	});
  
	/*$('.photo-gallery').galleryView({
		panel_width: 500,
		panel_height: 300,
		frame_width: 100,
		frame_height: 100,
		nav_theme: "/extension/epsiplatform/design/epsiplatform/res/img/gallery/",
		transition_interval: 50000,
		frame_opacity: 1
	});*/
	
	var gallery = $('.gallery #thumbs').galleriffic({
	        delay:                     3000, // in milliseconds
	        numThumbs:                 4, // The number of thumbnails to show page
	        preloadAhead:              40, // Set to -1 to preload all images
	        enableTopPager:            false,
	        enableBottomPager:         true,
	        maxPagesToShow:            7,  // The maximum number of pages to display in either the top or bottom pager
	        imageContainerSel:         '#slideshow', // The CSS selector for the element within which the main slideshow image should be rendered
	        controlsContainerSel:      '#controls', // The CSS selector for the element within which the slideshow controls should be rendered
	        captionContainerSel:       '#caption', // The CSS selector for the element within which the captions should be rendered
	        loadingContainerSel:       '#loading', // The CSS selector for the element within which should be shown when an image is loading
	        renderSSControls:          true, // Specifies whether the slideshow's Play and Pause links should be rendered
	        renderNavControls:         true, // Specifies whether the slideshow's Next and Previous links should be rendered
	        playLinkText:              'Play',
	        pauseLinkText:             'Pause',
	        prevLinkText:              'Previous',
	        nextLinkText:              'Next',
	        nextPageLinkText:          'Next &rsaquo;',
	        prevPageLinkText:          '&lsaquo; Prev',
	        enableKeyboardNavigation:  true, // Specifies whether keyboard navigation is enabled
	        defaultTransitionDuration: 1000
	    });

	function twitterSuccess(jsonData, textStatus) {
		$.each(jsonData, function(i, item) {
			if(i==5) {
				return false;
			}
			var tweet = $("<li>").addClass("tweet-"+item.id);
			if(i==0) {
				$(tweet).addClass("first");
			}
			var date = item.created_at;
			var day = date.substr(8,2);
			var month = date.substr(4,3);
			var year = date.substr(date.length-4,4);
			var d = new Date(day+' '+month+' '+year);
			var date_string = $.PHPDate("d F Y", d);
			$(tweet).html(
				'<a href="http://www.twitter.com/'+item.user.screen_name+'/status/'+item.id+'">'+
				'<span class="tweet-user">'+item.user.screen_name+': </span>'+
				'<span class="intro">'+item.text+''+
				'<span class="timestamp">'+date_string+'</span></span>'+
				'</a>'
			)
			$("#tweets").append(tweet);
		});
		$("#tweets .intro").autolink();
		setEqualHeight($("#main"));
	}

	
});