/* Copyright (c) 2009 Nedstat B.V. 4.0.0
 * All rights reserved.
 * By using this software, you are agreeing to be bound by the
 * terms of this license: http://www.nedstat.com/terms.html
 */
if(typeof(ns_)=="undefined"){ns_=new Object()}ns_.SilverlightMediaComponent=ns_.Class.extend(ns_.MediaComponent,{_VERSION:"0.0.4",_nickName:"silver",_clip:null,_wmptypes:["video","audio","radio"],_player:null,_playlist:null,_indexes:null,_events:{},_nativeLabels:["date","station","streamtype","part","totalparts","episode","program","fee"],_realLabels:["productionDate","stationName","type","episodePart","episodeParts","episodeTitle","programTitle","fee"],_slightVersion:"0.0",_wasBuffering:false,_playheadCache:{time:ns_.dt.getTime(),position:0,interval:0,jitter:0},_playheadUpdate:function(){this._playheadCache.interval=window.setTimeout(this._playheadUpdate,this._streamsense.cfg.WMP_PHEAD_TIMER);var g=this.getPosition();if(!!!g&&g!=0){return}var c=ns_.dt.getTime();var b=this._streamsense.cfg.WMP_PHEAD_TIMER;var d=((g-this._playheadCache.position)<(b-(b/5)));var f=((g-this._playheadCache.position)<0);var e=((g-this._playheadCache.position)>(b*2));if(e||f){var a=this.snapshot();a.seekStart=this._playheadCache.position;a.seekEnd=g;clearTimeout(this._playheadCache.interval);this.getClip().fire(ns_.MediaEvents.STREAM_SEEK,new ns_.MediaEvent(ns_.MediaEvents.STREAM_SEEK,a));this._playheadCache.position=a.seekEnd;this._playheadCache.interval=window.setTimeout(this._playheadUpdate,this._streamsense.cfg.WMP_PHEAD_TIMER)}if(this.getClip().isPlaying()&&d){this._playheadCache.jitter++}else{if(this.getClip().isPaused()&&!d){this._clip.fire("onResume",new ns_.MediaEvent("onResume",this.snapshot()))}else{if(!d){this._playheadCache.jitter=0}}}this._playheadCache.time=c;if(g>0){this._playheadCache.position=g}if(this._playheadCache.jitter>1){this._clip.fire("onPause",new ns_.MediaEvent("onPause",this.snapshot()));this._playheadCache.jitter=0}},_listeners:{MediaOpened:function(c,b){var a=this.getIndex(this._player.source);if(ns_.ar.indexOf(a,0)==-1||((ns_.ar.indexOf(this.getPlaylist()._clips,this._clip)<(this.getPlaylist()._clips.length-1)||this.getPlaylist()._clips.length==1))){if(this.getPlaylist()._started&&ns_.ar.indexOf(a,0)!=-1){this.getPlaylist().loop()}this.getPlaylist()._ended=false}this.monitorClip()},MediaEnded:function(b,a){if(this.getClip().isPlaying()||this.getClip().isPaused()){clearTimeout(this._playheadCache.interval);this._playheadCache.interval=null;this.getClip().fire(ns_.MediaEvents.STREAM_STOP,new ns_.MediaEvent(ns_.MediaEvents.STREAM_STOP,this.snapshot()))}},CurrentStateChanged:function(c,b){this.monitorClip();var a=this.snapshot();switch(this._player.currentState.toLowerCase()){case"playing":if(this.getClip().isPaused()){this.getClip().fire(ns_.MediaEvents.STREAM_RESUME,new ns_.MediaEvent(ns_.MediaEvents.STREAM_RESUME,a))}else{this.getClip().fire(ns_.MediaEvents.STREAM_START,new ns_.MediaEvent(ns_.MediaEvents.STREAM_START,a))}this._playheadCache.position=this.getPosition();if(!!!this._playheadCache.interval){this._playheadCache.interval=window.setTimeout(this._playheadUpdate,this._streamsense.cfg.WMP_PHEAD_TIMER)}if(this._wasBuffering){this.getClip().fire("onBufferEnd",new ns_.MediaEvent("onBufferEnd",a));this._wasBuffering=false}break;case"paused":clearTimeout(this._playheadCache.interval);this._playheadCache.interval=null;if(this.getClip().isPlaying()&&(this.getPosition()!=this.getLength())){this.getClip().fire(ns_.MediaEvents.STREAM_PAUSE,new ns_.MediaEvent(ns_.MediaEvents.STREAM_PAUSE,a))}else{if((this.getPosition()!=this.getLength())&&(this._clip.isPlaying()||this._clip.isPaused())){this.getClip().fire(ns_.MediaEvents.STREAM_STOP,new ns_.MediaEvent(ns_.MediaEvents.STREAM_STOP,a))}}break;case"buffering":clearTimeout(this._playheadCache.interval);this._playheadCache.interval=null;this._wasBuffering=true;this.getClip().fire("onBufferStart",new ns_.MediaEvent("onBufferStart",a));break;case"error":this.getClip().fire("onError",new ns_.MediaEvent("onError",{text:"silverlight_error",snapshot:a}));case"closed":case"stopped":if(this.getClip().isPlaying()||this.getClip().isPaused()){clearTimeout(this._playheadCache.interval);this._playheadCache.interval=null;this.getClip().fire(ns_.MediaEvents.STREAM_STOP,new ns_.MediaEvent(ns_.MediaEvents.STREAM_STOP,a))}break}},MediaFailed:function(b,a){this.getClip().fire("onError",new ns_.MediaEvent("onError",{text:"silverlight_error",snapshot:this.snapshot()}))}},fulfillOldAttributes:function(){for(var d=0,a=this._nativeLabels.length;d<a;d++){var e=this.getItemInfo(this._nativeLabels[d]);if(!!e&&e!=""){this._clip.setAttribute(this._realLabels[d],e)}}if(this.getItemInfo("custom")){var b,c=this.getItemInfo("custom").replace(/&amp;/g,"&").split("&");for(var d=0,a=c.length;d<a;d++){b=c[d].split("=");if(String(b[0]).length>1&&String(b[1]).length>0){this._clip.setAttribute(b[0],b[1])}}}},populatePlaylist:function(){try{}catch(a){}},initialize:function($super,c,b){$super(c);this._indexes=ns_.ar.create();this.listeners={};for(var a in this._listeners){this.listeners[a]=this._listeners[a].STbind(this)}this._playheadUpdate=this._playheadUpdate.STbind(this);for(var a in ns_.DispatcherEvents){this._events[ns_.DispatcherEvents[a]]=null}this._streamsense.cfg.WMP_PHEAD_TIMER=250;this._streamsense.cfg.PLAYLIST_END_TIMER=1000;this._streamsense.registerMediaComponent(ns_.SilverlightMediaComponent);if(b){this.activate(b)}},activate:function(a){this._player=a;this._streamsense.registerMediaComponent(ns_.SilverlightMediaComponent);this.bindEvents();if(!this["onMeasure_cb"]){this["onMeasure_cb"]=this.onMeasure.STbind(this)}this._streamsense.listen("ss:measure",this["onMeasure_cb"]);if(!this["onMediaChange_cb"]){this["onMediaChange_cb"]=this.onMediaChange.STbind(this)}this.getPlaylist().listen(ns_.DispatcherEvents.MEDIA_CHANGE,this["onMediaChange_cb"])},deactivate:function(){if(!this._player){return false}this.unbindEvents();this._streamsense.unlisten("ss:measure",this["onMeasure_cb"]);this.getPlaylist().unlisten(ns_.DispatcherEvents.MEDIA_CHANGE,this["onMediaChange_cb"])},bindEvents:function(){for(var a in this.listeners){this._player.addEventListener(a,this.listeners[a])}},unbindEvents:function(){for(var a in this.listeners){ns_.dom.removeEvent(this._player,a)}},listenClip:function(){if(!this._clip){return false}var b;for(var a in ns_.MediaEvents){b=ns_.MediaEvents[a];if(typeof this[b]!="undefined"&&typeof this[b].STbind!="undefined"){if(!this[b+"_cb"]){this[b+"_cb"]=this[b].STbind(this)}this._clip.listen(b,this[b+"_cb"])}}},unlistenClip:function(){if(!this._clip){return false}var b;for(var a in ns_.MediaEvents){b=ns_.MediaEvents[a];if(typeof this[b]!="undefined"&&typeof this[b].STbind!="undefined"){this._clip.unlisten(b,this[b+"_cb"])}}},getNickname:function(){return this._nickName},monitorClip:function(){try{var g=this._clip;var b=ns_.ar.indexOf(this.getPlaylist()._clips,this._clip);var f;var j=this.getPlaylist();var c=this.getIndex(this._player.source);for(var d=c.length-1;d>=0;d--){if(typeof c[d]=="number"){f=c[d];break}}if(!g||typeof f=="undefined"){var a=ns_.ar.indexOf(j._clips,g)+1;if(j._clips[a]){this.setClip(j._clips[a])}else{this.setClip()}}else{if(typeof f=="undefined"||(typeof f!="undefined"&&f!=b)){if(typeof f!="undefined"){this.setClip(j._clips[f])}else{this.setClip()}}}}catch(h){}return this._clip},setIndex:function(){var c=ns_.ar.create();for(var e=arguments.length-1;e>=0;e--){if(arguments[e]===""||typeof arguments[e]=="boolean"||typeof arguments[e]=="undefined"){continue}if(ns_.ar.indexOf(c,arguments[e])==-1){c.push(arguments[e])}var a=this.getIndex(arguments[e]);for(var b=a.length-1;b>=0;b--){if(ns_.ar.indexOf(c,a[b])==-1){c.push(a[b])}}}for(var d=c.length-1;d>=0;d--){this._indexes[c[d]]=c}},getIndex:function(c){var a=ns_.ar.create();for(var b=this._indexes.length-1;b>=0;b--){if(ns_.ar.indexOf(this._indexes[b],c)>=0){return this._indexes[b]}}return a},setClip:function(a){if(typeof a=="undefined"){a=this.getPlaylist().addNewClip(true)}if(this._clip){if(this._clip==a){return}clearTimeout(this._playheadCache.interval);this._playheadCache.interval=null;if(this._clip.isPlaying()||this._clip.isPaused()){this.getClip().fire(ns_.MediaEvents.STREAM_STOP,new ns_.MediaEvent(ns_.MediaEvents.STREAM_STOP,this.snapshot()))}this.unlistenClip()}this.getPlaylist().setClip(a);this._clip=a;this.listenClip();this.setIndex(ns_.ar.indexOf(this.getPlaylist()._clips,this._clip),this._player.source)},getClip:function(){if(!!this._clip){return this._clip}else{return this.monitorClip()}},setPlaylist:function(){return this._streamsense.setPlaylist()},getPlaylist:function(){return this._streamsense.getPlaylist()},isPlaying:function(){var a=false;try{if(this._player.currentState.toLowerCase()=="playing"){a=true}}catch(b){}return a},isPaused:function(){var a=false;try{if(this._player.currentState.toLowerCase()=="paused"){a=true}}catch(b){}return a},isEligible:function(a){try{if(a.toString()!="MediaElement"){return false}}catch(b){return false}return true},snapshot:function(){var a={};a.target=this.getClip();a.playHeadPosition=this.getPosition();a.length=this.getLength();a.volume=this.getVolume();return a},isLooping:function(){var a=null;return a},getPosition:function(){var a=null;try{a=(this._player.position.seconds*1000).toFixed(0)}catch(b){}return a},getLength:function(){var a=null;try{a=(this._player.NaturalDuration.seconds*1000).toFixed(0)}catch(b){a=0}return a},getVolume:function(){var a=null;try{if(!this._player.IsMuted){a=(this._player.volume*100).toFixed(0)}else{a="0"}}catch(b){}return a},getPlaylistName:function(){var a="";try{a=document.title}catch(b){}return a},getPlayerVersion:function(){var b="0.0";try{var c=0;for(var a=20;c<a;c++){if(!Silverlight.isInstalled((c/2).toFixed(1))){break}}b=((c-1)/2).toFixed(1)}catch(d){}return b},getBandWidth:function(){var a=0;return a},getResolution:function(){var a="";try{a=[this._player.Width,"x",this._player.Height].join("");if(a=="NaNxNaN"){a=[this._player.NaturalVideoWidth,"x",this._player.NaturalVideoHeight].join("")}}catch(b){a="0x0"}return a},getItemInfo:function(c){var a="";if(c&&c!=""){try{a=this._player.Attributes.GetItemByName(c).value}catch(b){}}return a},onMeasure:function(a,b){this.setAttribute("bitrate","0");this.setAttribute("playerType","Silverlight");this.setAttribute("playerVersion",this.getPlayerVersion());this.setAttribute("bandwidth",this.getBandWidth());this.setAttribute("resolution",this.getResolution());this.fulfillOldAttributes();b.bulkSet(this.getAllAttributes())},onMediaChange:function(b,a,c){}});(function(){if(typeof(ns_)!="undefined"&&typeof(ns_.StreamSense)!="undefined"){ns_.StreamSense.getStreamSense().registerMediaComponent(ns_.SilverlightMediaComponent)}else{setTimeout(arguments.callee,500)}})();
