﻿var OWSCtl_currentHotelPageInfo = null;
var OWSCtl_currentPackageInfo = null;
var OWSCtl_hotelsCombos = new Array();
var OWSCtl_mustOpenConfWindowBeforeSubmit = false;

function OWSCtl_getConfData(){
   return _oVacationConf2;
}

function OWSCtl_1(button, overrideObject, packageObj){
   var oConf = OWSCtl_getConfData();     
      
   if(oConf.HCONF_CONFIRM_OWS_AVAILABILITY_IS_DISABLED != ""){
       if(window.confirm(oConf.HCONF_CONFIRM_OWS_AVAILABILITY_IS_DISABLED)){
           var sOverValue1 = (overrideObject == null || typeof(overrideObject) != 'string') ? "" : overrideObject;
           if(sOverValue1 == "" && OWSCtl_currentHotelPageInfo != null){
                sOverValue1 = OWSCtl_currentHotelPageInfo.key;
           }
           if(sOverValue1 == ""){
               location.href = oConf.HCONF_CONFIRM_OWS_AVAILABILITY_IS_DISABLED_CMD;
           }else{
               location.href = oConf.HCONF_CONFIRM_OWS_AVAILABILITY_IS_DISABLED_CMD + "?SVOWSSRCHEX=" + sOverValue1;
           }
       }
       return;
   }
   
   if(packageObj != null){
       if(typeof(packageObj) == "string"){
          oConf.PACKAGE = {ID:packageObj, T:"package: " + packageObj, H:{}, DG:true, DF:true, D1:null, D2:null, DM:0};
       }else{          
          if(!packageObj.DG){
               alert(oConf.HCONF_INPOSSIBLE_TO_CHOOSE_DATES);
               return;
          }
          oConf.PACKAGE = packageObj;
       }
   }else{
       oConf.PACKAGE = null;       
   }
        
   var sOverValue = (overrideObject == null || typeof(overrideObject) != 'string') ? "" : overrideObject;
   document.getElementById(oConf.CLID + "___OVEROBJECT").value = sOverValue;    
   
   if(OWSCtl_mustOpenConfWindowBeforeSubmit){
       OWSCtl_openConfWindow(button);
   }else{
       if(oConf.PACKAGE != null){
              document.getElementById(oConf.CLID + "___PACKAGEID").value = oConf.PACKAGE.ID;
              OWSCtl_fixMainHotelComboBox();
              if(OWSCtl_fixFilteredHotelComboBox() == 0){                   
                   OWSCtl_openConfWindow(button);
                   return;
              }
              
              var oDateBegin = PioDateControl_Get(oConf.ctlDateBegin);
              var oDateEnd = PioDateControl_Get(oConf.ctlDateEnd);
              var dBegin = oDateBegin.getCurrentDate();
              var dEnd = oDateEnd.getCurrentDate();
              
              if(oConf.PACKAGE.DM > 0){
                  var dTmp = new Date(dEnd - dBegin);
                  var iTmp = dTmp.getDate() - 1;
                  if(iTmp < oConf.PACKAGE.DM){
                      OWSCtl_openConfWindow(button);
                      return;
                  }
              }
              
              if(!oConf.PACKAGE.DF){
                  if(oConf.PACKAGE.D1 == null || oConf.PACKAGE.D2 == null){
                      alert("No dates provided by author");
                  }else{
                      if((dBegin - oConf.PACKAGE.D1) != 0 || (dEnd - oConf.PACKAGE.D2) != 0){
                          OWSCtl_openConfWindow(button);
                          return;
                      }
                  }
              }else{
                  if((oConf.PACKAGE.D1 != null && dBegin < oConf.PACKAGE.D1) || (oConf.PACKAGE.D2 != null && dEnd > oConf.PACKAGE.D2)){
                      OWSCtl_openConfWindow(button);
                      return;
                  }          
              }
              
              if(packageObj != null && typeof(packageObj) == "string"){
                  oDateBegin.setCurrentDate(null);
                  oDateEnd.setCurrentDate(null);
              }                                                
       }else{
          document.getElementById(oConf.CLID + "___PACKAGEID").value = "";
       }
       OWSCtl_submitConfWindow(button);
   }
}


function OWSCtl_openConfWindow(button)
{
	var oConf = OWSCtl_getConfData();
	var pnlConfWindow = document.getElementById(oConf.pnlConfWindow);
	if(pnlConfWindow != null)
	{
		var oPackageObj = oConf.PACKAGE;
		if(oPackageObj == null && OWSCtl_currentPackageInfo != null){
			oPackageObj = OWSCtl_currentPackageInfo;                   
		}
		if(oPackageObj != null && !oPackageObj.DG){
			alert(oConf.HCONF_INPOSSIBLE_TO_CHOOSE_DATES);
			return;
		} 

		if(oConf.PACKAGE == null && OWSCtl_currentPackageInfo != null){
			oConf.PACKAGE = OWSCtl_currentPackageInfo;
		}          

		if(oConf.PACKAGE != null){
			document.getElementById(oConf.CLID + "___PACKAGEID").value = oConf.PACKAGE.ID;
			document.getElementById(oConf.lblPackageTitle).innerHTML = oConf.PACKAGE.T;                     
			document.getElementById(oConf.pnlPackageTitle).style.display = "";
		}else{
			document.getElementById(oConf.CLID + "___PACKAGEID").value = "";
			document.getElementById(oConf.pnlPackageTitle).style.display = "none";
		}

		OWSCtl_fixMainHotelComboBox();
		OWSCtl_fixFilteredHotelComboBox();
		OWSCtl_dateControlFix();

		f_ModalBehaivor_Open();
		pnlConfWindow.style.display = "";
		OWSCtl_hdlResizeForConfWindow(null, true);
		pnlConfWindow.style.visibility = "visible";

		//~~~ if selected hotel is carmel forest allow only selection of the number of adults and
		//~~~ hide other selections
		OWSCtl_setStuffDisplay();
		
		//~~~ enable submit button if hotel and dates selection are valid and disable it otherwise
		OWSCtl_setSubmitButtonDisplay();
	}   
}

