
function loading() {

    $("#capaPagina").hide();

    $("#capaEspera").show();

}

// Redirecciones 
function getDisponibilidad(){
	
    var adultos2 =0;
    var adultos3 =0;
    var edad3 =0;
    var edad4 =0;
     var edad5 =0;
      var edad6 =0;
    
  
        
    if (document.searchForm.adultos2!=null){
	   adultos2=document.searchForm.adultos2.value;
	}
    if (document.searchForm.adultos3!=null){
	   adultos3=document.searchForm.adultos3.value;
	}
    if (document.searchForm.edad3!=null){
	   edad3=document.searchForm.edad3.value;
	}
    if (document.searchForm.edad4!=null){
	   edad4=document.searchForm.edad4.value;
	}
     if (document.searchForm.edad5!=null){
	   edad5=document.searchForm.edad5.value;
	}
    if (document.searchForm.edad6!=null){
	   edad6=document.searchForm.edad6.value;
	}
    
	var dir='www.todoplayas.com';
	var url='http://'+dir+'/index.php?action=disponibilidad&form='+document.searchForm.form.value+'&idDestino='+document.searchForm.idDestino.value+'&idZone='+document.searchForm.idZone.value+'&idHotel='+document.searchForm.idHotel.value+'&mayorista='+document.searchForm.mayorista.value+'&habitacion='+document.searchForm.habitacion.value+'&edad2='+document.searchForm.edad2.value+'&edad1='+document.searchForm.edad1.value+'&adultos1='+document.searchForm.adultos1.value+'&sa_mesano='+document.searchForm.sa_mesano.value+'&en_mesano='+document.searchForm.en_mesano.value+'&en_dia='+document.searchForm.en_dia.value+'&sa_dia='+document.searchForm.sa_dia.value+'&adultos2='+adultos2+'&edad3='+edad3+'&edad4='+edad4+'&adultos3='+adultos3+'&edad5='+edad5+'&edad6='+edad6;
	
	document.location.href=url;
	
	return false;	
}


function getSearching(){
	
	loading();
	var zona ="";
    var adultos2 =0;
    var adultos3 =0;
    var edad3 =0;
    var edad4 =0;
    var edad5 =0;
    var edad6 =0;
	
	if (document.searchForm.zona!=null){
	   zona=document.searchForm.zona.value;
	}
    if (document.searchForm.adultos2!=null){
	   adultos2=document.searchForm.adultos2.value;
	}
    if (document.searchForm.adultos3!=null){
	   adultos3=document.searchForm.adultos3.value;
	}
    if (document.searchForm.edad3!=null){
	   edad3=document.searchForm.edad3.value;
	}
    if (document.searchForm.edad4!=null){
	   edad4=document.searchForm.edad4.value;
	}
      if (document.searchForm.edad5!=null){
	   edad5=document.searchForm.edad5.value;
	}
    if (document.searchForm.edad6!=null){
	   edad6=document.searchForm.edad6.value;
	}
	var dir='www.todoplayas.com';
	
	var url='http://'+dir+'/index.php?action=general&'+'id='+document.searchForm.id.value+'&form='+document.searchForm.form.value+'&destino='+ document.searchForm.destino.value+'&zona='+zona+'&habitacion='+document.searchForm.habitacion.value+'&edad2='+document.searchForm.edad2.value+'&edad1='+document.searchForm.edad1.value+'&adultos1='+document.searchForm.adultos1.value+'&sa_mesano='+document.searchForm.sa_mesano.value+'&en_mesano='+document.searchForm.en_mesano.value+'&en_dia='+document.searchForm.en_dia.value+'&sa_dia='+document.searchForm.sa_dia.value+'&rangoPrecio='+document.searchForm.rangoPrecio.value+'&adultos2='+adultos2+'&edad3='+edad3+'&edad4='+edad4+'&adultos3='+adultos3+'&edad5='+edad5+'&edad6='+edad6+'&mini='+document.searchForm.mini.value+'&noches='+document.searchForm.nights.value;
	
	document.location.href=url;
	
	return false;	
}

function popUpScroll(mipage,mititulo,ancho,alto)

