﻿$namespace("System.Page.Util");
$namespace("System.Page.HttpContext");
$namespace("System.Data");
$namespace("System.Controls.Slider");
$namespace("System.Controls.Calendar");
$namespace("System.Controls.IncrementalSearch");

var calDtIn = null;
var calDtOut = null;
var piDest = null;


var resultBusca = null;
var sftPrice = null;
var sftRating = null;

var temPagina = 30;
var thumbsPaginas = 30;
var currOrder = null;
var currPagina = 1;
var totRegs = 0;
var totRegsFiltered = 0;
var totPaginas = 0;

var totQuartosAvailability = null;
var LeuAceitou = false;

var dsresult;

var t = new Template("Hoteis"); 

function ExibeHotelPolicies(objDivParam)
{
    var objDiv = document.getElementById(objDivParam) ;
    
    if ($(objDiv.id).style.display == 'none')
    {
        $(objDiv.id).style.display= 'block';
        $(objDiv.id.replace('div','link')).innerHTML = 'Esconder políticas do hotel';
    }
    else
    {
        $(objDiv.id).style.display = 'none';
        $(objDiv.id.replace('div','link')).innerHTML = 'Ver políticas do hotel';
    }
}


function ExibePolicies(objDivParam)
{
    var objDiv = document.getElementById(objDivParam) ;
    
    if ($(objDiv.id).style.display == 'none')
    {
        $(objDiv.id).style.display= 'block';
        $(objDiv.id.replace('div','link')).innerHTML = 'Esconder política de cancelamento do quarto';
    }
    else
    {
        $(objDiv.id).style.display = 'none';
        $(objDiv.id.replace('div','link')).innerHTML = 'Ver política de cancelamento do quarto';
    }
}


function ExibePrecos(objDivParam)
{
    var objDiv = document.getElementById(objDivParam) ;
    
    if ($(objDiv.id).style.display == 'none')
    {
        $(objDiv.id).style.display= 'block';
        $(objDiv.id.replace('div','link')).innerHTML = 'Esconder detalhes de todas as diárias';
    }
    else
    {
        $(objDiv.id).style.display = 'none';
        $(objDiv.id.replace('div','link')).innerHTML = 'Ver detalhes de todas as diárias';
    }
}


function InitCombosPesquisa()
{
    //seta os quartos 1 quarto 1 adulto
    escQuartos(1);
    escChds(1,0);
    escChds(2,0);
    escChds(3,0);
    escChds(4,0);
    
    var date = Hoteis_HoteisResult.ReturnDate().value;
    
	var c = new Calendar($('checkin'));
	c.setDate(date.addDays(5))
	c.init();

	var c1 = new Calendar($('checkout'));
	c1.setDate(date.addDays(10))
	c1.init();

    //seta pesqinc de localidades
    piDest = new IncrementalSearch('destino', Hoteis_HoteisResult.listaDestinosBusca);
    piDest.onSelect = setDestino;
}

function doRoom(room) 
{
  //document.getElementById('setRooms').className = 'setRoom'+room;
  
  for(i=parseInt(room)+1;i<=4;i++) 
  {
       document.getElementById('room'+i).style.display = 'none';
  }
  
  document.getElementById('roomSet').className = 'roomSel roomSel'+room;
  
  return true;
}

function doChildAges(room,qttChilds) 
{
  if (qttChilds != 0) 
  {
       document.getElementById('roomSet').style.display = 'block';
       document.getElementById('roomSet').className = 'roomSel roomSel'+room;
       document.getElementById('room'+room).style.display = 'block';
       document.getElementById('room'+room).className = 'room'+room+' setChild' + qttChilds;


       for(var i=1;i<=4;i++)
       {
            if(i<=qttChilds)
            {
                 $('chdQ' + room + 'A' +i).style.display = "inline";
            }
            else
            {
                 $('chdQ' + room + 'A' +i).style.display = "none";
            }
       }
  } 
  else
  {
       document.getElementById('room'+room).style.display = 'none';
  }
  
  return true;
}

function getMoeda(moeda)
{
    switch (moeda)
    {
        case "BRL":
            return "R$";
        case "USD":
            return "US$";
        default:
            return moeda;
    }
}

function startCarregando() {
    //$('conteudoGeral').style.display = 'none';
    $('divLoading').style.display = 'block';
}

function stopCarregando() {
    //$('conteudoGeral').style.display = 'block';
}

function checkRoomStaySel()
{
    var retval = true;
    for(var i=0;i<totQuartosAvailability.length;i++)
    {
        if(totQuartosAvailability[i]==0)
        {
            retval = false;
        }
        
    }
    return retval;
}

function setRoomStay(pNumRoom,pHotelRoomID)
{
    //debugger;
    Hoteis_HoteisDetalhes.setHotelRoomSelection(pNumRoom,pHotelRoomID);
    totQuartosAvailability[pNumRoom-1] = 1;
}

function preparaMotor()
{
 	var calDtIn = new Calendar($('checkin'));
	calDtIn.setDate(new Date().addDays(25));
	calDtIn.init();

 	var calDtOut = new Calendar($('checkout'));
	calDtOut.setDate(new Date().addDays(30))
	calDtOut.init();
    
    $('destino').value = '';

    //seta os quartos 1 quarto 1 adulto
    escQuartos(1);
    escChds(1,0);
    escChds(2,0);
    escChds(3,0);
    escChds(4,0);
    
    //seta pesqinc de localidades
    isClrTxtVXLDestinoHoteis = new IncrementalSearch('destino', Hoteis_BuscaHoteis.listaDestinos);
    isClrTxtVXLDestinoHoteis.onSelect = setDestino;
}

function escQuartos(pNumQuartos) 
{
    for(var i=1;i<=4;i++) 
    {
        if(i<=pNumQuartos) 
        {
            $('adtsQ'+i).style.display = "block";
            $('chdsQ'+i).style.display = "block";
        } 
        else 
        {
            $('adtsQ'+i).style.display = "none";
            $('chdsQ'+i).style.display = "none";
        }
    }
}

function escChds(pNumQuarto,pChds) {
    if(pChds>0) 
    {
        $('ageschdsQ' + pNumQuarto).style.display = "block";
        for(var i=1;i<=3;i++) 
        {
            if(i<=pChds) $('chdQ' + pNumQuarto + 'A' +i).style.display = "block";
            else $('chdQ' + pNumQuarto + 'A' +i).style.display = "none";
        }
    } 
    else $('ageschdsQ' + pNumQuarto).style.display = "none";
}

function setCheckIn(date)
{
    calDtOut.minDate = date;
    if(calDtOut.date<date) calDtOut.setDate(date.addDays(5));
}



function setDestino(value,text,row)
{
    $('iata_destino').set(value);
    $('local_destino').set(text);
    $('comp_destino').set(row);
}


function validaData(data)
{
    var Data = null;
    
    if($(data).value != '')
    {
         Data = Date.parse($(data).value,'dd/MM/yyyy');
    }else{
        alert('Data inválida');
        $(data).focus();
    }
    return Data;
}
 

function doSearch()
{
    var pdestino = Request.queryString("iata_destino");
    var pcheckin = Date.parse(Request.queryString("checkin"),"dd/MM/yyyy");
    var pcheckout = Date.parse(Request.queryString("checkout"),"dd/MM/yyyy");

    //if(!validaData(pcheckin, 'A data de ida não pode ser inferior a'))
    //    return;
    
    //if(!validaData(pcheckout, 'A data de volta não pode ser inferior a'))
    //    return;

    var ptotrooms = Request.queryString("totquartos");
    var padts = Request.queryString("adts");
    var pchds = Request.queryString("chds");
    
    //trata idade das criancas
    var tmpAges = Request.queryString("ageschds");

    //valida se passou um ou mais criancas, se passou uma a qs não vem como array....

    if( (tmpAges!=null) && (tmpAges.pop == null) )
    {
        //nao e um array, cria
        var tmpArr = new Array();
        tmpArr[0]= tmpAges;
        tmpAges = tmpArr;
    }
    
    var ages = new Array();
    var totValidAges = 0;
    if(tmpAges!=null)
    {
        for(var cChd=0;cChd < tmpAges.length;cChd++)
        {
            if(tmpAges[cChd]>0)
            {
                ages[totValidAges] = tmpAges[cChd];
                totValidAges++;
            }
            
        }
    }
    
    var pnomedestino = Request.queryString("destino");
    var pfilter = "";
    
    t.MotorBusca.MotorBusca.Cidade = pnomedestino[0];
    t.MotorBusca.MotorBusca.LabelQtdePax  = ptotrooms + ' Quarto' + ' - ' + padts[0] + (padts[0] > 1 ?' Adultos': ' Adulto') + (pchds[0] > 1 ?',' + pchds[0] +' Crianças': '');

    initMotor();
    
    initOrder();
 
    //debugger 
    Hoteis_HoteisResult.doSearch(pdestino,pcheckin,pcheckout,ptotrooms,padts,pchds,ages,pfilter,pnomedestino,doSearchCB);
}

