function odpowiedz(i,t,c)
{
    var id=i
    var tekst=t;
    var ile=c;
    this.get_id=function() {return id}
    this.get_tekst=function() {return tekst}
    this.get_ile=function() {return ile}
    this.inc_ile=function() {ile++}
}

function kolor(r,g,b)
{
	function max_3(a,b,c)
	{
			return Math.max(a,Math.max(b,c));
	}
	function min_3(a,b,c)
	{
  			return Math.min(a,Math.min(b,c));
		}

	function RGB_2_HSL(red,green,blue)
	{
			var r=red/255;
			var g=green/255;
			var b=blue/255;
			var I=0;
			var F=0;
			var x=min_3(r,g,b);
			var v=max_3(r,g,b);
            var s=0;
			if(v==x) return new Array(0,0,v);
			if(r==x)
    		{
      			F=g-b;
      			I=3;
    		}
			else if(g==x)
    		{
        		F=b-r;
        		I=5;
      		}
			else
    		{
        		F=r-g;
        		I=1;
      		}
            if((v+x)<=1) s=(v-x)/(v+x);
            else s=(v-x)/(2-v-x);
			return new Array(I - F /(v-x),s,(v+x)/2);
	}

	function HSL_2_RGB(hsl)
	{
        if(hsl[2]==0) return new Array(0,0,0);
        if(hsl[1]==0) return new Array(Math.round(255*hsl[2]),Math.round(255*hsl[2]),Math.round(255*hsl[2]));
        hsl[0]=Math.round(hsl[0])/6;
        var q=0;
        if(hsl[2]<=0.5) q=hsl[2]*(hsl[1]+1);
        else q=hsl[2]+hsl[1]-(hsl[2]*hsl[1]);

        var p=2*hsl[2]-q;
        var t3=new Array(hsl[0]+1/3,hsl[0],hsl[0]-1/3);
        var clr=new Array(0,0,0);

        for(var i=0;i<3;i++)
        {
         if(t3[i]<0) t3[i]+=1;
         if(t3[i]>1) t3[i]-=1;
         if(6*t3[i] < 1) clr[i]=p+(q-p)*t3[i]*6;
         else if(2*t3[i] < 1) clr[i]=q;
         else if(3*t3[i] < 2) clr[i]=(p+(q-p)*((2/3)-t3[i])*6);
         else clr[i]=p;
        }

        return new Array(Math.round(255*clr[0]),Math.round(255*clr[1]),Math.round(255*clr[2]));

	}
    function d2h(d)
    {
        var str=d.toString(16);
        if(str.length<2) return '0'+str;
        return str;
    }
	this.mojkolor=function()
	{
		return 'rgb('+r+','+g+','+b+')';
	}
    this.htmlkolor=function()
    {
        return '#'+d2h(r)+d2h(g)+d2h(b);
    }
	this.tuned=function(stopien)
	{
		var x=RGB_2_HSL(r,g,b);
        x[2]+=x[2]*stopien;
        if(x[2]<0) x[2]=0;
        else if(x[2]>1) x[2]=1;
        x=HSL_2_RGB(x);
        return 'rgb('+x[0]+','+x[1]+','+x[2]+')';
	}
}

