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_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_sp[j++].src=a[i];}}
  */
  
}
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_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];}
}

function mostrar_obj(obj_name) {
   var  obj  = MM_findObj(obj_name);
   if (obj) {
	   obj.style.display='';
   }
}

function ocultar_obj(obj_name) {
   var  obj  = MM_findObj(obj_name);
   if (obj) {
	   obj.style.display='none';
   }
}

function ocultar_mostrar_obj(obj_name){
   var  obj  = MM_findObj(obj_name);
   if (obj){ 
	   if(obj.style.display  == 'none'){
		  obj.style.display='';
	   }else{
		  obj.style.display='none';
	   }
   }
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  
  window.open(theURL,winName,features);
}

function MM_showHideLayers() { //v6.0
		  var i,p,v,obj,args=MM_showHideLayers.arguments;
		  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
			if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
			obj.visibility=v; }
		}

function findPosY(obj){
		var curtop = 0;
		if (obj.offsetParent) {
				while (obj.offsetParent) {
						curtop += obj.offsetTop
						obj = obj.offsetParent;
				}
		}
		else if (obj.y)
				curtop += obj.y;
		return curtop;
}

function findPosX(obj)	{
		var curleft = 0;
		if (obj.offsetParent) {
				while (obj.offsetParent) {
						curleft += obj.offsetLeft
						obj = obj.offsetParent;
				}
		}
		else if (obj.x)
				curleft += obj.x;
		return curleft;
}


/**
*   isSelec  
*    verifica que este seleccionado un elemento del checkbox   
*
*  @param nom_obj  Nombre del elemento checkbox
*/
function  isSelec( nom_obj ) {

	for ( i = 0 ; i <document.forms[0].elements.length; i++ )
		if (document.forms[0].elements[i].type == "checkbox" && document.forms[0].elements[i].name==nom_obj ) {
			if ( document.forms[0].elements[i].checked )
				return true;
		}

	return false;
}

function  isSelec2( nom_obj , name_form ) {
    var obj_form = eval('document.'+name_form);
	for ( i = 0 ; i <obj_form.elements.length; i++ )
		if (obj_form.elements[i].type == "checkbox" && obj_form.elements[i].name==nom_obj ) {
			if ( obj_form.elements[i].checked )
				return true;
		}
	return false;
}

/**
*   selectTodos  
*    Selecciona o deselecciona una lista de checkbox
*
*  @param nom_obj  Nombre del elemento checkbox
*  @param arg_ban  el argumento con el valor false deselecciona, con el valor verdadero selecciona
*/
function selectTodos( arg_ban, nom_obj ) {
  for ( i = 0 ; i < document.forms[0].elements.length; i++ )
		if (document.forms[0].elements[i].type == "checkbox" && document.forms[0].elements[i].name==nom_obj )
				document.forms[0].elements[i].checked= arg_ban;
}

function selectTodos2( arg_ban, nom_obj, name_form  ) {
  var obj_form = eval('document.'+name_form);
  for ( i = 0 ; i < obj_form.elements.length; i++ )
		if (obj_form.elements[i].type == "checkbox" && obj_form.elements[i].name==nom_obj )
				obj_form.elements[i].checked= arg_ban;
}



/**
*   message_box  
*     Muestra un mensaje en una capa que cae.  es necesario que  se incluya el archivo dropin.js 
*   antes de llamar a esta funci?n ya que  se hace uso de la funcion dropCenter definida en el 
*   archivo anterior.
*
*  @param message  contenido del mensaje   
*  @param title  Titulo del mensaje  
*/
function message_box( message, title ){
	var ref;
	if(! title)
	   title = '';
	ref=crear_msg("body","message_box",title, message );			
   
	if (dropCenter!=undefined){
	   dropCenter("message_box",'200','400');
   ;
	   DivSetVisible(true);
	}
	return ref;
}
/**
*   crear_msg  
*     Crea una capa con el HTML para mostrar un mensaje de alerta
*
*  @param id_contenedor Elemento DOM que contendra al mensaje (BODY)
*  @param id  identificador para la capa del mensaja     
*  @param contenido contenido del mensaje   
*  @param titulo Titulo del mensaje  
*/
function crear_msg(id_contenedor,id,titulo,contenido){
	    
       	 var SRC_IMAGEN = '/bitacora/images/';
	  	 var contenedor =   MM_findObj(id_contenedor);	
	  	 contenedor.innerHTML += 
		                      '<iframe '
							  + 'id="DivShim" '
							  + 'src="javascript:;" '
							  + 'scrolling="no" '
							  + 'frameborder="0" '
							  + 'style="position:absolute; left:200px; top:100px; width:500px; height:100px; display:none;"> '
							  + '</iframe> '
		                      + '<div id="'+id+'" style="position:absolute; left:200px; top:100px; width:500px; height:100px; visibility: hidden; z-index:10">'
			                  + '<table width="100%"  border="0" align="center" class="tabla_message_box" id="__tb_message_box">'
							  + '<tr>'
							  + '<th width="97%">' + titulo + '</th>'
							  + '<th width="3%" style="cursor:hand" title="Ocultar Aviso" onClick="dismissbox();return false">X</th>'
							  + '<tr>' 
							  + '<tr>'
							  + '<td colspan="2" >'
							  + '<table width="97%" height="100%"  border="0" align="center">'
							  + '<tr>'
							  + '<td width="12%"><img src="'+SRC_IMAGEN+'icono_info.jpg" width="46" height="43"></td>'
							  + '<td width="88%" valign="top">' + contenido + '</td>'
							  + '</tr>'
							  + '<tr>'
							  + '<td align="center" colspan="2"><input onClick="dismissbox()" type="button" name="Button" value="Aceptar"></td>'
							  + '</tr>' 
							  + '</table></td>'
							  + '<tr>'
							  + '</table>'
							  + '</div>'
							  ;
	  return MM_findObj(id);					
}

/**
*  Establece el formato moneda a una cantidad establecida.   
*
*  @param num valor al cual se la da el formato moneda
*/
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if ( isNaN(num) )
		num = "0";
		
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if ( cents<10 )
		cents = "0" + cents;
		
	for ( var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
	
	return (((sign)?'':'-') + num + '.' + cents);
}

/**
*  Establece y reestablece un estilo para resaltar un renglon.   
*
*  @param elemento control CHECKBOX, debe estar ubicado en un  TR
*/
function resaltar(elemento){
  if (elemento.checked)
      seleccionar(elemento);
  else
      quitar_seleccion(elemento);
}

/**
*  Busca el elemento TR m?s cercano al checkbox y le establece el estilo RESALTADO.   
*
*  @param elemento control CHECKBOX, debe estar ubicado en un  TR
*/
function seleccionar(elemento){
  if ( ie ) {
    while (elemento.tagName!="TR")
        elemento=elemento.parentElement;
  } else {
    while (elemento.tagName!="TR")
        elemento=elemento.parentNode;
  }
  elemento.oldClassName = elemento.className;
  elemento.className = "ren_selected";
}

/**
*  Busca el elemento TR m?s cercano al checkbox y le establece el estilo anterior.   
*
*  @param elemento control CHECKBOX, debe estar ubicado en un  TR
*/
function quitar_seleccion(elemento){
  if (ie) {
    while (elemento.tagName!="TR")
       elemento=elemento.parentElement;
  }else{
    while (elemento.tagName!="TR")
       elemento=elemento.parentNode;
  }
  elemento.className = elemento.oldClassName;
  
}


function desactivar_boton_submit(nom_boton){
  var boton = MM_findObj(nom_boton);
  if (boton)
     boton.disabled=true;
}