function preSubmit() {
	if (tinyMCE) {
		tinyMCE.triggerSave();
	}

}
function getRadioValue(element) {
	if (element.length) {
		for (var j = 0; j < element.length; j++) {
			if (element[j].checked) return element[j].value;
		}
	} else {
		if (element.checked) return element.value;		
	}
}
function validateFormError(element,text) {
  if (!text) text = "Necesitas rellenar mas campos";
  alert(text);
  if(element.style && element.style.display=="none") return false;
  if (!element.length) element.focus();
  return false;
}
function validateForm(ar,form) {
  for ( i= 0; i < ar.length; i++) {
    name=ar[i][0];	
    element = form.elements[name];
    if (!element && ar[i][1]!='date') {
	element = form.elements[name.toLowerCase()];
	if (!element) {
// 	     alert("Element not found: "+name);
		continue;
	}
    }	

     switch (ar[i][1]) {	
	case 'and': // Si la primero esta puesto los restos deberían serlo tambien.
	     
	     var act =  (element.value=="")?true:false;
             if (element.length) {
		for (j = 0; j < element.length; j++) {
			if (element[j].checked) {
				act = (element[j].value=="1")?false:true;
			}
		}
	     }
	     if (!act) {
	     for (j = 0; j < ar[i][3].length; j++) {
		if (form.elements[ar[i][3][j]].value=="") {
			return validateFormError(form.elements[name],ar[i][2]);
		}

	     }
		}
break;

	case 'or':	// XOR creo que es.	
	     
	     var act =  (element.value=="")?true:false;
             if (element.length) {
		for (j = 0; j < element.length; j++) {
			if (element[j].checked) {
				act = (element[j].value=="1")?true:false;
			}
		}
	     }
	     for (j = 0; j < ar[i][3].length; j++) {
		var act2 = form.elements[ar[i][3][j]].value==""?true:false;
		if (act==act2) {
			return validateFormError(form.elements[name],ar[i][2]);
		}
	     }
	break;
	case "date":
	     if (form.elements[name+'dia'].value=="")
		 return validateFormError(form.elements[name+'dia'],ar[i][2]);

	     if (form.elements[name+'mes'].value=="")
		 return validateFormError(form.elements[name+'dia'],ar[i][2]);

	     if (form.elements[name+'ano'].value=="")
		 return validateFormError(form.elements[name+'dia'],ar[i][2]);

		break;
        case "contrasena_repetir":
             if ((element.value=="") ||  (element.value==form.element[ar[i][3]]))
                return validateFormError(element,ar[i][2]);
              break;
	case "int":
		var regex = /^\d*$/;
		if (!regex.test(element.value)) 
			return validateFormError(element,"Debe ser un número");
		break;
	case 'float':
		var regex = /^\d*([\,\.]\d*)?$/;
		if (!regex.test(element.value)) 
			return validateFormError(element,"Debe ser un número. Ejemplo 30.50");
			
		break;
	case 'archivo':
		if (element.value!="") {
			var regex = /^.*(\/|\\)[a-z_0-9]+\.[a-z_0-9]+$/;
			if (!regex.test(element.value)) {
				return validateFormError(element,
					"Ha insertado un carácter no valido en el nombre del archivo.\r\n"+
					"Compruebe que el nombre está escrito sin espacios en blanco\r\n"+
					"y contiene solamente los caracteres: \"a-z\",  \"0-9\", \"_\"");
			}
		}
		break;

	case 'imagen':
		if (element.value!="") {
		var regex =  /^.*\.(jpg|gif|jpeg)$/;
		if (!regex.test(element.value)) 
			return validateFormError(element,"Debe ser un imagen (.jpg, .gif .jpeg)");
		
		var regex = /^.*(\/|\\)[a-z_0-9]+\.(jpg|gif|jpeg)$/;
		if (!regex.test(element.value)) {
			return validateFormError(element,
	"Ha insertado un carácter no valido en el nombre de la imagen.\r\n"+
	"Compruebe que el nombre está escrito sin espacios en blanco\r\n"+
	"y contiene solamente los caracteres: \"a-z\",  \"0-9\", \"_\"");
		}
		}
		break;
	case 'documento':
		if (element.value!="") {
			var regex =  /^.*\.(doc|pdf|xls)$/;
			if (!regex.test(element.value)) {
				return validateFormError(element,"Debe ser un documento (.doc .pdf .xls)");
			}
			var regex = /^.*(\/|\\)[a-z_0-9]+\.(doc|pdf|xls)$/;
			if (!regex.test(element.value)) {
				return validateFormError(element,
			"Ha insertado un carácter no valido en el nombre del documento.\r\n"+
			"Compruebe que el nombre está escrito sin espacios en blanco\r\n"+
			"y contiene solamente los caracteres: \"a-z\",  \"0-9\", \"_\"");
		}
		}
	break;
	case 'imagen_existe':
		if (element.value!="") return true;
		if (findObj(name+'_imagen').innerHTML!="") return true;
		return  validateFormError(element,ar[i][2]);
        default:
	  if (element.type=='select-one') {
	    if (element.selectedIndex==0)  return validateFormError(element,ar[i][2]);
	  } else {
	    if (element.length) {
		for (j = 0; j < element.length; j++) {
			if (element[j].checked) return true;
			 // Esto me parece raro.
		}
		return validateFormError(element,ar[i][2]);
	    } else {

            if (element.value=="") return validateFormError(element,ar[i][2]);
		}
	             break;
	  }
        }
  }
  return true;
};

