/*
 Sliding Menu
 version 1.0.1
 (c) 2010 DMXzone
*/
(function(h){var g="1.0.1",u="dmxSlidingMenu",x="dmxSlidingMenuHeader",a="dmxSlidingMenuView",r="dmxSlidingMenuFooter",w="dmxSlidingMenuTitle",f="dmxSlidingMenuBack",d="dmxSlidingMenuItemSub",y="dmxSlidingMenuItemLabel",p="dmxSlidingMenuItemContent",l="dmxSlidingMenuItemTitle",q="dmxSlidingMenuItemDescription",t="dmxSlidingMenuItemFirst",i="dmxSlidingMenuItemLast",b="dmxSlidingMenuItemOdd",k=navigator.platform==="iPhone",m=navigator.platform==="iPod",s=navigator.platform==="iPad",e=k||m||s,j=!!("ontouchstart" in window),z=".dmx",o=j?"touchstart":"mousedown",c=j?"touchmove":"mousemove",n=j?"touchend":"mouseup";h.easing["ease-out"]=function(B,C,A,E,D){return E*((C=C/D-1)*C*C+1)+A};function v(B,A){this.opts=h.extend({},v.options,A);this.$target=h(B);this.init()}v.options={height:"auto",updateTitle:true,updateBackLabel:true,mousewheel:true,striping:false};v.prototype={init:function(){this.$menu=this.$target.find(">ul");this.$back=this.$target.parent().find("div."+f);this.$title=this.$target.parent().find("div."+w);this.width=this.$target.width();this.lvl=0;this.defBack=this.$back.find("a").text();this.$back.hide();if(this.opts.updateTitle){this.defTitle=this.$title.text();this.$title.text(this.$menu.attr("title")||this.defTitle)}this.setupLayout();this.setupEventListeners()},setupLayout:function(){var A=this;this.$target.find("ul").each(function(){h(this).find(">li:has(>a)").each(function(){var C=h(this).prev(),B=h(this).next();if(C.filter(":has(>a)").length===0){h(this).addClass(t)}if(B.filter(":has(>a)").length===0){h(this).addClass(i)}});if(A.opts.striping){h(this).find(">li:has(>a):odd").addClass(b)}});this.$menu.css({left:0,top:0}).find("li:has(>ul)>a").addClass(d);if(this.opts.height==="auto"){this.height=this.$target.parent().height();this.$target.siblings().each(function(){A.height-=h(this).outerHeight(true)})}else{this.height=this.opts.height}this.$target.height(this.height);this.$target.find("ul").css({width:this.width,minHeight:this.height});this.$target.find("ul ul").css({top:0,left:this.width});this.$back.find("a").dmxEllipsis();this.$title.dmxEllipsis()},setupEventListeners:function(){var A=this;h(window).bind("resize",function(B){A.onresize.call(A,B)});h(window).bind("orientationchange",function(B){A.onresize.call(A,B)});this.$target.bind(o+z,function(B){A.handleEvent.call(A,B)});this.$target.bind("click"+z,function(B){A.handleEvent.call(A,B)});this.$back.find("a").click(function(B){A.back.call(A,B)});if(this.opts.mousewheel){this.$target.bind("mousewheel",function(B){A.handleEvent.call(A,B)})}},back:function(B){var A=this;B.preventDefault();if(--this.lvl<0){this.lvl=0}if(this.lvl===0){this.$back.hide()}this.animate(-this.lvl*this.width);if(this.opts.updateBackLabel&&this.lvl>0){this.$back.find("a").text(this.$target.find("ul:visible").eq(this.lvl-1).attr("title")||this.defBack);setTimeout(function(){A.$back.find("a").dmxEllipsis()},10)}if(this.opts.updateTitle){this.$title.text(this.$target.find("ul:visible").eq(this.lvl).attr("title")||this.defTitle);setTimeout(function(){A.$title.dmxEllipsis()},10)}},animate:function(C,B,A,E,D){B=B||0;A=A==null?150:A;E=E||(e?"ease":"swing");if(e){if(D){this.$menu.bind("webkitTransitionEnd",D)}this.$menu.css({"-webkit-transition":"-webkit-transform "+A+"ms "+E,"-webkit-transform":"translate3d("+C+"px, "+B+"px, 0px)"})}else{this.$menu.stop().animate({left:C+"px",top:B+"px"},A,E,D)}},stop:function(){if(e){this.$menu.css("-webkit-transition","-webkit-transform 0s")}else{this.$menu.stop()}},getPosition:function(){if(e){var A=new WebKitCSSMatrix(this.$menu.css("-webkit-transform"));return{left:A.e,top:A.f}}else{return this.$menu.position()}},handleEvent:function(D){var A=this,B=D.originalEvent.touches,C=function(E){A.handleEvent.call(A,E)};if(B&&B.length>0){D.pageX=B[0].pageX;D.pageY=B[0].pageY}if(D.type===o){this.$target.bind(c+z,C);this.$target.bind(n+z,C);if(!e){this.$target.bind("mouseleave"+z,C)}}if(D.type===n||D.type==="mouseleave"){this.$target.unbind(c+z);this.$target.unbind(n+z);if(!e){this.$target.unbind("mouseleave"+z)}}if(this["on"+D.type]){this["on"+D.type](D)}},onmousedown:function(A){A.preventDefault();this.ondragstart(A)},onmousemove:function(A){A.preventDefault();this.ondragmove(A)},onmouseup:function(A){this.ondragend(A)},onmouseleave:function(A){this.ondragend(A)},ontouchstart:function(A){A.preventDefault();this.ondragstart(A)},ontouchmove:function(A){A.preventDefault();this.ondragmove(A)},ontouchend:function(B){this.ondragend(B);if(!this.dragging){var A=B.originalEvent.changedTouches[0],C=document.createEvent("MouseEvents");C.initEvent("click",true,true,B.view,1,A.screenX,A.screenY,A.clientX,A.clientY,B.ctrlKey,B.altKey,B.shiftKey,B.metaKey,0,null);B.target.dispatchEvent(C)}},ondragstart:function(A){this.dragging=false;this.speed=0;this.pos=A.pageY;this.time=A.timeStamp;this.stop()},ondragmove:function(A){var C=A.pageY-this.pos;if(Math.abs(C)>5){this.dragging=true;var B=this.getPosition();if(B.top+C>0||B.top+C<-(this.$target.find("ul:visible").eq(this.lvl).outerHeight()-this.$target.height())){C/=2}this.animate(B.left,B.top+C,0);if(this.speed>0){this.speed+=C/(A.timeStamp-this.time)*1000;this.speed/=2}else{this.speed=C/(A.timeStamp-this.time)*1000}this.pos=A.pageY;this.time=A.timeStamp}},ondragend:function(D){var J=this,H=Math.min(Math.max(this.speed,-1000),1000),C=0.4,G=1.5,E=(H*H)/(20*C)/1000,I=-(Math.abs(H)/1000)/-G,B=this.getPosition(),A=H<0?B.top-E:B.top+E,F=function(K){var M=J.getPosition();if(e){J.$menu.unbind("webkitTransitionEnd")}if(M.top>0){J.animate(M.left,0)}var L=J.$target.find("ul:visible").eq(J.lvl).outerHeight()-J.$target.height();if(M.top<-L){J.animate(M.left,-L)}};this.animate(B.left,A,I*1000,"ease-out",F)},onclick:function(B){var A=this,C=h(B.target).closest("a");if(this.dragging){B.preventDefault()}if(!this.dragging&&C.hasClass(d)){B.preventDefault();C.closest("ul").find("ul").hide();C.closest("li").find(">ul").show();this.lvl=C.parents("ul").length;this.animate(-this.lvl*this.width);if(this.opts.updateBackLabel){this.$back.find("a").text(C.closest("ul").attr("title")||this.defBack);setTimeout(function(){A.$back.find("a").dmxEllipsis()},10)}if(this.opts.updateTitle){this.$title.text(C.closest("li").find(">ul").attr("title")||this.defTitle);setTimeout(function(){A.$title.dmxEllipsis()},10)}this.$back.show()}},onresize:function(A){this.width=this.$target.width();this.setupLayout();this.animate(-this.lvl*this.width)},onmousewheel:function(C){C.preventDefault();C.stopPropagation();var B=C.detail>0?-1:1;var A=parseInt(this.$menu.css("top"))+(B*this.$menu.find("li").outerHeight(true));A=Math.min(Math.max(A,this.$target.height()-this.$target.find("ul:visible").eq(this.lvl).outerHeight()),0);var D=this.getPosition();this.animate(D.left,A)}};h.fn.dmxSlidingMenu=function(B){var A=Array.prototype.slice.call(arguments,1);this.each(function(){var C;if(h(this).data("SlidingMenu")){C=h(this).data("SlidingMenu")}else{C=new v(this,B);h(this).data("SlidingMenu",C)}if(typeof B==="string"&&C[B]){C[B].apply(C,A)}});return this};h.fn.dmxEllipsis=function(A){var B=document.documentElement.style;if(!("textOverflow" in B||"OTextOverflow" in B)){return this.each(function(){var F=h(this);if(F.css("overflow")=="hidden"){var I=F.html();var D=F.width();var E=h(this.cloneNode(true)).hide().css({position:"absolute",width:"auto",overflow:"visible","max-width":"inherit"});F.after(E);var H=I,C=H.length;while(C>0&&E.width()>F.width()){H=H.substr(0,--C);while(H.charAt(C-1)==" "){H=H.substr(0,--C)}E.html(H+"&hellip;")}F.html(E.html());E.remove();if(A==true){var G=F.width();setInterval(function(){if(F.width()!=G){G=F.width();F.html(I);F.ellipsis()}},200)}}})}else{return this}}})(jQuery);
