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_txt = findObj('subtitles-text');
	if(this.subtitles_txt != null)
	{
		this.subtitles_txt.innerHTML = "";
		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)
			{
				this.subtitles = xmlDoc.documentElement.childNodes;
				//remove whitespace
				var t = new Array();
				for(var i=0; i<this.subtitles.length; i++)
				{
					if(this.subtitles[i].nodeType == 1)
					{
						t.push(this.subtitles[i]);
					}
				}
				this.subtitles = t;
				this.subtitle = new Object();
				this.currentText = "";
				this.lock = false;
				this.setVisible(true);
			}
		}
		catch(e){}
	}
};
AXSubtitleClass.prototype.setSubtitle = function(index) {
	this.subtitle.index = index;
	// 0 - beginTime
	// 1 - endTime
	this.subtitle.beginTime = Number(this.subtitles[index].attributes[0].value);
	this.subtitle.endTime = Number(this.subtitles[index].attributes[1].value);
	this.subtitle.text = this.subtitles[index].childNodes[0].nodeValue;
};
AXSubtitleClass.prototype.setPosition = function(value) {
	if (value != null && value >= 0 && !this.lock && this.isVisible) {
		this.lock = true;
		
		if(this.subtitle.index == null){
			this.setSubtitle(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.setSubtitle(j);
						break;
					}
					if (value>Number(this.subtitles[j-1].attributes[1].value) && value<Number(this.subtitles[j].attributes[0].value)) {
						//value in gap between subtitles
						this.setSubtitle(j);
						break;
					} else if (value>=Number(this.subtitles[j].attributes[0].value) && value<Number(this.subtitles[j].attributes[1].value)) {
						//value within subtitle j's interval
						this.setSubtitle(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.setSubtitle(j);
						break;
					} else if (value<Number(this.subtitles[j].attributes[0].value) && value>Number(this.subtitles[j-1].attributes[1].value)) {
						//value in gap between subtitles
						this.setSubtitle(j);
						break;
					} else if (value>=Number(this.subtitles[j].attributes[0].value) && value<=Number(this.subtitles[j].attributes[1].value)) {
						//value within subtitle j's interval
						this.setSubtitle(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;
					}
				}
			}
			//split into 2 lines
			/*
			for(var i=38; i<s.length-1; i++)
			{
				if(s.substring(i, i+1) == " ")
				{
					s1 = s.substring(0,i);
					s2 = s.substring(i+1);
					break;
				} 
			}
			*/
			this.subtitles_txt.innerHTML = "<strong>" + s1 + "<br/>" + s2 + "</strong>";
		}
		else
		{
			//alert(s);
			this.subtitles_txt.innerHTML = "<strong>" + s + "</strong>";
		}
	}
};
AXSubtitleClass.prototype.setVisible = function(show)
{
	this.isVisible = show;
	if(!show){
		this.subtitles_txt.innerHTML = "";
		this.subtitlesPanel.style.display = 'none';
	}
	else
	{
		this.subtitlesPanel.style.display = 'block';
	}
};

