// Jquery Minified Plugins
// jqZebra. ver 1.0 Jamtech Soloutions 2007
// Lavalamp Version: 0.1.0 Copyright (c) 2007 Ganeshji Marwaha (gmarwaha.com)
// JQUERY - EASING
// popin v0.3b by Jamtech Solutions (site specific version)
// tooltip Jamtech Soloutions 2008
// CB(checkbox) Jamtech Soloutions 2010
// jGrowl 1.2.0 by Stan Lemon <stanlemon@mac.com>
// fastTrim: super-fast javascript trim based on http://blog.stevenlevithan.com/archives/faster-trim-javascript
// evenIfHidden: gets hidden element css attributes
// jCenter center an element in its parent or viewport
// jumpTo: scroll to 'target' (vert. only).

// evenIfHidden
jQuery.fn.evenIfHidden=function(callback){return this.each(function(){var self=$(this);var styleBackups=[];var hiddenElements=self.parents().andSelf().filter(':hidden');if(!hiddenElements.length){callback(self);return true;}
hiddenElements.each(function(){var style=$(this).attr('style');style=typeof style=='undefined'?'':style;styleBackups.push(style);$(this).attr('style',style+' display: block !important;');});hiddenElements.eq(0).css('left',-10000);callback(self);hiddenElements.each(function(){$(this).attr('style',styleBackups.shift());});});};

//actual size: for hidden elements
(function($){$.fn.extend({actual:function(method,options){var $hidden,$target,configs,css,tmp,actual,fix,restore;if(!this[method]){throw'$.actual => The jQuery method "'+method+'" you called does not exist';}
configs=$.extend({absolute:false,clone:false},options);$target=this;if(configs.clone===true){fix=function(){$target=$target.filter(':first').clone().css({position:'absolute',top:-1000}).appendTo('body');};restore=function(){$target.remove();};}else{fix=function(){$hidden=$target.parents().andSelf().filter(':hidden');css=configs.absolute===true?{position:'absolute',visibility:'hidden',display:'block'}:{visibility:'hidden',display:'block'};tmp=[];$hidden.each(function(){var _tmp={},name;for(name in css){_tmp[name]=this.style[name];this.style[name]=css[name];}
tmp.push(_tmp);});};restore=function(){$hidden.each(function(i){var _tmp=tmp[i],name;for(name in css){this.style[name]=_tmp[name];}});};}
fix();actual=$target[method]();restore();return actual;}});})(jQuery);

// jCenter 
$.fn.jCenter=function(chk){var tp=document.getElementsByTagName("html")[0].scrollTop;var bh=$(window).height();var bw=$(window).width();return this.each(function(i){var ah;var aw; ah=$(this).actual('height');aw=$(this).actual('width'); var ph=$(this).parent().height();var pw=$(this).parent().width();var mh=(chk)?((bh-ah)/2)+tp:(ph-ah)/2;var mw=(chk)?(bw-aw)/2:(pw-aw)/2;if($.browser.msie)mw=0;$(this).css('margin',mh+'px 0 0 '+mw+'px');});};

// fastTrim
String.prototype.fastTrim = function() { return this.replace(/^\s+|\s+$/g, ''); }

//jqzebra
jQuery.fn.Zebra=function(tableID){var tableIDa='table.'+tableID+' tbody tr';var tableIDb='table.'+tableID+' tr';var classNames={0:'first',1:'second',2:'third'};$(tableIDa).not('[th]').each(function(index){$(this).addClass(classNames[index%2]).mouseover(function(){$(this).addClass("over");}).mouseout(function(){$(this).removeClass("over");});$(this).click(function(){$(tableIDb).each(function(x){$(this).removeClass('highlight');});$(this).toggleClass('highlight');});});};

//lavalamp
(function($){$.fn.lavaLamp=function(o){o=$.extend({fx:"linear",speed:500,click:function(){}},o||{});return this.each(function(){var b=$(this),noop=function(){},$back=$('<li class="back"><div class="left"></div></li>').appendTo(b),$li=$("li",this),curr=$("li.current",this)[0]||$($li[0]).addClass("current")[0];$li.not(".back").hover(function(){move(this)},noop);$(this).hover(noop,function(){move(curr)});$li.click(function(e){setCurr(this);return o.click.apply(this,[e,this])});setCurr(curr);function setCurr(a){$back.css({"left":a.offsetLeft+"px","width":a.offsetWidth+"px"});curr=a};function move(a){$back.each(function(){$(this).dequeue()}).animate({width:a.offsetWidth,left:a.offsetLeft},o.speed,o.fx)}})}})(jQuery);

