/*
Esta fucion permite hacer las conexiones con ajax de forma facil
solo pasar la url, vars, metodos, objeto xml y las fucion que realizara cuando 
el status se pase a 200

pd. falta trabajar la conexion via get
*/

function obj(id)
{
	return document.getElementById(id);
}

function objXml() {
    try {
	    objXML = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
	    try {
		    objXML = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (E) {
		    objXML = false;
	    }
    }
    if (!objXML && typeof XMLHttpRequest!='undefined') {
	    objXML = new XMLHttpRequest();
    }
    return objXML;
}

function Ajax(url,vars,metodo,objxml,Fstate200)
{
	if(!objxml)xml=objXml();
	variables_aEnviar=vars;
	_URL_=url;	
	if(metodo=="POST")
	{
		xml.open("POST",_URL_,true);	
		xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //cabeceras del post
		xml.send(variables_aEnviar); //enviar variables
		xml.onreadystatechange=function() {
			if (xml.readyState==4)
		
			{
				if(xml.status==200)
				{
					eval(Fstate200);
				}
			}
		}
		return;
	}
	else
	{
		alert('GET no Terminado');
	}
}


/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+  string2vars(string cad)
+
+ declara y coloca en el array variables[] las variables recibidas
+ en la cadena
+ la cadena tiene el formato "variable1=1&variable2=2&variable3=3
+ la funcion divide a cad por los "&" y posteriormete el resultado de 
+ esta divicion el prmer valor sera la llave del variables[prmierValor]
+ y el valor de variables[primerValor] sera "segundoValor"
+ en el ejemplo anterior el array variables[] despues de llamar a string2vars()
+ sera:
+ variables[variable1]=1
+ variables[variable2]=2
+ variables[variable3]=3
+ string2vars tabien admimite formar arreglos desde la cad pra esto cada variable
+ que valla a ser un array hay que colocar el sufijo "[]" para ser tomado como un 
+ arreglo o elmento del arrelgo, los idices iran de 0 al numero de variables[] encotradas
+ ejmplo
+ cad= "variable1=1&variableArr[]=1&variableArr[]=2";
+ string2vars(cad)
+ tras estas lineas el arreglo variables tendra los valores
+ variables['variable1']=1
+ variables['variableArr'][0]=1
+ variables['variableArr'][1]=2
+
+ NOTA: si despues de variableArr declara otro variableArr y le asigna un valor el 
+ array variableArr se destruira!
+
+ [[[Por: José Francisco Díaz Ar ]]
+ [[ jfcodiaz@gmail.com ]]]]]
+ 22/May/2006
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
function string2vars(cad)
{
	vars= new Array();//declaro vars como arreglo
	vars=cad.split('&');//divido cad por los "&" enctrodo y el resultado se lo asigno a vars
	variables=new Array();//declaro el arreglo variables como un nuevo arreglo
	for(i=0;i<vars.length;i++)//esto se repitira para todos los elementos de vars
	{
		variablesEnVars=vars[i].split('=');//divido el varlo de vars[i] por el '=' para optner indice/valor
		if(variablesEnVars[0].substring(variablesEnVars[0].length-2)=='[]')//verifico si el indice termina en "[]" esto me indica que seria o no un arreglo
		{
			arreglo=variablesEnVars[0].substring(0,variablesEnVars[0].length-2);//optengo el nombre del indice que sera el arrelgo quitando las "[]"
			if(variables[arreglo]==undefined)//veo si variables[arrelgo] esta definido si no lo esta esta intruccion dara verdadero
			{
				variables[arreglo]=new Array();//declaro variables arreglo 
				numero=0;				
			}
			else
				numero=variables[arreglo].length;				
			variables[arreglo][numero]=variablesEnVars[1];
			
						
		}
		else		
			variables[variablesEnVars[0]]=variablesEnVars[1];
	}
	return variables;
}	
//cad="uno[]=1&uno[]=2&dos=2&tres=3&cuatro[]=cuatro&cuatro[]=4";
//string2vars(cad);
//alert(variables['cuatro'][0]);


