/** 
 * JSON Cookie - jquery.jsoncookie.js
 *
 * Sets and retreives native JavaScript objects as cookies.
 * Depends on the object serialization framework provided by JSON2.
 *
 * Dependencies: jQuery, jQuery Cookie, JSON2
 * 
 * @project JSON Cookie
 * @author Randall Morey
 * @version 0.9
 */
(function ($) {
 var isObject = function (x) {
 return (typeof x === 'object') && !(x instanceof Array) && (x !== null);
 };
 
 $.extend({
 getJSONCookie: function (cookieName) {
 var cookieData = $.cookie(cookieName);
 return cookieData ? JSON.parse(cookieData) : {};
 },
 setJSONCookie: function (cookieName, data, options) {
 var cookieData = '';
 
 options = $.extend({
 expires: 90,
 path: '/'
 }, options);
 
 if (!isObject(data)) { // data must be a true object to be serialized
 throw new Error('JSONCookie data must be an object');
 }
 
 cookieData = JSON.stringify(data);
 
 return $.cookie(cookieName, cookieData, options);
 },
 removeJSONCookie: function (cookieName) {
 return $.cookie(cookieName, null);
 },
 JSONCookie: function (cookieName, data, options) {
 if (data) {
 $.setJSONCookie(cookieName, data, options);
 }
 return $.getJSONCookie(cookieName);
 }
 });
})(jQuery);