//EASING
jQuery.easing={easein:function(x,t,b,c,d){return c*(t/=d)*t+b},easeinout:function(x,t,b,c,d){if(t<d/2)return 2*c*t*t/(d*d)+b;var a=t-d/2;return-2*c*a*a/(d*d)+2*c*a/d+c/2+b},easeout:function(x,t,b,c,d){return-c*t*t/(d*d)+2*c*t/d+b},expoin:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}return a*(Math.exp(Math.log(c)/d*t))+b},expoout:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}return a*(-Math.exp(-Math.log(c)/d*(t-d))+c+1)+b},expoinout:function(x,t,b,c,d){var a=1;if(c<0){a*=-1;c*=-1}if(t<d/2)return a*(Math.exp(Math.log(c/2)/(d/2)*t))+b;return a*(-Math.exp(-2*Math.log(c/2)/d*(t-d))+c+1)+b},bouncein:function(x,t,b,c,d){return c-jQuery.easing['bounceout'](x,d-t,0,c,d)+b},bounceout:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},bounceinout:function(x,t,b,c,d){if(t<d/2)return jQuery.easing['bouncein'](x,t*2,0,c,d)*.5+b;return jQuery.easing['bounceout'](x,t*2-d,0,c,d)*.5+c*.5+b},elasin:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b},elasout:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},elasinout:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},backin:function(x,t,b,c,d){var s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},backout:function(x,t,b,c,d){var s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},backinout:function(x,t,b,c,d){var s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},linear:function(x,t,b,c,d){return c*t/d+b}};

//tooltip
this.tooltip=function(){xOffset=10;yOffset=20;$(".tooltip").hover(function(e){this.t=this.title;if(this.t!=""){this.title="";$("#tooltip").text(this.t).css("top",(e.pageY-xOffset)+"px").css("left",(e.pageX+yOffset)+"px").fadeIn("fast");}},function(){if(this.t!=""){this.title=this.t;$("#tooltip").hide();}});$(".tooltip").mousemove(function(e){$("#tooltip").css("top",(e.pageY-xOffset)+"px").css("left",(e.pageX+yOffset)+"px");});};

