;
(function($){
    $.ui={
        plugin:{
            add:function(module,option,set){
                var proto=$.ui[module].prototype;
                for(var i in set){
                    proto.plugins[i]=proto.plugins[i]||[];
                    proto.plugins[i].push([option,set[i]]);
                }
                },
        call:function(instance,name,args){
            var set=instance.plugins[name];
            if(!set){
                return;
            }
            for(var i=0;i<set.length;i++){
                if(instance.options[set[i][0]]){
                    set[i][1].apply(instance.element,args);
                }
            }
            }
    },
cssCache:{},
css:function(name){
    if($.ui.cssCache[name]){
        return $.ui.cssCache[name];
    }
    var tmp=$('<div class="ui-gen">').addClass(name).css({
        position:'absolute',
        top:'-5000px',
        left:'-5000px',
        display:'block'
    }).appendTo('body');
    $.ui.cssCache[name]=!!((!(/auto|default/).test(tmp.css('cursor'))||(/^[1-9]/).test(tmp.css('height'))||(/^[1-9]/).test(tmp.css('width'))||!(/none/).test(tmp.css('backgroundImage'))||!(/transparent|rgba\(0, 0, 0, 0\)/).test(tmp.css('backgroundColor'))));
    try{
        $('body').get(0).removeChild(tmp.get(0));
    }catch(e){}
    return $.ui.cssCache[name];
},
disableSelection:function(el){
    $(el).attr('unselectable','on').css('MozUserSelect','none');
},
enableSelection:function(el){
    $(el).attr('unselectable','off').css('MozUserSelect','');
},
hasScroll:function(e,a){
    var scroll=/top/.test(a||"top")?'scrollTop':'scrollLeft',has=false;
    if(e[scroll]>0)return true;
    e[scroll]=1;
    has=e[scroll]>0?true:false;
    e[scroll]=0;
    return has;
}
};

var _remove=$.fn.remove;
$.fn.remove=function(){
    $("*",this).add(this).triggerHandler("remove");
    return _remove.apply(this,arguments);
};

function getter(namespace,plugin,method){
    var methods=$[namespace][plugin].getter||[];
    methods=(typeof methods=="string"?methods.split(/,?\s+/):methods);
    return($.inArray(method,methods)!=-1);
}
$.widget=function(name,prototype){
    var namespace=name.split(".")[0];
    name=name.split(".")[1];
    $.fn[name]=function(options){
        var isMethodCall=(typeof options=='string'),args=Array.prototype.slice.call(arguments,1);
        if(isMethodCall&&getter(namespace,name,options)){
            var instance=$.data(this[0],name);
            return(instance?instance[options].apply(instance,args):undefined);
        }
        return this.each(function(){
            var instance=$.data(this,name);
            if(isMethodCall&&instance&&$.isFunction(instance[options])){
                instance[options].apply(instance,args);
            }else if(!isMethodCall){
                $.data(this,name,new $[namespace][name](this,options));
            }
        });
};

$[namespace][name]=function(element,options){
    var self=this;
    this.widgetName=name;
    this.widgetBaseClass=namespace+'-'+name;
    this.options=$.extend({},$.widget.defaults,$[namespace][name].defaults,options);
    this.element=$(element).bind('setData.'+name,function(e,key,value){
        return self.setData(key,value);
    }).bind('getData.'+name,function(e,key){
        return self.getData(key);
    }).bind('remove',function(){
        return self.destroy();
    });
    this.init();
};

$[namespace][name].prototype=$.extend({},$.widget.prototype,prototype);
};

$.widget.prototype={
    init:function(){},
    destroy:function(){
        this.element.removeData(this.widgetName);
    },
    getData:function(key){
        return this.options[key];
    },
    setData:function(key,value){
        this.options[key]=value;
        if(key=='disabled'){
            this.element[value?'addClass':'removeClass'](this.widgetBaseClass+'-disabled');
        }
    },
enable:function(){
    this.setData('disabled',false);
},
disable:function(){
    this.setData('disabled',true);
}
};

$.widget.defaults={
    disabled:false
};

$.ui.mouse={
    mouseInit:function(){
        var self=this;
        this.element.bind('mousedown.'+this.widgetName,function(e){
            return self.mouseDown(e);
        });
        if($.browser.msie){
            this._mouseUnselectable=this.element.attr('unselectable');
            this.element.attr('unselectable','on');
        }
        this.started=false;
    },
    mouseDestroy:function(){
        this.element.unbind('.'+this.widgetName);
        ($.browser.msie&&this.element.attr('unselectable',this._mouseUnselectable));
    },
    mouseDown:function(e){
        (this._mouseStarted&&this.mouseUp(e));
        this._mouseDownEvent=e;
        var self=this,btnIsLeft=(e.which==1),elIsCancel=(typeof this.options.cancel=="string"?$(e.target).parents().add(e.target).filter(this.options.cancel).length:false);
        if(!btnIsLeft||elIsCancel||!this.mouseCapture(e)){
            return true;
        }
        this._mouseDelayMet=!this.options.delay;
        if(!this._mouseDelayMet){
            this._mouseDelayTimer=setTimeout(function(){
                self._mouseDelayMet=true;
            },this.options.delay);
        }
        if(this.mouseDistanceMet(e)&&this.mouseDelayMet(e)){
            this._mouseStarted=(this.mouseStart(e)!==false);
            if(!this._mouseStarted){
                e.preventDefault();
                return true;
            }
        }
    this._mouseMoveDelegate=function(e){
        return self.mouseMove(e);
    };

    this._mouseUpDelegate=function(e){
        return self.mouseUp(e);
    };

    $(document).bind('mousemove.'+this.widgetName,this._mouseMoveDelegate).bind('mouseup.'+this.widgetName,this._mouseUpDelegate);
    return false;
},
mouseMove:function(e){
    if($.browser.msie&&!e.button){
        return this.mouseUp(e);
    }
    if(this._mouseStarted){
        this.mouseDrag(e);
        return false;
    }
    if(this.mouseDistanceMet(e)&&this.mouseDelayMet(e)){
        this._mouseStarted=(this.mouseStart(this._mouseDownEvent,e)!==false);
        (this._mouseStarted?this.mouseDrag(e):this.mouseUp(e));
    }
    return!this._mouseStarted;
},
mouseUp:function(e){
    $(document).unbind('mousemove.'+this.widgetName,this._mouseMoveDelegate).unbind('mouseup.'+this.widgetName,this._mouseUpDelegate);
    if(this._mouseStarted){
        this._mouseStarted=false;
        this.mouseStop(e);
    }
    return false;
},
mouseDistanceMet:function(e){
    return(Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance);
},
mouseDelayMet:function(e){
    return this._mouseDelayMet;
},
mouseStart:function(e){},
mouseDrag:function(e){},
mouseStop:function(e){},
mouseCapture:function(e){
    return true;
}
};

$.ui.mouse.defaults={
    cancel:null,
    distance:1,
    delay:0
};

})(jQuery);
(function($){
    $.widget("ui.draggable",$.extend({},$.ui.mouse,{
        init:function(){
            var o=this.options;
            if(o.helper=='original'&&!(/(relative|absolute|fixed)/).test(this.element.css('position')))
                this.element.css('position','relative');
            this.element.addClass('ui-draggable');
            (o.disabled&&this.element.addClass('ui-draggable-disabled'));
            this.mouseInit();
        },
        mouseStart:function(e){
            var o=this.options;
            if(this.helper||o.disabled||$(e.target).is('.ui-resizable-handle'))return false;
            var handle=!this.options.handle||!$(this.options.handle,this.element).length?true:false;
            $(this.options.handle,this.element).find("*").andSelf().each(function(){
                if(this==e.target)handle=true;
            });
            if(!handle)return false;
            if($.ui.ddmanager)$.ui.ddmanager.current=this;
            this.helper=$.isFunction(o.helper)?$(o.helper.apply(this.element[0],[e])):(o.helper=='clone'?this.element.clone():this.element);
            if(!this.helper.parents('body').length)this.helper.appendTo((o.appendTo=='parent'?this.element[0].parentNode:o.appendTo));
            if(this.helper[0]!=this.element[0]&&!(/(fixed|absolute)/).test(this.helper.css("position")))this.helper.css("position","absolute");
            this.margins={
                left:(parseInt(this.element.css("marginLeft"),10)||0),
                top:(parseInt(this.element.css("marginTop"),10)||0)
                };

            this.cssPosition=this.helper.css("position");
            this.offset=this.element.offset();
            this.offset={
                top:this.offset.top-this.margins.top,
                left:this.offset.left-this.margins.left
                };

            this.offset.click={
                left:e.pageX-this.offset.left,
                top:e.pageY-this.offset.top
                };

            this.offsetParent=this.helper.offsetParent();
            var po=this.offsetParent.offset();
            if(this.offsetParent[0]==document.body&&$.browser.mozilla)po={
                top:0,
                left:0
            };

            this.offset.parent={
                top:po.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),
                left:po.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)
                };

            var p=this.element.position();
            this.offset.relative=this.cssPosition=="relative"?{
                top:p.top-(parseInt(this.helper.css("top"),10)||0)+this.offsetParent[0].scrollTop,
                left:p.left-(parseInt(this.helper.css("left"),10)||0)+this.offsetParent[0].scrollLeft
                }:{
                top:0,
                left:0
            };

            this.originalPosition=this.generatePosition(e);
            this.helperProportions={
                width:this.helper.outerWidth(),
                height:this.helper.outerHeight()
                };

            if(o.cursorAt){
                if(o.cursorAt.left!=undefined)this.offset.click.left=o.cursorAt.left+this.margins.left;
                if(o.cursorAt.right!=undefined)this.offset.click.left=this.helperProportions.width-o.cursorAt.right+this.margins.left;
                if(o.cursorAt.top!=undefined)this.offset.click.top=o.cursorAt.top+this.margins.top;
                if(o.cursorAt.bottom!=undefined)this.offset.click.top=this.helperProportions.height-o.cursorAt.bottom+this.margins.top;
            }
            if(o.containment){
                if(o.containment=='parent')o.containment=this.helper[0].parentNode;
                if(o.containment=='document'||o.containment=='window')this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,$(o.containment=='document'?document:window).width()-this.offset.relative.left-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),($(o.containment=='document'?document:window).height()||document.body.parentNode.scrollHeight)-this.offset.relative.top-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)];
                if(!(/^(document|window|parent)$/).test(o.containment)){
                    var ce=$(o.containment)[0];
                    var co=$(o.containment).offset();
                    this.containment=[co.left+(parseInt($(ce).css("borderLeftWidth"),10)||0)-this.offset.relative.left-this.offset.parent.left,co.top+(parseInt($(ce).css("borderTopWidth"),10)||0)-this.offset.relative.top-this.offset.parent.top,co.left+Math.max(ce.scrollWidth,ce.offsetWidth)-(parseInt($(ce).css("borderLeftWidth"),10)||0)-this.offset.relative.left-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),co.top+Math.max(ce.scrollHeight,ce.offsetHeight)-(parseInt($(ce).css("borderTopWidth"),10)||0)-this.offset.relative.top-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)];
                }
            }
        this.propagate("start",e);
        this.helperProportions={
            width:this.helper.outerWidth(),
            height:this.helper.outerHeight()
            };

        if($.ui.ddmanager&&!o.dropBehaviour)$.ui.ddmanager.prepareOffsets(this,e);
        this.helper.addClass("ui-draggable-dragging");
        this.mouseDrag(e);
        return true;
    },
    convertPositionTo:function(d,pos){
        if(!pos)pos=this.position;
        var mod=d=="absolute"?1:-1;
        return{
            top:(pos.top
                +this.offset.relative.top*mod
                +this.offset.parent.top*mod
                -(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:this.offsetParent[0].scrollTop)*mod
                +(this.cssPosition=="fixed"?$(document).scrollTop():0)*mod
                +this.margins.top*mod),
            left:(pos.left
                +this.offset.relative.left*mod
                +this.offset.parent.left*mod
                -(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:this.offsetParent[0].scrollLeft)*mod
                +(this.cssPosition=="fixed"?$(document).scrollLeft():0)*mod
                +this.margins.left*mod)
            };

    },
    generatePosition:function(e){
        var o=this.options;
        var position={
            top:(e.pageY
                -this.offset.click.top
                -this.offset.relative.top
                -this.offset.parent.top
                +(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:this.offsetParent[0].scrollTop)
                -(this.cssPosition=="fixed"?$(document).scrollTop():0)),
            left:(e.pageX
                -this.offset.click.left
                -this.offset.relative.left
                -this.offset.parent.left
                +(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:this.offsetParent[0].scrollLeft)
                -(this.cssPosition=="fixed"?$(document).scrollLeft():0))
            };

        if(!this.originalPosition)return position;
        if(this.containment){
            if(position.left<this.containment[0])position.left=this.containment[0];
            if(position.top<this.containment[1])position.top=this.containment[1];
            if(position.left>this.containment[2])position.left=this.containment[2];
            if(position.top>this.containment[3])position.top=this.containment[3];
        }
        if(o.grid){
            var top=this.originalPosition.top+Math.round((position.top-this.originalPosition.top)/o.grid[1])*o.grid[1];
            position.top=this.containment?(!(top<this.containment[1]||top>this.containment[3])?top:(!(top<this.containment[1])?top-o.grid[1]:top+o.grid[1])):top;
            var left=this.originalPosition.left+Math.round((position.left-this.originalPosition.left)/o.grid[0])*o.grid[0];
            position.left=this.containment?(!(left<this.containment[0]||left>this.containment[2])?left:(!(left<this.containment[0])?left-o.grid[0]:left+o.grid[0])):left;
        }
        return position;
    },
    mouseDrag:function(e){
        this.position=this.generatePosition(e);
        this.positionAbs=this.convertPositionTo("absolute");
        this.position=this.propagate("drag",e)||this.position;
        if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+'px';
        if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+'px';
        if($.ui.ddmanager)$.ui.ddmanager.drag(this,e);
        return false;
    },
    mouseStop:function(e){
        var dropped=false;
        if($.ui.ddmanager&&!this.options.dropBehaviour)
            var dropped=$.ui.ddmanager.drop(this,e);
        if((this.options.revert=="invalid"&&!dropped)||(this.options.revert=="valid"&&dropped)||this.options.revert===true){
            var self=this;
            $(this.helper).animate(this.originalPosition,parseInt(this.options.revert,10)||500,function(){
                self.propagate("stop",e);
                self.clear();
            });
        }else{
            this.propagate("stop",e);
            this.clear();
        }
        return false;
    },
    clear:function(){
        this.helper.removeClass("ui-draggable-dragging");
        if(this.options.helper!='original'&&!this.cancelHelperRemoval)this.helper.remove();
        this.helper=null;
        this.cancelHelperRemoval=false;
    },
    plugins:{},
    uiHash:function(e){
        return{
            helper:this.helper,
            position:this.position,
            absolutePosition:this.positionAbs,
            options:this.options
            };

    },
    propagate:function(n,e){
        $.ui.plugin.call(this,n,[e,this.uiHash()]);
        if(n=="drag")this.positionAbs=this.convertPositionTo("absolute");
        return this.element.triggerHandler(n=="drag"?n:"drag"+n,[e,this.uiHash()],this.options[n]);
    },
    destroy:function(){
        if(!this.element.data('draggable'))return;
        this.element.removeData("draggable").unbind(".draggable").removeClass('ui-draggable');
        this.mouseDestroy();
    }
}));
$.extend($.ui.draggable,{
    defaults:{
        appendTo:"parent",
        axis:false,
        cancel:":input",
        delay:0,
        distance:1,
        helper:"original"
    }
});
$.ui.plugin.add("draggable","cursor",{
    start:function(e,ui){
        var t=$('body');
        if(t.css("cursor"))ui.options._cursor=t.css("cursor");
        t.css("cursor",ui.options.cursor);
    },
    stop:function(e,ui){
        if(ui.options._cursor)$('body').css("cursor",ui.options._cursor);
    }
});
$.ui.plugin.add("draggable","zIndex",{
    start:function(e,ui){
        var t=$(ui.helper);
        if(t.css("zIndex"))ui.options._zIndex=t.css("zIndex");
        t.css('zIndex',ui.options.zIndex);
    },
    stop:function(e,ui){
        if(ui.options._zIndex)$(ui.helper).css('zIndex',ui.options._zIndex);
    }
});
$.ui.plugin.add("draggable","opacity",{
    start:function(e,ui){
        var t=$(ui.helper);
        if(t.css("opacity"))ui.options._opacity=t.css("opacity");
        t.css('opacity',ui.options.opacity);
    },
    stop:function(e,ui){
        if(ui.options._opacity)$(ui.helper).css('opacity',ui.options._opacity);
    }
});
$.ui.plugin.add("draggable","iframeFix",{
    start:function(e,ui){
        $(ui.options.iframeFix===true?"iframe":ui.options.iframeFix).each(function(){
            $('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({
                width:this.offsetWidth+"px",
                height:this.offsetHeight+"px",
                position:"absolute",
                opacity:"0.001",
                zIndex:1000
            }).css($(this).offset()).appendTo("body");
        });
    },
    stop:function(e,ui){
        $("div.DragDropIframeFix").each(function(){
            this.parentNode.removeChild(this);
        });
    }
});
$.ui.plugin.add("draggable","scroll",{
    start:function(e,ui){
        var o=ui.options;
        var i=$(this).data("draggable");
        o.scrollSensitivity=o.scrollSensitivity||20;
        o.scrollSpeed=o.scrollSpeed||20;
        i.overflowY=function(el){
            do{
                if(/auto|scroll/.test(el.css('overflow'))||(/auto|scroll/).test(el.css('overflow-y')))return el;
                el=el.parent();
            }while(el[0].parentNode);
            return $(document);
        }(this);
        i.overflowX=function(el){
            do{
                if(/auto|scroll/.test(el.css('overflow'))||(/auto|scroll/).test(el.css('overflow-x')))return el;
                el=el.parent();
            }while(el[0].parentNode);
            return $(document);
        }(this);
        if(i.overflowY[0]!=document&&i.overflowY[0].tagName!='HTML')i.overflowYOffset=i.overflowY.offset();
        if(i.overflowX[0]!=document&&i.overflowX[0].tagName!='HTML')i.overflowXOffset=i.overflowX.offset();
    },
    drag:function(e,ui){
        var o=ui.options;
        var i=$(this).data("draggable");
        if(i.overflowY[0]!=document&&i.overflowY[0].tagName!='HTML'){
            if((i.overflowYOffset.top+i.overflowY[0].offsetHeight)-e.pageY<o.scrollSensitivity)
                i.overflowY[0].scrollTop=i.overflowY[0].scrollTop+o.scrollSpeed;
            if(e.pageY-i.overflowYOffset.top<o.scrollSensitivity)
                i.overflowY[0].scrollTop=i.overflowY[0].scrollTop-o.scrollSpeed;
        }else{
            if(e.pageY-$(document).scrollTop()<o.scrollSensitivity)
                $(document).scrollTop($(document).scrollTop()-o.scrollSpeed);
            if($(window).height()-(e.pageY-$(document).scrollTop())<o.scrollSensitivity)
                $(document).scrollTop($(document).scrollTop()+o.scrollSpeed);
        }
        if(i.overflowX[0]!=document&&i.overflowX[0].tagName!='HTML'){
            if((i.overflowXOffset.left+i.overflowX[0].offsetWidth)-e.pageX<o.scrollSensitivity)
                i.overflowX[0].scrollLeft=i.overflowX[0].scrollLeft+o.scrollSpeed;
            if(e.pageX-i.overflowXOffset.left<o.scrollSensitivity)
                i.overflowX[0].scrollLeft=i.overflowX[0].scrollLeft-o.scrollSpeed;
        }else{
            if(e.pageX-$(document).scrollLeft()<o.scrollSensitivity)
                $(document).scrollLeft($(document).scrollLeft()-o.scrollSpeed);
            if($(window).width()-(e.pageX-$(document).scrollLeft())<o.scrollSensitivity)
                $(document).scrollLeft($(document).scrollLeft()+o.scrollSpeed);
        }
    }
});
$.ui.plugin.add("draggable","snap",{
    start:function(e,ui){
        var inst=$(this).data("draggable");
        inst.snapElements=[];
        $(ui.options.snap===true?'.ui-draggable':ui.options.snap).each(function(){
            var $t=$(this);
            var $o=$t.offset();
            if(this!=inst.element[0])inst.snapElements.push({
                item:this,
                width:$t.outerWidth(),
                height:$t.outerHeight(),
                top:$o.top,
                left:$o.left
                });
        });
    },
    drag:function(e,ui){
        var inst=$(this).data("draggable");
        var d=ui.options.snapTolerance||20;
        var x1=ui.absolutePosition.left,x2=x1+inst.helperProportions.width,y1=ui.absolutePosition.top,y2=y1+inst.helperProportions.height;
        for(var i=inst.snapElements.length-1;i>=0;i--){
            var l=inst.snapElements[i].left,r=l+inst.snapElements[i].width,t=inst.snapElements[i].top,b=t+inst.snapElements[i].height;
            if(!((l-d<x1&&x1<r+d&&t-d<y1&&y1<b+d)||(l-d<x1&&x1<r+d&&t-d<y2&&y2<b+d)||(l-d<x2&&x2<r+d&&t-d<y1&&y1<b+d)||(l-d<x2&&x2<r+d&&t-d<y2&&y2<b+d)))continue;
            if(ui.options.snapMode!='inner'){
                var ts=Math.abs(t-y2)<=20;
                var bs=Math.abs(b-y1)<=20;
                var ls=Math.abs(l-x2)<=20;
                var rs=Math.abs(r-x1)<=20;
                if(ts)ui.position.top=inst.convertPositionTo("relative",{
                    top:t-inst.helperProportions.height,
                    left:0
                }).top;
                if(bs)ui.position.top=inst.convertPositionTo("relative",{
                    top:b,
                    left:0
                }).top;
                if(ls)ui.position.left=inst.convertPositionTo("relative",{
                    top:0,
                    left:l-inst.helperProportions.width
                    }).left;
                if(rs)ui.position.left=inst.convertPositionTo("relative",{
                    top:0,
                    left:r
                }).left;
            }
            if(ui.options.snapMode!='outer'){
                var ts=Math.abs(t-y1)<=20;
                var bs=Math.abs(b-y2)<=20;
                var ls=Math.abs(l-x1)<=20;
                var rs=Math.abs(r-x2)<=20;
                if(ts)ui.position.top=inst.convertPositionTo("relative",{
                    top:t,
                    left:0
                }).top;
                if(bs)ui.position.top=inst.convertPositionTo("relative",{
                    top:b-inst.helperProportions.height,
                    left:0
                }).top;
                if(ls)ui.position.left=inst.convertPositionTo("relative",{
                    top:0,
                    left:l
                }).left;
                if(rs)ui.position.left=inst.convertPositionTo("relative",{
                    top:0,
                    left:r-inst.helperProportions.width
                    }).left;
            }
        };

}
});
$.ui.plugin.add("draggable","connectToSortable",{
    start:function(e,ui){
        var inst=$(this).data("draggable");
        inst.sortables=[];
        $(ui.options.connectToSortable).each(function(){
            if($.data(this,'sortable')){
                var sortable=$.data(this,'sortable');
                inst.sortables.push({
                    instance:sortable,
                    shouldRevert:sortable.options.revert
                    });
                sortable.refreshItems();
                sortable.propagate("activate",e,inst);
            }
        });
},
stop:function(e,ui){
    var inst=$(this).data("draggable");
    $.each(inst.sortables,function(){
        if(this.instance.isOver){
            this.instance.isOver=0;
            inst.cancelHelperRemoval=true;
            this.instance.cancelHelperRemoval=false;
            if(this.shouldRevert)this.instance.options.revert=true;
            this.instance.mouseStop(e);
            this.instance.element.triggerHandler("sortreceive",[e,$.extend(this.instance.ui(),{
                sender:inst.element
                })],this.instance.options["receive"]);
            this.instance.options.helper=this.instance.options._helper;
        }else{
            this.instance.propagate("deactivate",e,inst);
        }
    });
},
drag:function(e,ui){
    var inst=$(this).data("draggable"),self=this;
    var checkPos=function(o){
        var l=o.left,r=l+o.width,t=o.top,b=t+o.height;
        return(l<(this.positionAbs.left+this.offset.click.left)&&(this.positionAbs.left+this.offset.click.left)<r&&t<(this.positionAbs.top+this.offset.click.top)&&(this.positionAbs.top+this.offset.click.top)<b);
    };

    $.each(inst.sortables,function(i){
        if(checkPos.call(inst,this.instance.containerCache)){
            if(!this.instance.isOver){
                this.instance.isOver=1;
                this.instance.currentItem=$(self).clone().appendTo(this.instance.element).data("sortable-item",true);
                this.instance.options._helper=this.instance.options.helper;
                this.instance.options.helper=function(){
                    return ui.helper[0];
                };

                e.target=this.instance.currentItem[0];
                this.instance.mouseCapture(e,true);
                this.instance.mouseStart(e,true,true);
                this.instance.offset.click.top=inst.offset.click.top;
                this.instance.offset.click.left=inst.offset.click.left;
                this.instance.offset.parent.left-=inst.offset.parent.left-this.instance.offset.parent.left;
                this.instance.offset.parent.top-=inst.offset.parent.top-this.instance.offset.parent.top;
                inst.propagate("toSortable",e);
            }
            if(this.instance.currentItem)this.instance.mouseDrag(e);
        }else{
            if(this.instance.isOver){
                this.instance.isOver=0;
                this.instance.cancelHelperRemoval=true;
                this.instance.options.revert=false;
                this.instance.mouseStop(e,true);
                this.instance.options.helper=this.instance.options._helper;
                this.instance.currentItem.remove();
                if(this.instance.placeholder)this.instance.placeholder.remove();
                inst.propagate("fromSortable",e);
            }
        };

});
}
});
$.ui.plugin.add("draggable","stack",{
    start:function(e,ui){
        var group=$.makeArray($(ui.options.stack.group)).sort(function(a,b){
            return(parseInt($(a).css("zIndex"),10)||ui.options.stack.min)-(parseInt($(b).css("zIndex"),10)||ui.options.stack.min);
        });
        $(group).each(function(i){
            this.style.zIndex=ui.options.stack.min+i;
        });
        this[0].style.zIndex=ui.options.stack.min+group.length;
    }
});
})(jQuery);
(function($){
    $.widget("ui.droppable",{
        init:function(){
            this.element.addClass("ui-droppable");
            this.isover=0;
            this.isout=1;
            var o=this.options,accept=o.accept;
            o=$.extend(o,{
                accept:o.accept&&o.accept.constructor==Function?o.accept:function(d){
                    return $(d).is(accept);
                }
            });
        this.proportions={
            width:this.element[0].offsetWidth,
            height:this.element[0].offsetHeight
            };

        $.ui.ddmanager.droppables.push(this);
    },
    plugins:{},
    ui:function(c){
        return{
            draggable:(c.currentItem||c.element),
            helper:c.helper,
            position:c.position,
            absolutePosition:c.positionAbs,
            options:this.options,
            element:this.element
            };

    },
    destroy:function(){
        var drop=$.ui.ddmanager.droppables;
        for(var i=0;i<drop.length;i++)
            if(drop[i]==this)
                drop.splice(i,1);this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");
    },
    over:function(e){
        var draggable=$.ui.ddmanager.current;
        if(!draggable||(draggable.currentItem||draggable.element)[0]==this.element[0])return;
        if(this.options.accept.call(this.element,(draggable.currentItem||draggable.element))){
            $.ui.plugin.call(this,'over',[e,this.ui(draggable)]);
            this.element.triggerHandler("dropover",[e,this.ui(draggable)],this.options.over);
        }
    },
out:function(e){
    var draggable=$.ui.ddmanager.current;
    if(!draggable||(draggable.currentItem||draggable.element)[0]==this.element[0])return;
    if(this.options.accept.call(this.element,(draggable.currentItem||draggable.element))){
        $.ui.plugin.call(this,'out',[e,this.ui(draggable)]);
        this.element.triggerHandler("dropout",[e,this.ui(draggable)],this.options.out);
    }
},
drop:function(e,custom){
    var draggable=custom||$.ui.ddmanager.current;
    if(!draggable||(draggable.currentItem||draggable.element)[0]==this.element[0])return false;
    var childrenIntersection=false;
    this.element.find(".ui-droppable").not(".ui-draggable-dragging").each(function(){
        var inst=$.data(this,'droppable');
        if(inst.options.greedy&&$.ui.intersect(draggable,$.extend(inst,{
            offset:inst.element.offset()
            }),inst.options.tolerance)){
            childrenIntersection=true;
            return false;
        }
    });
if(childrenIntersection)return false;
    if(this.options.accept.call(this.element,(draggable.currentItem||draggable.element))){
    $.ui.plugin.call(this,'drop',[e,this.ui(draggable)]);
    this.element.triggerHandler("drop",[e,this.ui(draggable)],this.options.drop);
    return true;
}
return false;
},
activate:function(e){
    var draggable=$.ui.ddmanager.current;
    $.ui.plugin.call(this,'activate',[e,this.ui(draggable)]);
    if(draggable)this.element.triggerHandler("dropactivate",[e,this.ui(draggable)],this.options.activate);
},
deactivate:function(e){
    var draggable=$.ui.ddmanager.current;
    $.ui.plugin.call(this,'deactivate',[e,this.ui(draggable)]);
    if(draggable)this.element.triggerHandler("dropdeactivate",[e,this.ui(draggable)],this.options.deactivate);
}
});
$.extend($.ui.droppable,{
    defaults:{
        disabled:false,
        tolerance:'intersect'
    }
});
$.ui.intersect=function(draggable,droppable,toleranceMode){
    if(!droppable.offset)return false;
    var x1=(draggable.positionAbs||draggable.position.absolute).left,x2=x1+draggable.helperProportions.width,y1=(draggable.positionAbs||draggable.position.absolute).top,y2=y1+draggable.helperProportions.height;
    var l=droppable.offset.left,r=l+droppable.proportions.width,t=droppable.offset.top,b=t+droppable.proportions.height;
    switch(toleranceMode){
        case'fit':
            return(l<x1&&x2<r&&t<y1&&y2<b);
            break;
        case'intersect':
            return(l<x1+(draggable.helperProportions.width/2)&&x2-(draggable.helperProportions.width/2)<r&&t<y1+(draggable.helperProportions.height/2)&&y2-(draggable.helperProportions.height/2)<b);
            break;
        case'pointer':
            return(l<((draggable.positionAbs||draggable.position.absolute).left+(draggable.clickOffset||draggable.offset.click).left)&&((draggable.positionAbs||draggable.position.absolute).left+(draggable.clickOffset||draggable.offset.click).left)<r&&t<((draggable.positionAbs||draggable.position.absolute).top+(draggable.clickOffset||draggable.offset.click).top)&&((draggable.positionAbs||draggable.position.absolute).top+(draggable.clickOffset||draggable.offset.click).top)<b);
            break;
        case'touch':
            return((y1>=t&&y1<=b)||(y2>=t&&y2<=b)||(y1<t&&y2>b))&&((x1>=l&&x1<=r)||(x2>=l&&x2<=r)||(x1<l&&x2>r));
            break;
        default:
            return false;
            break;
    }
};

$.ui.ddmanager={
    current:null,
    droppables:[],
    prepareOffsets:function(t,e){
        var m=$.ui.ddmanager.droppables;
        var type=e?e.type:null;
        for(var i=0;i<m.length;i++){
            if(m[i].options.disabled||(t&&!m[i].options.accept.call(m[i].element,(t.currentItem||t.element))))continue;
            m[i].visible=m[i].element.css("display")!="none";
            if(!m[i].visible)continue;
            m[i].offset=m[i].element.offset();
            m[i].proportions={
                width:m[i].element[0].offsetWidth,
                height:m[i].element[0].offsetHeight
                };

            if(type=="dragstart"||type=="sortactivate")m[i].activate.call(m[i],e);
        }
        },
drop:function(draggable,e){
    var dropped=false;
    $.each($.ui.ddmanager.droppables,function(){
        if(!this.options)return;
        if(!this.options.disabled&&this.visible&&$.ui.intersect(draggable,this,this.options.tolerance))
            dropped=this.drop.call(this,e);
        if(!this.options.disabled&&this.visible&&this.options.accept.call(this.element,(draggable.currentItem||draggable.element))){
            this.isout=1;
            this.isover=0;
            this.deactivate.call(this,e);
        }
    });
return dropped;
},
drag:function(draggable,e){
    if(draggable.options.refreshPositions)$.ui.ddmanager.prepareOffsets(draggable,e);
    $.each($.ui.ddmanager.droppables,function(){
        if(this.options.disabled||this.greedyChild||!this.visible)return;
        var intersects=$.ui.intersect(draggable,this,this.options.tolerance);
        var c=!intersects&&this.isover==1?'isout':(intersects&&this.isover==0?'isover':null);
        if(!c)return;
        var parentInstance;
        if(this.options.greedy){
            var parent=this.element.parents('.ui-droppable:eq(0)');
            if(parent.length){
                parentInstance=$.data(parent[0],'droppable');
                parentInstance.greedyChild=(c=='isover'?1:0);
            }
        }
    if(parentInstance&&c=='isover'){
        parentInstance['isover']=0;
        parentInstance['isout']=1;
        parentInstance.out.call(parentInstance,e);
    }
    this[c]=1;
    this[c=='isout'?'isover':'isout']=0;
    this[c=="isover"?"over":"out"].call(this,e);
        if(parentInstance&&c=='isout'){
        parentInstance['isout']=0;
        parentInstance['isover']=1;
        parentInstance.over.call(parentInstance,e);
    }
    });
}
};

$.ui.plugin.add("droppable","activeClass",{
    activate:function(e,ui){
        $(this).addClass(ui.options.activeClass);
    },
    deactivate:function(e,ui){
        $(this).removeClass(ui.options.activeClass);
    },
    drop:function(e,ui){
        $(this).removeClass(ui.options.activeClass);
    }
});
$.ui.plugin.add("droppable","hoverClass",{
    over:function(e,ui){
        $(this).addClass(ui.options.hoverClass);
    },
    out:function(e,ui){
        $(this).removeClass(ui.options.hoverClass);
    },
    drop:function(e,ui){
        $(this).removeClass(ui.options.hoverClass);
    }
});
})(jQuery);
(function($){
    $.widget("ui.resizable",$.extend({},$.ui.mouse,{
        init:function(){
            var self=this,o=this.options;
            var elpos=this.element.css('position');
            this.originalElement=this.element;
            this.element.addClass("ui-resizable").css({
                position:/static/.test(elpos)?'relative':elpos
                });
            $.extend(o,{
                _aspectRatio:!!(o.aspectRatio),
                helper:o.helper||o.ghost||o.animate?o.helper||'proxy':null,
                knobHandles:o.knobHandles===true?'ui-resizable-knob-handle':o.knobHandles
                });
            var aBorder='1px solid #DEDEDE';
            o.defaultTheme={
                'ui-resizable':{
                    display:'block'
                },
                'ui-resizable-handle':{
                    position:'absolute',
                    background:'#F2F2F2',
                    fontSize:'0.1px'
                },
                'ui-resizable-n':{
                    cursor:'n-resize',
                    height:'4px',
                    left:'0px',
                    right:'0px',
                    borderTop:aBorder
                },
                'ui-resizable-s':{
                    cursor:'s-resize',
                    height:'4px',
                    left:'0px',
                    right:'0px',
                    borderBottom:aBorder
                },
                'ui-resizable-e':{
                    cursor:'e-resize',
                    width:'4px',
                    top:'0px',
                    bottom:'0px',
                    borderRight:aBorder
                },
                'ui-resizable-w':{
                    cursor:'w-resize',
                    width:'4px',
                    top:'0px',
                    bottom:'0px',
                    borderLeft:aBorder
                },
                'ui-resizable-se':{
                    cursor:'se-resize',
                    width:'4px',
                    height:'4px',
                    borderRight:aBorder,
                    borderBottom:aBorder
                },
                'ui-resizable-sw':{
                    cursor:'sw-resize',
                    width:'4px',
                    height:'4px',
                    borderBottom:aBorder,
                    borderLeft:aBorder
                },
                'ui-resizable-ne':{
                    cursor:'ne-resize',
                    width:'4px',
                    height:'4px',
                    borderRight:aBorder,
                    borderTop:aBorder
                },
                'ui-resizable-nw':{
                    cursor:'nw-resize',
                    width:'4px',
                    height:'4px',
                    borderLeft:aBorder,
                    borderTop:aBorder
                }
            };

        o.knobTheme={
            'ui-resizable-handle':{
                background:'#F2F2F2',
                border:'1px solid #808080',
                height:'8px',
                width:'8px'
            },
            'ui-resizable-n':{
                cursor:'n-resize',
                top:'0px',
                left:'45%'
            },
            'ui-resizable-s':{
                cursor:'s-resize',
                bottom:'0px',
                left:'45%'
            },
            'ui-resizable-e':{
                cursor:'e-resize',
                right:'0px',
                top:'45%'
            },
            'ui-resizable-w':{
                cursor:'w-resize',
                left:'0px',
                top:'45%'
            },
            'ui-resizable-se':{
                cursor:'se-resize',
                right:'0px',
                bottom:'0px'
            },
            'ui-resizable-sw':{
                cursor:'sw-resize',
                left:'0px',
                bottom:'0px'
            },
            'ui-resizable-nw':{
                cursor:'nw-resize',
                left:'0px',
                top:'0px'
            },
            'ui-resizable-ne':{
                cursor:'ne-resize',
                right:'0px',
                top:'0px'
            }
        };

    o._nodeName=this.element[0].nodeName;
    if(o._nodeName.match(/canvas|textarea|input|select|button|img/i)){
        var el=this.element;
        if(/relative/.test(el.css('position'))&&$.browser.opera)
            el.css({
                position:'relative',
                top:'auto',
                left:'auto'
            });
        el.wrap($('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
            position:el.css('position'),
            width:el.outerWidth(),
            height:el.outerHeight(),
            top:el.css('top'),
            left:el.css('left')
            }));
        var oel=this.element;
        this.element=this.element.parent();
        this.element.data('resizable',this);
        this.element.css({
            marginLeft:oel.css("marginLeft"),
            marginTop:oel.css("marginTop"),
            marginRight:oel.css("marginRight"),
            marginBottom:oel.css("marginBottom")
            });
        oel.css({
            marginLeft:0,
            marginTop:0,
            marginRight:0,
            marginBottom:0
        });
        if($.browser.safari&&o.preventDefault)oel.css('resize','none');
        o.proportionallyResize=oel.css({
            position:'static',
            zoom:1,
            display:'block'
        });
        this.element.css({
            margin:oel.css('margin')
            });
        this._proportionallyResize();
    }
    if(!o.handles)o.handles=!$('.ui-resizable-handle',this.element).length?"e,s,se":{
        n:'.ui-resizable-n',
        e:'.ui-resizable-e',
        s:'.ui-resizable-s',
        w:'.ui-resizable-w',
        se:'.ui-resizable-se',
        sw:'.ui-resizable-sw',
        ne:'.ui-resizable-ne',
        nw:'.ui-resizable-nw'
    };

    if(o.handles.constructor==String){
        o.zIndex=o.zIndex||1000;
        if(o.handles=='all')o.handles='n,e,s,w,se,sw,ne,nw';
        var n=o.handles.split(",");
        o.handles={};

        var insertionsDefault={
            handle:'position: absolute; display: none; overflow:hidden;',
            n:'top: 0pt; width:100%;',
            e:'right: 0pt; height:100%;',
            s:'bottom: 0pt; width:100%;',
            w:'left: 0pt; height:100%;',
            se:'bottom: 0pt; right: 0px;',
            sw:'bottom: 0pt; left: 0px;',
            ne:'top: 0pt; right: 0px;',
            nw:'top: 0pt; left: 0px;'
        };

        for(var i=0;i<n.length;i++){
            var handle=$.trim(n[i]),dt=o.defaultTheme,hname='ui-resizable-'+handle,loadDefault=!$.ui.css(hname)&&!o.knobHandles,userKnobClass=$.ui.css('ui-resizable-knob-handle'),allDefTheme=$.extend(dt[hname],dt['ui-resizable-handle']),allKnobTheme=$.extend(o.knobTheme[hname],!userKnobClass?o.knobTheme['ui-resizable-handle']:{});
            var applyZIndex=/sw|se|ne|nw/.test(handle)?{
                zIndex:++o.zIndex
                }:{};

            var defCss=(loadDefault?insertionsDefault[handle]:''),axis=$(['<div class="ui-resizable-handle ',hname,'" style="',defCss,insertionsDefault.handle,'"></div>'].join('')).css(applyZIndex);
            o.handles[handle]='.ui-resizable-'+handle;
            this.element.append(axis.css(loadDefault?allDefTheme:{}).css(o.knobHandles?allKnobTheme:{}).addClass(o.knobHandles?'ui-resizable-knob-handle':'').addClass(o.knobHandles));
        }
        if(o.knobHandles)this.element.addClass('ui-resizable-knob').css(!$.ui.css('ui-resizable-knob')?{}:{});
    }
    this._renderAxis=function(target){
        target=target||this.element;
        for(var i in o.handles){
            if(o.handles[i].constructor==String)
                o.handles[i]=$(o.handles[i],this.element).show();
            if(o.transparent)
                o.handles[i].css({
                    opacity:0
                });
            if(this.element.is('.ui-wrapper')&&o._nodeName.match(/textarea|input|select|button/i)){
                var axis=$(o.handles[i],this.element),padWrapper=0;
                padWrapper=/sw|ne|nw|se|n|s/.test(i)?axis.outerHeight():axis.outerWidth();
                var padPos=['padding',/ne|nw|n/.test(i)?'Top':/se|sw|s/.test(i)?'Bottom':/^e$/.test(i)?'Right':'Left'].join("");
                if(!o.transparent)
                    target.css(padPos,padWrapper);
                this._proportionallyResize();
            }
            if(!$(o.handles[i]).length)continue;
        }
        };

    this._renderAxis(this.element);
        o._handles=$('.ui-resizable-handle',self.element);
        if(o.disableSelection)
        o._handles.each(function(i,e){
            $.ui.disableSelection(e);
        });
    o._handles.mouseover(function(){
        if(!o.resizing){
            if(this.className)
                var axis=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
            self.axis=o.axis=axis&&axis[1]?axis[1]:'se';
        }
    });
    if(o.autoHide){
        o._handles.hide();
        $(self.element).addClass("ui-resizable-autohide").hover(function(){
            $(this).removeClass("ui-resizable-autohide");
            o._handles.show();
        },function(){
            if(!o.resizing){
                $(this).addClass("ui-resizable-autohide");
                o._handles.hide();
            }
        });
}
this.mouseInit();
    },
    plugins:{},
    ui:function(){
        return{
            originalElement:this.originalElement,
            element:this.element,
            helper:this.helper,
            position:this.position,
            size:this.size,
            options:this.options,
            originalSize:this.originalSize,
            originalPosition:this.originalPosition
            };

},
propagate:function(n,e){
    $.ui.plugin.call(this,n,[e,this.ui()]);
    if(n!="resize")this.element.triggerHandler(["resize",n].join(""),[e,this.ui()],this.options[n]);
},
destroy:function(){
    var el=this.element,wrapped=el.children(".ui-resizable").get(0);
    this.mouseDestroy();
    var _destroy=function(exp){
        $(exp).removeClass("ui-resizable ui-resizable-disabled").removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();
    };

    _destroy(el);
    if(el.is('.ui-wrapper')&&wrapped){
        el.parent().append($(wrapped).css({
            position:el.css('position'),
            width:el.outerWidth(),
            height:el.outerHeight(),
            top:el.css('top'),
            left:el.css('left')
            })).end().remove();
        _destroy(wrapped);
    }
},
mouseStart:function(e){
    if(this.options.disabled)return false;
    var handle=false;
    for(var i in this.options.handles){
        if($(this.options.handles[i])[0]==e.target)handle=true;
    }
    if(!handle)return false;
    var o=this.options,iniPos=this.element.position(),el=this.element,num=function(v){
        return parseInt(v,10)||0;
    },ie6=$.browser.msie&&$.browser.version<7;
    o.resizing=true;
    o.documentScroll={
        top:$(document).scrollTop(),
        left:$(document).scrollLeft()
        };

    if(el.is('.ui-draggable')||(/absolute/).test(el.css('position'))){
        var sOffset=$.browser.msie&&!o.containment&&(/absolute/).test(el.css('position'))&&!(/relative/).test(el.parent().css('position'));
        var dscrollt=sOffset?o.documentScroll.top:0,dscrolll=sOffset?o.documentScroll.left:0;
        el.css({
            position:'absolute',
            top:(iniPos.top+dscrollt),
            left:(iniPos.left+dscrolll)
            });
    }
    if($.browser.opera&&/relative/.test(el.css('position')))
        el.css({
            position:'relative',
            top:'auto',
            left:'auto'
        });
    this._renderProxy();
    var curleft=num(this.helper.css('left')),curtop=num(this.helper.css('top'));
    if(o.containment){
        curleft+=$(o.containment).scrollLeft()||0;
        curtop+=$(o.containment).scrollTop()||0;
    }
    this.offset=this.helper.offset();
    this.position={
        left:curleft,
        top:curtop
    };

    this.size=o.helper||ie6?{
        width:el.outerWidth(),
        height:el.outerHeight()
        }:{
        width:el.width(),
        height:el.height()
        };

    this.originalSize=o.helper||ie6?{
        width:el.outerWidth(),
        height:el.outerHeight()
        }:{
        width:el.width(),
        height:el.height()
        };

    this.originalPosition={
        left:curleft,
        top:curtop
    };

    this.sizeDiff={
        width:el.outerWidth()-el.width(),
        height:el.outerHeight()-el.height()
        };

    this.originalMousePosition={
        left:e.pageX,
        top:e.pageY
        };

    o.aspectRatio=(typeof o.aspectRatio=='number')?o.aspectRatio:((this.originalSize.height/this.originalSize.width)||1);
    if(o.preserveCursor)
        $('body').css('cursor',this.axis+'-resize');
    this.propagate("start",e);
    return true;
},
mouseDrag:function(e){
    var el=this.helper,o=this.options,props={},self=this,smp=this.originalMousePosition,a=this.axis;
    var dx=(e.pageX-smp.left)||0,dy=(e.pageY-smp.top)||0;
    var trigger=this._change[a];
    if(!trigger)return false;
    var data=trigger.apply(this,[e,dx,dy]),ie6=$.browser.msie&&$.browser.version<7,csdif=this.sizeDiff;
    if(o._aspectRatio||e.shiftKey)
        data=this._updateRatio(data,e);
    data=this._respectSize(data,e);
    this.propagate("resize",e);
    el.css({
        top:this.position.top+"px",
        left:this.position.left+"px",
        width:this.size.width+"px",
        height:this.size.height+"px"
        });
    if(!o.helper&&o.proportionallyResize)
        this._proportionallyResize();
    this._updateCache(data);
    this.element.triggerHandler("resize",[e,this.ui()],this.options["resize"]);
    return false;
},
mouseStop:function(e){
    this.options.resizing=false;
    var o=this.options,num=function(v){
        return parseInt(v,10)||0;
    },self=this;
    if(o.helper){
        var pr=o.proportionallyResize,ista=pr&&(/textarea/i).test(pr.get(0).nodeName),soffseth=ista&&$.ui.hasScroll(pr.get(0),'left')?0:self.sizeDiff.height,soffsetw=ista?0:self.sizeDiff.width;
        var s={
            width:(self.size.width-soffsetw),
            height:(self.size.height-soffseth)
            },left=(parseInt(self.element.css('left'),10)+(self.position.left-self.originalPosition.left))||null,top=(parseInt(self.element.css('top'),10)+(self.position.top-self.originalPosition.top))||null;
        if(!o.animate)
            this.element.css($.extend(s,{
                top:top,
                left:left
            }));
        if(o.helper&&!o.animate)this._proportionallyResize();
    }
    if(o.preserveCursor)
        $('body').css('cursor','auto');
    this.propagate("stop",e);
    if(o.helper)this.helper.remove();
    return false;
},
_updateCache:function(data){
    var o=this.options;
    this.offset=this.helper.offset();
    if(data.left)this.position.left=data.left;
    if(data.top)this.position.top=data.top;
    if(data.height)this.size.height=data.height;
    if(data.width)this.size.width=data.width;
},
_updateRatio:function(data,e){
    var o=this.options,cpos=this.position,csize=this.size,a=this.axis;
    if(data.height)data.width=(csize.height/o.aspectRatio);
    else if(data.width)data.height=(csize.width*o.aspectRatio);
    if(a=='sw'){
        data.left=cpos.left+(csize.width-data.width);
        data.top=null;
    }
    if(a=='nw'){
        data.top=cpos.top+(csize.height-data.height);
        data.left=cpos.left+(csize.width-data.width);
    }
    return data;
},
_respectSize:function(data,e){
    var el=this.helper,o=this.options,pRatio=o._aspectRatio||e.shiftKey,a=this.axis,ismaxw=data.width&&o.maxWidth&&o.maxWidth<data.width,ismaxh=data.height&&o.maxHeight&&o.maxHeight<data.height,isminw=data.width&&o.minWidth&&o.minWidth>data.width,isminh=data.height&&o.minHeight&&o.minHeight>data.height;
    if(isminw)data.width=o.minWidth;
    if(isminh)data.height=o.minHeight;
    if(ismaxw)data.width=o.maxWidth;
    if(ismaxh)data.height=o.maxHeight;
    var dw=this.originalPosition.left+this.originalSize.width,dh=this.position.top+this.size.height;
    var cw=/sw|nw|w/.test(a),ch=/nw|ne|n/.test(a);
    if(isminw&&cw)data.left=dw-o.minWidth;
    if(ismaxw&&cw)data.left=dw-o.maxWidth;
    if(isminh&&ch)data.top=dh-o.minHeight;
    if(ismaxh&&ch)data.top=dh-o.maxHeight;
    var isNotwh=!data.width&&!data.height;
    if(isNotwh&&!data.left&&data.top)data.top=null;
    else if(isNotwh&&!data.top&&data.left)data.left=null;
    return data;
},
_proportionallyResize:function(){
    var o=this.options;
    if(!o.proportionallyResize)return;
    var prel=o.proportionallyResize,el=this.helper||this.element;
    if(!o.borderDif){
        var b=[prel.css('borderTopWidth'),prel.css('borderRightWidth'),prel.css('borderBottomWidth'),prel.css('borderLeftWidth')],p=[prel.css('paddingTop'),prel.css('paddingRight'),prel.css('paddingBottom'),prel.css('paddingLeft')];
        o.borderDif=$.map(b,function(v,i){
            var border=parseInt(v,10)||0,padding=parseInt(p[i],10)||0;
            return border+padding;
        });
    }
    prel.css({
        height:(el.height()-o.borderDif[0]-o.borderDif[2])+"px",
        width:(el.width()-o.borderDif[1]-o.borderDif[3])+"px"
        });
},
_renderProxy:function(){
    var el=this.element,o=this.options;
    this.elementOffset=el.offset();
    if(o.helper){
        this.helper=this.helper||$('<div style="overflow:hidden;"></div>');
        var ie6=$.browser.msie&&$.browser.version<7,ie6offset=(ie6?1:0),pxyoffset=(ie6?2:-1);
        this.helper.addClass(o.helper).css({
            width:el.outerWidth()+pxyoffset,
            height:el.outerHeight()+pxyoffset,
            position:'absolute',
            left:this.elementOffset.left-ie6offset+'px',
            top:this.elementOffset.top-ie6offset+'px',
            zIndex:++o.zIndex
            });
        this.helper.appendTo("body");
        if(o.disableSelection)
            $.ui.disableSelection(this.helper.get(0));
    }else{
        this.helper=el;
    }
},
_change:{
    e:function(e,dx,dy){
        return{
            width:this.originalSize.width+dx
            };

},
w:function(e,dx,dy){
    var o=this.options,cs=this.originalSize,sp=this.originalPosition;
    return{
        left:sp.left+dx,
        width:cs.width-dx
        };

},
n:function(e,dx,dy){
    var o=this.options,cs=this.originalSize,sp=this.originalPosition;
    return{
        top:sp.top+dy,
        height:cs.height-dy
        };

},
s:function(e,dx,dy){
    return{
        height:this.originalSize.height+dy
        };

},
se:function(e,dx,dy){
    return $.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,dx,dy]));
},
sw:function(e,dx,dy){
    return $.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,dx,dy]));
},
ne:function(e,dx,dy){
    return $.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,dx,dy]));
},
nw:function(e,dx,dy){
    return $.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,dx,dy]));
}
}
}));
$.extend($.ui.resizable,{
    defaults:{
        cancel:":input",
        distance:1,
        delay:0,
        preventDefault:true,
        transparent:false,
        minWidth:10,
        minHeight:10,
        aspectRatio:false,
        disableSelection:true,
        preserveCursor:true,
        autoHide:false,
        knobHandles:false
    }
});
$.ui.plugin.add("resizable","containment",{
    start:function(e,ui){
        var o=ui.options,self=$(this).data("resizable"),el=self.element;
        var oc=o.containment,ce=(oc instanceof $)?oc.get(0):(/parent/.test(oc))?el.parent().get(0):oc;
        if(!ce)return;
        self.containerElement=$(ce);
        if(/document/.test(oc)||oc==document){
            self.containerOffset={
                left:0,
                top:0
            };

            self.containerPosition={
                left:0,
                top:0
            };

            self.parentData={
                element:$(document),
                left:0,
                top:0,
                width:$(document).width(),
                height:$(document).height()||document.body.parentNode.scrollHeight
                };

    }
    else{
        self.containerOffset=$(ce).offset();
        self.containerPosition=$(ce).position();
        self.containerSize={
            height:$(ce).innerHeight(),
            width:$(ce).innerWidth()
            };

        var co=self.containerOffset,ch=self.containerSize.height,cw=self.containerSize.width,width=($.ui.hasScroll(ce,"left")?ce.scrollWidth:cw),height=($.ui.hasScroll(ce)?ce.scrollHeight:ch);
        self.parentData={
            element:ce,
            left:co.left,
            top:co.top,
            width:width,
            height:height
        };

}
},
resize:function(e,ui){
    var o=ui.options,self=$(this).data("resizable"),ps=self.containerSize,co=self.containerOffset,cs=self.size,cp=self.position,pRatio=o._aspectRatio||e.shiftKey,cop={
        top:0,
        left:0
    },ce=self.containerElement;
    if(ce[0]!=document&&/static/.test(ce.css('position')))
        cop=self.containerPosition;
    if(cp.left<(o.helper?co.left:cop.left)){
        self.size.width=self.size.width+(o.helper?(self.position.left-co.left):(self.position.left-cop.left));
        if(pRatio)self.size.height=self.size.width*o.aspectRatio;
        self.position.left=o.helper?co.left:cop.left;
    }
    if(cp.top<(o.helper?co.top:0)){
        self.size.height=self.size.height+(o.helper?(self.position.top-co.top):self.position.top);
        if(pRatio)self.size.width=self.size.height/o.aspectRatio;
        self.position.top=o.helper?co.top:0;
    }
    var woset=(o.helper?self.offset.left-co.left:(self.position.left-cop.left))+self.sizeDiff.width,hoset=(o.helper?self.offset.top-co.top:self.position.top)+self.sizeDiff.height;
    if(woset+self.size.width>=self.parentData.width){
        self.size.width=self.parentData.width-woset;
        if(pRatio)self.size.height=self.size.width*o.aspectRatio;
    }
    if(hoset+self.size.height>=self.parentData.height){
        self.size.height=self.parentData.height-hoset;
        if(pRatio)self.size.width=self.size.height/o.aspectRatio;
    }
},
stop:function(e,ui){
    var o=ui.options,self=$(this).data("resizable"),cp=self.position,co=self.containerOffset,cop=self.containerPosition,ce=self.containerElement;
    var helper=$(self.helper),ho=helper.offset(),w=helper.innerWidth(),h=helper.innerHeight();
    if(o.helper&&!o.animate&&/relative/.test(ce.css('position')))
        $(this).css({
            left:(ho.left-co.left),
            top:(ho.top-co.top),
            width:w,
            height:h
        });
    if(o.helper&&!o.animate&&/static/.test(ce.css('position')))
        $(this).css({
            left:cop.left+(ho.left-co.left),
            top:cop.top+(ho.top-co.top),
            width:w,
            height:h
        });
}
});
$.ui.plugin.add("resizable","grid",{
    resize:function(e,ui){
        var o=ui.options,self=$(this).data("resizable"),cs=self.size,os=self.originalSize,op=self.originalPosition,a=self.axis,ratio=o._aspectRatio||e.shiftKey;
        o.grid=typeof o.grid=="number"?[o.grid,o.grid]:o.grid;
        var ox=Math.round((cs.width-os.width)/(o.grid[0]||1))*(o.grid[0]||1),oy=Math.round((cs.height-os.height)/(o.grid[1]||1))*(o.grid[1]||1);
        if(/^(se|s|e)$/.test(a)){
            self.size.width=os.width+ox;
            self.size.height=os.height+oy;
        }
        else if(/^(ne)$/.test(a)){
            self.size.width=os.width+ox;
            self.size.height=os.height+oy;
            self.position.top=op.top-oy;
        }
        else if(/^(sw)$/.test(a)){
            self.size.width=os.width+ox;
            self.size.height=os.height+oy;
            self.position.left=op.left-ox;
        }
        else{
            self.size.width=os.width+ox;
            self.size.height=os.height+oy;
            self.position.top=op.top-oy;
            self.position.left=op.left-ox;
        }
    }
});
$.ui.plugin.add("resizable","animate",{
    stop:function(e,ui){
        var o=ui.options,self=$(this).data("resizable");
        var pr=o.proportionallyResize,ista=pr&&(/textarea/i).test(pr.get(0).nodeName),soffseth=ista&&$.ui.hasScroll(pr.get(0),'left')?0:self.sizeDiff.height,soffsetw=ista?0:self.sizeDiff.width;
        var style={
            width:(self.size.width-soffsetw),
            height:(self.size.height-soffseth)
            },left=(parseInt(self.element.css('left'),10)+(self.position.left-self.originalPosition.left))||null,top=(parseInt(self.element.css('top'),10)+(self.position.top-self.originalPosition.top))||null;
        self.element.animate($.extend(style,top&&left?{
            top:top,
            left:left
        }:{}),{
            duration:o.animateDuration||"slow",
            easing:o.animateEasing||"swing",
            step:function(){
                var data={
                    width:parseInt(self.element.css('width'),10),
                    height:parseInt(self.element.css('height'),10),
                    top:parseInt(self.element.css('top'),10),
                    left:parseInt(self.element.css('left'),10)
                    };

                if(pr)pr.css({
                    width:data.width,
                    height:data.height
                    });
                self._updateCache(data);
                self.propagate("animate",e);
            }
        });
}
});
$.ui.plugin.add("resizable","ghost",{
    start:function(e,ui){
        var o=ui.options,self=$(this).data("resizable"),pr=o.proportionallyResize,cs=self.size;
        if(!pr)self.ghost=self.element.clone();else self.ghost=pr.clone();
        self.ghost.css({
            opacity:.25,
            display:'block',
            position:'relative',
            height:cs.height,
            width:cs.width,
            margin:0,
            left:0,
            top:0
        }).addClass('ui-resizable-ghost').addClass(typeof o.ghost=='string'?o.ghost:'');
        self.ghost.appendTo(self.helper);
    },
    resize:function(e,ui){
        var o=ui.options,self=$(this).data("resizable"),pr=o.proportionallyResize;
        if(self.ghost)self.ghost.css({
            position:'relative',
            height:self.size.height,
            width:self.size.width
            });
    },
    stop:function(e,ui){
        var o=ui.options,self=$(this).data("resizable"),pr=o.proportionallyResize;
        if(self.ghost&&self.helper)self.helper.get(0).removeChild(self.ghost.get(0));
    }
});
$.ui.plugin.add("resizable","alsoResize",{
    start:function(e,ui){
        var o=ui.options,self=$(this).data("resizable"),_store=function(exp){
            $(exp).each(function(){
                $(this).data("resizable-alsoresize",{
                    width:parseInt($(this).width(),10),
                    height:parseInt($(this).height(),10),
                    left:parseInt($(this).css('left'),10),
                    top:parseInt($(this).css('top'),10)
                    });
            });
        };

        if(typeof(o.alsoResize)=='object'){
            if(o.alsoResize.length){
                o.alsoResize=o.alsoResize[0];
                _store(o.alsoResize);
            }
            else{
                $.each(o.alsoResize,function(exp,c){
                    _store(exp);
                });
            }
        }else{
        _store(o.alsoResize);
    }
},
resize:function(e,ui){
    var o=ui.options,self=$(this).data("resizable"),os=self.originalSize,op=self.originalPosition;
    var delta={
        height:(self.size.height-os.height)||0,
        width:(self.size.width-os.width)||0,
        top:(self.position.top-op.top)||0,
        left:(self.position.left-op.left)||0
        },_alsoResize=function(exp,c){
        $(exp).each(function(){
            var start=$(this).data("resizable-alsoresize"),style={},css=c&&c.length?c:['width','height','top','left'];
            $.each(css||['width','height','top','left'],function(i,prop){
                var sum=(start[prop]||0)+(delta[prop]||0);
                if(sum&&sum>=0)
                    style[prop]=sum||null;
            });
            $(this).css(style);
        });
    };

    if(typeof(o.alsoResize)=='object'){
        $.each(o.alsoResize,function(exp,c){
            _alsoResize(exp,c);
        });
    }else{
        _alsoResize(o.alsoResize);
    }
},
stop:function(e,ui){
    $(this).removeData("resizable-alsoresize-start");
}
});
})(jQuery);
(function($){
    $.widget("ui.selectable",$.extend({},$.ui.mouse,{
        init:function(){
            var self=this;
            this.element.addClass("ui-selectable");
            this.dragged=false;
            var selectees;
            this.refresh=function(){
                selectees=$(self.options.filter,self.element[0]);
                selectees.each(function(){
                    var $this=$(this);
                    var pos=$this.offset();
                    $.data(this,"selectable-item",{
                        element:this,
                        $element:$this,
                        left:pos.left,
                        top:pos.top,
                        right:pos.left+$this.width(),
                        bottom:pos.top+$this.height(),
                        startselected:false,
                        selected:$this.hasClass('ui-selected'),
                        selecting:$this.hasClass('ui-selecting'),
                        unselecting:$this.hasClass('ui-unselecting')
                        });
                });
            };

            this.refresh();
            this.selectees=selectees.addClass("ui-selectee");
            this.mouseInit();
            this.helper=$(document.createElement('div')).css({
                border:'1px dotted black'
            });
        },
        toggle:function(){
            if(this.options.disabled){
                this.enable();
            }else{
                this.disable();
            }
        },
    destroy:function(){
        this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");
        this.mouseDestroy();
    },
    mouseStart:function(e){
        var self=this;
        this.opos=[e.pageX,e.pageY];
        if(this.options.disabled)
            return;
        var options=this.options;
        this.selectees=$(options.filter,this.element[0]);
        this.element.triggerHandler("selectablestart",[e,{
            "selectable":this.element[0],
            "options":options
        }],options.start);
        $('body').append(this.helper);
        this.helper.css({
            "z-index":100,
            "position":"absolute",
            "left":e.clientX,
            "top":e.clientY,
            "width":0,
            "height":0
        });
        if(options.autoRefresh){
            this.refresh();
        }
        this.selectees.filter('.ui-selected').each(function(){
            var selectee=$.data(this,"selectable-item");
            selectee.startselected=true;
            if(!e.ctrlKey){
                selectee.$element.removeClass('ui-selected');
                selectee.selected=false;
                selectee.$element.addClass('ui-unselecting');
                selectee.unselecting=true;
                self.element.triggerHandler("selectableunselecting",[e,{
                    selectable:self.element[0],
                    unselecting:selectee.element,
                    options:options
                }],options.unselecting);
            }
        });
    var isSelectee=false;
    $(e.target).parents().andSelf().each(function(){
        if($.data(this,"selectable-item"))isSelectee=true;
    });
    return this.options.keyboard?!isSelectee:true;
    },
    mouseDrag:function(e){
        var self=this;
        this.dragged=true;
        if(this.options.disabled)
            return;
        var options=this.options;
        var x1=this.opos[0],y1=this.opos[1],x2=e.pageX,y2=e.pageY;
        if(x1>x2){
            var tmp=x2;
            x2=x1;
            x1=tmp;
        }
        if(y1>y2){
            var tmp=y2;
            y2=y1;
            y1=tmp;
        }
        this.helper.css({
            left:x1,
            top:y1,
            width:x2-x1,
            height:y2-y1
            });
        this.selectees.each(function(){
            var selectee=$.data(this,"selectable-item");
            if(!selectee||selectee.element==self.element[0])
                return;
            var hit=false;
            if(options.tolerance=='touch'){
                hit=(!(selectee.left>x2||selectee.right<x1||selectee.top>y2||selectee.bottom<y1));
            }else if(options.tolerance=='fit'){
                hit=(selectee.left>x1&&selectee.right<x2&&selectee.top>y1&&selectee.bottom<y2);
            }
            if(hit){
                if(selectee.selected){
                    selectee.$element.removeClass('ui-selected');
                    selectee.selected=false;
                }
                if(selectee.unselecting){
                    selectee.$element.removeClass('ui-unselecting');
                    selectee.unselecting=false;
                }
                if(!selectee.selecting){
                    selectee.$element.addClass('ui-selecting');
                    selectee.selecting=true;
                    self.element.triggerHandler("selectableselecting",[e,{
                        selectable:self.element[0],
                        selecting:selectee.element,
                        options:options
                    }],options.selecting);
                }
            }else{
            if(selectee.selecting){
                if(e.ctrlKey&&selectee.startselected){
                    selectee.$element.removeClass('ui-selecting');
                    selectee.selecting=false;
                    selectee.$element.addClass('ui-selected');
                    selectee.selected=true;
                }else{
                    selectee.$element.removeClass('ui-selecting');
                    selectee.selecting=false;
                    if(selectee.startselected){
                        selectee.$element.addClass('ui-unselecting');
                        selectee.unselecting=true;
                    }
                    self.element.triggerHandler("selectableunselecting",[e,{
                        selectable:self.element[0],
                        unselecting:selectee.element,
                        options:options
                    }],options.unselecting);
                }
            }
        if(selectee.selected){
            if(!e.ctrlKey&&!selectee.startselected){
                selectee.$element.removeClass('ui-selected');
                selectee.selected=false;
                selectee.$element.addClass('ui-unselecting');
                selectee.unselecting=true;
                self.element.triggerHandler("selectableunselecting",[e,{
                    selectable:self.element[0],
                    unselecting:selectee.element,
                    options:options
                }],options.unselecting);
            }
        }
        }
    });
return false;
},
mouseStop:function(e){
    var self=this;
    this.dragged=false;
    var options=this.options;
    $('.ui-unselecting',this.element[0]).each(function(){
        var selectee=$.data(this,"selectable-item");
        selectee.$element.removeClass('ui-unselecting');
        selectee.unselecting=false;
        selectee.startselected=false;
        self.element.triggerHandler("selectableunselected",[e,{
            selectable:self.element[0],
            unselected:selectee.element,
            options:options
        }],options.unselected);
    });
    $('.ui-selecting',this.element[0]).each(function(){
        var selectee=$.data(this,"selectable-item");
        selectee.$element.removeClass('ui-selecting').addClass('ui-selected');
        selectee.selecting=false;
        selectee.selected=true;
        selectee.startselected=true;
        self.element.triggerHandler("selectableselected",[e,{
            selectable:self.element[0],
            selected:selectee.element,
            options:options
        }],options.selected);
    });
    this.element.triggerHandler("selectablestop",[e,{
        selectable:self.element[0],
        options:this.options
        }],this.options.stop);
    this.helper.remove();
    return false;
}
}));
$.extend($.ui.selectable,{
    defaults:{
        distance:1,
        delay:0,
        cancel:":input",
        appendTo:'body',
        autoRefresh:true,
        filter:'*',
        tolerance:'touch'
    }
});
})(jQuery);
(function($){
    function contains(a,b){
        var safari2=$.browser.safari&&$.browser.version<522;
        if(a.contains&&!safari2){
            return a.contains(b);
        }
        if(a.compareDocumentPosition)
            return!!(a.compareDocumentPosition(b)&16);
        while(b=b.parentNode)
            if(b==a)return true;
        return false;
    };

    $.widget("ui.sortable",$.extend({},$.ui.mouse,{
        init:function(){
            var o=this.options;
            this.containerCache={};

            this.element.addClass("ui-sortable");
            this.refresh();
            this.floating=this.items.length?(/left|right/).test(this.items[0].item.css('float')):false;
            if(!(/(relative|absolute|fixed)/).test(this.element.css('position')))this.element.css('position','relative');
            this.offset=this.element.offset();
            this.mouseInit();
        },
        plugins:{},
        ui:function(inst){
            return{
                helper:(inst||this)["helper"],
                placeholder:(inst||this)["placeholder"]||$([]),
                position:(inst||this)["position"],
                absolutePosition:(inst||this)["positionAbs"],
                options:this.options,
                element:this.element,
                item:(inst||this)["currentItem"],
                sender:inst?inst.element:null
                };

    },
    propagate:function(n,e,inst,noPropagation){
        $.ui.plugin.call(this,n,[e,this.ui(inst)]);
        if(!noPropagation)this.element.triggerHandler(n=="sort"?n:"sort"+n,[e,this.ui(inst)],this.options[n]);
    },
    serialize:function(o){
        var items=($.isFunction(this.options.items)?this.options.items.call(this.element):$(this.options.items,this.element)).not('.ui-sortable-helper');
        var str=[];
        o=o||{};

        items.each(function(){
            var res=($(this).attr(o.attribute||'id')||'').match(o.expression||(/(.+)[-=_](.+)/));
                if(res)str.push((o.key||res[1])+'[]='+(o.key&&o.expression?res[1]:res[2]));
            });
        return str.join('&');
        },
        toArray:function(attr){
            var items=($.isFunction(this.options.items)?this.options.items.call(this.element):$(this.options.items,this.element)).not('.ui-sortable-helper');
            var ret=[];
            items.each(function(){
                ret.push($(this).attr(attr||'id'));
            });
            return ret;
        },
        intersectsWith:function(item){
            var x1=this.positionAbs.left,x2=x1+this.helperProportions.width,y1=this.positionAbs.top,y2=y1+this.helperProportions.height;
            var l=item.left,r=l+item.width,t=item.top,b=t+item.height;
            if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance=="guess"&&this.helperProportions[this.floating?'width':'height']>item[this.floating?'width':'height'])){
                return(y1+this.offset.click.top>t&&y1+this.offset.click.top<b&&x1+this.offset.click.left>l&&x1+this.offset.click.left<r);
            }else{
                return(l<x1+(this.helperProportions.width/2)&&x2-(this.helperProportions.width/2)<r&&t<y1+(this.helperProportions.height/2)&&y2-(this.helperProportions.height/2)<b);
            }
        },
    intersectsWithEdge:function(item){
        var x1=this.positionAbs.left,x2=x1+this.helperProportions.width,y1=this.positionAbs.top,y2=y1+this.helperProportions.height;
        var l=item.left,r=l+item.width,t=item.top,b=t+item.height;
        if(this.options.tolerance=="pointer"||(this.options.tolerance=="guess"&&this.helperProportions[this.floating?'width':'height']>item[this.floating?'width':'height'])){
            if(!(y1+this.offset.click.top>t&&y1+this.offset.click.top<b&&x1+this.offset.click.left>l&&x1+this.offset.click.left<r))return false;
            if(this.floating){
                if(x1+this.offset.click.left>l&&x1+this.offset.click.left<l+item.width/2)return 2;
                if(x1+this.offset.click.left>l+item.width/2&&x1+this.offset.click.left<r)return 1;
            }else{
                if(y1+this.offset.click.top>t&&y1+this.offset.click.top<t+item.height/2)return 2;
                if(y1+this.offset.click.top>t+item.height/2&&y1+this.offset.click.top<b)return 1;
            }
        }else{
        if(!(l<x1+(this.helperProportions.width/2)&&x2-(this.helperProportions.width/2)<r&&t<y1+(this.helperProportions.height/2)&&y2-(this.helperProportions.height/2)<b))return false;
        if(this.floating){
            if(x2>l&&x1<l)return 2;
            if(x1<r&&x2>r)return 1;
        }else{
            if(y2>t&&y1<t)return 1;
            if(y1<b&&y2>b)return 2;
        }
    }
    return false;
    },
    refresh:function(){
        this.refreshItems();
        this.refreshPositions();
    },
    refreshItems:function(){
        this.items=[];
        this.containers=[this];
        var items=this.items;
        var self=this;
        var queries=[[$.isFunction(this.options.items)?this.options.items.call(this.element,null,{
            options:this.options,
            item:this.currentItem
            }):$(this.options.items,this.element),this]];
        if(this.options.connectWith){
            for(var i=this.options.connectWith.length-1;i>=0;i--){
                var cur=$(this.options.connectWith[i]);
                for(var j=cur.length-1;j>=0;j--){
                    var inst=$.data(cur[j],'sortable');
                    if(inst&&!inst.options.disabled){
                        queries.push([$.isFunction(inst.options.items)?inst.options.items.call(inst.element):$(inst.options.items,inst.element),inst]);
                        this.containers.push(inst);
                    }
                };

        };

}
for(var i=queries.length-1;i>=0;i--){
    queries[i][0].each(function(){
        $.data(this,'sortable-item',queries[i][1]);
        items.push({
            item:$(this),
            instance:queries[i][1],
            width:0,
            height:0,
            left:0,
            top:0
        });
    });
};

},
refreshPositions:function(fast){
    if(this.offsetParent){
        var po=this.offsetParent.offset();
        this.offset.parent={
            top:po.top+this.offsetParentBorders.top,
            left:po.left+this.offsetParentBorders.left
            };

}
for(var i=this.items.length-1;i>=0;i--){
    if(this.items[i].instance!=this.currentContainer&&this.currentContainer&&this.items[i].item[0]!=this.currentItem[0])
        continue;
    var t=this.options.toleranceElement?$(this.options.toleranceElement,this.items[i].item):this.items[i].item;
    if(!fast){
        this.items[i].width=t[0].offsetWidth;
        this.items[i].height=t[0].offsetHeight;
    }
    var p=t.offset();
    this.items[i].left=p.left;
    this.items[i].top=p.top;
};

if(this.options.custom&&this.options.custom.refreshContainers){
    this.options.custom.refreshContainers.call(this);
}else{
    for(var i=this.containers.length-1;i>=0;i--){
        var p=this.containers[i].element.offset();
        this.containers[i].containerCache.left=p.left;
        this.containers[i].containerCache.top=p.top;
        this.containers[i].containerCache.width=this.containers[i].element.outerWidth();
        this.containers[i].containerCache.height=this.containers[i].element.outerHeight();
    };

}
},
destroy:function(){
    this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");
    this.mouseDestroy();
    for(var i=this.items.length-1;i>=0;i--)
        this.items[i].item.removeData("sortable-item");
},
createPlaceholder:function(that){
    var self=that||this,o=self.options;
    if(o.placeholder.constructor==String){
        var className=o.placeholder;
        o.placeholder={
            element:function(){
                return $('<div></div>').addClass(className)[0];
            },
            update:function(i,p){
                p.css(i.offset()).css({
                    width:i.outerWidth(),
                    height:i.outerHeight()
                    });
            }
        };

}
self.placeholder=$(o.placeholder.element.call(self.element,self.currentItem)).appendTo('body').css({
    position:'absolute'
});
o.placeholder.update.call(self.element,self.currentItem,self.placeholder);
},
contactContainers:function(e){
    for(var i=this.containers.length-1;i>=0;i--){
        if(this.intersectsWith(this.containers[i].containerCache)){
            if(!this.containers[i].containerCache.over){
                if(this.currentContainer!=this.containers[i]){
                    var dist=10000;
                    var itemWithLeastDistance=null;
                    var base=this.positionAbs[this.containers[i].floating?'left':'top'];
                    for(var j=this.items.length-1;j>=0;j--){
                        if(!contains(this.containers[i].element[0],this.items[j].item[0]))continue;
                        var cur=this.items[j][this.containers[i].floating?'left':'top'];
                        if(Math.abs(cur-base)<dist){
                            dist=Math.abs(cur-base);
                            itemWithLeastDistance=this.items[j];
                        }
                    }
                if(!itemWithLeastDistance&&!this.options.dropOnEmpty)
                    continue;
                if(this.placeholder)this.placeholder.remove();
                if(this.containers[i].options.placeholder){
                    this.containers[i].createPlaceholder(this);
                }else{
                    this.placeholder=null;;
                }
                this.currentContainer=this.containers[i];
                itemWithLeastDistance?this.rearrange(e,itemWithLeastDistance,null,true):this.rearrange(e,null,this.containers[i].element,true);
                this.propagate("change",e);
                this.containers[i].propagate("change",e,this);
            }
            this.containers[i].propagate("over",e,this);
            this.containers[i].containerCache.over=1;
        }
    }else{
        if(this.containers[i].containerCache.over){
            this.containers[i].propagate("out",e,this);
            this.containers[i].containerCache.over=0;
        }
    }
};

},
mouseCapture:function(e,overrideHandle){
    if(this.options.disabled||this.options.type=='static')return false;
    this.refreshItems();
    var currentItem=null,self=this,nodes=$(e.target).parents().each(function(){
        if($.data(this,'sortable-item')==self){
            currentItem=$(this);
            return false;
        }
    });
if($.data(e.target,'sortable-item')==self)currentItem=$(e.target);
if(!currentItem)return false;
if(this.options.handle&&!overrideHandle){
    var validHandle=false;
    $(this.options.handle,currentItem).find("*").andSelf().each(function(){
        if(this==e.target)validHandle=true;
    });
    if(!validHandle)return false;
}
this.currentItem=currentItem;
return true;
},
mouseStart:function(e,overrideHandle,noActivation){
    var o=this.options;
    this.currentContainer=this;
    this.refreshPositions();
    this.helper=typeof o.helper=='function'?$(o.helper.apply(this.element[0],[e,this.currentItem])):this.currentItem.clone();
    if(!this.helper.parents('body').length)$(o.appendTo!='parent'?o.appendTo:this.currentItem[0].parentNode)[0].appendChild(this.helper[0]);
    this.helper.css({
        position:'absolute',
        clear:'both'
    }).addClass('ui-sortable-helper');
    this.margins={
        left:(parseInt(this.currentItem.css("marginLeft"),10)||0),
        top:(parseInt(this.currentItem.css("marginTop"),10)||0)
        };

    this.offset=this.currentItem.offset();
    this.offset={
        top:this.offset.top-this.margins.top,
        left:this.offset.left-this.margins.left
        };

    this.offset.click={
        left:e.pageX-this.offset.left,
        top:e.pageY-this.offset.top
        };

    this.offsetParent=this.helper.offsetParent();
    var po=this.offsetParent.offset();
    this.offsetParentBorders={
        top:(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),
        left:(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)
        };

    this.offset.parent={
        top:po.top+this.offsetParentBorders.top,
        left:po.left+this.offsetParentBorders.left
        };

    this.originalPosition=this.generatePosition(e);
    this.domPosition={
        prev:this.currentItem.prev()[0],
        parent:this.currentItem.parent()[0]
        };

    this.helperProportions={
        width:this.helper.outerWidth(),
        height:this.helper.outerHeight()
        };

    if(o.placeholder)this.createPlaceholder();
    this.propagate("start",e);
    this.helperProportions={
        width:this.helper.outerWidth(),
        height:this.helper.outerHeight()
        };

    if(o.cursorAt){
        if(o.cursorAt.left!=undefined)this.offset.click.left=o.cursorAt.left;
        if(o.cursorAt.right!=undefined)this.offset.click.left=this.helperProportions.width-o.cursorAt.right;
        if(o.cursorAt.top!=undefined)this.offset.click.top=o.cursorAt.top;
        if(o.cursorAt.bottom!=undefined)this.offset.click.top=this.helperProportions.height-o.cursorAt.bottom;
    }
    if(o.containment){
        if(o.containment=='parent')o.containment=this.helper[0].parentNode;
        if(o.containment=='document'||o.containment=='window')this.containment=[0-this.offset.parent.left,0-this.offset.parent.top,$(o.containment=='document'?document:window).width()-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),($(o.containment=='document'?document:window).height()||document.body.parentNode.scrollHeight)-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)];
        if(!(/^(document|window|parent)$/).test(o.containment)){
            var ce=$(o.containment)[0];
            var co=$(o.containment).offset();
            this.containment=[co.left+(parseInt($(ce).css("borderLeftWidth"),10)||0)-this.offset.parent.left,co.top+(parseInt($(ce).css("borderTopWidth"),10)||0)-this.offset.parent.top,co.left+Math.max(ce.scrollWidth,ce.offsetWidth)-(parseInt($(ce).css("borderLeftWidth"),10)||0)-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.currentItem.css("marginRight"),10)||0),co.top+Math.max(ce.scrollHeight,ce.offsetHeight)-(parseInt($(ce).css("borderTopWidth"),10)||0)-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.currentItem.css("marginBottom"),10)||0)];
        }
    }
