function fnAjaxElem( pstElemId ) {
	var obElement     = null;
  
	obElement = jQuery( "#" + pstElemId );
  
	return obElement;
} /* End function */

function fnAjaxJQueryOnException( pobAjaxRequest, pstErrorType, pobException, pstObjetoNombre ) {
	var lstErrorType    = "";
	var lstErrorMsg     = "";
  
	if ( pstErrorType != null  ){
		lstErrorType = pstErrorType;
	} /* End if */
	else if ( pobException != null ){
		lstErrorType = pobException.name;
	} /* End if */
  
	if ( pobException != null ){
		lstErrorMsg = pobException.message;
	} /* End if */
  
	/* fnAccionError( lstErrorType + " - " + lstErrorMsg, "div_vistaMsg" + pstObjetoNombre ); */
} /* End function */

function fnAjaxCall( pboAsynchronous, pstLayerId, pstAjxUrl, pstAjxParams, pstObjetoNombre, pstJsAfterRequest, pobObject01, pobObject02, pobObject03, pobObject04
		, pstUriLayerId
) {
	var lobAjxCall      = null;
	var lstDataType     = "json";
	var lstReqType     	= "GET";
    
	if ( pstAjxParams == null ) {
		pstAjxParams = "";
	} /* End if */
    
	if ( pobObject04 != null ) {
		jQuery( "#" + pobObject04.id ).attr( "disabled", "true" );
	} /* End if */ 
	
	if ( pstLayerId != null ) {
		lstDataType = "html";
		lstReqType 	= "POST"; 
	} /* End if */
  
	jQuery.ajax (
		{
	      async:  	pboAsynchronous
	    , url:    	pstAjxUrl
	    , type:   	lstReqType
	    , data:   	pstAjxParams 
	    , cache:  	false
	    , dataType: lstDataType
	    , error:  	function( pobAjaxRequest, pstErrorType, pobException ) {
						fnAjaxJQueryOnException( pobAjaxRequest, pstErrorType, pobException, pstObjetoNombre );
					} /* End function */
	    , success:  function( pobXHR ){
						if ( pobObject04 != null ) {
							jQuery( "#" + pobObject04.id ).removeAttr( "disabled" );
						} /* End if */           
	      
						if ( pstJsAfterRequest != null ) {
							eval( pstJsAfterRequest );
						} /* End if */
	            
						if ( pstLayerId != null ) {	
							if ( pstUriLayerId == null ) {
								fnAjaxElem( pstLayerId ).html( pobXHR );
							} /* End if */
							else {
								fnAjaxElem( pstLayerId ).html(
									$( pobXHR ).find( '#' + pstUriLayerId ).html() 
								);								
							} /* End else */
							
						} /* End if */
	                    
					} /* End function */
	    }
	);

} /* End function */

/*
 * Llenar selects encadenados - inicio
 */
function fnAjaxSelectLlenar( pobXHR, pobSelect, pstObjetoNombre, pstIdNombre, pstDescripcionNombre ) {
	var lobData       		= null;
	var lstIdNombre     	= "";
	var lstDescripcionNombre= "";
  
	lobData = pobXHR;
  
	lstIdNombre = "id";
	if ( pstIdNombre != null ) {
		lstIdNombre = pstIdNombre;
	} /* End if */ 
  
	lstDescripcionNombre = "descripcion";
	if ( pstDescripcionNombre != null ) {
		lstDescripcionNombre = pstDescripcionNombre;
	} /* End if */
 
	/* Poner nuevas opciones */
	for ( var i = 0; i < lobData.length; i++ ) {   
		pobSelect.options[ pobSelect.length ] = new Option
        ( 
          lobData[i][ lstDescripcionNombre ]
        , lobData[i][ lstIdNombre ]
        );
	} /* End for */

	pobSelect.selectedIndex = 0;
	pobSelect.disabled = false;
} /* End function */

