function showCalendar(calendarId) {
	if($('#'+calendarId)) {
		$('#'+calendarId).datepicker( 'show' );
	}
}

function hideCalendar(calendarId) {
	if($('#'+calendarId)) {
		$('#'+calendarId).datepicker( 'hide' );
	}
}

function getYear(month, day) {
  var today = new Date();
  var year = today.getFullYear();
  if (month < (today.getMonth() + 1)) {
    year++;
  } else if (month == (today.getMonth() + 1)) {
    if (day < (today.getDate())) {
      year++;
    }
  }
  return year;
}

function updateCalendar(calendarId, dayId, monthId, yearId) {
	var mv = $('#'+monthId).val();
	var dv = $('#'+dayId).val();
	var yv = getYear(parseInt(mv, 10), parseInt(dv, 10));
	
	if (isNaN(mv) || isNaN(dv) || mv == "" || dv =="")
	{
		$('#'+calendarId).val("");
	}
	else
	{
		$('#'+yearId).val(yv);
		var newDate = parseInt(mv, 10) + '/' + parseInt(dv, 10)  + '/' + yv;
		$('#'+calendarId).val(newDate);
		$('#'+calendarId).datepicker("setDate", new Date(newDate) );
	}
}


function addCalendar(fieldid, lang, dtformat) {
    //reset to default
    jQuery.datepicker.setDefaults($.extend($.datepicker.regional['']));
    jQuery.datepicker.setDefaults($.extend($.datepicker.regional[lang]));

    if(jQuery('#'+fieldid)) {
        jQuery('#'+fieldid).datepicker({
            dateFormat: dtformat,
            showOn: 'both',
            buttonImage: '/images/icons/calendar/icon_calendar_banner.png',
            buttonImageOnly: true,
            showButtonPanel: true,
            minDate: 0,
            maxDate: '+330d',
            duration: '',
            closeText: 'close'
        });
    }
}