if(this.options.placeholder!='clone')
    this.currentItem.css('visibility','hidden');
if(!noActivation){
    for(var i=this.containers.length-1;i>=0;i--){
        this.containers[i].propagate("activate",e,this);
    }
    }
if($.ui.ddmanager)$.ui.ddmanager.current=this;
if($.ui.ddmanager&&!o.dropBehaviour)$.ui.ddmanager.prepareOffsets(this,e);
this.dragging=true;
this.mouseDrag(e);
return true;
},
convertPositionTo:function(d,pos){
    if(!pos)pos=this.position;
    var mod=d=="absolute"?1:-1;
    return{
        top:(pos.top
            +this.offset.parent.top*mod
            -(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)*mod
            +this.margins.top*mod),
        left:(pos.left
            +this.offset.parent.left*mod
            -(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft)*mod
            +this.margins.left*mod)
        };

},
generatePosition:function(e){
    var o=this.options;
    var position={
        top:(e.pageY
            -this.offset.click.top
            -this.offset.parent.top
            +(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)),
        left:(e.pageX
            -this.offset.click.left
            -this.offset.parent.left
            +(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft))
        };

    if(!this.originalPosition)return position;
    if(this.containment){
        if(position.left<this.containment[0])position.left=this.containment[0];
        if(position.top<this.containment[1])position.top=this.containment[1];
        if(position.left>this.containment[2])position.left=this.containment[2];
        if(position.top>this.containment[3])position.top=this.containment[3];
    }
    if(o.grid){
        var top=this.originalPosition.top+Math.round((position.top-this.originalPosition.top)/o.grid[1])*o.grid[1];
        position.top=this.containment?(!(top<this.containment[1]||top>this.containment[3])?top:(!(top<this.containment[1])?top-o.grid[1]:top+o.grid[1])):top;
        var left=this.originalPosition.left+Math.round((position.left-this.originalPosition.left)/o.grid[0])*o.grid[0];
        position.left=this.containment?(!(left<this.containment[0]||left>this.containment[2])?left:(!(left<this.containment[0])?left-o.grid[0]:left+o.grid[0])):left;
    }
    return position;
},
mouseDrag:function(e){
    this.position=this.generatePosition(e);
    this.positionAbs=this.convertPositionTo("absolute");
    $.ui.plugin.call(this,"sort",[e,this.ui()]);
    this.positionAbs=this.convertPositionTo("absolute");
    this.helper[0].style.left=this.position.left+'px';
    this.helper[0].style.top=this.position.top+'px';
    for(var i=this.items.length-1;i>=0;i--){
        var intersection=this.intersectsWithEdge(this.items[i]);
        if(!intersection)continue;
        if(this.items[i].item[0]!=this.currentItem[0]&&this.currentItem[intersection==1?"next":"prev"]()[0]!=this.items[i].item[0]&&!contains(this.currentItem[0],this.items[i].item[0])&&(this.options.type=='semi-dynamic'?!contains(this.element[0],this.items[i].item[0]):true)){
            this.direction=intersection==1?"down":"up";
            this.rearrange(e,this.items[i]);
            this.propagate("change",e);
            break;
        }
    }
this.contactContainers(e);
if($.ui.ddmanager)$.ui.ddmanager.drag(this,e);
this.element.triggerHandler("sort",[e,this.ui()],this.options["sort"]);
return false;
},
rearrange:function(e,i,a,hardRefresh){
    a?a[0].appendChild(this.currentItem[0]):i.item[0].parentNode.insertBefore(this.currentItem[0],(this.direction=='down'?i.item[0]:i.item[0].nextSibling));
    this.counter=this.counter?++this.counter:1;
    var self=this,counter=this.counter;
    window.setTimeout(function(){
        if(counter==self.counter)self.refreshPositions(!hardRefresh);
    },0);
    if(this.options.placeholder)
        this.options.placeholder.update.call(this.element,this.currentItem,this.placeholder);
},
mouseStop:function(e,noPropagation){
    if($.ui.ddmanager&&!this.options.dropBehaviour)
        $.ui.ddmanager.drop(this,e);
    if(this.options.revert){
        var self=this;
        var cur=self.currentItem.offset();
        if(self.placeholder)self.placeholder.animate({
            opacity:'hide'
        },(parseInt(this.options.revert,10)||500)-50);
        $(this.helper).animate({
            left:cur.left-this.offset.parent.left-self.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),
            top:cur.top-this.offset.parent.top-self.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)
            },parseInt(this.options.revert,10)||500,function(){
            self.clear(e);
        });
    }else{
        this.clear(e,noPropagation);
    }
    return false;
},
clear:function(e,noPropagation){
    if(this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])this.propagate("update",e,null,noPropagation);
    if(!contains(this.element[0],this.currentItem[0])){
        this.propagate("remove",e,null,noPropagation);
        for(var i=this.containers.length-1;i>=0;i--){
            if(contains(this.containers[i].element[0],this.currentItem[0])){
                this.containers[i].propagate("update",e,this,noPropagation);
                this.containers[i].propagate("receive",e,this,noPropagation);
            }
        };

};

