function doHoc(){
	//solo univisit.
	if (eval(nights)>=100) return;
	if (GettingRates==true) return; //deberia poner un timer para volver a pedirlas. o implementar un cambio de pagina 
	var Properties='';
	var Prop;
	/*for (i=0; i<Page.length;i++){
		if (Page[i].Index!=null){
			Prop=_AllHot[Page[i].Index];
			if (Prop.Provider==0&&Prop.Rates==null&&Prop.getRates==true){
					if (Properties!='') Properties+=',';
					Properties += Prop.Id;
		}
	
	}
	}*/
	/*var CurrentPage;
	for (CurrentPage = 0;CurrentPage<nPages;CurrentPage++)
	{
	
	for (i=0; i<Page.length;i++){	
		if (Page[i].Index!=null){
			Prop=_AllHot[Page[i].Index + (CurrentPage*itemsByPage) ];
			if (Prop)
			{
			if (Prop.Provider==0&&Prop.Rates==null&&Prop.getRates==true){
					if (Properties!='') Properties+=',';
					Properties += Prop.Id;
				}
			}
		}
	}
	}*/
for (i=0; i<_AllHot.length; i++){
	    Prop=_AllHot[i];
	    if (Prop){
		if (_AllHot[i].Enabled==true) 
		{
		    if (Prop.Provider==0&&Prop.Rates==null&&Prop.getRates==true){
					if (Properties!='') Properties+=',';
					Properties += Prop.Id;
				}
		}}
	}
	
	if (Properties=='') return;
    if (sbHocHttp==null) { sbHocHttp = new Ajax.Request(); }
    if (!sbHocHttp.inprogress) 
    {	
        var url = UrlHotelGetRates;
        var dt = new Date(); //do not use cache
        var qry="time=" + dt + "&Provider=0" + "&Properties=" + Properties + '&Currency=' + CurrencyCode + '&AccessCode=' + AccessCode;
       GettingRates=true;
        var sbHocHttp = new Ajax.Request(url,{method: 'get',asynchronous:true,parameters:qry,onComplete:ParseHotelHoc});                        
        
    }
    else { //Espera un tiempo..    
		alert("busy");
    }
}

function SearchHotelIndex(num,serv){
	for (i=0;i<_AllHot.length;i++){
		if (_AllHot[i].Id==num&&_AllHot[i].Provider==serv) return i;
	}
	return -1;
}