function doSearchCB(res)
{

    res.error = null;
    if(res.error!=null)
    {
        if(res.error.message.indexOf('Não há suporte para esta localidade') > -1 )
        {
            alert('Não foram encontrados hotéis para o critério especificado. Erro: Não há suporte para esta localidade.');
        }
        else
        {
            alert('Não foram encontrados hotéis para o critério especificado.');
         }   

        try
        {
            // trace 
            if (Hoteis_HoteisResult.GetToken().value != "")
            {
                alert(Hoteis_HoteisResult.GetToken().value);
                $('idTrace').innerHTML = Hoteis_HoteisResult.GetToken().value;
            }
        } 
        catch(e) { }

        stopCarregando();
        //debugger ;
        
        var dirroot = Hoteis_HoteisResult.ReturnDirroot().value;
        
        window.location = dirroot + 'index.htm';
    }
    else
    {
        stopCarregando();
        resultBusca = res.value;
        
        resultBusca.tables.Hoteis.sortOrder = "";
        var tabResumo = resultBusca.tables.ResumoSearch;
        currPagina = 1;
        currOrder = "price";
        
        //setFilterPrice(tabResumo.rows[0].MinRate,tabResumo.rows[0].MaxRate);
        //setFilterArea(resultBusca.tables.DistinctAreas,"divRegions");

       DrawResultSearch(currPagina,currOrder);
       
       // render da barra direita
        $('bannerPagSeguro').innerHTML = t.adblock_200.getHtml();
        
        $('enviaEmail').innerHTML = t.envieEmail.getHtml();
        
        $('filtros').innerHTML = t.filtros.getHtml();
       
        InitCombosPesquisa() ;
    }
}

function applyFilterRatingThreaded(p0star, p1Star, p2Star, p3Star, p4Star, pstar5) 
{
    //debugger;
    ExibeAguardeComThread(function(){return applyFilterRating(p0star, p1Star,p2Star,p3Star,p4Star,pstar5);});
}

function applyFilterRating(p1Star, p2Star, p3Star, p4Star, pstar5)
{
    //debugger;
    var tabHot = resultBusca.tables.Hoteis; 
    var strStars = "";

    if(p1Star!=null && (p1Star==true || p1Star==1))
    {
        strStars+="1,";
    }
    if(p2Star!=null && (p2Star==true || p2Star==1))
    {
        strStars+="2,";
    }
    if(p3Star!=null && (p3Star==true || p3Star==1))
    {
        strStars+="3,";
    }
    if(p4Star!=null && (p4Star==true || p4Star==1))
    {
        strStars+="4,";
    }
    if(pstar5!=null && (pstar5==true || pstar5==1))
    {
        strStars+="5,";
    }

    for(var i=0;i<tabHot.rows.length;i++)
    {
        if(strStars.indexOf(tabHot.rows[i].Rating_RateNumber+",")<0)
        {
            if( strStars == "")
            {
                if(tabHot.rows[i].filterRating==1)
                { 
                    tabHot.rows[i].filterRating=0;
                    tabHot.rows[i].filtered--;
                }
            }
            else
            {
                if(tabHot.rows[i].filterRating==0)
                {
                    tabHot.rows[i].filterRating=1;
                    tabHot.rows[i].filtered++;
                }
            }
        }
        else
        {
            if(tabHot.rows[i].filterRating==1)
            {
                tabHot.rows[i].filterRating=0;
                tabHot.rows[i].filtered--;
            }
        }
    }
    
    currPagina=1;
    DrawResultSearch(currPagina,currOrder);
    
    return true;
}

function setFilterPrice(pMinValue,pMaxValue)
{
    sftPrice = new Slider($('ftHotPriceOuter'), $('ftHotPriceLeftSlider'), moveDirection.horizontal,$('ftHotPriceRightSlider'),null);
    sftPrice.setRange(parseInt(pMinValue), parseInt(pMaxValue),5);
    
    
    sftPrice.onMove = function(pos){$('ftHotPriceStartValue').innerHTML=pos.formatNumber(2,true);};
    sftPrice.onMove2 = function(pos){$('ftHotPriceFinalValue').innerHTML=pos.formatNumber(2,true);};
    sftPrice.onMoveStop = function(pos){applyFilterPriceThreaded(sftPrice.currentValue,sftPrice.currentValue2);};
    sftPrice.onMoveStop2 = function(pos){applyFilterPriceThreaded(sftPrice.currentValue,sftPrice.currentValue2);};

    sftPrice.setPosition2(parseInt(pMaxValue));
    sftPrice.setPosition(parseInt(pMinValue));
    
    
    $('ftHotPriceStartValue').innerHTML = sftPrice.currentValue.formatNumber(2,true);
    $('ftHotPriceFinalValue').innerHTML = sftPrice.currentValue2.formatNumber(2,true);

}

function applyFilterPriceThreaded(pMinValue,pMaxValue)
{
    ExibeAguardeComThread(function(){return applyFilterPrice(pMinValue,pMaxValue);});
}

function applyFilterPrice(pMinValue,pMaxValue)
{
    var tabHot = resultBusca.tables.Hoteis; 
    for(var i=0;i<tabHot.rows.length;i++)
    {
        if(Math.floor(tabHot.rows[i].Raterange_MinRate)<pMinValue || Math.floor(tabHot.rows[i].Raterange_MinRate)>pMaxValue)
        {
            if(tabHot.rows[i].filterRate==0)
            {
            tabHot.rows[i].filterRate=1;
            tabHot.rows[i].filtered++;
            }
        }
        else
        {
            if(tabHot.rows[i].filterRate==1)
            {
                tabHot.rows[i].filterRate=0;
                tabHot.rows[i].filtered--;
            }
            
        }
    }
    
    currPagina=1;
    DrawResultSearch(currPagina,currOrder,"ResultItems");
    return true;
}

function setFilterArea(pTableAreas,pIDdestino)
{
    var controle = $(pIDdestino);
    controle.innerHTML = "";

    controle.addOption("","Qualquer Região","");
    
    for(var i=0;i<pTableAreas.rows.length;i++)
    {
        controle.addOption("",pTableAreas.rows[i].gcArea,pTableAreas.rows[i].gcArea);
    }
    
}

function applyFilterAreaThreaded(value)
{
    ExibeAguardeComThread(function(){return applyFilterArea(value);});
}


function applyFilterArea(value)
{
    var tabHot = resultBusca.tables.Hoteis; 
    var j=0;
    var pNomeArea=value;
    
    for(var i=0;i<tabHot.rows.length;i++)
    {
        var row = tabHot.rows[i];
        if(pNomeArea=="")
        {
            if(tabHot.rows[i].filterArea==1)
            {
                tabHot.rows[i].filterArea=0;
                tabHot.rows[i].filtered--;
            }
        }
        else
        {
            if(tabHot.rows[i].Position_gcArea!=pNomeArea)
            {
                if(tabHot.rows[i].filterArea==0)
                {
                tabHot.rows[i].filterArea=1;
                tabHot.rows[i].filtered++;
                }
            }
            else
            {
                if(tabHot.rows[i].filterArea==1)
                {
                    tabHot.rows[i].filterArea=0;
                    tabHot.rows[i].filtered--;
                }
                
            }
        }
    }

    
    currPagina=1;
    DrawResultSearch(currPagina,currOrder,"ResultItems");
    return true;
}


function stripTagsHtml(sb)
{
//    var posIni = sb.toString().indexOf('&lt;',0);
//    
//    if (posIni >= 0) 
//    {
//        while (posIni < sb.toString().length)
//        {
//            var posIni = sb.toString().indexOf('&lt;',0);
//            var posFim = sb.toString().indexOf('&gt;',0);

//            if (posIni >= 0)
//            {
//                if (posIni > 0)
//                {
//                    posIni = posIni + 1;
//                    posFim = posFim + 1;
//                }   
//                sb.replace(sb.toString().mid(posIni, (posFim + 4) - posIni),'');
//            }
//            else
//            {
//                posIni = sb.toString().length;
//            }
//        }            
//    }
    return sb;
}


