/**
* Fichero para el control de +Opciones para el Buscador
*
* @author Arturo Díaz
* @copyright RGD Solutions S.L.
* @since 27-12-2007
* @version 1.0
*/

// ----- Inclusión de los ficheros ajax
//include('../../../lib/ajax.js');

// ----- Variables globales para la capa del mapa
var _capa_Opc_nombre='capa_Opc_name';

$(document).ready(function()
{
	//alert(_capa_Opc_nombre);
});


function Opc_CrearCapa(nombre)
{
	// ----- Creamos la capa
	_capa=document.createElement('div');
	_capa.setAttribute('name',nombre);
	_capa.setAttribute('id',nombre);
	document.body.appendChild(_capa);

	// ----- Ajustamos parámetros básicos
	_capa=document.getElementById(nombre);
	_capa.style.position='absolute';
	_capa.style.visibility='hidden';
	//_capa.style.backgroundColor='#FFFFFF';
	//_capa.style.border='1px solid #000000';
}

function Opc_CentrarCapa(nombre)
{
	// ----- Para centrar la capa.
	 var _Info = new Opc_TInfo_Navegador();	 

	//alert(window.scrollY);
	_ancho=550;
	_alto=500;
	
	// ----- Explorer
	if(_Info.nombre.indexOf('Explorer')>0)
	{
		_ancho_pantalla=document.body.offsetWidth;
		_alto_pantalla=document.body.offsetHeight;
		_top=parseInt(((_alto_pantalla - _alto) / 2) + document.body.scrollTop);
		_left=parseInt(((_ancho_pantalla - _ancho) / 2) + document.body.scrollLeft);
	}
	else
	// ----- Netscape
	{
		_ancho_pantalla=window.innerWidth;
		_alto_pantalla=window.innerHeight;
		_top=parseInt(((_alto_pantalla - _alto) / 2) + window.scrollY);
		_left=parseInt(((_ancho_pantalla - _ancho) / 2) + window.scrollX);
	}
	
	_capa=document.getElementById(nombre);
	_capa.style.top=_top+'px';
	_capa.style.left=_left+'px';
	_capa.style.width=_ancho+'px';
	_capa.style.height=_alto+'px';
}

function Opc_MostrarCapa(nombre,visible,parametros,zona)
{
	if(visible)	
	{
		if(!document.getElementById(nombre))
			Map_CrearCapa(nombre);
		document.getElementById(nombre).style.visibility='visible';
		
		if(zona==1)
			Opc_VerOpciones(nombre,parametros);
		Opc_CentrarCapa(nombre);
	}
	else
	{
		document.getElementById(nombre).innerHTML='';
		document.getElementById(nombre).style.visibility='hidden';
	}
}

function Opc_MostrarCapaV9(nombre,visible,parametros,zona)
{
	if(visible)	
	{
		if(zona==1)
			Opc_VerOpcionesV9(nombre,parametros);
	}
	else
		$('#'+nombre).dialog('destroy');
}

function Opc_VerOpciones(nombre,parametros)
{
	_values_send="modo=0&"+parametros;
	_URL_=ruta_raiz_V2+"./buscadorV2/mas_opciones.php";
	_Ajax.open("POST",_URL_,true);
	_Ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	_Ajax.send('&'+_values_send); //enviar variables
	_Ajax.onreadystatechange=_Opc_VerOpciones;
}

function OPC_getHTMLCargando()
{
	resulta='&nbsp;&nbsp;<img border="0" src="http://www.ruralgest.net/operadoresV2/images/loading.gif" align="absmiddle">&nbsp;<span id="fichas_txt_neg" style="text-align:center; color:#444444; font-size=12px;"><b>Conectando con RuralGest .........</b></span>';
	return resulta;
}

function Opc_VerOpcionesV9(nombre,parametros)
{
	nombre_capa=nombre;
	//alert(nombre+' <==> '+$('#'+nombre_capa).attr('id')+' <==> _capa_Opc_nombre571918');
	_alto=600;
	_ancho=680;
	$('#'+nombre_capa).dialog(
	{ 
	    modal: true,
		bgiframe: true,
		stack:true,
		autoOpen:true,
	    overlay: 
	    { 
	        opacity: 0.5, 
	        background: "black" 
		},
		title:'+ Opciones',
		width: _ancho,
		minWidth:_ancho,
		height: _alto,
		minHeight:_alto
	});
	
	$('#'+nombre_capa).show('fast');
	$('#'+nombre_capa).html(OPC_getHTMLCargando());
	$('#'+nombre_capa).dialog('open');
	
	parametros="modo=0&version_op=9&"+parametros;
	//alert(parametros);
	$.post("../operadoresV2/buscadorV2/mas_opciones.php",parametros,
				function(data, textStatus)
        		 {
					//alert(data);
					if(data=='KO')
					{
						alert('No se han localizado más opciones en el establecimiento para los criterios de búsqueda.');
						$('#'+nombre_capa).dialog('close');
						return false;
					} else
					{
						datos_eval=data.split('[param_ajax/*/param_ajax]');
						eval(datos_eval[0]);
						$('#'+nombre_capa).html(datos_eval[1]);	       							
						//alert($('#'+nombre_capa).html());
						
						$('#btn_cerrar').click(function()
						{
							$('#'+nombre_capa).dialog('destroy');
						});
					}
       			 }
   	);
}

