/**
 * jQuery (a)Sexy images plugin
 *
 * Copyright (c) 2009 Anton Shevchuk
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * @author 	Anton Shevchuk AntonShevchuk@gmail.com
 * @version 0.0.4
 */
;(function($){defaults={width:320,height:240,left:0,top:0,zoom:true,opacity:0.8,func:"snake",speed:500,round:"auto"};$.fn.asexy=function(o){var p=this;this.options=$.extend({},defaults,o);if(this.options.round=='auto'){this.options.round=Math.round(this.options.round/4)}this.each(function(){var m=$(this);m.load(function(){if(m.data('asexy')){return true}else{m.data('asexy',true)}m.removeAttr("width").removeAttr("height").css({width:"",height:""});var a=m.wrap('<div class="asexy"></div>').parent();var b=m.width();var c=m.height();if(p.options.zoom){var d=p.options.width/b;var e=p.options.height/c;var f=(d>e)?d:e;b=f*b;c=f*c;m.attr('width',b);m.attr('height',c)}var g={width:p.options.width,height:p.options.height,position:'relative',overflow:'hidden'};var h=['margin-top','margin-right','margin-bottom','margin-left','padding-top','padding-right','padding-bottom','padding-left','border-top-width','border-right-width','border-bottom-width','border-left-width','border-top-color','border-right-color','border-bottom-color','border-left-color','border-top-style','border-right-style','border-bottom-style','border-left-style','z-index','float','clear','cursor'];var j=h.length;for(var i=0;i<j;i++)g[h[i]]=m.css(h[i]);var k=p.options.left;var l=p.options.top;if(k=='center'){k=-((b/2)-(p.options.width/2))}if(l=='center'){l=-((c/2)-(p.options.height/2))}m.css({top:l,left:k,padding:0,margin:0,border:0,position:'absolute',opacity:p.options.opacity});a.css(g).data('asexy',{img:{width:b,height:c},div:{width:p.options.width,height:p.options.height},def:{top:l,left:k},diff:{width:Math.round(b-p.options.width),height:Math.round(c-p.options.height)}});a.hover(function(){p.go(this)},function(){p.back(this)})});var n=m.attr('src');m.attr('src','');m.attr('src',n);return this});this.go=function(a){$(a).find('img').fadeTo(p.options.speed/2,1);switch(p.options.func){case'x':p.go.x(a);break;case'vertical':p.go.vertical(a);break;case'horizontal':p.go.horizontal(a);break;case'linear':p.go.linear(a);break;case'zigzag':p.go.zigzag(a);break;case'snake':default:p.go.snake(a);break}};this.go.linear=function(a){var b=$(a);var c=b.find('img');var d=b.data('asexy');var e=c.css('left');var f=c.css('top');var g=p.options.speed;if((d.img.width/d.div.width)>=(d.img.height/d.div.height)){c.animate({left:-d.diff.width},g)}else{c.animate({top:-d.diff.height},g)}};this.go.snake=function(a){var b=$(a);var c=b.find('img');var d=b.data('asexy');var e=c.css('left');var f=c.css('top');var g=Math.ceil(d.img.height/d.div.height);g=(g>1)?g:2;var h=p.options.speed;for(i=1;i<g;i++){var j=i*d.div.height;if(d.diff.width){if(i%2==0){c.animate({left:0},h)}else{c.animate({left:-d.diff.width},h)}}if((d.diff.height+d.div.height-j)<p.options.round){break}if(d.diff.height){if(j>d.diff.height){vspeed=Math.round(d.div.height/h*2*(j-d.diff.height));j=d.diff.height}else{vspeed=h}c.animate({top:-j},vspeed)}}};this.go.zigzag=function(a){var b=$(a);var c=b.find('img');var d=b.data('asexy');var e=c.css('left');var f=c.css('top');var g=Math.ceil(d.img.height/d.div.height);g=(g>1)?g:2;var h=p.options.speed;for(i=1;i<=g;i++){var j=i*d.div.height;if(d.diff.width){c.animate({left:-d.diff.width},h)}if((d.diff.height+d.div.height-j)<p.options.round){break}if(d.diff.height){if(j>d.diff.height){j=d.diff.height}if(i!=g){c.animate({top:-j,left:0},h)}}}};this.go.horizontal=function(a){var b=$(a);var c=b.find('img');var d=b.data('asexy');var e=c.css('left');var f=c.css('top');var g=p.options.speed;c.animate({left:-d.diff.width},g).animate({left:0},g)};this.go.vertical=function(a){var b=$(a);var c=b.find('img');var d=b.data('asexy');var e=c.css('left');var f=c.css('top');var g=p.options.speed;c.animate({top:-d.diff.height},g).animate({top:0},g)};this.go.x=function(a){var b=$(a);var c=b.find('img');var d=b.data('asexy');var e=c.css('left');var f=c.css('top');var g=p.options.speed;c.animate({left:-d.diff.width,top:-d.diff.height},g).animate({left:-d.diff.width,top:0},g).animate({left:0,top:-d.diff.height},g).animate({left:0,top:0},g)};this.back=function(a){var b=$(a);var c=b.find('img');var d=b.data('asexy');c.stop(true);c.animate({top:d.def.top,left:d.def.left},p.options.speed).fadeTo(p.options.speed/2,p.options.opacity)};return this}})(jQuery);