
/// <summary>
/// Direccion del buscador (se actualiza desdel servidor)
/// </summary>
//var _APPLICATION_PATH = "/";
/// <summary>
/// Tipo de retorno al cencelar el dialogo
/// </summary>
//var _DLG_CANCEL = "undefined";
/// <summary>
/// Tipo de retorno al cencelar el dialogo
/// </summary>
//var _DLG_NOTHING = "nothing";

/// <summary>
/// Funcion que invoca el buscador y pone el resultado de la llamada en el control especificado
/// Usualmente una caja de texto, o una etiqueta oculta.
/// El programa deberia tratar en el evento de servidor el resultado de la llamada.
/// </summary>
/// <param name="tipoBuscador">Tipo de buscador que se muestra</param>
/// <param name="controlRetorno">Control donde se entrega el retorno</param>
/// <param name="idControlOpcional">Identificador del control opcional</param>
/// <param name="idCompanyia">Identificador de la compañía del diccionario</param>
function InvocarBuscador(tipoBuscador, controlRetorno, idControlOpcional, idCompanyia)
{
	// Obtenemos el control opcional por si es necesario
	var controlOpcional = document.getElementById(idControlOpcional);
	
	// URL del buscador	
	var url = _APPLICATION_PATH + '/Dialogos/Buscador/Buscador.aspx?tipoBuscador=' + tipoBuscador;
	
	// Si tenemos control opcional pasamos el parámetro
	if (controlOpcional != null)
	{
		url += '&valorOpcional=' + controlOpcional.value;
	}
	
	// Añadimos los parameros de filtro de poblaciones
	if (idCompanyia != null)
	{
		url += "&idCompanyia=" + idCompanyia;
	}
	
	InvocarDialogo(url, controlRetorno, 650, 350)
}

/// <summary>
/// Funcion que invoca el buscador y pone el resultado de la llamada en el control especificado
/// Usualmente una caja de texto, o una etiqueta oculta.
/// El programa deberia tratar en el evento de servidor el resultado de la llamada.
/// </summary>
/// <param name="tipoBuscador">Tipo de buscador que se muestra</param>
/// <param name="controlCP">Control donde se pasa el CP a filtrar</param>
/// <param name="controlCP2">Control donde se pasa el CP2 a filtrar</param>
/// <param name="idCompanyia">Id de la companyia con la que se esta trabajando</param>
/// <param name="controlRetorno">Control donde se entrega el retorno</param>
function InvocarBuscadorPoblaciones(tipoBuscador, controlCP, controlCP2, idCompanyia, controlRetorno)
{        
	// URL del buscador
	var url = _APPLICATION_PATH + '/Dialogos/Buscador/Buscador.aspx?tipoBuscador=' + tipoBuscador;

	// Añadimos los parameros de filtro de poblaciones
	var control;
	var control2;
	control = document.getElementById(controlCP);
	control2 = document.getElementById(controlCP2);
	if (control != null && control.value != "") url += "&cp=" + control.value;
	if (control2 != null && control2.value != "") url += "&cp2=" + control2.value;
	url += "&idCompanyia=" + idCompanyia;
	
	InvocarDialogo(url, controlRetorno, 650, 350)
}

/// <summary>
/// Funcion que invoca el buscador y pone el resultado de la llamada en el control especificado
/// Usualmente una caja de texto, o una etiqueta oculta.
/// El programa deberia tratar en el evento de servidor el resultado de la llamada.
/// </summary>
/// <param name="tipoBuscador">Tipo de buscador que se muestra</param>
/// <param name="controlNIF">Control donde se pasa el NIF a filtrar</param>
/// <param name="controlNombre">Control donde se pasa el nombre a filtrar</param>
/// <param name="controlApellido1">Control donde se pasa el apellido1 a filtrar</param>
/// <param name="controlApellido2">Control donde se pasa el apellido2 a filtrar</param>
/// <param name="controlCodigoHost">Control donde se pasa el codigohost a filtrar</param>
/// <param name="controlRetorno">Control donde se entrega el retorno</param>
function InvocarBuscadorPersonas(tipoBuscador, controlNIF, controlNombre, controlApellido1, controlApellido2, controlCodigoHost, controlRetorno)
{        
	// URL del buscador
	var url = _APPLICATION_PATH + '/Dialogos/Buscador/Buscador.aspx?tipoBuscador=' + tipoBuscador;
	
	// Añadimos los parameros de filtro de personas
	var control;
	control = document.getElementById(controlNIF);
	if (control != null && control.value != "") url += "&nif=" + control.value;
	control = document.getElementById(controlNombre);
	if (control != null && control.value != "") url += "&nombre=%" + control.value + "%";
	control = document.getElementById(controlApellido1);
	if (control != null && control.value != "") url += "&apellido1=%" + control.value + "%";
	control = document.getElementById(controlApellido2);
	if (control != null && control.value != "") url += "&apellido2=%" + control.value + "%";
	control = document.getElementById(controlCodigoHost);
	if (control != null && control.value != "") url += "&codigoHost=" + control.value;

	// Mostrar el diaologo
	InvocarDialogo(url, controlRetorno, 650, 350)
}

