function $o(Id_Ob){if (typeof Id_Ob=='object') O=Id_Ob; else O=document.getElementById(Id_Ob); return O;} 

function colocar(Id_Ob,REF,COL)
{	el=$o(Id_Ob); 	if (el.parentNode) el.parentNode.removeChild(el);	ref=$o(REF);
	switch(COL){ case "AB": ref.appendChild(el);	 break; case "AR": primero=ref.firstChild; ref.insertBefore(el,primero); break; 	case "EN": padre=ref.parentNode; padre.insertBefore(el,ref); break;	case "DE": padre=ref.parentNode; padre.insertBefore(el,hermano(ref,'+1')); break;		}
	return el;	}

function $M(id,REF,COL)
{ 	if (!(REF)||(REF=='')) REF=document.body;
	if (!(COL)||(COL=='')) COL="AB";
	return colocar(id,REF,COL) }
	
function crear(ID,TIPO,REF,COL) 
{ 	if ((ID=='')||(ID=='rnd')) {rnd=String(Math.random()); r=rnd.split("."); ID="COLOCADO_"+r[1];}
	el=document.createElement(TIPO); 	el.id=ID;
	colocar(el,REF,COL);
	return el;	}

function $C(TIPO,REF,COL) 
{ 	var el=document.createElement(TIPO); if (TIPO=="input") el.type="text";
	rnd=String(Math.random()); r=rnd.split(".");  el.id="C_"+r[1];
	if (!(REF)||(REF=='')) REF=document.body;
	if (!(COL)||(COL=='')) COL="AB";
	$M(el,REF,COL);
	return el;	}	
function $Co(TIPO,REF,COL)
{	var el=document.createElement(TIPO); 	
	el.style.display='none'; // Importante que este oculto antes de que se una al DOM.
	rnd=String(Math.random()); r=rnd.split("."); el.id="C_"+r[1]; el.name="C_"+r[1];
	if (!(REF)||(REF=='')) REF=document.body;
	if (!(COL)||(COL=='')) COL="AB";
	$M(el,REF,COL);
	return el;	}

	
//Atajos para crear.
function CDiv (REF,COL,claseCSS) 	{var el=$C('div',REF,COL);  if ((claseCSS)&&(claseCSS!='')) el.className=claseCSS; return el;}
function CoDiv(REF,COL,claseCSS) 	{var el=$Co('div',REF,COL); if ((claseCSS)&&(claseCSS!='')) el.className=claseCSS; return el;}

function CSpan (REF,COL,claseCSS)	{var el=$C('span',REF,COL);  if ((claseCSS)&&(claseCSS!='')) el.className=claseCSS; return el;}
function CoSpan(REF,COL,claseCSS)	{var el=$Co('span',REF,COL); if ((claseCSS)&&(claseCSS!='')) el.className=claseCSS; return el;}

function CForm (REF,COL,metodo)		{var el=$C('form',REF,COL);  if ((metodo)&&(metodo!='')) el.method=metodo; else el.method="post";  return el;}
function CoForm(REF,COL,metodo) 	{var el=$Co('form',REF,COL); if ((metodo)&&(metodo!='')) el.method=metodo; else el.method="post";  return el;}

function CInput (REF,COL,name,value) 		{var el=$C('input',REF,COL);  if ((name)&&(name!=''))   el.setAttribute("name",name); el.setAttribute("value",value); el=reforma_ie(el); return el;}
function CoInput(REF,COL,name,value) 		{var el=$Co('input',REF,COL);  if ((name)&&(name!=''))  el.setAttribute("name",name); el.setAttribute("value",value); el=reforma_ie(el); return el;}

function CTextarea (REF,COL,name,value)	{var el=$C('textarea',REF,COL);  if ((name)&&(name!='')) el.name=name;if ((value)&&(value!='')) el.innerHTML=value; el=reforma_ie(el); return el;}
function CoTextarea(REF,COL,name,value)	{var el=$Co('textarea',REF,COL); if ((name)&&(name!='')) el.name=name;if ((value)&&(value!='')) el.innerHTML=value; el=reforma_ie(el); return el;}


function COption(REF,COL,Mostrado,value){var el=$C('option',REF,COL); if ((value)&&(value!='')) el.value=value;  if ((Mostrado)&&(Mostrado!='')) el.innerHTML=Mostrado; el=reforma_ie(el); return el;}
function Cselect(REF,COL,name,arrayOptions,arrayValuesOptions) { var el=$C('select',REF,COL); 
	if ((name)&&(name!='')) el.name=name;
	if ((typeof(arrayOptions)=='object')&&((typeof(arrayOptions[0])=='string')||(typeof(arrayOptions[0])=='number'))) 
		if ((typeof(arrayValuesOptions)=='object')&&((typeof(arrayValuesOptions[0])=='string')||(typeof(arrayValuesOptions[0])=='number'))) 
			if (arrayOptions.length ==  arrayValuesOptions.length)
				for (var i=0; i<arrayOptions.length; i++)
					Coption(el,"AB",arrayOptions[i],arrayValuesOptions[i]);
			else alert("Error, se está intentando crear un select con distinto numero de options que de valores para estas.");
		else alert("Error, no se ingreso un array para los valores de las opciones del select. Debe ingresarse en la función un Array ya formado");
	  el=reforma_ie(el);
	  return el;
	}
