function p10$(idElemento)
{
	return $(idElemento);
}

function p10$$(idClase)
{
	return $$('.' + idClase);
}

function DatepickerBusqueda( idDatepicker, opcionesDatepicker )
{	
	
	jQuery( '#' + idDatepicker ).datepicker(  {
				buttonImage: '/images/iconos/calendario.gif',
				buttonImageOnly: true,
				showButtonPanel: true,
				showOn: 'button',
				buttonText: 'Seleccione la fecha',
				changeMonth: false,
				currentText: 'Hoy',
				closeText: 'x',
				numberOfMonths: opcionesDatepicker.cantidadDeMeses,
				prevText: 'Anterior',
				nextText: 'Siguiente',
				date: new Date(),
				minDate: opcionesDatepicker.fechaMinima,
				firstDay: 0,
				showAnim: 'fadeIn'
			}
	);
	
}

function DatepickerDatosPersonales( idDatepicker, opcionesDatepicker )
{	
	var hoy = new Date();
	var anioActual = hoy.getFullYear();
	var anioMaximo = anioActual - 18;
	var anioMinimo = anioActual - 90;

	jQuery( '#' + idDatepicker ).datepicker(  {

				buttonImage: '/images/iconos/calendario.gif',
				buttonImageOnly: true,
				showButtonPanel: false,
				showOn: 'button',
				buttonText: 'Seleccione la fecha',
				changeMonth: false,
				currentText: 'Hoy',
				closeText: 'x',
				numberOfMonths: opcionesDatepicker.cantidadDeMeses,
				prevText: 'Anterior',
				nextText: 'Siguiente',
				firstDay: 0,
				showAnim: 'fadeIn',
				changeYear: true,
				changeMonth: true,
				yearRange: anioMinimo + ':' + anioMaximo,
				maxDate: new Date()
			}
	);
}

document.observe( 'dom:loaded', function() {

	p10$$( 'p10Calendar' ).each( function( div ) {
		var idInput =  InicializarDatePicker( div.id );
		DatepickerBusqueda( idInput,  
					{ 
					cantidadDeMeses: [1, 2], 
					fechaMinima: new Date() 
					} 
				);
			}
		);
	}
);

document.observe( 'dom:loaded', function() {
	
	p10$$( 'p10CalendarDatos' ).each( function( div ) {
		var fechaDefault = div.readAttribute('valorDefault');
		var idInput = InicializarDatePicker( div.id );
		
		if (div.hasClassName('claseCalendarDatos'))
		{
			p10$(idInput).addClassName('claseCalendarDatosInput');
		}	
	
			DatepickerDatosPersonales( idInput,  
					{ 
						cantidadDeMeses: [1, 1]
					} 
				);
				
		SetearFecha( div.id,  fechaDefault);
			}
		);
	}
);

function InicializarDatePicker( idDiv )
{ 	
	var arr = p10$(idDiv).childElements();
	
	if ( arr.length == 0  )
	{
		var div = p10$(idDiv);
		
		div.addClassName("ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-border");
		
		var idInput = GetIdInput(idDiv);
		div.insert('<input type="text" name="'+ idInput + '" id="' + idInput + '" onchange="'+ div.readAttribute('evento') +'" tabindex="4" >');
		
		if (div.onchange != null)
		{
				div.removeAttribute('evento');
		}
		
		return idInput;
	}
} 

function SetearFecha( idDiv, valor)
{
	InicializarDatePicker( idDiv );
	p10$(GetIdInput(idDiv)).value = valor;

}

function GetIdInput(idDiv)
{
	return idDiv + '_dp';
}

document.observe( 'dom:loaded', function(){
	p10$$('autompletePV').each( function( div){
		InicializarAutocompletePV( div);
	} );
	p10$$('autompleteProv').each( function( div){
		InicializarAutocompletePROV( div );
	} );
	p10$$('autocompleteLoc').each( function( div){
		InicializarAutocompleteLOC( div );
	} );
	p10$$('autocompleteProvi').each( function( div){
		InicializarAutocompletePROVI( div );
	} );
	p10$$('autocompleteMpv').each( function( div){
		InicializarAutocompleteMPV( div );
	} );
} );