for(var i=this.containers.length-1;i>=0;i--){
    this.containers[i].propagate("deactivate",e,this,noPropagation);
    if(this.containers[i].containerCache.over){
        this.containers[i].propagate("out",e,this);
        this.containers[i].containerCache.over=0;
    }
}
this.dragging=false;
if(this.cancelHelperRemoval){
    this.propagate("stop",e,null,noPropagation);
    return false;
}
$(this.currentItem).css('visibility','');
if(this.placeholder)this.placeholder.remove();
this.helper.remove();
this.helper=null;
this.propagate("stop",e,null,noPropagation);
return true;
}
}));
$.extend($.ui.sortable,{
    getter:"serialize toArray",
    defaults:{
        helper:"clone",
        tolerance:"guess",
        distance:1,
        delay:0,
        scroll:true,
        scrollSensitivity:20,
        scrollSpeed:20,
        cancel:":input",
        items:'> *',
        zIndex:1000,
        dropOnEmpty:true,
        appendTo:"parent"
    }
});
$.ui.plugin.add("sortable","cursor",{
    start:function(e,ui){
        var t=$('body');
        if(t.css("cursor"))ui.options._cursor=t.css("cursor");
        t.css("cursor",ui.options.cursor);
    },
    stop:function(e,ui){
        if(ui.options._cursor)$('body').css("cursor",ui.options._cursor);
    }
});
$.ui.plugin.add("sortable","zIndex",{
    start:function(e,ui){
        var t=ui.helper;
        if(t.css("zIndex"))ui.options._zIndex=t.css("zIndex");
        t.css('zIndex',ui.options.zIndex);
    },
    stop:function(e,ui){
        if(ui.options._zIndex)$(ui.helper).css('zIndex',ui.options._zIndex);
    }
});
$.ui.plugin.add("sortable","opacity",{
    start:function(e,ui){
        var t=ui.helper;
        if(t.css("opacity"))ui.options._opacity=t.css("opacity");
        t.css('opacity',ui.options.opacity);
    },
    stop:function(e,ui){
        if(ui.options._opacity)$(ui.helper).css('opacity',ui.options._opacity);
    }
});
$.ui.plugin.add("sortable","scroll",{
    start:function(e,ui){
        var o=ui.options;
        var i=$(this).data("sortable");
        i.overflowY=function(el){
            do{
                if(/auto|scroll/.test(el.css('overflow'))||(/auto|scroll/).test(el.css('overflow-y')))return el;
                el=el.parent();
            }while(el[0].parentNode);
            return $(document);
        }(i.currentItem);
        i.overflowX=function(el){
            do{
                if(/auto|scroll/.test(el.css('overflow'))||(/auto|scroll/).test(el.css('overflow-x')))return el;
                el=el.parent();
            }while(el[0].parentNode);
            return $(document);
        }(i.currentItem);
        if(i.overflowY[0]!=document&&i.overflowY[0].tagName!='HTML')i.overflowYOffset=i.overflowY.offset();
        if(i.overflowX[0]!=document&&i.overflowX[0].tagName!='HTML')i.overflowXOffset=i.overflowX.offset();
    },
    sort:function(e,ui){
        var o=ui.options;
        var i=$(this).data("sortable");
        if(i.overflowY[0]!=document&&i.overflowY[0].tagName!='HTML'){
            if((i.overflowYOffset.top+i.overflowY[0].offsetHeight)-e.pageY<o.scrollSensitivity)
                i.overflowY[0].scrollTop=i.overflowY[0].scrollTop+o.scrollSpeed;
            if(e.pageY-i.overflowYOffset.top<o.scrollSensitivity)
                i.overflowY[0].scrollTop=i.overflowY[0].scrollTop-o.scrollSpeed;
        }else{
            if(e.pageY-$(document).scrollTop()<o.scrollSensitivity)
                $(document).scrollTop($(document).scrollTop()-o.scrollSpeed);
            if($(window).height()-(e.pageY-$(document).scrollTop())<o.scrollSensitivity)
                $(document).scrollTop($(document).scrollTop()+o.scrollSpeed);
        }
        if(i.overflowX[0]!=document&&i.overflowX[0].tagName!='HTML'){
            if((i.overflowXOffset.left+i.overflowX[0].offsetWidth)-e.pageX<o.scrollSensitivity)
                i.overflowX[0].scrollLeft=i.overflowX[0].scrollLeft+o.scrollSpeed;
            if(e.pageX-i.overflowXOffset.left<o.scrollSensitivity)
                i.overflowX[0].scrollLeft=i.overflowX[0].scrollLeft-o.scrollSpeed;
        }else{
            if(e.pageX-$(document).scrollLeft()<o.scrollSensitivity)
                $(document).scrollLeft($(document).scrollLeft()-o.scrollSpeed);
            if($(window).width()-(e.pageX-$(document).scrollLeft())<o.scrollSensitivity)
                $(document).scrollLeft($(document).scrollLeft()+o.scrollSpeed);
        }
    }
});
$.ui.plugin.add("sortable","axis",{
    sort:function(e,ui){
        var i=$(this).data("sortable");
        if(ui.options.axis=="y")i.position.left=i.originalPosition.left;
        if(ui.options.axis=="x")i.position.top=i.originalPosition.top;
    }
});
})(jQuery);
(function($){
    $.widget("ui.accordion",{
        init:function(){
            var options=this.options;
            if(options.navigation){
                var current=this.element.find("a").filter(options.navigationFilter);
                if(current.length){
                    if(current.filter(options.header).length){
                        options.active=current;
                    }else{
                        options.active=current.parent().parent().prev();
                        current.addClass("current");
                    }
                }
            }
    options.headers=this.element.find(options.header);
        options.active=findActive(options.headers,options.active);
        if($.browser.msie){
        this.element.find('a').css('zoom','1');
    }
    if(!this.element.hasClass("ui-accordion")){
        this.element.addClass("ui-accordion");
        $("<span class='ui-accordion-left'/>").insertBefore(options.headers);
        $("<span class='ui-accordion-right'/>").appendTo(options.headers);
        options.headers.addClass("ui-accordion-header").attr("tabindex","0");
    }
    var maxHeight;
    if(options.fillSpace){
        maxHeight=this.element.parent().height();
        options.headers.each(function(){
            maxHeight-=$(this).outerHeight();
        });
        var maxPadding=0;
        options.headers.next().each(function(){
            maxPadding=Math.max(maxPadding,$(this).innerHeight()-$(this).height());
        }).height(maxHeight-maxPadding);
    }else if(options.autoHeight){
        maxHeight=0;
        options.headers.next().each(function(){
            maxHeight=Math.max(maxHeight,$(this).outerHeight());
        }).height(maxHeight);
    }
    options.headers.not(options.active||"").next().hide();
        options.active.parent().andSelf().addClass(options.selectedClass);
        if(options.event){
        this.element.bind((options.event)+".accordion",clickHandler);
    }
    },
activate:function(index){
    clickHandler.call(this.element[0],{
        target:findActive(this.options.headers,index)[0]
        });
},
destroy:function(){
    this.options.headers.next().css("display","");
    if(this.options.fillSpace||this.options.autoHeight){
        this.options.headers.next().css("height","");
    }
    $.removeData(this.element[0],"accordion");
    this.element.removeClass("ui-accordion").unbind(".accordion");
}
});
function scopeCallback(callback,scope){
    return function(){
        return callback.apply(scope,arguments);
    };

};

function completed(cancel){
    if(!$.data(this,"accordion")){
        return;
    }
    var instance=$.data(this,"accordion");
    var options=instance.options;
    options.running=cancel?0:--options.running;
    if(options.running){
        return;
    }
    if(options.clearStyle){
        options.toShow.add(options.toHide).css({
            height:"",
            overflow:""
        });
    }
    $(this).triggerHandler("accordionchange",[$.event.fix({
        type:'accordionchange',
        target:instance.element[0]
        }),options.data],options.change);
}
function toggle(toShow,toHide,data,clickedActive,down){
    var options=$.data(this,"accordion").options;
    options.toShow=toShow;
    options.toHide=toHide;
    options.data=data;
    var complete=scopeCallback(completed,this);
    options.running=toHide.size()===0?toShow.size():toHide.size();
    if(options.animated){
        if(!options.alwaysOpen&&clickedActive){
            $.ui.accordion.animations[options.animated]({
                toShow:jQuery([]),
                toHide:toHide,
                complete:complete,
                down:down,
                autoHeight:options.autoHeight
                });
        }else{
            $.ui.accordion.animations[options.animated]({
                toShow:toShow,
                toHide:toHide,
                complete:complete,
                down:down,
                autoHeight:options.autoHeight
                });
        }
    }else{
    if(!options.alwaysOpen&&clickedActive){
        toShow.toggle();
    }else{
        toHide.hide();
        toShow.show();
    }
    complete(true);
}
}
function clickHandler(event){
    var options=$.data(this,"accordion").options;
    if(options.disabled){
        return false;
    }
    if(!event.target&&!options.alwaysOpen){
        options.active.parent().andSelf().toggleClass(options.selectedClass);
        var toHide=options.active.next(),data={
            options:options,
            newHeader:jQuery([]),
            oldHeader:options.active,
            newContent:jQuery([]),
            oldContent:toHide
        },toShow=(options.active=$([]));
        toggle.call(this,toShow,toHide,data);
        return false;
    }
    var clicked=$(event.target);
    clicked=$(clicked.parents(options.header)[0]||clicked);
    var clickedActive=clicked[0]==options.active[0];
    if(options.running||(options.alwaysOpen&&clickedActive)){
        return false;
    }
    if(!clicked.is(options.header)){
        return;
    }
    options.active.parent().andSelf().toggleClass(options.selectedClass);
    if(!clickedActive){
        clicked.parent().andSelf().addClass(options.selectedClass);
    }
    var toShow=clicked.next(),toHide=options.active.next(),data={
        options:options,
        newHeader:clicked,
        oldHeader:options.active,
        newContent:toShow,
        oldContent:toHide
    },down=options.headers.index(options.active[0])>options.headers.index(clicked[0]);
    options.active=clickedActive?$([]):clicked;
    toggle.call(this,toShow,toHide,data,clickedActive,down);
    return false;
};

function findActive(headers,selector){
    return selector!=undefined?typeof selector=="number"?headers.filter(":eq("+selector+")"):headers.not(headers.not(selector)):selector===false?$([]):headers.filter(":eq(0)");
}
$.extend($.ui.accordion,{
    defaults:{
        selectedClass:"selected",
        alwaysOpen:true,
        animated:'slide',
        event:"click",
        header:"a",
        autoHeight:true,
        running:0,
        navigationFilter:function(){
            return this.href.toLowerCase()==location.href.toLowerCase();
        }
    },
animations:{
    slide:function(options,additions){
        options=$.extend({
            easing:"swing",
            duration:300
        },options,additions);
        if(!options.toHide.size()){
            options.toShow.animate({
                height:"show"
            },options);
            return;
        }
        var hideHeight=options.toHide.height(),showHeight=options.toShow.height(),difference=showHeight/hideHeight;
        options.toShow.css({
            height:0,
            overflow:'hidden'
        }).show();
        options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate({
            height:"hide"
        },{
            step:function(now){
                var current=(hideHeight-now)*difference;
                if($.browser.msie||$.browser.opera){
                    current=Math.ceil(current);
                }
                options.toShow.height(current);
            },
            duration:options.duration,
            easing:options.easing,
            complete:function(){
                if(!options.autoHeight){
                    options.toShow.css("height","auto");
                }
                options.complete();
            }
        });
},
bounceslide:function(options){
    this.slide(options,{
        easing:options.down?"bounceout":"swing",
        duration:options.down?1000:200
        });
},
easeslide:function(options){
    this.slide(options,{
        easing:"easeinout",
        duration:700
    });
}
}
});
$.fn.activate=function(index){
    return this.accordion("activate",index);
};

})(jQuery);
(function($){
    var setDataSwitch={
        dragStart:"start.draggable",
        drag:"drag.draggable",
        dragStop:"stop.draggable",
        maxHeight:"maxHeight.resizable",
        minHeight:"minHeight.resizable",
        maxWidth:"maxWidth.resizable",
        minWidth:"minWidth.resizable",
        resizeStart:"start.resizable",
        resize:"drag.resizable",
        resizeStop:"stop.resizable"
    };

    $.widget("ui.dialog",{
        init:function(){
            var self=this,options=this.options,resizeHandles=typeof options.resizable=='string'?options.resizable:'n,e,s,w,se,sw,ne,nw',uiDialogContent=this.element.addClass('ui-dialog-content').wrap('<div/>').wrap('<div/>'),uiDialogContainer=(this.uiDialogContainer=uiDialogContent.parent().addClass('ui-dialog-container').css({
                position:'relative',
                width:'100%',
                height:'100%'
            })),title=options.title||uiDialogContent.attr('title')||'',uiDialogTitlebar=(this.uiDialogTitlebar=$('<div class="ui-dialog-titlebar"/>')).append('<span class="ui-dialog-title">'+title+'</span>').append('<a href="#" class="ui-dialog-titlebar-close"><span>X</span></a>').prependTo(uiDialogContainer),uiDialog=(this.uiDialog=uiDialogContainer.parent()).appendTo(document.body).hide().addClass('ui-dialog').addClass(options.dialogClass).addClass(uiDialogContent.attr('className')).removeClass('ui-dialog-content').css({
                position:'absolute',
                width:options.width,
                height:options.height,
                overflow:'hidden',
                zIndex:options.zIndex
                }).attr('tabIndex',-1).css('outline',0).keydown(function(ev){
                if(options.closeOnEscape){
                    var ESC=27;
                    (ev.keyCode&&ev.keyCode==ESC&&self.close());
                }
            }).mousedown(function(){
            self.moveToTop();
        }),uiDialogButtonPane=(this.uiDialogButtonPane=$('<div/>')).addClass('ui-dialog-buttonpane').css({
            position:'absolute',
            bottom:0
        }).appendTo(uiDialog);
        this.uiDialogTitlebarClose=$('.ui-dialog-titlebar-close',uiDialogTitlebar).hover(function(){
            $(this).addClass('ui-dialog-titlebar-close-hover');
        },function(){
            $(this).removeClass('ui-dialog-titlebar-close-hover');
        }).mousedown(function(ev){
            ev.stopPropagation();
        }).click(function(){
            self.close();
            return false;
        });
        this.uiDialogTitlebar.find("*").add(this.uiDialogTitlebar).each(function(){
            $.ui.disableSelection(this);
        });
        if($.fn.draggable){
            uiDialog.draggable({
                cancel:'.ui-dialog-content',
                helper:options.dragHelper,
                handle:'.ui-dialog-titlebar',
                start:function(e,ui){
                    self.moveToTop();
                    (options.dragStart&&options.dragStart.apply(self.element[0],arguments));
                },
                drag:function(e,ui){
                    (options.drag&&options.drag.apply(self.element[0],arguments));
                },
                stop:function(e,ui){
                    (options.dragStop&&options.dragStop.apply(self.element[0],arguments));
                    $.ui.dialog.overlay.resize();
                }
            });
        (options.draggable||uiDialog.draggable('disable'));
    }
    if($.fn.resizable){
        uiDialog.resizable({
            cancel:'.ui-dialog-content',
            helper:options.resizeHelper,
            maxWidth:options.maxWidth,
            maxHeight:options.maxHeight,
            minWidth:options.minWidth,
            minHeight:options.minHeight,
            start:function(){
                (options.resizeStart&&options.resizeStart.apply(self.element[0],arguments));
            },
            resize:function(e,ui){
                (options.autoResize&&self.size.apply(self));
                (options.resize&&options.resize.apply(self.element[0],arguments));
            },
            handles:resizeHandles,
            stop:function(e,ui){
                (options.autoResize&&self.size.apply(self));
                (options.resizeStop&&options.resizeStop.apply(self.element[0],arguments));
                $.ui.dialog.overlay.resize();
            }
        });
    (options.resizable||uiDialog.resizable('disable'));
    }
    this.createButtons(options.buttons);
    this.isOpen=false;
    (options.bgiframe&&$.fn.bgiframe&&uiDialog.bgiframe());
    (options.autoOpen&&this.open());
},
setData:function(key,value){
    (setDataSwitch[key]&&this.uiDialog.data(setDataSwitch[key],value));
    switch(key){
        case"buttons":
            this.createButtons(value);
            break;
        case"draggable":
            this.uiDialog.draggable(value?'enable':'disable');
            break;
        case"height":
            this.uiDialog.height(value);
            break;
        case"position":
            this.position(value);
            break;
        case"resizable":
            (typeof value=='string'&&this.uiDialog.data('handles.resizable',value));
            this.uiDialog.resizable(value?'enable':'disable');
            break;
        case"title":
            $(".ui-dialog-title",this.uiDialogTitlebar).text(value);
            break;
        case"width":
            this.uiDialog.width(value);
            break;
    }
    $.widget.prototype.setData.apply(this,arguments);
},
position:function(pos){
    var wnd=$(window),doc=$(document),pTop=doc.scrollTop(),pLeft=doc.scrollLeft(),minTop=pTop;
    if($.inArray(pos,['center','top','right','bottom','left'])>=0){
        pos=[pos=='right'||pos=='left'?pos:'center',pos=='top'||pos=='bottom'?pos:'middle'];
    }
    if(pos.constructor!=Array){
        pos=['center','middle'];
    }
    if(pos[0].constructor==Number){
        pLeft+=pos[0];
    }else{
        switch(pos[0]){
            case'left':
                pLeft+=0;
                break;
            case'right':
                pLeft+=wnd.width()-this.uiDialog.width();
                break;default:case'center':
                pLeft+=(wnd.width()-this.uiDialog.width())/2;
        }
    }
if(pos[1].constructor==Number){
    pTop+=pos[1];
}else{
    switch(pos[1]){
        case'top':
            pTop+=0;
            break;
        case'bottom':
            pTop+=wnd.height()-this.uiDialog.height();
            break;default:case'middle':
            pTop+=(wnd.height()-this.uiDialog.height())/2;
    }
}
pTop=Math.max(pTop,minTop);
    this.uiDialog.css({
    top:pTop,
    left:pLeft
});
},
size:function(){
    var container=this.uiDialogContainer,titlebar=this.uiDialogTitlebar,content=this.element,tbMargin=parseInt(content.css('margin-top'),10)+parseInt(content.css('margin-bottom'),10),lrMargin=parseInt(content.css('margin-left'),10)+parseInt(content.css('margin-right'),10);
    content.height(container.height()-titlebar.outerHeight()-tbMargin);
    content.width(container.width()-lrMargin);
},
open:function(){
    if(this.isOpen){
        return;
    }
    this.overlay=this.options.modal?new $.ui.dialog.overlay(this):null;
    (this.uiDialog.next().length>0)&&this.uiDialog.appendTo('body');
    this.position(this.options.position);
    this.uiDialog.show(this.options.show);
    this.options.autoResize&&this.size();
    this.moveToTop(true);
    var openEV=null;
    var openUI={
        options:this.options
        };

    this.uiDialogTitlebarClose.focus();
    this.element.triggerHandler("dialogopen",[openEV,openUI],this.options.open);
    this.isOpen=true;
},
moveToTop:function(force){
    if((this.options.modal&&!force)||(!this.options.stack&&!this.options.modal)){
        return this.element.triggerHandler("dialogfocus",[null,{
            options:this.options
            }],this.options.focus);
    }
    var maxZ=this.options.zIndex,options=this.options;
    $('.ui-dialog:visible').each(function(){
        maxZ=Math.max(maxZ,parseInt($(this).css('z-index'),10)||options.zIndex);
    });
    (this.overlay&&this.overlay.$el.css('z-index',++maxZ));
    this.uiDialog.css('z-index',++maxZ);
    this.element.triggerHandler("dialogfocus",[null,{
        options:this.options
        }],this.options.focus);
},
close:function(){
    (this.overlay&&this.overlay.destroy());
    this.uiDialog.hide(this.options.hide);
    var closeEV=null;
    var closeUI={
        options:this.options
        };

    this.element.triggerHandler("dialogclose",[closeEV,closeUI],this.options.close);
    $.ui.dialog.overlay.resize();
    this.isOpen=false;
},
destroy:function(){
    (this.overlay&&this.overlay.destroy());
    this.uiDialog.hide();
    this.element.unbind('.dialog').removeData('dialog').removeClass('ui-dialog-content').hide().appendTo('body');
    this.uiDialog.remove();
},
createButtons:function(buttons){
    var self=this,hasButtons=false,uiDialogButtonPane=this.uiDialogButtonPane;
    uiDialogButtonPane.empty().hide();
    $.each(buttons,function(){
        return!(hasButtons=true);
    });
    if(hasButtons){
        uiDialogButtonPane.show();
        $.each(buttons,function(name,fn){
            $('<button/>').text(name).click(function(){
                fn.apply(self.element[0],arguments);
            }).appendTo(uiDialogButtonPane);
        });
    }
}
});
$.extend($.ui.dialog,{
    defaults:{
        autoOpen:true,
        autoResize:true,
        bgiframe:false,
        buttons:{},
        closeOnEscape:true,
        draggable:true,
        height:200,
        minHeight:100,
        minWidth:150,
        modal:false,
        overlay:{},
        position:'center',
        resizable:true,
        stack:true,
        width:300,
        zIndex:1000
    },
    overlay:function(dialog){
        this.$el=$.ui.dialog.overlay.create(dialog);
    }
});
$.extend($.ui.dialog.overlay,{
    instances:[],
    events:$.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),function(e){
        return e+'.dialog-overlay';
    }).join(' '),
    create:function(dialog){
        if(this.instances.length===0){
            setTimeout(function(){
                $('a, :input').bind($.ui.dialog.overlay.events,function(){
                    var allow=false;
                    var $dialog=$(this).parents('.ui-dialog');
                    if($dialog.length){
                        var $overlays=$('.ui-dialog-overlay');
                        if($overlays.length){
                            var maxZ=parseInt($overlays.css('z-index'),10);
                            $overlays.each(function(){
                                maxZ=Math.max(maxZ,parseInt($(this).css('z-index'),10));
                            });
                            allow=parseInt($dialog.css('z-index'),10)>maxZ;
                        }else{
                            allow=true;
                        }
                    }
                return allow;
                });
            },1);
        $(document).bind('keydown.dialog-overlay',function(e){
            var ESC=27;
            (e.keyCode&&e.keyCode==ESC&&dialog.close());
        });
        $(window).bind('resize.dialog-overlay',$.ui.dialog.overlay.resize);
    }
    var $el=$('<div/>').appendTo(document.body).addClass('ui-dialog-overlay').css($.extend({
        borderWidth:0,
        margin:0,
        padding:0,
        position:'absolute',
        top:0,
        left:0,
        width:this.width(),
        height:this.height()
        },dialog.options.overlay));
    (dialog.options.bgiframe&&$.fn.bgiframe&&$el.bgiframe());
    this.instances.push($el);
    return $el;
},
destroy:function($el){
    this.instances.splice($.inArray(this.instances,$el),1);
    if(this.instances.length===0){
        $('a, :input').add([document,window]).unbind('.dialog-overlay');
    }
    $el.remove();
},
height:function(){
    if($.browser.msie&&$.browser.version<7){
        var scrollHeight=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
        var offsetHeight=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);
        if(scrollHeight<offsetHeight){
            return $(window).height()+'px';
        }else{
            return scrollHeight+'px';
        }
    }else{
    return $(document).height()+'px';
}
},
width:function(){
    if($.browser.msie&&$.browser.version<7){
        var scrollWidth=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);
        var offsetWidth=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);
        if(scrollWidth<offsetWidth){
            return $(window).width()+'px';
        }else{
            return scrollWidth+'px';
        }
    }else{
    return $(document).width()+'px';
}
},
resize:function(){
    var $overlays=$([]);
    $.each($.ui.dialog.overlay.instances,function(){
        $overlays=$overlays.add(this);
    });
    $overlays.css({
        width:0,
        height:0
    }).css({
        width:$.ui.dialog.overlay.width(),
        height:$.ui.dialog.overlay.height()
        });
}
});
$.extend($.ui.dialog.overlay.prototype,{
    destroy:function(){
        $.ui.dialog.overlay.destroy(this.$el);
    }
});
})(jQuery);
(function($){
    $.fn.unwrap=$.fn.unwrap||function(expr){
        return this.each(function(){
            $(this).parents(expr).eq(0).after(this).remove();
        });
    };

    $.widget("ui.slider",{
        plugins:{},
        ui:function(e){
            return{
                options:this.options,
                handle:this.currentHandle,
                value:this.options.axis!="both"||!this.options.axis?Math.round(this.value(null,this.options.axis=="vertical"?"y":"x")):{
                    x:Math.round(this.value(null,"x")),
                    y:Math.round(this.value(null,"y"))
                    },
                range:this.getRange()
                };

    },
    propagate:function(n,e){
        $.ui.plugin.call(this,n,[e,this.ui()]);
        this.element.triggerHandler(n=="slide"?n:"slide"+n,[e,this.ui()],this.options[n]);
    },
    destroy:function(){
        this.element.removeClass("ui-slider ui-slider-disabled").removeData("slider").unbind(".slider");
        if(this.handle&&this.handle.length){
            this.handle.unwrap("a");
            this.handle.each(function(){
                $(this).data("mouse").mouseDestroy();
            });
        }
        this.generated&&this.generated.remove();
    },
    setData:function(key,value){
        $.widget.prototype.setData.apply(this,arguments);
        if(/min|max|steps/.test(key)){
            this.initBoundaries();
        }
        if(key=="range"){
            value?this.handle.length==2&&this.createRange():this.removeRange();
        }
    },
    init:function(){
        var self=this;
        this.element.addClass("ui-slider");
        this.initBoundaries();
        this.handle=$(this.options.handle,this.element);
        if(!this.handle.length){
            self.handle=self.generated=$(self.options.handles||[0]).map(function(){
                var handle=$("<div/>").addClass("ui-slider-handle").appendTo(self.element);
                if(this.id)
                    handle.attr("id",this.id);
                return handle[0];
            });
        }
        var handleclass=function(el){
            this.element=$(el);
            this.element.data("mouse",this);
            this.options=self.options;
            this.element.bind("mousedown",function(){
                if(self.currentHandle)this.blur(self.currentHandle);
                self.focus(this,1);
            });
            this.mouseInit();
        };

        $.extend(handleclass.prototype,$.ui.mouse,{
            mouseStart:function(e){
                return self.start.call(self,e,this.element[0]);
            },
            mouseStop:function(e){
                return self.stop.call(self,e,this.element[0]);
            },
            mouseDrag:function(e){
                return self.drag.call(self,e,this.element[0]);
            },
            mouseCapture:function(){
                return true;
            },
            trigger:function(e){
                this.mouseDown(e);
            }
        });
    $(this.handle).each(function(){
        new handleclass(this);
    }).wrap('<a href="javascript:void(0)" style="outline:none;border:none;"></a>').parent().bind('focus',function(e){
        self.focus(this.firstChild);
    }).bind('blur',function(e){
        self.blur(this.firstChild);
    }).bind('keydown',function(e){
        if(!self.options.noKeyboard)self.keydown(e.keyCode,this.firstChild);
    });
    this.element.bind('mousedown.slider',function(e){
        self.click.apply(self,[e]);
        self.currentHandle.data("mouse").trigger(e);
        self.firstValue=self.firstValue+1;
    });
    $.each(this.options.handles||[],function(index,handle){
        self.moveTo(handle.start,index,true);
    });
    if(!isNaN(this.options.startValue))
        this.moveTo(this.options.startValue,0,true);
    this.previousHandle=$(this.handle[0]);
    if(this.handle.length==2&&this.options.range)this.createRange();
},
initBoundaries:function(){
    var element=this.element[0],o=this.options;
    this.actualSize={
        width:this.element.outerWidth(),
        height:this.element.outerHeight()
        };

    $.extend(o,{
        axis:o.axis||(element.offsetWidth<element.offsetHeight?'vertical':'horizontal'),
        max:!isNaN(parseInt(o.max,10))?{
            x:parseInt(o.max,10),
            y:parseInt(o.max,10)
            }:({
            x:o.max&&o.max.x||100,
            y:o.max&&o.max.y||100
            }),
        min:!isNaN(parseInt(o.min,10))?{
            x:parseInt(o.min,10),
            y:parseInt(o.min,10)
            }:({
            x:o.min&&o.min.x||0,
            y:o.min&&o.min.y||0
            })
        });
    o.realMax={
        x:o.max.x-o.min.x,
        y:o.max.y-o.min.y
        };

    o.stepping={
        x:o.stepping&&o.stepping.x||parseInt(o.stepping,10)||(o.steps?o.realMax.x/(o.steps.x||parseInt(o.steps,10)||o.realMax.x):0),
        y:o.stepping&&o.stepping.y||parseInt(o.stepping,10)||(o.steps?o.realMax.y/(o.steps.y||parseInt(o.steps,10)||o.realMax.y):0)
        };

},
keydown:function(keyCode,handle){
    if(/(37|38|39|40)/.test(keyCode)){
        this.moveTo({
            x:/(37|39)/.test(keyCode)?(keyCode==37?'-':'+')+'='+this.oneStep("x"):0,
            y:/(38|40)/.test(keyCode)?(keyCode==38?'-':'+')+'='+this.oneStep("y"):0
            },handle);
    }
},
focus:function(handle,hard){
    this.currentHandle=$(handle).addClass('ui-slider-handle-active');
    if(hard)
        this.currentHandle.parent()[0].focus();
},
blur:function(handle){
    $(handle).removeClass('ui-slider-handle-active');
    if(this.currentHandle&&this.currentHandle[0]==handle){
        this.previousHandle=this.currentHandle;
        this.currentHandle=null;
    };

},
click:function(e){
    var pointer=[e.pageX,e.pageY];
    var clickedHandle=false;
    this.handle.each(function(){
        if(this==e.target)
            clickedHandle=true;
    });
    if(clickedHandle||this.options.disabled||!(this.currentHandle||this.previousHandle))
        return;
    if(!this.currentHandle&&this.previousHandle)
        this.focus(this.previousHandle,true);
    this.offset=this.element.offset();
    this.moveTo({
        y:this.convertValue(e.pageY-this.offset.top-this.currentHandle[0].offsetHeight/2,"y"),
        x:this.convertValue(e.pageX-this.offset.left-this.currentHandle[0].offsetWidth/2,"x")
        },null,!this.options.distance);
},
createRange:function(){
    if(this.rangeElement)return;
    this.rangeElement=$('<div></div>').addClass('ui-slider-range').css({
        position:'absolute'
    }).appendTo(this.element);
    this.updateRange();
},
removeRange:function(){
    this.rangeElement.remove();
    this.rangeElement=null;
},
updateRange:function(){
    var prop=this.options.axis=="vertical"?"top":"left";
    var size=this.options.axis=="vertical"?"height":"width";
    this.rangeElement.css(prop,(parseInt($(this.handle[0]).css(prop),10)||0)+this.handleSize(0,this.options.axis=="vertical"?"y":"x")/2);
    this.rangeElement.css(size,(parseInt($(this.handle[1]).css(prop),10)||0)-(parseInt($(this.handle[0]).css(prop),10)||0));
},
getRange:function(){
    return this.rangeElement?this.convertValue(parseInt(this.rangeElement.css(this.options.axis=="vertical"?"height":"width"),10),this.options.axis=="vertical"?"y":"x"):null;
},
handleIndex:function(){
    return this.handle.index(this.currentHandle[0]);
},
value:function(handle,axis){
    if(this.handle.length==1)this.currentHandle=this.handle;
    if(!axis)axis=this.options.axis=="vertical"?"y":"x";
    var curHandle=$(handle!=undefined&&handle!==null?this.handle[handle]||handle:this.currentHandle);
    if(curHandle.data("mouse").sliderValue){
        return parseInt(curHandle.data("mouse").sliderValue[axis],10);
    }else{
        return parseInt(((parseInt(curHandle.css(axis=="x"?"left":"top"),10)/(this.actualSize[axis=="x"?"width":"height"]-this.handleSize(handle,axis)))*this.options.realMax[axis])+this.options.min[axis],10);
    }
},
convertValue:function(value,axis){
    return this.options.min[axis]+(value/(this.actualSize[axis=="x"?"width":"height"]-this.handleSize(null,axis)))*this.options.realMax[axis];
},
translateValue:function(value,axis){
    return((value-this.options.min[axis])/this.options.realMax[axis])*(this.actualSize[axis=="x"?"width":"height"]-this.handleSize(null,axis));
},
translateRange:function(value,axis){
    if(this.rangeElement){
        if(this.currentHandle[0]==this.handle[0]&&value>=this.translateValue(this.value(1),axis))
            value=this.translateValue(this.value(1,axis)-this.oneStep(axis),axis);
        if(this.currentHandle[0]==this.handle[1]&&value<=this.translateValue(this.value(0),axis))
            value=this.translateValue(this.value(0,axis)+this.oneStep(axis),axis);
    }
    if(this.options.handles){
        var handle=this.options.handles[this.handleIndex()];
        if(value<this.translateValue(handle.min,axis)){
            value=this.translateValue(handle.min,axis);
        }else if(value>this.translateValue(handle.max,axis)){
            value=this.translateValue(handle.max,axis);
        }
    }
return value;
},
translateLimits:function(value,axis){
    if(value>=this.actualSize[axis=="x"?"width":"height"]-this.handleSize(null,axis))
        value=this.actualSize[axis=="x"?"width":"height"]-this.handleSize(null,axis);
    if(value<=0)
        value=0;
    return value;
},
handleSize:function(handle,axis){
    return $(handle!=undefined&&handle!==null?this.handle[handle]:this.currentHandle)[0]["offset"+(axis=="x"?"Width":"Height")];
},
oneStep:function(axis){
    return this.options.stepping[axis]||1;
},
start:function(e,handle){
    var o=this.options;
    if(o.disabled)return false;
    this.actualSize={
        width:this.element.outerWidth(),
        height:this.element.outerHeight()
        };

    if(!this.currentHandle)
        this.focus(this.previousHandle,true);
    this.offset=this.element.offset();
    this.handleOffset=this.currentHandle.offset();
    this.clickOffset={
        top:e.pageY-this.handleOffset.top,
        left:e.pageX-this.handleOffset.left
        };

    this.firstValue=this.value();
    this.propagate('start',e);
    this.drag(e,handle);
    return true;
},
stop:function(e){
    this.propagate('stop',e);
    if(this.firstValue!=this.value())
        this.propagate('change',e);
    this.focus(this.currentHandle,true);
    return false;
},
drag:function(e,handle){
    var o=this.options;
    var position={
        top:e.pageY-this.offset.top-this.clickOffset.top,
        left:e.pageX-this.offset.left-this.clickOffset.left
        };

    if(!this.currentHandle)this.focus(this.previousHandle,true);
    position.left=this.translateLimits(position.left,"x");
    position.top=this.translateLimits(position.top,"y");
    if(o.stepping.x){
        var value=this.convertValue(position.left,"x");
        value=Math.round(value/o.stepping.x)*o.stepping.x;
        position.left=this.translateValue(value,"x");
    }
    if(o.stepping.y){
        var value=this.convertValue(position.top,"y");
        value=Math.round(value/o.stepping.y)*o.stepping.y;
        position.top=this.translateValue(value,"y");
    }
    position.left=this.translateRange(position.left,"x");
    position.top=this.translateRange(position.top,"y");
    if(o.axis!="vertical")this.currentHandle.css({
        left:position.left
        });
    if(o.axis!="horizontal")this.currentHandle.css({
        top:position.top
        });
    this.currentHandle.data("mouse").sliderValue={
        x:Math.round(this.convertValue(position.left,"x"))||0,
        y:Math.round(this.convertValue(position.top,"y"))||0
        };

    if(this.rangeElement)
        this.updateRange();
    this.propagate('slide',e);
    return false;
},
moveTo:function(value,handle,noPropagation){
    var o=this.options;
    this.actualSize={
        width:this.element.outerWidth(),
        height:this.element.outerHeight()
        };

    if(handle==undefined&&!this.currentHandle&&this.handle.length!=1)
        return false;
    if(handle==undefined&&!this.currentHandle)
        handle=0;
    if(handle!=undefined)
        this.currentHandle=this.previousHandle=$(this.handle[handle]||handle);
    if(value.x!==undefined&&value.y!==undefined){
        var x=value.x,y=value.y;
    }else{
        var x=value,y=value;
    }
    if(x!==undefined&&x.constructor!=Number){
        var me=/^\-\=/.test(x),pe=/^\+\=/.test(x);
        if(me||pe){
            x=this.value(null,"x")+parseInt(x.replace(me?'=':'+=',''),10);
        }else{
            x=isNaN(parseInt(x,10))?undefined:parseInt(x,10);
        }
    }
if(y!==undefined&&y.constructor!=Number){
    var me=/^\-\=/.test(y),pe=/^\+\=/.test(y);
    if(me||pe){
        y=this.value(null,"y")+parseInt(y.replace(me?'=':'+=',''),10);
    }else{
        y=isNaN(parseInt(y,10))?undefined:parseInt(y,10);
    }
}
if(o.axis!="vertical"&&x!==undefined){
    if(o.stepping.x)x=Math.round(x/o.stepping.x)*o.stepping.x;
    x=this.translateValue(x,"x");
    x=this.translateLimits(x,"x");
    x=this.translateRange(x,"x");
    o.animate?this.currentHandle.stop().animate({
        left:x
    },(Math.abs(parseInt(this.currentHandle.css("left"))-x))*(!isNaN(parseInt(o.animate))?o.animate:5)):this.currentHandle.css({
        left:x
    });
}
if(o.axis!="horizontal"&&y!==undefined){
    if(o.stepping.y)y=Math.round(y/o.stepping.y)*o.stepping.y;
    y=this.translateValue(y,"y");
    y=this.translateLimits(y,"y");
    y=this.translateRange(y,"y");
    o.animate?this.currentHandle.stop().animate({
        top:y
    },(Math.abs(parseInt(this.currentHandle.css("top"))-y))*(!isNaN(parseInt(o.animate))?o.animate:5)):this.currentHandle.css({
        top:y
    });
}
if(this.rangeElement)
    this.updateRange();
this.currentHandle.data("mouse").sliderValue={
    x:Math.round(this.convertValue(x,"x"))||0,
    y:Math.round(this.convertValue(y,"y"))||0
    };

if(!noPropagation){
    this.propagate('start',null);
    this.propagate('stop',null);
    this.propagate('change',null);
    this.propagate("slide",null);
}
}
});
$.ui.slider.getter="value";
$.ui.slider.defaults={
    handle:".ui-slider-handle",
    distance:1,
    animate:false
};

})(jQuery);
(function($){
    $.widget("ui.tabs",{
        init:function(){
            this.options.event+='.tabs';
            this.tabify(true);
        },
        setData:function(key,value){
            if((/^selected/).test(key))
                this.select(value);
            else{
                this.options[key]=value;
                this.tabify();
            }
        },
    length:function(){
        return this.$tabs.length;
    },
    tabId:function(a){
        return a.title&&a.title.replace(/\s/g,'_').replace(/[^A-Za-z0-9\-_:\.]/g,'')||this.options.idPrefix+$.data(a);
    },
    ui:function(tab,panel){
        return{
            options:this.options,
            tab:tab,
            panel:panel,
            index:this.$tabs.index(tab)
            };

    },
    tabify:function(init){
        this.$lis=$('li:has(a[href])',this.element);
        this.$tabs=this.$lis.map(function(){
            return $('a',this)[0];
        });
        this.$panels=$([]);
        var self=this,o=this.options;
        this.$tabs.each(function(i,a){
            if(a.hash&&a.hash.replace('#',''))
                self.$panels=self.$panels.add(a.hash);
            else if($(a).attr('href')!='#'){
                $.data(a,'href.tabs',a.href);
                $.data(a,'load.tabs',a.href);
                var id=self.tabId(a);
                a.href='#'+id;
                var $panel=$('#'+id);
                if(!$panel.length){
                    $panel=$(o.panelTemplate).attr('id',id).addClass(o.panelClass).insertAfter(self.$panels[i-1]||self.element);
                    $panel.data('destroy.tabs',true);
                }
                self.$panels=self.$panels.add($panel);
            }
            else
                o.disabled.push(i+1);
        });
        if(init){
            this.element.addClass(o.navClass);
            this.$panels.each(function(){
                var $this=$(this);
                $this.addClass(o.panelClass);
            });
            if(o.selected===undefined){
                if(location.hash){
                    this.$tabs.each(function(i,a){
                        if(a.hash==location.hash){
                            o.selected=i;
                            if($.browser.msie||$.browser.opera){
                                var $toShow=$(location.hash),toShowId=$toShow.attr('id');
                                $toShow.attr('id','');
                                setTimeout(function(){
                                    $toShow.attr('id',toShowId);
                                },500);
                            }
                            scrollTo(0,0);
                            return false;
                        }
                    });
            }
            else if(o.cookie){
                var index=parseInt($.cookie('ui-tabs'+$.data(self.element)),10);
                if(index&&self.$tabs[index])
                    o.selected=index;
            }
            else if(self.$lis.filter('.'+o.selectedClass).length)
                o.selected=self.$lis.index(self.$lis.filter('.'+o.selectedClass)[0]);
        }
        o.selected=o.selected===null||o.selected!==undefined?o.selected:0;
        o.disabled=$.unique(o.disabled.concat($.map(this.$lis.filter('.'+o.disabledClass),function(n,i){
            return self.$lis.index(n);
        }))).sort();
        if($.inArray(o.selected,o.disabled)!=-1)
            o.disabled.splice($.inArray(o.selected,o.disabled),1);
        this.$panels.addClass(o.hideClass);
        this.$lis.removeClass(o.selectedClass);
        if(o.selected!==null){
            this.$panels.eq(o.selected).show().removeClass(o.hideClass);
            this.$lis.eq(o.selected).addClass(o.selectedClass);
            var onShow=function(){
                $(self.element).triggerHandler('tabsshow',[self.fakeEvent('tabsshow'),self.ui(self.$tabs[o.selected],self.$panels[o.selected])],o.show);
            };

            if($.data(this.$tabs[o.selected],'load.tabs'))
                this.load(o.selected,onShow);else
                onShow();
        }
        $(window).bind('unload',function(){
            self.$tabs.unbind('.tabs');
            self.$lis=self.$tabs=self.$panels=null;
        });
    }
    for(var i=0,li;li=this.$lis[i];i++)
        $(li)[$.inArray(i,o.disabled)!=-1&&!$(li).hasClass(o.selectedClass)?'addClass':'removeClass'](o.disabledClass);
    if(o.cache===false)
        this.$tabs.removeData('cache.tabs');
    var hideFx,showFx,baseFx={
        'min-width':0,
        duration:1
    },baseDuration='normal';
    if(o.fx&&o.fx.constructor==Array)
        hideFx=o.fx[0]||baseFx,showFx=o.fx[1]||baseFx;else
        hideFx=showFx=o.fx||baseFx;
    var resetCSS={
        display:'',
        overflow:'',
        height:''
    };

    if(!$.browser.msie)
        resetCSS.opacity='';
    function hideTab(clicked,$hide,$show){
        $hide.animate(hideFx,hideFx.duration||baseDuration,function(){
            $hide.addClass(o.hideClass).css(resetCSS);
            if($.browser.msie&&hideFx.opacity)
                $hide[0].style.filter='';
            if($show)
                showTab(clicked,$show,$hide);
        });
    }
    function showTab(clicked,$show,$hide){
        if(showFx===baseFx)
            $show.css('display','block');
        $show.animate(showFx,showFx.duration||baseDuration,function(){
            $show.removeClass(o.hideClass).css(resetCSS);
            if($.browser.msie&&showFx.opacity)
                $show[0].style.filter='';
            $(self.element).triggerHandler('tabsshow',[self.fakeEvent('tabsshow'),self.ui(clicked,$show[0])],o.show);
        });
    }
    function switchTab(clicked,$li,$hide,$show){
        $li.addClass(o.selectedClass).siblings().removeClass(o.selectedClass);
        hideTab(clicked,$hide,$show);
    }
    this.$tabs.unbind('.tabs').bind(o.event,function(){
        var $li=$(this).parents('li:eq(0)'),$hide=self.$panels.filter(':visible'),$show=$(this.hash);
        if(($li.hasClass(o.selectedClass)&&!o.unselect)||$li.hasClass(o.disabledClass)||$(this).hasClass(o.loadingClass)||$(self.element).triggerHandler('tabsselect',[self.fakeEvent('tabsselect'),self.ui(this,$show[0])],o.select)===false){
            this.blur();
            return false;
        }
        self.options.selected=self.$tabs.index(this);
        if(o.unselect){
            if($li.hasClass(o.selectedClass)){
                self.options.selected=null;
                $li.removeClass(o.selectedClass);
                self.$panels.stop();
                hideTab(this,$hide);
                this.blur();
                return false;
            }else if(!$hide.length){
                self.$panels.stop();
                var a=this;
                self.load(self.$tabs.index(this),function(){
                    $li.addClass(o.selectedClass).addClass(o.unselectClass);
                    showTab(a,$show);
                });
                this.blur();
                return false;
            }
        }
    if(o.cookie)
        $.cookie('ui-tabs'+$.data(self.element),self.options.selected,o.cookie);
    self.$panels.stop();
        if($show.length){
        var a=this;
        self.load(self.$tabs.index(this),$hide.length?function(){
            switchTab(a,$li,$hide,$show);
        }:function(){
            $li.addClass(o.selectedClass);
            showTab(a,$show);
        });
    }else
        throw'jQuery UI Tabs: Mismatching fragment identifier.';
    if($.browser.msie)
        this.blur();
    return false;
    });
if(!(/^click/).test(o.event))
    this.$tabs.bind('click.tabs',function(){
        return false;
    });
},
add:function(url,label,index){
    if(index==undefined)
        index=this.$tabs.length;
    var o=this.options;
    var $li=$(o.tabTemplate.replace(/#\{href\}/g,url).replace(/#\{label\}/g,label));
    $li.data('destroy.tabs',true);
    var id=url.indexOf('#')==0?url.replace('#',''):this.tabId($('a:first-child',$li)[0]);
    var $panel=$('#'+id);
    if(!$panel.length){
        $panel=$(o.panelTemplate).attr('id',id).addClass(o.hideClass).data('destroy.tabs',true);
    }
    $panel.addClass(o.panelClass);
    if(index>=this.$lis.length){
        $li.appendTo(this.element);
        $panel.appendTo(this.element[0].parentNode);
    }else{
        $li.insertBefore(this.$lis[index]);
        $panel.insertBefore(this.$panels[index]);
    }
    o.disabled=$.map(o.disabled,function(n,i){
        return n>=index?++n:n
        });
    this.tabify();
    if(this.$tabs.length==1){
        $li.addClass(o.selectedClass);
        $panel.removeClass(o.hideClass);
        var href=$.data(this.$tabs[0],'load.tabs');
        if(href)
            this.load(index,href);
    }
    this.element.triggerHandler('tabsadd',[this.fakeEvent('tabsadd'),this.ui(this.$tabs[index],this.$panels[index])],o.add);
},
remove:function(index){
    var o=this.options,$li=this.$lis.eq(index).remove(),$panel=this.$panels.eq(index).remove();
    if($li.hasClass(o.selectedClass)&&this.$tabs.length>1)
        this.select(index+(index+1<this.$tabs.length?1:-1));
    o.disabled=$.map($.grep(o.disabled,function(n,i){
        return n!=index;
    }),function(n,i){
        return n>=index?--n:n
        });
    this.tabify();
    this.element.triggerHandler('tabsremove',[this.fakeEvent('tabsremove'),this.ui($li.find('a')[0],$panel[0])],o.remove);
},
enable:function(index){
    var o=this.options;
    if($.inArray(index,o.disabled)==-1)
        return;
    var $li=this.$lis.eq(index).removeClass(o.disabledClass);
    if($.browser.safari){
        $li.css('display','inline-block');
        setTimeout(function(){
            $li.css('display','block');
        },0);
    }
    o.disabled=$.grep(o.disabled,function(n,i){
        return n!=index;
    });
    this.element.triggerHandler('tabsenable',[this.fakeEvent('tabsenable'),this.ui(this.$tabs[index],this.$panels[index])],o.enable);
},
disable:function(index){
    var self=this,o=this.options;
    if(index!=o.selected){
        this.$lis.eq(index).addClass(o.disabledClass);
        o.disabled.push(index);
        o.disabled.sort();
        this.element.triggerHandler('tabsdisable',[this.fakeEvent('tabsdisable'),this.ui(this.$tabs[index],this.$panels[index])],o.disable);
    }
},
select:function(index){
    if(typeof index=='string')
        index=this.$tabs.index(this.$tabs.filter('[href$='+index+']')[0]);
    this.$tabs.eq(index).trigger(this.options.event);
},
load:function(index,callback){
    var self=this,o=this.options,$a=this.$tabs.eq(index),a=$a[0],bypassCache=callback==undefined||callback===false,url=$a.data('load.tabs');
    callback=callback||function(){};

    if(!url||!bypassCache&&$.data(a,'cache.tabs')){
        callback();
        return;
    }
    var inner=function(parent){
        var $parent=$(parent),$inner=$parent.find('*:last');
        return $inner.length&&$inner.is(':not(img)')&&$inner||$parent;
    };

    var cleanup=function(){
        self.$tabs.filter('.'+o.loadingClass).removeClass(o.loadingClass).each(function(){
            if(o.spinner)
                inner(this).parent().html(inner(this).data('label.tabs'));
        });
        self.xhr=null;
    };

    if(o.spinner){
        var label=inner(a).html();
        inner(a).wrapInner('<em></em>').find('em').data('label.tabs',label).html(o.spinner);
    }
    var ajaxOptions=$.extend({},o.ajaxOptions,{
        url:url,
        success:function(r,s){
            $(a.hash).html(r);
            cleanup();
            if(o.cache)
                $.data(a,'cache.tabs',true);
            $(self.element).triggerHandler('tabsload',[self.fakeEvent('tabsload'),self.ui(self.$tabs[index],self.$panels[index])],o.load);
            o.ajaxOptions.success&&o.ajaxOptions.success(r,s);
            callback();
        }
    });
if(this.xhr){
    this.xhr.abort();
    cleanup();
}
$a.addClass(o.loadingClass);
setTimeout(function(){
    self.xhr=$.ajax(ajaxOptions);
},0);
},
url:function(index,url){
    this.$tabs.eq(index).removeData('cache.tabs').data('load.tabs',url);
},
destroy:function(){
    var o=this.options;
    this.element.unbind('.tabs').removeClass(o.navClass).removeData('tabs');
    this.$tabs.each(function(){
        var href=$.data(this,'href.tabs');
        if(href)
            this.href=href;
        var $this=$(this).unbind('.tabs');
        $.each(['href','load','cache'],function(i,prefix){
            $this.removeData(prefix+'.tabs');
        });
    });
    this.$lis.add(this.$panels).each(function(){
        if($.data(this,'destroy.tabs'))
            $(this).remove();else
            $(this).removeClass([o.selectedClass,o.unselectClass,o.disabledClass,o.panelClass,o.hideClass].join(' '));
    });
},
fakeEvent:function(type){
    return $.event.fix({
        type:type,
        target:this.element[0]
        });
}
});
$.ui.tabs.defaults={
    unselect:false,
    event:'click',
    disabled:[],
    cookie:null,
    spinner:'Loading&#8230;',
    cache:false,
    idPrefix:'ui-tabs-',
    ajaxOptions:{},
    fx:null,
    tabTemplate:'<li><a href="#{href}"><span>#{label}</span></a></li>',
    panelTemplate:'<div></div>',
    navClass:'ui-tabs-nav',
    selectedClass:'ui-tabs-selected',
    unselectClass:'ui-tabs-unselect',
    disabledClass:'ui-tabs-disabled',
    panelClass:'ui-tabs-panel',
    hideClass:'ui-tabs-hide',
    loadingClass:'ui-tabs-loading'
};

$.ui.tabs.getter="length";
$.extend($.ui.tabs.prototype,{
    rotation:null,
    rotate:function(ms,continuing){
        continuing=continuing||false;
        var self=this,t=this.options.selected;
        function start(){
            self.rotation=setInterval(function(){
                t=++t<self.$tabs.length?t:0;
                self.select(t);
            },ms);
        }
        function stop(e){
            if(!e||e.clientX){
                clearInterval(self.rotation);
            }
        }
    if(ms){
        start();
        if(!continuing)
            this.$tabs.bind(this.options.event,stop);else
            this.$tabs.bind(this.options.event,function(){
                stop();
                t=self.options.selected;
                start();
            });
    }
    else{
        stop();
        this.$tabs.unbind(this.options.event,stop);
    }
}
});
})(jQuery);
(function($){
    var PROP_NAME='datepicker';
    function Datepicker(){
        this.debug=false;
        this._curInst=null;
        this._disabledInputs=[];
        this._datepickerShowing=false;
        this._inDialog=false;
        this._mainDivId='ui-datepicker-div';
        this._appendClass='ui-datepicker-append';
        this._triggerClass='ui-datepicker-trigger';
        this._dialogClass='ui-datepicker-dialog';
        this._promptClass='ui-datepicker-prompt';
        this._unselectableClass='ui-datepicker-unselectable';
        this._currentClass='ui-datepicker-current-day';
        this.regional=[];
        this.regional['']={
            clearText:'Clear',
            clearStatus:'Erase the current date',
            closeText:'Close',
            closeStatus:'Close without change',
            prevText:'&#x3c;Prev',
            prevStatus:'Show the previous month',
            nextText:'Next&#x3e;',
            nextStatus:'Show the next month',
            currentText:'Today',
            currentStatus:'Show the current month',
            monthNames:['January','February','March','April','May','June','July','August','September','October','November','December'],
            monthNamesShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
            monthStatus:'Show a different month',
            yearStatus:'Show a different year',
            weekHeader:'Wk',
            weekStatus:'Week of the year',
            dayNames:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
            dayNamesShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],
            dayNamesMin:['Su','Mo','Tu','We','Th','Fr','Sa'],
            dayStatus:'Set DD as first week day',
            dateStatus:'Select DD, M d',
            dateFormat:'mm/dd/yy',
            firstDay:0,
            initStatus:'Select a date',
            isRTL:false
        };

        this._defaults={
            showOn:'focus',
            showAnim:'show',
            showOptions:{},
            defaultDate:null,
            appendText:'',
            buttonText:'...',
            buttonImage:'',
            buttonImageOnly:false,
            closeAtTop:true,
            mandatory:false,
            hideIfNoPrevNext:false,
            navigationAsDateFormat:false,
            gotoCurrent:false,
            changeMonth:true,
            changeYear:true,
            yearRange:'-10:+10',
            changeFirstDay:true,
            highlightWeek:false,
            showOtherMonths:false,
            showWeeks:false,
            calculateWeek:this.iso8601Week,
            shortYearCutoff:'+10',
            showStatus:false,
            statusForDate:this.dateStatus,
            minDate:null,
            maxDate:null,
            duration:'normal',
            beforeShowDay:null,
            beforeShow:null,
            onSelect:null,
            onChangeMonthYear:null,
            onClose:null,
            numberOfMonths:1,
            stepMonths:1,
            rangeSelect:false,
            rangeSeparator:' - ',
            altField:'',
            altFormat:''
        };

        $.extend(this._defaults,this.regional['']);
        this.dpDiv=$('<div id="'+this._mainDivId+'" style="display: none;"></div>');
    }
    $.extend(Datepicker.prototype,{
        markerClassName:'hasDatepicker',
        log:function(){
            if(this.debug)
                console.log.apply('',arguments);
        },
        setDefaults:function(settings){
            extendRemove(this._defaults,settings||{});
            return this;
        },
        _attachDatepicker:function(target,settings){
            var inlineSettings=null;
            for(attrName in this._defaults){
                var attrValue=target.getAttribute('date:'+attrName);
                if(attrValue){
                    inlineSettings=inlineSettings||{};

                    try{
                        inlineSettings[attrName]=eval(attrValue);
                    }catch(err){
                        inlineSettings[attrName]=attrValue;
                    }
                }
            }
    var nodeName=target.nodeName.toLowerCase();
        var inline=(nodeName=='div'||nodeName=='span');
        if(!target.id)
        target.id='dp'+new Date().getTime();
    var inst=this._newInst($(target),inline);
        inst.settings=$.extend({},settings||{},inlineSettings||{});
        if(nodeName=='input'){
        this._connectDatepicker(target,inst);
    }else if(inline){
        this._inlineDatepicker(target,inst);
    }
    },
_newInst:function(target,inline){
    return{
        id:target[0].id,
        input:target,
        selectedDay:0,
        selectedMonth:0,
        selectedYear:0,
        drawMonth:0,
        drawYear:0,
        inline:inline,
        dpDiv:(!inline?this.dpDiv:$('<div class="ui-datepicker-inline"></div>'))
        };

},
_connectDatepicker:function(target,inst){
    var input=$(target);
    if(input.hasClass(this.markerClassName))
        return;
    var appendText=this._get(inst,'appendText');
    var isRTL=this._get(inst,'isRTL');
    if(appendText)
        input[isRTL?'before':'after']('<span class="'+this._appendClass+'">'+appendText+'</span>');
    var showOn=this._get(inst,'showOn');
    if(showOn=='focus'||showOn=='both')
        input.focus(this._showDatepicker);
    if(showOn=='button'||showOn=='both'){
        var buttonText=this._get(inst,'buttonText');
        var buttonImage=this._get(inst,'buttonImage');
        var trigger=$(this._get(inst,'buttonImageOnly')?$('<img/>').addClass(this._triggerClass).attr({
            src:buttonImage,
            alt:buttonText,
            title:buttonText
        }):$('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage==''?buttonText:$('<img/>').attr({
            src:buttonImage,
            alt:buttonText,
            title:buttonText
        })));
        input[isRTL?'before':'after'](trigger);
        trigger.click(function(){
            if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target)
                $.datepicker._hideDatepicker();else
                $.datepicker._showDatepicker(target);
            return false;
        });
    }
    input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){
        inst.settings[key]=value;
    }).bind("getData.datepicker",function(event,key){
        return this._get(inst,key);
    });
    $.data(target,PROP_NAME,inst);
},
_inlineDatepicker:function(target,inst){
    var input=$(target);
    if(input.hasClass(this.markerClassName))
        return;
    input.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){
        inst.settings[key]=value;
    }).bind("getData.datepicker",function(event,key){
        return this._get(inst,key);
    });
    $.data(target,PROP_NAME,inst);
    this._setDate(inst,this._getDefaultDate(inst));
    this._updateDatepicker(inst);
},
_dialogDatepicker:function(input,dateText,onSelect,settings,pos){
    var inst=this._dialogInst;
    if(!inst){
        var id='dp'+new Date().getTime();
        this._dialogInput=$('<input type="text" id="'+id+'" size="1" style="position: absolute; top: -100px;"/>');
        this._dialogInput.keydown(this._doKeyDown);
        $('body').append(this._dialogInput);
        inst=this._dialogInst=this._newInst(this._dialogInput,false);
        inst.settings={};

        $.data(this._dialogInput[0],PROP_NAME,inst);
    }
    extendRemove(inst.settings,settings||{});
    this._dialogInput.val(dateText);
    this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);
    if(!this._pos){
        var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;
        var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;
        var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;
        var scrollY=document.documentElement.scrollTop||document.body.scrollTop;
        this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY];
    }
    this._dialogInput.css('left',this._pos[0]+'px').css('top',this._pos[1]+'px');
    inst.settings.onSelect=onSelect;
    this._inDialog=true;
    this.dpDiv.addClass(this._dialogClass);
    this._showDatepicker(this._dialogInput[0]);
    if($.blockUI)
        $.blockUI(this.dpDiv);
    $.data(this._dialogInput[0],PROP_NAME,inst);
    return this;
},
_destroyDatepicker:function(target){
    var nodeName=target.nodeName.toLowerCase();
    var $target=$(target);
    $.removeData(target,PROP_NAME);
    if(nodeName=='input'){
        $target.siblings('.'+this._appendClass).remove().end().siblings('.'+this._triggerClass).remove().end().removeClass(this.markerClassName).unbind('focus',this._showDatepicker).unbind('keydown',this._doKeyDown).unbind('keypress',this._doKeyPress);
    }else if(nodeName=='div'||nodeName=='span')
        $target.removeClass(this.markerClassName).empty();
},
_enableDatepicker:function(target){
    target.disabled=false;
    $(target).siblings('button.'+this._triggerClass).each(function(){
        this.disabled=false;
    }).end().siblings('img.'+this._triggerClass).css({
        opacity:'1.0',
        cursor:''
    });
    this._disabledInputs=$.map(this._disabledInputs,function(value){
        return(value==target?null:value);
    });
},
_disableDatepicker:function(target){
    target.disabled=true;
    $(target).siblings('button.'+this._triggerClass).each(function(){
        this.disabled=true;
    }).end().siblings('img.'+this._triggerClass).css({
        opacity:'0.5',
        cursor:'default'
    });
    this._disabledInputs=$.map(this._disabledInputs,function(value){
        return(value==target?null:value);
    });
    this._disabledInputs[this._disabledInputs.length]=target;
},
_isDisabledDatepicker:function(target){
    if(!target)
        return false;
    for(var i=0;i<this._disabledInputs.length;i++){
        if(this._disabledInputs[i]==target)
            return true;
    }
    return false;
},
_changeDatepicker:function(target,name,value){
    var settings=name||{};

    if(typeof name=='string'){
        settings={};

        settings[name]=value;
    }
    if(inst=$.data(target,PROP_NAME)){
        extendRemove(inst.settings,settings);
        this._updateDatepicker(inst);
    }
},
_setDateDatepicker:function(target,date,endDate){
    var inst=$.data(target,PROP_NAME);
    if(inst){
        this._setDate(inst,date,endDate);
        this._updateDatepicker(inst);
    }
},
_getDateDatepicker:function(target){
    var inst=$.data(target,PROP_NAME);
    if(inst)
        this._setDateFromField(inst);
    return(inst?this._getDate(inst):null);
},
_doKeyDown:function(e){
    var inst=$.data(e.target,PROP_NAME);
    var handled=true;
    if($.datepicker._datepickerShowing)
        switch(e.keyCode){
            case 9:
                $.datepicker._hideDatepicker(null,'');
                break;
            case 13:
                $.datepicker._selectDay(e.target,inst.selectedMonth,inst.selectedYear,$('td.ui-datepicker-days-cell-over',inst.dpDiv)[0]);
                return false;
                break;
            case 27:
                $.datepicker._hideDatepicker(null,$.datepicker._get(inst,'duration'));
                break;
            case 33:
                $.datepicker._adjustDate(e.target,(e.ctrlKey?-1:-$.datepicker._get(inst,'stepMonths')),(e.ctrlKey?'Y':'M'));
                break;
            case 34:
                $.datepicker._adjustDate(e.target,(e.ctrlKey?+1:+$.datepicker._get(inst,'stepMonths')),(e.ctrlKey?'Y':'M'));
                break;
            case 35:
                if(e.ctrlKey)$.datepicker._clearDate(e.target);
                break;
            case 36:
                if(e.ctrlKey)$.datepicker._gotoToday(e.target);
                break;
            case 37:
                if(e.ctrlKey)$.datepicker._adjustDate(e.target,-1,'D');
                break;
            case 38:
                if(e.ctrlKey)$.datepicker._adjustDate(e.target,-7,'D');
                break;
            case 39:
                if(e.ctrlKey)$.datepicker._adjustDate(e.target,+1,'D');
                break;
            case 40:
                if(e.ctrlKey)$.datepicker._adjustDate(e.target,+7,'D');
                break;
            default:
                handled=false;
        }
    else if(e.keyCode==36&&e.ctrlKey)
        $.datepicker._showDatepicker(this);else
        handled=false;
    if(handled){
        e.preventDefault();
        e.stopPropagation();
    }
},
_doKeyPress:function(e){
    var inst=$.data(e.target,PROP_NAME);
    var chars=$.datepicker._possibleChars($.datepicker._get(inst,'dateFormat'));
    var chr=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);
    return e.ctrlKey||(chr<' '||!chars||chars.indexOf(chr)>-1);
},
_showDatepicker:function(input){
    input=input.target||input;
    if(input.nodeName.toLowerCase()!='input')
        input=$('input',input.parentNode)[0];
    if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input)
        return;
    var inst=$.data(input,PROP_NAME);
    var beforeShow=$.datepicker._get(inst,'beforeShow');
    extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));
    $.datepicker._hideDatepicker(null,'');
    $.datepicker._lastInput=input;
    $.datepicker._setDateFromField(inst);
    if($.datepicker._inDialog)
        input.value='';
    if(!$.datepicker._pos){
        $.datepicker._pos=$.datepicker._findPos(input);
        $.datepicker._pos[1]+=input.offsetHeight;
    }
    var isFixed=false;
    $(input).parents().each(function(){
        isFixed|=$(this).css('position')=='fixed';
        return!isFixed;
    });
    if(isFixed&&$.browser.opera){
        $.datepicker._pos[0]-=document.documentElement.scrollLeft;
        $.datepicker._pos[1]-=document.documentElement.scrollTop;
    }
    var offset={
        left:$.datepicker._pos[0],
        top:$.datepicker._pos[1]
        };

    $.datepicker._pos=null;
    inst.rangeStart=null;
    inst.dpDiv.css({
        position:'absolute',
        display:'block',
        top:'-1000px'
    });
    $.datepicker._updateDatepicker(inst);
    inst.dpDiv.width($.datepicker._getNumberOfMonths(inst)[1]*$('.ui-datepicker',inst.dpDiv[0])[0].offsetWidth);
    offset=$.datepicker._checkOffset(inst,offset,isFixed);
    inst.dpDiv.css({
        position:($.datepicker._inDialog&&$.blockUI?'static':(isFixed?'fixed':'absolute')),
        display:'none',
        left:offset.left+'px',
        top:offset.top+'px'
        });
    if(!inst.inline){
        var showAnim=$.datepicker._get(inst,'showAnim')||'show';
        var duration=$.datepicker._get(inst,'duration');
        var postProcess=function(){
            $.datepicker._datepickerShowing=true;
            if($.browser.msie&&parseInt($.browser.version)<7)
                $('iframe.ui-datepicker-cover').css({
                    width:inst.dpDiv.width()+4,
                    height:inst.dpDiv.height()+4
                    });
        };

        if($.effects&&$.effects[showAnim])
            inst.dpDiv.show(showAnim,$.datepicker._get(inst,'showOptions'),duration,postProcess);else
            inst.dpDiv[showAnim](duration,postProcess);
        if(duration=='')
            postProcess();
        if(inst.input[0].type!='hidden')
            inst.input[0].focus();
        $.datepicker._curInst=inst;
    }
},
_updateDatepicker:function(inst){
    var dims={
        width:inst.dpDiv.width()+4,
        height:inst.dpDiv.height()+4
        };

    inst.dpDiv.empty().append(this._generateDatepicker(inst)).find('iframe.ui-datepicker-cover').css({
        width:dims.width,
        height:dims.height
        });
    var numMonths=this._getNumberOfMonths(inst);
    inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?'add':'remove')+'Class']('ui-datepicker-multi');
    inst.dpDiv[(this._get(inst,'isRTL')?'add':'remove')+'Class']('ui-datepicker-rtl');
    if(inst.input&&inst.input[0].type!='hidden')
        $(inst.input[0]).focus();
},
_checkOffset:function(inst,offset,isFixed){
    var pos=inst.input?this._findPos(inst.input[0]):null;
    var browserWidth=window.innerWidth||document.documentElement.clientWidth;
    var browserHeight=window.innerHeight||document.documentElement.clientHeight;
    var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;
    var scrollY=document.documentElement.scrollTop||document.body.scrollTop;
    if(this._get(inst,'isRTL')||(offset.left+inst.dpDiv.width()-scrollX)>browserWidth)
        offset.left=Math.max((isFixed?0:scrollX),pos[0]+(inst.input?inst.input.width():0)-(isFixed?scrollX:0)-inst.dpDiv.width()-
            (isFixed&&$.browser.opera?document.documentElement.scrollLeft:0));else
        offset.left-=(isFixed?scrollX:0);
    if((offset.top+inst.dpDiv.height()-scrollY)>browserHeight)
        offset.top=Math.max((isFixed?0:scrollY),pos[1]-(isFixed?scrollY:0)-(this._inDialog?0:inst.dpDiv.height())-
            (isFixed&&$.browser.opera?document.documentElement.scrollTop:0));else
        offset.top-=(isFixed?scrollY:0);
    return offset;
},
_findPos:function(obj){
    while(obj&&(obj.type=='hidden'||obj.nodeType!=1)){
        obj=obj.nextSibling;
    }
    var position=$(obj).offset();
    return[position.left,position.top];
},
_hideDatepicker:function(input,duration){
    var inst=this._curInst;
    if(!inst)
        return;
    var rangeSelect=this._get(inst,'rangeSelect');
    if(rangeSelect&&this._stayOpen)
        this._selectDate('#'+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));
    this._stayOpen=false;
    if(this._datepickerShowing){
        duration=(duration!=null?duration:this._get(inst,'duration'));
        var showAnim=this._get(inst,'showAnim');
        var postProcess=function(){
            $.datepicker._tidyDialog(inst);
        };

        if(duration!=''&&$.effects&&$.effects[showAnim])
            inst.dpDiv.hide(showAnim,$.datepicker._get(inst,'showOptions'),duration,postProcess);else
            inst.dpDiv[(duration==''?'hide':(showAnim=='slideDown'?'slideUp':(showAnim=='fadeIn'?'fadeOut':'hide')))](duration,postProcess);
        if(duration=='')
            this._tidyDialog(inst);
        var onClose=this._get(inst,'onClose');
        if(onClose)
            onClose.apply((inst.input?inst.input[0]:null),[this._getDate(inst),inst]);
        this._datepickerShowing=false;
        this._lastInput=null;
        inst.settings.prompt=null;
        if(this._inDialog){
            this._dialogInput.css({
                position:'absolute',
                left:'0',
                top:'-100px'
            });
            if($.blockUI){
                $.unblockUI();
                $('body').append(this.dpDiv);
            }
        }
    this._inDialog=false;
}
this._curInst=null;
},
_tidyDialog:function(inst){
    inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker');
    $('.'+this._promptClass,inst.dpDiv).remove();
},
_checkExternalClick:function(event){
    if(!$.datepicker._curInst)
        return;
    var $target=$(event.target);
    if(($target.parents('#'+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI))
        $.datepicker._hideDatepicker(null,'');
},
_adjustDate:function(id,offset,period){
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    this._adjustInstDate(inst,offset,period);
    this._updateDatepicker(inst);
},
_gotoToday:function(id){
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    if(this._get(inst,'gotoCurrent')&&inst.currentDay){
        inst.selectedDay=inst.currentDay;
        inst.drawMonth=inst.selectedMonth=inst.currentMonth;
        inst.drawYear=inst.selectedYear=inst.currentYear;
    }
    else{
        var date=new Date();
        inst.selectedDay=date.getDate();
        inst.drawMonth=inst.selectedMonth=date.getMonth();
        inst.drawYear=inst.selectedYear=date.getFullYear();
    }
    this._adjustDate(target);
    this._notifyChange(inst);
},
_selectMonthYear:function(id,select,period){
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    inst._selectingMonthYear=false;
    inst[period=='M'?'drawMonth':'drawYear']=select.options[select.selectedIndex].value-0;
    this._adjustDate(target);
    this._notifyChange(inst);
},
_clickMonthYear:function(id){
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    if(inst.input&&inst._selectingMonthYear&&!$.browser.msie)
        inst.input[0].focus();
    inst._selectingMonthYear=!inst._selectingMonthYear;
},
_changeFirstDay:function(id,day){
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    inst.settings.firstDay=day;
    this._updateDatepicker(inst);
},
_selectDay:function(id,month,year,td){
    if($(td).hasClass(this._unselectableClass))
        return;
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    var rangeSelect=this._get(inst,'rangeSelect');
    if(rangeSelect){
        this._stayOpen=!this._stayOpen;
        if(this._stayOpen){
            $('.ui-datepicker td').removeClass(this._currentClass);
            $(td).addClass(this._currentClass);
        }
    }
inst.selectedDay=inst.currentDay=$('a',td).html();
inst.selectedMonth=inst.currentMonth=month;
inst.selectedYear=inst.currentYear=year;
if(this._stayOpen){
    inst.endDay=inst.endMonth=inst.endYear=null;
}
else if(rangeSelect){
    inst.endDay=inst.currentDay;
    inst.endMonth=inst.currentMonth;
    inst.endYear=inst.currentYear;
}
this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));
if(this._stayOpen){
    inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));
    this._updateDatepicker(inst);
}
else if(rangeSelect){
    inst.selectedDay=inst.currentDay=inst.rangeStart.getDate();
    inst.selectedMonth=inst.currentMonth=inst.rangeStart.getMonth();
    inst.selectedYear=inst.currentYear=inst.rangeStart.getFullYear();
    inst.rangeStart=null;
    if(inst.inline)
        this._updateDatepicker(inst);
}
},
_clearDate:function(id){
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    if(this._get(inst,'mandatory'))
        return;
    this._stayOpen=false;
    inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;
    this._selectDate(target,'');
},
_selectDate:function(id,dateStr){
    var target=$(id);
    var inst=$.data(target[0],PROP_NAME);
    dateStr=(dateStr!=null?dateStr:this._formatDate(inst));
    if(this._get(inst,'rangeSelect')&&dateStr)
        dateStr=(inst.rangeStart?this._formatDate(inst,inst.rangeStart):dateStr)+this._get(inst,'rangeSeparator')+dateStr;
    if(inst.input)
        inst.input.val(dateStr);
    this._updateAlternate(inst);
    var onSelect=this._get(inst,'onSelect');
    if(onSelect)
        onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst]);
    else if(inst.input)
        inst.input.trigger('change');
    if(inst.inline)
        this._updateDatepicker(inst);
    else if(!this._stayOpen){
        this._hideDatepicker(null,this._get(inst,'duration'));
        this._lastInput=inst.input[0];
        if(typeof(inst.input[0])!='object')
            inst.input[0].focus();
        this._lastInput=null;
    }
},
_updateAlternate:function(inst){
    var altField=this._get(inst,'altField');
    if(altField){
        var altFormat=this._get(inst,'altFormat');
        var date=this._getDate(inst);
        dateStr=(isArray(date)?(!date[0]&&!date[1]?'':this.formatDate(altFormat,date[0],this._getFormatConfig(inst))+
            this._get(inst,'rangeSeparator')+this.formatDate(altFormat,date[1]||date[0],this._getFormatConfig(inst))):this.formatDate(altFormat,date,this._getFormatConfig(inst)));
        $(altField).each(function(){
            $(this).val(dateStr);
        });
    }
},
noWeekends:function(date){
    var day=date.getDay();
    return[(day>0&&day<6),''];
},
iso8601Week:function(date){
    var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());
    var firstMon=new Date(checkDate.getFullYear(),1-1,4);
    var firstDay=firstMon.getDay()||7;
    firstMon.setDate(firstMon.getDate()+1-firstDay);
    if(firstDay<4&&checkDate<firstMon){
        checkDate.setDate(checkDate.getDate()-3);
        return $.datepicker.iso8601Week(checkDate);
    }else if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){
        firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;
        if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){
            checkDate.setDate(checkDate.getDate()+3);
            return $.datepicker.iso8601Week(checkDate);
        }
    }
