/******************************************************************  
 *                            SECTION 1                           *  
 *                                                                *
 ******************************************************************/
 // Para poder mostrar texto con carácteres especiales (acentos, etc..)  
//system.useCodepage = true; 


var f=document.forms[0]
//var linkbusqueda="http://localhost/FundacionCarolinaSolution/PORTAL/PaginasAspx/Busqueda.aspx"
var linkbusqueda="/FundacionCarolina/Busqueda"
var linkmapa="/FundacionCarolina/MenuRecursivoInferior/Mapa.htm"

//var linkboletin="http://localhost/FundacionCarolinaSolution/PORTAL/PaginasAspx/BoletinPopUp.aspx"
var linkboletinLOPD="/FundacionCarolinaSolution/PORTAL/PaginasAspx/BoletinPopUpLOPD.aspx"
var linkboletin="/FundacionCarolinaSolution/PORTAL/PaginasAspx/BoletinPopUp.aspx"
var linkdatosalta="/FundacionCarolinaSolution/PORTAL/PaginasAspx/EnvioDatosMail.aspx"

//********************************************************************************
//********************************************************************************
//********************************************************************************
// FUNCIONES para la carga de imagenes en botones.

//function MM_reloadPage(init)
//function MM_swapImgRestore()
//function MM_preloadImages()
//function MM_findObj(n, d)
//function MM_swapImage()
//function MM_showHideLayers()


//********************************************************************************
//********************************************************************************
//********************************************************************************

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);


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_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.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_showHideLayers() { //v3.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; }
}


//********************************************************************************
//********************************************************************************
//********************************************************************************
// Refresco de la pagina.
// Al cambiar de tabla los campos select no se pintan bien.
// Cuando se cambie de tabla (para simular pestañas) refrescar con esta funcion.
//********************************************************************************
//********************************************************************************
//********************************************************************************

function refresh()
{
	window.resizeBy(1, 0);
	window.resizeBy(-1, 0)
}


//********************************************************************************
//********************************************************************************
//********************************************************************************
// FRITED MANAGEMENT

//var sepCelda = '##';
//var sepFila = '@@';

//function replaceValueStr (str,idx,valor,separador) 
//function getValueStr (str,idx,separador)
//function addValueStr (str,valor,separador)
//function deleteValueStr (str,idx,separador)
//function lengthValueStr(str,separador)
//function getValuesStr (str,separador)
//function getSumCols(objo,idx)
//function insertValueStr(str, idx, valor, separador)

//********************************************************************************
//********************************************************************************
//********************************************************************************

   var sepCelda = '##';
   var sepFila = '@@';
   
   
   function replaceValueStr (str,idx,valor,separador) {
   alert(1);
      if (replaceValueStr.arguments.length < 4) separador = sepCelda;
      var vect = str.split(separador);
      vect[idx] = valor;
      str = vect.join(separador);
      return str;
   }
   
   
   function getValueStr (str,idx,separador) {
      if (getValueStr.arguments.length < 3) separador= sepCelda;
      var vect = str.split(separador);
      return vect[idx];
   }
   
   
   function addValueStr (str,valor,separador) {
      if (addValueStr.arguments.length < 3) separador= sepCelda;
      if (str == '') str = valor; else str += separador+valor;
      return str;
   }	
   
   
   function deleteValueStr (str,idx,separador) {
      if (deleteValueStr.arguments.length < 3) separador= sepCelda;
      var vect = str.split(separador);
      str = '';
      
      for (i=0; i<vect.length; i++)
         if (i != idx) str = addValueStr(str,vect[i],separador);
      return str;
   }
   
   
/*   function createValueStr (separador) {
      var args = createValueStr.arguments;
      var cad = '';

      // el primer argumento es el separador
      for (i=1; i<args.length; i++)
         cad = addValueStr(cad,args[i],separador);
   
      return cad;
   }   */


   function lengthValueStr(str,separador) {
      if (str == '') return 0;
      if (lengthValueStr.arguments.length < 2) separador= sepCelda;
      var vect = str.split(separador);
      return vect.length;
   }

   
   function getValuesStr (str,separador) {
      if (getValuesStr.arguments.length < 2) separador= sepCelda;
      var vect = str.split(separador);
      return str.split(separador);
   }   


   function getSumCols(objo,idx){
	var importe=0
	var ella
	var ello=FieldGetValues (objo)	
	for (var i=0;  i < ello.length ; i++){

		ella=ello[i].split(sepCelda)
		
		//La segunda 'celda' es el importe		
		importe=parseFloat(importe) + parseFloat(CadANum(ella[idx]))
		
	}
	if (isNaN(importe)){
		importe=0
	}

	return Math.round(parseFloat(importe) * 100) / 100

   }

	
   function insertValueStr(str, idx, valor, separador)
   {
   //	str= una fila entera
   //   separador= separador de columnas
        if (insertValueStr.arguments.length < 4) separador= sepCelda;
        var vect=str.split(separador);
        var str=''
        var i
        for (i=0; i<vect.length; i++){
       	  if (i==idx) {
	     if (str == '') str = valor; else str += separador+valor;
	  }
          if (str=='') str=vect[i]; else str += separador+vect[i];
	}
	return str;
}


//********************************************************************************
//********************************************************************************
//********************************************************************************
// FUNCIONES DE TRATAMIENTO DE FRITEDS EN CAMPOS

//function FieldAddRow (FieldObj)
//function FieldSetArray (FieldObj,lst)
//function FieldInsertRow (FieldObj,idx)
//function FieldDelRow (FieldObj, idx)
//function FieldGetLength (FieldObj)
//function FieldGetValue (FieldObj,idx)
//function FieldGetValues (FieldObj)
//function FieldInsertCol(str,idx,valor,separador)

