/*
 * jQuery Address Plugin v1.3.2
 * http://www.asual.com/jquery/address/
 *
 * Copyright (c) 2009-2010 Rostislav Hristov
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Date: 2011-02-04 12:34:19 +0200 (Fri, 04 Feb 2011)
 */
(function(c){c.address=function(){var z=function(a){c(c.address).trigger(c.extend(c.Event(a),function(){for(var b={},e=c.address.parameterNames(),h=0,q=e.length;h<q;h++)b[e[h]]=c.address.parameter(e[h]);return{value:c.address.value(),path:c.address.path(),pathNames:c.address.pathNames(),parameterNames:e,parameters:b,queryString:c.address.queryString()}}.call(c.address)))},A=function(a,b,e){c(c.address).bind(a,b,e);return c.address},C=function(){return B.pushState&&d.state!==i},u=function(){return("/"+
g.pathname.replace(new RegExp(d.state),"")+g.search+(K()?"#"+K():"")).replace(ba,"/")},K=function(){var a=g.href.indexOf("#");return a!=-1?D(g.href.substr(a+1),l):""},w=function(){return C()?u():K()},va=function(){return"javascript"},r=function(a){a=a.toString();return(d.strict&&a.substr(0,1)!="/"?"/":"")+a},D=function(a,b){if(d.crawlable&&b)return(a!=""?"!":"")+a;return a.replace(/^\!/,"")},E=function(a,b){return parseInt(a.css(b),10)},ca=function(a){for(var b,e,h=0,q=a.childNodes.length;h<q;h++){if(a.childNodes[h].src)b=
String(a.childNodes[h].src);if(e=ca(a.childNodes[h]))b=e}return b},O=function(){if(!T){var a=w(),b=f!=a;if(F&&p<523){if(L!=B.length){L=B.length;if(J[L-1]!==i)f=J[L-1];M(l)}}else if(b)if(G&&p<7)g.reload();else{G&&p<8&&d.history&&x(W,50);f=a;M(l)}}},M=function(a){z(da);z(a?ea:fa);x(ga,10)},ga=function(){if(d.tracker!=="null"&&d.tracker!==null){var a=c.isFunction(d.tracker)?d.tracker:k[d.tracker],b=(g.pathname+g.search+(c.address&&!C()?c.address.value():"")).replace(/\/\//,"/").replace(/^\/$/,"");if(c.isFunction(a))a(b);
else if(c.isFunction(k.urchinTracker))k.urchinTracker(b);else if(k.pageTracker!==i&&c.isFunction(k.pageTracker._trackPageview))k.pageTracker._trackPageview(b);else k._gaq!==i&&c.isFunction(k._gaq.push)&&k._gaq.push(["_trackPageview",decodeURI(b)])}},W=function(){var a=va()+":"+l+";document.open();document.writeln('<html><head><title>"+n.title.replace("'","\\'")+"</title><script>var "+s+' = "'+encodeURIComponent(w())+(n.domain!=g.hostname?'";document.domain="'+n.domain:"")+"\";<\/script></head></html>');document.close();";
if(p<7)o.src=a;else o.contentWindow.location.replace(a)},ia=function(){if(P&&ha!=-1){var a,b=P.substr(ha+1).split("&");for(v=0;v<b.length;v++){a=b[v].split("=");if(/^(autoUpdate|crawlable|history|strict|wrap)$/.test(a[0]))d[a[0]]=isNaN(a[1])?/^(true|yes)$/i.test(a[1]):parseInt(a[1],10)!==0;if(/^(state|tracker)$/.test(a[0]))d[a[0]]=a[1]}P=null}f=w()},ka=function(){if(!ja){ja=m;ia();var a=function(){wa.call(this);xa.call(this)},b=c("body").ajaxComplete(a);a();if(d.wrap){c("body > *").wrapAll('<div style="padding:'+
(E(b,"marginTop")+E(b,"paddingTop"))+"px "+(E(b,"marginRight")+E(b,"paddingRight"))+"px "+(E(b,"marginBottom")+E(b,"paddingBottom"))+"px "+(E(b,"marginLeft")+E(b,"paddingLeft"))+'px;" />').parent().wrap('<div id="'+s+'" style="height:100%;overflow:auto;position:relative;'+(F?window.statusbar.visible&&!/chrome/i.test(X)?"":"resize:both;":"")+'" />');c("html, body").css({height:"100%",margin:0,padding:0,overflow:"hidden"});F&&c('<style type="text/css" />').appendTo("head").text("#"+s+"::-webkit-resizer { background-color: #fff; }")}if(G&&
p<8){a=n.getElementsByTagName("frameset")[0];o=n.createElement((a?"":"i")+"frame");if(a){a.insertAdjacentElement("beforeEnd",o);a[a.cols?"cols":"rows"]+=",0";o.noResize=m;o.frameBorder=o.frameSpacing=0}else{o.style.display="none";o.style.width=o.style.height=0;o.tabIndex=-1;n.body.insertAdjacentElement("afterBegin",o)}x(function(){c(o).bind("load",function(){var e=o.contentWindow;f=e[s]!==i?c.address.decode(e[s]):"";if(f!=w()){M(l);g.hash=D(f,m)}});o.contentWindow[s]===i&&W()},50)}else if(F){if(p<
418){c(n.body).append('<form id="'+s+'" style="position:absolute;top:-9999px;" method="get"></form>');Y=n.getElementById(s)}if(g[s]===i)g[s]={};if(g[s][g.pathname]!==i)J=g[s][g.pathname].split(",")}x(function(){z("init");M(l)},1);if(!C())if(G&&p>7||!G&&"on"+Q in k)if(k.addEventListener)k.addEventListener(Q,O,l);else k.attachEvent&&k.attachEvent("on"+Q,O);else ya(O,50)}},wa=function(){var a,b=c("a"),e=b.size(),h=-1;x(function(){if(++h!=e){a=c(b.get(h));a.is('[rel*="address:"]')&&a.address();x(arguments.callee,
1)}},1)},za=function(){if(f!=w()){f=w();M(l)}},Aa=function(){if(k.removeEventListener)k.removeEventListener(Q,O,l);else k.detachEvent&&k.detachEvent("on"+Q,O)},xa=function(){if(d.crawlable){var a=g.pathname.replace(/\/$/,"");c("body").html().indexOf("_escaped_fragment_")!=-1&&c("a[href]:not([href^=http]), , a[href*="+document.domain+"]").each(function(){var b=c(this).attr("href").replace(/^http:/,"").replace(new RegExp(a+"/?$"),"");if(b==""||b.indexOf("_escaped_fragment_")!=-1)c(this).attr("href",
"#"+c.address.decode(b.replace(/\/(.*)\?_escaped_fragment_=(.*)$/,"!$2")))})}},la=function(a){return a.replace(/\+/g," ")},H=function(a){return ma(na(a)).replace(/%20/g,"+")},oa=function(a){return a.split("#")[0].split("?")[0]},pa=function(a){a=oa(a);var b=a.replace(ba,"/").split("/");if(a.substr(0,1)=="/"||a.length===0)b.splice(0,1);a.substr(a.length-1,1)=="/"&&b.splice(b.length-1,1);return b},R=function(a){a=a.split("?");return a.slice(1,a.length).join("?").split("#")[0]},qa=function(a,b){if(b=
R(b)){params=b.split("&");b=[];for(v=0;v<params.length;v++){var e=params[v].split("=");if(e[0]==a||c.address.decode(e[0])==a)b.push(e.slice(1).join("="))}if(b.length!==0)return b.length!=1?b:b[0]}},ra=function(a){var b=R(a);a=[];if(b&&b.indexOf("=")!=-1){b=b.split("&");for(var e=0;e<b.length;e++){var h=b[e].split("=")[0];c.inArray(h,a)==-1&&a.push(h)}}return a},U=function(a){a=a.split("#");return a.slice(1,a.length).join("#")},i,s="jQueryAddress",Q="hashchange",da="change",ea="internalChange",fa=
"externalChange",m=true,l=false,d={autoUpdate:m,crawlable:l,history:m,strict:m,wrap:l},t=c.browser,p=parseFloat(c.browser.version),sa=t.mozilla,G=t.msie,ta=t.opera,F=t.webkit||t.safari,Z=l,k=function(){try{return top.document!==i?top:window}catch(a){return window}}(),n=k.document,B=k.history,g=k.location,ya=setInterval,x=setTimeout,ma=encodeURIComponent,na=decodeURIComponent,ba=/\/{2,9}/g,X=navigator.userAgent,o,Y,P=ca(document),ha=P?P.indexOf("?"):-1,$=n.title,L=B.length,T=l,ja=l,aa=m,ua=m,V=l,J=
[],f=w();if(G){p=parseFloat(X.substr(X.indexOf("MSIE")+4));if(n.documentMode&&n.documentMode!=p)p=n.documentMode!=8?7:8;c(document).bind("propertychange",function(){if(n.title!=$&&n.title.indexOf("#"+w())!=-1)n.title=$})}if(Z=sa&&p>=1||G&&p>=6||ta&&p>=9.5||F&&p>=312){for(var v=1;v<L;v++)J.push("");J.push(f);if(ta)history.navigationMode="compatible";if(document.readyState=="complete")var Ba=setInterval(function(){if(c.address){ka();clearInterval(Ba)}},50);else{ia();c(ka)}t=u();if(d.state!==i)if(B.pushState)t.substr(0,
3)=="/#/"&&g.replace(d.state.replace(/^\/$/,"")+t.substr(2));else t!="/"&&t.replace(/^\/#/,"")!=K()&&g.replace(d.state.replace(/^\/$/,"")+"/#"+t);c(window).bind({popstate:za,unload:Aa})}else!Z&&K()!=""||F&&p<418&&K()!=""&&g.search!=""?g.replace(g.href.substr(0,g.href.indexOf("#"))):ga();return{bind:function(a,b,e){return A(a,b,e)},init:function(a){return A("init",a)},change:function(a){return A(da,a)},internalChange:function(a){return A(ea,a)},externalChange:function(a){return A(fa,a)},baseURL:function(){var a=
g.href;if(a.indexOf("#")!=-1)a=a.substr(0,a.indexOf("#"));if(/\/$/.test(a))a=a.substr(0,a.length-1);return a},autoUpdate:function(a){if(a!==i){d.autoUpdate=a;return this}return d.autoUpdate},crawlable:function(a){if(a!==i){d.crawlable=a;return this}return d.crawlable},history:function(a){if(a!==i){d.history=a;return this}return d.history},state:function(a){if(a!==i){d.state=a;return this}return d.state},strict:function(a){if(a!==i){d.strict=a;return this}return d.strict},tracker:function(a){if(a!==
i){d.tracker=a;return this}return d.tracker},wrap:function(a){if(a!==i){d.wrap=a;return this}return d.wrap},update:function(){V=m;this.value(f);V=l;return this},encode:function(a){var b=pa(a),e=ra(a),h=R(a),q=U(a),I=a.substr(0,1),N=a.substr(a.length-1),j="";c.each(b,function(y,S){j+="/"+H(S)});if(h!==""){j+="?";if(e.length===0)j+=h;else{c.each(e,function(y,S){y=qa(S,a);if(typeof y!=="string")c.each(y,function(Da,Ca){j+=H(S)+"="+H(Ca)+"&"});else j+=H(S)+"="+H(y)+"&"});j=j.substr(0,j.length-1)}}if(q!==
"")j+="#"+H(q);if(I!="/"&&j.substr(0,1)=="/")j=j.substr(1);if(I=="/"&&j.substr(0,1)!="/")j="/"+j;if(/#|&|\?/.test(N))j+=N;return j},decode:function(a){if(a!==i){var b=[],e=function(I){return na(I.toString().replace(/\+/g,"%20"))};if(typeof a=="object"&&a.length!==i){for(var h=0,q=a.length;h<q;h++)b[h]=e(a[h]);return b}else return e(a)}},title:function(a){if(a!==i){x(function(){$=n.title=a;if(ua&&o&&o.contentWindow&&o.contentWindow.document){o.contentWindow.document.title=a;ua=l}if(!aa&&sa)g.replace(g.href.indexOf("#")!=
-1?g.href:g.href+"#");aa=l},50);return this}return n.title},value:function(a){if(a!==i){a=r(a);if(d.autoUpdate)a=this.encode(a);if(a=="/")a="";if(f==a&&!V)return;aa=m;f=a;if(d.autoUpdate||V){M(m);if(C())B[d.history?"pushState":"replaceState"]({},"",d.state.replace(/\/$/,"")+(f==""?"/":f));else{T=m;J[B.length]=f;if(F)if(d.history){g[s][g.pathname]=J.toString();L=B.length+1;if(p<418){if(g.search==""){Y.action="#"+D(f,m);Y.submit()}}else if(p<523||f==""){a=n.createEvent("MouseEvents");a.initEvent("click",
m,m);var b=n.createElement("a");b.href="#"+D(f,m);b.dispatchEvent(a)}else g.hash="#"+D(f,m)}else g.replace("#"+D(f,m));else if(f!=w())if(d.history)g.hash="#"+D(this.decode(r(f)),m);else g.replace("#"+D(f,m));G&&p<8&&d.history&&x(W,50);if(F)x(function(){T=l},1);else T=l}}return this}if(!Z)return null;return this.decode(r(f))},path:function(a){if(a!==i){var b=R(r(f)),e=U(r(f));this.value(a+(b?"?"+b:"")+(e?"#"+e:""));return this}return this.decode(oa(r(f)))},pathNames:function(){return this.decode(pa(r(f)))},
queryString:function(a){if(a!==i){var b=U(r(f));this.value(this.path()+(a?"?"+a:"")+(b?"#"+b:""));return this}return this.decode(R(r(f)))},parameter:function(a,b,e){var h,q;if(b!==i){var I=this.parameterNames();q=[];b=b?ma(b):"";for(h=0;h<I.length;h++){var N=I[h],j=this.parameter(N);if(typeof j=="string")j=[j];if(N==a)j=b===null||b===""?[]:e?j.concat([b]):[b];for(var y=0;y<j.length;y++)q.push(N+"="+la(H(j[y])))}c.inArray(a,I)==-1&&b!==null&&b!==""&&q.push(a+"="+la(H(b)));this.queryString(q.join("&"));
return this}return this.decode(qa(a,r(f)))},parameterNames:function(){return this.decode(ra(r(f)))},hash:function(a){if(a!==i){this.value(r(f).split("#")[0]+(a?"#"+a:""));return this}return this.decode(U(r(f)))}}}();c.fn.address=function(z){if(!c(this).attr("address")){var A=function(C){if(c(this).is("a")){var u=z?z.call(this):/address:/.test(c(this).attr("rel"))?c(this).attr("rel").split("address:")[1].split(" ")[0]:c.address.state()!==undefined&&c.address.state()!="/"?c(this).attr("href").replace(new RegExp("^(.*"+
c.address.state()+"|\\.)"),""):c(this).attr("href").replace(/^(#\!?|\.)/,"");c.address.value(u);C.preventDefault()}};c(this).click(A).live("click",A).live("submit",function(C){if(c(this).is("form")){var u=c(this).attr("action");u=z?z.call(this):(u.indexOf("?")!=-1?u.replace(/&$/,""):u+"?")+c.address.decode(c(this).serialize());c.address.value(u);C.preventDefault()}}).attr("address",true)}return this}})(jQuery);

/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 *
 * Open source under the BSD License.
 *
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list
 * of conditions and the following disclaimer in the documentation and/or other materials
 * provided with the distribution.
 *
 * Neither the name of the author nor the names of contributors may be used to endorse
 * or promote products derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 *
 * Open source under the BSD License.
 *
 * Copyright © 2001 Robert Penner
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list
 * of conditions and the following disclaimer in the documentation and/or other materials
 * provided with the distribution.
 *
 * Neither the name of the author nor the names of contributors may be used to endorse
 * or promote products derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */

/*
 * Thickbox 3.1 - One Box To Rule Them All.
 * By Cody Lindley (http://www.codylindley.com)
 * Copyright (c) 2007 cody lindley
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
*/

var tb_pathToImage = "/media/images/loadingAnimation.gif";

/*!!!!!!!!!!!!!!!!! edit below this line at your own risk !!!!!!!!!!!!!!!!!!!!!!!*/

//on page load call tb_init
$(document).ready(function(){
	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
	imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage;
});

//add thickbox to href & area elements that have a class of .thickbox
function tb_init(domChunk){
	$(domChunk).click(function(){
	var t = this.title || this.name || null;
	var a = this.href || this.alt;
	var g = this.rel || false;
	tb_show(t,a,g);
	this.blur();
	return false;
	});
}

function tb_show(caption, url, imageGroup) {//function called when the user clicks on a thickbox link

	try {
		if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
			$("body","html").css({height: "100%", width: "100%"});
			$("html").css("overflow","hidden");
			if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
				$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
				$("#TB_overlay").click(tb_remove);
			}
		}else{//all others
			if(document.getElementById("TB_overlay") === null){
				$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
				$("#TB_overlay").click(tb_remove);
			}
		}

		if(tb_detectMacXFF()){
			$("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
		}else{
			$("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
		}

		if(caption===null){caption="";}
		$("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>");//add loader to the page
		$('#TB_load').show();//show loader

		var baseURL;
	   if(url.indexOf("?")!==-1){ //ff there is a query string involved
			baseURL = url.substr(0, url.indexOf("?"));
	   }else{
	   		baseURL = url;
	   }

	   var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
	   var urlType = baseURL.toLowerCase().match(urlString);

		if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images

			TB_PrevCaption = "";
			TB_PrevURL = "";
			TB_PrevHTML = "";
			TB_NextCaption = "";
			TB_NextURL = "";
			TB_NextHTML = "";
			TB_imageCount = "";
			TB_FoundURL = false;
			if(imageGroup){
				TB_TempArray = $("a[rel="+imageGroup+"]").get();
				for (TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === "")); TB_Counter++) {
					var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString);
						if (!(TB_TempArray[TB_Counter].href == url)) {
							if (TB_FoundURL) {
								TB_NextCaption = TB_TempArray[TB_Counter].title;
								TB_NextURL = TB_TempArray[TB_Counter].href;
								TB_NextHTML = "<span id='TB_next'>&nbsp;&nbsp;<a href='#'>Next &gt;</a></span>";
							} else {
								TB_PrevCaption = TB_TempArray[TB_Counter].title;
								TB_PrevURL = TB_TempArray[TB_Counter].href;
								TB_PrevHTML = "<span id='TB_prev'>&nbsp;&nbsp;<a href='#'>&lt; Prev</a></span>";
							}
						} else {
							TB_FoundURL = true;
							TB_imageCount = "Image " + (TB_Counter + 1) +" of "+ (TB_TempArray.length);
						}
				}
			}

			imgPreloader = new Image();
			imgPreloader.onload = function(){
			imgPreloader.onload = null;

			// Resizing large images - orginal by Christian Montoya edited by me.
			var pagesize = tb_getPageSize();
			var x = pagesize[0] - 150;
			var y = pagesize[1] - 150;
			var imageWidth = imgPreloader.width;
			var imageHeight = imgPreloader.height;
			if (imageWidth > x) {
				imageHeight = imageHeight * (x / imageWidth);
				imageWidth = x;
				if (imageHeight > y) {
					imageWidth = imageWidth * (y / imageHeight);
					imageHeight = y;
				}
			} else if (imageHeight > y) {
				imageWidth = imageWidth * (y / imageHeight);
				imageHeight = y;
				if (imageWidth > x) {
					imageHeight = imageHeight * (x / imageWidth);
					imageWidth = x;
				}
			}
			// End Resizing

			TB_WIDTH = imageWidth + 30;
			TB_HEIGHT = imageHeight + 60;
			$("#TB_window").append("<a href='' id='TB_ImageOff' title='Close'><img id='TB_Image' src='"+url+"' width='"+imageWidth+"' height='"+imageHeight+"' alt='"+caption+"'/></a>" + "<div id='TB_caption'>"+caption+"<div id='TB_secondLine'>" + TB_imageCount + TB_PrevHTML + TB_NextHTML + "</div></div><div id='TB_closeWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a></div>");

			$("#TB_closeWindowButton").click(tb_remove);

			if (!(TB_PrevHTML === "")) {
				function goPrev(){
					if($(document).unbind("click",goPrev)){$(document).unbind("click",goPrev);}
					$("#TB_window").remove();
					$("body").append("<div id='TB_window'></div>");
					tb_show(TB_PrevCaption, TB_PrevURL, imageGroup);
					return false;
				}
				$("#TB_prev").click(goPrev);
			}

			if (!(TB_NextHTML === "")) {
				function goNext(){
					$("#TB_window").remove();
					$("body").append("<div id='TB_window'></div>");
					tb_show(TB_NextCaption, TB_NextURL, imageGroup);
					return false;
				}
				$("#TB_next").click(goNext);

			}

			document.onkeydown = function(e){
				if (e == null) { // ie
					keycode = event.keyCode;
				} else { // mozilla
					keycode = e.which;
				}
				if(keycode == 27){ // close
					tb_remove();
				} else if(keycode == 190){ // display previous image
					if(!(TB_NextHTML == "")){
						document.onkeydown = "";
						goNext();
					}
				} else if(keycode == 188){ // display next image
					if(!(TB_PrevHTML == "")){
						document.onkeydown = "";
						goPrev();
					}
				}
			};

			tb_position();
			$("#TB_load").remove();
			$("#TB_ImageOff").click(tb_remove);
			$("#TB_window").css({display:"block"}); //for safari using css instead of show
			};

			imgPreloader.src = url;
		}else{//code to show html

			var queryString = url.replace(/^[^\?]+\??/,'');
			var params = tb_parseQuery( queryString );

			TB_WIDTH = (params['width']*1) + 30 || 630; //defaults to 630 if no paramaters were added to URL
			TB_HEIGHT = (params['height']*1) + 40 || 440; //defaults to 440 if no paramaters were added to URL
			ajaxContentW = TB_WIDTH - 30;
			ajaxContentH = TB_HEIGHT - 45;

			if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window
					urlNoQuery = url.split('TB_');
					$("#TB_iframeContent").remove();
					if(params['modal'] != "true"){//iframe no modal
						$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton' title='Close'>close</a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' > </iframe>");
					}else{//iframe modal
					$("#TB_overlay").unbind();
						$("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'> </iframe>");
					}
			}else{// not an iframe, ajax
					if($("#TB_window").css("display") != "block"){
						if(params['modal'] != "true"){//ajax no modal
						$("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'>close</a></div></div><div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'></div>");
						}else{//ajax modal
						$("#TB_overlay").unbind();
						$("#TB_window").append("<div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'></div>");
						}
					}else{//this means the window is already up, we are just loading new content via ajax
						$("#TB_ajaxContent")[0].style.width = ajaxContentW +"px";
						$("#TB_ajaxContent")[0].style.height = ajaxContentH +"px";
						$("#TB_ajaxContent")[0].scrollTop = 0;
						$("#TB_ajaxWindowTitle").html(caption);
					}
			}

			$("#TB_closeWindowButton").click(tb_remove);

				if(url.indexOf('TB_inline') != -1){
					$("#TB_ajaxContent").append($('#' + params['inlineId']).children());
					$("#TB_window").unload(function () {
						$('#' + params['inlineId']).append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
					});
					tb_position();
					$("#TB_load").remove();
					$("#TB_window").css({display:"block"});
				}else if(url.indexOf('TB_iframe') != -1){
					tb_position();
					if($.browser.safari){//safari needs help because it will not fire iframe onload
						$("#TB_load").remove();
						$("#TB_window").css({display:"block"});
					}
				}else{
					$("#TB_ajaxContent").load(url += "&random=" + (new Date().getTime()),function(){//to do a post change this load method
						tb_position();
						$("#TB_load").remove();
						tb_init("#TB_ajaxContent a.thickbox");
						$("#TB_window").css({display:"block"});
					});
				}

		}

		if(!params['modal']){
			document.onkeyup = function(e){
				if (e == null) { // ie
					keycode = event.keyCode;
				} else { // mozilla
					keycode = e.which;
				}
				if(keycode == 27){ // close
					tb_remove();
				}
			};
		}

	} catch(e) {
		//nothing here
	}
}

//helper functions below
function tb_showIframe(){
	$("#TB_load").remove();
	$("#TB_window").css({display:"block"});
}

function tb_remove() {
 	$("#TB_imageOff").unbind("click");
	$("#TB_closeWindowButton").unbind("click");
	$("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
	$("#TB_load").remove();
	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
		$("body","html").css({height: "auto", width: "auto"});
		$("html").css("overflow","");
	}
	document.onkeydown = "";
	document.onkeyup = "";
	return false;
}

function tb_position() {
$("#TB_window").css({marginLeft: '-' + parseInt((TB_WIDTH / 2),10) + 'px', width: TB_WIDTH + 'px'});
	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
		$("#TB_window").css({marginTop: '-' + parseInt((TB_HEIGHT / 2),10) + 'px'});
	}
}