return Math.floor(((checkDate-firstMon)/86400000)/7)+1;
},
dateStatus:function(date,inst){
    return $.datepicker.formatDate($.datepicker._get(inst,'dateStatus'),date,$.datepicker._getFormatConfig(inst));
},
parseDate:function(format,value,settings){
    if(format==null||value==null)
        throw'Invalid arguments';
    value=(typeof value=='object'?value.toString():value+'');
    if(value=='')
        return null;
    var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;
    var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;
    var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;
    var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;
    var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;
    var year=-1;
    var month=-1;
    var day=-1;
    var literal=false;
    var lookAhead=function(match){
        var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);
        if(matches)
            iFormat++;
        return matches;
    };

    var getNumber=function(match){
        lookAhead(match);
        var origSize=(match=='@'?14:(match=='y'?4:2));
        var size=origSize;
        var num=0;
        while(size>0&&iValue<value.length&&value.charAt(iValue)>='0'&&value.charAt(iValue)<='9'){
            num=num*10+(value.charAt(iValue++)-0);
            size--;
        }
        if(size==origSize)
            throw'Missing number at position '+iValue;
        return num;
    };

    var getName=function(match,shortNames,longNames){
        var names=(lookAhead(match)?longNames:shortNames);
        var size=0;
        for(var j=0;j<names.length;j++)
            size=Math.max(size,names[j].length);
        var name='';
        var iInit=iValue;
        while(size>0&&iValue<value.length){
            name+=value.charAt(iValue++);
            for(var i=0;i<names.length;i++)
                if(name==names[i])
                    return i+1;size--;
        }
        throw'Unknown name at position '+iInit;
    };

    var checkLiteral=function(){
        if(value.charAt(iValue)!=format.charAt(iFormat))
            throw'Unexpected literal at position '+iValue;
        iValue++;
    };

    var iValue=0;
    for(var iFormat=0;iFormat<format.length;iFormat++){
        if(literal)
            if(format.charAt(iFormat)=="'"&&!lookAhead("'"))
                literal=false;else
                checkLiteral();else
            switch(format.charAt(iFormat)){
                case'd':
                    day=getNumber('d');
                    break;
                case'D':
                    getName('D',dayNamesShort,dayNames);
                    break;
                case'm':
                    month=getNumber('m');
                    break;
                case'M':
                    month=getName('M',monthNamesShort,monthNames);
                    break;
                case'y':
                    year=getNumber('y');
                    break;
                case'@':
                    var date=new Date(getNumber('@'));
                    year=date.getFullYear();
                    month=date.getMonth()+1;
                    day=date.getDate();
                    break;
                case"'":
                    if(lookAhead("'"))
                    checkLiteral();else
                    literal=true;
                break;
                default:
                    checkLiteral();
            }
        }
