tvp.player_v2.js 177 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644
  1. ! function(global) {
  2. ! function(a) {
  3. String.prototype.trim === a && (String.prototype.trim = function() {
  4. return this.replace(/^\s+|\s+$/g, "")
  5. }), Array.prototype.reduce === a && (Array.prototype.reduce = function(b) {
  6. if (void 0 === this || null === this) throw new TypeError;
  7. var c, d = Object(this),
  8. e = d.length >>> 0,
  9. f = 0;
  10. if ("function" != typeof b) throw new TypeError;
  11. if (0 == e && 1 == arguments.length) throw new TypeError;
  12. if (arguments.length >= 2) c = arguments[1];
  13. else
  14. for (;;) {
  15. if (f in d) {
  16. c = d[f++];
  17. break
  18. }
  19. if (++f >= e) throw new TypeError
  20. }
  21. for (; e > f;) f in d && (c = b.call(a, c, d[f], f, d)), f++;
  22. return c
  23. }), Array.prototype.forEach || (Array.prototype.forEach = function(a, b) {
  24. var c, d;
  25. if (null == this) throw new TypeError("this is null or not defined");
  26. var e = Object(this),
  27. f = e.length >>> 0;
  28. if ("[object Function]" !== {}.toString.call(a)) throw new TypeError(a + " is not a function");
  29. for (b && (c = b), d = 0; f > d;) {
  30. var g;
  31. Object.prototype.hasOwnProperty.call(e, d) && (g = e[d], a.call(c, g, d, e)), d++
  32. }
  33. }), Array.prototype.indexOf || (Array.prototype.indexOf = function(a) {
  34. var b = this.length >>> 0,
  35. c = Number(arguments[1]) || 0;
  36. for (c = 0 > c ? Math.ceil(c) : Math.floor(c), 0 > c && (c += b); b > c; c++)
  37. if (c in this && this[c] === a) return c;
  38. return -1
  39. })
  40. }();
  41. var Zepto = function() {
  42. function a(a) {
  43. return null == a ? String(a) : W[X.call(a)] || "object"
  44. }
  45. function b(b) {
  46. return "function" == a(b)
  47. }
  48. function c(a) {
  49. return null != a && a == a.window
  50. }
  51. function d(a) {
  52. return null != a && a.nodeType == a.DOCUMENT_NODE
  53. }
  54. function e(b) {
  55. return "object" == a(b)
  56. }
  57. function f(a) {
  58. if (!a || "[object Object]" !== a.toString() || a.nodeType || a.setInterval) return !1;
  59. if (a.constructor && !a.hasOwnProperty("constructor") && !a.constructor.prototype.hasOwnProperty("isPrototypeOf")) return !1;
  60. var b;
  61. for (b in a);
  62. return b === w || a.hasOwnProperty(b)
  63. }
  64. function g(a) {
  65. return a instanceof Array
  66. }
  67. function h(a) {
  68. return "number" == typeof a.length
  69. }
  70. function i(a) {
  71. return E.call(a, function(a) {
  72. return null != a
  73. })
  74. }
  75. function j(a) {
  76. return a.length > 0 ? y.fn.concat.apply([], a) : a
  77. }
  78. function k(a) {
  79. return a.replace(/::/g, "/").replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/_/g, "-").toLowerCase()
  80. }
  81. function l(a) {
  82. return a in H ? H[a] : H[a] = new RegExp("(^|\\s)" + a + "(\\s|$)")
  83. }
  84. function m(a, b) {
  85. return "number" != typeof b || J[k(a)] ? b : b + "px"
  86. }
  87. function n(a) {
  88. var b, c;
  89. return G[a] || (b = F.createElement(a), F.body.appendChild(b), c = I(b, "").getPropertyValue("display"), b.parentNode.removeChild(b), "none" == c && (c = "block"), G[a] = c), G[a]
  90. }
  91. function o(a) {
  92. return "children" in a ? D.call(a.children) : y.map(a.childNodes, function(a) {
  93. return 1 == a.nodeType ? a : void 0
  94. })
  95. }
  96. function p(a, b, c) {
  97. for (x in b) c && (f(b[x]) || g(b[x])) ? (f(b[x]) && !f(a[x]) && (a[x] = {}), g(b[x]) && !g(a[x]) && (a[x] = []), p(a[x], b[x], c)) : b[x] !== w && (a[x] = b[x])
  98. }
  99. function q(a, b) {
  100. return b === w ? y(a) : y(a).filter(b)
  101. }
  102. function r(a, c, d, e) {
  103. return b(c) ? c.call(a, d, e) : c
  104. }
  105. function s(a, b, c) {
  106. null == c ? a.removeAttribute(b) : a.setAttribute(b, c)
  107. }
  108. function t(a, b) {
  109. var c = a.className,
  110. d = c && c.baseVal !== w;
  111. return b === w ? d ? c.baseVal : c : void(d ? c.baseVal = b : a.className = b)
  112. }
  113. function u(a) {
  114. var b;
  115. try {
  116. return a ? "true" == a || ("false" == a ? !1 : "null" == a ? null : isNaN(b = Number(a)) ? /^[\[\{]/.test(a) ? y.parseJSON(a) : a : b) : a
  117. } catch (c) {
  118. return a
  119. }
  120. }
  121. function v(a, b) {
  122. b(a);
  123. for (var c in a.childNodes) v(a.childNodes[c], b)
  124. }
  125. var w, x, y, z, A, B, C = [],
  126. D = C.slice,
  127. E = C.filter,
  128. F = window.document,
  129. G = {},
  130. H = {},
  131. I = F.defaultView ? F.defaultView.getComputedStyle : F.documentElement.currentStyle,
  132. J = {
  133. "column-count": 1,
  134. columns: 1,
  135. "font-weight": 1,
  136. "line-height": 1,
  137. opacity: 1,
  138. "z-index": 1,
  139. zoom: 1
  140. },
  141. K = /^\s*<(\w+|!)[^>]*>/,
  142. L = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
  143. M = /^(?:body|html)$/i,
  144. N = ["val", "css", "html", "text", "data", "width", "height", "offset"],
  145. O = ["after", "prepend", "before", "append"],
  146. P = F.createElement("table"),
  147. Q = F.createElement("tr"),
  148. R = {
  149. tr: F.createElement("tbody"),
  150. tbody: P,
  151. thead: P,
  152. tfoot: P,
  153. td: Q,
  154. th: Q,
  155. "*": F.createElement("div")
  156. },
  157. S = /complete|loaded|interactive/,
  158. T = /^\.([\w-]+)$/,
  159. U = /^#([\w-]*)$/,
  160. V = /^[\w-]+$/,
  161. W = {},
  162. X = W.toString,
  163. Y = {},
  164. Z = F.createElement("div");
  165. return Y.matches = function(a, b) {
  166. if (!a || 1 !== a.nodeType) return !1;
  167. var c = a.webkitMatchesSelector || a.mozMatchesSelector || a.oMatchesSelector || a.matchesSelector;
  168. if (c) return c.call(a, b);
  169. var d, e = a.parentNode,
  170. f = !e;
  171. return f && (e = Z).appendChild(a), d = ~Y.qsa(e, b).indexOf(a), f && Z.removeChild(a), d
  172. }, A = function(a) {
  173. return a.replace(/-+(.)?/g, function(a, b) {
  174. return b ? b.toUpperCase() : ""
  175. })
  176. }, B = function(a) {
  177. return E.call(a, function(b, c) {
  178. return a.indexOf(b) == c
  179. })
  180. }, Y.fragment = function(a, b, c) {
  181. a.replace && (a = a.replace(L, "<$1></$2>")), b === w && (b = K.test(a) && RegExp.$1), b in R || (b = "*");
  182. var d, e, g = R[b];
  183. return g.innerHTML = "" + a, e = y.each(D.call(g.childNodes), function() {
  184. g.removeChild(this)
  185. }), f(c) && (d = y(e), y.each(c, function(a, b) {
  186. N.indexOf(a) > -1 ? d[a](b) : d.attr(a, b)
  187. })), e
  188. }, Y.Z = function(a, b) {
  189. return a = a || [], a.__proto__ = y.fn, a.selector = b || "", a
  190. }, Y.isZ = function(a) {
  191. return a instanceof Y.Z
  192. }, Y.init = function(a, c) {
  193. if (a) {
  194. if (b(a)) return y(F).ready(a);
  195. if (Y.isZ(a)) return a;
  196. var d;
  197. if (g(a)) d = i(a);
  198. else if (e(a)) d = [f(a) ? y.extend({}, a) : a], a = null;
  199. else if (K.test(a)) d = Y.fragment(a.trim(), RegExp.$1, c), a = null;
  200. else {
  201. if (c !== w) return y(c).find(a);
  202. d = Y.qsa(F, a)
  203. }
  204. return Y.Z(d, a)
  205. }
  206. return Y.Z()
  207. }, y = function(a, b) {
  208. return Y.init(a, b)
  209. }, y._tvp = !0, y.extend = function(a) {
  210. var b, c = D.call(arguments, 1);
  211. return "boolean" == typeof a && (b = a, a = c.shift()), c.forEach(function(c) {
  212. p(a, c, b)
  213. }), a
  214. }, Y.qsa = function(a, b) {
  215. var c;
  216. return d(a) && U.test(b) ? (c = a.getElementById(RegExp.$1)) ? [c] : [] : 1 !== a.nodeType && 9 !== a.nodeType ? [] : D.call(T.test(b) ? a.getElementsByClassName(RegExp.$1) : V.test(b) ? a.getElementsByTagName(b) : a.querySelectorAll(b))
  217. }, y.contains = function(a, b) {
  218. return a !== b && a.contains(b)
  219. }, y.type = a, y.isFunction = b, y.isWindow = c, y.isArray = g, y.isPlainObject = f, y.isEmptyObject = function(a) {
  220. var b;
  221. for (b in a) return !1;
  222. return !0
  223. }, y.inArray = function(a, b, c) {
  224. return C.indexOf.call(b, a, c)
  225. }, y.camelCase = A, y.trim = function(a) {
  226. return a.trim()
  227. }, y.uuid = 0, y.support = {}, y.expr = {}, y.map = function(a, b) {
  228. var c, d, e, f = [];
  229. if (h(a))
  230. for (d = 0; d < a.length; d++) c = b(a[d], d), null != c && f.push(c);
  231. else
  232. for (e in a) c = b(a[e], e), null != c && f.push(c);
  233. return j(f)
  234. }, y.each = function(a, b) {
  235. var c, d;
  236. if (h(a)) {
  237. for (c = 0; c < a.length; c++)
  238. if (b.call(a[c], c, a[c]) === !1) return a
  239. } else
  240. for (d in a)
  241. if (b.call(a[d], d, a[d]) === !1) return a; return a
  242. }, y.grep = function(a, b) {
  243. return E.call(a, b)
  244. }, window.JSON && (y.parseJSON = JSON.parse), y.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(a, b) {
  245. W["[object " + b + "]"] = b.toLowerCase()
  246. }), y.fn = {
  247. forEach: C.forEach,
  248. reduce: C.reduce,
  249. push: C.push,
  250. sort: C.sort,
  251. indexOf: C.indexOf,
  252. concat: C.concat,
  253. map: function(a) {
  254. return y(y.map(this, function(b, c) {
  255. return a.call(b, c, b)
  256. }))
  257. },
  258. slice: function() {
  259. return y(D.apply(this, arguments))
  260. },
  261. ready: function(a) {
  262. return S.test(F.readyState) ? a(y) : F.addEventListener("DOMContentLoaded", function() {
  263. a(y)
  264. }, !1), this
  265. },
  266. get: function(a) {
  267. return a === w ? D.call(this) : this[a >= 0 ? a : a + this.length]
  268. },
  269. toArray: function() {
  270. return this.get()
  271. },
  272. size: function() {
  273. return this.length
  274. },
  275. remove: function() {
  276. return this.each(function() {
  277. null != this.parentNode && this.parentNode.removeChild(this)
  278. })
  279. },
  280. each: function(a) {
  281. return C.every.call(this, function(b, c) {
  282. return a.call(b, c, b) !== !1
  283. }), this
  284. },
  285. filter: function(a) {
  286. return b(a) ? this.not(this.not(a)) : y(E.call(this, function(b) {
  287. return Y.matches(b, a)
  288. }))
  289. },
  290. add: function(a, b) {
  291. return y(B(this.concat(y(a, b))))
  292. },
  293. is: function(a) {
  294. return this.length > 0 && Y.matches(this[0], a)
  295. },
  296. not: function(a) {
  297. var c = [];
  298. if (b(a) && a.call !== w) this.each(function(b) {
  299. a.call(this, b) || c.push(this)
  300. });
  301. else {
  302. var d = "string" == typeof a ? this.filter(a) : h(a) && b(a.item) ? D.call(a) : y(a);
  303. this.forEach(function(a) {
  304. d.indexOf(a) < 0 && c.push(a)
  305. })
  306. }
  307. return y(c)
  308. },
  309. has: function(a) {
  310. return this.filter(function() {
  311. return e(a) ? y.contains(this, a) : y(this).find(a).size()
  312. })
  313. },
  314. eq: function(a) {
  315. return -1 === a ? this.slice(a) : this.slice(a, +a + 1)
  316. },
  317. first: function() {
  318. var a = this[0];
  319. return a && !e(a) ? a : y(a)
  320. },
  321. last: function() {
  322. var a = this[this.length - 1];
  323. return a && !e(a) ? a : y(a)
  324. },
  325. find: function(a) {
  326. var b, c = this;
  327. return b = "object" == typeof a ? y(a).filter(function() {
  328. var a = this;
  329. return C.some.call(c, function(b) {
  330. return y.contains(b, a)
  331. })
  332. }) : 1 == this.length ? y(Y.qsa(this[0], a)) : this.map(function() {
  333. return Y.qsa(this, a)
  334. })
  335. },
  336. closest: function(a, b) {
  337. var c = this[0],
  338. e = !1;
  339. for ("object" == typeof a && (e = y(a)); c && !(e ? e.indexOf(c) >= 0 : Y.matches(c, a));) c = c !== b && !d(c) && c.parentNode;
  340. return y(c)
  341. },
  342. parents: function(a) {
  343. for (var b = [], c = this; c.length > 0;) c = y.map(c, function(a) {
  344. return (a = a.parentNode) && !d(a) && b.indexOf(a) < 0 ? (b.push(a), a) : void 0
  345. });
  346. return q(b, a)
  347. },
  348. parent: function(a) {
  349. return q(B(this.pluck("parentNode")), a)
  350. },
  351. children: function(a) {
  352. return q(this.map(function() {
  353. return o(this)
  354. }), a)
  355. },
  356. contents: function() {
  357. return this.map(function() {
  358. return D.call(this.childNodes)
  359. })
  360. },
  361. siblings: function(a) {
  362. return q(this.map(function(a, b) {
  363. return E.call(o(b.parentNode), function(a) {
  364. return a !== b
  365. })
  366. }), a)
  367. },
  368. empty: function() {
  369. return this.each(function() {
  370. this.innerHTML = ""
  371. })
  372. },
  373. pluck: function(a) {
  374. return y.map(this, function(b) {
  375. return b[a]
  376. })
  377. },
  378. show: function() {
  379. return this.each(function() {
  380. "none" == this.style.display && (this.style.display = null), "none" == I(this, "").getPropertyValue("display") && (this.style.display = n(this.nodeName))
  381. })
  382. },
  383. replaceWith: function(a) {
  384. return this.before(a).remove()
  385. },
  386. wrap: function(a) {
  387. var c = b(a);
  388. if (this[0] && !c) var d = y(a).get(0),
  389. e = d.parentNode || this.length > 1;
  390. return this.each(function(b) {
  391. y(this).wrapAll(c ? a.call(this, b) : e ? d.cloneNode(!0) : d)
  392. })
  393. },
  394. wrapAll: function(a) {
  395. if (this[0]) {
  396. y(this[0]).before(a = y(a));
  397. for (var b;
  398. (b = a.children()).length;) a = b.first();
  399. y(a).append(this)
  400. }
  401. return this
  402. },
  403. wrapInner: function(a) {
  404. var c = b(a);
  405. return this.each(function(b) {
  406. var d = y(this),
  407. e = d.contents(),
  408. f = c ? a.call(this, b) : a;
  409. e.length ? e.wrapAll(f) : d.append(f)
  410. })
  411. },
  412. unwrap: function() {
  413. return this.parent().each(function() {
  414. y(this).replaceWith(y(this).children())
  415. }), this
  416. },
  417. clone: function() {
  418. return this.map(function() {
  419. return this.cloneNode(!0)
  420. })
  421. },
  422. hide: function() {
  423. return this.css("display", "none")
  424. },
  425. toggle: function(a) {
  426. return this.each(function() {
  427. var b = y(this);
  428. (a === w ? "none" == b.css("display") : a) ? b.show(): b.hide()
  429. })
  430. },
  431. prev: function(a) {
  432. return y(this.pluck("previousElementSibling")).filter(a || "*")
  433. },
  434. next: function(a) {
  435. return y(this.pluck("nextElementSibling")).filter(a || "*")
  436. },
  437. html: function(a) {
  438. return a === w ? this.length > 0 ? this[0].innerHTML : null : this.each(function(b) {
  439. var c = this.innerHTML;
  440. y(this).empty().append(r(this, a, b, c))
  441. })
  442. },
  443. text: function(a) {
  444. return a === w ? this.length > 0 ? this[0].textContent : null : this.each(function() {
  445. this.textContent = a
  446. })
  447. },
  448. attr: function(a, b) {
  449. var c;
  450. return "string" == typeof a && b === w ? 0 == this.length || 1 !== this[0].nodeType ? w : "value" == a && "INPUT" == this[0].nodeName ? this.val() : !(c = this[0].getAttribute(a)) && a in this[0] ? this[0][a] : c : this.each(function(c) {
  451. if (1 === this.nodeType)
  452. if (e(a))
  453. for (x in a) s(this, x, a[x]);
  454. else s(this, a, r(this, b, c, this.getAttribute(a)))
  455. })
  456. },
  457. removeAttr: function(a) {
  458. return this.each(function() {
  459. 1 === this.nodeType && s(this, a)
  460. })
  461. },
  462. prop: function(a, b) {
  463. return b === w ? this[0] && this[0][a] : this.each(function(c) {
  464. this[a] = r(this, b, c, this[a])
  465. })
  466. },
  467. data: function(a, b) {
  468. var c = this.attr("data-" + k(a), b);
  469. return null !== c ? u(c) : w
  470. },
  471. val: function(a) {
  472. return a === w ? this[0] && (this[0].multiple ? y(this[0]).find("option").filter(function() {
  473. return this.selected
  474. }).pluck("value") : this[0].value) : this.each(function(b) {
  475. this.value = r(this, a, b, this.value)
  476. })
  477. },
  478. offset: function(a) {
  479. if (a) return this.each(function(b) {
  480. var c = y(this),
  481. d = r(this, a, b, c.offset()),
  482. e = c.offsetParent().offset(),
  483. f = {
  484. top: d.top - e.top,
  485. left: d.left - e.left
  486. };
  487. "static" == c.css("position") && (f.position = "relative"), c.css(f)
  488. });
  489. if (0 == this.length) return null;
  490. var b = this[0].getBoundingClientRect();
  491. return {
  492. left: b.left + window.pageXOffset,
  493. top: b.top + window.pageYOffset,
  494. width: Math.round(b.width),
  495. height: Math.round(b.height)
  496. }
  497. },
  498. css: function(b, c) {
  499. if (arguments.length < 2 && "string" == typeof b) return this[0] && (this[0].style[A(b)] || I(this[0], "").getPropertyValue(b));
  500. var d = "";
  501. if ("string" == a(b)) c || 0 === c ? d = k(b) + ":" + m(b, c) : this.each(function() {
  502. this.style.removeProperty(k(b))
  503. });
  504. else
  505. for (x in b) b[x] || 0 === b[x] ? d += k(x) + ":" + m(x, b[x]) + ";" : this.each(function() {
  506. this.style.removeProperty(k(x))
  507. });
  508. return this.each(function() {
  509. this.style.cssText += ";" + d
  510. })
  511. },
  512. index: function(a) {
  513. return a ? this.indexOf(y(a)[0]) : this.parent().children().indexOf(this[0])
  514. },
  515. hasClass: function(a) {
  516. return C.some.call(this, function(a) {
  517. return this.test(t(a))
  518. }, l(a))
  519. },
  520. addClass: function(a) {
  521. return this.each(function(b) {
  522. z = [];
  523. var c = t(this),
  524. d = r(this, a, b, c);
  525. d.split(/\s+/g).forEach(function(a) {
  526. y(this).hasClass(a) || z.push(a)
  527. }, this), z.length && t(this, c + (c ? " " : "") + z.join(" "))
  528. })
  529. },
  530. removeClass: function(a) {
  531. return this.each(function(b) {
  532. return a === w ? t(this, "") : (z = t(this), r(this, a, b, z).split(/\s+/g).forEach(function(a) {
  533. z = z.replace(l(a), " ")
  534. }), void t(this, z.trim()))
  535. })
  536. },
  537. toggleClass: function(a, b) {
  538. return this.each(function(c) {
  539. var d = y(this),
  540. e = r(this, a, c, t(this));
  541. e.split(/\s+/g).forEach(function(a) {
  542. (b === w ? !d.hasClass(a) : b) ? d.addClass(a): d.removeClass(a)
  543. })
  544. })
  545. },
  546. scrollTop: function() {
  547. return this.length ? "scrollTop" in this[0] ? this[0].scrollTop : this[0].scrollY : void 0
  548. },
  549. position: function() {
  550. if (this.length) {
  551. var a = this[0],
  552. b = this.offsetParent(),
  553. c = this.offset(),
  554. d = M.test(b[0].nodeName) ? {
  555. top: 0,
  556. left: 0
  557. } : b.offset();
  558. return c.top -= parseFloat(y(a).css("margin-top")) || 0, c.left -= parseFloat(y(a).css("margin-left")) || 0, d.top += parseFloat(y(b[0]).css("border-top-width")) || 0, d.left += parseFloat(y(b[0]).css("border-left-width")) || 0, {
  559. top: c.top - d.top,
  560. left: c.left - d.left
  561. }
  562. }
  563. },
  564. offsetParent: function() {
  565. return this.map(function() {
  566. for (var a = this.offsetParent || F.body; a && !M.test(a.nodeName) && "static" == y(a).css("position");) a = a.offsetParent;
  567. return a
  568. })
  569. }
  570. }, y.fn.detach = y.fn.remove, ["width", "height"].forEach(function(a) {
  571. y.fn[a] = function(b) {
  572. var e, f = this[0],
  573. g = a.replace(/./, function(a) {
  574. return a[0].toUpperCase()
  575. });
  576. return b === w ? c(f) ? f["inner" + g] : d(f) ? f.documentElement["offset" + g] : (e = this.offset()) && e[a] : this.each(function(c) {
  577. f = y(this), f.css(a, r(this, b, c, f[a]()))
  578. })
  579. }
  580. }), O.forEach(function(b, c) {
  581. var d = c % 2;
  582. y.fn[b] = function() {
  583. var b, e, f = y.map(arguments, function(c) {
  584. return b = a(c), "object" == b || "array" == b || null == c ? c : Y.fragment(c)
  585. }),
  586. g = this.length > 1;
  587. return f.length < 1 ? this : this.each(function(a, b) {
  588. e = d ? b : b.parentNode, b = 0 == c ? b.nextSibling : 1 == c ? b.firstChild : 2 == c ? b : null, f.forEach(function(a) {
  589. if (g) a = a.cloneNode(!0);
  590. else if (!e) return y(a).remove();
  591. v(e.insertBefore(a, b), function(a) {
  592. null == a.nodeName || "SCRIPT" !== a.nodeName.toUpperCase() || a.type && "text/javascript" !== a.type || a.src || window.eval.call(window, a.innerHTML)
  593. })
  594. })
  595. })
  596. }, y.fn[d ? b + "To" : "insert" + (c ? "Before" : "After")] = function(a) {
  597. return y(a)[b](this), this
  598. }
  599. }), Y.Z.prototype = y.fn, Y.uniq = B, Y.deserializeValue = u, y.zepto = Y, y
  600. }();
  601. "undefined" == typeof global && (window.Zepto = Zepto),
  602. function(a) {
  603. function b(a) {
  604. var b = this.os = {},
  605. c = this.browser = {},
  606. d = a.match(/WebKit\/([\d.]+)/),
  607. e = a.match(/(Android)(\s+|\/)([\d.]+)/),
  608. f = a.match(/(iPad).*OS\s([\d_]+)/),
  609. g = !f && a.match(/(iPhone\sOS)\s([\d_]+)/),
  610. h = a.match(/(webOS|hpwOS)[\s\/]([\d.]+)/),
  611. i = h && a.match(/TouchPad/),
  612. j = a.match(/Kindle\/([\d.]+)/),
  613. k = a.match(/Silk\/([\d._]+)/),
  614. l = a.match(/(BlackBerry).*Version\/([\d.]+)/),
  615. m = a.match(/(BB10).*Version\/([\d.]+)/),
  616. n = a.match(/(RIM\sTablet\sOS)\s([\d.]+)/),
  617. o = a.match(/PlayBook/),
  618. p = a.match(/Chrome\/([\d.]+)/) || a.match(/CriOS\/([\d.]+)/),
  619. q = a.match(/Firefox\/([\d.]+)/);
  620. (c.webkit = !!d) && (c.version = d[1]), e && (b.android = !0, b.version = e[3]), g && (b.ios = b.iphone = !0, b.version = g[2].replace(/_/g, ".")), f && (b.ios = b.ipad = !0, b.version = f[2].replace(/_/g, ".")), h && (b.webos = !0, b.version = h[2]), i && (b.touchpad = !0), l && (b.blackberry = !0, b.version = l[2]), m && (b.bb10 = !0, b.version = m[2]), n && (b.rimtabletos = !0, b.version = n[2]), o && (c.playbook = !0), j && (b.kindle = !0, b.version = j[1]), k && (c.silk = !0, c.version = k[1]), !k && b.android && a.match(/Kindle Fire/) && (c.silk = !0), p && (c.chrome = !0, c.version = p[1]), q && (c.firefox = !0, c.version = q[1]), b.tablet = !!(f || o || e && !a.match(/Mobile/) || q && a.match(/Tablet/)), b.phone = !(b.tablet || !(e || g || h || l || m || p && a.match(/Android/) || p && a.match(/CriOS\/([\d.]+)/) || q && a.match(/Mobile/)))
  621. }
  622. b.call(a, navigator.userAgent), a.__detect = b
  623. }(Zepto),
  624. function(a) {
  625. function b(a) {
  626. return a._zid || (a._zid = n++)
  627. }
  628. function c(a, c, f, g) {
  629. if (c = d(c), c.ns) var h = e(c.ns);
  630. return (m[b(a)] || []).filter(function(a) {
  631. return !(!a || c.e && a.e != c.e || c.ns && !h.test(a.ns) || f && b(a.fn) !== b(f) || g && a.sel != g)
  632. })
  633. }
  634. function d(a) {
  635. var b = ("" + a).split(".");
  636. return {
  637. e: b[0],
  638. ns: b.slice(1).sort().join(" ")
  639. }
  640. }
  641. function e(a) {
  642. return new RegExp("(?:^| )" + a.replace(" ", " .* ?") + "(?: |$)")
  643. }
  644. function f(b, c, d) {
  645. "string" != a.type(b) ? a.each(b, d) : b.split(/\s/).forEach(function(a) {
  646. d(a, c)
  647. })
  648. }
  649. function g(a, b) {
  650. return a.del && ("focus" == a.e || "blur" == a.e) || !!b
  651. }
  652. function h(a) {
  653. return p[a] || a
  654. }
  655. function i(c, e, i, j, k, l) {
  656. var n = b(c),
  657. o = m[n] || (m[n] = []);
  658. f(e, i, function(b, e) {
  659. var f = d(b);
  660. f.fn = e, f.sel = j, f.e in p && (e = function(b) {
  661. var c = b.relatedTarget;
  662. return !c || c !== this && !a.contains(this, c) ? f.fn.apply(this, arguments) : void 0
  663. }), f.del = k && k(e, b);
  664. var i = f.del || e;
  665. f.proxy = function(a) {
  666. var b = i.apply(c, [a].concat(a.data));
  667. return b === !1 && (a.preventDefault(), a.stopPropagation()), b
  668. }, f.i = o.length, o.push(f), c.addEventListener ? c.addEventListener(h(f.e), f.proxy, g(f, l)) : c.attachEvent("on" + h(f.e), f.proxy, g(f, l))
  669. })
  670. }
  671. function j(a, d, e, i, j) {
  672. var k = b(a);
  673. f(d || "", e, function(b, d) {
  674. c(a, b, d, i).forEach(function(b) {
  675. delete m[k][b.i], a.removeEventListener ? a.removeEventListener(h(b.e), b.proxy, g(b, j)) : a.detachEvent("on" + h(b.e), b.proxy, g(b, j))
  676. })
  677. })
  678. }
  679. function k(b) {
  680. var c, d = {
  681. originalEvent: b
  682. };
  683. for (c in b) s.test(c) || void 0 === b[c] || (d[c] = b[c]);
  684. return a.each(t, function(a, c) {
  685. d[a] = function() {
  686. return this[c] = q, b[a].apply(b, arguments)
  687. }, d[c] = r
  688. }), d
  689. }
  690. function l(a) {
  691. if (!("defaultPrevented" in a)) {
  692. a.defaultPrevented = !1;
  693. var b = a.preventDefault;
  694. a.preventDefault = function() {
  695. this.defaultPrevented = !0, b.call(this)
  696. }
  697. }
  698. }
  699. var m = (a.zepto.qsa, {}),
  700. n = 1,
  701. o = {},
  702. p = {
  703. mouseenter: "mouseover",
  704. mouseleave: "mouseout"
  705. };
  706. o.click = o.mousedown = o.mouseup = o.mousemove = "MouseEvents", a.event = {
  707. add: i,
  708. remove: j
  709. }, a.proxy = function(c, d) {
  710. if (a.isFunction(c)) {
  711. var e = function() {
  712. return c.apply(d, arguments)
  713. };
  714. return e._zid = b(c), e
  715. }
  716. if ("string" == typeof d) return a.proxy(c[d], c);
  717. throw new TypeError("expected function")
  718. }, a.fn.bind = function(a, b) {
  719. return this.each(function() {
  720. i(this, a, b)
  721. })
  722. }, a.fn.unbind = function(a, b) {
  723. return this.each(function() {
  724. j(this, a, b)
  725. })
  726. }, a.fn.one = function(a, b) {
  727. return this.each(function(c, d) {
  728. i(this, a, b, null, function(a, b) {
  729. return function() {
  730. var c = a.apply(d, arguments);
  731. return j(d, b, a), c
  732. }
  733. })
  734. })
  735. };
  736. var q = function() {
  737. return !0
  738. },
  739. r = function() {
  740. return !1
  741. },
  742. s = /^([A-Z]|layer[XY]$)/,
  743. t = {
  744. preventDefault: "isDefaultPrevented",
  745. stopImmediatePropagation: "isImmediatePropagationStopped",
  746. stopPropagation: "isPropagationStopped"
  747. };
  748. a.fn.delegate = function(b, c, d) {
  749. return this.each(function(e, f) {
  750. i(f, c, d, b, function(c) {
  751. return function(d) {
  752. var e, g = a(d.target).closest(b, f).get(0);
  753. return g ? (e = a.extend(k(d), {
  754. currentTarget: g,
  755. liveFired: f
  756. }), c.apply(g, [e].concat([].slice.call(arguments, 1)))) : void 0
  757. }
  758. })
  759. })
  760. }, a.fn.undelegate = function(a, b, c) {
  761. return this.each(function() {
  762. j(this, b, c, a)
  763. })
  764. }, a.fn.live = function(b, c) {
  765. return a(document.body).delegate(this.selector, b, c), this
  766. }, a.fn.die = function(b, c) {
  767. return a(document.body).undelegate(this.selector, b, c), this
  768. }, a.fn.on = function(b, c, d) {
  769. return !c || a.isFunction(c) ? this.bind(b, c || d) : this.delegate(c, b, d)
  770. }, a.fn.off = function(b, c, d) {
  771. return !c || a.isFunction(c) ? this.unbind(b, c || d) : this.undelegate(c, b, d)
  772. }, a.fn.trigger = function(b, c) {
  773. return ("string" == typeof b || a.isPlainObject(b)) && (b = a.Event(b)), l(b), b.data = c, this.each(function() {
  774. "dispatchEvent" in this && this.dispatchEvent(b)
  775. })
  776. }, a.fn.triggerHandler = function(b, d) {
  777. var e, f;
  778. return this.each(function(g, h) {
  779. e = k("string" == typeof b ? a.Event(b) : b), e.data = d, e.target = h, a.each(c(h, b.type || b), function(a, b) {
  780. return f = b.proxy(e), e.isImmediatePropagationStopped() ? !1 : void 0
  781. })
  782. }), f
  783. }, "focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(b) {
  784. a.fn[b] = function(a) {
  785. return a ? this.bind(b, a) : this.trigger(b)
  786. }
  787. }), ["focus", "blur"].forEach(function(b) {
  788. a.fn[b] = function(a) {
  789. return a ? this.bind(b, a) : this.each(function() {
  790. try {
  791. this[b]()
  792. } catch (a) {}
  793. }), this
  794. }
  795. }), a.Event = function(a, b) {
  796. "string" != typeof a && (b = a, a = b.type);
  797. var c = document.createEvent(o[a] || "Events"),
  798. d = !0;
  799. if (b)
  800. for (var e in b) "bubbles" == e ? d = !!b[e] : c[e] = b[e];
  801. return c.initEvent(a, d, !0, null, null, null, null, null, null, null, null, null, null, null, null), c.isDefaultPrevented = function() {
  802. return this.defaultPrevented
  803. }, c
  804. }
  805. }(Zepto),
  806. function(a) {
  807. var b, c, d, e, f, g, h;
  808. c = function(a, b) {
  809. b.parentNode.removeChild(b), window[a] = void 0;
  810. try {
  811. delete window[a]
  812. } catch (c) {}
  813. }, d = function(a, b) {
  814. var c, d, e = "";
  815. for (c in a) a.hasOwnProperty(c) && (c = b ? encodeURIComponent(c) : c, d = b ? encodeURIComponent(a[c]) : a[c], e += c + "=" + d + "&");
  816. return e.replace(/&$/, "")
  817. }, e = function() {
  818. return "cb_" + tvp.$.createGUID(16)
  819. }, f = function(a, b) {
  820. "undefined" != typeof a && a(b)
  821. }, g = function(a, b) {
  822. "undefined" != typeof a && a(b)
  823. }, h = function(a) {
  824. "undefined" != typeof a && a()
  825. }, b = {}, b.init = function(a) {
  826. var c;
  827. for (c in a) a.hasOwnProperty(c) && (b.options[c] = a[c]);
  828. return !0
  829. }, b.get = function(a) {
  830. a = a || {};
  831. var b = a.url,
  832. i = a.callbackParameter || "callback",
  833. j = a.data || {},
  834. k = document.createElement("script"),
  835. l = a.jsonpCallback || e(),
  836. m = "?";
  837. b && (j[i] = l, b.indexOf("?") >= 0 && (m = "&"), b += m + d(j, !0), b = b.replace(/=\?/, "=" + l), window[l] = function(b) {
  838. "undefined" == typeof b ? f(a.error, "Invalid JSON data returned") : g(a.success, b), c(l, k), h(a.complete)
  839. }, k.setAttribute("src", b), document.getElementsByTagName("head")[0].appendChild(k), k.onerror = function() {
  840. c(l, k), h(a.complete), f(a.error, "Error while trying to access the URL")
  841. })
  842. }, a.ajax = b.get
  843. }(Zepto),
  844. function(a) {
  845. if ("__proto__" in {} || a.extend(a.zepto, {
  846. Z: function(b, c) {
  847. return b = b || [], a.extend(b, a.fn), b.selector = c || "", b.__Z = !0, b
  848. },
  849. isZ: function(b) {
  850. return "array" === a.type(b) && "__Z" in b
  851. }
  852. }), "function" == typeof window.getComputedStyle) try {
  853. getComputedStyle(void 0)
  854. } catch (b) {
  855. var c = window.getComputedStyle;
  856. window.getComputedStyle = function() {
  857. try {
  858. return c.apply(window, arguments)
  859. } catch (a) {
  860. return null
  861. }
  862. }
  863. }
  864. }(Zepto);
  865. var tvp = {};
  866. tvp.lastModify = "2015-02-12 22:26:39", tvp.ts = "201502122", tvp.ver = "$V2.0Build3526$", tvp.name = "\u817e\u8baf\u89c6\u9891\u7edf\u4e00\u64ad\u653e\u5668", "undefined" == typeof window.DEBUG && (window.DEBUG = 1);
  867. var top = window.top;
  868. if (top != window) try {
  869. tvp.topurl = top.location.href
  870. } catch (e) {
  871. top = window
  872. }
  873. tvp.log = function(a) {
  874. if (window.DEBUG && null != document.getElementById("tvp_debug_console")) {
  875. var b = document.getElementById("tvp_debug_console");
  876. b.innerHTML += a + " | "
  877. } else window.console && window.console.log("[" + tvp.log.debugid+++"] " + a)
  878. }, tvp.debug = function(a) {
  879. window.DEBUG || -1 !== tvp.log.isDebug || (tvp.log.isDebug = "true" == tvp.$.getUrlParam("debug") ? 1 : 0), (window.DEBUG || tvp.log.isDebug) && tvp.log(a)
  880. }, tvp.log.isDebug = -1, tvp.log.debugid = 1, tvp.DEVICE = {
  881. aphone: 1,
  882. iphone: 2,
  883. ipad: 3,
  884. other: 0
  885. }, tvp.PLATFORM = {
  886. wechat: 1,
  887. mqq: 2,
  888. qqbrowser: 3,
  889. other: 0
  890. }, tvp.APPID = {
  891. wechatPublic: 1e4,
  892. news: 10001,
  893. qqmusic: 10007
  894. }, tvp.ACTION = {
  895. onVodH5Init: "tvp:vodhtml5:beforeInit",
  896. onFlashPlayerInited: "tvp:flash:inited"
  897. },
  898. function() {
  899. function a(a) {
  900. return a instanceof Array
  901. }
  902. var b, c, d, e, f, g, h, i, j, k, l, m, n, o = [].slice;
  903. f = "1.3.2", c = "pending", e = "resolved", d = "rejected", j = function(a, b) {
  904. return null != a ? a.hasOwnProperty(b) : void 0
  905. }, l = function(a) {
  906. return j(a, "length") && j(a, "callee")
  907. }, i = function(b) {
  908. return l(b) ? i(Array.prototype.slice.call(b)) : a(b) ? b.reduce(function(b, c) {
  909. return a(c) ? b.concat(i(c)) : (b.push(c), b)
  910. }, []) : [b]
  911. }, g = function(a, b) {
  912. return 0 >= a ? b() : function() {
  913. return --a < 1 ? b.apply(this, arguments) : void 0
  914. }
  915. }, m = function(a, b) {
  916. return function() {
  917. var c;
  918. return c = [a].concat(Array.prototype.slice.call(arguments, 0)), b.apply(this, c)
  919. }
  920. }, h = function(a, b, c) {
  921. var d, e, f, g, h;
  922. for (g = i(a), h = [], e = 0, f = g.length; f > e; e++) d = g[e], h.push(d.call.apply(d, [c].concat(o.call(b))));
  923. return h
  924. }, b = function() {
  925. var a, f, g, j, k, l;
  926. return l = c, j = [], k = [], a = [], g = {}, this.promise = function(f) {
  927. var m, n;
  928. return f = f || {}, f.state = function() {
  929. return l
  930. }, n = function(a, b) {
  931. return function() {
  932. return l === c && b.push.apply(b, i(arguments)), a() && h(arguments, g), f
  933. }
  934. }, f.done = n(function() {
  935. return l === e
  936. }, j), f.fail = n(function() {
  937. return l === d
  938. }, k), f.always = n(function() {
  939. return l !== c
  940. }, a), m = function(a, c) {
  941. var d, e;
  942. return d = new b, e = function(a, b, c) {
  943. return a(c ? function() {
  944. return b(c.apply(null, i(arguments)))
  945. } : function() {
  946. return b.apply(null, i(arguments))
  947. })
  948. }, e(f.done, d.resolve, a), e(f.fail, d.reject, c), d
  949. }, f.pipe = m, f.then = m, f
  950. }, this.promise(this), f = function(b, d, e) {
  951. return function() {
  952. return l === c && (l = b, g = arguments, h([d, a], g, e)), this
  953. }
  954. }, this.resolve = f(e, j), this.reject = f(d, k), this.resolveWith = function() {
  955. var a, b;
  956. return b = arguments[0], a = 2 <= arguments.length ? o.call(arguments, 1) : [], f(e, j, b).apply(null, a)
  957. }, this.rejectWith = function() {
  958. var a, b;
  959. return b = arguments[0], a = 2 <= arguments.length ? o.call(arguments, 1) : [], f(d, k, b).apply(null, a)
  960. }, this
  961. }, n = function() {
  962. var a, c, d, e, f, h, j, k;
  963. for (e = new b, c = i(arguments), d = g(c.length, e.resolve), f = 0, j = c.length; j > f; f++) a = c[f], a.done(d);
  964. for (h = 0, k = c.length; k > h; h++) a = c[h], a.fail(function(a, b) {
  965. return e.reject(a, b)
  966. });
  967. return e.promise()
  968. }, k = function(a) {
  969. return a.Deferred = function() {
  970. return new b
  971. }, a.ajax = m(a.ajax, function(a, c) {
  972. var d, e;
  973. return null == c && (c = {}), e = new b, d = function(a, b) {
  974. return m(a, function() {
  975. var a, c;
  976. return c = arguments[0], a = 2 <= arguments.length ? o.call(arguments, 1) : [], c && c.apply(null, a), b.apply(null, a)
  977. })
  978. }, c.success = d(c.success, e.resolve), c.error = d(c.error, e.reject), a(c), e.promise()
  979. }), a.when = n
  980. }, "undefined" != typeof exports ? (exports.Deferred = function() {
  981. return new b
  982. }, exports.when = n, exports.installInto = k) : (this.Deferred = function() {
  983. return new b
  984. }, this.Deferred.when = n, this.Deferred.installInto = k, this.DeferedClass = b)
  985. }.call(tvp), tvp.Deferred.installInto("undefined" != typeof Zepto ? Zepto : jq),
  986. function(a) {
  987. a.param = function(b, c) {
  988. var d = [];
  989. for (var e in b)
  990. if (!a.isFunction(b[e])) {
  991. var f = c ? c + "[" + e + "]" : e,
  992. g = b[e];
  993. d.push(a.isPlainObject(g) ? a.param(g, f) : f + "=" + encodeURIComponent(g))
  994. }
  995. return d.join("&")
  996. }
  997. }(Zepto);
  998. var _isUseInnerZepto = !1;
  999. "undefined" != typeof Zepto && Zepto._tvp ? (tvp.$ = Zepto, _isUseInnerZepto = !0) : (tvp.$ = {}, _isUseInnerZepto = !1),
  1000. function() {
  1001. return _isUseInnerZepto ? void 0 : "function" == typeof window.Zepto ? void(tvp.$ = window.Zepto) : "function" == typeof window.jQuery && "function" == typeof window.jQuery.Deferred ? (tvp.$ = window.jQuery, void(!tvp.$.os && "undefined" != typeof Zepto && Zepto.__detect && Zepto.__detect.call(tvp.$, navigator.userAgent))) : void("function" == typeof window.jq && (tvp.$ = window.jq, !tvp.$.os && "undefined" != typeof Zepto && Zepto.__detect && Zepto.__detect.call(tvp.$, navigator.userAgent)))
  1002. }(),
  1003. function() {
  1004. "undefined" == typeof document.DOCUMENT_NODE && (document.DOCUMENT_NODE = 9)
  1005. }(),
  1006. function(a) {
  1007. function b(b) {
  1008. {
  1009. var c = b.match(/MQQBrowser\/(\d+\.\d+)/i),
  1010. d = b.match(/QQ\/(\d+\.(\d+)\.(\d+)\.(\d+))/i) || b.match(/V1_AND_SQ_([\d\.]+)/),
  1011. e = b.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/) || b.match(/MicroMessenger\/((\d+)\.(\d+))/),
  1012. f = b.match(/Mac\sOS\sX\s(\d+\.\d+)/),
  1013. g = b.match(/Windows(\s+\w+)?\s+?(\d+\.\d+)/),
  1014. h = b.match(/MiuiBrowser\/(\d+\.\d+)/i),
  1015. i = b.match(/MI-ONE/),
  1016. j = b.match(/MI PAD/),
  1017. k = b.match(/UCBrowser\/(\d+\.\d+(\.\d+\.\d+)?)/) || b.match(/\sUC\s/),
  1018. l = b.match(/IEMobile(\/|\s+)(\d+\.\d+)/) || b.match(/WPDesktop/),
  1019. m = b.match(/(ipod).*\s([\d_]+)/i),
  1020. n = b.match(/(ipad).*\s([\d_]+)/i),
  1021. o = b.match(/(iphone)\sos\s([\d_]+)/i),
  1022. p = b.match(/Chrome\/(\d+\.\d+)/),
  1023. q = b.match(/Mozilla.*Linux.*Android.*AppleWebKit.*Mobile Safari/),
  1024. r = b.match(/(android)\s([\d\.]+)/i);
  1025. b.indexOf("HTC") > -1
  1026. }
  1027. if (a.browser = a.browser || {}, a.os = a.os || {}, window.ActiveXObject) {
  1028. var s = 6;
  1029. (window.XMLHttpRequest || b.indexOf("MSIE 7.0") > -1) && (s = 7), (window.XDomainRequest || b.indexOf("Trident/4.0") > -1) && (s = 8), b.indexOf("Trident/5.0") > -1 && (s = 9), b.indexOf("Trident/6.0") > -1 && (s = 10), a.browser.ie = !0, a.browser.version = s
  1030. } else b.indexOf("Trident/7.0") > -1 && (a.browser.ie = !0, a.browser.version = 11);
  1031. r && (this.os.android = !0, this.os.version = r[2]), m && (this.os.ios = this.os.ipod = !0, this.os.version = m[2].replace(/_/g, ".")), n && (this.os.ios = this.os.ipad = !0, this.os.version = n[2].replace(/_/g, ".")), o && (this.os.iphone = this.os.ios = !0, this.os.version = o[2].replace(/_/g, ".")), g && (this.os.windows = !0, this.os.version = g[2]), f && (this.os.Mac = !0, this.os.version = f[1]), b.indexOf("lepad_hls") > 0 && (this.os.LePad = !0), j && (this.os.MIPAD = !0), c && (this.browser.MQQ = !0, this.browser.version = c[1]), d && (this.browser.MQQClient = !0, this.browser.version = d[1]), e && (this.browser.WeChat = !0, this.browser.version = e[1]), h && (this.browser.MIUI = !0, this.browser.version = h[1]), k && (this.browser.UC = !0, this.browser.version = k[1] || 0 / 0), l && (this.browser.IEMobile = !0, this.browser.version = l[2]), q && (this.browser.AndriodBrowser = !0), i && (this.browser.M1 = !0), p && (this.browser.Chrome = !0, this.browser.version = p[1]), this.os.windows && (this.os.win64 = "undefined" != typeof navigator.platform && "win64" == navigator.platform.toLowerCase() ? !0 : !1);
  1032. var t = {
  1033. iPad7: "iPad; CPU OS 7",
  1034. LePad: "lepad_hls",
  1035. XiaoMi: "MI-ONE",
  1036. SonyDTV: "SonyDTV",
  1037. SamSung: "SAMSUNG",
  1038. HTC: "HTC",
  1039. VIVO: "vivo"
  1040. };
  1041. for (var u in t) this.os[u] = -1 !== b.indexOf(t[u]);
  1042. a.os.phone = a.os.phone || /windows phone/i.test(b), this.os.getNumVersion = function() {
  1043. return parseFloat(a.os.version, "10")
  1044. }, this.os.hasTouch = "ontouchstart" in window, this.os.hasTouch && this.os.ios && this.os.getNumVersion() < 6 && (this.os.hasTouch = !1), a.browser.WeChat && a.browser.version < 5 && (this.os.hasTouch = !1), a.extend(a.browser, {
  1045. getNumVersion: function() {
  1046. return parseFloat(a.browser.version, "10")
  1047. },
  1048. isFFCanOcx: function() {
  1049. return a.browser.firefox && a.browser.getNumVersion() >= 3 ? !0 : !1
  1050. },
  1051. isCanOcx: function() {
  1052. return !(!a.os.windows || !a.browser.ie && !a.browser.isFFCanOcx() && !a.browser.webkit)
  1053. },
  1054. isNotIESupport: function() {
  1055. return !!a.os.windows && (!!a.browser.webkit || a.browser.isFFCanOcx())
  1056. }
  1057. }), a.userAgent = {}, a.extend(a.userAgent, a.os), a.extend(a.userAgent, a.browser), a.userAgent.browserVersion = a.browser.version, a.userAgent.osVersion = a.os.version, delete a.userAgent.version
  1058. }
  1059. b.call(a, navigator.userAgent)
  1060. }(tvp.$),
  1061. function($) {
  1062. var extFun = {
  1063. getByID: function(a) {
  1064. return document.getElementById(a)
  1065. },
  1066. noop: function() {},
  1067. isString: function(a) {
  1068. return "string" === $.type(a)
  1069. },
  1070. isUndefined: function(a) {
  1071. return "undefined" === $.type(a)
  1072. },
  1073. now: function() {
  1074. return (new Date).getTime()
  1075. },
  1076. getISOTimeFormat: function() {
  1077. var a = new Date,
  1078. b = a.getFullYear(),
  1079. c = a.getMonth() + 1,
  1080. d = a.getDate(),
  1081. e = a.getHours(),
  1082. f = a.getMinutes(),
  1083. g = a.getSeconds();
  1084. return [
  1085. [b, 10 > c ? "0" + c : c, 10 > d ? "0" + d : d].join("-"), [10 > e ? "0" + e : e, 10 > f ? "0" + f : f, 10 > g ? "0" + g : g].join(":")
  1086. ].join(" ")
  1087. },
  1088. formatSeconds: function(a) {
  1089. a = parseInt(a);
  1090. var b = parseInt(a / 60),
  1091. c = b >= 60 ? parseInt(b / 60) : 0,
  1092. d = a % 60,
  1093. e = "";
  1094. return b >= 60 && (b %= 60), c > 0 && (e += 10 > c ? "0" + c : c, e += ":"), e += 10 > b ? "0" + b : b, e += ":", e += 10 > d ? "0" + d : d
  1095. },
  1096. formatSecondsWithText: function(a) {
  1097. var b = this.formatSeconds(a),
  1098. c = b.split(":"),
  1099. d = "";
  1100. switch (c.length) {
  1101. case 1:
  1102. d = c[0] + "\u79d2";
  1103. break;
  1104. case 2:
  1105. d = c[0] + "\u5206" + c[1] + "\u79d2";
  1106. break;
  1107. case 3:
  1108. d = c[0] + "\u5c0f\u65f6" + c[1] + "\u5206" + c[2] + "\u79d2";
  1109. break;
  1110. default:
  1111. d = b
  1112. }
  1113. return d
  1114. },
  1115. formatFileSize: function(a) {
  1116. return a = parseInt(a, 10), a = a / 1024 / 1024, a = a.toFixed(1), a + "M"
  1117. },
  1118. getHost: function() {
  1119. var a = window.location.hostname || window.location.host,
  1120. b = location.host.split(".");
  1121. return b.length > 1 && (a = b.slice(b.length - 2).join(".")), a
  1122. },
  1123. getUrlParam: function(a, b) {
  1124. b = b || document.location.toString();
  1125. var c = new RegExp("(^|&|\\\\?)" + a + "=([^&]*)(&|$|#)"),
  1126. d = null;
  1127. return (d = b.match(c)) ? d[2] : ""
  1128. },
  1129. setUrlParam: function(a, b, c) {
  1130. c = c || location.href;
  1131. var d, e, f = new RegExp("[?&#]" + a + "=([^&#]+)", "gi"),
  1132. g = c.match(f),
  1133. h = "{key" + (new Date).getTime() + "}";
  1134. if (d = g && g.length > 0 ? g[g.length - 1] : "", e = a + "=" + b, d) {
  1135. var i = d.charAt(0);
  1136. c = c.replace(d, h), c = c.replace(h, b ? i + e : "")
  1137. } else b && (c += c.indexOf("?") > -1 ? "&" + e : "?" + e);
  1138. return c
  1139. },
  1140. filterXSS: function(a) {
  1141. return $.isString(a) ? a.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;").replace(/\'/g, "&apos;") : a
  1142. },
  1143. createGUID: function(a) {
  1144. a = a || 32;
  1145. for (var b = "", c = 1; a >= c; c++) {
  1146. var d = Math.floor(16 * Math.random()).toString(16);
  1147. b += d
  1148. }
  1149. return b
  1150. },
  1151. formatSize: function(a) {
  1152. var b = "" + a;
  1153. return b.indexOf("%") > 0 ? b : b.indexOf("px") > 0 ? b : /^\d+$/.test(b) ? b + "px" : b
  1154. },
  1155. compareVersion: function(a, b) {
  1156. a = String(a).split("."), b = String(b).split(".");
  1157. try {
  1158. for (var c = 0, d = Math.max(a.length, b.length); d > c; c++) {
  1159. var e = isFinite(a[c]) && Number(a[c]) || 0,
  1160. f = isFinite(b[c]) && Number(b[c]) || 0;
  1161. if (f > e) return -1;
  1162. if (e > f) return 1
  1163. }
  1164. } catch (g) {
  1165. return -1
  1166. }
  1167. return 0
  1168. },
  1169. isTrue: function(v) {
  1170. return eval(tvp.$.filterXSS(v))
  1171. },
  1172. loadPluginCss: function(a) {
  1173. var b = "",
  1174. c = tvp.defaultConfig.pluginCssUrl;
  1175. return a in c && (b = tvp.defaultConfig.cssPath + c[a]), $.loadCss(b)
  1176. },
  1177. getData: function(a) {
  1178. return window.localStorage ? window.localStorage[a] : void 0
  1179. },
  1180. setData: function(a, b) {
  1181. return window.localStorage ? (window.localStorage[a] = b, !0) : void 0
  1182. },
  1183. delData: function(a) {
  1184. return window.localStorage ? (window.localStorage.removeItem(a), !0) : void 0
  1185. },
  1186. formatTpl: function(a, b) {
  1187. if (a && "object" === $.type(b)) {
  1188. for (var c in b)
  1189. for (var d = "${" + c + "}"; a.indexOf(d) > -1;) a = a.replace(d, b[c]);
  1190. return a
  1191. }
  1192. },
  1193. loadCss: function(a) {
  1194. var b = $.Deferred(),
  1195. c = !1;
  1196. if (a) {
  1197. for (; a.indexOf("../") >= 0;) a = a.replace("../", "");
  1198. a = $.filterXSS(a);
  1199. var d = document,
  1200. e = d.getElementsByTagName("head")[0] || d.documentElement,
  1201. f = e.getElementsByTagName("base")[0],
  1202. g = d.createElement("link");
  1203. g.rel = "stylesheet", g.href = a, g.onload = g.onerror = function() {
  1204. g.onload = g.onerror = null, c = !0, b.resolve()
  1205. }, setTimeout(function() {
  1206. c || b.resolve()
  1207. }, 2500), f ? e.insertBefore(g, f) : e.appendChild(g)
  1208. } else b.reject();
  1209. return b
  1210. }
  1211. };
  1212. $.extend($, extFun)
  1213. }(tvp.$),
  1214. function(a) {
  1215. a.cookie = {
  1216. set: function(a, b, c, d, e) {
  1217. if (e) {
  1218. var f = new Date,
  1219. g = new Date;
  1220. g.setTime(f.getTime() + 36e5 * e)
  1221. }
  1222. return document.cookie = a + "=" + b + "; " + (e ? "expires=" + g.toGMTString() + "; " : "") + (d ? "path=" + d + "; " : "path=/; ") + (c ? "domain=" + c + ";" : "domain=" + window.location.host + ";"), !0
  1223. },
  1224. get: function(a) {
  1225. var b = new RegExp("(?:^|;+|\\s+)" + a + "=([^;]*)"),
  1226. c = document.cookie.match(b);
  1227. return c ? c[1] : ""
  1228. },
  1229. del: function(a, b, c) {
  1230. var d = new Date;
  1231. d.setTime(d.getTime() - 1), document.cookie = a + "=; expires=" + d.toGMTString() + ";" + (c ? "path=" + c + "; " : "path=/; ") + (b ? "domain=" + b + ";" : "domain=" + window.location.host + ";")
  1232. }
  1233. }
  1234. }(tvp.$), tvp = tvp || {}, tvp.common = {
  1235. isUseHtml5: function() {
  1236. var a = navigator.userAgent,
  1237. b = (tvp.version.getFlashMain(), null);
  1238. if (/ipad|ipod|iphone|lepad_hls|IEMobile|WPDesktop/gi.test(a)) return !0;
  1239. if (tvp.$.os.android) {
  1240. if (tvp.common.isSupportMP4()) return !0;
  1241. if (tvp.$.browser.MQQ && tvp.$.browser.getNumVersion() >= 4.2) return !0;
  1242. if (-1 != a.indexOf("MI2")) return !0;
  1243. if (tvp.$.os.version >= "4" && (b = a.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/)) && b[1] >= 4.2) return !0;
  1244. if (tvp.$.os.version >= "4.1") return !0
  1245. }
  1246. return !1
  1247. },
  1248. isInUseH5: function() {
  1249. var a = navigator.userAgent,
  1250. b = null;
  1251. if (tvp.$.os.android) {
  1252. if (tvp.$.browser.MQQ && tvp.$.browser.getNumVersion() >= 4.2) return !0;
  1253. if (-1 != a.indexOf("MI2")) return !0;
  1254. if (tvp.$.os.version >= "4" && (b = a.match(/MicroMessenger\/((\d+)\.(\d+))\.(\d+)/)) && b[1] >= 4.2) return !0;
  1255. if (tvp.$.os.version >= "4.1") return !0
  1256. }
  1257. },
  1258. isUseHLS: function() {
  1259. return tvp.$.os.ios ? !0 : void 0
  1260. },
  1261. isLiveUseHTML5: function() {
  1262. return tvp.$.os.ios ? !0 : tvp.$.os.ipad ? !0 : tvp.$.os.android && tvp.common.isSupportM3u8() ? !0 : !1
  1263. },
  1264. isSupportM3u8: function() {
  1265. var a = document.createElement("video"),
  1266. b = ["application/x-mpegURL", "audio/mpegurl", "vnd.apple.mpegURL", "application/vnd.apple.mpegURL"],
  1267. c = !1;
  1268. return "function" == typeof a.canPlayType && tvp.$.each(b, function(b, d) {
  1269. return a.canPlayType(d) ? void(c = !0) : void 0
  1270. }), a = null, tvp.$.os.android && (tvp.$.os.version >= "4" && tvp.$.browser.Chrome && (c = !0), tvp.$.browser.M1 && (c = !1), /V8 Build/.test(navigator.userAgent) && (c = !1), tvp.$.browser.MQQ && tvp.$.browser.getNumVersion() >= 4.2 && (c = !0)), c
  1271. },
  1272. isSupportMP4: function() {
  1273. var a = document.createElement("video");
  1274. if ("function" == typeof a.canPlayType) {
  1275. if ("probably" == a.canPlayType('video/mp4; codecs="mp4v.20.8"')) return !0;
  1276. if ("probably" == a.canPlayType('video/mp4; codecs="avc1.42E01E"') || "probably" == a.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"')) return !0
  1277. }
  1278. return !1
  1279. },
  1280. isSupportSVG: function() {
  1281. return document.implementation && tvp.$.isFunction(document.implementation.hasFeature) ? document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") : !1
  1282. },
  1283. isEnforceMP4: function() {
  1284. navigator.userAgent;
  1285. if (tvp.$.os.android) {
  1286. if (tvp.$.browser.firefox) return !0;
  1287. if (tvp.$.os.version >= "4.0" && tvp.$.browser.MQQ && tvp.$.browser.version < "4.0") return !0
  1288. }
  1289. return !1
  1290. },
  1291. getUin: function() {
  1292. var a = tvp.$.cookie.get("skey"),
  1293. b = tvp.$.cookie.get("lskey"),
  1294. c = "",
  1295. d = 0,
  1296. e = !1;
  1297. return isLeak = "undefined" == typeof isLeak ? !1 : !0, e = !!isLeak && "" != b, e || "" != a ? (c = tvp.$.cookie.get("uin"), "" == c && e && (c = tvp.$.cookie.get("luin")), d = parseInt(c.replace(/^o0*/g, ""), 10), isNaN(d) || 1e4 >= d ? 0 : d) : 0
  1298. },
  1299. getSKey: function() {
  1300. var a = tvp.$.cookie.get("skey"),
  1301. b = tvp.$.cookie.get("lskey"),
  1302. c = "";
  1303. return c = isLeak ? "" != a && "" != b ? [a, b].join(";") : a || b : a
  1304. },
  1305. openLogin: function() {},
  1306. getVideoSnap: function(a, b) {
  1307. var c, d, e = 1e8;
  1308. if (a.indexOf("_") > 0) {
  1309. var f = a.split("_");
  1310. a = f[0], b = parseInt(f[1])
  1311. }
  1312. for (var g = 4294967296, e = 1e8, h = 0, i = 0; i < a.length; i++) {
  1313. var j = a.charCodeAt(i);
  1314. h = 32 * h + h + j, h >= g && (h %= g)
  1315. }
  1316. return d = h % e, void 0 == b && (b = 0), c = 0 == b ? ["http://vpic.video.qq.com/", d, "/", a, "_160_90_3.jpg"].join("") : ["http://vpic.video.qq.com/", d, "/", a, "_", "160_90_", b, "_1.jpg"].join("")
  1317. },
  1318. getVideoSnapMobile: function(a, b) {
  1319. b = b || 0;
  1320. var c = ["496_280"],
  1321. d = "http://shp.qpic.cn/qqvideo_ori/0/{vid}_{index}/0";
  1322. return d.replace("{vid}", a).replace("{index}", c[b])
  1323. },
  1324. picerr: function() {},
  1325. getDeviceId: function() {
  1326. var a = tvp.DEVICE.other;
  1327. return tvp.$.os.iphone ? a = tvp.DEVICE.iphone : tvp.$.os.ipad ? a = tvp.DEVICE.ipad : tvp.$.os.android && tvp.$.os.phone && (a = tvp.DEVICE.aphone), a
  1328. },
  1329. getPlatformId: function() {
  1330. var a = tvp.PLATFORM.other;
  1331. return tvp.$.browser.WeChat ? a = tvp.PLATFORM.wechat : tvp.$.browser.MQQClient ? a = tvp.PLATFORM.mqq : tvp.$.browser.MQQ && (a = tvp.PLATFORM.qqbrowser), a
  1332. },
  1333. getParams: function(a) {
  1334. for (var b, c, d = a.indexOf("?"), e = a.substring(d + 1), f = /\w+=[^&]+/g, g = {}; null !== (b = f.exec(e));) c = b[0].split("="), c.length >= 2 && (g[c.shift()] = c.join("="));
  1335. return g
  1336. },
  1337. recomdTextById: function(a) {
  1338. if (a) {
  1339. if (this.recomdText || (this.recomdText = {}), this.recomdText[a] && "string" == typeof this.recomdText[a]) return this.recomdText[a];
  1340. var b = tvp.$.Deferred(),
  1341. c = this,
  1342. d = 50;
  1343. return d && 100 * Math.random() > d ? (b.resolve(), b) : (tvp.$.ajax({
  1344. url: "http://like.video.qq.com/fcgi-bin/like?callback=?",
  1345. data: {
  1346. id: a,
  1347. uin: 0,
  1348. playright: 7,
  1349. msgtype: 103,
  1350. otype: "json",
  1351. tablist: 9
  1352. }
  1353. }).done(function(d) {
  1354. d && d.rmdword ? (c.recomdText[a] = d.rmdword, b.resolve()) : b.resolve()
  1355. }).fail(function() {
  1356. b.resolve()
  1357. }), setTimeout(function() {
  1358. b.resolve()
  1359. }, 5e3), b)
  1360. }
  1361. }
  1362. }, tvp.version = function() {
  1363. function a(a) {
  1364. if (b(a)) return a;
  1365. if (/\d+/i.test(a)) {
  1366. var c = parseInt(a / 1e4 / 100, 10),
  1367. d = parseInt(a / 1e4, 10) - 100 * c,
  1368. e = parseInt(a, 10) - (100 * c * 1e4 + 1e4 * d);
  1369. return strVer = c + "." + d + "." + e
  1370. }
  1371. return a
  1372. }
  1373. function b(a) {
  1374. return /^(\d+\.){2}\d+(\.\d+)?$/.test(a)
  1375. }
  1376. var c, d = "0.0.0.0",
  1377. e = "0.0.0",
  1378. f = new Image,
  1379. g = !1,
  1380. h = !1;
  1381. return "film.qq.com" == document.location.host && (h = !0), {
  1382. getOcx: function(b) {
  1383. if (tvp.$.isUndefined(b) && (b = !0), b && "0.0.0.0" != d) return d;
  1384. var e;
  1385. if (tvp.$.browser.ie) try {
  1386. e = "IE begin", c = new ActiveXObject(QQLive.config.PROGID_QQLIVE_INSTALLER), "undefined" != typeof c.getVersion ? (d = c.GetVersionByClsid(QQLive.config.OCX_CLSID), e = "get actObj.GetVersionByClsid:" + d) : e = "no function:actObj.GetVersionByClsid"
  1387. } catch (i) {
  1388. h && !g && (g = !0) && (f.src = "http://btrace.qq.com/collect?sIp=&iQQ=" + tvp.common.getUin() + "&sBiz=IE&sOp=" + encodeURIComponent(navigator.userAgent) + "&iSta=0&iTy=2432&iFlow=&sUrl=" + encodeURIComponent(location.toString()) + "&sRef=" + encodeURIComponent(document.referrer) + "&sMsg=" + encodeURIComponent(i.message) + "&sStep=" + encodeURIComponent(e) + "&_=" + Math.random())
  1389. } else if (tvp.$.browser.isNotIESupport()) {
  1390. e = "no IE begin";
  1391. var j, k = navigator.plugins;
  1392. if (tvp.$.isUndefined(k.namedItem) || (e = "plugs.namedItem", j = k.namedItem("\u817e\u8baf\u89c6\u9891")), !j) {
  1393. e = "no plugs.namedItem:tencentvideo";
  1394. for (var l = 0, m = k.length; m > l; l++)
  1395. if (k[l] && "\u817e\u8baf\u89c6\u9891" == k[l].name || "npQQLive.dll" == k[l].filename) {
  1396. j = k[l];
  1397. break
  1398. }
  1399. }
  1400. if (j)
  1401. if (tvp.$.isUndefined(j.version)) {
  1402. e = "plug.description:" + j.description;
  1403. var n, o = j.description;
  1404. (n = o.match(/version:((\d+\.){3}(\d+)?)/)) && (d = n[1])
  1405. } else e = "plug.version:" + j.version, d = j.version;
  1406. else e = "no plugs[i].filename:npQQLive.dll"
  1407. }
  1408. return parseInt(d, 10) || h && !g && (g = !0) && (f.src = "http://btrace.qq.com/collect?sIp=&iQQ=" + tvp.common.getUin() + "&sBiz=" + (tvp.$.browser.ie ? "IE" : "NOIE") + "&sOp=" + encodeURIComponent(navigator.userAgent) + "&iSta=0&iTy=2432&iFlow=&sUrl=" + encodeURIComponent(location.toString()) + "&sRef=" + encodeURIComponent(document.referrer) + "&sMsg=" + d + "&sStep=" + encodeURIComponent(e) + "&_=" + Math.random()), d = a(d)
  1409. },
  1410. getFlash: function() {
  1411. if ("0.0.0" != e) return e;
  1412. var a = null,
  1413. b = null,
  1414. c = [],
  1415. d = "Shockwave Flash",
  1416. i = navigator,
  1417. j = "application/x-shockwave-flash";
  1418. if (tvp.$.browser.ie) try {
  1419. var k = "IE begin";
  1420. a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), k = "new ActiveXObject", a && (b = a.GetVariable("$version"), k = "swf.GetVariable", b && (b = b.split(" ")[1].split(","), c = [parseInt(b[0], 10), parseInt(b[1], 10), parseInt(b[2], 10)]))
  1421. } catch (l) {
  1422. h && !g && (g = !0) && (f.src = "http://btrace.qq.com/collect?sIp=&iQQ=" + tvp.common.getUin() + "&sBiz=IE&sOp=" + encodeURIComponent(navigator.userAgent) + "&iSta=1&iTy=2432&iFlow=&sUrl=" + encodeURIComponent(location.toString()) + "&sRef=" + encodeURIComponent(document.referrer) + "&sMsg=" + encodeURIComponent(l.message) + "&sStep=" + encodeURIComponent(k) + "&_=" + Math.random())
  1423. } else if (!tvp.$.isUndefined(i.plugins) && "object" == typeof i.plugins[d]) {
  1424. var k = "no IE begin";
  1425. b = i.plugins[d].description, k = "plugins[S].description", b && (tvp.$.isUndefined(i.mimeTypes) || !i.mimeTypes[j] || i.mimeTypes[j].enabledPlugin) ? (k = "parse description", b = b.replace(/^.*\s+(\S+\s+\S+$)/, "$1"), c[0] = parseInt(b.replace(/^(.*)\..*$/, "$1"), 10), c[1] = parseInt(b.replace(/^.*\.(.*)\s.*$/, "$1"), 10), c[2] = /[a-zA-Z]/.test(b) ? parseInt(b.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0) : k = "no mimeTypes or disable"
  1426. }
  1427. return e = c.join("."), parseInt(e, 10) || h && !g && (g = !0) && (f.src = "http://btrace.qq.com/collect?sIp=&iQQ=" + tvp.common.getUin() + "&sBiz=" + (tvp.$.browser.ie ? "IE" : "NOIE") + "&sOp=" + encodeURIComponent(navigator.userAgent) + "&iSta=1&iTy=2432&iFlow=&sUrl=" + encodeURIComponent(location.toString()) + "&sRef=" + encodeURIComponent(document.referrer) + "&sMsg=" + e + "&sStep=" + encodeURIComponent(k) + "&_=" + Math.random()), e
  1428. },
  1429. getFlashMain: function() {
  1430. return parseInt(tvp.version.getFlash().split(".")[0], 10)
  1431. }
  1432. }
  1433. }(),
  1434. function(a, b) {
  1435. var c = {
  1436. qqlive: {
  1437. text1: "\u817e\u8baf\u89c6\u9891\u5ba2\u6237\u7aef",
  1438. text2: "\u53ef\u89c2\u770b\u66f4\u591a\u89c6\u9891",
  1439. md5Cgi: "http://mcgi.v.qq.com/commdatav2?cmd=39&otype=json&confid=${id}",
  1440. payUrl: "http://film.qq.com/weixin/detail/${index}/${cid}.html",
  1441. scheme: "tenvideo2://",
  1442. logoClass: "",
  1443. openUrl: "tenvideo2://?action=5&video_id=${vid}",
  1444. liveOpenUrl: "tenvideo2://?action=8&channel_id=${lid}",
  1445. ipadDownloadUrl: "https://itunes.apple.com/cn/app/teng-xun-shi-pinhd/id407925512?mt=8",
  1446. iphoneDownloadUrl: "http://itunes.apple.com/cn/app/id458318329?mt=8",
  1447. aphoneDownloadUrl: "http://mcgi.v.qq.com/commdatav2?cmd=4&confid=140&platform=aphone",
  1448. VIA: "ANDROIDQQ.QQLIVE",
  1449. appId: "100730521",
  1450. downloadId: "TencentVideo",
  1451. taskName: "TencentVideo",
  1452. packageName: b.os.iphone ? "com.tencent.live4iphone" : "com.tencent.qqlive",
  1453. packageUrl: "tenvideo2://can_open_me_if_install_and_regeister_this_scheme"
  1454. },
  1455. weishi: {
  1456. text1: "\u5fae\u89c6\u5ba2\u6237\u7aef",
  1457. text2: "\u53d1\u73b0\u66f4\u591a\u7cbe\u5f69",
  1458. logoClass: "tvp_download_app_solo_weishi",
  1459. md5Cgi: "http://www.weishi.com/api/packdata.php?confid=${id}",
  1460. scheme: b.os.iphone ? " weishiiosscheme://" : "weishiandroidscheme://",
  1461. openUrl: b.os.iphone ? " weishiiosscheme://detail?tweetid=${id}" : "weishiandroidscheme://detail?tweetid=${id}",
  1462. iphoneDownloadUrl: "http://www.weishi.com/download/index.php?pgv_ref=weishi.shipin.xinwenfenxiang",
  1463. aphoneDownloadUrl: "http://www.weishi.com/download/index.php?pgv_ref=weishi.shipin.xinwenfenxiang",
  1464. ipadDownloadUrl: "",
  1465. VIA: "ANDROIDQQ.WEISHI",
  1466. appId: "1101083114",
  1467. downloadId: "TencentWeishi",
  1468. taskName: "TencentWeishi",
  1469. packageName: b.os.iphone ? "com.tencent.microvision" : "com.tencent.weishi",
  1470. packageUrl: b.os.iphone ? "weishiiosscheme://can_open_me_if_install_and_regeister_this_scheme" : "weishiandroidscheme://can_open_me_if_install_and_regeister_this_scheme"
  1471. },
  1472. yyb: {
  1473. packageName: "com.tencent.android.qqdownloader"
  1474. }
  1475. };
  1476. a.app = {
  1477. config: {
  1478. defaultName: "qqlive",
  1479. QQApiUrl: "http://pub.idqqimg.com/qqmobile/qqapi.js",
  1480. mqqApiUrl: "http://res.imtt.qq.com/browser_lightapp/QQBrowserApi/getCryptext/browser_interface_getCryptext.js"
  1481. },
  1482. loadQQClientDefer: !1,
  1483. loadDownloaderDefer: !1,
  1484. loadMqqDefer: !1,
  1485. getDownloadUrl: function(d, e) {
  1486. return e = e || a.app.config.defaultName, d = b.os.iphone ? c[e].iphoneDownloadUrl : d || c[e].aphoneDownloadUrl, d = b.os.ipad ? c[e].ipadDownloadUrl : d
  1487. },
  1488. getPayUrl: function(a) {
  1489. var d = b.formatTpl(c.qqlive.payUrl, {
  1490. index: a.slice(0, 1),
  1491. cid: a
  1492. });
  1493. return d
  1494. },
  1495. getOpenUrl: function(d) {
  1496. var e = {},
  1497. f = !1;
  1498. if (!d) return f;
  1499. if (d.appName && d.appName !== a.app.config.defaultName) return f = d.openId ? c[d.appName].openUrl.replace("${id}", d.openId) : c[d.appName].scheme;
  1500. switch (d.lid ? e.channel_id = d.lid : d.cid ? e.cover_id = d.cid : d.tid ? e.topic_id = d.tid : d.vidArray || !d.vid ? e.video_id = "${vid}" : d.vid && (e.video_id = d.vid), d.vid2 && (e.video_id = d.vid2), d.openType) {
  1501. case 6:
  1502. d.cid && (e.action = 1);
  1503. break;
  1504. case 2:
  1505. e.action = d.lid ? 8 : 7;
  1506. break;
  1507. case 3:
  1508. e.action = d.lid ? 8 : d.tid ? 6 : 5;
  1509. break;
  1510. case 4:
  1511. d.cid && (e.action = 1);
  1512. break;
  1513. default:
  1514. e.action = d.lid ? 8 : d.cid ? 1 : 5
  1515. }
  1516. if (d.promotionId && (e.from = d.promotionId + "_" + (d.contentId ? d.contentId : "")), e.action = e.action || 5, f = c.qqlive.scheme + "?" + decodeURIComponent(b.param(e)), (d.cid || d.h5Url) && parseInt(d.pay)) {
  1517. var g = d.cid ? a.app.getPayUrl(d.cid) : d.h5Url;
  1518. b.os.iphone ? (f = g, d.openUrl = f) : d.version && parseInt(d.version) < 5852 && (f = g)
  1519. }
  1520. return f !== g && d.openUrl && (f = b.filterXSS(d.openUrl), f.indexOf("from") < 0 && f.indexOf("?") > -1 && d.promotionId && (f += "&from=" + d.promotionId + "_" + (d.contentId ? d.contentId : ""))), f
  1521. },
  1522. getPackageInfo: function() {
  1523. return c
  1524. },
  1525. pageType: function() {
  1526. return b.browser.WeChat ? 1 : b.browser.MQQClient ? 2 : b.browser.MQQ ? 3 : 0
  1527. }(),
  1528. isSupportApp: function() {
  1529. return b.os.iphone || b.os.ipod || b.os.ipad ? !0 : b.os.android ? !0 : !1
  1530. }(),
  1531. unbindTryOpenAppBanner: function(a) {
  1532. a ? a.noTryOpen = !0 : ""
  1533. },
  1534. bindTryOpenAppBanner: function(c) {
  1535. if (c && c.rewriteText && !a.app.pageType) {
  1536. var d = a.$.os.hasTouch ? "touchend" : "click",
  1537. e = c.$btn,
  1538. f = e.attr("data-url"),
  1539. g = !1,
  1540. h = function() {
  1541. var b = navigator.userAgent;
  1542. return a.$.os.android || a.$.os.ios ? -1 != b.indexOf("qqnews/") ? !1 : a.$.os.android && g ? !1 : /^http|https/g.test(f) ? !1 : !0 : !1
  1543. };
  1544. if (!h()) return !1;
  1545. e.bind("touchend click", function(a) {
  1546. c.noTryOpen || a.preventDefault()
  1547. }), d = b.os.ios ? "click" : d, e.bind(d, function() {
  1548. c.noTryOpen || a.app.tryOpenAppBanner(e)
  1549. })
  1550. }
  1551. },
  1552. tryOpenAppBanner: function(b) {
  1553. if (b.length) {
  1554. var c = b.attr("href"),
  1555. d = b.attr("data-url"),
  1556. e = function() {
  1557. location.href = c
  1558. },
  1559. f = function() {
  1560. if (a.$.os.android) {
  1561. var b = document.createElement("iframe");
  1562. b.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;", b.src = d, document.body.appendChild(b)
  1563. } else a.$.os.ios && (location.href = d)
  1564. };
  1565. setTimeout(function() {
  1566. var a = (new Date).valueOf();
  1567. f(), a = (new Date).valueOf(), setTimeout(function() {
  1568. var b = (new Date).valueOf();
  1569. 1550 > b - a && e()
  1570. }, 1500)
  1571. }, 100)
  1572. }
  1573. },
  1574. loadMqqAPI: function() {
  1575. if (a.app.loadMqqDefer) return a.app.loadMqqDefer;
  1576. var c = b.Deferred();
  1577. if (a.app.loadMqqDefer = c, window.x5) c.resolve();
  1578. else {
  1579. var d = this.config.mqqApiUrl;
  1580. b.getScript(d, function() {
  1581. window.x5 ? c.resolve() : c.reject()
  1582. })
  1583. }
  1584. return setTimeout(function() {
  1585. c.reject()
  1586. }, 3e3), c
  1587. },
  1588. invokeQQBrowserAPI: function(c) {
  1589. function d() {
  1590. if (window.x5 && x5.ios && x5.ios.getMobileAppSupport) {
  1591. var a = {
  1592. scheme: c.packageInfo.packageUrl
  1593. };
  1594. x5.ios.getMobileAppSupport(a, function(a) {
  1595. e.resolve(a && 1 == a.isSupportApp ? 1 : 0)
  1596. }, function() {
  1597. e.resolve(0)
  1598. })
  1599. } else e.resolve(0);
  1600. setTimeout(function() {
  1601. e.resolve(0)
  1602. }, 300)
  1603. }
  1604. if (!b.os.iphone && window.QQApi && QQApi.checkAppInstalled) return this.invokeQQClientAPI(c);
  1605. var e = b.Deferred();
  1606. if (!b.os.iphone && window.x5mtt && window.x5mtt.isApkInstalled) {
  1607. var f = window.x5mtt.isApkInstalled('{"packagename": ' + c.packageInfo.packageName + "}");
  1608. e.resolve(-1 != f ? 1 : 0)
  1609. } else b.os.iphone && parseInt(b.os.version) > 5 ? a.app.loadMqqAPI().done(function() {
  1610. d()
  1611. }).fail(function() {
  1612. e.resolve(0)
  1613. }) : e.resolve(0);
  1614. return setTimeout(function() {
  1615. e.resolve(0)
  1616. }, 3e3), e
  1617. },
  1618. getQQBrowserSignKey: function(c, d) {
  1619. var e = a.app,
  1620. f = e.pageType,
  1621. g = new b.Deferred,
  1622. h = this.loadMqqAPI();
  1623. return 3 != f ? void g.resolve(0) : (h.done(function() {
  1624. if (!window.x5 || !a.$.os.ios) return void g.resolve(0);
  1625. if (!x5.ios || !x5.ios.getBrowserSignature) return void g.resolve(0);
  1626. var b = {
  1627. vid: c
  1628. };
  1629. d && (b.timestamp = parseInt((new Date).valueOf() / 1e3)), x5.ios.getBrowserSignature(b, function(a) {
  1630. g.resolve(a && a.key && a.ver && a.platform ? {
  1631. key: a.key,
  1632. ver: a.ver,
  1633. platform: a.platform
  1634. } : 0)
  1635. }, function() {
  1636. g.resolve(0)
  1637. })
  1638. }), h.fail(function() {
  1639. g.resolve(0)
  1640. }), g)
  1641. },
  1642. loadQQClientAPI: function() {
  1643. if (a.app.loadQQClientDefer) return a.app.loadQQClientDefer;
  1644. var c = b.Deferred();
  1645. if (a.app.loadQQClientDefer = c, window.mqq || window.QQApi) c.resolve();
  1646. else {
  1647. var d = this.config.QQApiUrl;
  1648. b.getScript(d, function() {
  1649. c.resolve()
  1650. })
  1651. }
  1652. return setTimeout(function() {
  1653. c.reject()
  1654. }, 3e3), c
  1655. },
  1656. invokeQQClientAPI: function(a) {
  1657. function c() {
  1658. !e && window.QQApi && QQApi.checkAppInstalled ? QQApi.checkAppInstalled(f, function(a) {
  1659. a && 0 != a ? (a = a.split("."), a = a[a.length - 1], d.resolve(1, a)) : d.resolve(0)
  1660. }) : window.mqq && mqq.app && mqq.app.isAppInstalled ? mqq.app.isAppInstalled(f, function(a) {
  1661. d.resolve(a ? 1 : 0)
  1662. }) : d.resolve(0)
  1663. }
  1664. var d = b.Deferred(),
  1665. e = b.os.iphone,
  1666. f = e ? a.packageInfo.packageUrl : a.packageInfo.packageName;
  1667. return this.loadQQClientAPI().done(function() {
  1668. c()
  1669. }).fail(function() {
  1670. d.resolve(0)
  1671. }), setTimeout(function() {
  1672. d.resolve(0)
  1673. }, 5e3), d
  1674. },
  1675. getAppMd5: function(d, e) {
  1676. d = d || 140, e = e || a.app.config.defaultName;
  1677. var f = b.Deferred(),
  1678. g = c[e].md5Cgi.replace("${id}", d);
  1679. return b.ajax({
  1680. url: g,
  1681. dataType: "jsonp"
  1682. }).then(function(a) {
  1683. f.resolve(a && a.data ? a.data : a)
  1684. }), f
  1685. },
  1686. report: function(c, d) {
  1687. var e = {},
  1688. d = d && d.curVideo ? d : !1;
  1689. d && (e = {
  1690. vid: d.curVideo.getVid() || d.curVideo.getChannelId(),
  1691. appId: d.config.appid || d.config.appId,
  1692. contentId: d.config.contentId
  1693. }), c && (c = b.extend(c, e), a.report(c))
  1694. },
  1695. invokeWeChatAPI: function(a) {
  1696. var c = b.Deferred(),
  1697. d = this;
  1698. return window != top && (WeixinJSBridge = top.WeixinJSBridge), WeixinJSBridge.invoke || c.resolve(0), d.getNetworkTypeInWechat().done(function(b) {
  1699. a && a.t && a.t.config && (a.t.config.nettype = b)
  1700. }), b.os.iphone ? WeixinJSBridge.invoke("getInstallState", a.packageInfo, function(a) {
  1701. var b = a.err_msg;
  1702. c.resolve(b.indexOf("get_install_state:yes") > -1 ? 1 : 0)
  1703. }) : WeixinJSBridge.invoke("getInstallState", a.packageInfo, function(a) {
  1704. var b = a.err_msg;
  1705. if (b.indexOf("get_install_state:yes") > -1) {
  1706. var d = b.split("yes_"),
  1707. e = 0;
  1708. d.length >= 2 && (e = parseInt(d[1], 10)), e = isNaN(e) ? 0 : e, c.resolve(1, e)
  1709. } else c.resolve(0)
  1710. }), setTimeout(function() {
  1711. c.resolve(0)
  1712. }, 6e3), c
  1713. },
  1714. getNetworkTypeInWechat: function() {
  1715. var a = b.Deferred();
  1716. return WeixinJSBridge.invoke("getNetworkType", {}, function(b) {
  1717. var c = -1;
  1718. b && b.err_msg && ("network_type:fail" === b.err_msg && (c = 0), "network_type:wifi" === b.err_msg && (c = 1), "network_type:edge" === b.err_msg && (c = 2), "network_type:wwan" === b.err_msg && (c = 3)), a.resolve(c)
  1719. }), a
  1720. },
  1721. check: function(d) {
  1722. var e = a.app,
  1723. f = e.pageType,
  1724. d = (b.os.iphone, d || {}),
  1725. g = b.Deferred();
  1726. if (d.appName = d.appName || a.app.config.defaultName, d.packageInfo = c[d.appName], 1 == f) {
  1727. var h = window == top ? document : top.document;
  1728. if (top.WeixinJSBridge) e.invokeWeChatAPI(d).then(function(a, b) {
  1729. g.resolve(e.buildResult(a, d, b))
  1730. });
  1731. else try {
  1732. h.addEventListener("WeixinJSBridgeReady", function() {
  1733. e.invokeWeChatAPI(d).then(function(a, b) {
  1734. g.resolve(e.buildResult(a, d, b))
  1735. })
  1736. })
  1737. } catch (i) {
  1738. g.resolve(e.buildResult(0, d))
  1739. }
  1740. } else if (3 == f) try {
  1741. e.invokeQQBrowserAPI(d).then(function(a, b) {
  1742. g.resolve(e.buildResult(a, d, b))
  1743. })
  1744. } catch (i) {
  1745. g.resolve(e.buildResult(0, d))
  1746. } else if (2 == f) try {
  1747. e.invokeQQClientAPI(d).then(function(a, b) {
  1748. g.resolve(e.buildResult(a, d, b))
  1749. })
  1750. } catch (i) {
  1751. g.resolve(e.buildResult(0, d))
  1752. } else g.resolve(e.buildResult(0, d));
  1753. return g
  1754. },
  1755. loadDownloaderAPI: function() {
  1756. if (a.app.loadDownloaderDefer) return a.app.loadDownloaderDefer;
  1757. var c = b.Deferred();
  1758. a.app.loadDownloaderDefer = c;
  1759. var d = "";
  1760. return 1 == this.pageType && (d = a.defaultConfig.libpath + a.defaultConfig.pluginUrl.AppDownloadClickWechat), 2 == this.pageType && (d = a.defaultConfig.libpath + a.defaultConfig.pluginUrl.AppDownloadClickMqq), d || c.reject(), b.downloadClick_wechat || b.downloadClick_mqq ? c.resolve() : (b.getScript(d, function() {
  1761. c.resolve()
  1762. }), setTimeout(function() {
  1763. c.reject()
  1764. }, 3e3)), c
  1765. },
  1766. checkCanDownloader: function(a, c, d) {
  1767. function e() {
  1768. b.downloadClick_wechat && d && b.downloadClick_wechat(d), b.downloadClick_mqq && d && b.downloadClick_mqq(d), f.resolve(1)
  1769. }
  1770. var f = b.Deferred();
  1771. if (b.os.iphone || b.os.ipad || !c || 1 == a) return f.resolve(0), f;
  1772. var g = !1,
  1773. h = !1,
  1774. i = /android/i.test(navigator.userAgent.toLowerCase());
  1775. return !i || 1 == a || !c.downloader || c.downloadUrl && !c.md5 || !c.downloadUrl && c.md5 ? (f.resolve(0), f) : (b.isArray(c.range) && b.each(c.range, function(a, b) {
  1776. 1 == b && (g = !0), 2 == b && (h = !0)
  1777. }), c.downloaderCallback || (g = !0, h = !0), b.browser.WeChat && g || b.browser.MQQClient && h ? this.loadDownloaderAPI().done(function() {
  1778. e()
  1779. }).fail(function() {
  1780. f.resolve(0)
  1781. }) : f.resolve(0), f)
  1782. },
  1783. buildResult: function(c, d, e) {
  1784. {
  1785. var f = "",
  1786. g = this.pageType,
  1787. h = b.os.iphone;
  1788. b.os.ipad
  1789. }
  1790. d.version = e;
  1791. var i = a.app.getOpenUrl(d),
  1792. j = this;
  1793. return h && !d.openUrl && (1 == g && (i += "&callback=weixin%3A%2F%2F&sender=%e5%be%ae%e4%bf%a1"), 2 == g && (i += "&callback=mqqapi%3A%2F%2F&sender=%E6%89%8B%E6%9C%BAQQ"), 3 == g && (i += "&callback=mqqbrowser%3A%2F%2F&sender=QQ%E6%B5%8F%E8%A7%88%E5%99%A8")), f = 1 == c ? i : b.os.iphone && d.pay && d.cid ? a.app.getPayUrl(d.cid) : j.getDownloadUrl(d.downloadUrl, d.appName), {
  1794. hasApp: c,
  1795. pageType: g,
  1796. os: h,
  1797. version: e,
  1798. openUrl: i,
  1799. liveOpenUrl: i,
  1800. url: f
  1801. }
  1802. }
  1803. }
  1804. }(tvp, tvp.$), tvp.PLAYER_DEFINE = {
  1805. LIVE: 1,
  1806. VOD: 2
  1807. }, tvp.defaultConfig = {
  1808. video: null,
  1809. width: 600,
  1810. height: 450,
  1811. autoplay: !1,
  1812. mute: !1,
  1813. volume: 50,
  1814. modId: "mod_player",
  1815. playerid: "",
  1816. coverId: "",
  1817. typeId: 0,
  1818. pic: "",
  1819. type: tvp.PLAYER_DEFINE.VOD,
  1820. playerType: "auto",
  1821. loadingswf: "",
  1822. oid: "",
  1823. share: !0,
  1824. isHtml5UseHLS: "auto",
  1825. isShowDurationLimit: !0,
  1826. isHtml5AutoBuffer: !1,
  1827. isHtml5UseAirPlay: !0,
  1828. isHtml5ControlAlwaysShow: !1,
  1829. html5Preload: "null",
  1830. html5VodUIFeature: ["controlbar", "tips", "title", "meta", "playpause", "progress", "timepanel", "fullscreen", "overlay", "bigben", "posterlayer", "shadow", "promotion", "loadingAd"],
  1831. html5LiveUIFeature: ["controlbar", "tips", "playpause", "fullscreen", "overlay", "posterlayer", "shadow"],
  1832. html5LiveFrontShow: ["liveDownloader"],
  1833. html5FeatureExtJS: {},
  1834. html5ForbiddenUIFeature: [],
  1835. isHtml5UseUI: !0,
  1836. HTML5CSSName: "",
  1837. isHtml5ShowPosterOnStart: !0,
  1838. isHtml5ShowPosterOnEnd: !1,
  1839. isHtml5ShowPosterOnChange: !0,
  1840. isiPhoneShowPosterOnPause: !0,
  1841. isiPhoneShowPlaysinline: !0,
  1842. isHtml5ShowPlayBtnOnPause: !0,
  1843. isHtml5UseFakeFullScreen: !tvp.$.os.ios,
  1844. isIOSVideoOffset: !0,
  1845. isHtml5ShowLoadingAdOnStart: !tvp.$.os.phone,
  1846. isHtml5ShowLoadingAdOnChange: !tvp.$.os.phone,
  1847. specialVideoFileDomain: "",
  1848. flashWmode: "direct",
  1849. vodFlashUrl: "",
  1850. vodFlashType: "TPout",
  1851. vodFlashExtVars: {},
  1852. vodFlashListType: 2,
  1853. vodFlashSkin: "",
  1854. isVodFlashShowCfg: !0,
  1855. isVodFlashShowEnd: !0,
  1856. isVodFlashShowSearchBar: !0,
  1857. isVodFlashShowNextBtn: !0,
  1858. liveFlashUrl: "",
  1859. liveFlashSwfType: "TencentPlayerLive",
  1860. isLiveFlashShowConfigBtn: !0,
  1861. isLiveflashShowFullBtn: !0,
  1862. isLiveFlashShowCfg: !0,
  1863. liveFlashWatermark: "",
  1864. liveFlashAppType: "",
  1865. liveFlashExtVars: {},
  1866. flashVersionTag: "20140714",
  1867. ocxControlBar: "",
  1868. ocxControlHeight: 60,
  1869. ocxSkin: "",
  1870. isOcxShowPauseBtn: !1,
  1871. isOcxHideControl: !1,
  1872. plugins: {
  1873. AppBanner: !1,
  1874. AppRecommend: !1,
  1875. AppDownloadOnPause: !1,
  1876. AppBannerOnPause: !1,
  1877. AppFollow: !1
  1878. },
  1879. pluginUrl: {
  1880. AppBanner: "js/plugins/appbanner.js?v=" + tvp.ts,
  1881. AppFollow: "js/plugins/appfollow.js?v=" + tvp.ts,
  1882. AppRecommend: "js/plugins/apprecommend.js?v=" + tvp.ts,
  1883. AppDownloadOnPause: "js/plugins/appdownloadonpause.js?v=" + tvp.ts,
  1884. AppBannerOnPause: "js/plugins/appbanneronpause.js?v=" + tvp.ts,
  1885. AppDownloadClickWechat: "js/plugins/appdownloadclickwechat.js?v=" + tvp.ts,
  1886. AppDownloadClickMqq: "js/plugins/appdownloadclickmqq.js?v=" + tvp.ts
  1887. },
  1888. cssPath: "http://imgcache.gtimg.cn/tencentvideo_v1/vstyle/mobile/v2/style/",
  1889. pluginCssUrl: {
  1890. AppRecommend: "player_plugins_apprecommend.css?v=" + tvp.ts,
  1891. AppBanner: "player_plugins_appdownloadsolo.css?v=" + tvp.ts,
  1892. AppBannerOnPause: "player_plugins_appdownloadonpause.css?v=" + tvp.ts,
  1893. AppDownloadOnPause: "player_plugins_appdownloadonpause.css?v=" + tvp.ts
  1894. },
  1895. libpath: "http://qzs.qq.com/tencentvideo_v1/tvp/"
  1896. },
  1897. function(a) {
  1898. var b = function(a, c) {
  1899. return function(d, e) {
  1900. var f = /\s/.test(d) ? function(a) {
  1901. var b, d = [c],
  1902. e = [
  1903. []
  1904. ];
  1905. for (b in a) d.push(b), e.push(a[b]);
  1906. return new Function(d, f.$).apply(a, e).join("")
  1907. } : a[d] = a[d] || b(document.getElementById(d).innerHTML);
  1908. return f.$ = f.$ || c + ".push('" + d.replace(/\\/g, "\\\\").replace(/[\r\t\n]/g, " ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split(" ").join("');").split("%>").join(c + ".push('").split("\r").join("\\'") + "');return " + c, e ? f(e) : f
  1909. }
  1910. }({}, "$" + +new Date);
  1911. a.tmpl = b
  1912. }(tvp.$),
  1913. function(a) {
  1914. "undefined" == typeof a.getScript && (a.getScript = function(a, b) {
  1915. var c = document.createElement("script"),
  1916. d = document.getElementsByTagName("head")[0],
  1917. e = /^(?:loaded|complete|undefined)$/;
  1918. c.async = "async", c.src = a, c.charset = "utf-8", b && (c.onload = c.onerror = c.onreadystatechange = function() {
  1919. e.test(c.readyState) && (c.onload = c.onerror = c.onreadystatechange = null, window.DEBUG || d.removeChild(c), c = null, b())
  1920. }), d.appendChild(c)
  1921. })
  1922. }(tvp.$), tvp.report = function() {
  1923. function a() {
  1924. return 0 == g.length ? (e = !0, void(f = null)) : (clearTimeout(d), b(g.splice(0, 1)), void(e = !1))
  1925. }
  1926. function b(b) {
  1927. clearTimeout(d), f = document.createElement("img"), f.onerror = a, f.src = b, setTimeout(a, 1e3)
  1928. }
  1929. function c(a) {
  1930. return a && /^(?:ht|f)tp(?:s)?\:\/\/(?:[\w\-\.]+)\.\w+/i.test(a) ? null == f ? (b(a), void(e = !1)) : e ? (b(a), void(e = !1)) : void g.push(a) : void 0
  1931. }
  1932. var d, e = !0,
  1933. f = null,
  1934. g = [];
  1935. return function(a) {
  1936. if (tvp.$.isString(a)) return void c(a);
  1937. if ("object" == tvp.$.type(a)) {
  1938. var b, d = {
  1939. deviceId: "int1",
  1940. platformId: "int2",
  1941. appId: "int3",
  1942. speed: "int4",
  1943. contentId: "str1",
  1944. fileName: "str2"
  1945. },
  1946. e = {
  1947. cmd: -1,
  1948. url: window != top ? document.referrer : document.location.href,
  1949. ver: tvp.ver.replace(/\$/g, ""),
  1950. ua: navigator.userAgent,
  1951. int1: tvp.common.getDeviceId(),
  1952. int2: tvp.common.getPlatformId(),
  1953. int3: 0,
  1954. int4: 0,
  1955. str1: "",
  1956. str2: tvp.filename
  1957. },
  1958. f = "http://rcgi.video.qq.com/web_report?";
  1959. for (b in d) b in a && (a[d[b]] = a[b], delete a[b]);
  1960. a = tvp.$.extend(e, a), f += tvp.$.param(a), c(f)
  1961. }
  1962. }
  1963. }(), tvp.ajax = function(a) {
  1964. function b(a, b) {
  1965. a = a || {}, b = String(b);
  1966. var c, d = /([\d\w_]+)/g;
  1967. for (d.lastIndex = 0; null !== (c = d.exec(b)) && (a = a[c[0]], void 0 !== a && null !== a););
  1968. return a
  1969. }
  1970. function c(a) {
  1971. return a = a.slice(0, a.indexOf("?")), a = a.split("/"), {
  1972. host: a[2],
  1973. path: "/" + a.slice(3).join("/")
  1974. }
  1975. }
  1976. function d(a, b, d, e) {
  1977. var f = "http://c.isdspeed.qq.com/code.cgi",
  1978. g = c(a);
  1979. tvp.report(f, {
  1980. domain: g.host,
  1981. cgi: g.path,
  1982. type: b,
  1983. code: d,
  1984. time: e
  1985. })
  1986. }
  1987. function e(c, e) {
  1988. if ("object" == a.type(c) && c.url && "string" == typeof c.url) {
  1989. "object" == typeof e && (e = a.extend({
  1990. key: "suc",
  1991. value: 0
  1992. }, e));
  1993. var f = a.Deferred(),
  1994. g = a.now(),
  1995. h = 0,
  1996. i = a.extend({
  1997. dataType: "jsonp"
  1998. }, c);
  1999. return a.ajax(i).done(function(i) {
  2000. var j = i && "object" == typeof e ? b(i, e.key) : 0;
  2001. h = a.now() - g, i && "undefined" != typeof j && j == e.value ? (d(c.url, 1, j, h), f.resolve(i, h)) : (d(c.url, 3, j, h), f.resolve(i, h))
  2002. }).fail(function(b) {
  2003. h = a.now() - g, d(c.url, 2, 900, h), f.reject(b, h)
  2004. }), f
  2005. }
  2006. }
  2007. return e
  2008. }(tvp.$), tvp.reportErr = function(a, b) {
  2009. b = b || "tvperror";
  2010. var c = "http://rcgi.video.qq.com/report/jsbossrep?block=" + b + "&ret=-1&level=4&msg=";
  2011. a = [location.href, navigator.userAgent, tvp.filename, tvp.ver, a].join("|"), a = encodeURIComponent(a), c += a, tvp.report(c)
  2012. }, tvp.retCode = {
  2013. snid: 0,
  2014. TYPE: {
  2015. SUC: 1,
  2016. ERR: 2
  2017. },
  2018. config: {
  2019. cgi: "http://isdspeed.qq.com/cgi-bin/v.cgi",
  2020. sampling: 1
  2021. },
  2022. commCode: {
  2023. error: 11,
  2024. MQzone_Err: 12
  2025. },
  2026. report: function(a, b, c, d) {
  2027. if (a && !(isNaN(b) || 1 > b) && "undefined" != typeof c) {
  2028. var e = this.config.cgi;
  2029. e += "?flag1=" + a.toString() + "&flag2=" + b.toString() + "&1=" + tvp.retCode.config.sampling + "&2=" + c, d && (e += "&flag3=" + d.toString()), tvp.report(e)
  2030. }
  2031. }
  2032. }, tvp.RetCode = function(a) {
  2033. this.appid = a, this.timer = {
  2034. begin: 0,
  2035. end: 0
  2036. }, this.SNID = tvp.retCode.snid, this.isReported = !1, tvp.retCode.snid++
  2037. }, tvp.RetCode.prototype = {
  2038. begin: function() {
  2039. this.timer.begin = (new Date).valueOf()
  2040. },
  2041. end: function() {
  2042. this.timer.end = this.timer.end || (new Date).valueOf()
  2043. },
  2044. report: function(a, b) {
  2045. if (!this.isReported) {
  2046. this.end();
  2047. var c = this.timer.end - this.timer.begin;
  2048. tvp.retCode.report(this.appid, a, c, b), this.isReported = !0
  2049. }
  2050. },
  2051. reportSuc: function() {
  2052. this.report(tvp.retCode.TYPE.SUC)
  2053. },
  2054. reportErr: function(a) {
  2055. a = a || tvp.retCode.commCode.error, this.report(tvp.retCode.TYPE.ERR, a)
  2056. }
  2057. },
  2058. function(a, b) {
  2059. var c = {
  2060. poster: "",
  2061. prefix: 0,
  2062. tail: 0,
  2063. tagStart: 0,
  2064. tagEnd: 0,
  2065. duration: "",
  2066. historyStart: 0,
  2067. pay: 0,
  2068. eduext: 0,
  2069. coverId: "",
  2070. title: "",
  2071. isLookBack: 0,
  2072. tstart: 0,
  2073. CDNType: 0,
  2074. vFormat: "",
  2075. LiveReTime: "",
  2076. typeId: 0,
  2077. format: b.os.ipad || b.os.MIPAD ? "mp4" : "auto",
  2078. channelExtParam: {},
  2079. pid: "",
  2080. rid: "",
  2081. bulletId: "",
  2082. bullet: !1
  2083. };
  2084. a.VideoInfo = function() {
  2085. function d(a) {
  2086. return a.indexOf("_") < 0 ? a : a.split("_")[0]
  2087. }
  2088. function e(a) {
  2089. return a.indexOf("_") < 0 ? 0 : parseInt(a.split("_")[1])
  2090. }
  2091. function f(a) {
  2092. for (var b = [], c = a.split("|"), e = 0; e < c.length; e++) b.push(d(c[e]));
  2093. return b.join("|")
  2094. }
  2095. function g() {
  2096. p && p instanceof a.Player && p.on(a.ACTION.onVodH5Init, function() {
  2097. var b;
  2098. "auto" === p.config.isHtml5UseHLS && a.common.isUseHLS() || p.config.isHtml5UseHLS || (b = n.getMP4Url(), n.callGetMp4UrlDefer.resolve(b))
  2099. })
  2100. }
  2101. var h = "",
  2102. i = "",
  2103. j = 0,
  2104. k = 0,
  2105. l = "",
  2106. m = "",
  2107. n = this,
  2108. o = {},
  2109. p = null,
  2110. q = {},
  2111. r = null;
  2112. b.extend(o, c), this.data = {}, this.url = "", this.lastQueryVid = "", this.callGetMp4UrlDefer = b.Deferred(), b.each(o, function(a) {
  2113. !new function() {
  2114. var b = a.charAt(0).toUpperCase() + a.substr(1);
  2115. n["set" + b] = function(b) {
  2116. return o[a] = b, this
  2117. }, n["get" + b] = function() {
  2118. return o[a]
  2119. }
  2120. }
  2121. }), this.setCurPlayer = function(a) {
  2122. p = a, g()
  2123. }, this.setVid = function(c) {
  2124. if (a.$.isString(c)) {
  2125. if (this.clear(), l = c, c.indexOf("|") < 0) {
  2126. var g = d(c);
  2127. h = g, k = e(c), i = g
  2128. } else {
  2129. var j = c.split("|");
  2130. h = d(j[0]), k = e(j[0]), i = f(c)
  2131. }
  2132. return h = b.filterXSS(h), i = b.filterXSS(i), this
  2133. }
  2134. }, this.getVid = function() {
  2135. return h
  2136. }, this.getVidList = function() {
  2137. return i
  2138. }, this.getVidArray = function() {
  2139. return i.split("|")
  2140. }, this.getIdx = function() {
  2141. return k
  2142. }, this.getDuration = function() {
  2143. if (!o.duration) return this.data && this.data.vl && b.isArray(this.data.vl.vi) && this.data.vl.vi.length > 0 && 0 != this.data.vl.vi[0].td ? this.data.vl.vi[0].td : 0;
  2144. for (var a = o.duration.split("|"), c = 0, d = 0, e = a.length; e > d; d++) c += parseInt(a[d]);
  2145. return c
  2146. }, this.getFileSize = function() {
  2147. return this.data && this.data.vl && this.data.vl.vi && this.data.vl.vi[0] && this.data.vl.vi[0].fs ? parseInt(this.data.vl.vi[0].fs, 10) : 0
  2148. }, this.getTimelong = function() {
  2149. return this.getDuration()
  2150. }, this.getEndOffset = function() {
  2151. return this.getDuration() - this.getTail()
  2152. }, this.setChannelId = function(b) {
  2153. return a.$.isString(b) ? (m = b, this) : void 0
  2154. }, this.getChannelId = function() {
  2155. return m
  2156. }, this.getFullVid = function() {
  2157. return 0 == this.getIdx() ? d(this.getVid()) : d(this.getVid()) + "_" + this.getIdx()
  2158. }, this.getTitle = function() {
  2159. return "" === o.title && this.data && ("mp4" == this.data.playtype && this.data.vl && b.isArray(this.data.vl.vi) && this.data.vl.vi.length > 0 ? o.title = this.data.vl.vi[0].ti || "" : "hls" == this.data.playtype && b.isArray(this.data.vi) && this.data.vi.length > 0 && (o.title = this.data.vi[0].title || "")), o.title
  2160. }, this.clear = function() {
  2161. h = "", i = "", j = 0, k = 0, m = "", r = null, q = {}, b.extend(o, c), this.data = {}, this.url = ""
  2162. }, this.clone = function(a) {
  2163. a.setVid(l), a.setChannelId(m);
  2164. for (var c in o) {
  2165. var d = c.charAt(0).toUpperCase() + c.substr(1);
  2166. a["set" + d](this["get" + d]())
  2167. }
  2168. b.extend(a.data, this.data)
  2169. }, this.getVideoSnap = function() {
  2170. var b = [];
  2171. return b[0] = a.common.getVideoSnap(h, k), b[1] = b[0].replace("_160_90_3", "_1"), b[2] = b[1].replace("_1.jpg", ".png"), b
  2172. }, this.getMP4Url = function(c) {
  2173. var d = "",
  2174. e = this.getVidArray(),
  2175. f = "";
  2176. if (b.isString(c)) {
  2177. if (d = c, b.inArray(c, e) < 0) {
  2178. var g = b.Deferred();
  2179. return g.reject(), g
  2180. }
  2181. } else isNaN(c) ? (d = this.getVid(), f = this.getFullVid()) : f = d = this.getVidArray()[c >= e.length ? 0 : c];
  2182. this.lastQueryVid = f || d, this.setRid(b.createGUID());
  2183. var h = d + "_mp4_" + this.getFormat();
  2184. if ("object" == b.type(q[h]) && b.isFunction(q[h].done) && "resolved" == q[h].state()) return q[h];
  2185. q[h] = b.Deferred();
  2186. var i = this;
  2187. return a.h5Helper.loadVideoUrlByVid({
  2188. vid: d,
  2189. isPay: this.getPay(),
  2190. eduext: o.eduext ? o.eduext : 0,
  2191. fmt: this.getFormat(),
  2192. appId: p instanceof a.Player ? p.config.appid : 0,
  2193. contentId: p instanceof a.Player ? p.config.contentId : ""
  2194. }).done(function(a, b) {
  2195. i.url = a, i.data = b, i.data.playtype = "mp4", q[h] && q[h].resolve(a)
  2196. }).fail(function(a, c) {
  2197. q[h] && q[h].reject(a, b.isUndefined(c) ? 0 : c)
  2198. }), q[h]
  2199. }, this.getHLS = function(c) {
  2200. var d = "",
  2201. e = this.getVidArray(),
  2202. f = "";
  2203. if (b.isString(c)) {
  2204. if (d = c, b.inArray(c, e) < 0) {
  2205. var g = b.Deferred();
  2206. return g.reject(), g
  2207. }
  2208. } else isNaN(c) ? (d = this.getVid(), f = this.getFullVid()) : f = d = this.getVidArray()[c >= e.length ? 0 : c];
  2209. this.lastQueryVid = f || d, this.setRid(b.createGUID());
  2210. var h = d + "_hls_" + this.getFormat();
  2211. if ("object" == b.type(q[h]) && b.isFunction(q[h].done) && "resolved" == q[h].state()) return q[h];
  2212. q[h] = b.Deferred();
  2213. var i = this;
  2214. return a.h5Helper.loadHLSUrlByVid({
  2215. vid: d,
  2216. isPay: this.getPay(),
  2217. fmt: this.getFormat(),
  2218. appId: p instanceof a.Player ? p.config.appid : 0,
  2219. contentId: p instanceof a.Player ? p.config.contentId : ""
  2220. }).done(function(a, b) {
  2221. i.url = a, i.data = b, i.data.playtype = "hls", q[h] && q[h].resolve(a)
  2222. }).fail(function(a, c) {
  2223. q[h] && q[h].reject(a, b.isUndefined(c) ? 0 : c)
  2224. }), q[h]
  2225. }, this.getPlayFormat = function() {
  2226. if (!b.isPlainObject(this.data)) return this.getFormat();
  2227. if ("object" == b.type(this.data.fl) && b.isArray(this.data.fl.fi))
  2228. for (var a = this.data.fl.fi, c = 0; c < a.length; c++)
  2229. if (1 == a[c].sl) return a[c].name;
  2230. return this.getFormat()
  2231. }, this.getSrtLangList = function() {
  2232. return "object" == b.type(this.data.sfl) && b.isArray(this.data.sfl.fi) ? (b.each(this.data.sfl.fi, function(b, c) {
  2233. c.desc = a.html5lang.getSrtName(c.id)
  2234. }), this.data.sfl.fi) : []
  2235. }, this.getSrtUrlList = function(c) {
  2236. if (b.isUndefined(c)) {
  2237. var d = this.getSrtLangList();
  2238. if (!(d.length > 0)) return b.Deferred().reject(-1);
  2239. c = d[0]
  2240. }
  2241. if ("object" != b.type(c) && !isNaN(c)) {
  2242. for (var e = 0, f = this.data.sfl.fi.length; f > e; e++)
  2243. if (this.data.sfl.fi[e].id == c) {
  2244. c = this.data.sfl.fi[e];
  2245. break
  2246. }
  2247. if ("object" != b.type(c)) return b.Deferred().reject(-2)
  2248. }
  2249. var g = this.getVid(),
  2250. h = g + "_srt_" + c.id;
  2251. if ("object" == b.type(q[h]) && b.isFunction(q[h].done) && "resolved" == q[h].state()) return q[h];
  2252. q[h] = b.Deferred();
  2253. var i = this;
  2254. return a.h5Helper.loadSRT({
  2255. vid: g,
  2256. sflid: c.id,
  2257. pid: i.getPid()
  2258. }).done(function(a) {
  2259. var d = [];
  2260. "object" == b.type(a.ul) && b.isArray(a.ul.ui) && b.each(a.ul.ui, function(a, b) {
  2261. d.push([b.url, "lang=" + c.name].join("?"))
  2262. }), q[h].resolve(d)
  2263. }).fail(function(a) {
  2264. q[h].reject(a)
  2265. }), q[h]
  2266. }, this.getFormatList = function() {
  2267. if ("object" == b.type(r) && b.isFunction(r.done)) return r;
  2268. r = b.Deferred();
  2269. var a = this,
  2270. c = ["mp4", "msd"],
  2271. d = function() {
  2272. var d = [];
  2273. return b.isPlainObject(a.data.fl) && b.isArray(a.data.fl.fi) ? (b.each(a.data.fl.fi, function(a, e) {
  2274. -1 != b.inArray(e.name, c) && d.push(e.name)
  2275. }), d) : []
  2276. };
  2277. return this.getMP4Url().done(function() {
  2278. r.resolve({
  2279. list: d()
  2280. })
  2281. }).fail(function() {
  2282. r.reject({
  2283. list: []
  2284. })
  2285. }), r
  2286. }, this.hasHardSubtitle = function() {
  2287. for (var a = video.getFormat(), b = 0, c = this.data.fl.fi.length; c > b; b++) {
  2288. var d = this.data.fl.fi[b];
  2289. if (d.name == a) return !!d.sb
  2290. }
  2291. return !1
  2292. }, this.hasSoftSubtitle = function() {
  2293. return "object" == b.type(this.data.sfl) && b.isArray(this.data.sfl.fi) && this.data.sfl.fi.length > 0
  2294. }
  2295. }, a.PLAYTYPE = {
  2296. LIVE: "1",
  2297. VOD: "2"
  2298. }
  2299. }(tvp, tvp.$),
  2300. function(a) {
  2301. tvp.speedlimit = {
  2302. buildResult: function(b) {
  2303. var c = !1,
  2304. d = !1,
  2305. e = a.Deferred();
  2306. return a.browser.MQQ && a.browser.version > 5.1 && (d = !0), d && this.mqqGetResult(b).then(function(a) {
  2307. a ? e.resolve(a) : e.resolve()
  2308. }), d && (c = !0), c || e.resolve(), setTimeout(function() {
  2309. e.resolve()
  2310. }, 3e3), e
  2311. },
  2312. mqqGetResult: function(b) {
  2313. function c() {
  2314. if (window.x5 && window.x5.getBrowserSignature) try {
  2315. var c = parseInt(tvp.$.now() / 1e3, 10);
  2316. x5.getBrowserSignature("vid:" + b + "[" + c + "]", function(b) {
  2317. b ? d.resolve({
  2318. bver: a.browser.version,
  2319. pkckey: b
  2320. }) : d.resolve()
  2321. }, function() {
  2322. d.resolve()
  2323. })
  2324. } catch (e) {
  2325. d.resolve()
  2326. } else d.resolve();
  2327. setTimeout(function() {
  2328. d.resolve()
  2329. }, 300)
  2330. }
  2331. var d = a.Deferred();
  2332. return window.x5 && window.x5.getBrowserSignature ? c() : tvp.app ? (tvp.app.loadMqqDefer || (tvp.app.loadMqqDefer = tvp.app.loadMqqAPI()), tvp.app.loadMqqDefer.done(function() {
  2333. c()
  2334. }), tvp.app.loadMqqDefer.fail(function() {
  2335. d.resolve()
  2336. })) : d.resolve(), d
  2337. }
  2338. }
  2339. }(tvp.$);
  2340. var Qvsec = {};
  2341. Qvsec.ha = function(a) {
  2342. function b(a, b) {
  2343. return ((a >> 1) + (b >> 1) << 1) + (1 & a) + (1 & b)
  2344. }
  2345. for (var c = [], d = 0; 64 > d;) c[d] = 0 | 4294967296 * Math.abs(Math.sin(++d));
  2346. var e = function(d) {
  2347. for (var e, f, g, h, i = [], j = unescape(encodeURI(d)), k = j.length, l = [e = 1732584193, f = -271733879, ~e, ~f], m = 0; k >= m;) i[m >> 2] |= (j.charCodeAt(m) || 128) << 8 * (m++ % 4);
  2348. for (i[d = (k + 8 >> 6) * a + 14] = 8 * k, m = 0; d > m; m += a) {
  2349. for (k = l, h = 0; 64 > h;) k = [g = k[3], b(e = k[1], (g = b(b(k[0], [e & (f = k[2]) | ~e & g, g & e | ~g & f, e ^ f ^ g, f ^ (e | ~g)][k = h >> 4]), b(c[h], i[[h, 5 * h + 1, 3 * h + 5, 7 * h][k] % a + m]))) << (k = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, a, 23, 6, 10, 15, 21][4 * k + h++ % 4]) | g >>> 32 - k), e, f];
  2350. for (h = 4; h;) l[--h] = b(l[h], k[h])
  2351. }
  2352. for (d = ""; 32 > h;) d += (l[h >> 3] >> 4 * (1 ^ 7 & h++) & 15).toString(a);
  2353. return d
  2354. };
  2355. return e
  2356. }(16), Qvsec.stringToHex = function(a) {
  2357. for (var b = "", c = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"), d = 0; d < a.length; d++) b += c[a.charCodeAt(d) >> 4] + c[15 & a.charCodeAt(d)];
  2358. return b
  2359. }, Qvsec.hexToString = function(a) {
  2360. for (var b = "", c = "0x" == a.substr(0, 2) ? 2 : 0; c < a.length; c += 2) b += String.fromCharCode(parseInt(a.substr(c, 2), 16));
  2361. return b
  2362. }, Qvsec._Seed = "#$#@#*ad", Qvsec.tempcalc = function(a, b) {
  2363. for (var c = "", d = 0; d < a.length; d++) c += String.fromCharCode(a.charCodeAt(d) ^ b.charCodeAt(d % 4));
  2364. return c
  2365. }, Qvsec.u1 = function(a, b) {
  2366. for (var c = "", d = b; d < a.length; d += 2) c += a.charAt(d);
  2367. return c
  2368. }, Qvsec._urlStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", Qvsec.urlenc = function(a, b, c) {
  2369. for (var d, e, f, g, h, i, j, k = "", l = 0; l < a.length;) d = a.charCodeAt(l++), e = a.charCodeAt(l++), f = a.charCodeAt(l++), 15 == l && (k += "A", k += b, k += c), g = d >> 2, h = (3 & d) << 4 | e >> 4, i = (15 & e) << 2 | f >> 6, j = 63 & f, isNaN(e) ? i = j = 64 : isNaN(f) && (j = 64), k = k + Qvsec._urlStr.charAt(g) + Qvsec._urlStr.charAt(h) + Qvsec._urlStr.charAt(i) + Qvsec._urlStr.charAt(j);
  2370. return k
  2371. }, Qvsec.$xx = function(a, b, c, d) {
  2372. var e = "" + Math.floor((new Date).valueOf() / 1e3),
  2373. d = ("" + d).charAt(0),
  2374. f = "",
  2375. g = "",
  2376. h = {
  2377. plt: a || "",
  2378. vid: b || "",
  2379. std: c || "",
  2380. sts: d || "",
  2381. ts: e,
  2382. rf: f,
  2383. ua: g
  2384. };
  2385. h = window.JSON ? JSON.stringify(h) : function() {
  2386. var a = [];
  2387. for (var b in h) a.push('"' + b + '":"' + h[b] + '"');
  2388. return "{" + a.join(",") + "}"
  2389. }(h);
  2390. var i = Qvsec.hexToString(Qvsec.ha(a + b + e + Qvsec._Seed + f + g + d.charAt(0) + c)),
  2391. j = Qvsec.urlenc(Qvsec.tempcalc(i, Qvsec._Seed), d.charAt(0), e),
  2392. k = Qvsec.urlenc(Qvsec.tempcalc(i, "86FG@hdf"), d.charAt(0), e),
  2393. l = Qvsec.u1(j, 0),
  2394. m = Qvsec.u1(j, 1);
  2395. return {
  2396. p: h,
  2397. u: j,
  2398. c: k,
  2399. u1: l,
  2400. u2: m,
  2401. t: e
  2402. }
  2403. },
  2404. function(a, b) {
  2405. function c() {
  2406. var a = "view.inews.qq.com" === i.host;
  2407. return b.os.iphone || b.os.ipod ? a ? "v3110" : "v3010" : b.os.ipad ? a ? "v4110" : "v4010" : b.os.android ? b.os.tablet ? "v6010" : a ? "v5110" : "v5010" : b.browser.IEMobile ? "v7010" : "v1010"
  2408. }
  2409. function d(a, b) {
  2410. for (var c = 0, d = b.length; d > c; c++)
  2411. if (1 == b[c].sl) return b[c].id;
  2412. return -1
  2413. }
  2414. function e(c) {
  2415. var d = {
  2416. cmd: 3532,
  2417. speed: 0,
  2418. appId: 0,
  2419. contentId: "",
  2420. vid: "",
  2421. itype: 1,
  2422. val: 0,
  2423. val2: 0,
  2424. str3: ""
  2425. };
  2426. c = b.extend(d, c), a.report(c)
  2427. }
  2428. function f(a) {
  2429. a = a || {};
  2430. var d, e = !1;
  2431. return a.alias && "string" == typeof a.fn && a.vid && (a.fn = a.fn.replace(a.vid, a.alias), e = !0), j && "string" == typeof a.path && (a.path = a.path.replace(/\/\/(.+?)(\/|#|$|\?)/, function() {
  2432. return arguments.length > 1 ? arguments[0].replace(arguments[1], j) : arguments[0]
  2433. })), d = a.path.indexOf("?") > -1 ? a.path + "&" + a.fn + "&vkey=" + a.vkey + "&br=" + a.br + "&platform=2&fmt=" + a.fmt + "&level=" + a.level + "&sdtfrom=" + c() : a.path + a.fn + "?vkey=" + a.vkey + "&br=" + a.br + "&platform=2&fmt=" + a.fmt + "&level=" + a.level + "&sdtfrom=" + c(), b.isString(a.sha) && a.sha.length > 0 && (d += "&sha=" + a.sha), e && (d += "&vidalias=1"), d
  2434. }
  2435. function g(a) {
  2436. return function(c) {
  2437. e(b.extend(a, c))
  2438. }
  2439. }
  2440. function h(d) {
  2441. var e, f, g, h = "",
  2442. i = 1,
  2443. j = {};
  2444. if ("object" == typeof Qvsec && "function" == typeof Qvsec.$xx && "string" == typeof d) {
  2445. e = b.getUrlParam("platform", d), f = b.getUrlParam("vids", d), g = c();
  2446. try {
  2447. j = Qvsec.$xx(e, f, g, i)
  2448. } catch (k) {
  2449. "function" == typeof a.reportErr && k && k.message && a.reportErr(k.message)
  2450. }
  2451. j && (h = h + "&_qv_rmt=" + j.u1, h = h + "&_qv_rmt2=" + j.u2, h = h + "&sdtfrom=" + g, d = d + (-1 == d.indexOf("?") ? "?" : "&") + h, b.cookie.set("qv_als", j.c))
  2452. }
  2453. return d
  2454. }
  2455. var i = {
  2456. isHLS: !1,
  2457. isPay: !1,
  2458. vid: "",
  2459. fmt: "auto",
  2460. platform: 11001,
  2461. host: window != top ? document.referrer : document.location.host
  2462. },
  2463. j = "";
  2464. i.cgi = function() {
  2465. if ("view.inews.qq.com" === i.host) {
  2466. var a = "";
  2467. return b.browser.WeChat && (a = "nocache=1&"), {
  2468. getinfo: "http://h5wx.video.qq.com/getinfo?callback=?&",
  2469. getkey: "http://h5wx.video.qq.com/getkey?callback=?&" + a
  2470. }
  2471. }
  2472. return {
  2473. getinfo: "http://h5vv.video.qq.com/getinfo?callback=?&",
  2474. edugetvinfo: "http://sv.video.qq.com/edugetvinfo?",
  2475. getkey: "http://h5vv.video.qq.com/getkey?callback=?&"
  2476. }
  2477. }(), i.retryCgi = function() {
  2478. return b.browser.WeChat || b.browser.MQQClient ? {
  2479. getinfo: i.cgi.getinfo.replace(/(\/\/)(.+?)(\/|$)/, "$1bkh5vv.video.qq.com$3"),
  2480. getkey: i.cgi.getkey.replace(/(\/\/)(.+?)(\/|$)/, "$1bkh5vv.video.qq.com$3")
  2481. } : {
  2482. getinfo: i.cgi.getinfo.replace(/(\/\/)(.+?)(\/|$)/, "$1bkh5vv.video.qq.com$3"),
  2483. getkey: i.cgi.getkey.replace(/(\/\/)(.+?)(\/|$)/, "$1bkh5vv.video.qq.com$3")
  2484. }
  2485. }(), a.h5Helper = {
  2486. loadVideoUrlByVid: function(c) {
  2487. var d = "";
  2488. return a.speedlimit ? (d = b.Deferred(), a.speedlimit.buildResult().done(function(b) {
  2489. var e = a.h5Helper.loadVideoUrlByVid_base(c, b);
  2490. e.done(function(a, b) {
  2491. d.resolve(a, b)
  2492. }), e.fail(function(a, b) {
  2493. d.reject(a, b)
  2494. })
  2495. })) : d = a.h5Helper.loadVideoUrlByVid_base(c), d
  2496. },
  2497. loadVideoUrlByVid_base: function(e, j) {
  2498. var k = {},
  2499. l = {},
  2500. m = b.Deferred();
  2501. b.extend(b.extend(k, i), e);
  2502. var n = new a.RetCode(100126),
  2503. o = !1,
  2504. p = i.cgi.getinfo,
  2505. q = b.now(),
  2506. r = 0,
  2507. s = "",
  2508. t = b.noop,
  2509. u = i.cgi.getkey;
  2510. e.eduext && (p = i.cgi.edugetvinfo);
  2511. var v, w = !1,
  2512. x = {};
  2513. if (e.defer && (m = e.defer), e && !e.noAuth) {
  2514. v = a.common.getParams(location.href);
  2515. var y = "v.qq.com" === location.hostname && "/iframe/player.html" === location.pathname;
  2516. y && v && v.cKey && v.encryptVer && v.platform && (w = !0)
  2517. }
  2518. e.retryDefer && b.isFunction(e.retryDefer.reject) && (o = !0, m = e.retryDefer, p = i.retryCgi.getinfo, u = i.retryCgi.getkey), e.loadingAdCgi && (p = e.loadingAdCgi), x = {
  2519. platform: k.platform,
  2520. charge: k.isPay ? 1 : 0,
  2521. otype: "json",
  2522. sb: 1,
  2523. nocache: b.browser.MQQClient || b.browser.WeChat ? 1 : 0,
  2524. _rnd: (new Date).valueOf()
  2525. }, e.eduext ? b.extend(x, {
  2526. eduext: e.eduext,
  2527. platform: 261001,
  2528. vid: k.vid,
  2529. defn: k.fmt
  2530. }) : b.extend(x, {
  2531. vids: k.vid,
  2532. defaultfmt: k.fmt
  2533. }), t = g({
  2534. itype: 1,
  2535. val2: o ? 1 : 0,
  2536. str3: s,
  2537. vid: k.vid,
  2538. appId: k.appId,
  2539. contentId: k.contentId
  2540. }), n.begin(), t();
  2541. var z = function(a) {
  2542. var d, g = 0,
  2543. h = void 0;
  2544. return r = b.now() - q, a && a.s ? "o" != a.s ? (g = a.em || 50, h = a.exem) : a.vl && a.vl.vi && b.isArray(a.vl.vi) && 0 != a.vl.cnt ? d = a.vl.vi[0] : g = 68 : g = 50, 0 != g || 5 == d.fst && b.isPlainObject(d.ul) && b.isArray(d.ul.ui) && 0 != d.ul.ui.length ? 0 == g && 2 != d.st && (8 != d.st ? g = 62 : (g = 83, h = d.ch)) : g = 62, 0 != g ? (t({
  2545. val: g,
  2546. speed: r
  2547. }), n.reportErr(g), void m.reject(g, h)) : (n.reportSuc(), t({
  2548. val: 0,
  2549. speed: r
  2550. }), e.loadingAdCgi ? void m.resolve(d.ul.ui[0].url, {
  2551. vl: a.vl,
  2552. fl: a.fl,
  2553. sfl: a.sfl,
  2554. exem: a.exem,
  2555. preview: a.preview
  2556. }) : d.fvkey ? (h = f({
  2557. path: d.ul.ui[0].url,
  2558. fn: d.fn,
  2559. vkey: d.fvkey,
  2560. br: d.br,
  2561. platform: 2,
  2562. fmt: k.fmt,
  2563. level: d.level,
  2564. sdtfrom: c(),
  2565. sha: d.fsha,
  2566. vid: k.vid,
  2567. alias: d.alias
  2568. }), void m.resolve(h, {
  2569. vl: a.vl,
  2570. fl: a.fl,
  2571. sfl: a.sfl,
  2572. exem: a.exem,
  2573. preview: a.preview
  2574. })) : void A())
  2575. },
  2576. A = function() {
  2577. var i, j = vi.ul.ui[0];
  2578. l.br = vi.br, l.path = j.url, l.fn = vi.fn, l.fiid = d(k, infojson.fl.fi), l.vt = j.vt, i = new a.RetCode(100127), i.begin(), q = b.now(), s = u + b.param({
  2579. otype: "json",
  2580. vid: k.vid,
  2581. format: l.fiid,
  2582. filename: l.fn,
  2583. platform: k.platform,
  2584. vt: l.vt,
  2585. charge: k.isPay ? 1 : 0,
  2586. _rnd: (new Date).valueOf()
  2587. }), s = h(s), t = g({
  2588. itype: 2,
  2589. val2: o ? 1 : 0,
  2590. str3: s,
  2591. vid: k.vid,
  2592. appId: k.appId,
  2593. contentId: k.contentId
  2594. }), t(), b.ajax({
  2595. url: s,
  2596. dataType: "jsonp"
  2597. }).done(function(a) {
  2598. var d = "";
  2599. return iRetCode = 0, r = b.now() - q, a && a.s ? "o" != a.s && (iRetCode = a.em || 50) : iRetCode = 50, 0 != iRetCode ? (i.reportErr(iRetCode), t({
  2600. val: iRetCode,
  2601. speed: r
  2602. }), void m.reject(iRetCode)) : (d = f({
  2603. path: l.path,
  2604. fn: l.fn,
  2605. vkey: a.key,
  2606. br: l.br,
  2607. platform: 2,
  2608. fmt: k.fmt,
  2609. level: a.level,
  2610. sdtfrom: c(),
  2611. sha: a.sha,
  2612. vid: k.vid,
  2613. alias: vi.alias
  2614. }), i.reportSuc(), t({
  2615. val: 0,
  2616. speed: r
  2617. }), void m.resolve(d, {
  2618. vl: infojson.vl,
  2619. fl: infojson.fl,
  2620. sfl: infojson.sfl,
  2621. exem: infojson.exem,
  2622. preview: infojson.preview
  2623. }))
  2624. }).fail(function() {
  2625. i.reportErr(), t({
  2626. val: 500,
  2627. speed: b.now() - q
  2628. }), o ? m.reject(500, 2) : (e.retryDefer = m, a.h5Helper.loadVideoUrlByVid(e))
  2629. })
  2630. },
  2631. B = function() {
  2632. s = p + b.param(x), j && "object" === b.type(j) && (s += "&" + b.param(j)), s = h(s), b.ajax({
  2633. url: s,
  2634. dataType: "jsonp"
  2635. }).done(function(b) {
  2636. return !e.noAuth && b && 0 != b.em && "o" != b.s ? 85 === b.em && -3 === b.type && 1 === e.qbAuthTimes ? (e.qbAuthTimes += 1, e.defer = m, e.needTime = !0, void a.h5Helper.loadVideoUrlByVid(e)) : (e.noAuth = !0, e.defer = m, void a.h5Helper.loadVideoUrlByVid(e)) : void z(b)
  2637. }).fail(function() {
  2638. n.reportErr(), t({
  2639. val: 500,
  2640. speed: b.now() - q
  2641. }), o ? m.reject(500, 1) : (e.noAuth = !0, e.retryDefer = m, a.h5Helper.loadVideoUrlByVid(e))
  2642. })
  2643. };
  2644. if (e.noAuth) return B(), m;
  2645. var C = a.app.pageType,
  2646. D = window !== top;
  2647. return 3 !== C || D ? w && v ? (b.extend(x, {
  2648. platform: v.platform,
  2649. cKey: v.cKey,
  2650. encryptVer: v.encryptVer
  2651. }), "61001" === v.platform.toString() && window.parent !== window && window.parent.location && window.parent.location.href && (x.wxrefer = window.parent.location.href), B()) : B() : (e.qbAuthTimes || (e.qbAuthTimes = 1), a.app.getQQBrowserSignKey(k.vid, e.needTime).done(function(a) {
  2652. a && b.extend(x, {
  2653. platform: a.platform,
  2654. cKey: a.key,
  2655. encryptVer: a.ver
  2656. }), B()
  2657. })), m
  2658. },
  2659. loadHDVideoUrlByVid: function(b) {
  2660. b.fmt = "mp4", a.h5Helper.loadVideoUrlByVid(b)
  2661. },
  2662. loadHLSUrlByVid: function(c) {
  2663. var d = {},
  2664. e = b.Deferred();
  2665. b.extend(b.extend(d, i), c);
  2666. var f = new a.RetCode(100128),
  2667. j = "http://h5vv.video.qq.com/gethls?callback=?&" + b.param({
  2668. vid: d.vid,
  2669. charge: d.isPay ? 1 : 0,
  2670. otype: "json",
  2671. platform: d.platform,
  2672. _rnd: (new Date).valueOf()
  2673. }),
  2674. k = g({
  2675. itype: 3,
  2676. str3: j,
  2677. vid: d.vid,
  2678. appId: d.appId,
  2679. contentId: d.contentId
  2680. }),
  2681. l = b.now();
  2682. return j = h(j), k(), f.begin(), b.ajax({
  2683. url: j,
  2684. dataType: "jsonp"
  2685. }).done(function(c) {
  2686. if (!c || !c.s) return f.reportErr(50), k({
  2687. speed: b.now() - l,
  2688. val: 50
  2689. }), void e.reject(50);
  2690. if ("o" != c.s) return f.reportErr(c.em || 50), k({
  2691. speed: b.now() - l,
  2692. val: c.em || 50
  2693. }), void e.reject(c.em || 50);
  2694. if (!c.vd || !c.vd.vi || !a.$.isArray(c.vd.vi)) return f.reportErr(68), k({
  2695. speed: b.now() - l,
  2696. val: 68
  2697. }), void e.reject(68);
  2698. for (var d = [], g = -2, h = 0; h < c.vd.vi.length; h++)
  2699. if (g = c.vd.vi[h].ch, 2 == c.vd.vi[h].st) {
  2700. var i = c.vd.vi[h].url.toLowerCase();
  2701. if (!(i.indexOf(".mp4") < 0 && i.indexOf(".m3u8") < 0) && c.vd.vi[h].url) {
  2702. var j = c.vd.vi[h];
  2703. d.push(j.url);
  2704. break
  2705. }
  2706. }
  2707. return 0 == d.length ? (f.reportErr(68), k({
  2708. speed: b.now() - l,
  2709. val: 68
  2710. }), void e.reject(68, g)) : (k({
  2711. speed: b.now() - l,
  2712. val: 0
  2713. }), f.reportSuc(), void e.resolve(d[0], c.vd))
  2714. }).fail(function() {
  2715. f.reportErr(), k({
  2716. speed: b.now() - l,
  2717. val: 500
  2718. }), e.reject(500, 3)
  2719. }), e
  2720. },
  2721. load3GVideoUrl: function(b) {
  2722. b.fmt = "msd", a.h5Helper.loadVideoUrlByVid(b)
  2723. },
  2724. loadIsUseHLS: function(c) {
  2725. var d = {},
  2726. e = b.Deferred();
  2727. b.extend(b.extend(d, i), c);
  2728. var f = new a.RetCode(100125);
  2729. return f.begin(), b.ajax({
  2730. url: "http://h5vv.video.qq.com/getdtype?callback=?&" + b.param({
  2731. vids: d.vid,
  2732. platform: d.platform,
  2733. otype: "json",
  2734. _rnd: (new Date).valueOf()
  2735. }),
  2736. dataType: "jsonp"
  2737. }).done(function(a) {
  2738. var d = 1;
  2739. if ("object" != b.type(a)) return f.reportErr(), void e.reject(500, 4);
  2740. if ("o" != a.s || !b.isArray(a.dl) || 0 == a.dl.length) return f.reportErr(a.em), void e.reject(a.em || 50);
  2741. for (var g = 0, h = a.dl.length; h > g; g++) a.dl[g].vid === c.vid && (d = a.dl[g].dltype);
  2742. f.reportSuc(), e.resolve(d, a)
  2743. }).fail(function() {
  2744. f.reportErr(), e.reject(500, 4)
  2745. }), e
  2746. },
  2747. loadSRT: function(a) {
  2748. var c = {},
  2749. d = b.Deferred();
  2750. return b.extend(b.extend(c, i), a), b.ajax({
  2751. url: "http://h5vv.video.qq.com/getsurl?" + b.param({
  2752. vid: c.vid,
  2753. format: c.sflid,
  2754. platform: c.platform,
  2755. pid: c.pid,
  2756. otype: "json",
  2757. _rnd: (new Date).valueOf()
  2758. }),
  2759. dataType: "jsonp"
  2760. }).done(function(a) {
  2761. return "object" != b.type(a) ? void d.reject(500) : "o" != a.s ? void d.reject(isNaN(a.em) ? 500 : a.em, a.msg || "") : void d.resolve(a)
  2762. }).fail(function() {
  2763. d.reject(500)
  2764. }), d
  2765. },
  2766. setSpecialVideoFileDomain: function(a) {
  2767. "string" == typeof a && /^(\S+[\.])?qq\.com/.test(location.host) && (j = a)
  2768. }
  2769. }
  2770. }(tvp, tvp.$),
  2771. function(a, b) {
  2772. a.BasePlayer = function() {
  2773. var c = {};
  2774. this.modId = "", this.sessionId = "", this.$mod = null, this.videomod = null, this.playerid = "", this.curVideo = null, this.instance = null, this.dataset = {}, this.eventList = ["inited", "play", "playing", "ended", "allended", "pause", "resume", "timeupdate", "getnext", "error", "stop", "fullscreen", "change", "write", "flashpopup", "getnextenable", "msg", "h5loadingadstart", "h5loadingadend"], this.config = {}, this.hijackFun = ["getPlayer", "getCurVideo", "showPlayer", "hidePlayer", "play", "pause", "getPlaytime", "setPlaytime", "getPlayerType", "resize"], this.prototype = {},
  2775. function(b) {
  2776. var c = ["init", "addParam", "write", "setPlayerReady"];
  2777. c = c.concat(b.hijackFun);
  2778. for (var d = 0, e = c.length; e > d; d++) b.prototype[c[d]] = a.$.noop
  2779. }(this), this.addParam = function(a, b) {
  2780. this.config[a] = b
  2781. }, this.on = function(a, d) {
  2782. a && b.isFunction(d) && (c[a] = b.isArray(c[a]) ? c[a] : [], c[a].push(d))
  2783. }, this.trigger = function(a) {
  2784. var d, e, f;
  2785. if (a && b.isArray(c[a]))
  2786. for (e = 0, f = c[a].length; f > e; e++) b.isFunction(c[a][e]) && (d = Array.prototype.slice.call(arguments, 1), c[a][e].apply(null, d))
  2787. }, this.off = function(a, d) {
  2788. var e;
  2789. a && b.isArray(c[a]) && (d ? (e = b.inArray(d, c[a]), e >= 0 && (c[a][e] = void 0)) : c[a] = void 0)
  2790. }
  2791. }, a.BasePlayer.prototype = {
  2792. setCurVideo: function(a) {
  2793. this.curVideo = a
  2794. },
  2795. getPlayer: function() {
  2796. return null
  2797. },
  2798. getCurVideo: function() {
  2799. return this.curVideo
  2800. },
  2801. getCurVid: function() {
  2802. return this.curVideo instanceof a.VideoInfo ? this.curVideo.getVid() : ""
  2803. },
  2804. getCurVidList: function() {
  2805. return this.curVideo instanceof a.VideoInfo ? this.curVideo.getVidList() : ""
  2806. },
  2807. init: function(c) {
  2808. b.extend(this.config, c);
  2809. for (var d = 0, e = this.eventList.length; e > d; d++) {
  2810. var f = "on" + this.eventList[d];
  2811. this[f] = b.isFunction(this.config[f]) ? this.config[f] : a.$.noop
  2812. }
  2813. this.setCurVideo(this.config.video), this.write(this.config.modId)
  2814. },
  2815. write: function(a) {
  2816. b("#" + a).html("here is player of base")
  2817. },
  2818. log: function(a) {
  2819. window.console && window.console.log(a)
  2820. },
  2821. getCBEvent: function(c) {
  2822. var d = void 0;
  2823. return this.instance && b.isFunction(this.instance[c]) && this.instance[c] != a.$.noop ? d = this.instance[c] : b.isFunction(this[c]) && this[c] != a.$.noop && (d = this[c]), d
  2824. },
  2825. callCBEvent: function(a) {
  2826. var c = this.getCBEvent(a);
  2827. if (b.isFunction(c)) {
  2828. var d = Array.prototype.slice.call(arguments, 1);
  2829. return c.apply(this, d)
  2830. }
  2831. return void 0
  2832. },
  2833. resize: function(a, c) {
  2834. var d = this.getPlayer();
  2835. d && (d.style.width = b.formatSize(a), d.style.height = b.formatSize(c))
  2836. },
  2837. showPlayer: function() {
  2838. return
  2839. },
  2840. hidePlayer: function() {
  2841. return
  2842. },
  2843. execFlashMethod: function(a) {
  2844. var b, c = this.getPlayer(),
  2845. d = [];
  2846. if (c && c[a]) {
  2847. d = [].slice.call(arguments, 1);
  2848. try {
  2849. return b = c[a].apply(c, d)
  2850. } catch (e) {}
  2851. }
  2852. }
  2853. }
  2854. }(tvp, tvp.$), tvp = tvp || {};
  2855. var QQLive = QQLive || {
  2856. ver: "$Rev: 70497 $",
  2857. curSSO: "",
  2858. lastmodify: "$Date: 2015-02-12 22:27:53 +0800 (四, 2015-02-12) $"
  2859. },
  2860. QQLiveSetup = QQLive;
  2861. QQLive.log = tvp.log, QQLive.debug = function(a) {
  2862. var b = "";
  2863. if (a.indexOf("[") < 0 && arguments && arguments.callee && arguments.callee.caller) {
  2864. var c = arguments.callee.caller;
  2865. b = QQLive.debug.getFunName(c)
  2866. }
  2867. a = b ? "[" + b + "]:" + a : a, -1 === tvp.log.isDebug && (tvp.log.isDebug = "true" == tvp.$.getUrlParam("debug") ? 1 : 0), tvp.log.isDebug && ("undefined" != typeof __TenVideo_OCX_CTRL_PAGE__ ? QQLive.driverPage.sendMsg(QQLive.DEFINE.MSG.DRVPG_EVT_DEBUGLOG, encodeURIComponent(a)) : tvp.log(a))
  2868. }, QQLive.debug.getFunName = function(a) {
  2869. if ("function" == typeof a || "object" == typeof a) var b = ("" + a).match(/function\s*([\w\$]*)\s*\(/);
  2870. return b && b[1]
  2871. }, QQLive.config = {
  2872. OLD_MIN_VER: "8.22.5275.0",
  2873. IE_MIN_VER: "8.45.6526.0",
  2874. FF_MIN_VER: "8.45.6526.0",
  2875. CHROME_MIN_VER: "8.45.6526.0",
  2876. STARTUP_MIN_VER: "8.14.4895.0",
  2877. IE_FLASH_MIN_VER: "9.0.124.0",
  2878. FF_FLASH_MIN_VER: "10.0",
  2879. FLASH_CAB: "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0",
  2880. MEDIAPLAYER_DOWNLOAD_URL: "http://dl_dir.qq.com/qqtv/QQLive8.46.6680.0.exe",
  2881. PROGID_QQLIVE_INSTALLER: "QQLiveInstaller.InstallHelper.1",
  2882. PROGID_QQLIVE_LIVEAPI: "QQLive.Application",
  2883. MMINSTALL_CLSID: "1DABF8D5-8430-4985-9B7F-A30E53D709B3",
  2884. MMINSTALL_VER: "8,14,4895,0",
  2885. OLD_IE_CLSID: "11F2A418-94B2-4E16-9B0C-B00C0435F903",
  2886. OLD_FF_CLSID: "D9EBCF5D-3F8F-4B6A-89BA-70577BE73C62",
  2887. SEHLL_CLSID: "f7e55bdf-9528-46ba-b550-777859627591",
  2888. OCX_CLSID: "5EF7B131-C278-4034-BC88-2CE28B128681",
  2889. LIVEAPI_CLSID: "4A8FD414-1EBF-4EBD-A158-0D09B005A17F",
  2890. OCX_URL: "http://imgcache.qq.com/tencentvideo_v1/js/tvp/ocx_ctrl_page.html?max_age=0",
  2891. CTRLSWF_URL: "http://imgcache.qq.com/liveportal_v1/swf/player/vodCtrl.swf",
  2892. CTRLSWF_VOD_URL: "http://imgcache.qq.com/liveportal_v1/swf/player/vodCtrl_drm.swf",
  2893. CTRLSWF_W_URL: "http://imgcache.qq.com/liveportal_v1/swf/player/vodCtrl_w.swf",
  2894. PREVIEW_URL: "http://imgcache.qq.com/liveportal_v1/swf/player/qqlive_logo.swf",
  2895. LOADING_URL: "http://imgcache.qq.com/liveportal_v1/swf/player/loadstart.swf",
  2896. AD_SWF_URL: "http://imgcache.qq.com/liveportal_v1/swf/player/moneyplayer.swf",
  2897. OCX_DISABLED_MANUAL: "http://v.qq.com/help/film_1.html#15"
  2898. }, QQLive.param = {
  2899. playpage: {
  2900. mousewheel: "mousewheel",
  2901. oldmode: "OldMode"
  2902. },
  2903. shell: {
  2904. ocxurl: "OcxUrl",
  2905. hidescripterr: "HideScriptErr"
  2906. },
  2907. ocx: {
  2908. mute: "Mute",
  2909. volume: "Volume",
  2910. fullscreen: "FullScreen",
  2911. appendpausebtn: "AppendPauseBtn",
  2912. programpageurl: "ProgramPageUrl"
  2913. },
  2914. driver: {
  2915. autoplay: "autoPlay",
  2916. iscontinued: "isContinued",
  2917. url: "url",
  2918. type: "type",
  2919. adv: "adv",
  2920. oid: "oid"
  2921. },
  2922. driverurl: {
  2923. ctrlbar: "ctrlbar",
  2924. ctrlheight: "ctrlh",
  2925. previewurl: "previewUrl",
  2926. loadingurl: "loadingUrl",
  2927. previewpic: "previewPic",
  2928. hidectrl: "hideCtrl",
  2929. debug: "debug"
  2930. },
  2931. getParamBool: function(a) {
  2932. return void 0 === a ? !1 : "string" == typeof a ? (a = a.toLowerCase(), "true" == a || "1" == a) : !!a
  2933. },
  2934. getElementObjectById: function(a) {
  2935. return window.ActiveXObject ? document.getElementById(a) : document.embeds[a]
  2936. }
  2937. }, QQLive.version = function() {
  2938. function a(a) {
  2939. if (QQLive.version.checkVerFormatValid(a)) return a;
  2940. if (/\d+/i.test(a)) {
  2941. var b = parseInt(a / 1e4 / 100, 10),
  2942. c = parseInt(a / 1e4, 10) - 100 * b,
  2943. d = parseInt(a, 10) - (100 * b * 1e4 + 1e4 * c);
  2944. return strVer = b + "." + c + "." + d
  2945. }
  2946. return a
  2947. }
  2948. var b = -1,
  2949. c = -1,
  2950. d = -1;
  2951. return _version = {}, {
  2952. compare: function(b, c) {
  2953. b = a(b), c = a(c), b = b.replace(/,/g, "."), c = c.replace(/,/g, ".");
  2954. for (var d = b.split("."), e = c.split("."), f = 0; 4 > f; f++) {
  2955. var g = Number(d[f]),
  2956. h = Number(e[f]);
  2957. if (g > h) return 1;
  2958. if (h > g) return -1
  2959. }
  2960. return 0
  2961. },
  2962. get: function() {
  2963. return tvp.version.getOcx()
  2964. },
  2965. check: function(b) {
  2966. if (b = b || QQLive.version.getSupportMinVersion(), !QQLive.version.checkVerFormatValid(b)) return !1;
  2967. var c, d = QQLive.version.get();
  2968. return c = /^\d+$/.test(d) ? a(d) : d + "", QQLive.version.compare(c, b) < 0 ? !1 : !0
  2969. },
  2970. isZero: function(a) {
  2971. return a = a || QQLive.version.get(), /^\d+$/.test(a) && 0 == a ? !0 : 0 == QQLive.version.compare(a, "0.0.0.0")
  2972. },
  2973. checkVerFormatValid: function(a) {
  2974. return /^(\d+\.){2}\d+(\.\d+)?$/.test(a)
  2975. },
  2976. hasQQLiveOcx: function() {
  2977. if (-1 != d) return 1 == d;
  2978. var a = QQLive.version.check();
  2979. return d = a ? 1 : 0
  2980. },
  2981. hasOldVersion: function() {
  2982. if (-1 != c) return 1 == c;
  2983. var a = QQLive.version.get(QQLive.config.OLD_IE_CLSID, !0);
  2984. return a ? (c = QQLive.version.compare(a, QQLive.config.OLD_MIN_VER) > 0 ? 1 : 0, !!c) : !1
  2985. },
  2986. hasQQLivePlayer: function() {
  2987. if (-1 != b) return 1 == b;
  2988. var a = QQLive.version.get(QQLive.config.LIVEAPI_CLSID);
  2989. return a ? (b = QQLive.version.compare(a, "0.0.0.0") > 0 ? 1 : 0, !!b) : !1
  2990. },
  2991. getSupportMinVersion: function() {
  2992. return tvp.$.browser.ie ? QQLive.config.IE_MIN_VER : tvp.$.browser.firefox ? QQLive.config.FF_MIN_VER : tvp.$.browser.webkit ? QQLive.config.CHROME_MIN_VER : "0.0.0.0"
  2993. }
  2994. }
  2995. }(), QQLive.userAgent = QQLive.browser, QQLive.installer = {
  2996. timer: null,
  2997. installerObj: null,
  2998. getInstallerHtml: function() {
  2999. var a = "";
  3000. return a += '<div id="qqlive_mminstaller_div"><OBJECT classid="clsid:' + QQLive.config.MMINSTALL_CLSID + '" codebase="http://dl_dir.qq.com/qqtv/MMInstaller.cab#version=' + QQLive.config.MMINSTALL_VER + '" ID="QQLiveInstaller" width="0px" height="0px">', a += ' <embed name="FF_MM_Install" id="FF_MM_Install" type="application/tecent-qqlive-plugin" width="0px" height="0px"></embed>', a += "</OBJECT></div>"
  3001. },
  3002. showInstallerObject: function(a) {
  3003. tvp.$.getByID(a).innerHTML = QQLive.installer.getInstallerHtml()
  3004. },
  3005. isMMInstalled: function() {
  3006. if (tvp.$.browser.ie) try {
  3007. var a = new ActiveXObject(QQLive.config.PROGID_QQLIVE_INSTALLER);
  3008. if ("undefined" != typeof a.GetVersionByClsid) return !0;
  3009. try {
  3010. a.Destroy(), a = null, delete a
  3011. } catch (b) {}
  3012. return !1
  3013. } catch (b) {
  3014. return !1
  3015. } else if (tvp.$.browser.isNotIESupport()) {
  3016. var c = document.embeds.FF_MM_Install;
  3017. try {
  3018. if (c.CreateAX("MMInstall.dll"), "undefined" != typeof c.GetVersionByClsid) return !0;
  3019. try {
  3020. c.Destroy(), c = null, delete c
  3021. } catch (b) {}
  3022. return !0
  3023. } catch (b) {
  3024. return !1
  3025. }
  3026. }
  3027. return !1
  3028. },
  3029. checkFFHasMMEmbed: function() {
  3030. return !!tvp.$.getByID("FF_MM_Install")
  3031. },
  3032. getActiveXObj: function(a, b) {
  3033. var c = null;
  3034. if (b && tvp.$.browser.isNotIESupport()) {
  3035. if (c = document.embeds.FF_MM_Install, !c) {
  3036. var d = document.createElement("div");
  3037. d.innerHTML = QQLive.installer.getInstallerHtml(), document.getElementsByTagName("body")[0].appendChild(d), c = document.embeds.FF_MM_Install
  3038. }
  3039. try {
  3040. c.CreateAX(b)
  3041. } catch (e) {}
  3042. } else if (a && tvp.$.browser.ie) try {
  3043. c = new ActiveXObject(a)
  3044. } catch (e) {}
  3045. return c
  3046. },
  3047. hide: function() {
  3048. var a = tvp.$.getByID("QQLiveInstaller");
  3049. a && (a.style.display = "none")
  3050. }
  3051. }, QQLive.flash = {
  3052. getFullVersion: function() {
  3053. return tvp.version.getFlash()
  3054. },
  3055. getMainVer: function() {
  3056. return tvp.version.getFlashMain()
  3057. },
  3058. isFlashVerVaild: function() {
  3059. var a = !1;
  3060. return a = tvp.$.browser.ie ? -1 == QQLive.version.compare(QQLive.flash.getFullVersion(), QQLive.config.IE_FLASH_MIN_VER) ? !1 : !0 : -1 == QQLive.version.compare(QQLive.flash.getFullVersion(), QQLive.config.FF_FLASH_MIN_VER) ? !1 : !0
  3061. }
  3062. }, QQLive.player = {
  3063. startup: function() {
  3064. 0 != tvp.$.browser.isCanOcx() && 0 != QQLive.flash.isFlashVerVaild() && 0 != QQLive.version.check(QQLive.config.STARTUP_MIN_VER) && (window.location.href = "qqlive://system_startup/")
  3065. },
  3066. openClient: function(a, b) {
  3067. if (a && QQLive.version.hasQQLivePlayer()) {
  3068. var c = "qqlive://sso/";
  3069. if (!b) {
  3070. var d = a;
  3071. if (/^\d+$/i.test(d)) c += "projectid=" + d;
  3072. else if (d.toLowerCase().indexOf("qqlive://sso/") >= 0) c = d;
  3073. else {
  3074. if (!/^[a-z0-9]{15}$/i.test(d)) return;
  3075. c += "vbarid=" + d
  3076. }
  3077. }
  3078. a && b && (c += "vbarid=" + a + "&videoid=" + b);
  3079. var e = QQLive.installer.getActiveXObj(QQLive.config.PROGID_QQLIVE_LIVEAPI, "");
  3080. if (e) try {
  3081. return void e.OpenQQLive(c)
  3082. } catch (f) {}
  3083. window.location.href = c
  3084. }
  3085. }
  3086. }, QQLive.driverPage = {
  3087. sendMsg: function(a, b) {
  3088. b = b || "", window.navigate("app:OnMsg&nID=" + a + "&vContent=" + b)
  3089. },
  3090. ready: function() {
  3091. window.navigate("app:PageLoaded")
  3092. }
  3093. }, QQLive.event = {
  3094. rptImg: null,
  3095. bind: function(a, b) {
  3096. var c = Array.prototype.slice.call(arguments, 2);
  3097. return function() {
  3098. var d = a || this,
  3099. e = c.concat(Array.prototype.slice.call(arguments, 0));
  3100. return "string" != typeof b ? b.apply(d, e) : d[b] ? d[b].apply(d, e) : void 0
  3101. }
  3102. },
  3103. closeMousewheel: function() {
  3104. document.onmousewheel = function(a) {
  3105. return a = a || event, a.ctrlKey ? !1 : void 0
  3106. }
  3107. },
  3108. reportTCSSHot: function(a, b) {
  3109. var c = !1;
  3110. if ("undefined" == typeof b) c = !0;
  3111. else {
  3112. var d = tvp.$.cookie.get("lv_ocx_rpt");
  3113. d = d ? parseInt(d) : 0, c = !(d & b)
  3114. }
  3115. c && ("function" == typeof pgvSendClick ? pgvSendClick({
  3116. hottag: "OCX.SETUP." + a,
  3117. virtualURL: "/virtual/ocx.html",
  3118. virtualDomain: "v.qq.com"
  3119. }) : (QQLive.event.rptImg = new Image, QQLive.event.rptImg.src = "http://pinghot.qq.com/pingd?dm=v.qq.com.hot&url=/virtual/ocx.html&tt=" + escape(document.title) + "&hottag=OCX.SETUP." + a + "&hotx=9999&hoty=9999&rand=" + Math.round(1e5 * Math.random())), tvp.$.cookie.set("lv_ocx_rpt", d | b, document.location.hostname || document.location.hostname))
  3120. }
  3121. };
  3122. var QQLive = QQLive || {};
  3123. QQLive.DEFINE = {
  3124. STATUS: {
  3125. NOT_INITED: -1,
  3126. INIT: 0,
  3127. READY: 4,
  3128. PLAYING: 7,
  3129. STOP: 1,
  3130. LOADING: 2,
  3131. PAUSE: 6,
  3132. Buffering: 8,
  3133. Paused_Buffering: 9,
  3134. END: 91
  3135. },
  3136. EVENT: {
  3137. LOADSTART: "loadstart",
  3138. LOADING: "loading",
  3139. PLAY: "playing",
  3140. STOP: "stop",
  3141. PAUSE: "pause",
  3142. RESUME: "resume",
  3143. PLAYNEXT: "playnext",
  3144. PLAYPREV: "playprev",
  3145. MUTE: "mute",
  3146. FULLSCREEN: "fullscreen",
  3147. VIDEOREADY: "videoready",
  3148. PROGESS: "progress",
  3149. END: "ended",
  3150. GET_VIDEO_FORMAT_CNT: "getVideoFormatCnt",
  3151. GET_VIDEO_CUR_FORAMT: "getVideoCurFormat",
  3152. VIDEO_FORMAT_SWITCHED: "videoFormatSwitched",
  3153. VIDEOCHANGE: "videochange",
  3154. VOLUMECHANGE: "volumechange",
  3155. MOUSEMOVE: "mousemove",
  3156. DBCLICK: "dbclick",
  3157. TYPECHANGE: "typechange",
  3158. GET_DRM_PREVDURATION: "getDrmDuration",
  3159. GET_DRM_PREV_REASON: "getDrmPrevReason",
  3160. CHECK_MMINSTALLER: "CheckMMInstall",
  3161. CHECK_FLASH: "CheckFlash",
  3162. CHECK_VERSION: "CheckVersion",
  3163. SHOW_PLAYER: "ShowPlayer",
  3164. DIRVER_PAGE_INITED: "DirverPageInited",
  3165. OCX_READY: "inited",
  3166. GUIDE_FLASH_INITED: "GuideFlashInited",
  3167. UPDATE_SSO: "UpdateSSO",
  3168. PAUSE_BTN_CLICK: "PauseBtnClick",
  3169. FULLSCREEN_BTN_CLICK: "FullScreenBtnClick",
  3170. CAN_PREV: "CanPrev",
  3171. CAN_NEXT: "CanNext",
  3172. OCX_INIT_FAILED: "OcxInitFailed",
  3173. SCRIPT_ERROR: "ScriptError",
  3174. OTHER_MSG: "msg",
  3175. OCX_DISABLED: "ocxdisabeld",
  3176. DRM_ERROR: "drmerror"
  3177. },
  3178. MSG: {
  3179. OCX_EVT_ONMSG_PLAYING: 1,
  3180. OCX_EVT_ONMSG_PAUSED: 2,
  3181. OCX_EVT_ONMSG_STOPED: 3,
  3182. OCX_EVT_PREPLAY_LOADING: 4,
  3183. OCX_EVT_ONMSG_LOADSTART: 7,
  3184. OCX_EVT_ONMSG_MOUSEMOVE: 9,
  3185. OCX_EVT_ONMSG_LBUTTONDOWN: 12,
  3186. OCX_EVT_ONMSG_LBUTTONDBLCLK: 14,
  3187. OCX_EVT_ONMSG_START: 15,
  3188. OCX_EVT_ONMSG_VOLUME_UP: 23,
  3189. OCX_EVT_ONMSG_VOLUME_DOWN: 24,
  3190. OCX_EVT_ONMSG_MUTE: 25,
  3191. OCX_EVT_ONMSG_CANPRE: 26,
  3192. OCX_EVT_ONMSG_CANNEXT: 27,
  3193. OCX_EVT_ONMSG_BUF_RESUME_PLAY: 30,
  3194. OCX_EVT_ONMSG_PAUSE_RESUME_PLAY: 31,
  3195. OCX_EVT_ONMSG_PLAY_PAUSE_CLICK: 32,
  3196. OCX_EVT_ONMSG_VIDEO_FORMAT_COUNT: 49,
  3197. OCX_EVT_ONMSG_CUR_VIDEO_FORMAT_IDX: 50,
  3198. OCX_EVT_ONMSG_VIDEO_FORMAT_SWITCHED: 51,
  3199. OCX_EVT_ONMSG_COMMAND: 100,
  3200. DRVPG_EVT_FLASH_INITED: 501,
  3201. DRVPG_EVT_ALL_INITED: 502,
  3202. LIVE_PAGE_EVENT_GUIDEFLSAH_INITED: 503,
  3203. DRVPG_EVT_UPDATESSO: 504,
  3204. CTRLBAR_EVT_PAUSECLICK: 505,
  3205. CTRLBAR_EVT_FULLSCREENCLICK: 506,
  3206. OCX_EVT_FULLSCREEN_SWITCH: 507,
  3207. DRVPG_EVT_OCX_INIT_FAILED: 508,
  3208. DRVPG_EVT_JS_ERROR: 509,
  3209. DRVPG_EVT_DEBUGLOG: 510,
  3210. CTRLBAR_EVT_STOPCLICK: 511,
  3211. OCX_DISABLED: 512,
  3212. OCX_DRM_PREV_END: 513,
  3213. OCX_DRM_GET_TIMEOUT: 515,
  3214. NEW_OCX: 516,
  3215. USE_OCX: 517,
  3216. SHOW_INSTALLER_TIPS: 518,
  3217. GET_VIDEO_CUR_TIME: 519,
  3218. NO_FLASH_PLAYER: 520,
  3219. CTRLBAR_EVT_RESUMECLICK: 521,
  3220. OCX_EVT_ERROR: 1002,
  3221. OCX_EVT_ONMSG_FLV_PROGRAM_END: 1003,
  3222. OCX_EVT_ONMSG_FLV_TOTAL_TIME: 1005,
  3223. OCX_EVT_GET_QQ: 1104,
  3224. OCX_EVT_PREVIEW_REASON: 1102,
  3225. OCX_EVT_PREVIEW_DURATION: 1103,
  3226. OCX_EVT_DRM_AUTHORIZE_RESULT: 1106,
  3227. OCX_EVT_DRM_BEGIN: 1107
  3228. },
  3229. COMMANDID: {
  3230. IDM_RBUTTON_PLAY_PAUSE: 11251,
  3231. IDM_RBUTTON_PRE: 11253,
  3232. IDM_RBUTTON_NEXT: 11254,
  3233. HOT_KEY_FULLSCREEN: 11302
  3234. },
  3235. PROGRESS_EVENT: {
  3236. FLV_LOADING: 2,
  3237. FLV_HEAD_TOTAL_TIME: 3
  3238. },
  3239. KEYCODE: {
  3240. HOTKEYF_SHIFT: 1,
  3241. HOTKEYF_CONTROL: 2,
  3242. HOTKEYF_ALT: 4,
  3243. HOTKEYF_EXT: 8,
  3244. VK_RETURN: 13,
  3245. VK_ESCAPE: 27,
  3246. VK_SPACE: 32,
  3247. VK_LEFT: 37,
  3248. VK_UP: 38,
  3249. VK_RIGHT: 39,
  3250. VK_DOWN: 40
  3251. },
  3252. VIDEOTYPE: {
  3253. UNKNOWN: 0,
  3254. LIVE: 1,
  3255. VOD: 8
  3256. },
  3257. AD_EVENT: {
  3258. ERROR: "Error",
  3259. DATALOADED: "DataLoaded",
  3260. DOWNLOADED: "Downloaded",
  3261. PLAYEND: "PlayEnd"
  3262. }
  3263. },
  3264. function(a, b) {
  3265. a.livehub = {
  3266. g_flashp2p: !1,
  3267. iretcode: 0,
  3268. g_curCnlInfo: {},
  3269. stepReport: function(c, d) {
  3270. var e = {
  3271. cmd: 3545,
  3272. val: c
  3273. };
  3274. "object" == b.type(d) && (e = b.extend(e, {
  3275. speed: d.delay,
  3276. int5: d.code,
  3277. vid: d.lid
  3278. }), d.config && (e = b.extend(e, {
  3279. contentId: d.config.contentId,
  3280. appId: d.config.appid
  3281. }))), a.report(e)
  3282. },
  3283. FlashChecker: function(c) {
  3284. var d = this;
  3285. this.cnlId = "", this.extParam = {}, this.onError = b.noop, this.onCanFlash = b.noop, this.onCanHTML5 = b.noop, this.onCanOCX = b.noop, this.onComplete = b.noop, this.onGetCnlId = b.noop;
  3286. var e = function(b, d) {
  3287. d = d || {}, d.config = c, a.livehub.stepReport(b, d)
  3288. };
  3289. this.onSuccess = function(c) {
  3290. c && 0 == c.iretcode ? (a.livehub.iretcode = c.iretcode, a.livehub.g_flashp2p = c.flashp2p ? !0 : !1, a.debug("get channel info:flashid=" + c.flashid + ",p2pid=" + c.p2pid + ",flashp2p=" + c.flashp2p), d.cnlId = "" + c.flashid || c.p2pid || "", d.onGetCnlId("" + d.cnlId, !1), a.livehub.getCurChannelInfo(d.cnlId, d.extParam), c.flashid ? (e(5), d.onCanFlash(d.cnlId)) : b.os.windows && c.p2pid ? (e(6), d.onCanOCX(d.cnlId)) : (e(7, {
  3291. code: c.iretcode
  3292. }), d.onError(c.iretcode))) : (e(8, {
  3293. code: c.iretcode
  3294. }), d.onError(500))
  3295. }, this.send = function() {
  3296. if (e(1), a.common.isUseHtml5()) return e(2), d.onCanHTML5(d.cnlId), void d.onComplete();
  3297. var c = b.now();
  3298. b.ajax({
  3299. url: "http://info.zb.qq.com",
  3300. data: {
  3301. cmd: 1,
  3302. cnlid: d.cnlId || ""
  3303. },
  3304. dataType: "jsonp"
  3305. }).done(function(a, f) {
  3306. f = b.now() - c, e(3, {
  3307. delay: f
  3308. }), d.onSuccess(a), d.onComplete()
  3309. }).fail(function(a, f) {
  3310. f = b.now() - c, e(4, {
  3311. delay: f
  3312. }), d.onError(), d.onComplete()
  3313. })
  3314. }
  3315. },
  3316. getCurChannelInfo: function(c, d) {
  3317. var e = a.livehub.g_curCnlInfo;
  3318. d && "object" == b.type(d) ? (e.cnlId = d.cnlId, d.channelname && (e.cnlName = d.channelname), d.currentname && d.currenttime && (e.prmInfo = d.currenttime + "|" + d.currentname)) : e = {}
  3319. }
  3320. }
  3321. }(tvp, tvp.$),
  3322. function(a, b) {
  3323. function c(c, d, e) {
  3324. var g = b.now(),
  3325. h = g - f,
  3326. i = {
  3327. cmd: 3529,
  3328. val: c,
  3329. str4: d,
  3330. speed: 0 > h ? b.now() - g : h
  3331. };
  3332. f = g, "object" == b.type(e) && b.extend(i, e), a.report(i)
  3333. }
  3334. function d(c, d) {
  3335. var e = c + "Defer";
  3336. if (a[e]) return a[e];
  3337. var f = b.Deferred();
  3338. a[e] = f;
  3339. var g = "http://imgcache.gtimg.cn/tencentvideo_v1/tvp/js/",
  3340. h = c.toLowerCase();
  3341. "OcxPlayer" == c && "undefined" != typeof QQLive && "undefined" != typeof QQLive.DEFINE && (h = "ocxplayerlite");
  3342. var i = g + "module/" + h + ".js?max_age=86400&v=" + a.ts;
  3343. if ("function" == typeof a[c]) f.resolve();
  3344. else {
  3345. var j = new a.RetCode(100123),
  3346. k = b.now();
  3347. j.begin(), d(1), b.getScript(i, function() {
  3348. var e = b.now() - k;
  3349. if ("function" != typeof a[c]) throw j.reportErr(11), d(2, 11, e), new Error(errMsg[1]);
  3350. d(2, 0, e), j.reportSuc(), f.resolve()
  3351. })
  3352. }
  3353. return f
  3354. }
  3355. function e(a) {
  3356. return "string" == b.type(a) && /html5|mp4/i.test(a)
  3357. }
  3358. var f = b.now();
  3359. "true" == b.getUrlParam("__tvpdebug__", window != top ? top.location.href : "") && b.getScript("http://weinre.qq.com/target/target-script.js#__tvpdebug__");
  3360. var g = function(c, f) {
  3361. function h() {
  3362. var a = b.Deferred();
  3363. switch (r.playerType) {
  3364. case "flash":
  3365. t = "FlashPlayer";
  3366. break;
  3367. case "html5":
  3368. m();
  3369. break;
  3370. case "ocx":
  3371. t = "OcxPlayer";
  3372. break;
  3373. case "mp4":
  3374. t = "MP4Link";
  3375. break;
  3376. default:
  3377. i()
  3378. }
  3379. return a.resolve(), a
  3380. }
  3381. function i() {
  3382. var b = navigator.platform.toLowerCase(),
  3383. c = navigator.userAgent.toLowerCase(),
  3384. d = /ipad|ipod|iphone|lepad_hls|IEMobile|WPDesktop/gi.test(c),
  3385. e = /ipad|ipod|iphone|linux/gi.test(b);
  3386. return a.common.isEnforceMP4() ? void(t = "MP4Link") : d || e || a.$.os.android ? void(a.common.isSupportMP4() || a.common.isInUseH5() ? m() : t = "MP4Link") : void(t = "FlashPlayer")
  3387. }
  3388. function j(c) {
  3389. if (c.getChannelId()) {
  3390. var d = c.getChannelId();
  3391. if ("object" == b.type(s[d]) && b.isFunction(s[d].done)) return s[d];
  3392. s[d] = b.Deferred();
  3393. var e = new a.livehub.FlashChecker(r),
  3394. f = !0;
  3395. return e.cnlId = c.getChannelId(), e.extParam = c.getChannelExtParam(), e.onGetCnlId = function(a, b) {
  3396. c.setChannelId(a), c.setIsLookBack(!!b)
  3397. }, e.onCanFlash = function() {
  3398. t = "FlashLivePlayer"
  3399. }, e.onCanHTML5 = function() {
  3400. n()
  3401. }, e.onCanOCX = function() {
  3402. t = "OcxPlayer"
  3403. }, e.onError = function() {
  3404. k(), f = !1
  3405. }, e.onComplete = function() {
  3406. l(), f ? s[d].resolve() : s[d].reject()
  3407. }, e.send(), s[d]
  3408. }
  3409. }
  3410. function k() {
  3411. a.common.isLiveUseHTML5() ? n() : t = b.os.android ? "FlashLivePlayer" : "OcxPlayer"
  3412. }
  3413. function l() {
  3414. switch (r.playerType) {
  3415. case "flash":
  3416. t = "FlashLive";
  3417. break;
  3418. case "html5":
  3419. n();
  3420. break;
  3421. case "flashLive":
  3422. t = "FlashLivePlayer";
  3423. break;
  3424. case "ocx":
  3425. t = "OcxPlayer"
  3426. }
  3427. }
  3428. function m() {
  3429. x = !0, t = r.isHtml5UseUI ? "Html5Player" : "Html5Tiny"
  3430. }
  3431. function n() {
  3432. t = r.isHtml5UseUI ? "Html5Live" : "Html5LiveTiny"
  3433. }
  3434. function o(a) {
  3435. for (var b = !1, c = document.getElementsByTagName("link") || [], d = 0, e = c.length; e > d && !(b = c[d] && c[d].href && (0 == c[d].href.indexOf(a) || -1 != c[d].href.indexOf("player_inews.css")));) d++;
  3436. return b
  3437. }
  3438. function p() {
  3439. function d() {
  3440. if (!g) {
  3441. g = !0;
  3442. var b = new a[t];
  3443. b.init(c), q.resolve(b, t)
  3444. }
  3445. }
  3446. var f = null,
  3447. g = !1,
  3448. h = b.inArray(t, w),
  3449. i = r.cssPath + (c.HTML5CSSName || "player.css");
  3450. (h > -1 && b.isString(c.HTML5CSSName) && c.HTML5CSSName.length > 0 || e(t)) && !o(i) ? (f = setTimeout(function() {
  3451. c.isHtml5UseUI = !1, t = y[h], d()
  3452. }, 5e3), i += -1 === i.indexOf("?") ? "?t=" + a.ts : "&t=" + a.ts, b.loadCss(i).done(function() {
  3453. clearTimeout(f), f = null, d()
  3454. })) : d()
  3455. }
  3456. var q = b.Deferred(),
  3457. r = {},
  3458. s = {},
  3459. t = "FlashPlayer",
  3460. u = ["\u672a\u6307\u660e\u64ad\u653e\u5668\u5185\u6838", "\u60a8\u5f53\u524d\u4f7f\u7528\u7684\u7edf\u4e00\u64ad\u653e\u5668JS\u6587\u4ef6\u4e0d\u5305\u542b\u6307\u5b9a\u7684\u64ad\u653e\u5668\u5185\u6838", "video\u672a\u521d\u59cb\u5316"],
  3461. v = ["FlashPlayer", "FlashLivePlayer", "MP4Link", "OcxPlayer"],
  3462. w = ["Html5Player", "Html5Live"],
  3463. x = !1,
  3464. y = ["Html5Tiny", "Html5LiveTiny"];
  3465. if (v = v.concat(w), v = v.concat(y), b.extend(r, c), b.isUndefined(c.isHTML5UseUI) || (r.isHtml5UseUI = c.isHTML5UseUI), !c.video instanceof a.VideoInfo) throw new Error(u[2]);
  3466. return c.video.setCurPlayer(f), g.checkLivePlayer = j, b.when(c.type == a.PLAYER_DEFINE.VOD ? h() : j(c.video)).then(function() {
  3467. var e = "",
  3468. g = function(b, d, f) {
  3469. a.report({
  3470. cmd: 3531,
  3471. val: b,
  3472. val2: d || 0,
  3473. str3: e,
  3474. speed: f || 0,
  3475. contentId: c.contentId || "",
  3476. appId: c.appid || 0
  3477. })
  3478. };
  3479. if (!t) throw new Error(u[0]);
  3480. if (b.inArray(t, v) < 0) throw new Error(u[1]);
  3481. c.type == a.PLAYER_DEFINE.VOD && x && f && f.trigger && f.trigger(a.ACTION.onVodH5Init), "function" != typeof a[t] ? d(t, g).done(function() {
  3482. p.call(f)
  3483. }) : p.call(f)
  3484. }), q
  3485. },
  3486. h = {
  3487. player: "playerType",
  3488. showcfg: ["isVodFlashShowCfg", "isLiveFlashShowCfg"],
  3489. searchbar: ["isVodFlashShowSearchBar"],
  3490. showend: ["isVodFlashShowEnd"],
  3491. tpid: ["typeId"],
  3492. cid: ["coverId"],
  3493. flashshownext: ["isVodFlashShowNextBtn"],
  3494. loadingswf: "loadingswf",
  3495. wmode: "flashWmode",
  3496. flashskin: ["vodFlashSkin"],
  3497. extvars: ["vodFlashExtVars"],
  3498. swftype: ["vodFlashType"],
  3499. swfurl: ["vodFlashUrl", "liveFlashUrl"]
  3500. };
  3501. a.Player = function(d, e) {
  3502. this.sessionId = b.createGUID(), c(1, this.sessionId), this.instance = null, this.config = {}, this._oldcfg = {}, b.extend(this.config, a.defaultConfig), this.setting("width", d), this.setting("height", e)
  3503. }, a.Player.fn = a.Player.prototype = new a.BasePlayer, b.extend(a.Player.fn, {
  3504. setting: function(a, b) {
  3505. this.config[a] = b
  3506. },
  3507. output: function(a) {
  3508. this.setting("modId", a), this.create(this.config)
  3509. },
  3510. create: function(d) {
  3511. var e = this;
  3512. b.extend(e.config, d), c(2, this.sessionId, {
  3513. contentId: e.config.contentId || "",
  3514. appId: e.config.appid || 0
  3515. }), g(e.config, e).done(function(f, h) {
  3516. try {
  3517. c(3, e.sessionId, {
  3518. vid: f.curVideo.getFullVid() || f.curVideo.getChannelId(),
  3519. str3: f.getPlayerType(),
  3520. contentId: e.config.contentId || "",
  3521. appId: e.config.appid || 0
  3522. })
  3523. } catch (i) {}
  3524. e.instance = f, e.instance.instance = e;
  3525. for (var j in e.instance) "instance" != j && ("on" == j.substr(0, 2) && b.isFunction(e[j]) && e[j] != a.$.noop || (e[j] = e.instance[j]));
  3526. f.callCBEvent("onwrite"), e.config.type == a.PLAYER_DEFINE.LIVE && (e.play = function(c) {
  3527. b.isString(c) ? (e.config.video.setChannelId(c), c = e.config.video) : c instanceof a.VideoInfo && b.when(g.checkLivePlayer(c)).then(function() {
  3528. e.instance instanceof a[h] ? e.instance.play(c) : (d.video = c, g(d))
  3529. })
  3530. }), a.Player.instance[e.playerid] = e
  3531. }).always(function() {
  3532. function c(a, c) {
  3533. try {
  3534. var d = "build" + a;
  3535. return b.isFunction(e[d]) ? (e[d].call(e, c), !0) : !1
  3536. } catch (f) {}
  3537. }
  3538. if (b.each(e.config.plugins, function(a, d) {
  3539. if (d && a in e.config.pluginUrl) {
  3540. var f = b.isPlainObject(d) ? d : {};
  3541. if (!c(a, f)) {
  3542. var g = e.config.libpath + e.config.pluginUrl[a];
  3543. b.isString(g) && "" != b.trim(g) && b.getScript(g, function() {
  3544. c(a, f)
  3545. })
  3546. }
  3547. }
  3548. }), window.console && _isUseInnerZepto) {
  3549. var d = {
  3550. jQuery: "jq",
  3551. Zepto: "zepto",
  3552. jq: "jqmobi"
  3553. };
  3554. for (var f in d)
  3555. if ("function" == typeof window[f]) {
  3556. if ("jQuery" === f && "function" != typeof jQuery.Deferred) break;
  3557. console.warn("\n" + a.name + "\u63d0\u793a\uff1a\n\u60a8\u5f53\u524d\u9875\u9762\u4f7f\u7528\u4e86" + f + "\n\u5efa\u8bae\u60a8\u5f15\u7528" + a.name + " for " + f + "\u4e13\u7528\u7248\uff0c\u66f4\u8f7b\u66f4\u5feb\u66f4\u7cbe\u7b80\nJS\u5730\u5740:http://imgcache.gtimg.cn/tencentvideo_v1/tvp/js/tvp.player_v2_" + d[f] + ".js\n\n")
  3558. }
  3559. }
  3560. })
  3561. },
  3562. addParam: function(c, d) {
  3563. a.report({
  3564. cmd: 3546,
  3565. val: 1
  3566. }), "config" == c && "object" == b.type(d) ? b.extend(this.config, d) : this._oldcfg[c] = d
  3567. },
  3568. setCurVideo: function(b) {
  3569. a.report({
  3570. cmd: 3546,
  3571. val: 2
  3572. }), this.config.video = b, b && b instanceof a.VideoInfo && b.setCurPlayer(this)
  3573. },
  3574. write: function(c) {
  3575. a.report({
  3576. cmd: 3546,
  3577. val: 3
  3578. }), this.config.modId = c;
  3579. var d = 1 == this._oldcfg.type ? 1 : 2,
  3580. e = this;
  3581. b.each(this._oldcfg, function(c, f) {
  3582. c in h ? b.isArray(h[c]) ? 2 == d ? e.config[h[c][0]] = f : 1 == d && h[c].length >= 2 && (e.config[h[c][1]] = f) : b.isString(h[c]) && (e.config[h[c]] = f) : c in a.defaultConfig && (e.config[c] = f)
  3583. }), delete this._oldcfg, this.create(this.config)
  3584. }
  3585. }), a.create = g
  3586. }(tvp, tvp.$), tvp.Player.instance = {}, tvp.filename = "tvp.player_v2.js", "function" == typeof define && define("tvp", [], function() {
  3587. return tvp
  3588. }), global.tvp = tvp, "undefined" != typeof QQLive && (global.QQLive = QQLive)
  3589. }(this); /* |xGv00|0aa9a6e9b2e22999a0ebc0011c69abcc */