function tb_parseQuery ( query ) {
   var Params = {};
   if ( ! query ) {return Params;}// return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) {continue;}
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

function tb_getPageSize(){
	var de = document.documentElement;
	var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
	arrayPageSize = [w,h];
	return arrayPageSize;
}

function tb_detectMacXFF() {
  var userAgent = navigator.userAgent.toLowerCase();
  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
    return true;
  }
}

/*
 * Tento kód je chránený autorským zákonom Slovenskej Republiky.
 * Autor: Matej Držík, matej.drzik@gmail.com
 */

var fadeTime = 1000;
var fadeFasterTime = 1000;
jQuery.easing.def = "jswing";

faderData = new Array;

$(document).ready(function() {

	removeSlider = function() {
		$('#slider').remove();
		return true
	}



//  $('#toolbar a').click(function(e) { e.preventDefault() });
//  $('#headSideBar a').click(function(e) { e.preventDefault() });
//  $('#mainContent').load('/articles/rendered/1');
  $.address.crawlable(true);
  $.address.init(function(event) {
    $('#toolbar ul li a').address();
    $('#headSideBar ul li a').address();
    $('#mainContentSideBar ul li a[target!="_blank"]').address();
    $('.product_list_box').address();
    $('#footer div ul li a').address();

  }).change(function(event) {
    var value = event.value;
    $('#toolbar ul li a').each(function() {
        if ($(this).attr('href') == value) {
            $(this).parent().addClass('active');
        } else {
            $(this).parent().removeClass('active');
        }
    });
    $('#headSideBar ul li a').each(function() {
        if ($(this).attr('href') == value) {
            $(this).parent().addClass('active');
        } else {
            $(this).parent().removeClass('active');
        }
    });
    $('#mainContentSideBar ul li a').each(function() {
        if ($(this).attr('href') == value) {
            $(this).parent().addClass('active');
        } else {
            $(this).parent().removeClass('active');
        }
    });
    var loader = "<div id='loading'><img src='/media/images/spinner.gif'/><br/>loading content, please wait</div>";
    $('#mainContent').html(loader);
    // Loads and populates the page data
    $.ajax({
        cache: false,
        complete: function(XMLHttpRequest, textStatus) {
            $('#mainContent').html(XMLHttpRequest.responseText);
            $.address.title('Forssell Technologies');
            processProductsIndex();
            tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
            imgLoader = new Image();// preload image
            imgLoader.src = tb_pathToImage;

        },
        url: value + '?ajax=True'
    });
  });

	sliderOpts = {
    effect:'fade', //Specify sets like: 'fold,fade,sliceDown'
    directionNav:false, //Next & Prev
    controlNav:false, //1,2,3...
    pauseOnHover:true,//Stop animation while hovering
    pauseTime: 10000,	
	}
	
	imgCnt = 0;
	
  var header = $('#headSideBar h2');
  var description = $('#headSideBar p');

	var head = $('#headSideBar');
	
  mainSliderOpts = {
    effect:'fade', //Specify sets like: 'fold,fade,sliceDown'
    directionNav:false, //Next & Prev
    controlNav:false, //1,2,3...
    pauseOnHover:true,//Stop animation while hovering
    pauseTime: 10000,
    beforeChange: function(){
    		head.fadeOut(500, function() {
	    		head[0].innerHTML = '<h2><span><span class="greyed">' + faderData[imgCnt].description + '</span>' + faderData[imgCnt].name + '</span></h2>' + faderData[imgCnt].content                        	
	    		head.fadeIn();
    		})
/*

        header.fadeOut(500, function() {
            header[0].innerHTML= faderData[imgCnt].name;
            header.fadeIn(500);
        });
        description.fadeOut(500, function() {
            description[0].innerHTML=faderData[imgCnt].description;
            description.fadeIn(500);
        });
*/
    },
    afterChange: function(){
        if (imgCnt == (faderData.length - 1)) { 
        	imgCnt=0
       	} else {
	        imgCnt += 1;
       	}
    }
  }
	  
	loadMasterFader = function() {
			$.ajax({
				cache: false,
				url: '/products/fader',
				success: function(data) {			
					var objects = JSON.parse(data);
					var imagesHTML = new String;
					lo = objects;
					faderData = objects;
					for (var i=0; i<faderData.length; i++) {
												imagesHTML += '<img title="' + faderData[i].name + '" src="' + faderData[i].image + '"/>'
					};
					imgCnt = 1;
/*           description[0].innerHTML=faderData[0].description;           */
					$('#headSideBar')[0].innerHTML = '<h2><span><span class="greyed">' + faderData[0].description + '</span>' + faderData[0].name + '</span></h2>' + faderData[0].content                    
					removeSlider();
					$('#head')[0].innerHTML = '<div id="slider"></div>';
					$('#slider')[0].innerHTML = imagesHTML;
					$('#slider').nivoSlider(mainSliderOpts);		
				}				
			})			
	}	
	//loadMasterFader();
	
  var imgCnt = 1;
  
//  $('#mainContent').mouseenter(function() {
//    $('#head').data('nivo:vars').stop = true;
//  }).mouseleave(function() {
//    $('#head').data('nivo:vars').stop = false;
//  });
//  $('#footer-logos img').mouseenter(function() {
//    $(this).animate({opacity: 1}, fadeTime ,'swing');
//  }).mouseleave(function() {
//    $(this).animate({opacity: 0.2}, fadeTime ,'swing')
//  }).click(function() {
//    window.open($(this).attr('url'));
//  });
  $('#footer').mouseenter(function() {
    $(this).animate({opacity: 1}, fadeFasterTime, 'swing')
  }).mouseleave(function() {
    $(this).animate({opacity: 0.6}, fadeFasterTime, 'swing')
  });
});