if(year<100)
    year+=new Date().getFullYear()-new Date().getFullYear()%100+
    (year<=shortYearCutoff?0:-100);
var date=this._daylightSavingAdjust(new Date(year,month-1,day));
if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day)
    throw'Invalid date';
return date;
},
ATOM:'yy-mm-dd',
COOKIE:'D, dd M yy',
ISO_8601:'yy-mm-dd',
RFC_822:'D, d M y',
RFC_850:'DD, dd-M-y',
RFC_1036:'D, d M y',
RFC_1123:'D, d M yy',
RFC_2822:'D, d M yy',
RSS:'D, d M y',
TIMESTAMP:'@',
W3C:'yy-mm-dd',
formatDate:function(format,date,settings){
    if(!date)
        return'';
    var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;
    var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;
    var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;
    var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;
    var lookAhead=function(match){
        var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);
        if(matches)
            iFormat++;
        return matches;
    };

    var formatNumber=function(match,value){
        return(lookAhead(match)&&value<10?'0':'')+value;
    };

    var formatName=function(match,value,shortNames,longNames){
        return(lookAhead(match)?longNames[value]:shortNames[value]);
    };

    var output='';
    var literal=false;
    if(date)
        for(var iFormat=0;iFormat<format.length;iFormat++){
            if(literal)
                if(format.charAt(iFormat)=="'"&&!lookAhead("'"))
                    literal=false;else
                    output+=format.charAt(iFormat);else
                switch(format.charAt(iFormat)){
                    case'd':
                        output+=formatNumber('d',date.getDate());
                        break;
                    case'D':
                        output+=formatName('D',date.getDay(),dayNamesShort,dayNames);
                        break;
                    case'm':
                        output+=formatNumber('m',date.getMonth()+1);
                        break;
                    case'M':
                        output+=formatName('M',date.getMonth(),monthNamesShort,monthNames);
                        break;
                    case'y':
                        output+=(lookAhead('y')?date.getFullYear():(date.getYear()%100<10?'0':'')+date.getYear()%100);
                        break;
                    case'@':
                        output+=date.getTime();
                        break;
                    case"'":
                        if(lookAhead("'"))
                        output+="'";else
                        literal=true;
                    break;
                    default:
                        output+=format.charAt(iFormat);
                }
            }
