﻿// Author: Victor H. Ponce
// File Overview: validation functions for guest room/meeting room dates

// Purpose: ensure that user entered values in Guest Room and Meeting Space sections
//          as well as selected a country. State and city are done on server side only.
function validateEvtInfo(grId, msId, countryId, obj)
{
    var cbx1 = $get(grId);
    var cbx2 = $get(msId);
    if (obj != null && obj.type == 'checkbox')
    {
        $get(grId+'Txt').style.color = '';
        $get(msId+'Txt').style.color = '';
        var tbx = $get(obj.id.replace('cbx', 'tbx'));
        if (obj.checked == true)
        {
            tbx.disabled = false;
            tbx.focus();
        }
        else
            tbx.disabled = true;
        return true;
    }
    if (cbx1.checked == false && cbx2.checked == false)
    {
        if (countryId != null)
        {
            var vCntry = $get(countryId);
            validateCountry(vCntry);
        }
        $get(grId+'Txt').style.color = '#f40409';
        $get(msId+'Txt').style.color = '#f40409';
        $find('mpe').show();
        return false;
    }
    // validate the number entered in the textboxes
    if (cbx1.checked == true && cbx2.checked == false)  // 10
    {
        var tbx = $get(cbx1.id.replace('cbx', 'tbx'));
        return validateNum(tbx);
    }
    if (cbx1.checked == false && cbx2.checked == true)  // 01
    {
        var tbx = $get(cbx2.id.replace('cbx', 'tbx'));
        return validateNum(tbx);
    }
    if (cbx1.checked == true && cbx2.checked == true)   // 11
    {
        var tbx = $get(cbx1.id.replace('cbx', 'tbx'));
        var valid = validateNum(tbx);
        if(!valid) return false;
        tbx = $get(cbx2.id.replace('cbx', 'tbx'));
        return validateNum(tbx);
    }
}
function validateCountry(obj)
{
    if (!obj) return;
    if (obj.selectedIndex == 0)
        $get(obj.id+"Txt").style.color = "#f40409";
    else
        $get(obj.id+"Txt").style.color = "";
}
// Purpose: validate that value entered into textbox is numeric
function validateNum(tbx)
{
    if (!tbx) return;
    var num = parseInt(tbx.value, 10);
    if (isNaN(num) || num == 0)
    {
        tbx.style.backgroundColor = '#ccccff';
        tbx.focus();
        return false;
    }
    else
    {
        tbx.style.backgroundColor = '';
        return true;
    }
}

// Purpose: ensure that the start and end dates make sense, i.e., start < end always
function chkDate(tbxArvId, tbxDepId, tbxToCheck){
    // get date textboxes
    var tbxArv = $get(tbxArvId);
    var tbxDep = $get(tbxDepId);
    if (!tbxArv || !tbxDep){
        alert('Fields not found');
        return false;
    }
    // get date values
    var dteEnd = new Date(tbxDep.value);
    var dteStr = new Date(tbxArv.value);
    // determine which field is being checked, start date or end date
    if (tbxToCheck == 0){
        // start date
        if (dteStr >= dteEnd){
            dteStr = new Date(dteEnd.setDate(dteEnd.getDate() - 1));
            // change calenar popup selected date
            var cal = $find(tbxArvId.replace('tbx', 'cex'));
            if (cal != null){
                cal.set_selectedDate(dteStr);
            }
            $find(tbxDepId.replace('tbx', 'cex')).hide();
            return true;
        }
    }
    else if (tbxToCheck == 1){
        // end date
        if (dteStr >= dteEnd){
            dteEnd = new Date(dteStr.setDate(dteStr.getDate() + 1));
            // change calenar popup selected date
            var cal = $find(tbxDepId.replace('tbx', 'cex'));
            if (cal != null){
                cal.set_selectedDate(dteEnd);
            }
            $find(tbxArvId.replace('tbx', 'cex')).hide();
            return true;
        }
    }
}

