var votedfor=0;
var justvoted=0;

var pocet=20;
var uid=0;

var anketa_timeout=1000; var anketa_maxticks=20; 

var startRed=new Array(pocet+1);
var startGreen=new Array(pocet+1);
var startBlue=new Array(pocet+1);
var endRed=new Array(pocet+1);
var endGreen=new Array(pocet+1);
var endBlue=new Array(pocet+1);
var timers=new Array(pocet+1);
var ticks=new Array(pocet+1);
var dir=new Array(pocet+1);
var votes=new Array(pocet+1);

var i;

ticks[0]=0;
dir[0]=1;
startRed[0]="CF"; startGreen[0]="CF"; startBlue[0]="CF";
endRed[0]="A0"; endGreen[0]="C0"; endBlue[0]="F0";

for (i=1;i<=pocet;i++) {
	dir[i]=1;
	ticks[i]=0;
	startRed[i]="EF"; startGreen[i]="EF"; startBlue[i]="EF";
	endRed[i]="B0"; endGreen[i]="C0"; endBlue[i]="F0";
}

function hexmean(hex1, hex2, step, steps) {
	result=Math.round((parseInt(hex1,16)+(parseInt(hex2,16)-parseInt(hex1,16))/steps*step));
	result=Math.min(Math.max(result,0),255);
	result=result.toString(16);
	if (result.length==1) return "0"+result;
	return result;
}

function blink(who,id) {
	ticks[id]=ticks[id]+dir[id];
	if (ticks[id]>=0 && ticks[id]<=anketa_maxticks+1) {
		var elements=new Array();
		elements=who.split(":");
		for (i=0;i<elements.length;i++) {
			var el=document.getElementById(elements[i]);
			el.style.backgroundColor = "#"+hexmean(startRed[id],endRed[id],ticks[id],anketa_maxticks) +hexmean(startGreen[id],endGreen[id],ticks[id],anketa_maxticks)	+hexmean(startBlue[id],endBlue[id],ticks[id],anketa_maxticks);
		}
		timers[id] = setTimeout("blink('"+who+"',"+id+")", anketa_timeout/anketa_maxticks);
	} 
}
function fadein(who,id) {
	dir[id]=1;
	clearTimeout(timers[id]);
	blink(who,id);	
}
function fadeout(who,id) {
	dir[id]=-1;
	clearTimeout(timers[id]);
	blink(who,id);	
}
function ReDraw() {
	for (i=1;i<=pocet;i++) {
		var el_pocet=document.getElementById("pocet-"+i);
		el_pocet.innerHTML=votes[i];
		var el_bar=document.getElementById("bar-"+i);
		el_bar.style.width=Math.max(0.5,Math.round(votes[i]/votes[0]*100))+"%";
	}
}
function fakevote(whatfor) {
	votedfor=whatfor;
	for (i=1;i<=pocet;i++) {
		var odpoved=document.getElementById("odpoved-"+i);
		if (odpoved) {
			setClass(odpoved,"anketa-odpoved",i);
			if (i==whatfor) {
				endRed[i]="AA"; endGreen[i]="CB"; endBlue[i]="DF";
			} else {
				endRed[i]="CC"; endGreen[i]="CC"; endBlue[i]="CC";
			}
		}
	}
	RefreshPage();
}
function vote(whatfor) {
	if (!votedfor) {
		justvoted=1;
		fakevote(whatfor);
	} else {
		var el=document.getElementById("refreshing");
		el.innerHTML="Již jsi hlasoval/a, zkus to znova později...";
		el.style.visibility="visible";
		setTimeout("HideRefreshing()",3000);
	}

}

function setClass(where,what,mangle) {
	if (votedfor && mangle) {
		if (votedfor==mangle) {
			what=what+"-votedthis";
		} else {
			what=what+"-voted";
		}
	}
	where.className=what;
}

function getHTTPObject() { 
	var xmlhttp; 
	/*@cc_on 
	  @if (@_jscript_version >= 5) 
	  try { 
	  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
	  } catch (e) { 
	  try { 
	  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	  } catch (E) { 
	  xmlhttp = false; 
	  } 
	  } 
	  @else 
	  xmlhttp = false; 
	  @end @*/  
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { 
		try { 
			xmlhttp = new XMLHttpRequest(); 
		} catch (e) { 
			xmlhttp = false; 
		} 
	} 
	return xmlhttp; 
} 
var http = getHTTPObject(); // We create the HTTP Object 

function HideRefreshing() {
	var el=document.getElementById("refreshing");
	el.style.visibility="hidden";

}
function handleHttpResponse() {
	if (http.readyState == 4) {
		var el=document.getElementById("refreshing");
		var odpoved=http.responseText;
		var response_new=/^new/;
		if (response_new.test(odpoved)) {
			//existuje nová anketka
			el.innerHTML="Byla zadána nová anketka, nahrajte stránku znova.";
		} else {
			var pocty=new Array();
			pocty=odpoved.split(":");
			if (pocty.length!=pocet) {
				alert("Wrong server response!\n"+odpoved+"\n"+pocet);
			}
			votes[0]=0;
			for (i=0;i<pocet;i++) {
				votes[i+1]=pocty[i]*1;
				votes[0]=Math.max(votes[0],votes[i+1]);
			}
			if (justvoted) {
				justvoted=0;
				el.innerHTML="Díky za hlas, bylo zaznamenáno...";
				setTimeout("HideRefreshing()",2000);
			} else {
				el.innerHTML="OK. Data nahrána ze serveru.";
				setTimeout("HideRefreshing()",1000);
			}
		}
		ReDraw();
	}
}
function RefreshPage() {
	var el=document.getElementById("refreshing");
	if (el) {
		el.innerHTML="Nahrávám data ze serveru...";
		el.style.visibility="visible";
	} else {
	}
	if (justvoted) {
		url="anketa_backend.php?aid="+uid+"&votefor="+votedfor;
	} else {
		url="anketa_backend.php?aid="+uid;
	}
	http.open("GET", url, true);
	http.onreadystatechange = handleHttpResponse;
	http.send(null);

	setTimeout("RefreshPage()",5*60*1000);

}
function StartPage(pvoted,puid,ppocet) {
	uid=puid;
	votedfor=pvoted;
	pocet=ppocet;
	if (votedfor) {
		justvoted=false;
		fakevote(votedfor);
	} else {
		RefreshPage();
	}
}

