/*
DC-publisher="Navigation Arts"
DC-creator="David Vespoli"
DC-title="Global javascript for maac.net"
DC-type="javascript"
DC-date="2011-01"
DC-updated="2011-02"
DC-source="NavArts Development"
DC-relation="Requires jQuery 1.4.4"
DC-coverage="MAAC map and component interaction"
<link rel="schema.DC" href="http://dublincore.org/documents/dces/" />
*/

/******PLUGINS********/

// AD-gallery Version: 1.2.4 - Demo and documentation: http://coffeescripter.com/code/ad-gallery/ 
(function ($) { eval(function (p, a, c, k, e, r) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] } ]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p } ('(8($){$.3n.3o=8(b){5 c={2s:\'Z.3p\',1W:0,1X:q,11:0.7,2t:q,1b:3q,v:q,x:q,2u:B,2v:B,1Y:0,t:{1c:B,1Z:q,1d:3r,2w:\'3s\',2x:\'3t\',20:B,2y:\'(\',2z:\')\',2A:q,2B:q},2C:\'21-2D\',2E:B,1z:B,1A:{1e:q,2F:q,2G:q}};5 d=$.2H(q,c,b);4(b&&b.t){d.t=$.2H(q,c.t,b.t)};4(!d.t.1c){d.t.1Z=q};5 e=[];$(3).2I(8(){5 a=1B 22(3,d);e[e.J]=a});w e};8 2J(a,b,c){5 d=12(a.u(\'Q\'),10);4(b==\'C\'){5 e=\'-\'+3.D+\'z\';a.u(\'Q\',3.D+\'z\')}y{5 e=3.D+\'z\';a.u(\'Q\',\'-\'+3.D+\'z\')};4(c){c.u(\'1f\',\'-\'+c[0].1C+\'z\');c.13({1f:0},3.r.1b*2)};4(3.R){3.R.13({1f:\'-\'+3.R[0].1C+\'z\'},3.r.1b*2)};w{1g:{Q:e},1h:{Q:d}}};8 2K(a,b,c){5 d=12(a.u(\'C\'),10);4(b==\'C\'){5 e=\'-\'+3.K+\'z\';a.u(\'C\',3.K+\'z\')}y{5 e=3.K+\'z\';a.u(\'C\',\'-\'+3.K+\'z\')};4(c){c.u(\'1f\',\'-\'+c[0].1C+\'z\');c.13({1f:0},3.r.1b*2)};4(3.R){3.R.13({1f:\'-\'+3.R[0].1C+\'z\'},3.r.1b*2)};w{1g:{C:e},1h:{C:d}}};8 2L(a,b,c){5 d=a.v();5 e=a.x();5 f=12(a.u(\'C\'),10);5 g=12(a.u(\'Q\'),10);a.u({v:0,x:0,Q:3.D/2,C:3.K/2});w{1g:{v:0,x:0,Q:3.D/2,C:3.K/2},1h:{v:d,x:e,Q:g,C:f}}};8 2M(a,b,c){a.u(\'S\',0);w{1g:{S:0},1h:{S:1}}};8 2N(a,b,c){a.u(\'S\',0);w{1g:{S:0},1h:{S:1},1d:0}};8 22(a,b){3.1e(a,b)};22.2O={17:q,T:q,1D:q,V:q,Z:q,1r:q,N:q,1E:q,1F:q,1i:q,1j:q,t:q,K:0,D:0,O:0,18:q,R:q,1G:0,r:q,G:q,1k:q,1H:q,1e:8(b,c){5 d=3;3.17=$(b);3.r=c;3.2P();3.2Q();4(3.r.v){3.K=3.r.v;3.T.v(3.r.v);3.17.v(3.r.v)}y{3.K=3.T.v()};4(3.r.x){3.D=3.r.x;3.T.x(3.r.x)}y{3.D=3.T.x()};3.1G=3.V.v();3.O=0;3.18=q;3.R=q;3.1k=q;3.2R();4(3.r.2u){3.2S()};5 e=8(a){w d.1I(a)};3.t=1B 23(e,3.r.t);3.L.F(3.t.2T());4(3.r.t.1c){3.t.1c()}y{3.t.24()};4(3.r.2v){3.2U()};4(3.r.2E){3.2V()};5 f=12(3.r.1W,10);4(25.26.27&&25.26.27.3u(\'#s-W\')===0){f=25.26.27.2W(/[^0-9]+/g,\'\');4((f*1)!=f){f=3.r.1W}};3.1J(B);3.1s(f,8(){4(d.r.t.1Z){d.14(f+1);d.t.1t()}});3.P(3.r.1A.1e)},2Q:8(){3.1H={\'21-3v\':2J,\'21-2D\':2K,\'3w\':2L,\'3x\':2M,\'3y\':2N}},2P:8(){3.L=3.17.E(\'.s-L\');3.1D=$(\'<p H="s-3z"></p>\');3.L.F(3.1D);3.T=3.17.E(\'.s-W-17\');3.T.3A();3.V=3.17.E(\'.s-V\');3.N=3.V.E(\'.s-3B\');3.1r=$(\'<A H="s-1r"></A>\');3.Z=$(\'<19 H="s-Z" 1K="\'+3.r.2s+\'">\');3.T.F(3.Z);3.Z.15();$(1L.3C).F(3.1r)},1J:8(a){4(a){3.Z.1l()}y{3.Z.15()}},3D:8(a,b){4($.28(b)){3.1H[a]=b}},2R:8(){5 f=3;3.G=[];5 g=0;5 h=0;5 j=3.N.E(\'a\');5 k=j.J;4(3.r.11<1){j.E(\'19\').u(\'S\',3.r.11)};j.2I(8(i){5 a=$(3);5 b=a.I(\'2X\');5 c=a.E(\'19\');4(!f.29(c[0])){c.2Y(8(){g+=3.1u.1u.2a;h++})}y{g+=c[0].1u.1u.2a;h++};a.1M(\'s-1N\'+i);a.1v(8(){f.1s(i);f.t.M();w q}).2Z(8(){4(!$(3).1w(\'.s-1m\')&&f.r.11<1){$(3).E(\'19\').1O(1P,1)};f.14(i)},8(){4(!$(3).1w(\'.s-1m\')&&f.r.11<1){$(3).E(\'19\').1O(1P,f.r.11)}});5 a=q;4(c.1n(\'s-1x\')){a=c.1n(\'s-1x\')}y 4(c.I(\'2b\')&&c.I(\'2b\').J){a=c.I(\'2b\')};5 d=q;4(c.1n(\'s-1o\')){d=c.1n(\'s-1o\')}y 4(c.I(\'2c\')&&c.I(\'2c\').J){d=c.I(\'2c\')};5 e=q;4(c.1n(\'s-U\')){e=c.1n(\'s-U\')}y 4(c.I(\'U\')&&c.I(\'U\').J){e=c.I(\'U\')};f.G[i]={1N:c.I(\'1K\'),W:b,2d:q,1p:q,1o:d,U:e,1q:q,1x:a}});5 l=2e(8(){4(k==h){f.V.E(\'.s-1N-3E\').u(\'v\',g+\'z\');1Q(l)}},3F)},2V:8(){5 a=3;$(1L).31(8(e){4(e.2f==39){a.1I();a.t.M()}y 4(e.2f==37){a.2g();a.t.M()}})},2S:8(){3.1i=$(\'<A H="s-2h"><A H="s-2h-W"></A></A>\');3.1j=$(\'<A H="s-32"><A H="s-32-W"></A></A>\');3.T.F(3.1i);3.T.F(3.1j);5 a=3;3.1j.33(3.1i).3G(8(e){$(3).u(\'x\',a.D);$(3).E(\'A\').1l()}).3H(8(e){$(3).E(\'A\').15()}).1v(8(){4($(3).1w(\'.s-2h\')){a.1I();a.t.M()}y{a.2g();a.t.M()}}).E(\'A\').u(\'S\',0.7)},2U:8(){5 c=3;3.1F=$(\'<A H="s-2i"></A>\');3.1E=$(\'<A H="s-3I"></A>\');3.V.F(3.1F);3.V.34(3.1E);5 d=0;5 e=q;$(3.1E).33(3.1F).1v(8(){5 a=c.1G-3J;4(c.r.1Y>0){5 a=c.r.1Y};4($(3).1w(\'.s-2i\')){5 b=c.N.1a()+a}y{5 b=c.N.1a()-a};4(c.r.t.20){c.t.M()};c.N.13({1a:b+\'z\'});w q}).u(\'S\',0.6).2Z(8(){5 b=\'C\';4($(3).1w(\'.s-2i\')){b=\'2j\'};e=2e(8(){d++;4(d>30&&c.r.t.20){c.t.M()};5 a=c.N.1a()+1;4(b==\'C\'){a=c.N.1a()-1};c.N.1a(a)},10);$(3).u(\'S\',1)},8(){d=0;1Q(e);$(3).u(\'S\',0.6)})},2k:8(){3.1D.2l((3.O+1)+\' / \'+3.G.J);4(!3.r.1z){3.1j.1l().u(\'x\',3.D);3.1i.1l().u(\'x\',3.D);4(3.O==(3.G.J-1)){3.1i.15()};4(3.O==0){3.1j.15()}};3.P(3.r.1A.2F)},35:8(a,b){4(b>3.D){5 c=a/b;b=3.D;a=3.D*c};4(a>3.K){5 c=b/a;a=3.K;b=3.K*c};w{v:a,x:b}},36:8(a,b,c){a.u(\'Q\',\'38\');4(c<3.D){5 d=3.D-c;a.u(\'Q\',(d/2)+\'z\')};a.u(\'C\',\'38\');4(b<3.K){5 d=3.K-b;a.u(\'C\',(d/2)+\'z\')}},3a:8(a){5 b=q;4(a.1o.J||a.U.J){5 c=\'\';4(a.U.J){c=\'<3b H="s-3c-U">\'+a.U+\'</3b>\'};5 b=\'\';4(a.1o.J){b=\'<16>\'+a.1o+\'</16>\'};b=$(\'<p H="s-W-3c">\'+c+b+\'</p>\')};w b},1s:8(a,b){4(3.G[a]&&!3.1k){5 c=3;5 d=3.G[a];3.1k=B;4(!d.1p){3.1J(B);3.14(a,8(){c.1J(q);c.2m(a,b)})}y{3.2m(a,b)}}},2m:8(a,b){4(3.G[a]){5 c=3;5 d=3.G[a];5 e=$(1L.3K(\'A\')).1M(\'s-W\');5 f=$(1B 3d()).I(\'1K\',d.W);4(d.1x){5 g=$(\'<a 2X="\'+d.1x+\'" 3L="3M"></a>\');g.F(f);e.F(g)}y{e.F(f)}3.T.34(e);5 h=3.35(d.1q.v,d.1q.x);f.I(\'v\',h.v);f.I(\'x\',h.x);e.u({v:h.v+\'z\',x:h.x+\'z\'});3.36(e,h.v,h.x);5 i=3.3a(d,e);4(i){4(!3.r.1X){e.F(i);5 j=h.v-12(i.u(\'3e-C\'),10)-12(i.u(\'3e-2j\'),10);i.u(\'v\',j+\'z\')}y{3.r.1X.F(i)}};3.3f(3.V.E(\'.s-1N\'+a));5 k=\'2j\';4(3.O<a){k=\'C\'};3.P(3.r.1A.2G);4(3.18||3.r.2t){5 l=3.r.1b;5 m=\'3N\';5 n=3.1H[3.r.2C].2n(3,e,k,i);4(1R n.1d!=\'1S\'){l=n.1d};4(1R n.3g!=\'1S\'){m=n.3g};4(3.18){5 o=3.18;5 p=3.R;o.13(n.1g,l,m,8(){o.3h();4(p)p.3h()})};e.13(n.1h,l,m,8(){c.O=a;c.18=e;c.R=i;c.1k=q;c.2k();c.P(b)})}y{3.O=a;3.18=e;c.R=i;3.1k=q;c.2k();3.P(b)}}},3i:8(){4(3.O==(3.G.J-1)){4(!3.r.1z){w q};5 a=0}y{5 a=3.O+1};w a},1I:8(a){5 b=3.3i();4(b===q)w q;3.14(b+1);3.1s(b,a);w B},3j:8(){4(3.O==0){4(!3.r.1z){w q};5 a=3.G.J-1}y{5 a=3.O-1};w a},2g:8(a){5 b=3.3j();4(b===q)w q;3.14(b-1);3.1s(b,a);w B},3O:8(){5 a=3;5 i=0;8 2o(){4(i<a.G.J){i++;a.14(i,2o)}};a.14(i,2o)},14:8(a,b){4(3.G[a]){5 c=3.G[a];4(!3.G[a].1p){5 d=$(1B 3d());d.I(\'1K\',c.W);4(!3.29(d[0])){3.1r.F(d);5 e=3;d.2Y(8(){c.1p=B;c.1q={v:3.v,x:3.x};e.P(b)}).2d(8(){c.2d=B;c.1p=q;c.1q=q})}y{c.1p=B;c.1q={v:d[0].v,x:d[0].x};3.P(b)}}y{3.P(b)}}},29:8(a){4(1R a.3k!=\'1S\'&&!a.3k){w q};4(1R a.3l!=\'1S\'&&a.3l==0){w q};w B},3f:8(a){3.N.E(\'.s-1m\').3m(\'s-1m\');a.1M(\'s-1m\');4(3.r.11<1){3.N.E(\'a:3P(.s-1m) 19\').1O(1P,3.r.11);a.E(\'19\').1O(1P,1)};5 b=a[0].1u.3Q;b-=(3.1G/2)-(a[0].2a/2);3.N.13({1a:b+\'z\'})},P:8(a){4($.28(a)){a.2n(3)}}};8 23(a,b){3.1e(a,b)};23.2O={1T:q,1U:q,X:q,L:q,r:q,2p:q,1y:q,Y:q,1V:q,1e:8(a,b){5 c=3;3.2p=a;3.r=b},2T:8(){3.1T=$(\'<16 H="s-t-1t">\'+3.r.2w+\'</16>\');3.1U=$(\'<16 H="s-t-M">\'+3.r.2x+\'</16>\');3.X=$(\'<16 H="s-t-X"></16>\');3.L=$(\'<A H="s-t-L"></A>\');3.L.F(3.1T).F(3.1U).F(3.X);3.X.15();5 a=3;3.1T.1v(8(){a.1t()});3.1U.1v(8(){a.M()});$(1L).31(8(e){4(e.2f==3R){4(a.Y){a.M()}y{a.1t()}}});w 3.L},24:8(){3.1y=q;3.M();3.L.15()},1c:8(){3.1y=B;3.L.1l()},3S:8(){4(3.1y){3.24()}y{3.1c()}},1t:8(){4(3.Y||!3.1y)w q;5 a=3;3.Y=B;3.L.1M(\'s-t-Y\');3.2q();3.P(3.r.2A);w B},M:8(){4(!3.Y)w q;3.Y=q;3.X.15();3.L.3m(\'s-t-Y\');1Q(3.1V);3.P(3.r.2B);w B},2q:8(){5 c=3;5 d=3.r.2y;5 e=3.r.2z;1Q(c.1V);3.X.1l().2l(d+(3.r.1d/2r)+e);5 f=0;3.1V=2e(8(){f+=2r;4(f>=c.r.1d){5 a=8(){4(c.Y){c.2q()};f=0};4(!c.2p(a)){c.M()};f=0};5 b=12(c.X.3T().2W(/[^0-9]/g,\'\'),10);b--;4(b>0){c.X.2l(d+b+e)}},2r)},P:8(a){4($.28(a)){a.2n(3)}}}})(3U);', 62, 243, '|||this|if|var|||function||||||||||||||||||false|settings|ad|slideshow|css|width|return|height|else|px|div|true|left|image_wrapper_height|find|append|images|class|attr|length|image_wrapper_width|controls|stop|thumbs_wrapper|current_index|fireCallback|top|current_description|opacity|image_wrapper|title|nav|image|countdown|running|loader||thumb_opacity|parseInt|animate|preloadImage|hide|span|wrapper|current_image|img|scrollLeft|animation_speed|enable|speed|init|bottom|old_image|new_image|next_link|prev_link|in_transition|show|active|data|desc|preloaded|size|preloads|showImage|start|parentNode|click|is|link|enabled|cycle|callbacks|new|offsetHeight|gallery_info|scroll_back|scroll_forward|nav_display_width|animations|nextImage|loading|src|document|addClass|thumb|fadeTo|300|clearInterval|typeof|undefined|start_link|stop_link|countdown_interval|start_at_index|description_wrapper|scroll_jump|autostart|stop_on_scroll|slide|AdGallery|AdGallerySlideshow|disable|window|location|hash|isFunction|isImageLoaded|offsetWidth|longdesc|alt|error|setInterval|keyCode|prevImage|next|forward|right|_afterShow|html|_showWhenLoaded|call|preloadNext|nextimage_callback|_next|1000|loader_image|animate_first_image|display_next_and_prev|display_back_and_forward|start_label|stop_label|countdown_prefix|countdown_sufix|onStart|onStop|effect|hori|enable_keyboard_move|afterImageVisible|beforeImageVisible|extend|each|VerticalSlideAnimation|HorizontalSlideAnimation|ResizeAnimation|FadeAnimation|NoneAnimation|prototype|setupElements|setupAnimations|findImages|initNextAndPrev|create|initBackAndForward|initKeyEvents|replace|href|load|hover||keydown|prev|add|prepend|_getContainedImageSize|_centerImage||0px||_getDescription|strong|description|Image|padding|highLightThumb|easing|remove|nextIndex|prevIndex|complete|naturalWidth|removeClass|fn|adGallery|gif|400|5000|Start|Stop|indexOf|vert|resize|fade|none|info|empty|thumbs|body|addAnimation|list|100|mouseover|mouseout|back|50|createElement|target|_blank|swing|preloadAll|not|offsetLeft|83|toggle|text|jQuery'.split('|'), 0, {})) })(this.jQuery);

//Cookie plugin packed and mapped -- http://plugins.jquery.com/files/issues/jjquery.cookie-modified.js_.txt
(function ($) { eval(function (p, a, c, k, e, d) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) { d[e(c)] = k[c] || e(c) } k = [function (e) { return d[e] } ]; e = function () { return '\\w+' }; c = 1 }; while (c--) { if (k[c]) { p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]) } } return p } ('k.6=H(3,9,2){7(c 9!=\'E\'||(3&&c 3!=\'s\')){7(c 3==\'s\'){2=2||{};7(9===I){9=\'\';2.5=-1}4 5=\'\';7(2.5&&(c 2.5==\'t\'||2.5.r)){4 8;7(c 2.5==\'t\'){8=w x();8.v(8.z()+(2.5*u*o*o*y))}g{8=2.5}5=\'; 5=\'+8.r()}4 b=2.b?\'; b=\'+(2.b):\'\';4 a=2.a?\'; a=\'+(2.a):\'\';4 e=2.e?\'; e\':\'\';h.6=3+\'=\'+A(9)+5+b+a+e}g{q(4 n F 3){k.6(n,3[n],9||2)}}}g{4 d={};7(h.6){4 m=h.6.D(\';\');q(4 i=0;i<m.l;i++){4 6=k.C(m[i]);7(!3){4 j=6.G(\'=\');d[6.f(0,j)]=p(6.f(j+1))}g 7(6.f(0,3.l+1)==(3+\'=\')){d=p(6.f(3.l+1));J}}}B d}};', 46, 46, '||options|name|var|expires|cookie|if|date|value|domain|path|typeof|returnValue|secure|substr|else|document||nameLength|jQuery|length|cookies||60|decodeURIComponent|for|toUTCString|string|number|24|setTime|new|Date|1000|getTime|encodeURIComponent|return|trim|split|undefined|in|indexOf|function|null|break'.split('|'), 0, {})) })(this.jQuery);

//swfobject.js
if (typeof deconcept == "undefined") { var deconcept = new Object(); } if (typeof deconcept.util == "undefined") { deconcept.util = new Object(); } if (typeof deconcept.SWFObjectUtil == "undefined") { deconcept.SWFObjectUtil = new Object(); } deconcept.SWFObject = function (_1, id, w, h, _5, c, _7, _8, _9, _a) { if (!document.getElementById) { return; } this.DETECT_KEY = _a ? _a : "detectflash"; this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY); this.params = new Object(); this.variables = new Object(); this.attributes = new Array(); if (_1) { this.setAttribute("swf", _1); } if (id) { this.setAttribute("id", id); } if (w) { this.setAttribute("width", w); } if (h) { this.setAttribute("height", h); } if (_5) { this.setAttribute("version", new deconcept.PlayerVersion(_5.toString().split("."))); } this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion(); if (!window.opera && document.all && this.installedVer.major > 7) { deconcept.SWFObject.doPrepUnload = true; } if (c) { this.addParam("bgcolor", c); } var q = _7 ? _7 : "high"; this.addParam("quality", q); this.setAttribute("useExpressInstall", false); this.setAttribute("doExpressInstall", false); var _c = (_8) ? _8 : window.location; this.setAttribute("xiRedirectUrl", _c); this.setAttribute("redirectUrl", ""); if (_9) { this.setAttribute("redirectUrl", _9); } }; deconcept.SWFObject.prototype = { useExpressInstall: function (_d) { this.xiSWFPath = !_d ? "expressinstall.swf" : _d; this.setAttribute("useExpressInstall", true); }, setAttribute: function (_e, _f) { this.attributes[_e] = _f; }, getAttribute: function (_10) { return this.attributes[_10]; }, addParam: function (_11, _12) { this.params[_11] = _12; }, getParams: function () { return this.params; }, addVariable: function (_13, _14) { this.variables[_13] = _14; }, getVariable: function (_15) { return this.variables[_15]; }, getVariables: function () { return this.variables; }, getVariablePairs: function () { var _16 = new Array(); var key; var _18 = this.getVariables(); for (key in _18) { _16[_16.length] = key + "=" + _18[key]; } return _16; }, getSWFHTML: function () { var _19 = ""; if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "PlugIn"); this.setAttribute("swf", this.xiSWFPath); } _19 = "<embed type=\"application/x-shockwave-flash\" src=\"" + this.getAttribute("swf") + "\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\""; _19 += " id=\"" + this.getAttribute("id") + "\" name=\"" + this.getAttribute("id") + "\" "; var _1a = this.getParams(); for (var key in _1a) { _19 += [key] + "=\"" + _1a[key] + "\" "; } var _1c = this.getVariablePairs().join("&"); if (_1c.length > 0) { _19 += "flashvars=\"" + _1c + "\""; } _19 += "/>"; } else { if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "ActiveX"); this.setAttribute("swf", this.xiSWFPath); } _19 = "<object id=\"" + this.getAttribute("id") + "\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\">"; _19 += "<param name=\"movie\" value=\"" + this.getAttribute("swf") + "\" />"; var _1d = this.getParams(); for (var key in _1d) { _19 += "<param name=\"" + key + "\" value=\"" + _1d[key] + "\" />"; } var _1f = this.getVariablePairs().join("&"); if (_1f.length > 0) { _19 += "<param name=\"flashvars\" value=\"" + _1f + "\" />"; } _19 += "</object>"; } return _19; }, write: function (_20) { if (this.getAttribute("useExpressInstall")) { var _21 = new deconcept.PlayerVersion([6, 0, 65]); if (this.installedVer.versionIsValid(_21) && !this.installedVer.versionIsValid(this.getAttribute("version"))) { this.setAttribute("doExpressInstall", true); this.addVariable("MMredirectURL", escape(this.getAttribute("xiRedirectUrl"))); document.title = document.title.slice(0, 47) + " - Flash Player Installation"; this.addVariable("MMdoctitle", document.title); } } if (this.skipDetect || this.getAttribute("doExpressInstall") || this.installedVer.versionIsValid(this.getAttribute("version"))) { var n = (typeof _20 == "string") ? document.getElementById(_20) : _20; n.innerHTML = this.getSWFHTML(); return true; } else { if (this.getAttribute("redirectUrl") != "") { document.location.replace(this.getAttribute("redirectUrl")); } } return false; } }; deconcept.SWFObjectUtil.getPlayerVersion = function () { var _23 = new deconcept.PlayerVersion([0, 0, 0]); if (navigator.plugins && navigator.mimeTypes.length) { var x = navigator.plugins["Shockwave Flash"]; if (x && x.description) { _23 = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")); } } else { if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0) { var axo = 1; var _26 = 3; while (axo) { try { _26++; axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + _26); _23 = new deconcept.PlayerVersion([_26, 0, 0]); } catch (e) { axo = null; } } } else { try { var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); } catch (e) { try { var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); _23 = new deconcept.PlayerVersion([6, 0, 21]); axo.AllowScriptAccess = "always"; } catch (e) { if (_23.major == 6) { return _23; } } try { axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); } catch (e) { } } if (axo != null) { _23 = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(",")); } } } return _23; }; deconcept.PlayerVersion = function (_29) { this.major = _29[0] != null ? parseInt(_29[0]) : 0; this.minor = _29[1] != null ? parseInt(_29[1]) : 0; this.rev = _29[2] != null ? parseInt(_29[2]) : 0; }; deconcept.PlayerVersion.prototype.versionIsValid = function (fv) { if (this.major < fv.major) { return false; } if (this.major > fv.major) { return true; } if (this.minor < fv.minor) { return false; } if (this.minor > fv.minor) { return true; } if (this.rev < fv.rev) { return false; } return true; }; deconcept.util = { getRequestParameter: function (_2b) { var q = document.location.search || document.location.hash; if (_2b == null) { return q; } if (q) { var _2d = q.substring(1).split("&"); for (var i = 0; i < _2d.length; i++) { if (_2d[i].substring(0, _2d[i].indexOf("=")) == _2b) { return _2d[i].substring((_2d[i].indexOf("=") + 1)); } } } return ""; } }; deconcept.SWFObjectUtil.cleanupSWFs = function () { var _2f = document.getElementsByTagName("OBJECT"); for (var i = _2f.length - 1; i >= 0; i--) { _2f[i].style.display = "none"; for (var x in _2f[i]) { if (typeof _2f[i][x] == "function") { _2f[i][x] = function () { }; } } } }; if (deconcept.SWFObject.doPrepUnload) { if (!deconcept.unloadSet) { deconcept.SWFObjectUtil.prepUnload = function () { __flash_unloadHandler = function () { }; __flash_savedUnloadHandler = function () { }; window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs); }; window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload); deconcept.unloadSet = true; } } if (!document.getElementById && document.all) { document.getElementById = function (id) { return document.all[id]; }; } var getQueryParamValue = deconcept.util.getRequestParameter; var FlashObject = deconcept.SWFObject; var SWFObject = deconcept.SWFObject;

//jwplayer 5.4 - http://www.longtailvideo.com/players/
if (typeof jwplayer == "undefined") { var jwplayer = function (a) { if (jwplayer.api) { return jwplayer.api.selectPlayer(a) } }; var $jw = jwplayer; jwplayer.version = "5.7.1896"; jwplayer.vid = document.createElement("video"); jwplayer.audio = document.createElement("audio"); jwplayer.source = document.createElement("source"); (function (b) { b.utils = function () { }; b.utils.typeOf = function (d) { var c = typeof d; if (c === "object") { if (d) { if (d instanceof Array) { c = "array" } } else { c = "null" } } return c }; b.utils.extend = function () { var c = b.utils.extend["arguments"]; if (c.length > 1) { for (var e = 1; e < c.length; e++) { for (var d in c[e]) { c[0][d] = c[e][d] } } return c[0] } return null }; b.utils.clone = function (f) { var c; var d = b.utils.clone["arguments"]; if (d.length == 1) { switch (b.utils.typeOf(d[0])) { case "object": c = {}; for (var e in d[0]) { c[e] = b.utils.clone(d[0][e]) } break; case "array": c = []; for (var e in d[0]) { c[e] = b.utils.clone(d[0][e]) } break; default: return d[0]; break } } return c }; b.utils.extension = function (c) { if (!c) { return "" } c = c.substring(c.lastIndexOf("/") + 1, c.length); c = c.split("?")[0]; if (c.lastIndexOf(".") > -1) { return c.substr(c.lastIndexOf(".") + 1, c.length).toLowerCase() } return }; b.utils.html = function (c, d) { c.innerHTML = d }; b.utils.wrap = function (c, d) { if (c.parentNode) { c.parentNode.replaceChild(d, c) } d.appendChild(c) }; b.utils.ajax = function (g, f, c) { var e; if (window.XMLHttpRequest) { e = new XMLHttpRequest() } else { e = new ActiveXObject("Microsoft.XMLHTTP") } e.onreadystatechange = function () { if (e.readyState === 4) { if (e.status === 200) { if (f) { f(e) } } else { if (c) { c(g) } } } }; try { e.open("GET", g, true); e.send(null) } catch (d) { if (c) { c(g) } } return e }; b.utils.load = function (d, e, c) { d.onreadystatechange = function () { if (d.readyState === 4) { if (d.status === 200) { if (e) { e() } } else { if (c) { c() } } } } }; b.utils.find = function (d, c) { return d.getElementsByTagName(c) }; b.utils.append = function (c, d) { c.appendChild(d) }; b.utils.isIE = function () { return ((! +"\v1") || (typeof window.ActiveXObject != "undefined")) }; b.utils.isLegacyAndroid = function () { var c = navigator.userAgent.toLowerCase(); return (c.match(/android 2.[012]/i) !== null) }; b.utils.isIOS = function (d) { if (typeof d == "undefined") { d = /iP(hone|ad|od)/i } var c = navigator.userAgent.toLowerCase(); return (c.match(d) !== null) }; b.utils.isIPad = function () { return b.utils.isIOS(/iPad/i) }; b.utils.isIPod = function () { return b.utils.isIOS(/iP(hone|od)/i) }; b.utils.getFirstPlaylistItemFromConfig = function (c) { var d = {}; var e; if (c.playlist && c.playlist.length) { e = c.playlist[0] } else { e = c } d.file = e.file; d.levels = e.levels; d.streamer = e.streamer; d.playlistfile = e.playlistfile; d.provider = e.provider; if (!d.provider) { if (d.file && (d.file.toLowerCase().indexOf("youtube.com") > -1 || d.file.toLowerCase().indexOf("youtu.be") > -1)) { d.provider = "youtube" } if (d.streamer && d.streamer.toLowerCase().indexOf("rtmp://") == 0) { d.provider = "rtmp" } if (e.type) { d.provider = e.type.toLowerCase() } } if (d.provider == "audio") { d.provider = "sound" } return d }; b.utils.getOuterHTML = function (c) { if (c.outerHTML) { return c.outerHTML } else { try { return new XMLSerializer().serializeToString(c) } catch (d) { return "" } } }; b.utils.setOuterHTML = function (f, e) { if (f.outerHTML) { f.outerHTML = e } else { var g = document.createElement("div"); g.innerHTML = e; var c = document.createRange(); c.selectNodeContents(g); var d = c.extractContents(); f.parentNode.insertBefore(d, f); f.parentNode.removeChild(f) } }; b.utils.hasFlash = function () { if (typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] != "undefined") { return true } if (typeof window.ActiveXObject != "undefined") { try { new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); return true } catch (c) { } } return false }; b.utils.getPluginName = function (c) { if (c.lastIndexOf("/") >= 0) { c = c.substring(c.lastIndexOf("/") + 1, c.length) } if (c.lastIndexOf("-") >= 0) { c = c.substring(0, c.lastIndexOf("-")) } if (c.lastIndexOf(".swf") >= 0) { c = c.substring(0, c.lastIndexOf(".swf")) } if (c.lastIndexOf(".js") >= 0) { c = c.substring(0, c.lastIndexOf(".js")) } return c }; b.utils.getPluginVersion = function (c) { if (c.lastIndexOf("-") >= 0) { if (c.lastIndexOf(".js") >= 0) { return c.substring(c.lastIndexOf("-") + 1, c.lastIndexOf(".js")) } else { if (c.lastIndexOf(".swf") >= 0) { return c.substring(c.lastIndexOf("-") + 1, c.lastIndexOf(".swf")) } else { return c.substring(c.lastIndexOf("-") + 1) } } } return "" }; b.utils.getAbsolutePath = function (j, h) { if (!b.utils.exists(h)) { h = document.location.href } if (!b.utils.exists(j)) { return undefined } if (a(j)) { return j } var k = h.substring(0, h.indexOf("://") + 3); var g = h.substring(k.length, h.indexOf("/", k.length + 1)); var d; if (j.indexOf("/") === 0) { d = j.split("/") } else { var e = h.split("?")[0]; e = e.substring(k.length + g.length + 1, e.lastIndexOf("/")); d = e.split("/").concat(j.split("/")) } var c = []; for (var f = 0; f < d.length; f++) { if (!d[f] || !b.utils.exists(d[f]) || d[f] == ".") { continue } else { if (d[f] == "..") { c.pop() } else { c.push(d[f]) } } } return k + g + "/" + c.join("/") }; function a(d) { if (!b.utils.exists(d)) { return } var e = d.indexOf("://"); var c = d.indexOf("?"); return (e > 0 && (c < 0 || (c > e))) } b.utils.pluginPathType = { ABSOLUTE: "ABSOLUTE", RELATIVE: "RELATIVE", CDN: "CDN" }; b.utils.getPluginPathType = function (d) { if (typeof d != "string") { return } d = d.split("?")[0]; var e = d.indexOf("://"); if (e > 0) { return b.utils.pluginPathType.ABSOLUTE } var c = d.indexOf("/"); var f = b.utils.extension(d); if (e < 0 && c < 0 && (!f || !isNaN(f))) { return b.utils.pluginPathType.CDN } return b.utils.pluginPathType.RELATIVE }; b.utils.mapEmpty = function (c) { for (var d in c) { return false } return true }; b.utils.mapLength = function (d) { var c = 0; for (var e in d) { c++ } return c }; b.utils.log = function (d, c) { if (typeof console != "undefined" && typeof console.log != "undefined") { if (c) { console.log(d, c) } else { console.log(d) } } }; b.utils.css = function (d, g, c) { if (b.utils.exists(d)) { for (var e in g) { try { if (typeof g[e] === "undefined") { continue } else { if (typeof g[e] == "number" && !(e == "zIndex" || e == "opacity")) { if (isNaN(g[e])) { continue } if (e.match(/color/i)) { g[e] = "#" + b.utils.strings.pad(g[e].toString(16), 6) } else { g[e] = Math.ceil(g[e]) + "px" } } } d.style[e] = g[e] } catch (f) { } } } }; b.utils.isYouTube = function (c) { return (c.indexOf("youtube.com") > -1 || c.indexOf("youtu.be") > -1) }; b.utils.transform = function (c, d) { c.style.webkitTransform = d; c.style.MozTransform = d; c.style.OTransform = d }; b.utils.stretch = function (h, n, m, f, l, g) { if (typeof m == "undefined" || typeof f == "undefined" || typeof l == "undefined" || typeof g == "undefined") { return } var d = m / l; var e = f / g; var k = 0; var j = 0; n.style.overflow = "hidden"; b.utils.transform(n, ""); var c = {}; switch (h.toUpperCase()) { case b.utils.stretching.NONE: c.width = l; c.height = g; break; case b.utils.stretching.UNIFORM: if (d > e) { c.width = l * e; c.height = g * e } else { c.width = l * d; c.height = g * d } break; case b.utils.stretching.FILL: if (d > e) { c.width = l * d; c.height = g * d } else { c.width = l * e; c.height = g * e } break; case b.utils.stretching.EXACTFIT: b.utils.transform(n, ["scale(", d, ",", e, ")", " translate(0px,0px)"].join("")); c.width = l; c.height = g; break; default: break } c.top = (f - c.height) / 2; c.left = (m - c.width) / 2; b.utils.css(n, c) }; b.utils.stretching = { NONE: "NONE", FILL: "FILL", UNIFORM: "UNIFORM", EXACTFIT: "EXACTFIT" }; b.utils.deepReplaceKeyName = function (h, e, c) { switch (b.utils.typeOf(h)) { case "array": for (var g = 0; g < h.length; g++) { h[g] = b.utils.deepReplaceKeyName(h[g], e, c) } break; case "object": for (var f in h) { var d = f.replace(new RegExp(e, "g"), c); h[d] = b.utils.deepReplaceKeyName(h[f], e, c); if (f != d) { delete h[f] } } break } return h }; b.utils.isInArray = function (e, d) { if (!(e) || !(e instanceof Array)) { return false } for (var c = 0; c < e.length; c++) { if (d === e[c]) { return true } } return false }; b.utils.exists = function (c) { switch (typeof (c)) { case "string": return (c.length > 0); break; case "object": return (c !== null); case "undefined": return false } return true }; b.utils.empty = function (c) { if (typeof c.hasChildNodes == "function") { while (c.hasChildNodes()) { c.removeChild(c.firstChild) } } }; b.utils.parseDimension = function (c) { if (typeof c == "string") { if (c === "") { return 0 } else { if (c.lastIndexOf("%") > -1) { return c } else { return parseInt(c.replace("px", ""), 10) } } } return c }; b.utils.getDimensions = function (c) { if (c && c.style) { return { x: b.utils.parseDimension(c.style.left), y: b.utils.parseDimension(c.style.top), width: b.utils.parseDimension(c.style.width), height: b.utils.parseDimension(c.style.height)} } else { return {} } }; b.utils.timeFormat = function (c) { str = "00:00"; if (c > 0) { str = Math.floor(c / 60) < 10 ? "0" + Math.floor(c / 60) + ":" : Math.floor(c / 60) + ":"; str += Math.floor(c % 60) < 10 ? "0" + Math.floor(c % 60) : Math.floor(c % 60) } return str } })(jwplayer); (function (a) { a.events = function () { }; a.events.COMPLETE = "COMPLETE"; a.events.ERROR = "ERROR" })(jwplayer); (function (jwplayer) { jwplayer.events.eventdispatcher = function (debug) { var _debug = debug; var _listeners; var _globallisteners; this.resetEventListeners = function () { _listeners = {}; _globallisteners = [] }; this.resetEventListeners(); this.addEventListener = function (type, listener, count) { try { if (!jwplayer.utils.exists(_listeners[type])) { _listeners[type] = [] } if (typeof (listener) == "string") { eval("listener = " + listener) } _listeners[type].push({ listener: listener, count: count }) } catch (err) { jwplayer.utils.log("error", err) } return false }; this.removeEventListener = function (type, listener) { if (!_listeners[type]) { return } try { for (var listenerIndex = 0; listenerIndex < _listeners[type].length; listenerIndex++) { if (_listeners[type][listenerIndex].listener.toString() == listener.toString()) { _listeners[type].splice(listenerIndex, 1); break } } } catch (err) { jwplayer.utils.log("error", err) } return false }; this.addGlobalListener = function (listener, count) { try { if (typeof (listener) == "string") { eval("listener = " + listener) } _globallisteners.push({ listener: listener, count: count }) } catch (err) { jwplayer.utils.log("error", err) } return false }; this.removeGlobalListener = function (listener) { if (!_globallisteners[type]) { return } try { for (var globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) { if (_globallisteners[globalListenerIndex].listener.toString() == listener.toString()) { _globallisteners.splice(globalListenerIndex, 1); break } } } catch (err) { jwplayer.utils.log("error", err) } return false }; this.sendEvent = function (type, data) { if (!jwplayer.utils.exists(data)) { data = {} } if (_debug) { jwplayer.utils.log(type, data) } if (typeof _listeners[type] != "undefined") { for (var listenerIndex = 0; listenerIndex < _listeners[type].length; listenerIndex++) { try { _listeners[type][listenerIndex].listener(data) } catch (err) { jwplayer.utils.log("There was an error while handling a listener: " + err.toString(), _listeners[type][listenerIndex].listener) } if (_listeners[type][listenerIndex]) { if (_listeners[type][listenerIndex].count === 1) { delete _listeners[type][listenerIndex] } else { if (_listeners[type][listenerIndex].count > 0) { _listeners[type][listenerIndex].count = _listeners[type][listenerIndex].count - 1 } } } } } for (var globalListenerIndex = 0; globalListenerIndex < _globallisteners.length; globalListenerIndex++) { try { _globallisteners[globalListenerIndex].listener(data) } catch (err) { jwplayer.utils.log("There was an error while handling a listener: " + err.toString(), _globallisteners[globalListenerIndex].listener) } if (_globallisteners[globalListenerIndex]) { if (_globallisteners[globalListenerIndex].count === 1) { delete _globallisteners[globalListenerIndex] } else { if (_globallisteners[globalListenerIndex].count > 0) { _globallisteners[globalListenerIndex].count = _globallisteners[globalListenerIndex].count - 1 } } } } } } })(jwplayer); (function (a) { var b = {}; a.utils.animations = function () { }; a.utils.animations.transform = function (c, d) { c.style.webkitTransform = d; c.style.MozTransform = d; c.style.OTransform = d; c.style.msTransform = d }; a.utils.animations.transformOrigin = function (c, d) { c.style.webkitTransformOrigin = d; c.style.MozTransformOrigin = d; c.style.OTransformOrigin = d; c.style.msTransformOrigin = d }; a.utils.animations.rotate = function (c, d) { a.utils.animations.transform(c, ["rotate(", d, "deg)"].join("")) }; a.utils.cancelAnimation = function (c) { delete b[c.id] }; a.utils.fadeTo = function (m, f, e, j, h, d) { if (b[m.id] != d && a.utils.exists(d)) { return } if (m.style.opacity == f) { return } var c = new Date().getTime(); if (d > c) { setTimeout(function () { a.utils.fadeTo(m, f, e, j, 0, d) }, d - c) } if (m.style.display == "none") { m.style.display = "block" } if (!a.utils.exists(j)) { j = m.style.opacity === "" ? 1 : m.style.opacity } if (m.style.opacity == f && m.style.opacity !== "" && a.utils.exists(d)) { if (f === 0) { m.style.display = "none" } return } if (!a.utils.exists(d)) { d = c; b[m.id] = d } if (!a.utils.exists(h)) { h = 0 } var k = (e > 0) ? ((c - d) / (e * 1000)) : 0; k = k > 1 ? 1 : k; var l = f - j; var g = j + (k * l); if (g > 1) { g = 1 } else { if (g < 0) { g = 0 } } m.style.opacity = g; if (h > 0) { b[m.id] = d + h * 1000; a.utils.fadeTo(m, f, e, j, 0, b[m.id]); return } setTimeout(function () { a.utils.fadeTo(m, f, e, j, 0, d) }, 10) } })(jwplayer); (function (a) { a.utils.arrays = function () { }; a.utils.arrays.indexOf = function (c, d) { for (var b = 0; b < c.length; b++) { if (c[b] == d) { return b } } return -1 }; a.utils.arrays.remove = function (c, d) { var b = a.utils.arrays.indexOf(c, d); if (b > -1) { c.splice(b, 1) } } })(jwplayer); (function (a) { a.utils.extensionmap = { "3gp": { html5: "video/3gpp", flash: "video" }, "3gpp": { html5: "video/3gpp" }, "3g2": { html5: "video/3gpp2", flash: "video" }, "3gpp2": { html5: "video/3gpp2" }, flv: { flash: "video" }, f4a: { html5: "audio/mp4" }, f4b: { html5: "audio/mp4", flash: "video" }, f4v: { html5: "video/mp4", flash: "video" }, mov: { html5: "video/quicktime", flash: "video" }, m4a: { html5: "audio/mp4", flash: "video" }, m4b: { html5: "audio/mp4" }, m4p: { html5: "audio/mp4" }, m4v: { html5: "video/mp4", flash: "video" }, mp4: { html5: "video/mp4", flash: "video" }, rbs: { flash: "sound" }, aac: { html5: "audio/aac", flash: "video" }, mp3: { html5: "audio/mp3", flash: "sound" }, ogg: { html5: "audio/ogg" }, oga: { html5: "audio/ogg" }, ogv: { html5: "video/ogg" }, webm: { html5: "video/webm" }, m3u8: { html5: "audio/x-mpegurl" }, gif: { flash: "image" }, jpeg: { flash: "image" }, jpg: { flash: "image" }, swf: { flash: "image" }, png: { flash: "image" }, wav: { html5: "audio/x-wav"}} })(jwplayer); (function (e) { e.utils.mediaparser = function () { }; var g = { element: { width: "width", height: "height", id: "id", "class": "className", name: "name" }, media: { src: "file", preload: "preload", autoplay: "autostart", loop: "repeat", controls: "controls" }, source: { src: "file", type: "type", media: "media", "data-jw-width": "width", "data-jw-bitrate": "bitrate" }, video: { poster: "image"} }; var f = {}; e.utils.mediaparser.parseMedia = function (j) { return d(j) }; function c(k, j) { if (!e.utils.exists(j)) { j = g[k] } else { e.utils.extend(j, g[k]) } return j } function d(n, j) { if (f[n.tagName.toLowerCase()] && !e.utils.exists(j)) { return f[n.tagName.toLowerCase()](n) } else { j = c("element", j); var o = {}; for (var k in j) { if (k != "length") { var m = n.getAttribute(k); if (e.utils.exists(m)) { o[j[k]] = m } } } var l = n.style["#background-color"]; if (l && !(l == "transparent" || l == "rgba(0, 0, 0, 0)")) { o.screencolor = l } return o } } function h(n, k) { k = c("media", k); var l = []; var j = e.utils.selectors("source", n); for (var m in j) { if (!isNaN(m)) { l.push(a(j[m])) } } var o = d(n, k); if (e.utils.exists(o.file)) { l[0] = { file: o.file} } o.levels = l; return o } function a(l, k) { k = c("source", k); var j = d(l, k); j.width = j.width ? j.width : 0; j.bitrate = j.bitrate ? j.bitrate : 0; return j } function b(l, k) { k = c("video", k); var j = h(l, k); return j } f.media = h; f.audio = h; f.source = a; f.video = b })(jwplayer); (function (a) { a.utils.loaderstatus = { NEW: "NEW", LOADING: "LOADING", ERROR: "ERROR", COMPLETE: "COMPLETE" }; a.utils.scriptloader = function (c) { var d = a.utils.loaderstatus.NEW; var b = new a.events.eventdispatcher(); a.utils.extend(this, b); this.load = function () { if (d == a.utils.loaderstatus.NEW) { d = a.utils.loaderstatus.LOADING; var e = document.createElement("script"); e.onload = function (f) { d = a.utils.loaderstatus.COMPLETE; b.sendEvent(a.events.COMPLETE) }; e.onerror = function (f) { d = a.utils.loaderstatus.ERROR; b.sendEvent(a.events.ERROR) }; e.onreadystatechange = function () { if (e.readyState == "loaded" || e.readyState == "complete") { d = a.utils.loaderstatus.COMPLETE; b.sendEvent(a.events.COMPLETE) } }; document.getElementsByTagName("head")[0].appendChild(e); e.src = c } }; this.getStatus = function () { return d } } })(jwplayer); (function (a) { a.utils.selectors = function (b, e) { if (!a.utils.exists(e)) { e = document } b = a.utils.strings.trim(b); var c = b.charAt(0); if (c == "#") { return e.getElementById(b.substr(1)) } else { if (c == ".") { if (e.getElementsByClassName) { return e.getElementsByClassName(b.substr(1)) } else { return a.utils.selectors.getElementsByTagAndClass("*", b.substr(1)) } } else { if (b.indexOf(".") > 0) { var d = b.split("."); return a.utils.selectors.getElementsByTagAndClass(d[0], d[1]) } else { return e.getElementsByTagName(b) } } } return null }; a.utils.selectors.getElementsByTagAndClass = function (e, h, g) { var j = []; if (!a.utils.exists(g)) { g = document } var f = g.getElementsByTagName(e); for (var d = 0; d < f.length; d++) { if (a.utils.exists(f[d].className)) { var c = f[d].className.split(" "); for (var b = 0; b < c.length; b++) { if (c[b] == h) { j.push(f[d]) } } } } return j } })(jwplayer); (function (a) { a.utils.strings = function () { }; a.utils.strings.trim = function (b) { return b.replace(/^\s*/, "").replace(/\s*$/, "") }; a.utils.strings.pad = function (c, d, b) { if (!b) { b = "0" } while (c.length < d) { c = b + c } return c }; a.utils.strings.serialize = function (b) { if (b == null) { return null } else { if (b == "true") { return true } else { if (b == "false") { return false } else { if (isNaN(Number(b)) || b.length > 5 || b.length == 0) { return b } else { return Number(b) } } } } }; a.utils.strings.seconds = function (d) { d = d.replace(",", "."); var b = d.split(":"); var c = 0; if (d.substr(-1) == "s") { c = Number(d.substr(0, d.length - 1)) } else { if (d.substr(-1) == "m") { c = Number(d.substr(0, d.length - 1)) * 60 } else { if (d.substr(-1) == "h") { c = Number(d.substr(0, d.length - 1)) * 3600 } else { if (b.length > 1) { c = Number(b[b.length - 1]); c += Number(b[b.length - 2]) * 60; if (b.length == 3) { c += Number(b[b.length - 3]) * 3600 } } else { c = Number(d) } } } } return c }; a.utils.strings.xmlAttribute = function (b, c) { for (var d = 0; d < b.attributes.length; d++) { if (b.attributes[d].name && b.attributes[d].name.toLowerCase() == c.toLowerCase()) { return b.attributes[d].value.toString() } } return "" }; a.utils.strings.jsonToString = function (f) { var h = h || {}; if (h && h.stringify) { return h.stringify(f) } var c = typeof (f); if (c != "object" || f === null) { if (c == "string") { f = '"' + f + '"' } else { return String(f) } } else { var g = [], b = (f && f.constructor == Array); for (var d in f) { var e = f[d]; switch (typeof (e)) { case "string": e = '"' + e + '"'; break; case "object": if (a.utils.exists(e)) { e = a.utils.strings.jsonToString(e) } break } if (b) { if (typeof (e) != "function") { g.push(String(e)) } } else { if (typeof (e) != "function") { g.push('"' + d + '":' + String(e)) } } } if (b) { return "[" + String(g) + "]" } else { return "{" + String(g) + "}" } } } })(jwplayer); (function (c) { var d = new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/); c.utils.typechecker = function (g, f) { f = !c.utils.exists(f) ? b(g) : f; return e(g, f) }; function b(f) { var g = ["true", "false", "t", "f"]; if (g.toString().indexOf(f.toLowerCase().replace(" ", "")) >= 0) { return "boolean" } else { if (d.test(f)) { return "color" } else { if (!isNaN(parseInt(f, 10)) && parseInt(f, 10).toString().length == f.length) { return "integer" } else { if (!isNaN(parseFloat(f)) && parseFloat(f).toString().length == f.length) { return "float" } } } } return "string" } function e(g, f) { if (!c.utils.exists(f)) { return g } switch (f) { case "color": if (g.length > 0) { return a(g) } return null; case "integer": return parseInt(g, 10); case "float": return parseFloat(g); case "boolean": if (g.toLowerCase() == "true") { return true } else { if (g == "1") { return true } } return false } return g } function a(f) { switch (f.toLowerCase()) { case "blue": return parseInt("0000FF", 16); case "green": return parseInt("00FF00", 16); case "red": return parseInt("FF0000", 16); case "cyan": return parseInt("00FFFF", 16); case "magenta": return parseInt("FF00FF", 16); case "yellow": return parseInt("FFFF00", 16); case "black": return parseInt("000000", 16); case "white": return parseInt("FFFFFF", 16); default: f = f.replace(/(#|0x)?([0-9A-F]{3,6})$/gi, "$2"); if (f.length == 3) { f = f.charAt(0) + f.charAt(0) + f.charAt(1) + f.charAt(1) + f.charAt(2) + f.charAt(2) } return parseInt(f, 16) } return parseInt("000000", 16) } })(jwplayer); (function (a) { a.utils.parsers = function () { }; a.utils.parsers.localName = function (b) { if (!b) { return "" } else { if (b.localName) { return b.localName } else { if (b.baseName) { return b.baseName } else { return "" } } } }; a.utils.parsers.textContent = function (b) { if (!b) { return "" } else { if (b.textContent) { return b.textContent } else { if (b.text) { return b.text } else { return "" } } } } })(jwplayer); (function (a) { a.utils.parsers.jwparser = function () { }; a.utils.parsers.jwparser.PREFIX = "jwplayer"; a.utils.parsers.jwparser.parseEntry = function (c, d) { for (var b = 0; b < c.childNodes.length; b++) { if (c.childNodes[b].prefix == a.utils.parsers.jwparser.PREFIX) { d[a.utils.parsers.localName(c.childNodes[b])] = a.utils.strings.serialize(a.utils.parsers.textContent(c.childNodes[b])) } if (!d.file && String(d.link).toLowerCase().indexOf("youtube") > -1) { d.file = d.link } } return d }; a.utils.parsers.jwparser.getProvider = function (c) { if (c.type) { return c.type } else { if (c.file.indexOf("youtube.com/w") > -1 || c.file.indexOf("youtube.com/v") > -1 || c.file.indexOf("youtu.be/") > -1) { return "youtube" } else { if (c.streamer && c.streamer.indexOf("rtmp") == 0) { return "rtmp" } else { if (c.streamer && c.streamer.indexOf("http") == 0) { return "http" } else { var b = a.utils.strings.extension(c.file); if (extensions.hasOwnProperty(b)) { return extensions[b] } } } } } return "" } })(jwplayer); (function (a) { a.utils.parsers.mediaparser = function () { }; a.utils.parsers.mediaparser.PREFIX = "media"; a.utils.parsers.mediaparser.parseGroup = function (d, f) { var e = false; for (var c = 0; c < d.childNodes.length; c++) { if (d.childNodes[c].prefix == a.utils.parsers.mediaparser.PREFIX) { if (!a.utils.parsers.localName(d.childNodes[c])) { continue } switch (a.utils.parsers.localName(d.childNodes[c]).toLowerCase()) { case "content": if (!e) { f.file = a.utils.strings.xmlAttribute(d.childNodes[c], "url") } if (a.utils.strings.xmlAttribute(d.childNodes[c], "duration")) { f.duration = a.utils.strings.seconds(a.utils.strings.xmlAttribute(d.childNodes[c], "duration")) } if (a.utils.strings.xmlAttribute(d.childNodes[c], "start")) { f.start = a.utils.strings.seconds(a.utils.strings.xmlAttribute(d.childNodes[c], "start")) } if (d.childNodes[c].childNodes && d.childNodes[c].childNodes.length > 0) { f = a.utils.parsers.mediaparser.parseGroup(d.childNodes[c], f) } if (a.utils.strings.xmlAttribute(d.childNodes[c], "width") || a.utils.strings.xmlAttribute(d.childNodes[c], "bitrate") || a.utils.strings.xmlAttribute(d.childNodes[c], "url")) { if (!f.levels) { f.levels = [] } f.levels.push({ width: a.utils.strings.xmlAttribute(d.childNodes[c], "width"), bitrate: a.utils.strings.xmlAttribute(d.childNodes[c], "bitrate"), file: a.utils.strings.xmlAttribute(d.childNodes[c], "url") }) } break; case "title": f.title = a.utils.parsers.textContent(d.childNodes[c]); break; case "description": f.description = a.utils.parsers.textContent(d.childNodes[c]); break; case "keywords": f.tags = a.utils.parsers.textContent(d.childNodes[c]); break; case "thumbnail": f.image = a.utils.strings.xmlAttribute(d.childNodes[c], "url"); break; case "credit": f.author = a.utils.parsers.textContent(d.childNodes[c]); break; case "player": var b = d.childNodes[c].url; if (b.indexOf("youtube.com") >= 0 || b.indexOf("youtu.be") >= 0) { e = true; f.file = a.utils.strings.xmlAttribute(d.childNodes[c], "url") } break; case "group": a.utils.parsers.mediaparser.parseGroup(d.childNodes[c], f); break } } } return f } })(jwplayer); (function (b) { b.utils.parsers.rssparser = function () { }; b.utils.parsers.rssparser.parse = function (f) { var c = []; for (var e = 0; e < f.childNodes.length; e++) { if (b.utils.parsers.localName(f.childNodes[e]).toLowerCase() == "channel") { for (var d = 0; d < f.childNodes[e].childNodes.length; d++) { if (b.utils.parsers.localName(f.childNodes[e].childNodes[d]).toLowerCase() == "item") { c.push(a(f.childNodes[e].childNodes[d])) } } } } return c }; function a(d) { var e = {}; for (var c = 0; c < d.childNodes.length; c++) { if (!b.utils.parsers.localName(d.childNodes[c])) { continue } switch (b.utils.parsers.localName(d.childNodes[c]).toLowerCase()) { case "enclosure": e.file = b.utils.strings.xmlAttribute(d.childNodes[c], "url"); break; case "title": e.title = b.utils.parsers.textContent(d.childNodes[c]); break; case "pubdate": e.date = b.utils.parsers.textContent(d.childNodes[c]); break; case "description": e.description = b.utils.parsers.textContent(d.childNodes[c]); break; case "link": e.link = b.utils.parsers.textContent(d.childNodes[c]); break; case "category": if (e.tags) { e.tags += b.utils.parsers.textContent(d.childNodes[c]) } else { e.tags = b.utils.parsers.textContent(d.childNodes[c]) } break } } e = b.utils.parsers.mediaparser.parseGroup(d, e); e = b.utils.parsers.jwparser.parseEntry(d, e); return new b.html5.playlistitem(e) } })(jwplayer); (function (a) { var c = {}; var b = {}; a.plugins = function () { }; a.plugins.loadPlugins = function (e, d) { b[e] = new a.plugins.pluginloader(new a.plugins.model(c), d); return b[e] }; a.plugins.registerPlugin = function (h, f, e) { var d = a.utils.getPluginName(h); if (c[d]) { c[d].registerPlugin(h, f, e) } else { a.utils.log("A plugin (" + h + ") was registered with the player that was not loaded. Please check your configuration."); for (var g in b) { b[g].pluginFailed() } } } })(jwplayer); (function (a) { a.plugins.model = function (b) { this.addPlugin = function (c) { var d = a.utils.getPluginName(c); if (!b[d]) { b[d] = new a.plugins.plugin(c) } return b[d] } } })(jwplayer); (function (a) { a.plugins.pluginmodes = { FLASH: "FLASH", JAVASCRIPT: "JAVASCRIPT", HYBRID: "HYBRID" }; a.plugins.plugin = function (b) { var d = "http://plugins.longtailvideo.com"; var j = a.utils.loaderstatus.NEW; var k; var h; var l; var c = new a.events.eventdispatcher(); a.utils.extend(this, c); function e() { switch (a.utils.getPluginPathType(b)) { case a.utils.pluginPathType.ABSOLUTE: return b; case a.utils.pluginPathType.RELATIVE: return a.utils.getAbsolutePath(b, window.location.href); case a.utils.pluginPathType.CDN: var n = a.utils.getPluginName(b); var m = a.utils.getPluginVersion(b); return d + "/" + a.version.split(".")[0] + "/" + n + "/" + n + (m !== "" ? ("-" + m) : "") + ".js" } } function g(m) { l = setTimeout(function () { j = a.utils.loaderstatus.COMPLETE; c.sendEvent(a.events.COMPLETE) }, 1000) } function f(m) { j = a.utils.loaderstatus.ERROR; c.sendEvent(a.events.ERROR) } this.load = function () { if (j == a.utils.loaderstatus.NEW) { if (b.lastIndexOf(".swf") > 0) { k = b; j = a.utils.loaderstatus.COMPLETE; c.sendEvent(a.events.COMPLETE); return } j = a.utils.loaderstatus.LOADING; var m = new a.utils.scriptloader(e()); m.addEventListener(a.events.COMPLETE, g); m.addEventListener(a.events.ERROR, f); m.load() } }; this.registerPlugin = function (o, n, m) { if (l) { clearTimeout(l); l = undefined } if (n && m) { k = m; h = n } else { if (typeof n == "string") { k = n } else { if (typeof n == "function") { h = n } else { if (!n && !m) { k = o } } } } j = a.utils.loaderstatus.COMPLETE; c.sendEvent(a.events.COMPLETE) }; this.getStatus = function () { return j }; this.getPluginName = function () { return a.utils.getPluginName(b) }; this.getFlashPath = function () { if (k) { switch (a.utils.getPluginPathType(k)) { case a.utils.pluginPathType.ABSOLUTE: return k; case a.utils.pluginPathType.RELATIVE: if (b.lastIndexOf(".swf") > 0) { return a.utils.getAbsolutePath(k, window.location.href) } return a.utils.getAbsolutePath(k, e()); case a.utils.pluginPathType.CDN: if (k.indexOf("-") > -1) { return k + "h" } return k + "-h" } } return null }; this.getJS = function () { return h }; this.getPluginmode = function () { if (typeof k != "undefined" && typeof h != "undefined") { return a.plugins.pluginmodes.HYBRID } else { if (typeof k != "undefined") { return a.plugins.pluginmodes.FLASH } else { if (typeof h != "undefined") { return a.plugins.pluginmodes.JAVASCRIPT } } } }; this.getNewInstance = function (n, m, o) { return new h(n, m, o) }; this.getURL = function () { return b } } })(jwplayer); (function (a) { a.plugins.pluginloader = function (h, e) { var g = {}; var k = a.utils.loaderstatus.NEW; var d = false; var b = false; var c = new a.events.eventdispatcher(); a.utils.extend(this, c); function f() { if (!b) { b = true; k = a.utils.loaderstatus.COMPLETE; c.sendEvent(a.events.COMPLETE) } } function j() { if (!b) { var m = 0; for (plugin in g) { var l = g[plugin].getStatus(); if (l == a.utils.loaderstatus.LOADING || l == a.utils.loaderstatus.NEW) { m++ } } if (m == 0) { f() } } } this.setupPlugins = function (n, l, s) { var m = { length: 0, plugins: {} }; var p = { length: 0, plugins: {} }; for (var o in g) { var q = g[o].getPluginName(); if (g[o].getFlashPath()) { m.plugins[g[o].getFlashPath()] = l.plugins[o]; m.plugins[g[o].getFlashPath()].pluginmode = g[o].getPluginmode(); m.length++ } if (g[o].getJS()) { var r = document.createElement("div"); r.id = n.id + "_" + q; r.style.position = "absolute"; r.style.zIndex = p.length + 10; p.plugins[q] = g[o].getNewInstance(n, l.plugins[o], r); p.length++; if (typeof p.plugins[q].resize != "undefined") { n.onReady(s(p.plugins[q], r, true)); n.onResize(s(p.plugins[q], r)) } } } n.plugins = p.plugins; return m }; this.load = function () { k = a.utils.loaderstatus.LOADING; d = true; for (var l in e) { if (a.utils.exists(l)) { g[l] = h.addPlugin(l); g[l].addEventListener(a.events.COMPLETE, j); g[l].addEventListener(a.events.ERROR, j) } } for (l in g) { g[l].load() } d = false; j() }; this.pluginFailed = function () { f() }; this.getStatus = function () { return k } } })(jwplayer); (function (b) { var a = []; b.api = function (d) { this.container = d; this.id = d.id; var n = {}; var s = {}; var q = {}; var c = []; var h = undefined; var l = false; var j = []; var p = b.utils.getOuterHTML(d); var r = {}; var k = {}; this.getBuffer = function () { return this.callInternal("jwGetBuffer") }; this.getContainer = function () { return this.container }; function e(u, t) { return function (z, v, w, x) { if (u.renderingMode == "flash" || u.renderingMode == "html5") { var y; if (v) { k[z] = v; y = "jwplayer('" + u.id + "').callback('" + z + "')" } else { if (!v && k[z]) { delete k[z] } } h.jwDockSetButton(z, y, w, x) } return t } } this.getPlugin = function (t) { var v = this; var u = {}; if (t == "dock") { return b.utils.extend(u, { setButton: e(v, u), show: function () { v.callInternal("jwDockShow"); return u }, hide: function () { v.callInternal("jwDockHide"); return u }, onShow: function (w) { v.componentListener("dock", b.api.events.JWPLAYER_COMPONENT_SHOW, w); return u }, onHide: function (w) { v.componentListener("dock", b.api.events.JWPLAYER_COMPONENT_HIDE, w); return u } }) } else { if (t == "controlbar") { return b.utils.extend(u, { show: function () { v.callInternal("jwControlbarShow"); return u }, hide: function () { v.callInternal("jwControlbarHide"); return u }, onShow: function (w) { v.componentListener("controlbar", b.api.events.JWPLAYER_COMPONENT_SHOW, w); return u }, onHide: function (w) { v.componentListener("controlbar", b.api.events.JWPLAYER_COMPONENT_HIDE, w); return u } }) } else { if (t == "display") { return b.utils.extend(u, { show: function () { v.callInternal("jwDisplayShow"); return u }, hide: function () { v.callInternal("jwDisplayHide"); return u }, onShow: function (w) { v.componentListener("display", b.api.events.JWPLAYER_COMPONENT_SHOW, w); return u }, onHide: function (w) { v.componentListener("display", b.api.events.JWPLAYER_COMPONENT_HIDE, w); return u } }) } else { return this.plugins[t] } } } }; this.callback = function (t) { if (k[t]) { return k[t]() } }; this.getDuration = function () { return this.callInternal("jwGetDuration") }; this.getFullscreen = function () { return this.callInternal("jwGetFullscreen") }; this.getHeight = function () { return this.callInternal("jwGetHeight") }; this.getLockState = function () { return this.callInternal("jwGetLockState") }; this.getMeta = function () { return this.getItemMeta() }; this.getMute = function () { return this.callInternal("jwGetMute") }; this.getPlaylist = function () { var u = this.callInternal("jwGetPlaylist"); if (this.renderingMode == "flash") { b.utils.deepReplaceKeyName(u, "__dot__", ".") } for (var t = 0; t < u.length; t++) { if (!b.utils.exists(u[t].index)) { u[t].index = t } } return u }; this.getPlaylistItem = function (t) { if (!b.utils.exists(t)) { t = this.getCurrentItem() } return this.getPlaylist()[t] }; this.getPosition = function () { return this.callInternal("jwGetPosition") }; this.getRenderingMode = function () { return this.renderingMode }; this.getState = function () { return this.callInternal("jwGetState") }; this.getVolume = function () { return this.callInternal("jwGetVolume") }; this.getWidth = function () { return this.callInternal("jwGetWidth") }; this.setFullscreen = function (t) { if (!b.utils.exists(t)) { this.callInternal("jwSetFullscreen", !this.callInternal("jwGetFullscreen")) } else { this.callInternal("jwSetFullscreen", t) } return this }; this.setMute = function (t) { if (!b.utils.exists(t)) { this.callInternal("jwSetMute", !this.callInternal("jwGetMute")) } else { this.callInternal("jwSetMute", t) } return this }; this.lock = function () { return this }; this.unlock = function () { return this }; this.load = function (t) { this.callInternal("jwLoad", t); return this }; this.playlistItem = function (t) { this.callInternal("jwPlaylistItem", t); return this }; this.playlistPrev = function () { this.callInternal("jwPlaylistPrev"); return this }; this.playlistNext = function () { this.callInternal("jwPlaylistNext"); return this }; this.resize = function (u, t) { if (this.renderingMode == "html5") { h.jwResize(u, t) } else { this.container.width = u; this.container.height = t } return this }; this.play = function (t) { if (typeof t == "undefined") { t = this.getState(); if (t == b.api.events.state.PLAYING || t == b.api.events.state.BUFFERING) { this.callInternal("jwPause") } else { this.callInternal("jwPlay") } } else { this.callInternal("jwPlay", t) } return this }; this.pause = function (t) { if (typeof t == "undefined") { t = this.getState(); if (t == b.api.events.state.PLAYING || t == b.api.events.state.BUFFERING) { this.callInternal("jwPause") } else { this.callInternal("jwPlay") } } else { this.callInternal("jwPause", t) } return this }; this.stop = function () { this.callInternal("jwStop"); return this }; this.seek = function (t) { this.callInternal("jwSeek", t); return this }; this.setVolume = function (t) { this.callInternal("jwSetVolume", t); return this }; this.onBufferChange = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER, t) }; this.onBufferFull = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL, t) }; this.onError = function (t) { return this.eventListener(b.api.events.JWPLAYER_ERROR, t) }; this.onFullscreen = function (t) { return this.eventListener(b.api.events.JWPLAYER_FULLSCREEN, t) }; this.onMeta = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_META, t) }; this.onMute = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_MUTE, t) }; this.onPlaylist = function (t) { return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_LOADED, t) }; this.onPlaylistItem = function (t) { return this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM, t) }; this.onReady = function (t) { return this.eventListener(b.api.events.API_READY, t) }; this.onResize = function (t) { return this.eventListener(b.api.events.JWPLAYER_RESIZE, t) }; this.onComplete = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE, t) }; this.onSeek = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_SEEK, t) }; this.onTime = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_TIME, t) }; this.onVolume = function (t) { return this.eventListener(b.api.events.JWPLAYER_MEDIA_VOLUME, t) }; this.onBuffer = function (t) { return this.stateListener(b.api.events.state.BUFFERING, t) }; this.onPause = function (t) { return this.stateListener(b.api.events.state.PAUSED, t) }; this.onPlay = function (t) { return this.stateListener(b.api.events.state.PLAYING, t) }; this.onIdle = function (t) { return this.stateListener(b.api.events.state.IDLE, t) }; this.remove = function () { n = {}; j = []; if (b.utils.getOuterHTML(this.container) != p) { b.api.destroyPlayer(this.id, p) } }; this.setup = function (u) { if (b.embed) { var t = this.id; this.remove(); var v = b(t); v.config = u; return new b.embed(v) } return this }; this.registerPlugin = function (v, u, t) { b.plugins.registerPlugin(v, u, t) }; this.setPlayer = function (t, u) { h = t; this.renderingMode = u }; this.stateListener = function (t, u) { if (!s[t]) { s[t] = []; this.eventListener(b.api.events.JWPLAYER_PLAYER_STATE, g(t)) } s[t].push(u); return this }; function g(t) { return function (v) { var u = v.newstate, x = v.oldstate; if (u == t) { var w = s[u]; if (w) { for (var y = 0; y < w.length; y++) { if (typeof w[y] == "function") { w[y].call(this, { oldstate: x, newstate: u }) } } } } } } this.componentListener = function (t, u, v) { if (!q[t]) { q[t] = {} } if (!q[t][u]) { q[t][u] = []; this.eventListener(u, m(t, u)) } q[t][u].push(v); return this }; function m(t, u) { return function (w) { if (t == w.component) { var v = q[t][u]; if (v) { for (var x = 0; x < v.length; x++) { if (typeof v[x] == "function") { v[x].call(this, w) } } } } } } this.addInternalListener = function (t, u) { t.jwAddEventListener(u, 'function(dat) { jwplayer("' + this.id + '").dispatchEvent("' + u + '", dat); }') }; this.eventListener = function (t, u) { if (!n[t]) { n[t] = []; if (h && l) { this.addInternalListener(h, t) } } n[t].push(u); return this }; this.dispatchEvent = function (v) { if (n[v]) { var u = f(v, arguments[1]); for (var t = 0; t < n[v].length; t++) { if (typeof n[v][t] == "function") { n[v][t].call(this, u) } } } }; function f(v, t) { var x = b.utils.extend({}, t); if (v == b.api.events.JWPLAYER_FULLSCREEN && !x.fullscreen) { x.fullscreen = x.message == "true" ? true : false; delete x.message } else { if (typeof x.data == "object") { x = b.utils.extend(x, x.data); delete x.data } } var u = ["position", "duration", "offset"]; for (var w in u) { if (x[u[w]]) { x[u[w]] = Math.round(x[u[w]] * 1000) / 1000 } } return x } this.callInternal = function (u, t) { if (l) { if (typeof h != "undefined" && typeof h[u] == "function") { if (b.utils.exists(t)) { return (h[u])(t) } else { return (h[u])() } } return null } else { j.push({ method: u, parameters: t }) } }; this.playerReady = function (v) { l = true; if (!h) { this.setPlayer(document.getElementById(v.id)) } this.container = document.getElementById(this.id); for (var t in n) { this.addInternalListener(h, t) } this.eventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM, function (w) { r = {} }); this.eventListener(b.api.events.JWPLAYER_MEDIA_META, function (w) { b.utils.extend(r, w.metadata) }); this.dispatchEvent(b.api.events.API_READY); while (j.length > 0) { var u = j.shift(); this.callInternal(u.method, u.parameters) } }; this.getItemMeta = function () { return r }; this.getCurrentItem = function () { return this.callInternal("jwGetPlaylistIndex") }; function o(v, x, w) { var t = []; if (!x) { x = 0 } if (!w) { w = v.length - 1 } for (var u = x; u <= w; u++) { t.push(v[u]) } return t } return this }; b.api.selectPlayer = function (d) { var c; if (!b.utils.exists(d)) { d = 0 } if (d.nodeType) { c = d } else { if (typeof d == "string") { c = document.getElementById(d) } } if (c) { var e = b.api.playerById(c.id); if (e) { return e } else { return b.api.addPlayer(new b.api(c)) } } else { if (typeof d == "number") { return b.getPlayers()[d] } } return null }; b.api.events = { API_READY: "jwplayerAPIReady", JWPLAYER_READY: "jwplayerReady", JWPLAYER_FULLSCREEN: "jwplayerFullscreen", JWPLAYER_RESIZE: "jwplayerResize", JWPLAYER_ERROR: "jwplayerError", JWPLAYER_COMPONENT_SHOW: "jwplayerComponentShow", JWPLAYER_COMPONENT_HIDE: "jwplayerComponentHide", JWPLAYER_MEDIA_BUFFER: "jwplayerMediaBuffer", JWPLAYER_MEDIA_BUFFER_FULL: "jwplayerMediaBufferFull", JWPLAYER_MEDIA_ERROR: "jwplayerMediaError", JWPLAYER_MEDIA_LOADED: "jwplayerMediaLoaded", JWPLAYER_MEDIA_COMPLETE: "jwplayerMediaComplete", JWPLAYER_MEDIA_SEEK: "jwplayerMediaSeek", JWPLAYER_MEDIA_TIME: "jwplayerMediaTime", JWPLAYER_MEDIA_VOLUME: "jwplayerMediaVolume", JWPLAYER_MEDIA_META: "jwplayerMediaMeta", JWPLAYER_MEDIA_MUTE: "jwplayerMediaMute", JWPLAYER_PLAYER_STATE: "jwplayerPlayerState", JWPLAYER_PLAYLIST_LOADED: "jwplayerPlaylistLoaded", JWPLAYER_PLAYLIST_ITEM: "jwplayerPlaylistItem" }; b.api.events.state = { BUFFERING: "BUFFERING", IDLE: "IDLE", PAUSED: "PAUSED", PLAYING: "PLAYING" }; b.api.playerById = function (d) { for (var c = 0; c < a.length; c++) { if (a[c].id == d) { return a[c] } } return null }; b.api.addPlayer = function (c) { for (var d = 0; d < a.length; d++) { if (a[d] == c) { return c } } a.push(c); return c }; b.api.destroyPlayer = function (g, d) { var f = -1; for (var j = 0; j < a.length; j++) { if (a[j].id == g) { f = j; continue } } if (f >= 0) { var c = document.getElementById(a[f].id); if (document.getElementById(a[f].id + "_wrapper")) { c = document.getElementById(a[f].id + "_wrapper") } if (c) { if (d) { b.utils.setOuterHTML(c, d) } else { var h = document.createElement("div"); var e = c.id; if (c.id.indexOf("_wrapper") == c.id.length - 8) { newID = c.id.substring(0, c.id.length - 8) } h.setAttribute("id", e); c.parentNode.replaceChild(h, c) } } a.splice(f, 1) } return null }; b.getPlayers = function () { return a.slice(0) } })(jwplayer); var _userPlayerReady = (typeof playerReady == "function") ? playerReady : undefined; playerReady = function (b) { var a = jwplayer.api.playerById(b.id); if (a) { a.playerReady(b) } else { jwplayer.api.selectPlayer(b.id).playerReady(b) } if (_userPlayerReady) { _userPlayerReady.call(this, b) } }; (function (a) { a.embed = function (g) { var j = { width: 400, height: 300, components: { controlbar: { position: "over"}} }; var f = a.utils.mediaparser.parseMedia(g.container); var e = new a.embed.config(a.utils.extend(j, f, g.config), this); var h = a.plugins.loadPlugins(g.id, e.plugins); function c(m, l) { for (var k in l) { if (typeof m[k] == "function") { (m[k]).call(m, l[k]) } } } function d() { if (h.getStatus() == a.utils.loaderstatus.COMPLETE) { for (var m = 0; m < e.modes.length; m++) { if (e.modes[m].type && a.embed[e.modes[m].type]) { var k = e; if (e.modes[m].config) { k = a.utils.extend(a.utils.clone(e), e.modes[m].config) } var l = new a.embed[e.modes[m].type](document.getElementById(g.id), e.modes[m], k, h, g); if (l.supportsConfig()) { l.embed(); c(g, e.events); return g } } } a.utils.log("No suitable players found"); new a.embed.logo(a.utils.extend({ hide: true }, e.components.logo), "none", g.id) } } h.addEventListener(a.events.COMPLETE, d); h.addEventListener(a.events.ERROR, d); h.load(); return g }; function b() { if (!document.body) { return setTimeout(b, 15) } var c = a.utils.selectors.getElementsByTagAndClass("video", "jwplayer"); for (var d = 0; d < c.length; d++) { var e = c[d]; a(e.id).setup({}) } } b() })(jwplayer); (function (e) { function h() { return [{ type: "flash", src: "/m/video/player.swf" }, { type: "html5" }, { type: "download"}] } var a = { players: "modes", autoplay: "autostart" }; function b(n) { var m = n.toLowerCase(); var l = ["left", "right", "top", "bottom"]; for (var k = 0; k < l.length; k++) { if (m == l[k]) { return true } } return false } function c(l) { var k = false; k = (l instanceof Array) || (typeof l == "object" && !l.position && !l.size); return k } function j(k) { if (typeof k == "string") { if (parseInt(k).toString() == k || k.toLowerCase().indexOf("px") > -1) { return parseInt(k) } } return k } var g = ["playlist", "dock", "controlbar", "logo", "display"]; function f(k) { var n = {}; switch (e.utils.typeOf(k.plugins)) { case "object": for (var m in k.plugins) { n[e.utils.getPluginName(m)] = m } break; case "string": var o = k.plugins.split(","); for (var l = 0; l < o.length; l++) { n[e.utils.getPluginName(o[l])] = o[l] } break } return n } function d(o, n, m, k) { if (e.utils.typeOf(o[n]) != "object") { o[n] = {} } var l = o[n][m]; if (e.utils.typeOf(l) != "object") { o[n][m] = l = {} } if (k) { if (n == "plugins") { var p = e.utils.getPluginName(m); l[k] = o[p + "." + k]; delete o[p + "." + k] } else { l[k] = o[m + "." + k]; delete o[m + "." + k] } } } e.embed.deserialize = function (l) { var m = f(l); for (var k in m) { d(l, "plugins", m[k]) } for (var p in l) { if (p.indexOf(".") > -1) { var o = p.split("."); var n = o[0]; var p = o[1]; if (e.utils.isInArray(g, n)) { d(l, "components", n, p) } else { if (m[n]) { d(l, "plugins", m[n], p) } } } } return l }; e.embed.config = function (k, u) { var t = e.utils.extend({}, k); var r; if (c(t.playlist)) { r = t.playlist; delete t.playlist } t = e.embed.deserialize(t); t.height = j(t.height); t.width = j(t.width); if (typeof t.plugins == "string") { var l = t.plugins.split(","); if (typeof t.plugins != "object") { t.plugins = {} } for (var p = 0; p < l.length; p++) { var q = e.utils.getPluginName(l[p]); if (typeof t[q] == "object") { t.plugins[l[p]] = t[q]; delete t[q] } else { t.plugins[l[p]] = {} } } } for (var s = 0; s < g.length; s++) { var o = g[s]; if (e.utils.exists(t[o])) { if (typeof t[o] != "object") { if (!t.components[o]) { t.components[o] = {} } if (o == "logo") { t.components[o].file = t[o] } else { t.components[o].position = t[o] } delete t[o] } else { if (!t.components[o]) { t.components[o] = {} } e.utils.extend(t.components[o], t[o]); delete t[o] } } if (typeof t[o + "size"] != "undefined") { if (!t.components[o]) { t.components[o] = {} } t.components[o].size = t[o + "size"]; delete t[o + "size"] } } if (typeof t.icons != "undefined") { if (!t.components.display) { t.components.display = {} } t.components.display.icons = t.icons; delete t.icons } for (var n in a) { if (t[n]) { if (!t[a[n]]) { t[a[n]] = t[n] } delete t[n] } } var m; if (t.flashplayer && !t.modes) { m = h(); m[0].src = t.flashplayer; delete t.flashplayer } else { if (t.modes) { if (typeof t.modes == "string") { m = h(); m[0].src = t.modes } else { if (t.modes instanceof Array) { m = t.modes } else { if (typeof t.modes == "object" && t.modes.type) { m = [t.modes] } } } delete t.modes } else { m = h() } } t.modes = m; if (r) { t.playlist = r } return t } })(jwplayer); (function (a) { a.embed.download = function (c, g, b, d, f) { this.embed = function () { var k = a.utils.extend({}, b); var q = {}; var j = b.width ? b.width : 480; if (typeof j != "number") { j = parseInt(j, 10) } var m = b.height ? b.height : 320; if (typeof m != "number") { m = parseInt(m, 10) } var u, o, n; var s = {}; if (b.playlist && b.playlist.length) { s.file = b.playlist[0].file; o = b.playlist[0].image; s.levels = b.playlist[0].levels } else { s.file = b.file; o = b.image; s.levels = b.levels } if (s.file) { u = s.file } else { if (s.levels && s.levels.length) { u = s.levels[0].file } } n = u ? "pointer" : "auto"; var l = { display: { style: { cursor: n, width: j, height: m, backgroundColor: "#000", position: "relative", textDecoration: "none", border: "none", display: "block"} }, display_icon: { style: { cursor: n, position: "absolute", display: u ? "block" : "none", top: 0, left: 0, border: 0, margin: 0, padding: 0, zIndex: 3, width: 50, height: 50, backgroundImage: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg==)"} }, display_iconBackground: { style: { cursor: n, position: "absolute", display: u ? "block" : "none", top: ((m - 50) / 2), left: ((j - 50) / 2), border: 0, width: 50, height: 50, margin: 0, padding: 0, zIndex: 2, backgroundImage: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC)"} }, display_image: { style: { width: j, height: m, display: o ? "block" : "none", position: "absolute", cursor: n, left: 0, top: 0, margin: 0, padding: 0, textDecoration: "none", zIndex: 1, border: "none"}} }; var h = function (v, x, y) { var w = document.createElement(v); if (y) { w.id = y } else { w.id = c.id + "_jwplayer_" + x } a.utils.css(w, l[x].style); return w }; q.display = h("a", "display", c.id); if (u) { q.display.setAttribute("href", a.utils.getAbsolutePath(u)) } q.display_image = h("img", "display_image"); q.display_image.setAttribute("alt", "Click to download..."); if (o) { q.display_image.setAttribute("src", a.utils.getAbsolutePath(o)) } if (true) { q.display_icon = h("div", "display_icon"); q.display_iconBackground = h("div", "display_iconBackground"); q.display.appendChild(q.display_image); q.display_iconBackground.appendChild(q.display_icon); q.display.appendChild(q.display_iconBackground) } _css = a.utils.css; _hide = function (v) { _css(v, { display: "none" }) }; function r(v) { _imageWidth = q.display_image.naturalWidth; _imageHeight = q.display_image.naturalHeight; t() } function t() { a.utils.stretch(a.utils.stretching.UNIFORM, q.display_image, j, m, _imageWidth, _imageHeight) } q.display_image.onerror = function (v) { _hide(q.display_image) }; q.display_image.onload = r; c.parentNode.replaceChild(q.display, c); var p = (b.plugins && b.plugins.logo) ? b.plugins.logo : {}; q.display.appendChild(new a.embed.logo(b.components.logo, "download", c.id)); f.container = document.getElementById(f.id); f.setPlayer(q.display, "download") }; this.supportsConfig = function () { if (b) { var j = a.utils.getFirstPlaylistItemFromConfig(b); if (typeof j.file == "undefined" && typeof j.levels == "undefined") { return true } else { if (j.file) { return e(j.file, j.provider, j.playlistfile) } else { if (j.levels && j.levels.length) { for (var h = 0; h < j.levels.length; h++) { if (j.levels[h].file && e(j.levels[h].file, j.provider, j.playlistfile)) { return true } } } } } } else { return true } }; function e(j, l, h) { if (h) { return false } var k = ["image", "sound", "youtube", "http"]; if (l && (k.toString().indexOf(l) > -1)) { return true } if (!l || (l && l == "video")) { var m = a.utils.extension(j); if (m && a.utils.extensionmap[m]) { return true } } return false } } })(jwplayer); (function (a) { a.embed.flash = function (f, g, l, e, j) { function m(o, n, p) { var q = document.createElement("param"); q.setAttribute("name", n); q.setAttribute("value", p); o.appendChild(q) } function k(o, p, n) { return function (q) { if (n) { document.getElementById(j.id + "_wrapper").appendChild(p) } var s = document.getElementById(j.id).getPluginConfig("display"); o.resize(s.width, s.height); var r = { left: s.x, top: s.y }; a.utils.css(p, r) } } function d(p) { if (!p) { return {} } var r = {}; for (var o in p) { var n = p[o]; for (var q in n) { r[o + "." + q] = n[q] } } return r } function h(q, p) { if (q[p]) { var s = q[p]; for (var o in s) { var n = s[o]; if (typeof n == "string") { if (!q[o]) { q[o] = n } } else { for (var r in n) { if (!q[o + "." + r]) { q[o + "." + r] = n[r] } } } } delete q[p] } } function b(q) { if (!q) { return {} } var t = {}, s = []; for (var n in q) { var p = a.utils.getPluginName(n); var o = q[n]; s.push(n); for (var r in o) { t[p + "." + r] = o[r] } } t.plugins = s.join(","); return t } function c(p) { var n = p.netstreambasepath ? "" : "netstreambasepath=" + encodeURIComponent(window.location.href.split("#")[0]) + "&"; for (var o in p) { if (typeof (p[o]) == "object") { n += o + "=" + encodeURIComponent("[[JSON]]" + a.utils.strings.jsonToString(p[o])) + "&" } else { n += o + "=" + encodeURIComponent(p[o]) + "&" } } return n.substring(0, n.length - 1) } this.embed = function () { l.id = j.id; var y; var q = a.utils.extend({}, l); var n = q.width; var w = q.height; if (f.id + "_wrapper" == f.parentNode.id) { y = document.getElementById(f.id + "_wrapper") } else { y = document.createElement("div"); y.id = f.id + "_wrapper"; a.utils.wrap(f, y); a.utils.css(y, { position: "relative", width: n, height: w }) } var o = e.setupPlugins(j, q, k); if (o.length > 0) { a.utils.extend(q, b(o.plugins)) } else { delete q.plugins } var r = ["height", "width", "modes", "events"]; for (var u = 0; u < r.length; u++) { delete q[r[u]] } var p = "opaque"; if (q.wmode) { p = q.wmode } h(q, "components"); h(q, "providers"); if (typeof q["dock.position"] != "undefined") { if (q["dock.position"].toString().toLowerCase() == "false") { q.dock = q["dock.position"]; delete q["dock.position"] } } var x = "#000000"; var t; if (a.utils.isIE()) { var v = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" bgcolor="' + x + '" width="100%" height="100%" id="' + f.id + '" name="' + f.id + '" tabindex=0"">'; v += '<param name="movie" value="' + g.src + '">'; v += '<param name="allowfullscreen" value="true">'; v += '<param name="allowscriptaccess" value="always">'; v += '<param name="seamlesstabbing" value="true">'; v += '<param name="wmode" value="' + p + '">'; v += '<param name="flashvars" value="' + c(q) + '">'; v += "</object>"; a.utils.setOuterHTML(f, v); t = document.getElementById(f.id) } else { var s = document.createElement("object"); s.setAttribute("type", "application/x-shockwave-flash"); s.setAttribute("data", g.src); s.setAttribute("width", "100%"); s.setAttribute("height", "100%"); s.setAttribute("bgcolor", "#000000"); s.setAttribute("id", f.id); s.setAttribute("name", f.id); s.setAttribute("tabindex", 0); m(s, "allowfullscreen", "true"); m(s, "allowscriptaccess", "always"); m(s, "seamlesstabbing", "true"); m(s, "wmode", p); m(s, "flashvars", c(q)); f.parentNode.replaceChild(s, f); t = s } j.container = t; j.setPlayer(t, "flash") }; this.supportsConfig = function () { if (a.utils.hasFlash()) { if (l) { var o = a.utils.getFirstPlaylistItemFromConfig(l); if (typeof o.file == "undefined" && typeof o.levels == "undefined") { return true } else { if (o.file) { return flashCanPlay(o.file, o.provider) } else { if (o.levels && o.levels.length) { for (var n = 0; n < o.levels.length; n++) { if (o.levels[n].file && flashCanPlay(o.levels[n].file, o.provider)) { return true } } } } } } else { return true } } return false }; flashCanPlay = function (n, p) { var o = ["video", "http", "sound", "image"]; if (p && (o.toString().indexOf(p < 0))) { return true } var q = a.utils.extension(n); if (!q) { return true } if (a.utils.exists(a.utils.extensionmap[q]) && !a.utils.exists(a.utils.extensionmap[q].flash)) { return false } return true } } })(jwplayer); (function (a) { a.embed.html5 = function (c, g, b, d, f) { function e(j, k, h) { return function (l) { var m = document.getElementById(c.id + "_displayarea"); if (h) { m.appendChild(k) } var n = m.style; j.resize(parseInt(n.width.replace("px", "")), parseInt(n.height.replace("px", ""))); k.left = n.left; k.top = n.top } } this.embed = function () { if (a.html5) { d.setupPlugins(f, b, e); c.innerHTML = ""; var j = a.utils.extend({ screencolor: "0x000000" }, b); var h = ["plugins", "modes", "events"]; for (var k = 0; k < h.length; k++) { delete j[h[k]] } if (j.levels && !j.sources) { j.sources = b.levels } if (j.skin && j.skin.toLowerCase().indexOf(".zip") > 0) { j.skin = j.skin.replace(/\.zip/i, ".xml") } var l = new (a.html5(c)).setup(j); f.container = document.getElementById(f.id); f.setPlayer(l, "html5") } else { return null } }; this.supportsConfig = function () { if (!!a.vid.canPlayType) { if (b) { var j = a.utils.getFirstPlaylistItemFromConfig(b); if (typeof j.file == "undefined" && typeof j.levels == "undefined") { return true } else { if (j.file) { return html5CanPlay(a.vid, j.file, j.provider, j.playlistfile) } else { if (j.levels && j.levels.length) { for (var h = 0; h < j.levels.length; h++) { if (j.levels[h].file && html5CanPlay(a.vid, j.levels[h].file, j.provider, j.playlistfile)) { return true } } } } } } else { return true } } return false }; html5CanPlay = function (k, j, l, h) { if (h) { return false } if (l && l == "youtube") { return true } if (l && l != "video" && l != "http" && l != "sound") { return false } var m = a.utils.extension(j); if (!a.utils.exists(m) || !a.utils.exists(a.utils.extensionmap[m])) { return true } if (!a.utils.exists(a.utils.extensionmap[m].html5)) { return false } if (a.utils.isLegacyAndroid() && m.match(/m4v|mp4/)) { return true } return browserCanPlay(k, a.utils.extensionmap[m].html5) }; browserCanPlay = function (j, h) { if (!h) { return true } if (j.canPlayType(h)) { return true } else { if (h == "audio/mp3" && navigator.userAgent.match(/safari/i)) { return j.canPlayType("audio/mpeg") } else { return false } } } } })(jwplayer); (function (a) { a.embed.logo = function (m, l, d) { var j = { prefix: "http://l.longtailvideo.com/" + l + "/", file: "logo.png", link: "http://www.longtailvideo.com/players/jw-flv-player/", margin: 8, out: 0.5, over: 1, timeout: 5, hide: false, position: "bottom-left" }; _css = a.utils.css; var b; var h; k(); function k() { o(); c(); f() } function o() { if (j.prefix) { var q = a.version.split(/\W/).splice(0, 2).join("/"); if (j.prefix.indexOf(q) < 0) { j.prefix += q + "/" } } h = a.utils.extend({}, j) } function p() { var s = { border: "none", textDecoration: "none", position: "absolute", cursor: "pointer", zIndex: 10 }; s.display = h.hide ? "none" : "block"; var r = h.position.toLowerCase().split("-"); for (var q in r) { s[r[q]] = h.margin } return s } function c() { b = document.createElement("img"); b.id = d + "_jwplayer_logo"; b.style.display = "none"; b.onload = function (q) { _css(b, p()); e() }; if (!h.file) { return } if (h.file.indexOf("http://") === 0) { b.src = h.file } else { b.src = h.prefix + h.file } } if (!h.file) { return } function f() { if (h.link) { b.onmouseover = g; b.onmouseout = e; b.onclick = n } else { this.mouseEnabled = false } } function n(q) { if (typeof q != "undefined") { q.preventDefault(); q.stopPropagation() } if (h.link) { window.open(h.link, "_blank") } return } function e(q) { if (h.link) { b.style.opacity = h.out } return } function g(q) { if (h.hide) { b.style.opacity = h.over } return } return b } })(jwplayer); (function (a) { a.html5 = function (b) { var c = b; this.setup = function (d) { a.utils.extend(this, new a.html5.api(c, d)); return this }; return this } })(jwplayer); (function (b) { var d = b.utils; var c = d.css; b.html5.view = function (r, q, f) { var u = r; var n = q; var x = f; var w; var g; var C; var s; var D; var p; var A; function z() { w = document.createElement("div"); w.id = n.id; w.className = n.className; _videowrapper = document.createElement("div"); _videowrapper.id = w.id + "_video_wrapper"; n.id = w.id + "_video"; c(w, { position: "relative", height: x.height, width: x.width, padding: 0, backgroundColor: E(), zIndex: 0 }); function E() { if (u.skin.getComponentSettings("display") && u.skin.getComponentSettings("display").backgroundcolor) { return u.skin.getComponentSettings("display").backgroundcolor } return parseInt("000000", 16) } c(n, { width: x.width, height: x.height, top: 0, left: 0, zIndex: 1, margin: "auto", display: "block" }); c(_videowrapper, { overflow: "hidden", position: "absolute", top: 0, left: 0, bottom: 0, right: 0 }); d.wrap(n, w); d.wrap(n, _videowrapper); s = document.createElement("div"); s.id = w.id + "_displayarea"; w.appendChild(s) } function k() { for (var E = 0; E < x.plugins.order.length; E++) { var F = x.plugins.order[E]; if (d.exists(x.plugins.object[F].getDisplayElement)) { x.plugins.object[F].height = d.parseDimension(x.plugins.object[F].getDisplayElement().style.height); x.plugins.object[F].width = d.parseDimension(x.plugins.object[F].getDisplayElement().style.width); x.plugins.config[F].currentPosition = x.plugins.config[F].position } } v() } function m(E) { c(s, { display: x.getMedia().hasChrome() ? "none" : "block" }) } function v(F) { var H = x.getMedia() ? x.getMedia().getDisplayElement() : null; if (d.exists(H)) { if (A != H) { if (A && A.parentNode) { A.parentNode.replaceChild(H, A) } A = H } for (var E = 0; E < x.plugins.order.length; E++) { var G = x.plugins.order[E]; if (d.exists(x.plugins.object[G].getDisplayElement)) { x.plugins.config[G].currentPosition = x.plugins.config[G].position } } } j(x.width, x.height) } this.setup = function () { if (x && x.getMedia()) { n = x.getMedia().getDisplayElement() } z(); k(); u.jwAddEventListener(b.api.events.JWPLAYER_PLAYER_STATE, m); u.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_LOADED, v); u.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_META, function () { y() }); var E; if (d.exists(window.onresize)) { E = window.onresize } window.onresize = function (F) { if (d.exists(E)) { try { E(F) } catch (H) { } } if (u.jwGetFullscreen()) { var G = document.body.getBoundingClientRect(); x.width = Math.abs(G.left) + Math.abs(G.right); x.height = window.innerHeight } j(x.width, x.height) } }; function h(E) { switch (E.keyCode) { case 27: if (u.jwGetFullscreen()) { u.jwSetFullscreen(false) } break; case 32: if (u.jwGetState() != b.api.events.state.IDLE && u.jwGetState() != b.api.events.state.PAUSED) { u.jwPause() } else { u.jwPlay() } break } } function j(H, E) { if (w.style.display == "none") { return } var G = [].concat(x.plugins.order); G.reverse(); D = G.length + 2; if (!x.fullscreen) { x.width = H; x.height = E; g = H; C = E; c(s, { top: 0, bottom: 0, left: 0, right: 0, width: H, height: E, position: "relative" }); c(w, { height: C, width: g }); var F = o(t, G); if (F.length > 0) { D += F.length; var J = F.indexOf("playlist"), I = F.indexOf("controlbar"); if (J >= 0 && I >= 0) { F[J] = F.splice(I, 1, F[J])[0] } o(l, F, true) } } else { if (!(navigator && navigator.vendor && navigator.vendor.indexOf("Apple") == 0)) { o(B, G, true) } } y() } function o(J, G, H) { var F = []; for (var E = 0; E < G.length; E++) { var K = G[E]; if (d.exists(x.plugins.object[K].getDisplayElement)) { if (x.plugins.config[K].currentPosition != b.html5.view.positions.NONE) { var I = J(K, D--); if (!I) { F.push(K) } else { x.plugins.object[K].resize(I.width, I.height); if (H) { delete I.width; delete I.height } c(x.plugins.object[K].getDisplayElement(), I) } } else { c(x.plugins.object[K].getDisplayElement(), { display: "none" }) } } } return F } function t(F, G) { if (d.exists(x.plugins.object[F].getDisplayElement)) { if (x.plugins.config[F].position && a(x.plugins.config[F].position)) { if (!d.exists(x.plugins.object[F].getDisplayElement().parentNode)) { w.appendChild(x.plugins.object[F].getDisplayElement()) } var E = e(F); E.zIndex = G; return E } } return false } function l(G, H) { if (!d.exists(x.plugins.object[G].getDisplayElement().parentNode)) { s.appendChild(x.plugins.object[G].getDisplayElement()) } var E = x.width, F = x.height; if (typeof x.width == "string" && x.width.lastIndexOf("%") > -1) { percentage = parseFloat(x.width.substring(0, x.width.lastIndexOf("%"))) / 100; E = Math.round(window.innerWidth * percentage) } if (typeof x.height == "string" && x.height.lastIndexOf("%") > -1) { percentage = parseFloat(x.height.substring(0, x.height.lastIndexOf("%"))) / 100; F = Math.round(window.innerHeight * percentage) } return { position: "absolute", width: (E - d.parseDimension(s.style.left) - d.parseDimension(s.style.right)), height: (F - d.parseDimension(s.style.top) - d.parseDimension(s.style.bottom)), zIndex: H} } function B(E, F) { return { position: "fixed", width: x.width, height: x.height, zIndex: F} } function y() { if (!d.exists(x.getMedia())) { return } s.style.position = "absolute"; var H = x.getMedia().getDisplayElement(); if (H && H.tagName.toLowerCase() == "video") { H.style.position = "absolute"; var E, I; if (s.style.width.toString().lastIndexOf("%") > -1 || s.style.width.toString().lastIndexOf("%") > -1) { var F = s.getBoundingClientRect(); E = Math.abs(F.left) + Math.abs(F.right); I = Math.abs(F.top) + Math.abs(F.bottom) } else { E = d.parseDimension(s.style.width); I = d.parseDimension(s.style.height) } if (H.parentNode) { H.parentNode.style.left = s.style.left; H.parentNode.style.top = s.style.top } d.stretch(u.jwGetStretching(), H, E, I, H.videoWidth ? H.videoWidth : 400, H.videoHeight ? H.videoHeight : 300) } else { var G = x.plugins.object.display.getDisplayElement(); if (G) { x.getMedia().resize(d.parseDimension(G.style.width), d.parseDimension(G.style.height)) } else { x.getMedia().resize(d.parseDimension(s.style.width), d.parseDimension(s.style.height)) } } } function e(F) { var G = { position: "absolute", margin: 0, padding: 0, top: null }; var E = x.plugins.config[F].currentPosition.toLowerCase(); switch (E.toUpperCase()) { case b.html5.view.positions.TOP: G.top = d.parseDimension(s.style.top); G.left = d.parseDimension(s.style.left); G.width = g - d.parseDimension(s.style.left) - d.parseDimension(s.style.right); G.height = x.plugins.object[F].height; s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].height + "px"; s.style.height = d.parseDimension(s.style.height) - G.height + "px"; break; case b.html5.view.positions.RIGHT: G.top = d.parseDimension(s.style.top); G.right = d.parseDimension(s.style.right); G.width = x.plugins.object[F].width; G.height = C - d.parseDimension(s.style.top) - d.parseDimension(s.style.bottom); s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].width + "px"; s.style.width = d.parseDimension(s.style.width) - G.width + "px"; break; case b.html5.view.positions.BOTTOM: G.bottom = d.parseDimension(s.style.bottom); G.left = d.parseDimension(s.style.left); G.width = g - d.parseDimension(s.style.left) - d.parseDimension(s.style.right); G.height = x.plugins.object[F].height; s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].height + "px"; s.style.height = d.parseDimension(s.style.height) - G.height + "px"; break; case b.html5.view.positions.LEFT: G.top = d.parseDimension(s.style.top); G.left = d.parseDimension(s.style.left); G.width = x.plugins.object[F].width; G.height = C - d.parseDimension(s.style.top) - d.parseDimension(s.style.bottom); s.style[E] = d.parseDimension(s.style[E]) + x.plugins.object[F].width + "px"; s.style.width = d.parseDimension(s.style.width) - G.width + "px"; break; default: break } return G } this.resize = j; this.fullscreen = function (H) { if (navigator && navigator.vendor && navigator.vendor.indexOf("Apple") === 0) { if (x.getMedia().getDisplayElement().webkitSupportsFullscreen) { if (H) { try { x.getMedia().getDisplayElement().webkitEnterFullscreen() } catch (G) { } } else { try { x.getMedia().getDisplayElement().webkitExitFullscreen() } catch (G) { } } } } else { if (H) { document.onkeydown = h; clearInterval(p); var F = document.body.getBoundingClientRect(); x.width = Math.abs(F.left) + Math.abs(F.right); x.height = window.innerHeight; var E = { position: "fixed", width: "100%", height: "100%", top: 0, left: 0, zIndex: 2147483000 }; c(w, E); E.zIndex = 1; if (x.getMedia() && x.getMedia().getDisplayElement()) { c(x.getMedia().getDisplayElement(), E) } E.zIndex = 2; c(s, E) } else { document.onkeydown = ""; x.width = g; x.height = C; c(w, { position: "relative", height: x.height, width: x.width, zIndex: 0 }) } j(x.width, x.height) } } }; function a(e) { return ([b.html5.view.positions.TOP, b.html5.view.positions.RIGHT, b.html5.view.positions.BOTTOM, b.html5.view.positions.LEFT].toString().indexOf(e.toUpperCase()) > -1) } b.html5.view.positions = { TOP: "TOP", RIGHT: "RIGHT", BOTTOM: "BOTTOM", LEFT: "LEFT", OVER: "OVER", NONE: "NONE"} })(jwplayer); (function (a) { var b = { backgroundcolor: "", margin: 10, font: "Arial,sans-serif", fontsize: 10, fontcolor: parseInt("000000", 16), fontstyle: "normal", fontweight: "bold", buttoncolor: parseInt("ffffff", 16), position: a.html5.view.positions.BOTTOM, idlehide: false, layout: { left: { position: "left", elements: [{ name: "play", type: "button" }, { name: "divider", type: "divider" }, { name: "prev", type: "button" }, { name: "divider", type: "divider" }, { name: "next", type: "button" }, { name: "divider", type: "divider" }, { name: "elapsed", type: "text"}] }, center: { position: "center", elements: [{ name: "time", type: "slider"}] }, right: { position: "right", elements: [{ name: "duration", type: "text" }, { name: "blank", type: "button" }, { name: "divider", type: "divider" }, { name: "mute", type: "button" }, { name: "volume", type: "slider" }, { name: "divider", type: "divider" }, { name: "fullscreen", type: "button"}]}} }; _utils = a.utils; _css = _utils.css; _hide = function (c) { _css(c, { display: "none" }) }; _show = function (c) { _css(c, { display: "block" }) }; a.html5.controlbar = function (l, V) { var k = l; var D = _utils.extend({}, b, k.skin.getComponentSettings("controlbar"), V); if (D.position == a.html5.view.positions.NONE || typeof a.html5.view.positions[D.position] == "undefined") { return } if (_utils.mapLength(k.skin.getComponentLayout("controlbar")) > 0) { D.layout = k.skin.getComponentLayout("controlbar") } var ac; var P; var ab; var E; var v = "none"; var g; var j; var ad; var f; var e; var y; var Q = {}; var p = false; var c = {}; var Y; var h = false; var o; var d; var S = false; var G = false; var W = new a.html5.eventdispatcher(); _utils.extend(this, W); function J() { if (!Y) { Y = k.skin.getSkinElement("controlbar", "background"); if (!Y) { Y = { width: 0, height: 0, src: null} } } return Y } function N() { ab = 0; E = 0; P = 0; if (!p) { var ak = { height: J().height, backgroundColor: D.backgroundcolor }; ac = document.createElement("div"); ac.id = k.id + "_jwplayer_controlbar"; _css(ac, ak) } var aj = (k.skin.getSkinElement("controlbar", "capLeft")); var ai = (k.skin.getSkinElement("controlbar", "capRight")); if (aj) { x("capLeft", "left", false, ac) } var al = { position: "absolute", height: J().height, left: (aj ? aj.width : 0), zIndex: 0 }; Z("background", ac, al, "img"); if (J().src) { Q.background.src = J().src } al.zIndex = 1; Z("elements", ac, al); if (ai) { x("capRight", "right", false, ac) } } this.getDisplayElement = function () { return ac }; this.resize = function (ak, ai) { _utils.cancelAnimation(ac); document.getElementById(k.id).onmousemove = A; e = ak; y = ai; if (G != k.jwGetFullscreen()) { G = k.jwGetFullscreen(); d = undefined } var aj = w(); A(); I({ id: k.id, duration: ad, position: j }); u({ id: k.id, bufferPercent: f }); return aj }; this.show = function () { if (h) { h = false; _show(ac); T() } }; this.hide = function () { if (!h) { h = true; _hide(ac); aa() } }; function q() { var aj = ["timeSlider", "volumeSlider", "timeSliderRail", "volumeSliderRail"]; for (var ak in aj) { var ai = aj[ak]; if (typeof Q[ai] != "undefined") { c[ai] = Q[ai].getBoundingClientRect() } } } function A(ai) { if (h) { return } if (D.position == a.html5.view.positions.OVER || k.jwGetFullscreen()) { clearTimeout(o); switch (k.jwGetState()) { case a.api.events.state.PAUSED: case a.api.events.state.IDLE: if (!D.idlehide || _utils.exists(ai)) { U() } if (D.idlehide) { o = setTimeout(function () { z() }, 2000) } break; default: if (ai) { U() } o = setTimeout(function () { z() }, 2000); break } } } function z(ai) { aa(); _utils.cancelAnimation(ac); _utils.fadeTo(ac, 0, 0.1, 1, 0) } function U() { T(); _utils.cancelAnimation(ac); _utils.fadeTo(ac, 1, 0, 1, 0) } function H(ai) { return function () { if (S && d != ai) { d = ai; W.sendEvent(ai, { component: "controlbar", boundingRect: O() }) } } } var T = H(a.api.events.JWPLAYER_COMPONENT_SHOW); var aa = H(a.api.events.JWPLAYER_COMPONENT_HIDE); function O() { if (D.position == a.html5.view.positions.OVER || k.jwGetFullscreen()) { return _utils.getDimensions(ac) } else { return { x: 0, y: 0, width: 0, height: 0} } } function Z(am, al, ak, ai) { var aj; if (!p) { if (!ai) { ai = "div" } aj = document.createElement(ai); Q[am] = aj; aj.id = ac.id + "_" + am; al.appendChild(aj) } else { aj = document.getElementById(ac.id + "_" + am) } if (_utils.exists(ak)) { _css(aj, ak) } return aj } function M() { ah(D.layout.left); ah(D.layout.right, -1); ah(D.layout.center) } function ah(al, ai) { var am = al.position == "right" ? "right" : "left"; var ak = _utils.extend([], al.elements); if (_utils.exists(ai)) { ak.reverse() } for (var aj = 0; aj < ak.length; aj++) { C(ak[aj], am) } } function K() { return P++ } function C(am, ao) { var al, aj, ak, ai, aq; if (am.type == "divider") { x("divider" + K(), ao, true, undefined, undefined, am.width, am.element); return } switch (am.name) { case "play": x("playButton", ao, false); x("pauseButton", ao, true); R("playButton", "jwPlay"); R("pauseButton", "jwPause"); break; case "prev": x("prevButton", ao, true); R("prevButton", "jwPlaylistPrev"); break; case "stop": x("stopButton", ao, true); R("stopButton", "jwStop"); break; case "next": x("nextButton", ao, true); R("nextButton", "jwPlaylistNext"); break; case "elapsed": x("elapsedText", ao, true); break; case "time": aj = !_utils.exists(k.skin.getSkinElement("controlbar", "timeSliderCapLeft")) ? 0 : k.skin.getSkinElement("controlbar", "timeSliderCapLeft").width; ak = !_utils.exists(k.skin.getSkinElement("controlbar", "timeSliderCapRight")) ? 0 : k.skin.getSkinElement("controlbar", "timeSliderCapRight").width; al = ao == "left" ? aj : ak; ai = k.skin.getSkinElement("controlbar", "timeSliderRail").width + aj + ak; aq = { height: J().height, position: "absolute", top: 0, width: ai }; aq[ao] = ao == "left" ? ab : E; var an = Z("timeSlider", Q.elements, aq); x("timeSliderCapLeft", ao, true, an, ao == "left" ? 0 : al); x("timeSliderRail", ao, false, an, al); x("timeSliderBuffer", ao, false, an, al); x("timeSliderProgress", ao, false, an, al); x("timeSliderThumb", ao, false, an, al); x("timeSliderCapRight", ao, true, an, ao == "right" ? 0 : al); X("time"); break; case "fullscreen": x("fullscreenButton", ao, false); x("normalscreenButton", ao, true); R("fullscreenButton", "jwSetFullscreen", true); R("normalscreenButton", "jwSetFullscreen", false); break; case "volume": aj = !_utils.exists(k.skin.getSkinElement("controlbar", "volumeSliderCapLeft")) ? 0 : k.skin.getSkinElement("controlbar", "volumeSliderCapLeft").width; ak = !_utils.exists(k.skin.getSkinElement("controlbar", "volumeSliderCapRight")) ? 0 : k.skin.getSkinElement("controlbar", "volumeSliderCapRight").width; al = ao == "left" ? aj : ak; ai = k.skin.getSkinElement("controlbar", "volumeSliderRail").width + aj + ak; aq = { height: J().height, position: "absolute", top: 0, width: ai }; aq[ao] = ao == "left" ? ab : E; var ap = Z("volumeSlider", Q.elements, aq); x("volumeSliderCapLeft", ao, true, ap, ao == "left" ? 0 : al); x("volumeSliderRail", ao, true, ap, al); x("volumeSliderProgress", ao, false, ap, al); x("volumeSliderCapRight", ao, true, ap, ao == "right" ? 0 : al); X("volume"); break; case "mute": x("muteButton", ao, false); x("unmuteButton", ao, true); R("muteButton", "jwSetMute", true); R("unmuteButton", "jwSetMute", false); break; case "duration": x("durationText", ao, true); break } } function x(al, ao, aj, ar, am, ai, ak) { if (_utils.exists(k.skin.getSkinElement("controlbar", al)) || al.indexOf("Text") > 0 || al.indexOf("divider") === 0) { var an = { height: J().height, position: "absolute", display: "block", top: 0 }; if ((al.indexOf("next") === 0 || al.indexOf("prev") === 0) && k.jwGetPlaylist().length < 2) { aj = false; an.display = "none" } var at; if (al.indexOf("Text") > 0) { al.innerhtml = "00:00"; an.font = D.fontsize + "px/" + (J().height + 1) + "px " + D.font; an.color = D.fontcolor; an.textAlign = "center"; an.fontWeight = D.fontweight; an.fontStyle = D.fontstyle; an.cursor = "default"; at = 14 + 3 * D.fontsize } else { if (al.indexOf("divider") === 0) { if (ai) { if (!isNaN(parseInt(ai))) { at = parseInt(ai) } } else { if (ak) { var ap = k.skin.getSkinElement("controlbar", ak); if (ap) { an.background = "url(" + ap.src + ") repeat-x center left"; at = ap.width } } else { an.background = "url(" + k.skin.getSkinElement("controlbar", "divider").src + ") repeat-x center left"; at = k.skin.getSkinElement("controlbar", "divider").width } } } else { an.background = "url(" + k.skin.getSkinElement("controlbar", al).src + ") repeat-x center left"; at = k.skin.getSkinElement("controlbar", al).width } } if (ao == "left") { an.left = isNaN(am) ? ab : am; if (aj) { ab += at } } else { if (ao == "right") { an.right = isNaN(am) ? E : am; if (aj) { E += at } } } if (_utils.typeOf(ar) == "undefined") { ar = Q.elements } an.width = at; if (p) { _css(Q[al], an) } else { var aq = Z(al, ar, an); if (_utils.exists(k.skin.getSkinElement("controlbar", al + "Over"))) { aq.onmouseover = function (au) { aq.style.backgroundImage = ["url(", k.skin.getSkinElement("controlbar", al + "Over").src, ")"].join("") }; aq.onmouseout = function (au) { aq.style.backgroundImage = ["url(", k.skin.getSkinElement("controlbar", al).src, ")"].join("") } } } } } function F() { k.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, B); k.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM, s); k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_BUFFER, u); k.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, r); k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_TIME, I); k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE, ag); k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_VOLUME, m); k.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_COMPLETE, L) } function B() { N(); M(); w(); ae() } function s(ai) { ad = k.jwGetPlaylist()[ai.index].duration; I({ id: k.id, duration: ad, position: 0 }); u({ id: k.id, bufferProgress: 0 }) } function ae() { I({ id: k.id, duration: k.jwGetDuration(), position: 0 }); u({ id: k.id, bufferProgress: 0 }); ag({ id: k.id, mute: k.jwGetMute() }); r({ id: k.id, newstate: a.api.events.state.IDLE }); m({ id: k.id, volume: k.jwGetVolume() }) } function R(ak, al, aj) { if (p) { return } if (_utils.exists(k.skin.getSkinElement("controlbar", ak))) { var ai = Q[ak]; if (_utils.exists(ai)) { _css(ai, { cursor: "pointer" }); if (al == "fullscreen") { ai.onmouseup = function (am) { am.stopPropagation(); k.jwSetFullscreen(!k.jwGetFullscreen()) } } else { ai.onmouseup = function (am) { am.stopPropagation(); if (_utils.exists(aj)) { k[al](aj) } else { k[al]() } } } } } } function X(ai) { if (p) { return } var aj = Q[ai + "Slider"]; _css(Q.elements, { cursor: "pointer" }); _css(aj, { cursor: "pointer" }); aj.onmousedown = function (ak) { v = ai }; aj.onmouseup = function (ak) { ak.stopPropagation(); af(ak.pageX) }; aj.onmousemove = function (ak) { if (v == "time") { g = true; var al = ak.pageX - c[ai + "Slider"].left - window.pageXOffset; _css(Q.timeSliderThumb, { left: al }) } } } function af(aj) { g = false; var ai; if (v == "time") { ai = aj - c.timeSliderRail.left + window.pageXOffset; var al = ai / c.timeSliderRail.width * ad; if (al < 0) { al = 0 } else { if (al > ad) { al = ad - 3 } } if (k.jwGetState() == a.api.events.state.PAUSED || k.jwGetState() == a.api.events.state.IDLE) { k.jwPlay() } k.jwSeek(al) } else { if (v == "volume") { ai = aj - c.volumeSliderRail.left - window.pageXOffset; var ak = Math.round(ai / c.volumeSliderRail.width * 100); if (ak < 0) { ak = 0 } else { if (ak > 100) { ak = 100 } } if (k.jwGetMute()) { k.jwSetMute(false) } k.jwSetVolume(ak) } } v = "none" } function u(aj) { if (_utils.exists(aj.bufferPercent)) { f = aj.bufferPercent } if (c.timeSliderRail) { var ak = c.timeSliderRail.width; var ai = isNaN(Math.round(ak * f / 100)) ? 0 : Math.round(ak * f / 100); _css(Q.timeSliderBuffer, { width: ai }) } } function ag(ai) { if (ai.mute) { _hide(Q.muteButton); _show(Q.unmuteButton); _hide(Q.volumeSliderProgress) } else { _show(Q.muteButton); _hide(Q.unmuteButton); _show(Q.volumeSliderProgress) } } function r(ai) { if (ai.newstate == a.api.events.state.BUFFERING || ai.newstate == a.api.events.state.PLAYING) { _show(Q.pauseButton); _hide(Q.playButton) } else { _hide(Q.pauseButton); _show(Q.playButton) } A(); if (ai.newstate == a.api.events.state.IDLE) { _hide(Q.timeSliderBuffer); _hide(Q.timeSliderProgress); _hide(Q.timeSliderThumb); I({ id: k.id, duration: k.jwGetDuration(), position: 0 }) } else { _show(Q.timeSliderBuffer); if (ai.newstate != a.api.events.state.BUFFERING) { _show(Q.timeSliderProgress); _show(Q.timeSliderThumb) } } } function L(ai) { u({ bufferPercent: 0 }); I(_utils.extend(ai, { position: 0, duration: ad })) } function I(al) { if (_utils.exists(al.position)) { j = al.position } if (_utils.exists(al.duration)) { ad = al.duration } var aj = (j === ad === 0) ? 0 : j / ad; var am = c.timeSliderRail; if (am) { var ai = isNaN(Math.round(am.width * aj)) ? 0 : Math.round(am.width * aj); var ak = ai; if (Q.timeSliderProgress) { Q.timeSliderProgress.style.width = ai + "px"; if (!g) { if (Q.timeSliderThumb) { Q.timeSliderThumb.style.left = ak + "px" } } } } if (Q.durationText) { Q.durationText.innerHTML = _utils.timeFormat(ad) } if (Q.elapsedText) { Q.elapsedText.innerHTML = _utils.timeFormat(j) } } function n() { var am, aj; var ak = document.getElementById(ac.id + "_elements"); if (!ak) { return } var al = ak.childNodes; for (var ai in ak.childNodes) { if (isNaN(parseInt(ai, 10))) { continue } if (al[ai].id.indexOf(ac.id + "_divider") === 0 && aj && aj.id.indexOf(ac.id + "_divider") === 0 && al[ai].style.backgroundImage == aj.style.backgroundImage) { al[ai].style.display = "none" } else { if (al[ai].id.indexOf(ac.id + "_divider") === 0 && am && am.style.display != "none") { al[ai].style.display = "block" } } if (al[ai].style.display != "none") { aj = al[ai] } am = al[ai] } } function w() { n(); if (k.jwGetFullscreen()) { _show(Q.normalscreenButton); _hide(Q.fullscreenButton) } else { _hide(Q.normalscreenButton); _show(Q.fullscreenButton) } var aj = { width: e }; var ai = {}; if (D.position == a.html5.view.positions.OVER || k.jwGetFullscreen()) { aj.left = D.margin; aj.width -= 2 * D.margin; aj.top = y - J().height - D.margin; aj.height = J().height } var al = k.skin.getSkinElement("controlbar", "capLeft"); var ak = k.skin.getSkinElement("controlbar", "capRight"); ai.left = al ? al.width : 0; ai.width = aj.width - ai.left - (ak ? ak.width : 0); var am = !_utils.exists(k.skin.getSkinElement("controlbar", "timeSliderCapLeft")) ? 0 : k.skin.getSkinElement("controlbar", "timeSliderCapLeft").width; _css(Q.timeSliderRail, { width: (ai.width - ab - E), left: am }); if (_utils.exists(Q.timeSliderCapRight)) { _css(Q.timeSliderCapRight, { left: am + (ai.width - ab - E) }) } _css(ac, aj); _css(Q.elements, ai); _css(Q.background, ai); q(); return aj } function m(am) { if (_utils.exists(Q.volumeSliderRail)) { var ak = isNaN(am.volume / 100) ? 1 : am.volume / 100; var al = _utils.parseDimension(Q.volumeSliderRail.style.width); var ai = isNaN(Math.round(al * ak)) ? 0 : Math.round(al * ak); var an = _utils.parseDimension(Q.volumeSliderRail.style.right); var aj = (!_utils.exists(k.skin.getSkinElement("controlbar", "volumeSliderCapLeft"))) ? 0 : k.skin.getSkinElement("controlbar", "volumeSliderCapLeft").width; _css(Q.volumeSliderProgress, { width: ai, left: aj }); if (_utils.exists(Q.volumeSliderCapLeft)) { _css(Q.volumeSliderCapLeft, { left: 0 }) } } } function t() { N(); M(); q(); p = true; F(); D.idlehide = (D.idlehide.toString().toLowerCase() == "true"); if (D.position == a.html5.view.positions.OVER && D.idlehide) { ac.style.opacity = 0; S = true } else { setTimeout((function () { S = true; T() }), 1) } ae() } t(); return this } })(jwplayer); (function (b) { var a = ["width", "height", "state", "playlist", "item", "position", "buffer", "duration", "volume", "mute", "fullscreen"]; var c = b.utils; b.html5.controller = function (z, w, h, v) { var C = z; var G = h; var g = v; var o = w; var J = true; var e = -1; var A = c.exists(G.config.debug) && (G.config.debug.toString().toLowerCase() == "console"); var m = new b.html5.eventdispatcher(o.id, A); c.extend(this, m); var E = []; var d = false; function r(M) { if (d) { m.sendEvent(M.type, M) } else { E.push(M) } } function K(M) { if (!d) { m.sendEvent(b.api.events.JWPLAYER_READY, M); if (b.utils.exists(window.playerReady)) { playerReady(M) } if (b.utils.exists(window[h.config.playerReady])) { window[h.config.playerReady](M) } while (E.length > 0) { var O = E.shift(); m.sendEvent(O.type, O) } if (h.config.autostart && !b.utils.isIOS()) { t(G.item) } while (p.length > 0) { var N = p.shift(); x(N.method, N.arguments) } d = true } } G.addGlobalListener(r); G.addEventListener(b.api.events.JWPLAYER_MEDIA_BUFFER_FULL, function () { G.getMedia().play() }); G.addEventListener(b.api.events.JWPLAYER_MEDIA_TIME, function (M) { if (M.position >= G.playlist[G.item].start && e >= 0) { G.playlist[G.item].start = e; e = -1 } }); G.addEventListener(b.api.events.JWPLAYER_MEDIA_COMPLETE, function (M) { setTimeout(s, 25) }); function u() { try { f(G.item); if (G.playlist[G.item].levels[0].file.length > 0) { if (J || G.state == b.api.events.state.IDLE) { G.getMedia().load(G.playlist[G.item]); J = false } else { if (G.state == b.api.events.state.PAUSED) { G.getMedia().play() } } } return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function I() { try { if (G.playlist[G.item].levels[0].file.length > 0) { switch (G.state) { case b.api.events.state.PLAYING: case b.api.events.state.BUFFERING: G.getMedia().pause(); break } } return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function D(M) { try { if (G.playlist[G.item].levels[0].file.length > 0) { if (typeof M != "number") { M = parseFloat(M) } switch (G.state) { case b.api.events.state.IDLE: if (e < 0) { e = G.playlist[G.item].start; G.playlist[G.item].start = M } u(); break; case b.api.events.state.PLAYING: case b.api.events.state.PAUSED: case b.api.events.state.BUFFERING: G.seek(M); break } } return true } catch (N) { m.sendEvent(b.api.events.JWPLAYER_ERROR, N) } return false } function n(M) { if (!c.exists(M)) { M = true } try { G.getMedia().stop(M); return true } catch (N) { m.sendEvent(b.api.events.JWPLAYER_ERROR, N) } return false } function k() { try { if (G.playlist[G.item].levels[0].file.length > 0) { if (G.config.shuffle) { f(y()) } else { if (G.item + 1 == G.playlist.length) { f(0) } else { f(G.item + 1) } } } if (G.state != b.api.events.state.IDLE) { var N = G.state; G.state = b.api.events.state.IDLE; m.sendEvent(b.api.events.JWPLAYER_PLAYER_STATE, { oldstate: N, newstate: b.api.events.state.IDLE }) } u(); return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function j() { try { if (G.playlist[G.item].levels[0].file.length > 0) { if (G.config.shuffle) { f(y()) } else { if (G.item === 0) { f(G.playlist.length - 1) } else { f(G.item - 1) } } } if (G.state != b.api.events.state.IDLE) { var N = G.state; G.state = b.api.events.state.IDLE; m.sendEvent(b.api.events.JWPLAYER_PLAYER_STATE, { oldstate: N, newstate: b.api.events.state.IDLE }) } u(); return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function y() { var M = null; if (G.playlist.length > 1) { while (!c.exists(M)) { M = Math.floor(Math.random() * G.playlist.length); if (M == G.item) { M = null } } } else { M = 0 } return M } function t(N) { if (!G.playlist || !G.playlist[N]) { return false } try { if (G.playlist[N].levels[0].file.length > 0) { var O = G.state; if (O !== b.api.events.state.IDLE) { if (G.playlist[G.item].provider == G.playlist[N].provider) { n(false) } else { n() } } f(N); u() } return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function f(M) { if (!G.playlist[M]) { return } G.setActiveMediaProvider(G.playlist[M]); if (G.item != M) { G.item = M; J = true; m.sendEvent(b.api.events.JWPLAYER_PLAYLIST_ITEM, { index: M }) } } function H(N) { try { f(G.item); var O = G.getMedia(); switch (typeof (N)) { case "number": O.volume(N); break; case "string": O.volume(parseInt(N, 10)); break } return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function q(N) { try { f(G.item); var O = G.getMedia(); if (typeof N == "undefined") { O.mute(!G.mute) } else { if (N.toString().toLowerCase() == "true") { O.mute(true) } else { O.mute(false) } } return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function l(N, M) { try { G.width = N; G.height = M; g.resize(N, M); m.sendEvent(b.api.events.JWPLAYER_RESIZE, { width: G.width, height: G.height }); return true } catch (O) { m.sendEvent(b.api.events.JWPLAYER_ERROR, O) } return false } function B(N) { try { if (typeof N == "undefined") { G.fullscreen = !G.fullscreen; g.fullscreen(!G.fullscreen) } else { if (N.toString().toLowerCase() == "true") { G.fullscreen = true; g.fullscreen(true) } else { G.fullscreen = false; g.fullscreen(false) } } m.sendEvent(b.api.events.JWPLAYER_RESIZE, { width: G.width, height: G.height }); m.sendEvent(b.api.events.JWPLAYER_FULLSCREEN, { fullscreen: N }); return true } catch (M) { m.sendEvent(b.api.events.JWPLAYER_ERROR, M) } return false } function L(M) { try { n(); G.loadPlaylist(M); f(G.item); return true } catch (N) { m.sendEvent(b.api.events.JWPLAYER_ERROR, N) } return false } b.html5.controller.repeatoptions = { LIST: "LIST", ALWAYS: "ALWAYS", SINGLE: "SINGLE", NONE: "NONE" }; function s() { switch (G.config.repeat.toUpperCase()) { case b.html5.controller.repeatoptions.SINGLE: u(); break; case b.html5.controller.repeatoptions.ALWAYS: if (G.item == G.playlist.length - 1 && !G.config.shuffle) { t(0) } else { k() } break; case b.html5.controller.repeatoptions.LIST: if (G.item == G.playlist.length - 1 && !G.config.shuffle) { n(); f(0) } else { k() } break; default: n(); break } } var p = []; function F(M) { return function () { if (d) { x(M, arguments) } else { p.push({ method: M, arguments: arguments }) } } } function x(O, N) { var M = []; for (i = 0; i < N.length; i++) { M.push(N[i]) } O.apply(this, M) } this.play = F(u); this.pause = F(I); this.seek = F(D); this.stop = F(n); this.next = F(k); this.prev = F(j); this.item = F(t); this.setVolume = F(H); this.setMute = F(q); this.resize = F(l); this.setFullscreen = F(B); this.load = F(L); this.playerReady = K } })(jwplayer); (function (a) { a.html5.defaultSkin = function () { this.text = '<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.0"><settings><setting name="backcolor" value="0xFFFFFF"/><setting name="frontcolor" value="0x000000"/><setting name="lightcolor" value="0x000000"/><setting name="screencolor" value="0x000000"/></settings><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/></settings><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNrslLENwAAIwxLU/09j5AiOgD5hVQzNAVY8JK4qEfHMIKBnd2+BQlBINaiRtL/aV2rdzYBsM6CIONbI1NZENTr3RwdB2PlnJgJ6BRgA4hwu5Qg5iswAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpiYqABYBo1dNRQ+hr6H4jvA3E8NS39j4SpZvh/LJig4YxEGEqy3kET+w+AOGFQRhTJhrEQkGcczfujhg4CQwECDADpTRWU/B3wHQAAAABJRU5ErkJggg=="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiYBgFo2DwA0YC8v/R1P4nRu+ooaOGUtnQUTAKhgIACDAAFCwQCfAJ4gwAAAAASUVORK5CYII="/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNpiYBgFo2Dog/9QDAPyQHweTYwiQ/2B+D0Wi8g2tB+JTdBQRiIMJVkvEy0iglhDF9Aq9uOpHVEwoE+NJDUKRsFgAAABBgDe2hqZcNNL0AAAAABJRU5ErkJggg=="/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUeNpiYBgFo2Dog/9AfB6I5dHE/lNqKAi/B2J/ahsKw/3EGMpIhKEk66WJoaR6fz61IyqemhEFSlL61ExSo2AUDAYAEGAAiG4hj+5t7M8AAAAASUVORK5CYII="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpiYBgFo2AU0Bwwzluw+D8tLWARFhKiqQ9YuLg4aWsBGxs7bS1gZ6e5BWyjSX0UjIKhDgACDABlYQOGh5pYywAAAABJRU5ErkJggg=="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFo2AU0Bww1jc0/aelBSz8/Pw09QELOzs7bS1gY2OjrQWsrKy09gHraFIfBaNgqAOAAAMAvy0DChXHsZMAAAAASUVORK5CYII="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiYBgFo2AU0BwwAvF/WlrARGsfjFow8BaMglEwCugAAAIMAOHfAQunR+XzAAAAAElFTkSuQmCC"/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAICAYAAAA870V8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiZICA/yCCiQEJUJcDEGAAY0gBD1/m7Q0AAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiYBgFIw3MB+L/5Gj8j6yRiRTFyICJXHfTXyMLAXlGati4YDRFDj8AEGAABk8GSqqS4CoAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFgxz8p7bm+cQa+h8LHy7GhEcjIz4bmAjYykiun/8j0fakGPIfTfPgiSr6aB4FVAcAAQYAWdwR1G1Wd2gAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGpJREFUeNpi/P//PwM9ABMDncCoRYPfIqqDZcuW1UPp/6AUDcNM1DQYKtRAlaAj1mCSLSLXYIIWUctgDItoZfDA5aOoqKhGEANIM9LVR7SymGDQUctikuOIXkFNdhHEOFrDjlpEd4sAAgwAriRMub95fu8AAAAASUVORK5CYII="/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi/P//PwM9ABMDncCoRYPfIlqAeij9H5SiYZiqBqPTlFqE02BKLSLaYFItIttgQhZRzWB8FjENiuRJ7aAbsMQwYMl7wDIsWUUQ42gNO2oR3S0CCDAAKhKq6MLLn8oAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeNpiYBgFo2DQA0YC8v/xqP1PjDlMRDrEgUgxkgHIlfZoriVGjmzLsLFHAW2D6D8eA/9Tw7L/BAwgJE90PvhPpNgoGAVDEQAEGAAMdhTyXcPKcAAAAABJRU5ErkJggg=="/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYBgFo2DIg/9UUkOUAf8JiFFsyX88fJyAkcQgYMQjNkzBoAgiezyRbE+tFGSPxQJ7auYBmma0UTAKBhgABBgAJAEY6zON61sAAAAASUVORK5CYII="/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC"/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg=="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNrs1jEOgCAMBVAg7t5/8qaoIy4uoobyXsLCxA+0NCUAAADGUWvdQoQ41x4ixNBB2hBvBskdD3w5ZCkl3+33VqI0kjBBlh9rp+uTcyOP33TnolfsU85XX3yIRpQph8ZQY3wTZtU5AACASA4BBgDHoVuY1/fvOQAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrsl+1twjAQhsHq/7BBYQLYIBmBDcoGMAIjtBPQTcII2SDtBDBBwrU6pGsUO7YbO470PtKJkz9iH++d4ywWAAAAAABgljRNsyWr2bZzDuJG1rLdZhcMbTjrBCGDyUKsqQLFciJb9bSvuG/WagRVRUVUI6gqy5HVeKWfSgRyJruKIU//TrZTSn2nmlaXThrloi/v9F2STC1W4+Aw5cBzkquRc09bofFNc6YLxEON0VUZS5FPTftO49vMjRsIF3RhOGr7/D/pJw+FKU+q0vDyq8W42jCunDqI3LC5XxNj2wHLU1XjaRnb0Lhykhqhhd8MtSF5J9tbjCv4mXGvKJz/65FF/qJryyaaIvzP2QRxZTX2nTuXjvV/VPFSwyLnW7mpH99yTh1FEVro6JBSd40/pMrRdV8vPtcKl28T2pT8TnFZ4yNosct3Q0io6JfBiz1FlGdqVQH3VHnepAEAAAAAADDzEGAAcTwB10jWgxcAAAAASUVORK5CYII="/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuhJREFUeNrsWr9rU1EUznuNGqvFQh1ULOhiBx0KDtIuioO4pJuik3FxFfUPaAV1FTdx0Q5d2g4FFxehTnEpZHFoBy20tCIWtGq0TZP4HfkeHB5N8m6Sl/sa74XDybvv3vvOd8/Pe4lXrVZT3dD8VJc0B8QBcUAcEAfESktHGeR5XtMfqFQq/f92zPe/NbtGlKTdCY30kuxrpMGO94BlQCXs+rbh3ONgA6BlzP1p20d80gEI5hmA2A92Qua1Q2PtAFISM+bvjMG8U+Q7oA3rQGASwrYCU6WpNdLGYbA+Pq5jjXIiwi8EEa2UDbQSaKOIuV+SlkcCrfjY8XTI9EpKGwP0C2kru2hLtHqa4zoXtZRWyvi4CLwv9Opr6Hkn6A9HKgEANsQ1iqC3Ub/vRUk2JgmRkatK36kVrnt0qObunwUdUUMXMWYpakJsO5Am8tAw2GBIgwWA+G2S2dMpiw0gDioQRQJoKhRb1QiDwlHZUABYbaXWsm5ae6loTE4ZDxN4CZar8foVzOJ2iyZ2kWF3t7YIevffaMT5yJ70kQb2fQ1sE5SHr2wazs2wgMxgbsEKEAgxAvZUJbQLBGTSBMgNrncJbA6AljtS/eKDJ0Ez+DmrQEzXS2h1Ck25kAg0IZcUOaydCy4sYnN2fOA+2AP16gNoHALlQ+fwH7XO4CxLenUpgj4xr6ugY2roPMbMx+Xs18m/E8CVEIhxsNeg83XWOAN6grG3lGbk8uE5fr4B/WH3cJw+co/l9nTYsSGYCJ/lY5/qv0thn6nrIWmjeJcPSnWOeY++AkF8tpJHIMAUs/MaBBpj3znZfQo5psY+ZrG4gv5HickjEOymKjEeRpgyST6IuZcTcWbnjcgdPi5ghxciRKsl1lDSsgwA1i8fssonJgzmTSqfGUkCENndNdAL7PS6QQ7ZYISTo+1qq0LEWjTWcvY4isa4z+yfQB+7ooyHVg5RI7/i1Ijn/vnggDggDogD4oC00P4KMACd/juEHOrS4AAAAABJRU5ErkJggg=="/></elements></component><component name="dock"><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUeNrs0cEJACAQA8Eofu0fu/W6EM5ZSAFDRpKTBs00CQQEBAQEBAQEBAQEBAQEBATkK8iqbY+AgICAgICAgICAgICAgICAgIC86QowAG5PAQzEJ0lKAAAAAElFTkSuQmCC"/></elements></component><component name="playlist"><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNrs2NEJwCAMBcBYuv/CFuIE9VN47WWCR7iocXR3pdWdGPqqwIoMjYfQeAiNh9B4JHc6MHQVHnjggQceeOCBBx77TifyeOY0iHi8DqIdEY8dD5cL094eePzINB5CO/LwcOTptNB4CP25L4TIbZzpU7UEGAA5wz1uF5rF9AAAAABJRU5ErkJggg=="/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrsy6ENACAMAMHClp2wYxZLAg5Fcu9e3OjuOKqqfTMzbs14CIZhGIZhGIZhGP4VLwEGAK/BBnVFpB0oAAAAAElFTkSuQmCC"/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrsy7ENACAMBLE8++8caFFKKiRffU53112SGs3ttOohGIZhGIZhGIZh+Fe8BRgAiaUGde6NOSEAAAAASUVORK5CYII="/></elements></component></components></skin>'; this.xml = null; if (window.DOMParser) { parser = new DOMParser(); this.xml = parser.parseFromString(this.text, "text/xml") } else { this.xml = new ActiveXObject("Microsoft.XMLDOM"); this.xml.async = "false"; this.xml.loadXML(this.text) } return this } })(jwplayer); (function (a) { _utils = a.utils; _css = _utils.css; _hide = function (b) { _css(b, { display: "none" }) }; _show = function (b) { _css(b, { display: "block" }) }; a.html5.display = function (k, G) { var j = { icons: true, showmute: false }; var Q = _utils.extend({}, j, G); var h = k; var P = {}; var e; var u; var w; var N; var s; var I; var A; var J = !_utils.exists(h.skin.getComponentSettings("display").bufferrotation) ? 15 : parseInt(h.skin.getComponentSettings("display").bufferrotation, 10); var q = !_utils.exists(h.skin.getComponentSettings("display").bufferinterval) ? 100 : parseInt(h.skin.getComponentSettings("display").bufferinterval, 10); var z = -1; var t = ""; var K = true; var d; var g = false; var n = false; var H = new a.html5.eventdispatcher(); _utils.extend(this, H); var D = { display: { style: { cursor: "pointer", top: 0, left: 0, overflow: "hidden" }, click: m }, display_icon: { style: { cursor: "pointer", position: "absolute", top: ((h.skin.getSkinElement("display", "background").height - h.skin.getSkinElement("display", "playIcon").height) / 2), left: ((h.skin.getSkinElement("display", "background").width - h.skin.getSkinElement("display", "playIcon").width) / 2), border: 0, margin: 0, padding: 0, zIndex: 3, display: "none"} }, display_iconBackground: { style: { cursor: "pointer", position: "absolute", top: ((u - h.skin.getSkinElement("display", "background").height) / 2), left: ((e - h.skin.getSkinElement("display", "background").width) / 2), border: 0, backgroundImage: (["url(", h.skin.getSkinElement("display", "background").src, ")"]).join(""), width: h.skin.getSkinElement("display", "background").width, height: h.skin.getSkinElement("display", "background").height, margin: 0, padding: 0, zIndex: 2, display: "none"} }, display_image: { style: { display: "none", width: e, height: u, position: "absolute", cursor: "pointer", left: 0, top: 0, margin: 0, padding: 0, textDecoration: "none", zIndex: 1} }, display_text: { style: { zIndex: 4, position: "relative", opacity: 0.8, backgroundColor: parseInt("000000", 16), color: parseInt("ffffff", 16), textAlign: "center", fontFamily: "Arial,sans-serif", padding: "0 5px", fontSize: 14}} }; h.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, p); h.jwAddEventListener(a.api.events.JWPLAYER_MEDIA_MUTE, p); h.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM, p); h.jwAddEventListener(a.api.events.JWPLAYER_ERROR, o); L(); function L() { P.display = C("div", "display"); P.display_text = C("div", "display_text"); P.display.appendChild(P.display_text); P.display_image = C("img", "display_image"); P.display_image.onerror = function (R) { _hide(P.display_image) }; P.display_image.onload = y; P.display_icon = C("div", "display_icon"); P.display_iconBackground = C("div", "display_iconBackground"); P.display.appendChild(P.display_image); P.display_iconBackground.appendChild(P.display_icon); P.display.appendChild(P.display_iconBackground); f(); setTimeout((function () { n = true; if (Q.icons.toString() == "true") { F() } }), 1) } this.getDisplayElement = function () { return P.display }; this.resize = function (S, R) { _css(P.display, { width: S, height: R }); _css(P.display_text, { width: (S - 10), top: ((R - P.display_text.getBoundingClientRect().height) / 2) }); _css(P.display_iconBackground, { top: ((R - h.skin.getSkinElement("display", "background").height) / 2), left: ((S - h.skin.getSkinElement("display", "background").width) / 2) }); if (e != S || u != R) { e = S; u = R; d = undefined; F() } c(); p({}) }; this.show = function () { if (g) { g = false; r(h.jwGetState()) } }; this.hide = function () { if (!g) { B(); g = true } }; function y(R) { w = P.display_image.naturalWidth; N = P.display_image.naturalHeight; c() } function c() { _utils.stretch(h.jwGetStretching(), P.display_image, e, u, w, N) } function C(R, T) { var S = document.createElement(R); S.id = h.id + "_jwplayer_" + T; _css(S, D[T].style); return S } function f() { for (var R in P) { if (_utils.exists(D[R].click)) { P[R].onclick = D[R].click } } } function m(R) { if (typeof R.preventDefault != "undefined") { R.preventDefault() } else { R.returnValue = false } if (h.jwGetState() != a.api.events.state.PLAYING) { h.jwPlay() } else { h.jwPause() } } function O(R) { if (A) { B(); return } P.display_icon.style.backgroundImage = (["url(", h.skin.getSkinElement("display", R).src, ")"]).join(""); _css(P.display_icon, { width: h.skin.getSkinElement("display", R).width, height: h.skin.getSkinElement("display", R).height, top: (h.skin.getSkinElement("display", "background").height - h.skin.getSkinElement("display", R).height) / 2, left: (h.skin.getSkinElement("display", "background").width - h.skin.getSkinElement("display", R).width) / 2 }); b(); if (_utils.exists(h.skin.getSkinElement("display", R + "Over"))) { P.display_icon.onmouseover = function (S) { P.display_icon.style.backgroundImage = ["url(", h.skin.getSkinElement("display", R + "Over").src, ")"].join("") }; P.display_icon.onmouseout = function (S) { P.display_icon.style.backgroundImage = ["url(", h.skin.getSkinElement("display", R).src, ")"].join("") } } else { P.display_icon.onmouseover = null; P.display_icon.onmouseout = null } } function B() { if (Q.icons.toString() == "true") { _hide(P.display_icon); _hide(P.display_iconBackground); M() } } function b() { if (!g && Q.icons.toString() == "true") { _show(P.display_icon); _show(P.display_iconBackground); F() } } function o(R) { A = true; B(); P.display_text.innerHTML = R.error; _show(P.display_text); P.display_text.style.top = ((u - P.display_text.getBoundingClientRect().height) / 2) + "px" } function E() { P.display_image.style.display = "none" } function p(R) { if ((R.type == a.api.events.JWPLAYER_PLAYER_STATE || R.type == a.api.events.JWPLAYER_PLAYLIST_ITEM) && A) { A = false; _hide(P.display_text) } var S = h.jwGetState(); if (S == t) { return } t = S; if (z >= 0) { clearTimeout(z) } if (K || h.jwGetState() == a.api.events.state.PLAYING || h.jwGetState() == a.api.events.state.PAUSED) { r(h.jwGetState()) } else { z = setTimeout(l(h.jwGetState()), 500) } } function l(R) { return (function () { r(R) }) } function r(R) { if (_utils.exists(I)) { clearInterval(I); I = null; _utils.animations.rotate(P.display_icon, 0) } switch (R) { case a.api.events.state.BUFFERING: if (_utils.isIOS()) { E(); B() } else { if (h.jwGetPlaylist()[h.jwGetItem()].provider == "sound") { v() } s = 0; I = setInterval(function () { s += J; _utils.animations.rotate(P.display_icon, s % 360) }, q); O("bufferIcon"); K = true } break; case a.api.events.state.PAUSED: if (!_utils.isIOS()) { if (h.jwGetPlaylist()[h.jwGetItem()].provider != "sound") { _css(P.display_image, { background: "transparent no-repeat center center" }) } O("playIcon"); K = true } break; case a.api.events.state.IDLE: if (h.jwGetPlaylist()[h.jwGetItem()] && h.jwGetPlaylist()[h.jwGetItem()].image) { v() } else { E() } O("playIcon"); K = true; break; default: if (h.jwGetPlaylist()[h.jwGetItem()] && h.jwGetPlaylist()[h.jwGetItem()].provider == "sound") { if (_utils.isIOS()) { E(); K = false } else { v() } } else { E(); K = false } if (h.jwGetMute() && Q.showmute) { O("muteIcon") } else { B() } break } z = -1 } function v() { if (h.jwGetPlaylist()[h.jwGetItem()] && h.jwGetPlaylist()[h.jwGetItem()].image) { _css(P.display_image, { display: "block" }); P.display_image.src = _utils.getAbsolutePath(h.jwGetPlaylist()[h.jwGetItem()].image) } } function x(R) { return function () { if (!n) { return } if (!g && d != R) { d = R; H.sendEvent(R, { component: "display", boundingRect: _utils.getDimensions(P.display_iconBackground) }) } } } var F = x(a.api.events.JWPLAYER_COMPONENT_SHOW); var M = x(a.api.events.JWPLAYER_COMPONENT_HIDE); return this } })(jwplayer); (function (a) { _css = a.utils.css; a.html5.dock = function (p, u) { function q() { return { align: a.html5.view.positions.RIGHT} } var k = a.utils.extend({}, q(), u); if (k.align == "FALSE") { return } var f = {}; var s = []; var g; var v; var d = false; var t = false; var e = { x: 0, y: 0, width: 0, height: 0 }; var r; var j = new a.html5.eventdispatcher(); _utils.extend(this, j); var m = document.createElement("div"); m.id = p.id + "_jwplayer_dock"; p.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, l); this.getDisplayElement = function () { return m }; this.setButton = function (A, x, y, z) { if (!x && f[A]) { a.utils.arrays.remove(s, A); m.removeChild(f[A].div); delete f[A] } else { if (x) { if (!f[A]) { f[A] = {} } f[A].handler = x; f[A].outGraphic = y; f[A].overGraphic = z; if (!f[A].div) { s.push(A); f[A].div = document.createElement("div"); f[A].div.style.position = "relative"; m.appendChild(f[A].div); f[A].div.appendChild(document.createElement("img")); f[A].div.childNodes[0].style.position = "absolute"; f[A].div.childNodes[0].style.left = 0; f[A].div.childNodes[0].style.top = 0; f[A].div.childNodes[0].style.zIndex = 10; f[A].div.childNodes[0].style.cursor = "pointer"; f[A].div.appendChild(document.createElement("img")); f[A].div.childNodes[1].style.position = "absolute"; f[A].div.childNodes[1].style.left = 0; f[A].div.childNodes[1].style.top = 0; if (p.skin.getSkinElement("dock", "button")) { f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src } f[A].div.childNodes[1].style.zIndex = 9; f[A].div.childNodes[1].style.cursor = "pointer"; f[A].div.onmouseover = function () { if (f[A].overGraphic) { f[A].div.childNodes[0].src = f[A].overGraphic } if (p.skin.getSkinElement("dock", "buttonOver")) { f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "buttonOver").src } }; f[A].div.onmouseout = function () { if (f[A].outGraphic) { f[A].div.childNodes[0].src = f[A].outGraphic } if (p.skin.getSkinElement("dock", "button")) { f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src } }; if (f[A].overGraphic) { f[A].div.childNodes[0].src = f[A].overGraphic } if (f[A].outGraphic) { f[A].div.childNodes[0].src = f[A].outGraphic } if (p.skin.getSkinElement("dock", "button")) { f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src } } if (x) { f[A].div.onclick = function (B) { B.preventDefault(); a(p.id).callback(A); if (f[A].overGraphic) { f[A].div.childNodes[0].src = f[A].overGraphic } if (p.skin.getSkinElement("dock", "button")) { f[A].div.childNodes[1].src = p.skin.getSkinElement("dock", "button").src } } } } } h(g, v) }; function h(x, J) { if (s.length > 0) { var y = 10; var I = y; var F = -1; var G = p.skin.getSkinElement("dock", "button").height; var E = p.skin.getSkinElement("dock", "button").width; var C = x - E - y; var H, B; if (k.align == a.html5.view.positions.LEFT) { F = 1; C = y } for (var z = 0; z < s.length; z++) { var K = Math.floor(I / J); if ((I + G + y) > ((K + 1) * J)) { I = ((K + 1) * J) + y; K = Math.floor(I / J) } var A = f[s[z]].div; A.style.top = (I % J) + "px"; A.style.left = (C + (p.skin.getSkinElement("dock", "button").width + y) * K * F) + "px"; var D = { x: a.utils.parseDimension(A.style.left), y: a.utils.parseDimension(A.style.top), width: E, height: G }; if (!H || (D.x <= H.x && D.y <= H.y)) { H = D } if (!B || (D.x >= B.x && D.y >= B.y)) { B = D } I += p.skin.getSkinElement("dock", "button").height + y } e = { x: H.x, y: H.y, width: B.x - H.x + B.width, height: H.y - B.y + B.height} } if (t != p.jwGetFullscreen() || g != x || v != J) { g = x; v = J; t = p.jwGetFullscreen(); r = undefined; setTimeout(n, 1) } } function b(x) { return function () { if (!d && r != x && s.length > 0) { r = x; j.sendEvent(x, { component: "dock", boundingRect: e }) } } } function l(x) { if (a.utils.isIOS()) { switch (x.newstate) { case a.api.events.state.IDLE: o(); break; default: c(); break } } } var n = b(a.api.events.JWPLAYER_COMPONENT_SHOW); var w = b(a.api.events.JWPLAYER_COMPONENT_HIDE); this.resize = h; var o = function () { _css(m, { display: "block" }); if (d) { d = false; n() } }; var c = function () { _css(m, { display: "none" }); if (!d) { w(); d = true } }; this.hide = c; this.show = o; return this } })(jwplayer); (function (a) { a.html5.eventdispatcher = function (d, b) { var c = new a.events.eventdispatcher(b); a.utils.extend(this, c); this.sendEvent = function (e, f) { if (!a.utils.exists(f)) { f = {} } a.utils.extend(f, { id: d, version: a.version, type: e }); c.sendEvent(e, f) } } })(jwplayer); (function (a) { var b = { prefix: "http://l.longtailvideo.com/html5/", file: "logo.png", link: "http://www.longtailvideo.com/players/jw-flv-player/", margin: 8, out: 0.5, over: 1, timeout: 5, hide: true, position: "bottom-left" }; _css = a.utils.css; a.html5.logo = function (n, r) { var q = n; var u; var d; var t; var h = false; g(); function g() { o(); c(); l() } function o() { if (b.prefix) { var v = n.version.split(/\W/).splice(0, 2).join("/"); if (b.prefix.indexOf(v) < 0) { b.prefix += v + "/" } } if (r.position == a.html5.view.positions.OVER) { r.position = b.position } d = a.utils.extend({}, b) } function c() { t = document.createElement("img"); t.id = q.id + "_jwplayer_logo"; t.style.display = "none"; t.onload = function (v) { _css(t, k()); q.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, j); p() }; if (!d.file) { return } if (d.file.indexOf("http://") === 0) { t.src = d.file } else { t.src = d.prefix + d.file } } if (!d.file) { return } this.resize = function (w, v) { }; this.getDisplayElement = function () { return t }; function l() { if (d.link) { t.onmouseover = f; t.onmouseout = p; t.onclick = s } else { this.mouseEnabled = false } } function s(v) { if (typeof v != "undefined") { v.stopPropagation() } if (!h) { return } q.jwPause(); q.jwSetFullscreen(false); if (d.link) { window.open(d.link, "_top") } return } function p(v) { if (d.link && h) { t.style.opacity = d.out } return } function f(v) { if (d.hide.toString() == "true" && h) { t.style.opacity = d.over } return } function k() { var x = { textDecoration: "none", position: "absolute", cursor: "pointer" }; x.display = (d.hide.toString() == "true") ? "none" : "block"; var w = d.position.toLowerCase().split("-"); for (var v in w) { x[w[v]] = d.margin } return x } function m() { if (d.hide.toString() == "true") { t.style.display = "block"; t.style.opacity = 0; a.utils.fadeTo(t, d.out, 0.1, parseFloat(t.style.opacity)); u = setTimeout(function () { e() }, d.timeout * 1000) } h = true } function e() { h = false; if (d.hide.toString() == "true") { a.utils.fadeTo(t, 0, 0.1, parseFloat(t.style.opacity)) } } function j(v) { if (v.newstate == a.api.events.state.BUFFERING) { clearTimeout(u); m() } } return this } })(jwplayer); (function (a) { var c = { ended: a.api.events.state.IDLE, playing: a.api.events.state.PLAYING, pause: a.api.events.state.PAUSED, buffering: a.api.events.state.BUFFERING }; var e = a.utils; var b = e.css; var d = e.isIOS(); a.html5.mediavideo = function (h, s) { var r = { abort: n, canplay: k, canplaythrough: k, durationchange: G, emptied: n, ended: k, error: u, loadeddata: G, loadedmetadata: G, loadstart: k, pause: k, play: n, playing: k, progress: v, ratechange: n, seeked: k, seeking: k, stalled: k, suspend: k, timeupdate: D, volumechange: n, waiting: k, canshowcurrentframe: n, dataunavailable: n, empty: n, load: z, loadedfirstframe: n }; var j = new a.html5.eventdispatcher(); e.extend(this, j); var y = h, l = s, m, B, A, x, f, H = false, C, p, q; o(); this.load = function (J, K) { if (typeof K == "undefined") { K = true } x = J; e.empty(m); q = 0; if (J.levels && J.levels.length > 0) { if (J.levels.length == 1) { m.src = J.levels[0].file } else { if (m.src) { m.removeAttribute("src") } for (var I = 0; I < J.levels.length; I++) { var L = m.ownerDocument.createElement("source"); L.src = J.levels[I].file; m.appendChild(L); q++ } } } else { m.src = J.file } if (d) { if (J.image) { m.poster = J.image } m.controls = "controls"; m.style.display = "block" } C = p = A = false; y.buffer = 0; if (!e.exists(J.start)) { J.start = 0 } y.duration = J.duration; j.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED); if ((!d && J.levels.length == 1) || !H) { m.load() } H = false; if (K) { E(a.api.events.state.BUFFERING); j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, { bufferPercent: 0 }); this.play() } }; this.play = function () { if (B != a.api.events.state.PLAYING) { t(); if (p) { E(a.api.events.state.PLAYING) } else { E(a.api.events.state.BUFFERING) } m.play() } }; this.pause = function () { m.pause(); E(a.api.events.state.PAUSED) }; this.seek = function (I) { if (!(y.duration <= 0 || isNaN(y.duration)) && !(y.position <= 0 || isNaN(y.position))) { m.currentTime = I; m.play() } }; _stop = this.stop = function (I) { if (!e.exists(I)) { I = true } g(); if (I) { m.style.display = "none"; p = false; var J = navigator.userAgent; if (J.match(/chrome/i)) { m.src = undefined } else { if (J.match(/safari/i)) { m.removeAttribute("src") } else { m.src = "" } } m.removeAttribute("controls"); m.removeAttribute("poster"); e.empty(m); m.load(); H = true; if (m.webkitSupportsFullscreen) { try { m.webkitExitFullscreen() } catch (K) { } } } E(a.api.events.state.IDLE) }; this.fullscreen = function (I) { if (I === true) { this.resize("100%", "100%") } else { this.resize(y.config.width, y.config.height) } }; this.resize = function (J, I) { if (false) { b(l, { width: J, height: I }) } j.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE, { fullscreen: y.fullscreen, width: J, hieght: I }) }; this.volume = function (I) { if (!d) { m.volume = I / 100; y.volume = I; j.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME, { volume: Math.round(I) }) } }; this.mute = function (I) { if (!d) { m.muted = I; y.mute = I; j.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE, { mute: I }) } }; this.getDisplayElement = function () { return m }; this.hasChrome = function () { return false }; function o() { m = document.createElement("video"); B = a.api.events.state.IDLE; for (var I in r) { m.addEventListener(I, function (J) { if (e.exists(J.target.parentNode)) { r[J.type](J) } }, true) } m.setAttribute("x-webkit-airplay", "allow"); if (l.parentNode) { l.parentNode.replaceChild(m, l) } if (!m.id) { m.id = l.id } } function E(I) { if (I == a.api.events.state.PAUSED && B == a.api.events.state.IDLE) { return } if (B != I) { var J = B; y.state = B = I; j.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE, { oldstate: J, newstate: I }) } } function n(I) { } function v(K) { var J; if (e.exists(K) && K.lengthComputable && K.total) { J = K.loaded / K.total * 100 } else { if (e.exists(m.buffered) && (m.buffered.length > 0)) { var I = m.buffered.length - 1; if (I >= 0) { J = m.buffered.end(I) / m.duration * 100 } } } if (p === false && B == a.api.events.state.BUFFERING) { j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL); p = true } if (!C) { if (J == 100) { C = true } if (e.exists(J) && (J > y.buffer)) { y.buffer = Math.round(J); j.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, { bufferPercent: Math.round(J) }) } } } function D(J) { if (e.exists(J) && e.exists(J.target)) { if (!isNaN(J.target.duration) && (isNaN(y.duration) || y.duration < 1)) { if (J.target.duration == Infinity) { y.duration = 0 } else { y.duration = Math.round(J.target.duration * 10) / 10 } } if (!A && m.readyState > 0) { m.style.display = "block"; E(a.api.events.state.PLAYING) } if (B == a.api.events.state.PLAYING) { if (!A && m.readyState > 0) { A = true; try { if (m.currentTime < x.start) { m.currentTime = x.start } } catch (I) { } m.volume = y.volume / 100; m.muted = y.mute } y.position = y.duration > 0 ? (Math.round(J.target.currentTime * 10) / 10) : 0; j.sendEvent(a.api.events.JWPLAYER_MEDIA_TIME, { position: y.position, duration: y.duration }); if (y.position >= y.duration && (y.position > 0 || y.duration > 0)) { w() } } } v(J) } function z(I) { } function k(I) { if (c[I.type]) { if (I.type == "ended") { w() } else { E(c[I.type]) } } } function G(I) { var J = { height: I.target.videoHeight, width: I.target.videoWidth, duration: Math.round(I.target.duration * 10) / 10 }; if ((y.duration === 0 || isNaN(y.duration)) && I.target.duration != Infinity) { y.duration = Math.round(I.target.duration * 10) / 10 } j.sendEvent(a.api.events.JWPLAYER_MEDIA_META, { metadata: J }) } function u(K) { if (B == a.api.events.state.IDLE) { return } var J = "There was an error: "; if ((K.target.error && K.target.tagName.toLowerCase() == "video") || K.target.parentNode.error && K.target.parentNode.tagName.toLowerCase() == "video") { var I = !e.exists(K.target.error) ? K.target.parentNode.error : K.target.error; switch (I.code) { case I.MEDIA_ERR_ABORTED: J = "You aborted the video playback: "; break; case I.MEDIA_ERR_NETWORK: J = "A network error caused the video download to fail part-way: "; break; case I.MEDIA_ERR_DECODE: J = "The video playback was aborted due to a corruption problem or because the video used features your browser did not support: "; break; case I.MEDIA_ERR_SRC_NOT_SUPPORTED: J = "The video could not be loaded, either because the server or network failed or because the format is not supported: "; break; default: J = "An unknown error occurred: "; break } } else { if (K.target.tagName.toLowerCase() == "source") { q--; if (q > 0) { return } J = "The video could not be loaded, either because the server or network failed or because the format is not supported: " } else { e.log("An unknown error occurred.  Continuing..."); return } } _stop(false); J += F(); _error = true; j.sendEvent(a.api.events.JWPLAYER_ERROR, { error: J }); return } function F() { var K = ""; for (var J in x.levels) { var I = x.levels[J]; var L = l.ownerDocument.createElement("source"); K += a.utils.getAbsolutePath(I.file); if (J < (x.levels.length - 1)) { K += ", " } } return K } function t() { if (!e.exists(f)) { f = setInterval(function () { v() }, 100) } } function g() { clearInterval(f); f = null } function w() { if (B != a.api.events.state.IDLE) { _stop(false); j.sendEvent(a.api.events.JWPLAYER_MEDIA_COMPLETE) } } } })(jwplayer); (function (a) { var c = { ended: a.api.events.state.IDLE, playing: a.api.events.state.PLAYING, pause: a.api.events.state.PAUSED, buffering: a.api.events.state.BUFFERING }; var b = a.utils.css; a.html5.mediayoutube = function (j, e) { var f = new a.html5.eventdispatcher(); a.utils.extend(this, f); var l = j; var h = document.getElementById(e.id); var g = a.api.events.state.IDLE; var n, m; function k(p) { if (g != p) { var q = g; l.state = p; g = p; f.sendEvent(a.api.events.JWPLAYER_PLAYER_STATE, { oldstate: q, newstate: p }) } } this.getDisplayElement = function () { return h }; this.play = function () { if (g == a.api.events.state.IDLE) { f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, { bufferPercent: 100 }); f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER_FULL); k(a.api.events.state.PLAYING) } else { if (g == a.api.events.state.PAUSED) { k(a.api.events.state.PLAYING) } } }; this.pause = function () { k(a.api.events.state.PAUSED) }; this.seek = function (p) { }; this.stop = function (p) { if (!_utils.exists(p)) { p = true } l.position = 0; k(a.api.events.state.IDLE); if (p) { b(h, { display: "none" }) } }; this.volume = function (p) { l.volume = p; f.sendEvent(a.api.events.JWPLAYER_MEDIA_VOLUME, { volume: Math.round(p) }) }; this.mute = function (p) { h.muted = p; l.mute = p; f.sendEvent(a.api.events.JWPLAYER_MEDIA_MUTE, { mute: p }) }; this.resize = function (q, p) { if (q * p > 0 && n) { n.width = m.width = q; n.height = m.height = p } f.sendEvent(a.api.events.JWPLAYER_MEDIA_RESIZE, { fullscreen: l.fullscreen, width: q, height: p }) }; this.fullscreen = function (p) { if (p === true) { this.resize("100%", "100%") } else { this.resize(l.config.width, l.config.height) } }; this.load = function (p) { o(p); b(n, { display: "block" }); k(a.api.events.state.BUFFERING); f.sendEvent(a.api.events.JWPLAYER_MEDIA_BUFFER, { bufferPercent: 0 }); f.sendEvent(a.api.events.JWPLAYER_MEDIA_LOADED); this.play() }; this.hasChrome = function () { return (g != a.api.events.state.IDLE) }; function o(v) { var s = v.levels[0].file; s = ["http://www.youtube.com/v/", d(s), "&amp;hl=en_US&amp;fs=1&autoplay=1"].join(""); n = document.createElement("object"); n.id = h.id; n.style.position = "absolute"; var u = { movie: s, allowfullscreen: "true", allowscriptaccess: "always" }; for (var p in u) { var t = document.createElement("param"); t.name = p; t.value = u[p]; n.appendChild(t) } m = document.createElement("embed"); n.appendChild(m); var q = { src: s, type: "application/x-shockwave-flash", allowfullscreen: "true", allowscriptaccess: "always", width: n.width, height: n.height }; for (var r in q) { m.setAttribute(r, q[r]) } n.appendChild(m); n.style.zIndex = 2147483000; if (h != n && h.parentNode) { h.parentNode.replaceChild(n, h) } h = n } function d(q) { var p = q.split(/\?|\#\!/); var s = ""; for (var r = 0; r < p.length; r++) { if (p[r].substr(0, 2) == "v=") { s = p[r].substr(2) } } if (s == "") { if (q.indexOf("/v/") >= 0) { s = q.substr(q.indexOf("/v/") + 3) } else { if (q.indexOf("youtu.be") >= 0) { s = q.substr(q.indexOf("youtu.be/") + 9) } else { s = q } } } if (s.indexOf("?") > -1) { s = s.substr(0, s.indexOf("?")) } if (s.indexOf("&") > -1) { s = s.substr(0, s.indexOf("&")) } return s } this.embed = m; return this } })(jwplayer); (function (jwplayer) { var _configurableStateVariables = ["width", "height", "start", "duration", "volume", "mute", "fullscreen", "item", "plugins", "stretching"]; jwplayer.html5.model = function (api, container, options) { var _api = api; var _container = container; var _model = { id: _container.id, playlist: [], state: jwplayer.api.events.state.IDLE, position: 0, buffer: 0, config: { width: 480, height: 320, item: -1, skin: undefined, file: undefined, image: undefined, start: 0, duration: 0, bufferlength: 5, volume: 90, mute: false, fullscreen: false, repeat: "", stretching: jwplayer.utils.stretching.UNIFORM, autostart: false, debug: undefined, screencolor: undefined} }; var _media; var _eventDispatcher = new jwplayer.html5.eventdispatcher(); var _components = ["display", "logo", "controlbar", "playlist", "dock"]; jwplayer.utils.extend(_model, _eventDispatcher); for (var option in options) { if (typeof options[option] == "string") { var type = /color$/.test(option) ? "color" : null; options[option] = jwplayer.utils.typechecker(options[option], type) } var config = _model.config; var path = option.split("."); for (var edge in path) { if (edge == path.length - 1) { config[path[edge]] = options[option] } else { if (!jwplayer.utils.exists(config[path[edge]])) { config[path[edge]] = {} } config = config[path[edge]] } } } for (var index in _configurableStateVariables) { var configurableStateVariable = _configurableStateVariables[index]; _model[configurableStateVariable] = _model.config[configurableStateVariable] } var pluginorder = _components.concat([]); if (jwplayer.utils.exists(_model.plugins)) { if (typeof _model.plugins == "string") { var userplugins = _model.plugins.split(","); for (var userplugin in userplugins) { if (typeof userplugins[userplugin] == "string") { pluginorder.push(userplugins[userplugin].replace(/^\s+|\s+$/g, "")) } } } } if (jwplayer.utils.isIOS()) { pluginorder = ["display", "logo", "dock", "playlist"]; if (!jwplayer.utils.exists(_model.config.repeat)) { _model.config.repeat = "list" } } else { if (_model.config.chromeless) { pluginorder = ["logo", "dock", "playlist"]; if (!jwplayer.utils.exists(_model.config.repeat)) { _model.config.repeat = "list" } } } _model.plugins = { order: pluginorder, config: {}, object: {} }; if (typeof _model.config.components != "undefined") { for (var component in _model.config.components) { _model.plugins.config[component] = _model.config.components[component] } } for (var pluginIndex in _model.plugins.order) { var pluginName = _model.plugins.order[pluginIndex]; var pluginConfig = !jwplayer.utils.exists(_model.plugins.config[pluginName]) ? {} : _model.plugins.config[pluginName]; _model.plugins.config[pluginName] = !jwplayer.utils.exists(_model.plugins.config[pluginName]) ? pluginConfig : jwplayer.utils.extend(_model.plugins.config[pluginName], pluginConfig); if (!jwplayer.utils.exists(_model.plugins.config[pluginName].position)) { if (pluginName == "playlist") { _model.plugins.config[pluginName].position = jwplayer.html5.view.positions.NONE } else { _model.plugins.config[pluginName].position = jwplayer.html5.view.positions.OVER } } else { _model.plugins.config[pluginName].position = _model.plugins.config[pluginName].position.toString().toUpperCase() } } if (typeof _model.plugins.config.dock != "undefined") { if (typeof _model.plugins.config.dock != "object") { var position = _model.plugins.config.dock.toString().toUpperCase(); _model.plugins.config.dock = { position: position} } if (typeof _model.plugins.config.dock.position != "undefined") { _model.plugins.config.dock.align = _model.plugins.config.dock.position; _model.plugins.config.dock.position = jwplayer.html5.view.positions.OVER } } function _loadExternal(playlistfile) { var loader = new jwplayer.html5.playlistloader(); loader.addEventListener(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED, function (evt) { _model.playlist = new jwplayer.html5.playlist(evt); _loadComplete(true) }); loader.addEventListener(jwplayer.api.events.JWPLAYER_ERROR, function (evt) { _model.playlist = new jwplayer.html5.playlist({ playlist: [] }); _loadComplete(false) }); loader.load(playlistfile) } function _loadComplete() { if (_model.config.shuffle) { _model.item = _getShuffleItem() } else { if (_model.config.item >= _model.playlist.length) { _model.config.item = _model.playlist.length - 1 } else { if (_model.config.item < 0) { _model.config.item = 0 } } _model.item = _model.config.item } _eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED, { playlist: _model.playlist }); _eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_ITEM, { index: _model.item }) } _model.loadPlaylist = function (arg) { var input; if (typeof arg == "string") { if (arg.indexOf("[") == 0 || arg.indexOf("{") == "0") { try { input = eval(arg) } catch (err) { input = arg } } else { input = arg } } else { input = arg } var config; switch (jwplayer.utils.typeOf(input)) { case "object": config = input; break; case "array": config = { playlist: input }; break; default: _loadExternal(input); return; break } _model.playlist = new jwplayer.html5.playlist(config); if (jwplayer.utils.extension(_model.playlist[0].file) == "xml") { _loadExternal(_model.playlist[0].file) } else { _loadComplete() } }; function _getShuffleItem() { var result = null; if (_model.playlist.length > 1) { while (!jwplayer.utils.exists(result)) { result = Math.floor(Math.random() * _model.playlist.length); if (result == _model.item) { result = null } } } else { result = 0 } return result } function forward(evt) { if (evt.type == jwplayer.api.events.JWPLAYER_MEDIA_LOADED) { _container = _media.getDisplayElement() } _eventDispatcher.sendEvent(evt.type, evt) } var _mediaProviders = {}; _model.setActiveMediaProvider = function (playlistItem) { if (playlistItem.provider == "audio") { playlistItem.provider = "sound" } var provider = playlistItem.provider; var current = _media ? _media.getDisplayElement() : null; if (provider == "sound" || provider == "http" || provider == "") { provider = "video" } if (!jwplayer.utils.exists(_mediaProviders[provider])) { switch (provider) { case "video": _media = new jwplayer.html5.mediavideo(_model, current ? current : _container); break; case "youtube": _media = new jwplayer.html5.mediayoutube(_model, current ? current : _container); break } if (!jwplayer.utils.exists(_media)) { return false } _media.addGlobalListener(forward); _mediaProviders[provider] = _media } else { if (_media != _mediaProviders[provider]) { if (_media) { _media.stop() } _media = _mediaProviders[provider] } } return true }; _model.getMedia = function () { return _media }; _model.seek = function (pos) { _eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_MEDIA_SEEK, { position: _model.position, offset: pos }); return _media.seek(pos) }; _model.setupPlugins = function () { if (!jwplayer.utils.exists(_model.plugins) || !jwplayer.utils.exists(_model.plugins.order) || _model.plugins.order.length == 0) { jwplayer.utils.log("No plugins to set up"); return _model } for (var i = 0; i < _model.plugins.order.length; i++) { try { var pluginName = _model.plugins.order[i]; if (jwplayer.utils.exists(jwplayer.html5[pluginName])) { if (pluginName == "playlist") { _model.plugins.object[pluginName] = new jwplayer.html5.playlistcomponent(_api, _model.plugins.config[pluginName]) } else { _model.plugins.object[pluginName] = new jwplayer.html5[pluginName](_api, _model.plugins.config[pluginName]) } } else { _model.plugins.order.splice(plugin, plugin + 1) } if (typeof _model.plugins.object[pluginName].addGlobalListener == "function") { _model.plugins.object[pluginName].addGlobalListener(forward) } } catch (err) { jwplayer.utils.log("Could not setup " + pluginName) } } }; return _model } })(jwplayer); (function (a) { a.html5.playlist = function (b) { var d = []; if (b.playlist && b.playlist instanceof Array && b.playlist.length > 0) { for (var c in b.playlist) { if (!isNaN(parseInt(c))) { d.push(new a.html5.playlistitem(b.playlist[c])) } } } else { d.push(new a.html5.playlistitem(b)) } return d } })(jwplayer); (function (a) { var c = { size: 180, position: a.html5.view.positions.NONE, itemheight: 60, thumbs: true, fontcolor: "#000000", overcolor: "", activecolor: "", backgroundcolor: "#f8f8f8", font: "_sans", fontsize: "", fontstyle: "", fontweight: "" }; var b = { _sans: "Arial, Helvetica, sans-serif", _serif: "Times, Times New Roman, serif", _typewriter: "Courier New, Courier, monospace" }; _utils = a.utils; _css = _utils.css; _hide = function (d) { _css(d, { display: "none" }) }; _show = function (d) { _css(d, { display: "block" }) }; a.html5.playlistcomponent = function (r, B) { var w = r; var e = a.utils.extend({}, c, w.skin.getComponentSettings("playlist"), B); if (e.position == a.html5.view.positions.NONE || typeof a.html5.view.positions[e.position] == "undefined") { return } var x; var l; var C; var d; var g; var f; var k = -1; var h = { background: undefined, item: undefined, itemOver: undefined, itemImage: undefined, itemActive: undefined }; this.getDisplayElement = function () { return x }; this.resize = function (F, D) { l = F; C = D; if (w.jwGetFullscreen()) { _hide(x) } else { var E = { display: "block", width: l, height: C }; _css(x, E) } }; this.show = function () { _show(x) }; this.hide = function () { _hide(x) }; function j() { x = document.createElement("div"); x.id = w.id + "_jwplayer_playlistcomponent"; switch (e.position) { case a.html5.view.positions.RIGHT: case a.html5.view.positions.LEFT: x.style.width = e.size + "px"; break; case a.html5.view.positions.TOP: case a.html5.view.positions.BOTTOM: x.style.height = e.size + "px"; break } A(); if (h.item) { e.itemheight = h.item.height } x.style.backgroundColor = "#C6C6C6"; w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, s); w.jwAddEventListener(a.api.events.JWPLAYER_PLAYLIST_ITEM, u); w.jwAddEventListener(a.api.events.JWPLAYER_PLAYER_STATE, m) } function p() { var D = document.createElement("ul"); _css(D, { width: x.style.width, minWidth: x.style.width, height: x.style.height, backgroundColor: e.backgroundcolor, backgroundImage: h.background ? "url(" + h.background.src + ")" : "", color: e.fontcolor, listStyle: "none", margin: 0, padding: 0, fontFamily: b[e.font] ? b[e.font] : b._sans, fontSize: (e.fontsize ? e.fontsize : 11) + "px", fontStyle: e.fontstyle, fontWeight: e.fontweight, overflowY: "auto" }); return D } function y(D) { return function () { var E = f.getElementsByClassName("item")[D]; var F = e.fontcolor; var G = h.item ? "url(" + h.item.src + ")" : ""; if (D == w.jwGetPlaylistIndex()) { if (e.activecolor !== "") { F = e.activecolor } if (h.itemActive) { G = "url(" + h.itemActive.src + ")" } } _css(E, { color: e.overcolor !== "" ? e.overcolor : F, backgroundImage: h.itemOver ? "url(" + h.itemOver.src + ")" : G }) } } function o(D) { return function () { var E = f.getElementsByClassName("item")[D]; var F = e.fontcolor; var G = h.item ? "url(" + h.item.src + ")" : ""; if (D == w.jwGetPlaylistIndex()) { if (e.activecolor !== "") { F = e.activecolor } if (h.itemActive) { G = "url(" + h.itemActive.src + ")" } } _css(E, { color: F, backgroundImage: G }) } } function q(I) { var P = d[I]; var O = document.createElement("li"); O.className = "item"; _css(O, { height: e.itemheight, display: "block", cursor: "pointer", backgroundImage: h.item ? "url(" + h.item.src + ")" : "", backgroundSize: "100% " + e.itemheight + "px" }); O.onmouseover = y(I); O.onmouseout = o(I); var J = document.createElement("div"); var F = new Image(); var K = 0; var L = 0; var M = 0; if (v() && (P.image || P["playlist.image"] || h.itemImage)) { F.className = "image"; if (h.itemImage) { K = (e.itemheight - h.itemImage.height) / 2; L = h.itemImage.width; M = h.itemImage.height } else { L = e.itemheight * 4 / 3; M = e.itemheight } _css(J, { height: M, width: L, "float": "left", styleFloat: "left", cssFloat: "left", margin: "0 5px 0 0", background: "black", overflow: "hidden", margin: K + "px", position: "relative" }); _css(F, { position: "relative" }); J.appendChild(F); F.onload = function () { a.utils.stretch(a.utils.stretching.FILL, F, L, M, this.naturalWidth, this.naturalHeight) }; if (P["playlist.image"]) { F.src = P["playlist.image"] } else { if (P.image) { F.src = P.image } else { if (h.itemImage) { F.src = h.itemImage.src } } } O.appendChild(J) } var E = l - L - K * 2; if (C < e.itemheight * d.length) { E -= 15 } var D = document.createElement("div"); _css(D, { position: "relative", height: "100%", overflow: "hidden" }); var G = document.createElement("span"); if (P.duration > 0) { G.className = "duration"; _css(G, { fontSize: (e.fontsize ? e.fontsize : 11) + "px", fontWeight: (e.fontweight ? e.fontweight : "bold"), width: "40px", height: e.fontsize ? e.fontsize + 10 : 20, lineHeight: 24, "float": "right", styleFloat: "right", cssFloat: "right" }); G.innerHTML = _utils.timeFormat(P.duration); D.appendChild(G) } var N = document.createElement("span"); N.className = "title"; _css(N, { padding: "5px 5px 0 " + (K ? 0 : "5px"), height: e.fontsize ? e.fontsize + 10 : 20, lineHeight: e.fontsize ? e.fontsize + 10 : 20, overflow: "hidden", "float": "left", styleFloat: "left", cssFloat: "left", width: ((P.duration > 0) ? E - 50 : E) - 10 + "px", fontSize: (e.fontsize ? e.fontsize : 13) + "px", fontWeight: (e.fontweight ? e.fontweight : "bold") }); N.innerHTML = P ? P.title : ""; D.appendChild(N); if (P.description) { var H = document.createElement("span"); H.className = "description"; _css(H, { display: "block", "float": "left", styleFloat: "left", cssFloat: "left", margin: 0, paddingLeft: N.style.paddingLeft, paddingRight: N.style.paddingRight, lineHeight: (e.fontsize ? e.fontsize + 4 : 16) + "px", overflow: "hidden", position: "relative" }); H.innerHTML = P.description; D.appendChild(H) } O.appendChild(D); return O } function s(E) { x.innerHTML = ""; d = w.jwGetPlaylist(); if (!d) { return } items = []; f = p(); for (var F = 0; F < d.length; F++) { var D = q(F); D.onclick = z(F); f.appendChild(D); items.push(D) } k = w.jwGetPlaylistIndex(); o(k)(); x.appendChild(f); if (_utils.isIOS() && window.iScroll) { f.style.height = e.itemheight * d.length + "px"; var G = new iScroll(x.id) } } function z(D) { return function () { w.jwPlaylistItem(D); w.jwPlay(true) } } function n() { f.scrollTop = w.jwGetPlaylistIndex() * e.itemheight } function v() { return e.thumbs.toString().toLowerCase() == "true" } function u(D) { if (k >= 0) { o(k)(); k = D.index } o(D.index)(); n() } function m() { if (e.position == a.html5.view.positions.OVER) { switch (w.jwGetState()) { case a.api.events.state.IDLE: _show(x); break; default: _hide(x); break } } } function A() { for (var D in h) { h[D] = t(D) } } function t(D) { return w.skin.getSkinElement("playlist", D) } j(); return this } })(jwplayer); (function (b) { b.html5.playlistitem = function (d) { var e = { author: "", date: "", description: "", image: "", link: "", mediaid: "", tags: "", title: "", provider: "", file: "", streamer: "", duration: -1, start: 0, currentLevel: -1, levels: [] }; var c = b.utils.extend({}, e, d); if (c.type) { c.provider = c.type; delete c.type } if (c.levels.length === 0) { c.levels[0] = new b.html5.playlistitemlevel(c) } if (!c.provider) { c.provider = a(c.levels[0]) } else { c.provider = c.provider.toLowerCase() } return c }; function a(e) { if (b.utils.isYouTube(e.file)) { return "youtube" } else { var f = b.utils.extension(e.file); var c; if (f && b.utils.extensionmap[f]) { if (f == "m3u8") { return "video" } c = b.utils.extensionmap[f].html5 } else { if (e.type) { c = e.type } } if (c) { var d = c.split("/")[0]; if (d == "audio") { return "sound" } else { if (d == "video") { return d } } } } return "" } })(jwplayer); (function (a) { a.html5.playlistitemlevel = function (b) { var d = { file: "", streamer: "", bitrate: 0, width: 0 }; for (var c in d) { if (a.utils.exists(b[c])) { d[c] = b[c] } } return d } })(jwplayer); (function (a) { a.html5.playlistloader = function () { var c = new a.html5.eventdispatcher(); a.utils.extend(this, c); this.load = function (e) { a.utils.ajax(e, d, b) }; function d(g) { var f = []; try { var f = a.utils.parsers.rssparser.parse(g.responseXML.firstChild); c.sendEvent(a.api.events.JWPLAYER_PLAYLIST_LOADED, { playlist: new a.html5.playlist({ playlist: f }) }) } catch (h) { b("Could not parse the playlist") } } function b(e) { c.sendEvent(a.api.events.JWPLAYER_ERROR, { error: e ? e : "could not load playlist for whatever reason.  too bad" }) } } })(jwplayer); (function (a) { a.html5.skin = function () { var b = {}; var c = false; this.load = function (d, e) { new a.html5.skinloader(d, function (f) { c = true; b = f; e() }, function () { new a.html5.skinloader("", function (f) { c = true; b = f; e() }) }) }; this.getSkinElement = function (d, e) { if (c) { try { return b[d].elements[e] } catch (f) { a.utils.log("No such skin component / element: ", [d, e]) } } return null }; this.getComponentSettings = function (d) { if (c) { return b[d].settings } return null }; this.getComponentLayout = function (d) { if (c) { return b[d].layout } return null } } })(jwplayer); (function (a) { a.html5.skinloader = function (f, p, k) { var o = {}; var c = p; var l = k; var e = true; var j; var n = f; var s = false; function m() { if (typeof n != "string" || n === "") { d(a.html5.defaultSkin().xml) } else { a.utils.ajax(a.utils.getAbsolutePath(n), function (t) { try { if (a.utils.exists(t.responseXML)) { d(t.responseXML); return } } catch (u) { h() } d(a.html5.defaultSkin().xml) }, function (t) { d(a.html5.defaultSkin().xml) }) } } function d(y) { var E = y.getElementsByTagName("component"); if (E.length === 0) { return } for (var H = 0; H < E.length; H++) { var C = E[H].getAttribute("name"); var B = { settings: {}, elements: {}, layout: {} }; o[C] = B; var G = E[H].getElementsByTagName("elements")[0].getElementsByTagName("element"); for (var F = 0; F < G.length; F++) { b(G[F], C) } var z = E[H].getElementsByTagName("settings")[0]; if (z && z.childNodes.length > 0) { var K = z.getElementsByTagName("setting"); for (var P = 0; P < K.length; P++) { var Q = K[P].getAttribute("name"); var I = K[P].getAttribute("value"); var x = /color$/.test(Q) ? "color" : null; o[C].settings[Q] = a.utils.typechecker(I, x) } } var L = E[H].getElementsByTagName("layout")[0]; if (L && L.childNodes.length > 0) { var M = L.getElementsByTagName("group"); for (var w = 0; w < M.length; w++) { var A = M[w]; o[C].layout[A.getAttribute("position")] = { elements: [] }; for (var O = 0; O < A.attributes.length; O++) { var D = A.attributes[O]; o[C].layout[A.getAttribute("position")][D.name] = D.value } var N = A.getElementsByTagName("*"); for (var v = 0; v < N.length; v++) { var t = N[v]; o[C].layout[A.getAttribute("position")].elements.push({ type: t.tagName }); for (var u = 0; u < t.attributes.length; u++) { var J = t.attributes[u]; o[C].layout[A.getAttribute("position")].elements[v][J.name] = J.value } if (!a.utils.exists(o[C].layout[A.getAttribute("position")].elements[v].name)) { o[C].layout[A.getAttribute("position")].elements[v].name = t.tagName } } } } e = false; r() } } function r() { clearInterval(j); if (!s) { j = setInterval(function () { q() }, 100) } } function b(y, x) { var w = new Image(); var t = y.getAttribute("name"); var v = y.getAttribute("src"); var A; if (v.indexOf("data:image/png;base64,") === 0) { A = v } else { var u = a.utils.getAbsolutePath(n); var z = u.substr(0, u.lastIndexOf("/")); A = [z, x, v].join("/") } o[x].elements[t] = { height: 0, width: 0, src: "", ready: false, image: w }; w.onload = function (B) { g(w, t, x) }; w.onerror = function (B) { s = true; r(); l() }; w.src = A } function h() { for (var u in o) { var w = o[u]; for (var t in w.elements) { var x = w.elements[t]; var v = x.image; v.onload = null; v.onerror = null; delete x.image; delete w.elements[t] } delete o[u] } } function q() { for (var t in o) { if (t != "properties") { for (var u in o[t].elements) { if (!o[t].elements[u].ready) { return } } } } if (e === false) { clearInterval(j); c(o) } } function g(t, v, u) { if (o[u] && o[u].elements[v]) { o[u].elements[v].height = t.height; o[u].elements[v].width = t.width; o[u].elements[v].src = t.src; o[u].elements[v].ready = true; r() } else { a.utils.log("Loaded an image for a missing element: " + u + "." + v) } } m() } })(jwplayer); (function (a) { a.html5.api = function (c, n) { var m = {}; var f = document.createElement("div"); c.parentNode.replaceChild(f, c); f.id = c.id; m.version = a.version; m.id = f.id; var l = new a.html5.model(m, f, n); var j = new a.html5.view(m, f, l); var k = new a.html5.controller(m, f, l, j); m.skin = new a.html5.skin(); m.jwPlay = function (o) { if (typeof o == "undefined") { e() } else { if (o.toString().toLowerCase() == "true") { k.play() } else { k.pause() } } }; m.jwPause = function (o) { if (typeof o == "undefined") { e() } else { if (o.toString().toLowerCase() == "true") { k.pause() } else { k.play() } } }; function e() { if (l.state == a.api.events.state.PLAYING || l.state == a.api.events.state.BUFFERING) { k.pause() } else { k.play() } } m.jwStop = k.stop; m.jwSeek = k.seek; m.jwPlaylistItem = k.item; m.jwPlaylistNext = k.next; m.jwPlaylistPrev = k.prev; m.jwResize = k.resize; m.jwLoad = k.load; function h(o) { return function () { return l[o] } } function d(o, q, p) { return function () { var r = l.plugins.object[o]; if (r && r[q] && typeof r[q] == "function") { r[q].apply(r, p) } } } m.jwGetItem = h("item"); m.jwGetPosition = h("position"); m.jwGetDuration = h("duration"); m.jwGetBuffer = h("buffer"); m.jwGetWidth = h("width"); m.jwGetHeight = h("height"); m.jwGetFullscreen = h("fullscreen"); m.jwSetFullscreen = k.setFullscreen; m.jwGetVolume = h("volume"); m.jwSetVolume = k.setVolume; m.jwGetMute = h("mute"); m.jwSetMute = k.setMute; m.jwGetStretching = h("stretching"); m.jwGetState = h("state"); m.jwGetVersion = function () { return m.version }; m.jwGetPlaylist = function () { return l.playlist }; m.jwGetPlaylistIndex = m.jwGetItem; m.jwAddEventListener = k.addEventListener; m.jwRemoveEventListener = k.removeEventListener; m.jwSendEvent = k.sendEvent; m.jwDockSetButton = function (r, o, p, q) { if (l.plugins.object.dock && l.plugins.object.dock.setButton) { l.plugins.object.dock.setButton(r, o, p, q) } }; m.jwControlbarShow = d("controlbar", "show"); m.jwControlbarHide = d("controlbar", "hide"); m.jwDockShow = d("dock", "show"); m.jwDockHide = d("dock", "hide"); m.jwDisplayShow = d("display", "show"); m.jwDisplayHide = d("display", "hide"); m.jwGetLevel = function () { }; m.jwGetBandwidth = function () { }; m.jwGetLockState = function () { }; m.jwLock = function () { }; m.jwUnlock = function () { }; function b() { if (l.config.playlistfile) { l.addEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, g); l.loadPlaylist(l.config.playlistfile) } else { if (typeof l.config.playlist == "string") { l.addEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, g); l.loadPlaylist(l.config.playlist) } else { l.loadPlaylist(l.config); setTimeout(g, 25) } } } function g(o) { l.removeEventListener(a.api.events.JWPLAYER_PLAYLIST_LOADED, g); l.setupPlugins(); j.setup(); var o = { id: m.id, version: m.version }; k.playerReady(o) } if (l.config.chromeless && !a.utils.isIOS()) { b() } else { m.skin.load(l.config.skin, b) } return m } })(jwplayer) };

// tinysort - http://plugins.jquery.com/project/TinySort
//(function (b) { b.tinysort = { id: "TinySort", version: "1.0.4", defaults: { order: "asc", attr: "", place: "start", returns: false} }; b.fn.extend({ tinysort: function (h, j) { if (h && typeof (h) != "string") { j = h; h = null } var e = b.extend({}, b.tinysort.defaults, j); var p = {}; this.each(function (t) { var v = (!h || h == "") ? b(this) : b(this).find(h); var u = e.order == "rand" ? "" + Math.random() : (e.attr == "" ? v.text() : v.attr(e.attr)); var s = b(this).parent(); if (!p[s]) { p[s] = { s: [], n: []} } if (v.length > 0) { p[s].s.push({ s: u, e: b(this), n: t }) } else { p[s].n.push({ e: b(this), n: t }) } }); for (var g in p) { var d = p[g]; d.s.sort(function k(t, s) { var i = t.s.toLowerCase ? t.s.toLowerCase() : t.s; var u = s.s.toLowerCase ? s.s.toLowerCase() : s.s; if (c(t.s) && c(s.s)) { i = parseFloat(t.s); u = parseFloat(s.s) } return (e.order == "asc" ? 1 : -1) * (i < u ? -1 : (i > u ? 1 : 0)) }) } var m = []; for (var g in p) { var d = p[g]; var n = []; var f = b(this).length; switch (e.place) { case "first": b.each(d.s, function (s, t) { f = Math.min(f, t.n) }); break; case "org": b.each(d.s, function (s, t) { n.push(t.n) }); break; case "end": f = d.n.length; break; default: f = 0 } var q = [0, 0]; for (var l = 0; l < b(this).length; l++) { var o = l >= f && l < f + d.s.length; if (a(n, l)) { o = true } var r = (o ? d.s : d.n)[q[o ? 0 : 1]].e; r.parent().append(r); if (o || !e.returns) { m.push(r.get(0)) } q[o ? 0 : 1]++ } } return this.pushStack(m) } }); function c(e) { var d = /^\s*?[\+-]?(\d*\.?\d*?)\s*?$/.exec(e); return d && d.length > 0 ? d[1] : false } function a(e, f) { var d = false; b.each(e, function (h, g) { if (!d) { d = g == f } }); return d } b.fn.TinySort = b.fn.Tinysort = b.fn.tsort = b.fn.tinysort })(jQuery);
(function (b) { b.tinysort = { id: "TinySort", version: "1.1.0", copyright: "Copyright (c) 2008-2011 Ron Valstar", uri: "http://tinysort.sjeiti.com/", defaults: { order: "asc", attr: null, useVal: false, data: null, place: "start", returns: false, cases: false, sortFunction: null} }; b.fn.extend({ tinysort: function (h, d) { if (h && typeof (h) != "string") { d = h; h = null } var j = b.extend({}, b.tinysort.defaults, d); if (!j.sortFunction) { j.sortFunction = j.order == "rand" ? function () { return Math.random() < 0.5 ? 1 : -1 } : function (z, w) { var i = !j.cases && z.s && z.s.toLowerCase ? z.s.toLowerCase() : z.s; var A = !j.cases && w.s && w.s.toLowerCase ? w.s.toLowerCase() : w.s; if (c(z.s) && c(w.s)) { i = parseFloat(z.s); A = parseFloat(w.s) } return (j.order == "asc" ? 1 : -1) * (i < A ? -1 : (i > A ? 1 : 0)) } } var u = {}; var l = !(!h || h == ""); var m = !(j.attr === null || j.attr == ""); var q = j.data !== null; var e = l && h[0] == ":"; var f = e ? this.filter(h) : this; this.each(function (x) { var y = b(this); var A = l ? (e ? f.filter(this) : y.find(h)) : y; var z = q ? A.data(j.data) : (m ? A.attr(j.attr) : (j.useVal ? A.val() : A.text())); var w = y.parent(); if (!u[w]) { u[w] = { s: [], n: []} } if (A.length > 0) { u[w].s.push({ s: z, e: y, n: x }) } else { u[w].n.push({ e: y, n: x }) } }); for (var n in u) { var r = u[n]; r.s.sort(j.sortFunction) } var g = []; for (var n in u) { var r = u[n]; var s = []; var v = b(this).length; switch (j.place) { case "first": b.each(r.s, function (w, x) { v = Math.min(v, x.n) }); break; case "org": b.each(r.s, function (w, x) { s.push(x.n) }); break; case "end": v = r.n.length; break; default: v = 0 } var p = [0, 0]; for (var t = 0; t < b(this).length; t++) { var k = t >= v && t < v + r.s.length; if (a(s, t)) { k = true } var o = (k ? r.s : r.n)[p[k ? 0 : 1]].e; o.parent().append(o); if (k || !j.returns) { g.push(o.get(0)) } p[k ? 0 : 1]++ } } return this.pushStack(g) } }); function c(e) { var d = /^\s*?[\+-]?(\d*\.?\d*?)\s*?$/.exec(e); return d && d.length > 0 ? d[1] : false } function a(e, f) { var d = false; b.each(e, function (h, g) { if (!d) { d = g == f } }); return d } b.fn.TinySort = b.fn.Tinysort = b.fn.tsort = b.fn.tinysort })(jQuery);

//jQuery Cycle Plugin (core engine) - Version: 2.88 (08-JUN-2010) - http://jquery.malsup.com/license.html
(function ($) { var ver = "2.88"; if ($.support == undefined) { $.support = { opacity: !($.browser.msie) }; } function debug(s) { if ($.fn.cycle.debug) { log(s); } } function log() { if (window.console && window.console.log) { window.console.log("[cycle] " + Array.prototype.join.call(arguments, " ")); } } $.fn.cycle = function (options, arg2) { var o = { s: this.selector, c: this.context }; if (this.length === 0 && options != "stop") { if (!$.isReady && o.s) { log("DOM not ready, queuing slideshow"); $(function () { $(o.s, o.c).cycle(options, arg2); }); return this; } log("terminating; zero elements found by selector" + ($.isReady ? "" : " (DOM not ready)")); return this; } return this.each(function () { var opts = handleArguments(this, options, arg2); if (opts === false) { return; } opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink; if (this.cycleTimeout) { clearTimeout(this.cycleTimeout); } this.cycleTimeout = this.cyclePause = 0; var $cont = $(this); var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children(); var els = $slides.get(); if (els.length < 2) { log("terminating; too few slides: " + els.length); return; } var opts2 = buildOptions($cont, $slides, els, opts, o); if (opts2 === false) { return; } var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.rev); if (startTime) { startTime += (opts2.delay || 0); if (startTime < 10) { startTime = 10; } debug("first timeout: " + startTime); this.cycleTimeout = setTimeout(function () { go(els, opts2, 0, (!opts2.rev && !opts.backwards)); }, startTime); } }); }; function handleArguments(cont, options, arg2) { if (cont.cycleStop == undefined) { cont.cycleStop = 0; } if (options === undefined || options === null) { options = {}; } if (options.constructor == String) { switch (options) { case "destroy": case "stop": var opts = $(cont).data("cycle.opts"); if (!opts) { return false; } cont.cycleStop++; if (cont.cycleTimeout) { clearTimeout(cont.cycleTimeout); } cont.cycleTimeout = 0; $(cont).removeData("cycle.opts"); if (options == "destroy") { destroy(opts); } return false; case "toggle": cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1; checkInstantResume(cont.cyclePause, arg2, cont); return false; case "pause": cont.cyclePause = 1; return false; case "resume": cont.cyclePause = 0; checkInstantResume(false, arg2, cont); return false; case "prev": case "next": var opts = $(cont).data("cycle.opts"); if (!opts) { log('options not found, "prev/next" ignored'); return false; } $.fn.cycle[options](opts); return false; default: options = { fx: options }; } return options; } else { if (options.constructor == Number) { var num = options; options = $(cont).data("cycle.opts"); if (!options) { log("options not found, can not advance slide"); return false; } if (num < 0 || num >= options.elements.length) { log("invalid slide index: " + num); return false; } options.nextSlide = num; if (cont.cycleTimeout) { clearTimeout(cont.cycleTimeout); cont.cycleTimeout = 0; } if (typeof arg2 == "string") { options.oneTimeFx = arg2; } go(options.elements, options, 1, num >= options.currSlide); return false; } } return options; function checkInstantResume(isPaused, arg2, cont) { if (!isPaused && arg2 === true) { var options = $(cont).data("cycle.opts"); if (!options) { log("options not found, can not resume"); return false; } if (cont.cycleTimeout) { clearTimeout(cont.cycleTimeout); cont.cycleTimeout = 0; } go(options.elements, options, 1, (!opts.rev && !opts.backwards)); } } } function removeFilter(el, opts) { if (!$.support.opacity && opts.cleartype && el.style.filter) { try { el.style.removeAttribute("filter"); } catch (smother) { } } } function destroy(opts) { if (opts.next) { $(opts.next).unbind(opts.prevNextEvent); } if (opts.prev) { $(opts.prev).unbind(opts.prevNextEvent); } if (opts.pager || opts.pagerAnchorBuilder) { $.each(opts.pagerAnchors || [], function () { this.unbind().remove(); }); } opts.pagerAnchors = null; if (opts.destroy) { opts.destroy(opts); } } function buildOptions($cont, $slides, els, options, o) { var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {}); if (opts.autostop) { opts.countdown = opts.autostopCount || els.length; } var cont = $cont[0]; $cont.data("cycle.opts", opts); opts.$cont = $cont; opts.stopCount = cont.cycleStop; opts.elements = els; opts.before = opts.before ? [opts.before] : []; opts.after = opts.after ? [opts.after] : []; opts.after.unshift(function () { opts.busy = 0; }); if (!$.support.opacity && opts.cleartype) { opts.after.push(function () { removeFilter(this, opts); }); } if (opts.continuous) { opts.after.push(function () { go(els, opts, 0, (!opts.rev && !opts.backwards)); }); } saveOriginalOpts(opts); if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) { clearTypeFix($slides); } if ($cont.css("position") == "static") { $cont.css("position", "relative"); } if (opts.width) { $cont.width(opts.width); } if (opts.height && opts.height != "auto") { $cont.height(opts.height); } if (opts.startingSlide) { opts.startingSlide = parseInt(opts.startingSlide); } else { if (opts.backwards) { opts.startingSlide = els.length - 1; } } if (opts.random) { opts.randomMap = []; for (var i = 0; i < els.length; i++) { opts.randomMap.push(i); } opts.randomMap.sort(function (a, b) { return Math.random() - 0.5; }); opts.randomIndex = 1; opts.startingSlide = opts.randomMap[1]; } else { if (opts.startingSlide >= els.length) { opts.startingSlide = 0; } } opts.currSlide = opts.startingSlide || 0; var first = opts.startingSlide; $slides.css({ position: "absolute", top: 0, left: 0 }).hide().each(function (i) { var z; if (opts.backwards) { z = first ? i <= first ? els.length + (i - first) : first - i : els.length - i; } else { z = first ? i >= first ? els.length - (i - first) : first - i : els.length - i; } $(this).css("z-index", z); }); $(els[first]).css("opacity", 1).show(); removeFilter(els[first], opts); if (opts.fit && opts.width) { $slides.width(opts.width); } if (opts.fit && opts.height && opts.height != "auto") { $slides.height(opts.height); } var reshape = opts.containerResize && !$cont.innerHeight(); if (reshape) { var maxw = 0, maxh = 0; for (var j = 0; j < els.length; j++) { var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight(); if (!w) { w = e.offsetWidth || e.width || $e.attr("width"); } if (!h) { h = e.offsetHeight || e.height || $e.attr("height"); } maxw = w > maxw ? w : maxw; maxh = h > maxh ? h : maxh; } if (maxw > 0 && maxh > 0) { $cont.css({ width: maxw + "px", height: maxh + "px" }); } } if (opts.pause) { $cont.hover(function () { this.cyclePause++; }, function () { this.cyclePause--; }); } if (supportMultiTransitions(opts) === false) { return false; } var requeue = false; options.requeueAttempts = options.requeueAttempts || 0; $slides.each(function () { var $el = $(this); this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr("height") || 0); this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr("width") || 0); if ($el.is("img")) { var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete); var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete); var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete); var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete); if (loadingIE || loadingFF || loadingOp || loadingOther) { if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { log(options.requeueAttempts, " - img slide not loaded, requeuing slideshow: ", this.src, this.cycleW, this.cycleH); setTimeout(function () { $(o.s, o.c).cycle(options); }, opts.requeueTimeout); requeue = true; return false; } else { log("could not determine size of image: " + this.src, this.cycleW, this.cycleH); } } } return true; }); if (requeue) { return false; } opts.cssBefore = opts.cssBefore || {}; opts.animIn = opts.animIn || {}; opts.animOut = opts.animOut || {}; $slides.not(":eq(" + first + ")").css(opts.cssBefore); if (opts.cssFirst) { $($slides[first]).css(opts.cssFirst); } if (opts.timeout) { opts.timeout = parseInt(opts.timeout); if (opts.speed.constructor == String) { opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed); } if (!opts.sync) { opts.speed = opts.speed / 2; } var buffer = opts.fx == "shuffle" ? 500 : 250; while ((opts.timeout - opts.speed) < buffer) { opts.timeout += opts.speed; } } if (opts.easing) { opts.easeIn = opts.easeOut = opts.easing; } if (!opts.speedIn) { opts.speedIn = opts.speed; } if (!opts.speedOut) { opts.speedOut = opts.speed; } opts.slideCount = els.length; opts.currSlide = opts.lastSlide = first; if (opts.random) { if (++opts.randomIndex == els.length) { opts.randomIndex = 0; } opts.nextSlide = opts.randomMap[opts.randomIndex]; } else { if (opts.backwards) { opts.nextSlide = opts.startingSlide == 0 ? (els.length - 1) : opts.startingSlide - 1; } else { opts.nextSlide = opts.startingSlide >= (els.length - 1) ? 0 : opts.startingSlide + 1; } } if (!opts.multiFx) { var init = $.fn.cycle.transitions[opts.fx]; if ($.isFunction(init)) { init($cont, $slides, opts); } else { if (opts.fx != "custom" && !opts.multiFx) { log("unknown transition: " + opts.fx, "; slideshow terminating"); return false; } } } var e0 = $slides[first]; if (opts.before.length) { opts.before[0].apply(e0, [e0, e0, opts, true]); } if (opts.after.length > 1) { opts.after[1].apply(e0, [e0, e0, opts, true]); } if (opts.next) { $(opts.next).bind(opts.prevNextEvent, function () { return advance(opts, opts.rev ? -1 : 1); }); } if (opts.prev) { $(opts.prev).bind(opts.prevNextEvent, function () { return advance(opts, opts.rev ? 1 : -1); }); } if (opts.pager || opts.pagerAnchorBuilder) { buildPager(els, opts); } exposeAddSlide(opts, els); return opts; } function saveOriginalOpts(opts) { opts.original = { before: [], after: [] }; opts.original.cssBefore = $.extend({}, opts.cssBefore); opts.original.cssAfter = $.extend({}, opts.cssAfter); opts.original.animIn = $.extend({}, opts.animIn); opts.original.animOut = $.extend({}, opts.animOut); $.each(opts.before, function () { opts.original.before.push(this); }); $.each(opts.after, function () { opts.original.after.push(this); }); } function supportMultiTransitions(opts) { var i, tx, txs = $.fn.cycle.transitions; if (opts.fx.indexOf(",") > 0) { opts.multiFx = true; opts.fxs = opts.fx.replace(/\s*/g, "").split(","); for (i = 0; i < opts.fxs.length; i++) { var fx = opts.fxs[i]; tx = txs[fx]; if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) { log("discarding unknown transition: ", fx); opts.fxs.splice(i, 1); i--; } } if (!opts.fxs.length) { log("No valid transitions named; slideshow terminating."); return false; } } else { if (opts.fx == "all") { opts.multiFx = true; opts.fxs = []; for (p in txs) { tx = txs[p]; if (txs.hasOwnProperty(p) && $.isFunction(tx)) { opts.fxs.push(p); } } } } if (opts.multiFx && opts.randomizeEffects) { var r1 = Math.floor(Math.random() * 20) + 30; for (i = 0; i < r1; i++) { var r2 = Math.floor(Math.random() * opts.fxs.length); opts.fxs.push(opts.fxs.splice(r2, 1)[0]); } debug("randomized fx sequence: ", opts.fxs); } return true; } function exposeAddSlide(opts, els) { opts.addSlide = function (newSlide, prepend) { var $s = $(newSlide), s = $s[0]; if (!opts.autostopCount) { opts.countdown++; } els[prepend ? "unshift" : "push"](s); if (opts.els) { opts.els[prepend ? "unshift" : "push"](s); } opts.slideCount = els.length; $s.css("position", "absolute"); $s[prepend ? "prependTo" : "appendTo"](opts.$cont); if (prepend) { opts.currSlide++; opts.nextSlide++; } if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) { clearTypeFix($s); } if (opts.fit && opts.width) { $s.width(opts.width); } if (opts.fit && opts.height && opts.height != "auto") { $slides.height(opts.height); } s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height(); s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width(); $s.css(opts.cssBefore); if (opts.pager || opts.pagerAnchorBuilder) { $.fn.cycle.createPagerAnchor(els.length - 1, s, $(opts.pager), els, opts); } if ($.isFunction(opts.onAddSlide)) { opts.onAddSlide($s); } else { $s.hide(); } }; } $.fn.cycle.resetState = function (opts, fx) { fx = fx || opts.fx; opts.before = []; opts.after = []; opts.cssBefore = $.extend({}, opts.original.cssBefore); opts.cssAfter = $.extend({}, opts.original.cssAfter); opts.animIn = $.extend({}, opts.original.animIn); opts.animOut = $.extend({}, opts.original.animOut); opts.fxFn = null; $.each(opts.original.before, function () { opts.before.push(this); }); $.each(opts.original.after, function () { opts.after.push(this); }); var init = $.fn.cycle.transitions[fx]; if ($.isFunction(init)) { init(opts.$cont, $(opts.elements), opts); } }; function go(els, opts, manual, fwd) { if (manual && opts.busy && opts.manualTrump) { debug("manualTrump in go(), stopping active transition"); $(els).stop(true, true); opts.busy = false; } if (opts.busy) { debug("transition active, ignoring new tx request"); return; } var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide]; if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual) { return; } if (!manual && !p.cyclePause && !opts.bounce && ((opts.autostop && (--opts.countdown <= 0)) || (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) { if (opts.end) { opts.end(opts); } return; } var changed = false; if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) { changed = true; var fx = opts.fx; curr.cycleH = curr.cycleH || $(curr).height(); curr.cycleW = curr.cycleW || $(curr).width(); next.cycleH = next.cycleH || $(next).height(); next.cycleW = next.cycleW || $(next).width(); if (opts.multiFx) { if (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length) { opts.lastFx = 0; } fx = opts.fxs[opts.lastFx]; opts.currFx = fx; } if (opts.oneTimeFx) { fx = opts.oneTimeFx; opts.oneTimeFx = null; } $.fn.cycle.resetState(opts, fx); if (opts.before.length) { $.each(opts.before, function (i, o) { if (p.cycleStop != opts.stopCount) { return; } o.apply(next, [curr, next, opts, fwd]); }); } var after = function () { $.each(opts.after, function (i, o) { if (p.cycleStop != opts.stopCount) { return; } o.apply(next, [curr, next, opts, fwd]); }); }; debug("tx firing; currSlide: " + opts.currSlide + "; nextSlide: " + opts.nextSlide); opts.busy = 1; if (opts.fxFn) { opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent); } else { if ($.isFunction($.fn.cycle[opts.fx])) { $.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent); } else { $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent); } } } if (changed || opts.nextSlide == opts.currSlide) { opts.lastSlide = opts.currSlide; if (opts.random) { opts.currSlide = opts.nextSlide; if (++opts.randomIndex == els.length) { opts.randomIndex = 0; } opts.nextSlide = opts.randomMap[opts.randomIndex]; if (opts.nextSlide == opts.currSlide) { opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1; } } else { if (opts.backwards) { var roll = (opts.nextSlide - 1) < 0; if (roll && opts.bounce) { opts.backwards = !opts.backwards; opts.nextSlide = 1; opts.currSlide = 0; } else { opts.nextSlide = roll ? (els.length - 1) : opts.nextSlide - 1; opts.currSlide = roll ? 0 : opts.nextSlide + 1; } } else { var roll = (opts.nextSlide + 1) == els.length; if (roll && opts.bounce) { opts.backwards = !opts.backwards; opts.nextSlide = els.length - 2; opts.currSlide = els.length - 1; } else { opts.nextSlide = roll ? 0 : opts.nextSlide + 1; opts.currSlide = roll ? els.length - 1 : opts.nextSlide - 1; } } } } if (changed && opts.pager) { opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass); } var ms = 0; if (opts.timeout && !opts.continuous) { ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd); } else { if (opts.continuous && p.cyclePause) { ms = 10; } } if (ms > 0) { p.cycleTimeout = setTimeout(function () { go(els, opts, 0, (!opts.rev && !opts.backwards)); }, ms); } } $.fn.cycle.updateActivePagerLink = function (pager, currSlide, clsName) { $(pager).each(function () { $(this).children().removeClass(clsName).eq(currSlide).addClass(clsName); }); }; function getTimeout(curr, next, opts, fwd) { if (opts.timeoutFn) { var t = opts.timeoutFn.call(curr, curr, next, opts, fwd); while ((t - opts.speed) < 250) { t += opts.speed; } debug("calculated timeout: " + t + "; speed: " + opts.speed); if (t !== false) { return t; } } return opts.timeout; } $.fn.cycle.next = function (opts) { advance(opts, opts.rev ? -1 : 1); }; $.fn.cycle.prev = function (opts) { advance(opts, opts.rev ? 1 : -1); }; function advance(opts, val) { var els = opts.elements; var p = opts.$cont[0], timeout = p.cycleTimeout; if (timeout) { clearTimeout(timeout); p.cycleTimeout = 0; } if (opts.random && val < 0) { opts.randomIndex--; if (--opts.randomIndex == -2) { opts.randomIndex = els.length - 2; } else { if (opts.randomIndex == -1) { opts.randomIndex = els.length - 1; } } opts.nextSlide = opts.randomMap[opts.randomIndex]; } else { if (opts.random) { opts.nextSlide = opts.randomMap[opts.randomIndex]; } else { opts.nextSlide = opts.currSlide + val; if (opts.nextSlide < 0) { if (opts.nowrap) { return false; } opts.nextSlide = els.length - 1; } else { if (opts.nextSlide >= els.length) { if (opts.nowrap) { return false; } opts.nextSlide = 0; } } } } var cb = opts.onPrevNextEvent || opts.prevNextClick; if ($.isFunction(cb)) { cb(val > 0, opts.nextSlide, els[opts.nextSlide]); } go(els, opts, 1, val >= 0); return false; } function buildPager(els, opts) { var $p = $(opts.pager); $.each(els, function (i, o) { $.fn.cycle.createPagerAnchor(i, o, $p, els, opts); }); opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass); } $.fn.cycle.createPagerAnchor = function (i, el, $p, els, opts) { var a; if ($.isFunction(opts.pagerAnchorBuilder)) { a = opts.pagerAnchorBuilder(i, el); debug("pagerAnchorBuilder(" + i + ", el) returned: " + a); } else { a = '<a href="#">' + (i + 1) + "</a>"; } if (!a) { return; } var $a = $(a); if ($a.parents("body").length === 0) { var arr = []; if ($p.length > 1) { $p.each(function () { var $clone = $a.clone(true); $(this).append($clone); arr.push($clone[0]); }); $a = $(arr); } else { $a.appendTo($p); } } opts.pagerAnchors = opts.pagerAnchors || []; opts.pagerAnchors.push($a); $a.bind(opts.pagerEvent, function (e) { e.preventDefault(); opts.nextSlide = i; var p = opts.$cont[0], timeout = p.cycleTimeout; if (timeout) { clearTimeout(timeout); p.cycleTimeout = 0; } var cb = opts.onPagerEvent || opts.pagerClick; if ($.isFunction(cb)) { cb(opts.nextSlide, els[opts.nextSlide]); } go(els, opts, 1, opts.currSlide < i); }); if (!/^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble) { $a.bind("click.cycle", function () { return false; }); } if (opts.pauseOnPagerHover) { $a.hover(function () { opts.$cont[0].cyclePause++; }, function () { opts.$cont[0].cyclePause--; }); } }; $.fn.cycle.hopsFromLast = function (opts, fwd) { var hops, l = opts.lastSlide, c = opts.currSlide; if (fwd) { hops = c > l ? c - l : opts.slideCount - l; } else { hops = c < l ? l - c : l + opts.slideCount - c; } return hops; }; function clearTypeFix($slides) { debug("applying clearType background-color hack"); function hex(s) { s = parseInt(s).toString(16); return s.length < 2 ? "0" + s : s; } function getBg(e) { for (; e && e.nodeName.toLowerCase() != "html"; e = e.parentNode) { var v = $.css(e, "background-color"); if (v.indexOf("rgb") >= 0) { var rgb = v.match(/\d+/g); return "#" + hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]); } if (v && v != "transparent") { return v; } } return "#ffffff"; } $slides.each(function () { $(this).css("background-color", getBg(this)); }); } $.fn.cycle.commonReset = function (curr, next, opts, w, h, rev) { $(opts.elements).not(curr).hide(); opts.cssBefore.opacity = 1; opts.cssBefore.display = "block"; if (w !== false && next.cycleW > 0) { opts.cssBefore.width = next.cycleW; } if (h !== false && next.cycleH > 0) { opts.cssBefore.height = next.cycleH; } opts.cssAfter = opts.cssAfter || {}; opts.cssAfter.display = "none"; $(curr).css("zIndex", opts.slideCount + (rev === true ? 1 : 0)); $(next).css("zIndex", opts.slideCount + (rev === true ? 0 : 1)); }; $.fn.cycle.custom = function (curr, next, opts, cb, fwd, speedOverride) { var $l = $(curr), $n = $(next); var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut; $n.css(opts.cssBefore); if (speedOverride) { if (typeof speedOverride == "number") { speedIn = speedOut = speedOverride; } else { speedIn = speedOut = 1; } easeIn = easeOut = null; } var fn = function () { $n.animate(opts.animIn, speedIn, easeIn, cb); }; $l.animate(opts.animOut, speedOut, easeOut, function () { if (opts.cssAfter) { $l.css(opts.cssAfter); } if (!opts.sync) { fn(); } }); if (opts.sync) { fn(); } }; $.fn.cycle.transitions = { fade: function ($cont, $slides, opts) { $slides.not(":eq(" + opts.currSlide + ")").css("opacity", 0); opts.before.push(function (curr, next, opts) { $.fn.cycle.commonReset(curr, next, opts); opts.cssBefore.opacity = 0; }); opts.animIn = { opacity: 1 }; opts.animOut = { opacity: 0 }; opts.cssBefore = { top: 0, left: 0 }; } }; $.fn.cycle.ver = function () { return ver; }; $.fn.cycle.defaults = { fx: "fade", timeout: 4000, timeoutFn: null, continuous: 0, speed: 1000, speedIn: null, speedOut: null, next: null, prev: null, onPrevNextEvent: null, prevNextEvent: "click.cycle", pager: null, onPagerEvent: null, pagerEvent: "click.cycle", allowPagerClickBubble: false, pagerAnchorBuilder: null, before: null, after: null, end: null, easing: null, easeIn: null, easeOut: null, shuffle: null, animIn: null, animOut: null, cssBefore: null, cssAfter: null, fxFn: null, height: "auto", startingSlide: 0, sync: 1, random: 0, fit: 0, containerResize: 1, pause: 0, pauseOnPagerHover: 0, autostop: 0, autostopCount: 0, delay: 0, slideExpr: null, cleartype: !$.support.opacity, cleartypeNoBg: false, nowrap: 0, fastOnEvent: 0, randomizeEffects: 1, rev: 0, manualTrump: true, requeueOnImageNotLoaded: true, requeueTimeout: 250, activePagerClass: "activeSlide", updateActivePagerLink: null, backwards: false }; })(jQuery);

// ColorBox v1.3.15 - http://colorpowered.com/colorbox/
(function (b, ib) { var t = "none", M = "LoadedContent", c = false, v = "resize.", o = "y", q = "auto", e = true, L = "nofollow", m = "x"; function f(a, c) { a = a ? ' id="' + i + a + '"' : ""; c = c ? ' style="' + c + '"' : ""; return b("<div" + a + c + "/>") } function p(a, b) { b = b === m ? n.width() : n.height(); return typeof a === "string" ? Math.round(/%/.test(a) ? b / 100 * parseInt(a, 10) : parseInt(a, 10)) : a } function U(b) { return a.photo || /\.(gif|png|jpg|jpeg|bmp|ashx)(?:\?([^#]*))?(?:#(\.*))?$/i.test(b) } function cb(a) { for (var c in a) if (b.isFunction(a[c]) && c.substring(0, 2) !== "on") a[c] = a[c].call(l); a.rel = a.rel || l.rel || L; a.href = a.href || b(l).attr("href"); a.title = a.title || l.title; return a } function w(c, a) { a && a.call(l); b.event.trigger(c) } function jb() { var b, e = i + "Slideshow_", c = "click." + i, f, k; if (a.slideshow && h[1]) { f = function () { F.text(a.slideshowStop).unbind(c).bind(V, function () { if (g < h.length - 1 || a.loop) b = setTimeout(d.next, a.slideshowSpeed) }).bind(W, function () { clearTimeout(b) }).one(c + " " + N, k); j.removeClass(e + "off").addClass(e + "on"); b = setTimeout(d.next, a.slideshowSpeed) }; k = function () { clearTimeout(b); F.text(a.slideshowStart).unbind([V, W, N, c].join(" ")).one(c, f); j.removeClass(e + "on").addClass(e + "off") }; a.slideshowAuto ? f() : k() } } function db(c) { if (!O) { l = c; a = cb(b.extend({}, b.data(l, r))); h = b(l); g = 0; if (a.rel !== L) { h = b("." + G).filter(function () { return (b.data(this, r).rel || this.rel) === a.rel }); g = h.index(l); if (g === -1) { h = h.add(l); g = h.length - 1 } } if (!u) { u = D = e; j.show(); if (a.returnFocus) try { l.blur(); b(l).one(eb, function () { try { this.focus() } catch (a) { } }) } catch (f) { } x.css({ opacity: +a.opacity, cursor: a.overlayClose ? "pointer" : q }).show(); a.w = p(a.initialWidth, m); a.h = p(a.initialHeight, o); d.position(0); X && n.bind(v + P + " scroll." + P, function () { x.css({ width: n.width(), height: n.height(), top: n.scrollTop(), left: n.scrollLeft() }) }).trigger("scroll." + P); w(fb, a.onOpen); Y.add(H).add(I).add(F).add(Z).hide(); ab.html(a.close).show() } d.load(e) } } var gb = { transition: "elastic", speed: 300, width: c, initialWidth: "600", innerWidth: c, maxWidth: c, height: c, initialHeight: "450", innerHeight: c, maxHeight: c, scalePhotos: e, scrolling: e, inline: c, html: c, iframe: c, photo: c, href: c, title: c, rel: c, opacity: .9, preloading: e, current: "image {current} of {total}", previous: "previous", next: "next", close: "close", open: c, returnFocus: e, loop: e, slideshow: c, slideshowAuto: e, slideshowSpeed: 2500, slideshowStart: "start slideshow", slideshowStop: "stop slideshow", onOpen: c, onLoad: c, onComplete: c, onCleanup: c, onClosed: c, overlayClose: e, escKey: e, arrowKey: e }, r = "colorbox", i = "cbox", fb = i + "_open", W = i + "_load", V = i + "_complete", N = i + "_cleanup", eb = i + "_closed", Q = i + "_purge", hb = i + "_loaded", E = b.browser.msie && !b.support.opacity, X = E && b.browser.version < 7, P = i + "_IE6", x, j, A, s, bb, T, R, S, h, n, k, J, K, Z, Y, F, I, H, ab, B, C, y, z, l, g, a, u, D, O = c, d, G = i + "Element"; d = b.fn[r] = b[r] = function (c, f) { var a = this, d; if (!a[0] && a.selector) return a; c = c || {}; if (f) c.onComplete = f; if (!a[0] || a.selector === undefined) { a = b("<a/>"); c.open = e } a.each(function () { b.data(this, r, b.extend({}, b.data(this, r) || gb, c)); b(this).addClass(G) }); d = c.open; if (b.isFunction(d)) d = d.call(a); d && db(a[0]); return a }; d.init = function () { var l = "hover", m = "clear:left"; n = b(ib); j = f().attr({ id: r, "class": E ? i + "IE" : "" }); x = f("Overlay", X ? "position:absolute" : "").hide(); A = f("Wrapper"); s = f("Content").append(k = f(M, "width:0; height:0; overflow:hidden"), K = f("LoadingOverlay").add(f("LoadingGraphic")), Z = f("Title"), Y = f("Current"), I = f("Next"), H = f("Previous"), F = f("Slideshow").bind(fb, jb), ab = f("Close")); A.append(f().append(f("TopLeft"), bb = f("TopCenter"), f("TopRight")), f(c, m).append(T = f("MiddleLeft"), s, R = f("MiddleRight")), f(c, m).append(f("BottomLeft"), S = f("BottomCenter"), f("BottomRight"))).children().children().css({ "float": "left" }); J = f(c, "position:absolute; width:9999px; visibility:hidden; display:none"); b("body").prepend(x, j.append(A, J)); s.children().hover(function () { b(this).addClass(l) }, function () { b(this).removeClass(l) }).addClass(l); B = bb.height() + S.height() + s.outerHeight(e) - s.height(); C = T.width() + R.width() + s.outerWidth(e) - s.width(); y = k.outerHeight(e); z = k.outerWidth(e); j.css({ "padding-bottom": B, "padding-right": C }).hide(); I.click(d.next); H.click(d.prev); ab.click(d.close); s.children().removeClass(l); b("." + G).live("click", function (a) { if (!(a.button !== 0 && typeof a.button !== "undefined" || a.ctrlKey || a.shiftKey || a.altKey)) { a.preventDefault(); db(this) } }); x.click(function () { a.overlayClose && d.close() }); b(document).bind("keydown", function (b) { if (u && a.escKey && b.keyCode === 27) { b.preventDefault(); d.close() } if (u && a.arrowKey && !D && h[1]) if (b.keyCode === 37 && (g || a.loop)) { b.preventDefault(); H.click() } else if (b.keyCode === 39 && (g < h.length - 1 || a.loop)) { b.preventDefault(); I.click() } }) }; d.remove = function () { j.add(x).remove(); b("." + G).die("click").removeData(r).removeClass(G) }; d.position = function (f, d) { function b(a) { bb[0].style.width = S[0].style.width = s[0].style.width = a.style.width; K[0].style.height = K[1].style.height = s[0].style.height = T[0].style.height = R[0].style.height = a.style.height } var e, h = Math.max(document.documentElement.clientHeight - a.h - y - B, 0) / 2 + n.scrollTop(), g = Math.max(n.width() - a.w - z - C, 0) / 2 + n.scrollLeft(); e = j.width() === a.w + z && j.height() === a.h + y ? 0 : f; A[0].style.width = A[0].style.height = "9999px"; j.dequeue().animate({ width: a.w + z, height: a.h + y, top: h, left: g }, { duration: e, complete: function () { b(this); D = c; A[0].style.width = a.w + z + C + "px"; A[0].style.height = a.h + y + B + "px"; d && d() }, step: function () { b(this) } }) }; d.resize = function (b) { if (u) { b = b || {}; if (b.width) a.w = p(b.width, m) - z - C; if (b.innerWidth) a.w = p(b.innerWidth, m); k.css({ width: a.w }); if (b.height) a.h = p(b.height, o) - y - B; if (b.innerHeight) a.h = p(b.innerHeight, o); if (!b.innerHeight && !b.height) { b = k.wrapInner("<div style='overflow:auto'></div>").children(); a.h = b.height(); b.replaceWith(b.children()) } k.css({ height: a.h }); d.position(a.transition === t ? 0 : a.speed) } }; d.prep = function (m) { var c = "hidden"; function l(s) { var p, f, m, c, l = h.length, q = a.loop; d.position(s, function () { function s() { E && j[0].style.removeAttribute("filter") } if (u) { E && o && k.fadeIn(100); k.show(); w(hb); Z.show().html(a.title); if (l > 1) { typeof a.current === "string" && Y.html(a.current.replace(/\{current\}/, g + 1).replace(/\{total\}/, l)).show(); I[q || g < l - 1 ? "show" : "hide"]().html(a.next); H[q || g ? "show" : "hide"]().html(a.previous); p = g ? h[g - 1] : h[l - 1]; m = g < l - 1 ? h[g + 1] : h[0]; a.slideshow && F.show(); if (a.preloading) { c = b.data(m, r).href || m.href; f = b.data(p, r).href || p.href; c = b.isFunction(c) ? c.call(m) : c; f = b.isFunction(f) ? f.call(p) : f; if (U(c)) b("<img/>")[0].src = c; if (U(f)) b("<img/>")[0].src = f } } K.hide(); a.transition === "fade" ? j.fadeTo(e, 1, function () { s() }) : s(); n.bind(v + i, function () { d.position(0) }); w(V, a.onComplete) } }) } if (u) { var o, e = a.transition === t ? 0 : a.speed; n.unbind(v + i); k.remove(); k = f(M).html(m); k.hide().appendTo(J.show()).css({ width: function () { a.w = a.w || k.width(); a.w = a.mw && a.mw < a.w ? a.mw : a.w; return a.w } (), overflow: a.scrolling ? q : c }).css({ height: function () { a.h = a.h || k.height(); a.h = a.mh && a.mh < a.h ? a.mh : a.h; return a.h } () }).prependTo(s); J.hide(); b("#" + i + "Photo").css({ cssFloat: t, marginLeft: q, marginRight: q }); X && b("select").not(j.find("select")).filter(function () { return this.style.visibility !== c }).css({ visibility: c }).one(N, function () { this.style.visibility = "inherit" }); a.transition === "fade" ? j.fadeTo(e, 0, function () { l(0) }) : l(e) } }; d.load = function (u) { var n, c, s, q = d.prep; D = e; l = h[g]; u || (a = cb(b.extend({}, b.data(l, r)))); w(Q); w(W, a.onLoad); a.h = a.height ? p(a.height, o) - y - B : a.innerHeight && p(a.innerHeight, o); a.w = a.width ? p(a.width, m) - z - C : a.innerWidth && p(a.innerWidth, m); a.mw = a.w; a.mh = a.h; if (a.maxWidth) { a.mw = p(a.maxWidth, m) - z - C; a.mw = a.w && a.w < a.mw ? a.w : a.mw } if (a.maxHeight) { a.mh = p(a.maxHeight, o) - y - B; a.mh = a.h && a.h < a.mh ? a.h : a.mh } n = a.href; K.show(); if (a.inline) { f().hide().insertBefore(b(n)[0]).one(Q, function () { b(this).replaceWith(k.children()) }); q(b(n)) } else if (a.iframe) { j.one(hb, function () { var c = b("<iframe frameborder='0' style='width:100%; height:100%; border:0; display:block'/>")[0]; c.name = i + +new Date; c.src = a.href; if (!a.scrolling) c.scrolling = "no"; if (E) c.allowtransparency = "true"; b(c).appendTo(k).one(Q, function () { c.src = "//about:blank" }) }); q(" ") } else if (a.html) q(a.html); else if (U(n)) { c = new Image; c.onload = function () { var e; c.onload = null; c.id = i + "Photo"; b(c).css({ border: t, display: "block", cssFloat: "left" }); if (a.scalePhotos) { s = function () { c.height -= c.height * e; c.width -= c.width * e }; if (a.mw && c.width > a.mw) { e = (c.width - a.mw) / c.width; s() } if (a.mh && c.height > a.mh) { e = (c.height - a.mh) / c.height; s() } } if (a.h) c.style.marginTop = Math.max(a.h - c.height, 0) / 2 + "px"; h[1] && (g < h.length - 1 || a.loop) && b(c).css({ cursor: "pointer" }).click(d.next); if (E) c.style.msInterpolationMode = "bicubic"; setTimeout(function () { q(c) }, 1) }; setTimeout(function () { c.src = n }, 1) } else n && J.load(n, function (d, c, a) { q(c === "error" ? "Request unsuccessful: " + a.statusText : b(this).children()) }) }; d.next = function () { if (!D) { g = g < h.length - 1 ? g + 1 : 0; d.load() } }; d.prev = function () { if (!D) { g = g ? g - 1 : h.length - 1; d.load() } }; d.close = function () { if (u && !O) { O = e; u = c; w(N, a.onCleanup); n.unbind("." + i + " ." + P); x.fadeTo("fast", 0); j.stop().fadeTo("fast", 0, function () { w(Q); k.remove(); j.add(x).css({ opacity: 1, cursor: q }).hide(); setTimeout(function () { O = c; w(eb, a.onClosed) }, 1) }) } }; d.element = function () { return b(l) }; d.settings = gb; b(d.init) })(jQuery, this);

// Print Element Plugin 1.2 - Copyright (c) 2010 Erik Zaadi - http://plugins.jquery.com/project/printElement 
(function (g) { function k(c) { c && c.printPage ? c.printPage() : setTimeout(function () { k(c) }, 50) } function l(c) { c = a(c); a(":checked", c).each(function () { this.setAttribute("checked", "checked") }); a("input[type='text']", c).each(function () { this.setAttribute("value", a(this).val()) }); a("select", c).each(function () { var b = a(this); a("option", b).each(function () { b.val() == a(this).val() && this.setAttribute("selected", "selected") }) }); a("textarea", c).each(function () { var b = a(this).attr("value"); if (a.browser.b && this.firstChild) this.firstChild.textContent = b; else this.innerHTML = b }); return a("<div></div>").append(c.clone()).html() } function m(c, b) { var i = a(c); c = l(c); var d = []; d.push("<html><head><title>" + b.pageTitle + "</title>"); if (b.overrideElementCSS) { if (b.overrideElementCSS.length > 0) for (var f = 0; f < b.overrideElementCSS.length; f++) { var e = b.overrideElementCSS[f]; typeof e == "string" ? d.push('<link type="text/css" rel="stylesheet" href="' + e + '" >') : d.push('<link type="text/css" rel="stylesheet" href="' + e.href + '" media="' + e.media + '" >') } } else a("link", j).filter(function () { return a(this).attr("rel").toLowerCase() == "stylesheet" }).each(function () { d.push('<link type="text/css" rel="stylesheet" href="' + a(this).attr("href") + '" media="' + a(this).attr("media") + '" >') }); d.push('<base href="' + (g.location.protocol + "//" + g.location.hostname + (g.location.port ? ":" + g.location.port : "") + g.location.pathname) + '" />'); d.push('</head><body style="' + b.printBodyOptions.styleToAdd + '" class="' + b.printBodyOptions.classNameToAdd + '">'); d.push('<div class="' + i.attr("class") + '">' + c + "</div>"); d.push('<script type="text/javascript">function printPage(){focus();print();' + (!a.browser.opera && !b.leaveOpen && b.printMode.toLowerCase() == "popup" ? "close();" : "") + "}<\/script>"); d.push("</body></html>"); return d.join("") } var j = g.document, a = g.jQuery; a.fn.printElement = function (c) { var b = a.extend({}, a.fn.printElement.defaults, c); if (b.printMode == "iframe") if (a.browser.opera || /chrome/.test(navigator.userAgent.toLowerCase())) b.printMode = "popup"; a("[id^='printElement_']").remove(); return this.each(function () { var i = a.a ? a.extend({}, b, a(this).data()) : b, d = a(this); d = m(d, i); var f = null, e = null; if (i.printMode.toLowerCase() == "popup") { f = g.open("about:blank", "printElementWindow", "width=650,height=440,scrollbars=yes"); e = f.document } else { f = "printElement_" + Math.round(Math.random() * 99999).toString(); var h = j.createElement("IFRAME"); a(h).attr({ style: i.iframeElementOptions.styleToAdd, id: f, className: i.iframeElementOptions.classNameToAdd, frameBorder: 0, scrolling: "no", src: "about:blank" }); j.body.appendChild(h); e = h.contentWindow || h.contentDocument; if (e.document) e = e.document; h = j.frames ? j.frames[f] : j.getElementById(f); f = h.contentWindow || h } focus(); e.open(); e.write(d); e.close(); k(f) }) }; a.fn.printElement.defaults = { printMode: "iframe", pageTitle: "", overrideElementCSS: null, printBodyOptions: { styleToAdd: "padding:10px;margin:10px;", classNameToAdd: "" }, leaveOpen: false, iframeElementOptions: { styleToAdd: "border:none;position:absolute;width:0px;height:0px;bottom:0px;left:0px;", classNameToAdd: ""} }; a.fn.printElement.cssElement = { href: "", media: ""} })(window);

/* jQuery UI Touch Punch 0.1.0 - https://github.com/furf/jquery-ui-touch-punch/blob/master/jquery.ui.touch-punch.min.js */
(function (c) { c.support.touch = typeof Touch === "object"; if (!c.support.touch) { return; } var f = c.ui.mouse.prototype, g = f._mouseInit, a = f._mouseDown, e = f._mouseUp, b = { touchstart: "mousedown", touchmove: "mousemove", touchend: "mouseup" }; function d(h) { var i = h.originalEvent.changedTouches[0]; return c.extend(h, { type: b[h.type], which: 1, pageX: i.pageX, pageY: i.pageY, screenX: i.screenX, screenY: i.screenY, clientX: i.clientX, clientY: i.clientY }); } f._mouseInit = function () { var h = this; h.element.bind("touchstart." + h.widgetName, function (i) { return h._mouseDown(d(i)); }); g.call(h); }; f._mouseDown = function (j) { var h = this, i = a.call(h, j); h._touchMoveDelegate = function (k) { return h._mouseMove(d(k)); }; h._touchEndDelegate = function (k) { return h._mouseUp(d(k)); }; c(document).bind("touchmove." + h.widgetName, h._touchMoveDelegate).bind("touchend." + h.widgetName, h._touchEndDelegate); return i; }; f._mouseUp = function (i) { var h = this; c(document).unbind("touchmove." + h.widgetName, h._touchMoveDelegate).unbind("touchend." + h.widgetName, h._touchEndDelegate); return e.call(h, i); }; })(jQuery);

/******INITIALIZE DATA NEEDED FOR PAGE********/

$(function () {

    //no amenity filter for now
    //$('#amenity-filter').parent().parent().remove();

    //this will give a loading overlay to body whenr ajaxy things are happening
    $([maac.settings.urls.ajaxLoader]).preload();
    $('<div/>').addClass('loading').appendTo('body').hide();
    $(document).ajaxStart(function () {
        $('body > .loading').show();
    }).ajaxStop(function () {
        $('body > .loading').hide();
    });


    //set flags for apartment/community searches
    $('.community #results').length ? maac.settings.isCommunitySearch = true : 0;
    $('.apartment #results').length ? maac.settings.isApartmentSearch = true : 0;
    $('.communityHome').length ? maac.settings.isCommunityHome = true : 0;

    //if community search then get amenities
    if (maac.settings.isCommunitySearch) maac.ajax.getTopAmenities();

    //if apartment search then get features
    if (maac.settings.isApartmentSearch) maac.ajax.getTopFeatures();

    //load communities if any provided if search results
    //if (maac.settings.isCommunitySearch || maac.settings.isApartmentSearch || $('#apply').length) { 
    //expecting community ids provided inline as part of the page
    $(maac.settings.communityIDs).each(function () {
        maac.ajax.getCommunity(this.toString());
    });
    //}

    //load state/city stuff if we have a form
    $('.cityStateSearchForm, .cityStateCom').length ? maac.ajax.getStates() : 0;
    //need cities-community object for this drop down
    $('.cityStateCom').length ? maac.ajax.getCities() : 0;

    //fire dataReady() after  JSON is loaded (if any)
    $(document).ajaxStop(function () { if (!maac.settings.initData) { maac.dataReady(); maac.settings.initData = true; } });

    //setup the jwplayer for floor plan and photos & tours pages
    if ($('#jqueryplayer').attr('src') != null && $('#jqueryplayer').attr('src') != '') {
        jwplayer('jqueryplayer').setup({ flashplayer: '/m/video/player.swf' });
    }

});

/******MISC UTILITY***********/

$(function () {

    //keep track of the kids - first and last classes to li,tr and th elements
    $('ul li:last-child, tr td:last-child, tr th:last-child').addClass('last');
    $('ul li:first-child, tr td:first-child, tr th:first-child').addClass('first');

    //make rows clickable, check any checkbox if there is one - handle the "check all" - rows change on hover
    $('.info table td').live("click", function (e) {
        var $check = $(this).parent().find('input[type=checkbox]');
        //if we arent clicking a link or the actual checkbox we should select/unselect the checkbox
        if (!$(this).find('a').length && e.target.type !== 'checkbox') {
            if ($check.is(':checked')) {
                //see if this is check all...and uncheck em all
                if ($check.hasClass('check-all')) {
                    //parent parent parent == td tr table
                    $check.parent().parent().parent().find('input[type=checkbox]').attr('checked', '');
                } else {
                    $check.attr('checked', '');
                }
            } else {
                //see if this is check all...and check em all
                if ($check.hasClass('check-all')) {
                    $check.parent().parent().parent().find('input[type=checkbox]').attr('checked', 'checked');
                } else {
                    $check.attr('checked', 'checked');
                }
            }
            e.preventDefault();
        }
        //directly clicking a check all checkbox 
        else if ((e.target.type == 'checkbox') && $(e.target).hasClass('check-all')) {
            $check.is(':checked') ? $check.parent().parent().parent().find('input[type=checkbox]').attr('checked', 'checked') : $check.parent().parent().parent().find('input[type=checkbox]').attr('checked', '');
        }
    });

    //keep from submitting the .net page on enter
    $('input[type=text]').keydown(function (e) {
        if (e.which || e.keyCode) {
            if ((e.which == 13) || (e.keyCode == 13)) {
                e.preventDefault();
            } else {
                return true;
            }
        }
    });

    //utility nav setup (print/share/email links)
    $('.print a').click(function (e) { e.preventDefault(); window.print(); });
    $('.utility .email a, .utility .share a').click(function () { return false; }).parent().click(function () { return true; });
    //sharethis is buggy so make sure it exists
    typeof stLight != "undefined" ? stLight.options({
        publisher: 'faa6843c-8b41-4c05-8b61-60f03c7a5993',
        offsetLeft: '-285',
        onhover: function () { alert('hover') }
    }) : log('share this not initialized');


});

/******FACET MENUs******/

$(function () {

    //slide toggles for the side forms (hide & show)
    if (!$('html').hasClass('ie7') && !$('html').hasClass('ie6')) { //Too many thigs going on for poor ie. No slide menu to reduce demands on it
        $('li.toggle').each(function () {
            $(this).prepend('<span><a href=""></a></span>');
            !$(this).hasClass('opened') ?
				$(this).addClass('closed').find('span a').html('show').parent().parent().find('ul').css('display', 'none') :
				$(this).addClass('closed').find('span a').html('hide');
            $(this).find('li.on').length ?
				$(this).removeClass('closed').addClass('opened').find('ul').slideDown('400').parent().find('span a').html('hide') : 0;
        })
		.find('span a').click(function (e) {
		    e.preventDefault();
		    var $target = $(this).parent().parent();
		    if ($target.hasClass('opened')) {
		        $target.removeClass('opened').addClass('closed').find('ul').slideUp('400').parent().find('span a').html('show');
		    } else {
		        $target.removeClass('closed').addClass('opened').find('ul').slideDown('400').parent().find('span a').html('hide');
		    }
		});
    }

    //facet form controls
    var init1 = ($.cookie('maac.settings.facets.zip').length > 0) ? $.cookie('maac.settings.facets.zip') : "";
    $('#zippicker .zip input').val(init1);
    $('#zippicker .distance select').change(function () {
        var zip = parseInt($('#zippicker .zip input').val());
        $.cookie('maac.settings.facets.zip', zip);
        maac.codeZip();
    });

    //small delay before running updates on slider values
    var timers = {};
    function delayShowData(type, values, callback) {
        showLoading('#results', true);
        clearTimeout(timers[type]);
        timers[type] = setTimeout(function () {
            callback(values);
            showLoading('#results', false);
        }, 600);
    }

    $("#slider-bed .slider").slider({
        range: true,
        min: 0,
        max: 4,
        values: [
			($.cookie('maac.settings.facets.bedMin').length > 0) ? parseInt($.cookie('maac.settings.facets.bedMin')) : 0,
			($.cookie('maac.settings.facets.bedMax').length > 0) ? parseInt($.cookie('maac.settings.facets.bedMax')) : 4
		],
        slide: function (event, ui) {
            var callback = function (values) {
                maac.settings.facets.bedMin = values[0];
                maac.settings.facets.bedMax = values[1];
                $.cookie('maac.settings.facets.bedMin', values[0]);
                $.cookie('maac.settings.facets.bedMax', values[1]);
                maac.updateListings();
            }
            delayShowData('bed', ui.values, callback);
        }
    });



    $("#slider-bath .slider").slider({
        range: true,
        min: 1,
        max: 3,
        values: [
			($.cookie('maac.settings.facets.bathMin').length > 0) ? parseInt($.cookie('maac.settings.facets.bathMin')) : 1,
			($.cookie('maac.settings.facets.bathMax').length > 0) ? parseInt($.cookie('maac.settings.facets.bathMax')) : 3
		],
        slide: function (event, ui) {
            var callback = function (values) {
                maac.settings.facets.bathMin = ui.values[0];
                maac.settings.facets.bathMax = ui.values[1];
                $.cookie('maac.settings.facets.bathMin', ui.values[0]);
                $.cookie('maac.settings.facets.bathMax', ui.values[1]);
                maac.updateListings();
            }
            delayShowData('bath', ui.values, callback);
        }
    });

    $("#slider-price .slider").slider({
        range: true,
        min: 500,
        max: 3000,
        values: [
			($.cookie('maac.settings.facets.priceMin').length > 0) ? parseInt($.cookie('maac.settings.facets.priceMin')) : 500,
			($.cookie('maac.settings.facets.priceMax').length > 0) ? parseInt($.cookie('maac.settings.facets.priceMax')) : 3000
		],
        slide: function (event, ui) {
            var callback = function (values) {
                maac.settings.facets.priceMin = ui.values[0];
                maac.settings.facets.priceMax = ui.values[1];
                $.cookie('maac.settings.facets.priceMin', ui.values[0]);
                $.cookie('maac.settings.facets.priceMax', ui.values[1]);
                maac.updateListings();
            }
            delayShowData('price', ui.values, callback);
        }
    });

    //datepickers
    var startDate = new Date();
    var dates = $("#startdate, #enddate").datepicker({
        showOn: "button",
        buttonImage: maac.settings.urls.calendarPng,
        buttonImageOnly: true,
        dateFormat: "mm/dd/yy",
        showAnim: "slideDown",
        minDate: "0",
        maxDate: "90",
        onSelect: function (selectedDate) {
            var option = this.id == "startdate" ? "minDate" : "maxDate",
				instance = $(this).data("datepicker"),
				date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
            dates.not(this).datepicker("option", option, date);

            var callback = function () {
                maac.settings.facets.dateMin = new Date($('#startdate').val());
                maac.settings.facets.dateMax = new Date($('#enddate').val());
                $.cookie('maac.settings.facets.dateMin', $('#startdate').val());
                $.cookie('maac.settings.facets.dateMax', $('#enddate').val());
                maac.updateListings();
            }
            delayShowData('date', '', callback);
        }
    });
    //.datepicker("setDate", startDate);

    //.NET forms version
    var NETdates = $(".startdate, .enddate,#singleDatepicker .date").datepicker({
        showOn: "button",
        buttonImage: maac.settings.urls.calendarPng,
        buttonImageOnly: true,
        dateFormat: "mm/dd/yy",
        showAnim: "slideDown",
        minDate: "0",
        maxDate: "90",
        onSelect: function (selectedDate) {
            var option = $(this).hasClass("startdate") ? "minDate" : "maxDate",
				instance = $(this).data("datepicker"),
				date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
            NETdates.not(this).datepicker("option", option, date);
            maac.settings.facets.dateMin = new Date($('.startdate').val());
            maac.settings.facets.dateMax = new Date($('.enddate').val());
            $.cookie('maac.settings.facets.dateMin', $('.startdate').val());
            $.cookie('maac.settings.facets.dateMax', $('.enddate').val());
            maac.updateListings();
        }
    });
    //.datepicker("setDate", startDate);

    //init date values if we have a cookie otherwise just today
    var dateMin = new Date(($.cookie('maac.settings.facets.dateMin').length > 0) ? $.cookie('maac.settings.facets.dateMin') : startDate);
    if ($.cookie('maac.settings.facets.dateMax').length > 0) {
        var dateMax = new Date($.cookie('maac.settings.facets.dateMax'));
    } else {
        var dateMax = new Date(startDate);
        dateMax.setDate(dateMax.getDate() + 10);
    }

    $('#startdate').datepicker("setDate", dateMin);
    $('#enddate').datepicker("setDate", dateMax);

    //changing via direct entry instead of datepicker
    $("#startdate, #enddate").change(function () {
        maac.settings.facets.dateMin = new Date($('#startdate').val());
        maac.settings.facets.dateMax = new Date($('#enddate').val());
        $.cookie('maac.settings.facets.dateMin', $('#startdate').val());
        $.cookie('maac.settings.facets.dateMax', $('#enddate').val());
        maac.updateListings();
    });

    //init facet settings
    maac.settings.facets.init();
    /******END FACET CONTROLS*****/

    //sort results by price
    $('#results_sort_select').change(function () {
        maac.updateListings();
    });
});



$(function () {
    /******POLY STATE MAP*********/
    //preload polymap hovers
    //$(['../m/screen/state-map-hovers.png']).preload();
    $('.poly').hover(
		function (e) {
		    e.preventDefault();
		    $(this).blur();
		    var hover = $(this).attr('id') + '-hover';
		    $('#' + hover).stop(true, true).fadeIn(200);
		},
		function (e) {
		    e.preventDefault();
		    $(this).blur();
		    var hover = $(this).attr('id') + '-hover';
		    $('#' + hover).hasClass('on') ? 0 : $('#' + hover).stop(true, true).fadeOut(400);
		}
	).click(function (e) {
	    e.preventDefault();
	    $(this).blur();
	    // If state values and title attrib of poly get out of sync this will break
	    $('#stateSelect select.state').val($(this).attr('title')).change();

	    var hover = $(this).attr('id') + '-hover';
	    $('div.state').removeClass('on');
	    $('#' + hover).stop(true, true).addClass('on');
	    $('div.state').not('.on').fadeOut(400);

	});

});

$(function () {
    /******TABS*******/
    $(".tabs").tabs({ fx: { opacity: 'toggle'} });
    $(".mapTabs").tabs({ fx: { height: 'toggle', opacity: 'toggle'} });
    $(".mapTabs li.list-only a").click(function () {
        $(".pin").animate({ width: '0px' }).parent().find('.withpin3').animate({ width: '220px' });
    });
    $(".mapTabs li.with-map a").click(function () {
        $(".pin").parent().find('.withpin3').animate({ width: '180px' });
        $(".pin").animate({ width: '40px' });
    });
});

$(function () {
    /******IMAGE FEATURES*******/
    //flicker badge slideshow
    $('#flickrThumb li a').click(function (e) {
        e.preventDefault();
        $('#flickrThumb li.on').removeClass('on');
        $(this).parent().addClass('on');
        var $curimg = $('#flickrImage').find('img').css('z-index', 2);
        var $newimg = $('<img />', {
            css: { 'z-index': '1' },
            src: $(this).attr('href')
        }).appendTo('#flickrImage');
        $curimg.css({ position: 'absolute', top: 0, left: 0 }).fadeOut(400, function () { $(this).remove(); });
    });

    //hero cycle
    $('.hero').each(function (i) {
        // find out if there are slides;
        var c = $(this).find('img').size();
        // if so, set the height of the container - height of the slides are variable per instance;
        if (c > 0) {
            var h = $(this).find('img').eq(0).attr('height');
            var h = h + 20; //account for our borders
            $(this).css('height', h + 'px');
        }
        // if there is more than one slide - initalize jQuery cycle;
        if (c > 1) {
            $(this)
				.append('<div class="pager pager-' + i + '" />') // making sure incase we use more than one cycle on a page we have unique pagers
				.cycle({
				    fx: 'fade',
				    pager: 'div.pager-' + i,
				    slideExpr: 'figure',
				    speed: 750,
				    timeout: 5000,
				    pause: true,
				    pagerEvent: null
				})
				.find('.pager a')
				.each(function (index) {
				    //give us a unique class for toggle incase of multiple slideshows
				    $(this).addClass('item-' + index);
				});
        }
    });

    //init slider gallery in tab
    $('.gallery-tab a').click(function () {
        initGallery();
    });

});


/******OVERLAYS (COLORBOX)***************/
$(function () {
    //video
    $('.ajaxVideo').each(function () {
        var videoMarkup = '<div>	<video id="jwplayer" height="290" width="460" src="' + $(this).attr("href") + '"></video>	</div>';
        $(this).colorbox({ html: videoMarkup, opacity: "0.5", close: "Close",
            scrolling: false,
            onComplete: function () {
                jwplayer('jwplayer').setup({ flashplayer: '/m/video/player.swf' });
                $.colorbox.resize();
            }
        });
    });

    //regular links
    $("a.ajaxLink").colorbox({
        opacity: "0.5",
        close: "Close",
        scrolling: false,
        onComplete: function () {
            //handle check availability
            $('a[rel="checkavail"]').click(function (e) {
                //reset all  filters except floorplan
                $.cookie('maac.settings.facets.bathMax', null);
                $.cookie('maac.settings.facets.bathMin', null);
                $.cookie('maac.settings.facets.bedMax', null);
                $.cookie('maac.settings.facets.bedMin', null);
                $.cookie('maac.settings.facets.dateMax', null);
                $.cookie('maac.settings.facets.dateMin', null);
                $.cookie('maac.settings.facets.floorplans', $(this).attr('data-name'));
            });

            //handle contact form
            if ($('.popContact').length) {
                //populate cities and community drop downs
                maac.ajax.getCities(maac.renderCommunitiesByCityForContact);
                //attach validation to the contact form
                $('.popContact button, .popContact .button').click(function () {
                    $('.popContact div.error').remove();
                    $('.popContact input.error').removeClass('error');
                    var pass = true;
                    var msg = "";
                    //check to see if topic requires community
                    if ($('.popContact .requireCommunity').is(':selected') && (($('.popContact #community option:selected').val() == undefined) || ($('.popContact #community option:selected').val() == ""))) {
                        msg += 'A metro and community are required for this topic<br>';
                        //$('.popContact .first-name').addClass('error');
                        pass = false;
                    }
                    //first name
                    if ($('.popContact .first-name').val().length < 2) {
                        msg += 'Please enter a valid first name<br>';
                        $('.popContact .first-name').addClass('error');
                        pass = false;
                    }
                    //last name
                    if ($('.popContact .last-name').val().length < 2) {
                        msg += 'Please enter a valid last name<br>';
                        $('.popContact .last-name').addClass('error');
                        pass = false;
                    }
                    //email & email
                    if ((!validateEmail($('.popContact .email').val())) && ($('.popContact .phone').val().length < 2)) {
                        msg += 'Provide either a valid phone or email address<br>';
                        $('.popContact .phone, .popContact .email').addClass('error');
                        pass = false;
                    }
                    //message
                    if ($('.popContact .message').val().length < 10) {
                        msg += 'Please enter a message';
                        $('.popContact .message').addClass('error');
                        pass = false;
                    }
                    if (!pass) {
                        $('<div class="error" />').insertAfter('.popContact h3').hide().html(msg).slideDown(400, function () { $.colorbox.resize() });

                    }
                    return pass;
                });
            } //end popContact


            if ($('.popApply').length) {
                //ie6 is choking on this
                $('.ie6').length ? $.colorbox.resize({ width: "225px" }) : 0;
                //apartment by building dropdowns
                if ($('.buildingSearch #building').length) {

                    $(maac.communities[0].apartments).each(function () {
                        maac.building.push({ "buildingID": this.buildingID, "apartmentID": this.apartmentID });
                    });

                    var buildingUnique = [];
                    $(maac.building).each(function () {
                        buildingUnique.push(this.buildingID);
                    });
                    buildingUnique = getUniqueItems(buildingUnique);

                    $(buildingUnique).each(function () {
                        $('.buildingSearch #building').append('<option>' + this + '</option>');
                    });

                    $('.buildingSearch #building').change(function () {
                        $('.buildingSearch #apt').empty();
                        $(maac.building).each(function () {
                            if (this.buildingID == $('.buildingSearch #building').val()) {
                                $('.buildingSearch #apt').append('<option>' + this.apartmentID + '</option>');
                            }
                        });
                    });

                    /***Apply now box submit**/
                    $('#apply button').click(function (e) {
                        e.preventDefault();
                        if ($('#building').val() !== 'Building' && $('#apt').val() !== 'Apt#') {
                            var startdate = new Date;
                            stringdate = (startdate.getMonth() + 1) + "/" + startdate.getDate() + "/" + startdate.getFullYear();
                            var applyURL = maac.communities[0].leasingPortalURL + '?bldg=' + $('#building').val() + '&unit=' + $('#apt').val() + '&move=' + stringdate + '&prop=' + maac.communities[0].communityID + '&return=' + document.URL;
                            window.location.href = applyURL;
                        } else {
                            alert('Please select both a building and unit before submitting');
                        }
                        return false;
                    });

                }
            }
        }
    });

    //print popup
    $("a.ajaxPrintImage").colorbox({
        opacity: "0.5",
        close: "Close",
        onComplete: function () {
            setTimeout($('#cboxPhoto').printElement(), 3500);
        }
    });

    //button launched overlays
    $("button.ajaxLink").colorbox({
        onOpen: function () {
            //see if we are comparing communities but none have been selected
            if (($(this).attr('data-values') === undefined) && ($('.compareForm button').length)) {
                alert('First select the communities you would like to compare');
                $.colorbox.close();
            }
        },
        href: function () {
            //if this is a compare communities we need to get a fresh url each time
            if ($('.compareForm button').length) {
                return getCompareURL();
            } else {
                return $(this).attr('data-href');
            }
        },
        opacity: "0.5", close: "Close",
        onComplete: function () {
            $('ul li:last-child, tr td:last-child, tr th:last-child').addClass('last');
            $('ul li:first-child, tr td:first-child, tr th:first-child').addClass('first');
            $('tr:odd').addClass('even');
            //handle compere floorplan box
            if ($('.popCompareFloorplan').length) {
                $('.popCompareFloorplan button').click(function (e) {
                    e.preventDefault();
                    //reset all facets since we are focused on a floorplan
                    $.cookie('maac.settings.facets.bathMax', null);
                    $.cookie('maac.settings.facets.bathMin', null);
                    $.cookie('maac.settings.facets.bedMax', null);
                    $.cookie('maac.settings.facets.bedMin', null);
                    $.cookie('maac.settings.facets.dateMax', null);
                    $.cookie('maac.settings.facets.dateMin', null);
                    var floorplans = [];
                    $('.popCompareFloorplan input:checked').not('.check-all').each(function () {
                        floorplans.push($(this).parent().parent().find('td').eq(0).text());
                    });
                    $.cookie('maac.settings.facets.floorplans', floorplans);
                    var url = $('.communityNav li.last a').attr('href');
                    window.location.href = url;
                });
            }
        }
    });

    function getCompareURL() {
        var url = $('.compareForm button').attr('data-href') + $('.compareForm button').attr('data-values');
        return url;
    }

    //provide placeholder like funtionality for browsers that dont support it yet (for ajaxed in content)
    $(document).setPlaceholders().bind('cbox_complete', function () {
        //make sure we have placeholders on our newly created input box
        $('#cboxContent').setPlaceholders();
    });

});

/******MISC FORMS SUBMITS (see colorbox section if the form is in an overlay)******/
$(function () {
    //handle the seach forms submit from a community/region page
    $('#search-submit').click(function () {
        //either on community page or region with 1 community, either way go to apartment search results
        if (maac.settings.communityIDs.length == 1) {
            //hijacking the url from the navigation
            var url = $('.communityNav li.last a').attr('href');
            window.location.href = url;
            return false;
        }
        //on a region page so build the url for community search results
        else if (maac.settings.communityIDs.length > 1) {
            var args = ""
            $(maac.settings.communityIDs).each(function (i) {
                var delim = (i < $(maac.settings.communityIDs).length - 1) ? "," : "";
                args += this + delim;
            });
            //http://maac.navigationarts.com/search-results.aspx?communityIDs=18085,10115,54002,18122,18069,18688,18070

            var url = "http://" + window.location.hostname + "/search-results.aspx?communityIDs=" + args;
            //log(url);
            //return false;
            window.location.href = url;
            return false;
        }
    });

    //Check Availability
    $('#tabs-10 a.button').click(function () {
        //reset all  filters except floorplan
        $.cookie('maac.settings.facets.bathMax', null);
        $.cookie('maac.settings.facets.bathMin', null);
        $.cookie('maac.settings.facets.bedMax', null);
        $.cookie('maac.settings.facets.bedMin', null);
        $.cookie('maac.settings.facets.dateMax', null);
        $.cookie('maac.settings.facets.dateMin', null);
        $.cookie('maac.settings.facets.floorplans', $(this).attr('data-name'));
    });

    //state/city/community dropdowns for "For MAA Residents" page
    $('.cityStateCom')
		.append('<div class="row">')
		.append('<div class="row">')
		.find('.row')
		.append('<div class="grid_3 alpha">')
		.append('<div class="grid_3 omega">');

    $('.cityStateCom .row:eq(0) .alpha').append('<select class="state"><option>Select a State...</option></select>');
    $('.cityStateCom .row:eq(0) .omega').append('<select class="city"></select>');
    $('.cityStateCom .row:eq(1) .alpha').append('<select class="community"></select>');
    $('.cityStateCom .row:eq(1) .omega')
		.append('<button class="right">Go</button>')
		.find('button')
		.click(function (e) {
		    e.preventDefault();
		    var url = $('.cityStateCom').find('select.community option:selected').attr('data-href');
		    if (url === undefined) {
		        alert('Please select a state, city and community to proceed.');
		    } else {
		        window.location.href = url + "#tabs-3";
		    }
		}); ;

    //make updates to city select lists when needed
    $('.cityStateCom select.state').change(function () {
        $('.cityStateCom').makeCitySelect();
    });
    //make updates to community list when city changes
    $('.cityStateCom select.city,.cityStateCom select.state').change(function () {
        $('.cityStateCom').makeCommunitySelect();
    });
});


/********************END DOC READY***************************/




/*******************GLOBAL VARS*****************************/

//	 google map
var map, geocoder;
var baseURL = window.location.hostname;
/*keep everything in maac namespace*/
var maac = {
    settings: {
        user: {
            "lat": "0",
            "lng": "0",
            "sharedPosition": "0"  	//0 :not shared, 1: shared, 2: asked but not shared
        },
        metroID: "Austin",
        communityIDs: [],  //"10038", //hold the current community if looking at just one
        urls: {
            // testing - to see lat/long show up in the JSON
            //apartmentsByCommunity: "/json/testcommunities.js",

            // production URLs
            apartmentsByCommunity: "http://" + baseURL + "/json/getApartments.aspx",
            floorplansByCommunity: "http://" + baseURL + "/json/floorplan.aspx",
            citiesByState: "http://" + baseURL + "/json/getStates.aspx",
            communitiesByCity: "http://" + baseURL + "/json/getCitiesCommunities.aspx",
            communityIDsByMetro: "http://" + baseURL + "/json/getCommunities.aspx",
            topAmenities: "http://" + baseURL + "/json/getAmenities.aspx",
            topFeatures: "http://" + baseURL + "/json/getFeatures.aspx",
            ajaxLoader: "/m/widgets/ajax-loader.gif",
            calendarPng: "/m/widgets/calendar.png"
        },
        jsonFail: false, //set in ajax functions to true if something doesnt work
        facets: {
            zip: "",
            distance: "",
            dateMin: "",
            dateMax: "",
            bedMin: "",
            bedMax: "",
            bathMin: "",
            bathMax: "",
            priceMin: "",
            priceMax: "",
            amenities: [],
            floorplans: [],
            init: function () {
                this.bedMin = $("#slider-bed .slider").slider("values", 0);
                this.bedMax = $("#slider-bed .slider").slider("values", 1);
                this.bathMin = $("#slider-bath .slider").slider("values", 0);
                this.bathMax = $("#slider-bath .slider").slider("values", 1);
                this.priceMin = $("#slider-price .slider").slider("values", 0);
                this.priceMax = $("#slider-price .slider").slider("values", 1);
                this.dateMin = new Date($('.startdate').val());
                this.dateMax = new Date($('.enddate').val());
            }
        },
        initData: false, //flag to see if we have json data
        hasGMap: false, //flag to check if there is a google map
        isCommunitySearch: false, //more flags for type of search page
        isApartmentSearch: false,
        isCommunityHome: false
    },
    dataReady: function () {
        /********************************DATA READY*****************/
        if (maac.jsonFail) {
            $('#results').html('<p>One or more of the requested data object could not be loaded. Please notify the website&apos;s adminitrator.</p>');
            $('.loading').hide();
            return false;
        };



        //apartment by building dropdowns
        if ($('.buildingSearch #building').length) {

            $(maac.communities[0].apartments).each(function () {
                maac.building.push({ "buildingID": this.buildingID, "apartmentID": this.apartmentID });
            });

            var buildingUnique = [];
            $(maac.building).each(function () {
                buildingUnique.push(this.buildingID);
            });
            buildingUnique = getUniqueItems(buildingUnique);

            $(buildingUnique).each(function () {
                $('.buildingSearch #building').append('<option>' + this + '</option>');
            });

            $('.buildingSearch #building').change(function () {
                $('.buildingSearch #apt').empty();
                $(maac.building).each(function () {
                    if (this.buildingID == $('.buildingSearch #building').val()) {
                        $('.buildingSearch #apt').append('<option>' + this.apartmentID + '</option>');
                    }
                });
            });

            /***Apply now box submit**/
            $('#apply button').click(function () {

                if ($('#building').val() !== 'Building' && $('#apt').val() !== 'Apt#') {
                    var applyURL = maac.communities[0].leasingPortalURL + '?bldg=' + $('#building').val() + '&unit=' + $('#apt').val() + '&move=' + $('#startdate').val() + '&prop=' + maac.communities[0].communityID + '&return=' + document.URL;
                    window.location.href = applyURL;
                } else {
                    alert('Please select both a building and unit before submitting');
                }
                return false;
            });



        }


        /*************Build a Community Listing Page******************/
        if (maac.settings.isCommunitySearch) {


            //no floorplan facet
            $('#floorplan-filter').parent().parent().remove();

            // AG
            // sort first by exposure before map icons
            maac.communities.sort(function sortAlpha(a, b) {
                return a.getExposure() < b.getExposure() ? 1 : -1;
            });

            //LVS: sort by rank after exposure has been taken care of
            maac.communities.sort(function sortNumber(a, b) {
                return a.getRank() - b.getRank();
            });


            //check for coords before creating map and markers
            $(maac.communities).each(function () {
                if (this.latitude != "") {
                    maac.settings.hasGMap = true;
                    return false;
                }
            });



            if (maac.settings.hasGMap) {
                $('#gmap').css({ "height": "350px", "height": "350px", "width": "700px", "margin-top": "20px" });
                maac.initMap();
                maac.setMarkers(maac.communities);
            }

            $(maac.communities).each(function () {
                this.renderListing();
            });

            //community amenities
            if ($('#amenity-filter').length) {
                var amenityList = [];
                amenityList = maac.topAmenities;
                amenityList = getUniqueItems(amenityList);
                $(amenityList).each(function (i) {
                    var amenityID = "amenity" + i;
                    var thisRow = (i < 10) ? $('<div class="row"><label for="amenity' + i + '">' + amenityList[i].amenityShortDescription + ' </label><input id="' + amenityID + '" type="checkbox" data-name="' + amenityList[i].guid + '" /></div>') : $('');                    
                    $('#amenity-filter').append(thisRow);

                    $('#' + amenityID).click(function () {
                        maac.settings.facets.amenities = [];
                        $('#amenity-filter input:checked').each(function () {
                            maac.settings.facets.amenities.push($(this).attr('data-name'));
                        });

                        //filterlistings();
                        maac.updateListings();
                    });
                });
            }
            maac.updateListings();
        }

        /***********Build an Apartment Listing Page****************/
        if (maac.settings.isApartmentSearch) {
            //no zippicker for apartment search
            $('#zippicker').remove();
            $('#datepicker').addClass('first');
            //load floorplan array 
            $(maac.communities[0].floorplans).each(function () {
                maac.settings.facets.floorplans.push(this.name);
            });

            //check for coords before creating map
            $(maac.communities[0].apartments).each(function () {
                if (this.latitude != "" && typeof (this.latitude) != "undefined") {
                    maac.settings.hasGMap = true;
                    return false;
                }
            });

            if (maac.settings.hasGMap) {
                $('#gmap').css({ "height": "350px", "height": "350px", "width": "700px", "margin-top": "20px" });
                maac.initMap();
                maac.setMarkers(maac.communities[0].apartments);
            }
            //create listings

            // AG: altered to actually remove apartments from the object so the filtering doesn't error out?
            var indexes = [];
            $(maac.communities[0].apartments).each(function (index) {
                var keepApt = this.renderListing(index);
                if (keepApt == false) {
                    indexes.push(this);
                }
            });


            // just to be safe, remove them after we run through the foreach
            $(indexes).each(function (index) {

                //log(this.apartmentID);
                //log(maac.communities[0].apartments.length);
                for (var i = 0; i <= maac.communities[0].apartments.length; i++) {
                    if (maac.communities[0].apartments[i] == this
            ) {
                        //log("Removing from apartments object : " + maac.communities[0].apartments[i].apartmentID);
                        maac.communities[0].apartments.splice(i, 1);
                    }
                }
            });
            /* */


            /*****AMENITIES FILTERS*******/
            if ($('#amenity-filter').length) {
                var amenityList = [];
                amenityList = maac.topFeatures;

                //make a list of unique values and store setting
                amenityList = getUniqueItems(amenityList);
                maac.settings.facets.amenities = [];

                //build the checkboxes
                $(amenityList).each(function (i) {
                    var amenityId = 'amenity' + i;
                    //max of 10 amenities
                    var thisRow = (i < 10) ? $('<div class="row"><label for="' + amenityId + '">' + amenityList[i].featureDesc + '</label><input id="amenity' + i + '" type="checkbox" data-name="' + amenityList[i].featureID + '" /></div>') : $('');
                    $('#amenity-filter').append(thisRow);

                    //thisRow.find('input').change(function () {
                    $('#' + amenityId).click(function () {
                        maac.settings.facets.amenities = [];
                        //refil amenity setting values
                        $('#amenity-filter input:checked').each(function () {
                            maac.settings.facets.amenities.push($(this).attr('data-name'));
                        });
                        maac.updateListings();
                    });
                });
            } //apartment amenity facet filterlisting

            /*****FLOORPLAN CHECKBOXES*******/

            if ($('#floorplan-filter').length) {
                $(maac.communities[0].floorplans).each(function (i) {
                    var $thisRow = $('<div class="row"><label for="floorplan' + i + '">' + this.name + ' </label><input id="floorplan' + i + '" type="checkbox" data-name="' + this.name + '" /></div>');
                    $('#floorplan-filter').append($thisRow);
                    $thisRow.find('input').change(function () {
                        maac.settings.facets.floorplans = [];
                        $('#floorplan-filter input:checked').each(function () {
                            maac.settings.facets.floorplans.push($(this).attr('data-name'));
                        });
                        maac.updateListings();
                    });
                });
                //if we hav a value check only those that are stored
                if ($.cookie('maac.settings.facets.floorplans').length > 0) {
                    var cookie = $.cookie('maac.settings.facets.floorplans');
                    //convert stored csv to an array
                    cookie = cookie.split(/,/);
                    //open the facet
                    $('#floorplan-filter').parent().parent().find('span a').click();
                    $(cookie).each(function () {
                        //update facets
                        $('#floorplan-filter input[data-name="' + this + '"]').attr('checked', 'checked');
                    });
                    //lets just grab the checked ones
                    maac.settings.facets.floorplans = [];
                    $('#floorplan-filter input:checked').each(function () {
                        maac.settings.facets.floorplans.push($(this).attr('data-name'));
                    });
                } else {
                    //check em all - by default all will be stored in facet
                    $('#floorplan-filter input[type=checkbox]').attr('checked', 'checked');
                }
            }

            //done building entities for apartment listings. re-render and sort
            maac.updateListings();
            $("#results .listing").tsort("", { order: "desc", attr: "data-match" });
            for (var i = 10; i > 0; i--) {
                $('#results .listing[data-match="' + i + '"]').tsort("", { order: "asc", attr: "data-pricelow" });
            }

            //listen to our items per page dropdown 
            $("#results_per_page_select").change(function () { maac.updateListings(); });

        } //end APARTMENT LISTINGS

        //this could be better
        //create city state search forms via custom plugins pare this down to one declaration for live since only one instance will exist
        $('.cityStateSearch .cityStateSearchForm').each(function () {
            $(this).makeStateSelect()
					.makeCitySelect()
					.append('<button type="submit" class="dark" value="Search">Search</button>')
					.find('button')
					.click(function () {
					    ($('.city').val() != "Select a City...") ? maac.ajax.gotoCommunitySearch($('.city option:selected').attr('data-metro-id')) : alert('You must select a city state combonation before submitting this form.');
					    return false;
					});
        });

        //update city dropdown
        $('.cityStateSearch .cityStateSearchForm select.state').change(function () {
            $('.cityStateSearch .cityStateSearchForm').makeCitySelect();
        });

        //city state community dropdowns for "For MAA Residents" page
        if ($('.cityStateCom').length) {
            $('.cityStateCom')
					.makeStateSelect()
					.makeCitySelect()
					.makeCommunitySelect();
        }


        $('#stateSelect .cityStateSearchForm').each(function () {
            $(this).makeStateSelect()
						.makeCitySelect()
						.append('<button type="submit" value="Search">Search</button>')
						.find('button')
						.click(function () {
						    ($('.city').val() != "Select a City...") ? maac.ajax.gotoCommunitySearch($('.city option:selected').attr('data-metro-id')) : alert('You must select a city state combonation before submitting this form.');
						    return false;
						});
        });
        //update city dropdown
        $('#stateSelect .cityStateSearchForm select.state').change(function () {
            $('#stateSelect .cityStateSearchForm').makeCitySelect();
        });

        $('.jobSearch fieldset').each(function () {
            $(this).makeStateSelect()
            .makeCitySelect();
        });
        //update city dropdown
        $('.jobSearch fieldset select.state').change(function () {
            $('.jobSearch fieldset').makeCitySelect();
        });

    }, //end dataReady
    ajax: {
        getStates: function () {
            //states with children cities(metros)
            $.ajax({
                type: "GET",
                url: maac.settings.urls.citiesByState,
                contentType: "application/json",
                dataType: "json",
                success: function (res) {
                    if (res.length > 0) {
                        $(res).each(function (i) {
                            var state = new State(res[i]);
                            maac.states.push(state);
                        });
                    }
                },
                error: function (xhr) {
                    maac.jsonFail = true;
                    log("err: " + xhr.statusText);
                }
            });
        },
        getCommunity: function (communityID) {
            //community object with child apartments
            $.ajax({
                type: "GET",
                //url : "../json/community"+communityID+".js",
                url: maac.settings.urls.apartmentsByCommunity,
                contentType: "application/json",
                dataType: "json",
                data: { "id": communityID },
                success: function (res) {
                    //checking for empty returns
                    if (typeof (res[0]) != 'undefined') {
                        var community = new Community(res[0]);
                        maac.communities.push(community);
                        maac.ajax.getFloorplans(communityID);
                    }
                },
                error: function (xhr) {
                    maac.jsonFail = true;
                    log("err: " + xhr.statusText);
                }
            });

        },
        getFloorplans: function (communityID) {
            //set of floorplans to a given community
            $.ajax({
                type: "GET",
                //url : "../json/floorplans"+communityID+".js",
                url: maac.settings.urls.floorplansByCommunity,
                contentType: "application/json",
                dataType: "json",
                data: { "id": communityID },
                success: function (res) {
                    if (res.length > 0) {
                        var floorplan = [];
                        $(res).each(function (i) {
                            floorplan.push(res[i]);
                            $(maac.communities).each(function () {
                                this.communityID == communityID ? this.floorplans = floorplan : 0;
                            });
                        });
                    }
                },
                error: function (xhr) {
                    maac.jsonFail = true;
                    log("err: " + xhr.statusText);
                }
            });
        },
        getCities: function (callback) {
            //json holds an object of cities and children communities
            //expects callback function to handle result
            var cities = [];
            $.ajax({
                type: "GET",
                url: maac.settings.urls.communitiesByCity,
                contentType: "application/json",
                dataType: "json",
                success: function (res) {
                    maac.cities = [];
                    if (res.length > 0) {
                        $(res).each(function (i) {
                            maac.cities.push(this);
                        });
                        //providing this for forms created on the fly in which the data might not exist
                        typeof callback !== 'undefined' ? callback() : 0;
                    }
                },
                error: function (xhr) {
                    maac.jsonFail = true;
                    log("err: " + xhr.statusText);
                }
            });
        },
        gotoCommunitySearch: function (metroID) {
            //gets community ids for a give metro and builds url for the search result
            $.ajax({
                type: "GET",
                url: maac.settings.urls.communityIDsByMetro,
                contentType: "application/json",
                dataType: "json",
                data: { "metro": metroID },
                success: function (res) {
                    var args = "";
                    if (res.length > 0) {
                        $(res).each(function (i) {
                            var delim = (i < res.length - 1) ? "," : "";
                            args += this.id + delim;
                        });
                        var url = "http://" + window.location.hostname + "/search-results.aspx?communityIDs=" + args;
                        window.location.href = url;
                        return false;
                    }
                },
                error: function (xhr) {
                    maac.jsonFail = true;
                    log("err: " + xhr.statusText);
                }
            });
        },
        //Community Amenities
        getTopAmenities: function (callback) {
            topAmenities = [];
            $.ajax({
                type: "GET",
                url: maac.settings.isCommunitySearch ? maac.settings.urls.topAmenities : maac.settings.urls.topFeatures,
                contentType: "application/json",
                dataType: "json",
                data: {},
                success: function (res) {
                    if (res.length > 0) {
                        $(res).each(function (i) {
                            maac.topAmenities.push(res[i]);
                        });
                    }
                },
                error: function (xhr) {
                    maac.jsonFail = true;
                    log("err: " + xhr.statusText);
                }
            });
        },
        //Apartment Features
        getTopFeatures: function (callback) {
            topFeatures = [];
            $.ajax({
                type: "GET",
                url: maac.settings.urls.topFeatures,
                contentType: "application/json",
                dataType: "json",
                data: {},
                success: function (res) {
                    if (res.length > 0) {
                        $(res).each(function (i) {
                            maac.topFeatures.push(res[i]);
                            //we need to sort individual apartments amenities based on this order
                            maac.settings.facets.amenities.push(res[i].featureID);
                        });
                    }
                }
            });
        }
    }, //end ajax calls
    states: [], //holds all our states objects
    cities: [], //holds all our cities objects
    communities: [], //holds all out community objects
    building: [], //holds temp set of building/apartment pairs for apply now box
    topAmenities: [],
    topFeatures: [],
    renderCommunitiesByCityForContact: function () {
        //specific to popContact box - should merge this with for residents dropdowns
        $(maac.cities).each(function () {
            $('.popContact .select-state').append('<option value="' + this.name + '">' + this.friendlyName + '</option>');
        });
        $('.popContact .select-state').change(function () {
            $('.popContact .select-community').html('');
            $(maac.cities).each(function (i) {
                if ($('.popContact .select-state').val() == this.name) {
                    $('.popContact .select-community').append('<option value="">Select Community</option>');
                    $(this.communities).each(function () {
                        // AG: changed this
                        // $('.popContact .select-community').append('<option>' + this.name + '</option>');
                        $('.popContact .select-community').append('<option value="' + this.scID + '">' + this.friendlyName + '</option>');
                    });
                }
            });
        });
    },
    renderCommunitiesByCityForResidents: function (data) {
        //specific to for residents page
        $(data).each(function () {
            $('.popContact .select-state').append('<option value="' + this.name + '">' + this.friendlyName + '</option>');
        });
        $('.popContact .select-state').change(function () {
            $('.popContact .select-community').html('');
            $(data).each(function (i) {
                if ($('.popContact .select-state').val() == this.name) {
                    $(this.communities).each(function () {
                        $('.popContact .select-community').append('<option>' + this.name + '</option>');
                    });
                }
            });
        });
    },
    updateListings: function () {
        //runs required methods to update a listing of apartments or communities
        $('#no-results').remove();

        if (maac.settings.isCommunitySearch) {
            $(maac.communities).each(function () {
                this.filterListing();
            });

        }
        else if (maac.settings.isApartmentSearch) {

            $(maac.communities[0].apartments).each(function () {
                this.filterListing();
            });

            if ($('#results_sort_select').val() == 1) {
                //first order by match
                $("#results .listing").tsort("", { order: "desc", attr: "data-match" });
                //walk through each match level starting with best match so it bubbles to top
                for (var i = 10; i > 0; i--) {
                    $('#results .listing[data-match="' + i + '"]').tsort("", { order: "desc", attr: "data-pricehigh" });
                }
            } else if ($('#results_sort_select').val() == 0) {
                //first order by match
                $("#results .listing").tsort("", { order: "desc", attr: "data-match" });
                //walk through each match level starting with best match so it bubbles to top
                for (var i = 10; i > 0; i--) {
                    $('#results .listing[data-match="' + i + '"]').tsort("", { order: "asc", attr: "data-pricelow" });
                }
            }

            //redo pagination
            //if ($('.listing out').length > 0) {
            $('#results').resultsPager({ pageSize: $('#results_per_page_select').val(), currentPage: 1, pagerLocation: "both" });
            //}

            //create results count
            var total = $('.listing').not('.out').length;
            var first = $('.listing').not('.out').index($('.listing:visible:first')) + 1;
            var last = $('.listing').not('.out').index($('.listing:visible:last')) + 1;
            $('#results_info').html(first + ' - ' + last + ' of ' + total + ' Results');
        }

        //display no results message if none visible
        $('.listing').not('.nomatch').length ? 0 : $('<div />').appendTo('#results').attr('id', 'no-results').html('<p>There are no results based on the search criteria. Please adjust the seach filters to see more results.</p>');

    },

    initMap: function () {
        /*some custom google map funcs*/
        //lets keep track of our markers
        google.maps.Map.prototype.markers = new Array();
        google.maps.Map.prototype.getMarkers = function () {
            return this.markers
        };
        //gives us a function to wipe out markers
        google.maps.Map.prototype.clearMarkers = function () {
            for (var i = 0; i < this.markers.length; i++) {
                this.markers[i].setMap(null);
            }
            this.markers = new Array();
        };

        google.maps.Marker.prototype._setMap = google.maps.Marker.prototype.setMap;
        google.maps.Marker.prototype.setMap = function (map) {
            if (map) {
                map.markers[map.markers.length] = this;
            }
            this._setMap(map);
        }
        //make the map
        var options = {
            //optional args see http://code.google.com/intl/sv-SE/apis/maps/documentation/v3/reference.html#MapOptions
            scrollwheel: false,
            scaleControl: false,
            mapTypeIds: 0,
            //required (zoom/center will be changed when we add pins in setMarkers with fitBounds)
            zoom: 16,
            center: new google.maps.LatLng(30.267153, -97.743061),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        geocoder = new google.maps.Geocoder();

        map = new google.maps.Map(document.getElementById("gmap"), options);
        //set up initial zoom 	
        google.maps.event.addListener(map, 'zoom_changed', function () {
            zoomChangeBoundsListener =
						google.maps.event.addListener(map, 'bounds_changed', function (event) {
						    if (this.getZoom() > 15 && this.initialZoom == true) {
						        // Change max/min zoom here
						        this.setZoom(15);
						        this.initialZoom = false;
						    }
						    google.maps.event.removeListener(zoomChangeBoundsListener);
						});
        });
        map.initialZoom = true;

    },
    codeZip: function () {
        var zip = $('.zip input').val();
        //var address = document.getElementById("address").value;
        geocoder.geocode({ 'address': zip }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location
                });
                var radius = parseInt($('#zippicker .distance select').val() * 1609.344);
                var circle = new google.maps.Circle({
                    map: map,
                    radius: radius,
                    fillColor: "#EF8454",
                    strokeColor: "#EF8454",
                    fillOpacity: 0.2,
                    strokeOpacity: 0.6
                });
                circle.bindTo('center', marker, 'position');
            } else {
                alert("Geocode was not successful for the following reason: " + status);
            }
        });
    },
    setMarkers: function (data) {
        //data is an object which is expected to have latitude, longitude and name properties
        google.maps.Map.prototype.clearMarkers();
        var bounds = new google.maps.LatLngBounds();

        $(data).each(function (i) {
            if ((typeof this.latitude !== "undefined") && (typeof this.longitude !== "undefined")) {
                var latlng = new google.maps.LatLng(parseFloat(this.latitude), parseFloat(this.longitude));
                //convert the index of current item to alpha string unless we have more pins than alphabet, in which case use blank pin
                var alpha = "";
                i < 26 ? alpha = String.fromCharCode(65 + i) : 0;
                var marker = new google.maps.Marker({ position: latlng, icon: '/m/widgets/pins/pin' + alpha + '.png', title: this.name, map: map });
                this.marker = marker; //attach this marker to the object
                this.alpha = alpha;
                var $this = this;

                //http://mapki.com/wiki/Google_Map_Parameters#Directions
                var directionsLink = 'http://maps.google.com/maps?mrsp=1&daddr=' + $this.address + ' ' + $this.address2 + ',' + $this.city + ',' + $this.state + ',' + $this.zip + ' (' + $this.name + ')';

                if (typeof ($this.name) != 'undefined') {
                    //community bubble
                    var infoContent = '<div class="bubble"><h4>' + $this.name + '</h4><img src="' + this.featuredImage + '" class="right" /><p>' + $this.address + ' ' + $this.address2 + '<br>' + $this.city + ' ' + $this.state + ', ' + $this.zip + '<br>' + $this.phone + '</p><p><a href="' + $this.url + '">Website</a><br>	<a href="' + $this.aptSearchResultPage + '">View Available (' + $this.getInventoryDisplay() + ')</a></p><p>	<a href="' + directionsLink + '">Directions</a></p></div>';
                } else {
                    //apartment bubble
                    var infoContent = '<div class="bubble"><h4>Apartment #' + $this.apartmentID + '</h4></div>';
                }
                var infowindow = new google.maps.InfoWindow({ content: infoContent });

                //create the function for google to trigger when a marker is clicked
                google.maps.event.addListener(marker, "click", function () {
                    infowindow.open(map, marker);
                });
                bounds.extend(latlng);
                map.fitBounds(bounds);

            }
        });

        //utility to show where we clicked on the map in the lat long finder div (for finding apartment coords while looking at an overlay)
        //requires llfinder.js (included on apt search
        google.maps.event.addListener(map, 'click', function (event) {
            var llmessage = '<span>' + event.latLng + '</span>';
            $('#llfinder').html(llmessage);
        });

    }

} //end maac namespace


/******data classes*******/
function Community(data) {
    for (x in data) {
        data.hasOwnProperty(x) ? this[x] = data[x] : this[x] = "";
    }

    //convert these apartments to objects so we can attatch functions to them
    var _apartments = [];
    $(this.apartments).each(function () {
        //making sure its at least todays date and converting to Date object
        var thisDate = parseInt(this.vacancyStart.replace(/\D/g, '')); //extracting numerical date from funky .NET date string
        thisDate = new Date(thisDate);
        var today = new Date();
        thisDate < today ? thisDate = today : 0;
        this.vacancyStart = new Date(thisDate);
        this.vacancyStart.setHours(0, 0, 0, 0);
        var dStart = new Date(this.vacancyStart);
        var dEnd = new Date(dStart.setDate(dStart.getDate() + 10));
        this.vacancyEnd = new Date(dEnd); //keep track of this for filtering
        _apartments.push(new Apartment(this));
    });
    this.apartments = _apartments;

    this.getPrice = function (minMax) {
        var price = 0; //find lowest or highest apartment price
        if (this.apartments.length) {
            if (minMax == "min") {
                var price = this.apartments[0].priceLow;
                $(this.apartments).each(function () {
                    price > this.priceLow ? price = this.priceLow : 0;
                });
            } else {
                var price = this.apartments[0].priceHigh;
                $(this.apartments).each(function () {
                    price < this.priceHigh ? price = this.priceHigh : 0;
                });
            }
        }
        return price;
    }

    this.getBedrooms = function (minMax) {
        if (this.floorplans.length) {
            var bedrooms = parseFloat(this.floorplans[0].numberOfBedrooms);
            if (minMax == "min") {
                $(this.floorplans).each(function () {
                    bedrooms > parseFloat(this.numberOfBedrooms) ? bedrooms = this.numberOfBedrooms : 0;
                });
            } else {
                $(this.floorplans).each(function () {
                    bedrooms < parseFloat(this.numberOfBedrooms) ? bedrooms = this.numberOfBedrooms : 0;
                });
            }
        }
        bedrooms < 1 ? bedrooms = 0 : 0;
        return bedrooms;
    }

    this.getBathrooms = function (minMax) {
        if (this.floorplans.length) {
            var bathrooms = parseFloat(this.floorplans[0].numberOfBathrooms);
            if (minMax == "min") {
                $(this.floorplans).each(function () {
                    bathrooms > parseFloat(this.numberOfBathrooms) ? bathrooms = this.numberOfBathrooms : 0;
                });
            } else {
                $(this.floorplans).each(function () {
                    bathrooms < parseFloat(this.numberOfBathrooms) ? bathrooms = this.numberOfBathrooms : 0;
                });
            }
        }
        bathrooms < 1 ? bathrooms = 0 : 0;
        return bathrooms;
    }

    this.getSquareFeet = function (minMax) {
        if (this.floorplans.length) {
            var squarefeet = parseInt(this.floorplans[0].squareFootage);
            if (minMax == "min") {
                $(this.floorplans).each(function () {
                    squarefeet > parseInt(this.squareFootage) ? squarefeet = this.squareFootage : 0;
                });
            } else {
                $(this.floorplans).each(function () {
                    squarefeet < parseInt(this.squareFootage) ? squarefeet = this.squareFootage : 0;
                });
            }
        }
        return squarefeet;
    }

    this.getFirstAvailable = function () {
        var available = new Date;
        if (this.apartments.length) {
            var available = this.apartments[0].vacancyStart;
            $(this.apartments).each(function () {
                available > this.vacancyStart ? available = this.vacancyStart : 0;
            });
        }
        return (available.getMonth() + 1) + "/" + available.getDate() + "/" + available.getFullYear();
    }

    this.getAmenities = function (count) {
        //get all of them
        typeof (count) == 'undefined' ? count = this.amenities.length : 0;
        var amenities = []; //get x number of amenities
        for (var i = 0; i < count && i < this.amenities.length; i++) {
            amenities.push(this.amenities[i].amenityShortDescription)
        }
        return amenities;
    }

    this.topAmenities = function () {
        var amenities = maac.ajax.getTopAmenities();
        return amenities;
    }

    this.getExposure = function () {
        // AG added calc for exposure
        //var exposure = "" //calc exposure from available/inventory
        var exposure = 0;
        try {
            var rented = this.inventory - this.apartments.length;
            exposure = this.inventory / rented;
        }
        catch (err) {
            log(err);
        }
        return exposure;
    }

    //LVS: added this property to sort results by rank/weight if a value exists
    this.getRank = function () {
        return (this.weight == null || this.weight == "") ? maac.communities.length + 1 : this.weight;
    }

    this.getInventoryDisplay = function () {
        var inventory = this.apartments.length;
        inventory > 19 ? inventory = "20+" : 0;
        return inventory;
    }

    this.renderListing = function () {
        //attach the dom we create back to the community so we can get back to it
        this.$listing = $('<div class="listing row" data-exposure="' + this.getExposure() + '" />')
			.appendTo('#results')
			.append('<div class="grid_3 alpha image"><img src="' + this.featuredImage + '" /></div>')
			.append('<div class="grid_4 mid"></div>')
			.append('<div class="grid_2 omega end"></div>');

        //determine if we have a map and pins and need to make space for them in listing
        var pin = (maac.settings.hasGMap) ? '<span class="pin pin' + this.alpha + '"></span>' : "";
        var pinClass = (pin.length) ? 'withpin7' : '';

        this.$listing.find('.mid')
			.append(pin)
			.append('<div class="' + pinClass + '"><h4><a href="' + this.url + '">' + this.name + '</a></h4><p><strong>' + this.phone + '</strong><br />' + this.address + '<br />' + this.city + ', ' + this.state + ' ' + this.zip + '</p></div>')
			.append('<div class="grid_2 alpha"><ul></ul></div>')
			.append('<div class="grid_2 omega"><ul></ul></div>');

        this.$listing.find('.mid .grid_2.alpha ul')
			.append('<li><strong>PRICE:</strong> $' + this.getPrice("min") + '-$' + this.getPrice("max") + '</li>')
			.append('<li><strong>bedrooms:</strong>  ' + this.getBedrooms("min") + ' - ' + this.getBedrooms("max") + '</li>')
			.append('<li><strong>baths:</strong>  ' + this.getBathrooms("min") + ' - ' + this.getBathrooms("max") + '</li>')
			.append('<li><strong>sq. feet:</strong>  ' + this.getSquareFeet("min") + ' - ' + this.getSquareFeet("max") + '</li>')
			.append('<li><strong>1st Avail:</strong>  ' + this.getFirstAvailable() + '</li>');

        var $amenitiesList = this.$listing.find('.mid .grid_2.omega ul')
				.append('<li><strong>Featured Amenities:</strong></li>');
        var amenities = this.getAmenities(4);
        $(amenities).each(function (i) {
            $amenitiesList.append('<li>' + amenities[i] + '</li>');
        });

        this.$listing.find('.end')
				.append('<ul class="no-top"></ul>')
				.append('<input class="compare" id="compare' + this.communityID + '" type="checkbox" data-id="' + this.communityID + '">')
				.append('<label for="compare' + this.communityID + '">Compare</label>');

        var specials = (this.specialsURL.length) ? '<li><a class="ajaxLink" href="' + this.specialsURL + '">View Specials</a></li>' : "";
        this.$listing.find('.end ul')
				.append('<li class="count"><a href="' + this.aptSearchResultPage + '">View Available (' + this.getInventoryDisplay() + ')</a></li>')
				.append('<li><a href="' + this.url + '">View Community Site</a></li>')
				.append(specials);

        this.$listing.find("a.ajaxLink").colorbox({ opacity: "0.5", close: "Close" });

        /******MAX CHECKED CHECKBOXES**/
        this.$listing.find('input.compare').change(function () {
            $('.compare:checked').length > 3 ?
				$('.compare').not(':checked').attr("disabled", "disabled").next('label').addClass('disabled')
				: $('.compare').not(':checked').removeAttr("disabled").next('label').removeClass('disabled');
            var args = "?id="
            $('.compare:checked').each(function (i) {
                var delim = (i < $('.compare:checked').length - 1) ? "|" : "";
                args += $(this).data('id') + delim;
            });

            //http://dev-maac-02/lightbox/compare-community.aspx?id=1043|4444|6754|1957&startdate=1-15-2010&enddate=11-15-2011
            //args += "&startdate="+$('.startdate').val();
            //args += "&enddate="+$('.enddate').val();
            //$('.compareForm button').attr('data-values',args);

            //if any checkboxes checked update values data otherwise remove the attribute
            if ($('.compare:checked').length) {
                $('.compareForm button').attr('data-values', args);
            } else {
                $('.compareForm button').removeAttr('data-values');
            }

        });

    } //renderListing
    //community.filterlisting
    this.filterListing = function () {

        var community = this;

        //get all community amenity guids
        var amenityList = [];
        $(community.amenities).each(function (index) {
            amenityList.push(community.amenities[index].guid);
        });

        var startDate = new Date(this.getFirstAvailable);
        var startDate = startDate.getTime();

        var include;
        //check if the community contains all checked amenities .. break the iteration on first 
        $(maac.settings.facets.amenities).each(function (amenityIndex) {
            include = $.inArray(maac.settings.facets.amenities[amenityIndex], amenityList);
            return include < 0 ? false : true;
        });
        //if not all selected match any of the communities
        if (include < 0 ||
                ((maac.settings.facets.bedMin > this.getBedrooms("max")) ||
                (maac.settings.facets.bedMax < this.getBedrooms("min")) ||
                (maac.settings.facets.bathMin > this.getBathrooms("max")) ||
                (maac.settings.facets.bathMax < this.getBathrooms("min")) ||
                (maac.settings.facets.priceMin > this.getPrice("max")) ||
                (maac.settings.facets.priceMax < this.getPrice("min")))
            ) {
            community.$listing.addClass('out').slideUp().fadeOut();
            typeof (community.marker) != 'undefined' ? community.marker.setVisible(false) : 0;
        }
        //when the amenities and other set filters have a match
        else if (include >= 0 ||
                ((maac.settings.facets.bedMin > this.getBedrooms("max")) ||
                (maac.settings.facets.bedMax < this.getBedrooms("min")) ||
                (maac.settings.facets.bathMin > this.getBathrooms("max")) ||
                (maac.settings.facets.bathMax < this.getBathrooms("min")) ||
                (maac.settings.facets.priceMin > this.getPrice("max")) ||
                (maac.settings.facets.priceMax < this.getPrice("min")))
            ) {
            this.$listing.removeClass('out').slideDown().fadeIn();
            typeof (community.marker) != 'undefined' ? community.marker.setVisible(true) : 0;
        }
        //when none of the amenities are selected but filters are in place
        else if ((maac.settings.facets.bedMin > this.getBedrooms("max")) ||
                (maac.settings.facets.bedMax < this.getBedrooms("min")) ||
                (maac.settings.facets.bathMin > this.getBathrooms("max")) ||
                (maac.settings.facets.bathMax < this.getBathrooms("min")) ||
                (maac.settings.facets.priceMin > this.getPrice("max")) ||
                (maac.settings.facets.priceMax < this.getPrice("min"))) {
            community.$listing.addClass('out').slideUp().fadeOut();
            typeof (community.marker) != 'undefined' ? community.marker.setVisible(false) : 0;
        }
        //when none of the filters are in place and the community doesn't have the selected amenities
        else if (include < 0) {
            community.$listing.addClass('out').slideUp().fadeOut();
            typeof (community.marker) != 'undefined' ? community.marker.setVisible(false) : 0;
        }
        //when the filters match and community contains all selected amenities
        else if (include >= 0) {
            this.$listing.removeClass('out').slideDown().fadeIn();
            typeof (community.marker) != 'undefined' ? community.marker.setVisible(true) : 0;
        }
        //when none of the filters are used and none of the amenities are checked
        else {
            this.$listing.removeClass('out').slideDown().fadeIn();
            typeof (community.marker) != 'undefined' ? community.marker.setVisible(true) : 0;
        }
    }

} //end Community class

function Apartment(data) {
    for (x in data) {
        data.hasOwnProperty(x) ? this[x] = data[x] : this[x] = "";
    }

    this.renderListing = function (aptIndex) {

        //building date range string
        var dateRange = (this.vacancyStart.getMonth() + 1) + "/" + this.vacancyStart.getDate() + "/" + this.vacancyStart.getFullYear().toString().slice(2);
        dateRange += " - ";
        dateRange += (this.vacancyEnd.getMonth() + 1) + "/" + this.vacancyEnd.getDate() + "/" + this.vacancyEnd.getFullYear().toString().slice(2);

        //need date minus the slice for apply url
        var moveIn = (this.vacancyStart.getMonth() + 1) + "/" + this.vacancyStart.getDate() + "/" + this.vacancyStart.getFullYear().toString();
        var applyURL = maac.communities[0].leasingPortalURL + '?bldg=' + this.buildingID + '&unit=' + this.apartmentID + '&move=' + moveIn + '&prop=' + maac.communities[0].communityID + '&return=' + document.URL;

        //var applyURL = 'https://leasing.maac.net/getunit.aspx?bldg='+this.buildingID+'&amp;unit='+this.apartmentID+'&amp;move='+moveIn+'&amp;prop='+maac.communities[0].communityID+'&amp;return='+document.URL;

        var $applyButton = $('<button data-url="' + applyURL + '">Apply Online</button>').click(function () {
            window.location.href = $(this).data('url');
            return false;
        });

        //attach the floorplan to the apartment
        for (var i = 0; i < maac.communities[0].floorplans.length; i++) {
            (this.floorPlanID.toLowerCase() == maac.communities[0].floorplans[i].mriAmenityCode.toLowerCase()) ? this.floorplan = maac.communities[0].floorplans[i] : 0;
        }
        if (typeof (this.floorplan) == 'undefined') {
            log('no floorplan for apt ID "' + this.apartmentID + '". Apt removed.');
            //log('removing: ' + maac.communities[0].apartments[aptIndex].apartmentID);
            //maac.communities[0].apartments.splice(aptIndex, 1)
            return false;
        }

        //determine if we have a map and pins and need to make space for them in listing
        var pin = (maac.settings.hasGMap) ? '<span class="pin pin' + this.alpha + '"></span>' : "";
        var pinClass = (pin.length) ? 'withpin3' : '';

        this.$listing = $('<div class="listing row" data-pricelow="' + this.priceLow + '" data-pricehigh="' + this.priceHigh + '" />')
			.appendTo('#results')
			.append(pin)
			.append('<h4><a href="' + this.floorplan.linkToSelf + '">Apartment #' + this.apartmentID + '</a> <span></span></h4>')
			.append('<div class="grid_3 alpha ' + pinClass + '"><ul>')
			.append('<div class="grid_2 mid"><ul></ul>')
			.append('<div class="grid_2 mid2"><ul></ul>')
			.append('<div class="grid_2 omega"></div>')
			.append($applyButton)
            .append('<input class="compare" name="'+ this.apartmentID + ':' + this.buildingID + '" id="' + this.apartmentID + '" type="checkbox" data-id="' + this.apartmentID + '">')
			.append('<label for="' + this.apartmentID + ':' + this.buildingID + '">Brochure</label>');

        this.$listing.find('.grid_3 ul')
			.append('<li><strong>PRICE range:</strong>  <a href="/json/getleaseterms.aspx?cid=' + maac.communities[0].communityID + '&bid=' + this.buildingID + '&aid=' + this.apartmentID + '" class="ajaxLink">$' + this.priceLow + '-$' + this.priceHigh + '</a></li>')
			.append('<li><strong>bedrooms:</strong>  ' + this.floorplan.numberOfBedrooms + '</li>')
			.append('<li><strong>baths:</strong>  ' + this.floorplan.numberOfBathrooms + '</li>')
			.append('<li><strong>sq. feet:</strong>  ' + this.floorplan.squareFootage + '</li>')
			.append('<li><strong>move-in:</strong>  ' + dateRange + '</li>');


        var $amenitiesList = this.$listing.find('.mid ul')
			.append('<li><strong>Amenities:</strong></li>');
        var count = 0;
        var apartmentFeatures = this.apartmentFeatures;

        //first show all amenities which are in the left side amenities list
        $(maac.settings.facets.amenities).each(function (index) {
            $(apartmentFeatures).each(function (aptFeatIndex) {
                if (maac.settings.facets.amenities[index] == apartmentFeatures[aptFeatIndex].featureID && count < 4) {
                    $amenitiesList.append('<li data-name="' + apartmentFeatures[aptFeatIndex].featureID + '">' + apartmentFeatures[aptFeatIndex].featureDesc + '</li>');
                    count++;
                }
            });
        });

        //build photo slideshow if there are any photos
        var fpPhotos = "";
        $(this.floorplan.photos).each(function (i) {
            var hide = (i != 0) ? "hide" : "";
            fpPhotos += '<li class="' + hide + '"><a href="' + this + '" rel="slideshow"  title="Photo ' + i + '">Photos</a></li>';
        });

        var fpLeasingInfo = "";
        if (maac.communities[0].leasingInfoURL != null) {
            fpLeasingInfo = '<li><a class="ajaxLink" href="' + maac.communities[0].leasingInfoURL + '">Leasing Information</a></li>';
        }

        this.$listing.find('.mid2 ul')
			.append('<li><strong>' + this.floorplan.name + ' model:</strong></li>')
			.append('<li><a class="ajaxLink" href="' + this.floorplan.floorPlanImage + '">Floor Plan</a></li>')
			.append(fpLeasingInfo)
			.append(fpPhotos)
            .append('<li><a href="' + this.floorplan.linkToSelf + '#tabs-12">Tours &amp; Video</a></li>');

        this.$listing.find('input.compare').change(function () {
            $('.compare:checked').length > 1 ?
					$('.compare').not(':checked').attr("disabled", "disabled").next('label').addClass('disabled')
					: $('.compare').not(':checked').removeAttr("disabled").next('label').removeClass('disabled');

            var args = "?id="
            $('.compare:checked').each(function (i) {
                var delim = (i < $('.compare:checked').length - 1) ? "|" : "";
                args += $(this).data('id') + delim;
            });

            //if any checkboxes checked update values data otherwise remove the attribute
            if ($('.compare:checked').length) {
                $('.compareForm button').attr('data-values', args);
            } else {
                $('.compareForm button').removeAttr('data-values');
            }

        });


        //hook ajax links not picked up in doc.ready 		
        this.$listing.find("a.ajaxLink").colorbox({ opacity: "0.5", close: "Close" });
        //inline colorbox slideshow
        //this.$listing.find("a[rel='slideshow']").colorbox({	slideshow:true,	slideshowAuto:false,	opacity:"0.5",	slideshowStart:"",	slideshowStop:""		});

    }                                   //renderListing

    this.filterListing = function () { //filterListing

        //go through features and hide apartments which do not have all selected features
        /*
        var includeInResults;
        var apartment = this;
        var featuresList = [];
        $(apartment.apartmentFeatures).each(function () {
        featuresList.push(this.featureID);
        });
        
        
        
        //check if the apartments contains all checked amenities .. break the iteration on first 
        $(maac.settings.facets.amenities).each(function (index) {
        includeInResults = featuresList.indexOf(maac.settings.facets.amenities[index]);
        return includeInResults < 0 ? false : true;
        });

        if (includeInResults >= 0 || maac.settings.facets.amenities.length == 0 || includeInResults == 'undefined') {
        */
        //this.$listing.removeClass('out').slideDown().fadeIn();
        this.vacancyStart.setHours(0, 0, 0, 0);
        maac.settings.facets.dateMax.setHours(0, 0, 0, 0);
        this.match = 10; //starting point for percent match value

        maac.settings.facets.dateMin = new Date($('#startdate').val());
        maac.settings.facets.dateMax = new Date($('#enddate').val());

        var debug1 = 0;

        /*
        if (debug1 == 1) {
        console.log("********************************************************************");
        console.log("Apartment ID: " + this.apartmentID + " Begin Apartment Match Score: " + this.match);
        console.log("Vacancy Start: " + this.vacancyStart.getTime());
        console.log("Date Min: " + (maac.settings.facets.dateMin.getTime()));
        console.log("Date Max: " + (maac.settings.facets.dateMax.getTime()));
        }

        */
        //walk through facets and decrement each time we fail the filter
        /*
        (maac.settings.facets.dateMin.getTime() > this.vacancyStart.getTime()) ? this.match -= 2 : 0;
        (maac.settings.facets.dateMax.getTime() < this.vacancyStart.getTime()) ? this.match -= 2 : 0;
        (maac.settings.facets.bedMin > this.floorplan.numberOfBedrooms) ? this.match -= 2 : 0;
        (maac.settings.facets.bedMax < this.floorplan.numberOfBedrooms) ? this.match -= 2 : 0;
        (maac.settings.facets.bathMin > this.floorplan.numberOfBathrooms) ? this.match -= 2 : 0;
        (maac.settings.facets.bathMax < this.floorplan.numberOfBathrooms) ? this.match -= 2 : 0;
        (maac.settings.facets.priceMin > this.priceHigh) ? this.match -= 2 : 0;
        (maac.settings.facets.priceMax < this.priceLow) ? this.match -= 2 : 0;
        */
        (maac.settings.facets.dateMin.getTime() > this.vacancyStart.getTime()) ? this.match -= 1 : 0;
        (maac.settings.facets.dateMax.getTime() < this.vacancyStart.getTime()) ? this.match -= 1 : 0;
        (maac.settings.facets.bedMin > this.floorplan.numberOfBedrooms) ? this.match -= 1 : 0;
        (maac.settings.facets.bedMax < this.floorplan.numberOfBedrooms) ? this.match -= 1 : 0;
        (maac.settings.facets.bathMin > this.floorplan.numberOfBathrooms) ? this.match -= 1 : 0;
        (maac.settings.facets.bathMax < this.floorplan.numberOfBathrooms) ? this.match -= 1 : 0;
        (maac.settings.facets.priceMin > this.priceHigh) ? this.match -= 1 : 0;
        (maac.settings.facets.priceMax < this.priceLow) ? this.match -= 1 : 0;

        //check if the floorplan name exists in floorplans that are checked
        (maac.settings.facets.floorplans.indexOf(this.floorplan.name) < 0) ? this.match -= 3 : 0;

        /*
        if (debug1 == 0) {
        console.log("Apartment ID: " + this.apartmentID + " End Apartment Match Score: " + this.match);
        }
        */


        //************************ CHANGES IMPLEMENTED BY MAA *****************************************//
        //check if the amenity/feature exists
        var matchedFeature = 0;
        var amenityset = maac.settings.facets.amenities.length;
        var amenitylist = [];
        var debug = 0;

        /*
        if (debug == 1) {
        console.log("********************************************************************");
        console.log("Apartment ID: " + this.apartmentID + " Apartment Match Score: " + this.match);
        }
        */

        if (amenityset > 0) {

            /*
            if (debug == 1) {
            console.log("Facet Amenities Selected: " + amenityset);
            console.log("Apt Features list");
            }
            */
            $(this.apartmentFeatures).each(function () {
                amenitylist.push(this.featureID);
            });


            /*
            for (var i = this.apartmentFeatures.length; i--; ) {
            amenitylist.unshift(this.apartmentFeatures[i].featureDesc);
            }
            */

            /*
            if (debug == 1) {
            for (var i = 0; i < amenitylist.length; i++) {
            console.log("Apt amenity: " + amenitylist[i]);
            }
            console.log("Facets Amenities List");
            }

            */

            $(maac.settings.facets.amenities).each(function (key, value) {
                /*
                if (debug == 1) {
                console.log("Amenity " + key + ": " + value);
                }
                */
                (amenitylist.indexOf(value) < 0) ? matchedFeature-- : 0
            });
            this.match += matchedFeature;

            /*
            if (debug == 1) {
            console.log("Apartment Match Score: " + this.match + " Matched Feature: " + matchedFeature);
            }
            */

        }

        var cutoffval = 6 - amenityset;

        //this is the threshhold for display. Reduce for more results. Results will then sorted by match value
        if (this.match < cutoffval) {
            this.$listing.addClass('nomatch').hide();
            typeof (this.marker) != 'undefined' ? this.marker.setVisible(false) : 0;
        } else {
            var matchStr = (this.match == 10) ? "Best Match" : this.match.toString() + '0% Match';
            this.$listing.find('h4 span').html(matchStr);
            this.$listing.removeClass('nomatch');
            typeof (this.marker) != 'undefined' ? this.marker.setVisible(true) : 0;
            //we show the listing again when paginated
        }
        var match = this.match;
        this.$listing.attr('data-match', match);

        //************************ END CHANGES IMPLEMENTED BY MAA *****************************************//



        //This section was built by NavArts and has been commented out by Kas Parthasarathy
        //It has been replaced with the filter code above this section
        //this is the threshhold for display. Reduce for more results. Results will then sorted by match value
        /*
        if (this.match < 6) {
        this.$listing.addClass('nomatch');
        } else {
        var matchStr = (this.match == 10) ? "Best Match" : this.match.toString() + '0% Match';
        this.$listing.find('h4 span').html(matchStr);
        this.$listing.removeClass('nomatch');
        typeof (this.marker) != 'undefined' ? this.marker.setVisible(true) : 0;                
        }
        var match = this.match;
        this.$listing.attr('data-match', match);
        */

        /*
        } 
        else {
        this.$listing.addClass('out').slideUp().fadeOut();
        }
        */
    }

} //end Apartment

function State(data) {
    for (x in data) {
        data.hasOwnProperty(x) ? this[x] = data[x] : this[x] = "";
    }
}



/*******************END GLOBAL NAMESPACE*****************************/




/*******************PUBLIC FUNCTIONS*****************************/


//this would be better as a prototype
function getUniqueItems(someArray) {
    var arrVal = someArray;
    var uniqueArr = [];
    for (var i = arrVal.length; i--; ) {
        var val = arrVal[i];
        if ($.inArray(val, uniqueArr) === -1) {
            uniqueArr.unshift(val);
        }
    }
    return uniqueArr;
}

/******SHOW LOADING**/
function showLoading(selector, show) {
    var $loading = $(selector).find('.loading');
    if (show) {
        //if we have a loading ele show it...otherwise add it and show it
        $loading.length ? $loading.show() : $('<div/>').addClass('loading').appendTo(selector).append('<p>Please wait while we filter your apartment search results</p>').show();
    } else {
        $loading.hide();
    }
}

/******SCROLLING SLIDESHOW (GALLERY)**/
function initGallery() {
    //have we already loaded it?
    if ($('.gallery').data('init')) {
        return false;
    } else {
        showLoading('.gallery', true);
    }

    $('.gallery').delay(500).queue(function () {

        //make sure its visible or it wont init properly
        if (!$('.gallery').is(":visible")) {
            showLoading('.gallery', false);
            return false;
        }
        //flag its been loaded
        $('.gallery').data('init', true);
        var galleries = $('.gallery').adGallery(
			{
			    loader_image: maac.settings.urls.ajaxLoader,
			    width: 700,
			    height: 400,
			    slideshow: {
			        start_label: 'Start Slideshow',
			        stop_label: 'Stop Slideshow',
			        countdown_prefix: '&nbsp; next in (', // Wrap around the countdown
			        countdown_sufix: ')'
			    }
			}
		);
        //hide spinner
        showLoading('.gallery', false);
    });

}
/******END SLIDING (AD)GALLERY**********/


//IE helper - doesnt understand indexof for arrays
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (elt /*, from*/) {
        var len = this.length;
        var from = Number(arguments[1]) || 0;
        from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
        if (from < 0)
            from += len;
        for (; from < len; from++) {
            if (from in this &&
          this[from] === elt)
                return from;
        }
        return -1;
    };
}


function validateEmail(email) {
    var atpos = email.indexOf("@");
    var dotpos = email.lastIndexOf(".");
    if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= email.length) {
        return false;
    } else {
        return true;
    }
}

/******CUSTOM JQUERY PLUGINS******/

/*********PAGINATION************/
// derived from quickPager plugin www.geckonewmedia.com

(function ($) {
    $.fn.resultsPager = function (options) {

        var defaults = {
            pageSize: 10,
            currentPage: 1,
            holder: null,
            pagerLocation: "after"
        };

        var options = $.extend(defaults, options);
        /*clean up an existing pager*/
        $('#results_pager .pagination').remove();
        for (var i = 0; i < $('.listing').length; i++) {
            $('.listing').removeClass("page-" + i);
        }

        return this.each(function () {
            var selector = $(this);
            var pageCounter = 1;
            selector.children().not('.out').each(function (i) {
                if (i < pageCounter * options.pageSize && i >= (pageCounter - 1) * options.pageSize) {
                    $(this).addClass("page-" + pageCounter);
                }
                else {
                    $(this).addClass("page-" + (pageCounter + 1));
                    pageCounter++;
                }
            });

            // show/hide the appropriate regions 
            selector.children().hide();
            selector.children(".page-" + options.currentPage).not('.nomatch, .loading').show();
            if (pageCounter <= 1) {
                return;
            }

            //Build pager navigation
            var pageNav = "<div class='pagination'>";
            for (i = 1; i <= pageCounter; i++) {
                if (i == options.currentPage) {
                    pageNav += "<a class='current' rel='" + i + "' href='#'>" + i + "</a>";
                }
                else {
                    pageNav += "<a rel='" + i + "' href='#'>" + i + "</a>";
                }
            }
            pageNav += "</div>";

            $('#results_pager').append(pageNav);

            //pager navigation behaviour
            $(".pagination a").click(function (e) {
                e.preventDefault();
                //grab the REL attribute 
                var clickedLink = $(this).attr("rel");
                options.currentPage = clickedLink;

                $(".pagination .current").removeClass("current");
                $(".pagination").find("a[rel='" + clickedLink + "']").addClass("current");

                //hide and show relevant links
                selector.children().hide();
                selector.find(".page-" + clickedLink).fadeIn(); //.show();

                //update results count
                var total = $('.listing').not('.nomatch').length;
                var first = $('.listing').not('.nomatch').index($('.listing:visible:first')) + 1;
                var last = $('.listing').not('.nomatch').index($('.listing:visible:last')) + 1;
                $('#results_info').html(first + ' - ' + last + ' of ' + total + ' Results');

                return false;
            });
        });
    }


})(jQuery);

/******END PAGINATION**/


/*pass in a source and this will preload it for you*/
$.fn.preload = function () {
    this.each(function () {
        $('<img/>')[0].src = this;
    });
    return this;
}

$.fn.setPlaceholders = function () {
    //shore up placeholder support
    if (!Modernizr.input.placeholder) {
        /*forms placeholder to value replacement for no placeholder support*/
        this.find('input[type=text],input[type=email],input[type=password],input[type=url],input[type=tel]').each(function () {
            //if we have a placeholder
            if (($(this).attr('value') == '') && ($(this).attr('placeholder'))) {
                //init the valueto the placeholder
                $(this)
					.attr('value', $(this).attr('placeholder'))
					.focus(function () {
					    //if we are using placeholder empty the container
					    if ($(this).attr('value') == $(this).attr('placeholder')) {
					        $(this).attr('value', '');
					    }
					})
					.blur(function () {
					    //if nothing was added repopulate with placeholder attrib value
					    if ($(this).attr('value') == '') {
					        $(this).attr('value', $(this).attr('placeholder'));
					    }
					}
				);
            }
        });
    }
    return this;
}


$.fn.makeStateSelect = function () {
    //see if we already have this container
    var $stateSelect;
    this.find('select.state').length ? 0 : this.append('<select class="state"><option>Select a State...</option></select>');
    $stateSelect = this.find('select.state');

    if (maac.states.length > 0) {
        //get rid of the old options
        $stateSelect.find('option').length > 1 ? $stateSelect.find('option').remove() : 0;
        //looping through states
        for (var i = 0; i < maac.states.length; i++) {
            var state = maac.states[i];
            $stateSelect.append('<option value="' + state.name + '">' + state.name + '</option>')
        }
    }
    return this;
}

$.fn.makeCitySelect = function () {
    var $citySelect = this.find('select.city').eq(0);
    if (!$citySelect.length) {
        this.append('<select class="city"><option>Select a City...</option></select>');
    } else {
        $citySelect.replaceWith('<select class="city"><option>Select a City...</option></select>');
    }

    $citySelect = this.find('select.city');
    $stateSelect = this.find('select.state');

    if (maac.states.length > 0) {
        for (var i = 0; i < maac.states.length; i++) {
            if (maac.states[i]['name'] == $stateSelect.val()) {
                //found the state - looping through cities
                var optionVals = '<option>Select a City...</option>';
                for (var ii = 0; ii < maac.states[i]['city'].length; ii++) {

                    var city = maac.states[i]['city'][ii]['name'];
                    var cityF = maac.states[i]['city'][ii]['friendlyName'];
                    var metroID = maac.states[i]['city'][ii]['metroID'];
                    optionVals += '<option data-metro-id="' + metroID + '" value="' + city + '">' + cityF + '</option>';

                }
                $citySelect.html(optionVals).change(function () {
                    $('.cityStateCom').makeCommunitySelect();
                });
            }
        }
    }

    //default selected or no cities for this state - kill city select
    if ($citySelect.find('option').length < 2) {
        $citySelect.attr('disabled', 'disabled').next('button').attr('disabled', 'disabled');
    }
    else {
        $citySelect.removeAttr('disabled', 'disabled').next('button').removeAttr('disabled', 'disabled');
    }

    return this;
}
$.fn.makeCommunitySelect = function () {
    var $communitySelect = this.find('select.community');
    if (!$communitySelect.length) {
        this.append('<select class="community"><option>Select a Community...</option></select>');
        $communitySelect = this.find('select.community');
    } else {
        $communitySelect.find('option').remove();
        $communitySelect.append('<option>Select a Community...</option>');
    }
    var $citySelect = this.find('select.city');
    if (maac.cities.length > 0) {
        for (var i = 0; i < maac.cities.length; i++) {
            if (maac.cities[i]['name'] == $citySelect.val()) {
                //found the city - looping through communities
                for (var ii = 0; ii < maac.cities[i]['communities'].length; ii++) {
                    var community = maac.cities[i]['communities'][ii]['name'];
                    var link = maac.cities[i]['communities'][ii]['linkToFeatures'];
                    var communityF = maac.cities[i]['communities'][ii]['friendlyName'];
                    $communitySelect.append('<option data-href="' + link + '" value="' + community + '">' + communityF + '</option>')
                }
            }
        }
    }

    return this;
}



/******DEBUGGING UTILITY***************/
// usage: log('inside coolFunc',this,arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function () {
    log.history = log.history || [];   // store logs to an array for reference
    log.history.push(arguments);
    if (this.console) {
        console.log(Array.prototype.slice.call(arguments));
    }
};

// catch all document.write() calls
(function (doc) {
    var write = doc.write;
    doc.write = function (q) {
        log('document.write(): ', arguments);
        if (/docwriteregexwhitelist/.test(q)) write.apply(doc, arguments);
    };
})(document);