return output;
},
_possibleChars:function(format){
    var chars='';
    var literal=false;
    for(var iFormat=0;iFormat<format.length;iFormat++)
        if(literal)
            if(format.charAt(iFormat)=="'"&&!lookAhead("'"))
                literal=false;else
                chars+=format.charAt(iFormat);else
            switch(format.charAt(iFormat)){
                case'd':case'm':case'y':case'@':
                    chars+='0123456789';
                    break;
                case'D':case'M':
                    return null;
                case"'":
                    if(lookAhead("'"))
                    chars+="'";else
                    literal=true;
                break;
                default:
                    chars+=format.charAt(iFormat);
            }
    return chars;
},
_get:function(inst,name){
    return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name];
},
_setDateFromField:function(inst){
    var dateFormat=this._get(inst,'dateFormat');
    var dates=inst.input?inst.input.val().split(this._get(inst,'rangeSeparator')):null;
    inst.endDay=inst.endMonth=inst.endYear=null;
    var date=defaultDate=this._getDefaultDate(inst);
    if(dates.length>0){
        var settings=this._getFormatConfig(inst);
        if(dates.length>1){
            date=this.parseDate(dateFormat,dates[1],settings)||defaultDate;
            inst.endDay=date.getDate();
            inst.endMonth=date.getMonth();
            inst.endYear=date.getFullYear();
        }
        try{
            date=this.parseDate(dateFormat,dates[0],settings)||defaultDate;
        }catch(e){
            this.log(e);
            date=defaultDate;
        }
    }
inst.selectedDay=date.getDate();
inst.drawMonth=inst.selectedMonth=date.getMonth();
inst.drawYear=inst.selectedYear=date.getFullYear();
inst.currentDay=(dates[0]?date.getDate():0);
inst.currentMonth=(dates[0]?date.getMonth():0);
inst.currentYear=(dates[0]?date.getFullYear():0);
this._adjustInstDate(inst);
},
_getDefaultDate:function(inst){
    var date=this._determineDate(this._get(inst,'defaultDate'),new Date());
    var minDate=this._getMinMaxDate(inst,'min',true);
    var maxDate=this._getMinMaxDate(inst,'max');
    date=(minDate&&date<minDate?minDate:date);
    date=(maxDate&&date>maxDate?maxDate:date);
    return date;
},
_determineDate:function(date,defaultDate){
    var offsetNumeric=function(offset){
        var date=new Date();
        date.setDate(date.getDate()+offset);
        return date;
    };

    var offsetString=function(offset,getDaysInMonth){
        var date=new Date();
        var year=date.getFullYear();
        var month=date.getMonth();
        var day=date.getDate();
        var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
        var matches=pattern.exec(offset);
        while(matches){
            switch(matches[2]||'d'){
                case'd':case'D':
                    day+=(matches[1]-0);
                    break;
                case'w':case'W':
                    day+=(matches[1]*7);
                    break;
                case'm':case'M':
                    month+=(matches[1]-0);
                    day=Math.min(day,getDaysInMonth(year,month));
                    break;
                case'y':case'Y':
                    year+=(matches[1]-0);
                    day=Math.min(day,getDaysInMonth(year,month));
                    break;
            }
            matches=pattern.exec(offset);
        }
        return new Date(year,month,day);
    };

    date=(date==null?defaultDate:(typeof date=='string'?offsetString(date,this._getDaysInMonth):(typeof date=='number'?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));
    date=(date&&date.toString()=='Invalid Date'?defaultDate:date);
    if(date){
        date.setHours(0);
        date.setMinutes(0);
        date.setSeconds(0);
        date.setMilliseconds(0);
    }
    return this._daylightSavingAdjust(date);
},
_daylightSavingAdjust:function(date){
    if(!date)return null;
    date.setHours(date.getHours()>12?date.getHours()+2:0);
    return date;
},
_setDate:function(inst,date,endDate){
    var clear=!(date);
    date=this._determineDate(date,new Date());
    inst.selectedDay=inst.currentDay=date.getDate();
    inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();
    inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();
    if(this._get(inst,'rangeSelect')){
        if(endDate){
            endDate=this._determineDate(endDate,null);
            inst.endDay=endDate.getDate();
            inst.endMonth=endDate.getMonth();
            inst.endYear=endDate.getFullYear();
        }else{
            inst.endDay=inst.currentDay;
            inst.endMonth=inst.currentMonth;
            inst.endYear=inst.currentYear;
        }
    }
this._adjustInstDate(inst);
if(inst.input)
    inst.input.val(clear?'':this._formatDate(inst)+
        (!this._get(inst,'rangeSelect')?'':this._get(inst,'rangeSeparator')+
            this._formatDate(inst,inst.endDay,inst.endMonth,inst.endYear)));
},
_getDate:function(inst){
    var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=='')?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));
    if(this._get(inst,'rangeSelect')){
        return[inst.rangeStart||startDate,(!inst.endYear?inst.rangeStart||startDate:this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)))];
    }else
        return startDate;
},
_generateDatepicker:function(inst){
    var today=new Date();
    today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));
    var showStatus=this._get(inst,'showStatus');
    var isRTL=this._get(inst,'isRTL');
    var clear=(this._get(inst,'mandatory')?'':'<div class="ui-datepicker-clear"><a onclick="jQuery.datepicker._clearDate(\'#'+inst.id+'\');"'+
        (showStatus?this._addStatus(inst,this._get(inst,'clearStatus')||'&#xa0;'):'')+'>'+
        this._get(inst,'clearText')+'</a></div>');
    var controls='<div class="ui-datepicker-control">'+(isRTL?'':clear)+'<div class="ui-datepicker-close"><a onclick="jQuery.datepicker._hideDatepicker();"'+
    (showStatus?this._addStatus(inst,this._get(inst,'closeStatus')||'&#xa0;'):'')+'>'+
    this._get(inst,'closeText')+'</a></div>'+(isRTL?clear:'')+'</div>';
    var prompt=this._get(inst,'prompt');
    var closeAtTop=this._get(inst,'closeAtTop');
    var hideIfNoPrevNext=this._get(inst,'hideIfNoPrevNext');
    var navigationAsDateFormat=this._get(inst,'navigationAsDateFormat');
    var numMonths=this._getNumberOfMonths(inst);
    var stepMonths=this._get(inst,'stepMonths');
    var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);
    var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));
    var minDate=this._getMinMaxDate(inst,'min',true);
    var maxDate=this._getMinMaxDate(inst,'max');
    var drawMonth=inst.drawMonth;
    var drawYear=inst.drawYear;
    if(maxDate){
        var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));
        maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);
        while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){
            drawMonth--;
            if(drawMonth<0){
                drawMonth=11;
                drawYear--;
            }
        }
    }
