// calendar functions -----------------------------BEGIN---------------------------------
     var elem_id_today = "";
   /**
   * Month navigation. 2 months are returned and the element with ID "calendar" will get its innerHTML replaced
   * @param {Int} year Year to navigate to
   * @param {Int} month Month to navigate to
   * @param {String} context Where the calendar was called (current possibilities: searchPage, supplierPage)
   * @returns void
   */
	function gotoMonth(year, month, context)
   {
		var requestDestination = "library/ajax/ajax_calendar_output.php?" + "gotoYear=" + year + "&gotoMonth=" + month + "&context=" + context;
		new Ajax.Request(requestDestination,
		{
			method:'get',
			onSuccess: function(transport)
			{
				var response = transport.responseText || "error";
				$('calendar').innerHTML = response;
				markPeriod("select");
			},
			onFailure: function(){ alert('Something went wrong...') }
		});

   }
       /**
   * Mark or wipe calendar selection
   * @param {String} type Type of action. Current possibilities: wipe; select
   * @returns void
   */
   function markPeriod(type)
   {
		// fix me
		var checkIn = document.getElementById("dateCheckIn");
		var checkOut = document.getElementById("dateCheckOut");
		
		if(type == "select")
		{
			var checkInFiledValue  = checkIn.value.split("-");
			var checkOutFiledValue = checkOut.value.split("-");
			var checkInDate   = new Date(checkInFiledValue[0], parseInt(checkInFiledValue[1] - 1)  , checkInFiledValue[2] ); //Month is 0-11 in JavaScript
			var checkOutDate  = new Date(checkOutFiledValue[0], parseInt(checkOutFiledValue[1] - 1)  , checkOutFiledValue[2] ); //Month is 0-11 in JavaScript
			// check-out date is INFERIOR to check-in
			if(checkInDate.getTime() > checkOutDate.getTime())
			{
				var temp = checkOut.value;
				checkOut.setValue(checkIn.value);
				checkIn.setValue(temp);

				var checkInLabel = document.getElementById("dateCheckInLabel");
//				checkInLabel.innerHTML = checkOutFiledValue[0] + "-" + checkOutFiledValue[1] + "-" + checkOutFiledValue[2] ;
				month = parseInt(checkOutFiledValue[1] - 1);
				checkInLabel.innerHTML = checkOutFiledValue[2] + " " + monthList[month].substring(0, 3) + " " + checkOutFiledValue[0] ;

				var checkOutLabel = document.getElementById("dateCheckOutLabel");
//				checkOutLabel.innerHTML =  checkInFiledValue[0] + "-u" + checkInFiledValue[1] + "u-" + checkInFiledValue[2] ;
				month = parseInt(checkInFiledValue[1] - 1);
				checkOutLabel.innerHTML = checkInFiledValue[2] + " " + monthList[month].substring(0, 3) + " " + checkInFiledValue[0] ;
				
				var checkInDateDayOfWeek = checkInDate.getDay();
				var checkOutDateDayOfWeek = checkOutDate.getDay();
			}
			
			checkInFiledValue  = checkIn.value.split("-");
			checkOutFiledValue = checkOut.value.split("-");
			checkInDate   = new Date(checkInFiledValue[0], parseInt(checkInFiledValue[1] - 1)  , checkInFiledValue[2] );
			checkOutDate  = new Date(checkOutFiledValue[0], parseInt(checkOutFiledValue[1] - 1)  , checkOutFiledValue[2] );
			//check if element is visible
			
			//check in
			var checkInElem = document.getElementById(checkInFiledValue[0] + "" + checkInFiledValue[1] + "" + checkInFiledValue[2]);
			//check out
           	var checkOutElem = document.getElementById(checkOutFiledValue[0] + "" + checkOutFiledValue[1] + "" + checkOutFiledValue[2]);

			try
			{
				checkInElem.removeClassName("checkInDateSelected");
				checkInElem.removeClassName("checkOutDateSelected");
				checkInElem.removeClassName("checkInDateSelected27");
				checkInElem.removeClassName("checkOutDateSelected27");
				checkInElem.removeClassName("checkInDateSelected27");
				checkInElem.removeClassName("checkOutDateSelected27");
			}
			catch(err)
			{
				// not visible
			}
	
			try
			{
				checkOutElem.removeClassName("checkInDateSelected");
				checkOutElem.removeClassName("checkOutDateSelected");
				checkOutElem.removeClassName("checkInDateSelected27");
				checkOutElem.removeClassName("checkOutDateSelected27");
				checkOutElem.removeClassName("checkInDateSelected27");
				checkOutElem.removeClassName("checkOutDateSelected27");
			}
			catch(err)
			{
				// not visible
			}
			
			var checkInDateDayOfWeek = checkInDate.getDay();
			var checkOutDateDayOfWeek = checkOutDate.getDay();
			try
			{
				if(checkInDateDayOfWeek == 0 || checkInDateDayOfWeek == 5 || checkInDateDayOfWeek == 6)
				{
					//wednesday
					$(checkInElem).addClassName("checkInDateSelected27");
				}

				else
				{
					$(checkInElem).addClassName("checkInDateSelected");
				}
			}
			catch(err)
			{
				// not visible
			}
			
			try
			{
				if(checkOutDateDayOfWeek == 0 || checkOutDateDayOfWeek == 5 || checkOutDateDayOfWeek == 6)
				{
					$(checkOutElem).addClassName("checkOutDateSelected27");
				}
				else
				{
					$(checkOutElem).addClassName("checkOutDateSelected");
				}
			}
			catch(err)
			{

			}

			var days = ( checkOutDate.getTime() - checkInDate.getTime() ) / (1000*60*60*24);
			days = Math.round(days);
			
			if(days) // there is something to mark
			{
				$('nrNights').innerHTML =  "(" + days + " nights)" ;
				var i = 0;
				var tempDate = checkInDate;
				var tempElemId = "";
				var tempElem = "";
				var tempMonth = "";
				var tempDay = "";
				for(i = 0; i < days - 1; i++)
				{
					tempDate.setDate( tempDate.getDate() + 1 );
						tempMonth     = parseInt(tempDate.getMonth() + 1);
						if(tempMonth < 10)
					{
						tempMonth = "0" + tempMonth;
					}
						tempDay     = tempDate.getDate();
						if(tempDay < 10)
					{
						tempDay = "0" + tempDay;
					}	
							tempElemId     = tempDate.getFullYear() + "" + tempMonth + "" + tempDay;
						tempElem     = document.getElementById(tempElemId);
						//check if element is visible
					try
					{
						$(tempElem).addClassName("stayDays");
					}
					catch(err)
					{
						// not visible
					}
				}
			}
		}
		else if(type == "wipe")
		{
			// reset select days (change CSS)
			var checkInFiledValue  = checkIn.value.split("-");
			var checkOutFiledValue = checkOut.value.split("-");
			var checkInDate   = new Date(checkInFiledValue[0], parseInt(checkInFiledValue[1] - 1)  , checkInFiledValue[2] ); //Month is 0-11 in JavaScript
			var checkOutDate  = new Date(checkOutFiledValue[0], parseInt(checkOutFiledValue[1] - 1)  , checkOutFiledValue[2] ); //Month is 0-11 in JavaScript
			var days = ( checkOutDate.getTime() - checkInDate.getTime() ) / (1000*60*60*24);
			var i = 0;
			var tempDate = checkInDate;
			var tempElemId = "";
			var tempElem = "";
			var tempMonth = "";
			var tempDay = "";
			tempElemId     = checkInFiledValue[0] + "" + checkInFiledValue[1] + "" + checkInFiledValue[2];
			tempElem     = document.getElementById(tempElemId);
			try
			{
				tempElem.removeClassName("checkInDateSelected");
				tempElem.removeClassName("checkOutDateSelected");
				tempElem.removeClassName("checkInDateSelected27");
				tempElem.removeClassName("checkOutDateSelected27");
				tempElem.removeClassName("checkInDateSelected27");
				tempElem.removeClassName("checkOutDateSelected27");
							//today
				if (tempElemId == elem_id_today)
				{
					$(tempElem).addClassName("today");
				}
			}
			catch(err)
			{
			// not visible
			}
			tempElemId2     = checkOutFiledValue[0] + "" + checkOutFiledValue[1] + "" + checkOutFiledValue[2];
           	tempElem2     = document.getElementById(tempElemId2);
			try
			{
				tempElem2.removeClassName("checkInDateSelected");
				tempElem2.removeClassName("checkOutDateSelected");
				tempElem2.removeClassName("checkInDateSelected27");
				tempElem2.removeClassName("checkOutDateSelected27");
				tempElem2.removeClassName("checkInDateSelected27");
				tempElem2.removeClassName("checkOutDateSelected27");
				if (tempElemId == elem_id_today)
				{
					$(tempElem).addClassName("today");
				}
			}
			catch(err)
			{
				// not visible
			}
			for(i = 0; i <= days; i++)
			{
				tempDate.setDate( tempDate.getDate() + 1 );
				tempMonth     = parseInt(tempDate.getMonth() + 1);
				
				if(tempMonth < 10)
				{
					tempMonth = "0" + tempMonth;
				}
				
				tempDay     = tempDate.getDate();
				
				if(tempDay < 10)
				{
					tempDay = "0" + tempDay;
				}
				tempElemId     = tempDate.getFullYear() + "" + tempMonth + "" + tempDay;
				tempElem     = document.getElementById(tempElemId);
					
				try
				{
					tempElem.removeClassName("stayDays");
					tempElem.removeClassName("checkInDateSelected");
					tempElem.removeClassName("checkOutDateSelected");
					tempElem.removeClassName("checkInDateSelected27");
					tempElem.removeClassName("checkOutDateSelected27");
					
					if (tempElemId == elem_id_today)
					{
						$(tempElem).addClassName("today");
					}
				}
				catch(err)
				{
					// not visible
				}
			}
       }
   }
     /**
   * function binded to a click on a calendar day
   * @param {String} elemId HTML ID of the clicked element
   * @param {String} context Where the calendar was called (current possibilities: searchPage, suplierPage)
   * @returns void
   */
	function dayClick(elemId, context)
	{
		var obj = document.getElementById(elemId);
		var checkIn = document.getElementById("dateCheckIn");
		var checkOut = document.getElementById("dateCheckOut");
		// first click
		
// 		alert("|"+elemId+"|");
// 		alert("|"+checkIn.value.replace(/-/g, "")+"|");
		
		if($(checkIn).value == "")
		{
			checkIn.setValue(elemId.substring(0, 4) + "-" + elemId.substring(4, 6)  + "-" + elemId.substring(6));
		
			// check wednesday
			var checkInFiledValue  = checkIn.value.split("-");
			var checkInDate   = new Date(checkInFiledValue[0], parseInt(checkInFiledValue[1] - 1)  , checkInFiledValue[2] );
			var checkInDateDayOfWeek = checkInDate.getDay();
			
			if(checkInDateDayOfWeek == 0 || checkInDateDayOfWeek == 5 || checkInDateDayOfWeek == 6)
			{
				$(obj).addClassName("checkInDateSelected27");
			}
			else
			{
				$(obj).addClassName("checkInDateSelected");
			}
			var checkInLabel = document.getElementById("dateCheckInLabel");
//			checkInLabel.innerHTML = elemId.substring(0, 4) + "-" + elemId.substring(4, 6)  + "-" + elemId.substring(6);
			month = parseInt(checkInFiledValue[1]) - 1;
			checkInLabel.innerHTML = elemId.substring(6) + " " + monthList[month].substring(0, 3) + " " + elemId.substring(0, 4);
		}
		// click on checkIn again
		else if( (elemId == checkIn.value.replace(/-/g, "")) && $(checkOut).value == "")
		{
// 			alert("same day");
			return true;
		}
		// no checkout date specified
		else if($(checkOut).value == "")
		{
			// mark selected days
			checkOut.setValue(elemId.substring(0, 4) + "-" + elemId.substring(4, 6)  + "-" + elemId.substring(6));
	
			// check day of week
			var checkOutFiledValue  = checkOut.value.split("-");
			var checkOutDate   = new Date(checkOutFiledValue[0], parseInt(checkOutFiledValue[1] - 1)  , checkOutFiledValue[2] );
			var checkOutDateDayOfWeek = checkOutDate.getDay();
			
			
			if(checkOutDateDayOfWeek == 0 || checkOutDateDayOfWeek == 5 || checkOutDateDayOfWeek == 5)
			{
				$(obj).addClassName("checkOutDateSelected27");

			}
			else
			{
				$(obj).addClassName("checkOutDateSelected");
			}
			
			var checkOutLabel = document.getElementById("dateCheckOutLabel");
//			checkOutLabel.innerHTML = elemId.substring(0, 4) + "-" + elemId.substring(4, 6)  + "-" + elemId.substring(6);
			month = parseInt(elemId.substring(4, 6) - 1);
			checkOutLabel.innerHTML = elemId.substring(6) + " " + monthList[month].substring(0, 3) + " " + elemId.substring(0, 4);

			markPeriod("select");
	
			if(context == "supplierPage")
			{
				var arrival_date = checkIn.value;
				var departure_date = checkOut.value;
				var checkInFiledValue  = arrival_date.split("-");
				var checkOutFiledValue = departure_date.split("-");
				var checkInDate   = new Date(checkInFiledValue[0], parseInt(checkInFiledValue[1] - 1)  , checkInFiledValue[2] ); //Month is 0-11 in JavaScript
				var checkOutDate  = new Date(checkOutFiledValue[0], parseInt(checkOutFiledValue[1] - 1)  , checkOutFiledValue[2] ); //Month is 0-11 in JavaScript
				var days = Math.round ((checkOutDate.getTime() - checkInDate.getTime()) / (1000*60*60*24) , 0) ;
				arrival_date = arrival_date.replace(/-/g,"");
				jsChangeDate(arrival_date, days);

			}
			/*
			else
			{
				//update search
				jsSearchSuppliers(-1);
			}*/
		}
       // checkIn and checkOut are set, need to reset them and select new checkIn date
       else
       {
			// reset select days (change CSS)
			markPeriod("wipe");
			var checkInLabel = document.getElementById("dateCheckInLabel");
//			checkInLabel.innerHTML =  elemId.substring(0, 4) + "-" + elemId.substring(4, 6)  + "-" + elemId.substring(6);
			month = parseInt(elemId.substring(4, 6)-1);
			checkInLabel.innerHTML = elemId.substring(6) + " " + monthList[month].substring(0, 3) + " " + elemId.substring(0, 4);

			var checkOutLabel = document.getElementById("dateCheckOutLabel");
			checkOutLabel.innerHTML =  "__ __ ____" ;
			var nrNights = document.getElementById("nrNights");
			nrNights.innerHTML =  "(- nights)" ;
			checkIn.setValue(elemId.substring(0, 4) + "-" + elemId.substring(4, 6)  + "-" + elemId.substring(6));
			checkOut.setValue("");

			//set the checkin
			// check day of week
			var checkInFiledValue  = checkIn.value.split("-");
			var checkInDate   = new Date(checkInFiledValue[0], parseInt(checkInFiledValue[1] - 1)  , checkInFiledValue[2] );
			var checkInDateDayOfWeek = checkInDate.getDay();
			
			if(checkInDateDayOfWeek == 0 || checkInDateDayOfWeek == 5 || checkInDateDayOfWeek == 6)
			{
				$(obj).addClassName("checkInDateSelected27");
			}
			else
			{
				$(obj).addClassName("checkInDateSelected");
			}

		}
   }
// calendar functions -----------------------------END--------------------------------- 