//********************************************************************************
//********************************************************************************
//********************************************************************************
function FieldAddRow (FieldObj) {
   var args = FieldAddRow.arguments;
   var cad = '';

   // el primer argumento es el objeto campo
   for (i=1; i<args.length; i++)
      cad = addValueStr(cad,args[i],sepCelda);
   
   FieldObj.value = addValueStr(FieldObj.value,cad,sepFila);
}

function FieldSetArray (FieldObj,lst) {
   var cad = '';

   // el primer argumento es el objeto campo
   for (i=0; i<lst.length; i++)
      cad = addValueStr(cad,lst[i],sepFila);
   
   FieldObj.value = cad;
}


function FieldInsertRow (FieldObj,idx) {
   var args = FieldInsertRow.arguments;
   var cad = '';
   var tabla = '';
 
   // el primer argumento es el objeto campo, el segundo la pos
   for (i=2; i<args.length; i++)
      cad = addValueStr(cad,args[i],sepCelda);
   
   var lst = FieldObj.value.split(sepFila);
   
   if ((idx >= lst.length) || (idx < 0)) { // Añadimos
     FieldAddRow(FieldObj,cad);
   }
   else { // Insertamos
     for (i=0; i<lst.length; i++) {
       tabla = addValueStr(tabla,lst[i],sepFila);
       if (i == idx) tabla = addValueStr(tabla,cad,sepFila);
     }
     FieldObj.value = tabla;
   }
}


function FieldDelRow (FieldObj, idx) {
   FieldObj.value = deleteValueStr(FieldObj.value, idx, sepFila);
}


function FieldGetLength (FieldObj) {
   return lengthValueStr(FieldObj.value,sepFila);
}


function FieldGetValue (FieldObj,idx) {
   return getValueStr(FieldObj.value,idx,sepFila);
}


function FieldGetValues (FieldObj) {
   return getValuesStr(FieldObj.value,sepFila);
}


function FieldInsertCol(str,idx,valor,separador)
{
     var cad=''
     if (FieldInsertCol.arguments.length < 4) separador= sepFila;

     var vect=str.split(separador);
     str=''
     var i
     for (i=0; i<vect.length; i++){
		//Llamo a la función de insertar por cada fila
		cad=insertValueStr(vect[i],idx,valor)
		if (str=='') str=cad; else str+=separador+cad;
	}
      return str;
}

//********************************************************************************
//********************************************************************************
//********************************************************************************
// FUNCIONES DE TRATAMIENTO DE FRITEDS

//function getCheckSel (objSel)
//function pintaTabla (objTabla, valor, seleccion, numCeldas, sepRow, sepCell)
//function pintaCelda (obj, valor)
//function pintaTablaNumeros (objTabla, valor, seleccion, numCeldas, sepRow, sepCell)
//function getChoice(s)
//function getIndice(s)
//function setValue (text, n,  newValue)
//function setValue2 (text, text2, n)
//function getValue(text, n)

//********************************************************************************
//********************************************************************************
//********************************************************************************


//********************************************************************************

// Funcion......: pintaTabla
// Parametros...: el objeto tabla, la codificacion a pintar, si pinta selector
// La codif.....: Elem[1,1]&Elem[1,2]; Elem[2,1]&Elem[2,2]
// Otros........: La tabla tiene como primera fila la cabecera, para 
//                establecer la dimension de las celdas.
//                El selector es un campo radiobutton que tiene por ID
//                'sel'+[ID de la Tabla].
//********************************************************************************

function getCheckSel (objSel) {
   var ret = -1;
   for (i=0; i< objSel.length; i++)
     if (objSel[i].checked == true) ret=i;
     
   if (ret == -1) 
     if (objSel.checked == true) ret = 0; // si no es array
   return ret;
}

function getRadioValue(objSel)
{
	var ret=''
	for (i=0; i< objSel.length; i++){
		if (objSel[i].checked == true) ret=objSel[i].value
	}
	return ret
}

function setRadioValue(valor, objSel)
{
	for (i=0; i< objSel.length; i++){
		if (objSel[i].value == valor) ret=objSel[i].checked=true
	}
}

function pintaTabla (objTabla, valor, seleccion, numCeldas, sepRow, sepCell) {

sepFila="@@"
sepCelda="##"

   if (pintaTabla.arguments.length < 3) seleccion = false;
   if (pintaTabla.arguments.length < 5) sepRow = sepFila;
   if (pintaTabla.arguments.length < 6) sepCell = sepCelda;
   var tabla = valor.split(sepRow);
   var fila = null;
   var row = null;
   	
   // Borrar siempre la 1, porque se van eliminando ...
   for (i=1; i<objTabla.rows.length; ) objTabla.deleteRow(i);
   
   // Y Pintar ...
   if (valor != '')
   for (i=0; i< tabla.length; i++) {
        fila = tabla[i].split(sepCell);
        if (pintaTabla.arguments.length < 4) numCeldas = fila.length;
        row = objTabla.insertRow();  // La primera fila es el titulo.
        
        // con seleccion pintamos un radio button.
        if (seleccion) row.insertCell().innerHTML = '<input type="radio" name="sel'+objTabla.id+'">';
        for (j=0; j<numCeldas; j++) {
		var celda=row.insertCell()
		var texto=''
		texto=fila[j]
		celda.innerHTML=texto		
		if(isNaN(celda.innerText)) celda.align="left"
		else celda.align="right"}
      }
      refresh()
}
function pintaTablaList2 (objTabla, valor) {

   var sepRow = "@@";
   var sepCell = "##";
   var tabla = valor.split(sepRow);
   var fila = null;
   var row = null;
   // Borrar siempre la 1, porque se van eliminando ...
   for (i=1; i<objTabla.rows.length; ) objTabla.deleteRow(i);
   // Y Pintar ...
   if (valor != '')
   for (i=0; i< tabla.length; i++)
    {
        fila = tabla[i].split(sepCell);
        if (pintaTablaList2.arguments.length < 4) numCeldas = fila.length;
        row = objTabla.insertRow();  // La primera fila es el titulo.
        for (j=0; j<numCeldas-1; j++)
		{
			var celda=row.insertCell()
			var texto=''
			texto=fila[j]
			celda.innerHTML=texto		
			if(isNaN(celda.innerText)) celda.align="left"
			else celda.align="right"
		}
	}
      refresh()
}