function DrawResultSearch(pPagina,pOrdem)
{
    //debugger;
    
    var result = resultBusca;
    var tabHoteis = result.tables.Hoteis;
    var DirImg = Hoteis_HoteisResult.ReturnDirImagens().value; 
    
    sb = new StringBuilder();
    
    //verifica a ordem
    var order_1 = null;
    var order_2 = null;
    var order_3 = null;
    
    //debugger;
    //aplica filtro
    tabHoteis.filter("filtered",0,filterMode.equals, caseType.CIAI);

     //debugger; 
     for(var j = 0; j < tabHoteis.rows.count(); j++)
     {
        var zerosAntesMin = '0';
        var zerosAntesMax = '0';
        var zerosAntesRat = '0';
        
        if ( tabHoteis.rows[j].Rating_RateCode.toString().indexOf('00') == -1 )
        {
            //tabHoteis.rows[j].Rating_RateCode = tabHoteis.rows[j].Rating_RateCode.toFixed(1).toString(); // rosi
            tabHoteis.rows[j].Rating_RateCode = tabHoteis.rows[j].Rating_RateCode;

            // insere N zeros antes da string (assumi um tamanho máximo de 5 caracteres para tamanho do campo) 
            zerosAntesRat = zerosAntesRat.replicate(eval(5 - tabHoteis.rows[j].Rating_RateCode.toString().length)); 

            // Depois insere N zeros antes da string 
            tabHoteis.rows[j].Rating_RateCode = zerosAntesRat + tabHoteis.rows[j].Rating_RateCode;
        }
        
        if ( tabHoteis.rows[j].Raterange_MinRate.toString().indexOf('000') == -1 )
        {
//            tabHoteis.rows[j].Raterange_MinRate = tabHoteis.rows[j].Raterange_MinRate.toFixed(2).toString(); //rosi
//            tabHoteis.rows[j].Raterange_MaxRate = tabHoteis.rows[j].Raterange_MaxRate.toFixed(2).toString(); //rosi

            tabHoteis.rows[j].Raterange_MinRate = tabHoteis.rows[j].Raterange_MinRate;
            tabHoteis.rows[j].Raterange_MaxRate = tabHoteis.rows[j].Raterange_MaxRate;




            // insere N zeros antes da string (assumi um tamanho máximo de 15 caracteres para tamanho do campo) 
            zerosAntesMin = zerosAntesMin.replicate(eval(15 - tabHoteis.rows[j].Raterange_MinRate.toString().length)); 
            zerosAntesMax = zerosAntesMax.replicate(eval(15 - tabHoteis.rows[j].Raterange_MaxRate.toString().length)); 
            
            // Depois insere N zeros antes da string 
            tabHoteis.rows[j].Raterange_MinRate = zerosAntesMin + tabHoteis.rows[j].Raterange_MinRate;
            tabHoteis.rows[j].Raterange_MaxRate = zerosAntesMax + tabHoteis.rows[j].Raterange_MaxRate;
        }
     }

    // "zera" a ordenação para não dar erro
    tabHoteis.sortOrder = "";
    tabHoteis.sort("");
    
    switch(pOrdem)
    {
            
    
        case "price":
            order_1 = 'selected';
            if(tabHoteis.sortOrder!="price")
            {
                tabHoteis.sortOrder = "price";
                tabHoteis.sort("Raterange_MinRate");
                currOrder = "price";
            }
            break;
        case "rating":
            order_2 = 'selected';
            if(tabHoteis.sortOrder!="rating")
            {
                
                tabHoteis.sortOrder = "rating";
                tabHoteis.sort("Rating_RateCode");
                currOrder = "rating";
            }
            break;
        case "hotelname":
            order_3 = 'selected';
            if(tabHoteis.sortOrder!="hotelname")
            {
                
                tabHoteis.sortOrder = "hotelname";
                tabHoteis.sort("Nome");
                currOrder = "hotelname";
            }
            break;
    }
    
    t.results.selectedPrice = order_1;
    t.results.selectedRating = order_2;
    t.results.selectedName = order_3;
    
    
    var date = Hoteis_HoteisResult.ReturnDate().value;
    t.results.dataPesquisa = date.getDate()+"/"+ (date.getMonth() + 1) +"/"+ date.getFullYear();

    if(tabHoteis.rows.length > 0)
    {
        if (tabHoteis.rows[0].Address_CityName != '')
        {
            t.results.Cidade = tabHoteis.rows[0].Address_CityName;
        }
        else
        {
            t.results.Cidade = '';
        }
        
        if (tabHoteis.rows[0].Address_CountryName != '')
        {
            t.results.Pais = ',' + tabHoteis.rows[0].Address_CountryName;
        }
        else
        {
            t.results.Pais = '';
        }
        
            
        t.results.totalEncontrado = tabHoteis.rows.length; 
    }
    

    if(result.tables.ResumoSearch.rows.length > 0)
    {
        t.results.dataPesquisa = result.tables.ResumoSearch.rows[0].Periodo; 
    }

    
    //var i=0;i<tabHoteis.rows.length;i++
    for(var i=(0+((pPagina-1)*temPagina));i<tabHoteis.rows.length && i<(pPagina*temPagina);i++)
    {
        var HotelRow = tabHoteis.rows[i];
        var linkDet = "";
        var linkDet2 = "";
        
        linkDet = "HoteisDetalhes.aspx";
        linkDet += "?HotelCode=" + HotelRow.Provider_HotelCode;
        linkDet += "&NomeProvider=" + HotelRow.Provider_Nome ;
        linkDet += "&HotelCodeProvider=" + HotelRow.Provider_HotelCode ;
        linkDet += "&LinkDetails=" + HotelRow.Provider_LinkDetails;

        linkDet2 = linkDet;
        
        var drResumo = result.tables.ResumoSearch.rows[0];
        linkDet2 += "&CheckIn="+drResumo.CheckIn.toString("dd/MM/yyyy");
        linkDet2 += "&CheckOut="+drResumo.CheckOut.toString("dd/MM/yyyy");
        linkDet2 += "&TotRooms="+drResumo.TotRooms;
        linkDet2 += drResumo.qsAdts;
        linkDet2 += drResumo.qsChds;
        linkDet2 += drResumo.qsAges;
        
        //debugger; 
        
        t.trItem.clearItems();
        t.trItem.NomeHotel = HotelRow.Nome;
        t.trItem.CidadeHotel = HotelRow.Address_CityName ;

        //debugger;
        if (HotelRow.Thumbnail.toString() == 'imgNonDisp.jpg')
        {
            t.trItem.ImagemHotel = '../image/imgNonDisp.gif';
        }
        else
        {
            t.trItem.ImagemHotel = DirImg + HotelRow.Thumbnail;
        }
        
        // crio uma variavel do tipo StringBuilder para permitir o replace de todos os tags Html (a função stripTag do Naja não funcionou)
        var sbDescricao = new StringBuilder();
        
        sbDescricao.append(HotelRow.Shortdescription) ;
        
        // a funcao stripTagsHtml limpa todos os tags html da descricao
        sbDescricao = stripTagsHtml(sbDescricao);
        
        t.trItem.DescricaoHotel = sbDescricao.toString();
                
        t.trItem.link = linkDet2;

        //debugger;        
        t.trItem.checkIn = drResumo.CheckIn.toString("dd/MM/yyyy") ;
        t.trItem.checkOut = drResumo.CheckOut.toString("dd/MM/yyyy") ;
        
        //pega informacoes do rate (tarifas) (aqui);
        //t.trItem.ValorHotel = HotelRow.Raterange_MinRate.formatNumber(2,true);
        
//        t.trItem.ValorHotel = parseFloat(HotelRow.Raterange_MinRate.Trim()).formatNumber(2,true);
//        t.trItem.ValorHotelSemDesconto = parseFloat(HotelRow.Raterange_MaxRate.Trim()).formatNumber(2,true);


        t.trItem.ValorHotel = Math.round(HotelRow.Raterange_MinRate); //parseFloat(HotelRow.Raterange_MinRate).formatNumber(2,true);
        if(parseFloat(HotelRow.Raterange_MaxRate) <= parseFloat(HotelRow.Raterange_MinRate))
        {
            t.trItem.ValorHotelSemDesconto = '';
            t.trItem.MoedaHotelSemDesconto = '';
        }
        else
        {
            t.trItem.ValorHotelSemDesconto = Math.round(HotelRow.Raterange_MaxRate); //parseFloat(HotelRow.Raterange_MaxRate).formatNumber(2,true);
            t.trItem.MoedaHotelSemDesconto = getMoeda(HotelRow.Raterange_CurrencyCode) ;
        }
        
        
        
        t.trItem.ImagemStarRating = 'starpoint_' + HotelRow.Rating_RateCode + '.gif'; 
        
        //debugger;
        t.trItem.MoedaHotel = getMoeda(HotelRow.Raterange_CurrencyCode) ;
        
//        t.resultHotel.NomeCadeia = HotelRow.Chain_Nome;
//        
//        t.resultHotel.Cidade = HotelRow.Address_CityName + ",";
//        t.resultHotel.Estado = HotelRow.Address_StateProvName + ",";
//        t.resultHotel.Pais = HotelRow.Address_CountryName;
//        t.resultHotel.Localizacao = HotelRow.Address_AddressLine;
        t.trItem.EnderecoHotel = HotelRow.Address_AddressLine;


        //debugger;

        //var date = new Date();
        //t.trItem.dataPesquisa = date.getDate()+"/"+ (date.getMonth() + 1) +"/"+ date.getFullYear();


//        
//        t.resultHotel.NomeCategoria = HotelRow.Rating_Name ;
//        t.resultHotel.Estrelas = HotelRow.Rating_RateNumber ;
//        
        sb.append(t.trItem.getHtml());
    }
    
    totRegsFiltered = tabHoteis.rows.length;
    
    totPaginas = parseInt(totRegsFiltered/temPagina)+1;
    tabHoteis.unfilter();
    totRegs = tabHoteis.rows.length;
    //$('regStatus').innerHTML = "Filtre os "+ totRegsFiltered +" de <strong>"+ totRegs +" resultados</strong>";
    //$("paginaAtual").innerHTML = "página " + currPagina + " de " + totPaginas;
    
    t.results.Items = sb.toString();
    
    t.results.paginacao = drawPages().toString();

    $('conteudoGeral').innerHTML = t.results.getHtml();
    
}

