/*
	Hotusa_Finder.js : Buscador

	Autor: WebHotelPlus
*/

// ------------------------------------
// Fnd_GetControl : Obtiene un control del IFrame
function Fnd_GetControl( sID )
{
	return GetWnd( m_WndCont ).Ds_GetElementById( sID );
}

// ------------------------------------
// Fnd_GetControlValue : Obtiene el valor de un control del IFrame
function Fnd_GetControlValue( sID )
{
	return GetWnd( m_WndCont ).Ds_GetFieldValue( sID );
}

// ------------------------------------
// Fnd_SetControlValue : Asigna un valor a un control del IFrame
function Fnd_SetControlValue( sID, sValue )
{
	return GetWnd( m_WndCont ).Ds_SetFieldValue( sID, sValue );
}

// ------------------------------------
// Fnd_SelectDate : Calendario
function Fnd_SelectDate( sID )
{
	var sFn    = "Fnd_SetFEntrada";
	var sValue = "";
	
	if ( sID == "idFSalida" )
		sFn = "Fnd_SetFSalida";

	sValue = Fnd_GetControlValue( sID );	
	
	ShowCalendar( sFn, sValue );
}

// ------------------------------------
// Fnd_SetFEntrada : Asigna FEntrada
function Fnd_SetFEntrada( sDate )
{
	var dtSet = DsDt_Str2Date( sDate );
	var dtCur = DsDt_GetCurZeroDate();
	
	// --- Validamos solo contra Fecha del día
	if ( dtSet < dtCur )
	{
		alert( "La \"FECHA DE ENTRADA\" NO ES VALIDA." );
		return;
	}

	// --- Guardamos Fecha y actualizamos
	m_Finder.FEntrada = sDate;
	Fnd_SetControlValue( "idFEntrada", sDate );

	// --- Comprobamos Fecha de Salida
	var dtSalida = DsDt_Str2Date( Fnd_GetControlValue("idFSalida") );
	if( dtSalida <= dtSet )
	{
		dtSet.setDate( dtSet.getDate() + 1 );
		Fnd_SetControlValue( "idFSalida", DsDt_Date2Str(dtSet) );
	}
}

// ------------------------------------
// Fnd_SetFSalida : Asigna FSalida
function Fnd_SetFSalida( sDate )
{
	var dtSet  = DsDt_Str2Date( sDate );
	var dtFEnt = DsDt_Str2Date( m_Finder.FEntrada );
	
	// --- Validamos solo contra Fecha de Entrada
	if ( dtSet <= dtFEnt )
	{
		alert( "La \"FECHA DE SALIDA\" NO ES VALIDA." );
		return;
	}

	// --- Guardamos Fecha y actualizamos
	m_Finder.FSalida = sDate;
	Fnd_SetControlValue( "idFSalida", sDate );
}


// ------------------------------------
// Fnd_Send : Enviar Query del Buscador
function Fnd_Send()
{
	m_Finder.Send();
}

// ------------------------------------
// Fnd_GetXml : Obtiene el Xml actual
function Fnd_GetXml()
{
	m_Finder.Prepare2Send();
	return m_Finder.m_Xml;
}

// --------------------------------------------------------
// Datos
var m_Finder = null; // Buscador