function pintaTablaList (objTabla, valor) {

   var sepRow = "@@";
   var sepCell = "##";
   var tabla = valor.split(sepRow);
   var fila = null;
   var row = null;
   // Borrar siempre la 1, porque se van eliminando ...
   for (i=1; i<objTabla.rows.length; ) objTabla.deleteRow(i);
   // Y Pintar ...
   if (valor != '')
   for (i=0; i< tabla.length; i++) {
        fila = tabla[i].split(sepCell);
        if (pintaTablaList.arguments.length < 4) numCeldas = fila.length;
        row = objTabla.insertRow();  // La primera fila es el titulo.
               
        for (j=0; j<numCeldas; j++)
		{
			var celda=row.insertCell();
			var texto=fila[j];
			celda.innerHTML=texto;
			if(isNaN(celda.innerText)) celda.align="left";
			else celda.align="right";
		}
		texto=' <A href= JavaScript:EliminaMaterialLista('+celda.innerText+') >	<IMG src="../images/bt_eliminar1.gif" border=0 name="bt_eliminar'+celda.innerText+'" onmouseout=\'window.document["bt_eliminar'+celda.innerText+'"].src ="../images/bt_eliminar1.gif" \' onmouseover=\'window.document["bt_eliminar'+celda.innerText+'"].src ="../images/bt_eliminar.gif" \'></A>';
		celda.innerHTML = texto;
		celda.bgColor="#56439a";
		}
      refresh()
}

function pintaTablaList3 (objTabla, valor) {

   var sepRow = "@@";
   var sepCell = "##";
   var tabla = valor.split(sepRow);
   var fila = null;
   var row = null;
   	
   // Borrar siempre la 1, porque se van eliminando ...
   for (i=1; i<objTabla.rows.length; ) objTabla.deleteRow(i);
   
   // Y Pintar ...
   if (valor != '')
   for (i=0; i< tabla.length; i++) {
        fila = tabla[i].split(sepCell);
        
        row = objTabla.insertRow();  // La primera fila es el titulo.
       
        var celda=row.insertCell();
		var texto='';
		texto=fila[0]+' - '+fila[1]+'/ '+fila[2];
		celda.innerHTML=texto;		
		celda.align="center";
		celda=row.insertCell();
		texto=fila[3];
		celda.innerHTML=texto;
		celda.align="center";
		celda=row.insertCell();
		if (fila[4]=='1') texto='Si';
		else texto='No';
		celda.innerHTML=texto;
		celda.align="right";
		celda=row.insertCell();
		texto=' <A href= JavaScript:MostrarPedido('+fila[5]+') >	<IMG src="../images/bt_ver_orden1.gif" border=0 name="bt_eliminar'+fila[5]+'" onmouseout=\'window.document["bt_eliminar'+fila[5]+'"].src ="../images/bt_ver_orden1.gif" \' onmouseover=\'window.document["bt_eliminar'+fila[5]+'"].src ="../images/bt_ver_orden.gif" \'></A>';
		celda.innerHTML = texto;
		celda.bgColor="#56439a";			
		}
    
      refresh();
}



function pintaCelda (obj, valor) {  
   	
  obj.innerHTML = valor       
   refresh()
}


function pintaTablaNumeros (objTabla, valor, seleccion, numCeldas, sepRow, sepCell) {
   if (pintaTablaNumeros.arguments.length < 3) seleccion = false;
   if (pintaTablaNumeros.arguments.length < 5) sepRow = sepFila;
   if (pintaTablaNumeros.arguments.length < 6) sepCell = sepCelda;
   var tabla = valor.split(sepRow);
   var fila = null;
   var row = null;
   	
   // Borrar siempre la 1, porque se van eliminando ...
   for (i=1; i<objTabla.rows.length; ) objTabla.deleteRow(i);
   
   // Y Pintar ...
   if (valor != '')
   for (i=0; i< tabla.length; i++) {
        fila = tabla[i].split(sepCell);
        if (pintaTablaNumeros.arguments.length < 4) numCeldas = fila.length;
        row = objTabla.insertRow();  // La primera fila es el titulo.
        
        // con seleccion pintamos un radio button.
        if (seleccion) row.insertCell().innerHTML = '<input type="radio" name="sel'+objTabla.id+'">';

        for (j=0; j<numCeldas; j++) {
		var celda=row.insertCell()
		var texto=''
		texto=fila[j]
		celda.innerHTML=texto
		if(texto.indexOf(",")!=-1) celda.align="right"
		else celda.align="center"
	}
		
      }
      refresh()
}


function getChoice(s) {
	for (var i = 0; i < s.length; i++) 
	{
		if (s.options[i].selected)
		{
			return s.options[i].text
		}
	}
	return ''
}


function getIndice(s) {
	for (var i = 0; i < s.length; i++) 
	{
		if (s.options[i].selected)
		{
			return s.options[i].selectedIndex
		}
	}
	return null
}


function setValue (text, n,  newValue) {
	eval("document.forms[0]." + text + n) .value =  newValue
}


