function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
/*
* Nombre: enviarFormulario
* Descripcin: Todas todos los elementos existentes en un formulario y los envia mediante
* Post atravs de AJAX hacia una pgina php.
* Param: url (pgina que procesa los datos), formid(id del formulario), callback(nombre de la funcin que procesa la respuesta)
*/
function enviarFormulario(url, formid, callback){
	var Formulario = document.getElementById(formid);
	var longitudFormulario = Formulario.elements.length;
	var cadenaFormulario = "";
	var sepCampos
	sepCampos = ""
	for (var i=0; i <= Formulario.elements.length-1;i++) {
	cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI(Formulario.elements[i].value);
	sepCampos="&";
	}
	var XMLHttpRequestObject = false; 
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest;
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open('POST', url); 
		XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		XMLHttpRequestObject.onreadystatechange = function(){ 
			if (XMLHttpRequestObject.readyState == 4 &&	XMLHttpRequestObject.status == 200){
				callback(XMLHttpRequestObject.responseText); 
				delete XMLHttpRequestObject;
				XMLHttpRequestObject = null;
			}else{
				callback('<img src="imagenes/loading.gif" border="0">');	
			} 
		}
		XMLHttpRequestObject.send(cadenaFormulario); 
	}
}	

//Escribe en el div Salida el valor pasado por ajax
function display(valor){
	valor = "<div id=\"boton\">" + valor + "</valor>";
	document.getElementById('Salida').innerHTML = valor;
	document.getElementById('datos').innerHTML = '';
}
//escribe en el div x el valor pasado por ajax
function displayDiv(valor, div){
	valor = "<div id=\"boton\">" + valor + "</valor>";
	document.getElementById(div).innerHTML  = valor;
}
//Usando Ajax pasamos direccion, variables, funcion a ejecutar y id de div
function sendAJAX(uri,variables, callback, divId){
	var XMLHttpRequestObject = false; 
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest;
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open('GET', uri + '?' + variables); 
		//XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
		XMLHttpRequestObject.onreadystatechange = function(){ 
			if (XMLHttpRequestObject.readyState == 4 &&	XMLHttpRequestObject.status == 200){
				//alert(XMLHttpRequestObject.responseText);
				callback(XMLHttpRequestObject.responseText, divId); 
				delete XMLHttpRequestObject;
				XMLHttpRequestObject = null;
			}else{
				callback('<img src="../imagenes/loading.gif" border="0">', divId);	
			} 
		}
		XMLHttpRequestObject.send(variables); 
	}
}		
//
function cambiarCombo(selObj, accion, nombreVariable, callback, div){
	opcion = selObj.options[selObj.selectedIndex].value;
	sendAJAX(accion, nombreVariable + '=' + opcion, callback, div); 
}
//Hace constraint en una tabla (va de la mano con la funcin anterior)
function expandirTabla(tabla, mostrar, sid){
	cadena = new String(tabla);
  cadena = cadena.substring(2,cadena.length); 
	if(mostrar==true){
		divObj = '<a href="JavaScript:expandirTabla(\'id'+cadena+'\',false, \'' + sid + '\')" style="font: normal 12pt arial; color: #CB5421; text-align: left">[-]</a>';
	}else{
		divObj = '<a href="JavaScript:expandirTabla(\'id'+cadena+'\',true, \'' + sid + '\')" style="font: normal 10pt arial; color: #154677; text-align: left">[+]</a>';
	}
	document.getElementById('idD'+cadena).innerHTML = divObj;
  document.getElementById(tabla).style.display = (mostrar) ? "block" : "none";
  if(mostrar==true){
  	sendAJAX('ficha.Prod.php','idprod=' + cadena + '&sid=' + sid,Detalles, cadena)
  }
}
//Hace constraint en una tabla
function expandir(tabla,mostrar,origen, texto){
	//agregar la posibilidad de usar imagenes para contraer y expandir
	if(mostrar==true){
		divObj = '<a href="JavaScript:expandir(\''+tabla+'\',false,\''+origen+'\',\''+texto+'\');">[-]</a>';
		
	}else{
		divObj = '<a href="JavaScript:expandir(\''+tabla+'\',true,\''+origen+'\',\''+texto+'\');">[+]</a>';
	}
	document.getElementById(origen).innerHTML = divObj + texto;
  	document.getElementById(tabla).style.display = (mostrar) ? "block" : "none";
}
function Detalles(valor, divId){
	document.getElementById(divId).innerHTML = valor;		
}    
//funcion que enva datos mediante post sin ser desde un formulario
function enviarData(url, callback, divId){
	//alert(url);
	//alert(datos);
	var XMLHttpRequestObject = false; 
	if (window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest;
	} else if (window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if(XMLHttpRequestObject) {
		XMLHttpRequestObject.open('GET', url, true); 
		//XMLHttpRequestObject.send(null);
		
		XMLHttpRequestObject.onreadystatechange = function(){ 
			if (XMLHttpRequestObject.readyState == 4 &&	XMLHttpRequestObject.status == 200){
				callback(XMLHttpRequestObject.responseText, divId); 
				//delete XMLHttpRequestObject;
				//XMLHttpRequestObject = null;
			}else{
				callback('<img src="imagenes/loading.gif" border="0">',divId);	
			} 
		}
		XMLHttpRequestObject.send(url); 
	}
}	
/*
* hace blink
*/

 function blink_show()
 {
  blink_tags  = document.all.tags('blink');
  blink_count = blink_tags.length;
  for ( i = 0; i < blink_count; i++ )
  {
   blink_tags[i].style.visibility = 'visible';
  }
  
  window.setTimeout( 'blink_hide()', 700 );
 }
 
 function blink_hide()
 {
  blink_tags  = document.all.tags('blink');
  blink_count = blink_tags.length;
  for ( i = 0; i < blink_count; i++ )
  {
   blink_tags[i].style.visibility = 'hidden';
  }
  
  window.setTimeout( 'blink_show()', 250 );
 }
 //Pide los mensajes de un chat
	function makeRequestAll(uri, idop, idcli, idch) {
			respuesta = false;
			if (window.XMLHttpRequest) { // Mozilla, Safari,...
          respuesta = new XMLHttpRequest();
          if (respuesta.overrideMimeType) {
              respuesta.overrideMimeType('text/xml');
              // Ver nota sobre esta linea al final
          }
      } else if (window.ActiveXObject) { // IE
          try {
              respuesta = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
              try {
                  respuesta = new ActiveXObject("Microsoft.XMLHTTP");
              } catch (e) {}
          }
      }

      if (!respuesta) {
          alert('Falla :( No es posible crear una instancia XMLHTTP');
          return false;
      }
      
      respuesta.onreadystatechange = todos;	
      //alert(uri);
      respuesta.open('GET', uri, true); 
      respuesta.send(null);
}
//Imprime todos los mensajes recibidos
function todos(idop, idcli, idch){
	//alert( 'idop:'+idop+ 'idchat:' + idch + 'idcli: '+ idcli);
	//alert(respuesta.readyState);
	if(respuesta.readyState == 4){
		if(respuesta.status == 200){
			//alert(respuesta.responseText);
			//if(respuesta.responseText == '' || respuesta.responseText== null){
				//limpiar('', idop, idch, idcli);	
			//}//else{
				//Creo un elemento div en el html contents.html
				var newDiv = cDocument.createElement("DIV");
			
    		newDiv.innerHTML = respuesta.responseText;	
				//Agrega el mensaje al contenido del div contents en contents.html
   		 	cDocument.getElementById("contents").appendChild(newDiv);
				//scroll the chatContents area to the bottom
   			cWindow.scrollTo(0,cDocument.getElementById("contents").offsetHeight);
			
				setTimeout("makeRequest('thread.php?operador=si&sid=<?php echo $sid; ?>','mensajes')",1000);
			
			//}
		}else{
			limpiar('', idop, idch, idcli);
		}
	}else{
		//limpiar('', idop, idch, idcli);	
	}
}
//Me abre una ventana
function ventanaSecundaria (URL){
   window.open(URL,"aviso","width=120,height=300,scrollbars=NO, resizable=NO")
}
/**
*
*  UTF-8 data encode / decode
*  http://www.webtoolkit.info/
*
**/

var Utf8 = {

	// public method for url encoding
	encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";

		for (var n = 0; n < string.length; n++) {

			var c = string.charCodeAt(n);

			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}

		return utftext;
	},

	// public method for url decoding
	decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;

		while ( i < utftext.length ) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}

}