// JavaScript Document

var radar;
var view = "week";

var akt_jahr = new Date().getFullYear();
var akt_jahr_sel = 0;
var akt_mon = new Date().getMonth()+1;
var akt_mon_sel = 4;
var akt_tag = new Date().getDate();
var akt_wt = new Date().getDay();
var r_set_in;
var r_set_km;
var r_set_line;
var r_set_years = Array();
var r_set_month = Array();
var r_set_text_tage;
var r_set_text_daten;
var r_km_1;
var r_km_2;
var r_km_3;
var r_3 = 260;
var r_2 = r_3/4*3;
var r_1 = r_3/2;
var over_bak;

var r_arr_tage_DE = Array("So","Mo", "Di", "Mi", "Do", "Fr", "Sa");
var r_arr_tage_radien = Array(15,30,45,60,100,140);

var r_arr_monate_DE = Array("", "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez");
var r_arr_monate_radien = Array(15,30,45,60,75,90,105,120,135,150,165);

var r_arr_tage_ang = Array();
var r_arr_strahlen = Array();

var r_arr_radien = Array();
var r_arr_radien_texte = Array();


var color_gray = "#b7b5b8";

var r_rad = 260;
var r_in = 125;
var r_out = 165;
var size_w = 950;
var size_h = 500;
var mid = size_w/2;
var ecke = Math.atan(size_h/mid)/2/Math.PI*360;
var index = 6;
var r_in_1_in = 45;
var r_in_1_out = 80;
var r_in_2_in = 90;
var r_in_2_out = 120;




function loadRadar()
{
	radar.clear();
	r_set_km = radar.set();
	r_set_in = radar.set();
	r_set_line = radar.set();
	r_set_text_daten = radar.set();
	r_set_text_tage = radar.set();
	r_set_years = Array();
	r_set_month= Array();
    r_arr_strahlen = Array();
	r_arr_tage_ang = Array();
		
	if(view == "week")
	{
		r_arr_texte = r_arr_tage_DE;
		r_arr_radien = r_arr_tage_radien;
	}
	
	if(view == "month")
	{
		r_arr_texte = r_arr_monate_DE;
		r_arr_radien = r_arr_monate_radien;
	}
	
	drawRadar();
}
	
function drawRadar()
{

	// Strahlen zeichnen	
	r_arr_radien_texte[0] = r_arr_radien[0]/2;
	for(var i=0;i<r_arr_radien.length-1;i++)
	{
		var r1 = r_arr_radien[i];
		var r2 = r_arr_radien[i+1];
		
		r_arr_radien_texte[i+1] = (r1+r2)/2;
	}
	r_arr_radien_texte[r_arr_radien.length] = (r_arr_radien[r_arr_radien.length-1]+180)/2;
	
	for(var i=0;i<r_arr_radien.length;i++)
	{
		var s_arr = getAngle(r_arr_radien[i]);
		r_arr_strahlen.push(s_arr);
	}
	
	for(var i=0;i<r_arr_radien.length+1;i++)
	{
		if(i<5)
			fillAngle(r_arr_strahlen,i, "white");
		if(i==5)
			fillAngle(r_arr_strahlen,i, "#eee");
		if(i==6)
			fillAngle(r_arr_strahlen,i, "#ddd");
	}

	for(var i=0;i<r_arr_radien.length;i++)
	{
		var s_arr = r_arr_strahlen[i];
		var s = radar.path("M"+s_arr[0]+" "+s_arr[1]+"L"+s_arr[2]+" "+s_arr[3]);
		r_set_line.push(s)
	}


			
	// Ringe zeichnen
	r_km_3 = radar.circle(mid, 0, r_out+r_3);
	r_km_2 = radar.circle(mid, 0, r_out+r_2);
	r_km_1 = radar.circle(mid, 0, r_out+r_1);
	r_set_km.push(r_km_1, r_km_2, r_km_3);
	

	
	// Tage schreiben
	drawTage();
	
	//InnenRinge zeichnen
	r_set_in.push(
		radar.circle(mid, 0, r_in),
		radar.circle(mid, 0, r_out)
	);	
	//Attribute		
	r_set_in.attr({"stroke": color_gray});
	r_set_line.attr({"stroke": color_gray});
	r_set_km.attr({"stroke": color_gray, "stroke-dasharray": "- ", stroke: "#559839"});

	
	//Innenkreis zeichnen
	var c_in = radar.circle(mid, 0, r_in-1);
	c_in.attr({"fill": "#fff", "stroke-opacity":0});
	
	//Auswahlkreise zeichnen
	//Außen
	
	drawMonat();

	//Auswahlkreise zeichnen
	//Innen
	
	drawJahr();
	
	//radar.image("../media/gfx/search/d_top.png", 0,0, size_w,20);
	
							
}