function imprimiryCerrar() {
  if (window.print) {
    window.print();
    window.close();
  } else {
    alert("Su versión de navegador no permite la impresión de la página desde este link.\nHágalo desde el menú superior.");
  }

}

function imprimir(url){
    if(window.print){
	var alto = 1;
        var ancho = 1;
        var parametros = "width="+ ancho +",height=" + alto+",resizable=1";
        var wCupon = window.open(url,false, parametros);
        wCupon.moveTo(screen.width, screen.height);
    }
    else{
        var alto = 200;
        var ancho = 550;
        var parametros = "menubar=yes,width="+ ancho +",height=" + alto;
        var wCupon = window.open(url, false, parametros);
        wCupon.moveTo((screen.width - ancho)/2, (screen.height - alto)/2);
    }

}

function lister_borrar(v) {
	var cont = findObj('container');
	v.parentNode.parentNode.removeChild(v.parentNode);
	if (!cont.hasChildNodes()) {
		lister_mas(v);
		return;
	}
	var childs = cont.lastChild.childNodes;
	for (var i = 0; i < childs.length; i ++) {
		if (childs[i].value=='Asociar +') {
			childs[i].style.visibility="visible";
		}
	}
}

function lister_mas(v) {  
	v.style.visibility="hidden"; 
	var str = findObj('master').firstChild.cloneNode(true);
	findObj('container').appendChild(str);
}


function selectMulti2_next(select,dir) {
	var el = select;
	do {
		if (dir==1) {
			el = el.nextSibling;
		} else {

			el = el.previousSibling;
		}
	if (!el) return false;
	if (el.type==select.type) {
		return el;
	}
		
	} while (el);
	return false;
}
function selectMulti2(level,select,array) {
	// no_empty  no es terminado
	var ar = array;
	for (var i = level-1; i >= 0; i--) {
		element = select;
		for (j = 0; j < i; j++) {
			element = selectMulti2_next(element,-1);
		}	
		ar = ar[element.selectedIndex-1];
	}

	element = select;
	while (element = selectMulti2_next(element,1)) {
		element.length = 0;
		element[element.length] = new Option('Elije...','');
	}


	var dest= selectMulti2_next(select,1);
	if (ar) { 
		for (var i = 0; i < ar.length; i++) {
			dest[dest.length] = new Option(ar[i][1],ar[i][0]);
		}	
	}
	
}