// JavaScript Document
//Kalender Cal_app
//Av Gordito System
//Upphovsman Robin Kochauf

var ie=document.all;
var ns6=document.getElementById&&!document.all;
var n=document.layers;

var MonthNames = new Array("januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december");
var MonthDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var MonthDaysLeap = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
var tmp_DayId = new Array;

var curMonth;
var curYear;

var antalDagM;

// Funktioner

function appCalender(nYear,nMonth,nWeek) {
	
	emptyCal();
	// Hämta första dagen i månaden
	var	mydate = new Date();
	var thisYear;
	var thisMonth;
	
	//Komandon till funktionen
	if (nYear == 'n') {
		thisYear = mydate.getFullYear();
	} else if (nYear == 'f') {
		thisYear = curYear+1;
	} else if (nYear == 'b') {
		thisYear = curYear-1;
	} else if (nYear == 'c') {
		thisYear = curYear;
	} else thisYear = nYear;
	
	if (nMonth == 'n') {
		thisMonth = mydate.getMonth();
	} else if (nMonth == 'f') {
		thisMonth = curMonth+1;
		if (thisMonth == 12) {
			thisMonth = 0;
			thisYear = thisYear+1
		}
	} else if (nMonth == 'b') {
		thisMonth = curMonth-1;
		if (thisMonth == -1) {
			thisMonth = 11;
			thisYear = thisYear-1
		}
	} else if (nMonth == 'c') {
		thisMonth = curMonth;
	} else thisMonth = nMonth;
		
	curMonth = thisMonth;
	curYear = thisYear;
		
	//Räkna ut vilken veckodag som är månades första
	var firstDay = new Date(thisYear,thisMonth,1);
	var firstWeekday = firstDay.getDay();

	//Räkna ut om det är skottår
	var mDays = new Array();
	if (yearCheck(thisYear)) {
		mDays = MonthDaysLeap;
	} else mDays = MonthDays;
	
	antalDagM = mDays[thisMonth];
	//tmp_DayId = '';
	//Fyll i kalendern
	if (firstWeekday == 0) firstWeekday = 7;
	var dCount = 1;
	for (var w_C = 1; w_C <= 6; w_C++) {
		for (var d_C = firstWeekday; d_C <= 7; d_C++) {
			if (dCount <= mDays[thisMonth]) {
				//alert(w_C+'-'+d_C + ' ' + 'den ' + dCount);
				document.getElementById('r'+w_C+'i'+d_C).innerHTML = '<span class=\"cal_num\">' + dCount + "</span><br>";
				tmp_DayId[dCount] = 'r'+w_C+'i'+d_C;
				dCount++;
			} else break;				
		}
		d_C = 0;
		firstWeekday = 1;
	}

	for (var x=0; x<=5; x++) {
		document.getElementById('r'+(x+1)+'_v').innerHTML = (nWeek+x);
	}
	
	
	//Skriv ut år och månad i titeln 
	document.getElementById('cal_title').innerHTML = '<span class=\"cal_text\"><a href=\"?page=cal&date='+b_click+'\" class=\"cal_link\">&lt;&lt;bakåt</a> |&nbsp;&nbsp;&nbsp;<span class=\"cal_title\">' + MonthNames[curMonth] + ' ' + curYear + '</span>&nbsp;&nbsp;&nbsp;| <a href=\"?page=cal&date='+f_click+'\" class=\"cal_link\">framåt&gt;&gt;</a></span>';
	addEvent(nYear,nMonth);
}

function emptyCal() {
	for (var ix = 1; ix <= 6; ix++) {
		for (var iy = 1; iy <= 7; iy++) {
				document.getElementById('r'+ix+'i'+iy).innerHTML = '';
		}
	}
}

