function roundNumber(number,decimals) {
	var rnum = number;
	var rlength = decimals; // The number of decimal places to round to
	if (rnum > 8191 && rnum < 10485) {
		rnum = rnum-5000;
		var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
		newnumber = newnumber+5000;
	} else {
		var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
	}
	return newnumber;
}

function chequear_cliente(form){
	return false;	
}


function refresh_datos_clientes(idcliente,form){
	form.modo.value = "confirmar_orden";
	form.submit();
	
}


function seleccionarCheckBoxes(f,campo,estado){

	var elts = f.elements[campo];
    var elts_cnt  = (typeof(elts.length) != 'undefined')
                  ? elts.length
                  : 0;

    if (elts_cnt) {
        for (var i = 0; i < elts_cnt; i++) {
            elts[i].checked = estado;
        } // end for
    } else {
        elts.checked        = estado;
    } // end if... else

    return true;


}
function checkUncheckAll(theElement)
    {
        var theForm = theElement.form;
        var x = 0;
       while(x < theForm.length)
        {
            if(theForm[x].type == "checkbox" && theForm[x].name == theElement.value)
            {
                theForm[x].checked = theElement.checked;
            }
            x++;
        }
    }

function submit_chkbox_selec(f,col, accion, el){
if (accion =="") {
	return false
}
else {
	var total = 0;
	var theForm = f;
	var x = 0;
	while(x < theForm.length)
    {
		if(theForm[x].type == "checkbox" && theForm[x].checked && theForm[x].name == col)
		{
			total++;
		}
		x++;
	}
	if(total<1){ // si no hay nada seleccionado, cancela la operacion
			return false; 
	}
	else {
		if (confirm("confirma la operación "+ el.options[el.options.selectedIndex].text+" para "+total+" registro(s)")){
			f.elements.modo.value = accion;
			f.submit();
		}

	}
}

}
function borrar(url, msg_alt){
	if (msg_alt == undefined) msg_alt = "¿Desea borrar este registro?\n";
	
	if(confirm(msg_alt)){
		document.location.href = url
	}
}

function ordenar(url, orden){
	document.location.href = url+"&orden=" + orden;

}
function recarga_padre_href(){

	window.opener.location.href = window.opener.location.href;
}

function cambiar_imagen(img){
//	alert(img.src)
	estado = img.src.split('__')
	estado = estado[1].split('.')
	estado = estado[0]

	if (estado=="on"){ n_estado = "off" }
	else {n_estado = "on"}
	sep  ="__"+estado
	//alert("sep:"+sep+" -- ")
	nombre = img.src.split(sep)

	//alert(nombre[0])
//	alert(nombre[0]+n_estado+nombre[1])
	img.src =nombre[0]+"__"+n_estado+nombre[1];

}

// 23/03/07
/**
 * EventMgr Class, by Martin Szyszlican.
 * Funcionalidades:
 * 
 *     * Evita perdidas (leaks) de memoria en Firefox (y tal vez algun otro navegador)
 *     * Permite ejecutar funciones una vez que el DOM está cargado sin esperar a cargar las imágenes (via DOMContentLoaded y defer para ie)
 *     * Es totalmente cross-browser: Engloba el manejo de eventos para no tener que preocuparse por las inconsistencias entre navegadores y versiones de javascript.
 *     * Si el usuario no tiene javascript, obviamente, nada se ejecuta. Si una un navegador con escaso soporte para eventos (solo eventos on* sin addListener) se ejecutará el último evento agregado al elemento.
 * 
 * Ejemplo de uso:
 * EventMgr.add(window,"load",init);

 * function init() {
 *		alert("Esta funcion se ejecutará antes de que se terminen de cargar las imágenes!");
 * }
 * 
 * Basado en el trabajo de ecmanaut:
 * http://ecmanaut.blogspot.com/2006/05/avoiding-javascript-leakage.html
 * La idea de usar comentarios condicionales y document.write para emular el defer 
 * es de Matthias Miller http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited
 * En colaboración con Dean Edwards: http://dean.edwards.name/weblog/2006/06/again
 *
 * Aquí hay otro método similar a esta clase, pero no evita leaks:
 * http://agileweb.org/articles/2006/07/28/onload-final-update
 */

