﻿var status = '';
var wmpControl = null;
var statu_stime = null;
var marginLeftCur = null;

var newStateN = null;
var i_StateN = null;
var statusbarN = null;
var statusbarN2 = null;

var resetTime = false;
var firstRun = true;



function Browser()
{
	var ua, i;

	this.isIE	= false;
	this.isNS	= false;
	this.version = null;

	ua = navigator.userAgent;
	if ((i = ua.indexOf('MSIE')) >= 0) {
		this.isIE = true;
		this.version = parseFloat(ua.substr(i + 'MSIE'.length));
		return;
	}

	if ((i = ua.indexOf('Netscape6/')) >= 0) {
		this.isNS = true;
		this.version = parseFloat(ua.substr(i + 'Netscape6/'.length));
		return;
	}

	/* Treat any other "Gecko" browser as NS 6.1. */
	if ((i = ua.indexOf('Gecko')) >= 0) {
		this.isNS = true;
		this.version = 6.1;
		return;
	}
}

window.browser = new Browser();

/*
 * WMP Event object
 */
var WmpEvent = {};
WmpEvent.attachWmpEvent = function (event, eventType, eventHandler) {
	//return false;
	if (window.browser.isIE) {
		document.attachEvent('on' + eventType, eventHandler);
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}

	if (window.browser.isNS) {
		document.addEventListener(eventType, eventHandler, true);
		event.preventDefault();
	}
}
WmpEvent.detachWmpEvent = function (eventType, eventHandler) {
	if (window.browser.isIE) {
		document.detachEvent('on' + eventType, eventHandler);
	} else if (window.browser.isNS) {
		document.removeEventListener(eventType, eventHandler, true);
	}
}


// This object represents a Windows Media Player object
// with ability to bind events on an HTML page to its controls