function OWSCtl_closeConfWindow(button){
   var oConf = OWSCtl_getConfData();
   var pnlConfWindow = document.getElementById(oConf.pnlConfWindow);
   if(pnlConfWindow != null){
      f_ModalBehaivor_Close();
      pnlConfWindow.style.visibility = "hidden";
      pnlConfWindow.style.display = "none";
      
      oConf.PACKAGE = null;
      document.getElementById(oConf.CLID + "___PACKAGEID").value = "";      
      document.getElementById(oConf.CLID + "___OVEROBJECT").value = "";

      document.getElementById(oConf.pnlPackageTitle).style.display = "none";      
      OWSCtl_fixMainHotelComboBox();
      //OWSCtl_fixFilteredHotelComboBox();
      
      OWSCtl_dateControlFix();
      var dStart = eval(document.getElementById(oConf.CLID + "___S_BEGIN").value); 
      var dEnd = eval(document.getElementById(oConf.CLID + "___S_END").value);
      var oStart = PioDateControl_Get(oConf.ctlDateBegin);
      var oEnd = PioDateControl_Get(oConf.ctlDateEnd);      
      oStart.setCurrentDate(dStart);
      oEnd.setCurrentDate(dEnd);
      
      OWSCtl_setStuffComboBoxes(document.getElementById(oConf.CLID + "___S_STUFFCONF").value);                 
   }
}

function OWSCtl_clearConfWindow(){
    var oConf = OWSCtl_getConfData();
    
    oConf.PACKAGE = null;
    document.getElementById(oConf.CLID + "___PACKAGEID").value = "";
    document.getElementById(oConf.CLID + "___OVEROBJECT").value = "";
    
    document.getElementById(oConf.pnlPackageTitle).style.display = "none";
    if(OWSCtl_currentHotelPageInfo != null){
       OWSCtl_selectInHotelComboBox(document.getElementById(oConf.ddlHotels), OWSCtl_currentHotelPageInfo.key);
    }else{
       document.getElementById(oConf.ddlHotels).selectedIndex = 0;
    }
    OWSCtl_fixFilteredHotelComboBox();        
    
    var oStart = PioDateControl_Get(oConf.ctlDateBegin);
    var oEnd = PioDateControl_Get(oConf.ctlDateEnd);    
    oStart.setCurrentDate(null);
    oEnd.setCurrentDate(null);            
    
    OWSCtl_setStuffComboBoxes(null);
}

function OWSCtl_submitConfWindow(button){
    var oConf = OWSCtl_getConfData();
    OWSCtl_fixMainHotelComboBox();
    //OWSCtl_fixFilteredHotelComboBox();
    eval(oConf.MAKESEARCHPOSTBACK);
}

function OWSCtl_resetConfWindow(button)
{
    var oConf = OWSCtl_getConfData();
    eval(oConf.MAKERESETPOSTBACK);
}

function OWSCtl_openClearConfWindow(button)
{
	OWSCtl_openConfWindow(button);
	OWSCtl_clearConfWindow();
}

function OWSCtl_isValidHotel()
{
    var oConf = OWSCtl_getConfData();
	var ddlHotels = document.getElementById(oConf.ddlHotels);//debugger
	return ddlHotels != null && ddlHotels.value != oConf.HCONF_INVALID_HOTEL_VALUE;
}

function OWSCtl_validateHotel()
{
	if (!OWSCtl_isValidHotel())
	{
		alert(oConf.HCONF_INVALID_HOTEL_MESSAGE);
		PioWeb.setClassName(null, $get(oConf.cmdFind), null, "half-transparent", false, false); //~~~ enable submit button
		return false;
	}
	return true;
}

function OWSCtl_setSubmitButtonDisplay()
{
	//~~~ disable submit button if dates and hotel selection is invalid and enable it otherwise
	var oConf = OWSCtl_getConfData();
	var oDateBegin = PioDateControl_Get(oConf.ctlDateBegin);
	var oDateEnd = PioDateControl_Get(oConf.ctlDateEnd);
	var dBegin = oDateBegin.getCurrentDate();
	var dEnd = oDateEnd.getCurrentDate();
	var bHotelIsValid = OWSCtl_isValidHotel();
	var bDisableSubmitButton = dBegin == null || dEnd == null || dBegin >= dEnd || !bHotelIsValid;
	PioWeb.setClassName(null, $get(oConf.cmdFind), null, "half-transparent", bDisableSubmitButton, false);
}