function graf(tablica,glosy,ss)
{
    var canvas = document.getElementById('canvas');
    if(!canvas) return false;

    if ($.browser.msie) canvas=G_vmlCanvasManager.initElement(canvas);
    var ctx = canvas.getContext('2d');
    if(!ctx) return false;

    var kolory=new Array();

    kolory.push(new kolor(170,10,10));
    kolory.push(new kolor(10,150,10));
    kolory.push(new kolor(50,20,200));
    kolory.push(new kolor(200,100,0));
    kolory.push(new kolor(120,0,100));
    kolory.push(new kolor(80,10,10));
    kolory.push(new kolor(40,110,80));
    kolory.push(new kolor(85,110,180));
    kolory.push(new kolor(210,50,210));
    kolory.push(new kolor(80,80,80));

    var szer=canvas.width-1;
    var wys=canvas.height-1;
    var glebia=Math.round(szer/30);
    var siatka=Math.round((szer-glebia)/tablica.length);
    var odstep=Math.ceil(szer/70);

    var max=0;
    var sum=0;

    function slupek(n)
    {
    	var temp_wys=0;
        if(max>0) temp_wys=Math.round(tablica[n].get_ile()*(wys-glebia-glebia/2)/max);
	    var lingrad = ctx.createLinearGradient(siatka*n+odstep,wys-temp_wys,siatka*n+siatka-odstep,wys);
        var kn=n%kolory.length;
        lingrad.addColorStop(0, kolory[kn].tuned(0.6));
	    lingrad.addColorStop(0.4, kolory[kn].mojkolor());
	    //lingrad.addColorStop(0.8, kolory[n].mojkolor());
	    lingrad.addColorStop(1, kolory[kn].tuned(-0.5));

        ctx.fillStyle=lingrad;
        ctx.fillRect(siatka*n+odstep,wys-temp_wys,siatka-2*odstep,temp_wys);
        ctx.strokeStyle=kolory[kn].mojkolor();
        ctx.beginPath();
        ctx.moveTo(siatka*n+odstep+glebia,wys-temp_wys-glebia);
        ctx.lineTo(siatka*n+siatka-odstep+glebia,wys-temp_wys-glebia);
        ctx.lineTo(siatka*n+siatka-odstep+glebia,wys-glebia);
        ctx.lineTo(siatka*n+siatka-odstep,wys);
        ctx.lineTo(siatka*n+odstep,wys);
        ctx.lineTo(siatka*n+odstep,wys-temp_wys);
        ctx.closePath();
        ctx.stroke();

        lingrad=ctx.createLinearGradient(siatka*n+odstep,wys-temp_wys,siatka*n+siatka-odstep,wys-temp_wys-glebia);
        lingrad.addColorStop(0, kolory[kn].tuned(0.7));
	    lingrad.addColorStop(1, kolory[kn].tuned(0.1));

        //ctx.fillStyle=kolory[n].tuned(0.6);
        if($.browser.opera) ctx.fillStyle=kolory[kn].tuned(0.6);
        else ctx.fillStyle=lingrad;
        ctx.beginPath();
        ctx.moveTo(siatka*n+odstep,wys-temp_wys);
        ctx.lineTo(siatka*n+odstep+glebia,wys-temp_wys-glebia);
        ctx.lineTo(siatka*n+siatka-odstep+glebia,wys-temp_wys-glebia);
        ctx.lineTo(siatka*n+siatka-odstep,wys-temp_wys);
        ctx.fill();

        lingrad=ctx.createLinearGradient(siatka*n+siatka-odstep,wys-temp_wys,siatka*n+siatka-odstep,wys-temp_wys+siatka);
        lingrad.addColorStop(1, kolory[kn].tuned(-0.5));
	    lingrad.addColorStop(0, kolory[kn].tuned(-0.1));

        if($.browser.opera) ctx.fillStyle=kolory[kn].tuned(-0.6);
        else ctx.fillStyle=lingrad;
        ctx.beginPath();
        ctx.moveTo(siatka*n+siatka-odstep,wys);
        ctx.lineTo(siatka*n+siatka-odstep+glebia,wys-glebia);
        ctx.lineTo(siatka*n+siatka-odstep+glebia,wys-temp_wys-glebia);
        ctx.lineTo(siatka*n+siatka-odstep,wys-temp_wys);
        ctx.fill();
    }

    this.detektor=function(event)
    {
        var offset=event.pageX - $('#canvas').offset().left;
        var reszta=offset%siatka;
        if(reszta<odstep || reszta>siatka-odstep) return -1;
        var przedzial=Math.floor(offset/siatka);
        if(przedzial>=tablica.length) return -1;

        offset=event.pageY - $('#canvas').offset().top;
        var temp_wys=0;
        if(max>0) temp_wys=Math.round(tablica[przedzial].get_ile()*(wys-glebia-glebia/2)/max);
        if(offset<wys-temp_wys-glebia) return -1;

        return przedzial;
    }

    for(var i=0;i<tablica.length;i++)
    {
	    sum+=tablica[i].get_ile();
    	if(tablica[i].get_ile()>max) max=tablica[i].get_ile();
    }

    $('#legenda').empty();
    ctx.clearRect(0,0,canvas.width,canvas.height);
    ctx.strokeStyle='rgb(250,250,250)';
    ctx.fillStyle='rgb(200,200,200)';
    ctx.fillRect(glebia,1,szer-glebia,wys-glebia);
    ctx.strokeRect(glebia,1,szer-glebia,wys-glebia);

    ctx.beginPath();
    ctx.moveTo(glebia,wys-glebia);
    ctx.lineTo(0,wys);
    ctx.lineTo(szer-glebia,wys);
    ctx.lineTo(szer+1,wys-glebia);
    ctx.closePath();
    ctx.fill();
    ctx.stroke();

    ctx.strokeStyle='rgb(220,220,220)';
    var kloc=Math.ceil((wys-glebia)/10);
    var sroc=Math.ceil((szer-glebia)/10);
    for(var i=0;i<10;i++)
    {
        ctx.beginPath();
        ctx.moveTo(glebia,kloc*i);
        ctx.lineTo(szer,kloc*i);
        ctx.stroke();

        ctx.beginPath();
        ctx.moveTo(glebia+sroc*i,0);
        ctx.lineTo(glebia+sroc*i,wys-glebia);
        ctx.stroke();
    }

    wys-=2;
    glebia-=2;

    var procent='';

    if(glosy) $('#legenda').append('<form id="glosowator" action="/engine/ankieter.php" method="post"><input type="hidden" name="nr_ankiety" id="ankietaglosowalna" value="'+ankieta_wybrana+'" /></form>');

    for(var i=0;i<tablica.length;i++)
    {
        slupek(i);
        if(sum==0) procent='0%';
        else procent=Math.round(100*tablica[i].get_ile()/sum)+'%';
        if(glosy)
        {
            if(i==Math.round(tablica.length/2)) c='checked="true"';
            else c='';
            $('#legenda').append('<div class="leg" style="left:'+(i*siatka+Math.round(siatka/3)+odstep)+'px">'+procent+'</div>');
            $('#glosowator').append('<div class="opis"><label><input type="radio" name="glos" '+c+' value="'+tablica[i].get_id()+'"><span style="border-color:'+kolory[i].htmlkolor()+'">'+tablica[i].get_tekst()+'</span></label></div>');
        }
        else
        {
            $('#legenda').append('<div class="leg" style="left:'+(i*siatka+Math.round(siatka/3)+odstep)+'px">'+procent+'</div>');
            $('#legenda').append('<div class="opis"><span style="border-color:'+kolory[i%kolory.length].htmlkolor()+'">'+tablica[i].get_tekst()+'</span></div>');
        }
    }
    if(glosy && ss) $('#glosowator').append('<input type="submit" value="głosuj" class="button" />');
    $('canvas').bind('mousemove',function(e) {
        if(!Objgraf) return false;
        $('#legenda').find('div.opis').removeClass('pod');
        if(Objgraf.detektor(e)>-1)
        {
            $('#legenda').find('div.opis').eq(Objgraf.detektor(e)).addClass('pod');
        }
    });
    $('canvas').mouseout(function() {$('#legenda').find('div.opis').removeClass('pod');})
}