function setValue2 (text, text2, n) {   
	eval("document.forms[0]." + text + n) .value = eval("document.forms[0]." + text2 + n) .value
}


function getValue(text, n) {
	return eval("document.forms[0]." + text + n) .value;
}

//********************************************************************************
//********************************************************************************
//********************************************************************************
//FUNCIONES DE TRATAMIENTO DE CADENAS

//function quitaSubray(fullS)
//function RepSubStr(oldS,newS,fullS)
//function replaceAll(cad, s1, s2)
//function strleft(c1,c2)
//function strleftback(c1,c2)
//function strright(c1,c2)
//function strrightback(c1,c2)
//function trim(str)

//********************************************************************************
//********************************************************************************
//********************************************************************************
function quitaSubray(fullS) {
	var cad='';
	for (var i=0; i<fullS.length; i++)
 	{
		if (fullS.substring(i,i+1).toLowerCase() != "_") cad+=fullS.substring(i,i+1).toLowerCase()
	}
  return cad
}


function RepSubStr(oldS,newS,fullS) {
	for (var i=0; i<fullS.length; i++)
 	{
		if (fullS.substring(i,i+oldS.length).toLowerCase() == oldS)
  			fullS = fullS.substring(0,i)+newS+fullS.substring(i+oldS.length,fullS.length)
	}
  return fullS
}

function replaceAll(cad, s1, s2){

	
	while(cad.indexOf(s1)>-1){
		cad=cad.replace(s1,s2)
	}
	
	return cad
}

function strleft(c1,c2){
3
	var c;
	c=c1;	
	if (c1.indexOf(c2)!=-1) c=c1.substring(0,c1.indexOf(c2),c1.length);
	return c;

}

function strleftback(c1,c2){

	var c;
	c=c1;	
	if (c1.indexOf(c2)!=-1) c=c1.substring(0,c1.lastIndexOf(c2),c1.length);
	return c;

}

function strright(c1,c2){

	var c;
	c=c1;	
	if (c1.indexOf(c2)!=-1) c=c1.substring(c1.indexOf(c2)+c2.length);
	return c;

}

function strrightback(c1,c2){

	var c;
	c=c1;	
	if (c1.indexOf(c2)!=-1) c=c1.substring(c1.lastIndexOf(c2)+c2.length);
	return c;

}

function trim(str)
{
	for(var i = 0 ; i<str.length && str.charAt(i)==" " ; i++ ) ;
	return str.substring(i,str.length); 
}


//********************************************************************************
//********************************************************************************
//********************************************************************************
// FUNCIONES DE VALIDACIÓN

//function isEditMode()
//function ValidarCampo(  obj )
//function ComprobarSeleccion( obj )
//function isDate(indate)  //sólo permite dd/mm/aaaa
//function isTime(timein) //sólo permite hh:mm
//function validarEmail( obj )
//function ValidarNIF(obj)
//function ValidarCIF(obj)
//function ValidarNIE(obj)
//function ValidarPasaporte(obj)
//function ValidarURL(cadurl)
//function VDB(cad,len)
//function ValidarCuentaBanco(cadcuen)


//********************************************************************************
//********************************************************************************
//********************************************************************************
function isEditMode() {
	if (window.document.forms[0].method == "post") return true
	else return false
}

function ValidarCampo(  obj ){

			//Tipos: "text","select-one","select-multiple","textarea","checkbox","radio","file"
			
							
				switch (obj.type) {
					case "text":
							if ( trim(obj.value) == "" ) return false;
			
						break

					case "textarea":
						if ( trim(obj.value) == "" ) return false;
						break
					case "select-one":
						//alert(obj.selectedIndex)
						//alert(obj.options[obj.selectedIndex].text)
						if ( obj.selectedIndex == 0 ) return false;
						break
					case "select-multiple":
						if (obj.selectedIndex == -1) return false;
						break
					
					default:
						//Para checkbox o radio, diferenciamos dependiendo de la cantidad de opciones

 						if ( !obj[0]) {
 						
							switch (obj.type) {
								case "checkbox":
									if ( !obj.checked )  return false;
									break
								case "radio":
									if ( !obj.checked )  return false;
									break
									
								default:
									break
							}
						} 
						else { 
						
							switch (obj[0].type) {
								case "checkbox":
									if ( !ComprobarSeleccion( obj ) )  return false;
									break
								case "radio":
									if ( !ComprobarSeleccion( obj ) )  return false;
									break
									
								default:
									break
							}
						}
						break
				}

	return true;
}

function ComprobarSeleccion( obj ){
	for (var r=0; r < obj.length; r++){
		if ( obj[r].checked ) return true;
	}
}

function isDate(indate)  //sólo permite dd/mm/aaaa
{
	var y4;
	if (indate.indexOf("/")==-1) return false;
	
	var sdate = indate.split("/")

	var y4 = (Math.abs(sdate[2]))
	if(y4 < 100 && y4 > 50) y4 += 1900;
	if(y4 < 100 && y4 <= 50) y4 += 2000;
	var chkDate=new Date(Date.parse(sdate[1]+"/"+sdate[0]+"/"+sdate[2]))
	var cmpDate=(chkDate.getMonth()+1)+"/"+(chkDate.getDate())+"/"+(chkDate.getFullYear())
	var indate2=(Math.abs(sdate[1]))+"/"+(Math.abs(sdate[0]))+"/"+ y4
	if (indate2!=cmpDate){
		return false;
	}
	else
	{
		if (cmpDate=="NaN/NaN/NaN") return false;
		else return true;
	}
}


