﻿(function(a){if(!a.fn.jqDock){var b=function(){return {version:1.2,defaults:{size:36,distance:54,coefficient:1.5,duration:500,align:"bottom",labels:false,source:false,loader:null},useJqLoader:a.browser.opera||a.browser.safari,shrinkInterval:100,docks:[],X:0,Y:0,verthorz:{v:{wh:"height",xy:"Y",tl:"top",lead:"Top",trail:"Bottom",act:"ActualInv"},h:{wh:"width",xy:"X",tl:"left",lead:"Left",trail:"Right",act:"Actual"}},elementCss:{position:"relative",borderWidth:0,borderStyle:"none",verticalAlign:"top"},vanillaDiv:'<div style="position:relative;margin:0px;padding:0px;border:0px none;background-color:transparent;">',initDock:function(f){var j=this,c=this.docks[f],d=c.Opts,n=0,g=a("a, img",c.Menu),e=0,l,b,k,i,h,o=a.browser.opera&&1*(a.browser.version.match(/^(\d+\.\d+)/)||[0,0])[1]<9.5;this.removeText(c.Menu);if(d.orient.vh=="h"){g.css(this.elementCss);if(o||!a.boxModel)g.filter("a").css({lineHeight:0,fontSize:"0px"});else{var m={display:"block"};m["float"]="left";g.filter("img").css(m)}}else g.not(a("a img",c.Menu)).wrap(this.vanillaDiv+"</div>").end().css(this.elementCss).css({display:"block"});while(e<c.Elem.length){b=c.Elem[e++];k=this.keepProportion(b,d.size,{vh:d.orient.inv,inv:d.orient.vh});b.Actual=b.Final=b.Initial=k[d.vh.wh];b.SizeDiff=b[d.vh.wh]-b.Initial;b.Img.css(k);b.Img.removeAttr("title").attr({alt:""}).parent("a").removeAttr("title");b.ShrinkStep=Math.floor(b.SizeDiff*this.shrinkInterval/d.duration);c[d.vh.inv.wh]=Math.max(c[d.vh.inv.wh],d.size+b.Pad[d.vh.inv.lead]+b.Pad[d.vh.inv.trail]);b.Offset=n;b.Centre=b.Offset+b.Pad[d.vh.lead]+b.Initial/2;n+=b.Initial+b.Pad[d.vh.lead]+b.Pad[d.vh.trail]}e=0;while(e<c.Elem.length){b=c.Elem[e++];i=0;h=b.Pad[d.vh.lead]+b.Pad[d.vh.trail];c.Spread+=b.Initial+h;this.setSizes(f,b.Centre);l=c.Elem.length;while(l)i+=c.Elem[--l].Final+h;c[d.vh.wh]=Math.max(c[d.vh.wh],i)}while(e){b=c.Elem[--e];b.Final=b.Initial}var p=[this.vanillaDiv,'<div class="jqDock" style="position:absolute;top:0px;left:0px;padding:0px;',"margin:0px;overflow:visible;height:",c.height,"px;width:",c.width,'px;"></div></div>'].join("");c.Yard=a(c.Menu).wrapInner(p).find("div.jqDock");a.each([d.vh.lead,d.vh.trail],function(b,a){c.Borders[a]=j.asNumber(c.Yard.css("border"+a+"Width"))});if(c.Borders[d.vh.lead])c.Yard.css(d.vh.tl,Math.ceil(c.Borders[d.vh.lead]/2));while(e<c.Elem.length){b=c.Elem[e];this.changeSize(f,e,b.Final,true);b.Img.addClass("jqDockMouse"+f+"_"+e++)}a(c.Menu).show();if(c.Opts.labels){a.each(c.Elem,function(){j.setLabel(f,this.Label)});c.Label.hide()}c.Yard.bind("mouseover mouseout mousemove",function(a){j.mouseHandler(a)})},altImage:function(){var b=a(this).attr("alt");return b&&b.match(/\.(gif|jpg|jpeg|png)$/i)?b:false},removeText:function(b){var c=b.childNodes.length,a;while(c){a=b.childNodes[--c];if(a.childNodes&&a.childNodes.length)this.removeText(a);else if(a.nodeType==3)b.removeChild(a)}},asNumber:function(b){var a=parseInt(b,10);return isNaN(a)?0:a},keepProportion:function(e,c,b){var a={},f=this.verthorz[b.vh],d=this.verthorz[b.inv];a[f.wh]=c;a[d.wh]=Math.round(c*e[d.wh]/e[f.wh]);return a},deltaXY:function(e){var b=this.docks[e];if(b.Current!==false){var c=b.Opts,a=b.Elem[b.Current],f=a.Pad[c.vh.lead]+a.Pad[c.vh.trail],d=a.Img.offset();b.Delta=Math.floor((this[c.vh.xy]-d[c.vh.tl])*(f+a.Initial)/(f+a.Actual))+a.Offset;this.doLabel(e,d)}},setLabel:function(e,c){var b=this.docks[e],f=this,d={};if(!b.Label)b.Label=a('<div class="jqDockLabel jqDockMouse'+e+'_00 jqDockLabelImage" style="position:absolute;margin:0px;"></div>').hide().bind("click",function(){b.Elem[b.Current].Img.trigger("click")}).appendTo(b.Yard);if(c.txt){b.Label.text(c.txt);a.each(["Top","Right","Bottom","Left"],function(c,a){d[a]=f.asNumber(b.Label.css("padding"+a))});a.each(this.verthorz,function(e,a){c[a.wh]=b.Label[a.wh]();c[a.wh+"Pad"]=d[a.lead]+d[a.trail]})}},doLabel:function(j,g){var b=this.docks[j];if(b.Opts.labels&&b.Current!==false){var c=b.Elem[b.Current],a=c.Label,e=b.Opts,i=typeof g=="string"?g:"move";switch(i){case "show":case "hide":b.Label[a.txt?i:"hide"]();break;case "change":b.Label[0].className=b.Label[0].className.replace(/(jqDockLabel)(Link|Image)/,"$1"+(c.Linked?"Link":"Image"));b.Label.text(a.txt).css({width:a.width,height:a.height}).hide();break;default:var h=b.Yard.offset(),d={top:g.top-h.top,left:g.left-h.left},f=e.labels.split("");if(f[0]=="m")d.top+=Math.floor((c[e.vh.inv.act]-a.height-a.heightPad)/2);else if(f[0]=="b")d.top+=c[e.vh.inv.act]+c.Pad.Top+c.Pad.Bottom-a.height-a.heightPad;if(f[1]=="c")d.left+=Math.floor((c[e.vh.act]-a.width-a.widthPad)/2);else if(f[1]=="r")d.left+=c[e.vh.act]+c.Pad.Left+c.Pad.Right-a.width-a.widthPad;b.Label.css(d)}}},mouseHandler:function(c){var i=null,e=c.target.className.match(/jqDockMouse(\d+)_(\d+)/),g=!!c.relatedTarget&&c.relatedTarget.tagName!==undefined;if(e){i=false;var b=1*e[1],a=this.docks[b],f=e[2]=="00"?a.Current:1*e[2];this.X=c.pageX;this.Y=c.pageY;if(c.type=="mousemove"){if(f==a.Current){this.deltaXY(b);if(a.OnDock&&a.Expanded){this.setSizes(b);this.factorSizes(b)}}}else{var d=g&&c.relatedTarget.className.match(/jqDockMouse(\d+)_(\d+)/);if(c.type=="mouseover"&&(!a.OnDock||f!==a.Current)){a.Current=f;this.doLabel(b,"change");this.deltaXY(b);if(a.Expanded)this.doLabel(b,"show");if(g&&(!d||d[1]!=b)){a.Timestamp=(new Date).getTime();this.setSizes(b);a.OnDock=true;this.overDock(b)}}else if(g&&c.type=="mouseout")if(!d||d[1]!=b){a.OnDock=false;this.doLabel(b,"hide");var h=a.Elem.length;while(h--)a.Elem[h].Final=a.Elem[h].Intial;this.offDock(b)}}}return i},overDock:function(a){var c=this.docks[a];if(c.OnDock){var e=this,d=c.Elem,b=d.length;while(b--&&!(d[b].Actual<d[b].Final));if(b<0){c.Expanded=true;this.deltaXY(a);this.doLabel(a,"show")}else{this.setSizes(a);this.factorSizes(a);setTimeout(function(){e.overDock(a)},60)}}},offDock:function(d){var b=this.docks[d];if(!b.OnDock){var g=this,f=true,c=b.Elem.length,a,e;while(c){a=b.Elem[--c];if(a.Actual>a.Initial){e=a.Actual-a.ShrinkStep;if(e>a.Initial)f=false;else e=a.Initial;this.changeSize(d,c,e)}}this.deltaXY(d);if(f){while(c<b.Elem.length){a=b.Elem[c++];a.Actual=a.Final=a.Initial}b.Current=b.Expanded=false}else setTimeout(function(){g.offDock(d)},this.shrinkInterval)}},setSizes:function(g,c){var b=this.docks[g],d=b.Opts,f=b.Elem.length,a,e;c=c||b.Delta;while(f){a=b.Elem[--f];e=Math.floor(a.SizeDiff*Math.pow(Math.abs(c-a.Centre),d.coefficient)/d.attenuation);a.Final=e<a.SizeDiff?a[d.vh.wh]-e:a.Initial}},factorSizes:function(f){var a=this.docks[f],d=a.Opts,b=d.duration+60;if(a.Timestamp){b=(new Date).getTime()-a.Timestamp;if(b>=d.duration)a.Timestamp=0}if(b>60){var g=b<d.duration?b/d.duration:0,e=0,c;while(e<a.Elem.length){c=a.Elem[e];this.changeSize(f,e++,g?Math.floor(c.Initial+(c.Final-c.Initial)*g):c.Final)}}},changeSize:function(k,m,g,j){var d=this.docks[k],b=d.Elem[m];if(j||b.Actual!=g){var c=d.Opts,l=a.boxModel||c.orient.vh=="v"?0:d.Borders[c.vh.lead]+d.Borders[c.vh.trail];if(b.Source[2]&&!j&&b.Actual==b.Initial)b.Img[0].src=b.Source[1];if(d.OnDock)this.deltaXY(k);d.Spread+=g-b.Actual;var e=this.keepProportion(b,g,c.orient),f=c.size-e[c.vh.inv.wh],h="margin",i=c.vh.inv;switch(c.align){case "bottom":case "right":e[h+i.lead]=f;break;case "middle":case "center":e[h+i.lead]=(f+f%2)/2;e[h+i.trail]=(f-f%2)/2;break;case "top":case "left":e[h+i.trail]=f}d.Yard[c.vh.wh](d.Spread+l);b.Img.css(e);d.Yard.css("margin"+c.vh.lead,Math.floor(Math.max(0,(d[c.vh.wh]-d.Spread)/2)));b.Actual=g;b.ActualInv=e[c.vh.inv.wh];if(b.Source[2]&&!j&&b.Actual==b.Initial)b.Img[0].src=b.Source[0]}}}}();a.fn.jqDock=function(c){return this.filter(function(){var c=b.docks.length;while(c--&&this!=b.docks[c].Menu);return c<0&&a("img",this).length}).hide().each(function(){var f=b.docks.length;b.docks[f]={Elem:[],Menu:this,OnDock:false,Expanded:false,Timestamp:0,width:0,height:0,Spread:0,Borders:{},Yard:false,Opts:a.extend({},b.defaults,c||{}),Current:false,Delta:0,Loaded:0,Label:false};var e=b.docks[f],d=e.Opts;d.attenuation=Math.pow(d.distance,d.coefficient);d.orient=({left:1,center:1,right:1})[d.align]?{vh:"v",inv:"h"}:{vh:"h",inv:"v"};d.vh=a.extend({},b.verthorz[d.orient.vh],{inv:b.verthorz[d.orient.inv]});d.loader=d.loader&&typeof d.loader=="string"&&/^image|jquery$/i.test(d.loader)?d.loader.toLowerCase():"";d.labels=d.labels===true?({top:"bc",left:"tr",right:"tl"})[d.align]||"tc":typeof d.labels=="string"&&({tl:1,tc:1,tr:1,ml:1,mc:1,mr:1,bl:1,bc:1,br:1})[d.labels]?d.labels:false;a("img",this).each(function(g){var c=a(this),f=c.attr("src"),h=(d.source?d.source.call(c[0],g):false)||b.altImage.call(this)||f,i=d.labels?c.attr("title")||c.parent("a").attr("title")||"":"";e.Elem[g]={Img:c,Source:[f,h,!(f==h)],Label:{txt:i,width:0,height:0,widthPad:0,heightPad:0},Initial:0,Actual:0,ActualInv:0,Final:0,Offset:0,Centre:0,Pad:{},Linked:!!c.parent("a").length,width:0,height:0};a.each(["Top","Right","Bottom","Left"],function(d,a){e.Elem[g].Pad[a]=b.asNumber(c.css("padding"+a))})});var g=!d.loader&&b.useJqLoader||d.loader=="jquery";a.each(e.Elem,function(){var h=this,d=function(){h.height=this.height;h.width=this.width;if(++e.Loaded>=e.Elem.length)setTimeout(function(){b.initDock(f)},0)};if(g)a("<img />").bind("load",d).attr({src:this.Source[1]});else{var c=new Image;c.onload=function(){d.call(this);c.onload=function(){}};c.src=this.Source[1]}})}).end()};a.jqDock=function(a){return b[a]?b[a]:null}}})(jQuery)
