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 InStr(n, s1, s2){
	// Devuelve la posición de la primera ocurrencia de s2 en s1
	// Si se especifica n, se empezará a comprobar desde esa posición
	// Sino se especifica, los dos parámetros serán las cadenas
	var numargs=InStr.arguments.length;
	
	if(numargs<3)
		return n.indexOf(s1)+1;
	else
		return s1.indexOf(s2, n)+1;
}

function IT_EsFecha(Fecha) {
	var dia,mes,year,esDate,varFecha, varFormato, separador;
    var formatoFecha=itCultureFormatoFecha;
	
	esDate=false;
	if (InStr(1, formatoFecha, "/"))
		separador = "/";
	else 
		if (InStr(1, formatoFecha, "-"))
		separador = "-";
	
	varFecha=Fecha.split(separador);
	varFormato=formatoFecha.split(separador);
	 for (i = 0;  i < 4;  i++){
		if (varFormato[i]=='d' || varFormato[i]=='dd')
			dia = varFecha[i];
		else
			if(varFormato[i]=='M' || varFormato[i]=='MM')
				mes = varFecha[i];
			else
				if(varFormato[i]=='yy' || varFormato[i]=='yyyy')
					year = varFecha[i];
	}	
	
	if ((dia>0 && dia<32) && (mes>0 && mes<13) && year>-1) {
		esDate=true;
	}
	
	return esDate;
}

function IT_EsCheckOk(checkStr,checkOK){
	 var allValid = true;
	 for (i = 0;  i < checkStr.length;  i++)
	 {
	 	ch = checkStr.charAt(i);
    		for (j = 0;  j < checkOK.length;  j++)
			if (ch == checkOK.charAt(j))
		        		break;
    			if (j == checkOK.length)
			{
			      	allValid = false;
				break;
			}
  	}
	return allValid;
}

function IT_EsTextoNumero (campo){
	var checkOK = 	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
	var checkStr = campo;
	 
	return IT_EsCheckOk(checkStr,checkOK);
}

function IT_EsNumero (campo){
	var checkOK = 	"0123456789.,-";
	var checkStr = campo;
	
	return IT_EsCheckOk(checkStr,checkOK);
}

function IT_EsDigito (campo){
	var checkOK = 	"0123456789";
	var checkStr = campo;
	
	return IT_EsCheckOk(checkStr,checkOK);
}

function IT_validateForm() { //v4.0
  var i,p,q,nm,test,out,num,min,max,errors='',args=IT_validateForm.arguments;
  var formatoFecha=itCultureFormatoFecha;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); out=args[i+1];
    if (val) { nm=val.name;
	 if (out==""){out=nm;}
     if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+out+' must contain an E-mail address.\n'; //traducir
	  } else if (test.indexOf('isDate')!=-1) {
        if (!IT_EsFecha(val)) errors+='- '+out+' must contain a date.\n'; //traducir
      } else if (test.indexOf('isTxNum')!=-1) {
        if (!IT_EsTextoNumero(val)) errors+='- '+out+' can only contain letters and numbers.\n'; //traducir
      }else if ((p=test.indexOf('isTxMin'))!=-1) { min=test.substring(p+7);
        if (val.length<min) errors+='- '+out+' it must contain '+min+' characters minimum (there are '+val.length+').\n'; //traducir
      }else if ((p=test.indexOf('isTxMax'))!=-1) { max=test.substring(p+7);
        if (val.length>max) errors+='- '+out+' it must contain '+max+' characters maximum (there are '+val.length+').\n'; //traducir
      }else if ((p=test.indexOf('isDigMin'))!=-1) { min=test.substring(p+8);
        if (!IT_EsDigito(val)) errors+='- '+out+' must contain digits.\n'; //traducir
        if (val.length<min) errors+='- '+out+' must contain '+min+' digits minimum (there are '+val.length+').\n'; //traducir
      } else if (test!='R') {
        if (!IT_EsNumero(val)) errors+='- '+out+' must contain a number.\n'; //traducir
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+out+' must contain a number between '+min+' and '+max+'.\n'; //traducir
    } } } else if (test.charAt(0) == 'R') errors += '- '+out+' is a required field.\n'; } //traducir
  } if (errors) alert('Errors encountered:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function IT_CamposIguales() {
  var val1,val2,campo1,campo2,args=IT_CamposIguales.arguments;
  if (document.MM_returnValue==true){
  	val1=MM_findObj(args[0]);
  	val2=MM_findObj(args[2]);
 	val1=val1.value;
	val2=val2.value;
  	if (val1!=val2) {
		campo1=args[1];
		campo2=args[3];
		alert('The fields '+campo1+' and '+campo2+'  must have the same value'); //traducir
  	}
 	document.MM_returnValue = (val1==val2);
 }
}
