
(function($,window){if(!$.jqDock){var TRBL=['Top','Right','Bottom','Left'],AXES=['Major','Minor'],MOUSEEVENTS=['mouseenter','mousemove','mouseleave'],VANILLA=['<div style="position:relative;padding:0;','margin:0;border:0 none;background-color:transparent;','">'],VERTHORZ={v:{wh:'height',xy:1,tl:'top',lead:0,trail:2,inv:'h'},h:{wh:'width',xy:0,tl:'left',lead:3,trail:1,inv:'v'}},DOCKS=[],XY=[0,0],EMPTYFUNC=function(){},ALT_IMAGE=function(el){var alt=$(el).attr('alt');return(alt&&(/\.(gif|jpg|jpeg|png)$/i).test(alt))?alt:false;},AS_INTEGER=function(x){var r=parseInt(x,10);return isNaN(r)?0:r;},CLEAR_TIMER=function(Dock,x){if(Dock[x]){window.clearTimeout(Dock[x]);Dock[x]=null;}},DELTA_XY=function(Dock){var VH=VERTHORZ[Dock.Opts.vh],rtn=0,el=Dock.Elem[Dock.Current],p;if(el){p=el.Pad[VH.lead]+el.Pad[VH.trail];rtn=Math.floor((XY[VH.xy]-el.Wrap.parent().offset()[VH.tl])*(p+el.Initial)/(p+el.Major))+el.Offset;}
return rtn;},DOCK_INDEX_FROM_ID=function(el){return el?1*((el.id||'').match(/^jqDock(\d+)$/)||[0,-1])[1]:-1;},FIND_IMAGE=function(el){var cont=true,id=DOCKS.length,idx;while(cont&&id--){idx=DOCKS[id].Elem.length;while(cont&&idx--){cont=DOCKS[id].Elem[idx].Img[0]!==el;}}
return cont?!cont:DOCKS[id].Elem[idx];},IMAGE_ONLOAD=function(ev){var dock=DOCKS[ev.data.id],el=dock.Elem[ev.data.idx];el.height=this.height;el.width=this.width;if(++dock.Loaded>=dock.Elem.length){window.setTimeout(function(){$.jqDock.initDock(ev.data.id);},0);}},ITEM_INDEX_FROM_CLASS=function(el,context){var m;while(el&&el.ownerDocument&&el!==context){m=el.className.toString().match(/jqDockMouse(\d+)/);if(m){return 1*m[1];}
el=el.parentNode;}
return-1;},KEEP_PROPORTION=function(el,dim,vh){var r={},vhwh=VERTHORZ[vh].wh,invwh=VERTHORZ[VERTHORZ[vh].inv].wh;r[vhwh]=dim;r[invwh]=Math.round(dim*el[invwh]/el[vhwh]);return r;},LABEL_CLICK=function(){$(this).prev('img').trigger('click');return false;},LABEL_SHOW=function(Dock,show){var item=Dock.Elem[Dock.Current];if(item&&Dock.Opts.labels){item.Label.el[item.Label.txt&&show?'show':'hide']();}},POSITION_LABEL=function(Dock,show){var labels=Dock.Opts.labels,VH=VERTHORZ[Dock.Opts.vh],el=Dock.Elem[Dock.Current],i,j,label,labelElem;if(el&&labels){label=el.Label;labelElem=label.el;if(label.mc){label.mc=0;for(i in VERTHORZ){label[i]=labelElem[VERTHORZ[i].wh]();for(j in{lead:1,trail:1}){label[i]+=AS_INTEGER(labelElem.css('padding'+TRBL[VERTHORZ[i][j]]));}}}
if(labels.charAt(0)=='m'){labelElem.css({top:Math.floor((el[AXES[VERTHORZ[VH.inv].xy]]-label.v)/2)});}
if(labels.charAt(1)=='c'){labelElem.css({left:Math.floor((el[AXES[VH.xy]]-label.h)/2)});}}
if(show){LABEL_SHOW(Dock,1);}},REMOVE_TEXT=function(el){var i=el.childNodes.length,j;while(i){j=el.childNodes[--i];if(j.childNodes&&j.childNodes.length){REMOVE_TEXT(j);}else if(j.nodeType==3){el.removeChild(j);}}},REVEAL_MENU=function(Dock){Dock.Menu.css({visibility:'visible'}).show();},SET_IDLER=function(Dock){var idleDelay=Dock.Opts.idle;if(idleDelay){CLEAR_TIMER(Dock,'Idler');Dock.Idler=window.setTimeout(function(){Dock.Menu.trigger('dockidle');},idleDelay);}},SET_LABEL=function(Dock,item,indx){var op=Dock.Opts,labels=op.labels,label=item.Label,posBottom,posRight;label.txt=op.setLabel.call(Dock.Menu[0],item.Title,indx);label.mc=label.mc&&!!label.txt;label.el=$('<div class="jqDockLabel jqDockLabel'+item.Link+'" style="position:absolute;margin:0;"><div class="jqDockLabelText">'+label.txt+'</div></div>').hide().insertAfter(item.Img);if(labels&&label.txt){posBottom=labels.charAt(0)=='b';posRight=labels.charAt(1)=='r';label.el.css({top:posBottom?'auto':0,left:posRight?'auto':0,bottom:posBottom?0:'auto',right:posRight?0:'auto'}).click(LABEL_CLICK);}},SET_SIZES=function(id,mxy){var Dock=DOCKS[id],op=Dock.Opts,wh=VERTHORZ[op.vh].wh,i=Dock.Elem.length,el,ab;mxy=mxy||DELTA_XY(Dock);while(i){el=Dock.Elem[--i];ab=Math.abs(mxy-el.Centre);el.Final=ab<op.distance?el[wh]-Math.floor((el[wh]-el.Initial)*Math.pow(ab,op.coefficient)/op.attenuation):el.Initial;}},TRANSFORM_LABEL=function(labelText,indx){return labelText;},CHANGE_SIZE=function(id,idx,dim,force){var Dock=DOCKS[id],el=Dock.Elem[idx],op=Dock.Opts,yard=Dock.Yard,VH=VERTHORZ[op.vh],invVH=VERTHORZ[VH.inv],srcDiff=el.src!=el.altsrc,bdr,css,diff;if(force||el.Major!=dim){bdr=($.boxModel||op.vh=='v')?0:Dock.Border[VH.lead]+Dock.Border[VH.trail];if(srcDiff&&!force&&el.Major==el.Initial){el.Img[0].src=el.altsrc;}
Dock.Spread+=dim-el.Major;css=KEEP_PROPORTION(el,dim,op.vh);diff=op.size-css[invVH.wh];switch(op.align){case'top':case'left':css['margin'+TRBL[invVH.trail]]=diff;break;case'middle':case'center':css['margin'+TRBL[invVH.lead]]=(diff+(diff%2))/2;css['margin'+TRBL[invVH.trail]]=(diff-(diff%2))/2;break;default:css['margin'+TRBL[invVH.lead]]=diff;}
if(dim!=el.Major||(force&&!idx)){if(op.flow){yard.parent()[VH.wh](Dock.Spread+Dock.Border[VH.lead]+Dock.Border[VH.trail]);}
yard[VH.wh](Dock.Spread+bdr);}
el.Wrap.css(css);if(!op.flow){yard.css(VH.tl,Math.floor(Math.max(0,(Dock[VH.wh]-Dock.Spread)/2)));}
if(Dock.OnDock){POSITION_LABEL(Dock);}
el.Major=dim;el.Minor=css[invVH.wh];if(srcDiff&&!force&&dim==el.Initial){el.Img[0].src=el.src;}
css=null;}},FACTOR_SIZES=function(id,revers){var Dock=DOCKS[id],op=Dock.Opts,VH=VERTHORZ[op.vh],lapse=op.duration+op.step,i=0,factor,el,sz;if(Dock.Stamp){lapse=(new Date()).getTime()-Dock.Stamp;if(lapse>=op.duration){Dock.Stamp=0;}}
if(lapse>op.step){factor=lapse<op.duration?lapse/op.duration:0;while(i<Dock.Elem.length){el=Dock.Elem[i];sz=(el.Final-el.Initial)*factor;if(revers){sz=factor?Math.floor(el.Final-sz):el.Initial;}else{sz=factor?Math.floor(el.Initial+sz):el.Final;}
CHANGE_SIZE(id,i++,sz);}
if(Dock.Spread>Dock[VH.wh]){Dock.Yard.parent()[VH.wh](Dock.Spread+Dock.Border[VH.lead]+Dock.Border[VH.trail]);Dock[VH.wh]=Dock.Spread;}}},OFF_DOCK=function(id,noIdle){var Dock=DOCKS[id],el=Dock.Elem,i=el.length;if(!Dock.OnDock){while((i--)&&el[i].Major<=el[i].Initial){}
DELTA_XY(Dock);if(i<0){i=el.length;while(i--){el[i].Major=el[i].Final=el[i].Initial;}
Dock.Current=-1;if(!noIdle){SET_IDLER(Dock);}}else{FACTOR_SIZES(id,true);window.setTimeout(function(){OFF_DOCK(id,noIdle);},Dock.Opts.step);}}},OVER_DOCK=function(id){var Dock=DOCKS[id],el=Dock.Elem,i=el.length;if(Dock.OnDock){while((i--)&&el[i].Major>=el[i].Final){}
if(i<0){Dock.Xpand=1;LABEL_SHOW(Dock,1);}else{SET_SIZES(id);FACTOR_SIZES(id);window.setTimeout(function(){OVER_DOCK(id);},Dock.Opts.step);}}},DO_MOUSE=function(etype,id,idx,fake){var Dock=DOCKS[id],el=Dock.Elem,i=el.length;switch(etype){case 0:Dock.OnDock=1;if(Dock.Current>=0&&Dock.Current!==idx){LABEL_SHOW(Dock);}
Dock.Current=idx;POSITION_LABEL(Dock,Dock.Xpand);Dock.Stamp=(new Date()).getTime();SET_SIZES(id);OVER_DOCK(id);break;case 1:if(idx!==Dock.Current){LABEL_SHOW(Dock);Dock.Current=idx;}
POSITION_LABEL(Dock,Dock.Xpand);if(Dock.OnDock&&Dock.Xpand){SET_SIZES(id);FACTOR_SIZES(id);}
break;case 2:CLEAR_TIMER(Dock,'Inactive');Dock.OnDock=Dock.Xpand=0;LABEL_SHOW(Dock);Dock.Stamp=(new Date()).getTime();while(i--){el[i].Final=el[i].Major;}
OFF_DOCK(id,!!fake);break;default:}},MOUSE_HANDLER=function(ev){var dockId=DOCK_INDEX_FROM_ID(this),Dock=DOCKS[dockId],idx=Dock?ITEM_INDEX_FROM_CLASS(ev.target,this):-1,doMse=-1,onDock;if(Dock){if(Dock.Asleep){Dock.Sleeper={target:ev.target,type:ev.type,pageX:ev.pageX,pageY:ev.pageY};}else{onDock=Dock.OnDock;CLEAR_TIMER(Dock,'Idler');XY=[ev.pageX,ev.pageY];if(ev.type==MOUSEEVENTS[2]){if(onDock){doMse=2;}else{SET_IDLER(Dock);}}else{if(Dock.Opts.inactivity){CLEAR_TIMER(Dock,'Inactive');Dock.Inactive=window.setTimeout(function(){DO_MOUSE(2,dockId,idx,true);},Dock.Opts.inactivity);}
if(ev.type==MOUSEEVENTS[1]){if(idx<0){if(onDock&&Dock.Current>=0){doMse=2;}}else if(!onDock||Dock.Current<0){doMse=0;}else{doMse=1;}}else if(idx>=0&&!onDock){doMse=0;}}
Dock.Sleeper=null;if(doMse>=0){DO_MOUSE(doMse,dockId,idx);}}}},LISTENER=function(ev){var el=$('.jqDock',this).get(0),dockId=DOCK_INDEX_FROM_ID(el),Dock=DOCKS[dockId];if(Dock){if(ev.type=='docknudge'){if(Dock.Asleep&&!(Dock.Asleep=(Dock.Opts.onWake.call(this)===false))){$(this).trigger('dockwake');}
if(!Dock.Asleep){SET_IDLER(Dock);if(Dock.Sleeper){MOUSE_HANDLER.call(el,Dock.Sleeper);}}}else if(!Dock.Asleep){CLEAR_TIMER(Dock,'Idler');if((Dock.Asleep=(Dock.Opts.onSleep.call(Dock.Menu[0])!==false))){Dock.Menu.trigger('docksleep');DO_MOUSE(2,dockId,0,true);}}}};$.jqDock=(function(){return{version:1.5,defaults:{size:48,distance:72,coefficient:1.5,duration:300,align:'bottom',labels:0,source:0,loader:0,inactivity:0,fadeIn:0,fadeLayer:'',step:50,setLabel:0,flow:0,idle:0,onReady:0,onSleep:0,onWake:0},useJqLoader:$.browser.opera||$.browser.safari,initDock:function(id){var Dock=DOCKS[id],op=Dock.Opts,VH=VERTHORZ[op.vh],invVH=VERTHORZ[VH.inv],borders=Dock.Border,numItems=Dock.Elem.length,vanillaDiv=VANILLA.join(''),off=0,i=0,j,k,el,wh,acc,upad,wrap,callback,fadeLayer=op.fadeLayer;REMOVE_TEXT(Dock.Menu[0]);Dock.Menu.children().each(function(i,kid){var wrap=Dock.Elem[i].Wrap=$(kid).wrap(vanillaDiv+vanillaDiv+'</div></div>').parent();if(op.vh=='h'){wrap.parent().css('float','left');}}).find('img').andSelf().css({position:'relative',padding:0,margin:0,borderWidth:0,borderStyle:'none',verticalAlign:'top',display:'block',width:'100%',height:'100%'});while(i<numItems){el=Dock.Elem[i++];wh=KEEP_PROPORTION(el,op.size,VH.inv);el.Major=el.Final=el.Initial=wh[VH.wh];el.Wrap.css(wh);el.Img.attr({alt:''}).parent('a').andSelf().removeAttr('title');Dock[invVH.wh]=Math.max(Dock[invVH.wh],op.size+el.Pad[invVH.lead]+el.Pad[invVH.trail]);el.Offset=off;el.Centre=off+el.Pad[VH.lead]+(el.Initial/2);off+=el.Initial+el.Pad[VH.lead]+el.Pad[VH.trail];}
i=0;while(i<numItems){el=Dock.Elem[i++];upad=el.Pad[VH.lead]+el.Pad[VH.trail];Dock.Spread+=el.Initial+upad;for(k in{Centre:1,Offset:1}){SET_SIZES(id,el[k]);acc=0;for(j=numItems;j--;){acc+=Dock.Elem[j].Final+upad;}
if(acc>Dock[VH.wh]){Dock[VH.wh]=acc;}}}
while(i){el=Dock.Elem[--i];el.Final=el.Initial;}
wrap=[VANILLA[0],VANILLA[2],'<div id="jqDock',id,'" class="jqDock" style="position:absolute;top:3;left:0;padding:0;margin:0;overflow:visible;','height:',Dock.height,'px;width:',Dock.width,'px;"></div></div>'].join('');Dock.Yard=$('div.jqDock',Dock.Menu.wrapInner(wrap));for(j=4;j--;){borders[j]=AS_INTEGER(Dock.Yard.css('border'+TRBL[j]+'Width'));}
Dock.Yard.parent().addClass('jqDockWrap').width(Dock.width+borders[1]+borders[3]).height(Dock.height+borders[0]+borders[2]);for(;i<numItems;i++){el=Dock.Elem[i];upad=el.Wrap.parent();for(j=4;j--;){if(el.Pad[j]){upad.css('padding'+TRBL[j],el.Pad[j]);}}
CHANGE_SIZE(id,i,el.Final,true);upad.add(el.Img).addClass('jqDockMouse'+i);SET_LABEL(Dock,el,i);}
el=Dock.Menu.bind('docknudge dockidle',LISTENER);Dock.Yard.bind(MOUSEEVENTS.join(' '),MOUSE_HANDLER).find('*').css({filter:'inherit'});if(!(Dock.Asleep=(op.onReady.call(Dock.Menu[0])===false))){callback=function(noFade){if(!noFade){$('.jqDockFilter',this).add(this).css({filter:''}).removeClass('jqDockFilter');}
Dock.Sleep=false;Dock.Menu.trigger('dockshow').trigger('docknudge');};if(fadeLayer){if(fadeLayer!='menu'){el=Dock.Yard;if(fadeLayer=='wrap'){el=el.parent();}}
Dock.Asleep=!!$('.jqDock,.jqDockWrap',el).addClass('jqDockFilter').css({filter:'inherit'});el.css({opacity:0});REVEAL_MENU(Dock);el.animate({opacity:1},op.fadeIn,callback);}else{REVEAL_MENU(Dock);callback(1);}}}};})();$.fn.jqDock=function(opts){if(this.length&&!this.not('img').length){if(opts==='get'){var item=FIND_IMAGE(this.get(0));return item?$.extend(true,{},item,{Img:null}):null;}
this.each(function(n,el){var item=FIND_IMAGE(el),src=0,atRest,str,v;opts=opts||{};if(item){atRest=item.Major==item.Initial;for(v in{src:1,altsrc:1}){if(opts[v]){str=($.isFunction(opts[v])?opts[v].call(el,item[v],v):opts[v]).toString();if(item[v]!==str){item[v]=str;src=(v=='src'?atRest:!atRest)?v:src;}}}
if(src){$(el).attr('src',item[src]);}}});}else if(opts==='nudge'||opts==='idle'){this.filter('.jqDocked').each(function(){LISTENER.call(this,{type:'dock'+opts});});}else{this.not('.jqDocked').filter(function(){return!$(this).parents('.jqDocked').length&&!$(this).children().not('img').filter(function(){return $(this).filter('a').children('img').parent().children().length!==1;}).length;}).addClass('jqDocked').each(function(){var Self=$(this),id=DOCKS.length,Dock,op,jqld,i;DOCKS[id]={Elem:[],Menu:Self,OnDock:0,Xpand:0,Stamp:0,width:0,height:0,Spread:0,Border:[],Opts:$.extend({},$.jqDock.defaults,opts||{},$.metadata?Self.metadata():{}),Current:-1,Loaded:0};Dock=DOCKS[id];op=Dock.Opts;jqld=(!op.loader&&$.jqDock.useJqLoader)||op.loader==='jquery';for(i in{size:1,distance:1,duration:1,inactivity:1,fadeIn:1,step:1,idle:1}){op[i]=AS_INTEGER(op[i]);}
i=op.coefficient*1;op.coefficient=isNaN(i)?1.5:i;op.labels=(/^[tmb][lcr]$/).test(op.labels.toString())?op.labels:(op.labels?{top:'br',left:'tr'}[op.align]||'tl':'');op.setLabel=!!op.setLabel?op.setLabel:TRANSFORM_LABEL;op.fadeLayer=op.fadeIn?(({dock:1,wrap:1}[op.fadeLayer])?op.fadeLayer:'menu'):'';for(i in{onSleep:1,onWake:1,onReady:1}){if(!op[i]){op[i]=EMPTYFUNC;}}
op.attenuation=Math.pow(op.distance,op.coefficient);op.vh=({left:1,center:1,right:1}[op.align])?'v':'h';$('img',Self).each(function(n,el){var jself=$(el),src=jself.attr('src'),linkParent=jself.parent('a'),i;Dock.Elem[n]={Img:jself,src:src,altsrc:(op.source?op.source.call(el,n):'')||ALT_IMAGE(el)||src,Title:jself.attr('title')||linkParent.attr('title')||'',Label:{mc:(/[mc]/).test(op.labels)},Pad:[],Link:linkParent.length?'Link':'Image'};for(i=4;i--;){Dock.Elem[n].Pad[i]=AS_INTEGER(jself.css('padding'+TRBL[i]));}});$.each(Dock.Elem,function(i,v){var pre,altsrc=v.altsrc;if(jqld){$('<img />').bind('load',{id:id,idx:i},IMAGE_ONLOAD).attr({src:altsrc});}else{pre=new Image();pre.onload=function(){IMAGE_ONLOAD.call(this,{data:{id:id,idx:i}});pre.onload='';pre=null;};pre.src=altsrc;}});});}
return this;};}})(jQuery,window);
