 	var strRoomType = "numofrooms";
	var strAdultType = "numofadults";
	var strChildType = "numofchildren";
	var srtSubTotal = "subtotal";
	//var grantTotal =0;
	var subTotalArray = new Array();
	
	//todo: clear room, set cookie time to 20mins
	function setBooking(theCell, roomID,clickDate){
		var cookiename=  "room_"+roomID+ "_" +clickDate;
		var cookievalue=  roomID+ "_" +clickDate;
		//alert(cookiename+" ========== "+cookievalue) ;
		
		if(!isCookieEnable()){
			alert("To use this booking system, please enable your browser cookies.");
			return true;
		} 
		
		if(theCell.className == "rm-unavailable") {
			return true;
		}
		else if(theCell.className == "rm-selected") {
			theCell.className = "";
			eraseRoomCookie(cookiename)
		}
		else if(theCell.className == "rm-weekend-selected") {
			theCell.className = "weekend";
			eraseRoomCookie(cookiename);
		}
		else if(theCell.className == "weekend") {
			theCell.className = "rm-weekend-selected";
			createRoomCookie(cookiename,cookievalue,1) ;
		}
		else{
			theCell.className = "rm-selected";
			createRoomCookie(cookiename,cookievalue,1) ;
		}
		DoCallback("/Classes/ajaxManager.php", "listingId="+currentListingId+"&toDo=minStay");
		return true;
	}//end  function setBooking(theCell){
	
	
	
	function dobooking(){
		if(!isCookieEnable()){
			alert("To use this booking system, please enable your browser cookies.");
			return false;
		} 
        thisCookie = document.cookie.split("; ");
        var numofbooking = 0;
        for (i=0; i<thisCookie.length; i++){
           cookieName = thisCookie[i].split("=")[0];
           if(cookieName.substr(0,4) =="room"){
                   numofbooking++;
           }
        }
		
		
        if (numofbooking ==0){
			alert("Please select the date of the room you want to book.");
			return false;
        }
        else{
			//Can not use DoCallback here is because ajax is slower than script excute
			// use sleep(5000) still doesn't work
			//DoCallback("/Classes/ajaxManager.php", "listingId=17076");
			if(!meetMinStayReq && errMsg!=''){
				alert(errMsg);	
			}
			return meetMinStayReq;
        }
		
		
	}//end function dobooking
	
	function eraseRoomCookie(name){
        createRoomCookie(name,"",-1);
	}
	
	function cleanallbooking(){
        thisCookie = document.cookie.split("; ");
        //expireDate = new Date ;
        //expireDate.setDate(expireDate.getDate()-1)
			
        for (i=0; i<thisCookie.length; i++){
           cookieName = thisCookie[i].split("=")[0];
           if(cookieName.substr(0,4) =="room"){
                   eraseRoomCookie(cookieName);

                   theCell =  document.getElementById(cookieName);
                   if(isObject(theCell)){
                           //alert(theCell.className);
                           if(theCell.className == "rm-selected") {
                                        theCell.className = "";
                           }
                           else if(theCell.className == "rm-weekend-selected") {
                                        theCell.className = "weekend";
                           }
                   }
           }

           //document.cookie = cookieName + "=;expire=" + expireDate.toGMTString();
        }
        return true;
	}//end function cleanallbooking
	
	function selctionSubString(selectionName,whichPart){
		var firstIndex = selectionName.indexOf("_");
	    var lastIndex = selectionName.lastIndexOf("_");
	    if(whichPart=="Type")
	    	return selectionName.substring(0,firstIndex);
	   	else if(whichPart=="RoomID")
			return selectionName.substring(firstIndex+1, lastIndex);
	    else if(whichPart=="Date")
			return selectionName.substring(lastIndex+1);
	}//end selctionSubString
	
	/*
	selectionBox - which dropdown list was clicked 
	*/
	function changeSelection(selectionBox,onePersonRate,twoPersonRate,extraAdultRate,extraChildRate, maxPeople, rateValidFor ){
	    var selBoxName = selectionBox.id.toString();
	   	var selType = selctionSubString(selBoxName,"Type");
	   	var selRoomID = selctionSubString(selBoxName,"RoomID");
	   	var selDate = selctionSubString(selBoxName,"Date");
	   	//alert(selBoxName+ " "+selType+" "+ selRoomID+" "+selDate);	   	
		var strAdultTarget = strAdultType+"_"+selRoomID+"_"+selDate;
	   	var strChildTarget = strChildType+"_"+selRoomID+"_"+selDate;
	    if(selType==strRoomType){
        	resetPeopleSection(selType, selBoxName, strAdultTarget,maxPeople);
					resetPeopleSection(selType, selBoxName, strChildTarget,maxPeople);
	   
	   	}
	    else if(selType==strAdultType){
        	resetPeopleSection(selType, selBoxName, strChildTarget,maxPeople);
	   
	   	}
		else if(selType==strChildType){
        	resetPeopleSection(selType,selBoxName, strAdultTarget,maxPeople);	   
	   	}
		resetSubtotal(selectionBox,onePersonRate,twoPersonRate,extraAdultRate,extraChildRate, maxPeople ,rateValidFor);
		resetGrandTotal(isValidCardNumber);
		//TODO
		/*
		//resetGrandTotal
		click reset button -all selection.lenght =original
		reload page - set selectedIndex=0
		//pageload - set subtotal
		*/
	}//end changeSelection
	
	
	function changeFollowing(selectionBox){
		
		var selBoxName = selectionBox.id.toString();
		var selType = selctionSubString(selBoxName,"Type");
		var selRoomID = selctionSubString(selBoxName,"RoomID");
		var selDate = selctionSubString(selBoxName,"Date");
		var selIndex = getValueIndex(selectionBox, selectionBox.value);
		//alert(selBoxName+ " "+selType+" "+ selRoomID+" "+selDate);
		for (var i=0;i<document.booking_step2.elements.length;i++) {
			var e = document.booking_step2.elements[i];
			var objName = e.name.toString();
			var firstpos = objName.indexOf('_');//charAt()
			var objType= objName.substring(0,firstpos);
			
			
			if((selType==objType) && (selIndex < e.length)){
				//alert(selBoxName+ " --"+selType+"-- =="+ objType+"== ");	
				var newIndex = getValueIndex(selectionBox, selectionBox.value);
				var oldIndex = e.selectedIndex;
				swapOptionIndexSelected (e,newIndex,oldIndex)
				resetSubtotal(e,50,75,20,15, 2,2 );
			}
			
		}//end for (var i=0;i<document.booking_step2.elements.length;i++)
		
	}
	
	/*
	selType - type of dropdown list (rooms, adults, children)
	selClicked -  which dropdown list was clicked 
	resetTarget - which dropdown need to be reset
	maxPeople -	
	*/
	
	function resetPeopleSection(selType, selClicked, resetTarget,maxPeople){
		
		var resetTargetType = selctionSubString(resetTarget,"Type");
		var clickedObject = document.getElementById(selClicked);
		var targetObject =  document.getElementById(resetTarget);
		
		var selRoomID = selctionSubString(resetTarget,"RoomID");
	   	var selDate = selctionSubString(resetTarget,"Date");	   	
		var strRoomSelection  = strRoomType+"_"+selRoomID+"_"+selDate;
		var selectedRoomObject =  document.getElementById(strRoomSelection);
		
		var selClickedSelectedValue = getSelectedValue(clickedObject);
		var selResetTargetValue = getSelectedValue(targetObject);
		var selRoomValue = getSelectedValue(selectedRoomObject);
		var numberOfpeopleSelected = selClickedSelectedValue+selResetTargetValue;
		var peopleoptionlength = selRoomValue*maxPeople;
		if(selType==strRoomType){
			//reset adult and child's option when number of room change.
		    //var peopleoptionlength = selClickedSelectedValue*maxPeople;
			//alert(selType+ "  "+ resetTargetType+ " "+maxPeople+" * "+selClickedSelectedValue+ " = "+peopleoptionlength);
			removeAllOptions(targetObject) ;
			var k;
			if(resetTargetType==strAdultType){
			   //at least one adult must be selected.
				for(k=1; k<peopleoptionlength+1;k++){
					addOption(targetObject,k,k,"") ;
				}
			}
			else if(resetTargetType==strChildType){
				//number of chlidren always one less than max people
				for(k=0; k<peopleoptionlength;k++){
					addOption(targetObject,k,k,"") ;
				}
			}
			
	   	}
	    else {
			//selection is adult, 
			if(selType==strAdultType){
				//select amount of adults and children more than max people				
				if(numberOfpeopleSelected >peopleoptionlength){
					var newTargetIndex = peopleoptionlength-selClickedSelectedValue;
					//alert(" "+selType+ "  "+ resetTargetType+ " numberOfpeopleSelected "+numberOfpeopleSelected+ " peopleLength "+peopleoptionlength+"\r\n clickvalue "+selClickedSelectedValue+ "  targetvalue "+selResetTargetValue+" newtargervalue "+newTargetIndex);
					alert("Your total number of adults and children is "+numberOfpeopleSelected+".\r\n This exceed the maximum number of people "+ peopleoptionlength+".\r\n Please review number of people of your selection.");
					targetObject.focus();
					swapOptionIndexSelected (targetObject,newTargetIndex,targetObject.selectedIndex);
				}
			}
			//selection is child
			else if(selType==strChildType){
			    //select amount of adults and children more than max people				
				if(numberOfpeopleSelected >peopleoptionlength){
				    //adult's value start from 1,  
					var newTargetIndex = peopleoptionlength-selClickedSelectedValue-1;
					alert("Your total number of adults and children is "+numberOfpeopleSelected+".\r\n This exceed the maximum number of people "+ peopleoptionlength+".\r\n Please review number of people of your selection.");
					targetObject.focus();
					swapOptionIndexSelected (targetObject,newTargetIndex,targetObject.selectedIndex);
				}
			}
	   	}
	
	}//end resetPeopleSection()
	
	/*
	obj - which dropdown list was clicked 
	return - selected value
	modified 29/5: add base 10 into   parseInt(,10) function
	*/
	function getSelectedValue(obj){
	   /*
	    for (var i=0; i<obj.options.length; i++) {
        	if (obj.options[i].selected == true){
				return obj.options[i].value;
				break;
			}
        }
        return null;	
		*/
		//value from selection box
		if (obj!=null && obj.options!=null) { 
			return parseInt(obj.options[obj.selectedIndex].value,10);
		}
		//value from hidden field
		else{
			return parseInt(obj.value,10);
		}
	}
	
	/*
	obj - which dropdown list was clicked 
	return - given value's index
	*/
	function getValueIndex(obj, value){
	    value= parseInt(value,10);
	    for (var i=0; i<obj.options.length; i++) {
        	if (obj.options[i].value == value){
				return parseInt(i,10);
				break;
			}
        }
        return null;		
	}
	
	function removeAllOptions(from) {
        for (var i=(from.options.length-1); i>=0; i--) {
                from.options[i] = null;
                }
        from.selectedIndex = -1;
    }
	function addOption(obj,text,value,selected) {      
	
        obj.options[obj.options.length] = new Option(text, value, false, selected);               
    }
	
	// -------------------------------------------------------------------
	// swapOptions(select_object,option1,option2)
	//  Swap positions of two options in a select list
	// -------------------------------------------------------------------
	function swapOptions(obj,i,j) {
		var o = obj.options;
		var i_selected = o[i].selected;
		var j_selected = o[j].selected;
		var temp = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		var temp2= new Option(o[j].text, o[j].value, o[j].defaultSelected, o[j].selected);
		o[i] = temp2;
		o[j] = temp;
		o[i].selected = j_selected;
		o[j].selected = i_selected;
	}
	
	
					//swapOptions(targetObject,newTargetIndex,selResetTargetValue);
	function swapOptionIndexSelected (obj,newIndex,oldIndex){
		//alert(obj.name+ ' new index '+newIndex+' old index '+oldIndex);
		obj.options[oldIndex].selected = false;
		obj.options[newIndex].selected = true;	
	}
	
	// -------------------------------------------------------------------
	// moveOptionUp(select_object)
	//  Move selected option in a select list up one
	// -------------------------------------------------------------------
	function moveOptionUp(obj) {
		if (!hasOptions(obj)) { return; }
		for (i=0; i<obj.options.length; i++) {
			if (obj.options[i].selected) {
				if (i != 0 && !obj.options[i-1].selected) {
					swapOptions(obj,i,i-1);
					obj.options[i-1].selected = true;
				}
			}
		}
	}

	// -------------------------------------------------------------------
	// moveOptionDown(select_object)
	//  Move selected option in a select list down one
	// -------------------------------------------------------------------
	function moveOptionDown(obj) {
	if (!hasOptions(obj)) { return; }
	for (i=obj.options.length-1; i>=0; i--) {
		if (obj.options[i].selected) {
			if (i != (obj.options.length-1) && ! obj.options[i+1].selected) {
				swapOptions(obj,i,i+1);
				obj.options[i+1].selected = true;
				}
			}
		}
	}

	// -------------------------------------------------------------------
	// removeSelectedOptions(select_object)
	//  Remove all selected options from a list
	//  (Thanks to Gene Ninestein)
	// -------------------------------------------------------------------
	function removeSelectedOptions(from) { 
		if (!hasOptions(from)) { return; }
		if (from.type=="select-one") {
			from.options[from.selectedIndex] = null;
		}
		else {
			for (var i=(from.options.length-1); i>=0; i--) { 
				var o=from.options[i]; 
				if (o.selected) { 
					from.options[i] = null; 
				} 
			}
		}
		from.selectedIndex = -1; 
	} 
	
	function resetSubtotal(selectionBox,onePersonRate,twoPersonRate,extraAdultRate,extraChildRate, maxPeople, rateValidFor){
	
		var selBoxName = selectionBox.id.toString();
	   	//var selType = selctionSubString(selBoxName,"Type");
	   	var selRoomID = selctionSubString(selBoxName,"RoomID");
	   	var selDate = selctionSubString(selBoxName,"Date");
	   	//alert(selBoxName+ " "+selType+" "+ selRoomID+" "+selDate);	
		var srtRoomTagret  = strRoomType+"_"+selRoomID+"_"+selDate; 	
		var strAdultTarget = strAdultType+"_"+selRoomID+"_"+selDate;
	   	var strChildTarget = strChildType+"_"+selRoomID+"_"+selDate;
		var srtSubTotalTarget = srtSubTotal+"_"+selRoomID+"_"+selDate;
		
		var roomObjValue  = getSelectedValue(document.getElementById(srtRoomTagret)); 	
		var adultObjValue = getSelectedValue(document.getElementById(strAdultTarget)) ;
	   	var childObjValue = getSelectedValue(document.getElementById(strChildTarget)) ;
		
		var subTotalObj = document.getElementById(srtSubTotalTarget) ;
		
		var maxPeopleAllow = maxPeople * roomObjValue;
		//var extraStartFrom = 2 * roomObjValue;
		if( rateValidFor<2) rateValidFor=2;
	
		var extraStartFrom = rateValidFor * roomObjValue;
		var numberOfPeopleSelected = adultObjValue + childObjValue;
		var subTotalAmount =0;
		var extraAdult=0;
		var extraChild=0;
		if( (roomObjValue==1) && (adultObjValue==1) && (childObjValue==0)){
			subTotalAmount =onePersonRate;
		}else{
			subTotalAmount = twoPersonRate * roomObjValue;
			if(numberOfPeopleSelected > extraStartFrom){
				//adult not exceed 
				if(adultObjValue < extraStartFrom){
				    extraChild = childObjValue - (extraStartFrom- adultObjValue);
					subTotalAmount = subTotalAmount+ extraChild * extraChildRate;
				}else{
					extraAdult =  adultObjValue -extraStartFrom;
					extraChild = childObjValue;
					subTotalAmount = subTotalAmount+ extraAdult*extraAdultRate + extraChild * extraChildRate;				
				}
			
			}//end if(numberOfPeopleSelected>maxPeopleAllow)			
		}//end else
		//subTotalObj.innerHTML = subTotalAmount+" "+maxPeople+" "+roomObjValue+" "+adultObjValue+" "+childObjValue+" "+maxPeopleAllow+" "+numberOfPeopleSelected+" "+extraAdult+" "+extraChild;
		subTotalObj.innerHTML = "$"+subTotalAmount.toFixed(2);
		
		//grantTotal = grantTotal+subTotalAmount;
		subTotalArray[selRoomID+"_"+selDate]=subTotalAmount;
		//alert (subTotalArray[selRoomID+"_"+selDate]);
		return subTotalAmount;
	}//end function resetSubtotal
	
	function resetGrandTotal(cardNumberOK){
		/*
		if(cardNumberOK) alert("success");
		else alert("faild");
		*/
		var grandTotalObj = document.getElementById("grandTotalAmount") ;
		var subTotalIndex;
		var grantTotal=0;
		var aaDiscountAmount ="";
		for (subTotalIndex in subTotalArray)
		{
			grantTotal =grantTotal + subTotalArray[subTotalIndex];	
		}
		//alert(typeof(document.getElementById("is_aamember")));
		
		//if (document.getElementById("is_aamember")!=null) {
			if(cardNumberOK){
			//if(document.getElementById("is_aamember").value==1){
				
				document.getElementById("aaMemberText").innerHTML="<strong>AA Rewards Points</strong>";
				/* Use member discount before
				aaDiscountAmount = grantTotal * 0.05
				document.getElementById("aaDiscount").innerHTML="<strong class=\"red\">-$"+aaDiscountAmount.toFixed(2)+"</strong>";
				grantTotal= grantTotal - aaDiscountAmount.toFixed(2);
				*/
				//4 points for every complete $10
				aaDiscountAmount = Math.floor(grantTotal/10) * 4;
				document.getElementById("aaDiscount").innerHTML="<strong class=\"red\">"+aaDiscountAmount.toFixed(0)+"</strong>";
			}
			
			else {
				if (document.getElementById("aaMemberNumber")!=null) {
					document.getElementById("aaMemberText").innerHTML="";
					document.getElementById("aaDiscount").innerHTML=aaDiscountAmount;
				}
			}
		//}
		grandTotalObj.innerHTML = "$"+grantTotal.toFixed(2);
	}//end resetGrandTotal()
	
	function resetBooking() {
		var answer = '';
		for (var i = 0; i<document.booking_step2.elements.length; i++) {
			if ((document.booking_step2.elements[i].type == 'select-one')) {
				if (document.booking_step2.elements[i].selectedIndex != 0) {
					//answer += document.booking_step2.elements[i].options[document.booking_step2.elements[i].selectedIndex].value + ' ';
					document.booking_step2.elements[i].options[document.booking_step2.elements[i].selectedIndex].selected=false;
					document.booking_step2.elements[i].options[0].selected=true;
				}
			}
		}
		document.booking_step2.action = "";
		document.booking_step2.submit();
	}