/**
 * iphoneSlide - jQuery plugin
 * @version: 0.48 (2010/08/30)
 * @requires jQuery v1.3.2 or later 
 * @author Hina, Cain Chen. hinablue [at] gmail [dot] com
 * Examples and documentation at: http://jquery.hinablue.me/jqiphoneslide
 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
**/
(function($){var x={handler:undefined,pageHandler:undefined,slideHandler:undefined,nextPageHandler:'.nextPage',prevPageHandler:'.prevPage',draglaunch:0.5,friction:0.325,sensitivity:20,extrashift:800,touchduring:800,direction:'horizontal',maxShiftPage:5,easing:"swing",pageshowfilter:false,onShiftComplete:function(){}};$.fn.iphoneSlide=function(q,r){var u=$.extend({},x,q),r=r;function __getMovingData(w,s,e,t){var v=0,s=0;v=(Math.abs(s-e)/Math.abs(t)).toPrecision(5);s=Math.floor(Math.pow(v,2)*Math.abs(u.extrashift)/(2*0.0098*Math.abs(u.friction)));s=(s>w/2)?Math.floor(w/3):s;return{"speed":v,"shift":s}}function __initPages(w){var a,workspace=w,handler=$(u.handler,workspace),pagesHandler=(!u.pageshowfilter)?handler.children(u.pageHandler):handler.children(u.pageHandler).filter(':visible'),matrixSqrt=0,matrixColumn=0;a=pagesHandler.length;switch(u.direction){case"matrix":matrixSqrt=Math.ceil(Math.sqrt(a));matrixColumn=Math.ceil(a/matrixSqrt);if(matrixColumn*matrixSqrt>a){var b=pagesHandler.filter(":first"),lastChild=pagesHandler.filter(":last");for(var i=0;i<(matrixColumn*matrixSqrt-a);i++){b.clone().empty().removeAttr('id').removeAttr('style').addClass("matrix-blank-page").css('display','block').insertAfter(lastChild)}a=matrixColumn*matrixSqrt}for(var i=matrixColumn;i>1;i--){$('<br class="matrix-break-point" style="clear:both;" />').insertAfter(pagesHandler.eq((i-1)*matrixSqrt-1))}handler.width(matrixSqrt*workspace.width()).height(matrixColumn*workspace.height());break;case"vertical":handler.height(a*workspace.height());break;case"horizontal":default:handler.width(a*workspace.width())}pagesHandler.css({'display':'block'});workspace.data("totalPages",a).data("matrixSqrt",matrixSqrt).data("matrixColumn",matrixColumn).data("nowPage",1).data("initIphoneSlide",true);if($.isFunction(r))r.call(workspace)}function __onSlideCallback(w){var a=w,nowPage=a.data("nowPage");if(u.pageshowfilter){u.onShiftComplete.call(a,$(u.handler,a).children(u.pageHandler).filter(':visible').eq(nowPage-1),nowPage)}else{u.onShiftComplete.call(a,$(u.handler,a).children(u.pageHandler).eq(nowPage-1),nowPage)}return false}function __slidingPage(h,d,m){var a=h.parent(),handler=h,direction=d,matrix=m,matrixSqrt=a.data("matrixSqrt"),left=((direction)?"-=":"+="),top=((direction)?"-=":"+="),_width=a.width(),_height=a.height();switch(u.direction){case"matrix":if(matrix){left=(direction)?"+=":"-=";handler.animate({'left':left+((matrixSqrt-1)*_width)+"px",'top':top+_height+"px"},function(){__onSlideCallback(a)})}else{handler.animate({'left':left+_width+"px"},function(){__onSlideCallback(a)})}break;case"vertical":handler.animate({'top':top+_height+"px"},function(){__onSlideCallback(a)});break;case"horizontal":default:handler.animate({'left':left+_width+"px"},function(){__onSlideCallback(a)})}}return this.each(function(){var i=$(this),handler=$(u.handler,i),dragAndDrop={origX:0,origY:0,X:0,Y:0},totalPages=0,nowPage=1,matrixSqrt=0,matrixColumn=0;var j=(navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/Android/i))?true:false;if(i.children().length>1){alert('The Selector('+i.attr('id')+')\'s page handler can not more than one element.');return this}if(u.handler==undefined||typeof u.handler!=="string"){u.handler=".iphone-slide-page-handler";i.children(':first').addClass('iphone-slide-page-handler')}if($(u.handler,i).children().length==0){alert('You have no page(s) context.');return this}if(u.pageHandler==undefined||typeof u.pageHandler!=="string"){switch(handler.attr('tagName').toLowerCase()){case"ul":case"ol":u.pageHandler='li';break;default:u.pageHandler=handler.children(':first').attr('tagName').toLowerCase()}}var k=function(a){var b=i.data("nowPage"),totalPages=i.data("totalPages"),matrixSqrt=i.data("matrixSqrt");b++;if(b<=totalPages){if(u.direction=="matrix"&&((b-1)%matrixSqrt==0)){__slidingPage(handler,true,true)}else{__slidingPage(handler,true,false)}}else{b=totalPages}i.data("nowPage",b);return false};var l=function(a){var b=i.data("nowPage"),totalPages=i.data("totalPages"),matrixSqrt=i.data("matrixSqrt");b--;if(b>0){if(u.direction=="matrix"&&(b%matrixSqrt==0)){__slidingPage(handler,false,true)}else{__slidingPage(handler,false,false)}}else{b=1}i.data("nowPage",b);return false};var m=false,__mouseStarted=false,__mouseDownEvent;var n=function(a){if(__mouseStarted)return false;__mouseStarted=true;__mouseDownEvent=a;a.preventDefault();var b=i.data("nowPage"),matrixSqrt=i.data("matrixSqrt");switch(u.direction){case"matrix":dragAndDrop.origX=(Math.ceil(b%matrixSqrt)===0)?(1-matrixSqrt)*i.width():(1-Math.ceil(b%matrixSqrt))*i.width();dragAndDrop.origY=(1-Math.ceil(b/matrixSqrt))*i.height();break;case"vertical":dragAndDrop.origY=(1-b)*i.height();break;case"horizontal":default:dragAndDrop.origX=(1-b)*i.width()}if(u.slideHandler==undefined||typeof u.slideHandler!=="string"||j===true){if(j===true){document.getElementById(i.attr("id")).addEventListener("touchmove",o,false);document.getElementById(i.attr("id")).addEventListener("touchend",p,false)}else{i.bind("mousemove",o,false).bind("mouseleave mouseup",p,false)}}else{handler.bind("mousemove",o,false).bind("mouseleave mouseup",p,false)}};var o=function(a){if($.browser.msie&&!a.button)return p(a);if(__mouseStarted){a.preventDefault();var b=(j!==true)?a:a.changedTouches[0];var c=(j!==true)?__mouseDownEvent:__mouseDownEvent.changedTouches[0];switch(u.direction){case"matrix":dragAndDrop.X=parseInt(b.pageX-c.pageX);dragAndDrop.Y=parseInt(b.pageY-c.pageY);handler.css({top:(dragAndDrop.origY+dragAndDrop.Y)+"px",left:(dragAndDrop.origX+dragAndDrop.X)+"px"});break;case"vertical":dragAndDrop.Y=parseInt(b.pageY-c.pageY);handler.css({top:(dragAndDrop.origY+dragAndDrop.Y)+"px"});break;case"horizontal":default:dragAndDrop.X=parseInt(b.pageX-c.pageX);handler.css({left:(dragAndDrop.origX+dragAndDrop.X)+"px"})}}return!__mouseStarted};var p=function(a){var b=i.data("totalPages"),nowPage=i.data("nowPage"),matrixSqrt=i.data("matrixSqrt"),matrixColumn=i.data("matrixColumn");if(u.slideHandler==undefined||typeof u.slideHandler!=="string"||j===true){if(j===true){document.getElementById(i.attr("id")).removeEventListener("touchmove",o,false)}else{i.unbind("mousemove",o,false)}}else{handler.unbind("mousemove",o,false)}if(__mouseStarted)m=(a.target==__mouseDownEvent.target);var c=(j!==true)?a:a.changedTouches[0];var d=(j!==true)?__mouseDownEvent:__mouseDownEvent.changedTouches[0];if(Math.max(Math.abs(d.pageX-c.pageX),Math.abs(d.pageY-c.pageY))>=parseInt(u.sensitivity)){var e,_width=i.width(),_height=i.height(),timeStamp=Math.abs(__mouseDownEvent.timeStamp-a.timeStamp);var f={"X":__getMovingData(_width,d.pageX,c.pageX,timeStamp),"Y":__getMovingData(_height,d.pageY,c.pageY,timeStamp),},easing={"X":Math.min(c.pageX-d.pageX,_width),"Y":Math.min(c.pageY-d.pageY,_height)},shift={"X":"","Y":"","EX":"","EY":"","shift":Math.max(f.X.shift,f.Y.shift),"speed":Math.max(f.X.speed,f.Y.speed)},pages={"X":(Math.abs(dragAndDrop.X)>=i.width()*u.draglaunch||Math.abs(dragAndDrop.Y)>=i.height()*u.draglaunch)?0:(timeStamp>u.touchduring)?1:Math.ceil(f.X.speed*f.X.shift/_width),"Y":(Math.abs(dragAndDrop.X)>=i.width()*u.draglaunch||Math.abs(dragAndDrop.Y)>=i.height()*u.draglaunch)?0:(timeStamp>u.touchduring)?1:Math.ceil(f.Y.speed*f.Y.shift/_height)};if(Math.abs(dragAndDrop.X)>=i.width()*u.draglaunch||Math.abs(dragAndDrop.Y)>=i.height()*u.draglaunch){shift.shift=0}e=Math.max(1/shift.speed*Math.abs(u.extrashift),Math.abs(u.extrashift)*0.5);switch(u.direction){case"matrix":var g=Math.ceil(nowPage/matrixSqrt);pages.X=(pages.X>matrixSqrt)?matrixSqrt:((Math.abs(dragAndDrop.X)>=i.width()*u.draglaunch)?1:((Math.floor(Math.abs(easing.Y/easing.X))>2)?0:pages.X));pages.Y=(pages.Y>matrixColumn)?matrixColumn:((Math.abs(dragAndDrop.Y)>=i.height()*u.draglaunch)?1:((Math.floor(Math.abs(easing.X/easing.Y))>2)?0:pages.Y));if(easing.X>0){pages.X=Math.min(pages.X,(nowPage-matrixSqrt*(g-1)-1));nowPage=((nowPage-pages.X)<1)?1:nowPage-pages.X;shift.X="+=";shift.EX="-="}else{pages.X=Math.min(pages.X,(matrixSqrt*g-nowPage));nowPage=(nowPage+pages.X>b)?b:nowPage+pages.X;shift.X="-=";shift.EX="+="}dragAndDrop.X=(dragAndDrop.X>0)?-1*dragAndDrop.X:dragAndDrop.X;shift.X+=(pages.X*_width+shift.shift+dragAndDrop.X).toString()+"px";shift.EX+=(shift.shift.toString())+"px";if(easing.Y>0){pages.Y=Math.min(pages.Y,(g-1));nowPage=((nowPage-pages.Y*matrixSqrt)<1)?1:nowPage-pages.Y*matrixSqrt;shift.Y="+=";shift.EY="-="}else{pages.Y=((matrixSqrt*pages.Y+nowPage)>b)?(matrixColumn-g):pages.Y;nowPage=(pages.Y*matrixSqrt>b)?b:nowPage+pages.Y*matrixSqrt;shift.Y="-=";shift.EY="+="}dragAndDrop.Y=(dragAndDrop.Y>0)?-1*dragAndDrop.Y:dragAndDrop.Y;shift.Y+=(pages.Y*_height+shift.shift+dragAndDrop.Y).toString()+"px";shift.EY+=(shift.shift.toString())+"px";break;case"vertical":pages.X=0;pages.Y=(pages.Y==0)?1:((pages.Y>u.maxShiftPage)?u.maxShiftPage:pages.Y);if(easing.Y>0){pages.Y=((nowPage-pages.Y)<1)?nowPage-1:pages.Y;nowPage=((nowPage-pages.Y)<1)?1:nowPage-pages.Y;shift.Y="+=";shift.EY="-="}else{pages.Y=((nowPage+pages.Y)>b)?b-nowPage:pages.Y;nowPage=((nowPage+pages.Y)>b)?b:nowPage+pages.Y;shift.Y="-=";shift.EY="+="}dragAndDrop.Y=(dragAndDrop.Y>0)?-1*dragAndDrop.Y:dragAndDrop.Y;shift.X="+=0px";shift.Y+=((pages.Y*_height+shift.shift+dragAndDrop.Y).toString())+"px";shift.EY+=(shift.shift.toString())+"px";shift.EX="+=0px";break;case"horizontal":default:pages.Y=0;pages.X=(pages.X==0)?1:((pages.X>u.maxShiftPage)?u.maxShiftPage:pages.X);if(easing.X>0){pages.X=((nowPage-pages.X)<1)?nowPage-1:pages.X;nowPage=((nowPage-pages.X)<1)?1:nowPage-pages.X;shift.X="+=";shift.EX="-="}else{pages.X=((nowPage+pages.X)>b)?b-nowPage:pages.X;nowPage=((nowPage+pages.X)>b)?b:nowPage+pages.X;shift.X="-=";shift.EX="+="}dragAndDrop.X=(dragAndDrop.X>0)?-1*dragAndDrop.X:dragAndDrop.X;shift.X+=(pages.X*_width+shift.shift+dragAndDrop.X).toString()+"px";shift.Y="+=0px";shift.EX+=(shift.shift.toString())+"px";shift.EY="+=0px"}var h=($.easing[u.easing]!==undefined)?u.easing:"swing";handler.animate({'top':shift.Y,'left':shift.X},e).animate({'top':shift.EY,'left':shift.EX},{duration:e,easing:h,complete:function(){__mouseStarted=false;__onSlideCallback(i)}})}else{__mouseStarted=false}if(j===true){document.getElementById(i.attr("id")).removeEventListener("touchend",p,false)}else{i.data("nowPage",nowPage).unbind("mouseleave mouseup",p,false)}i.data("nowPage",nowPage);return false};if(u.slideHandler==undefined||typeof u.slideHandler!=="string"||j===true){if(j===true){document.getElementById(i.attr("id")).addEventListener("touchstart",n,false)}else{i.bind("mousedown",n,false).bind("click",function(a){if(m){m=false;a.stopImmediatePropagation();return false}},false)}}else{handler.filter(u.slideHandler).bind("mousedown",n,false).bind("click",function(a){if(m){m=false;a.stopImmediatePropagation();return false}},false)}if(j!==true){handler.filter(u.nextPageHandler).bind("click",k,false);handler.filter(u.nextPageHandler).bind("click",l,false)}__initPages(i);return this})}})(jQuery);
