	function actionYearView(a_lngResource,a_lngMonth,a_lngYear,a_dtmCurr,a_strAction){
		var d_objAjax = getAjaxObject();
	
		//set the stateChange handler
		//by using an 'on-the-fly' function arguments can be passed
		d_objAjax.onreadystatechange=function(){
			YearView_StateChange(d_objAjax,a_lngResource,a_lngMonth,a_lngYear,a_dtmCurr,a_strAction)
		}
	
		//get the data to send
		var l_strData = "action=" + a_strAction;
		
		l_strData += "&keyname=Inv_id";
		
		var l_objElement = $id('key_value_' + a_lngMonth)
		if (l_objElement==null){
			//key_value_# cant be found, must be a request for a new 
			l_strData += "&keyvalue=new";
		}
		else{
			l_strData += "&keyvalue=" + l_objElement.value;
		}
		
		//select the data to be passed, depending upon the action
		switch (a_strAction){
		case "edit_yvchangeover":
			l_strData += "&" + "resource_id=" + a_lngResource
			l_strData += "&" + "r_date=" + escape(a_lngMonth)
			l_strData += "&" + "r_arriveday=" + a_lngYear
			break
		case "refresh_yvchangeover":
			l_strData += "&" + "resource_id=" + a_lngResource
			l_strData += "&" + "r_date=" + escape(a_lngMonth)
			l_strData += "&" + "r_arriveday=" + a_lngYear
			break
		case "navigate_yvchangeover":
			l_strData += "&" + "resource_id=" + a_lngResource
			l_strData += "&" + "r_date=" + escape(a_lngMonth)
			l_strData += "&" + "r_arriveday=" + a_lngYear
			break
		case "navigate_liteadmin":
			l_strData += "&" + "resource_id=" + a_lngResource
			l_strData += "&" + "r_date=" + escape(a_lngMonth)
			l_strData += "&" + "r_arriveday=" + a_lngYear
			break
		case "navigate_yvadmintobooking":
			l_strData += "&" + "location_id=" + a_lngResource
			l_strData += "&" + "r_booking_id=" + a_lngMonth
			l_strData += "&" + "r_arriveday=" + a_lngYear
			l_strData += "&" + "r_date=" + escape(a_dtmCurr)
			break
		case "new_invdetail":
			l_strData += "&" + formToQString($id('f_invdetail_new'))
			break
		case "delete_invdetail":
			l_strData += "&" + formToQString($id('f_invdetail_new'))
			break
		case "save_yvchangeover":
			l_strData += "&" + "r_date=" + escape(a_lngMonth)
			l_strData += "&" + "r_arriveday=" + a_lngYear
			l_strData += "&" + formToQString($id('f_yvad_' + a_lngResource + "_" + a_lngMonth))
			break
		case "show_availableaccom":
			var l_objElement = document.getElementsByName('view_resource')
			for( var i=0 ; i<l_objElement.length ; i++){
				if(l_objElement[i].checked){
					l_strData += "&" + "resource_id=" + l_objElement[i].value
				}
			}
			
			//l_strData += "&" + "r_date=" + escape($id("view_arrivaldate").value)
			l_strData += "&" + "arrivaldate=" + escape($id("view_arrivaldate").value)
			l_strData += "&" + "location_id=" + escape($id("book_locationid").value)
			l_strData += "&" + "r_arriveday=" + a_lngYear
			
			window.location.replace("yvavailability.asp?" + l_strData);
			
			break
		case "mass_accomarrdept":
			l_strData += "&" + formToQString($id('f_accom_massarrdept_' + a_lngMonth))
			alert (l_strData)
			break
		}
		//alert(l_strData)
		//set the response file name
		d_objAjax.open("POST","/client/client/yearview_response.asp",true);
		d_objAjax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		//pass the data
		d_objAjax.send(l_strData);

}

	function YearView_StateChange(a_objAjax,a_lngResource,a_lngMonth,a_lngYear,a_dtmCurr,a_strAction){
	
		switch (a_objAjax.readyState){
		case 0:
			//The request is not initialized
			break
		case 1:
			//The request has been set up
			break
		case 2:
			//The request has been sent
			break
		case 3:
			//The request is in process
			break
		case 4:
			//The request is complete
			YearView_Action(a_objAjax,a_lngResource,a_lngMonth,a_lngYear,a_dtmCurr,a_strAction);
			break
		}
	}

	function YearView_Action(a_objAjax,a_lngResource,a_lngMonth,a_lngYear,a_dtmCurr,a_strAction){
		var l_objElement
		switch (a_strAction){
		case "edit_yvchangeover":
			//l_objElement = $id('d_yv_' + a_lngMonth + "_" + a_lngYear)
			l_objElement = $id('d_yv_' + a_lngMonth)
			l_objElement = $id('d_yv_Config')
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
			break
		case "refresh_yvchangeover":
			l_objElement = $id('d_yv_' + a_lngMonth)
			l_objElement = $id('d_yv_Config')
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
			break
		case "save_yvchangeover":
			l_objElement = $id('d_yv_' + a_lngMonth)
			l_objElement = $id('d_yv_Config')
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
			break
		case "navigate_yvchangeover":
			l_objElement = $id('d_yv_' + a_dtmCurr)
			l_objElement = $id('d_yv_Config')
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
			//l_objElement.id='d_yv_' + a_lngMonth
			break
		case "navigate_yvadmintobooking":
			l_objElement = $id('yv_admin_calendar')
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
			//l_objElement.id='d_yv_' + a_lngMonth
			break
		case "delete_invdetail":
			//a record has been deleted, reconstruct the whole table
			l_objElement = $id('invdetail_list')
			//alert(a_objAjax.responseText)
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
			break
		case "clear_invdetail":
			//the new record,delete the new div & its content
			l_objElement = $id('d_invdetail_' + a_lngCount)
			l_objElement.parentElement.removeChild(l_objElement)
			//alert(a_objAjax.responseText)
			//reset the next counter
			l_objElement = $id('next_invdetail').value= parseInt(a_lngCount)
						
			break
		case "show_availableaccom":
			//the visitor has selected accommodation to view
			l_objElement = $id('visitor_bookingcal')
			//alert(a_objAjax.responseText)
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
		case "mass_accomarrdept":
			//the visitor has selected accommodation to view
			l_objElement = $id('d_accom_massarrdept_' + a_lngMonth)
			alert(a_objAjax.responseText)
			if(l_objElement != null){
				l_objElement.innerHTML=a_objAjax.responseText
			}
		}
	}