function MediaPlayer(mediaUrl)
{

	/* URL: "private" property and method */
	var getUrl = function () { return mediaUrl; }

	/* Player type */
	var isActiveX = function () { return null != window.ActiveXObject; }
	var isOpera = function () { return -1 != navigator.userAgent.indexOf('Opera'); }
	var isWmp11 = function () {

		if (isActiveX()) {
			return false;
		}

		if (!!navigator.plugins) {
			for (var i in navigator.plugins) {
				if ('np-mswmp' == navigator.plugins[i].description) {
					return true;
				}
			}
		}
		return false;
	}

	/* HTML code for player */
	var getPlayerHtml = function (autostart) {
		var html = '';
		autostart = !!autostart ? 1 : 0;
		if (autostart == 1) playState =3;
			//alert('activeX: ' + isActiveX() + '\nautostart: ' + autostart + '\nisWmp11(): ' + isWmp11() + '\n!isOpera(): ' + !isOpera());
		if (isWmp11() && !isOpera()) {
			html =  '<object id="wmplayer" type="application/x-ms-wmp" data="' + getUrl() + '" width="0" height="0">';
			html += '<param name="URL" value="' + getUrl() + '" />';
			html += '<param name="uiMode" value="minimal" />';
			html += '<param name="EnablePositionControls" value="true" />';
			html += '<param name="ShowControls" value="1" />';
			html += '<param name="ShowDisplay" value="0" />';
			html += '<param name="ShowStatusBar" value="0" />';
			html += '</object>';
		} else if (isActiveX()) {
			/* no object code needed */
		} else {
			html  = '<embed id="wmplayer" name="wmplayer" type="application/x-mplayer2"';
			html += ' pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" ';
			/*html += ' filename="' + getUrl() + '" ';*/
			html += ' src="' + getUrl() + '" ';
			html += ' EnablePositionControls="1" ';
			html += ' ShowControls="1" ShowDisplay="0" ShowStatusBar="0" AutoStart="' + autostart + '" width="0" height="0"/>';
			if (!isActiveX()){
				document.getElementById("ajax").style.display = 'none';
			}
			
		}

		return html;
	}

	var volume = 0;
	var playing = true;
	
	/* initialization */
	var playerContainer = null;
	var initPlayer = function () {
		resetTime = true;
		playerContainer = document.createElement('div');
		playerContainer.style.position = 'absolute';
		playerContainer.style.width  = '1px';
		playerContainer.style.height = '1px';
		playerContainer.setAttribute('id', 'player_container');
		document.body.appendChild(playerContainer);
		playerContainer.innerHTML = getPlayerHtml(true);
		var playButtonMax = document.getElementById('button');
		playButtonMax.className = 'stop';


		if (isActiveX()) {
			wmpControl = new ActiveXObject('WMPlayer.OCX.7');
			wmpControl.URL = getUrl();
		} else if (isWmp11()) {
			wmpControl = document.getElementById('wmplayer');
		}
		
		wmpControl && wmpControl.settings  && (wmpControl.settings.volume = 100);

		startTime = new Date();
	}

	initPlayer();

	/* String variables, set methods */
		var i = 0;
	var statusbarText = null;
	this.setStatusbarText = function (text) { statusbarText = text; }
	/* detecting play state changes */
	var checkPlayState = function (st) {
		var newState = wmpControl && wmpControl.playState || st;

		newStateN = newState;
		if (null == newState) {
			
			if (browser.isIE) {
				newState = 0;
			} else {
				
				return false;
			}
		}

		var volumebarDisplay = 'none';
		var playButtonMax = document.getElementById('button');
		
		i_StateN = i;
		
		if (10 == newState) {
			status = 'Воспроизведение';
			ShowAjax(0); 
		} else if (11 == newState) {
			status = 'Загрузка';
		} else if (6 == newState) {
			status = 'Загрузка';
			ShowAjax(1);
		} else if (7 == newState) {
			status = 'Загрузка';
		} else if (9 == newState) {
			status = 'Загрузка';
		} else if (1 == newState) {
			status = 'Остановлено';
			//startTime = new Date();
			i = 0;
		} else { 
			if(3 == newState){
			   status = 'Воспроизведение';
			   //ShowAjax(0);
			}
			if (i == 0){
				update();
				startTime = new Date();
			}
			i = 1;

			document.getElementById("ajax").style.display = 'none';
			if(null != statusbarText){				
				status = statusbarText;
			}else{

				if(firstRun){
					resetTime = true;
					update();
					firstRun = false;
				}
				
				status_time.innerHTML = timeOfListening;
			}
			volumebarDisplay = 'block';
			if (playButtonMax.className == 'play'){
				playButtonMax.className = 'stop';
			}
		}

		i_StateN += "  2=" +i;
		
		statusbarN = statusbar;
		
	
		/*try {document.getElementById('main_info').innerHTML = '**' + status + '**' + statusbar.firstChild.nodeValue} catch (e) {alert('Bad!')};*/
		statusbar &&  (statusbar.innerHTML = status)

/*
		statusbar &&  (statusbar.firstChild) && (status != statusbar.firstChild.nodeValue) && (statusbar.innerHTML = status)
*/

		volumebar && (volumebar.style.display = volumebarDisplay);		
	}
	var statusbar;
	var volumebar;
	wmpControl && setInterval(checkPlayState, 200);

	/* volume */
	var volumeSlider = null;
	window.volumeSliderInfo = {}; /* make it temp global */

	/* private event handlers */
	var volumeDragStart = function (ev) {
		var x, y;
		volumeSliderInfo.zIndex = 0;

		ev = ev || window.event;

		if (null == volumeSlider) {
			if (browser.isIE) {
				volumeSlider = ev.srcElement;
			} else if (browser.isNS) {
				volumeSlider = ev.target;
			} else {
				/* no support for Opera yet, coming soon */
				return false;
			}

			/* do we really need it? */
			if (3 == volumeSlider.nodeType) {
				volumeSlider = volumeSlider.parentNode;
			}
		}

		volumeSliderInfo.mouseX = ev.clientX;

		WmpEvent.attachWmpEvent(ev, 'mousemove', volumeDragDo);
		WmpEvent.attachWmpEvent(ev, 'mouseup', volumeDragEnd);
	}
	var volumeDragDo = function (event) {
		var mouseX = event.clientX;
		marginLeftCur = volumeSliderInfo.marginLeftCur - (volumeSliderInfo.mouseX - mouseX);
		volumeSliderInfo.marginLeftCur = volumeSliderInfo.marginLeftCur - (volumeSliderInfo.mouseX - mouseX);
		volumeSliderInfo.mouseX = mouseX;

		/*
		var loud_img = document.getElementById('loud');
		if ((volumeSliderInfo.marginLeftCur > 66)){
			loud_img.className = "loud_3"			
		} else if ((volumeSliderInfo.marginLeftCur > 33) && (volumeSliderInfo.marginLeftCur < 66)){
			loud_img.className = "loud_2"			
		} else if ((volumeSliderInfo.marginLeftCur > 0) && (volumeSliderInfo.marginLeftCur < 33)){
			loud_img.className = "loud_1"
			
		}
		*/
		if (parseInt(volumeSliderInfo.marginLeftCur) <= 54){
			volumeSlider.style.width = parseInt(volumeSliderInfo.marginLeftCur) + 'px';
		}
		if (volumeSliderInfo.marginLeftCur < volumeSliderInfo.marginLeftMin) {
			//loud_img.className = "loud"
			volumeSliderInfo.marginLeftCur = volumeSliderInfo.marginLeftMin;
			
		} else if (volumeSliderInfo.marginLeftCur > volumeSliderInfo.marginLeftMax) {
			volumeSliderInfo.marginLeftCur = volumeSliderInfo.marginLeftMax;
			
			
		}
		
		//volumeSlider.style.marginLeft = volumeSliderInfo.marginLeftCur + 'px';

		if (browser.isIE) {
			window.event.cancelBubble = true;
			window.event.returnValue = false;
		} else if (browser.isNS) {
			event.preventDefault();
		}
		
		/* seeting volume */
		var volume = parseInt(100 * (volumeSliderInfo.marginLeftCur - volumeSliderInfo.marginLeftMin) / (volumeSliderInfo.marginLeftMax - volumeSliderInfo.marginLeftMin));
		wmpControl && wmpControl.settings  && (wmpControl.settings.volume = volume);
		volumebar && (volumebar.innerHTML = volume + '%');
	}
	var volumeDragEnd = function (event) {
		WmpEvent.detachWmpEvent('mousemove', volumeDragDo);
		WmpEvent.detachWmpEvent('mouseup', volumeDragEnd);
	}

	/* controls */
	this.play = function () {
		
		resetTime = true;

		if (false == playing) {
			playing = true;
			
			if (wmpControl && wmpControl.controls) {
				
				wmpControl.controls.play();
			} else {
				playerContainer.innerHTML = getPlayerHtml(true);/*  */
				checkPlayState(3);
			}
		}
				
	}
	this.stop = function () {
		resetTime = true;

		if (true == playing) {
			playing = false;
			
			if (wmpControl && wmpControl.controls) {
				wmpControl.controls.stop();
			} else {
				playerContainer.innerHTML = getPlayerHtml(false);/*  */
				checkPlayState(1);
			}
		}

	
	}
	this.setUrl = function (newUrl) {
		mediaUrl = newUrl;
		wmpControl && (wmpControl.URL = newUrl);
		
		if (!wmpControl) {
			playerContainer.innerHTML = getPlayerHtml(true);
			checkPlayState(3);
		}
	}

	/* Binding methods to DOM elements of the player */
	this.bindPlayButton = function (buttonPlay) { buttonPlay && (buttonPlay.onclick = this.play) }
	this.bindStopButton = function (buttonStop) { buttonStop && (buttonStop.onclick = this.stop) }
	this.bindVolumeSlider = function (volumeSliderElement, maxLeft, maxRight, marginLeft, defaultValue) {
		if (null == volumeSliderElement || 0 == parseInt(maxLeft) || 0 == parseInt(maxRight) || 0 == parseInt(marginLeft)) {
			return false;
		}

		volumeSlider = volumeSliderElement;
		//volumeSlider.style.marginLeft = parseInt(defaultValue) + 'px';
		volumeSlider.style.marginLeft = '0px';
		volumeSlider.style.width = parseInt(defaultValue) + 'px';
		//volumeSlider.style.marginLeft = parseInt(marginLeft) + 'px';
		volumeSlider.onmousedown = volumeDragStart;
		//WmpEvent.attachWmpEvent('mousedown', volumeDragStart);

		window.volumeSliderInfo.marginLeftOrig = parseInt(marginLeft);
		//window.volumeSliderInfo.marginLeftCur  = parseInt(defaultValue);
		window.volumeSliderInfo.marginLeftCur  = parseInt(defaultValue);
		window.volumeSliderInfo.marginLeftMin  = parseInt(marginLeft) - maxLeft;
		window.volumeSliderInfo.marginLeftMax  = parseInt(marginLeft) + maxRight;
	}
	this.bindStatusBar = function (elem) {
		statusbar = elem;
	}
	this.bindVolumeBar = function (elem) {
		volumebar = elem;
	}
}

