
function loadCalEvents(m, y)
{
    for(i=0; i<32; i++) {
	CalEvents[i] = null;
    }
    CalEvents[2] = 'Hoppe i havet';
    CalEvents[12] = 'Hoppe i havet';
    CalEvents[22] = 'havet Hoppe i';
}

function monthName(m)
{
    var mn = new Array('Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember');
    return mn[m];
}
     
     function daysInMonth(m, y)
{
    if(m==0||m==2||m==4||m==6||m==7||m==9||m==11)
	return 31;
    else if(m==1)
	return 28;
    return 30;
}

function drawCal(m, y)
{
    cur_m = m;
    cur_y = y;
    getCalData(y, m);
}

function drawCalX()
{
    m = cur_m;
    y = cur_y;
    
    // loadCalEvents(m, y);
    var iH = '<table border=0 cellspacing=2 cellpadding=1 >';
    
    ny = y; py = y; nm = m+1; pm=m-1;
    if(pm < 0) {
	pm=11;
	py--;
    }
    if(nm > 11) {
	nm = 0;
	ny++;
    }
    
    iH += '<tr><td colspan=7 align="center" class="cal_month"><a href="javascript:drawCal(' + pm + ', ' + py + ');" title="Forrige måned" class="lenke">««</a>&nbsp;' + monthName(m) + '&nbsp;<a href="javascript:drawCal(' + nm + ', ' + ny + ');" title="Neste måned" class="lenke">»»</a></td></tr>';
    iH += '<tr><td class="cal_day">Ma</td><td class="cal_day">Ti</td><td class="cal_day">On</td><td class="cal_day">To</td><td class="cal_day">Fr</td><td class="cal_day">Lø</td><td class="cal_day">Sø</td></tr><tr>';
    var oD = new Date(y, m, 1);
    var dow = oD.getDay();
    if(dow==0)
	dow=6;
    else
	dow--;
    
    for(i=0; i<dow; i++){
	iH += '<td class="cal_none">&nbsp;</td>';
    }
    dim=daysInMonth(m, y);
    for(d=1; d<=dim; d++) {
	if((d-1 + dow)%7==0) {
	    iH += '</tr><tr>';
	}
	if(CalEvents[d] == null) {
	    iH += '<td class="cal_date">' + d + '</td>';
	}
	else {
	    iH += '<td class="cal_ev" id="cal_day_' + d + '" onMouseOver="showCalEvent(' + d + ');" onMouseOut="hideCalEvent();">' + d + '</td>';
	}
	
    }
    while((d-1 + dow)%7!=0) {
	iH += '<td class="cal_none">&nbsp;</td>';
	d++;
    }
    iH += '</tr></table>';
    document.getElementById('calendar').innerHTML = iH;
   
}

function hideCalEvent()
{
    var o = document.getElementById('cal_event');
    o.style.visibility = 'hidden';
}

function showCalEvent(d)
{
   var o = document.getElementById('cal_event');
   
   var o0 = document.getElementById('left_column');
   var o1 = document.getElementById('cal_table');
   var o2 = document.getElementById('calendar');
   var o3 = document.getElementById('cal_day_' + d);
   var ot = document.getElementById('cal_event_val');
   ot.innerHTML = CalEvents[d];
   o.style.top = (o0.offsetTop + o1.offsetTop + o2.offsetTop + o3.offsetTop ) + 'px';
   o.style.left = (o0.offsetLeft + o1.offsetLeft + o2.offsetLeft + o3.offsetLeft + 35) + 'px';
   o.style.visibility = 'visible';  
}


/**
 * @link: http://www.w3schools.com/ajax/ajax_source.asp
 * @author Refsnes Data
 * @created 2006-09-27 11:42
 */
function getXmlHttpObject()
{
    var objXMLHttp=null;
    if (window.XMLHttpRequest) {
        objXMLHttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return objXMLHttp;
}

function getCalData(y, m)
{
    oXmlHttp = getXmlHttpObject();
    var url=url_get;
    if(oXmlHttp == null) {
        // alert('XML HTTP object not supportet by browser');
        return;
    }
    m++;
    if(y < 2000) y += 1900;
    url = url + '?y=' + y + '&m=' + m;
    //  alert(url);
    oXmlHttp.onreadystatechange=popCalData;
    oXmlHttp.open("GET",url,true);
    oXmlHttp.send(null);
    return;
}

function popCalData()
{
    var xml;
   for(i=0; i<32; i++) {
	CalEvents[i] = null;
    }
     if(oXmlHttp.readyState==4 || oXmlHttp.readyState=="complete") {
	if (typeof(DOMParser) == "undefined") {
	    xml = new ActiveXObject("Microsoft.XMLDOM");
	    xml.async = false;
	    xml.loadXML(oXmlHttp.responseText);
	}
	else {
	    xml = (new DOMParser()).parseFromString(oXmlHttp.responseText, "text/xml");
	}
        // var doc = parser.parseFromString(oXmlHttp.responseText,"text/xml");
        //        alert(oXmlHttp.responseText);
        var x=xml.documentElement;
        for (var i=0;i<x.childNodes.length;i++) {
	    // alert(x.childNodes[i].nodeName);
            if(x.childNodes[i].nodeName == "item") {
		d = 0;
		e = '';
		t = '';
		s = '';
		for(var j=0; j < x.childNodes[i].attributes.length; j++) {
		     if(x.childNodes[i].attributes[j].name == 'd') {
			 d = x.childNodes[i].attributes[j].value;
		     }
		     if(x.childNodes[i].attributes[j].name == 'e') {
			 e = x.childNodes[i].attributes[j].value;
		     }
		     if(x.childNodes[i].attributes[j].name == 't') {
			 t = x.childNodes[i].attributes[j].value;
		     }
		     if(x.childNodes[i].attributes[j].name == 's') {
			 s = x.childNodes[i].attributes[j].value;
		     }
              
		}
		//	alert(s);
		if(CalEvents[d] == null) {
		    CalEvents[d] = '<b>' + t + '</b><br />' + s;
		}
		else
		    CalEvents[d] += '<hr /><b>' + t + '</b><br />' + s;
		// alert(d + CalEvents[d]);
	    }
            //    x.childNodes[i].childNodes.length > 0) {
            //     loadAlbumNodes(x.childNodes[i].childNodes);
            // }
            //alert(x.childNodes[i].nodeName);
            //   document.write("=");
            //   document.write(x.childNodes[i].childNodes[0].nodeValue);
            //   document.write("<br />");
        }
    }
     drawCalX();
}