//////////////////////

papelera_names=new Array;
papelera_id=new Array;
papelera_obj=new Array;
	
function borrar(O) {if ($o(O)) { el=$o(O);  padre=el.parentNode; padre.removeChild(el); el.id='';  el.name=''; if (el.innerHTML) el.innerHTML=''; return true;} else return false;}

function recuperar(id) {}

function pos_de_hijo(Id_Ob){ 
	hijo=$o(Id_Ob);
	padre=hijo.parentNode;
	for (i=0;i<=padre.childNodes.length;i++)
	{ C=padre.childNodes[i]; if (C==hijo) {return i; break;} 	}	}

function hermano(Id_Ob,op){	P=pos_de_hijo(Id_Ob); padre=$o(Id_Ob).parentNode; return eval("padre.childNodes["+P+op+"];"); }
	//atajos para hermanos.
	function $H1(id){return hermano(id,"+1");}
	function $H2(id){return hermano(id,"+2");}
	function $H3(id){return hermano(id,"+3");}
	function $H4(id){return hermano(id,"+4");}
	function $H5(id){return hermano(id,"+5");}
	function $H6(id){return hermano(id,"+6");}
	function $H7(id){return hermano(id,"+7");}
	function $H8(id){return hermano(id,"+8");}
	function $H9(id){return hermano(id,"+9");}
	//
	function $h1(id){return hermano(id,"-1");}
	function $h2(id){return hermano(id,"-2");}
	function $h3(id){return hermano(id,"-3");}
	function $h4(id){return hermano(id,"-4");}
	function $h5(id){return hermano(id,"-5");}
	function $h6(id){return hermano(id,"-6");}
	function $h7(id){return hermano(id,"-7");}
	function $h8(id){return hermano(id,"-8");}
	function $h9(id){return hermano(id,"-9");}
	//
	
function mover(Id_Ob,D){
	O=$o(ID);	P=O.parentNode; 	N=pos_de_hijo(O);
	if (!(((N==0) && (D=='AR'))||((N==P.childNodes.length)&&(D=='AB')))){
 		if (D=='AR') N--; else if (D=='AB') N++;P.removeChild(O);
		if (N<P.childNodes.length) {A=P.childNodes.item(N);P.insertBefore(O,A);  ayuda();}
	else P.appendChild(O);	}	}


//atajos.
function padre(id_ob) { return $o(Id_Ob).parentNode; }
function abuelo(id_ob){ return $o(Id_Ob).parentNode.parentNode; }
function hijos(id_ob) {return $o(Id_Ob).childNodes}

// Para Formulario virtual
function $F(param1,param2){
	if (!($o('ikFormularioVirtual'))) { var VF=CoForm(); VF.id='ikFormularioVirtual';  } else var VF=$o('ikFormularioVirtual');
		if ((param1)&&(param1!='')) { 
			
			var input=CInput(VF,'AB',param1,param2);
			
						
		}
	return VF;
}
function reforma_ie(el)
{
	if (document.all) 
	{
		var montar="<"+el.tagName+" name='"+el.name+"' id='"+el.id+"'";
		if ((el.value)&&(el.value!='')) montar+=" value='"+el.value+"'";
		if ((el.className)&&(el.className!='')) montar+=" class='"+el.classNamet+"'";
		if ((el.style.cssText)&&(el.style.cssText!='')) montar+=" style='"+el.style.cssText+"'";
		if ((el.method)&&(el.method!='')) montar+=" method='"+el.method+"'";
		if ((el.tagName!='INPUT')&&(el.tagName!='IMG'))
			montar+=">"+el.innerHTML+"</"+el.tagName+">";
		else
			montar+=" />";
		el.outerHTML=montar;
	} 
	return el;}

/*
function crear$F(metodo) { var VF=crear('FormularioVirtual','form',document.body,'AB');  }
function $F(inputName,inputValue) { if (inputName){var Add=crear('','input','FormularioVirtual','AB'); Add.style.display='none'; Add.name=inputName; Add.value=inputValue;}
else return $o('FormularioVirtual');}
*/
//Aplicaciones
function mail(direccion,subjet,body){ F=crear('','form',document.body,'AB');F.style.display='none'; F.action="mailto:"+direccion+"?Subject="+subjet+"&Body="+body;F.submit();}


function getElementsByClassName(clase_a_buscar,dentro_de,TagName){
    if (!(dentro_de)) dentro_de=document.body;  else dentro_de=$o(dentro_de);
    var els = new Array();
    if (!(TagName) && dentro_de.all)  	var Tels=dentro_de.all;
    else 				var Tels=dentro_de.getElementsByTagName(TagName);
    for(var i=0; i<Tels.length; i++){
        var cl="  "+Tels[i].className+"  ";
        if(cl.indexOf(" "+clase_a_buscar+" ")>0) els[els.length]=(Tels[i]);   }
    return els;
}


/*
$


$e.onclick("boton_envio","document.forms[0].submit(); ","add");






*/