/// <summary>
/// Invoca el dialogo de seleccion de opciones y actualiza los controles
/// que contienen la lista de opciones seleccionadas y la suma de sus
/// valores
/// </summary>
/// <param name="tipoExtra">Tipo de extras a mostrar (OPCIONES o ACCESORIOS)</param>
/// <param name="idControlRetorno">IdCliente del control donde se devuelve el resultado</param>
/// <param name="idControlListaExtras">IdCliente del control que tiene los elementos seleccionados hasta el momento</param>
/// <param name="idControlVehiculo">IdCliente del control que tiene el identificador del vehiculo</param>
/// <param name="aliasProducto">Alias del producto con la que se trabaja</param>
/// <param name="subTipoExtra">SubTipo del extra a mostrar (SONIDO o NOSONIDO)</param>
/// <param name="mostrarCheck">Indica si muestra o no los checkboxes (True/false)</param>
/// <param name="editarDescripcion">Indica si permite editar o no la descripcion(True/false)</param>
/// <param name="mostrarValor">Indica si muestra o no los valores (True/false)</param>
/// <param name="editarValor">Indica si permite editar o no los valores (True/false)</param>
/// <param name="idControlFecha">IdCliente del control que tiene la fecha de matriculacion</param>
function InvocarExtras(tipoExtra, idControlRetorno, idControlListaExtras, idControlVehiculo, aliasProducto, subTipoExtra, idControlImporte,
mostrarCheck, editarDescripcion, mostrarNumeroSerie, editarNumeroSerie, mostrarValor, editarValor, mostrarAdicional, editarAdicional, idControlFecha)
{
	var controlListaExtras = document.getElementById(idControlListaExtras);
	var controlVehiculo = document.getElementById(idControlVehiculo);
	var controlFecha = document.getElementById(idControlFecha);	
	var controlImporte = document.getElementById(idControlImporte);
	var fecha = "";
	var importeExtras = "";
	var idVehiculo = "";

	if (controlVehiculo != null)
		idVehiculo = controlVehiculo.value;
		
	if (controlFecha != null)
		fecha = controlFecha.value;
	
	if (controlImporte != null)
		importeExtras = controlImporte.value;
	
	var url = _APPLICATION_PATH + '/Dialogos/Extras/Extras.aspx';
	url = url.concat("?idVehiculo=", idVehiculo, 
		"&aliasProducto=", aliasProducto, 
		"&tipoExtra=", tipoExtra, 
		"&seleccion=", controlListaExtras.value,
		"&subTipoExtra=", subTipoExtra,
		"&importeExtras=", importeExtras,
		"&mostrarCheck=", mostrarCheck,
		"&editarDescripcion=", editarDescripcion,
		"&mostrarNumeroSerie=", mostrarNumeroSerie,
		"&editarNumeroSerie=", editarNumeroSerie,
		"&mostrarValor=", mostrarValor,
		"&editarValor=", editarValor,
		"&mostrarAdicional=", mostrarAdicional,
		"&editarAdicional=", editarAdicional,
		"&fecha=", fecha);

	// Calculamos los anvhos en función del tipo de extra a pintar
	var width = 450;
	var height = 500;
	if (tipoExtra == "VARIOS" || tipoExtra == "LICENCIA")
	{
		width = 650;
		height = 350;
	}
	
	// Invocamos el diálogo
	InvocarDialogo(url, idControlRetorno, width, height);
}

/// <summary>
/// Muestra una ventana con el PDF del proyecto auto a imprimir
/// </summary>
function InvocarImprimirCartaGarantiasAuto(idContrato, idContratosAdicionales)
{
	// Control donde pondremos el retorno de retorno de los datos
	var url = _APPLICATION_PATH + '/Auto/Contratacion/Imprimir.aspx?idContrato=' + idContrato + '&idContratosAdicionales=' + idContratosAdicionales;
	window.open(url,"", "location=no, menubar=no, resizable=yes, status=no, scrollbars=yes");
}

/// <summary>
/// Invoca el dialogo de seleccion de opciones y actualiza los controles
/// que contienen la lista de opciones seleccionadas y la suma de sus
/// valores
/// </summary>
function InvocarCartaGarantiasAuto(tipoBuscador)
{
	// Dialogo de búsqueda de polizas
	var url = _APPLICATION_PATH + '/Dialogos/Buscador/Buscador.aspx?tipoBuscador=' + tipoBuscador;
	var returnValue = InvocarDialogo(url, "", 650, 350);
	
	// Impresion del PDF
	if (returnValue != undefined && returnValue != _DLG_CANCEL && returnValue != -1) 
	{
		var url = _APPLICATION_PATH + '/Auto/Contratacion/Imprimir.aspx?idContrato=' + returnValue;
		window.open (url);
	}
	
	event.returnValue = false;
}