function isTime(timein) //sólo permite hh:mm
{
	
	var intime=timein;
	if (intime.indexOf(":")!=-1)
	{
		var stime = intime.split(":")
	}
	else
	{
		var stime = intime.split(".")
	}
	if (stime.length!=2){
		return false;
	}
	else
	{
		var cmpTime=(stime[0]*1)+":"+(stime[1]*1)
		if (cmpTime=="NaN:NaN" || stime[0]>=25 || stime[1]>=61) 
		{
		return false;
		}
		else
		{
		return true;
		}
	}
}


function validarEmail( obj ) {
	var emailStr = obj.value;
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // No es válido.
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // Si es válido.
	if ( !reg1.test( emailStr ) && reg2.test( emailStr ) ) {
		return true;
	} else {
	 	return false;
	}
}

//Función que toma un objeto y comprueba si su valor es un NIF válido.
function ValidarNIF(obj) {
	if ((obj.value == "") || (obj.value.length != 9)) return false

	var letra = obj.value.substring (0, 1);
	if (isNaN(letra)) {
		letra = letra.toUpperCase();
		if ((letra == 'L' || letra == 'K' || letra == 'M') && ValidarCIF(obj)) return true
		else return false
	}

	var dni = obj.value.substring (0, 8);
	if (isNaN(dni)) return false;

	var numero = parseInt(dni,10);
	var letranif = obj.value.substring (8, 9);
	letranif = letranif.toUpperCase();
	var letra;
	var ArrayLetras= new Array("T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E");

	ASC= numero % 23;
	
	letra=ArrayLetras[ASC];

	if (letranif  != letra) return false;

	return true;
} 

//Función que toma un objeto y comprueba si su valor es un CIF válido.
function ValidarCIF(obj) {
	if ((obj.value == "") || (obj.value.length != 9)) return false

	var pLetra = obj.value.substring (0, 1);
	pLetra= pLetra.toUpperCase();
	var bandera = 0;
	var ArraypLetras= new Array("A","B","C","D","E","F","G","H","P","Q","S","K","L","M","X");
	for (var i = 0; i<15;i++) {
		if (pLetra==ArraypLetras[i]) bandera = 1;
	}
	if (bandera==0) return false;
	
	var ncif = obj.value.substring (1, 8);

	if (isNaN(ncif)) return false;

	var Suma = parseInt(ncif.charAt(1)) + parseInt(ncif.charAt(3)) + parseInt(ncif.charAt(5));
	Suma+=parseInt(ncif.charAt(0))*2+parseInt(ncif.charAt(2))*2+parseInt(ncif.charAt(4))*2+parseInt(ncif.charAt(6))*2;
	
 	var ASC = 10 - Suma % 10
	var control = obj.value.substring (8, 9);
	
	if (pLetra == "X" || pLetra == "P") {
		ASC+=64
		control = control.toUpperCase();
		if (control.charCodeAt(0) != ASC) return false
	} else {
		if (parseInt(control) != ASC) return false
	}
	return true;
} 

//Función que toma un objeto y comprueba si su valor es un NIE válido.
function ValidarNIE(obj) {
	if ((obj.value == "") || (obj.value.length != 9)) return false

	var letra = obj.value.substring (0, 1);
	if (isNaN(letra)) {
		letra = letra.toUpperCase();
		if (letra == 'X' && ValidarCIF(obj)) return true
		else return false
	}
	return false;
} 

//Función que toma un objeto y comprueba si su valor es un Pasaporte válido.
function ValidarPasaporte(obj) {
	if ((obj.value == "") || (obj.value.length > 12)) return false
	else return true
} 


//Función que valida URL Absolutas
function ValidarURL(cadurl) {
	if (cadurl == ""){
		return false
	}
	else {	
		if (cadurl.indexOf(".")<=cadurl.indexOf("http://")){
			return false	
		}
	}
	return true
} 


//Función que valida que el dato sea numérico y su longitud (Cuentas y demás)
function VDB(cad,len){
	if (isNaN(cad) || cad.length!=len) return false;

return true;

}


//Función que valida cuentas bancarias (Cuentas y demás)
function ValidarCuentaBanco(cadcuen){
	if(VDB(cadcuen, 20)==false) return false;
return true;

}

///********************************************************************************
//*********************************************************************************
//*********************************************************************************
//GESTION DE ANEXOS

//function add()
//function remove()

//*********************************************************************************
//*********************************************************************************
//*********************************************************************************
function add()
{
	
for (i=0;i<f.elements.length;i++)
	{if (f.elements[i].type == "file")
		f.attach.options[f.attach.length] = new Option(f.elements[i].value)
	 }
}


function remove()
{
if (f.attach.selectedIndex != -1)
	{if (f.attach.length != 1)
		{for (i=f.attach.selectedIndex;i<f.attach.length-1;i++)
			{f.attach[i].text=f.attach[i+1].text}
		 }
	f.attach.length=f.attach.length-1
	}
}

//*********************************************************************************
//*********************************************************************************
//*********************************************************************************
// FUNCIONES GENÉRICAS

//function Foco (obj,cad)
//function AbrirVentanaSeleccion(cad, altura, profile)

//*********************************************************************************
//*********************************************************************************
//*********************************************************************************



function Foco (obj,cad){

	if (obj.style.display==''){
		obj.focus()
	}
	else{
		alert("El campo "  +cad + " est"+ decodeURI('%c3%a1')  +" oculto. \n Debe hacerlo visible e indicar un valor correcto.")
	}
}



function AbrirVentanaSeleccion(cad, altura, profile)
{
	if (AbrirVentanaSeleccion.arguments.length < 3) profile = false;
	var pathname = (window.location.pathname);
	var pos = (600 - altura) / 2
	pathname = pathname.toLowerCase();
	if(profile){
		 var formulario='SeleccionProfile'
	}
	else{
		 var formulario='Seleccion'
	}
	var pathform = pathname.substring(0,(pathname.lastIndexOf('.nsf')))+'.nsf/' + formulario + '?OpenForm' + cad
	var winprops='dependent=yes,scrollbars=no,resizable=no,width=550,height=' + altura
	venselec=window.open(pathform,"Seleccion",winprops);		
	venselec.moveTo(125,pos)
}



