﻿(function(a){function h(b,c){a.extend(b,c);for(var d in c){if(c[d]==null){b[d]=null}}return b}function b(){this._defaults={direction:"random",randomSelection:["up","down","left","right"],speed:2e3,easing:"linear",repeat:true,pause:2e3,selection:"forward",shading:true,opacity:.8,imagePath:"",full3D:true,segments:30,reduction:30,expansion:10,lineHeight:[0,1],letterSpacing:[0,0],beforeRotate:null,afterRotate:null}}var c=0;var d=1;var e=2;var f=3;var g="imageCube";a.extend(b.prototype,{markerClassName:"hasImageCube",setDefaults:function(a){h(this._defaults,a||{})},_attachImageCube:function(b,c){b=a(b);if(b.hasClass(this.markerClassName)){return}var d=a.extend({_position:b.css("position")},this._defaults,c||{});a.data(b[0],g,d);b.addClass(this.markerClassName).css({position:"relative"}).children().each(function(){var c=a(this);a.data(this,g,{display:c.css("display"),width:c.css("width"),height:c.css("height"),position:c.css("position"),lineHeight:c.css("lineHeight"),letterSpacing:c.css("letterSpacing")});c.css({display:"block",width:b.css("width"),height:b.css("height"),position:"absolute",lineHeight:d.lineHeight[1],letterSpacing:d.letterSpacing[1]})}).not(":first").hide();this._prepareRotation(b[0])},_prepareRotation:function(b){b=a(b);b.children(".imageCubeShading,.imageCubeFrom,.imageCubeTo").remove();var c=a.data(b[0],g);c.current=b.children(":visible")[0];var d=function(a){return!a.length?a:a.filter(":eq("+Math.floor(Math.random()*a.length)+")")};c.next=c.selection=="random"?d(b.children(":hidden")):c.selection=="backward"?a(c.current).prev():a(c.current).next();c.next=(c.next.length?c.next:c.selection=="random"?c.current:c.selection=="backward"?b.children(":last"):b.children(":first"))[0];if(c.repeat&&!c._timer){c._timer=setTimeout(function(){a.imagecube._rotateImageCube(b[0])},c.pause)}a.data(b[0],g,c)},_rotateImageCube:function(b,c,d){if(typeof c=="function"){d=c;c=""}b=a(b);this._stopImageCube(b[0],true);var e=a.data(b[0],g);if(c!=null){c=typeof c=="number"?b.children(":eq("+c+")"):a(c);if(b.children().filter(function(){return this===c[0]}).length>0){e.next=c}}var f=[e.current,e.next];if(e.beforeRotate){e.beforeRotate.apply(b[0],f)}var h={};h[g]=1;b.attr(g,0).stop(true,true).animate(h,e.speed,e.easing,function(){if(e.afterRotate){e.afterRotate.apply(b[0],f);e.repeat=false}if(d){d.apply(b[0])}})},_stopImageCube:function(b,c){var d=a.data(b,g);if(d._timer){clearTimeout(d._timer);d._timer=null}if(!c){d.repeat=false}a.data(b,g,d)},_prepareAnimation:function(b){var h=a.data(b,g);var b=a(b);var i={left:0,top:0};b.parents().each(function(){var b=a(this);if(b.css("position")=="fixed"){i.left-=b.offset().left;i.top-=b.offset().top;return false}});var j={width:b.width(),height:b.height()};var k=h.direction!="random"?h.direction:h.randomSelection[Math.floor(Math.random()*h.randomSelection.length)];k=Math.max(0,a.inArray(k,["up","down","left","right"]));h._curDirection=k;var l=k==c||k==d;var m=k==e||k==f;var n=k==c||k==e;var o=n?0:h.opacity;var p=a(h.current);var q=a(h.next);var r=[];var s=function(b){var c=[0,0,0,0];if(!a.browser.msie||b.css("border")){for(var d=0;d<4;d++){c[d]=b.css("border"+["Left","Right","Top","Bottom"][d]+"Width");var e=a.browser.msie?1:0;c[d]=parseFloat({thin:1+e,medium:3+e,thick:5+e}[c[d]]||c[d])}}return c};r[0]=s(p);r[1]=s(q);var t=[];t[0]=[parseFloat(p.css("padding-left")),parseFloat(p.css("padding-right")),parseFloat(p.css("padding-top")),parseFloat(p.css("padding-bottom"))];t[1]=[parseFloat(q.css("padding-left")),parseFloat(q.css("padding-right")),parseFloat(q.css("padding-top")),parseFloat(q.css("padding-bottom"))];var u=[];u[0]=[a.boxModel?r[0][0]+r[0][1]+t[0][0]+t[0][1]:0,a.boxModel?r[0][2]+r[0][3]+t[0][2]+t[0][3]:0];u[1]=[a.boxModel?r[1][0]+r[1][1]+t[1][0]+t[1][1]:0,a.boxModel?r[1][2]+r[1][3]+t[1][2]+t[1][3]:0];var v=[];v[0]={elem:p[0],props:{left:{start:i.left,end:i.left+(k==f?j.width:0),units:"px"},width:{start:j.width-u[0][0],end:l?j.width-u[0][0]:0,units:"px"},top:{start:i.top,end:i.top+(k==d?j.height:0),units:"px"},height:{start:j.height-u[0][1],end:l?0:j.height-u[0][1],units:"px"},paddingLeft:{start:t[0][0],end:m?0:t[0][0],units:"px"},paddingRight:{start:t[0][1],end:m?0:t[0][1],units:"px"},paddingTop:{start:t[0][2],end:l?0:t[0][2],units:"px"},paddingBottom:{start:t[0][3],end:l?0:t[0][3],units:"px"},borderLeftWidth:{start:r[0][0],end:m?0:r[0][0],units:"px"},borderRightWidth:{start:r[0][1],end:m?0:r[0][1],units:"px"},borderTopWidth:{start:r[0][2],end:l?0:r[0][2],units:"px"},borderBottomWidth:{start:r[0][3],end:l?0:r[0][3],units:"px"},lineHeight:{start:h.lineHeight[1],end:l?h.lineHeight[0]:h.lineHeight[1],units:"em"},letterSpacing:{start:h.letterSpacing[1],end:l?h.letterSpacing[1]:h.letterSpacing[0],units:"em"}}};v[1]={elem:q[0],props:{left:{start:i.left+(k==e?j.width:0),end:i.left,units:"px"},width:{start:l?j.width-u[1][0]:0,end:j.width-u[1][0],units:"px"},top:{start:i.top+(k==c?j.height:0),end:i.top,units:"px"},height:{start:l?a.browser.msie?1:0:j.height-u[1][1],end:j.height-u[1][1],units:"px"},paddingLeft:{start:m?0:t[1][0],end:t[1][0],units:"px"},paddingRight:{start:m?0:t[1][1],end:t[1][1],units:"px"},paddingTop:{start:l?0:t[1][2],end:t[1][2],units:"px"},paddingBottom:{start:l?0:t[1][3],end:t[1][3],units:"px"},borderLeftWidth:{start:m?0:r[1][0],end:r[1][0],units:"px"},borderRightWidth:{start:m?0:r[1][1],end:r[1][1],units:"px"},borderTopWidth:{start:l?0:r[1][2],end:r[1][2],units:"px"},borderBottomWidth:{start:l?0:r[1][3],end:r[1][3],units:"px"},lineHeight:{start:l?h.lineHeight[0]:h.lineHeight[1],end:h.lineHeight[1],units:"em"},letterSpacing:{start:l?h.letterSpacing[1]:h.letterSpacing[0],end:h.letterSpacing[1],units:"em"}}};if(h.shading){var w=function(a,b,c){return{left:{start:a.left.start,end:a.left.end,units:"px"},width:{start:a.width.start,end:a.width.end,units:"px"},top:{start:a.top.start,end:a.top.end,units:"px"},height:{start:a.height.start,end:a.height.end,units:"px"},paddingLeft:{start:a.paddingLeft.start+a.borderLeftWidth.start,end:a.paddingLeft.end+a.borderLeftWidth.end,units:"px"},paddingRight:{start:a.paddingRight.start+a.borderRightWidth.start,end:a.paddingRight.end+a.borderRightWidth.end,units:"px"},paddingTop:{start:a.paddingTop.start+a.borderTopWidth.start,end:a.paddingTop.end+a.borderTopWidth.end,units:"px"},paddingBottom:{start:a.paddingBottom.start+a.borderBottomWidth.start,end:a.paddingBottom.end+a.borderBottomWidth.end,units:"px"},opacity:{start:b,end:c,units:""}}};v[2]={elem:a((a.browser.msie?'<img src="'+h.imagePath+'imageCubeHigh.png"':"<div")+' class="imageCubeShading" style="background-color: white; opacity: '+o+'; z-index: 10; position: absolute;"'+(a.browser.msie?"/>":"></div>"))[0],props:w(v[n?0:1].props,o,h.opacity-o)};v[3]={elem:a((a.browser.msie?'<img src="'+h.imagePath+'imageCubeShad.png"':"<div")+' class="imageCubeShading" style="background-color: black; opacity: '+(h.opacity-o)+'; z-index: 10; position: absolute;"'+(a.browser.msie?"/>":"></div>"))[0],props:w(v[n?1:0].props,h.opacity-o,o)}}if(h.full3D){for(var x=0;x<h.segments;x++){b.append(p.clone().addClass("imageCubeFrom").css({display:"block",position:"absolute",overflow:"hidden"}));if(h.shading){b.append(a(v[n?2:3].elem).clone())}}for(var x=0;x<h.segments;x++){b.append(q.clone().addClass("imageCubeTo").css({display:"block",position:"absolute",width:0,overflow:"hidden"}));if(h.shading){b.append(a(v[n?3:2].elem).clone())}}p.hide();q.css({width:j.width-u[1][0],height:j.height-u[1][1]})}else{var y=function(a){return{left:a.left.start+"px",width:a.width.start+"px",top:a.top.start+"px",height:a.height.start+"px",lineHeight:a.lineHeight.start+"em",padding:a.paddingTop.start+"px "+a.paddingRight.start+"px "+a.paddingBottom.start+"px "+a.paddingLeft.start+"px",borderLeftWidth:a.borderLeftWidth.start+"px",borderRightWidth:a.borderRightWidth.start+"px",borderTopWidth:a.borderTopWidth.start+"px",borderBottomWidth:a.borderBottomWidth.start+"px",letterSpacing:a.letterSpacing.start+"em",overflow:"hidden"}};p.css(y(v[0].props));q.css(y(v[1].props)).show();if(h.shading){b.append(v[2].elem).append(v[3].elem)}}for(var x=0;x<v.length;x++){for(var z in v[x].props){var A=v[x].props[z];A.diff=A.end-A.start}}return v},_drawFull3D:function(b,f,h){var i=a.data(b,g);if(!i.full3D){return false}var b=a(b);var j=i._curDirection;var k=j==c||j==d;var l=j==c||j==e;var m=b.width();var n=b.height();if(m==0||n==0){return true}var o=(1-f)*(k?n:m);var p=i.segments;var q=i.expansion*(1-Math.abs(2*o-(k?n:m))/(k?n:m));var r=i.reduction-i.reduction*o/(k?n:m);var s=function(c,d,e,g,h,j,l,m,n,o,q,r){var s=[g-d,j-m];var t=Math.max(s[0],s[1]);var u=[n-e,l-h];var v=Math.max(u[0],u[1]);var w=k?(s[0]-s[1])/(p-1)/2:t/p;var x=k?v/p:(u[0]-u[1])/(p-1)/2;var y=q.paddingLeft[r]+q.paddingRight[r]+q.borderLeftWidth[r]+q.borderRightWidth[r];var z=q.paddingTop[r]+q.paddingBottom[r]+q.borderTopWidth[r]+q.borderBottomWidth[r];var A=Math.round(d);var B=Math.round(e);var C=A;var D=B;var E=0;for(var F=0;F<b[0].childNodes.length;F++){var G=b[0].childNodes[F];if(G.className!=c){continue}var H=Math.round(d+(E+1)*w);var I=Math.round(e+(E+1)*x);var J=s[0]-(k?2*E*w:0);var K=u[0]-(k?0:2*E*x);G.style.left=(k?C:d)+"px";G.style.top=(k?e:D)+"px";G.style.width=Math.max(0,J-y)+"px";G.style.height=Math.max(0,K-z)+"px";G.style.letterSpacing=(k?J/t*(i.letterSpacing[1]-i.letterSpacing[0])+i.letterSpacing[0]:f*q.letterSpacing.diff+q.letterSpacing.start)+q.letterSpacing.units;G.style.lineHeight=(!k?K/v*(i.lineHeight[1]-i.lineHeight[0])+i.lineHeight[0]:f*q.lineHeight.diff+q.lineHeight.start)+q.lineHeight.units;G.style.clip="rect("+(!k?"auto":D-B+"px")+","+(k?"auto":H-A+"px")+","+(!k?"auto":I-B+"px")+","+(k?"auto":C-A+"px")+")";if(i.shading){var L=G.nextSibling;L.style.left=C+"px";L.style.top=D+"px";L.style.width=(k?s[0]-2*E*w:H-C)+"px";L.style.height=(k?I-D:u[0]-2*E*x)+"px";L.style.opacity=o;if(a.browser.msie){L.style.filter="alpha(opacity="+o*100+")"}}C=H;D=I;E++}};s("imageCubeFrom",[r,-q,0,m-o][j],[0,n-o,r,-q][j],[m-r,m+q,o,m][j],[0,n-o,-q,r][j],[m+q,m-r,o,m][j],[o,n,n+q,n-r][j],[-q,r,0,m-o][j],[o,n,n-r,n+q][j],!i.shading?0:(l?f:1-f)*h[2].props.opacity.diff+h[2].props.opacity.start,h[0].props,"start");s("imageCubeTo",[-q,i.reduction-r,o,0][j],[o,0,-q,i.reduction-r][j],[m+q,m-(i.reduction-r),m,m-o][j],[o,0,i.reduction-r,-q][j],[m-(i.reduction-r),m+q,m,m-o][j],[n,n-o,n-(i.reduction-r),n+q][j],[i.reduction-r,-q,o,0][j],[n,n-o,n+q,n-(i.reduction-r)][j],!i.shading?0:(l?f:1-f)*h[3].props.opacity.diff+h[3].props.opacity.start,h[1].props,"end");return true}});a.fn.imagecube=function(b){var c=Array.prototype.slice.call(arguments,1);if(b=="current"||b=="next"){return a.imagecube["_"+b+"ImageCube"].apply(a.imagecube,[this[0]].concat(c))}return this.each(function(){if(typeof b=="string"){a.imagecube["_"+b+"ImageCube"].apply(a.imagecube,[this].concat(c))}else{a.imagecube._attachImageCube(this,b)}})};a.fx.step[g]=function(b){if(b.state==0||!b.stepProps){b.start=0;b.end=1;b.stepProps=a.imagecube._prepareAnimation(b.elem);var c=b.stepProps[0].elem;b.saveCSS={borderLeftWidth:c.style.borderLeftWidth,borderRightWidth:c.style.borderRightWidth,borderTopWidth:c.style.borderTopWidth,borderBottomWidth:c.style.borderBottomWidth,padding:c.style.padding}}if(!a.imagecube._drawFull3D(b.elem,b.pos,b.stepProps)){for(var d=0;d<b.stepProps.length;d++){var e=b.stepProps[d];for(var f in e.props){var g=e.props[f];e.elem.style[f]=b.pos*g.diff+g.start+g.units;if(a.browser.msie&&f=="opacity"){e.elem.style.filter="alpha(opacity="+(b.pos*g.diff+g.start)*100+")"}}}}if(b.state==1){a(b.stepProps[0].elem).hide().css(b.saveCSS);a(b.stepProps[1].elem).show();a.imagecube._prepareRotation(b.elem)}};a.imagecube=new b})(jQuery)