// Purpose: ensure that the start and end dates make sense, i.e., start <= end always
function chkDate2(tbxArvId, tbxDepId, tbxToCheck){
    // get date textboxes
    var tbxArv = $get(tbxArvId);
    var tbxDep = $get(tbxDepId);
    if (!tbxArv || !tbxDep){
        alert('Fields not found');
        return false;
    }
    // get date values
    var dteEnd = new Date(tbxDep.value);
    var dteStr = new Date(tbxArv.value);
    // determine which field is being checked, start date or end date
    if (tbxToCheck == 0){
        // start date
        if (dteStr >= dteEnd){
            dteStr = new Date(dteEnd.setDate(dteEnd.getDate()));
            // change calenar popup selected date
            var cal = $find(tbxArvId.replace('tbx', 'cex'));
            if (cal != null){
                cal.set_selectedDate(dteStr);
            }
            $find(tbxDepId.replace('tbx', 'cex')).hide();
            return true;
        }
    }
    else if (tbxToCheck == 1){
        // end date
        if (dteStr >= dteEnd){
            dteEnd = new Date(dteStr.setDate(dteStr.getDate()));
            // change calenar popup selected date
            var cal = $find(tbxDepId.replace('tbx', 'cex'));
            if (cal != null){
                cal.set_selectedDate(dteEnd);
            }
            $find(tbxArvId.replace('tbx', 'cex')).hide();
            return true;
        }
    }
}


// Purpose: validate that the dates chosen for Guest Rooms and Meeting Rooms make sense,
//          i.e., sleepings rooms can be reserved before meeting rooms, but not vice-versa
function syncDate(tbxGRStrId, tbxGREndId, tbxMRStrId, tbxMREndId, iSection){
    // get date textboxes
    var tbxGR = $get(tbxGRStrId);   var tbxGREnd = $get(tbxGREndId);
    var tbxMR = $get(tbxMRStrId);   var tbxMREnd = $get(tbxMREndId);
    if (!tbxGR || !tbxMR){
        alert('Fields not found');
        return false;
    }
    var cal = null; // local variable for calendar popup
    if (iSection == 0){ // triggerred by guest rooms tbx
        // check start dates
        var dteGR = new Date(tbxGR.value);   var dteMR = new Date(tbxMR.value);
        if (dteGR > dteMR){
            cal = $find(tbxMRStrId.replace('tbx', 'cex'));
            if (cal != null) cal.set_selectedDate(dteGR);
            // check MR arrival & departure
            dteMR = new Date(tbxMR.value);  dteMREnd = new Date(tbxMREnd.value);
            if (dteMR >= dteMREnd){
                dteMREnd = new Date(dteMR.setDate(dteMR.getDate() + 1));
                // change calendar popup selected date
                cal = $find(tbxMREndId.replace('tbx', 'cex'));
                if (cal != null) cal.set_selectedDate(dteMREnd);
            }
        }
        // check end dates
        var dteGREnd = new Date(tbxGREnd.value);    var dteMREnd = new Date(tbxMREnd.value);
        if (dteGREnd < dteMREnd){
            cal = $find(tbxMREndId.replace('tbx', 'cex'));
            if (cal != null) cal.set_selectedDate(dteGREnd);
            // check MR arrival & departure
            dteMR = new Date(tbxMR.value);  dteMREnd = new Date(tbxMREnd.value);
            if (dteMR >= dteMREnd){
                dteMR = new Date(dteMREnd.setDate(dteMREnd.getDate() - 1));
                // change calenar popup selected date
                cal = $find(tbxMRStrId.replace('tbx', 'cex'));
                if (cal != null) cal.set_selectedDate(dteMR);
            }
        }
    }
    else if (iSection == 1){ // triggerred by meetin rooms tbx
        // check start dates
        var dteGR = new Date(tbxGR.value);   var dteMR = new Date(tbxMR.value);
        if (dteGR > dteMR){
            cal = $find(tbxGRStrId.replace('tbx', 'cex'));
            if (cal != null) cal.set_selectedDate(dteMR);
            // check GR arrival & departure
            dteGR = new Date(tbxGR.value);  dteGREnd = new Date(tbxGREnd.value);
            if (dteGR >= dteGREnd){
                dteGREnd = new Date(dteGR.setDate(dteGR.getDate() + 1));
                // change calenar popup selected date
                cal = $find(tbxGREndId.replace('tbx', 'cex'));
                if (cal != null) cal.set_selectedDate(dteGREnd);
            }
        }
        // check end dates
        var dteGREnd = new Date(tbxGREnd.value);    var dteMREnd = new Date(tbxMREnd.value);
        if (dteGREnd < dteMREnd){
            cal = $find(tbxGREndId.replace('tbx', 'cex'));
            if (cal != null) cal.set_selectedDate(dteMREnd);
            // check GR arrival & departure
            dteGR = new Date(tbxGR.value);  dteGREnd = new Date(tbxGREnd.value);
            if (dteGR >= dteGREnd){
                dteGR = new Date(dteGREnd.setDate(dteGREnd.getDate() - 1));
                // change calenar popup selected date
                cal = $find(tbxGRStrId.replace('tbx', 'cex'));
                if (cal != null) cal.set_selectedDate(dteGR);
            }
        }
    }
}
// Notify ScriptManager that this is the end of the script.
//if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();