/// <summary>
/// Muestra una ventana con el PDF del proyecto a imprimir
/// </summary>
/// <param name="idContrato">Identificador encriptado del contrato</param>
/// <param name="adicionales">Lista de prodcutos adicionales seleccionados</param>
/// <param name="productos">Lista de productos seleccionados</param>
function InvocarImpimirComparativaAuto(idContrato, adicionales, productos)
{
	// Control donde pondremos el retorno de retorno de los datos
	var url = _APPLICATION_PATH + '/Auto/Comparativa/Imprimir.aspx?idContrato=' + idContrato + '&adicionales=' + adicionales + '&productos=' + productos; 
	//window.open(url,"", "location=no, menubar=no, resizable=yes, status=no, scrollbars=yes, top=" + this.screenTop + ", left=" + this.screenLeft + ", height=" + this.height + ", width=" + this.width);
	window.open(url,"", "location=no, menubar=no, resizable=yes, status=no, scrollbars=yes");
}

/// <summary>
/// Muestra una ventana con el PDF del proyecto artículo a imprimir
/// </summary>
function InvocarImprimirCartaGarantiasArticulo(idContrato)
{
	// Control donde pondremos el retorno de retorno de los datos
	var url = _APPLICATION_PATH + '/Articulo/Contratacion/Imprimir.aspx?idContrato=' + idContrato;
	window.open(url,"", "location=no, menubar=no, resizable=yes, status=no, scrollbars=yes");
	return false;	
}

/// <summary>
/// Muestra una ventana con el PDF del proyecto artículo a imprimir
/// </summary>
function InvocarImprimirCartaGarantiasArticuloContratosAnulados(idContrato)
{
	// Control donde pondremos el retorno de retorno de los datos
	var url = _APPLICATION_PATH + '/Articulo/Contratacion/Imprimir.aspx?idContrato=' + idContrato + '&anulados=ANULADOS';
	window.open(url,"", "location=no, menubar=no, resizable=yes, status=no, scrollbars=yes");	
}

/// <summary>
/// Funcion que invoca el buscador y pone el resultado de la llamada en el control especificado
/// Usualmente una caja de texto, o una etiqueta oculta.
/// El programa deberia tratar en el evento de servidor el resultado de la llamada.
/// </summary>
/// <param name="url">URL del dialogo a invocar</param>
/// <param name="controlRetorno">Control donde se entrega el retorno</param>
/// <param name="width">Ancho de la ventana del dialogo</param>
/// <param name="controlRetorno">Alto de la ventana del dialogo</param>
function InvocarDialogo(url, controlRetorno, width, height)
{        
	// Control donde pondremos el retorno de retorno de los datos
	returnValue = window.showModalDialog(url,'', 'dialogHeight:' + height + 'px; dialogWidth:' + width + 'px;  center:yes; help:no; resizable:no; status:no;');
	if (controlRetorno != "")
	{
		var control = MM_findObj(controlRetorno);
		control.value = returnValue;
	}
	return returnValue;
	//window.open(url,"", "location=no, menubar=no, resizable=yes, status=no, scrollbars=yes");
}

/// <summary>
/// Asume el RETURN de teclado y dispara el click del boton indicado
/// </summary>
function AceptarReturn(idBoton, evento)
{
	// Recuperamos en el evento (the Firefox o IE)
	if (evento == null) evento = window.event;
	
	if (idBoton == "")
	{
		if (evento.keyCode == 13)	// Return
		{
			evento.returnValue = false;
			evento.keyCode = 0;
		}
	}
	else
	{
		var boton = document.all[idBoton];
		if (boton != null
			&& evento.keyCode == 13)	// Return
		{
			boton.click();
			evento.returnValue = false;
			evento.keyCode = 0;
		}
	}
}

/// <summary>
/// Convierte un string en valor numérico
/// </summary>
/// <param name=value>Valor del string</param>
function String2Number(value)
{
	value = value.replace(/[^0123456789,]/g, "");	// Elimina caracteres no validos
	value = value.replace(",", ".");	// Cambia el punto decimal
	return Number(value);
}

/// <summary>
/// Expande una fila de la subBand (segundo nivel) de la grid indicada
/// </summary>
/// <param name=tableName>Nombre identificador de la grid</param>
/// <param name=itemName>Nombre identificador del botón que lanza el evento</param>
function NuevaFila(tableName, itemName)
{ 
	// Nueva fila a la band[1] (de la cela seleccionada)
	igtbl_addNew(tableName, 1);
}

/// <summary>
/// cancela la ejecución en cascada del evento
/// </summary>
function CancelBubble()
{
	try
	{
		window.event.cancelBubble = true;
	}
	catch(err)
	{
		//Nothing TODO (en Firefox falla el cancelBubble)
	}
}

/// <summary>
/// Macromedia function for serach object
/// </summary>
function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

/// <summary>
/// Macromedia swap image function
/// </summary>
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}