// site home url
var home = '.';

var XMLHTTP_LOAD_COMPLETE = 4;
var XMLHTTP_HTTP_STATUS = 200;
var MSXMLHTTP = false;

var epg = createXmlHttp();

var cursor = 0;
var lhour;
var cch;
var name;
var croom;
var maxch = 12;
var tvch = new Array();
var room = new Array();
var cprogi = new Array();
var chat;

function createXmlHttp() {
    var xmlhttp;
    try {
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	MSXMLHTTP = true;
    } catch (e) {
	try {
	    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	    MSXMLHTTP = true;
	} catch (E) {
	    xmlhttp = false;
	}
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
	xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function epgRequest() {
    var requrl = home + '/tvprog.xml';
    xmlHttpDo( epg, requrl );
}

function xmlHttpDo(xmlhttp,requrl) {
    try {
	xmlhttp.open("GET", requrl, true);
	xmlhttp.onreadystatechange = function () {
	    if (xmlhttp.readyState == XMLHTTP_LOAD_COMPLETE) {
		resultOutput(xmlhttp);
	    }
	}
	xmlhttp.send(null);
    } catch (e) {
    }
}

function resultOutput(xmlhttp) {
    var root = xmlhttp.responseXML.documentElement;

    for (var i = 1; i <= maxch; i++ ){
	tvch[i]='';
	room[i]='';
	cprogi[i]=-1;
    }
    var items = root.getElementsByTagName('item');
    for (var i = 0; i < items.length; i++) {
	var chi = getValue( items[i], 'ch' );
	var tvchi = getValue( items[i], 'tvch' );
	var roomi = getValue( items[i], 'room' );
	if(chi > 0){
	    tvch[chi]=tvchi;
	    room[chi]=roomi;
	    if(cprogi[chi] == -1){
		cprogi[chi] = i;
	    }
	}
    }
    printprog();
}

function prog(ch) {
    if(ch < 1 || ch > maxch || tvch[ch] == '' ){
	return;
    }
    var root = epg.responseXML.documentElement;
    var items = root.getElementsByTagName('item'); 
    var progm = '<input id="reloadcbutton" type="button" value="['+ch+'] '+tvch[ch]+'" onclick="epgRequest();"><br />';
    var now = new Date(); 

    var chour = now.getHours();
    var cmin = now.getMinutes();
    var ctime = chour*60+cmin;
    if(lhour < chour || (lhour == 23 && chour == 0)){
	lhour = chour;
	epgRequest();
	return;
    }

    for (var i = cprogi[ch]; i < items.length; i++) {
	if( i == items.length-1 || eval(getValue( items[i+1], 'ch' )) != ch ){
	    var prog = getValue( items[i], 'prog' );
	    var url = getValue( items[i], 'url' );
	    var hour = getValue( items[i], 'hour' );
	    var min = getValue( items[i], 'min' );
	    cprogi[ch] = i;	
	    progm += hour+':'+min+'- <a href="'+url+'" target="_blank">'+prog+'</a>';
	    break;
	}else{
	    var nhour = eval(getValue( items[i+1], 'hour' ));
	    if(chour > 12 && nhour < 12){
		nhour += 24;
	    }
	    var nmin = eval(getValue( items[i+1], 'min' ));	

	    if(nhour*60+nmin > ctime){
		var prog = getValue( items[i], 'prog' );
		var url = getValue( items[i], 'url' );
		var hour = getValue( items[i], 'hour' );
		var min = getValue( items[i], 'min' );
		var nprog = getValue( items[i+1], 'prog' );
		var nurl = getValue( items[i], 'url' );
		var nhour = getValue( items[i+1], 'hour' );
		var nmin = getValue( items[i+1], 'min' );	
		cprogi[ch] = i;
		progm += hour+':'+min+'-'+nhour+':'+nmin+' <a href="'+url+'" target="_blank">'+prog+'</a><br />'+'Next: <a href="'+nurl+'" target="_blank">'+nprog+'</a>';
		break;
	    }
	}
    }
    return(progm);
}

function chinc(){
    cch++;
    if(cch > maxch){
	cch = 1;
    }
    if(tvch[cch] == ''){
	chinc();
    }else{
	printprog();
	if(croom){
	    chaton();
	}
    }
}

function chdec(){
    cch--;
    if(cch < 1){
	cch = maxch;
    }
    if(tvch[cch] == ''){
	chdec();
    }else{
	printprog();
	if(croom){
	    chaton();
	}
    }	
}

function printprog(){
    target = 'progtitle';
    var progm = prog(cch);
    setCookie("CCH",cch);
    var resultBox = document.getElementById(target);

    resultBox.innerHTML = progm;
    resultBox.style.display = 'block';
    return;
}

function epginit(){
    cch = getCookie("CCH");
    if(cch > 0){
	cch = eval(cch);
    }else{
	cch = 1;
    }
    name = getCookie("NNAME");
    document.getElementById("nickname").value = name;
    epgRequest();
}

function savenickname(){
    setCookie("NNAME",document.getElementById("nickname").value);
}

function chaton(){
    if(croom){
	chat.end();
    }
    croom = room[cch];
    chat = new Chat('chat',croom);
}

function chatoff(){
    if(croom){
	chat.end();
    }
    croom = '';
}

function getCookie(key)
{
    var ckary = document.cookie.split("; ");
    var i=0;
    var ckstr = "";

    while (ckary[i]){
	if( ckary[i].substr(0,key.length+1) == key+"=" ){
	    ckstr=ckary[i].substr(key.length+1,ckary[i].length);
	    break;
	}
	i++;
    }
    
    return ckstr;
}

function setCookie(key,value)
{
    var ckary = document.cookie.split("; ");
    var ckstr = escape(value);
    var exp = new Date();

    exp.setTime(exp.getTime()+1000*60*60*24*7);

    document.cookie = key + "=" + ckstr + "; expires=" + exp.toGMTString();
}
    
function getValue( node, key ){
    if(node.getElementsByTagName(key)[0].firstChild){
	return node.getElementsByTagName(key)[0].firstChild.nodeValue;
    }else{
	return "";
    }
}



