

function xmlhttpGet(fncFunction) {

    var cadenaParametros='';

    for(i=0;i<this.parameterNames.length;i++){

        if(i==0){

            cadenaParametros+='?';

        }else{

            cadenaParametros+='&';

        }

        cadenaParametros+=this.parameterNames[i]+'='+this.parameterValues[i];

    }

    var url= this.url+cadenaParametros;

    if (window.XMLHttpRequest) {

        this.reqRequest = new XMLHttpRequest();

    } else if (window.ActiveXObject) {

        this.reqRequest = new ActiveXObject("Microsoft.XMLHTTP");

    }

    this.reqRequest.onreadystatechange = fncFunction;

    this.reqRequest.open("GET", url, true);

    this.reqRequest.send(null);

    this.parameters=new Array();

}



/**

* Funci�n que indica que el response este en estado correcto para procesar

* @return true si lo esta false en caso contrario.

**/

function isCorrectReponse(){

    var result=false;

    if (this.reqRequest.readyState == 4) {

        if (this.reqRequest.status == 200) {

            result=true;

        } else {

           alert('Hubo problemas con la peticion.'+this.reqRequest.status);

        }

    }

    return result;

}





function createAjaxBean(pBean){

    var newBean= new ajaxBean();

    var bean=pBean;

    var properties=bean.childNodes;

    for(j=0;j<properties.length;j++){

        var property=properties.item(j);

        var name=property.childNodes.item(0).firstChild.data;

        var value="";

        if(property.childNodes.item(1).childNodes.length>0){

            value=property.childNodes.item(1).firstChild.data;

        }

       newBean.setValue(name,value);

    }

    return newBean;

}

/**

    Lee la respuesta y parsea el resultado a un array de beans

**/



function parseXMLResponse() {

        items=new Array();	

        if(this.reqRequest.responseXML!=null){

            response  = this.reqRequest.responseXML.documentElement;    

            beans = response.childNodes;

            for(i=0;i<beans.length;i++){

                items[i]=createAjaxBean(beans.item(i));

            }

        }

    return items;

}



function addParameter(name,value){

    this.parameterNames[this.parameterNames.length]=name;

    this.parameterValues[this.parameterValues.length]=value;

}





/**

* Constructora de la clase

**/

function ajaxConnection(pUrl){

    this.url=pUrl;

    this.reqRequest=null;

    this.parameterNames=new Array();

    this.parameterValues=new Array();

    this.open=xmlhttpGet;

    this.isCorrect=isCorrectReponse;

    this.parse=parseXMLResponse;

    this.addParameter=addParameter;

}