///////////////////////////////////////////////////////////////////////
//                                                                   //
//    Viser en dynamisk kalender, der ved                            //
//    klik på en dato indsætter denne i et angivet                   //
//    input-felt i en html-formular                                  //
//                                                                   //
//    Kalenderen kaldes med                                          //
//    showCal(navn_på_input_field);                                  //
//                                                                   //
//    Nederst i sidens body anbringes følgende:                      // 
//    <div id='cal' class='calDiv'></div>                            //
//                                                                   //
//    Kim Bak Sep. 2002                                              //
//    Last update 20-01-2008                                         //
//                                                                   //
///////////////////////////////////////////////////////////////////////

// Initialistering
idag = new Date();
strToday = idag.getDate() + "-" + (idag.getMonth()+1) + "-" + idag.getFullYear();
globalM = idag.getMonth() + 1;
globalY = idag.getFullYear();
monthname = new Array("Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December");
shortMonthname = new Array("J","F","M","A","M","J","J","A","S","O","N","D");

function dateAdd(dato,i) {
    var count = i * 3600000 * 24;
    var tempDate = new Date(dato);
    var buffer = Date.parse(tempDate);
    buffer += count;
    var newDate = new Date(buffer);
    return newDate;
}

function grabDate(dato,fFelt, maaned, aar){
   document.getElementById(fFelt).value = dato;
   document.getElementById(fFelt).select();
   if(fFelt=="ankomst"){
      changeCal("afrejse", maaned + 1, aar, "cal2");
   }
}

function showCal(fFelt, divName){
   var tmpM, tmpY;
   var str = "";
   var thisM = globalM;
   var thisY = globalY;
   if(document.getElementById(fFelt).value != ''){
      dArray = document.getElementById(fFelt).value.split("-");
      if(dArray.length == 3){
         tmpM = parseInt(dArray[1]);
         tmpY = dArray[2];
         if(tmpM > 0 && tmpM <=12 && tmpY > 1000 && tmpY < 3000){
            thisM = tmpM;
            thisY = tmpY;
         }
      }
   }
   str = calHead(fFelt, thisM, thisY, divName);
   getCal = makeCal(thisM,thisY,fFelt);
   document.getElementById(divName).innerHTML = str + getCal;
}

function changeCal(fFelt, maaned, aar, divName){
   getCal = makeCal(maaned,aar,fFelt);
   str = calHead(fFelt, maaned, aar, divName);
   document.getElementById(divName).innerHTML = str + getCal;
}


function makeCal(maaned, aar, fFelt){
   var myCal = "";
   var myStrDate;
   myDate = new Date(aar, maaned - 1, 1);   // første  dag i den valgte måned
   myWeekday = myDate.getDay();
   if(myWeekday == 0){ myWeekday = 7; }

   // Find mandag i månedens første uge
   nextDate = dateAdd(myDate,-(myWeekday - 1));

   myCal += "<table width='100%' style='border-width:0px; width:100%;' cellspacing=0>";
   for(u=0;u<6;u++){
      myCal += "<tr>";
      for(i=0;i<7;i++){
         myStrDate = nextDate.getDate() + "-" + (nextDate.getMonth()+1) + "-" + nextDate.getFullYear();
         if( nextDate.getMonth()==(maaned - 1) && (nextDate > idag) ){
            var nextM = nextDate.getMonth();
            var nextY = nextDate.getFullYear();

            myCal += "<td class='calCell' ";

            //markér dags dato
            if(myStrDate == strToday){
               myCal += "id='calTodayCell' ";
            }
            myCal += "onMouseover='this.style.backgroundColor=" + '"#F0F0F0";' + "'";
            myCal += " onMouseOut='this.style.backgroundColor=" + '"#FFFFFF";' + "'";
            myCal += " onClick ='grabDate(" + '"' + myStrDate + '","' + fFelt + '"' + "," + nextM + "," + nextY + ");'>" + nextDate.getDate() + "</td>";
         }
         else if(myStrDate == strToday){
            myCal += "<td id='calTodayCell'>";
            myCal += nextDate.getDate() + "</td>";
         }
         else {
            myCal += "<td class='disCalCell'>";
            myCal += nextDate.getDate() + "</td>";
         }

         nextDate = dateAdd(nextDate, 1);
      }
      myCal += "</tr>";
      if(nextDate.getMonth() >= maaned) { break; }
   }
   myCal += "</table>";
   return myCal;
}

function calHead(fFelt,maaned,aar, divName){
   globalM = maaned;
   globalY = aar;
   var myCal = "<table style='border-width:0px;width:100%;' cellspacing='0' margin='0'>" +
               "<tr><td style='padding:0px;' colspan='7'><table width='100%'><tr>";

   for(var i = 1; i < 13; i++){
      myCal += "<td class='calHead'><a class='calHeadLink' href='#' " + 
               "onClick='changeCal(" + '"' + fFelt + '",' + i + ", " + aar + "," + '"' + divName + '"' + ");return false;'>" + shortMonthname[i-1] + "</a></td>";
   }

   myCal += "</tr></table></td></tr><tr>";
   myCal += "<td class='calHead'>";

   if(maaned > 1){
      myCal += "<a class='calHeadLink' href='#' onClick='changeCal(" + '"' + fFelt + '",' + (maaned - 1) + ", " + aar + "," + '"' + divName + '"' + ");return false;'>";
   }
   else{
       myCal += "<a class='calHeadLink' href='#' onClick='changeCal(" + '"' + fFelt + '",' + (maaned + 11) + ", " + (aar - 1) + "," + '"' + divName + '"' + ");return false;'>";
   }
   myCal += "<</a></td>";
   myCal += "<td style='width:70px;' class='calHead'>" + monthname[maaned - 1] + "</td><td class='calHead'>";

   if(maaned < 12){
      myCal += " <a class='calHeadLink' href='#' onClick='changeCal(" + '"' + fFelt + '",' + (maaned + 1) + ", " + aar + "," + '"' + divName + '"' + ");return false;'>";
   }
   else{
      myCal += " <a class='calHeadLink' href='#' onClick='changeCal(" + '"' + fFelt + '",' + (maaned - 11) + ", " + (aar + 1) + "," + '"' + divName + '"' + ");return false;'>";
   }

   myCal += "></a></td>";

   myCal += "<td class='calHead'>";
   myCal += "<a class='calHeadLink' href='#' onClick='changeCal(" + '"' + fFelt + '",' + maaned + ", " + (aar - 1) + "," + '"' + divName + '"' + ");return false;'>";
   myCal += "<</a></td>";
   myCal += "<td style='width:30px;' class='calHead'>" + aar + "</td><td class='calHead'>";
   myCal += " <a class='calHeadLink' href='#' onClick='changeCal(" + '"' + fFelt + '",' + maaned + ", " + (aar + 1) + "," + '"' + divName + '"' + ");return false;'>";
   myCal += "></a></td>";
   myCal += "<td class='calHead'></td>";
   myCal += "</tr></table>";
   return myCal;
}
