function ini_calendars(suffix){
	create_calendars("_a"+suffix);
	create_calendars("_l"+suffix);
}

function create_calendars(suffix){
	$('monthyearsel'+suffix).addEvent("change", function(){
		var valarr = this.value.split("-");
		var dt = new Date(valarr[1], valarr[0], 1);
		set_daydate_dropdown(new Date(dt.getTime()), suffix);
		
		if ($defined(cals_arr['cal'+suffix].options.selectedDate)){
			dt.setDate(cals_arr['cal'+suffix].options.selectedDate.getDate());
		}
		if (suffix.indexOf("_l_") != -1 ) ng_close_travel_cal = false;
		if (dt.getTime() < cals_arr['cal'+suffix].options.startDate.getTime())
			dt.setTime(cals_arr['cal'+suffix].options.startDate.getTime());
		cals_arr['cal'+suffix].selectDate(dt);
		cals_arr['cal'+suffix].updateCalendar(dt);
	});
	
	$('daydatesel'+suffix).addEvent("change", function(){
		var valarr = $('monthyearsel'+suffix).value.split("-");
		var dt = new Date(valarr[1], valarr[0], this.value);
		if (suffix.indexOf("_l_") != -1 ) ng_close_travel_cal = false;
		cals_arr['cal'+suffix].selectDate(dt);
	});
	
	ng_all_travel_cals.push(suffix.replace("_a_", "_").replace("_l_", "_"));
	$('cal_icon'+suffix).addEvent("click", function(){
		var suf = suffix.replace("_a_", "_").replace("_l_", "_");
		var dv = $('cals_div'+suf);
		if (dv.getStyle('display') == 'none'){
			close_all_ng_travle_cals(suf);
			dv.setStyle('display', '');
		}
		else {
			dv.setStyle('display', 'none');
		}
	});
	
	if (suffix.indexOf('_a_') != -1){
		var st_dt = 'today';
		var sel_func = function(){
			var cal = cals_arr['cal'+suffix];
			var sec_cal = cals_arr['cal'+(suffix.replace('_a_', '_l_'))];
			
			sec_cal.options.startDate = cal.date.fromString("today+1");
			
			if ($defined(sec_cal.options.selectedDate)){
				if (cal.date.getTime() >=  sec_cal.options.selectedDate.getTime()){
					ng_close_travel_cal = false;
					var dt = cal.date.fromString('today+1');
					sec_cal.selectDate(dt);
					sec_cal.updateCalendar(dt);
				}
				else {
					sec_cal.updateCalendar(sec_cal.date);
				}
			}
			else {
				ng_close_travel_cal = false;
				var dt = cal.date.fromString('today+1');
				sec_cal.selectDate(dt);
				sec_cal.updateCalendar(dt);
			}
			
			$('day_field'+suffix).value = cal.date.getDate();
			$('month_field'+suffix).value = cal.date.getMonth() + 1;
			$('year_field'+suffix).value = cal.date.getFullYear();
			
			select_dropdown_by_val('daydatesel'+suffix, cal.date.getDate());
			set_monthyear_dropdown(suffix.replace('_a_', '_l_'));
		};
		
		var unsel_func = function(){
			$('day_field'+suffix).value = "";
			$('month_field'+suffix).value = "";
			$('year_field'+suffix).value = "";
			
			var cal = cals_arr['cal'+suffix];
			var sec_cal = cals_arr['cal'+(suffix.replace('_a_', '_l_'))];
			
			set_monthyear_dropdown(suffix.replace('_a_', '_l_'));
			(function(){
					  	if (!$defined(cal.options.selectedDate)){
							var dt = cal.options.startDate.fromString('today+1');
							sec_cal.options.startDate = dt;
							sec_cal.updateCalendar(sec_cal.date);
						}
					  }.delay(100));
		};
	}
	else{
		var st_dt = 'tommorow';
		var sel_func = function(){
			var cal = cals_arr['cal'+suffix];
			$('day_field'+suffix).value = cal.date.getDate();
			$('month_field'+suffix).value = cal.date.getMonth() + 1;
			$('year_field'+suffix).value = cal.date.getFullYear();
			
			select_dropdown_by_val('daydatesel'+suffix, cal.date.getDate());
			
			(function (){
			   if (!ng_close_travel_cal){
					ng_close_travel_cal = true;
					return;
				}
				var suf = suffix.replace("_a_", "_").replace("_l_", "_");
				$('cals_div'+suf).setStyle('display', 'none');
			}.delay(200));
		};
		
		var unsel_func = function(){
			$('day_field'+suffix).value = "";
			$('month_field'+suffix).value = "";
			$('year_field'+suffix).value = "";
		};
	}
	
	cals_arr['cal'+suffix] = new Calendar('cal_td'+suffix, null, {idPrefix: 'cal'+suffix,
											inputType:'none',
											visible: true,
											startDay:1,
											startDate:st_dt,
											endDate: 'year+1',
											onSelect: sel_func,
											onUnSelect: unsel_func,
											allowWeekendSelection:true,
											
											// localization object
											language: cal_language,
											
											onCalendarLoad: function(){
												var updt_drop = true;
												if ($('monthyearsel'+suffix).value != ""){
													var arr = $('monthyearsel'+suffix).value.split("-");
													if ((arr[0] == this.date.getMonth()) && (arr[1] == this.date.getFullYear())){
														updt_drop = false;
													}
												}
												if (updt_drop)
													select_dropdown_by_val('monthyearsel'+suffix, this.date.getMonth()+'-'+this.date.getFullYear());
												var valarr = $('monthyearsel'+suffix).value.split("-");
												var dt = new Date(valarr[1], valarr[0], 1);
												set_daydate_dropdown(new Date(dt.getTime()), suffix);
												
												if (($defined(cals_arr['cal'+suffix]))
													&& ($defined(cals_arr['cal'+suffix].options.selectedDate))){
													select_dropdown_by_val('daydatesel'+suffix, this.options.selectedDate.getDate());
												}
											}});
											
	// creating the two drop down menus
	set_daydate_dropdown(new Date(), suffix);
	set_monthyear_dropdown(suffix);
	
	if (suffix.indexOf('_l_') != -1){
		if ($('day_field'+suffix).value == ""){
			cals_arr['cal'+suffix].selectDate(cals_arr['cal'+suffix.replace('_l_', '_a_')].options.startDate.fromString('today+1'));
		}
		else {
			var dt = new Date($('year_field'+suffix).value,
						$('month_field'+suffix).value.toInt() - 1,
						$('day_field'+suffix).value);
			cals_arr['cal'+suffix].updateCalendar(dt);
			cals_arr['cal'+suffix].selectDate(dt);
		}
		
		if ($('day_field'+suffix.replace('_l_', '_a_')).value == ""){
			cals_arr['cal'+suffix.replace('_l_', '_a_')].selectDate('today');
		}
		else {
			var dt = new Date($('year_field'+suffix.replace('_l_', '_a_')).value,
						$('month_field'+suffix.replace('_l_', '_a_')).value.toInt() - 1,
						$('day_field'+suffix.replace('_l_', '_a_')).value);
			cals_arr['cal'+suffix.replace('_l_', '_a_')].updateCalendar(dt);
			cals_arr['cal'+suffix.replace('_l_', '_a_')].selectDate(dt);
			
		}
	}
	
}