function drawPages(){
    var pagina = currPagina;
    var paginaInicial = pagina/6;
    var sb = new StringBuilder();
    var tplPag = t.itemPaginacaoAtual;
    var qtdePaginas = totPaginas;
    
    paginaInicial = Math.floor(paginaInicial);
    paginaInicial = (paginaInicial * 6) + 1;
    
    if(paginaInicial >= qtdePaginas)
    {
        paginaInicial -= 6; 
    }
    
    if(paginaInicial == pagina && pagina != 1)
    {
        paginaInicial -= 6; 
    }
        
    if(paginaInicial > 1)
    {
        tplPag.classe = '';      
        tplPag.clickPag = 'paginar(1)';
        tplPag.valor = 1;
        sb.append(tplPag.getHtml());
        sb.append(' ... |');
    }
    
    if (paginaInicial < 0) {
        return '';
    }
    
    for (var p = paginaInicial - 1; p <(paginaInicial + (thumbsPaginas - 1)) && p < qtdePaginas; p++)
    { 
        if (p != pagina - 1)
        {
            tplPag.valor = (p + 1);
            tplPag.classe = '';
            tplPag.clickPag = 'href="javascript:paginar('+ (p + 1) + ')"';
            sb.append(tplPag.getHtml());
        }
        else
        {
            tplPag.valor = (p + 1);
            tplPag.classe = 'class="selected"'
            tplPag.clickPag = '';
            sb.append(tplPag.getHtml());
        }
        
        if((p+1) < qtdePaginas)
        {
            sb.append(' ');
        }
    }
      
    
    if((paginaInicial + (thumbsPaginas -1)) < qtdePaginas)
    {
        tplPag.classe = '';
        sb.append(' ... ');
        tplPag.clickPag = 'paginar('+ qtdePaginas + ')';
        tplPag.valor = qtdePaginas;
        sb.append(tplPag.getHtml());
    }
    
  
    
    return sb.toString();
}

function paginar(pPagina)
{
    switch(pPagina)
    {
        case "+":
            if(currPagina<totPaginas)
            {
                currPagina++;
                DrawResultSearch(currPagina,currOrder);
            }
            break;
        case "-":
            if(currPagina>1)
            {
                currPagina--;
                DrawResultSearch(currPagina,currOrder);
            }
            break;
        default:
            if(pPagina>=1 && pPagina<=totPaginas)
            {
                currPagina=pPagina;
                DrawResultSearch(currPagina,currOrder);
            }
            break;
    }
}


/*************************************************************************************************************************************************/
/*                                                             DETALHES                                                                          */
/*************************************************************************************************************************************************/

var fotosPaginas = 6;
var fotosCurr = 1;
var fotosTot = 0;

function doDetail()
{
    //pega os parametros
    //debugger;
    var pHotelCode = Request.queryString("HotelCode");
    var pNomeProvider = Request.queryString("NomeProvider");
    var pHotelCodeProvider = Request.queryString("HotelCodeProvider");
    var pLinkDetails = Request.queryString("LinkDetails");
    var pCheckIn = Date.parse(Request.queryString("CheckIn"),"dd/MM/yyyy");
    var pCheckOut = Date.parse(Request.queryString("CheckOut"),"dd/MM/yyyy");
    var pTotRooms = Request.queryString("TotRooms");
    var pAdts = Request.queryString("Adts");
    var pChds = Request.queryString("Chds");
    var pAges = Request.queryString("AgesChds");
    var vtAges = pAges.split(',');
        
    startCarregando();
        
    //string pDestino, DateTime pCheckIn, DateTime pCheckOut, int pTotRooms, int[] pAdts, int[] pChds, string pFilterList
    if((pCheckIn==null || pCheckOut==null || pAdts==null) && (pHotelCode!=null && pNomeProvider!=null && pHotelCodeProvider != null && pLinkDetails != null))
    {
        //debugger;
        Hoteis_HoteisDetalhes.doDetail(pHotelCode,pNomeProvider,pHotelCodeProvider,pLinkDetails,doDetailCB);
    }
    else
    {
        //debugger;
        Hoteis_HoteisDetalhes.doDetailWithRooms(pHotelCode,pNomeProvider,pHotelCodeProvider,pLinkDetails,pCheckIn, pCheckOut, pTotRooms, pAdts, pChds,vtAges,doDetailWithRoomsCB);
    }
    
    
    
    
    
}

function doDetailCB(res)
{
    debugger;
        
    if(res.error!=null)
    {
        alert(res.error.message);
    }
    else
    {
        stopCarregando();
        var dsresult = res.value;
        var tabHotel = dsresult.tables.Hotel;
       
        var drHotel = tabHotel.rows[0];
        
        t.resumoHotel.NomeHotel =  drHotel.Nome;
        
        //debugger;
//        if (drHotel.Thumbnail.toString() == 'imgNonDisp.jpg')
//        {
//            t.resumoHotel.ThumbNail = '../image/imgNonDisp.gif';
//        }
//        else
//        {
//            t.resumoHotel.ThumbNail = drHotel.Thumbnail;
//        }
//        
        t.resumoHotel.ThumbNail = drHotel.Thumbnail;
        
        t.resumoHotel.Cidade = drAddress.CityName;
        t.resumoHotel.Pais = drAddress.CountryName;
        t.resumoHotel.Endereco = drAddress.AddressLine1;
        
        //descricao
        t.detHotelDescription.Description = drHotel.Shortdescription;
        //debugger;
        
        
        
        //amenities
        var sbAmen = new StringBuilder();
        var tabAmen = dsresult.tables.Amenities;
        if(tabAmen!=null)
        {
            for(var am=0;am < tabAmen.rows.length;am++)
            {
                sbAmen.appendFormat('<li class="{0}">{1}</li>',tabAmen.rows[am].AmenityCode,tabAmen.rows[am].Name);
            }
        }
        //t.detHotelAmenities.Amenities = sbAmen;
        $('detFacilidades').innerHTML = sbAmen;
        
        //imagens
        DrawImgs();
        
        
        t.hotelDetails.ResumoHotel = t.resumoHotel.getHtml();
        t.hotelDetails.HotelDescription = t.detHotelDescription.getHtml();
        t.hotelDetails.HotelAmenities = t.detHotelAmenities.getHtml();
        
        $('content').innerHTML = t.hotelDetails.getHtml();
        
        
    }
}

function montaPaginacao(qtdePaginas)
{
    var paginaInicial = fotosCurr/thumbsPaginas;
    var sb = new StringBuilder();
    
    paginaInicial = Math.floor(paginaInicial);
    paginaInicial = (paginaInicial * thumbsPaginas) + 1;
    
    if(paginaInicial >= qtdePaginas)
    {
        paginaInicial -= thumbsPaginas; 
    }
    
    if(paginaInicial == fotosCurr && fotosCurr != 1)
    {
        paginaInicial -= thumbsPaginas; 
    }
    
    if(paginaInicial > 1)
    {
        t.itemPaginacaoAtual.classe = '';      
        t.itemPaginacaoAtual.clickPag = 'pagImg(1)';
        t.itemPaginacaoAtual.valor = 1;
        sb.append(t.itemPaginacaoAtual.getHtml());
        sb.append(' ... | ');
    }
    
    if (paginaInicial < 0) {
        $html('divPaginacao','');
        return;
    }
    
    for (var p = paginaInicial - 1; p <(paginaInicial + (thumbsPaginas -1)) && p < qtdePaginas; p++)
    { 
        if (p != fotosCurr - 1)
        {
            t.itemPaginacaoAtual.valor = (p + 1);
            t.itemPaginacaoAtual.classe = '';
            t.itemPaginacaoAtual.clickPag = 'href="javascript:pagImg('+ (p + 1) + ')"';
            sb.append(t.itemPaginacaoAtual.getHtml());
        }
        else
        {
            t.itemPaginacaoAtual.valor = (p + 1);
            t.itemPaginacaoAtual.classe = 'class="selected"'
            t.itemPaginacaoAtual.clickPag = '';
            sb.append(t.itemPaginacaoAtual.getHtml());
        }
        
        if((p+1) < qtdePaginas)
        {
            sb.append(' ');
        }
    }
      
    
    if((paginaInicial + (thumbsPaginas -1)) < qtdePaginas)
    {
        t.itemPaginacaoAtual.classe = '';
        sb.append(' ... ');
        t.itemPaginacaoAtual.clickPag = 'Aereo.Disponibilidade.mudarPagina('+ qtdePaginas + ')';
        t.itemPaginacaoAtual.valor = qtdePaginas;
        sb.append(t.itemPaginacaoAtual.getHtml());
    }
    
  
    $html('divPaginacao', 'Página - ' + sb.toString());
};

function pagImg(page) {
    //debugger;
    fotosCurr = page;
    DrawImgs(dsresult.tables.DetailsImages);
}

