 /* get every instance of a class */
 function calendar_getElementsByClass(node,searchClass,tag) {  
     var classElements = new Array();  
	 if ( node == null )  
	     node = document;  
	 if ( tag == null )  
	     tag = '*';  
     var els = node.getElementsByTagName(tag); // use "*" for all elements  
     var elsLen = els.length;  
     var pattern = new RegExp("\\b"+searchClass+"\\b");  
     for (i = 0, j = 0; i < elsLen; i++) {  
	  if ( pattern.test(els[i].className) ) {  
	  classElements[j] = els[i];  
	  j++;  
	  }  
     }  
     return classElements;  
   }  



function calendar_previous_month(input_id) {

	var start_node = document.getElementById("calendar_" + input_id);
	var months = calendar_getElementsByClass(start_node,"month_div","*");  
	var start_node = document.getElementById("calendar_" + input_id);
	var months = calendar_getElementsByClass(start_node,"month_div","*");  
	for (var i=0; i<months.length;i++) {
		if (months[i].style.display != "block" && months[i+1] != null && months[i+1].style.display == "block") {
			months[i].style.display = "block";
			for(var j=i;j<months.length;j++)
				if (months[j].style.display != "block") {
					months[j-1].style.display = "none";
					return;
				}
				else if (j == months.length - 1)
					months[j].style.display = "none";
		}
	}	

}

function calendar_next_month(input_id) {

	var start_node = document.getElementById("calendar_" + input_id);
	var months = calendar_getElementsByClass(start_node,"month_div","*");  

	for (var i=0; i<months.length-3;i++) {
		if (months[i].style.display == "block") {
			months[i].style.display = "none";
			for(var j=i+1;j<months.length;j++) {
				if (months[j].style.display == "none") {
					months[j].style.display = "block";
					return;
				}
			}
		}
	}	

}


function sync_dep_months_to_arr(arr_input_id, dep_input_id) {

	var start_node = document.getElementById("booking_form");

	var months_arr = calendar_getElementsByClass(document,"month_div_" + arr_input_id,"*");  
	var months_dep = calendar_getElementsByClass(document,"month_div_" + dep_input_id,"*");  

	for (var i=0; i<months_dep.length;i++)
		months_dep[i].style.display = months_arr[i].style.display; 

}


function calendar_select_month(input_id, steps) {

	var i;

	//reset the combos
	var start_node = document.getElementById(document);
	var combos = calendar_getElementsByClass(start_node,"calendar_combo_" + input_id,"*");  

	for (i=0; i<combos.length;i++) {
		combos[i].selectedIndex = i;
	}	

	if (steps > 0)
		for(csm_i=0;csm_i<steps;csm_i++)
			calendar_next_month(input_id);
	else if (steps < 0)
		for(csm_i=0;csm_i<-1* steps;csm_i++)
			calendar_previous_month(input_id);


}

function pick_date(input_id, date, display_date) {

	document.getElementById(input_id).value = display_date;
	set_calendar_combos(input_id, display_date);

	document.getElementById("calendar_" + input_id).style.display = "none";

	//event handler in booking form validation
	change_arrival();

	//update the number of nights combo date
	change_number_nights();

}


function close_calendar(input_id) {

	document.getElementById("calendar_" + input_id).style.display = "none";

}

// get the position relative to page top
/*  
function getPos(el_id) {

    el = document.getElementById(el_id);

    // yay readability
    for (var lx=0, ly=0;
         el != null;
         lx += el.offsetLeft, ly += el.offsetTop, el = el.offsetParent);
    return {x: lx,y: ly};
}
*/

function open_calendar(input_id) {

	if (document.getElementById("calendar_" + input_id).style.display == "block")
		document.getElementById("calendar_" + input_id).style.display = "none";
	else {

		//close all other calendars
		var calendars = calendar_getElementsByClass(document,"calendar","*");  
		for (var i=0; i<calendars.length;i++)
			calendars[i].style.display = "none";
		
		document.getElementById("calendar_" + input_id).style.display = "block";
	}
}