/* новый код от 2008.04.10 */
var startTime = new Date();
var now = new Date();
var seconds = (now - startTime) / 1000;
var minutes = seconds / 60;
var hours = minutes / 60;
var days = hours / 24;
var timeOfListening = '';
ID=window.setTimeout("update();", 1000);
function update() {
	
	if(resetTime){
		startTime = new Date();
		resetTime = false;
	}

	now = new Date();
	seconds = (now - startTime);
	seconds = Math.round(seconds/ 1000);
	minutes = parseInt(seconds / 60);
	hours = parseInt(minutes/ 60);
	
	if (seconds >= 60){
		currSeconds = seconds%60;
	} else {
		currSeconds = seconds;
	}
	currSeconds < 10 ? currSecondsZero = '0' : currSecondsZero = '';
	if (minutes >= 60){
		currMinutes = minutes%60;
	} else {
		currMinutes = minutes;
	}
	currMinutes < 10 ? currMinutesZero = '0' : currMinutesZero = '';
	
	timeOfListening = hours + " : " + currMinutesZero + currMinutes + " : " + currSecondsZero + currSeconds;
	ID=window.setTimeout("update();",1000);
}

function ShowAjax(show){
	if (show == 1){
		document.getElementById("ajax").style.display = 'block';
		startTime = new Date();
	}else{
		document.getElementById("ajax").style.display = 'none';
		startTime = new Date();
	}
}