var prevText=this._get(inst,'prevText');
prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));
var prev='<div class="ui-datepicker-prev">'+(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?'<a onclick="jQuery.datepicker._adjustDate(\'#'+inst.id+'\', -'+stepMonths+', \'M\');"'+
    (showStatus?this._addStatus(inst,this._get(inst,'prevStatus')||'&#xa0;'):'')+'>'+prevText+'</a>':(hideIfNoPrevNext?'':'<label>'+prevText+'</label>'))+'</div>';
var nextText=this._get(inst,'nextText');
nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));
var next='<div class="ui-datepicker-next">'+(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?'<a onclick="jQuery.datepicker._adjustDate(\'#'+inst.id+'\', +'+stepMonths+', \'M\');"'+
    (showStatus?this._addStatus(inst,this._get(inst,'nextStatus')||'&#xa0;'):'')+'>'+nextText+'</a>':(hideIfNoPrevNext?'':'<label>'+nextText+'</label>'))+'</div>';
var currentText=this._get(inst,'currentText');
currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,today,this._getFormatConfig(inst)));
var html=(prompt?'<div class="'+this._promptClass+'">'+prompt+'</div>':'')+
(closeAtTop&&!inst.inline?controls:'')+'<div class="ui-datepicker-links">'+(isRTL?next:prev)+
(this._isInRange(inst,(this._get(inst,'gotoCurrent')&&inst.currentDay?currentDate:today))?'<div class="ui-datepicker-current">'+'<a onclick="jQuery.datepicker._gotoToday(\'#'+inst.id+'\');"'+
    (showStatus?this._addStatus(inst,this._get(inst,'currentStatus')||'&#xa0;'):'')+'>'+
    currentText+'</a></div>':'')+(isRTL?prev:next)+'</div>';
var firstDay=this._get(inst,'firstDay');
var changeFirstDay=this._get(inst,'changeFirstDay');
var dayNames=this._get(inst,'dayNames');
var dayNamesShort=this._get(inst,'dayNamesShort');
var dayNamesMin=this._get(inst,'dayNamesMin');
var monthNames=this._get(inst,'monthNames');
var beforeShowDay=this._get(inst,'beforeShowDay');
var highlightWeek=this._get(inst,'highlightWeek');
var showOtherMonths=this._get(inst,'showOtherMonths');
var showWeeks=this._get(inst,'showWeeks');
var calculateWeek=this._get(inst,'calculateWeek')||this.iso8601Week;
var status=(showStatus?this._get(inst,'dayStatus')||'&#xa0;':'');
var dateStatus=this._get(inst,'statusForDate')||this.dateStatus;
var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;
for(var row=0;row<numMonths[0];row++)
    for(var col=0;col<numMonths[1];col++){
        var selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay));
        html+='<div class="ui-datepicker-one-month'+(col==0?' ui-datepicker-new-row':'')+'">'+
        this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,showStatus,monthNames)+'<table class="ui-datepicker" cellpadding="0" cellspacing="0"><thead>'+'<tr class="ui-datepicker-title-row">'+
        (showWeeks?'<td>'+this._get(inst,'weekHeader')+'</td>':'');
        for(var dow=0;dow<7;dow++){
            var day=(dow+firstDay)%7;
            var dayStatus=(status.indexOf('DD')>-1?status.replace(/DD/,dayNames[day]):status.replace(/D/,dayNamesShort[day]));
            html+='<td'+((dow+firstDay+6)%7>=5?' class="ui-datepicker-week-end-cell"':'')+'>'+
            (!changeFirstDay?'<span':'<a onclick="jQuery.datepicker._changeFirstDay(\'#'+inst.id+'\', '+day+');"')+
            (showStatus?this._addStatus(inst,dayStatus):'')+' title="'+dayNames[day]+'">'+
            dayNamesMin[day]+(changeFirstDay?'</a>':'</span>')+'</td>';
        }
        html+='</tr></thead><tbody>';
        var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);
        if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth)
            inst.selectedDay=Math.min(inst.selectedDay,daysInMonth);
        var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;
        var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));
        var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));
        for(var dRow=0;dRow<numRows;dRow++){
            html+='<tr class="ui-datepicker-days-row">'+
            (showWeeks?'<td class="ui-datepicker-week-col">'+calculateWeek(printDate)+'</td>':'');
            for(var dow=0;dow<7;dow++){
                var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,'']);
                var otherMonth=(printDate.getMonth()!=drawMonth);
                var unselectable=otherMonth||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);
                html+='<td class="ui-datepicker-days-cell'+
                ((dow+firstDay+6)%7>=5?' ui-datepicker-week-end-cell':'')+
                (otherMonth?' ui-datepicker-otherMonth':'')+
                (printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth?' ui-datepicker-days-cell-over':'')+
                (unselectable?' '+this._unselectableClass:'')+
                (otherMonth&&!showOtherMonths?'':' '+daySettings[1]+
                    (printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?' '+this._currentClass:'')+
                    (printDate.getTime()==today.getTime()?' ui-datepicker-today':''))+'"'+
                ((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':'')+
                (unselectable?(highlightWeek?' onmouseover="jQuery(this).parent().addClass(\'ui-datepicker-week-over\');"'+' onmouseout="jQuery(this).parent().removeClass(\'ui-datepicker-week-over\');"':''):' onmouseover="jQuery(this).addClass(\'ui-datepicker-days-cell-over\')'+
                    (highlightWeek?'.parent().addClass(\'ui-datepicker-week-over\')':'')+';'+
                    (!showStatus||(otherMonth&&!showOtherMonths)?'':'jQuery(\'#ui-datepicker-status-'+
                        inst.id+'\').html(\''+(dateStatus.apply((inst.input?inst.input[0]:null),[printDate,inst])||'&#xa0;')+'\');')+'"'+' onmouseout="jQuery(this).removeClass(\'ui-datepicker-days-cell-over\')'+
                    (highlightWeek?'.parent().removeClass(\'ui-datepicker-week-over\')':'')+';'+
                    (!showStatus||(otherMonth&&!showOtherMonths)?'':'jQuery(\'#ui-datepicker-status-'+
                        inst.id+'\').html(\'&#xa0;\');')+'" onclick="jQuery.datepicker._selectDay(\'#'+
                    inst.id+'\','+drawMonth+','+drawYear+', this);"')+'>'+
                (otherMonth?(showOtherMonths?printDate.getDate():'&#xa0;'):(unselectable?printDate.getDate():'<a>'+printDate.getDate()+'</a>'))+'</td>';
                printDate.setDate(printDate.getDate()+1);
                printDate=this._daylightSavingAdjust(printDate);
            }
            html+='</tr>';
        }
        drawMonth++;
        if(drawMonth>11){
            drawMonth=0;
            drawYear++;
        }
        html+='</tbody></table></div>';
    }
html+=(showStatus?'<div style="clear: both;"></div><div id="ui-datepicker-status-'+inst.id+'" class="ui-datepicker-status">'+(this._get(inst,'initStatus')||'&#xa0;')+'</div>':'')+
(!closeAtTop&&!inst.inline?controls:'')+'<div style="clear: both;"></div>'+
($.browser.msie&&parseInt($.browser.version)<7&&!inst.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover"></iframe>':'');
return html;
},
_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,showStatus,monthNames){
    minDate=(inst.rangeStart&&minDate&&selectedDate<minDate?selectedDate:minDate);
    var html='<div class="ui-datepicker-header">';
    if(secondary||!this._get(inst,'changeMonth'))
        html+=monthNames[drawMonth]+'&#xa0;';
    else{
        var inMinYear=(minDate&&minDate.getFullYear()==drawYear);
        var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);
        html+='<select class="ui-datepicker-new-month" '+'onchange="jQuery.datepicker._selectMonthYear(\'#'+inst.id+'\', this, \'M\');" '+'onclick="jQuery.datepicker._clickMonthYear(\'#'+inst.id+'\');"'+
        (showStatus?this._addStatus(inst,this._get(inst,'monthStatus')||'&#xa0;'):'')+'>';
        for(var month=0;month<12;month++){
            if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth()))
                html+='<option value="'+month+'"'+
                (month==drawMonth?' selected="selected"':'')+'>'+monthNames[month]+'</option>';
        }
        html+='</select>';
    }
    if(secondary||!this._get(inst,'changeYear'))
        html+=drawYear;
    else{
        var years=this._get(inst,'yearRange').split(':');
        var year=0;
        var endYear=0;
        if(years.length!=2){
            year=drawYear-10;
            endYear=drawYear+10;
        }else if(years[0].charAt(0)=='+'||years[0].charAt(0)=='-'){
            year=endYear=new Date().getFullYear();
            year+=parseInt(years[0],10);
            endYear+=parseInt(years[1],10);
        }else{
            year=parseInt(years[0],10);
            endYear=parseInt(years[1],10);
        }
        year=(minDate?Math.max(year,minDate.getFullYear()):year);
        endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);
        html+='<select class="ui-datepicker-new-year" '+'onchange="jQuery.datepicker._selectMonthYear(\'#'+inst.id+'\', this, \'Y\');" '+'onclick="jQuery.datepicker._clickMonthYear(\'#'+inst.id+'\');"'+
        (showStatus?this._addStatus(inst,this._get(inst,'yearStatus')||'&#xa0;'):'')+'>';
        for(;year<=endYear;year++){
            html+='<option value="'+year+'"'+
            (year==drawYear?' selected="selected"':'')+'>'+year+'</option>';
        }
        html+='</select>';
    }
    html+='</div>';
    return html;
},
_addStatus:function(inst,text){
    return' onmouseover="jQuery(\'#ui-datepicker-status-'+inst.id+'\').html(\''+text+'\');" '+'onmouseout="jQuery(\'#ui-datepicker-status-'+inst.id+'\').html(\'&#xa0;\');"';
},
_adjustInstDate:function(inst,offset,period){
    var year=inst.drawYear+(period=='Y'?offset:0);
    var month=inst.drawMonth+(period=='M'?offset:0);
    var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+
    (period=='D'?offset:0);
    var date=this._daylightSavingAdjust(new Date(year,month,day));
    var minDate=this._getMinMaxDate(inst,'min',true);
    var maxDate=this._getMinMaxDate(inst,'max');
    date=(minDate&&date<minDate?minDate:date);
    date=(maxDate&&date>maxDate?maxDate:date);
    inst.selectedDay=date.getDate();
    inst.drawMonth=inst.selectedMonth=date.getMonth();
    inst.drawYear=inst.selectedYear=date.getFullYear();
    if(period=='M'||period=='Y')
        this._notifyChange(inst);
},
_notifyChange:function(inst){
    var onChange=this._get(inst,'onChangeMonthYear');
    if(onChange)
        onChange.apply((inst.input?inst.input[0]:null),[new Date(inst.selectedYear,inst.selectedMonth,1),inst]);
},
_getNumberOfMonths:function(inst){
    var numMonths=this._get(inst,'numberOfMonths');
    return(numMonths==null?[1,1]:(typeof numMonths=='number'?[1,numMonths]:numMonths));
},
_getMinMaxDate:function(inst,minMax,checkRange){
    var date=this._determineDate(this._get(inst,minMax+'Date'),null);
    return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date));
},
_getDaysInMonth:function(year,month){
    return 32-new Date(year,month,32).getDate();
},
_getFirstDayOfMonth:function(year,month){
    return new Date(year,month,1).getDay();
},
_canAdjustMonth:function(inst,offset,curYear,curMonth){
    var numMonths=this._getNumberOfMonths(inst);
    var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));
    if(offset<0)
        date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()));
    return this._isInRange(inst,date);
},
_isInRange:function(inst,date){
    var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));
    newMinDate=(newMinDate&&inst.rangeStart<newMinDate?inst.rangeStart:newMinDate);
    var minDate=newMinDate||this._getMinMaxDate(inst,'min');
    var maxDate=this._getMinMaxDate(inst,'max');
    return((!minDate||date>=minDate)&&(!maxDate||date<=maxDate));
},
_getFormatConfig:function(inst){
    var shortYearCutoff=this._get(inst,'shortYearCutoff');
    shortYearCutoff=(typeof shortYearCutoff!='string'?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));
    return{
        shortYearCutoff:shortYearCutoff,
        dayNamesShort:this._get(inst,'dayNamesShort'),
        dayNames:this._get(inst,'dayNames'),
        monthNamesShort:this._get(inst,'monthNamesShort'),
        monthNames:this._get(inst,'monthNames')
        };

},
_formatDate:function(inst,day,month,year){
    if(!day){
        inst.currentDay=inst.selectedDay;
        inst.currentMonth=inst.selectedMonth;
        inst.currentYear=inst.selectedYear;
    }
    var date=(day?(typeof day=='object'?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));
    return this.formatDate(this._get(inst,'dateFormat'),date,this._getFormatConfig(inst));
}
});
function extendRemove(target,props){
    $.extend(target,props);
    for(var name in props)
        if(props[name]==null||props[name]==undefined)
            target[name]=props[name];return target;
};

function isArray(a){
    return(a&&(($.browser.safari&&typeof a=='object'&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))));
};

$.fn.datepicker=function(options){
    var otherArgs=Array.prototype.slice.call(arguments,1);
    if(typeof options=='string'&&(options=='isDisabled'||options=='getDate'))
        return $.datepicker['_'+options+'Datepicker'].apply($.datepicker,[this[0]].concat(otherArgs));
    return this.each(function(){
        typeof options=='string'?$.datepicker['_'+options+'Datepicker'].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options);
    });
};

$.datepicker=new Datepicker();
$(document).ready(function(){
    $(document.body).append($.datepicker.dpDiv).mousedown($.datepicker._checkExternalClick);
});
})(jQuery);
;
(function($){
    $.effects=$.effects||{};

    $.extend($.effects,{
        save:function(el,set){
            for(var i=0;i<set.length;i++){
                if(set[i]!==null)$.data(el[0],"ec.storage."+set[i],el[0].style[set[i]]);
            }
            },
    restore:function(el,set){
        for(var i=0;i<set.length;i++){
            if(set[i]!==null)el.css(set[i],$.data(el[0],"ec.storage."+set[i]));
        }
        },
    setMode:function(el,mode){
        if(mode=='toggle')mode=el.is(':hidden')?'show':'hide';
        return mode;
    },
    getBaseline:function(origin,original){
        var y,x;
        switch(origin[0]){
            case'top':
                y=0;
                break;
            case'middle':
                y=0.5;
                break;
            case'bottom':
                y=1;
                break;
            default:
                y=origin[0]/original.height;
        };

        switch(origin[1]){
            case'left':
                x=0;
                break;
            case'center':
                x=0.5;
                break;
            case'right':
                x=1;
                break;
            default:
                x=origin[1]/original.width;
        };

        return{
            x:x,
            y:y
        };

},
createWrapper:function(el){
    if(el.parent().attr('id')=='fxWrapper')
        return el;
    var props={
        width:el.outerWidth({
            margin:true
        }),
        height:el.outerHeight({
            margin:true
        }),
        'float':el.css('float')
        };

    el.wrap('<div id="fxWrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');
    var wrapper=el.parent();
    if(el.css('position')=='static'){
        wrapper.css({
            position:'relative'
        });
        el.css({
            position:'relative'
        });
    }else{
        var top=el.css('top');
        if(isNaN(parseInt(top)))top='auto';
        var left=el.css('left');
        if(isNaN(parseInt(left)))left='auto';
        wrapper.css({
            position:el.css('position'),
            top:top,
            left:left,
            zIndex:el.css('z-index')
            }).show();
        el.css({
            position:'relative',
            top:0,
            left:0
        });
    }
    wrapper.css(props);
    return wrapper;
},
removeWrapper:function(el){
    if(el.parent().attr('id')=='fxWrapper')
        return el.parent().replaceWith(el);
    return el;
},
setTransition:function(el,list,factor,val){
    val=val||{};

    $.each(list,function(i,x){
        unit=el.cssUnit(x);
        if(unit[0]>0)val[x]=unit[0]*factor+unit[1];
    });
    return val;
},
animateClass:function(value,duration,easing,callback){
    var cb=(typeof easing=="function"?easing:(callback?callback:null));
    var ea=(typeof easing=="object"?easing:null);
    return this.each(function(){
        var offset={};

        var that=$(this);
        var oldStyleAttr=that.attr("style")||'';
        if(typeof oldStyleAttr=='object')oldStyleAttr=oldStyleAttr["cssText"];
        if(value.toggle){
            that.hasClass(value.toggle)?value.remove=value.toggle:value.add=value.toggle;
        }
        var oldStyle=$.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));
        if(value.add)that.addClass(value.add);
        if(value.remove)that.removeClass(value.remove);
        var newStyle=$.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));
        if(value.add)that.removeClass(value.add);
        if(value.remove)that.addClass(value.remove);
        for(var n in newStyle){
            if(typeof newStyle[n]!="function"&&newStyle[n]&&n.indexOf("Moz")==-1&&n.indexOf("length")==-1&&newStyle[n]!=oldStyle[n]&&(n.match(/color/i)||(!n.match(/color/i)&&!isNaN(parseInt(newStyle[n],10))))&&(oldStyle.position!="static"||(oldStyle.position=="static"&&!n.match(/left|top|bottom|right/))))offset[n]=newStyle[n];
        }
        that.animate(offset,duration,ea,function(){
            if(typeof $(this).attr("style")=='object'){
                $(this).attr("style")["cssText"]="";
                $(this).attr("style")["cssText"]=oldStyleAttr;
            }else $(this).attr("style",oldStyleAttr);
            if(value.add)$(this).addClass(value.add);
            if(value.remove)$(this).removeClass(value.remove);
            if(cb)cb.apply(this,arguments);
        });
    });
}
});
$.fn.extend({
    _show:$.fn.show,
    _hide:$.fn.hide,
    __toggle:$.fn.toggle,
    _addClass:$.fn.addClass,
    _removeClass:$.fn.removeClass,
    _toggleClass:$.fn.toggleClass,
    effect:function(fx,o,speed,callback){
        return $.effects[fx]?$.effects[fx].call(this,{
            method:fx,
            options:o||{},
            duration:speed,
            callback:callback
        }):null;
    },
    show:function(){
        if(!arguments[0]||(arguments[0].constructor==Number||/(slow|normal|fast)/.test(arguments[0])))
            return this._show.apply(this,arguments);
        else{
            var o=arguments[1]||{};

            o['mode']='show';
            return this.effect.apply(this,[arguments[0],o,arguments[2]||o.duration,arguments[3]||o.callback]);
        }
    },
hide:function(){
    if(!arguments[0]||(arguments[0].constructor==Number||/(slow|normal|fast)/.test(arguments[0])))
        return this._hide.apply(this,arguments);
    else{
        var o=arguments[1]||{};

        o['mode']='hide';
        return this.effect.apply(this,[arguments[0],o,arguments[2]||o.duration,arguments[3]||o.callback]);
    }
},
toggle:function(){
    if(!arguments[0]||(arguments[0].constructor==Number||/(slow|normal|fast)/.test(arguments[0]))||(arguments[0].constructor==Function))
        return this.__toggle.apply(this,arguments);
    else{
        var o=arguments[1]||{};

        o['mode']='toggle';
        return this.effect.apply(this,[arguments[0],o,arguments[2]||o.duration,arguments[3]||o.callback]);
    }
},
addClass:function(classNames,speed,easing,callback){
    return speed?$.effects.animateClass.apply(this,[{
        add:classNames
    },speed,easing,callback]):this._addClass(classNames);
},
removeClass:function(classNames,speed,easing,callback){
    return speed?$.effects.animateClass.apply(this,[{
        remove:classNames
    },speed,easing,callback]):this._removeClass(classNames);
},
toggleClass:function(classNames,speed,easing,callback){
    return speed?$.effects.animateClass.apply(this,[{
        toggle:classNames
    },speed,easing,callback]):this._toggleClass(classNames);
},
morph:function(remove,add,speed,easing,callback){
    return $.effects.animateClass.apply(this,[{
        add:add,
        remove:remove
    },speed,easing,callback]);
},
switchClass:function(){
    return this.morph.apply(this,arguments);
},
cssUnit:function(key){
    var style=this.css(key),val=[];
    $.each(['em','px','%','pt'],function(i,unit){
        if(style.indexOf(unit)>0)
            val=[parseFloat(style),unit];
    });
    return val;
}
});
jQuery.each(['backgroundColor','borderBottomColor','borderLeftColor','borderRightColor','borderTopColor','color','outlineColor'],function(i,attr){
    jQuery.fx.step[attr]=function(fx){
        if(fx.state==0){
            fx.start=getColor(fx.elem,attr);
            fx.end=getRGB(fx.end);
        }
        fx.elem.style[attr]="rgb("+[Math.max(Math.min(parseInt((fx.pos*(fx.end[0]-fx.start[0]))+fx.start[0]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[1]-fx.start[1]))+fx.start[1]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[2]-fx.start[2]))+fx.start[2]),255),0)].join(",")+")";
    }
});
function getRGB(color){
    var result;
    if(color&&color.constructor==Array&&color.length==3)
        return color;
    if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
        return[parseInt(result[1]),parseInt(result[2]),parseInt(result[3])];
    if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
        return[parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55];
    if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
        return[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16)];
    if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
        return[parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16)];
    if(result=/rgba\(0, 0, 0, 0\)/.exec(color))
        return colors['transparent']
    return colors[jQuery.trim(color).toLowerCase()];
}
function getColor(elem,attr){
    var color;
    do{
        color=jQuery.curCSS(elem,attr);
        if(color!=''&&color!='transparent'||jQuery.nodeName(elem,"body"))
            break;
        attr="backgroundColor";
    }while(elem=elem.parentNode);
    return getRGB(color);
};