function InicializarAutocompletePV( div )
{
	var datos =  InicializarAutocomplete( div );

	new AutoComplete( datos.idInputText, datos.idInputHidden , eval( datos.onIniciaLookup ), eval( datos.onSeleccionaItem ));
	p10$( datos.idInputText ).focus( );
} 


function InicializarAutocompletePROV( div )
{
	var datos =  InicializarAutocomplete( div );
	
	new AutoCompleteProv( datos.idInputText, datos.idInputHidden , eval( datos.onIniciaLookup ), eval( datos.onSeleccionaItem ));
	p10$( datos.idInputText ).focus( );
} 

function InicializarAutocompletePROVI( div )
{
	var datos =  InicializarAutocomplete( div );
	
	new AutoCompleteProvi( datos.idInputText, datos.idInputHidden , eval( datos.onIniciaLookup ), eval( datos.onSeleccionaItem ));
	p10$( datos.idInputText ).focus( );
} 

function InicializarAutocompleteLOC( div )
{
	var datos =  InicializarAutocomplete( div );
	
	new AutoCompleteLoc( datos.idInputText, datos.idInputHidden , eval( datos.onIniciaLookup ), eval( datos.onSeleccionaItem ));
	p10$( datos.idInputText ).focus( );
} 

function InicializarAutocompleteMPV( div )
{
	var datos =  InicializarAutocomplete( div );
	
	new AutoCompleteMpv( datos.idInputText, datos.idInputHidden , eval( datos.onIniciaLookup ), eval( datos.onSeleccionaItem ));
	p10$( datos.idInputText ).focus( );
} 

var cantDigitosId = 4;

function InicializarAutocomplete( div )
{
		var arr = div.childElements();
		
		if ( arr.length == 0 )
		{
			div.addClassName( "autocomplete" );
			
			var idInputText = div.id + "_text";
			var idInputHidden = div.id + "_hh";
			var idLabel = div.id + "_lbl";
			
			var valorDefault;
			
			if ( div.readAttribute('valor') == undefined )
			{
				valorDefault = '';
			}
			else
			{
				valorDefault = div.readAttribute('valor');
			}
			
			var widthDiv = div.getWidth();
			var widthInput = ( widthDiv - ( (cantDigitosId * 7) + 8 ) );
			
			div.insert( "<input class='autocomplete_txt' type='text' id='" + idInputText + "' style='width: " + widthInput + "px;' value=''>" );
			div.insert( "<input type='hidden' id='" +  idInputHidden + "' value='" + valorDefault  + "' >" );
			div.insert( "<div id='" +  idLabel + "' class='lbl'></div>" );
			
		}
		
		var onIniciaLookup;
		var onSeleccionaItem;
		
		if ( div.readAttribute('onIniciaLookup') == undefined )	
		{
			alert("Error en la definición del autocomplete, el atributo onIniciaLookup no tiene valor");
		}
		else
		{
			onIniciaLookup = div.readAttribute('onIniciaLookup');
		}
		
		if ( div.readAttribute('onSeleccionaItem') == undefined )	
		{
			alert("Error en la definición del Autocomplete, el atributo onSeleccionaItem no tiene valor");
		}
		else
		{
			onSeleccionaItem = div.readAttribute('onSeleccionaItem');
		}

		var json = {
					idInputText: idInputText,
					idInputHidden: idInputHidden,
					onIniciaLookup: onIniciaLookup,
					onSeleccionaItem: onSeleccionaItem		
					}
		return json;

}

function LimpiarAutocomplete( div )
{
	var arr = div.childElements();

	arr.each( function(elem){
		if (elem.value != undefined)
			elem.value = '';
		if ( elem.innerHTML && elem.innerHTML != undefined )
			elem.innerHTML = '';
	});	
}

function AutocompleteVacio( div )
{
	var arr = div.childElements();
	
	return (arr[0].value == "");
}