window.onload = function () {
    MM_preloadImages('img/prijs_on.gif','img/info_on.gif','img/over_on.gif');

// RETURN NOW TO NOT ADD CALENDARS:
//return;

    // Add  calendars
    if (document.getElementById('beschikbaarheid') == null && document.getElementById('prijslijst') == null) return;
    var divs = document.getElementsByTagName('SPAN');
    for (var i=0; i<divs.length; i++) {
        if (divs[i].id.indexOf("cal_hs") != -1) {
            divs[i].innerHTML = "<img src='/img/cal.gif' class='bescal' alt='Beschikbaarheid' title='Beschikbaarheid' onclick='showCalendar(\""+divs[i].id.substr(4)+"\");'/>";
        }
    }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// Checks for special or important days for adjusted highlighting
function dateStatusHandler(dt) {
    // Check if date is in the past
    var cd = new Date();
    var curdate = new Date(cd.getFullYear(),cd.getMonth(),cd.getDate());
    dt.setHours("00");
    dt.setMinutes("00");
    if (dt.valueOf() < curdate.valueOf()) return true;

    // check if date is special
    if (dateIsScheduled(dt)) {
        return "special";
    }
    else return false;   // return true if you want to disable other dates
}

function dateIsScheduled(dt) {
    var y = SCHEDULE[dt.getFullYear()];
    if (!y) return false;   // Year not there? get out!
    var m = SCHEDULE[dt.getFullYear()][dt.getMonth()];
    if (!m) return false;   // Month not there? get out!
    if (m === dt.getDate()) {    // only one day selected in the month, which happens to be same as 'day'
        return true;
    }

    for (var i in m) {
        if (m[i] == dt.getDate()) {
            return true;
        }
    }
    return false;
}

function loadSchedule(id) {
    var url = "/json_forward.php";;
    var url = "/json.php";;
    new Ajax.Request(url, {
        method: 'get',
        parameters: 'id='+id,
        asynchronous: false,    // SYNC otherwise schdule will not show in calendar...
        onSuccess: function(transport) {
            //alert(transport.responseText)
            jsonToSchedule(transport.responseJSON); 
        }
    });
}

// "Schedule" object will hold busy days and other info for each house
var SCHEDULE = new Array();
SCHEDULE["HouseId"] = null;
SCHEDULE["WeekStart"] = 6;
function jsonToSchedule(data) {
    SCHEDULE = data;
}


// Function gets called upon selection of a date/week/month?
function selectHandler(cal, dateStr) {
    if (cal.dateClicked == false) return;
}

function closeHandler(cal) {
    cal.hide();
}


var cal_open = false;
function showCalendar(id) {
    if (cal_open == id) {
        cal_open = false;
        return;
    }
    var cal_id = "cal_"+id;
    var dt = new Date();

    // Load the schedule if not already loaded for current house
    if (SCHEDULE["HouseId"] != id) {
        loadSchedule(id.substr(2));
    }

    // Create a new calendar
    var cal = new Calendar(SCHEDULE["WeekStart"], null, selectHandler, closeHandler);  // Calendar(firstDayOfWeek, dateStr, onSelected, onClose)
    cal.showsOtherMonths    = true;
    cal.weekSellers         = false;
    cal.dragging            = false;
    cal.setDateStatusHandler(dateStatusHandler);
    cal.setRange(dt.getFullYear(), (dt.getFullYear()+2));                               // min/max year allowed.
    cal.setDateFormat('%d-%m-%Y');                          // set the specified date format
    cal.create();                                           // Create the calendar
    cal.showAtElement(document.getElementById(cal_id));     // show the calendar
    cal_open = id;
}

function parseCalDate(dateStr) {
    var parts = dateStr.split("-");
    return new Date(parts[2], (parts[1]-1), parts[0]);
}

