jQuery.fn.reverse = function(destruct) {
	return this[destruct?'setArray':'pushStack'](this.get().reverse());
};
jQuery.fn.sort = function(fn,destruct) {
	return this[destruct?'setArray':'pushStack'](this.get().sort(fn));
};
jQuery.fn.randomize = function(destruct){
	return this.sort( function(){return(Math.round(Math.random())-0.5)}, destruct );
};
if(jQuery.fn.slice) jQuery.fn._slice = jQuery.fn.slice;
jQuery.fn.slice = function(start,end,destruct) {
	return this[destruct?'setArray':'pushStack']( Array.prototype.slice.call( this, start, end ) );
};
jQuery.fn.pop = function(destruct,returnObject){
	if(returnObject)jQuery.extend(returnObject,{pop:this[this.length-1]});
	return this.slice( 0, -1, destruct );
};
jQuery.fn.shift = function(destruct,returnObject){
	if(returnObject)jQuery.extend(returnObject,{shift:this[0]});
	return this.slice( 1, this.length, destruct );
};
jQuery.fn.rotate = function(destruct){
	var a = this.get();
	a.push(a.shift());
	return this[destruct?'setArray':'pushStack']( a );
};
jQuery.fn.rrotate = function(destruct){
  var a = this.get();
  a.unshift(a.pop());
  return this[destruct?'setArray':'pushStack']( a );
};