function fnAjaxSelectCargar( pboAsynchronous, pobSelect, pstAjxUrl, pstAjxParams, pstObjetoNombre, pstIdNombre, pboRepeat, pstDescripcionNombre ) {
	var lobXHR        		= null;
	var lboRepeat     		= false;
	var pstgobXHRNombre   	= "";
	var lstJsAfterRequest 	= "";
	var lstAjxParams    	= "";
  
	lstAjxParams = pstAjxParams;
  
	if ( pboRepeat != null ) {
		lboRepeat = pboRepeat;
	} /* End if */
  
	/* Eliminar opciones existentes */
	pobSelect.options.length = 1;
	pobSelect.disabled = true;

	if ( lboRepeat ) {
		pstgobXHRNombre = pobSelect.form.name + pstObjetoNombre;
		eval( "if ( typeof( " + pstgobXHRNombre + " ) != \"undefined\" ) { lobXHR = " + pstgobXHRNombre + "; }" );
		lstJsAfterRequest = pstgobXHRNombre + " = pobXHR; ";
	} /* End if */	
  
	if ( lobXHR == null ) {
		fnAjaxCall( pboAsynchronous, null, pstAjxUrl, lstAjxParams, pstObjetoNombre, lstJsAfterRequest + "fnAjaxSelectLlenar( pobXHR, pobObject01, pobObject02, pobObject03, pobObject04 );", pobSelect, pstObjetoNombre, pstIdNombre, pstDescripcionNombre );  
	} /* End if */
	else {
		fnAjaxSelectLlenar( lobXHR, pobSelect, pstObjetoNombre, pstIdNombre, pstDescripcionNombre );
	} /* End else */
  
} /* End function */
/*
 * Llenar selects encadenados - fin
 */

function fnAjaxInsert_error( pobAjaxRequest, pstErrorType, pobException ) {
} /* End function */

function fnAjaxInsert_success( pobXHR, layerDestinoId, layerFuenteId ) {
	var lstHtmlToInsert   	= "";
	var lobDom			   	= null;
	
	lobDom = jQuery.parseHTML( pobXHR );
	lobDom = $( "<div>" ).append( lobDom );
	lobDom = lobDom.find( layerFuenteId );
	
	lstHtmlToInsert = lobDom.html();
	
	$( layerDestinoId ).html( lstHtmlToInsert );
	
} /* End function */

function fnAjaxInsert( layerDestinoId, insertUri, layerFuenteId ) {
	var lstAjxUrl   	= "";
	var ldataType   	= "html";
    
	lstAjxUrl     =   insertUri;
    
	jQuery.ajax( 
    {
      url:    	lstAjxUrl   
	, dataType: ldataType
    , cache:  	false
      , error:  function( pobAjaxRequest, pstErrorType, pobException ) {
    	  			fnAjaxInsert_error( pobAjaxRequest, pstErrorType, pobException );
				} /* End function */
      , success:function( pobXHR ){
    	  			fnAjaxInsert_success( pobXHR, layerDestinoId, layerFuenteId ); 
				} /* End function */
    }
	);              

} /* End function */

function fnAjaxParse_error( pobAjaxRequest, pstErrorType, pobException ) {
} /* End function */

function fnAjaxParse_success( pstParseUri, pobXHR ) {
	var lobDom			   	=	null;
	
	lobDom = jQuery.parseHTML( pobXHR );
	lobDom = $( "<div>" ).append( lobDom );
	
	fnAjaxParse_success_especifico( pstParseUri, lobDom );
} /* End function */

function fnAjaxParse( pstParseUri, pboAsynchronous ) {
	var lstAjxUrl   	=	"";
	var lboAsynchronous	=	true;
	var lstDataType   	=	"html";
    
	lstAjxUrl     =   pstParseUri;
	
	if ( pboAsynchronous != null ) {
		lboAsynchronous = pboAsynchronous;
	} /* End if */
	
	jQuery.ajax( 
		{
		  async: 	lboAsynchronous
		, url:    	lstAjxUrl
		, dataType: lstDataType
		, cache:  	false
		, error:  	function( pobAjaxRequest, pstErrorType, pobException ) {
						fnAjaxParse_error( pobAjaxRequest, pstErrorType, pobException );
					} /* End function */
		, success:	function( pobXHR ){
						fnAjaxParse_success( pstParseUri, pobXHR ); 
					} /* End function */
		}
	);              

} /* End function */