var EventMgr = // avoid leaking event handlers, crossbrowser version
{
  _registry:null,
  initialize:function() {
    if(this._registry == null) {
      this._registry = [];
      EventMgr.add(window, "_unload", this.cleanup);
    }
  },
  add:function(o, t, fn, uc) {
    this.initialize();
    if(typeof o == "string")
      o = d.g(o);
    if(o == null || fn == null)
      return false;
    if(t == "unload") {
      // call later when cleanup is called. don't hook up
      this._registry.push({obj:o, type:t, fn:fn, useCapture:uc});
      return true;
    }
    var realType = t=="_unload"?"unload":t;

	this.realAdd(o,realType,fn,uc);

    this._registry[this._registry.length] = {obj:o, type:t, fn:fn, useCapture:uc};

    return true;
  },
  realAdd:function(o,realType,fn,uc) {
  	if (realType == "load") {
		fn = EventMgr.init;
  		this.realAdd(o,"error",fn,uc);
		this.realAdd(o,"DOMContentLoaded", fn, false);
		/* for Internet Explorer */
		/*@cc_on @*/
		/*@if (@_win32)
		if (document.getElementById) {
			script = document.getElementById("__ie_onload");
			if (script == window.undefined) {
				var proto = "javascript:void(0)";
				if (location.protocol == "https:") proto = "src=//0";
				document.write("<scr"+"ipt id=__ie_onload defer src=" + proto + "><\/scr"+"ipt>");

				var script = document.getElementById("__ie_onload");
				script.onreadystatechange = function() {
					if (this.readyState == "complete") {
						fn();
					}
				};
			}
		}
		/*@end @*/
		/* for Safari */
		if (/KHTML|WebKit/i.test(navigator.userAgent)) { // sniff
		    this._timer = setInterval(function() {
		        if (/loaded|complete/.test(document.readyState)) {
					clearInterval(this._timer);
					delete this._timer;
		            fn(); // call the onload handler
		        }
		    }, 10);
		}
	}
	if (o.addEventListener)
		o.addEventListener(realType,fn,uc);

    else if (o.attachEvent)
		o.attachEvent('on' + realType, fn);

	else {
		o["on"+realType] = fn;
		if (o["on"+realType] != fn) {
			alert("Error adding listener\nObject:"+o+" ID:"+o.id+" Name:"+o.name+" TagName:"+o.tagName+"\nEvent:"+realType);
		}
	}
  },
  init:function () {
	// quit if this function has already been called
	if (arguments.callee.done) return;
	// flag this function so we don't do the same thing twice
	arguments.callee.done = true;
	// execute each function in the stack in the order they were added
	for (var i=0;i < EventMgr._registry.length;i++) {
		if (EventMgr._registry[i].type=="load") {
			p=EventMgr._registry[i].fn();
		}
	}
  },
  remove:function (o,type,fn,uc) {
		if (o.removeEventListener)

			o.removeEventListener(type,fn,uc);
		else if (o.detachEvent)
			o.detachEvent("on" + type,fn);
		else {
			//TODO: Disabled 'cos it throws errors in IE4/Win
//			o["on"+type] = window.undefined;
//			if (o["on"+type]!=window.undefined) return false;
		}
		return true;
	},
  cleanup:function() {
    for(var i = 0; i < EventMgr._registry.length; i++)
      with(EventMgr._registry[i])
        if(type=="unload")
          fn();
        else {
          if(type == "_unload") type = "unload";
          EventMgr.remove(obj,type,fn,useCapture);
        }
    delete EventMgr._registry;
  }
};

function fix_eolas(){
	var objects = document.getElementsByTagName("object");
	for (var i=0; i<objects.length; i++)
		objects[i].outerHTML = objects[i].outerHTML;
}

function resetText(el, valor)
{
	if (el.value == valor) {
		el.value = "";	
	}
}
function sel_album (f, el){
	if (el>0){
		f.action = f.action+"?id="+el;
		f.submit();
	}
}

function sel_imagen(img_id, img_src){
	document.getElementById('esp_imagen').value = img_id;
	document.getElementById('prev_imagen').src = img_src;
}



////////////////////////////////////////////////////////////////////////////////
// Esta funcion se utiliza para cargar los datos de la grilla de modificacion
// en el formulario que permite los cambios. Es una copia de los campos
// de form_a a form_b
// Daniel 09/04/2005
/////////////////////////////////////////////////////////////////////////////////

function set_modo(modo, f) {
// utilizando un solo formulario y un solo campo hidden "modo", cambiamos los modos de admin por aca
	f.elements["modo"].value = modo;
	validar(f)
}

function seleccion_modificar(form,id){

	var f_dest = document.f_modi;

	for (i=0; i<f_dest.elements.length;  i++){
			
		if(f_dest.elements[i].name!="") {

			fila = f_dest.elements[i].name;
			switch (f_dest.elements[fila].type){
				case "text":
					f_dest.elements[fila].value = form.elements[fila].value;
					break
				case "select-one":
					valor = form.elements[fila].value;
					if (form.elements[fila].value=="Si") {valor =1}
					f_dest.elements[fila].value = valor;
					break
			}
		}
	}
	f_dest.elements["enviar"].disabled = false;
}

//////////////////////////////////////////////////////////////////////





