/*
 * jQuery css clip animation support -- Jim Palmer
 * version 0.1.2
 * idea spawned from jquery.color.js by John Resig
 * Released under the MIT license.
 *
 * This version is enhanced with Contributions by werehamster & Juan Ramón Moreno
 * http://www.overset.com/2008/08/07/jquery-css-clip-animation-plugin/
 */
(function(jQuery){
	jQuery.fx.step.clip = function(fx){

		if (fx.state == 0) {
			var cRE = /rect\(([0-9]{1,})(px|em)[,]? ([0-9]{1,})(px|em)[,]? ([0-9]{1,})(px|em)[,]? ([0-9]{1,})(px|em)\)/;
			$elem = $(fx.elem);
			var clip = cRE.test(fx.elem.style.clip) ? fx.elem.style.clip : 'rect(0px '+ $elem.width() +'px '+ $elem.height() +'px 0px)';
			/*
			fx.start = cRE.exec(clip.replace(/,/g, ''));
			fx.end = cRE.exec($.isArray(fx.end) ? fx.end[0] : fx.end);
			*/
			if (($.browser.msie) && ($.browser.version >= 8.0)) {
				fx.start = cRE.exec(fx.elem.style.clip.replace(/[, ]+/g, ' '));
				if (typeof fx.end !== 'object') {
					fx.end = cRE.exec(fx.end.replace(/[, ]+/g, ' '));
				}
			} else {
				fx.start = cRE.exec(fx.elem.style.clip.replace(/,/g, ''));
				if (typeof fx.end !== 'object') {
					fx.end = cRE.exec(fx.end.replace(/,/g, ''));
				}
			}
		}
		var sarr = new Array(), earr = new Array(), spos = fx.start.length, epos = fx.end.length,
			emOffset = fx.start[ss+1] == 'em' ? ( parseInt($(fx.elem).css('fontSize')) * 1.333 * parseInt(fx.start[ss]) ) : 1;
		for ( var ss = 1; ss < spos; ss+=2 ) { sarr.push( parseInt( emOffset * fx.start[ss] ) ); }
		for ( var es = 1; es < epos; es+=2 ) { earr.push( parseInt( emOffset * fx.end[es] ) ); }
		fx.elem.style.clip = 'rect(' + 
			parseInt( ( fx.pos * ( earr[0] - sarr[0] ) ) + sarr[0] ) + 'px ' + 
			parseInt( ( fx.pos * ( earr[1] - sarr[1] ) ) + sarr[1] ) + 'px ' +
			parseInt( ( fx.pos * ( earr[2] - sarr[2] ) ) + sarr[2] ) + 'px ' + 
			parseInt( ( fx.pos * ( earr[3] - sarr[3] ) ) + sarr[3] ) + 'px)';
	}
})(jQuery);


