turn.js 89 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283
  1. (function(S) {
  2. var V, Z, E = "",
  3. d = "4.1.0",
  4. Q = Math.PI,
  5. J = Q / 2,
  6. B = "ontouchstart" in window,
  7. A = (B) ? {
  8. down: "touchstart",
  9. move: "touchmove",
  10. up: "touchend",
  11. over: "touchstart",
  12. out: "touchend"
  13. } : {
  14. down: "mousedown",
  15. move: "mousemove",
  16. up: "mouseup",
  17. over: "mouseover",
  18. out: "mouseout"
  19. },
  20. T = {
  21. backward: ["bl", "tl"],
  22. forward: ["br", "tr"],
  23. all: ["tl", "bl", "tr", "br", "l", "r"]
  24. },
  25. M = ["single", "double"],
  26. g = ["ltr", "rtl"],
  27. R = {
  28. acceleration: true,
  29. display: "double",
  30. duration: 600,
  31. page: 1,
  32. gradients: true,
  33. turnCorners: "bl,br",
  34. when: null
  35. },
  36. Y = {
  37. cornerSize: 400
  38. },
  39. G = 6,
  40. D = {
  41. init: function(n) {
  42. V = "WebKitCSSMatrix" in window || "MozPerspective" in document.body.style;
  43. Z = H();
  44. E = O();
  45. var j, l = this,
  46. k = 0,
  47. p = this.data(),
  48. o = this.children();
  49. var m = S(".flipbook").turn("page");
  50. n = S.extend({
  51. width: this.width(),
  52. height: this.height(),
  53. direction: this.attr("dir") || this.css("direction") || "ltr"
  54. }, R, n);
  55. p.opts = n;
  56. p.pageObjs = {};
  57. p.pages = {};
  58. p.pageWrap = {};
  59. p.pageZoom = {};
  60. p.pagePlace = {};
  61. p.pageMv = [];
  62. p.zoom = 1;
  63. p.totalPages = n.pages || 0;
  64. p.eventHandlers = {
  65. touchStart: S.proxy(D._touchStart, this),
  66. touchMove: S.proxy(D._touchMove, this),
  67. touchEnd: S.proxy(D._touchEnd, this),
  68. start: S.proxy(D._eventStart, this)
  69. };
  70. if (n.when) {
  71. for (j in n.when) {
  72. if (N(j, n.when)) {
  73. this.bind(j, n.when[j])
  74. }
  75. }
  76. }
  77. this.css({
  78. position: "relative",
  79. width: n.width,
  80. height: n.height
  81. });
  82. this.turn("display", n.display);
  83. if (n.direction !== "") {
  84. this.turn("direction", n.direction)
  85. }
  86. if (V && !B && n.acceleration) {
  87. this.transform(X(0, 0, true))
  88. }
  89. for (j = 0; j < o.length; j++) {
  90. if (S(o[j]).attr("ignore") != "1") {
  91. this.turn("addPage", o[j], ++k)
  92. }
  93. }
  94. S(this).bind(A.down, p.eventHandlers.touchStart).bind("end", D._eventEnd).bind("pressed", D._eventPressed).bind("released", D._eventReleased).bind("flip", D._flip);
  95. S(this).parent().bind("start", p.eventHandlers.start);
  96. S(document).bind(A.move, p.eventHandlers.touchMove).bind(A.up, p.eventHandlers.touchEnd);
  97. this.turn("page", n.page);
  98. p.done = true;
  99. return this
  100. },
  101. addPage: function(n, o) {
  102. var m, i, l = false,
  103. k = this.data(),
  104. j = k.totalPages + 1;
  105. if (k.destroying) {
  106. return false
  107. }
  108. if ((m = /\bp([0-9]+)\b/.exec(S(n).attr("class")))) {
  109. o = parseInt(m[1], 10)
  110. }
  111. if (o) {
  112. if (o == j) {
  113. l = true
  114. } else {
  115. if (o > j) {
  116. throw F('Page "' + o + '" cannot be inserted')
  117. }
  118. }
  119. } else {
  120. o = j;
  121. l = true
  122. }
  123. if (o >= 1 && o <= j) {
  124. if (k.display == "double") {
  125. i = (o % 2) ? " odd" : " even"
  126. } else {
  127. i = ""
  128. }
  129. if (k.done) {
  130. this.turn("stop")
  131. }
  132. if (o in k.pageObjs) {
  133. D._movePages.call(this, o, 1)
  134. }
  135. if (l) {
  136. k.totalPages = j
  137. }
  138. k.pageObjs[o] = S(n).css({
  139. "float": "left"
  140. }).addClass("page p" + o + i);
  141. if (!C() && k.pageObjs[o].hasClass("hard")) {
  142. k.pageObjs[o].removeClass("hard")
  143. }
  144. D._addPage.call(this, o);
  145. D._removeFromDOM.call(this)
  146. }
  147. return this
  148. },
  149. _addPage: function(l) {
  150. var i = this.data(),
  151. k = i.pageObjs[l];
  152. if (k) {
  153. if (D._necessPage.call(this, l)) {
  154. if (!i.pageWrap[l]) {
  155. i.pageWrap[l] = S("<div/>", {
  156. "class": "page-wrapper",
  157. page: l,
  158. css: {
  159. position: "absolute",
  160. overflow: "hidden"
  161. }
  162. });
  163. this.append(i.pageWrap[l]);
  164. if (!i.pagePlace[l]) {
  165. i.pagePlace[l] = l;
  166. i.pageObjs[l].appendTo(i.pageWrap[l])
  167. }
  168. var j = D._pageSize.call(this, l, true);
  169. k.css({
  170. width: j.width,
  171. height: j.height
  172. });
  173. i.pageWrap[l].css(j)
  174. }
  175. if (i.pagePlace[l] == l) {
  176. D._makeFlip.call(this, l)
  177. }
  178. } else {
  179. i.pagePlace[l] = 0;
  180. if (i.pageObjs[l]) {
  181. i.pageObjs[l].remove()
  182. }
  183. }
  184. }
  185. },
  186. hasPage: function(i) {
  187. return N(i, this.data().pageObjs)
  188. },
  189. center: function(m) {
  190. var k = this.data(),
  191. i = S(this).turn("size"),
  192. j = 0;
  193. if (!k.noCenter) {
  194. if (k.display == "double") {
  195. var l = this.turn("view", m || k.tpage || k.page);
  196. if (k.direction == "ltr") {
  197. if (!l[0]) {
  198. j -= i.width / 4
  199. } else {
  200. if (!l[1]) {
  201. j += i.width / 4
  202. }
  203. }
  204. } else {
  205. if (!l[0]) {
  206. j += i.width / 4
  207. } else {
  208. if (!l[1]) {
  209. j -= i.width / 4
  210. }
  211. }
  212. }
  213. }
  214. S(this).css({
  215. marginLeft: j
  216. })
  217. }
  218. return this
  219. },
  220. destroy: function() {
  221. var l, k = this,
  222. j = this.data(),
  223. i = ["end", "first", "flip", "last", "pressed", "released", "start", "turning", "turned", "zooming", "missing"];
  224. if (a("destroying", this) == "prevented") {
  225. return
  226. }
  227. j.destroying = true;
  228. S.each(i, function(n, m) {
  229. k.unbind(m)
  230. });
  231. this.parent().unbind("start", j.eventHandlers.start);
  232. S(document).unbind(A.move, j.eventHandlers.touchMove).unbind(A.up, j.eventHandlers.touchEnd);
  233. while (j.totalPages !== 0) {
  234. this.turn("removePage", j.totalPages)
  235. }
  236. if (j.fparent) {
  237. j.fparent.remove()
  238. }
  239. if (j.shadow) {
  240. j.shadow.remove()
  241. }
  242. this.removeData();
  243. j = null;
  244. return this
  245. },
  246. is: function() {
  247. return typeof(this.data().pages) == "object"
  248. },
  249. zoom: function(n) {
  250. var k = this.data();
  251. if (typeof(n) == "number") {
  252. if (n < 0.001 || n > 100) {
  253. throw F(n + " is not a value for zoom")
  254. }
  255. if (a("zooming", this, [n, k.zoom]) == "prevented") {
  256. return this
  257. }
  258. var l = this.turn("size"),
  259. p = this.turn("view"),
  260. m = 1 / k.zoom,
  261. q = Math.round(l.width * m * n),
  262. j = Math.round(l.height * m * n);
  263. k.zoom = n;
  264. S(this).turn("stop").turn("size", q, j);
  265. if (k.opts.autoCenter) {
  266. this.turn("center")
  267. }
  268. D._updateShadow.call(this);
  269. for (var o = 0; o < p.length; o++) {
  270. if (p[o] && k.pageZoom[p[o]] != k.zoom) {
  271. this.trigger("zoomed", [p[o], p, k.pageZoom[p[o]], k.zoom]);
  272. k.pageZoom[p[o]] = k.zoom
  273. }
  274. }
  275. return this
  276. } else {
  277. return k.zoom
  278. }
  279. },
  280. _pageSize: function(o, l) {
  281. var j = this.data(),
  282. m = {};
  283. if (j.display == "single") {
  284. m.width = this.width();
  285. m.height = this.height();
  286. if (l) {
  287. m.top = 0;
  288. m.left = 0;
  289. m.right = "auto"
  290. }
  291. } else {
  292. var n = this.width() / 2,
  293. i = this.height();
  294. if (j.pageObjs[o].hasClass("own-size")) {
  295. m.width = j.pageObjs[o].width();
  296. m.height = j.pageObjs[o].height()
  297. } else {
  298. m.width = n;
  299. m.height = i
  300. }
  301. if (l) {
  302. var k = o % 2;
  303. m.top = (i - m.height) / 2;
  304. if (j.direction == "ltr") {
  305. m[(k) ? "right" : "left"] = n - m.width;
  306. m[(k) ? "left" : "right"] = "auto"
  307. } else {
  308. m[(k) ? "left" : "right"] = n - m.width;
  309. m[(k) ? "right" : "left"] = "auto"
  310. }
  311. }
  312. }
  313. return m
  314. },
  315. _makeFlip: function(l) {
  316. var i = this.data();
  317. if (!i.pages[l] && i.pagePlace[l] == l) {
  318. var k = i.display == "single",
  319. j = l % 2;
  320. i.pages[l] = i.pageObjs[l].css(D._pageSize.call(this, l)).flip({
  321. page: l,
  322. next: (j || k) ? l + 1 : l - 1,
  323. turn: this
  324. }).flip("disable", i.disabled);
  325. D._setPageLoc.call(this, l);
  326. i.pageZoom[l] = i.zoom
  327. }
  328. return i.pages[l]
  329. },
  330. _makeRange: function() {
  331. var k, j, i = this.data();
  332. if (i.totalPages < 1) {
  333. return
  334. }
  335. j = this.turn("range");
  336. for (k = j[0]; k <= j[1]; k++) {
  337. D._addPage.call(this, k)
  338. }
  339. },
  340. range: function(n) {
  341. var k, j, i, l, m = this.data();
  342. n = n || m.tpage || m.page || 1;
  343. l = D._view.call(this, n);
  344. if (n < 1 || n > m.totalPages) {
  345. throw F('"' + n + '" is not a valid page')
  346. }
  347. l[1] = l[1] || l[0];
  348. if (l[0] >= 1 && l[1] <= m.totalPages) {
  349. k = Math.floor((G - 2) / 2);
  350. if (m.totalPages - l[1] > l[0]) {
  351. j = Math.min(l[0] - 1, k);
  352. i = 2 * k - j
  353. } else {
  354. i = Math.min(m.totalPages - l[1], k);
  355. j = 2 * k - i
  356. }
  357. } else {
  358. j = G - 1;
  359. i = G - 1
  360. }
  361. return [Math.max(1, l[0] - j), Math.min(m.totalPages, l[1] + i)]
  362. },
  363. _necessPage: function(j) {
  364. if (j === 0) {
  365. return true
  366. }
  367. var i = this.turn("range");
  368. return this.data().pageObjs[j].hasClass("fixed") || (j >= i[0] && j <= i[1])
  369. },
  370. _removeFromDOM: function() {
  371. var j, i = this.data();
  372. for (j in i.pageWrap) {
  373. if (N(j, i.pageWrap) && !D._necessPage.call(this, j)) {
  374. D._removePageFromDOM.call(this, j)
  375. }
  376. }
  377. },
  378. _removePageFromDOM: function(k) {
  379. var i = this.data();
  380. if (i.pages[k]) {
  381. var j = i.pages[k].data();
  382. b._moveFoldingPage.call(i.pages[k], false);
  383. if (j.f && j.f.fwrapper) {
  384. j.f.fwrapper.remove()
  385. }
  386. i.pages[k].removeData();
  387. i.pages[k].remove();
  388. delete i.pages[k]
  389. }
  390. if (i.pageObjs[k]) {
  391. i.pageObjs[k].remove()
  392. }
  393. if (i.pageWrap[k]) {
  394. i.pageWrap[k].remove();
  395. delete i.pageWrap[k]
  396. }
  397. D._removeMv.call(this, k);
  398. delete i.pagePlace[k];
  399. delete i.pageZoom[k]
  400. },
  401. removePage: function(j) {
  402. var i = this.data();
  403. if (j == "*") {
  404. while (i.totalPages !== 0) {
  405. this.turn("removePage", i.totalPages)
  406. }
  407. } else {
  408. if (j < 1 || j > i.totalPages) {
  409. throw F("The page " + j + " doesn't exist")
  410. }
  411. if (i.pageObjs[j]) {
  412. this.turn("stop");
  413. D._removePageFromDOM.call(this, j);
  414. delete i.pageObjs[j]
  415. }
  416. D._movePages.call(this, j, -1);
  417. i.totalPages = i.totalPages - 1;
  418. if (i.page > i.totalPages) {
  419. i.page = null;
  420. D._fitPage.call(this, i.totalPages)
  421. } else {
  422. D._makeRange.call(this);
  423. this.turn("update")
  424. }
  425. }
  426. return this
  427. },
  428. _movePages: function(i, j) {
  429. var o, k = this,
  430. n = this.data(),
  431. l = n.display == "single",
  432. m = function(s) {
  433. var q = s + j,
  434. r = q % 2,
  435. p = (r) ? " odd " : " even ";
  436. if (n.pageObjs[s]) {
  437. n.pageObjs[q] = n.pageObjs[s].removeClass("p" + s + " odd even").addClass("p" + q + p)
  438. }
  439. if (n.pagePlace[s] && n.pageWrap[s]) {
  440. n.pagePlace[q] = q;
  441. if (n.pageObjs[q].hasClass("fixed")) {
  442. n.pageWrap[q] = n.pageWrap[s].attr("page", q)
  443. } else {
  444. n.pageWrap[q] = n.pageWrap[s].css(D._pageSize.call(k, q, true)).attr("page", q)
  445. }
  446. if (n.pages[s]) {
  447. n.pages[q] = n.pages[s].flip("options", {
  448. page: q,
  449. next: (l || r) ? q + 1 : q - 1
  450. })
  451. }
  452. if (j) {
  453. delete n.pages[s];
  454. delete n.pagePlace[s];
  455. delete n.pageZoom[s];
  456. delete n.pageObjs[s];
  457. delete n.pageWrap[s]
  458. }
  459. }
  460. };
  461. if (j > 0) {
  462. for (o = n.totalPages; o >= i; o--) {
  463. m(o)
  464. }
  465. } else {
  466. for (o = i; o <= n.totalPages; o++) {
  467. m(o)
  468. }
  469. }
  470. },
  471. display: function(k) {
  472. var l = this.data(),
  473. j = l.display;
  474. if (k === undefined) {
  475. return j
  476. } else {
  477. if (S.inArray(k, M) == -1) {
  478. throw F('"' + k + '" is not a value for display')
  479. }
  480. switch (k) {
  481. case "single":
  482. if (!l.pageObjs[0]) {
  483. this.turn("stop").css({
  484. "overflow": "hidden"
  485. });
  486. l.pageObjs[0] = S("<div />", {
  487. "class": "page p-temporal"
  488. }).css({
  489. width: this.width(),
  490. height: this.height()
  491. }).appendTo(this)
  492. }
  493. this.addClass("shadow");
  494. break;
  495. case "double":
  496. if (l.pageObjs[0]) {
  497. this.turn("stop").css({
  498. "overflow": ""
  499. });
  500. l.pageObjs[0].remove();
  501. delete l.pageObjs[0]
  502. }
  503. this.removeClass("shadow");
  504. break
  505. }
  506. l.display = k;
  507. if (j) {
  508. var i = this.turn("size");
  509. D._movePages.call(this, 1, 0);
  510. this.turn("size", i.width, i.height).turn("update")
  511. }
  512. return this
  513. }
  514. },
  515. direction: function(i) {
  516. var j = this.data();
  517. if (i === undefined) {
  518. return j.direction
  519. } else {
  520. i = i.toLowerCase();
  521. if (S.inArray(i, g) == -1) {
  522. throw F('"' + i + '" is not a value for direction')
  523. }
  524. if (i == "rtl") {
  525. S(this).attr("dir", "ltr").css({
  526. direction: "ltr"
  527. })
  528. }
  529. j.direction = i;
  530. if (j.done) {
  531. this.turn("size", S(this).width(), S(this).height())
  532. }
  533. return this
  534. }
  535. },
  536. animating: function() {
  537. return this.data().pageMv.length > 0
  538. },
  539. corner: function() {
  540. var j, k, i = this.data();
  541. for (k in i.pages) {
  542. if (N(k, i.pages)) {
  543. if ((j = i.pages[k].flip("corner"))) {
  544. return j
  545. }
  546. }
  547. }
  548. return false
  549. },
  550. data: function() {
  551. return this.data()
  552. },
  553. disable: function(j) {
  554. var l, i = this.data(),
  555. k = this.turn("view");
  556. i.disabled = j === undefined || j === true;
  557. for (l in i.pages) {
  558. if (N(l, i.pages)) {
  559. i.pages[l].flip("disable", (i.disabled) ? true : S.inArray(parseInt(l, 10), k) == -1)
  560. }
  561. }
  562. return this
  563. },
  564. disabled: function(i) {
  565. if (i === undefined) {
  566. return this.data().disabled === true
  567. } else {
  568. return this.turn("disable", i)
  569. }
  570. },
  571. size: function(m, i) {
  572. if (m === undefined || i === undefined) {
  573. return {
  574. width: this.width(),
  575. height: this.height()
  576. }
  577. } else {
  578. this.turn("stop");
  579. var n, k, j = this.data(),
  580. l = (j.display == "double") ? m / 2 : m;
  581. this.css({
  582. width: m,
  583. height: i
  584. });
  585. if (j.pageObjs[0]) {
  586. j.pageObjs[0].css({
  587. width: l,
  588. height: i
  589. })
  590. }
  591. for (n in j.pageWrap) {
  592. if (!N(n, j.pageWrap)) {
  593. continue
  594. }
  595. k = D._pageSize.call(this, n, true);
  596. j.pageObjs[n].css({
  597. width: k.width,
  598. height: k.height
  599. });
  600. j.pageWrap[n].css(k);
  601. if (j.pages[n]) {
  602. j.pages[n].css({
  603. width: k.width,
  604. height: k.height
  605. })
  606. }
  607. }
  608. this.turn("resize");
  609. return this
  610. }
  611. },
  612. resize: function() {
  613. var j, i = this.data();
  614. if (i.pages[0]) {
  615. i.pageWrap[0].css({
  616. left: -this.width()
  617. });
  618. i.pages[0].flip("resize", true)
  619. }
  620. for (j = 1; j <= i.totalPages; j++) {
  621. if (i.pages[j]) {
  622. i.pages[j].flip("resize", true)
  623. }
  624. }
  625. D._updateShadow.call(this);
  626. if (i.opts.autoCenter) {
  627. this.turn("center")
  628. }
  629. },
  630. _removeMv: function(l) {
  631. var j, k = this.data();
  632. for (j = 0; j < k.pageMv.length; j++) {
  633. if (k.pageMv[j] == l) {
  634. k.pageMv.splice(j, 1);
  635. return true
  636. }
  637. }
  638. return false
  639. },
  640. _addMv: function(j) {
  641. var i = this.data();
  642. D._removeMv.call(this, j);
  643. i.pageMv.push(j)
  644. },
  645. _view: function(j) {
  646. var i = this.data();
  647. j = j || i.page;
  648. if (i.display == "double") {
  649. return (j % 2) ? [j - 1, j] : [j, j + 1]
  650. } else {
  651. return [j]
  652. }
  653. },
  654. view: function(k) {
  655. var i = this.data(),
  656. j = D._view.call(this, k);
  657. if (i.display == "double") {
  658. return [(j[0] > 0) ? j[0] : 0, (j[1] <= i.totalPages) ? j[1] : 0]
  659. } else {
  660. return [(j[0] > 0 && j[0] <= i.totalPages) ? j[0] : 0]
  661. }
  662. },
  663. stop: function(m, l) {
  664. if (this.turn("animating")) {
  665. var j, k, o, n = this.data();
  666. if (n.tpage) {
  667. n.page = n.tpage;
  668. delete n["tpage"]
  669. }
  670. for (j = 0; j < n.pageMv.length; j++) {
  671. if (!n.pageMv[j] || n.pageMv[j] === m) {
  672. continue
  673. }
  674. o = n.pages[n.pageMv[j]];
  675. k = o.data().f.opts;
  676. o.flip("hideFoldedPage", l);
  677. if (!l) {
  678. b._moveFoldingPage.call(o, false)
  679. }
  680. if (k.force) {
  681. k.next = (k.page % 2 === 0) ? k.page - 1 : k.page + 1;
  682. delete k["force"]
  683. }
  684. }
  685. }
  686. this.turn("update");
  687. return this
  688. },
  689. pages: function(i) {
  690. var k = this.data();
  691. if (i) {
  692. if (i < k.totalPages) {
  693. for (var j = k.totalPages; j > i; j--) {
  694. this.turn("removePage", j)
  695. }
  696. }
  697. k.totalPages = i;
  698. D._fitPage.call(this, k.page);
  699. return this
  700. } else {
  701. return k.totalPages
  702. }
  703. },
  704. _missing: function(m) {
  705. var j = this.data();
  706. if (j.totalPages < 1) {
  707. return
  708. }
  709. var k, l = this.turn("range", m),
  710. i = [];
  711. for (k = l[0]; k <= l[1]; k++) {
  712. if (!j.pageObjs[k]) {
  713. i.push(k)
  714. }
  715. }
  716. if (i.length > 0) {
  717. this.trigger("missing", [i])
  718. }
  719. },
  720. _fitPage: function(m) {
  721. var k = this.data(),
  722. l = this.turn("view", m);
  723. D._missing.call(this, m);
  724. if (!k.pageObjs[m]) {
  725. return
  726. }
  727. k.page = m;
  728. this.turn("stop");
  729. for (var j = 0; j < l.length; j++) {
  730. if (l[j] && k.pageZoom[l[j]] != k.zoom) {
  731. this.trigger("zoomed", [l[j], l, k.pageZoom[l[j]], k.zoom]);
  732. k.pageZoom[l[j]] = k.zoom
  733. }
  734. }
  735. D._removeFromDOM.call(this);
  736. D._makeRange.call(this);
  737. D._updateShadow.call(this);
  738. this.trigger("turned", [m, l]);
  739. this.turn("update");
  740. if (k.opts.autoCenter) {
  741. this.turn("center")
  742. }
  743. },
  744. _turnPage: function(m) {
  745. var l, t, s = this.data(),
  746. o = s.pagePlace[m],
  747. i = this.turn("view"),
  748. r = this.turn("view", m);
  749. if (s.page != m) {
  750. var j = s.page;
  751. if (a("turning", this, [m, r]) == "prevented") {
  752. if (j == s.page && S.inArray(o, s.pageMv) != -1) {
  753. s.pages[o].flip("hideFoldedPage", true)
  754. }
  755. return
  756. }
  757. if (S.inArray(1, r) != -1) {
  758. this.trigger("first")
  759. }
  760. if (S.inArray(s.totalPages, r) != -1) {
  761. this.trigger("last")
  762. }
  763. }
  764. if (s.display == "single") {
  765. l = i[0];
  766. t = r[0]
  767. } else {
  768. if (i[1] && m > i[1]) {
  769. l = i[1];
  770. t = r[0]
  771. } else {
  772. if (i[0] && m < i[0]) {
  773. l = i[0];
  774. t = r[1]
  775. }
  776. }
  777. }
  778. var k = s.opts.turnCorners.split(","),
  779. q = s.pages[l].data().f,
  780. p = q.opts,
  781. n = q.point;
  782. D._missing.call(this, m);
  783. if (!s.pageObjs[m]) {
  784. return
  785. }
  786. this.turn("stop");
  787. s.page = m;
  788. D._makeRange.call(this);
  789. s.tpage = t;
  790. if (p.next != t) {
  791. p.next = t;
  792. p.force = true
  793. }
  794. this.turn("update");
  795. q.point = n;
  796. if (q.effect == "hard") {
  797. if (s.direction == "ltr") {
  798. s.pages[l].flip("turnPage", (m > l) ? "r" : "l")
  799. } else {
  800. s.pages[l].flip("turnPage", (m > l) ? "l" : "r")
  801. }
  802. } else {
  803. if (s.direction == "ltr") {
  804. s.pages[l].flip("turnPage", k[(m > l) ? 1 : 0])
  805. } else {
  806. s.pages[l].flip("turnPage", k[(m > l) ? 0 : 1])
  807. }
  808. }
  809. },
  810. page: function(j) {
  811. var i = this.data();
  812. if (j === undefined) {
  813. return i.page
  814. } else {
  815. if (!i.disabled && !i.destroying) {
  816. j = parseInt(j, 10);
  817. if (j > 0 && j <= i.totalPages) {
  818. if (j != i.page) {
  819. if (!i.done || S.inArray(j, this.turn("view")) != -1) {
  820. D._fitPage.call(this, j)
  821. } else {
  822. D._turnPage.call(this, j)
  823. }
  824. }
  825. return this
  826. } else {
  827. throw F("The page " + j + " does not exist")
  828. }
  829. }
  830. }
  831. },
  832. next: function() {
  833. return this.turn("page", Math.min(this.data().totalPages, D._view.call(this, this.data().page).pop() + 1))
  834. },
  835. previous: function() {
  836. return this.turn("page", Math.max(1, D._view.call(this, this.data().page).shift() - 1))
  837. },
  838. peel: function(l, i) {
  839. var m = this.data(),
  840. k = this.turn("view");
  841. i = (i === undefined) ? true : i === true;
  842. if (l === false) {
  843. this.turn("stop", null, i)
  844. } else {
  845. if (m.display == "single") {
  846. m.pages[m.page].flip("peel", l, i)
  847. } else {
  848. var j;
  849. if (m.direction == "ltr") {
  850. j = (l.indexOf("l") != -1) ? k[0] : k[1]
  851. } else {
  852. j = (l.indexOf("l") != -1) ? k[1] : k[0]
  853. }
  854. if (m.pages[j]) {
  855. m.pages[j].flip("peel", l, i)
  856. }
  857. }
  858. }
  859. return this
  860. },
  861. _addMotionPage: function() {
  862. var i = S(this).data().f.opts,
  863. j = i.turn,
  864. k = j.data();
  865. D._addMv.call(j, i.page)
  866. },
  867. _eventStart: function(i, j, l) {
  868. var m = j.turn.data(),
  869. k = m.pageZoom[j.page];
  870. if (i.isDefaultPrevented()) {
  871. D._updateShadow.call(j.turn);
  872. return
  873. }
  874. if (k && k != m.zoom) {
  875. j.turn.trigger("zoomed", [j.page, j.turn.turn("view", j.page), k, m.zoom]);
  876. m.pageZoom[j.page] = m.zoom
  877. }
  878. if (m.display == "single" && l) {
  879. if ((l.charAt(1) == "l" && m.direction == "ltr") || (l.charAt(1) == "r" && m.direction == "rtl")) {
  880. j.next = (j.next < j.page) ? j.next : j.page - 1;
  881. j.force = true
  882. } else {
  883. j.next = (j.next > j.page) ? j.next : j.page + 1
  884. }
  885. }
  886. D._addMotionPage.call(i.target);
  887. D._updateShadow.call(j.turn)
  888. },
  889. _eventEnd: function(i, o, p) {
  890. var n = S(i.target),
  891. l = n.data().f,
  892. k = o.turn,
  893. m = k.data();
  894. if (p) {
  895. var j = m.tpage || m.page;
  896. if (j == o.next || j == o.page) {
  897. delete m.tpage;
  898. D._fitPage.call(k, j || o.next, true)
  899. }
  900. } else {
  901. D._removeMv.call(k, o.page);
  902. D._updateShadow.call(k);
  903. k.turn("update")
  904. }
  905. },
  906. _eventPressed: function(i) {
  907. var n, j = S(i.target).data().f,
  908. l = j.opts.turn,
  909. m = l.data(),
  910. k = m.pages;
  911. m.mouseAction = true;
  912. l.turn("update");
  913. return j.time = new Date().getTime()
  914. },
  915. _eventReleased: function(i, j) {
  916. var n, o = S(i.target),
  917. l = o.data().f,
  918. k = l.opts.turn,
  919. m = k.data();
  920. if (m.display == "single") {
  921. n = (j.corner == "br" || j.corner == "tr") ? j.x < o.width() / 2 : j.x > o.width() / 2
  922. } else {
  923. n = j.x < 0 || j.x > o.width()
  924. }
  925. if ((new Date()).getTime() - l.time < 200 || n) {
  926. i.preventDefault();
  927. D._turnPage.call(k, l.opts.next)
  928. }
  929. m.mouseAction = false
  930. },
  931. _flip: function(i) {
  932. i.stopPropagation();
  933. var j = S(i.target).data().f.opts;
  934. var k = i.target.id;
  935. j.turn.trigger("turn", [j.next]);
  936. if (j.turn.data().opts.autoCenter) {
  937. j.turn.turn("center", j.next)
  938. }
  939. S(".fanye").show();
  940. if (k == "last") {
  941. S("#loading").remove();
  942. S(".flipbook-viewport").hide();
  943. S("#end").show()
  944. }
  945. },
  946. _touchStart: function() {
  947. var j = this.data();
  948. for (var i in j.pages) {
  949. if (N(i, j.pages) && b._eventStart.apply(j.pages[i], arguments) === false) {
  950. return false
  951. }
  952. }
  953. },
  954. _touchMove: function() {
  955. var j = this.data();
  956. for (var i in j.pages) {
  957. if (N(i, j.pages)) {
  958. b._eventMove.apply(j.pages[i], arguments)
  959. }
  960. }
  961. },
  962. _touchEnd: function() {
  963. var j = this.data();
  964. if (S(".fanye").css("display") == "block") {
  965. S(".fanye").hide()
  966. } else {
  967. S(".fanye").show()
  968. }
  969. for (var i in j.pages) {
  970. if (N(i, j.pages)) {
  971. b._eventEnd.apply(j.pages[i], arguments)
  972. }
  973. }
  974. },
  975. calculateZ: function(w) {
  976. var q, n, v, k, t, s = this,
  977. m = this.data(),
  978. j = this.turn("view"),
  979. u = j[0] || j[1],
  980. o = w.length - 1,
  981. l = {
  982. pageZ: {},
  983. partZ: {},
  984. pageV: {}
  985. },
  986. p = function(r) {
  987. var i = s.turn("view", r);
  988. if (i[0]) {
  989. l.pageV[i[0]] = true
  990. }
  991. if (i[1]) {
  992. l.pageV[i[1]] = true
  993. }
  994. };
  995. for (q = 0; q <= o; q++) {
  996. n = w[q];
  997. v = m.pages[n].data().f.opts.next;
  998. k = m.pagePlace[n];
  999. p(n);
  1000. p(v);
  1001. t = (m.pagePlace[v] == v) ? v : n;
  1002. l.pageZ[t] = m.totalPages - Math.abs(u - t);
  1003. l.partZ[k] = m.totalPages * 2 - o + q
  1004. }
  1005. return l
  1006. },
  1007. update: function() {
  1008. var l, k = this.data();
  1009. if (this.turn("animating") && k.pageMv[0] !== 0) {
  1010. var i, q, o, m = this.turn("calculateZ", k.pageMv),
  1011. j = this.turn("corner"),
  1012. n = this.turn("view"),
  1013. r = this.turn("view", k.tpage);
  1014. for (l in k.pageWrap) {
  1015. if (!N(l, k.pageWrap)) {
  1016. continue
  1017. }
  1018. o = k.pageObjs[l].hasClass("fixed");
  1019. k.pageWrap[l].css({
  1020. display: (m.pageV[l] || o) ? "" : "none",
  1021. zIndex: (k.pageObjs[l].hasClass("hard") ? m.partZ[l] : m.pageZ[l]) || (o ? -1 : 0)
  1022. });
  1023. if ((i = k.pages[l])) {
  1024. i.flip("z", m.partZ[l] || null);
  1025. if (m.pageV[l]) {
  1026. i.flip("resize")
  1027. }
  1028. if (k.tpage) {
  1029. i.flip("hover", false).flip("disable", S.inArray(parseInt(l, 10), k.pageMv) == -1 && l != r[0] && l != r[1])
  1030. } else {
  1031. i.flip("hover", j === false).flip("disable", l != n[0] && l != n[1])
  1032. }
  1033. }
  1034. }
  1035. } else {
  1036. for (l in k.pageWrap) {
  1037. if (!N(l, k.pageWrap)) {
  1038. continue
  1039. }
  1040. var s = D._setPageLoc.call(this, l);
  1041. if (k.pages[l]) {
  1042. k.pages[l].flip("disable", k.disabled || s != 1).flip("hover", true).flip("z", null)
  1043. }
  1044. }
  1045. }
  1046. return this
  1047. },
  1048. _updateShadow: function() {
  1049. var j, p, m, l = this.data(),
  1050. o = this.width(),
  1051. k = this.height(),
  1052. q = (l.display == "single") ? o : o / 2;
  1053. j = this.turn("view");
  1054. if (!l.shadow) {
  1055. l.shadow = S("<div />", {
  1056. "class": "shadow",
  1057. "css": f(0, 0, 0).css
  1058. }).appendTo(this)
  1059. }
  1060. for (var n = 0; n < l.pageMv.length; n++) {
  1061. if (!j[0] || !j[1]) {
  1062. break
  1063. }
  1064. j = this.turn("view", l.pages[l.pageMv[n]].data().f.opts.next);
  1065. p = this.turn("view", l.pageMv[n]);
  1066. j[0] = j[0] && p[0];
  1067. j[1] = j[1] && p[1]
  1068. }
  1069. if (!j[0]) {
  1070. m = (l.direction == "ltr") ? 1 : 2
  1071. } else {
  1072. if (!j[1]) {
  1073. m = (l.direction == "ltr") ? 2 : 1
  1074. } else {
  1075. m = 3
  1076. }
  1077. }
  1078. switch (m) {
  1079. case 1:
  1080. l.shadow.css({
  1081. width: q,
  1082. height: k,
  1083. top: 0,
  1084. left: q
  1085. });
  1086. break;
  1087. case 2:
  1088. l.shadow.css({
  1089. width: q,
  1090. height: k,
  1091. top: 0,
  1092. left: 0
  1093. });
  1094. break;
  1095. case 3:
  1096. l.shadow.css({
  1097. width: o,
  1098. height: k,
  1099. top: 0,
  1100. left: 0
  1101. });
  1102. break
  1103. }
  1104. },
  1105. _setPageLoc: function(l) {
  1106. var i = this.data(),
  1107. j = this.turn("view"),
  1108. k = 0;
  1109. if (l == j[0] || l == j[1]) {
  1110. k = 1
  1111. } else {
  1112. if ((i.display == "single" && l == j[0] + 1) || (i.display == "double" && l == j[0] - 2 || l == j[1] + 2)) {
  1113. k = 2
  1114. }
  1115. }
  1116. if (!this.turn("animating")) {
  1117. switch (k) {
  1118. case 1:
  1119. i.pageWrap[l].css({
  1120. zIndex: i.totalPages,
  1121. display: ""
  1122. });
  1123. break;
  1124. case 2:
  1125. i.pageWrap[l].css({
  1126. zIndex: i.totalPages - 1,
  1127. display: ""
  1128. });
  1129. break;
  1130. case 0:
  1131. i.pageWrap[l].css({
  1132. zIndex: 0,
  1133. display: (i.pageObjs[l].hasClass("fixed")) ? "" : "none"
  1134. });
  1135. break
  1136. }
  1137. }
  1138. return k
  1139. },
  1140. options: function(j) {
  1141. if (j === undefined) {
  1142. return this.data().opts
  1143. } else {
  1144. var k = this.data();
  1145. S.extend(k.opts, j);
  1146. if (j.pages) {
  1147. this.turn("pages", j.pages)
  1148. }
  1149. if (j.page) {
  1150. this.turn("page", j.page)
  1151. }
  1152. if (j.display) {
  1153. this.turn("display", j.display)
  1154. }
  1155. if (j.direction) {
  1156. this.turn("direction", j.direction)
  1157. }
  1158. if (j.width && j.height) {
  1159. this.turn("size", j.width, j.height)
  1160. }
  1161. if (j.when) {
  1162. for (var i in j.when) {
  1163. if (N(i, j.when)) {
  1164. this.unbind(i).bind(i, j.when[i])
  1165. }
  1166. }
  1167. }
  1168. return this
  1169. }
  1170. },
  1171. version: function() {
  1172. return d
  1173. }
  1174. },
  1175. b = {
  1176. init: function(i) {
  1177. this.data({
  1178. f: {
  1179. disabled: false,
  1180. hover: false,
  1181. effect: (this.hasClass("hard")) ? "hard" : "sheet"
  1182. }
  1183. });
  1184. this.flip("options", i);
  1185. b._addPageWrapper.call(this);
  1186. return this
  1187. },
  1188. setData: function(i) {
  1189. var j = this.data();
  1190. j.f = S.extend(j.f, i);
  1191. return this
  1192. },
  1193. options: function(i) {
  1194. var j = this.data().f;
  1195. if (i) {
  1196. b.setData.call(this, {
  1197. opts: S.extend({}, j.opts || Y, i)
  1198. });
  1199. return this
  1200. } else {
  1201. return j.opts
  1202. }
  1203. },
  1204. z: function(i) {
  1205. var j = this.data().f;
  1206. j.opts["z-index"] = i;
  1207. if (j.fwrapper) {
  1208. j.fwrapper.css({
  1209. zIndex: i || parseInt(j.parent.css("z-index"), 10) || 0
  1210. })
  1211. }
  1212. return this
  1213. },
  1214. _cAllowed: function() {
  1215. var l = this.data().f,
  1216. j = l.opts.page,
  1217. i = l.opts.turn.data(),
  1218. k = j % 2;
  1219. if (l.effect == "hard") {
  1220. return (i.direction == "ltr") ? [(k) ? "r" : "l"] : [(k) ? "l" : "r"]
  1221. } else {
  1222. if (i.display == "single") {
  1223. if (j == 1) {
  1224. return (i.direction == "ltr") ? T["forward"] : T["backward"]
  1225. } else {
  1226. if (j == i.totalPages) {
  1227. return (i.direction == "ltr") ? T["backward"] : T["forward"]
  1228. } else {
  1229. return T["all"]
  1230. }
  1231. }
  1232. } else {
  1233. return (i.direction == "ltr") ? T[(k) ? "forward" : "backward"] : T[(k) ? "backward" : "forward"]
  1234. }
  1235. }
  1236. },
  1237. _cornerActivated: function(k) {
  1238. var o = this.data().f,
  1239. m = this.width(),
  1240. j = this.height(),
  1241. l = {
  1242. x: k.x,
  1243. y: k.y,
  1244. corner: ""
  1245. },
  1246. n = o.opts.cornerSize;
  1247. if (l.x <= 0 || l.y <= 0 || l.x >= m || l.y >= j) {
  1248. return false
  1249. }
  1250. var i = b._cAllowed.call(this);
  1251. switch (o.effect) {
  1252. case "hard":
  1253. if (l.x > m - n / 2) {
  1254. l.corner = "r"
  1255. } else {
  1256. if (l.x < n) {
  1257. l.corner = "l"
  1258. } else {
  1259. return false
  1260. }
  1261. }
  1262. break;
  1263. case "sheet":
  1264. if (l.y < n) {
  1265. l.corner += "t"
  1266. } else {
  1267. if (l.y >= j - n) {
  1268. l.corner += "b"
  1269. } else {
  1270. return false
  1271. }
  1272. }
  1273. if (l.x <= n / 2) {
  1274. l.corner += "l"
  1275. } else {
  1276. if (l.x >= m - n / 2) {
  1277. l.corner += "r"
  1278. } else {
  1279. return false
  1280. }
  1281. }
  1282. break
  1283. }
  1284. return (!l.corner || S.inArray(l.corner, i) == -1) ? false : l
  1285. },
  1286. _isIArea: function(i) {
  1287. var j = this.data().f.parent.offset();
  1288. i = (B && i.originalEvent) ? i.originalEvent.touches[0] : i;
  1289. return b._cornerActivated.call(this, {
  1290. x: i.pageX - j.left,
  1291. y: i.pageY - j.top
  1292. })
  1293. },
  1294. _c: function(j, i) {
  1295. i = i || 0;
  1296. switch (j) {
  1297. case "tl":
  1298. return L(i, i);
  1299. case "tr":
  1300. return L(this.width() - i, i);
  1301. case "bl":
  1302. return L(i, this.height() - i);
  1303. case "br":
  1304. return L(this.width() - i, this.height() - i);
  1305. case "l":
  1306. return L(i, 0);
  1307. case "r":
  1308. return L(this.width() - i, 0)
  1309. }
  1310. },
  1311. _c2: function(i) {
  1312. switch (i) {
  1313. case "tl":
  1314. return L(this.width() * 2, 0);
  1315. case "tr":
  1316. return L(-this.width(), 0);
  1317. case "bl":
  1318. return L(this.width() * 2, this.height());
  1319. case "br":
  1320. return L(-this.width(), this.height());
  1321. case "l":
  1322. return L(this.width() * 2, 0);
  1323. case "r":
  1324. return L(-this.width(), 0)
  1325. }
  1326. },
  1327. _foldingPage: function() {
  1328. var j = this.data().f;
  1329. if (!j) {
  1330. return
  1331. }
  1332. var i = j.opts;
  1333. if (i.turn) {
  1334. j = i.turn.data();
  1335. if (j.display == "single") {
  1336. return (i.next > 1 || i.page > 1) ? j.pageObjs[0] : null
  1337. } else {
  1338. return j.pageObjs[i.next]
  1339. }
  1340. }
  1341. },
  1342. _backGradient: function() {
  1343. var k = this.data().f,
  1344. i = k.opts.turn.data(),
  1345. j = i.opts.gradients && (i.display == "single" || (k.opts.page != 2 && k.opts.page != i.totalPages - 1));
  1346. if (j && !k.bshadow) {
  1347. k.bshadow = S("<div/>", f(0, 0, 1)).css({
  1348. "position": "",
  1349. width: this.width(),
  1350. height: this.height()
  1351. }).appendTo(k.parent)
  1352. }
  1353. return j
  1354. },
  1355. type: function() {
  1356. return this.data().f.effect
  1357. },
  1358. resize: function(n) {
  1359. var o = this.data().f,
  1360. k = o.opts.turn.data(),
  1361. m = this.width(),
  1362. j = this.height();
  1363. switch (o.effect) {
  1364. case "hard":
  1365. if (n) {
  1366. o.wrapper.css({
  1367. width: m,
  1368. height: j
  1369. });
  1370. o.fpage.css({
  1371. width: m,
  1372. height: j
  1373. });
  1374. if (k.opts.gradients) {
  1375. o.ashadow.css({
  1376. width: m,
  1377. height: j
  1378. });
  1379. o.bshadow.css({
  1380. width: m,
  1381. height: j
  1382. })
  1383. }
  1384. }
  1385. break;
  1386. case "sheet":
  1387. if (n) {
  1388. var i = Math.round(Math.sqrt(Math.pow(m, 2) + Math.pow(j, 2)));
  1389. o.wrapper.css({
  1390. width: i,
  1391. height: i
  1392. });
  1393. o.fwrapper.css({
  1394. width: i,
  1395. height: i
  1396. }).children(":first-child").css({
  1397. width: m,
  1398. height: j
  1399. });
  1400. o.fpage.css({
  1401. width: m,
  1402. height: j
  1403. });
  1404. if (k.opts.gradients) {
  1405. o.ashadow.css({
  1406. width: m,
  1407. height: j
  1408. })
  1409. }
  1410. if (b._backGradient.call(this)) {
  1411. o.bshadow.css({
  1412. width: m,
  1413. height: j
  1414. })
  1415. }
  1416. }
  1417. if (o.parent.is(":visible")) {
  1418. var l = K(o.parent[0]);
  1419. o.fwrapper.css({
  1420. top: l.top,
  1421. left: l.left
  1422. });
  1423. l = K(o.opts.turn[0]);
  1424. o.fparent.css({
  1425. top: -l.top,
  1426. left: -l.left
  1427. })
  1428. }
  1429. this.flip("z", o.opts["z-index"]);
  1430. break
  1431. }
  1432. },
  1433. _addPageWrapper: function() {
  1434. var m, k = this.data().f,
  1435. i = k.opts.turn.data(),
  1436. p = this.parent();
  1437. k.parent = p;
  1438. if (!k.wrapper) {
  1439. switch (k.effect) {
  1440. case "hard":
  1441. var l = {};
  1442. l[E + "transform-style"] = "preserve-3d";
  1443. l[E + "backface-visibility"] = "hidden";
  1444. k.wrapper = S("<div/>", f(0, 0, 2)).css(l).appendTo(p).prepend(this);
  1445. k.fpage = S("<div/>", f(0, 0, 1)).css(l).appendTo(p);
  1446. if (i.opts.gradients) {
  1447. k.ashadow = S("<div/>", f(0, 0, 0)).hide().appendTo(p);
  1448. k.bshadow = S("<div/>", f(0, 0, 0))
  1449. }
  1450. break;
  1451. case "sheet":
  1452. var n = this.width(),
  1453. q = this.height(),
  1454. j = Math.round(Math.sqrt(Math.pow(n, 2) + Math.pow(q, 2)));
  1455. k.fparent = k.opts.turn.data().fparent;
  1456. if (!k.fparent) {
  1457. var o = S("<div/>", {
  1458. css: {
  1459. "pointer-events": "none"
  1460. }
  1461. }).hide();
  1462. o.data().flips = 0;
  1463. o.css(f(0, 0, "auto", "visible").css).appendTo(k.opts.turn);
  1464. k.opts.turn.data().fparent = o;
  1465. k.fparent = o
  1466. }
  1467. this.css({
  1468. position: "absolute",
  1469. top: 0,
  1470. left: 0,
  1471. bottom: "auto",
  1472. right: "auto"
  1473. });
  1474. k.wrapper = S("<div/>", f(0, 0, this.css("z-index"))).appendTo(p).prepend(this);
  1475. k.fwrapper = S("<div/>", f(p.offset().top, p.offset().left)).hide().appendTo(k.fparent);
  1476. k.fpage = S("<div/>", f(0, 0, 0, "visible")).css({
  1477. cursor: "default"
  1478. }).appendTo(k.fwrapper);
  1479. if (i.opts.gradients) {
  1480. k.ashadow = S("<div/>", f(0, 0, 1)).appendTo(k.fpage)
  1481. }
  1482. b.setData.call(this, k);
  1483. break
  1484. }
  1485. }
  1486. b.resize.call(this, true)
  1487. },
  1488. _fold: function(Ag) {
  1489. var Ao = this.data().f,
  1490. Ac = Ao.opts.turn.data(),
  1491. Ar = b._c.call(this, Ag.corner),
  1492. n = this.width(),
  1493. s = this.height();
  1494. switch (Ao.effect) {
  1495. case "hard":
  1496. if (Ag.corner == "l") {
  1497. Ag.x = Math.min(Math.max(Ag.x, 0), n * 2)
  1498. } else {
  1499. Ag.x = Math.max(Math.min(Ag.x, n), -n)
  1500. }
  1501. var Am, Aa, z, Ab, Ad, Aq = Ac.totalPages,
  1502. At = Ao.opts["z-index"] || Aq,
  1503. Aj = {
  1504. "overflow": "visible"
  1505. },
  1506. k = (Ar.x) ? (Ar.x - Ag.x) / n : Ag.x / n,
  1507. w = k * 90,
  1508. i = w < 90;
  1509. switch (Ag.corner) {
  1510. case "l":
  1511. Ab = "0% 50%";
  1512. Ad = "100% 50%";
  1513. if (i) {
  1514. Am = 0;
  1515. Aa = Ao.opts.next - 1 > 0;
  1516. z = 1
  1517. } else {
  1518. Am = "100%";
  1519. Aa = Ao.opts.page + 1 < Aq;
  1520. z = 0
  1521. }
  1522. break;
  1523. case "r":
  1524. Ab = "100% 50%";
  1525. Ad = "0% 50%";
  1526. w = -w;
  1527. n = -n;
  1528. if (i) {
  1529. Am = 0;
  1530. Aa = Ao.opts.next + 1 < Aq;
  1531. z = 0
  1532. } else {
  1533. Am = "-100%";
  1534. Aa = Ao.opts.page != 1;
  1535. z = 1
  1536. }
  1537. break
  1538. }
  1539. Aj[E + "perspective-origin"] = Ad;
  1540. Ao.wrapper.transform("rotateY(" + w + "deg)translate3d(0px, 0px, " + (this.attr("depth") || 0) + "px)", Ad);
  1541. Ao.fpage.transform("translateX(" + n + "px) rotateY(" + (180 + w) + "deg)", Ab);
  1542. Ao.parent.css(Aj);
  1543. if (i) {
  1544. k = -k + 1;
  1545. Ao.wrapper.css({
  1546. zIndex: At + 1
  1547. });
  1548. Ao.fpage.css({
  1549. zIndex: At
  1550. })
  1551. } else {
  1552. k = k - 1;
  1553. Ao.wrapper.css({
  1554. zIndex: At
  1555. });
  1556. Ao.fpage.css({
  1557. zIndex: At + 1
  1558. })
  1559. }
  1560. if (Ac.opts.gradients) {
  1561. if (Aa) {
  1562. Ao.ashadow.css({
  1563. display: "",
  1564. left: Am,
  1565. backgroundColor: "rgba(0,0,0," + (0.5 * k) + ")"
  1566. }).transform("rotateY(0deg)")
  1567. } else {
  1568. Ao.ashadow.hide()
  1569. }
  1570. Ao.bshadow.css({
  1571. opacity: -k + 1
  1572. });
  1573. if (i) {
  1574. if (Ao.bshadow.parent()[0] != Ao.wrapper[0]) {
  1575. Ao.bshadow.appendTo(Ao.wrapper)
  1576. }
  1577. } else {
  1578. if (Ao.bshadow.parent()[0] != Ao.fpage[0]) {
  1579. Ao.bshadow.appendTo(Ao.fpage)
  1580. }
  1581. }
  1582. U(Ao.bshadow, L(z * 100, 0), L((-z + 1) * 100, 0), [
  1583. [0, "rgba(0,0,0,0.3)"],
  1584. [1, "rgba(0,0,0,0)"]
  1585. ], 2)
  1586. }
  1587. break;
  1588. case "sheet":
  1589. var p = this,
  1590. Au = 0,
  1591. Af = 0,
  1592. l, Ae, As, q, x, Al, y, u, v = L(0, 0),
  1593. j = L(0, 0),
  1594. m = L(0, 0),
  1595. Ah = b._foldingPage.call(this),
  1596. Ai = Math.tan(Af),
  1597. An = Ac.opts.acceleration,
  1598. Ap = Ao.wrapper.height(),
  1599. t = Ag.corner.substr(0, 1) == "t",
  1600. Ak = Ag.corner.substr(1, 1) == "l",
  1601. Av = function() {
  1602. var AG = L(0, 0);
  1603. var AF = L(0, 0);
  1604. AG.x = (Ar.x) ? Ar.x - Ag.x : Ag.x;
  1605. if (!Z) {
  1606. AG.y = 0
  1607. } else {
  1608. AG.y = (Ar.y) ? Ar.y - Ag.y : Ag.y
  1609. }
  1610. AF.x = (Ak) ? n - AG.x / 2 : Ag.x + AG.x / 2;
  1611. AF.y = AG.y / 2;
  1612. var AA = J - Math.atan2(AG.y, AG.x),
  1613. AC = AA - Math.atan2(AF.y, AF.x),
  1614. AB = Math.max(0, Math.sin(AC) * Math.sqrt(Math.pow(AF.x, 2) + Math.pow(AF.y, 2)));
  1615. Au = c(AA);
  1616. m = L(AB * Math.sin(AA), AB * Math.cos(AA));
  1617. if (AA > J) {
  1618. m.x = m.x + Math.abs(m.y * AG.y / AG.x);
  1619. m.y = 0;
  1620. if (Math.round(m.x * Math.tan(Q - AA)) < s) {
  1621. Ag.y = Math.sqrt(Math.pow(s, 2) + 2 * AF.x * AG.x);
  1622. if (t) {
  1623. Ag.y = s - Ag.y
  1624. }
  1625. return Av()
  1626. }
  1627. }
  1628. if (AA > J) {
  1629. var Ay = Q - AA,
  1630. Aw = Ap - s / Math.sin(Ay);
  1631. v = L(Math.round(Aw * Math.cos(Ay)), Math.round(Aw * Math.sin(Ay)));
  1632. if (Ak) {
  1633. v.x = -v.x
  1634. }
  1635. if (t) {
  1636. v.y = -v.y
  1637. }
  1638. }
  1639. Ae = Math.round(m.y / Math.tan(AA) + m.x);
  1640. var Ax = n - Ae,
  1641. AD = Ax * Math.cos(AA * 2),
  1642. o = Ax * Math.sin(AA * 2);
  1643. j = L(Math.round((Ak ? Ax - AD : Ae + AD)), Math.round((t) ? o : s - o));
  1644. if (Ac.opts.gradients) {
  1645. Al = Ax * Math.sin(AA);
  1646. var AE = b._c2.call(p, Ag.corner),
  1647. Az = Math.sqrt(Math.pow(AE.x - Ag.x, 2) + Math.pow(AE.y - Ag.y, 2)) / n;
  1648. u = Math.sin(J * ((Az > 1) ? 2 - Az : Az));
  1649. y = Math.min(Az, 1);
  1650. x = Al > 100 ? (Al - 100) / Al : 0;
  1651. As = L(Al * Math.sin(AA) / n * 100, Al * Math.cos(AA) / s * 100);
  1652. if (b._backGradient.call(p)) {
  1653. q = L(Al * 1.2 * Math.sin(AA) / n * 100, Al * 1.2 * Math.cos(AA) / s * 100);
  1654. if (!Ak) {
  1655. q.x = 100 - q.x
  1656. }
  1657. if (!t) {
  1658. q.y = 100 - q.y
  1659. }
  1660. }
  1661. }
  1662. m.x = Math.round(m.x);
  1663. m.y = Math.round(m.y);
  1664. return true
  1665. },
  1666. r = function(Ay, AC, o, AD) {
  1667. var AE = ["0", "auto"],
  1668. AF = (n - Ap) * o[0] / 100,
  1669. Ax = (s - Ap) * o[1] / 100,
  1670. Aw = {
  1671. left: AE[AC[0]],
  1672. top: AE[AC[1]],
  1673. right: AE[AC[2]],
  1674. bottom: AE[AC[3]]
  1675. },
  1676. AB = {},
  1677. AA = (AD != 90 && AD != -90) ? (Ak ? -1 : 1) : 0,
  1678. Az = o[0] + "% " + o[1] + "%";
  1679. p.css(Aw).transform(P(AD) + X(Ay.x + AA, Ay.y, An), Az);
  1680. Ao.fpage.css(Aw).transform(P(AD) + X(Ay.x + j.x - v.x - n * o[0] / 100, Ay.y + j.y - v.y - s * o[1] / 100, An) + P((180 / AD - 2) * AD), Az);
  1681. Ao.wrapper.transform(X(-Ay.x + AF - AA, -Ay.y + Ax, An) + P(-AD), Az);
  1682. Ao.fwrapper.transform(X(-Ay.x + v.x + AF, -Ay.y + v.y + Ax, An) + P(-AD), Az);
  1683. if (Ac.opts.gradients) {
  1684. if (o[0]) {
  1685. As.x = 100 - As.x
  1686. }
  1687. if (o[1]) {
  1688. As.y = (100 - As.y)
  1689. }
  1690. AB["box-shadow"] = "0 0 20px rgba(0,0,0," + (0.5 * u) + ")";
  1691. Ah.css(AB);
  1692. U(Ao.ashadow, L(Ak ? 100 : 0, t ? 0 : 100), L(As.x, As.y), [
  1693. [x, "rgba(0,0,0,0)"],
  1694. [((1 - x) * 0.8) + x, "rgba(0,0,0," + (0.2 * y) + ")"],
  1695. [1, "rgba(255,255,255," + (0.2 * y) + ")"]
  1696. ], 3, Af);
  1697. if (b._backGradient.call(p)) {
  1698. U(Ao.bshadow, L(Ak ? 0 : 100, t ? 0 : 100), L(q.x, q.y), [
  1699. [0.6, "rgba(0,0,0,0)"],
  1700. [0.8, "rgba(0,0,0," + (0.3 * y) + ")"],
  1701. [1, "rgba(0,0,0,0)"]
  1702. ], 3)
  1703. }
  1704. }
  1705. };
  1706. switch (Ag.corner) {
  1707. case "l":
  1708. break;
  1709. case "r":
  1710. break;
  1711. case "tl":
  1712. Ag.x = Math.max(Ag.x, 1);
  1713. Av();
  1714. r(m, [1, 0, 0, 1], [100, 0], Au);
  1715. break;
  1716. case "tr":
  1717. Ag.x = Math.min(Ag.x, n - 1);
  1718. Av();
  1719. r(L(-m.x, m.y), [0, 0, 0, 1], [0, 0], -Au);
  1720. break;
  1721. case "bl":
  1722. Ag.x = Math.max(Ag.x, 1);
  1723. Av();
  1724. r(L(m.x, -m.y), [1, 1, 0, 0], [100, 100], -Au);
  1725. break;
  1726. case "br":
  1727. Ag.x = Math.min(Ag.x, n - 1);
  1728. Av();
  1729. r(L(-m.x, -m.y), [0, 1, 1, 0], [0, 100], Au);
  1730. break
  1731. }
  1732. break
  1733. }
  1734. Ao.point = Ag
  1735. },
  1736. _moveFoldingPage: function(o) {
  1737. var j = this.data().f;
  1738. if (!j) {
  1739. return
  1740. }
  1741. var i = j.opts.turn,
  1742. m = i.data(),
  1743. k = m.pagePlace;
  1744. if (o) {
  1745. var n = j.opts.next;
  1746. if (k[n] != j.opts.page) {
  1747. if (j.folding) {
  1748. b._moveFoldingPage.call(this, false)
  1749. }
  1750. var p = b._foldingPage.call(this);
  1751. p.appendTo(j.fpage);
  1752. k[n] = j.opts.page;
  1753. j.folding = n
  1754. }
  1755. i.turn("update")
  1756. } else {
  1757. if (j.folding) {
  1758. if (m.pages[j.folding]) {
  1759. var l = m.pages[j.folding].data().f;
  1760. m.pageObjs[j.folding].appendTo(l.wrapper)
  1761. } else {
  1762. if (m.pageWrap[j.folding]) {
  1763. m.pageObjs[j.folding].appendTo(m.pageWrap[j.folding])
  1764. }
  1765. }
  1766. if (j.folding in k) {
  1767. k[j.folding] = j.folding
  1768. }
  1769. delete j.folding
  1770. }
  1771. }
  1772. },
  1773. _showFoldedPage: function(o, l) {
  1774. var q = b._foldingPage.call(this),
  1775. i = this.data(),
  1776. k = i.f,
  1777. m = k.visible;
  1778. if (q) {
  1779. if (!m || !k.point || k.point.corner != o.corner) {
  1780. var j = (k.status == "hover" || k.status == "peel" || k.opts.turn.data().mouseAction) ? o.corner : null;
  1781. m = false;
  1782. if (a("start", this, [k.opts, j]) == "prevented") {
  1783. return false
  1784. }
  1785. }
  1786. if (l) {
  1787. var n = this,
  1788. p = (k.point && k.point.corner == o.corner) ? k.point : b._c.call(this, o.corner, 1);
  1789. this.animatef({
  1790. from: [p.x, p.y],
  1791. to: [o.x, o.y],
  1792. duration: 500,
  1793. frame: function(r) {
  1794. o.x = Math.round(r[0]);
  1795. o.y = Math.round(r[1]);
  1796. b._fold.call(n, o)
  1797. }
  1798. })
  1799. } else {
  1800. b._fold.call(this, o);
  1801. if (i.effect && !i.effect.turning) {
  1802. this.animatef(false)
  1803. }
  1804. }
  1805. if (!m) {
  1806. switch (k.effect) {
  1807. case "hard":
  1808. k.visible = true;
  1809. b._moveFoldingPage.call(this, true);
  1810. k.fpage.show();
  1811. if (k.opts.shadows) {
  1812. k.bshadow.show()
  1813. }
  1814. break;
  1815. case "sheet":
  1816. k.visible = true;
  1817. k.fparent.show().data().flips++;
  1818. b._moveFoldingPage.call(this, true);
  1819. k.fwrapper.show();
  1820. if (k.bshadow) {
  1821. k.bshadow.show()
  1822. }
  1823. break
  1824. }
  1825. }
  1826. return true
  1827. }
  1828. return false
  1829. },
  1830. hide: function() {
  1831. var k = this.data().f,
  1832. i = k.opts.turn.data(),
  1833. j = b._foldingPage.call(this);
  1834. switch (k.effect) {
  1835. case "hard":
  1836. if (i.opts.gradients) {
  1837. k.bshadowLoc = 0;
  1838. k.bshadow.remove();
  1839. k.ashadow.hide()
  1840. }
  1841. k.wrapper.transform("");
  1842. k.fpage.hide();
  1843. break;
  1844. case "sheet":
  1845. if ((--k.fparent.data().flips) === 0) {
  1846. k.fparent.hide()
  1847. }
  1848. this.css({
  1849. left: 0,
  1850. top: 0,
  1851. right: "auto",
  1852. bottom: "auto"
  1853. }).transform("");
  1854. k.wrapper.transform("");
  1855. k.fwrapper.hide();
  1856. if (k.bshadow) {
  1857. k.bshadow.hide()
  1858. }
  1859. j.transform("");
  1860. break
  1861. }
  1862. k.visible = false;
  1863. return this
  1864. },
  1865. hideFoldedPage: function(k) {
  1866. var j = this.data().f;
  1867. if (!j.point) {
  1868. return
  1869. }
  1870. var n = this,
  1871. i = j.point,
  1872. m = function() {
  1873. j.point = null;
  1874. j.status = "";
  1875. n.flip("hide");
  1876. n.trigger("end", [j.opts, false])
  1877. };
  1878. if (k) {
  1879. var r = b._c.call(this, i.corner),
  1880. l = (i.corner.substr(0, 1) == "t"),
  1881. p = (l) ? Math.min(0, i.y - r.y) / 2 : Math.max(0, i.y - r.y) / 2,
  1882. o = L(i.x, i.y + p),
  1883. q = L(r.x, r.y - p);
  1884. this.animatef({
  1885. from: 0,
  1886. to: 1,
  1887. frame: function(t) {
  1888. var s = h(i, o, q, r, t);
  1889. i.x = s.x;
  1890. i.y = s.y;
  1891. b._fold.call(n, i)
  1892. },
  1893. complete: m,
  1894. duration: 800,
  1895. hiding: true
  1896. })
  1897. } else {
  1898. this.animatef(false);
  1899. m()
  1900. }
  1901. },
  1902. turnPage: function(m) {
  1903. var k = this,
  1904. n = this.data().f,
  1905. j = n.opts.turn.data();
  1906. m = {
  1907. corner: (n.corner) ? n.corner.corner : m || b._cAllowed.call(this)[0]
  1908. };
  1909. var l = n.point || b._c.call(this, m.corner, (n.opts.turn) ? j.opts.elevation : 0),
  1910. i = b._c2.call(this, m.corner);
  1911. this.trigger("flip").animatef({
  1912. from: 0,
  1913. to: 1,
  1914. frame: function(p) {
  1915. var o = h(l, l, i, i, p);
  1916. m.x = o.x;
  1917. m.y = o.y;
  1918. b._showFoldedPage.call(k, m)
  1919. },
  1920. complete: function() {
  1921. k.trigger("end", [n.opts, true])
  1922. },
  1923. duration: j.opts.duration,
  1924. turning: true
  1925. });
  1926. n.corner = null
  1927. },
  1928. moving: function() {
  1929. return "effect" in this.data()
  1930. },
  1931. isTurning: function() {
  1932. return this.flip("moving") && this.data().effect.turning
  1933. },
  1934. corner: function() {
  1935. return this.data().f.corner
  1936. },
  1937. _eventStart: function(i) {
  1938. var k = this.data().f,
  1939. j = k.opts.turn;
  1940. if (!k.corner && !k.disabled && !this.flip("isTurning") && k.opts.page == j.data().pagePlace[k.opts.page]) {
  1941. k.corner = b._isIArea.call(this, i);
  1942. if (k.corner && b._foldingPage.call(this)) {
  1943. this.trigger("pressed", [k.point]);
  1944. b._showFoldedPage.call(this, k.corner);
  1945. return false
  1946. } else {
  1947. k.corner = null
  1948. }
  1949. }
  1950. },
  1951. _eventMove: function(i) {
  1952. var m = this.data().f;
  1953. if (!m.disabled) {
  1954. i = (B) ? i.originalEvent.touches : [i];
  1955. if (m.corner) {
  1956. var k = m.parent.offset();
  1957. m.corner.x = i[0].pageX - k.left;
  1958. m.corner.y = i[0].pageY - k.top;
  1959. b._showFoldedPage.call(this, m.corner)
  1960. } else {
  1961. if (m.hover && !this.data().effect && this.is(":visible")) {
  1962. var j = b._isIArea.call(this, i[0]);
  1963. if (j) {
  1964. if ((m.effect == "sheet" && j.corner.length == 2) || m.effect == "hard") {
  1965. m.status = "hover";
  1966. var l = b._c.call(this, j.corner, m.opts.cornerSize / 2);
  1967. j.x = l.x;
  1968. j.y = l.y;
  1969. b._showFoldedPage.call(this, j, true)
  1970. }
  1971. } else {
  1972. if (m.status == "hover") {
  1973. m.status = "";
  1974. b.hideFoldedPage.call(this, true)
  1975. }
  1976. }
  1977. }
  1978. }
  1979. }
  1980. },
  1981. _eventEnd: function() {
  1982. var j = this.data().f,
  1983. i = j.corner;
  1984. if (!j.disabled && i) {
  1985. if (a("released", this, [j.point || i]) != "prevented") {
  1986. b.hideFoldedPage.call(this, true)
  1987. }
  1988. }
  1989. j.corner = null
  1990. },
  1991. disable: function(i) {
  1992. b.setData.call(this, {
  1993. "disabled": i
  1994. });
  1995. return this
  1996. },
  1997. hover: function(i) {
  1998. b.setData.call(this, {
  1999. "hover": i
  2000. });
  2001. return this
  2002. },
  2003. peel: function(k, j) {
  2004. var l = this.data().f;
  2005. if (k) {
  2006. if (S.inArray(k, T.all) == -1) {
  2007. throw F("Corner " + k + " is not permitted")
  2008. }
  2009. if (S.inArray(k, b._cAllowed.call(this)) != -1) {
  2010. var i = b._c.call(this, k, l.opts.cornerSize / 2);
  2011. l.status = "peel";
  2012. b._showFoldedPage.call(this, {
  2013. corner: k,
  2014. x: i.x,
  2015. y: i.y
  2016. }, j)
  2017. }
  2018. } else {
  2019. l.status = "";
  2020. b.hideFoldedPage.call(this, j)
  2021. }
  2022. return this
  2023. }
  2024. };
  2025. function e(i, j, k) {
  2026. if (!k[0] || typeof(k[0]) == "object") {
  2027. return j.init.apply(i, k)
  2028. } else {
  2029. if (j[k[0]]) {
  2030. return j[k[0]].apply(i, Array.prototype.slice.call(k, 1))
  2031. } else {
  2032. throw F(k[0] + " is not a method or property")
  2033. }
  2034. }
  2035. }
  2036. function f(j, i, l, k) {
  2037. return {
  2038. "css": {
  2039. position: "absolute",
  2040. top: j,
  2041. left: i,
  2042. "overflow": k || "hidden",
  2043. zIndex: l || "auto"
  2044. }
  2045. }
  2046. }
  2047. function h(i, m, l, k, j) {
  2048. var p = 1 - j,
  2049. n = p * p * p,
  2050. o = j * j * j;
  2051. return L(Math.round(n * i.x + 3 * j * p * p * m.x + 3 * j * j * p * l.x + o * k.x), Math.round(n * i.y + 3 * j * p * p * m.y + 3 * j * j * p * l.y + o * k.y))
  2052. }
  2053. function I(i) {
  2054. return i / 180 * Q
  2055. }
  2056. function c(i) {
  2057. return i / Q * 180
  2058. }
  2059. function L(i, j) {
  2060. return {
  2061. x: i,
  2062. y: j
  2063. }
  2064. }
  2065. function H() {
  2066. var i;
  2067. if ((i = /AppleWebkit\/([0-9\.]+)/i.exec(navigator.userAgent))) {
  2068. var j = parseFloat(i[1]);
  2069. return (j > 534.3)
  2070. } else {
  2071. return true
  2072. }
  2073. }
  2074. function X(j, k, i) {
  2075. return (V && i) ? " translate3d(" + j + "px," + k + "px, 0px) " : " translate(" + j + "px, " + k + "px) "
  2076. }
  2077. function P(i) {
  2078. return " rotate(" + i + "deg) "
  2079. }
  2080. function N(j, i) {
  2081. return Object.prototype.hasOwnProperty.call(i, j)
  2082. }
  2083. function O() {
  2084. var i = ["Moz", "Webkit", "Khtml", "O", "ms"],
  2085. j = i.length,
  2086. k = "";
  2087. while (j--) {
  2088. if ((i[j] + "Transform") in document.body.style) {
  2089. k = "-" + i[j].toLowerCase() + "-"
  2090. }
  2091. }
  2092. return k
  2093. }
  2094. function W() {
  2095. var k, i = document.createElement("fakeelement"),
  2096. j = {
  2097. "transition": "transitionend",
  2098. "OTransition": "oTransitionEnd",
  2099. "MSTransition": "transitionend",
  2100. "MozTransition": "transitionend",
  2101. "WebkitTransition": "webkitTransitionEnd"
  2102. };
  2103. for (k in j) {
  2104. if (i.style[k] !== undefined) {
  2105. return j[k]
  2106. }
  2107. }
  2108. }
  2109. function U(l, q, Ab, t, k) {
  2110. var v, y = [];
  2111. if (E == "-webkit-") {
  2112. for (v = 0; v < k; v++) {
  2113. y.push("color-stop(" + t[v][0] + ", " + t[v][1] + ")")
  2114. }
  2115. l.css({
  2116. "background-image": "-webkit-gradient(linear, " + q.x + "% " + q.y + "%," + Ab.x + "% " + Ab.y + "%, " + y.join(",") + " )"
  2117. })
  2118. } else {
  2119. q = {
  2120. x: q.x / 100 * l.width(),
  2121. y: q.y / 100 * l.height()
  2122. };
  2123. Ab = {
  2124. x: Ab.x / 100 * l.width(),
  2125. y: Ab.y / 100 * l.height()
  2126. };
  2127. var p = Ab.x - q.x,
  2128. u = Ab.y - q.y,
  2129. n = Math.atan2(u, p),
  2130. r = n - Math.PI / 2,
  2131. w = Math.abs(l.width() * Math.sin(r)) + Math.abs(l.height() * Math.cos(r)),
  2132. m = Math.sqrt(u * u + p * p),
  2133. Ac = L((Ab.x < q.x) ? l.width() : 0, (Ab.y < q.y) ? l.height() : 0),
  2134. s = Math.tan(n),
  2135. i = -1 / s,
  2136. z = (i * Ac.x - Ac.y - s * q.x + q.y) / (i - s),
  2137. o = {
  2138. x: z,
  2139. y: i * z - i * Ac.x + Ac.y
  2140. },
  2141. Aa = (Math.sqrt(Math.pow(o.x - q.x, 2) + Math.pow(o.y - q.y, 2)));
  2142. for (v = 0; v < k; v++) {
  2143. y.push(" " + t[v][1] + " " + ((Aa + m * t[v][0]) * 100 / w) + "%")
  2144. }
  2145. l.css({
  2146. "background-image": E + "linear-gradient(" + (-n) + "rad," + y.join(",") + ")"
  2147. })
  2148. }
  2149. }
  2150. function a(j, i, l) {
  2151. var k = S.Event(j);
  2152. i.trigger(k, l);
  2153. if (k.isDefaultPrevented()) {
  2154. return "prevented"
  2155. } else {
  2156. if (k.isPropagationStopped()) {
  2157. return "stopped"
  2158. } else {
  2159. return ""
  2160. }
  2161. }
  2162. }
  2163. function F(j) {
  2164. function i(k) {
  2165. this.name = "TurnJsError";
  2166. this.message = k
  2167. }
  2168. i.prototype = new Error();
  2169. i.prototype.constructor = i;
  2170. return new i(j)
  2171. }
  2172. function K(j) {
  2173. var i = {
  2174. top: 0,
  2175. left: 0
  2176. };
  2177. do {
  2178. i.left += j.offsetLeft;
  2179. i.top += j.offsetTop
  2180. } while ((j = j.offsetParent));
  2181. return i
  2182. }
  2183. function C() {
  2184. return (navigator.userAgent.indexOf("MSIE 9.0") == -1)
  2185. }
  2186. window.requestAnim = (function() {
  2187. return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(i) {
  2188. window.setTimeout(i, 1000 / 60)
  2189. }
  2190. })();
  2191. S.extend(S.fn, {
  2192. flip: function() {
  2193. return e(S(this[0]), b, arguments)
  2194. },
  2195. turn: function() {
  2196. return e(S(this[0]), D, arguments)
  2197. },
  2198. transform: function(k, j) {
  2199. var i = {};
  2200. if (j) {
  2201. i[E + "transform-origin"] = j
  2202. }
  2203. i[E + "transform"] = k;
  2204. return this.css(i)
  2205. },
  2206. animatef: function(r) {
  2207. var k = this.data();
  2208. if (k.effect) {
  2209. k.effect.stop()
  2210. }
  2211. if (r) {
  2212. if (!r.to.length) {
  2213. r.to = [r.to]
  2214. }
  2215. if (!r.from.length) {
  2216. r.from = [r.from]
  2217. }
  2218. var m = [],
  2219. q = r.to.length,
  2220. n = true,
  2221. p = this,
  2222. j = (new Date()).getTime(),
  2223. l = function() {
  2224. if (!k.effect || !n) {
  2225. return
  2226. }
  2227. var t = [],
  2228. u = Math.min(r.duration, (new Date()).getTime() - j);
  2229. for (var s = 0; s < q; s++) {
  2230. t.push(k.effect.easing(1, u, r.from[s], m[s], r.duration))
  2231. }
  2232. r.frame((q == 1) ? t[0] : t);
  2233. if (u == r.duration) {
  2234. delete k["effect"];
  2235. p.data(k);
  2236. if (r.complete) {
  2237. r.complete()
  2238. }
  2239. } else {
  2240. window.requestAnim(l)
  2241. }
  2242. };
  2243. for (var o = 0; o < q; o++) {
  2244. m.push(r.to[o] - r.from[o])
  2245. }
  2246. k.effect = S.extend({
  2247. stop: function() {
  2248. n = false
  2249. },
  2250. easing: function(i, s, u, v, w) {
  2251. return v * Math.sqrt(1 - (s = s / w - 1) * s) + u
  2252. }
  2253. }, r);
  2254. this.data(k);
  2255. l()
  2256. } else {
  2257. delete k["effect"]
  2258. }
  2259. }
  2260. });
  2261. S.isTouch = B;
  2262. S.mouseEvents = A;
  2263. S.cssPrefix = O;
  2264. S.cssTransitionEnd = W;
  2265. S.findPos = K
  2266. })(jQuery);