
/*
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/9/2009
 * @author Ariel Flesler
 * @version 1.4.1
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);

/*
 *
 *	jQuery Timer plugin v0.1
 *		Matt Schmidt [http://www.mattptr.net]
 *
 *	Licensed under the BSD License:
 *		http://mattptr.net/license/license.txt
 *
 */
 
 jQuery.timer = function (interval, callback)
 {
    var interval = interval || 100;

    if (!callback)
            return false;
    
    _timer = function (interval, callback) {
            this.stop = function () {
                    clearInterval(self.id);
            };
            
            this.internalCallback = function () {
                    callback(self);
            };
            
            this.reset = function (val) {
                    if (self.id)
                            clearInterval(self.id);
                    
                    var val = val || 100;
                    this.id = setInterval(this.internalCallback, val);
            };
            
            this.interval = interval;
            this.id = setInterval(this.internalCallback, this.interval);
            
            var self = this;
    };
    
    return new _timer(interval, callback);
 };
 
 /*
    bigPicture Plugin
    http://www.bluebitsolutions.com/plugins/jquery/bigPicture/ 
 */
 (function($){$.jquery=$.jquery||{};$.jquery.ux=$.jquery.ux||{};$.jquery.ux.ui=$.jquery.ux.ui||{};$.jquery.ux.ui.BPHelper=function(){return{AUTO_ID:1001,galleries:{},isBoxRendered:function(){return $('#bp').size()>0?true:false},isBoxVisible:function(){return $('#bp > .bp-wrap').is(':visible')},renderBox:function(){if($.jquery.ux.ui.BPHelper.isBoxRendered()){return}var sbox=document.createElement('div');var mask=document.createElement('div');var wrap=document.createElement('div');var main=document.createElement('div');var view=document.createElement('div');var bbar=document.createElement('div');$(bbar).addClass('bp-bbar').append('<div class="bp-hide-link"><a href="#"><span>Close</span></a></div>').append('<div class="bp-info-link"><a href="#"><span>Image info</span></a></div>').append('<div class="bp-clear"></div>');$(view).addClass('bp-view').css({'margin':0}).append('<div class="bp-nav bp-prev-link"><a href="#"><span>Prev</span></a></div>').append('<div class="bp-nav bp-next-link"><a href="#"><span>Next</span></a></div>').append('<div class="bp-info-wrap"><div class="bp-info"></div></div>');$(main).addClass('bp-main').css({'margin-left':'auto','margin-right':'auto'}).append(view).append(bbar);$(wrap).addClass('bp-wrap').append(main);$(mask).addClass('bp-mask');$(sbox).attr('id','bp').append(mask).append(wrap).appendTo('body');$(window).resize(function(e){if($.jquery.ux.ui.BPHelper.isBoxVisible()){$.jquery.ux.ui.BPHelper.onWindowResize()}});$(mask).click(function(e){$.jquery.ux.ui.BPHelper.hideBox()});$(wrap).click(function(e){$.jquery.ux.ui.BPHelper.hideBox()});$(main).click(function(e){e.preventDefault();return false});$('.bp-hide-link',bbar).click(function(e){e.preventDefault();$.jquery.ux.ui.BPHelper.hideBox()})},showBox:function(){$.jquery.ux.ui.BPHelper.onWindowResize();$('#bp .bp-mask').show();$('#bp .bp-wrap').show()},hideBox:function(){$.jquery.ux.ui.BPHelper.resetBox();$('#bp .bp-wrap').fadeOut('fast',function(){$('#bp .bp-mask').hide()})},resetBox:function(){$('#bp .bp-bbar').stop().hide();$('#bp .bp-info-wrap').stop().hide().css({'marginTop':0});$('#bp .bp-info-link > a').removeClass('active');$('#bp .bp-view > img').remove()},onWindowResize:function(){var ds=$.jquery.ux.ui.BPHelper.getDimensions();var ps=$.jquery.ux.ui.BPHelper.getPageScroll();$('#bp .bp-mask').width(ds.pageWidth).height(ds.pageHeight);$('#bp .bp-wrap').css({'left':0,'top':ps.y+(ds.windowHeight*0.08)})},getDimensions:function(){var dims={};var dbw,dbh;if(window.innerHeight&&window.scrollMaxY){dbw=window.innerWidth+window.scrollMaxX;dbh=window.innerHeight+window.scrollMaxY}else if(document.body.scrollHeight>document.body.offsetHeight){dbw=document.body.scrollWidth;dbh=document.body.scrollHeight}else{dbw=document.body.offsetWidth;dbh=document.body.offsetHeight}if(self.innerHeight){if(document.documentElement.clientWidth){dims.windowWidth=document.documentElement.clientWidth}else{dims.windowWidth=self.innerWidth}dims.windowHeight=self.innerHeight}else if(document.documentElement&&document.documentElement.clientHeight){dims.windowWidth=document.documentElement.clientWidth;dims.windowHeight=document.documentElement.clientHeight}else if(document.body){dims.windowWidth=document.body.clientWidth;dims.windowHeight=document.body.clientHeight}dims.pageHeight=Math.max(dbh,dims.windowHeight);dims.pageWidth=Math.max(dbw,dims.windowWidth);return dims},getPageScroll:function(){var scroll={};if(self.pageYOffset){scroll.y=self.pageYOffset;scroll.x=self.pageXOffset}else if(document.documentElement&&document.documentElement.scrollTop){scroll.y=document.documentElement.scrollTop;scroll.x=document.documentElement.scrollLeft}else if(document.body){scroll.y=document.body.scrollTop;scroll.x=document.body.scrollLeft}return scroll}}}();$.jquery.ux.ui.BigPicture=function(el,conf){this.images=[];this.index=0;this.gallery='';this.offset=false;conf=$.extend({'cls':'','prevLabel':'Prev','nextLabel':'Next','infoLabel':'Image info','hideLabel':'Close','boxEaseFn':'','boxEaseSpeed':750,'enableInfo':false,'infoPosition':'bottom','infoEaseFn':'','infoEaseSpeed':500},conf);if(!$(el).attr('id')){$(el).attr('id','bigPicture-'+$.jquery.ux.ui.BPHelper.AUTO_ID++)}this.gallery=$(el).attr('rel');if(this.gallery&&!$.jquery.ux.ui.BPHelper.galleries[this.gallery]){$.jquery.ux.ui.BPHelper.galleries[this.gallery]=$("a[rel='"+this.gallery+"']").get()}this.launchBox=function(){if(this.images.length==0){if(this.gallery){this.images=$.jquery.ux.ui.BPHelper.galleries[this.gallery]}else{this.images.push(el)}}this.index=0;for(var i=0;i<this.images.length;i++){if(this.images[i].id==el.id){this.index=i;break}}this.show()};this.show=function(){$.jquery.ux.ui.BPHelper.renderBox();$('#bp').removeClass().addClass(conf.cls);$('#bp .bp-prev-link > a > span').html(conf.prevLabel);$('#bp .bp-next-link > a > span').html(conf.nextLabel);$('#bp .bp-info-link > a > span').html(conf.infoLabel);$('#bp .bp-hide-link > a > span').html(conf.hideLabel);var sbox=this;$('#bp .bp-view').unbind('mouseenter.bp').unbind('mouseleave.bp').bind('mouseenter.bp',function(){sbox.toggleNavigation(true)}).bind('mouseleave.bp',function(){sbox.toggleNavigation(false)});$('#bp .bp-prev-link > a').unbind('click.bp').bind('click.bp',function(e){e.preventDefault();sbox.back()});$('#bp .bp-next-link > a').unbind('click.bp').bind('click.bp',function(e){e.preventDefault();sbox.next()});if(conf.enableInfo){$('#bp .bp-info-link').show();$('#bp .bp-info-link > a').unbind('click.bp').bind('click.bp',function(e){e.preventDefault();sbox.toggleInfo(this)})}else{$('#bp .bp-info-link').hide()}$('#bp .bp-main').width(64).height(64);if(!$.jquery.ux.ui.BPHelper.isBoxVisible()){$.jquery.ux.ui.BPHelper.showBox()}this.load()};this.hide=function(){$.jquery.ux.ui.BPHelper.hideBox()};this.reset=function(){$.jquery.ux.ui.BPHelper.resetBox()};this.load=function(){this.reset();$('#bp .bp-main').addClass('loading');this.calculateOffset();var box=this;var img=new Image();$(img).load(function(){$('#bp .bp-main').animate({'width':img.width+box.offset.x,'height':img.height+box.offset.y},conf.boxEaseSpeed,conf.boxEaseFn,function(){box.onLoad(img)})}).error(function(){box.hide();alert('There was an error loading the image')}).attr('src',$(this.images[this.index]).attr('href'))};this.onLoad=function(img){if(conf.enableInfo){var title=$(this.images[this.index]).attr('title');var divId=$(this.images[this.index]).attr('name');var count=this.images.length;var $wrap=$('#bp .bp-info-wrap');var txt='';if(count>1){txt+='<div class="bp-count">Image '+(this.index+1)+' of '+count+'</div>'}txt+=title?'<h2>'+title+'</h2>':'';$('#bp .bp-info').html(txt).append($('#'+divId).contents().clone(true));$('#bp .bp-info a').click(function(e){var href=$(this).attr('href');if(href&&href.charAt(0)!='#'){document.location=href}});var y=conf.infoPosition=='top'?(-1*$wrap.outerHeight()):img.height;$wrap.css({'top':y})}$('#bp .bp-main').removeClass('loading');$('#bp .bp-info-wrap').before(img);$('#bp .bp-view').width(img.width).height(img.height).fadeIn('normal');$('#bp .bp-nav > a').width(Math.floor(img.width/2)).height(img.height);var bh=img.height+this.offset.y+$('#bp .bp-bbar').outerHeight();$('#bp .bp-bbar').show();$('#bp .bp-main').animate({'height':bh},350);$(img).click().focus()};this.toggleInfo=function(link){if(!conf.enableInfo){return}var h=$('#bp .bp-info-wrap').outerHeight();var b=conf.infoPosition=='top'?0:$('#bp .bp-view > img').height();var hide=false;if($(link).hasClass('active')){$(link).removeClass('active');h=conf.infoPosition=='top'?h:0;hide=true}else{$(link).addClass('active');h=conf.infoPosition=='top'?0:h}$('#bp .bp-info-wrap').show().animate({'top':b-h},conf.infoEaseSpeed,conf.infoEaseFn,function(){if(hide){$('#bp .bp-info-wrap').hide()}})};this.toggleNavigation=function(show){if(show==true&&this.images.length>1){$('#bp .bp-nav').fadeIn(250)}else{$('#bp .bp-nav').hide()}return false};this.back=function(){this.index--;if(this.index<0){this.index=this.images.length-1}this.load()};this.next=function(){this.index++;if(this.index==this.images.length){this.index=0}this.load()};this.calculateOffset=function(){if(this.offset){return}var $view=$('#bp .bp-view');this.offset={x:0,y:0};this.offset.x=$view.outerWidth()-$view.width();this.offset.y=$view.outerHeight()-$view.height()}};$.fn.bigPicture=function(p){return this.each(function(){if(this.bigPicture instanceof $.jquery.ux.ui.BigPicture){return this}var box=new $.jquery.ux.ui.BigPicture(this,p);$(this).click(function(e){e.preventDefault();box.launchBox()});this.bigPicture=box;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. 
 *
 */