//********************************************************************************
//********************************************************************************
//********************************************************************************
//FUNCIONES JS DE INTERFAZ

//var sep='@@';
//var sepParam='@$';

//function transformView()
//function MenuDiv(cad)
//function Seccion(ntabla)
//function Seccion2(ntabla, accion)

//********************************************************************************
//********************************************************************************
//********************************************************************************
var sep='@@';
var sepParam='@$';

function transformView(){
	
	//Localiza la tabla con la vista	
	var tableElements = document.getElementsByTagName('table');	
	for(var o=0;  o < tableElements.length; o++){
		
		table= tableElements[o] ;
		
		
		if (table.name=="TABLAVISTA"){
		
			//La siguiente tabla es la que contiene la vista
			table= tableElements[o+1] ;
			
			if (table){	
				headers = table.getElementsByTagName("th");
				
				//Comprobamos que la vista muestre documentos, si no se descuadra
				if (headers.length>=1){							
					
					table.width = '100%' ;
					table.cellSpacing = '1';
					table.cellPadding='2';				
	
					for( i = 0; i < headers.length; i++) {
						headers[i].bgColor = '#56439A';		
					}
		
					rows = table.getElementsByTagName("tr");
					var counter = 0
					for( i = 0; i < rows.length; i++) {						
						rows[i].fontColor='#808080'
						rows[i].bgColor = (i % 2 ? '#E4E4EC' : '');
					}
				}
			}
			break;
		}
	}			
	
	if (document.all.TABLABOTONES) document.all.TABLABOTONES.style.display=""
	if (document.all.TABLAFORMULARIO) document.all.TABLAFORMULARIO.style.display=""
	if (document.all.TABLAVISTA) document.all.TABLAVISTA.style.display=""
	
}

function MenuDiv(cad){
//Pliega o despliega los menús
var divm;
divm=MM_findObj(cad, document);
if (divm.style.display=="none"){
	divm.style.display=""
}
else{
	divm.style.display="none"
}
}

function Seccion(ntabla){
	//Pliega o despliega la tabla indicada
	imagen=MM_findObj("bt_" + ntabla)
	if (eval("document.all." + ntabla + ".style.display")==""){
		eval("document.all." + ntabla + ".style.display='none'")	
		imagen.src="../images/ico_dcha.gif"
	}
	else{
		eval("document.all." + ntabla + ".style.display=''")	
		imagen.src="../images/ico_abajo.gif"
	}
}

function Seccion2(ntabla, accion){
	//Fuerza el pliegue o despliegue de la tabla indicada
	imagen=MM_findObj("bt_" + ntabla)
	eval("document.all." + ntabla + ".style.display='" + accion + "'")	
	imagen.src="../images/ico_dcha.gif"
}


//********************************************************************************
//********************************************************************************
//********************************************************************************
//FUNCIONES DE NAVEGACIÓN

//function Guardar(cad)
//function GuardarSinValidar(cad)
//function EjecutarAccion(accweb)
//function Salir()

//********************************************************************************
//********************************************************************************
//********************************************************************************

function Guardar(cad)
{
	var salvar=true
	if (Guardar.arguments.length < 1) cad="Form1";
	var fo=document.forms[cad];

	//Si tiene evento onsubmit() lo invocamos
	if (fo.onsubmit){
		salvar=fo.onsubmit();
	}

	if (salvar)
	{
		fo.submit()
	}
}

function GuardarSinValidar(cad)
{
	if (GuardarSinValidar.arguments.length < 1) cad="Form1";
	var fo=document.forms[cad];
	fo.submit()	
	
}

function EjecutarAccion(accweb)
{
	var salvar=true
	var fo=document.forms[0];
	fo.AccionWeb.value=accweb
	fo.Boton.value='Accion';

	//Si tiene evento onsubmit() lo invocamos
	if (fo.onsubmit){
		salvar=fo.onsubmit();
	}
	
	if (salvar){
		fo.submit()
		//Ocultamos la tabla con los botones
		if (document.all.TABLABOTONES) document.all.TABLABOTONES.style.display="none"
		if (document.all.TABLAFORMULARIO) document.all.TABLAFORMULARIO.style.display="none"
		var aDiv=MM_findObj("comunnityContainer")
		if (aDiv) aDiv.style.display="none"
	}
}


function Salir()
{	
	if (f.RETURNPAGE)
	{
		if (ValidarURL(f.RETURNPAGE.value)){
			window.location.replace(f.RETURNPAGE.value)
		}
		else
		{
			salirDefault()
		}
	}
	else
	{
		salirDefault()
	}
}



///********************************************************************************
//********************************************************************************
//********************************************************************************
// FUNCIONES DE TRATAMIENTO DE NÚMEROS Y MONETARIO

//function Formatea(cadena)
//function CadANum(cad)
//function NumACad(num)
//function StrToReal (valor)
//function RealToStr(valor)
//function EurosToPtas (valor)
//function PtasToEuros (valor)
//********************************************************************************
//********************************************************************************
//********************************************************************************