// --------------------------------------------------------
// Clase CFinder
function CFinder()
{
	// --- Datos
	this.m_Xml     = "";
	
	this.CtryPK    = m_CtryPK;
	this.StPK      = m_StPK;
	this.FEntrada  = "";
	this.FSalida   = "";
	this.Radio     = "0"
	this.Reg       = "OB"
	this.NPer      = "2";
	this.NHabs     = "1";

	var dt = new Date();
	
	dt.setDate( (m_ServerDate.getDate() + 1) );
	this.FEntrada = DsDt_Date2Str( dt );

	dt.setDate( dt.getDate() + 1 );
	this.FSalida = DsDt_Date2Str( dt );

	// --- Métodos
	this.UpdateVars   = _UpdateVars;
	this.ResetVars    = _ResetVars;
	this.ValidFechas  = _ValidFechas;
	this.Prepare2Send = _Prepare2Send;
	this.Send         = _Send;
	this.SendForm     = _SendForm;

// ------------------------------------
// Send : Enviar Búsqueda desde el Buscador -global-
function _Send()
{
	// --- Actualizar Variable
	this.UpdateVars();
	
	// --- Validar Fechas
	if ( !this.ValidFechas() )
		return;
	
	this.Prepare2Send();
	this.SendForm();
}

// ------------------------------------
// SendForm : Enviar Formulario
function _SendForm()
{
	try
	{
		ShowLoading();
		
		Ds_SetFieldValue( "fs_XML", this.m_Xml );
		document.formFinder.submit();
	}
	catch(e){}
}

// --------------------------------
// ValidFechas : Validar Fechas
function _ValidFechas()
{
	var dtFSal = DsDt_Str2Date( this.FSalida  );
	var dtFEnt = DsDt_Str2Date( this.FEntrada );
	var dtCur  = DsDt_GetCurZeroDate();

	// --- Comprobar Fechas	
	if ( (dtFSal <= dtFEnt) || (dtFEnt < dtCur) )
	{
		alert( "El intervalo de FECHAS es incorrecto." );
		return false;
	}
	
	var nDays = DsDt_DaysSpan( dtFSal, dtFEnt );
	if( (nDays <= 0) || (nDays > 7) )
	{
		alert( "El máximo de noches permitido es 7.\n\nPara estancias superiores, llame al 902 366 322." );
		return false;
	}

	return true;
}

// ------------------------------------
// UpdateVars : Actualiza Variables desde el Formulario
function _UpdateVars()
{
	this.CtryPK   = Fnd_GetControlValue( "idCountry"  );
	this.StPK     = Fnd_GetControlValue( "idState"    );
	this.FEntrada = Fnd_GetControlValue( "idFEntrada" );
	this.FSalida  = Fnd_GetControlValue( "idFSalida"  );
	this.Radio    = Fnd_GetControlValue( "idRadio"    );
	this.Reg      = Fnd_GetControlValue( "idReg"      );
	this.NPer     = Fnd_GetControlValue( "idNPer"     );
	this.NHabs    = Fnd_GetControlValue( "idNHabs"    );
}

// ------------------------------------
// ResetVars : Variables al Formulario
function _ResetVars()
{
	Fnd_SetControlValue( "idCountry",  this.CtryPK   );
	Fnd_SetControlValue( "idState",    this.StPK     );
	Fnd_SetControlValue( "idFEntrada", this.FEntrada );
	Fnd_SetControlValue( "idFSalida",  this.FSalida  );
	Fnd_SetControlValue( "idRadio",    this.Radio    );
	Fnd_SetControlValue( "idReg",      this.Reg      );
	Fnd_SetControlValue( "idNPer",     this.NPer     );
	Fnd_SetControlValue( "idNHabs",    this.NHabs    );
}

// ------------------------------------
// Prepare2Send : Prepara la Búsqueda
function _Prepare2Send()
{
	// --- Convertir Fechas
	var aDate     = null;
	var sFEntrada = "";
	var sFSalida  = "";
	
	aDate = this.FEntrada.split( "/" );
	if( aDate[0].length == 1 ) aDate[0] = ("0" + aDate[0]);
	if( aDate[1].length == 1 ) aDate[1] = ("0" + aDate[1]);
	sFEntrada = aDate[1] + "/" + aDate[0] + "/" +aDate[2];

	aDate = this.FSalida.split( "/" );
	if( aDate[0].length == 1 ) aDate[0] = ("0" + aDate[0]);
	if( aDate[1].length == 1 ) aDate[1] = ("0" + aDate[1]);
	sFSalida = aDate[1] + "/" + aDate[0] + "/" +aDate[2];

	// --- Iniciar Stream
	var sXml = "";

	// --- Volcar datos
	sXml += "<Vst_FK>"        + m_VstPK       + "</Vst_FK>";
	sXml += "<FStart>"        + this.FEntrada + "</FStart>";
	sXml += "<FEnd>"          + this.FSalida  + "</FEnd>";
	
	sXml += "<pais>"          + this.CtryPK + "</pais>";
	sXml += "<provincia>"     + this.StPK   + "</provincia>";
	sXml += "<regimen>"       + this.Reg    + "</regimen>";
	sXml += "<paxes1>"        + this.NPer   + "</paxes1>";
	sXml += "<numhab1>"       + this.NHabs  + "</numhab1>";
	sXml += "<radio>"         + this.Radio  + "</radio>";
	sXml += "<fechaentrada>"  + sFEntrada   + "</fechaentrada>";
	sXml += "<fechasalida>"   + sFSalida    + "</fechasalida>";
	sXml += "<categoria>"     + "0"         + "</categoria>";
	sXml += "<idioma>"        + "1"         + "</idioma>";
	sXml += "<duplicidad>"    + "1"         + "</duplicidad>";
	sXml += "<restricciones>" + "1"         + "</restricciones>";

	// --- Terminar Stream
	this.m_Xml = sXml; 
}

// --- End Of Class
return this;
}

// --- Global
m_Finder = new CFinder();

