if (EventCalendarX == null) var EventCalendarX = new Object();

var winEvent;
var popCloseFunc = null;

// This function opens the window in which the event details are
// viewed. The <body> tag has a onLoad call which gets the data
// from the server when the popup loads. SEE: getForm(id) below
function open_editable_event(instanceId, dateOrId, width, height) {
    var openStr = "toolbar=0,status=0,menubar=0,fullscreen=no,width=" + width + ",height=" + height + ",resizable=1,top=100,left=100";
    window.open("AsyncRedirect.aspx?typeid=6021&action=getform&instanceid=" + instanceId + "&dataVar=" + dateOrId, "EditEvent", openStr);
}

// This function changes the date for the week being veiwed in the calendar
// param: date this is the start date of the requested weekview
function goToWeek(date) {
    var instanceId = getQueryParam('instanceId');
    if (!instanceId) instanceId = 1;

    var LoadCalendar_Callback = {
        success: EventCalendarX.GetCalendar_Callback,
        failure: EventCalendarX.GetCalendar_Fail,
        timeout: 15000
    };
    YAHOO.util.Connect.asyncRequest("GET", "AsyncRedirect.aspx?typeid=6021&goToDate=" + escape(date) + "&instanceId=" + instanceId, LoadCalendar_Callback);
    return LoadCalendar_Callback;
}

// This function changes the date for the week being veiwed in the calendar
// param: date this is the start date of the requested weekview
function goToDay(date) {
    var instanceId = getQueryParam('instanceId');
    if (!instanceId) instanceId = 1;

    var LoadCalendar_Callback = {
        success: EventCalendarX.GetCalendar_Callback,
        failure: EventCalendarX.GetCalendar_Fail,
        timeout: 15000
    };
    YAHOO.util.Connect.asyncRequest("GET", "AsyncRedirect.aspx?typeid=6022&goToDate=" + escape(date) + "&instanceId=" + instanceId, LoadCalendar_Callback);
    return LoadCalendar_Callback;
}

EventCalendarX.GetCalendar_Fail = function(response) {
    var temp = 'failed';
}

EventCalendarX.GetCalendar_Callback = function(response) {
    var calendarDiv = document.getElementById("eventCalendarDiv");
    var HTML = response.responseText;
    calendarDiv.innerHTML = HTML;
    if (winEvent != null)
        winEvent.close();
    return null;
}

//http://www.webcheatsheet.com/javascript/disable_enter_key.php
function disableEnterKey(evt) {
    var evt = (evt) ? evt : ((event) ? event : null);
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
    if ((evt.keyCode == 13) && (node.type == "text")) { return false; }
}

function checkBookingTime() {
    var CheckBookingTime_Callback = {
        success: EventCalendarX.CheckBookingTime_Callback,
        failure: EventCalendarX.CheckBookingTime_Fail,
        timeout: 15000
    };
    var startDateTime = document.getElementById("StartDateTime");
    var endDateTime = document.getElementById("StartDateTime");
    var bookingDate = document.getElementById("BookingDate");
    var startTime = document.getElementById("StartTime");
    var endTime = document.getElementById("EndTime");
    
    var rangeStart = "";
    var rangeEnd = "";
    if (startDateTime == null || endDateTime == null) {
        rangeStart = bookingDate.value + " " + startTime.value;
        rangeEnd = bookingDate.value + " " + endTime.value;
    } else {
        rangeStart = startDateTime.value;
        rangeEnd = endDateTime.value;
    }
    
    var id = document.getElementById("Data_TurfRequestID").value;
    if (!id) id = 0;

    var recWeeks = 0;
    var recurringBooking = document.getElementById('IsRecurringEvent');
    if (recurringBooking.checked) {
        var numWeeksSelector = document.getElementById('RecNumWeeks');
        recWeeks = numWeeksSelector.options[numWeeksSelector.selectedIndex].value;
    }

    var turfID = 0;
    var turfIDObj = document.getElementById('turfID');
    if (turfIDObj != null) {
        if(turfIDObj.tagName.toLocaleLowerCase() == "select") {
            turfID = turfIDObj.options[turfIDObj.selectedIndex].value;
        } else {
            turfID = turfIDObj.value;
        }
    }
    
    var turfArea = 0;
    var turfAreaObj = document.getElementById('turfArea');
    if (turfAreaObj != null) {
        turfArea = turfAreaObj.options[turfAreaObj.selectedIndex].value;
    }
    
    var instanceId = getQueryParam('instanceId');
    if (!instanceId) instanceId = 1;

    var queryString = "AsyncRedirect.aspx?typeid=6021&action=checkBooking&id=" + id + "&rangeStart=" + escape(rangeStart) + "&rangeEnd=" + escape(rangeEnd) + "&cTurfID=" + turfID + "&cTurfArea=" + turfArea + "&instanceId=" + instanceId + "&recs=" + recWeeks;
    YAHOO.util.Connect.asyncRequest("GET", queryString, CheckBookingTime_Callback);

    return CheckBookingTime_Callback;
}