function Formatea(cadena)
{
	//Coje una cadena, le quita los ceros de delante, le quita los puntos y la formatea
	//como 999.999.999,00

	var dec='00'
	var ent=''
	cad= new String(cadena)

	//Quito los puntos si los hay
	do
		cad=cad.replace('.','')
	while (cad.indexOf('.') != -1)

	//Quito los ceros de delante
	var cad2=cad
	var car = ''
	for (var k=0;  k < cad.length; k++)
	{
		car=cad.charAt(k)
		if(car!='0')
		{		
			cad2=cad.substring(k,cad.length)
			break;
		}	
	}
	cad=cad2
	//Fin quitar ceros

	//Separo la cadena en entero y decimal
	if(cad.indexOf(',')!=-1)
	{
		var ello=cad.split(',')
		ent=ello[0]
		dec=ello[1]
		if(dec=='') dec='00'
	}
	else ent=cad

	//Si hay más de tres números tengo que ponerle los puntos
	if(ent.length>3)
	{
		var cadvacia=''
		var conta=0
		//Recorro la cadena de atrás a adelante y cada 3 números pongo un punto
		for (var i=ent.length;  i > 0; i--)
		{		
			cadvacia+=ent.charAt(i-1)
			conta++
			if(conta==3){
				//If que controla que no ponga un punto en la última posición 				//(.123.123.123,00)
				if(i!=1){
					cadvacia+='.'
					conta=0
				}
			}		
		}

		//Como la cadena con puntos la recorre de atrás a adelante, con este for le doy la vuelta
		ent=''
		for (var j=cadvacia.length;  j > 0 ; j--)
		{
			ent+=cadvacia.charAt(j-1)
		}
	}

	//formatea decimales para que tenga dos números
	if(dec.length<2) dec+='0'
	if(dec.length>2)
	{
		 dec=dec.substring(0,2)
	}
	//Fin formateo decimales
	
	if(ent=='') ent='0'
	
	return ent + ',' + dec
}

function CadANum(cad)
{
	//Dado un string en formato 999.999.999,00 la cambia a 999999999.00 numérico
	var cadena = ''
	cadena=cad
	if(cadena.indexOf('.')!=-1){
		do
			cadena=cadena.replace('.','')
		while (cadena.indexOf('.') != -1)
	}
	cadena=cadena.replace(',','.')
	if(isNaN(cadena)) return 'error númerico'
	return parseFloat(cadena)	
}

function NumACad(num)
{
	//Dado un numérico en formato 999999999.00 lo cambia a 999.999.999,00 string
	var cadena=''
	cadena=num.toString()
	cadena=cadena.replace('.',',')
	cadena=Formatea(cadena)
	return cadena
}

function StrToReal (valor) 
{
   if (valor == '') return 0;

   var num = '';
   var c= '';

   for (i=0; i<valor.length; i++) {
      c = valor.charAt(i);
      if ((c != '.') && (c != ','))  num += c;
      if (c == ',')  num += '.';
   }

   return parseFloat(num);
}

function RealToStr(valor) {
   var num = valor.toString();
   var newvalor = '';
   var mod =0;
   var idxcoma = num.indexOf('.');
   if (idxcoma == -1) idx = num.length; else idx = idxcoma;
   
   // introducir la parte entera.
   for (i=idx-1; i>=0; i--) 
   {
      if (mod == 3) { newvalor = '.'+newvalor; mod = 0; }
      c= num.charAt(i);
      newvalor = c+newvalor;
      mod++;
   }

   // parte decimal
   if (idxcoma != -1) 
   {
   	newvalor += ',';
   	for (i=idx+1; i<num.length; i++)
   	   newvalor += num.charAt(i);
   }
   
   return newvalor;
}

function EurosToPtas (valor) 
{
	return RealToStr(Math.round(StrToReal(valor)*166.386));
}

function PtasToEuros (valor) 
{
	return RealToStr(Math.abs(Math.round(StrToReal(valor)/166.386*100)/100));
}

/*
 *  compose DATE functions
 */


var pong;
function makeArray(n){
  this.length = n;
  for (i=1;i<=n;i++){
    this[i]=0;
  }
  return this;
}

// standard date display function with y2k compatibility
function displayDate() {
  var this_month = new makeArray(12);
  this_month[0]  = "Enero";
  this_month[1]  = "Febrero";
  this_month[2]  = "Marzo";
  this_month[3]  = "Abril";
  this_month[4]  = "Mayo";
  this_month[5]  = "Junio";
  this_month[6]  = "Julio";
  this_month[7]  = "Agosto";
  this_month[8]  = "Septiembre";
  this_month[9]  = "Octubre";
  this_month[10] = "Noviembre";
  this_month[11] = "Diciembre";

  var this_day_e = new makeArray(7);
  this_day_e[0]  = "Domingo";
  this_day_e[1]  = "Lunes";
  this_day_e[2]  = "Martes";
  this_day_e[3]  = "Mi&eacute;rcoles";
  this_day_e[4]  = "Jueves";
  this_day_e[5]  = "Viernes";
  this_day_e[6]  = "S&aacute;bado";

  var today = new Date();
  var day   = today.getDate();
  var month = today.getMonth();
  var year  = today.getYear();
  var dia = today.getDay();
    if (year < 1000) {
       year += 1900; }
  return( " " + this_day_e[dia] + ", " + day + " de " + this_month[month] + " " + year);
}

//
//	sitemap.js - © Questech Systems
//	This notice must stay intact for use. Not for resale.
//

var g_bIE4 = document.all && !document.getElementsByTagName
var g_strImgChannelOpenHTML = "<img src='../images/channelopen.gif' class='StyleSiteMapImgChannelOpen'>";
var g_strImgChannelClosedHTML = "<img src='../images/channelclosed.gif' class='StyleSiteMapImgChannelClosed'>";
var g_strToggleIDSuffix = "x";