function DrawImgs(table)
{
    var sbImgs = new StringBuilder();
    
    var det = (fotosCurr-1)*thumbsPaginas;
    var detAux = thumbsPaginas * fotosCurr;
    
    //debugger;
    
    if (table.rows.count() > 0)
    {
        for(det; det < table.rows.count() && det < detAux; det++)
        {
            var drDet = table.rows[det];
            if (det==0) { 
                t.photoPrincipalItem.Descricao = drDet.Shortdescription;
                t.photoPrincipalItem.Imagem = drDet.UrlImage;
                //sbImgs.append(t.photoPrincipalItem.getHtml());
                $html('divPhotoPrinc', t.photoPrincipalItem.getHtml());
            }
            t.photoAlbumItem.LinkImagem = "javascript:ChangeImagem('" + drDet.UrlImage + "','"  + drDet.Shortdescription +"');";
            t.photoAlbumItem.Descricao = drDet.Shortdescription;
            t.photoAlbumItem.Imagem = drDet.UrlImage.replace('b.','t.');
            
            sbImgs.append(t.photoAlbumItem.getHtml());
        }
        montaPaginacao(fotosPaginas);
        $html('divPhotos',sbImgs.toString());
       
    }
}

function ChangeImagem(img, descricao)
{
    $('fotoPrincipalUrl').src = img;
    $('fotoPrincipalDescricao').innerHTML = descricao;
}


function doDetailWithRoomsCB(res)
{
    //debugger; 
    
    if(res.error!=null)
    {
        alert(res.error.message);
    }
    else
    {
        stopCarregando();
    
        try
        {
            var token = Hoteis_HoteisDetalhes.GetToken().value;
            
            //preenchendo o template
            var templateGeral = new Template($template('Geral'));
            templateGeral.linkTrace.token = token;
            
            //escrevendo
            $('idTrace').innerHTML = templateGeral.linkTrace.getHtml();
        } 
        catch(e) { }
         
        //debugger; 
                
        dsresult = res.value;
        var tabHotel = dsresult.tables.Hoteis;
        var tabImages = dsresult.tables.DetailsImages;
        
        var drHotel = tabHotel.rows[0];
        
        // nova implementacao 
        t.detHotelDados.NomeCategoriaHotel = '../image/' + 'starpoint_'  + drHotel.Rating_RateNumber + '.gif';
        //t.detHotelDados.ThumbHotel = drHotel.Thumbnail.replace('b.jpg','t.jpg');
        // /nova implementacao
        
        
        if ( (drHotel.Thumbnail.toString() == 'imgNonDisp.jpg') || (drHotel.Thumbnail.toString() == ""))
        {
            t.detHotelDados.ThumbHotel = '../image/imgNonDisp.gif';
        }
        else
        {
            t.detHotelDados.ThumbHotel = drHotel.Thumbnail.replace('b.jpg','t.jpg');
        }
        
        
        t.detHotelDados.NomeHotel =  drHotel.Nome;
        t.detHotelDados.NomeCategoria = drHotel.Rating_Name;
        t.detHotelDados.Cidade = drHotel.Address_CityName;
        t.detHotelDados.Pais = drHotel.Address_CountryName;
        t.detHotelDados.Endereco = drHotel.Address_AddressLine;
        t.detHotelDados.DataEntrada = Request.queryString('CheckIn');
        t.detHotelDados.DataSaida = Request.queryString('CheckOut');
        
        $('divDadosHotel').innerHTML = t.detHotelDados.getHtml();
        var i=0;
        var j=0;
        
        
        //debugger;
        for (i=0; i<dsresult.tables.HotelRooms.rows.count(); i++) 
        {
            var sb = new StringBuilder();
            t.Precos.Moeda = getMoeda(dsresult.tables.HotelRooms.rows[i].Currency_CurrencyCode);
            
            // Voltei o código antigo             
            for (; j<dsresult.tables.RoomRates.rows.count(); j++) 
            {
                if (dsresult.tables.RoomRates.rows[j].HotelRoom_Id == dsresult.tables.HotelRooms.rows[i].HotelRoom_Id) 
                {
                    t.Precos.Texto = dsresult.tables.RoomRates.rows[j].Date;
                    t.Precos.Valor = dsresult.tables.RoomRates.rows[j].Base.formatNumber(2,true);
                    //t.Precos.Valor = parseFloat(dsresult.tables.RoomRates.rows[j].Base).formatNumber(2,true);
                    sb.append(t.Precos.getHtml());
                }
            }
            
            //t.Precos.Texto = "Soma de todas as diárias";
            //t.Precos.Valor = dsresult.tables.HotelRooms.rows[i].Rate_Total.formatNumber(2,true);
            //sb.append(t.Precos.getHtml());
            //t.PrecosExterno.precos = sb.toString();
            //$html('idValores',t.PrecosExterno.getHtml());
            
        }
        
        //debugger; 
        //amenities
        var sbAmen = new StringBuilder();
        var tabAmen = dsresult.tables.Amenities;
        
        //debugger; 
        //t.detShortDescription.ShortDescription = stripTagsHtml(dsresult.tables.Hoteis.rows[0].Shortdescription.toString());
        t.detShortDescription.ShortDescription = dsresult.tables.Hoteis.rows[0].Shortdescription.toString().replace(/&lt;/g,'<').replace(/&gt;/g, '>');
        
        
        var tabHotelPolicies = dsresult.tables.HotelPolicies ; 
        if(tabHotelPolicies != null)
        { 
            if (tabHotelPolicies.rows.length > 0 )
            {
                t.detShortDescription.ShortDescription += '<h3>Políticas do Hotel</h3>';
                
                
                for(var am=0;am < tabHotelPolicies.rows.length;am++)
                {
                    t.detShortDescription.ShortDescription += tabHotelPolicies.rows[am].Policy.toString() + "<br />";
                }
            }
        }

        //$html('detShortDescription',t.detShortDescription.getHtml());
        $('detShortDescription').innerHTML = t.detShortDescription.getHtml() ;
              
        if(tabAmen!=null)
        {
            if (tabAmen.rows.length > 0 )
            {
                sbAmen.appendFormat('<h3>Instalações</h3><div class="text"><ul>');
                
                
                for(var am=0;am < tabAmen.rows.length;am++)
                {
                    sbAmen.appendFormat('<li class="{0}"> - {1}</li>',tabAmen.rows[am].AmenityCode,tabAmen.rows[am].Name);
                }
                sbAmen.appendFormat('</ul></div>');
                
                //t.detHotelAmenities.Amenities = sbAmen;
                $('detFacilidades').style.display=''; 
                $('detFacilidades').innerHTML = sbAmen;
            }
        }
         
        
        //imagens
        DrawImgs(tabImages);
        fotosPaginas = Math.floor(tabImages.rows.length/thumbsPaginas) + 1;
        montaPaginacao(fotosPaginas);

        $html('divQuartos', drawAvailability(dsresult).toString());
        
    }
    
    
}

