jquery(function($){
//创建dom
var
quickhtml = $('.quick_links_panel'),
quickshell = $(document.createelement('div')).html(quickhtml).addclass('quick_links_wrap'),
quicklinks = quickshell.find('.quick_links');
quickpanel = quicklinks.parent();
quickshell.appendto('body');
var
prevpoptype,
prevtrigger,
doc = $(document),
popdisplayed = false,
hidequickpop = function(){
if(prevtrigger){
prevtrigger.removeclass('current');
}
popdisplayed = false;
prevpoptype = '';
quickpop.hide();
},
showquickpop = function(type){
if(quickpopxhr && quickpopxhr.abort){
quickpopxhr.abort();
}
if(type !== prevpoptype){
var fn = quickdatafns[type];
quickpop.html(ds.tmpl(poptmpl, fn));
fn.init.call(this, fn);
}
doc.unbind('click.quick_links').one('click.quick_links', hidequickpop);
quickpop[0].classname = 'quick_links_pop quick_' + type;
popdisplayed = true;
prevpoptype = type;
quickpop.show();
};
quickshell.bind('click.quick_links', function(e){
e.stoppropagation();
});
//通用事件处理
var
view = $(window),
quicklinkcollapsed = !!ds.getcookie('ql_collapse'),
gethandlertype = function(classname){
return classname.replace(/current/g, '').replace(/\s+/, '');
},
showpopfn = function(){
var type = gethandlertype(this.classname);
if(popdisplayed && type === prevpoptype){
return hidequickpop();
}
showquickpop(this.classname);
if(prevtrigger){
prevtrigger.removeclass('current');
}
prevtrigger = $(this).addclass('current');
},
quickhandlers = {
//返回顶部
return_top: function(){
ds.scrollto(0, 0);
hidereturntop();
},
toggle: function(){
quicklinkcollapsed = !quicklinkcollapsed;
quickshell[quicklinkcollapsed ? 'addclass' : 'removeclass']('quick_links_min');
ds.setcookie('ql_collapse', quicklinkcollapsed ? '1' : '', 30);
}
};
quickshell.delegate('a', 'click', function(e){
var type = gethandlertype(this.classname);
if(type && quickhandlers[type]){
quickhandlers[type].call(this);
e.preventdefault();
}
});
//return top
var scrolltimer, resizetimer, minwidth = 1350;
function resizehandler(){
cleartimeout(scrolltimer);
scrolltimer = settimeout(checkscroll, 160);
}
function checkresize(){
quickshell[view.width() > 1340 ? 'removeclass' : 'addclass']('quick_links_dockright');
}
function scrollhandler(){
cleartimeout(resizetimer);
resizetimer = settimeout(checkresize, 160);
}
function checkscroll(){
view.scrolltop()>100 ? showreturntop() : hidereturntop();
}
function showreturntop(){
quickpanel.addclass('quick_links_allow_gotop');
}
function hidereturntop(){
quickpanel.removeclass('quick_links_allow_gotop');
}
view.bind('scroll.go_top', resizehandler).bind('resize.quick_links', scrollhandler);
quicklinkcollapsed && quickshell.addclass('quick_links_min');
resizehandler();
scrollhandler();
});