document.observe('dom:loaded', function(){
 $$('#graph-tools a').each(function(el){
	el.observe('click', function(ev){
		ev.stop();
	});
 });
});

// metoda ktora zobrazi detail grafu zadaneho media za posledne 4 merane obdobia
function showGraph(uid)
{
	$('pastPeriod').innerHTML = -1;
	
	page = $('actualPageId').firstChild.nodeValue;
	audit = $('actualAudit').firstChild.nodeValue;
	period = $('selectedPeriod').firstChild.nodeValue;
	new Ajax.Request('services/VyvojGrafPercenta.srv',{
			method: 'post',
			parameters: {uid: uid, page:page, audit:audit, period:period},
			
			onSuccess: function(transport)
			{
				eval(transport.responseText);
				if (_da['error']) alert (_da['error']);
				$('detail-grafu').update(_da['response']);
				$('detail-info').update(_da['info']);
				$('right-side').update(_da['rightSide']);
				$('periods-info').update(_da['periodsInfo']);
			},
		
			onFailure: function() {alert("Chyba !");}
		});
		
		scroll($('graph').offsetLeft, $('graph').offsetTop);
	return false;
}

function prevStatsPeriods(title)
{
	if ($('obdobie-' + (title-1)))
	{
		$('obdobie-' + title).style.display = 'none';
		$('obdobie-' + (title-1)).style.display = '';
	}
}

function nextStatsPeriods(title)
{
	if ($('obdobie-' + (title+1)))
	{
		$('obdobie-' + title).style.display = 'none';
		$('obdobie-' + (title+1)).style.display = '';
	}
}

function pastPrevStatsPeriods(title)
{
	if ($('past-obdobie-' + (title-1)))
	{
		$('past-obdobie-' + title).style.display = 'none';
		$('past-obdobie-' + (title-1)).style.display = '';
	}
}

function pastNextStatsPeriods(title)
{
	if ($('past-obdobie-' + (title+1)))
	{
		$('past-obdobie-' + title).style.display = 'none';
		$('past-obdobie-' + (title+1)).style.display = '';
	}
}

function setPastPeriod(pastperiod)
{
	selectedperiod = $('pastPeriod').firstChild.nodeValue;
	
	if (selectedperiod != -1)
	{
		oldperiod = $('past-per-id-' + selectedperiod);
		oldperiod.setAttribute('class', '');
	}
	
	newperiod = $('past-per-id-' + pastperiod);
	newperiod.setAttribute('class', 'a');
	
	$('pastPeriod').innerHTML = pastperiod;
	
	var i;
	periodscount = $('periodsCount').firstChild.nodeValue;
	
	var fakenewperiod = newperiod;
	var a = fakenewperiod.getElementsByTagName("a")[0];
	
	for (i = 1; i <= periodscount; i++)
	{
		$('past-selected-' + i).innerHTML = '<ul><li class="a"><a href="#" onclick="return false;">' + a.innerHTML + '</a></li></ul>';
		$('past-close-' +  i).setAttribute('onclick', 'return closePastPeriods(' + i + ', $("past-per-id-' + pastperiod + '"));');
		$('past-open-' +  i).setAttribute('onclick', 'return openPastPeriods($("past-per-id-' + pastperiod + '"), ' + i + ');');
	}
	
	
	return showPeriodGraph($('selectedPeriod').firstChild.nodeValue);
}

function setAudit(audit)
{
	selectedaudit = $('actualAudit').firstChild.nodeValue;
	oldaudit = $('audit-' + selectedaudit);
	oldaudit.setAttribute('class', '');
	
	var str = oldaudit.innerHTML.toLowerCase();
	str = str.replace('<span', '<a href="#" onclick="return setAudit(' + selectedaudit + ');"');
	str = str.replace('</span>', '</a>');
	oldaudit.innerHTML = str;
	
	newaudit = $('audit-' + audit);
	newaudit.setAttribute('class', 'a');
	
	str = newaudit.innerHTML.toLowerCase();
	str = str.replace('<a href="#" onclick="return setaudit(' + audit + ');"', '<span');
	str = str.replace('</span>', '</a>');
	newaudit.innerHTML = str;
	
	$('actualAudit').innerHTML = audit;
	return showPeriodGraph($('selectedPeriod').firstChild.nodeValue);
}