function addDayMonthCalendar(depDateId, depDayId, depMonthId, depYearId, retDateId, retDayId, retMonthId, retYearId, lang, dtformat) {
    jQuery.datepicker.setDefaults($.extend($.datepicker.regional['']));
    jQuery.datepicker.setDefaults($.extend($.datepicker.regional[lang]));
    
    if($('#'+depDateId)) {
        $('#'+depDateId).datepicker({
            dateFormat: dtformat,
            showOn: 'both',
            buttonText: '...',
            buttonImage: '/images/icons/calendar/icon_calendar_banner.png',
            buttonImageOnly: true,
            showButtonPanel: true,
            minDate: 0,
            maxDate: '+330d',
            duration: '',
            closeText: 'close',
            beforeShow: function(input) { 
            	if($('#'+retDateId).val() !="")
            	{
            		$('#'+depDateId).datepicker('option','maxDate',new Date($('#'+retDateId).val()));
            	}
            	else
            	{
            		$('#'+depDateId).datepicker('option','maxDate','+330d');
            	}
            },
            onSelect: function(dateText, inst) {
                elementList = dateText.split('/');
                $('#'+depMonthId).val(elementList[0]);
                $('#'+depDayId).val(elementList[1]);
                $('#'+depYearId).val(elementList[2]);
                $('#'+retDateId).datepicker('option','minDate',new Date(dateText));
            }
        });
    }

    if($('#'+retDateId)) {
        $('#'+retDateId).datepicker({
            dateFormat: dtformat,
            showOn: 'both',
            buttonText: '...',
            buttonImage: '/images/icons/calendar/icon_calendar_banner.png',
            buttonImageOnly: true,
            showButtonPanel: true,
            minDate: 0,
            maxDate: '+330d',
            duration: '',
            closeText: 'close',
            beforeShow: function(input) { 
            	if ($('#'+depDateId).val() != "") {
            		$('#'+retDateId).datepicker('option','minDate',new Date($('#'+depDateId).val()));
            	}
            	else {
            		$('#'+retDateId).datepicker('option','minDate',0);
            	}
            },
            onSelect: function(dateText, inst) {
                elementList = dateText.split('/');
                $('#'+retMonthId).val(elementList[0]);
                $('#'+retDayId).val(elementList[1]);
                $('#'+retYearId).val(elementList[2]);
                $('#'+depDateId).datepicker('option','maxDate',new Date(dateText));
            }
        });
    }
}
// populate day, month, and hidden year fields (e.g., sip form)
function addDayMonthYearCalendar(depDayId, depMonthId, depYearId, retDayId, retMonthId, retYearId, lang, dtformat) {
    //reset to default
    jQuery.datepicker.setDefaults($.extend($.datepicker.regional['']));
    jQuery.datepicker.setDefaults($.extend($.datepicker.regional[lang]));

    if($('#'+depDayId)) {
        $('#'+depDayId).datepicker({
            dateFormat: dtformat,
            showButtonPanel: true,
            minDate: 0,
            maxDate: '+330d',
            duration: '',
            closeText: 'close',
            onSelect: function(dateText, inst) {
                elementList = dateText.split('/');
                $('#'+depMonthId).val(elementList[0]);
                $('#'+depDayId).val(elementList[1]);
                $('#'+depYearId).val(elementList[2]);
                var tmp = $('#'+retDayId).val();
                $('#'+retDayId).datepicker('option','minDate',new Date(dateText));
                $('#'+retDayId).val(tmp);
                tmp = $('#'+retMonthId).val();
                $('#'+retMonthId).datepicker('option','minDate',new Date(dateText));
                $('#'+retMonthId).val(tmp);
            }
        });
    }
    if($('#'+depMonthId)) {
        $('#'+depMonthId).datepicker({
            dateFormat: dtformat,
            showOn: 'both',
            buttonText: '...',
            buttonImage: '/images/icons/calendar/icon_calendar_banner.png',
            buttonImageOnly: true,
            showButtonPanel: true,
            minDate: 0,
            maxDate: '+330d',
            duration: '',
            closeText: 'close',
            onSelect: function(dateText, inst) {
                elementList = dateText.split('/');
                $('#'+depMonthId).val(elementList[0]);
                $('#'+depDayId).val(elementList[1]);
                $('#'+depYearId).val(elementList[2]);
                var tmp = $('#'+retDayId).val();
                $('#'+retDayId).datepicker('option','minDate',new Date(dateText));
                $('#'+retDayId).val(tmp);
                tmp = $('#'+retMonthId).val();
                $('#'+retMonthId).datepicker('option','minDate',new Date(dateText));
                $('#'+retMonthId).val(tmp);
            }
        });
    }
    if($('#'+retDayId)) {
        $('#'+retDayId).datepicker({
            dateFormat: dtformat,
            showButtonPanel: true,
            minDate: 0,
            maxDate: '+330d',
            duration: '',
            closeText: 'close',
            onSelect: function(dateText, inst) {
                elementList = dateText.split('/');
                $('#'+retMonthId).val(elementList[0]);
                $('#'+retDayId).val(elementList[1]);
                $('#'+retYearId).val(elementList[2]);
                var tmp = $('#'+depDayId).val();
                $('#'+depDayId).datepicker('option','maxDate',new Date(dateText));
                $('#'+depDayId).val(tmp);
                tmp = $('#'+depMonthId).val();
                $('#'+depMonthId).datepicker('option','maxDate',new Date(dateText));
                $('#'+depMonthId).val(tmp);
            }
        });
    }
    if($('#'+retMonthId)) {
        $('#'+retMonthId).datepicker({
            dateFormat: dtformat,
            showOn: 'both',
            buttonText: '...',
            buttonImage: '/images/icons/calendar/icon_calendar_banner.png',
            buttonImageOnly: true,
            showButtonPanel: true,
            minDate: 0,
            maxDate: '+330d',
            duration: '',
            closeText: 'close',
            onSelect: function(dateText, inst) {
                elementList = dateText.split('/');
                $('#'+retMonthId).val(elementList[0]);
                $('#'+retDayId).val(elementList[1]);
                $('#'+retYearId).val(elementList[2]);
                var tmp = $('#'+depDayId).val();
                $('#'+depDayId).datepicker('option','maxDate',new Date(dateText));
                $('#'+depDayId).val(tmp);
                tmp = $('#'+depMonthId).val();
                $('#'+depMonthId).datepicker('option','maxDate',new Date(dateText));
                $('#'+depMonthId).val(tmp);
            }
        });
    }
}

//booking widget
jQuery(document).ready(function(){
    var lang = getPathParam(1);
    var dateFormat = 'm/d/yy';
    addDayMonthCalendar('departingDateInt', 'depDay', 'depMonthInt', 'depYear', 'returningDateInt', 'retDay', 'retMonthInt', 'retYear', lang, dateFormat);
})

//sip form
jQuery(document).ready(function(){
    var lang = getPathParam(1);
    var dateFormat = 'm/d/yy';
    addDayMonthYearCalendar('depDay_sip_form', 'depMonthInt_sip_form', 'depYear_sip_form', 'retDay_sip_form', 'retMonthInt_sip_form', 'retYear_sip_form', lang, dateFormat);
})

//agency special form
jQuery(document).ready(function(){
    var lang = getPathParam(1);
    var dateFormat = 'm/d/yy';
    addCalendar('depDate_agspecial_form', lang, dateFormat);
    addCalendar('retDate_agspecial_form', lang, dateFormat);
})

//group quote form
jQuery(document).ready(function(){
    var lang = getPathParam(1);
    var dateFormat = 'M d, yy';
    addCalendar('depDate_groupquote_form', lang, dateFormat);
    addCalendar('retDate_groupquote_form', lang, dateFormat);
})
