var http_request = false;
var last_date = '';
var result_per_page = 6;
var cache_pages = 10;
var currentZIndex = 1000;
var shows_checked = new Array(true, true);

function g(id)
{
	return document.getElementById(id);
}

function init_http_request()
{
	http_request = false;
	if(window.XMLHttpRequest)
	{
		http_request = new XMLHttpRequest();
		if(http_request.overrideMimeType)
		{
     		http_request.overrideMimeType('text/xml');
		}
	}
	else if(window.ActiveXObject)
	{
		try
		{
      		http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
      		try
			{
         		http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
			}
		}
	}
}

function timeline(d)
{
	init_http_request();
	if(!http_request)
	{
		g('tl_frame').innerHTML = '浏览器版本太低无法初始化XMLHTTP对象';
		return false;
	}
	var favshows = readCookie('shows');
	if(favshows == null)
	{
		favshows = 'all';
	}
	else
	{
		favshows = 'include' + favshows.substr(1, favshows.length - 2);
	}
	var param = 'command=list_episode';
	var qdate = '';
	var limit = result_per_page * cache_pages;

	if(d == 0)
	{
		var date = new Date();
		date.setDate(date.getDate() - 2)
		var month = date.getMonth() + 1;
		if(month < 10)
		{
			month = '0' + month;
		}
		var day = date.getDate();
		if(day < 10)
		{
			day = '0' + day;
		}
		qdate = date.getFullYear() + month + day;
		g('tl_from').value = qdate;
		g('tl_to').value = qdate;
		g('tl_page').value = 1;
		param = param + '&from=' + qdate + '&limit=' + limit + '&show=' + favshows;
	}
	else if(d == 1)
	{
		if(g('tl_page').value == cache_pages)
		{
			g('tl_page').value = 1;
			g('tl_from').value = last_date;
		}
		else
		{
			g('tl_page').value = new Number(g('tl_page').value) + 1;
		}
		qdate = g('tl_from').value;
		param = param + '&from=' + qdate + '&limit=' + limit + '&show=' + favshows;
	}
	else
	{
		if(g('tl_page').value > 1)
		{
			qdate = g('tl_from').value;
			g('tl_page').value = new Number(g('tl_page').value) - 1;
			param = param + '&from=' + qdate + '&limit=' + limit + '&show=' + favshows;
		}
		else
		{
			d = -2;
			qdate = g('tl_to').value;
			limit = result_per_page;
			param = param + '&to=' + qdate + '&limit=' + limit + '&show=' + favshows;
			g('tl_page').value = 1;
		}
	}
	http_request.onreadystatechange = function(){proc_timeline(d);};
	http_request.open('POST', '/services/timeline', true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.send(param);
	if(g('tl_next'))
	{
		g('tl_next').disabled = true;
	}
	if(g('tl_refresh'))
	{
		g('tl_refresh').disabled = true;
	}
	if(g('tl_prev'))
	{
		g('tl_prev').disabled = true;
	}
}
function new_frame()
{
	var frame = g('tl_frame');
	while (frame.firstChild)
	{
		frame.removeChild(frame.firstChild);
	}
	var ul = document.createElement('ul');
	ul.setAttribute('id', 'tl_timeline');
	ul.className = 'custom_timeline';
	frame.appendChild(ul);
}
function proc_timeline(d)
{
	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			var xmldoc = http_request.responseXML;
			var response = xmldoc.getElementsByTagName('response').item(0).firstChild.nodeValue;
			if(response == '0')
			{
				var count = xmldoc.getElementsByTagName('count').item(0).firstChild.nodeValue;
				if(count > 0)
				{
					var episodes = xmldoc.getElementsByTagName('episode');
					if(d == -2)
					{
						var page = 1;
						var start = result_per_page - 1;
						var l = 0
						var end = false;
						if(episodes.length < start + 1)
						{
							start = episodes.length - 1;
							end = true;
						}
						last_date = '';
						new_frame();
						var ul = g('tl_timeline');
						for(var i=start; i>=l; i--)
						{
							proc_episode(episodes.item(i), ul, i, start);
						}
						g('tl_from').value = g('tl_to').value;
						if(end)
						{
							li = document.createElement('li');
							li.className = 'tl_comment custom_comment';
							li.innerHTML = '已到达美剧时间表的起点';
							ul.appendChild(li);
						}
						else
						{
							g('tl_prev').disabled = false;
						}
						g('tl_next').disabled = false;
						g('tl_refresh').disabled = false;
					}
					else
					{
						var page = g('tl_page').value ;
						var start = page * result_per_page - result_per_page;
						var l = start + result_per_page;
						var end = false;
						if(episodes.length < l)
						{
							l = episodes.length;
							end = true;
						}
						last_date = '';
						var ul = g('tl_timeline');
						if(start != l)
						{
							new_frame();
							ul = g('tl_timeline');
							for(var i=start; i<l; i++)
							{
								proc_episode(episodes.item(i), ul, i, start);
							}
						}
						if(end)
						{
							li = document.createElement('li');
							li.className = 'tl_comment custom_comment';
							li.innerHTML = '已到达美剧时间表的尽头';
							ul.appendChild(li);
						}
						else
						{
							g('tl_next').disabled = false;
						}
						g('tl_prev').disabled = false;
						g('tl_refresh').disabled = false;
					}
				}
				else
				{
					if(d != -2)
					{
						timeline(-1);
					}
				}
			}
		}
	}
}
function proc_episode(episode, ul, i, start)
{
	var show = episode.getElementsByTagName('show').item(0);
	var producer = show.getElementsByTagName('producer').item(0).firstChild.nodeValue;
	var showname = show.getElementsByTagName('name').item(0).firstChild.nodeValue;
	var showid = show.getAttribute('id');
	var date = episode.getElementsByTagName('date').item(0).firstChild.nodeValue;
	var season = episode.getElementsByTagName('season').item(0).firstChild.nodeValue;
	var episodeid = episode.getElementsByTagName('episodeid').item(0).firstChild.nodeValue;
	var topic = episode.getElementsByTagName('topic').item(0).firstChild.nodeValue;
	var name = episode.getElementsByTagName('name').item(1).firstChild.nodeValue;
	var li = null;
	if(last_date != date)
	{
		last_date = date;
		li = document.createElement('li');
		if(i == start)
		{
			li.className = 'tl_topdate custom_topdate';
			g('tl_to').value = date;
		}
		else
		{
			li.className = 'tl_date custom_date';
		}
		li.innerHTML = date.substring(0, 4) + '-' + date.substring(4, 6) + '-' + date.substring(6);
		ul.appendChild(li);
	}
	li = document.createElement('li');
	li.onmousemove = function(){change_color(this, true);}
	li.onmouseout = function(){change_color(this, false);}
	li.onclick = function(){on_episode(showid, season, episodeid, topic);}
	li.className ='tl_episode custom_episode';
	if(episodeid < 10)
	{
		episodeid = '0' + episodeid;
	}
	li.innerHTML = '<span class="tl_producer custom_producer">' + producer + '</span><span class="tl_show custom_show">' + showname + '</span><span class=tl_epname custom_epname"><br />&raquo; S' + season + '-' + episodeid + '. ' + name + '</span>';
	ul.appendChild(li);
}
function change_color(r, d)
{
	if(d)
	{
		r.style.backgroundColor = '#f3f6fa';
	}
	else
	{
		r.style.backgroundColor = '#ffffff';
	}
}
function on_episode(show, season, episode, topic)
{
//	alert(episode);
}
function getLeftPos(inputObj)
{
	var returnValue = inputObj.offsetLeft;
	while((inputObj = inputObj.offsetParent) != null)
	{
		returnValue += inputObj.offsetLeft;
	}
	return returnValue;
}
function getTopPos(inputObj)
{		
	var returnValue = inputObj.offsetTop;
	while((inputObj = inputObj.offsetParent) != null)
	{
		returnValue += inputObj.offsetTop;
	}
	return returnValue;
}
function init_timeline()
{
	if(typeof(window['tl_result_per_page']) != 'undefined')
	{
		result_per_page = tl_result_per_page;
	}
	init_http_request();
	if(!http_request)
	{
		g('tl_frame').innerHTML = '浏览器版本太低无法初始化XMLHTTP对象';
		return false;
	}
	var param = 'command=list_show&status=all';
	http_request.onreadystatechange = proc_show;
	http_request.open('POST', '/services/timeline', true);
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.send(param);
}
function readCookie(name)
{
	var nameEQ = name + '=';
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while(c.charAt(0)==' ')
		{
			c = c.substring(1, c.length);
		}
		if(c.indexOf(nameEQ) == 0)
		{
			return c.substring(nameEQ.length,c.length);
		}
	}
	return null;
}
function sel_shows(status)
{
	var shows = document.getElementsByName('shows' + status);
	shows_checked[status] = !shows_checked[status];
	for(var i=0; i<shows.length; i++)
	{
		shows[i].checked = shows_checked[status];
	}
}
function proc_show()
{
	if(http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			var xmldoc = http_request.responseXML;
			var response = xmldoc.getElementsByTagName('response').item(0).firstChild.nodeValue;
			if(response == '0')
			{
				var count = xmldoc.getElementsByTagName('count').item(0).firstChild.nodeValue;
				if(count > 0)
				{
					var p = new Array(3);
					var ul = new Array(3);
					var c = new Array(3);
					c[0] = 0;
					c[1] = 0;
					c[2] = 0;
					p[0] = document.createElement('p');
					p[1] = document.createElement('p');
					p[2] = document.createElement('p');
					p[0].className = 'tl_statusplaying custom_statusplaying';
					p[1].className = 'tl_statuspaused custom_statuspaused';
					p[2].className = 'tl_statusstopped custom_statusstopped';
					p[0].innerHTML = '<span onclick="sel_shows(0)">热播中：</span>';
					p[1].innerHTML = '<span onclick="sel_shows(1)">暂停：</span>';
					p[2].innerHTML = '<span onclick="sel_shows(2)">已完结：</span>';
					ul[0] = document.createElement('ul');
					ul[1] = document.createElement('ul');
					ul[2] = document.createElement('ul');
					ul[0].className = 'custom_showsplaying';
					ul[1].className = 'custom_showsplaying';
					ul[2].className = 'tl_showsstopped custom_showsstopped';
					var shows = xmldoc.getElementsByTagName('show');
					var status = 0;
					var name = '';
					var id = 0;
					var li = null;
					var i = 0;
					for(i=0; i<count; i++)
					{
						id = shows.item(i).getAttribute('id');
						status = shows.item(i).getElementsByTagName('status').item(0).firstChild.nodeValue;
						name = shows.item(i).getElementsByTagName('name').item(0).firstChild.nodeValue;
						li = document.createElement('li');
						li.innerHTML = '<input type="checkbox" name="shows' + status + '"' + ' value="' + id + '" /> ' + name;
						ul[status].appendChild(li);
						c[status] = c[status] + 1;
					}
					var showlist = g('tl_showlist');
					for(i=0; i<3; i++)
					{
						if(c[status] > 0)
						{
							showlist.appendChild(p[i]);
							showlist.appendChild(ul[i]);
						}
					}
				}
				timeline(0);
			}
		}
	}
}
function save_showlist()
{
	var shows0 = document.getElementsByName('shows0');
	var shows1 = document.getElementsByName('shows1');
	var shows2 = document.getElementsByName('shows2');
	var i = 0;
	var favshows = ',';
	for(i=0; i<shows0.length; i++)
	{
		if(shows0[i].checked)
		{
			favshows = favshows + shows0[i].value + ',';
		}
	}
	for(i=0; i<shows1.length; i++)
	{
		if(shows1[i].checked)
		{
			favshows = favshows + shows1[i].value + ',';
		}
	}
	for(i=0; i<shows2.length; i++)
	{
		if(shows2[i].checked)
		{
			favshows = favshows + shows2[i].value + ',';
		}
	}
	if(favshows == ',')
	{
		g('tl_msg').innerHTML = '请至少选择一部美剧';
		return;
	}
	var date = new Date();
	date.setTime(date.getTime()+31536000000);
	var expires = '; expires=' + date.toGMTString();
	document.cookie = 'shows=' + favshows + expires + '; path=/';
	hide_showlist();
	timeline(0);
}
function check_shows()
{
	var favshows = readCookie('shows');
	var shows0 = document.getElementsByName('shows0');
	var shows1 = document.getElementsByName('shows1');
	var shows2 = document.getElementsByName('shows2');
	var i = 0;
	if(favshows == null)
	{
		for(i=0; i<shows0.length; i++)
		{
			shows0[i].checked = true;
		}
		for(i=0; i<shows1.length; i++)
		{
			shows1[i].checked = true;
		}
		for(i=0; i<shows2.length; i++)
		{
			shows2[i].checked = true;
		}
	}
	else
	{
		for(i=0; i<shows0.length; i++)
		{
			if(favshows.indexOf(',' + shows0[i].value + ',') == -1)
			{
				shows0[i].checked = false;
			}
			else
			{
				shows0[i].checked = true;
			}
		}
		for(i=0; i<shows1.length; i++)
		{
			if(favshows.indexOf(',' + shows1[i].value + ',') == -1)
			{
				shows1[i].checked = false;
			}
			else
			{
				shows1[i].checked = true;
			}
		}
		for(i=0; i<shows2.length; i++)
		{
			if(favshows.indexOf(',' + shows2[i].value + ',') == -1)
			{
				shows2[i].checked = false;
			}
			else
			{
				shows2[i].checked = true;
			}
		}
	}
}
function show_list()
{
	var pannel = g('tl_showpannel');
	var list = g('tl_showlist');
	if(pannel.style.display == 'block')
	{
		return;
	}
	check_shows();

	var frame = g('tl_frame');
	var height = frame.offsetHeight - 20;
	if(height > 320)
	{
		height = 320;
	}

	var max_width = frame.offsetWidth - 20;
	if(max_width > 480)
	{
		max_width = 480;
	}
	
	pannel.style.left = getLeftPos(frame) + (frame.offsetWidth / 2) + 'px';
	pannel.style.top = (frame.offsetHeight - height) / 2 + getTopPos(frame) + 'px';
	pannel.style.width = '0px';
	pannel.style.height = height + 'px';
	list.style.width = '0px';
	list.style.height = (height - 20) + 'px';
	pannel.style.display = 'block';
	pannel.style.zIndex = currentZIndex;
	currentZIndex++;
	slide_show();
	var div = document.createElement('div');
	div.setAttribute('id', 'tl_dark');
	div.style.width = frame.offsetWidth + 'px';
	div.style.height = frame.offsetHeight + 30 + 'px';
	div.style.left = getLeftPos(frame) + 'px';
	div.style.top = getTopPos(frame) + 'px';
    div.style.opacity = (60 / 100); 
    div.style.MozOpacity = (60 / 100); 
    div.style.KhtmlOpacity = (60 / 100); 
    div.style.filter = 'alpha(opacity=60)'; 
	div.onclick = hide_showlist;
	document.body.appendChild(div);
}
function slide_show()
{
	var pannel = g('tl_showpannel');
	var list = g('tl_showlist');
	var width = pannel.offsetWidth;
	var frame_width = g('tl_frame').offsetWidth;

	var max_width = frame_width - 20;

	if(max_width > 480)
	{
		max_width = 480;
	}
	if(width >= max_width)
	{
		width = max_width;
	}
	else
	{
		width = width + 10;
	}
	pannel.style.left = getLeftPos(g('tl_frame')) + ((frame_width - width) / 2) + 'px';
	pannel.style.width = width + 'px';
	list.style.width = width + 'px';
	if(width <max_width)
	{
		setTimeout('slide_show()', 10);
	}
}
function hide_showlist()
{
	var dark = g('tl_dark');
	if(dark)
	{
		document.body.removeChild(dark);
	}
	g('tl_showpannel').style.display = 'none';
}