(function(){
function getSpace(e){
    var space=
['marginTop','marginLeft','marginRight','marginBottom','paddingTop','paddingLeft','paddingRight','paddingBottom'],i=0,result={},c;
    for(;i<8;++i){
        c=space[i]
        result[c]=e.css(c);
    }
    return result
}
var sort_css=".sort", vonly_css=".vonly";
$.fn.extend({
    zlayout_string:function(){
        var s=[];
        $(this).children(sort_css).each(function(){
            var id=this.id;
            if(id){
                var extra = $(this).find("#extra")[0]
                if(extra){
                    id += extra.value;
                }
                s.push(id);
            }
        })
        return s.toString();
    },
    zlayout:function(para){
        var empty_func=function(){},sort_helper=$('<div class="sort_helper" />'),container=$(this);
        para["start"]=para["start"]||empty_func;
        para["stop"]=para["stop"]||empty_func;
        var drag_set = {
            handle:para.handle,opacity:.6,zIndex:9000,cancel:".content,ul,textarea,input",
            start:function(){
                para.start.apply(this,arguments);
                var self=$(this),h=self.height();
                self.before(
                        sort_helper.css({height:h-4}).css(getSpace(self))
                ).css({height:h,width:self.width(),position:"absolute"});
                sort_helper.x_pos=[];
                container.each(function(){
                    var self=$(this)
                    var x_left=self.offset().left,x_right=x_left+self.width();
                    sort_helper.x_pos.push([x_left,x_right,self]);
                })
            },
            stop:function(){

                var self=$(this)
                self.animate(sort_helper.offset(),function(){
                    self.css({opacity:"",height:"",width:"",left:"",top:"",position:"",border:""})
                    sort_helper.replaceWith(this);
                    para.stop.apply(this,arguments);
                });

            },
            drag:function(e){
                var x=e.pageX,y=e.pageY,
                p=sort_helper.parent().get(0),a=sort_helper.x_pos,len=a.length-1,c,self=$(this),w;

                for(;len>=0;--len){
                    c=a[len];
                    if( c[0]<x && x<c[1] && p!=c[2].get(0)){

                        c[2].append(sort_helper);
                        break;
                    }
                }
                var other=$(sort_helper.parent().get(0)).children(sort_css),i=other.length-1;
                for(;i>=0;--i){
                    var o=other.get(i);
                    if(o!=this && o!=sort_helper.get(0)){
                        o=$(o);
                        var top=o.offset().top,bottom=top+o.height(),mid=(top+bottom)/2;
                        if(top<y && bottom>y){
                            if(y>mid)
                                o.after(sort_helper);
                            else o.before(sort_helper)
                        }
                    }
                }
            },
            scroll:true,
            scrollSpeed:60
        };
        container.children(sort_css+":not("+vonly_css+")").draggable(drag_set);
        container.children(vonly_css).draggable($.extend(drag_set,{axis:'y'}));
        return this;
    }
});
})()

$(
function(){
    $(".article,#right_layout").zlayout({
        handle:"h2:first",
        start:function(){
            this.__old_parent=this.parentNode;
        },
        stop:function(){
            var self=$(this),parent=this.parentNode;
            if(this.__old_parent!=parent){
				var id = this.id;
				if(id){
					var extra = $(this).find("#extra")[0]
					if(extra){
						id += extra.value;
					}
				}
                $.get(mine_page_url,{
                        t: id,
                        pos: parent.className == 'article'?'l':'r'
                    },
                    function(r){
                        self.html(eval('('+r+')').html)
                        load_event_monitor(self);
                    }
                );
            }
			$.post_withck(mine_page_url,{
				layout:'l:'+$('.article').zlayout_string()+';r:'+$('#right_layout').zlayout_string()}
			);
            this.__old_parent=null;
        }
    });
}
)