function addEvent(nYear,nMonth) {
	//dag = Math.round(dag);
	//return tmp_DayId[dag];
	
	//Endags-event
	var dagStart;
	var dagSlut;
	var dagAntal;
	var startRuta;
	var id_nummer;
	var dagText;
	
	for (var e=0; e < aEvent.length; e++) {
		if (aEvent[e]) {
			// Hämta värden
			id_nummer = aEvent[e].substr(8,5);
			dagStart = aEvent[e].substr(2,2);
			dagSlut = aEvent[e].substr(4,2);
			dagAntal = aEvent[e].substr(0,2);
			startRuta = tmp_DayId[Math.round(dagStart)];
			dagColor = aEvent[e].substr(6,2);
			if (dagSlut<dagStart) dagSlut = antalDagM;
						
			dagText = aEvent[e].substr(13);
			
			var divStringF = "<div id=\"parent_";
			var divStringE = "\" class=\"cal_event"+dagColor+"\" onClick=\"location.href='?page=cal_post&id="+Math.round(id_nummer)+"';\">"+dagText+"</div>";

			// Skriv ut värdet i kalendern för endags-händelser
			if(dagAntal == 1) {
				var divString = divStringF + id_nummer + divStringE;
				document.getElementById(startRuta).innerHTML += divString;
				//meny_attach("parent_"+ id, "info_" + id);
			} else { // OCh för flerdagshändelser
				for (var d = 0; d < dagAntal; d++) {
					var dag = parseInt(dagStart,10)+d;
					var divString = divStringF + id_nummer.toString() + d.toString() + divStringE;
					document.getElementById(tmp_DayId[Math.round(dag)]).innerHTML += divString;
					//meny_attach("parent_"+ id.toString() + d.toString(), "info_" + id.toString());
				}
			}

		}
	}

	//Lägg till inforutor
	for (var e=0; e < aEvent.length; e++) {
		if (aEvent[e]) {
			// Hämta värden
			id_nummer = aEvent[e].substr(8,5);
			dagStart = aEvent[e].substr(2,2);
			dagSlut = aEvent[e].substr(4,2);
			dagAntal = aEvent[e].substr(0,2);
			startRuta = tmp_DayId[Math.round(dagStart)];
			if (dagSlut<dagStart) dagSlut = antalDagM

			// Skriv ut värdet i kalendern för endags-händelser
			if(dagAntal == 1) {
				meny_attach("parent_"+ id_nummer, "info_" + id_nummer);
			} else { // OCh för flerdagshändelser
				for (var d = 0; d < dagAntal; d++) {
					meny_attach("parent_"+ id_nummer.toString() + d.toString(), "info_" + id_nummer.toString());
				}
			}

		}
	}


}

function yearCheck (year) {
		if ((year%400) == 0) {
            return true;
        }
        if ((year%100) == 0) {
            return false;
        }
        if ((year%4) == 0) {
            return true;
        }
        return false;           
}


var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var tempX = 0;
var tempY = 0;
function getMouseXY(e) {
if (IE) { // grab the x-y pos.s if browser is IE
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
}
else {  // grab the x-y pos.s if browser is NS
tempX = e.pageX;
tempY = e.pageY;
}  
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}  
return true;
}


function meny_show_aux(parent, child)
{
  var p = document.getElementById(parent);
  var c = document.getElementById(child);

  c.style.position   = "absolute";
  c.style.visibility = "visible";
  
  if (ie) {
	  c.style.left = tempX+10+"px";
	  c.style.top = tempY+20+document.body.parentNode.scrollTop+"px";
  } else if (ns6 || n) {
	  p.style.cursor = "pointer"; 
	  c.style.left = tempX+10+"px";
	  c.style.top = tempY+20+"px";
  }

}

function meny_show()
{
  p = document.getElementById(this["meny_parent"]);
  c = document.getElementById(this["meny_child" ]);

  meny_show_aux(p.id, c.id);

  clearTimeout(c["meny_timeout"]);

  
}

function meny_hide()
{
  c = document.getElementById(this["meny_child"]);
  
  c["meny_timeout"] = setTimeout("document.getElementById('"+c.id+"').style.visibility = 'hidden';", 20);
}

function meny_attach(parent, child)
{
  p = document.getElementById(parent);
  c = document.getElementById(child);

  p["meny_parent"]     = p.id;
  c["meny_parent"]     = p.id;
  p["meny_child"]      = c.id;
  c["meny_child"]      = c.id;

  c.style.position   = "absolute";
  c.style.visibility = "hidden";
  
  p.onmouseover = meny_show;
  p.onmouseout  = meny_hide;
  p.onmousemove = meny_show;
  c.onmouseover = meny_show;
  c.onmouseout  = meny_hide;
  c.onmousemove = meny_show;

}