function processProductsIndex() {
  $('.product_list_box').mouseenter(function() {
    $(this).animate({opacity: 1}, fadeTime, 'swing');
  }).mouseleave(function() {
    $(this).animate({opacity: 0.8}, fadeTime, 'swing')
  });
//  $('.product_list_box_image').mouseenter(function() {
//    $(this).animate({backgroundPosition: "-340px 0px"}, 5000, 'jswing');
//  }).mouseleave(function() {
//    $(this).animate({backgroundPosition: "0px 0px"}, 2000 ,'easeOutBounce');
//  });
}

sendOffer = function() {
    $.ajax({
        url: '/offers/send',
        data: {
            name: $('input#offer-name')[0].value,
            email: $('input#offer-email')[0].value,
            note: $('textarea#offer-note')[0].value
        },
        type: 'POST',
        dataType: 'text',
        cache: true,
        success: function(msg) {
            $('#mainContent').html(msg);
            tb_remove()
        }
    })
};

contactSend = function() {
    $.ajax({
        url: '/contacts/send',
        data: {
            name: $('input#contact-input-name')[0].value,
            email: $('input#contact-input-email')[0].value,
            note: $('textarea#contact-input-message')[0].value
        },
        type: 'POST',
        dataType: 'text',
        cache: true,
        success: function(msg) {
            $('#mainContent').html(msg);
            tb_remove()
        }
    });
    return false;
};


$('html').ajaxSend(function(event, xhr, settings) {
    function getCookie(name) {
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
        // Only send the token to relative URLs i.e. locally.
        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
    }
});

//menuSetActive = function(el,url) {
//  $('li.active', el.parentNode.parentNode).removeClass('active');
//  $('#mainContent').html('<div id ="spinner"><br/><br/><br/><br/><br/><br/><br/></div><center>content loading..</center><br/><br/><br/><br/><br/><br/>');
//  $('#mainContent').fadeOut(function() {
//    $('#mainContent').load(url, function() {
//      $('#mainContent').fadeIn(function() {
//          processProductsIndex();
//        //$('a.lightbox').lightBox();
//        	tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
//	        imgLoader = new Image();// preload image
//	        imgLoader.src = tb_pathToImage;
//        var c = 240;
//        $(el.parentNode).addClass('active');
//        //(($('#mainContent').height() < c)) ? $('#mainContent').css({height: 240}) : $('#mainContent').css({height: 'auto'});
//        c += 1
//      });
//      //$('#mainContentSideBar ul').animate({paddingTop: $('#mainContentContainer').height() - 250}, 500);
//    });
//  });
//
//
//};