function drawAvailability(dsAvail)
{
    //Availability
    //debugger;
    
    //debugger; 
    
    var tabRoomStays = dsAvail.tables.RoomStays;
    var tabHotelRoom = dsAvail.tables.HotelRooms;
    if (tabHotelRoom != null)
    {
        var itHotelRoom = tabHotelRoom.getIterator("RoomNumber");
    }
    
    var tabRoomRates = dsAvail.tables.RoomRates;
    if (tabRoomRates != null)
    {
        var itRoomRates = tabRoomRates.getIterator("HotelRoom_Id");
    }
    
    var tabRoomServices = dsAvail.tables.RoomServices;
    if (tabRoomServices != null)
    {
        var itRoomServices = tabRoomServices.getIterator("HotelRoom_Id");
    }
    
    var sbRoomStays = new StringBuilder();
    
    
    //debugger;
    
    totQuartosAvailability = new Array(tabRoomStays.rows.length);
    
    for(var av=0;av<tabRoomStays.rows.length;av++)
    {
        
        totQuartosAvailability[av] = 0;
        var rowRoomStay = tabRoomStays.rows[av];
        
        //itRoomStay.findByKey(tabRoomStays.rows[av].RoomStays_Id);
        //for(itRoomStay.moveFirst();itRoomStay.hasNext();itRoomStay.moveNext())
        //{
        
        t.Quartos.RoomNumber = rowRoomStay.RoomNumber;
        t.Quartos.TotAdts = (rowRoomStay.TotAdts>0?rowRoomStay.TotAdts+" Adulto"+(rowRoomStay.TotAdts>1?"s":""):"");
        t.Quartos.TotChds = (rowRoomStay.TotChds>0?rowRoomStay.TotChds+" Crian&ccedil;a"+(rowRoomStay.TotChds>1?"s":""):"");
        t.Quarto.TotPaxs = rowRoomStay.TotAdts + rowRoomStay.TotChds ;
        t.Quarto.TotDiarias = Date.diff(rowRoomStay.CheckIn, rowRoomStay.CheckOut, 'd');
        
        var sbDaysOfWeek = "";

        var sbRoomOptions = new StringBuilder();
        
        itHotelRoom.findByKey(rowRoomStay.RoomNumber);
        
        if (itHotelRoom.count() == 0) 
        {
            t.Quarto.Semana="";
        }
        else 
        {
            t.Quarto.Semana="Semana";
        }
        
        
        for(itHotelRoom.moveFirst();itHotelRoom.hasNext();itHotelRoom.moveNext())
        {
            var rowHotelRoom = itHotelRoom.row;
            //debugger;
                
            //para cada opcao de quarto
            t.Quarto.NomeRadioSel = "Room" + rowRoomStay.RoomNumber;
            t.Quarto.ValueRadioSel = rowHotelRoom.HotelRoom_Id;
            t.Quarto.ClickRadioSel = "javascript:setRoomStay("+ rowRoomStay.RoomNumber +","+ rowHotelRoom.HotelRoom_Id +"); ";
            var mediaDiarias = Date.diff(rowRoomStay.CheckIn, rowRoomStay.CheckOut, 'd') ;
            var totalGeral = parseFloat(rowHotelRoom.Rate_Total) ;
            
            t.Quarto.TotalPorNoite = parseFloat((totalGeral / mediaDiarias)).formatNumber(2,true);
           
            t.Quarto.RoomDescription = rowHotelRoom.RoomDescription + " " + rowHotelRoom.RoomBedDescription;
            t.Quarto.Currency = getMoeda(rowHotelRoom.Currency_CurrencyCode);
            t.Quarto.Total = Math.round(parseFloat(rowHotelRoom.Rate_Total)); //Math.round(parseFloat(rowHotelRoom.Rate_Total).formatNumber(2,true));
                    
            // Exibe as politicas de cancelamento do quarto
            var sbRoomPolicies = new StringBuilder();
        
            var tabRoomPolicies = dsAvail.tables.RoomPolicies;
            var itRoomPolicies = tabRoomPolicies.getIterator("HotelRoom_Id");        
            
            if(tabRoomPolicies!=null)
            {
                itRoomPolicies.findByKey(rowHotelRoom.HotelRoom_Id);
                
                //debugger;

                for(itRoomPolicies.moveFirst();itRoomPolicies.hasNext();itRoomPolicies.moveNext())
                {
                        sbRoomPolicies.appendFormat("<p>{1}</p>",itRoomPolicies.row.PolicyType,itRoomPolicies.row.Policy);
                }   
            }
            t.Quarto.RoomPolicies = sbRoomPolicies.toString();
            sbRoomPolicies.clear();



            //pega servicos adicionais (DESABILITADO TEMPORARIAMENTE)
            /*
            var sbServices = new StringBuilder();
            if(tabRoomServices!=null)
            {
                
                itRoomServices.findByKey(rowHotelRoom.HotelRoom_Id);
                for(itRoomServices.moveFirst();itRoomServices.hasNext();itRoomServices.moveNext())
                {
                    
                    sbServices.append("<hr/><div>");
                    sbServices.appendFormat("<input name='{4}' type='radio' value='{0}' onchange='{5}'/><span>{1}</span><span>{2}</span><span>{3}</span>",itRoomServices.row.ServiceCode, itRoomServices.row.Description,itRoomServices.row.Currency,itRoomServices.row.Value,"svc"+rowHotelRoom.HotelRoom_Id,"setRoomStaySVC("+rowRoomStay.RoomNumber+","+rowHotelRoom.HotelRoom_Id+","+itRoomServices.row.ServiceCode+");");
                    sbServices.append("</div>");
                
                }
                
                
            }
            t.availHotelRoom.RoomDescription = rowHotelRoom.RoomDescription + " " + rowHotelRoom.RoomBedDescription + sbServices;
            */
            
            
            //pega os rates (diárias)
            var sbRates = new StringBuilder();
            itRoomRates.findByKey(rowHotelRoom.HotelRoom_Id);
            
            for(itRoomRates.moveFirst();itRoomRates.hasNext();itRoomRates.moveNext())
            {
                if(itRoomRates.index<=6 && itHotelRoom.index==0)
                {
                    //sbDaysOfWeek += "<th>" + Date.parse(itRoomRates.row.Date.substring(0,10),"yyyy-MM-dd").toString("ddd") + "</th>";
                    switch (itRoomRates.row.Date.toString("ddd")) {
                        case "seg":
                            sbDaysOfWeek += "<td class='tdname'>Segunda</td>";
                            break;
                        case "ter":
                            sbDaysOfWeek += "<td class='tdname'>Terça</td>";
                            break;
                        case "qua":
                            sbDaysOfWeek += "<td class='tdname'>Quarta</td>";
                            break;
                        case "qui":
                            sbDaysOfWeek += "<td class='tdname'>Quinta</td>";
                            break;
                        case "sex":
                            sbDaysOfWeek += "<td class='tdname'>Sexta</td>";
                            break;
                        case "sáb":
                            sbDaysOfWeek += "<td class='tdname'>S&aacute;bado</td>";
                            break;
                        case "dom":
                            sbDaysOfWeek += "<td class='tdname'>Domingo</td>";
                            break;
                            
                    }
                    
                }
                //tds com os rates
                sbRates.appendFormat("<td>{0}</td>#",parseFloat(itRoomRates.row.Base).formatNumber(2,true));
            }
            //debugger; 
            var splitRates = sbRates.toString().split("#");
            var sbRatesW1 = new StringBuilder();
            sbRates = new StringBuilder();
            for(var sr=0;sr<parseInt(splitRates.length/7)+1;sr++)
            {
                if(sr==0)
                {
                    sbRatesW1.appendFormat("<td> {0}</td>",sr+1);
                    for(var srd=0;srd<7;srd++)
                    {
                        if(splitRates[srd+(sr*7)]!=null)
                        {
                            sbRatesW1.append(splitRates[srd*(sr+1)]);
                        }
                    }
                }
                else
                {
                    sbRates.appendFormat("<tr><td> {0}</td>",sr+1);
                    //sbRates.appendFormat("<td> {0}</td>",sr+1);
                    for(var srd=0;srd<7;srd++)
                    {
                        if(splitRates[srd+(sr*7)]!=null && splitRates[srd+(sr*7)]!="")
                        {
                            sbRates.append(splitRates[srd+(sr*7)]);
                        }
                        else
                        {
                            sbRates.append("<td>&#160;</td>");
                        }
                    }
                    sbRates.append("</tr>");
                }
            }
            
            t.Quarto.RoomSpan = parseInt(splitRates.length/7)+1
            t.Quarto.RoomRatesWeek1 = sbRatesW1;
            t.Quarto.RoomRates = sbRates;
            
            
            //t.Quarto.RoomOptions = sbRoomOptions;
            t.Quarto.RoomRatesDaysOfWeek = sbDaysOfWeek;
            
            
            sbRoomOptions.append(t.Quarto.getHtml());

        }
            t.Quartos.Quartos = sbRoomOptions;
            
            //t.Quartos.RoomOptions = sbRoomOptions;
            //t.Quartos.RoomRatesDaysOfWeek = sbDaysOfWeek;
            sbRoomStays.append(t.Quartos.getHtml());
    }




    sbRoomStays.append('<div class="right submit3"><input type="submit" value="CONTINUAR" onclick="if(checkRoomStaySel()==true){window.location=\'HoteisPrices.aspx\';}else{alert(\'favor selecionar o(s) tipo(s) de acomodação para todos os quartos\');return false;}"></div>');

    return sbRoomStays;
    
}







/*************************************************************************************************************************************************/
/*                                                             RENDER DE AGUARDE                                                                 */
/*************************************************************************************************************************************************/
 
/*

Licence: GPL-V3

Autor: Leonardo Vit¢rio de Souza Stuginski

Data: 2007/07/05

Classes: ThreadSettings, Thread

*/

var ThreadSettings = new Object();
ThreadSettings.queue = new Array();
ThreadSettings.delay = 1000;
ThreadSettings.launch = 10;

ThreadSettings.addThread = function(thread)
{
    var index = ThreadSettings.queue.length;
    ThreadSettings.queue[index] = thread;
    return index;
};

ThreadSettings.run = function()
{
    if(ThreadSettings.queue.length < 500)
    {
        /* executa os processos */
        for(var i=0; i < ThreadSettings.queue.length; i++)
        {
            /* verifica se a thread não foi removida ou esta dormindo */
            /* alert(i+" >> "+ThreadSettings.queue[i].sleepTime); */
            if(ThreadSettings.queue[i] != null)
            {
                if(ThreadSettings.queue[i].sleepTime <= 0)
                {
                    setTimeout("ThreadSettings.queue["+i+"].background()",ThreadSettings.launch);
                }
                else
                {
                    /* alert(ThreadSettings.queue[i].sleepTime); */
                    ThreadSettings.queue[i].sleepTime -= ThreadSettings.delay;
                }
            }
        }
    }
    else
    {
        /* executa garbade collector */
        var clearQueue = new Array();
        for(var i=0; i < ThreadSettings.queue.length; i++)
        {
            if(ThreadSettings.queue[i] != null)
            {
                clearQueue[i] = ThreadSettings.queue[i];
            }
        }
        ThreadSettings.queue[i] = clearQueue();
    }
    setTimeout("ThreadSettings.run()",ThreadSettings.delay);
};

ThreadSettings.remove = function(index)
{
    /* remove a Thread */
    ThreadSettings.queue[index] = null;
};

ThreadSettings.sleep = function(index,time)
{
    /* sleep */
    ThreadSettings.queue[index].sleepTime = time;
};

ThreadSettings.run();