// mensajes de error - Validacion Formulario



var VALIDAR_MSG_VALIDAR1 = "El campo ";
var VALIDAR_MSG_VALIDAR2 = " es obligatorio. Por favor completelo antes de continuar";
var VALIDAR_MSG_EMAILINVALIDO = "La dirección de e-mail ingresada es inválida. Por favor, corroborela";
var VALIDAR_MSG_SINCURSO = "Es necesario seleccionar al menos un curso";
var VALIDAR_MSG_SINALUMNO = "Se debe seleccionar al menos un alumno para presenciar un curso";

function buscayselecciona_combo(combo,valor){
	for (i=0;i<combo.options.length;i++ )
	{
		if (combo.options[i].value == valor)
		{
			combo.options[i].selected = true;
		}
		
	}	

}




function convertirTxt_boolean(valor){
	// convierte los valores 'si' o 'no' o 'true' o 'false' en 1 y 0 respectivamente
	valor = valor.toLowerCase()
	switch (valor)
	{
	case 'si':
		return 1;
		break;
	case 'true':
		return 1;
		break;
	case 'no':
		return 0;
		break;
	case 'false':
		return 0;
		break;
	}
}

function validar(f)
{
// compatible con mozilla. xhtml 1.0
// version 2.0 
var requeridoArray = f.elements['requerido'].value;
var elemento = f.elements;

requeridoArray = requeridoArray.split(",");

for (i = 0; i < requeridoArray.length; i++) {
					if (elemento[requeridoArray[i]].value == "")
					{
						alert( "el campo '" +elemento[requeridoArray[i]].alt+ "' es obligatorio"); 
						elemento[requeridoArray[i]].focus(); 
						return false;

					}
// chequeo  de email
					var mail_check = requeridoArray[i].indexOf("mail"); 
					if (mail_check > -1 && (elemento[requeridoArray[i]].value.indexOf('@', 0) == -1 ||
				  elemento[requeridoArray[i]].value.indexOf('.', 0) == -1)) {
					alert("la dirección de e-mail indicada es inválida"); 
						elemento[requeridoArray[i]].focus(); 
					return false; 

					}
}//for
}

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_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 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_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function imagenHires(theURL,winName,features) { //v2.0
	url = "imagenhires.php?img="+theURL
  window.open(url,winName,features);
}


function ordenar(url, orden){
	document.location.href = url+"&orden=" + orden;

}




function convertir_prod_en_cajas(form,campo_cajas,cantidad,cxu){
	//recibe el formulario, el id del campo caja, el nro de productos y la cantidad de cajas por producto.
	// Devuelve el numero de cajas que ocupa el pedido.
	cajas = document.getElementById(campo_cajas);
	cajas.value = roundNumber((cantidad/cxu),2);
	
}

function convertir_cajas_en_prod(form,campo_productos,cantidad,cxu){
	productos = document.getElementById(campo_productos);
	productos.value = roundNumber((cantidad*cxu),0);
}

function changeKey (evt) {
  var keyCode = evt.keyCode ? evt.keyCode :
                evt.charCode ? evt.charCode :
		evt.which ? evt.which : void 0;

//alert(keyCode)
if (keyCode > 31 && (keyCode< 48 || keyCode> 57)){
	return false;
  }
else {
	return true;
	}
}

function enterEsSubmit (evt, f) {

  var keyCode = evt.keyCode ? evt.keyCode :
                evt.charCode ? evt.charCode :
		evt.which ? evt.which : void 0;

 if (keyCode ==13) {
	validar(f);
  }


}

// from Pampa Digital Developments
// http://www.pampadd.com.ar/
// clonacion de newsletter

function clonar_el(el, id){
el = document.getElementById(id);
el = el.getElementsByTagName("div")
el = el[0];
el_prime = el.cloneNode(true);
el.parentNode.appendChild(el_prime);
i = i + 1;

}

function remover_el(t,id){

	var t = document.getElementById(id);
	el = t.getElementsByTagName("div")
	for (i=el.length-1; i>0;i--){
		t.removeChild(el[el.length-1]);
		   i = i - 1;
		return
	}
}

function buscarEnNodo(nodo, nombreHijo){ // busca un hijo determinado, por su id y lo entrega
	for (i=0; i<nodo.childNodes.length;i++){
		if (nodo.childNodes[i].id == nombreHijo) {
			elemento = nodo.childNodes[i];
		}
	}

	return elemento;
}

function tipoEnNodo(nodo, tipoHijo){ // busca un hijo determinado, por su tipo y lo entrega
	for (i=0; i<nodo.childNodes.length;i++){
		if (nodo.childNodes[i].type == tipoHijo) {
			elemento = nodo.childNodes[i];
			return elemento
		}

	}

}

