function CvoonLive(s)
{    if (!s) s = {};
	this.lang = s.lang ? s.lang : 'ru';
	this.font = s.font ? 'font-size:'+s.font+'px;' : '';
	this.togg = parseInt(s.toggle);
	if(isNaN(this.togg)) this.togg = 0;
	if(this.togg<0 || this.togg>2) this.togg = 0;
	this.width = s.width ? 'width:'+s.width+'px;' : '';
	this.height = s.height ? 'height:'+s.height+'px;'  : '';
	this.overflow = s.height ? 'overflow:auto;' : '';
	this.rows = [s.bgcolor1 ? 'background:'+s.bgcolor1+';' : '', s.bgcolor2 ? 'background:'+s.bgcolor2+';' : ''];
	this.tz = s.timezone ? s.timezone : 0;
	this.filter = s.filter ? s.filter : false;
	this.hidden = s.hidden ? s.hidden : false;
	this.url = 'http://www.voon.ru/';
	this.dataURL = this.url+'live/js/?lang='+this.lang+'&r=';
	this.imgURL = this.url+'img/live/';
	this.reload = s.reload ? s.reload : false;
	if (this.reload && this.reload<60) this.reload = 60;
	this.reload *= 1000;
	this.data = [];
	this.d = {};
	this.x = false;

   	this.cd = {' ':'',',':'',"'":'','"':'',':':'',';':'','/':'','-':'',
   	'а':0,'я':1,'о':2,'у':3,'ю':3,'р':4,'и':5,'ы':6,'е':7,'ё':7,'э':7,'к':8,'й':9,
   	'б':'b','в':'v','г':'g','д':'d','ж':'a','з':'z','л':'l','м':'m','н':'n','п':'p',
   	'с':'s','т':'t','ф':'f','х':'x','ц':'h','ч':'e','ш':'o','щ':'u','ь':'r','ъ':'y'};

    var me = this;

    this.cl = function(s)
    {
    	s = s.toLowerCase(s);
    	for(var i in me.cd) s = s.replace(new RegExp(i,'g'), me.cd[i]);
    	return s+'0';
    };

    this.$ = function(id)
    {    	return document.getElementById(id);    };

    this.loadData = function()
    {    	me.d = {};
    	var el = me.$('voonLiveDataSource');
    	if(el)
    	{
            var p = el.parentNode;
            if (p){p.removeChild(el);delete(el);}
    	    el = document.createElement('SCRIPT');
    	    el.type = 'text/javascript';
    	    el.charset = 'utf-8';
    	    el.id = 'voonLiveDataSource';
    	    el.src = me.dataURL + Math.random();
    	    document.body.appendChild(el);
    	}
    	else
    	{
    	    document.write('<sc'+'ript id="voonLiveDataSource" type="text/jav'+'asc'+'ript" charset="utf-8" src="'+me.url+'js/xpath.js'+'"></sc'+'ript>');
    	    me.renderHTML();
    	    document.write('<sc'+'ript id="voonLiveDataSource" type="text/jav'+'asc'+'ript" charset="utf-8" src="'+me.dataURL+Math.random()+'"></sc'+'ript>');
    	}
    	if (me.reload) window.setTimeout(window.voonLive.loadData, me.reload);    };

    this.renderHTML = function()
    {
        var year = 2011;
        var im = '<a style="float:right;" href="'+this.url+'" target="_blank" title="Voon.ru &copy; '+year+
        '"><img src="'+this.imgURL+'logo.gif" alt="" border="0"/></a>';
        var hd = me.lang=='ru' ? 'Результаты Live' : 'Live Results';
        var ds = '';
        if(this.togg)
        {
        	var ti = this.togg>1 ? 't0' : 't1';
        	if(this.togg>1) ds = 'display:none;';
        	hd = '<img src="'+this.imgURL+ti+'.gif" height="15" style="cursor:pointer;margin-right:5px;" onclick="window.voonLive.tog(this)"/>' + hd;        }
     	document.write('<div style="border:1px dotted;'+this.width+this.font+'"><div style="border-bottom:1px dotted;height:31px;font-weight:bold;'+this.rows[1]+'">'+im+'<div style="padding:5px">'+hd+'</div></div>'+
     	'<div id="voonLiveDiv" style="border-bottom:1px dotted;width:100%;'+ds+this.height+this.overflow+this.rows[0]+'"></div>'+'<div style="text-align:center;padding:3px;'+this.rows[1]+
     	'"><sup>Powered by <a href="'+this.url+'" target="_blank">Voon.ru &copy; '+year+'</a></sup></div></div>');    };

    this.tog = function(im)
    {        var el = this.$('voonLiveDiv');
        if(im.src.indexOf('0')>-1)
        {        	im.src = im.src.replace('0','1');
        	el.style.display = 'block';        }
        else
        {        	im.src = im.src.replace('1','0');
        	el.style.display = 'none';        }    };

    this.parseData = function()
    {        this.x = xTextXML(this.data);
        var n = me.x.selectNodes('/live/tour');
        var len = n.length;
        if (len==0) return;
        var s = '', h = '', st, f, so=0, ttl, num, ln, m, j;
       	var coo = this.getCoo('voonlive');
        for(var i=0;i<len;i++)
        {
        	ttl = n[i].getAttribute('title');
        	if(coo.indexOf(this.cl(ttl))<0) continue
        	num = n[i].getAttribute('id');
          	f = '';
          	m = n[i].selectNodes('match');
          	ln = m.length;
          	if(ln==0) continue;
          	for(j=0;j<ln;j++) f += me.rowNode(m[j],j==ln-1);
       	    so++;
       	    s += me.claster(ttl, f, num, so%2 ? ' odd' : '', 'block', 'hide');
        }
        for(var i=0;i<len;i++)
        {
        	ttl = n[i].getAttribute('title');
        	if(coo.indexOf(this.cl(ttl))>-1) continue
        	num = n[i].getAttribute('id');
          	f = '';
          	m = n[i].selectNodes('match');
          	ln = m.length;
          	if(ln==0) continue;
          	for(j=0;j<ln;j++) f += me.rowNode(m[j],j==ln-1);
       	    so++;
       	    s += me.claster(ttl, f, num, so%2 ? ' odd' : '', 'none', 'hide');
        }
        this.$('voonLiveDiv').innerHTML = s;
    };

    this.rowNode = function(n,last)
    {
    	var cl = last ? '' : ' style="border-bottom: 1px dotted;"';
    	var s = {};
    	var ell = xText(n.selectSingleNode('el'));
    	var st = xText(n.selectSingleNode('st'));
    	var id = n.getAttribute('id');
    	switch(st)
    	{
    		case 'inprogress':
   		    if(ell=='false'){s.im = '2'; s.tm = '&nbsp;'; } else {s.im = '1'; s.tm = ell.replace("'","<blink>'</blink>"); } break;

    		case 'notstarted': s.im = '0'; s.tm = me.localTime(xText(n.selectSingleNode('sd')));s.sc = '&nbsp;'; break;

    		case 'finished'  : s.im = '3'; s.tm = '&nbsp;'; break;

    		case 'cancelled': default : s.im = '4'; s.tm = '&nbsp;'; s.sc = '&nbsp;'; break;
    	}
        if(typeof(s.sc)=='undefined') s.sc = xText(n.selectSingleNode('team1/rs')) + ' - ' + xText(n.selectSingleNode('team2/rs'));
    	if(s.sc)
    	{
        	s.ht = n.selectSingleNode('team1/ht');
       		s.ht = s.ht ? '<span style="color:#777;font-size:9px;"> (' + xText(s.ht) + '-' + xText(n.selectSingleNode('team2/ht')) + ')</span>' : '';
       		s.sc += s.ht;
        }
        s.t1 = xText(n.selectSingleNode('team1/team'));
        s.t2 = xText(n.selectSingleNode('team2/team'));

/*
    	var s = {};
    	var cl = last ? '' : ' style="border-bottom: 1px dotted;"';
    	switch(xText(n.selectSingleNode('st')))
    	{
    		case 'inprogress':
   		    var ell = xText(n.selectSingleNode('el'));
   		    if(ell=='false')
   		    {
   		        s.im = '2';
   		        s.tm = '&nbsp;';
   		    }
   		    else
   		    {
                s.im = '1';
   		        s.tm = ell.replace("'","<blink>'</blink>");
   		    }
   		    break;
    		case 'notstarted': s.im = '0'; s.tm = me.localTime(xText(n.selectSingleNode('sd'))); s.sc = '&nbsp;'; break;
    		case 'finished'  : s.im = '3'; s.tm = '&nbsp;'; if(typeof(n.selectSingleNode('team1/ht'))=='undefined') s.sc = '&nbsp;'; break;
    		default : s.im = '4'; s.tm = '&nbsp;'; break;
    	}
        s.t1 = xText(n.selectSingleNode('team1/team'));
        s.t2 = xText(n.selectSingleNode('team2/team'));
        if(typeof(s.sc)=='undefined') s.sc = xText(n.selectSingleNode('team1/rs')) + ' - ' + xText(n.selectSingleNode('team2/rs'));
*/

    	return '<tr><td width="5%" align="center" valign="top"'+cl+'><img src="'+this.imgURL+s.im+'.gif" style="margin-top:4px;" alt=""/></td>'+
               '<td width="10%" nowrap="nowrap" align="center" valign="top"'+cl+'>'+s.tm+'</td>'+'<td width="35%" align="right" valign="top"'+cl+'>'+s.t1+'</td>'+
               '<td width="5%" align="center" valign="top"'+cl+'>-</td>'+'<td width="35%" valign="top"'+cl+'>'+s.t2+'</td>'+
               '<td width="10%" align="center" valign="top"'+cl+' nowrap="nowrap">'+s.sc+'</td></tr>';
    };

    this.claster = function(ttl, d, i, odd, vis)
    {
    	return '<div id="voon_live_'+i+'" style="padding: 5px;'+odd+'">'+
               '<div><span style="font-weight:bold;border-bottom:1px dotted;cursor:pointer;" onclick="window.voonLive.toggle('+i+')" id="voon_ttl_'+i+'">'+ttl+'</span></div>'+
               '<div id="voon_live_'+i+'_info" style="width:100%;display:'+vis+'"><table width="100%" cellspacing="0" cellpadding="3" style="margin-top:4px;'+this.font+'">'+d+'</table></div></div>';
    };

/*
    this.sortAlpha = function()
    {
    	var coo = this.getCoo('voonlive');
    	var r = {}, a = [], b = [], ok , len;
    	for(var i in this.d)
    	{
    	    if (this.filter)
    	    {    	    	ok = false; len = this.filter.length;
    	    	for(var j=0; j<len; j++)
    	    	{    	    		if(i.indexOf(this.filter[j])>-1) {ok = true; break;}    	    	}
    	    	if (!ok) continue;    	    }

    	    if (this.hidden)
    	    {    	    	ok = true; len = this.hidden.length;
    	    	for(var j=0; j<len; j++)
    	    	{    	    		if(i.indexOf(this.hidden[j])>-1) {ok = false; break;}
    	    	}
    	    	if (!ok) continue;
    	    }

    	    if (coo.indexOf(this.cl(i))>-1) a.push(i); else b.push(i);
    	}
    	a.sort(); var len = a.length;
    	for(var i=0; i<len; i++) r[a[i]] = this.d[a[i]];
    	b.sort(); len = b.length;
    	for(var i=0; i<len; i++) r[b[i]] = this.d[b[i]];
    	this.d = r;
    };
*/
    this.localTime = function(t)
    {        t = t.split(' ')[1];
    	var d = parseInt(this.tz);
    	if(d==0) return t;
    	t = t.split(':'); t[0] = t[0] - 0 + d;
    	if (t[0]<0) t[0] += 24;	if (t[0]>23) t[0] -= 24;
    	return t.join(':');
    };

    this.setCoo = function(name, data)
    {
        var expires = new Date();
        expires.setTime(expires.getTime()+24*60*60*1000);
        document.cookie = name + "=" + escape(data) + "; expires=" + expires.toGMTString() + "; path=/";
    };

    this.getCoo = function(name)
    {
        var cookie = ' ' + document.cookie;
        var cname = ' ' + name + '=';
        var from  = cookie.indexOf(cname);
        if ( from != -1 )
        {
            from += cname.length;
            to    = cookie.indexOf(';', from );
            if ( to == -1 )
                to = cookie.length;
            return unescape( cookie.substring(from, to) );
        }
        return '';
    };


    this.toggle = function(num)
    {    	var el = this.$('voon_live_'+num+'_info');
    	if (!el) return;
    	var ttl = this.cl(this.$('voon_ttl_'+num).innerHTML);
    	var coo = this.getCoo('voonlive');
    	if(el.style.display=='none')
    	{
    	    el.style.display = 'block';
    	    if(coo.indexOf(ttl)>-1) return;
    	    this.setCoo('voonlive',coo+ttl);
    	}
    	else
    	{    	    el.style.display = 'none';
    	    if(coo.indexOf(ttl)<0) return;
    	    this.setCoo('voonlive',coo.replace(ttl,''));
    	}
    };

    this.trim = function (s)
    {
        if (!s) return '';
        s = s.replace( /^\s+/g, '');
        return s.replace( /\s+$/g, '');
    };

}

window.voonLive = new CvoonLive(window.voonLiveSettings);
window.voonLive.loadData();
