/**
 * Initialize Enter Dates Page
 */
function initialize() {
    BC_setHighlightColor("calendarArrival");
    BC_setHighlightColor("calendarDeparture");
    if (hasCalendar()){
        updateCalendarFromField();
    }
    setInputBorderAttributes();
    updateFontAttributes();
//    updateLocalVisibility();
//    updateLocale();
//    BC_displayInfoMessage();
}

function updateFontAttributes(){
    if (document.registration.command.value == "Edit") {
//        for(var i=1; i<=13; i++){
//            BC_setDefaultFontAttributes('synopsis'+i);
//        }
//        BC_setDefaultFontAttributes('confLabel');
//        BC_setDefaultFontAttributes('confValue');
    }
    BC_setDefaultFontAttributes('arrivalLabel');
    BC_setDefaultFontAttributes('departureLabel');
    BC_setDefaultFontAttributes("arrivalDate");
    BC_setDefaultFontAttributes("departureDate");
}

/**
 * Set border attributes of input boxes.
 */
function setInputBorderAttributes() {
    BC_setDefaultBorderAttributes("arrivalDate");
    BC_setDefaultBorderAttributes("departureDate");
}


/**
 *
 */
function changeLocale() {
    var dc = document.cookie;
    if (dc.length > 0) {
       var locale = document.registration.languageValue.options[document.registration.languageValue.selectedIndex].value;
       var url = document.registration.barHome.value;
       var loc = /(locale=de_DE|locale=en_GB|locale=en_US|locale=it_IT|locale=fr_FR|locale=es_ES|locale=nl_NL)/;
       url = url.replace(loc, "locale="+locale);
       url += "&localeChange=true";
       document.location = url;
    }
    else
       alert(PROP_cookiesNeeded);
}


/**
 *
 */
function checkData() {
    var message = "";
    message = checkOccupants(message);
    message = checkDates(message);
    if (message.length > 0){
        alert(message);
        return false;
    }
    return true;
}

/**
 *
 */
function checkOccupants(message){
    var form = document.registration;
    var adultsOK = sfc_isTextFieldInt(form.noa);
    var childOK = sfc_isTextFieldInt(form.noc);
    if(!adultsOK){
        message += PROP_invalidNumberAdults+"\n";
    }
    if(!childOK){
        message += PROP_invalidNumberChilds+"\n";
    }
    var maxAdults = parseInt(form.maxAdults.value);
    var maxChild = parseInt(form.maxChilds.value);
    if(parseInt(form.noa.value) > maxAdults){
        message += PROP_maxAdultsExceeded.replace("{0}", maxAdults)+"\n";
    }
    if(parseInt(form.noc.value) > maxChild){
        message += PROP_maxChildsExceeded.replace("{0}", maxChild)+"\n";
    }
    return message;
}

/**
 *
 */
function checkDates(message){
    cleanDocumentWhiteSpace();
    var arrival = document.registration.barArrival;
    var depart = document.registration.barDeparture;
    var maxArrival = sfc_getDateTodayAdd(document.registration.maxArrival.value);
    var maxDeparture = sfc_getDateTodayAdd(document.registration.maxDeparture.value);
    //check date formats:
    if(!sfc_doTextFieldStandardDateCheck(arrival)){
        message += PROP_badArrivalDateFormat.replace("{0}", top.PROP_datePattern)+"\n";
    }
    if(!sfc_doTextFieldStandardDateCheck(depart)){
        message += PROP_badDepartDateFormat.replace("{0}", top.PROP_datePattern)+"\n";
    }
    //check the arrival date is today or after
    var today = document.registration.today.value;
    if(!isValidOrder(today, arrival.value, true)){
       message += PROP_arrivalDateBeforeToday.replace("{0}", today)+"\n";
    }
    //check the arrival is before departure
    if(!isValidOrder(arrival.value, depart.value, false)){
        message += PROP_groupBlockArrivalBeforeDepart.replace("{0}", arrival.value)+"\n";
    }
    //check dates aren't too far into future.
    if(!isValidOrder(arrival.value, maxArrival, true)){
        message += (PROP_arrivalToLate.replace("{0}", maxArrival))+"\n";
    }
    if(!isValidOrder(depart.value, maxDeparture, true)){
        message += (PROP_departureToLate.replace("{0}", maxDeparture))+"\n";
    }
    return message;
}

/**
 *
 */
function cleanDocumentWhiteSpace(){
    var form = document.registration;
    sfc_doTextFieldRemoveExtraWhiteSpace(form.barArrival);
    sfc_doTextFieldRemoveExtraWhiteSpace(form.barDeparture);
}

//Calendar methods.
/**
 * the user has enter dates into the fields, update the calendar accordingly
 */
function updateCalendarFromField(){
    var maxArrival = sfc_getDateTodayAdd(document.registration.maxArrival.value);
    var maxDeparture = sfc_getDateTodayAdd(document.registration.maxDeparture.value);
    cleanDocumentWhiteSpace();
    sfc_formatDate(document.registration.barArrival.value);
    sfc_formatDate(document.registration.barDeparture.value);

    var arrival = document.registration.barArrival.value;
    if(!isValidOrder(arrival, maxArrival, true)){
        alert(PROP_arrivalToLate.replace("{0}", maxArrival));
        return;
    }
    //get the deaprture date
    var depart = document.registration.barDeparture.value;
    if(!isValidOrder(depart, maxDeparture, true)){
        alert(PROP_departureToLate.replace("{0}", maxDeparture));
        return;
    }
    sfc_standardDateStartStop(document.registration.barArrival, document.registration.barDeparture, "", false, false, false, false, true);
    //update the fields.
    arrival = document.registration.barArrival.value;
    depart = document.registration.barDeparture.value;

    if(!sfc_isDate(document.registration.barArrival.value) ||
        !sfc_isDate(document.registration.barDeparture.value)){
        alert(PROP_badDateFmt);
        return;
    }
    var parseDepart = cal_parse_date(depart).valueOf();
    var parseArrival = cal_parse_date(arrival).valueOf();
    if(hasCalendar()){
        calendars[1].set_day(parseDepart);
        calendars[0].set_day(parseArrival);
    }
}

/**
 * the user has cleicked on the calendar, update the fields accordingly
 */
function updateFieldFromCalendar(num_datetime){
    cleanDocumentWhiteSpace();
    //get the arrival date
    var arrival = document.registration.elements['datetime_0'].value;
    //get the deaprture date
    var depart = document.registration.elements['datetime_1'].value;
    //update the fields.
    var arrivalField = document.registration.barArrival;
    var departField = document.registration.barDeparture;
    if(!isValidOrder(arrival, depart, false)){
        var d = sfc_getDateAdd(arrival, 1);
        var newNum_datetime = cal_parse_date(d).valueOf();
        calendars[1].set_day(newNum_datetime);
        depart = document.registration.elements['datetime_1'].value;
    }
    arrivalField.value = arrival;
    departField.value = depart;
}

/**
 *
 */
function hasCalendar(){
    if(typeof(document.registration) == "undefined"){
        return false;
    }
    return true;
}


/**
 *
 */
function handleCalendarVisiblity() {
    var newValue = document.registration.calendarVisible.value;
    if (newValue == "true") {
        BU_setVisible("calendarTable");
    }
    else {
        BU_setHidden("calendarTable");
    }
}

/**
 *
 */
function updateLocalVisibility(){
    handleCalendarVisiblity();
    handleSynopsisVisibility();
}