/* ColorBox v1.3.6 - a full featured, light-weight, customizable lightbox based on jQuery 1.3 */
(function(c){function r(b,d){d=d==="x"?m.width():m.height();return typeof b==="string"?Math.round(b.match(/%/)?d/100*parseInt(b,10):parseInt(b,10)):b}function M(b){b=c.isFunction(b)?b.call(i):b;return a.photo||b.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i)}function Y(){for(var b in a)if(c.isFunction(a[b])&&b.substring(0,2)!=="on")a[b]=a[b].call(i);a.rel=a.rel||i.rel;a.href=a.href||i.href;a.title=a.title||i.title}function Z(b){i=b;a=c(i).data(q);Y();if(a.rel&&a.rel!=="nofollow"){g= c(".cboxElement").filter(function(){return(c(this).data(q).rel||this.rel)===a.rel});j=g.index(i);if(j<0){g=g.add(i);j=g.length-1}}else{g=c(i);j=0}if(!B){C=B=n;N=i;N.blur();c(document).bind("keydown.cbox_close",function(d){if(d.keyCode===27){d.preventDefault();e.close()}}).bind("keydown.cbox_arrows",function(d){if(g.length>1)if(d.keyCode===37){d.preventDefault();D.click()}else if(d.keyCode===39){d.preventDefault();E.click()}});a.overlayClose&&s.css({cursor:"pointer"}).one("click",e.close);c.event.trigger(aa); a.onOpen&&a.onOpen.call(i);s.css({opacity:a.opacity}).show();a.w=r(a.initialWidth,"x");a.h=r(a.initialHeight,"y");e.position(0);O&&m.bind("resize.cboxie6 scroll.cboxie6",function(){s.css({width:m.width(),height:m.height(),top:m.scrollTop(),left:m.scrollLeft()})}).trigger("scroll.cboxie6")}P.add(D).add(E).add(t).add(Q).hide();R.html(a.close).show();e.slideshow();e.load()}var q="colorbox",F="hover",n=true,e,x=!c.support.opacity,O=x&&!window.XMLHttpRequest,aa="cbox_open",H="cbox_load",S="cbox_complete", T="resize.cbox_resize",s,k,u,p,U,V,W,X,g,m,l,I,J,K,Q,P,t,E,D,R,y,z,v,w,i,N,j,a,B,C,$={transition:"elastic",speed:350,width:false,height:false,innerWidth:false,innerHeight:false,initialWidth:"400",initialHeight:"400",maxWidth:false,maxHeight:false,scalePhotos:n,scrolling:n,inline:false,html:false,iframe:false,photo:false,href:false,title:false,rel:false,opacity:0.9,preloading:n,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",open:false,overlayClose:n,slideshow:false, slideshowAuto:n,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",onOpen:false,onLoad:false,onComplete:false,onCleanup:false,onClosed:false};e=c.fn.colorbox=function(b,d){var h=this;if(!h.length)if(h.selector===""){h=c("<a/>");b.open=n}else return this;h.each(function(){var f=c.extend({},c(this).data(q)?c(this).data(q):$,b);c(this).data(q,f).addClass("cboxElement");if(d)c(this).data(q).onComplete=d});b&&b.open&&Z(h);return this};e.init=function(){function b(d){return c('<div id="cbox'+ d+'"/>')}m=c(window);k=c('<div id="colorbox"/>');s=b("Overlay").hide();u=b("Wrapper");p=b("Content").append(l=b("LoadedContent").css({width:0,height:0}),J=b("LoadingOverlay"),K=b("LoadingGraphic"),Q=b("Title"),P=b("Current"),t=b("Slideshow"),E=b("Next"),D=b("Previous"),R=b("Close"));u.append(c("<div/>").append(b("TopLeft"),U=b("TopCenter"),b("TopRight")),c("<div/>").append(V=b("MiddleLeft"),p,W=b("MiddleRight")),c("<div/>").append(b("BottomLeft"),X=b("BottomCenter"),b("BottomRight"))).children().children().css({"float":"left"}); I=c("<div style='position:absolute; top:0; left:0; width:9999px; height:0;'/>");c("body").prepend(s,k.append(u,I));if(x){k.addClass("cboxIE");O&&s.css("position","absolute")}p.children().bind("mouseover mouseout",function(){c(this).toggleClass(F)}).addClass(F);y=U.height()+X.height()+p.outerHeight(n)-p.height();z=V.width()+W.width()+p.outerWidth(n)-p.width();v=l.outerHeight(n);w=l.outerWidth(n);k.css({"padding-bottom":y,"padding-right":z}).hide();E.click(e.next);D.click(e.prev);R.click(e.close);p.children().removeClass(F); c(".cboxElement").live("click",function(d){if(d.button!==0&&typeof d.button!=="undefined")return n;else{Z(this);return false}})};e.position=function(b,d){function h(A){U[0].style.width=X[0].style.width=p[0].style.width=A.style.width;K[0].style.height=J[0].style.height=p[0].style.height=V[0].style.height=W[0].style.height=A.style.height}var f=m.height();f=Math.max(f-a.h-v-y,0)/2+m.scrollTop();var o=Math.max(document.documentElement.clientWidth-a.w-w-z,0)/2+m.scrollLeft();b=k.width()===a.w+w&&k.height()=== a.h+v?0:b;u[0].style.width=u[0].style.height="9999px";k.dequeue().animate({width:a.w+w,height:a.h+v,top:f,left:o},{duration:b,complete:function(){h(this);C=false;u[0].style.width=a.w+w+z+"px";u[0].style.height=a.h+v+y+"px";d&&d()},step:function(){h(this)}})};e.resize=function(b){function d(){a.w=a.w||l.width();a.w=a.mw&&a.mw<a.w?a.mw:a.w;return a.w}function h(){a.h=a.h||l.height();a.h=a.mh&&a.mh<a.h?a.mh:a.h;return a.h}function f(G){e.position(G,function(){if(B){if(x){A&&l.fadeIn(100);k[0].style.removeAttribute("filter")}if(a.iframe)l.append("<iframe id='cboxIframe'"+ (a.scrolling?" ":"scrolling='no'")+" name='iframe_"+(new Date).getTime()+"' frameborder=0 src='"+a.href+"' "+(x?"allowtransparency='true'":"")+" />");l.show();Q.show().html(a.title);if(g.length>1){P.html(a.current.replace(/\{current\}/,j+1).replace(/\{total\}/,g.length)).show();E.html(a.next).show();D.html(a.previous).show();a.slideshow&&t.show()}J.hide();K.hide();c.event.trigger(S);a.onComplete&&a.onComplete.call(i);a.transition==="fade"&&k.fadeTo(L,1,function(){x&&k[0].style.removeAttribute("filter")}); m.bind(T,function(){e.position(0)})}})}if(B){var o,A,L=a.transition==="none"?0:a.speed;m.unbind(T);if(b){l.remove();l=c('<div id="cboxLoadedContent"/>').html(b);l.hide().appendTo(I).css({width:d(),overflow:a.scrolling?"auto":"hidden"}).css({height:h()}).prependTo(p);c("#cboxPhoto").css({cssFloat:"none"});O&&c("select:not(#colorbox select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("cbox_cleanup",function(){this.style.visibility="inherit"});a.transition=== "fade"&&k.fadeTo(L,0,function(){f(0)})||f(L);if(a.preloading&&g.length>1){b=j>0?g[j-1]:g[g.length-1];o=j<g.length-1?g[j+1]:g[0];o=c(o).data(q).href||o.href;b=c(b).data(q).href||b.href;M(o)&&c("<img />").attr("src",o);M(b)&&c("<img />").attr("src",b)}}else setTimeout(function(){var G=l.wrapInner("<div style='overflow:auto'></div>").children();a.h=G.height();l.css({height:a.h});G.replaceWith(G.children());e.position(L)},1)}};e.load=function(){var b,d,h,f=e.resize;C=n;i=g[j];a=c(i).data(q);Y();c.event.trigger(H); a.onLoad&&a.onLoad.call(i);a.h=a.height?r(a.height,"y")-v-y:a.innerHeight?r(a.innerHeight,"y"):false;a.w=a.width?r(a.width,"x")-w-z:a.innerWidth?r(a.innerWidth,"x"):false;a.mw=a.w;a.mh=a.h;if(a.maxWidth){a.mw=r(a.maxWidth,"x")-w-z;a.mw=a.w&&a.w<a.mw?a.w:a.mw}if(a.maxHeight){a.mh=r(a.maxHeight,"y")-v-y;a.mh=a.h&&a.h<a.mh?a.h:a.mh}b=a.href;J.show();K.show();if(a.inline){c('<div id="cboxInlineTemp" />').hide().insertBefore(c(b)[0]).bind(H+" cbox_cleanup",function(){c(this).replaceWith(l.children())}); f(c(b))}else if(a.iframe)f(" ");else if(a.html)f(a.html);else if(M(b)){d=new Image;d.onload=function(){var o;d.onload=null;d.id="cboxPhoto";c(d).css({margin:"auto",border:"none",display:"block",cssFloat:"left"});if(a.scalePhotos){h=function(){d.height-=d.height*o;d.width-=d.width*o};if(a.mw&&d.width>a.mw){o=(d.width-a.mw)/d.width;h()}if(a.mh&&d.height>a.mh){o=(d.height-a.mh)/d.height;h()}}if(a.h)d.style.marginTop=Math.max(a.h-d.height,0)/2+"px";f(d);g.length>1&&c(d).css({cursor:"pointer"}).click(e.next); if(x)d.style.msInterpolationMode="bicubic"};d.src=b}else c("<div />").appendTo(I).load(b,function(o,A){A==="success"?f(this):f(c("<p>Request unsuccessful.</p>"))})};e.next=function(){if(!C){j=j<g.length-1?j+1:0;e.load()}};e.prev=function(){if(!C){j=j>0?j-1:g.length-1;e.load()}};e.slideshow=function(){function b(){t.text(a.slideshowStop).bind(S,function(){h=setTimeout(e.next,a.slideshowSpeed)}).bind(H,function(){clearTimeout(h)}).one("click",function(){d();c(this).removeClass(F)});k.removeClass(f+ "off").addClass(f+"on")}var d,h,f="cboxSlideshow_";t.bind("cbox_closed",function(){t.unbind();clearTimeout(h);k.removeClass(f+"off "+f+"on")});d=function(){clearTimeout(h);t.text(a.slideshowStart).unbind(S+" "+H).one("click",function(){b();h=setTimeout(e.next,a.slideshowSpeed);c(this).removeClass(F)});k.removeClass(f+"on").addClass(f+"off")};if(a.slideshow&&g.length>1)a.slideshowAuto?b():d()};e.close=function(){c.event.trigger("cbox_cleanup");a.onCleanup&&a.onCleanup.call(i);B=false;c(document).unbind("keydown.cbox_close keydown.cbox_arrows"); m.unbind(T+" resize.cboxie6 scroll.cboxie6");s.css({cursor:"auto"}).fadeOut("fast");k.stop(n,false).fadeOut("fast",function(){c("#colorbox iframe").attr("src","about:blank");l.remove();k.css({opacity:1});try{N.focus()}catch(b){}c.event.trigger("cbox_closed");a.onClosed&&a.onClosed.call(i)})};e.element=function(){return c(i)};e.settings=$;c(e.init)})(jQuery);
﻿/**
* jQuery.query - Query String Modification and Creation for jQuery
* Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
* Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
* Date: 2009/8/13
*
* @author Blair Mitchelmore
* @version 2.1.7
*
* MarkAL.net: modified get to return undefined when requested key doesn't exist (has() now works)
**/
new function(settings) {
 // Various Settings
 var $separator = settings.separator || '&';
 var $spaces = settings.spaces === false ? false : true;
 var $suffix = settings.suffix === false ? '' : '[]';
 var $prefix = settings.prefix === false ? false : true;
 var $hash = $prefix ? settings.hash === true ? "#" : "?" : "";
 var $numbers = settings.numbers === false ? false : true;

 jQuery.query = new function() {
 var is = function(o, t) {
 return o != undefined && o !== null && (!!t ? o.constructor == t : true);
 };
 var parse = function(path) {
 var m, rx = /\[([^[]*)\]/g, match = /^([^[]+)(\[.*\])?$/.exec(path), base = match[1], tokens = [];
 while (m = rx.exec(match[2])) tokens.push(m[1]);
 return [base, tokens];
 };
 var set = function(target, tokens, value) {
 var o, token = tokens.shift();
 if (typeof target != 'object') target = null;
 if (token === "") {
 if (!target) target = [];
 if (is(target, Array)) {
 target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
 } else if (is(target, Object)) {
 var i = 0;
 while (target[i++] != null);
 target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value);
 } else {
 target = [];
 target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
 }
 } else if (token && token.match(/^\s*[0-9]+\s*$/)) {
 var index = parseInt(token, 10);
 if (!target) target = [];
 target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
 } else if (token) {
 var index = token.replace(/^\s*|\s*$/g, "");
 if (!target) target = {};
 if (is(target, Array)) {
 var temp = {};
 for (var i = 0; i < target.length; ++i) {
 temp[i] = target[i];
 }
 target = temp;
 }
 target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
 } else {
 return value;
 }
 return target;
 };

 var queryObject = function(a) {
 var self = this;
 self.keys = {};

 if (a.queryObject) {
 jQuery.each(a.get(), function(key, val) {
 self.SET(key, val);
 });
 } else {
 jQuery.each(arguments, function() {
 var q = "" + this;
 q = q.replace(/^[?#]/, ''); // remove any leading ? || #
 q = q.replace(/[;&]$/, ''); // remove any trailing & || ;
 if ($spaces) q = q.replace(/[+]/g, ' '); // replace +'s with spaces

 jQuery.each(q.split(/[&;]/), function() {
 var key = decodeURIComponent(this.split('=')[0] || "");
 var val = decodeURIComponent(this.split('=')[1] || "");

 if (!key) return;

 if ($numbers) {
 if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float regex
 val = parseFloat(val);
 else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex
 val = parseInt(val, 10);
 }

 val = (!val && val !== 0) ? true : val;

 if (val !== false && val !== true && typeof val != 'number')
 val = val;

 self.SET(key, val);
 });
 });
 }
 return self;
 };

 queryObject.prototype = {
 queryObject: true,
 has: function(key, type) {
 var value = this.get(key);
 return is(value, type);
 },
 GET: function(key) {
 if (!is(key)) return this.keys;
 var parsed = parse(key), base = parsed[0], tokens = parsed[1];
 var target = this.keys[base];
 while (target != null && tokens.length != 0) {
 target = target[tokens.shift()];
 }
 return typeof target == 'number' ? target : target || undefined; // MarkAL.net
 },
 get: function(key) {
 var target = this.GET(key);
 if (is(target, Object))
 return jQuery.extend(true, {}, target);
 else if (is(target, Array))
 return target.slice(0);
 return target;
 },
 SET: function(key, val) {
 var value = !is(val) ? null : val;
 var parsed = parse(key), base = parsed[0], tokens = parsed[1];
 var target = this.keys[base];
 this.keys[base] = set(target, tokens.slice(0), value);
 return this;
 },
 set: function(key, val) {
 return this.copy().SET(key, val);
 },
 REMOVE: function(key) {
 return this.SET(key, null).COMPACT();
 },
 remove: function(key) {
 return this.copy().REMOVE(key);
 },
 EMPTY: function() {
 var self = this;
 jQuery.each(self.keys, function(key, value) {
 delete self.keys[key];
 });
 return self;
 },
 load: function(url) {
 var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1");
 var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1");
 return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash);
 },
 empty: function() {
 return this.copy().EMPTY();
 },
 copy: function() {
 return new queryObject(this);
 },
 COMPACT: function() {
 function build(orig) {
 var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig;
 if (typeof orig == 'object') {
 function add(o, key, value) {
 if (is(o, Array))
 o.push(value);
 else
 o[key] = value;
 }
 jQuery.each(orig, function(key, value) {
 if (!is(value)) return true;
 add(obj, key, build(value));
 });
 }
 return obj;
 }
 this.keys = build(this.keys);
 return this;
 },
 compact: function() {
 return this.copy().COMPACT();
 },
 toString: function() {
 var i = 0, queryString = [], chunks = [], self = this;
 var encode = function(str) {
 str = str + "";
 if ($spaces) str = str.replace(/ /g, "+");
 return encodeURIComponent(str);
 };
 var addFields = function(arr, key, value) {
 if (!is(value) || value === false) return;
 var o = [encode(key)];
 if (value !== true) {
 o.push("=");
 o.push(encode(value));
 }
 arr.push(o.join(""));
 };
 var build = function(obj, base) {
 var newKey = function(key) {
 return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join("");
 };
 jQuery.each(obj, function(key, value) {
 if (typeof value == 'object')
 build(value, newKey(key));
 else
 addFields(chunks, newKey(key), value);
 });
 };

 build(this.keys);

 if (chunks.length > 0) queryString.push($hash);
 queryString.push(chunks.join($separator));

 return queryString.join("");
 }
 };

 return new queryObject(location.search, location.hash);
 };
} (jQuery.query || {}); // Pass in jQuery.query as settings object

