/**
 *  hmsajax JavaScript framework, version 1.0
 *  Copyright (c) 2006 Elvis Navarro Vega ( http://www.unipamplona.edu.co )
 *	@autor: Ing Elvis Navarro Vega
 *  @email: elvisnv@unipamplona.edu.co
 *	Grupo de Desarrollo Plataforma - Universidad de Pamplona.
 *	Pamplona (Norte de Santander). Colombia.
 *	Jueves 12 de Octubre del 2006
 *	hmsajax.js
 *	@descripcion :	Comprende el manejo de la tecnologia Ajax, para el total funcionamiento de este
 *					paquete, se requiere del uso del paquete hmsutil.js
 */

hms = window.hms || {} ;

hms.ajax = function ( strUrl, oDiv, options ) {
	this.url			= strUrl ;
	this.oDiv			= oDiv ;	
	this.httpRequest	= hms.util.createXMLHttpRequest () ;
	this.options		= {
		contentType: 'application/x-www-form-urlencoded' ,
		typeRequest: 'html' ,
		method:		 'post' ,
		parameters:	 '' 
	};
	Object.extend ( this.options, options || {} ) ;
}

hms.ajax.prototype.waitingIndicator = function () {
	this.oDiv.innerHTML = '<p align="center" ><font face="arial" size="2" >Cargando ...</font></p>' ;
} 

hms.ajax.prototype.request = function () {
	this.waitingIndicator () ;	
	this.httpRequest.onreadystatechange = this.onStateChange.bind ( this ) ;
	this.httpRequest.open ( this.options.method, this.url, true ) ;
	this.setRequestHeaders () ;
	//this.setParameters () ;
    this.httpRequest.send ( this.options.method == 'post' ? this.options.parameters : null ) ;
}

hms.ajax.prototype.setRequestHeaders = function () {
	if ( this.options.method == 'post' )
		this.httpRequest.setRequestHeader ( 'Content-Type', this.options.contentType ) ;
}

hms.ajax.prototype.onStateChange = function () {
	if ( this.httpRequest.readyState == 4 ) {
		if ( this.httpRequest.status == 200 ) {		
			switch ( this.options.typeRequest ) {
				case 'html':	this.getHtml () ; break ; 
			}
		} else 
			this.setError () ;
	}
}

hms.ajax.prototype.getHtml = function () {
	this.oDiv.innerHTML = this.httpRequest.responseText.length > 0 ?
							this.httpRequest.responseText : 'La p&aacute;gina que desea acceder tiene problemas, intente mas tarde.' ;							
	this.includeScript () ;
}

hms.ajax.prototype.setError = function () {
	var message = 'Ocurri&oacute; un error recuperando los datos, posiblemente la p&aacute;gina que desea ' +
					'consultar no se encuentre o no esta disponible en estos momentos.' ;
	this.oDiv.innerHTML = '<p align="center" ><font face="arial" size="2" >' + message + '</font></p>' ;							
}

hms.ajax.prototype.includeScript = function () {
	var contentJS = this.oDiv.getElementsByTagName ( 'script' ) ;	
	if ( contentJS ) {
		/**
		 * para la ejecucion solo del primer script que se encuentra en la pagina
			var file = document.createElement ( 'script' ) ;
			file.text = contentJS [0].text ;
			document.getElementsByTagName('head')[0].appendChild(file);
		*/
		var file = document.createElement ( 'script' ) ;
		for ( var i=0; i < contentJS.length; i++ ) {
			if ( contentJS [i].src ) {
				var jsInclude = document.createElement ( 'script' ) ;
				jsInclude.src = contentJS [i].src ;
				document.getElementsByTagName('head')[0].appendChild ( jsInclude );
			} else 
				file.text += contentJS [i].text ;	// solo era esta linea
		}
		document.getElementsByTagName('head')[0].appendChild(file);
	}
}

/**
 * 13-04-2007 @: Elvis Navarro Vega 	&: Agregar metodo hms.ajax.prototype.includeScript 
 */