//popin
var PPNstatus = 0;
jQuery.fn.popin=function(o){var settings=jQuery.extend({loaderImg:"",opacity:.5,bodyHTML:'',bodyClass:'',contClass:'',veilClass:'popin-veil',content:false,center:false,block:false},o);jQuery(this).each(function(){jQuery(this).click(function(){var href=$(this).attr("href");var cont;var sw;if(settings.content){sw=1;cont=settings.content;}else if(href.indexOf('#')==0){sw=2;cont=href;}else{sw=0;cont=href;}
PPNopen(cont,sw);return false;});});var Loader=new Image();Loader.src=settings.loaderImg;var popinBody=settings.bodyHTML;var popinClass="."+settings.bodyClass;var contentClass="."+settings.contClass;var popVeil="."+settings.veilClass;var opacity=settings.opacity;var ie6=($.browser.msie&&($.browser.version=="6.0"))?true:false; ie6=($.browser.msie&&($.browser.version=="6.0"))?true:ie6;
var body_1=$("body");var body_2=$("html, body");var body_3=$("html");function PPNopen(url,sw){body_1.prepend('<div class="'+settings.veilClass+'"></div>');var PPV=$(popVeil);if(ie6==true){$('#jumper').hide();PPNhtmlScroll=document.getElementsByTagName("html")[0].scrollTop;var PPNbodyMargin=new Object();PPNbodyMargin.top=parseInt(body_1.css("margin-top"));PPNbodyMargin.right=parseInt(body_1.css("margin-right"));PPNbodyMargin.bottom=parseInt(body_1.css("margin-bottom"));PPNbodyMargin.left=parseInt(body_1.css("margin-left"));body_2.css("height","100%");body_2.css("overflow","hidden");PPNbodyHeight=parseInt(body_1.height());body_2.css("overflow","visible");body_2.css("overflow-x","visible");PPNbodyTop=((PPNbodyMargin.top+PPNbodyMargin.bottom)<PPNhtmlScroll)?(PPNbodyMargin.top+PPNbodyMargin.bottom-PPNhtmlScroll):0;body_1.css("top",PPNbodyTop);PPV.css("top",-(PPNbodyMargin.top+PPNbodyMargin.bottom-PPNhtmlScroll));PPV.css("left",(-PPNbodyMargin.left));PPV.css("width",body_3.width());}else{body_1.css("overflow","hidden");}
PPV.animate({height:((ie6==true)?(PPNbodyHeight+PPNbodyMargin.top+PPNbodyMargin.bottom):"100%")},function(){PPV.css({"background-image":"url('"+settings.loaderImg+"')","opacity":opacity});$(popinClass).css("height",body_1.height());switch(sw){case 1:PPNshow(url);break;case 2:PPNshow($(url).html());break;default:$.get(url,function(result){PPNshow(result);});}});if(!settings.block){body_3.keydown(function(e){if(e.keyCode=='27'){PPNclose();}});}}
function PPNshow(contents){var ppinBody=popinBody.replace("{0}",contents);body_1.prepend(ppinBody);if(settings.center){var box=$(settings.center);var hw=PPNcenter(box,false);box.css('margin',hw[0]+'px 0 0 '+hw[1]+'px');}
$(popVeil).css("background-image","");$(popinClass).fadeIn("slow",function(){$(this).find('div.blurb').scrollTop(0)});$(".popin-close").click(function(){PPNclose();return false;});}
function PPNclose(){body_3.unbind("keydown");$(popinClass).fadeOut("slow",function(){$(popVeil).animate({opacity:0,height:0},function(){if(ie6==true){body_2.css("height","auto");body_2.css("overflow","auto");body_2.css("overflow-x","hidden");body_1.css("top",0);window.scrollTo(0,(PPNhtmlScroll));$('#jumper').show();}else{body_1.css("overflow","");}
$(popinClass+","+popVeil).remove();});});}
function PPNcenter(box,chk){var ah;var aw;var tp=document.getElementsByTagName("html")[0].scrollTop;var bh=$(window).height();var bw=$(window).width();box.evenIfHidden(function(element){aw=element.width();ah=element.height();});var ph=$(popinClass).height();var pw=$(popinClass).width();var mh=(chk)?(bh-ah)/2:(ph-ah)/2;var mw=(chk)?(bw-aw)/2:(pw-aw)/2;if($.browser.msie)mw=0;var output=new Array(mh+tp,mw);return output;}};