function drawTage()
{
	for(var i=0;i<r_set_text_daten.length;i++)
	{
		r_set_text_daten[i].remove()	
	}
		
	for(var i=0;i<r_set_text_tage.length;i++)
	{
		r_set_text_tage[i].remove()	
	}
		
	r_set_text_tage = radar.set();
	r_set_text_daten = radar.set();
		
	var week = getWeek(akt_jahr, akt_mon, akt_tag);
	
	for(var i=0;i<r_arr_texte.length;i++)
	{
		var t = radar.text(mid, (r_in+r_out)/2-8, r_arr_texte[week[i][1]]);
		var d = radar.text(mid, (r_in+r_out)/2+8, week[i][0]+"."+week[i][2]);
		t.rotate(90-r_arr_radien_texte[i], mid, 0);
		d.rotate(90-r_arr_radien_texte[i], mid, 0);
		r_set_text_daten.push(d);
		r_set_text_tage.push(t);		
	}	
	
	r_set_text_tage.attr({"font-weight": "bold", "font-size": 12, "fill": "#9b9199", "font-family":"Verdana"});
	r_set_text_daten.attr({"font-size": 11, "fill": "#9b9199", "font-family":"Verdana"});
	
}

function getWeek(y, m, t)
{
	var w = Array()
	
	var date = new Date(y,m-1,t);
	var dif  = date.getDay()-1
	
	for(var i=0;i<7;i++)
	{
		var date = new Date(y,m-1,t+i-dif);
		var day = date.getDate();
		var wt  = date.getDay();
		var mon   = date.getMonth()+1;
		if(day < 10)
			day = "0"+day;
		if(mon < 10)
			mon = "0"+mon;	
		
		w[i] = Array(day, wt, mon);
	}
		
	return w;

}

function drawArc(text, r1, r2, a1, a2, q, sel)
{
	if(sel)
	{
		var col_fill = "#9b9199";
		var col_text = "#fff";
	}
	else
	{
		var col_fill = "#e8e8e8";
		var col_text = "#9b9199";
	}
	
	var u_in = 2*Math.PI*r_1;
	var u_out = 2*Math.PI*r_2;
	
	var s_in = 2 //(20)/u_in*360;
	var s_out = 2 //(20)/u_out*360;
	
	if(q == "b" || q == "l")
	{
		w1_in = (a1+s_in)/360*2*Math.PI;
		w1_out = (a1+s_out)/360*2*Math.PI;
	}
	else
	{
		w1_in = (a1)/360*2*Math.PI;
		w1_out = (a1)/360*2*Math.PI;
	}
	
	if(q == "b" || q == "r")
	{
		w2_in = (a2-s_in)/360*2*Math.PI;
		w2_out = (a2-s_out)/360*2*Math.PI;
	}
	else
	{
		w2_in = (a2)/360*2*Math.PI;
		w2_out = (a2)/360*2*Math.PI;		
	}
	
	var p1_x = mid-r1 * Math.cos(w1_in);
	var p1_y = r1 * Math.sin(w1_in);
	
	var p2_x = mid-r2 * Math.cos(w1_out);
	var p2_y = r2 * Math.sin(w1_out);
	
	var p3_x = mid-r2 * Math.cos(w2_out);
	var p3_y = r2 * Math.sin(w2_out);
	
	var p4_x = mid-r1 * Math.cos(w2_in);
	var p4_y = r1 * Math.sin(w2_in);
	

	var path =  "M"+p1_x+" "+p1_y+" ";
		path += "L"+p2_x+" "+p2_y+" ";
		path += "A "+r2+" "+r2+" 1 0 0 "+p3_x+" "+p3_y; 
		path += "L"+p4_x+" "+p4_y+" ";
		path += "A "+r1+" "+r1+" 1 0 1 "+p1_x+" "+p1_y; 
		
	var a = radar.path(path);
	a.attr({"fill": col_fill, "stroke": "none"});
	
	var text = radar.text(mid, (r1+r2)/2, text);
	text.rotate(90-(a1+a2)/2, mid, 0);
	text.attr({"font-weight": "bold", "font-size": 12, "fill": col_text, "font-family":"Verdana"});
	
	return Array(a, text);
}

function fillAngle(arr, i, col)
{
	if(i==arr.length)
	{
		var p1 = arr[i-1];	
	}
	else
		var p1 = arr[i];
	
	var r1 = p1[4];
	
	var svg = "M"+mid+" "+-1;
	svg += " L"+p1[2]+" "+p1[3];
	
	if(i==arr.length)
	{
		
		svg += " L"+size_w+" -1";;	
	
	}
	else if(i==0)
	{
		if(r1>ecke)
		{
			svg += " L"+-1+" "+size_h;
		}
		svg += " L-1 -1";;	
	}
	else
	{
		var p2 = arr[i-1];
		var r2 = p2[4];

		if(r1>ecke && r2<ecke)
		{
			svg += " L"+-1+" "+size_h;
		}
		
		if(r1>180-ecke && r2<180-ecke)
		{
			svg += " L"+size_w+" "+size_h;
		}
		
		svg += " L"+p2[2]+" "+p2[3];;
	}
	
	
	
	var fill = radar.path(svg);
	fill.attr({"fill": col, "stroke-opacity":0});
	
	/*fill.mouseover(function (event) 
	{
		var fill = this.attr("fill");
		if(fill != "")
			this.attr("stroke", "#fff");
    	else
			this.attr("stroke", fill);
		this.attr({fill: "#ccc"})
	});
	
	fill.mouseout(function (event) 
	{
		this.attr({fill: this.attr("stroke")});
	});*/
		
	
}

