AXSubtitleClass = function (div, path) {
	this.path = path;
	this.isVisible = false;
	this.ready = false;
	this.timer = null;
	this.currentSubtitleIndex = 0;
	this.currentBeginTime = null;
	this.currentEndTime = null;
	this.currentTime = 0;
	this.subtitlesPanel = findObj(div);
	this.subtitles = new Array();
	this.subtitle = new Object();
	
	if(this.subtitlesPanel != null)
	{
		this.subtitlesPanel.innerHTML = "";
		this.setVisible(true);
	}
	
	if(this.path != null)
	{
		if(window.ActiveXObject)
		{
			var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		}
		else if(document.implementation && document.implementation.createDocument)
		{
			var xmlDoc = document.implementation.createDocument("", "doc", null);
		}
		
		//load
		try
		{
			xmlDoc.async = false;
			xmlDoc.load(this.path);
			
			if(xmlDoc.documentElement != null)
			{
				var nodes = xmlDoc.documentElement.childNodes;
				//remove whitespace
				var o = new Object();
				for(var i=0; i<nodes.length; i++)
				{
					if(nodes[i].nodeType == 1)
					{
						this.add(nodes[i].attributes[0].value, nodes[i].attributes[1].value, nodes[i].childNodes[0].nodeValue);
					}
				}
				this.currentText = "";
				this.lock = false;
			}
		}
		catch(e){}
	}
};
AXSubtitleClass.prototype.add = function(beginTime, endTime, text) {
	var o = new Object();
	o.index = this.subtitles.length;
	o.beginTime = Number(beginTime);
	o.endTime = Number(endTime);
	o.text = text;
	this.subtitles.push(o);
};
AXSubtitleClass.prototype.setPosition = function(value) {
	if (this.subtitles.length > 0 && value != null && value >= 0 && !this.lock && this.isVisible) {
		this.lock = true;
		
		if(this.subtitle.index == null){
			this.subtitle = this.subtitles[0];
		}
		
		if (value>=this.subtitle.beginTime & value<=this.subtitle.endTime) {
			//Show subtitle
			this.setText(this.subtitle.text);
		} else {
			this.setText("");
			//Find next subtitle
			if (value>this.subtitle.endTime) {
				//Search higher
				var j = this.subtitle.index+1;
				while (j<this.subtitles.length) {
					if (j == this.subtitles.length-1) {
						this.subtitle = this.subtitles[j];
						break;
					}
					if (value>this.subtitles[j-1].endTime && value<this.subtitles[j].beginTime) {
						//value in gap between subtitles
						this.subtitle = this.subtitles[j];
						break;
					} else if (value>=this.subtitles[j].beginTime && value<this.subtitles[j].endTime) {
						//value within subtitle j's interval
						this.subtitle = this.subtitles[j];
						this.setText(this.subtitle.text);
						break;
					}
					j++;
				}
			} else if (value<this.subtitle.beginTime && this.subtitle.index != 0) {
				//Search lower
				var j = this.subtitle.index-1;
				while (j>-1) {
					if (j == 0) {
						this.subtitle = this.subtitles[j];
						break;
					} else if (value<this.subtitles[j].beginTime && value>this.subtitles[j-1].endTime) {
						//value in gap between subtitles
						this.subtitle = this.subtitles[j];
						break;
					} else if (value>=this.subtitles[j].beginTime && value<=this.subtitles[j].endTime) {
						//value within subtitle j's interval
						this.subtitle = this.subtitles[j];
						this.setText(this.subtitle.text);
						break;
					}
					j--;
				}
			}
		}
		this.lock = false;
	}
};
AXSubtitleClass.prototype.setText = function(s)
{
	if(this.currentText != s)
	{
		this.currentText = s;
		/*
		var s1 = "";
		var s2 = "";
		if(s.length > 40)
		{
			var t = s.split(' ');
			if(t.length > 0)
			{
				s1 = t[0];
				for(var i=1; i<t.length; i++)
				{
					if(s1.length+t[i].length <= 40)
					{
						s1 += " "+t[i];
					}
					else
					{
						//found break point
						s1 = s.substring(0, s1.length);
						s2 = s.substring(s1.length, s.length);
						break;
					}
				}
			}
			s = s1 + "<br/>" + s2;
		}
		*/
		
		if(s != "")
		{
			this.subtitlesPanel.innerHTML = "<strong>" + s + "</strong>";
		}
		else
		{
			this.subtitlesPanel.innerHTML = "";
		}
	}
};
AXSubtitleClass.prototype.setVisible = function(show)
{
	this.isVisible = show;
	if(!show)
	{
		this.subtitlesPanel.style.display = 'none';
	}
	else
	{
		this.subtitlesPanel.style.display = 'block';
	}
};