// setting variables for general text us
var dateday_format = "D j";
var monthyear_format = "M 'y";
var cals_arr = {};
	
// date and day drop down
function set_daydate_dropdown(dt, suffix){
	if (!$defined(cals_arr['cal'+suffix])) return;
	dt.setDate(1);
	var mn = dt.getMonth();
	dt.setHours(0); dt.setMinutes(0); dt.setSeconds(0); dt.setMilliseconds(0);
	var endtm = cals_arr['cal'+suffix].options.endDate.getTime();
	
	if (dt.getTime() < cals_arr['cal'+suffix].options.startDate.getTime()){
		dt.setTime(cals_arr['cal'+suffix].options.startDate.getTime());
	}
	
	var opt;
	var daydate = $('daydatesel'+suffix);
	daydate.set("html", "");
	while (dt.getMonth() == mn){
		opt = document.createElement("option");
		opt.innerHTML = dt.print(dateday_format, cal_language);
		opt.value = dt.getDate();
		daydate.appendChild(opt);
		dt.setDate(dt.getDate() + 1);
		if (dt.getTime() > endtm){
			break;
		}
	}
};

function set_monthyear_dropdown(suffix){
	if (!$defined(cals_arr['cal'+suffix])) return;
	// month and year drop down
	var dt = new Date(cals_arr['cal'+suffix].options.startDate.getTime());
	dt.setDate(1);
	dt.setHours(0); dt.setMinutes(0); dt.setSeconds(0); dt.setMilliseconds(0);
	var endtm = cals_arr['cal'+suffix].options.endDate.getTime();
	
	var mnyr = $('monthyearsel'+suffix);
	mnyr.set("html", "");
	var opt;
	for (var i=0; i<13; i++){
		opt = document.createElement("option");
		opt.value = dt.getMonth()+"-"+dt.getFullYear();
		if ($defined(cals_arr['cal'+suffix].options.selectedDate)){
			if (opt.value == cals_arr['cal'+suffix].options.selectedDate.getMonth()+"-"+cals_arr['cal'+suffix].options.selectedDate.getFullYear())
				opt.selected = "selected";
		}
		opt.innerHTML = dt.print(monthyear_format, cal_language);
		mnyr.appendChild(opt);
		dt.setMonth(dt.getMonth()+1);
		if (dt.getTime() > endtm)
			break;
	}
};

var ng_close_travel_cal = true;
// function to help selecting a drop down value
function select_dropdown_by_val (id, val){
	var opts = $(id).getElementsByTagName('option');
	for (var i=0; i<opts.length; i++){
		if (opts[i].value == val){
			$(id).selectedIndex = i;
			break;
		}
	}
};

var ng_all_travel_cals = [];

function close_all_ng_travle_cals(ex){
	for (var i=0; i<ng_all_travel_cals.length; i++){
		if (ng_all_travel_cals[i] != ex){
			$('cals_div'+ng_all_travel_cals[i]).setStyle('display', 'none');
		}
	}
};