var colors={
    aqua:[0,255,255],
    azure:[240,255,255],
    beige:[245,245,220],
    black:[0,0,0],
    blue:[0,0,255],
    brown:[165,42,42],
    cyan:[0,255,255],
    darkblue:[0,0,139],
    darkcyan:[0,139,139],
    darkgrey:[169,169,169],
    darkgreen:[0,100,0],
    darkkhaki:[189,183,107],
    darkmagenta:[139,0,139],
    darkolivegreen:[85,107,47],
    darkorange:[255,140,0],
    darkorchid:[153,50,204],
    darkred:[139,0,0],
    darksalmon:[233,150,122],
    darkviolet:[148,0,211],
    fuchsia:[255,0,255],
    gold:[255,215,0],
    green:[0,128,0],
    indigo:[75,0,130],
    khaki:[240,230,140],
    lightblue:[173,216,230],
    lightcyan:[224,255,255],
    lightgreen:[144,238,144],
    lightgrey:[211,211,211],
    lightpink:[255,182,193],
    lightyellow:[255,255,224],
    lime:[0,255,0],
    magenta:[255,0,255],
    maroon:[128,0,0],
    navy:[0,0,128],
    olive:[128,128,0],
    orange:[255,165,0],
    pink:[255,192,203],
    purple:[128,0,128],
    violet:[128,0,128],
    red:[255,0,0],
    silver:[192,192,192],
    white:[255,255,255],
    yellow:[255,255,0],
    transparent:[255,255,255]
    };

jQuery.easing['jswing']=jQuery.easing['swing'];
jQuery.extend(jQuery.easing,{
    def:'easeOutQuad',
    swing:function(x,t,b,c,d){
        return jQuery.easing[jQuery.easing.def](x,t,b,c,d);
    },
    easeInQuad:function(x,t,b,c,d){
        return c*(t/=d)*t+b;
    },
    easeOutQuad:function(x,t,b,c,d){
        return-c*(t/=d)*(t-2)+b;
    },
    easeInOutQuad:function(x,t,b,c,d){
        if((t/=d/2)<1)return c/2*t*t+b;
        return-c/2*((--t)*(t-2)-1)+b;
    },
    easeInCubic:function(x,t,b,c,d){
        return c*(t/=d)*t*t+b;
    },
    easeOutCubic:function(x,t,b,c,d){
        return c*((t=t/d-1)*t*t+1)+b;
    },
    easeInOutCubic:function(x,t,b,c,d){
        if((t/=d/2)<1)return c/2*t*t*t+b;
        return c/2*((t-=2)*t*t+2)+b;
    },
    easeInQuart:function(x,t,b,c,d){
        return c*(t/=d)*t*t*t+b;
    },
    easeOutQuart:function(x,t,b,c,d){
        return-c*((t=t/d-1)*t*t*t-1)+b;
    },
    easeInOutQuart:function(x,t,b,c,d){
        if((t/=d/2)<1)return c/2*t*t*t*t+b;
        return-c/2*((t-=2)*t*t*t-2)+b;
    },
    easeInQuint:function(x,t,b,c,d){
        return c*(t/=d)*t*t*t*t+b;
    },
    easeOutQuint:function(x,t,b,c,d){
        return c*((t=t/d-1)*t*t*t*t+1)+b;
    },
    easeInOutQuint:function(x,t,b,c,d){
        if((t/=d/2)<1)return c/2*t*t*t*t*t+b;
        return c/2*((t-=2)*t*t*t*t+2)+b;
    },
    easeInSine:function(x,t,b,c,d){
        return-c*Math.cos(t/d*(Math.PI/2))+c+b;
    },
    easeOutSine:function(x,t,b,c,d){
        return c*Math.sin(t/d*(Math.PI/2))+b;
    },
    easeInOutSine:function(x,t,b,c,d){
        return-c/2*(Math.cos(Math.PI*t/d)-1)+b;
    },
    easeInExpo:function(x,t,b,c,d){
        return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;
    },
    easeOutExpo:function(x,t,b,c,d){
        return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;
    },
    easeInOutExpo:function(x,t,b,c,d){
        if(t==0)return b;
        if(t==d)return b+c;
        if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;
        return c/2*(-Math.pow(2,-10*--t)+2)+b;
    },
    easeInCirc:function(x,t,b,c,d){
        return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;
    },
    easeOutCirc:function(x,t,b,c,d){
        return c*Math.sqrt(1-(t=t/d-1)*t)+b;
    },
    easeInOutCirc:function(x,t,b,c,d){
        if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;
        return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;
    },
    easeInElastic: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;
    },
    easeOutElastic: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;
    },
    easeInOutElastic: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;
    },
    easeInBack:function(x,t,b,c,d,s){
        if(s==undefined)s=1.70158;
        return c*(t/=d)*t*((s+1)*t-s)+b;
    },
    easeOutBack:function(x,t,b,c,d,s){
        if(s==undefined)s=1.70158;
        return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;
    },
    easeInOutBack:function(x,t,b,c,d,s){
        if(s==undefined)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;
    },
    easeInBounce:function(x,t,b,c,d){
        return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b;
    },
    easeOutBounce: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;
        }
    },
easeInOutBounce:function(x,t,b,c,d){
    if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;
    return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b;
}
});
})(jQuery);
(function($){
    $.effects.blind=function(o){
        return this.queue(function(){
            var el=$(this),props=['position','top','left'];
            var mode=$.effects.setMode(el,o.options.mode||'hide');
            var direction=o.options.direction||'vertical';
            $.effects.save(el,props);
            el.show();
            var wrapper=$.effects.createWrapper(el).css({
                overflow:'hidden'
            });
            var ref=(direction=='vertical')?'height':'width';
            var distance=(direction=='vertical')?wrapper.height():wrapper.width();
            if(mode=='show')wrapper.css(ref,0);
            var animation={};

            animation[ref]=mode=='show'?distance:0;
            wrapper.animate(animation,o.duration,o.options.easing,function(){
                if(mode=='hide')el.hide();
                $.effects.restore(el,props);
                $.effects.removeWrapper(el);
                if(o.callback)o.callback.apply(el[0],arguments);
                el.dequeue();
            });
        });
    };

})(jQuery);
(function($){
    $.effects.bounce=function(o){
        return this.queue(function(){
            var el=$(this),props=['position','top','left'];
            var mode=$.effects.setMode(el,o.options.mode||'effect');
            var direction=o.options.direction||'up';
            var distance=o.options.distance||20;
            var times=o.options.times||5;
            var speed=o.duration||250;
            if(/show|hide/.test(mode))props.push('opacity');
            $.effects.save(el,props);
            el.show();
            $.effects.createWrapper(el);
            var ref=(direction=='up'||direction=='down')?'top':'left';
            var motion=(direction=='up'||direction=='left')?'pos':'neg';
            var distance=o.options.distance||(ref=='top'?el.outerHeight({
                margin:true
            })/3:el.outerWidth({
                margin:true
            })/3);
            if(mode=='show')el.css('opacity',0).css(ref,motion=='pos'?-distance:distance);
            if(mode=='hide')distance=distance/(times*2);
            if(mode!='hide')times--;
            if(mode=='show'){
                var animation={
                    opacity:1
                };

                animation[ref]=(motion=='pos'?'+=':'-=')+distance;
                el.animate(animation,speed/2,o.options.easing);
                distance=distance/2;
                times--;
            };

            for(var i=0;i<times;i++){
                var animation1={},animation2={};

                animation1[ref]=(motion=='pos'?'-=':'+=')+distance;
                animation2[ref]=(motion=='pos'?'+=':'-=')+distance;
                el.animate(animation1,speed/2,o.options.easing).animate(animation2,speed/2,o.options.easing);
                distance=(mode=='hide')?distance*2:distance/2;
            };

            if(mode=='hide'){
                var animation={
                    opacity:0
                };

                animation[ref]=(motion=='pos'?'-=':'+=')+distance;
                el.animate(animation,speed/2,o.options.easing,function(){
                    el.hide();
                    $.effects.restore(el,props);
                    $.effects.removeWrapper(el);
                    if(o.callback)o.callback.apply(this,arguments);
                });
            }else{
                var animation1={},animation2={};

                animation1[ref]=(motion=='pos'?'-=':'+=')+distance;
                animation2[ref]=(motion=='pos'?'+=':'-=')+distance;
                el.animate(animation1,speed/2,o.options.easing).animate(animation2,speed/2,o.options.easing,function(){
                    $.effects.restore(el,props);
                    $.effects.removeWrapper(el);
                    if(o.callback)o.callback.apply(this,arguments);
                });
            };

            el.queue('fx',function(){
                el.dequeue();
            });
            el.dequeue();
        });
    };

})(jQuery);
(function($){
    $.effects.clip=function(o){
        return this.queue(function(){
            var el=$(this),props=['position','top','left','height','width'];
            var mode=$.effects.setMode(el,o.options.mode||'hide');
            var direction=o.options.direction||'vertical';
            $.effects.save(el,props);
            el.show();
            var wrapper=$.effects.createWrapper(el).css({
                overflow:'hidden'
            });
            var animate=el[0].tagName=='IMG'?wrapper:el;
            var ref={
                size:(direction=='vertical')?'height':'width',
                position:(direction=='vertical')?'top':'left'
                };

            var distance=(direction=='vertical')?animate.height():animate.width();
            if(mode=='show'){
                animate.css(ref.size,0);
                animate.css(ref.position,distance/2);
            }
            var animation={};

            animation[ref.size]=mode=='show'?distance:0;
            animation[ref.position]=mode=='show'?0:distance/2;
            animate.animate(animation,{
                queue:false,
                duration:o.duration,
                easing:o.options.easing,
                complete:function(){
                    if(mode=='hide')el.hide();
                    $.effects.restore(el,props);
                    $.effects.removeWrapper(el);
                    if(o.callback)o.callback.apply(el[0],arguments);
                    el.dequeue();
                }
            });
        });
};

})(jQuery);
(function($){
    $.effects.drop=function(o){
        return this.queue(function(){
            var el=$(this),props=['position','top','left','opacity'];
            var mode=$.effects.setMode(el,o.options.mode||'hide');
            var direction=o.options.direction||'left';
            $.effects.save(el,props);
            el.show();
            $.effects.createWrapper(el);
            var ref=(direction=='up'||direction=='down')?'top':'left';
            var motion=(direction=='up'||direction=='left')?'pos':'neg';
            var distance=o.options.distance||(ref=='top'?el.outerHeight({
                margin:true
            })/2:el.outerWidth({
                margin:true
            })/2);
            if(mode=='show')el.css('opacity',0).css(ref,motion=='pos'?-distance:distance);
            var animation={
                opacity:mode=='show'?1:0
                };

            animation[ref]=(mode=='show'?(motion=='pos'?'+=':'-='):(motion=='pos'?'-=':'+='))+distance;
            el.animate(animation,{
                queue:false,
                duration:o.duration,
                easing:o.options.easing,
                complete:function(){
                    if(mode=='hide')el.hide();
                    $.effects.restore(el,props);
                    $.effects.removeWrapper(el);
                    if(o.callback)o.callback.apply(this,arguments);
                    el.dequeue();
                }
            });
        });
};

})(jQuery);
(function($){
    $.effects.explode=function(o){
        return this.queue(function(){
            var rows=o.options.pieces?Math.round(Math.sqrt(o.options.pieces)):3;
            var cells=o.options.pieces?Math.round(Math.sqrt(o.options.pieces)):3;
            o.options.mode=o.options.mode=='toggle'?($(this).is(':visible')?'hide':'show'):o.options.mode;
            var el=$(this).show().css('visibility','hidden');
            var offset=el.offset();
            offset.top-=parseInt(el.css("marginTop"))||0;
            offset.left-=parseInt(el.css("marginLeft"))||0;
            var width=el.outerWidth(true);
            var height=el.outerHeight(true);
            for(var i=0;i<rows;i++){
                for(var j=0;j<cells;j++){
                    el.clone().appendTo('body').wrap('<div></div>').css({
                        position:'absolute',
                        visibility:'visible',
                        left:-j*(width/cells),
                        top:-i*(height/rows)
                        }).parent().addClass('effects-explode').css({
                        position:'absolute',
                        overflow:'hidden',
                        width:width/cells,
                        height:height/rows,
                        left:offset.left+j*(width/cells)+(o.options.mode=='show'?(j-Math.floor(cells/2))*(width/cells):0),
                        top:offset.top+i*(height/rows)+(o.options.mode=='show'?(i-Math.floor(rows/2))*(height/rows):0),
                        opacity:o.options.mode=='show'?0:1
                        }).animate({
                        left:offset.left+j*(width/cells)+(o.options.mode=='show'?0:(j-Math.floor(cells/2))*(width/cells)),
                        top:offset.top+i*(height/rows)+(o.options.mode=='show'?0:(i-Math.floor(rows/2))*(height/rows)),
                        opacity:o.options.mode=='show'?1:0
                        },o.duration||500);
                }
                }
        setTimeout(function(){
            o.options.mode=='show'?el.css({
                visibility:'visible'
            }):el.css({
                visibility:'visible'
            }).hide();
            if(o.callback)o.callback.apply(el[0]);
            el.dequeue();
            $('.effects-explode').remove();
        },o.duration||500);
        });
};

})(jQuery);
(function($){
    $.effects.fold=function(o){
        return this.queue(function(){
            var el=$(this),props=['position','top','left'];
            var mode=$.effects.setMode(el,o.options.mode||'hide');
            var size=o.options.size||15;
            var horizFirst=!(!o.options.horizFirst);
            $.effects.save(el,props);
            el.show();
            var wrapper=$.effects.createWrapper(el).css({
                overflow:'hidden'
            });
            var widthFirst=((mode=='show')!=horizFirst);
            var ref=widthFirst?['width','height']:['height','width'];
            var distance=widthFirst?[wrapper.width(),wrapper.height()]:[wrapper.height(),wrapper.width()];
            var percent=/([0-9]+)%/.exec(size);
            if(percent)size=parseInt(percent[1])/100*distance[mode=='hide'?0:1];
            if(mode=='show')wrapper.css(horizFirst?{
                height:0,
                width:size
            }:{
                height:size,
                width:0
            });
            var animation1={},animation2={};

            animation1[ref[0]]=mode=='show'?distance[0]:size;
            animation2[ref[1]]=mode=='show'?distance[1]:0;
            wrapper.animate(animation1,o.duration/2,o.options.easing).animate(animation2,o.duration/2,o.options.easing,function(){
                if(mode=='hide')el.hide();
                $.effects.restore(el,props);
                $.effects.removeWrapper(el);
                if(o.callback)o.callback.apply(el[0],arguments);
                el.dequeue();
            });
        });
    };

})(jQuery);
;
(function($){
    $.effects.highlight=function(o){
        return this.queue(function(){
            var el=$(this),props=['backgroundImage','backgroundColor','opacity'];
            var mode=$.effects.setMode(el,o.options.mode||'show');
            var color=o.options.color||"#ffff99";
            var oldColor=el.css("backgroundColor");
            $.effects.save(el,props);
            el.show();
            el.css({
                backgroundImage:'none',
                backgroundColor:color
            });
            var animation={
                backgroundColor:oldColor
            };

            if(mode=="hide")animation['opacity']=0;
            el.animate(animation,{
                queue:false,
                duration:o.duration,
                easing:o.options.easing,
                complete:function(){
                    if(mode=="hide")el.hide();
                    $.effects.restore(el,props);
                    if(mode=="show"&&jQuery.browser.msie)this.style.removeAttribute('filter');
                    if(o.callback)o.callback.apply(this,arguments);
                    el.dequeue();
                }
            });
        });
};

})(jQuery);
(function($){
    $.effects.pulsate=function(o){
        return this.queue(function(){
            var el=$(this);
            var mode=$.effects.setMode(el,o.options.mode||'show');
            var times=o.options.times||5;
            if(mode=='hide')times--;
            if(el.is(':hidden')){
                el.css('opacity',0);
                el.show();
                el.animate({
                    opacity:1
                },o.duration/2,o.options.easing);
                times=times-2;
            }
            for(var i=0;i<times;i++){
                el.animate({
                    opacity:0
                },o.duration/2,o.options.easing).animate({
                    opacity:1
                },o.duration/2,o.options.easing);
            };

            if(mode=='hide'){
                el.animate({
                    opacity:0
                },o.duration/2,o.options.easing,function(){
                    el.hide();
                    if(o.callback)o.callback.apply(this,arguments);
                });
            }else{
                el.animate({
                    opacity:0
                },o.duration/2,o.options.easing).animate({
                    opacity:1
                },o.duration/2,o.options.easing,function(){
                    if(o.callback)o.callback.apply(this,arguments);
                });
            };

            el.queue('fx',function(){
                el.dequeue();
            });
            el.dequeue();
        });
    };

})(jQuery);
(function($){
    $.effects.puff=function(o){
        return this.queue(function(){
            var el=$(this);
            var options=$.extend(true,{},o.options);
            var mode=$.effects.setMode(el,o.options.mode||'hide');
            var percent=parseInt(o.options.percent)||150;
            options.fade=true;
            var original={
                height:el.height(),
                width:el.width()
                };

            var factor=percent/100;
            el.from=(mode=='hide')?original:{
                height:original.height*factor,
                width:original.width*factor
                };

            options.from=el.from;
            options.percent=(mode=='hide')?percent:100;
            options.mode=mode;
            el.effect('scale',options,o.duration,o.callback);
            el.dequeue();
        });
    };

    $.effects.scale=function(o){
        return this.queue(function(){
            var el=$(this);
            var options=$.extend(true,{},o.options);
            var mode=$.effects.setMode(el,o.options.mode||'effect');
            var percent=parseInt(o.options.percent)||(parseInt(o.options.percent)==0?0:(mode=='hide'?0:100));
            var direction=o.options.direction||'both';
            var origin=o.options.origin;
            if(mode!='effect'){
                options.origin=origin||['middle','center'];
                options.restore=true;
            }
            var original={
                height:el.height(),
                width:el.width()
                };

            el.from=o.options.from||(mode=='show'?{
                height:0,
                width:0
            }:original);
            var factor={
                y:direction!='horizontal'?(percent/100):1,
                x:direction!='vertical'?(percent/100):1
                };

            el.to={
                height:original.height*factor.y,
                width:original.width*factor.x
                };

            if(o.options.fade){
                if(mode=='show'){
                    el.from.opacity=0;
                    el.to.opacity=1;
                };

                if(mode=='hide'){
                    el.from.opacity=1;
                    el.to.opacity=0;
                };

        };

        options.from=el.from;
        options.to=el.to;
        options.mode=mode;
        el.effect('size',options,o.duration,o.callback);
            el.dequeue();
        });
};

$.effects.size=function(o){
    return this.queue(function(){
        var el=$(this),props=['position','top','left','width','height','overflow','opacity'];
        var props1=['position','top','left','overflow','opacity'];
        var props2=['width','height','overflow'];
        var cProps=['fontSize'];
        var vProps=['borderTopWidth','borderBottomWidth','paddingTop','paddingBottom'];
        var hProps=['borderLeftWidth','borderRightWidth','paddingLeft','paddingRight'];
        var mode=$.effects.setMode(el,o.options.mode||'effect');
        var restore=o.options.restore||false;
        var scale=o.options.scale||'both';
        var origin=o.options.origin;
        var original={
            height:el.height(),
            width:el.width()
            };

        el.from=o.options.from||original;
        el.to=o.options.to||original;
        if(origin){
            var baseline=$.effects.getBaseline(origin,original);
            el.from.top=(original.height-el.from.height)*baseline.y;
            el.from.left=(original.width-el.from.width)*baseline.x;
            el.to.top=(original.height-el.to.height)*baseline.y;
            el.to.left=(original.width-el.to.width)*baseline.x;
        };

        var factor={
            from:{
                y:el.from.height/original.height,
                x:el.from.width/original.width
                },
            to:{
                y:el.to.height/original.height,
                x:el.to.width/original.width
                }
            };

    if(scale=='box'||scale=='both'){
        if(factor.from.y!=factor.to.y){
            props=props.concat(vProps);
            el.from=$.effects.setTransition(el,vProps,factor.from.y,el.from);
            el.to=$.effects.setTransition(el,vProps,factor.to.y,el.to);
        };

        if(factor.from.x!=factor.to.x){
            props=props.concat(hProps);
            el.from=$.effects.setTransition(el,hProps,factor.from.x,el.from);
            el.to=$.effects.setTransition(el,hProps,factor.to.x,el.to);
        };

    };

    if(scale=='content'||scale=='both'){
        if(factor.from.y!=factor.to.y){
            props=props.concat(cProps);
            el.from=$.effects.setTransition(el,cProps,factor.from.y,el.from);
            el.to=$.effects.setTransition(el,cProps,factor.to.y,el.to);
        };

};

$.effects.save(el,restore?props:props1);
    el.show();
    $.effects.createWrapper(el);
    el.css('overflow','hidden').css(el.from);
    if(scale=='content'||scale=='both'){
    vProps=vProps.concat(['marginTop','marginBottom']).concat(cProps);
    hProps=hProps.concat(['marginLeft','marginRight']);
    props2=props.concat(vProps).concat(hProps);
    el.find("*[width]").each(function(){
        child=$(this);
        if(restore)$.effects.save(child,props2);
        var c_original={
            height:child.height(),
            width:child.width()
            };

        child.from={
            height:c_original.height*factor.from.y,
            width:c_original.width*factor.from.x
            };

        child.to={
            height:c_original.height*factor.to.y,
            width:c_original.width*factor.to.x
            };

        if(factor.from.y!=factor.to.y){
            child.from=$.effects.setTransition(child,vProps,factor.from.y,child.from);
            child.to=$.effects.setTransition(child,vProps,factor.to.y,child.to);
        };

        if(factor.from.x!=factor.to.x){
            child.from=$.effects.setTransition(child,hProps,factor.from.x,child.from);
            child.to=$.effects.setTransition(child,hProps,factor.to.x,child.to);
        };

        child.css(child.from);
        child.animate(child.to,o.duration,o.options.easing,function(){
            if(restore)$.effects.restore(child,props2);
        });
    });
};

el.animate(el.to,{
    queue:false,
    duration:o.duration,
    easing:o.options.easing,
    complete:function(){
        if(mode=='hide')el.hide();
        $.effects.restore(el,restore?props:props1);
        $.effects.removeWrapper(el);
        if(o.callback)o.callback.apply(this,arguments);
        el.dequeue();
    }
});
});
};

})(jQuery);
(function($){
    $.effects.shake=function(o){
        return this.queue(function(){
            var el=$(this),props=['position','top','left'];
            var mode=$.effects.setMode(el,o.options.mode||'effect');
            var direction=o.options.direction||'left';
            var distance=o.options.distance||20;
            var times=o.options.times||3;
            var speed=o.duration||o.options.duration||140;
            $.effects.save(el,props);
            el.show();
            $.effects.createWrapper(el);
            var ref=(direction=='up'||direction=='down')?'top':'left';
            var motion=(direction=='up'||direction=='left')?'pos':'neg';
            var animation={},animation1={},animation2={};

            animation[ref]=(motion=='pos'?'-=':'+=')+distance;
            animation1[ref]=(motion=='pos'?'+=':'-=')+distance*2;
            animation2[ref]=(motion=='pos'?'-=':'+=')+distance*2;
            el.animate(animation,speed,o.options.easing);
            for(var i=1;i<times;i++){
                el.animate(animation1,speed,o.options.easing).animate(animation2,speed,o.options.easing);
            };

            el.animate(animation1,speed,o.options.easing).animate(animation,speed/2,o.options.easing,function(){
                $.effects.restore(el,props);
                $.effects.removeWrapper(el);
                if(o.callback)o.callback.apply(this,arguments);
            });
            el.queue('fx',function(){
                el.dequeue();
            });
            el.dequeue();
        });
    };

})(jQuery);
(function($){
    $.effects.slide=function(o){
        return this.queue(function(){
            var el=$(this),props=['position','top','left'];
            var mode=$.effects.setMode(el,o.options.mode||'show');
            var direction=o.options.direction||'left';
            $.effects.save(el,props);
            el.show();
            $.effects.createWrapper(el).css({
                overflow:'hidden'
            });
            var ref=(direction=='up'||direction=='down')?'top':'left';
            var motion=(direction=='up'||direction=='left')?'pos':'neg';
            var distance=o.options.distance||(ref=='top'?el.outerHeight({
                margin:true
            }):el.outerWidth({
                margin:true
            }));
            if(mode=='show')el.css(ref,motion=='pos'?-distance:distance);
            var animation={};

            animation[ref]=(mode=='show'?(motion=='pos'?'+=':'-='):(motion=='pos'?'-=':'+='))+distance;
            el.animate(animation,{
                queue:false,
                duration:o.duration,
                easing:o.options.easing,
                complete:function(){
                    if(mode=='hide')el.hide();
                    $.effects.restore(el,props);
                    $.effects.removeWrapper(el);
                    if(o.callback)o.callback.apply(this,arguments);
                    el.dequeue();
                }
            });
        });
};

})(jQuery);
(function($){
    $.effects.transfer=function(o){
        return this.queue(function(){
            var el=$(this);
            var mode=$.effects.setMode(el,o.options.mode||'effect');
            var target=$(o.options.to);
            var position=el.offset();
            var transfer=$('<div class="ui-effects-transfer"></div>').appendTo(document.body);
            if(o.options.className)transfer.addClass(o.options.className);
            transfer.addClass(o.options.className);
            transfer.css({
                top:position.top,
                left:position.left,
                height:el.outerHeight()-parseInt(transfer.css('borderTopWidth'))-parseInt(transfer.css('borderBottomWidth')),
                width:el.outerWidth()-parseInt(transfer.css('borderLeftWidth'))-parseInt(transfer.css('borderRightWidth')),
                position:'absolute'
            });
            position=target.offset();
            animation={
                top:position.top,
                left:position.left,
                height:target.outerHeight()-parseInt(transfer.css('borderTopWidth'))-parseInt(transfer.css('borderBottomWidth')),
                width:target.outerWidth()-parseInt(transfer.css('borderLeftWidth'))-parseInt(transfer.css('borderRightWidth'))
                };

            transfer.animate(animation,o.duration,o.options.easing,function(){
                transfer.remove();
                if(o.callback)o.callback.apply(el[0],arguments);
                el.dequeue();
            });
        });
    };

})(jQuery);