EventCalendarX.CheckBookingTime_Fail = function(response) {
    var temp = 'failed';
}

EventCalendarX.CheckBookingTime_Callback = function(response) {
    if (response.responseText == '') {
        document.frmEdit.submit();
    } else if(confirm(response.responseText)) {
        document.frmEdit.submit();
    }
    return false;
}

function updateNonAdminMessage() {
    var message = document.getElementById('message');
    var startTime = document.getElementById('StartDateTime').value;
    var endTime = document.getElementById('EndDateTime').value;
    var turfArea = document.getElementById('RequestedTurfArea').value;



    message.innerHTML = "Making a booking for " + turfArea + " for " + getHours(startTime, endTime);
}

function updateAdminMessage() {
    var message = document.getElementById('message');
    var startTime = document.getElementById('StartDateTime').value;
    var endTime = document.getElementById('EndDateTime').value;
    var turfArea = document.getElementById('turfArea').value;
    var turfId = document.getElementById('turfID').value;

    message.innerHTML = "Making a booking for " + turfArea + " on Turf " + turfId + " for " + getHours(startTime, endTime);
}

function getHours(startDateTime, endDateTime) {
    var startHour = parseInt(getTimePart(startDateTime, 0), 10);
    var startMin = parseInt(getTimePart(startDateTime, 1), 10);

    var endHour = parseInt(getTimePart(endDateTime, 0), 10);
    var endMin = parseInt(getTimePart(endDateTime, 1), 10);

    //parse AM or PM
    var strStartAMPM = startDateTime.substring(startDateTime.length - 4, startDateTime.length);
    var strEndAMPM = endDateTime.substring(endDateTime.length - 4, endDateTime.length);

    if (strStartAMPM == "p.m." && startHour != 12) {
        startHour = startHour + 12;
    }

    if (strEndAMPM == "p.m." && endHour != 12) {
        endHour = endHour + 12;
    }

    var mins = (endHour - startHour) * 60 + (endMin - startMin);

    var hours = parseInt(mins / 60, 10);
    var fract = parseInt((mins % 60) / 15, 10);

    if (hours == 0) {
        return (fract * 15) + " mins";
    }
    else {
        if (fract == 0) {
            if (hours < 2)
                return hours + " hour";
            else
                return hours + " hours";
        }
        else {
            if (hours < 2)
                return hours + "hour and " + (fract * 15) + " mins";
            else
                return hours + " hours and " + (fract * 15) + " mins";
        }
    }
}

//time is datetime object
//part 0=hour,1=min,2=sec
function getTimePart(time, part) {
    var tSp1 = time.indexOf(":", 0)
    var tSp2 = time.indexOf(":", (parseInt(tSp1) + 1));
    var strHour;
    var strMinute;
    var strSecond;

    if (tSp1 > 0) {
        if (part == 0) {
            return time.substring(tSp1, (tSp1) - 2);
        }
        else if (part == 1) {
            return time.substring(tSp1 + 1, tSp1 + 3);
        }
        else if (part == 2) {
            return time.substring(tSp2 + 1, tSp2 + 3);
        }
    }
}

var cQueryVars = null;
function getQueryParam(key) {
    if (!cQueryVars) {
        var getVars = new Array();
        var qString = unescape(window.location);
        var pairs = qString.split(/\&/);
        for (var i = 0; i < pairs.length; i++) {
            if (pairs[i] != "") {
                var nameVal = pairs[i].split(/\=/);
                getVars[nameVal[0].toString().toLowerCase()] = nameVal[1].toString().toLowerCase();
            }
        }
        cQueryVars = getVars;
    }
    return cQueryVars[key.toString().toLowerCase()];
}

function setPopupSize() {
    var myWidth = 0, myHeight = 0;
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    window.resizeTo(myWidth + 110,myHeight - 60);
}