//jgrowl
(function($){$.jGrowl=function(m,o){if($('#jGrowl').size()==0)$('<div id="jGrowl"></div>').addClass($.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',new $.fn.jGrowl());$(this).data('jGrowl.instance').startup(this);}
if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').create(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:'',group:'',sticky:false,position:'top-right',glue:'after',theme:'default',corners:'10px',check:250,life:3000,speed:'normal',easing:'',closer:true,closeTemplate:'&times;',closerTemplate:'<div>[ close all ]</div>',log:function(e,m,o){},beforeOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},notifications:[],element:null,interval:null,create:function(message,o){var o=$.extend({},this.defaults,o);this.notifications[this.notifications.length]={message:message,options:o};o.log.apply(this.element,[this.element,message,o]);},render:function(notification){var self=this;var message=notification.message;var o=notification.options;var notification=$('<div class="jGrowl-notification'+((o.group!=undefined&&o.group!='')?' '+o.group:'')+'"><div class="close">'+o.closeTemplate+'</div><div class="header">'+o.header+'</div><div class="message">'+message+'</div></div>').data("jGrowl",o).addClass(o.theme).children('div.close').bind("click.jGrowl",function(){$(this).parent().trigger('jGrowl.close');}).parent();(o.glue=='after')?$('div.jGrowl-notification:last',this.element).after(notification):$('div.jGrowl-notification:first',this.element).before(notification);$(notification).bind("mouseover.jGrowl",function(){$(this).data("jGrowl").pause=true;}).bind("mouseout.jGrowl",function(){$(this).data("jGrowl").pause=false;}).bind('jGrowl.beforeOpen',function(){o.beforeOpen.apply(self.element,[self.element,message,o]);}).bind('jGrowl.open',function(){o.open.apply(self.element,[self.element,message,o]);}).bind('jGrowl.beforeClose',function(){o.beforeClose.apply(self.element,[self.element,message,o]);}).bind('jGrowl.close',function(){$(this).trigger('jGrowl.beforeClose').animate(o.animateClose,o.speed,o.easing,function(){$(this).remove();o.close.apply(self.element,[self.element,message,o]);});}).trigger('jGrowl.beforeOpen').animate(o.animateOpen,o.speed,o.easing,function(){$(this).data("jGrowl").created=new Date();}).trigger('jGrowl.open');if($.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',this.element).size()>1&&$('div.jGrowl-closer',this.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass('jGrowl-closer').addClass(this.defaults.theme).appendTo(this.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().children('div.close').trigger("click.jGrowl");if($.isFunction(self.defaults.closer))self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+$(this).data("jGrowl").life)<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl").pause==undefined||$(this).data("jGrowl").pause!=true)){$(this).trigger('jGrowl.close');}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find('div.jGrowl-notification:parent').size()<this.defaults.pool)){this.render(this.notifications.shift());}
if($(this.element).find('div.jGrowl-notification:parent').size()<2){$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});};},startup:function(e){this.element=$(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');this.interval=setInterval(function(){jQuery(e).data('jGrowl.instance').update();},this.defaults.check);if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"])$(this.element).addClass('ie6');},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery);

//checkbox
(function($){var CB=function(e)
{if(!e)var e=window.event;e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();};$.fn.checkbox=function(options){try{document.execCommand('BackgroundImageCache',false,true);}catch(e){}
var settings={cls:'jquery-checkbox',empty:'gfxred/empty.png'};settings=$.extend(settings,options||{});var addEvents=function(object)
{var checked=object.checked;var disabled=object.disabled;var $object=$(object);if(object.stateInterval)
clearInterval(object.stateInterval);object.stateInterval=setInterval(function()
{if(object.disabled!=disabled)
$object.trigger((disabled=!!object.disabled)?'disable':'enable');if(object.checked!=checked)
$object.trigger((checked=!!object.checked)?'check':'uncheck');},10);return $object;};return this.each(function()
{var ch=this;var $ch=addEvents(ch);if(ch.wrapper)ch.wrapper.remove();ch.wrapper=$('<span class="'+settings.cls+'"><span class="mark"><img src="'+settings.empty+'" /></span></span>');ch.wrapperInner=ch.wrapper.children('span:eq(0)');ch.wrapper.hover(function(e){ch.wrapperInner.addClass(settings.cls+'-hover');CB(e);},function(e){ch.wrapperInner.removeClass(settings.cls+'-hover');CB(e);});$ch.css({position:'absolute',zIndex:-1,visibility:'hidden'}).after(ch.wrapper);var label=false;if($ch.attr('id'))
{label=$('label[for='+$ch.attr('id')+']');if(!label.length)label=false;}
if(!label){label=$ch.closest?$ch.closest('label'):$ch.parents('label:eq(0)');if(!label.length)label=false;}
if(label){label.hover(function(e){ch.wrapper.trigger('mouseover',[e]);},function(e){ch.wrapper.trigger('mouseout',[e]);});label.click(function(e){$ch.trigger('click',[e]);CB(e);return false;});}
ch.wrapper.click(function(e){$ch.trigger('click',[e]);CB(e);return false;});$ch.click(function(e){CB(e);});$ch.bind('disable',function(){ch.wrapperInner.addClass(settings.cls+'-disabled');}).bind('enable',function(){ch.wrapperInner.removeClass(settings.cls+'-disabled');});$ch.bind('check',function(){ch.wrapper.addClass(settings.cls+'-checked');}).bind('uncheck',function(){ch.wrapper.removeClass(settings.cls+'-checked');});$('img',ch.wrapper).bind('dragstart',function(){return false;}).bind('mousedown',function(){return false;});if(window.getSelection)
ch.wrapper.css('MozUserSelect','none');if(ch.checked)ch.wrapper.addClass(settings.cls+'-checked');
if(ch.disabled)ch.wrapperInner.addClass(settings.cls+'-disabled');});}})(jQuery);

//jumpTo 'target'
jQuery.fn.jumpTo=function(opts){var o = {speed:555}; var target = $(this); o=$.extend(o, opts || {}); $('html,body').animate({ scrollTop: $(target).offset().top},o.speed);};

//zebraFilter
jQuery.fn.ZebraHover=function(){jQuery('tbody tr',this).mouseover(function(){jQuery(this).addClass("over");}).mouseout(function(){jQuery(this).removeClass("over");}).click(function(){jQuery('table.widget-table tr').removeClass('hilite');jQuery(this).addClass('hilite');});};
jQuery.fn.ZebraRows=function(){jQuery('tbody tr:visible:odd',this).removeClass('even').addClass('odd');jQuery('tbody tr:visible:even',this).removeClass('odd').addClass('even');return this;};
jQuery.fn.ZebraSort=function(){var $table=jQuery(this);function reformatDate(dateStr){dArr=dateStr.split("/");return dArr[2]+"/"+dArr[1]+"/"+dArr[0];}
jQuery('th',$table).each(function(column){var $header=jQuery(this);var findSortKey;if($header.is('.sort-date')){findSortKey=function($cell){var d=reformatDate($cell.text());var key=Date.parse(d);console.log(key);return key;};}else if($header.is('.sort-numeric')){findSortKey=function($cell){var key=$cell.text().replace(/^[^\d.]*/,'');key=parseFloat(key);return isNaN(key)?0:key;};}else{findSortKey=function($cell){return $cell.find('.sort-key').text().toUpperCase()+' '+$cell.text().toUpperCase();};} if(findSortKey){$header.addClass('sorter').hover(function(){$header.attr('title','click to sort').addClass('hover');},function(){$header.removeClass('hover');}).click(function(){var sortDirection=1;if($header.is('.sorted-asc')){sortDirection=-1;} var rows=$table.find('tbody > tr').get();jQuery.each(rows,function(index,row){var $cell=jQuery(row).children('td').eq(column);row.sortKey=findSortKey($cell);});rows.sort(function(a,b){if(a.sortKey<b.sortKey)return-sortDirection;if(a.sortKey>b.sortKey)return sortDirection;return 0;});jQuery.each(rows,function(index,row){$table.children('tbody').append(row);row.sortKey=null;});$table.find('th').removeClass('sorted-asc').removeClass('sorted-desc');if(sortDirection==1){$header.addClass('sorted-asc');}else{$header.addClass('sorted-desc');} $table.find('td').removeClass('sorted').filter(':nth-child('+(column+1)+')').addClass('sorted');$table.ZebraRows();});}});};
jQuery.fn.widFilter=function(){jQuery(this).each(function(){var table=jQuery(this);var widget=table.parent().parent();var tableID=table.attr('id');var $filter=jQuery('<div class="filters"><label for="filter">Filter </label><input type="text" name="filter" value="" id="filter'+tableID+'" /></div>');var tbody=table.find('tbody tr');function filter(selector,query){query=jQuery.trim(query);query=query.replace(/ /gi,'|');jQuery(selector).each(function(){(jQuery(this).text().search(new RegExp(query,"i"))<0)?jQuery(this).hide().removeClass('visible'):jQuery(this).show().addClass('visible');});} widget.find('.widget-head').append($filter);widget.find('.widget-head h3, .widget-head a.toggle').click(function(){var pr=jQuery(this).parent().parent();var wc=pr.find(".widget-content");var bt=pr.find('.widget-head a.toggle');var tx=(bt.html()=="Show")?"Hide":"Show";wc.stop().animate({height:'toggle'},300,function(){bt.html(tx).toggleClass("open");});return false;});tbody.addClass('visible');jQuery('#filter'+tableID).keyup(function(event){if(event.keyCode==27||jQuery(this).val()==''){jQuery(this).val('');tbody.removeClass('visible').show().addClass('visible');}else{filter(tbody,jQuery(this).val());} table.ZebraRows();});table.ZebraHover();table.ZebraRows();table.ZebraSort();});};

//sort elements
jQuery.fn.sortElements=(function(){var sort=[].sort;return function(comparator,getSortable){getSortable=getSortable||function(){return this;};var placements=this.map(function(){var sortElement=getSortable.call(this),parentNode=sortElement.parentNode,nextSibling=parentNode.insertBefore(document.createTextNode(''),sortElement.nextSibling);return function(){if(parentNode===this){throw new Error("You can't sort elements if any one is a descendant of another.");}
parentNode.insertBefore(this,nextSibling);parentNode.removeChild(nextSibling);};});return sort.call(this,comparator).each(function(i){placements[i].call(getSortable.call(this));});};
    
})();