function showPeriodGraph(period)
{
	selectedperiod = $('selectedPeriod').firstChild.nodeValue;
	oldperiod = $('per-id-' + selectedperiod);
	oldperiod.setAttribute('class', '');
	
	newperiod = $('per-id-' + period);
	newperiod.setAttribute('class', 'a');
	
	var i;
	periodscount = $('periodsCount').firstChild.nodeValue;
	
	var fakenewperiod = newperiod;
	var a = fakenewperiod.getElementsByTagName("a")[0];
	
	for (i = 1; i <= periodscount; i++)
	{
		$('selected-' + i).innerHTML = '<ul><li class="a"><a href="#" onclick="return false;">' + a.innerHTML + '</a></li></ul>';
		$('close-' +  i).setAttribute('onclick', 'return closePeriods(' + i + ', $("per-id-' + period + '"));');
		$('open-' +  i).setAttribute('onclick', 'return openPeriods($("per-id-' + period + '"), ' + i + ');');
	}
	
	// ak mame uz detail nejakeho media
	if ($('select'))
	{
		uid = $('select').value;
	}
	else
	{
		uid = -1;
	}
	page = $('actualPageId').firstChild.nodeValue;
	audit = $('actualAudit').firstChild.nodeValue;
	$('selectedPeriod').innerHTML = period;
	
	var past = false;
	if ($('past'))
	{
		past = $('past').checked;
	}
	
	pastperiod = $('pastPeriod').firstChild.nodeValue;
	
	
	if (uid != -1)
	{
		// graf vybraneho media podla obdobia
		new Ajax.Request('services/VyvojGrafVybrateObdobie.srv',{
			method: 'post',
			parameters: {uid: uid, period: period, page:page, audit:audit, past:past, pastPeriod:pastperiod},
			
			onSuccess: function(transport)
			{
				eval(transport.responseText);
				if (_da['error']) alert (_da['error']);
				$('detail-grafu').update(_da['response']);
				$('periods-info').update(_da['periodsInfo']);
				$('detail-info').update(_da['info']);
				$('foot').update(_da['source']);
			},
		
			onFailure: function() {alert("Chyba !");}
		});
	}
	else
	{
		// graf vsetkych medii daneho typu (podla stranky na ktorej sme)
		new Ajax.Request('services/VyvojGrafCelokVybrateObdobie.srv',{
			method: 'post',
			parameters: {period: period, page:page, audit:audit, past:past},
			
			onSuccess: function(transport)
			{
				eval(transport.responseText);
				if (_da['error']) alert (_da['error']);
				$('detail-grafu').update(_da['response']);
				$('periods-info').update(_da['bottomTable']);
				$('foot').update(_da['source']);
			},
		
			onFailure: function() {alert("Chyba !");}
		});
	}
	
	return false;
}