function OWSCtl_setStuffDisplay()
{
	var oConf = OWSCtl_getConfData();
	var ddlHotels = document.getElementById(oConf.ddlHotels);
	if (ddlHotels == null)
		return;
	
	//debugger
	var bShowNumAdultsSelectionOnly = /^CF|FC\{/.test(ddlHotels.value);
	var lblStuffChildren1 = document.getElementById(oConf.lblStuffChildren1);
	if (lblStuffChildren1 != null) lblStuffChildren1.style.display = !bShowNumAdultsSelectionOnly? "": "none";
	var ddlStuffChildren1 = document.getElementById(oConf.ddlStuffChildren1);
	if (ddlStuffChildren1 != null)
	{
		ddlStuffChildren1.style.visibility = !bShowNumAdultsSelectionOnly? "visible": "hidden";
		if (bShowNumAdultsSelectionOnly) ddlStuffChildren1.selectedIndex = 0;
	}
	var lblStuffBabies1 = document.getElementById(oConf.lblStuffBabies1);
	if (lblStuffBabies1 != null) lblStuffBabies1.style.display = !bShowNumAdultsSelectionOnly? "": "none";
	var ddlStuffBabies1 = document.getElementById(oConf.ddlStuffBabies1);
	if (ddlStuffBabies1 != null)
	{
		ddlStuffBabies1.style.visibility = !bShowNumAdultsSelectionOnly? "visible": "hidden";
		if (bShowNumAdultsSelectionOnly) ddlStuffBabies1.selectedIndex = 0;
	}
	var lblStuffChildren2 = document.getElementById(oConf.lblStuffChildren2);
	if (lblStuffChildren2 != null) lblStuffChildren2.style.display = !bShowNumAdultsSelectionOnly? "": "none";
	var ddlStuffChildren2 = document.getElementById(oConf.ddlStuffChildren2);
	if (ddlStuffChildren2 != null)
	{
		ddlStuffChildren2.style.visibility = !bShowNumAdultsSelectionOnly? "visible": "hidden";
		if (bShowNumAdultsSelectionOnly) ddlStuffChildren2.selectedIndex = 0;
	}
	var lblStuffBabies2 = document.getElementById(oConf.lblStuffBabies2);
	if (lblStuffBabies2 != null) lblStuffBabies2.style.display = !bShowNumAdultsSelectionOnly? "": "none";
	var ddlStuffBabies2 = document.getElementById(oConf.ddlStuffBabies2);
	if (ddlStuffBabies2 != null)
	{
		ddlStuffBabies2.style.visibility = !bShowNumAdultsSelectionOnly? "visible": "hidden";
		if (bShowNumAdultsSelectionOnly) ddlStuffBabies2.selectedIndex = 0;
	}
}

function OWSCtl_hdlResizeForConfWindow(e, forse){
    var oConf;
    try{oConf = OWSCtl_getConfData();}catch(e){oConf = null;}
    if(oConf == null) return;
    var pnlConfWindow = document.getElementById(oConf.pnlConfWindow);
    if(pnlConfWindow == null) return;
    
    if(forse || pnlConfWindow.style.visibility != "hidden"){ 
        var iX = (document.body.clientWidth - pnlConfWindow.offsetWidth) / 2;
        var iY = (document.body.clientHeight - pnlConfWindow.offsetHeight) / 2;   
        if(PioWeb.BrName == "IE"){
            pnlConfWindow.style.left = iX + "px";
            pnlConfWindow.style.setExpression("top", "document.getElementsByTagName('body')[0].scrollTop+" + iY + "+'px'");            
        }else{
            pnlConfWindow.style.left = iX + "px";            
            pnlConfWindow.style.top = iY + "px";            
        }
    }
}
PioWeb.attachEvent(window, "resize", OWSCtl_hdlResizeForConfWindow);


function OWSCtl_renderHotelComboBoxOptions(newComboBoxId){
   var oConf = OWSCtl_getConfData();
   var ctlHotel = document.getElementById(oConf.ddlHotels);
   
   if(OWSCtl_currentHotelPageInfo != null){
       sOverValue = OWSCtl_currentHotelPageInfo.key;
       OWSCtl_selectInHotelComboBox(ctlHotel, sOverValue);
   }   
   
   //document.write(ctlHotel.innerHTML);
   for(var i = 0; i < ctlHotel.options.length; i++){
       document.write("<OPTION value=\"" + ctlHotel.options[i].value + "\"");
       if(i == ctlHotel.selectedIndex) document.write(" selected");
       document.write(">" + PioWeb.htmlEncode(ctlHotel.options[i].text) + "</OPTION>");
   }  
   
   if(OWSCtl_hotelsCombos.length == 0){
       OWSCtl_hotelsCombos.push(oConf.ddlHotels);       
   }
   OWSCtl_hotelsCombos.push(newComboBoxId);      
}

function OWSCtl_renderStuffComboBoxOptions(type, stuffCong){
   var iStart = 0;
   var iEnd = 4;
   
   switch(type){
       case 0 :
          //alert(stuffCong);
          iStart = 1;
          iEnd = 1; //2;
          break;
       case 1: 
          iStart = 1;
          iEnd = 5;
          break;
       case 4:
          iEnd = 5;
          break;    
   }   
   
   var sSelected = new String(stuffCong);
   sSelected = sSelected.substr(type, 1);
   var iSelected = sSelected * 1;
   
   if((type == 1 || type == 4) && iSelected == 0){
       var sSelected1 = new String(stuffCong);
       if(sSelected1.substr(type + 1, 1) * 1 == 0 && sSelected1.substr(type + 2, 1) * 1 == 0){
           iSelected = 2;//~~~ default stuff
       }
   }
   
   for(var i = iStart; i <= iEnd; i++){
      document.write("<OPTION value=\"" + i + "\"" + ((iSelected == i) ? " selected" : "") + ">" + i + "</OPTION>");   
   }
}

function OWSCtl_fixHotelComboBox(combo, isMainCombobox)
{
	if (combo != null && combo.value == "")
	{
		if (combo.selectedIndex <= combo.options.length - 2)
			combo.selectedIndex = combo.selectedIndex + 1;
		else
			combo.selectedIndex = 0;
	}
    else if (combo != null)
    {
		//~~~ if selected hotel is carmel forest allow only selection of the number of adults and
		//~~~ hide other selections
		OWSCtl_setStuffDisplay();
		
		//~~~ enable submit button if hotel and dates selection are valid and disable it otherwise
		OWSCtl_setSubmitButtonDisplay();
    }
	if (isMainCombobox)
	{
		OWSCtl_dateControlFix_ByHotelComboBox();
	}
}

function OWSCtl_fixMainHotelComboBox(){
   var oConf = OWSCtl_getConfData();
   
   var sOverValue = document.getElementById(oConf.CLID + "___OVEROBJECT").value;
   if(sOverValue != ""){
      OWSCtl_selectInHotelComboBox(document.getElementById(oConf.ddlHotels), sOverValue);
   }else if(OWSCtl_hotelsCombos.length > 1){
      document.getElementById(oConf.ddlHotels).selectedIndex = document.getElementById(OWSCtl_hotelsCombos[1]).selectedIndex;
   }else if(OWSCtl_currentHotelPageInfo != null){
      sOverValue = OWSCtl_currentHotelPageInfo.key;
      OWSCtl_selectInHotelComboBox(document.getElementById(oConf.ddlHotels), sOverValue);
   }else{
      document.getElementById(oConf.ddlHotels).value = document.getElementById(oConf.CLID + "___S_HOTEL").value; 
   }       
}

function OWSCtl_fixFilteredHotelComboBox(){
   var iRv = -1;
   var oConf = OWSCtl_getConfData();
   
   var ddlHotelsFiltered = document.getElementById(oConf.ddlHotelsFiltered);
   var ddlHotels = document.getElementById(oConf.ddlHotels);
   
   ddlHotelsFiltered.options.length = 0;   
   if(oConf.PACKAGE != null){
        var ar_sHotels = oConf.PACKAGE.H;
        if(ar_sHotels != null && ar_sHotels.length > 0){                        
            for(var i=0; i<ar_sHotels.length; i++){
                var sHotelKey = ar_sHotels[i];
                for(var j = 0; j < ddlHotels.options.length; j++){
                   var sOpt = ddlHotels.options[j].value;
                   var sSeparatorIndex = sOpt.indexOf("{");
                   if(sSeparatorIndex < 0) continue;
                   var sHotelKey1 = sOpt.substr(0, sSeparatorIndex);
                   if(sHotelKey == sHotelKey1){
                       var oHotelOption = new Option();
                       oHotelOption.text = ddlHotels.options[j].text;
                       oHotelOption.value = sOpt;
                       ddlHotelsFiltered.options[ddlHotelsFiltered.options.length] = oHotelOption;
                       if(ddlHotels.selectedIndex == j){
                           ddlHotelsFiltered.selectedIndex = ddlHotelsFiltered.options.length -1;
                           iRv = 1;
                       }
                       break;
                   }         
                }
            }  
        }
   }
   
   ddlHotelsFiltered.disabled = (ddlHotelsFiltered.options.length == 1);
   ddlHotelsFiltered.style.display = (ddlHotelsFiltered.options.length > 0) ? "" : "none";
   ddlHotels.style.display = (ddlHotelsFiltered.options.length == 0) ? "" : "none";
   
   if(iRv == -1){
       if(ddlHotelsFiltered.options.length > 0){
           iRv = 0;           
           for(var j = 0; j < ddlHotels.options.length; j++){
               if(ddlHotels.options[j].value == ddlHotelsFiltered.options[0].value){
                    ddlHotels.selectedIndex = j;
                    break;
               }
           }
       }
   }
   return iRv;
}

function OWSCtl_fixFilteredHotelComboBox1(filteredHotelCombo){
   var oConf = OWSCtl_getConfData();     
   var sValue = filteredHotelCombo.options[filteredHotelCombo.selectedIndex].value;   
   var ddlHotels = document.getElementById(oConf.ddlHotels);
   for(var j = 0; j < ddlHotels.options.length; j++){
       if(ddlHotels.options[j].value == sValue){
          ddlHotels.selectedIndex = j;
          break;
       }
   }   
}

function OWSCtl_selectInHotelComboBox(hotelCombo, hotelOrRoomKey){
    if(hotelCombo == null || hotelOrRoomKey == null || typeof(hotelOrRoomKey) != 'string' || hotelOrRoomKey == ""){
        return;
    }

    var ctlHotel = hotelCombo;
    var sOverValue = hotelOrRoomKey;
        
    var sSeparatorIndex = sOverValue.indexOf(":");
    var sHotelKey = sOverValue;
    if(sSeparatorIndex > 0){
        sHotelKey = sOverValue.substr(0, sSeparatorIndex);
    }
    
    for(var i = 0; i < ctlHotel.options.length; i++){
        var sOpt = ctlHotel.options[i].value;
        sSeparatorIndex = sOpt.indexOf("{");
        if(sSeparatorIndex < 0) continue;
        var sHotelKey1 = sOpt.substr(0, sSeparatorIndex);
        if(sHotelKey == sHotelKey1){
           ctlHotel.selectedIndex = i;
           break; 
        }         
    }   
}

function OWS_writeHotelTitleInNotActiveMode(hotelTitle, hotelUrl){
   if(OWSCtl_currentHotelPageInfo != null){   
      document.write("<A href=\"" + OWSCtl_currentHotelPageInfo.url + "\">" + OWSCtl_currentHotelPageInfo.title + "</A>");
   }else if(hotelUrl != ""){
      document.write("<A href=\"" + hotelUrl + "\">" + hotelTitle + "</A>");
   }else{
      document.write(hotelTitle);
   }
}

function OWSCtl_setStuffComboBoxes(stuffConf)
{
	if (stuffConf != null && (stuffConf.length == 4 || stuffConf.length == 7))
	{
		var oConf = OWSCtl_getConfData();

		var ddlStuffRoomsNumber = document.getElementById(oConf.ddlStuffRoomsNumber);
		var ddlStuffAdults1 = document.getElementById(oConf.ddlStuffAdults1);
		var ddlStuffChildren1 = document.getElementById(oConf.ddlStuffChildren1);
		var ddlStuffBabies1 = document.getElementById(oConf.ddlStuffBabies1);
		var ddlStuffAdults2 = document.getElementById(oConf.ddlStuffAdults2);
		var ddlStuffChildren2 = document.getElementById(oConf.ddlStuffChildren2);
		var ddlStuffBabies2 = document.getElementById(oConf.ddlStuffBabies2);
		var pnlStuffRoom2 = document.getElementById(oConf.pnlStuffRoom2);

		//~~~ show all stuff combo boxes except for adult in case they are hidden because of a previous hotel selection
		ddlStuffChildren1.style.visibility = "visible";
		ddlStuffBabies1.style.visibility = "visible";
		ddlStuffChildren2.style.visibility = "visible";
		ddlStuffBabies2.style.visibility = "visible";

		//~~~ set stuff combo boxes selected values according to configuration
		var sRoomNumber = stuffConf.substr(0, 1);
		if(sRoomNumber != "1" && sRoomNumber != "2") sRoomNumber = "1";
		ddlStuffRoomsNumber.value = sRoomNumber;
		ddlStuffAdults1.value = stuffConf.substr(1, 1);
		ddlStuffChildren1.value = stuffConf.substr(2, 1);
		ddlStuffBabies1.value = stuffConf.substr(3, 1);

		if (stuffConf.length == 7 && sRoomNumber != "1")
		{
			ddlStuffAdults2.value = stuffConf.substr(4, 1);
			ddlStuffChildren2.value = stuffConf.substr(5, 1);
			ddlStuffBabies2.value = stuffConf.substr(6, 1);
			pnlStuffRoom2.style.display = "";
		}
		else
		{
			ddlStuffAdults2.selectedIndex = 0;
			ddlStuffChildren2.selectedIndex = 0;
			ddlStuffBabies2.selectedIndex = 0;
			pnlStuffRoom2.style.display = "none";
		}
	}
	else
	{
		OWSCtl_setStuffComboBoxes("1200");
	}      
}

function OWSCtl_fixStuffComboBox(combo){
    var oConf = OWSCtl_getConfData();
    
    var ddlStuffRoomsNumber = document.getElementById(oConf.ddlStuffRoomsNumber);
    var ddlStuffAdults1 = document.getElementById(oConf.ddlStuffAdults1);
    var ddlStuffChildren1 = document.getElementById(oConf.ddlStuffChildren1);
    var ddlStuffBabies1 = document.getElementById(oConf.ddlStuffBabies1);
    var ddlStuffAdults2 = document.getElementById(oConf.ddlStuffAdults2);
    var ddlStuffChildren2 = document.getElementById(oConf.ddlStuffChildren2);
    var ddlStuffBabies2 = document.getElementById(oConf.ddlStuffBabies2);
    var pnlStuffRoom2 = document.getElementById(oConf.pnlStuffRoom2);
    
    OWSCtl_fixStuffComboBox2(ddlStuffRoomsNumber, ddlStuffAdults1, ddlStuffChildren1, ddlStuffBabies1, ddlStuffAdults2, ddlStuffChildren2, ddlStuffBabies2, pnlStuffRoom2);               
}
function OWSCtl_fixStuffComboBox1(comboGroupId){       
    var ddlStuffRoomsNumber = document.getElementById(comboGroupId + "__ddlStuffRoomsNumber");
    var ddlStuffAdults1 = document.getElementById(comboGroupId + "__ddlStuffAdults1");
    var ddlStuffChildren1 = document.getElementById(comboGroupId + "__ddlStuffChildren1");
    var ddlStuffBabies1 = document.getElementById(comboGroupId + "__ddlStuffBabies1");
    var ddlStuffAdults2 = document.getElementById(comboGroupId + "__ddlStuffAdults2");
    var ddlStuffChildren2 = document.getElementById(comboGroupId + "__ddlStuffChildren2");
    var ddlStuffBabies2 = document.getElementById(comboGroupId + "__ddlStuffBabies2");
    var pnlStuffRoom2 = document.getElementById(comboGroupId + "__pnlStuffRoom2");
    
    OWSCtl_fixStuffComboBox2(ddlStuffRoomsNumber, ddlStuffAdults1, ddlStuffChildren1, ddlStuffBabies1, ddlStuffAdults2, ddlStuffChildren2, ddlStuffBabies2, pnlStuffRoom2);               
}
function OWSCtl_fixStuffComboBox2(ddlStuffRoomsNumber, ddlStuffAdults1, ddlStuffChildren1, ddlStuffBabies1, ddlStuffAdults2, ddlStuffChildren2, ddlStuffBabies2, pnlStuffRoom2){
            
    var iStuffRoomsNumber = ddlStuffRoomsNumber.value * 1;
    var iStuffAdults1 = ddlStuffAdults1.value * 1;
    var iStuffChildren1 = ddlStuffChildren1.value * 1;
    var iStuffBabies1 = ddlStuffBabies1.value * 1;
    var iStuffAdults2 = ddlStuffAdults2.value * 1;
    var iStuffChildren2 = ddlStuffChildren2.value * 1;
    var iStuffBabies2 = ddlStuffBabies2.value * 1;
    
    if(iStuffRoomsNumber < 1 || iStuffRoomsNumber > 2){
        iStuffRoomsNumber = 1;
        ddlStuffRoomsNumber.value = "1";
    }
    pnlStuffRoom2.style.display = (iStuffRoomsNumber == 2) ? "" : "none";
    if(pnlStuffRoom2.getAttribute("nextRowIsMine") == "yes"){
        try{
        pnlStuffRoom2.nextSibling.style.display = pnlStuffRoom2.style.display;
        }catch(e){}
    }
    
    if(iStuffAdults1 < 1){
        iStuffAdults1 = 1;
        ddlStuffAdults1.value = "1";
    }       
    
    if(iStuffAdults2 == 0 && iStuffBabies2 > 0){
        iStuffBabies2 = 0;
        ddlStuffBabies2.value = "0";
    }       
}

function OWSCtl_setDatesRange(startDate, endDate){
    if(startDate == null || endDate == null || startDate >= endDate) return;
    var oConf = OWSCtl_getConfData();
    
    var oStart = PioDateControl_Get(oConf.ctlDateBegin);
    var oEnd = PioDateControl_Get(oConf.ctlDateEnd);
    
    oStart.setCurrentDate(startDate);
    oEnd.setCurrentDate(endDate);           
}

function OWSCtl_dateControlFix(){
    var oConf = OWSCtl_getConfData();
    var oDateBegin = PioDateControl_Get(oConf.ctlDateBegin);
    var oDateEnd = PioDateControl_Get(oConf.ctlDateEnd);
    
    if(oConf.PACKAGE != null && oConf.PACKAGE.DG){
       if(!oConf.PACKAGE.DG){
           // ???             
       }else if(!oConf.PACKAGE.DF){
           if(oConf.PACKAGE.D1 != null && oConf.PACKAGE.D2 != null){
               oDateBegin.setMinDate(oConf.PACKAGE.D1);
               oDateBegin.setMaxDate(oConf.PACKAGE.D1);
               oDateBegin.setCurrentDate(oConf.PACKAGE.D1);
                
               oDateEnd.setMinDate(oConf.PACKAGE.D2);
               oDateEnd.setMaxDate(oConf.PACKAGE.D2);
               oDateEnd.setCurrentDate(oConf.PACKAGE.D2);              
               
               return;
           }
       }else{
           if(oConf.PACKAGE.D1 != null && oConf.PACKAGE.D2 != null){
               oDateBegin.setMinDate(oConf.PACKAGE.D1);
               oDateBegin.setMaxDate(new Date(oConf.PACKAGE.D2.getFullYear(), oConf.PACKAGE.D2.getMonth(), oConf.PACKAGE.D2.getDate() - oConf.PACKAGE.DM));               
               OWSCtl_dateControlEndDateSetMinAndMax(oDateBegin.getCurrentDate());
               oDateBegin.refresh();
               oDateEnd.refresh();
               OWSCtl_prevNextMonth(null, oConf.ctlDateBegin, 0, true);
               var dDisplayBegin = oDateBegin.getDisplayDate();
               var dDisplayEnd = oDateEnd.getDisplayDate();
               if(dDisplayBegin > dDisplayEnd)
                  OWSCtl_prevNextMonth(null, oConf.ctlDateEnd, 1, false);               
               else
                  OWSCtl_prevNextMonth(null, oConf.ctlDateEnd, 0, true);
               return;
           }//else if(oConf.PACKAGE.DM > 0){               
           //}
       }
    }
    
    oDateBegin.setMinDate(PioDateMonthView_today);
    oDateBegin.setMaxDate(null);
    OWSCtl_dateControlEndDateSetMinAndMax(oDateBegin.getCurrentDate());
    
    oDateBegin.refresh();
    oDateEnd.refresh();
    OWSCtl_prevNextMonth(null, oConf.ctlDateBegin, 0, true);
    OWSCtl_prevNextMonth(null, oConf.ctlDateEnd, 0, true);
    return;
}

function OWSCtl_dateControlFix_ByHotelComboBox(){
    var oConf = OWSCtl_getConfData();
    var oDateBegin = PioDateControl_Get(oConf.ctlDateBegin);
    var oDateEnd = PioDateControl_Get(oConf.ctlDateEnd);
    
    OWSCtl_dateControlEndDateSetMinAndMax(oDateBegin.getCurrentDate());
    
    oDateBegin.refresh();
    oDateEnd.refresh();
    OWSCtl_prevNextMonth(null, oConf.ctlDateBegin, 0, true);
    OWSCtl_prevNextMonth(null, oConf.ctlDateEnd, 0, true);
}

function OWSCtl_dateControlEndDateSetMinAndMax(date){
    var oConf = OWSCtl_getConfData();
    var oDateEnd = PioDateControl_Get(oConf.ctlDateEnd);
    
    if(date == null){
       oDateEnd.setCurrentDate(null);
    }
        
    var iMinDays = 1;    
    var iMaxDays = 14;
    if(oConf.PACKAGE != null && oConf.PACKAGE.DM > 0){
        if(date != null)
           iMinDays = oConf.PACKAGE.DM;
    }else{
        var ddlHotels = document.getElementById(oConf.ddlHotels);
        var sCurrentHotelValue = ddlHotels.value;
        //if (sCurrentHotelValue.indexOf("DS{") == 0 || sCurrentHotelValue.indexOf("TT{") == 0 || sCurrentHotelValue.indexOf("CF{") == 0 || sCurrentHotelValue.indexOf("FC{") == 0){
        if (/^DS|TT|CF|FC\{/.test(sCurrentHotelValue)) {
            iMaxDays = 30;
        }
    }
    
    var dMin1 = (date == null) ? PioDateMonthView_today : date;
    var dMin = new Date(dMin1.getFullYear(), dMin1.getMonth(), dMin1.getDate() + iMinDays);
    var dMax = (date == null) ? null : new Date(dMin1.getFullYear(), dMin1.getMonth(), dMin1.getDate() + iMaxDays);    
    
    //if(oConf.PACKAGE != null && oConf.PACKAGE.DF && oConf.PACKAGE.D2 != null && (dMax == null || oConf.PACKAGE.D2 < dMax)){
    if(oConf.PACKAGE != null && oConf.PACKAGE.D2 != null && (dMax == null || oConf.PACKAGE.D2 < dMax)){
       dMax = oConf.PACKAGE.D2;
    }    
    
    if(dMax != null && dMax < dMin) dMax = dMin; 
    //alert(iMinDays + "\n" + iMaxDays + "\n" + dMin + "\n" + dMax); 
             
    oDateEnd.setMinDate(dMin);
    oDateEnd.setMaxDate(dMax);           
}

function OWSCtl_dateControlChangeHandler(dateControl)
{
	var oConf = OWSCtl_getConfData();
	var oDate = PioDateControl_Get(dateControl);
	var oDateBegin = PioDateControl_Get(oConf.ctlDateBegin);
	var oDateEnd = PioDateControl_Get(oConf.ctlDateEnd);

	var bIsBegin = false;
	var sClientId = oConf.ctlDateEnd;    
	if (oDate == oDateBegin)
	{
		bIsBegin = true;
		sClientId = oConf.ctlDateBegin;
	}
	else
	{
		if(oDateEnd.clickDayOnMonthViewHandler == null)
		{
			oDateEnd.clickDayOnMonthViewHandler = function(dateControl)
				{
					if (oDateBegin.getCurrentDate() == null)
					{
						alert(oConf.HCONF_CHOOSE_DATE_START_ALERT);
					}
				};
		}
	}
    
	var dBegin = oDateBegin.getCurrentDate();

	var dDisplayEndSaved = null;
	//if (bIsBegin){
	if (dBegin != null && oDateEnd.getCurrentDate() == null)
	{
		dDisplayEndSaved = oDateEnd.getDisplayDate();
	}
	//}

	OWSCtl_dateControlEndDateSetMinAndMax(dBegin);

	//if (bIsBegin){
	oDateEnd.refresh();
	if (dDisplayEndSaved != null)
	{
		//alert(dDisplayEndSaved);
		if (!oDateEnd.setDisplayDate(dDisplayEndSaved))
		{
			oDateEnd.setDisplayDate(new Date(dDisplayEndSaved.getFullYear(), dDisplayEndSaved.getMonth(), 32));
		}
		//alert(dDisplayEndSaved + "\n" + oDateEnd.getDisplayDate());
	}
	OWSCtl_prevNextMonth(null, oConf.ctlDateEnd, 0, true);
	//}else{
	oDateBegin.refresh();
	OWSCtl_prevNextMonth(null, oConf.ctlDateBegin, 0, true);
	//}

	var dEnd = oDateEnd.getCurrentDate();
	var dCurrent = (bIsBegin) ? dBegin : dEnd;

	var lblCurrentDate =  document.getElementById(sClientId + "__currentDate");
	if (dCurrent == null)
	{
		lblCurrentDate.innerHTML = (bIsBegin) ? oConf.HCONF_CHOOSE_DATE_START_ALERT_NOT_SELECTED : oConf.HCONF_CHOOSE_DATE_END_ALERT_NOT_SELECTED;
	}
	else
	{
		var iDay = dCurrent.getDate();
		var iMonth = dCurrent.getMonth() + 1;
		lblCurrentDate.innerHTML = PioDateMonthView_dayNames[dCurrent.getDay()] + " " + ((iDay < 10) ? "0" : "") + iDay + "/" + ((iMonth < 10) ? "0" : "") + iMonth + "/" + (dCurrent.getFullYear() + "").substr(2,2);
	}
    
	var pnlDuration = document.getElementById(oConf.pnlDuration);
	if (dBegin != null && dEnd != null && dBegin < dEnd)
	{
		var dTmp = new Date(dEnd - dBegin);
		var iDuration = dTmp.getDate() - 1;
		pnlDuration.innerHTML = PioWeb.stringFormat(((iDuration == 1) ? oConf.HCONF_DATE_DURATION_ONE : oConf.HCONF_DATE_DURATION_FORMAT), iDuration);
	}
	else
	{
		pnlDuration.innerHTML = oConf.HCONF_CHOOSE_DATE_DURATION_ALERT_NOT_SELECTED;
	}
	
	//~~~ disable submit button if dates and hotel selection is invalid and enable it otherwise
	var bDisableSubmitButton = dBegin == null || dEnd == null || dBegin >= dEnd || !OWSCtl_isValidHotel();
	PioWeb.setClassName(null, $get(oConf.cmdFind), null, "half-transparent", bDisableSubmitButton, false);
}

function OWSCtl_prevNextMonth(button, clientId, dir, recurs){   
    var oDate = PioDateControl_Get(clientId);
    
    var iDir = 0;
    if(dir != null){
       if(dir < 0) iDir = -1; else if(dir > 0) iDir = 1;      
    }
    if(iDir != 0) if(!oDate.nextPrevMonthView(iDir)) return;    
    
    var dDisplay = oDate.getDisplayDate();
    if(dDisplay == null) return;
    
    if(button == null){
        button = document.getElementById(clientId + ((iDir < 0) ? "__prevMonthButton" : "__nextMonthButton"));
    }
            
    if(button != null){
        var ctlMonthLabel = (iDir < 0) ? button.nextSibling : button.previousSibling;
        if(ctlMonthLabel != null){
            ctlMonthLabel.innerHTML = PioDateMonthView_monthNames[dDisplay.getMonth()] + " " + dDisplay.getFullYear();
        }
    }
    
    //return;
    
    if(!recurs){
       var oConf = OWSCtl_getConfData();
       if(clientId == oConf.ctlDateBegin){
           var oDateBegin = oDate;
           var oDateEnd = PioDateControl_Get(oConf.ctlDateEnd);
           var dDisplayBegin = dDisplay;
           var dDisplayEnd = oDateEnd.getDisplayDate();
           
           switch(iDir){
               case 0 :
                  break;
               case 1 :
                  //alert(dDisplayBegin + "\n" + dDisplayEnd + "\n" + (dDisplayEnd < dDisplayBegin));
                  if(dDisplayEnd < dDisplayBegin){
                      var bAtLeastOne = false;
                      while(true){
                         //oDateEnd.nextPrevMonthViewIsEnabled(iDir)
                         //oDateEnd.setDisplayDate(dDisplayBegin);
                         if(!oDateEnd.nextPrevMonthView(iDir)){
                            break;
                         }
                         bAtLeastOne = true;
                         dDisplayEnd = oDateEnd.getDisplayDate();
                         if(!(dDisplayEnd > dDisplayBegin)){
                             break;
                         }                                                  
                      }
                      if(bAtLeastOne){
                         OWSCtl_prevNextMonth(null, oConf.ctlDateEnd, 0, true);
                      }
                  }
                  break;
               case -1 :
                  var iDiff = dDisplayEnd - dDisplayBegin;
                  //alert(iDiff + "\n" + dDisplayBegin + "\n" + dDisplayEnd);
                  if(iDiff > 2678400000){ //~~~ more then 1 month
                      var bAtLeastOne = false;
                      while(true){                  
                          if(!oDateEnd.nextPrevMonthView(iDir)){
                             break;
                          }
                          bAtLeastOne = true;
                          dDisplayEnd = oDateEnd.getDisplayDate();
                          iDiff = dDisplayEnd - dDisplayBegin;
                          if(!(iDiff > 2678400000)){
                             break;
                          }
                      }
                  }
                  if(bAtLeastOne){
                      OWSCtl_prevNextMonth(null, oConf.ctlDateEnd, 0, true);
                  }               
                  break;
           }
       }else{
           var oDateBegin = PioDateControl_Get(oConf.ctlDateBegin);
           var oDateEnd = oDate;
           var dDisplayBegin = oDateBegin.getDisplayDate();
           var dDisplayEnd = dDisplay;
           
           switch(iDir){
               case 0 :
                  break;
               case 1 :
                  var iDiff = dDisplayEnd - dDisplayBegin;
                  //alert(iDiff + "\n" + dDisplayBegin + "\n" + dDisplayEnd);
                  if(iDiff > 2678400000){ //~~~ more then 1 month
                      var bAtLeastOne = false;
                      while(true){                  
                          if(!oDateBegin.nextPrevMonthView(iDir)){
                             break;
                          }
                          bAtLeastOne = true;
                          dDisplayBegin = oDateBegin.getDisplayDate();
                          iDiff = dDisplayEnd - dDisplayBegin;
                          if(!(iDiff > 2678400000)){
                             break;
                          }
                      }
                  }
                  if(bAtLeastOne){
                      OWSCtl_prevNextMonth(null, oConf.ctlDateBegin, 0, true);
                  }               
                  break;                                                               
               case -1 :
                  //alert(dDisplayBegin + "\n" + dDisplayEnd + "\n" + (dDisplayEnd < dDisplayBegin));
                  if(dDisplayEnd < dDisplayBegin){
                      var bAtLeastOne = false;
                      while(true){
                         if(!oDateBegin.nextPrevMonthView(iDir)){
                            break;
                         }
                         bAtLeastOne = true;
                         dDisplayBegin = oDateBegin.getDisplayDate();
                         if(!(dDisplayEnd > dDisplayBegin)){
                             break;
                         }                                                  
                      }
                      if(bAtLeastOne){
                         OWSCtl_prevNextMonth(null, oConf.ctlDateBegin, 0, true);
                      }
                  }
                  break;                  
           }
       }
    }        
}

//************************************************
function f_CityStreetAutoComplete_Shown(sender, args){
    if(PioWeb.BrName == "IE"){
         PioWeb.setChildCoodinates(sender._element, sender._completionListElement, "align", "align" , "bottom", "top", 0, 0);
    }
}

function f_CityStreetAutoComplete_ItemSelected(sender, args){
     sender._element.value = args._value;     
}

function f_CityStreetAutoComplete_Populating(sender, args){
     var sContextId = sender._element.id.replace("fldStreet", "fldCity");
     var ctlContext = $get(sContextId);
     var sContext = ctlContext.value;
     sender._contextKey = sContext;
}

//************************************************

var OWSCtl_PackageItemsIncludedInPriceClick_state = null;
function OWSCtl_PackageItemsIncludedInPriceClick(radiobox){
    if(radiobox == null || radiobox.type != "checkbox") return true;
    
    var iOWSCnt = radiobox.parentNode.getAttribute("owscnt");
    var colCheckboxes = radiobox.form.elements[radiobox.name];
    
    var iOWSCntCur = 0;
    for(var i=0; i<colCheckboxes.length; i++){
       if(colCheckboxes[i].checked) iOWSCntCur++;
    }
    
    if(iOWSCntCur == iOWSCnt)return true;    
    
    if(iOWSCntCur < iOWSCnt){
        return false;
    }else if(iOWSCntCur > iOWSCnt){
        if(radiobox.checked){
            for(var i=0; i<colCheckboxes.length; i++){
                var oCheckbox = colCheckboxes[i];
                if(radiobox != oCheckbox && oCheckbox.checked && oCheckbox.id != OWSCtl_PackageItemsIncludedInPriceClick_state){
                     oCheckbox.checked = false;
                     break;
                }
            }
            OWSCtl_PackageItemsIncludedInPriceClick_state = radiobox.id;
            return true;
        }
    }       
    
    alert("not implemented");    
    return false;       
}

//************************************************


function OWSCtl_searchResults_PageLoaded(sender, args){
     var ctlGetMoreStatus = document.getElementById(__OWSCtl_searchResults_PageLoaded__);
     if(ctlGetMoreStatus != null){
         window.setTimeout("OWSCtl_searchResults_PageLoaded1();",1500);
     }          
}
function OWSCtl_searchResults_PageLoaded1(){   
     var ctlGetMoreStatus = document.getElementById(__OWSCtl_searchResults_PageLoaded__);
     if(ctlGetMoreStatus != null && ctlGetMoreStatus.value == ""){        
         //alert("get more results");
         ctlGetMoreStatus.value += "g";
         eval(__OWSCtl_searchResults_PageLoaded1__);         
     }
}

function OWSCtl_stayHistrory_PageLoaded(sender, args){
     var elTag = document.getElementById("coreTemplate_OWSControls_UserStayHistrory____id");
     if(elTag != null){
        //alert(elTag.value);
        window.setTimeout(elTag.value, 1500);
     }
}




