o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1349880622.458533:@value"L{I"
class:EFI"ProcessedAsset; FI"logical_path; F"jquery.ample_panels.jsI"
pathname; F"a/Users/tcmacdonald/Sites/ample/ample_assets/vendor/assets/javascripts/jquery.ample_panels.jsI"content_type; FI"application/javascript; FI"
mtime; FI"2012-05-16T12:26:59-04:00; FI"length; FiII"digest; F"%892ae6a927488f25ff2da374442065e9I"source; FI"I(function($) {
var defaults = {
auto : true,
interval : 3500,
counter : 0,
continuous : false,
duration : 200,
rewind: false,
debug : false,
previous : false,
next : false,
nav: false,
el : false,
parent : 'ul',
children : 'li',
width : 250,
height : 250,
distance : 0,
easing: 'easeInOutQuart',
orientation: 'horizontal',
key_orientation: 'horizontal',
active_class: 'on',
per_page : 1,
keyboard_nav : false,
enabled : true
};
$.amplePanels = function(e, o) {
this.options = $.extend({}, defaults, o || {});
this.options.el = e;
this.init();
};
$.amplePanels.fn = $.amplePanels.prototype = {
/**
* constructor function
*/
init: function() {
this.log('init()')
this.setup();
this.buttons();
},
/**
* add styles to head, wrap container element with mask
*/
setup : function( ) {
this.log('setup()');
this.options.id = $(this.options.el).attr('id');
this.children = $(this.options.el).find(this.options.children);
this.options.total = this.children.length;
switch(this.options.orientation) {
case 'vertical': this.vertical(); break;
default: this.horizontal(); break;
}
this.clone_els();
this.events();
this.nav();
this.start();
},
/**
* setup horizontal orientation
*/
horizontal : function() {
this.log('horizontal()');
$('').appendTo('head');
var width = (this.options.width + this.options.distance) * this.options.per_page - this.options.distance;
if(this.width_percentage()) {
width = this.options.width;
}
$(this.options.el).wrap($('
').css({ 'width': width, 'height': this.options.height, overflow: 'hidden' }));
this.set_width();
},
/**
* setup vertical orientation
*/
vertical : function() {
this.log('vertical()');
var width = this.width_percentage() ? this.options.width : String(parseInt(this.options.width)) + 'px';
var height = String(parseInt(this.options.height)) + 'px';
$('').appendTo('head');
var height = (this.options.height + this.options.distance) * this.options.per_page - this.options.distance;
$(this.options.el).wrap($('').css({ 'width': this.options.width, 'height': height, overflow: 'hidden' }));
this.set_height();
},
/**
* for continuous instances, prepend last original item and append first original item
*/
clone_els : function() {
if(this.options.continuous) {
this.log('clone_els()')
var width = this.options.width;
if(this.width_percentage()) {
width = $(this.children).first().width();
}
var distance = "-" + (width + this.options.distance) +"px";
$.each($(this.options.children), function(i,el){
$(el).attr('data-slide-item',i);
});
$(this.options.el).prepend($(this.options.children + ":last-child", this.options.el).clone().css(( this.options.orientation=='horizontal' ? 'margin-left' : 'margin-top' ), distance));
for(var i = 1; i < ( this.options.continuous ? this.options.total : 2 ); i++) {
$(this.options.el).append($(this.options.children + ":eq(" + i + ")", this.options.el).clone());
}
this.set_width();
}
},
/**
* add events to buttons, keys, etc.
*/
events: function( ) {
var ref = this;
this.key_down();
if(this.options.previous) {
$(this.options.previous).bind('click',function(){
ref.stop();
ref.previous();
});
}
if(this.options.next) {
$(this.options.next).bind('click',function(){
ref.stop();
ref.next();
});
}
},
/**
* build navigation
*/
nav: function( ) {
if(this.options.nav) {
if(this.options.continuous) {
this.paged_nav();
} else {
this.itemized_nav();
}
}
},
/**
* build paged navigation
*/
paged_nav: function() {
this.log('paged_nav()')
var ref = this;
var previous = $('')
.addClass('previous')
.text('Previous')
.click(function() {
ref.stop();
ref.previous();
});
var next = $('')
.addClass('next')
.text('Next')
.click(function() {
ref.stop();
ref.next();
});
var nav = $('')
.append( previous )
.append( '' + 1 + ' of ' )
.append( '' + this.options.total + '' )
.append( next );
$(this.options.nav).append(nav);
this.activate();
},
/**
* build itemized navigation
*/
itemized_nav: function() {
this.log('itemized_nav()')
var ref = this;
var nav = $('');
$.each($(this.options.el).find(this.options.children), function(i,el){
nav.append('' + i + '');
});
$(this.options.nav).append(nav);
$(this.options.nav).find('a').click(function(){
ref.goto($(this).attr('data-role'));
return false;
})
this.activate();
},
/**
* enable / disable navigation buttons
*/
buttons: function() {
if( !this.options.continuous ) {
$( this.options.previous ).attr('disabled', ( this.options.counter == 0 ? true : false ) );
$( this.options.next ).attr('disabled', ( this.options.counter == this.last_page() ? true : false ) );
}
},
/**
* update container el's width
*/
set_width: function( ) {
this.log('set_width()')
this.children = $(this.options.el).find(this.options.children);
var total = this.children.length;
var width = 0;
if(this.width_percentage()) {
$.each(this.children, function(i,el) {
width += $(el).children().first().width();
});
} else {
width = (this.options.width + this.options.distance) * total;
}
$(this.options.el).css('width', width);
},
/**
* update container el's height
*/
set_height: function( ) {
this.log('set_height()')
var total = $(this.options.el).find(this.options.children).length;
$(this.options.el).css('height',( (this.options.height + this.options.distance) * total) );
},
/**
* scroll to
*/
goto: function( i ) {
if(!this.options.enabled) {
return false;
}
this.options.counter = parseInt(i);
this.stop();
switch(this.options.orientation) {
case 'vertical': this.slide_vertically(); break;
default: this.slide_horizontally(); break;
}
},
enable: function() {
this.options.enabled = true;
},
disable: function() {
this.options.enabled = false;
},
/**
* next page
*/
next: function( ) {
if(!this.options.enabled) {
return false;
}
if(!this.options.continuous) {
if(!this.options.rewind && this.options.counter == this.last_page()) { return false; }
}
this.count('next');
switch(this.options.orientation) {
case 'vertical': this.slide_vertically(); break;
default: this.slide_horizontally(); break;
}
return false;
},
/**
* previous page
*/
previous: function( ) {
if(!this.options.enabled) {
return false;
}
if(!this.options.continuous) {
if(!this.options.rewind && this.options.counter == 0) { return false; }
}
this.count('previous');
switch(this.options.orientation) {
case 'vertical': this.slide_vertically(); break;
default: this.slide_horizontally(); break;
}
return false;
},
/**
* return true if width option is a percentage value
*/
width_percentage: function( ) {
return String(this.options.width).slice(-1)=='%' ? true : false
},
/**
* remove active class from navigation els
*/
deactivate: function( ) {
$(this.options.nav).find('li').removeClass(this.options.active_class);
},
/**
* apply active class to navigation els
*/
activate: function( ) {
if(this.options.nav) {
this.log('activate()');
var active;
if(this.options.continuous) {
$(this.options.nav).find('span[data-role=current-slide]').text(this.active);
} else {
this.deactivate();
active = $(this.options.nav).find('li').get(this.options.counter);
$(active).addClass(this.options.active_class);
}
}
},
/**
* increment / decrement page counter
*/
count: function( dir ) {
this.dir = dir;
var last_page = this.last_page();
switch(dir) {
case 'previous':
this.options.counter = this.options.counter == 0 ? parseInt(last_page) : parseInt(this.options.counter) - 1;
break;
case 'next':
this.options.counter = this.options.counter == parseInt(last_page) ? 0 : parseInt(this.options.counter) + 1;
break;
};
},
/**
* return the page counter for last page
*/
last_page: function() {
return Math.ceil ( $(this.options.el).find(this.options.children).length / this.options.per_page ) - 1;
},
/**
* slide panel horizontally
*/
slide_horizontally: function( ) {
var counter = this.options.counter;
if(this.options.continuous && counter>this.options.total) {
counter = -1;
}
$( this.options.el ).trigger('slide_horizontal', [counter, this.dir]);
var left = 0;
if( this.width_percentage() ) {
for(var i=0; i<(this.options.counter); i++) {
left += ($(this.children[i]).first().width() + this.options.distance ) * this.options.per_page;
}
if( counter == -1 ) {
left = ($(this.children).first().width() + this.options.distance ) * this.options.per_page * counter;
}
} else {
left = (this.options.width + this.options.distance ) * this.options.per_page * counter;
}
var properties = { marginLeft: left * -1 + 'px' };
var options = { duration: this.options.duration };
if(jQuery().easing) {
options['easing'] = this.options.easing;
}
if(this.rewinding()) {
options['duration'] = this.options.duration * 2;
}
var ref = this;
if(this.options.continuous) {
options['complete'] = function(){
$(ref.options.el).trigger('complete')
ref.reset();
}
} else {
options['complete'] = function(){
$(ref.options.el).trigger('complete')
}
}
$( this.options.el ).animate( properties, options );
this.buttons();
this.current(counter);
this.activate();
},
/**
* slide panel vertically
*/
slide_vertically: function( ) {
var counter = this.options.counter;
if( this.options.continuous ) {
counter += 1;
if(this.dir == 'previous' && counter > this.options.total) {
counter = -1;
}
}
$( this.options.el ).trigger('slide_vertical', counter);
var top = ( this.options.height + this.options.distance ) * this.options.per_page * counter;
var properties = { marginTop: top * -1 + 'px' };
var options = { duration: this.options.duration };
if(jQuery().easing) {
options['easing'] = this.options.easing;
}
if(this.rewinding()) {
options['duration'] = this.options.duration * 2;
}
var ref = this;
if(this.options.continuous) {
options['complete'] = function(){
$(ref.options.el).trigger('complete')
ref.reset();
}
} else {
options['complete'] = function(){
$(ref.options.el).trigger('complete', counter)
}
}
$( this.options.el ).animate( properties, options );
this.buttons();
this.current(counter);
this.activate();
},
current: function(counter) {
var i = $(this.options.el).find(this.options.children + ':eq(' + (counter+1) + ')').attr('data-slide-item');
this.active = parseInt(i) + 1
},
/**
* if instance is continuous, reset position after animation
*/
reset: function() {
if(this.options.orientation == 'horizontal') {
if( this.options.total == this.options.counter ) {
$( this.options.el ).css({ 'margin-left': 0 });
this.options.counter = 0;
} else if( this.options.counter > this.options.total ) {
this.log('reset')
if(this.options.continuous && this.width_percentage()) {
var width = 0, total = this.options.total;
var distance = this.options.distance, per_page = this.options.per_page;
$.each(this.children,function(i,el){
if(i > 0 && i < total) {
width += ( $(el).width() + distance ) * per_page;
}
});
$( this.options.el ).css({ 'margin-left': width * -1 });
} else {
$( this.options.el ).css({ 'margin-left': (( this.options.width + this.options.distance ) * this.options.per_page * ( this.options.total - 1 )) * -1 });
}
this.options.counter = this.options.total - 1;
}
} else if(this.options.orientation == 'vertical') {
if( this.options.total == this.options.counter ) {
$( this.options.el ).css({ 'margin-top': (( this.options.height + this.options.distance ) * this.options.per_page) * -1 });
this.options.counter = 0;
} else if( this.options.counter > this.options.total ) {
$( this.options.el ).css({ 'margin-top': (( this.options.height + this.options.distance ) * this.options.per_page) * this.options.total * -1 });
this.options.counter = this.options.total - 1;
}
}
},
/**
* on keydown event handler
*/
key_down: function() {
if(!this.options.keyboard_nav) return;
var ref = this;
var previous = this.options.key_orientation == 'vertical' ? 38 : 37;
var next = this.options.key_orientation == 'vertical' ? 40 : 39;
$(document).keydown(function(e){
switch(e.keyCode) {
case previous:
ref.stop();
ref.previous();
break;
case next:
ref.stop();
ref.next();
break;
}
});
},
/**
* is this animation a rewind?
*/
rewinding : function() {
var rewinding = false;
switch(this.dir) {
case 'next':
rewinding = this.options.counter == 0 ? true : false;
break;
case 'previous':
rewinding = this.options.counter == this.last_page() ? true : false;
break;
}
return this.options.rewind && rewinding ? true : false;
},
/**
* push new els onto container el
*/
append : function( el ) {
this.log('append()')
$(this.options.el).append(el);
this.update();
},
update : function( ) {
this.log('update()')
this.set_width();
this.buttons();
},
empty : function( ) {
this.log('empty()')
this.goto(0);
$(this.options.el).empty();
this.update();
},
/**
* start auto advance
*/
start : function() {
this.log('start()');
if(this.options.auto) {
var ref = this;
this.interval = setInterval(function() {
ref.next();
}, this.options.interval);
}
},
/**
* stop auto advance
*/
stop : function() {
if(!this.options.enabled) {
return false;
}
this.log('stop()');
clearInterval(this.interval)
},
/**
* talk to me
*/
log : function( msg ) {
if (this.options.debug) {
msg = typeof(msg)=='object' ? msg : 'AMPLE: '+msg;
!window.console ? alert(msg) : console.log(msg);
}
}
};
$.fn.amplePanels = function(o) {
if (typeof o == 'string') {
var instance = $(this).data('amplePanels'), args = Array.prototype.slice.call(arguments, 1);
return instance[o].apply(instance, args);
} else {
return this.each(function() {
$(this).data('amplePanels', new $.amplePanels(this, o));
});
}
};
})(jQuery);
; FI"dependency_digest; F"%0eb3ac682bfbc7c38c0c3b780b2e03eaI"required_paths; F["a/Users/tcmacdonald/Sites/ample/ample_assets/vendor/assets/javascripts/jquery.ample_panels.jsI"dependency_paths; F[{I" path; F"a/Users/tcmacdonald/Sites/ample/ample_assets/vendor/assets/javascripts/jquery.ample_panels.jsI"
mtime; FI"2012-05-16T12:26:59-04:00; FI"digest; F"%a5326ca79fa88e5adee9e95e2c8c31c6I"
_version; F"%979b712d447c42bc88f489bb52e370d7