function htmlspecialchars(p_string) {
	p_string = p_string.replace(/&/g, '&amp;');
	p_string = p_string.replace(/</g, '&lt;');
	p_string = p_string.replace(/>/g, '&gt;');
	p_string = p_string.replace(/\"/g, '&quot;');
	//p_string = p_string.replace(\'/g, '&#039;');
	return p_string;
};

// metoda na vlozenie kodu do inputu z ktoreho si ho user moze skopirovat
function insertOnPage()
{
	var graf;
	var span;
	grafdiv = $('detail-grafu');

	divik = grafdiv.getElementsByTagName("div")[0];
	graf = divik.innerHTML;
	
	$('div-vlozit-graf').style.display = $('div-vlozit-graf').style.display == 'none' ? '' : 'none';
	$('vlozit-graf').value = resizeEmbed(graf);
	return false;
}

// hifox - zmeni velkost vlozeneho grafu
function resizeEmbed(embed) {
    pattern = '<[e,E][m,M][b,B][e,E][d,D](.*?)(width="(.*?)" height="(.*?)")(.*?)>(.*?)';
    pole = embed.match(pattern);
    new_sirka = 500;
    
    //ak nastala zhoda s patternom
    if(pole) {
        sirka = pole[3];
        vyska = pole[4];        
        
        new_vyska = Math.round(vyska * new_sirka / sirka);
        
        attr = 'width="' + new_sirka + '" height="' + new_vyska + '"';
        
        //ak su rozmery korektne, prepise ich
        if(vyska && sirka) {
            embed = embed.replace(pole[2], attr) + '</embed>';
        }
    } else {
        //inac testuje dalsiu zhodu
        patternIE = '<[o,O][b,B][j,J][e,E][c,C][t,T](.*?)(width=(.*?) height=(.*?)>)(.*?)</[o,O][b,B][j,J][e,E][c,C][t,T]>';
        pole = embed.match(patternIE);
        
        //ak nastala ina zhoda
        if(pole) {
            sirka = pole[3];
            vyska = pole[4];        
            
            new_vyska = Math.round(vyska * new_sirka / sirka);
            
            attr = 'width="' + new_sirka + '" height="' + new_vyska + '"';
            //ak su rozmery korektne, prepise ich
            if(vyska && sirka) {
                embed = embed.replace(pole[2], attr);
            }    
        }
    }
    
    return embed;
}
// @hifox


// metoda na vlozenie linku na graf do inputu z ktoreho si ho user moze skopirovat
function insertLink()
{
	var page = $('actualPageId').firstChild.nodeValue;
	var audit = $('actualAudit').firstChild.nodeValue;
	var subject;
	if ($('select'))
	{
		subject = $('select').value;
	}
	else
	{
		subject = -1;
	}
	var period = $('selectedPeriod').firstChild.nodeValue;
	var past = false;
	if ($('past'))
	{
		past = $('past').checked;
	}
	var pastperiod = $('pastPeriod').firstChild.nodeValue;
	
	new Ajax.Request('services/GrafInsertLink.srv',{
		method: 'post',
		parameters: {page:page, audit:audit, subject:subject, period:period, past:past, pastperiod:pastperiod},
		
		onSuccess: function(transport)
		{
			eval(transport.responseText);
			if (_da['error']) alert (_da['error']);
			$('div-vlozit-link').style.display = $('div-vlozit-link').style.display == 'none' ? '' : 'none';
			$('vlozit-link').value = (_da['link']);
		},
	
		onFailure: function() {alert("Chyba !");}
	});
	
	return false;
}

// metoda na vytlacenie grafu a tabulky - TODO
function printChartAndTable()
{
	var graph = getChartFromId("undefined");
	graph.print();
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele, cls) {
	if (!hasClass(ele,cls)) ele.className += " "+cls;
}
 
function removeClass(ele, cls) {
	if (hasClass(ele,cls)) {
    	var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

function closePeriods(add, rem)
{
	$('selected-' + add).style.display = '';
	addClass($('obdobie-' + add), 'browser-close');
	removeClass(rem, 'a');
	return false;
}

function openPeriods(add, rem)
{
	$('selected-' + rem).style.display = 'none';
	removeClass($('obdobie-' + rem), 'browser-close');
	addClass(add, 'a');
	return false;
}

function closePastPeriods(add, rem)
{
	$('past-selected-' + add).style.display = '';
	addClass($('past-obdobie-' + add), 'browser-close');
	removeClass(rem, 'a');
	return false;
}

function openPastPeriods(add, rem)
{
	$('past-selected-' + rem).style.display = 'none';
	removeClass($('past-obdobie-' + rem), 'browser-close');
	addClass(add, 'a');
	return false;
}