function toggleLayer(nID) {

	var pLayer;
	var pToggle;
	
	if (g_bIE4) {
		pLayer = document.all.item(nID);
		pToggle = document.all.item(nID + g_strToggleIDSuffix);
	} else {
		pLayer = document.getElementById(nID);
		pToggle = document.getElementById(nID + g_strToggleIDSuffix);
	}
	
	if (pLayer.style.display != "none") {
		pLayer.style.display = "none";
		pToggle.innerHTML = g_strImgChannelClosedHTML;
	} else {
		pLayer.style.display = "block";
		pToggle.innerHTML = g_strImgChannelOpenHTML;
	}

}

function actionLayer(bExpand) {

	var pLayers;
	var pToggle;
	var strStyleDisplay;
	var strInnerHTML;
	var i;
	
	if (g_bIE4) {
		pLayers = document.all.tags("ul");
	} else {
		pLayers = document.getElementsByTagName("ul");
	}
	
	if (bExpand) {
		strStyleDisplay = "block";
		strInnerHTML = g_strImgChannelOpenHTML;
	} else {
		strStyleDisplay = "none";
		strInnerHTML = g_strImgChannelClosedHTML;
	}
	
	if (g_bIE4) {
		for (i = 0; i < pLayers.length; i++) {
			pToggle = document.all.item(pLayers[i].id + g_strToggleIDSuffix);
			if (pToggle) {
				pLayers[i].style.display = strStyleDisplay;
				pToggle.innerHTML = strInnerHTML;
			}
		}
	} else {
		for (i = 0; i < pLayers.length; i++) {
			pToggle = document.getElementById(pLayers[i].id + g_strToggleIDSuffix);
			if (pToggle) {
				pLayers[i].style.display = strStyleDisplay;
				pToggle.innerHTML = strInnerHTML;
			}
		}
	}

}

//********************************************************************************
//********************************************************************************
// FUNCIONES propias FUNDACION CAROLINA
//********************************************************************************
//********************************************************************************

function Volver()
{
	history.back();
}

//************************
//   CONTROL DE SESIÓN
//************************

function StartSession(){

	var f=document.forms[0]
	var usu = MM_findObj('campousuario')
	var pas = MM_findObj('campopassword')
	if(usu.value=="" || pas.value=="")
	{
		alert("Debe rellenar los campos de usuario y clave.")
	}
	else
	{
		f.User.value=usu.value;
		f.Psw.value=pas.value;
		f.Action.value="STARTSESSION";
		Guardar();
	}
}

function CloseSession(){
	var f=document.forms[0]
	f.Action.value="ENDSESSION";
	Guardar();
}

//************************
//  CONTROL DE BUSCADOR
//************************
function buscar(){
	var term = MM_findObj('campobusqueda')
	var menu = MM_findObj('NombreMW')
	var valor=term.value
	if(valor!="")
	{
		while(valor.indexOf("/")>-1)
		{
			//Es una fecha, sustituimos / por @@
			valor=valor.replace("/","@@")
		}
		var cad ="?st=" + escape(valor)
		if(menu.value!="")
		{
			cad +="&mn=" + escape(menu.value)
		}
		
		window.location.replace(linkbusqueda + cad)
		
	}
	else alert('Debe introducir algún valor para la búsqueda')
}

function irabuscar(tipo){
	window.location.replace(linkbusqueda + tipo)
}

//************************
//   CONTROL DE POPUPS
//************************
function altaBoletin(idioma)
{
	var term = MM_findObj('campoboletin')
	var venselec;
	if(term.value!="")
	{
		if(validarEmail(term))
		{
			var cad ="?action=EMAIL&email=" + term.value
			var winprops='dependent=yes,scrollbars=no,resizable=no,width=650,height=320';		
			venselec=window.open(linkboletinLOPD + cad ,"",winprops);
			venselec.moveTo(125,150)
			term.value=""
		}
		else 
		{
			if(idioma!='P') alert('El e-mail introducido no es válido')
			else alert('O e-mail posto nao tem validade')
		}
		
	}
	else alert('Debe introducir una dirección de e-mail')
}

function envioBoletin(id)
{
	if(confirm('¿Está seguro de que desea enviar el boletín?'))
	{
		var venselec;
		var cad ="?action=ENVIO&id=" + id
		var winprops='dependent=yes,scrollbars=no,resizable=no,width=650,height=320';		
		venselec=window.open(linkboletin + cad ,"",winprops);
		venselec.moveTo(125,150)
	}
}
function envioNovedades(id)
{
	if(confirm('¿Está seguro de que desea enviar las novedades?'))
	{
		var venselec;
		var cad ="?action=ENVIONOVEDADES&id=" + id
		var winprops='dependent=yes,scrollbars=no,resizable=no,width=650,height=320';		
		venselec=window.open(linkboletin + cad ,"",winprops);
		venselec.moveTo(125,150)
	}
}

function popUp(URL) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=1024,height=768,left = 0,top = 0');");
}

function EnvioDatos(nombre)
{
	var venselec;
	var winprops='dependent=yes,scrollbars=no,resizable=no,width=520,height=370';		
	venselec=window.open(linkdatosalta + "?id=" + nombre,"",winprops);
	venselec.moveTo(125,150)
}

//************************
//   CONTROL DE IDIOMA
//************************
function CambioIdioma(idioma)
{
	var f=document.forms[0]
	f.CambioIdioma.value=idioma;
	f.Action.value="CHANGELANGUAGE"
	Guardar()
}

//************************
//   CONTROL DE FAQ
//************************
function MostrarOcultar(div)
{
	var objeto = document.getElementById(div)
	if(objeto.style.display == 'none')
	{
		objeto.style.display = 'block'
	}
	else
	{
		objeto.style.display = 'none'
	}
}

//**************************
//   CONTROL DE SITE MAP
//**************************
function mapa(){
	var menu = MM_findObj('NombreMW')
	if(menu!=null)
	{
		var cad ="?mn=" + menu.value;
	}
	window.location.replace(linkmapa + cad)
}