function ParseHotelHoc(client) {
    var ii=client.responseXML.getElementsByTagName("Property"); //para saber cuantos hoteles
    var i=0;
    while (ii[i]){//Property
		Hoc=new Object;
		Hoc.Id=getTagText(ii[i],'PropertyNumber');
		Hoc.ServiceProvider=getTagText(ii[i],'ServiceProvider');
		Index=SearchHotelIndex(Hoc.Id,Hoc.ServiceProvider);
		Hoc.CurrencyCode=getTagText(ii[i],'AltCurrency');		
		Hoc.Decimal=getTagText(ii[i],'AltDecimal');
		
		var LowestRate = 0;
		var UvNetRates = 0;
		if (Index>-1){
			Hoc.TaxIncluded=getTagText(ii[i],'TaxIncluded');
			Hoc.Rooms =new Array();
			var jj=ii[i].getElementsByTagName("RoomType");
			var j=0;
			var TotalRate = 0;			
			var TotalRate2 = 0;
			var sameCurrency ="";
			var IsSameCurrency=1;
			while (jj[j]){//RoomType				
				var kk=jj[j].getElementsByTagName("RatePlan");
				var k=0;
				while (kk[k]){//Planes							
					if (getTagText(kk[k],'AltCurrency')==sameCurrency ||  sameCurrency=="")
					{
					    sameCurrency =getTagText(kk[k],'AltCurrency');
					 }
					 else
					 {
					    IsSameCurrency = 0;					    
					}
					k++;
				}
				j++;
			}
			
			var j=0;
			
			while (jj[j]){//RoomType
				HocR=new Object;
				HocR.RoomCode=getTagText(jj[j],'RoomCode');
				HocR.RoomName=getTagText(jj[j],'RoomName');
				HocR.RoomName=HocR.RoomName;
				HocR.RoomDesc=getTagText(jj[j],'RoomDescription');
				HocR.RoomDesc=HocR.RoomDesc;				
				HocR.Plans = new Array();
				var kk=jj[j].getElementsByTagName("RatePlan");
				var k=0;
				while (kk[k]){//Planes		
					HocP=new Object;
					HocP.PlanCode=getTagText(kk[k],'PlanCode');
					HocP.PlanName=getTagText(kk[k],'PlanName');
					HocP.PlanName=HocP.PlanName;
					HocP.Available=getTagText(kk[k],'Available');
					HocP.AgencyPercent=getTagText(kk[k],'AgencyPercent');
					HocP.PlanDescription=getTagText(kk[k],'PlanDescription');
					HocP.PlanDescription=HocP.PlanDescription;
					HocP.AdvBooking=getTagText(kk[k],'AdvBooking');
					HocP.MaxDays=getTagText(kk[k],'MaxDays');
					HocP.MinDays=getTagText(kk[k],'MinDays');
					HocP.Message=getTagText(kk[k],'Message');
					HocP.AccessCode=getTagText(kk[k],'AccessCode');
					HocP.DaysFree=getTagText(kk[k],'DaysFree');
					HocP.DescPromotion=getTagText(kk[k],'DescPromotion');
					HocP.isUvNetRate=getTagText(kk[k],'isUvNetRate');
					HocP.AltCurrency=getTagText(kk[k],'AltCurrency');
					
					// agregado para las promociones //
					//HocP.=getTagText(kk[k],'Message');
					//////////////////////////////////
					HocP.Prices=new Array();
					//Debemos sacar la mas baja.. Tarifa. 
					var ll=kk[k].getElementsByTagName("Price");
					var l=0;
					TotalRate=0;
					TotalRate2=0;
					while (ll[l]){//Precios por dia.
						HP=new Object;
						HP.Day=getTagText(ll[l],'Day');
						//Total
						Total="0";
						Total2="0";
						if (getTagText(ll[l],'AltTotal')!='') Total=getTagText(ll[l],'AltTotal');						
						HP.Total=parseFloat(Total);
						// Agregado para las promociones //
						if (getTagText(ll[l],'AltTotal2')!='') Total2=getTagText(ll[l],'AltTotal2');
						HP.Total2=parseFloat(Total2);
						HP.Available=getTagText(ll[l],'Available')
						HocP.Prices[HocP.Prices.length]=HP;
						
						TotalRate2+=HP.Total
						
						if (HP.Total==HP.Total2)
							TotalRate += HP.Total;
						else// Agregado para las promociones //
							TotalRate += HP.Total2;						
						l++;						
					}
					//puede ser 0, o no numerico ó ke la tarifa con los decimales no sea valor valido
					HocP.Avg =0;
					HocP.AvgT =0;
					if (TotalRate!=0 && l!=0){HocP.Avg = TotalRate/(l);}					 	
					if (TotalRate2!=0 && l!=0){HocP.AvgT = TotalRate2/(l);}	
					if (HocP.Avg!=0 && (HocP.Avg<LowestRate || LowestRate==0) && HocP.Available=='Y')
					{ 
						LowestRate=HocP.Avg;
					}
					
					if (getTagText(kk[k],'isUvNetRate')=='true' && HocP.Available=='Y'){UvNetRates = 1;}				
					k++;					
					
					HocR.Plans[HocR.Plans.length]=HocP;
				}
				Hoc.Rooms[Hoc.Rooms.length]=HocR;			
				j++;
			}
			_AllHot[Index].Rates=Hoc;
			_AllHot[Index].CurrencyCode=Hoc.CurrencyCode;			
			if(IsSameCurrency==1)
			{
			    _AllHot[Index].LowRate=LowestRate;			
			}
			_AllHot[Index].SameCurrency = IsSameCurrency;
			_AllHot[Index].HasUvNetRates=UvNetRates;			
			_AllHot[Index].Decimals=Hoc.Decimal;
			
		}	
		i++;
    }
    //solodeberia mostrar las tarifas que son visibles. 
    
    
    ShowRates();// comente para probar lo del sort by price
   // GettingRates=false;	    
    FillDestino();    
//    initializeMap();
//ordenar con el que está seleccionado...
    SortListing();
	HideSearching();
    //SortBy('UvPicks','aUnivisit');        
} //main function




