Free javascript Hosting


jquery.fisheye.js

Uploaded on Jan 03 2010 12:45 by freebdinfo

/*************************************************************
* jQuery FishEye plugin v0.5.0
* Copywright (c) 2008 Ian Suttle
* http://www.iansuttle.com/blog
*
* Licensed under the GNU General Public License:
* http://www.gnu.org/licenses/gpl.html
**************************************************************/
;(function($) {
jQuery.fn.FishEye = function(args) {
var container = this;
var fishEyeItemName = args.fishEyeItemName;
var maxScalePct = args.maxScalePct;
var scaleStepPct = args.scaleStepPct;
var currentlyOn;

function loadFishEye() {
$(container).mouseout(function() {
//currentlyOn = null;
//setTimeout(function() { resetContainer(this); }, 2000);
});

var x = 0;
$(fishEyeItemName, container).each(function(i) {
$(this).mouseover(function() {
expandMe(this, maxScalePct);
});

$(this).mouseout(function() {
currentlyOn = null;
setTimeout(function() { resetContainer(this); }, 2000);
});

$(this).attr("index", x);
$(this).attr("origHeight", $(this).height());
$(this).attr("origWidth", $(this).width());
x++;
});
};

function expandMe(me, growthPct) {
if ($(me).attr("index") == currentlyOn)
return;

resetContainer();

//mouse over this one
expandByStep(me, maxScalePct);
currentlyOn = $(me).attr("index");

//change siblings to the next
var next = $(me).next();
var nextStep = growthPct - scaleStepPct;
while (true) {
if (next == 'undefined' || nextStep <= 0)
break;

expandByStep(next, nextStep); //update element
next = $(next).next(); //retrieve next element to update
nextStep -= scaleStepPct; //set up next growth pct
};

//change siblings to the prev
next = $(me).prev();
nextStep = growthPct - scaleStepPct;
while (true) {
if (next == null || nextStep <= 0)
break;

expandByStep(next, nextStep); //update element
next = $(next).prev(); //retrieve next element to update
nextStep -= scaleStepPct; //set up next growth pct
};
};

function expandByStep(me, growthPct) {
var newHeight = ($(me).attr("origHeight") * (growthPct / 100)) + $(me).height();
var newWidth = ($(me).attr("origWidth") * (growthPct / 100)) + $(me).width();

$(me).height(newHeight + 'px');
$(me).width(newWidth + 'px');
};

function resetContainer() {
if (currentlyOn != null)
return;

$(fishEyeItemName, container).each(function(i) {
resetMe($(this));
});
};

function resetMe(me) {
$(me).height($(me).attr("origHeight") + 'px');
$(me).width($(me).attr("origWidth") + 'px');
};

//call the constructor
loadFishEye();
//return jQuery object
return container;
}
})(jQuery);

Back to list