{

	aWindow= open(mipage,mititulo,'scrollbars=yes,toolbar=no,status=no,resizable=no,width=' + ancho + ',height=' + alto);

}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

var ie		= navigator.appName == "Microsoft Internet Explorer";
var ns6		= document.getElementById&&!document.all;
var ns4		= document.layers;
var opera 	= navigator.userAgent.indexOf("Opera") > -1;
var opera5	= (navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 5")!=-1)?true:false;
var opera6	= (navigator.appVersion.indexOf("MSIE 5")!=-1 && navigator.userAgent.indexOf("Opera 6")!=-1)?true:false;
var mac		= (navigator.userAgent.indexOf("Mac")!=-1);
var win;


/**
 * smOpenPop: Función generica que abre una ventana con los parametros 
 * especificos que se le pasan.
 *
 * @param sUrl: Url de la ventana. 
 * @param sName: Nombre de la ventana.  
 * @param sWidth: Ancho de la ventana 
 * @param sHeight: Alto de la ventana 
 * @param sTop:  Posición X del vertice superior izquierdo de la ventana 
 * @param sLeft: Posición Y del vertice superior izquierdo de la ventana 
 * @param sSettings: cadena de texto libre con los parametros adicionales (Ej scrollbars=Yes)
 */

function smOpenPop(sUrl,sName,sWidth,sHeight,sTop,sLeft,sSettings)
{
	if(sWidth=='') sWidth=200;
	if(sHeight=='') sHeight=200;
	if(sTop=='') sTop=10;		
	if(sLeft=='') sLeft=10;	
	var settings = "width="+sWidth+",height="+sHeight+",left="+sLeft+",top="+sTop;
	if(sSettings != ''){
		settings += ","+sSettings;
	}
	if(win)
	win.close();
	window.focus();
	win	= window.open(sUrl,sName,settings);
}

/**
 * trim de Strings
 *
 * @param s: String
 */
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

/**
 * OcultaDiv Función que oculta una capa 
 *
 * @param Div: Identificado r de la capa 
 */

function OcultaDiv (Div) 
{	
	if(ns4){
		eval("document.layers[\""+Div+"\"].visibility='hidden'");	
	}
	else if(ie){
		eval("document.all."+Div+".style.visibility='hidden'");
	}
	else if(ns6){
		eval("document.getElementById('"+Div+"').style.visibility='hidden'");
	}
}

/**
 * MuestraDiv.
 * Función que visualiza una capa
 *
 * @param Div: Identificador de la capa 
 */

function MuestraDiv (Div) 
{
	if(ns4){
		eval("document.layers[\""+Div+"\"].visibility='visible'");	
	}
	else if(ie){
		eval("document.all."+Div+".style.visibility='visible'");
	}
	else if(ns6){
		eval("document.getElementById('"+Div+"').style.visibility='visible'");
	}
}

function ShowDIV (div, ifr, state) {
	// div = ID del div que contiene el contenido a mostrar
	//       <div id='XXXXXX' style='position:absolute;top:TT;left:LL;z-index:100;display:none'>
	// ifr = ID de un iframe que debe existir para que el div tape los select en IE
	//       <iframe id="XXXXX" src="javascript:false;" scrolling="no" frameborder="0" style="position:absolute; top:0px; left:0px; display:none;"></iframe>
	// state = true | false (estado de visibilidad del contenido)
	var DivRef = document.getElementById(div);
	var IfrRef = document.getElementById(ifr);
	if (state) {
		DivRef.style.display = "block";
		IfrRef.style.width = DivRef.offsetWidth;
		IfrRef.style.height = DivRef.offsetHeight;
		IfrRef.style.top = DivRef.style.top;
		IfrRef.style.left = DivRef.style.left;
		IfrRef.style.zIndex = DivRef.style.zIndex - 1;
		IfrRef.style.display = "block";
	} else {
		DivRef.style.display = "none";
		IfrRef.style.display = "none";
	}
}

/**
 * correctDate. 
 * Corrige las fechas de lso combos del estilo dia y mes_anyo. 
 * El año y el mes estan unificados en un unico combo
 *
 * @param form_name: Nombre del formulario 
 * @param day_field: Nombre del cambo dia del formulario
 * @param month_year_field: Nombre dl campo mes y dia del formulario
 */

function correctDate(form_name, day_field, month_year_field) 
{ 	
	var comboDia 	= eval("document." + form_name + "." + day_field);
	var comboMes 	= eval("document." + form_name + "." + month_year_field);	
	var day 	= comboDia.options[comboDia.selectedIndex].value;
	var month 	= comboMes.options[comboMes.selectedIndex].value;	
	var anyos  = Math.floor(comboMes.selectedIndex/12);
	if ((day!="")&&(month!="")){
		//Comprobamos el número de opciones nulas que hay al principio del combo de días
		var optionDiaNulo=0;
		for (var i=0;i<comboDia.length;i++){
			if (comboDia.options[i].value==""){
				optionDiaNulo++;
			}
		}		
		//Comprobamos el número de opciones nulas que hay al principio del combo de meses
		var optionMesNulo=0;
		for (var j=0;j<comboMes.length;j++){
			if (comboMes.options[j].value==""){
				optionMesNulo++;
			}
		}
		//Construyo una fecha con esos componentes
		var fecha_comp	= month.split("-");
		var a_date 	= new Date(fecha_comp[1],(fecha_comp[0]-1),day);		

		//Obtengo el día y el mes de la fecha validada
		day = a_date.getDate();
		month = a_date.getMonth();

		//Corrijo las combos, sumandole el número de opciones vacías que tiene cada combo
		eval("document." + form_name + "." + day_field + ".selectedIndex = " + (day-1+optionDiaNulo));
		eval("document." + form_name + "." + month_year_field + ".selectedIndex = " + (month+optionMesNulo+12*anyos));			
	}
	
}


/**
 * correctDate2. 
 * Corrige las fechas de lso combos del estilo dia y mes_anyo. 
 * El año y el mes estan unificados en un unico combo
 *
 * @param form_name: Nombre del formulario 
 * @param day_field: Nombre del cambo dia del formulario
 * @param month_year_field: Nombre dl campo mes y dia del formulario
 */

function correctDate2(form_name, day_field, month_year_field) 
{ 	
	var comboDia 	= eval("document." + form_name + "." + day_field);
	var comboMes 	= eval("document." + form_name + "." + month_year_field);	
	var day 	= comboDia.options[comboDia.selectedIndex].value;
	var fecha_comp	= comboMes.options[comboMes.selectedIndex].value.split("-");
	var month 	= fecha_comp[0]-1;	
	var year		=fecha_comp[1];
	
	
	
	if ((day!="")&&(month!="")&&(year!="")&&(month!="-1")){
		//Comprobamos el número de opciones nulas que hay al principio del combo de días
		
		var optionDiaNulo=0;
		for (var i=0;i<comboDia.length;i++){
			if (comboDia.options[i].value==""){
				optionDiaNulo++;
			}
		}		
		//Comprobamos el número de opciones nulas que hay al principio del combo de meses
		var optionMesNulo=0;
		for (var j=0;j<comboMes.length;j++){
			if (comboMes.options[j].value==""){
				optionMesNulo++;
			}
		}
		//Construyo una fecha con esos componentes
		var a_date 	= new Date(year,month,day);	
		//alert(a_date);	

		//Obtengo el día y el mes de la fecha validada
		day = a_date.getDate();
		month = a_date.getMonth()+1;
		year = a_date.getFullYear();
		var mesanyo=month+'-'+year;
		
		//Corrijo las combos, sumandole el número de opciones vacías que tiene cada combo
		eval("document." + form_name + "." + day_field + ".selectedIndex = " + (day-1+optionDiaNulo));
		
		for (var j=0;j<comboMes.length;j++){
			var temp=comboMes.options[j].value.split('-')
			if((month==temp[0])&&(year==temp[1])){
			eval("document." + form_name + "." + month_year_field + ".selectedIndex = " + j);	
			return;				
			}
		}
		
	}
	
}


/**
 * correctDate3.
 * Corrige las fechas de lo combos del estilo dia y mes y anyo. 
 * Son tres combos separados.
 *
 * @param form_name: Nombre del formulario 
 * @param day_field: Nombre del cambo dia del formulario
 * @param month_field: Nombre del campo mes del formulario
 * @param year_field: Nombre del campo anño del formulario 
 */

function correctDate3(form_name, day_field, month_field, year_field)
{
	var comboDia 	= eval("document." + form_name + "." + day_field);
	var comboMes 	= eval("document." + form_name + "." + month_field);
	var comboAnio 	= eval("document." + form_name + "." + year_field);
	var day 	= comboDia.options[comboDia.selectedIndex].value;
	var month 	= comboMes.options[comboMes.selectedIndex].value;
	var year 	= comboAnio.options[comboAnio.selectedIndex].value;
	if ((day!="")&&(month!="")&&(year!=""))
	{
		//Comprobamos el número de opciones nulas que hay al principio del combo de días
		var optionDiaNulo=0;
		for (var i=0;i<comboDia.length;i++){
			if (comboDia.options[i].value==""){
				optionDiaNulo++;
			}
		}
		//Comprobamos el número de opciones nulas que hay al principio del combo de meses
		var optionMesNulo=0;
		for (var j=0;j<comboMes.length;j++){
			if (comboMes.options[j].value==""){
				optionMesNulo++;
			}
		}	
		//Construyo una fecha con esos componentes
		var a_date 	= new Date(year,(month-1),day);		
		day 		= a_date.getDate();
		month 	= a_date.getMonth();
		//Corrijo las combos, sumandole el número de opciones vacías que tiene cada combo
		eval("document." + form_name + "." + day_field + ".selectedIndex = " + (day-1+optionDiaNulo));
		eval("document." + form_name + "." + month_field + ".selectedIndex = " + (month+optionMesNulo));
	}
}


/**
 * selectDato.
 * Selecciona el campo de un select de 
 *
 * @param lista: Nombre del campo del combo
 * @param valor: Valor que se tiene que seleccionar
 */
function selectDato(lista,valor){
	try{
		for (var i=0;i<lista.length;i++){
			if (lista.options[i].value == valor){
				lista.options[i].selected = true;
				break;
			}
		}
	} catch(e){ }
}


/**
 * selectDatoRadio
 * Selecciona el campo de un radio  
 *
 * @param lista: Nombre del campo del radio
 * @param valor: Valor que se tiene que seleccionar
 */
function selectDatoRadio(lista,valor){
	for (var i=0;i<lista.length;i++){
		if (lista[i].value == valor){
			lista[i].checked = true;
			break;
		}
	}
}


/**
 * loadDate.
 * Carga la fecha en un combo de fecha. 
 * El combo de mes y año estan unificados en uno solo 
 *
 * @param sFecha: Fecha que se carga formato dd/mm/yyyy
 * @param campoDia: Nombre del cambo dia del formulario
 * @param campoMesAnyo: Nombre del campo mes y año del formulario 
 */
function loadDate(sFecha, campoDia, campoMesAnyo){	
	 loadDateSeparator(sFecha, campoDia, campoMesAnyo, "/");
}

/**
 * loadDateSeparator.
 * Carga la fecha en un combo de fecha.
 * El combo de mes y año estan unificados en uno solo delimitado
 * por un separador
 *
 * @param sFecha: Fecha que se carga formato dd/mm/yyyy
 * @param campoDia: Nombre del cambo dia del formulario
 * @param campoMesAnyo: Nombre del campo mes y año del formulario 
 * @param separador: separador de mes y año
 */
function loadDateSeparator(sFecha, campoDia, campoMesAnyo, separador){	
	var sDate 	= sFecha.split(separador);	
	selectDato(campoDia,sDate[0]);
	selectDato(campoMesAnyo,""+sDate[1]+"-"+sDate[2]);	
}


/**
 * loadDate3.
 * Carga la fecha en un combo de fecha. 
 * La fecha esta en formato de dia mes y anño en tres combos diferentes 
 *
 * @param sFecha: Fecha que se carga formato dd/mm/yyyy
 * @param campoDia: Nombre del cambo dia del formulario
 * @param campoMes: Nombre del campo mes del formulario 
 * @param campoAnyo: Nombre del campo año del formulario  
 */

function loadDate3(sFecha, campoDia, campoMes, campoAnyo){	
	var sDate 	= sFecha.split("/");	
	selectDato(campoDia,sDate[0]);
	selectDato(campoMes,sDate[1]);
	selectDato(campoAnyo,sDate[2]);	
}

/**
 * restafechas.
 * devuelve la diferncia entre las dos fechas introducidas
 *
 * @param dia: Dia inicial 
 * @param mes mes inicial
 * @param anyo año inicial 
 * @param dia1 dia final
 * @param mes1 mes final
 * @param anyo1 año final
 */
 
function restafechas(dia,mes,anyo,dia1,mes1,anyo1) {
	var fechaini 		= new Date(mes+"/"+dia+"/"+anyo) 
	var fechaf 		= new Date(mes1+"/"+dia1+"/"+anyo1) 
	var tiempoRestante 	= fechaf.getTime() - fechaini.getTime() 
	var noches 		= Math.round(tiempoRestante / (1000 * 60 * 60 * 24))
	return noches;
}

/**
 * Cierra el popUp y carga la url pasada por parametro en la pagina padre (la que ha abierto el popUp)
 *
 * @param link: Link donde se redirigira la pagina padre
 */
function popUpLink(link){
	// Recargamos la pagina padre
	window.opener.location = link;
	// Cerramos el popUp
	window.close();
}

/**
 * changePatron
 * Remplaza en la cadena el patron que pasamos de un string el patron los valores de la 
 *
 * @param cadena: Cadena donde se va a sustituir 
 * @param patron: Patron que se va a sustituir
 * @param valor: Valor con el que se sustituye
 *
 * Ej. Patron para cambiar todos las ocurrencias de (a) => /á|à|ä|â/gi
 */

function changePatron(cadena, patron, valor){
	cadena = cadena.replace(patron,valor);		
	return cadena;	
}



/**
 * changePatron
 * Remplaza en la cadena el patron que pasamos de un string el patron los valores de la 
 *
 * @param cadena: Cadena con el nombre del hotel 
 */

function changeNameHotel(cadena){
	cadena = cadena.toLowerCase()
	cadena = changePatron(cadena, /\s/gi,"_");	
	cadena = changePatron(cadena, /\!|\"|\·|\$|\%|\&|\/|\(|\)|\=|\?|\¿|\'|\.|\;|\,|\-|\¨|\`|\´|\*|\+|\./gi,"");	
	cadena = changePatron(cadena, /á|à|ä|â/gi,"a");		
	cadena = changePatron(cadena, /é|è|ë|ê/gi,"e");			
	cadena = changePatron(cadena, /í|ì|ï|î/gi,"i");		
	cadena = changePatron(cadena, /ó|ò|ö|ô/gi,"o");
	cadena = changePatron(cadena, /ú|ù|ü|û/gi,"u");	
	cadena = changePatron(cadena, /ç/gi,"c");
	cadena = changePatron(cadena, /ñ/gi,"n");		
	return cadena;
}


function normalizaName(cadena){
	cadena = cadena.toLowerCase()
	cadena = cadena.replace(/\!|\"|\·|\$|\%|\&|\/|\(|\)|\=|\?|\¿|\'|\.|\;|\,|\-|\¨|\`|\´|\*|\+|\./gi,"");	
	cadena = cadena.replace(/á|à|ä|â/gi,"a");		
	cadena = cadena.replace(/é|è|ë|ê/gi,"e");			
	cadena = cadena.replace(/í|ì|ï|î/gi,"i");		
	cadena = cadena.replace(/ó|ò|ö|ô/gi,"o");
	cadena = cadena.replace(/ú|ù|ü|û/gi,"u");	
	cadena = cadena.replace(/ç/gi,"c");
	return cadena;
}

// Reemplaza todas las ocurrencias de un caracter en un texto
function replaceAll(texto, caracterViejo, caracterNuevo){

	var temp = texto;
	var i = temp.indexOf(caracterViejo);
	
	while (i > -1) {
		temp = temp.replace(caracterViejo, caracterNuevo);
		i = temp.indexOf(caracterViejo, i + caracterNuevo.length + 1);
	}
	
	return temp;
}

