
function Slider(container,config){this.slider=document.createElement("div");if(config.sliderClass){this.slider.className=config.sliderClass;}
document.getElementById(container).appendChild(this.slider);this.progress=document.createElement("div");if(config.progressClass){this.progress.className=config.progressClass;}
this.slider.appendChild(this.progress);this.progress.style.height="100%";this.slider.style.fontSize="1px";this.progress.style.fontSize="1px";for(prop in config){this[prop]=config[prop];}
this.disabled(this.isDisabled);this.setWidth(this.width);}
Slider.prototype={min:0,max:100,width:100,pos:0,isDisabled:false,onSlideStart:function(){},onSlide:function(){},onSlideEnd:function(){},onSlideOver:function(){},onSlideOut:function(){},disabled:function(val){if(val==true){this.slider.onmouseover="";this.slider.onmouseout="";this.slider.onmousedown="";}else if(val==false){var _this=this;this.slider.onmouseover=function(){_this.ismouseover=true;_this.onSlideOver(_this.pos);}
this.slider.onmouseout=function(){_this.ismouseover=false;_this.onSlideOut(_this.pos);}
this.slider.onmousedown=function(e){_this.offsetLeft=_this.calculateOffsetLeft(_this.slider);_this.mouseMove(e);var mouseMoveHandler=function(e){_this.mouseMove(e);}
var mouseUpHandler=function(){_this.drag=false;_this.removeEventHandler(document,"mousemove",mouseMoveHandler);_this.removeEventHandler(document,"mouseup",mouseUpHandler);_this.onSlideEnd(_this.pos);}
if(!_this.drag){_this.drag=true;_this.addEventHandler(document,"mousemove",mouseMoveHandler);_this.addEventHandler(document,"mouseup",mouseUpHandler);_this.onSlideStart(_this.pos);}}}},isMouseOver:function(){return this.ismouseover;},isDragging:function(){return this.drag;},setWidth:function(w){this.width=w;var position=this.getPosition();this.slider.style.width=w+"px";this.setPosition(position);},setRange:function(min,max){this.min=min;this.max=max;this.setPosition(this.pos);},setPosition:function(p){this.pos=p;if(p<this.min){p=this.min;}else if(p>this.max){p=this.max;}
p=(p-this.min)/(this.max-this.min);this.progress.style.width=Math.ceil(parseFloat(this.slider.style.width)*p)+"px";},getPosition:function(){return this.pos;},mouseMove:function(e){e=e||window.event;var mousePos=this.mousePos(e)-this.offsetLeft;var maxPos=parseInt(this.slider.style.width);if(mousePos>maxPos){mousePos=maxPos;}else if(mousePos<0){mousePos=0;}
this.progress.style.width=mousePos+"px";var progressWidth=parseInt(this.progress.style.width);var sliderWidth=parseInt(this.slider.style.width);var pct=progressWidth/sliderWidth;var range=this.max-this.min;var pos=Math.round((range*pct)+this.min);if(pos>this.max){pos=this.max;}else if(pos<this.min){pos=this.min;}
this.pos=pos;this.onSlide(pos);},mousePos:function(e){var posx=0;var posy=0;if(e.pageX||e.pageY){posx=e.pageX;posy=e.pageY;}
else if(e.clientX||e.clientY){posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;posy=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;}
return posx;},calculateOffsetLeft:function(field){return this.calculateOffset(field,"offsetLeft");},calculateOffsetTop:function(field){return this.calculateOffset(field,"offsetTop");},calculateOffset:function(field,attr){var offset=0;while(field){offset+=field[attr];field=field.offsetParent;}
return offset;},addEventHandler:function(oTarget,sEventType,fnHandler){if(oTarget.addEventListener){oTarget.addEventListener(sEventType,fnHandler,false);}else if(oTarget.attachEvent){oTarget.attachEvent("on"+sEventType,fnHandler);}else{oTarget["on"+sEventType]=fnHandler;}},removeEventHandler:function(oTarget,sEventType,fnHandler){if(oTarget.removeEventListener){oTarget.removeEventListener(sEventType,fnHandler,false);}else if(oTarget.detachEvent){oTarget.detachEvent("on"+sEventType,fnHandler);}else{oTarget["on"+sEventType]=null;}}}
if(typeof Vusion=='undefined'){Vusion={};}
window.onload=function(){var divs=document.getElementsByTagName('div');for(var i=0;i<divs.length;i++){var d=divs[i];if(d.getAttribute("vusion")&&d.getAttribute("url")){var autostart=(d.getAttribute("autostart"))?d.getAttribute("autostart"):true;new Vusion.UIPlayer(d,{autostart:autostart,url:d.getAttribute("url")});}}}
Vusion.UIPlayer=function(container,config){var _this=this;container=(typeof container=='object')?container:document.getElementById(container);this.containerWidthOffset=container.offsetWidth;this.containerHeightOffset=container.offsetHeight;this.state="00:00/00:00";this.container=container;container.UIPlayer=this;this.instance=Vusion.UIPlayer.prototype.instances;var videoDivStr="jtr-videoDiv"+this.instance;var videoControlStr="jtr-controls"+this.instance;container.innerHTML=""+"<div id='"+videoDivStr+"' class='jtr-videoDiv'></div>"+"<div id='"+videoControlStr+"' class='jtr-controlDiv'>"+"<div id='jtr-timelineSlider"+this.instance+"' class='jtr-timelineSlider'></div>"+"<div id='jtr-playerLogo"+this.instance+"' class='jtr-playerLogo'><img id='jtr-playerLogoImage"+this.instance+"' src='vusion/images/logo.png' /></div>"+"<div id='jtr-playerPlay"+this.instance+"' class='clsPlayer_Play'></div>"+"<div id='jtr-volumeSlider"+this.instance+"' class='jtr-volumeSlider'></div>"+"<div id='jtr-playerMute"+this.instance+"' class='clsPlayer_Unmute'></div>"+"<label id='jtr-playerState"+this.instance+"' class='clsPlayerState'>"+this.state+"</label>"+"<div id='jtr-playerFullscreen"+this.instance+"' class='clsPlayer_Fullscreen'></div>"+"</div>";this.logo=document.getElementById("jtr-playerLogoImage"+this.instance);this.videoDiv=document.getElementById(videoDivStr);this.controlDiv=document.getElementById(videoControlStr);if(!config){config={};}
if(!config.stateHandler){config.stateHandler=this.handleState;}
config.scope=this;if(!config.installFile){config.installFile=this.defaultInstallFile;}
if(!config.upgradeFile){config.upgradeFile=this.defaultUpgradeFile;}
config.id='jtrplayer'+this.instance;this.config=config;if(config.startClass||config.startFrame){this.videoDiv.innerHTML=(config.startClass)?"<div class='"+config.startClass+"' style='width:100%; height:100%;'></div>":"<iframe src='"+config.startFrame+"' width='100%' height='100%' frameborder='no'></iframe>";if(config.url){this.videoDiv.onclick=function(){_this.setUrl(_this.config.url);};}}else{this.setUrl(config.url);}
this.playButton=document.getElementById("jtr-playerPlay"+this.instance);this.playButton.playTitle="Playing. Click to pause";this.playButton.pauseTitle="Paused. Click to play";this.playButton.title=this.playButton.playTitle;this.playButton.onclick=function(){_this.onButtonClick(this);};this.playButton.state="playing";this.muteButton=document.getElementById("jtr-playerMute"+this.instance);this.muteButton.normalTitle="Click to mute";this.muteButton.muteTitle="Click to unmute";this.muteButton.title=this.muteButton.normalTitle;this.muteButton.onclick=function(){_this.onButtonClick(this);};this.muteButton.state="normal";this.fullscreenButton=document.getElementById("jtr-playerFullscreen"+this.instance);this.fullscreenButton.title="Full screen";this.fullscreenButton.onclick=function(){_this.onButtonClick(this);};this.timelineSlider=new Slider("jtr-timelineSlider"+this.instance,{sliderClass:"clsSlider",isDisabled:true,progressClass:"clsProgress",onSlide:function(pos){if(_this.player&&_this.player.getDuration()){_this.state=_this.formatTime(pos*1000)+"/"+_this.formatTime(_this.player.getDuration());document.getElementById('jtr-playerState'+_this.instance).innerHTML=_this.state;}else{document.getElementById('jtr-playerState'+_this.instance).innerHTML=_this.formatTime(pos*1000)+"/"+_this.formatTime(_this.timelineSlider.max*1000);}},onSlideEnd:function(pos){if(_this.player){_this.player.setPosition(pos*1000);}document.getElementById('jtr-playerState'+_this.instance).innerHTML=_this.state;_this.updateDisplay();}});var progress=_this.timelineSlider.progress;this.volumeSlider=new Slider("jtr-volumeSlider"+this.instance,{min:0,max:100,width:40,sliderClass:"clsVolumeSlider",progressClass:"clsVolumeProgressSlider",onSlideEnd:function(){document.getElementById('jtr-playerState'+_this.instance).innerHTML=_this.state;},onSlide:function(pos){document.getElementById('jtr-playerState'+_this.instance).innerHTML='Vol: '+pos+'%';if(_this.muteButton.state=="normal"){if(_this.player){_this.player.setVolume(pos);}}}});container.onselectstart=function(){return false;}
this.containerWidthOffset-=container.offsetWidth;this.containerHeightOffset-=container.offsetHeight;this.resize(container.offsetWidth,container.offsetHeight);var ie6PngFix=function(){_this.correctPNG();}
setTimeout(ie6PngFix,100);Vusion.UIPlayer.prototype.instances++;};Vusion.UIPlayer.prototype={defaultInstallFile:"vusion/install.html?mode=install",defaultUpgradeFile:"vusion/install.html?mode=upgrade",autostart:true,player:null,playButton:null,muteButton:null,volumeSlider:null,instances:0,timerId:0,config:null,videoDiv:null,endDiv:null,initialPlayerType:'.jittr',currentExtension:'',setUrl:function(url,bitrateUpdate){var extension=(url)?this.getExtensionFromUrl(url):this.initialPlayerType;if(extension==".vusion"||extension==".jtv"||extension==".jta"){extension=".jittr";}
if(url){if(extension==".jittr"){if(url.indexOf("vusion://")!=0&&url.indexOf("jittr://")!=0){url="vusion://"+url;}}else if(url.indexOf("http://127.0.0.1:6267/C/g.php?f=")!=0){url="http://127.0.0.1:6267/C/g.php?f="+url;}}
if(this.player&&this.playerType==extension){this.show("video");this.player.setUrl(url,bitrateUpdate);document.getElementById('jtr-playerState'+this.instance).innerHTML="Loading.. <img src='vusion/images/loading.gif' width='25' />";}else{var Ctr;switch(extension){case".jittr":Ctr=Vusion.Players.jtr;break;case".wmv":Ctr=Vusion.Players.wmv;break;default:alert("Can not create player for the following extension: "+extension);return;}
if(url){this.config.url=url;}
this.endDiv=null;this.currentExtension=extension;this.player=new Ctr(this.videoDiv,this.config);}},getExtensionFromUrl:function(url){var extension=this.initialPlayerType;var loc=url.indexOf("?");if(loc!=-1){var urlMain=url.substring(0,loc)
extension=urlMain.substring(urlMain.lastIndexOf("."));}else{extension=url.substring(url.lastIndexOf("."));}
if(extension==".php"){var urlParams=url.substring(loc+1);var params=urlParams.split("&");for(var n=0;n<params.length;n++){if(params[n].substring(0,2)=="f="){extension=params[n].substring(params[n].lastIndexOf("."));break;}}}
return extension;},resize:function(width,height){width=parseInt(width);height=parseInt(height);width+=parseInt(this.containerWidthOffset);height+=parseInt(this.containerHeightOffset);this.container.style.height=height+"px";this.container.style.width=width+"px";this.timelineSlider.setWidth(width-6);this.videoDiv.style.height=(height-this.controlDiv.offsetHeight-8)+"px";},onButtonClick:function(el){if(this.player){switch(el.id){case("jtr-playerPlay"+this.instance):if(this.playButton.state=="playing"){if(this.player){this.player.pause();}
else if(_this.config.url){this.setUrl(this.config.url);}}else{this.player.play();}
break;case("jtr-playerMute"+this.instance):if(this.muteButton.state=="normal"){this.player.setVolume(0);this.muteButton.state="muted";this.muteButton.title=this.muteButton.muteTitle;this.muteButton.className="clsPlayer_Mute";}else{this.player.setVolume(this.volumeSlider.getPosition());this.muteButton.state="normal";this.muteButton.title=this.muteButton.normalTitle;this.muteButton.className="clsPlayer_Unmute";}
break;case("jtr-playerFullscreen"+this.instance):this.player.setFullscreen(true);break;default:break;}}},formatTime:function(time){sec=(time/1000)|0;min=(sec/60)|0;sec=(sec%60)|0;s="";if(min<10)s+='0';s+=min+':';if(sec<10)s+='0';s+=sec;return s;},updateDisplay:function(state){if(!this.timelineSlider.isDragging()&&!this.volumeSlider.isDragging()&&this.player){var currentState=state;if(typeof state=='undefined'){currentState=this.player.getState();}
var currentPosition=(currentState!="Ended")?this.player.getPosition():this.player.getDuration();var stateStr;var stateDiv=document.getElementById('jtr-playerState'+this.instance);if(this.volumeSlider.isMouseOver()){stateStr="Vol: "+this.volumeSlider.getPosition()+"%";}else if(currentState=="Buffering"){stateStr="Loading.. <img src='vusion/images/loading.gif' width='25' />";}else if(currentState=="Playing"){stateStr=this.formatTime(currentPosition)+"/"+this.formatTime(this.player.getDuration());this.state=stateStr;}
if(stateStr){var _this=this;setState=function(){stateDiv.innerHTML=stateStr;}
if(currentState=="Buffering"){setTimeout("setState();",500);}else{setState();}}
this.timelineSlider.setPosition(currentPosition/1000);}},show:function(content){if(!this.config.endClass&&!this.config.endFrame){return;}
var playerSize;if(content=='video'){playerSize="100%";if(this.endDiv){this.endDiv.parentNode.removeChild(this.endDiv);this.endDiv=null;}}else{playerSize="0px";}
var playerDiv=document.getElementById(this.config.id);playerDiv.style.height=playerSize;playerDiv.style.width=playerSize;if(content=="end"){if(!this.endDiv){var id="jtr-endDiv"+this.instance;this.videoDiv.innerHTML+="<div id='"+id+"' width='100%' height='"+(this.videoDiv.offsetHeight-8)+"px'></div>";this.endDiv=document.getElementById(id);}
var _this=this;var reloadVideo=function(){_this.setUrl(_this.config.url);};if(this.config.endClass){this.endDiv.className=this.config.endClass;this.endDiv.onclick=reloadVideo;}else if(this.config.endFrame){this.endDiv.innerHTML="<iframe id='Vusion_endFrame' src='"+this.config.endFrame+"' width='100%' height='100%' frameborder='no'></iframe>";document.getElementById('Vusion_endFrame').restartVideo=reloadVideo;}}},startTimer:function(){var _this=this;this.timerId=setTimeout(function(){_this.onTimer();},500);},onTimer:function(){this.updateDisplay();this.startTimer();},stopTimer:function(){if(this.timerId){clearTimeout(this.timerId);this.timerId=0;}},handleState:function(state){this.stopTimer();switch(state)
{case"Ready":this.playerType=this.currentExtension;this.player.setVolume(75);this.volumeSlider.setPosition(this.player.getVolume());break;case"Paused":case"Stopped":this.playButton.className="clsPlayer_Play";this.playButton.title=this.playButton.pauseTitle;this.playButton.state="stopped";break;case"Playing":this.timelineSlider.disabled(false);this.playButton.className="clsPlayer_Pause";this.playButton.title=this.playButton.playTitle;this.playButton.state="playing";this.timelineSlider.setRange(0,this.player.getDuration()/1000);this.startTimer();break;case"Ended":this.timelineSlider.setPosition(this.timelineSlider.max);var stateDiv=document.getElementById('jtr-playerState'+this.instance);var endTime=this.formatTime(this.player.getDuration());stateDiv.innerHTML=endTime+"/"+endTime;this.show("end");break;}
this.updateDisplay(state);},correctPNG:function(){var arVersion=navigator.appVersion.split("MSIE")
var version=parseFloat(arVersion[1])
if((version>=5.5)&&(version<7)&&(document.body.filters)){var img=this.logo;var imgName=img.src.toUpperCase();if(imgName.substring(imgName.length-3,imgName.length)=="PNG"){var imgID=(img.id)?"id='"+img.id+"' ":"";var imgClass=(img.className)?"class='"+img.className+"' ":"";var imgTitle=(img.title)?"title='"+img.title+"' ":"title='"+img.alt+"' ";var imgStyle="display:inline-block;"+img.style.cssText;if(img.align=="left")imgStyle="float:left;"+imgStyle;if(img.align=="right")imgStyle="float:right;"+imgStyle;if(img.parentElement.href)imgStyle="cursor:hand;"+imgStyle;var strNewHTML="<span "+imgID+imgClass+imgTitle
+" style=\""+"width:"+img.width+"px; height:"+img.height+"px;"+imgStyle+";"
+"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+"(src=\'"+img.src+"\', sizingMethod='scale');\"></span>";img.outerHTML=strNewHTML;}}}};