function getAngle(r)
{
	var q = 1;
	var t = "b";
	
	if(r<ecke)
		t = "l";
	if(r>180-ecke)
		t = "r";
	
	
	
	if(r > 90)
		q =  0;

	w = r/360*2*Math.PI;

	if(q == 1)
		var end_x = -1;
	if(q == 0)
		var end_x = size_w;
	
	if(t == "r" || t == "l")
	{
		if(q == 1)
			var end_y = Math.tan(w)*(mid+1);
		if(q == 0)
			var end_y = Math.tan(-w)*mid;
	}
	
	if(t == "b")
	{
		if(q == 1)
			var end_x = (mid+1)-size_h/Math.tan(w);
			
		if(q == 0)
		{
			var end_x = mid-size_h/Math.tan(w);
		}
			 
		end_y = size_h;
	}
	
	var start_x = mid-r_in * Math.cos(w);
	var start_y = r_in * Math.sin(w);
		
	return Array(start_x, start_y, end_x, end_y, r);
	
}

function drawJahr()
{
	var r1 = r_in_1_in;
	var r2 = r_in_1_out;
	
	for(var i=0;i<r_set_years.length;i++)
	{
		r_set_years[i][0].remove();
		r_set_years[i][1].remove();
	}
	
	for(var i=0;i<3;i++)
	{
		var q = "b";
		
		if(i==0)
			q = "r";
		if(i==2)
			q = "l";
		
		var	r1 = (180/3)*i;
		var	r2 = (180/3)*(i+1);
		var j;
		
		if(-akt_jahr_sel+i == 0)
			j = drawArc(akt_jahr-akt_jahr_sel+i, r_in_1_in, r_in_1_out,  r1, r2, q, true); 
		else
			j = drawArc(akt_jahr-akt_jahr_sel+i, r_in_1_in, r_in_1_out,  r1, r2, q, false);
			
		$(j[0]).attr("id", akt_jahr-akt_jahr_sel+i);
		$(j[1]).attr("id", akt_jahr-akt_jahr_sel+i);
		j[0].click(function() 
		{
			div = akt_jahr - $(this).attr("id");
			akt_jahr = $(this).attr("id");
			akt_jahr_sel -= div;
			drawJahr();
			drawMonat();
			drawTage();
		});
		
		j[1].click(function() 
		{
			akt_jahr = $(this).attr("id");
			drawJahr();
			drawMonat();
			drawTage();
		});
			
			
		r_set_years[i] = j;
	}
}

function drawMonat()
{
	r1 = r_in_2_in;
	r2 = r_in_2_out;
	
	for(var i=0;i<r_set_month.length;i++)
	{
		r_set_month[i][0].remove();
		r_set_month[i][1].remove();
	}
	
	for(var i=0;i<6;i++)
	{
		var q = "b";
				
		var r1 = (180/6)*i;
		var r2 = (180/6)*(i+1);
		
		if(i==0)
			q = "r";
		if(i==5)
			q = "l";
			
		var mon = akt_mon-akt_mon_sel+i+1;
		while(mon<1)
		{
			mon += 12
		}
		while(mon>12)
		{
			mon -= 12
		}
		
		if(mon == akt_mon)	
			m = drawArc(r_arr_monate_DE[mon], r_in_2_in, r_in_2_out,  r1, r2, q, true); 
		else
			m = drawArc(r_arr_monate_DE[mon], r_in_2_in, r_in_2_out,  r1, r2, q, false);
		
		$(m[0]).attr("id", mon);
		$(m[1]).attr("id", mon);
		m[0].click(function() 
		{
			div = akt_mon - $(this).attr("id");
			akt_mon = $(this).attr("id");
			akt_mon_sel -= div;
			drawMonat();
			drawTage();
		});
		
		m[1].click(function() 
		{
			div = akt_mon - $(this).attr("id");
			akt_mon = $(this).attr("id");
			akt_mon_sel -= div;
			drawMonat();
			drawTage();
		});
			
		r_set_month[i] = m;
	}	
}

function search_next(t, v)
{
	if(t == "j")
	{
		akt_jahr_sel +=v;
		drawJahr();
	}
	
	if(t == "m")
	{
		akt_mon_sel +=v;
		drawMonat();
	}

}