Thread = function()
{
    this.runnning = false;
    this.retValue = false;
    
    this.index = 0;
    this.sleepTime = 0;
    this.start = function() 
    {
        this.index = ThreadSettings.addThread(this);
    };
    this.background = function()
    {
        if (this.runnning == false)
        {
            this.runnning = true;
            
            retValue = this.run();
        }
        
        if (retValue == true)
        {
            this.end();
        }
        else
        {
            this.start();
        }
    } ;
    this.run = function() {};
    this.end = function() 
    {
        this.destructor();ThreadSettings.remove(this.index);
    };
    this.destructor = function() {};
    this.sleep = function(time) 
    {
        ThreadSettings.sleep(this.index,time);
    };
};

function ExibeAguardeComThread(runFunction)
{
    //Exibe aguarde
    //AguardeOnResize();
    $('divFilterLoading').style.display = 'block';
    
    if(document.selection)
        document.selection.clear();  

    var thread = new Thread();
    thread.run = runFunction;
    thread.destructor = function(){ $('divFilterLoading').style.display = 'none';  };
    thread.start();
};

function CancelaAguarde()
{
    //$('divLoading').className = 'hideLoad';
};

function AguardeOnResize()
{
    var scrollXY = getScrollXY();
    if(document.documentElement.clientHeight){
//        $('divTextoLoading').style.height = (document.documentElement.clientHeight + scrollXY[1]) + "px";
//        //$('divTrancaTela').style.height = (document.documentElement.clientHeight + scrollXY[1])  + "px";
//        $('divBoxLoading').style.marginTop = ((document.documentElement.clientHeight * 0.45 ) + scrollXY[1]) + "px"; 
    }else{
//        $('divTextoLoading').style.heigth = (document.body.clientHeight + scrollXY[1]) + "px";
//        //$('divTrancaTela').style.heigth = (document.body.clientHeight + scrollXY[1]) + "px";
//        $('divBoxLoading').style.marginTop = ((document.body.clientHeight * 0.45 ) + scrollXY[1]) + "px";
    }
};

function getScrollXY()
{
  var scrOfX = 0;
  var scrOfY = 0;
  if (typeof(window.pageYOffset) == 'number') 
  {
    /* Netscape compliant */
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } 
  else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) 
  {
    /* DOM compliant */
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } 
  else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) 
  {
    /* IE6 standards compliant mode */
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [scrOfX, scrOfY];
};

function doPrices()
{
    startCarregando();
    Hoteis_hotelprices.doPriceFromSession(doPricesCB);
};

function doPricesCB(res)
{
    //debugger;   
    
    if(res.error!=null)
    {
        alert(res.error.message);
    }
    else
    {
        stopCarregando();
     
        //debugger;   
        var dsresult = res.value;
        var tabHotel = dsresult.tables.Hoteis;
        var tabResume = dsresult.tables.Resume;
        
        var drHotel = tabHotel.rows[0];
        
        var drResume = tabResume.rows[0];

        //debugger;

        t.pricesSelRooms.NomeHotel =  drHotel.Nome;
        t.pricesSelRooms.NomeCategoria = drHotel.Rating_Name;
        t.pricesSelRooms.Estrelas = '../image/starpoint_' + drHotel.Rating_RateCode + '.gif'; 
        
        //t.pricesSelRooms.ThumbNail = drHotel.Thumbnail.replace('b.','t.');;

        if ( (drHotel.Thumbnail.toString() == 'imgNonDisp.jpg') || (drHotel.Thumbnail.toString() == ""))
        {
            t.pricesSelRooms.ThumbNail = '../image/imgNonDisp.gif';
        }
        else
        {
            t.pricesSelRooms.ThumbNail = drHotel.Thumbnail.replace('b.jpg','t.jpg');
        }


        t.pricesSelRooms.Cidade = drHotel.Address_CityName;
        t.pricesSelRooms.Pais = drHotel.Address_CountryName;
        t.pricesSelRooms.Endereco = drHotel.Address_AddressLine;
        
        
        t.pricesSelRooms.CheckIn = drResume.CheckIn.toString("dddd") + ',' + drResume.CheckIn.toString("dd") + ' de ' + drResume.CheckIn.toString("MMMM") + ' de ' + drResume.CheckIn.toString("yyyy") ;  //drResume.CheckIn;
        t.pricesSelRooms.CheckOut = drResume.CheckOut.toString("dddd") + ',' + drResume.CheckOut.toString("dd") + ' de ' + drResume.CheckOut.toString("MMMM") + ' de ' + drResume.CheckOut.toString("yyyy") ;  //drResume.CheckOut;
        
        t.pricesSelRooms.TotEstadias = Date.diff(drResume.CheckIn, drResume.CheckOut, 'd');
        
        
        //debugger;
        t.pricesSelRooms.TotRooms = drResume.TotRooms;
        
        t.pricesSelRoomsRoom.Moeda = "";
        t.pricesSelRoomsRoom.Valor = 0;
        
        t.pricesSelRoomsRoom.ValorTaxas = 0;

        t.pricesSelRoomsRoom.ValorSemTaxas = 0;

        //descricao
        //t.pricesSelRooms.Description = drHotel.Shortdescription;
        
        //quartos
        var tabRoomStays = dsresult.tables.RoomStays;
        
        var tabHotelRoom = dsresult.tables.HotelRooms;
        if(tabHotelRoom!=null)
        {
            var itHotelRoom = tabHotelRoom.getIterator("RoomNumber");
        }
        
        var tabRoomRates = dsresult.tables.RoomRates;
        if(tabRoomRates!=null)
        {
            var itRoomRates = tabRoomRates.getIterator("HotelRoom_Id");
        }
        
        var tabRoomServices = dsresult.tables.RoomServices;
        if(tabRoomServices!=null)
        {
            var itRoomServices = tabRoomServices.getIterator("HotelRoom_Id");
        }

        var tabRoomPolicies = dsresult.tables.RoomPolicies;
        if(tabRoomPolicies!=null)
        {
            var itRoomPolicies = tabRoomPolicies.getIterator("HotelRoom_Id");        
        }
        
        var sbRoomStays = new StringBuilder();

        //debugger;

        // tabela de diarias do quarto

        totQuartosAvailability = new Array(tabRoomStays.rows.length);
        var descricaoQuartos = "" ; 
        var totalValorTaxas = 0;
        var totalValorSemTaxas = 0;
        var totalValor = 0;
        
        for(var av=0;av<tabRoomStays.rows.length;av++)
        {
            // tabela de diarias do quarto
            totQuartosAvailability[av] = 0;
            var rowRoomStay = tabRoomStays.rows[av];
            var sbDaysOfWeek = "";
            var sbRoomOptions = new StringBuilder();
           

            t.pricesSelRoomsRoom.RoomNumber = rowRoomStay.RoomNumber;
            t.pricesSelRoomsRoom.TotAdts = (rowRoomStay.TotAdts>0?rowRoomStay.TotAdts+" Adulto"+(rowRoomStay.TotAdts>1?"s":""):"");
            t.pricesSelRoomsRoom.TotChds = (rowRoomStay.TotChds>0?rowRoomStay.TotChds+" Crian&ccedil;a"+(rowRoomStay.TotChds>1?"s":""):"");
            t.pricesSelRoomsRoom.TotPax = rowRoomStay.TotAdts + rowRoomStay.TotChds ;
            
            itHotelRoom.findByKey(rowRoomStay.RoomNumber);
            
            if (itHotelRoom.count() == 0) 
            {
                t.pricesSelRoomsRoom.Semana="";
            }
            else 
            {
                t.pricesSelRoomsRoom.Semana="Semana";
            }
            
            for(itHotelRoom.moveFirst();itHotelRoom.hasNext();itHotelRoom.moveNext())
            {
                var rowHotelRoom = itHotelRoom.row;


                // desenha a tabela de diarias
                var sbRates = new StringBuilder();
                 
                itRoomRates.findByKey(rowHotelRoom.HotelRoom_Id);
                
                for(itRoomRates.moveFirst();itRoomRates.hasNext();itRoomRates.moveNext())
                {
                    if(itRoomRates.index<=6 && itHotelRoom.index==0)
                    {
                        //sbDaysOfWeek += "<th>" + Date.parse(itRoomRates.row.Date.substring(0,10),"yyyy-MM-dd").toString("ddd") + "</th>";
                        switch (itRoomRates.row.Date.toString("ddd")) {
                            case "seg":
                                sbDaysOfWeek += "<td class='tdname'>Segunda</td>";
                                break;
                            case "ter":
                                sbDaysOfWeek += "<td class='tdname'>Terça</td>";
                                break;
                            case "qua":
                                sbDaysOfWeek += "<td class='tdname'>Quarta</td>";
                                break;
                            case "qui":
                                sbDaysOfWeek += "<td class='tdname'>Quinta</td>";
                                break;
                            case "sex":
                                sbDaysOfWeek += "<td class='tdname'>Sexta</td>";
                                break;
                            case "sáb":
                                sbDaysOfWeek += "<td class='tdname'>S&aacute;bado</td>";
                                break;
                            case "dom":
                                sbDaysOfWeek += "<td class='tdname'>Domingo</td>";
                                break;
                                
                        }
                        
                    }
                    //tds com os rates
                    sbRates.appendFormat("<td>{0}</td>#",parseFloat(itRoomRates.row.Base).formatNumber(2,true));
                }
                //debugger; 
                var splitRates = sbRates.toString().split("#");
                var sbRatesW1 = new StringBuilder();
                sbRates = new StringBuilder();
                for(var sr=0;sr<parseInt(splitRates.length/7)+1;sr++)
                {
                    if(sr==0)
                    {
                        sbRatesW1.appendFormat("<td> {0}</td>",sr+1);
                        for(var srd=0;srd<7;srd++)
                        {
                            if(splitRates[srd+(sr*7)]!=null)
                            {
                                sbRatesW1.append(splitRates[srd*(sr+1)]);
                            }
                        }
                    }
                    else
                    {
                        sbRates.appendFormat("<tr><td> {0}</td>",sr+1);
                        //sbRates.appendFormat("<td> {0}</td>",sr+1);
                        for(var srd=0;srd<7;srd++)
                        {
                            if(splitRates[srd+(sr*7)]!=null && splitRates[srd+(sr*7)]!="")
                            {
                                sbRates.append(splitRates[srd+(sr*7)]);
                            }
                            else
                            {
                                sbRates.append("<td>&#160;</td>");
                            }
                        }
                        sbRates.append("</tr>");
                    }
                }
                        
                t.pricesSelRoomsRoom.RoomRatesWeek1 = sbRatesW1;
                t.pricesSelRoomsRoom.RoomRates = sbRates;
                t.pricesSelRoomsRoom.RoomRatesDaysOfWeek = sbDaysOfWeek;
                
                //sbRoomOptions.append(t.pricesSelRoomsRoom.getHtml());

                // desenha a tabela de diarias




                t.pricesSelRoomsRoom.RoomDescription = rowHotelRoom.RoomDescription + " " + rowHotelRoom.RoomBedDescription;

               //para cada opcao de quarto
                //t.pricesSelRooms.RoomDescription = rowHotelRoom.RoomDescription + " " + rowHotelRoom.RoomBedDescription;
                descricaoQuartos += rowHotelRoom.RoomDescription + " " + rowHotelRoom.RoomBedDescription + "<p />"; 
                t.pricesSelRooms.RoomDescription = descricaoQuartos;
                
                t.pricesSelRooms.Currency = rowHotelRoom.Currency_CurrencyCode;
                totalValorTaxas += parseFloat(rowHotelRoom.Rate_TotalTax);

                totalValorSemTaxas += parseFloat(rowHotelRoom.Rate_TotalRates);

                totalValor += parseFloat(rowHotelRoom.Rate_Total);

                
                t.pricesSelRooms.Moeda = getMoeda(rowHotelRoom.Currency_CurrencyCode);
                
                t.pricesSelRooms.Valor = totalValor.formatNumber(2,true);
                t.pricesSelRooms.ValorTaxas = totalValorTaxas.formatNumber(2,true);
                t.pricesSelRooms.ValorSemTaxas = totalValorSemTaxas.formatNumber(2,true);
                
                //pega servicos adicionais
                var sbServices = new StringBuilder();
                if(tabRoomServices!=null)
                {
                    itRoomServices.findByKey(rowHotelRoom.HotelRoom_Id);
                    for(itRoomServices.moveFirst();itRoomServices.hasNext();itRoomServices.moveNext())
                    {
                        t.pricesSelRoomsRoomSVC.svcDescription = itRoomServices.row.Description;
                        
                        if(itRoomServices.row.Value>0)
                        {
                            t.pricesSelRoomsRoomSVC.Currency = itRoomServices.row.Currency;
                            t.pricesSelRoomsRoomSVC.Value = itRoomServices.row.Value.formatNumber(2,true);
                        }
                        else
                        {
                            t.pricesSelRoomsRoomSVC.Currency = "";
                            t.pricesSelRoomsRoomSVC.Value = "incluso no preço";
                        }
                        t.pricesSelRoomsRoomSVC.IDRoomSvc = "svc"+rowHotelRoom.HotelRoom_Id+"_"+itRoomServices.index;
                        t.pricesSelRoomsRoomSVC.ValueRoomSvc = itRoomServices.row.ServiceCode;
                        t.pricesSelRoomsRoomSVC.NameRoomSvc = "svc"+rowHotelRoom.HotelRoom_Id;
                       
                        sbServices.append(t.pricesSelRoomsRoomSVC.getHtml());
                    }
                }
                
                //pega as politicas para o quarto
                
                //debugger;
                var sbRoomPolicies = new StringBuilder();
                if(tabRoomPolicies!=null)
                {
                    itRoomPolicies.findByKey(rowHotelRoom.HotelRoom_Id);
                    //debugger;

                    for(itRoomPolicies.moveFirst();itRoomPolicies.hasNext();itRoomPolicies.moveNext())
                    {
                        //if ( (itRoomPolicies.row.PolicyType == "CHECKIN-IN") || (itRoomPolicies.row.PolicyType == "CHECK-OUT") )
                            //sbRoomPolicies.appendFormat("<h5>{0}</h5><p>{1}</p>",itRoomPolicies.row.PolicyType,itRoomPolicies.row.Policy);
                            sbRoomPolicies.appendFormat("<p>{1}</p>",itRoomPolicies.row.PolicyType,itRoomPolicies.row.Policy);
                    }   
                }

                t.pricesSelRoomsRoom.RoomId = rowHotelRoom.HotelRoom_Id ;
                
                t.pricesSelRoomsRoom.RoomPolicies = sbRoomPolicies.toString();


                
                //debugger; //(estou aqui)
                // Exibe as politicas de cancelamento do hotel
                var sbHotelPolicies = new StringBuilder();
            
                var tabHotelPolicies = dsresult.tables.HotelPolicies ; 
                if(tabHotelPolicies != null)
                { 
                    if (tabHotelPolicies.rows.length > 0 )
                    {
                        for(var am=0;am < tabHotelPolicies.rows.length;am++)
                        {
                            if (tabHotelPolicies.rows[am].PerRoom == 'false')
                            {
                                sbHotelPolicies.appendFormat("<p>{0}</p>", tabHotelPolicies.rows[am].Policy);
                            }
                        }
                    }
                }
                t.pricesSelRoomsRoom.HotelPolicies = sbHotelPolicies.toString();
                sbHotelPolicies.clear();



                //t.pricesSelRooms.RoomPolicies = sbRoomPolicies.toString();
               
                t.pricesSelRooms.RoomServices = sbServices.toString();
                
            }

           
            if(av == (tabRoomStays.rows.length -1))
            {
                t.pricesSelRooms.Termos = t.termo.getHtml();
            }
            else
            {
                t.pricesSelRooms.Termos ='';
            }

           
            sbRoomStays.append(t.pricesSelRoomsRoom.getHtml());
        }
 
        
        //debugger;
        
        t.pricesSelRooms.HotelRooms = sbRoomStays;
        
        $('divResultados').innerHTML = t.pricesSelRooms.getHtml();
        
    }
}

