(function(a){Type.registerNamespace("Telerik.Web.UI");
Telerik.Web.UI.TouchScrollExtender=function(b){this._containerElements=a(b);
var c=arguments[1]||{};
this._autoScan="autoScan" in c?c.autoScan:false;
this._showScrollHints="showScrollHints" in c?c.showScrollHints:true;
this._useRoundedHints="useRoundedHints" in c?c.useRoundedHints:true;
this._hasHorizontalScrollHint=false;
this._hasVerticalScrollHint=false;
this._verticalScrollHint=false;
this._horizontalScrollHint=false;
this._lastAnimator=false;
this._dragCanceled=false;
this.containers=new Array();
this._enableTouchScroll=true;
};
Telerik.Web.UI.TouchScrollExtender._getNeedsScrollExtender=function(){return $telerik.isMobileSafari||$telerik.isAndroid;
};
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 b=this;
this._containerElements.each(function(){this.style.overflow="hidden";
var d=a(this).addClass("RadTouchExtender");
var c={element:d.stop(),horizontalScrollHint:a('<div id="horizontalScrollHint" style="position: absolute; display: none; z-index: 200000; font-size: 0; height: 3px; border: 1px solid #333; background: #777; " />').appendTo(this.parentNode),verticalScrollHint:a('<div id="verticalScrollHint" style="position: absolute; display: none; z-index: 200000; width: 3px; border: 1px solid #333; background: #777; " />').appendTo(this.parentNode)};
if(this._useRoundedHints){c.horizontalScrollHint.css({"-moz-border-radius":"3px","-webkit-border-radius":"3px","border-radius":"3px"});
c.verticalScrollHint.css({"-moz-border-radius":"3px","-webkit-border-radius":"3px","border-radius":"3px"});
}d.data("dragID",b.containers.push(c)-1);
});
if($telerik.isTouchDevice){this._containerElements.bind("touchstart",a.proxy(this._startDrag,this));
this._containerElements.bind("gesturestart",a.proxy(this._onGestureStart,this));
this._containerElements.bind("gestureend",a.proxy(this._onGestureEnd,this));
}else{this._containerElements.bind("mousedown",a.proxy(this._startDrag,this));
}}},dispose:function(){this.containers=null;
this._containerElements=null;
this._events=null;
},_startDrag:function(c){var d=a(c.target);
var f=d.parents(".RadTouchExtender");
if(d.hasClass("RadTouchExtender")){f=f.add(d);
}this._lastAnimator=this.containers[f.data("dragID")];
this._hasHorizontalScrollHint=this._lastAnimator.element[0].offsetWidth<this._lastAnimator.element[0].scrollWidth;
this._hasVerticalScrollHint=this._lastAnimator.element[0].offsetHeight<this._lastAnimator.element[0].scrollHeight;
this._lastAnimator.hasDragged=false;
if(this._hasHorizontalScrollHint||this._hasVerticalScrollHint){this._lastAnimator.element.stop(true);
this._lastAnimator.originalEvent=c.originalEvent;
if(!$telerik.isTouchDevice){this._cancelEvents(c);
}var h=$telerik.getTouchEventLocation(c);
this._lastAnimator.kX=h.x;
this._lastAnimator.kY=h.y;
var b=this._lastAnimator.element.scrollLeft()||0;
var g=this._lastAnimator.element.scrollTop()||0;
this._lastAnimator.dragStartX=(b>0?b:0)+h.x;
this._lastAnimator.dragStartY=(g>0?g:0)+h.y;
this._lastAnimator.lastStamp=new Date().getTime();
if($telerik.isTouchDevice){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(b){var d={left:0,top:0,right:0,bottom:0,horizontal:0,vertical:0};
if(window.getComputedStyle){var c=window.getComputedStyle(b,null);
d.left=parseInt(c.getPropertyValue("border-left-width"),10);
d.right=parseInt(c.getPropertyValue("border-right-width"),10);
d.top=parseInt(c.getPropertyValue("border-top-width"),10);
d.bottom=parseInt(c.getPropertyValue("border-bottom-width"),10);
}else{d.left=b.currentStyle.borderLeftWidth;
d.right=b.currentStyle.borderRightWidth;
d.top=b.currentStyle.borderTopWidth;
d.bottom=b.currentStyle.borderBottomWidth;
}d.horizontal=d.left+d.right;
d.vertical=d.top+d.bottom;
return d;
},_addScrollHints:function(){if(this._showScrollHints){var i=0;
var e=0;
var b=this._lastAnimator;
var j=b.element[0];
var d=this._getBorderBox(j);
if(this._hasHorizontalScrollHint){var g=b.element.innerWidth();
var h=Math.floor((g/j.scrollWidth)*g)-2;
this._widthConstant=(h/g);
setTimeout(function(){i=Math.abs(j.scrollLeft)*(h/g)+j.offsetLeft+d.left;
e=j.offsetHeight+j.offsetTop+d.top-7;
b.horizontalScrollHint.width(h).css({left:i,top:e});
},0);
b.horizontalScrollHint.fadeTo(200,0.5);
}if(this._hasVerticalScrollHint){var f=b.element.innerHeight();
var c=Math.floor((f/j.scrollHeight)*f)-2;
this._heightConstant=(c/f);
setTimeout(function(){e=Math.abs(j.scrollTop)*(c/f)+j.offsetTop+d.top;
i=j.offsetWidth+j.offsetLeft+d.left-7;
b.verticalScrollHint.height(c).css({left:i,top:e});
},0);
b.verticalScrollHint.fadeTo(200,0.5);
}}},_alignScrollHints:function(){var f=0;
var d=0;
var g=this._lastAnimator.element[0];
var b=this._lastAnimator.horizontalScrollHint;
var c=this._lastAnimator.verticalScrollHint;
var e=this._getBorderBox(g);
if(this._hasHorizontalScrollHint&&b){f=Math.abs(g.scrollLeft)*this._widthConstant+g.offsetLeft+e.left;
b.css({left:f});
}if(this._hasVerticalScrollHint&&c){d=Math.abs(g.scrollTop)*this._heightConstant+g.offsetTop+e.top;
c.css({top:d});
}},_removeScrollHints:function(){if(this._showScrollHints){var b=this._lastAnimator.horizontalScrollHint;
var c=this._lastAnimator.verticalScrollHint;
if(this._hasHorizontalScrollHint&&b){b.hide();
}if(this._hasVerticalScrollHint&&c){c.hide();
}}},_simpleDragger:function(b){var d=new Date().getTime();
if((d/5)*5!=d){return;
}if(this._dragCanceled){return;
}var c=$telerik.getTouchEventLocation(b);
if(this._lastAnimator.element){this._lastAnimator.element.scrollLeft(this._lastAnimator.dragStartX-c.x);
this._lastAnimator.element.scrollTop(this._lastAnimator.dragStartY-c.y);
this._alignScrollHints();
var f=new Date().getTime();
if(f-this._lastAnimator.lastStamp>200){this._lastAnimator.kX=c.x;
this._lastAnimator.kY=c.y;
this._lastAnimator.lastStamp=f;
}}},_compositeDragger:function(b){if(this._dragCanceled){return;
}this._cancelEvents(b);
var c=$telerik.getTouchEventLocation(b);
if(Math.abs(this._lastAnimator.kX-c.x)>10||Math.abs(this._lastAnimator.kY-c.y)>10){this._lastAnimator.hasDragged=true;
this._addScrollHints();
if($telerik.isTouchDevice){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){this._lastAnimator.element.bind("click",this._cancelEvents);
this._lastAnimator.element[0].setCapture(true);
}else{this._lastAnimator.element[0].addEventListener("click",this._cancelEvents,true);
}}},_onGestureStart:function(){this._dragCanceled=true;
},_onGestureEnd:function(){this._dragCanceled=false;
},_endDrag:function(c){if(this._dragCanceled){return;
}this._cancelEvents(c);
if($telerik.isTouchDevice){a(document.body).unbind("touchmove",this._simpleDragger).unbind("touchmove",this._compositeDragger).unbind("touchend",this._endDrag);
if(this._lastAnimator.originalEvent.touches.length==1&&!this._lastAnimator.hasDragged){var b=this._lastAnimator.originalEvent;
var d=document.createEvent("MouseEvents");
d.initMouseEvent("click",b.bubbles,b.cancelable,b.view,b.detail,b.screenX,b.screenY,b.clientX,b.clientY,false,false,false,false,b.button,b.relatedTarget);
b.target.dispatchEvent(d);
}}else{a(document.body).unbind("mousemove",this._simpleDragger).unbind("mousemove",this._compositeDragger).unbind("mouseup",this._endDrag);
}var g=$telerik.getTouchEventLocation(c);
var f=this;
if($telerik.isIE){setTimeout(function(){f._lastAnimator.element.unbind("click",f._cancelEvents);
document.releaseCapture();
},10);
}else{setTimeout(function(){f._lastAnimator.element[0].removeEventListener("click",f._cancelEvents,true);
},0);
}if(this._lastAnimator.hasDragged){if(this._lastAnimator.element){this._lastAnimator.endX=g.x;
this._lastAnimator.endY=g.y;
}this._constrainDrag(this._lastAnimator);
}},_constrainDrag:function(c){var d=c.element[0].scrollLeft+c.kX-c.endX;
var b=c.element[0].scrollTop+c.kY-c.endY;
c.kX=0;
c.kY=0;
var e=this;
c.element.stop(true).animate({scrollLeft:d,scrollTop:b},{duration:500,easing:"easeOutQuad",complete:function(){e._removeScrollHints();
},step:function(){e._alignScrollHints();
}});
if(this._hasHorizontalScrollHint&&c.horizontalScrollHint){c.horizontalScrollHint.stop().fadeTo(0,0.5).fadeTo(450,0);
}if(this._hasVerticalScrollHint&&c.verticalScrollHint){c.verticalScrollHint.stop().fadeTo(0,0.5).fadeTo(450,0);
}},_cancelEvents:function(b){b.stopPropagation();
b.preventDefault();
}};
Telerik.Web.UI.TouchScrollExtender.registerClass("Telerik.Web.UI.TouchScrollExtender",null,Sys.IDisposable);
})($telerik.$);
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