function _Opc_VerOpciones()
{ //funcion controlador
	_capa_concept=document.getElementById(_capa_Opc_nombre);
	_capa_concept.innerHTML=OPC_getHTMLCargando();
	_capa_concept.style.visibility='visible';

	if (_Ajax.readyState==4) //control de estados del proceso
	{
		if(_Ajax.status==200) //si se da un status 200 (TERMINADO CON EXITO)
		{
			if(_Ajax.responseText=='KO')
			{
				_capa_concept.innerHTML='';
				alert('No se han localizado más opciones en el establecimiento para los criterios de búsqueda.');
			}
			else if(_Ajax.responseText!='')
			{				
				N_Noches=0;
				HabitacionesLibres=new Array();
				Opciones_IVA=0;
				datos_eval=_Ajax.responseText.split('[param_ajax/*/param_ajax]');
				eval(datos_eval[0]);
				_capa_concept.innerHTML=datos_eval[1];
			}
		}
	}
}

function Opc_TInfo_Navegador()
{
	this.nombre=navigator.appName;
	this.cod_nombre=navigator.appCodeName;
	this.version=navigator.appVersion.substring(0,4);
	this.plataforma=navigator.platform;
	this.java_activo=navigator.javaEnabled();
	this.resolucion_ancho=screen.width;
	this.resolucion_alto=screen.height;
}