function doLeuAceitou()
{
    LeuAceitou = document.getElementById('chkLeuAceitou').checked;
}

function doSelHotel()
{
    if(LeuAceitou==false)
    {
    alert('favor confirmar leitura das políticas');
    return(false);
    }
    else
    {
    $('fmSubmit').submit();
    }
}


function aStar() {
	document.getElementById("a1").style.border="1px solid #9AAE6B";
	document.getElementById("a1").style.backgroundColor="#fff";
}
function showstar5desc() 
{
	document.getElementById("star5desc").style.display="block";
}
function hide5stardesc() 
{
	document.getElementById("star5desc").style.display="none";
}
function bStar() {
	document.getElementById("a2").style.border="1px solid #9AAE6B";
	document.getElementById("a2").style.backgroundColor="#fff";
}
function showfourstardesc() {
	document.getElementById("fourstardesc").style.display="block";
}
function hidefourstardesc() {
	document.getElementById("fourstardesc").style.display="none";
}
function cStar() {
	document.getElementById("cstar").style.border="1px solid #9AAE6B";
	document.getElementById("cstar").style.backgroundColor="#fff";
}
function showthreestardesc() {
	document.getElementById("threestardesc").style.display="block";
}
function hidethreestardesc() {
	document.getElementById("threestardesc").style.display="none";
}
function dStar() {
	document.getElementById("dstar").style.border="1px solid #9AAE6B";
	document.getElementById("dstar").style.backgroundColor="#fff";
}
function showtwostardesc() {
	document.getElementById("twostardesc").style.display="block";
}
function hidetwostardesc() {
	document.getElementById("twostardesc").style.display="none";
}
function showonestardesc() {
	document.getElementById("onestardesc").style.display="block";
}
function hideonestardesc() {
	document.getElementById("onestardesc").style.display="none";
}
function showaltSearch() {
	document.getElementById("altsearch").style.display="block";
}
function hidealtSearch() 
{
	document.getElementById("altsearch").style.display="none";
}

function showreSearch() 
{
	document.getElementById("research").style.display="block";
}
function hidereSearch() 
{
	document.getElementById("research").style.display="none";
}

function initMotor()
{
    $('motorbusca').innerHTML = t.MotorBusca.MotorBusca.getHtml();
  }
 
function  initOrder()
{
    $('ordenacao').innerHTML = t.ordenacao.getHtml();
 }

