(function(a){Type.registerNamespace("Telerik.Web.UI");
var b=Telerik.Web.UI;
var c=0;
Telerik.Web.UI.TouchScrollExtender=function(f){this._containerElements=a(f);
var g=arguments[1]||{};
this._autoScan="autoScan" in g?g.autoScan:false;
this._showScrollHints="showScrollHints" in g?g.showScrollHints:true;
this._useRoundedHints="useRoundedHints" in g?g.useRoundedHints:true;
this._hasHorizontalScrollHint=false;
this._hasVerticalScrollHint=false;
this._verticalScrollHint=false;
this._horizontalScrollHint=false;
this._lastAnimator=false;
this._dragCanceled=false;
this.containers=[];
this._enableTouchScroll=true;
this._unbindBeforeDragging=false;
};
Telerik.Web.UI.TouchScrollExtender._getNeedsScrollExtender=function(){return $telerik.isTouchDevice;
};
Telerik.Web.UI.TouchScrollExtender.prototype={initialize:function(){if(this._enableTouchScroll){if(this._autoScan){this._containerElements=this._containerElements.add(a("*",this._containerElements)).filter(function(){return(a(this).css("overflow")=="scroll"||a(this).css("overflow")=="auto");
});
}var f=this;
this._containerElements.each(function(){this.style.overflow="hidden";
var g=a(this).addClass("RadTouchExtender").css("-webkit-tap-highlight-color","rgba(0, 0, 0, 0);");
var h={element:g.stop(),horizontalScrollHint:a('
').appendTo(this.parentNode),verticalScrollHint:a('').appendTo(this.parentNode)};
if(f._useRoundedHints){h.horizontalScrollHint.css({"-moz-border-radius":"3px","-webkit-border-radius":"3px","border-radius":"3px"});
h.verticalScrollHint.css({"-moz-border-radius":"3px","-webkit-border-radius":"3px","border-radius":"3px"});
}g.data("dragID",f.containers.push(h)-1);
});
this._startDragProxy=a.proxy(this._startDrag,this);
if(b.TouchScrollExtender._getNeedsScrollExtender()){this._onGestureStartProxy=a.proxy(this._onGestureStart,this);
this._onGestureEndProxy=a.proxy(this._onGestureEnd,this);
this._containerElements.bind("touchstart",this._startDragProxy);
this._containerElements.bind("gesturestart",this._onGestureStartProxy);
this._containerElements.bind("gestureend",this._onGestureEndProxy);
}else{this._containerElements.bind("mousedown",this._startDragProxy);
}this._storeLastLocation=a.throttle(100,function(g){this._lastAnimator.kX=g.x;
this._lastAnimator.kY=g.y;
});
this._alignScrollHints=a.throttle(20,function(){var j=0;
var k=0;
var h=this._lastAnimator.element[0];
var l=this._lastAnimator.horizontalScrollHint;
var m=this._lastAnimator.verticalScrollHint;
var g=this._getBorderBox(h);
var i=a(h).position();
if(this._hasHorizontalScrollHint&&l){j=Math.abs(h.scrollLeft)*this._widthConstant+i.left+g.left;
l.css({left:j});
}if(this._hasVerticalScrollHint&&m){k=Math.abs(h.scrollTop)*this._heightConstant+i.top+g.top;
m.css({top:k});
}});
this._throttleScroll=a.throttle(10,function(g){this._lastAnimator.element[0].scrollLeft=this._lastAnimator.dragStartX-g.x;
this._lastAnimator.element[0].scrollTop=this._lastAnimator.dragStartY-g.y;
});
}},dispose:function(){this.disable();
this._detachInitilalEvents();
this.containers=null;
this._containerElements=null;
this._events=null;
},_detachInitilalEvents:function(){if(this._containerElements){if(this._startDragProxy){this._containerElements.unbind("mousedown",this._startDragProxy);
}if(this._onGestureStartProxy){this._containerElements.unbind("gesturestart",this._onGestureStartProxy);
}if(this._onGestureEndProxy){this._containerElements.unbind("gestureend",this._onGestureEndProxy);
}}},_startDrag:function(h){if(d()){this._detachEvents();
return;
}if(this._dragCanceled){return;
}var f=a(h.target);
var g=f.parents(".RadTouchExtender");
if(f.hasClass("RadTouchExtender")){g=g.add(f);
}var i=this._lastAnimator=this.containers[g.data("dragID")];
var j=i.element[0];
this._hasHorizontalScrollHint=j.offsetWidth0?k:0)+l.x;
i.dragStartY=(m>0?m:0)+l.y;
if(b.TouchScrollExtender._getNeedsScrollExtender()){if(this._unbindBeforeDragging){a(document.body).unbind({touchmove:a.proxy(this._compositeDragger,this),touchend:a.proxy(this._endDrag,this)});
}a(document.body).bind({touchmove:a.proxy(this._compositeDragger,this),touchend:a.proxy(this._endDrag,this)});
}else{a(document.body).bind({mousemove:a.proxy(this._compositeDragger,this),mouseup:a.proxy(this._endDrag,this)});
}}},_getBorderBox:function(h){var f={left:0,top:0,right:0,bottom:0,horizontal:0,vertical:0};
if(window.getComputedStyle){var g=window.getComputedStyle(h,null);
f.left=parseInt(g.getPropertyValue("border-left-width"),10);
f.right=parseInt(g.getPropertyValue("border-right-width"),10);
f.top=parseInt(g.getPropertyValue("border-top-width"),10);
f.bottom=parseInt(g.getPropertyValue("border-bottom-width"),10);
}else{f.left=h.currentStyle.borderLeftWidth;
f.right=h.currentStyle.borderRightWidth;
f.top=h.currentStyle.borderTopWidth;
f.bottom=h.currentStyle.borderBottomWidth;
}f.horizontal=f.left+f.right;
f.vertical=f.top+f.bottom;
return f;
},_addScrollHints:function(){if(this._showScrollHints){var m=0;
var n=0;
var k=this._lastAnimator;
var g=k.element[0];
var f=this._getBorderBox(g);
var i=a(g).position();
if(this._hasHorizontalScrollHint){var j=k.element.innerWidth();
var o=~~((j/g.scrollWidth)*j)-2;
this._widthConstant=(o/j);
setTimeout(function(){m=Math.abs(g.scrollLeft)*(o/j)+i.left+f.left;
n=g.offsetHeight+i.top+f.top-7;
k.horizontalScrollHint.width(o).css({left:m,top:n});
},0);
k.horizontalScrollHint.fadeTo(200,0.5);
}if(this._hasVerticalScrollHint){var h=k.element.innerHeight();
var l=~~((h/g.scrollHeight)*h)-2;
this._heightConstant=(l/h);
setTimeout(function(){n=Math.abs(g.scrollTop)*(l/h)+i.top+f.top;
m=g.offsetWidth+i.left+f.left-7;
k.verticalScrollHint.height(l).css({left:m,top:n});
},0);
k.verticalScrollHint.fadeTo(200,0.5);
}}},_removeScrollHints:function(){if(this._showScrollHints){var f=this._lastAnimator.horizontalScrollHint;
var g=this._lastAnimator.verticalScrollHint;
if(this._hasHorizontalScrollHint&&f){f.hide();
}if(this._hasVerticalScrollHint&&g){g.hide();
}}},_simpleDragger:function(f){if(this._dragCanceled){return;
}this._cancelEvents(f);
var g=$telerik.getTouchEventLocation(f);
if(this._lastAnimator.element.length){this._throttleScroll(g);
this._alignScrollHints();
}this._storeLastLocation(g);
},_compositeDragger:function(f){if(this._dragCanceled){return;
}var i=$telerik.getTouchEventLocation(f);
var g=this._lastAnimator;
var h=g.element[0];
this._cancelEvents(f,g,i,"compositeDragger");
if(Math.abs(g.kX-i.x)>10||Math.abs(g.kY-i.y)>10){g.hasDragged=true;
this._addScrollHints();
if(b.TouchScrollExtender._getNeedsScrollExtender()){a(document.body).unbind("touchmove",this._compositeDragger).bind("touchmove",a.proxy(this._simpleDragger,this));
}else{a(document.body).unbind("mousemove",this._compositeDragger).bind("mousemove",a.proxy(this._simpleDragger,this));
}if($telerik.isIE){g.element.bind("click",this._cancelEvents);
h.setCapture(true);
}else{h.addEventListener("click",this._cancelEvents,true);
}}},disable:function(){this._detachEvents();
this._dragCanceled=true;
},enable:function(){this._dragCanceled=false;
},_onGestureStart:function(){this._detachEvents();
this._dragCanceled=true;
},_onGestureEnd:function(){this._dragCanceled=false;
},_endDrag:function(f){e();
if(this._dragCanceled){return;
}this._cancelEvents(f);
this._detachEvents();
if(b.TouchScrollExtender._getNeedsScrollExtender()){if(this._lastAnimator.originalEvent.touches.length==1&&!this._lastAnimator.hasDragged){var j=this._lastAnimator.originalEvent;
var g=document.createEvent("MouseEvents");
g.initMouseEvent("click",j.bubbles,j.cancelable,j.view,j.detail,j.screenX,j.screenY,j.clientX,j.clientY,false,false,false,false,j.button,j.relatedTarget);
j.target.dispatchEvent(g);
}}var k=this;
var i=$telerik.getTouchEventLocation(f);
var h=this._lastAnimator;
if($telerik.isIE){setTimeout(function(){h.element.unbind("click",k._cancelEvents);
document.releaseCapture();
},10);
}else{setTimeout(function(){h.element[0].removeEventListener("click",k._cancelEvents,true);
},0);
}if(h.hasDragged){if(h.element.length){h.endX=i.x;
h.endY=i.y;
}this._finishDrag(h);
}},_detachEvents:function(){if(b.TouchScrollExtender._getNeedsScrollExtender()){a(document.body).unbind("touchmove",this._simpleDragger).unbind("touchmove",this._compositeDragger).unbind("touchend",this._endDrag);
}else{a(document.body).unbind("mousemove",this._simpleDragger).unbind("mousemove",this._compositeDragger).unbind("mouseup",this._endDrag);
}},_finishDrag:function(f){var h=f.element[0].scrollLeft+f.kX-f.endX;
var i=f.element[0].scrollTop+f.kY-f.endY;
f.kX=0;
f.kY=0;
var g=this;
f.element.stop(true).animate({scrollLeft:h,scrollTop:i},{duration:500,easing:"easeOutQuad",complete:function(){g._removeScrollHints();
},step:function(){g._alignScrollHints();
}});
if(this._hasHorizontalScrollHint&&f.horizontalScrollHint){f.horizontalScrollHint.stop().css("opacity",0.5).fadeTo(450,0);
}if(this._hasVerticalScrollHint&&f.verticalScrollHint){f.verticalScrollHint.stop().css("opacity",0.5).fadeTo(450,0);
}},_cancelEvents:function(f){f.stopPropagation();
f.preventDefault();
},_setUnbindBeforeDragging:function(f){this._unbindBeforeDragging=f;
}};
Telerik.Web.UI.TouchScrollExtender.registerClass("Telerik.Web.UI.TouchScrollExtender",null,Sys.IDisposable);
function d(){c+=1;
if(c>1){e();
return true;
}}function e(){c=0;
}})($telerik.$);