// ----- Para la Gestión de los precios y las Habitaciones en +Opciones
var N_Noches=0;
var HabitacionesLibres=new Array();
var Opciones_IVA=0;
	function ControlPrecios(P_id_casa)
	{
		precio_final=0;
		oferta_final=0;
		Hab_Marcadas='';
		hay_seleccion=false;
		
		// ----- Recorremos las habitaciones para ver cual está chequeada.
		for (ind_hab=0;ind_hab<HabitacionesLibres[P_id_casa].length;ind_hab++)
		{ 			
			id_habitacion=HabitacionesLibres[P_id_casa][ind_hab]['id_habitacion'];
			id_habitacion_base=HabitacionesLibres[P_id_casa][ind_hab]['id_habitacion_base'];
			id_casa=P_id_casa;
			ocupacion=document.getElementById('ocu_'+id_habitacion_base+'_'+P_id_casa).value;
			ocupacion=ocupacion.split('_');
			cuantas=document.getElementById('nh_'+id_habitacion_base+'_'+P_id_casa).value;
			//cuantas=1;
			//alert(id_habitacion+'-'+HabitacionesLibres[P_id_casa][ind_hab]['nombre']+' ('+ocupacion[0]+'-'+ocupacion[1]+'/'+cuantas+')');
			
			// ----- Recorremos Habitaciones_base para buscar el precio
			encontrada=false;
			ind_hab_b=0;
			cuantas_selectas=0;
			while((!encontrada) && (ind_hab_b<HabitacionesLibres[P_id_casa][ind_hab]['habitaciones_base'].length))
			{
				habitacion_base=HabitacionesLibres[P_id_casa][ind_hab]['habitaciones_base'][ind_hab_b];
				//alert(habitacion_base['id_habitacion_base']+'-'+habitacion_base['ocupacion'].length);
				
				// ----- Recorremos la ocupación para encontrar el precio
				ind_ocu=0;
				while((!encontrada) && (ind_ocu<habitacion_base['ocupacion'].length))
				{
					datos_ocupacion=habitacion_base['ocupacion'][ind_ocu];
					//alert(datos_ocupacion['num_persona']+'-'+datos_ocupacion['supletorias']+' <==> '+ocupacion[0]+'-'+ocupacion[1]+'/'+cuantas);
					if((datos_ocupacion['num_persona']==ocupacion[0]) && (datos_ocupacion['supletorias']==ocupacion[1]))
					{
						// ---- Actualizamos el precio y oferta de la fila (Habitación)
						_numero = new oNumero(parseFloat(datos_ocupacion['importe'])*parseFloat(cuantas)*parseFloat(N_Noches));
						//document.getElementById('imp_'+id_habitacion).innerHTML=_numero.formato(2, true,true)+' &euro;';
						if(parseFloat(HabitacionesLibres[P_id_casa][ind_hab]['oferta_importe'])>0)
						{
							_numero = new oNumero(parseFloat(HabitacionesLibres[P_id_casa][ind_hab]['oferta_importe'])*parseFloat(cuantas));
							document.getElementById('of_opc_'+id_habitacion_base+'_'+P_id_casa).innerHTML='-'+_numero.formato(2, true,true)+' &euro;';
						}

						
						// ---- Si está Checkeado lo sumamos al total
						if(document.getElementById('cb_'+id_habitacion_base+'_'+P_id_casa).checked)
						{
							hay_seleccion=true;
							// ----- Para seleccionar el Nº de Habitaciones q se quieren
							cuantas_selectas++;
							if(cuantas_selectas==cuantas)
							{
								// ----- Paramos cuando hayamos montado tantas Hab_base como se pidan
								encontrada=true;	
								importe_1=new oNumero(datos_ocupacion['importe']);
								precio_final+=parseFloat(importe_1.formato(2, true,false))*parseInt(cuantas)*parseInt(N_Noches);
								if(HabitacionesLibres[P_id_casa][ind_hab]['oferta_importe']>0)
								{
									importe_2=new oNumero(HabitacionesLibres[P_id_casa][ind_hab]['oferta_importe']);
									oferta_final+=parseFloat(importe_2.formato(2, true,false))*parseInt(cuantas);
								}
							}
							
							elemento_hab=HabitacionesLibres[P_id_casa][ind_hab]['nombre']+'|'+
										 HabitacionesLibres[P_id_casa][ind_hab]['tipo_agrupacion']+'|'+
										 id_habitacion+'|'+
										 habitacion_base['id_habitacion_base']+'|'+
										 ocupacion[0]+'|'+ocupacion[1];
							if(Hab_Marcadas=='')
								Hab_Marcadas=elemento_hab;
							else
								Hab_Marcadas+='¨'+elemento_hab;							
						} // Si la Hab está marcada
					}
					ind_ocu++;
				} // Del While de ocupación
				
				ind_hab_b++;
			} // Del While de Habitaciones_Base
				
		} // Del For de habitaciones

		// ----- Prepamos el IVA
		if(Opciones_IVA>0)
		{
			//alert((precio_final-oferta_final)+'*'+Opciones_IVA+'/'+100);
			precio_final-=oferta_final;
			precio_final+=(precio_final*Opciones_IVA/100);
			//precio_final=new oNumero(precio_final);
			//precio_final=precio_final.formato(2, true,false);
		}
		
		//_numero = new oNumero(precio_final);
		//$('#importe_total_'+P_id_casa).html(_numero.formato(2, true, true)+' &euro;&nbsp;&nbsp;');
		document.getElementById('f_opciones_'+P_id_casa+'_0').hab_marcados.value=Hab_Marcadas;
		
		// ---- Activamos desactivamos los botones de Presupuesto y reserva
		if(hay_seleccion)
		{
			$('#btn_presupuesto_'+P_id_casa).css('background-color','#6A4101');
			$('#btn_reservar_opc_'+P_id_casa).css('background-color','#EC0000');
			$('#hay_elemento_marcado_'+P_id_casa).val(1);
		} else
		{
			$('#btn_presupuesto_'+P_id_casa).css('background-color','#666666');
			$('#btn_reservar_opc_'+P_id_casa).css('background-color','#666666');
			$('#hay_elemento_marcado_'+P_id_casa).val(0);
		}
	}
	
	function oNumero(numero)
	{ 
		//Propiedades 
		this.valor = numero || 0 
		this.dec = -1; 
		
		//Métodos 
		this.formato = numFormat; 
		this.ponValor = ponValor; 
		
		//Definición de los métodos 
		function ponValor(cad) 
		{ 
			if (cad =='-' || cad=='+') return 
			if (cad.length ==0) return 
			if (cad.indexOf('.') >=0) 
				this.valor = parseFloat(cad); 
			else 
				this.valor = parseInt(cad); 
		} 
		
		function numFormat(dec, miles, formatoSP) 
		{ 
			var num = this.valor, signo=3, expr; 
			var cad = ""+this.valor; 
			var ceros = "", pos, pdec, i; 
			for (i=0; i < dec; i++) 
			ceros += '0'; 
			pos = cad.indexOf('.') 
			if (pos < 0) 
			cad = cad+"."+ceros; 
			else 
			{ 
				pdec = cad.length - pos -1; 
				if (pdec <= dec) 
				{ 
					for (i=0; i< (dec-pdec); i++) 
						cad += '0'; 
				} 
				else 
				{ 
					num = num*Math.pow(10, dec); 
					num = Math.round(num); 
					num = num/Math.pow(10, dec); 
					cad = new String(num); 
				} 
			} 
			pos = cad.indexOf('.') 
			if (pos < 0) 
				pos = cad.lentgh 
			if (cad.substr(0,1)=='-' || cad.substr(0,1) == '+') 
				signo = 4; 
			if (miles && pos > signo) 
				do
				{ 
					expr = /([+-]?\d)(\d{3}[\.\,]\d*)/ 
					cad.match(expr) 
					cad=cad.replace(expr, RegExp.$1+','+RegExp.$2) 
				} 
			while (cad.indexOf(',') > signo) 
				if (dec<0) cad = cad.replace(/\./,'') 
				{
					if(formatoSP)
					{
						cad=cad.replace(',','*');
						cad=cad.replace('.',',');
						cad=cad.replace('*','.');
					}
					return cad; 
				}
		} 
	} //Fin del objeto oNumero: 

	/**
	 * Controla si se puede enviar el formulario de +Opciones, 
	 * si hay algun elemento seleccionado
	 * 
	 * @param P_id_casa
	 * @return
	 */
	function BV9_ControlSubmitOpc(P_id_casa)
	{
		return ($('#hay_elemento_marcado_'+P_id_casa).val()==1);
			
	}
