if (window.focus) self.focus();
// check for IE3
var isIE3 = (navigator.appVersion.indexOf('MSIE 3') != -1);
var error_msg_holder;
var real_name_holder;
var format_holder;
 var hardReturn = "\r\n";
 var customError='';
 function JsFormtrim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function isHTMLArea(form,name,req,maxl)
{
	var te=eval('form.'+name);
	var tedit=eval(name+'_htA');
	te.value=tedit.getHTML();
	var strippa=te.value.replace(/<[^>]*>/g, "");
	var strippa=strippa.replace("\r", "");
	var strippa=strippa.replace("\n", "");
	var strippa=strippa.replace(" ", "");
	if(strippa.match(/[a-zA-Z0-9]/g) || !req) 
	return true; 
	else return false;
}

function isTinymce(obj,name,req,maxl)
{
	var str = tinyMCE.getContent(name);
	if( req > 0 && !str.length)
        return false;

    return true;
}

function isFCK(form,name,req,maxl)
{
	//alert(name);
	return true; 
}

function name2number(form,elname)
{
    for (var i = 0; i < form.elements.length; i++)
    {
        if(form.elements[i].name==elname)
        {
            return i;
        }
    }
}
// object definition
function validation(realName, formEltName, eltType, upToSnuff, format) {
  this.realName = realName;
  this.formEltName = formEltName;
  this.eltType = eltType;
  this.upToSnuff = upToSnuff;
  this.format = format;
}
var validating='';
function isPwd(str,n,conf,vname)
{
   // var name;
  if (
      (!(str.length>0))
      &&
      (n==1)
      )
      return false;
  if(conf==1)
  {
   checkme=eval(name+'.'+vname+'_confirm');
  //  alert(checkme.value);
   if(checkme.value!=str)
   {
       customError=fields_dont_match;
       return false;
   }
  }
  return true;
}
function isText(str,n) {
 if (!(str.length>0))
                 {if (n==1){return false}else{return true}}
else {return true;}
}

function isMLText(str,n,l) {
	if (!(str.length>0))
	{
		if (n==1){return false}
	}
	if(l>0)
	{
		//tolgo gli a capi
	    str=str.replace(/[\r\n][\r\n]*/g,'\r\n');  
    	str=str.replace(/[\r\n]*/g,'');	
		if(str.length<=l)return true;
		else
		{
			customError=real_name_holder + ' ' + is_too_long + hardReturn;
			customError+=max_length+':'+l;
			return false;
		}
	}
    return true;
}
function isSelect(formObj) {
  //return (formObj.options[formObj.selectedIndex].value != 0);
 // alert('pizza');
  return (formObj.selectedIndex > 0);
  //return false;
}
function isMultiSelect(formObj) {
  conta=formObj.options;
//  alert(conta.length);
for (var i = 0; i < conta.length; i++)
  {
   if (formObj.options[i].selected)
   return true;
  }
  return false;
}
function isRadio(formObj) {
  for (j=0; j<formObj.length; j++) {
    if (formObj[j].checked) {
      return true;
    }
  }
  return false;
}
function isMultiCheck(oname, form) {
  for (j=0; j<form.elements.length; j++) 
  {
  //alert(form.elements[j].name.substring(0,oname.length));
  	if(form.elements[j].name.substring(0,oname.length)==oname){
    	if (form.elements[j].checked) 
		{
	      return true;
		}
  	}	
 }
  return false;
}
function isCheck(form,box) {
eval('cb=document.forms.'+form+'.'+box);
return cb.checked;
}
/*function isEmail(str,n) {
     if ((str.length<1))
                 {if (n==1){return false}else{return true}}
//var oRegExp = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/g;
var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[A-Za-z]\.+[\\w]+[\\w]$";
     var oRegExp = new RegExp(emailReg);
alert(emailReg+' - return: ' + oRegExp.test(str));
return (oRegExp.test(str));
//  return ((str != "") && ((str.indexOf("@") != -1) && (str.indexOf("@") > 1)) && ((str.indexOf(".") != -1) && (str.length - str.indexOf(".") > 2)));
}*/

function isEmail( str, n)
{
	if ((str.length<1))
		{ if (n==1) return false; else return true; }
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^[\-_\.0-9a-zA-Z]+@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,6}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}

function isZipCode(str) {
  var l = str.length;
  if ((l != 5) && (l != 10)) { return false }
  for (j=0; j<l; j++) {
    if ((l == 10) && (j == 5)) {
      if (str.charAt(j) != "-") { return false }
    } else {
      if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false }
    }
  }
  return true;
}
function isNum(str,good,n) {
 if ((str.length<1))
                 {if (n==1){return false}else{return true}}
  for (j=0; j<str.length; j++) {
        if(good.indexOf(str.charAt(j))==-1){return false; }
  }
  return true;
}
function isDate(day,month,year) {
 //alert(day+month+year);
  if (day == 0) { return false }
  if (month == 0 || month > 12) { return false }
  if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
    if (day > 31) { return false }
  } else {
    if (month == 4 || month == 6 || month == 9 || month == 11) {
      if (day > 30) { return false }
    } else {
      if (year%4 != 0) {
        if (day > 28) { return false }
      } else {
        if (day > 29) { return false }
      }
    }
  }
  return true;
}
function errorMsg(type,rname)
{
    if(customError.length>0)
    {
        mzg=rname+':'+ customError+ hardReturn;
      customError='';
     }
     else
     {
         if(type=='emptytext')  mzg=beginRequestAlertForText + rname + endRequestAlert + hardReturn;
		 else if(type=='wrongtext')  mzg=beginInvalidAlert+ rname + endInvalidAlert  + hardReturn;
         else     mzg = beginInvalidAlert + rname + endInvalidAlert + hardReturn;
     }
     return mzg;
}
function validateForm(form) {
    var formEltName = "";
    var formObj = "";
    var str = "";
    var realName = "";
    var alertText = "";
    var firstMissingElt = null;
    // var hardReturn = "\r\n";
    //var name;
    
    for (i=0; i<elts.length; i++) 
    {
        if(elts[i]!= undefined)
        {
            formEltName = elts[i].formEltName;
            //alert(formEltName);
            //  code= "form.elements['" + formEltName+"']";//alert(code)
            code= "document.forms."+name+".elements['" + formEltName+"']";//
            
            if (elts[i].eltType != "date")formObj = eval(code);
            realName = elts[i].realName;
            real_name_holder=realName;
            format_holder=elts[i].format;
            // alert('calling '+elts[i].upToSnuff);
            //alert(realName+'is'+elts[i].eltType);
            if (elts[i].eltType == "text") {
            str = formObj.value;
            // if(!str)str=new String('');
            /*  alert(str);
            alert('calling '+elts[i].upToSnuff);    */
            if (eval(elts[i].upToSnuff)){signal(formObj,0);continue;}
            if (str == "") {
            if (allAtOnce) {
            alertText += errorMsg('emptytext',realName);
            if(signaling>0)
            signal(formObj,1);
            if (firstMissingElt == null) {firstMissingElt = formObj};
            } else {
            signal(formObj,1);
            alertText = errorMsg('emptytext',realName);
            alert(alertText);
            // return false;
            }
            }//str==''
            else {
            if (allAtOnce) {
            alertText += errorMsg('wrongtext',realName);
            if(signaling>0)
            signal(formObj,1);
            } else {
            signal(formObj,1);
            alertText = errorMsg('wrongtext',realName);
            }
            if(elts[i].format)
            //if (temp.length > 0)
            alertText += beginFormatAlert + elts[i].format + hardReturn;
            // alert('bon');
            if (allAtOnce) {
            if (firstMissingElt == null) firstMissingElt = formObj;
            } else {
            alert(alertText);
            }
            }
            } else {
            //alert('calling'+elts[i].upToSnuff);
            //alert(elts[i].eltType);
            if (eval(elts[i].upToSnuff))
            {
            signal(formObj,0);
            continue;
            }
            if (allAtOnce) {
            //alert(elts[i].eltType);
            alertText  += errorMsg('nottext',realName);
            if (firstMissingElt == null) {firstMissingElt = formObj};
            if(signaling>0)
            signal(formObj,1);
            } else {
            signal(formObj,1);
            alertText+= errorMsg('nottext',realName);
            alert(alertText);
            }
            }
            if (!isIE3) {
            
            var goToObj = (allAtOnce) ? firstMissingElt : formObj;
            if(goToObj)
            {
            if (goToObj.select) goToObj.select();
            if (goToObj.focus) goToObj.focus();
            }
            }
            if (!allAtOnce) {return false};
        }
    }
  if (allAtOnce) {
    if (alertText != "") {
      alert(alertText);
      return false;
    }
  }
  return true; //change this to return true
}
function validate(obj)
{
var ok=true;
var formEltName = eval(obj.name+'.formEltName');
//var hardReturn = "\r\n";
var realName = eval(obj.name+'.realName');
var eltType = eval(obj.name+'.eltType');
var func=eval(obj.name+'.upToSnuff');
var format=eval(obj.name+'.format');
var formObj=obj;
//alert(validating);
if (!((validating==formEltName)||(validating==''))) {return true}
validating=formEltName;
// leggiamo i dati
//checkiamo!
    if (eltType == "text") {
              str = obj.value;
         if (!eval(func))
                {
                 ok=false;
                if (str == "") alertText = +beginRequestAlertForText + realName + endRequestAlert + hardReturn
                else alertText = str + beginInvalidAlert + realName + endInvalidAlert + hardReturn;
                 if ((format) && (format.length > 0))
alertText += beginFormatAlert + format + hardReturn;
                }
        } // text
     else
        {
        if (!eval(func))
                {
                 ok=false;
               alertText = beginRequestAlertGeneric + realName + endRequestAlert + hardReturn;
                }
        }//not text
if (!ok) {
                signal(obj,1);
                if ((obj.value)&&(clearWrong)){obj.value='';}
                alert(alertText);
         if (!isIE3) {
                      if (obj.focus) {obj.focus()} else
                      {if (obj.select) obj.select();}
                         }
                }
        else {
        validating='';
        signal(obj,0);
        return true;
        }
}
function signal(el, bg) {
 if (el.style)
        {
                if (bg)
                el.style.backgroundColor = bgBad
                else
                el.style.backgroundColor = bgGood;
        }
}
function checkTime(str,fmt)
{
if (
	 	(fmt.indexOf('h')>=0)
		||
		(fmt.indexOf('H')>=0)	  
	)
	{
	var ora=eval(str+'h');
	if(ora.selectedIndex==0) return false;
	}
if  (fmt.indexOf('m')>=0)
	{
	var min=eval(str+'mi');
	if(min.selectedIndex==0) return false;
	}
if  (fmt.indexOf('s')>=0)
	{
	var sec=eval(str+'s');
	if(sec.selectedIndex==0) return false;
	}	
return true;
}
function checkdatetime(str,fmt)
{
if(!checkdate(str))return false;
var parts=fmt.split('|');
if(!checkTime(str,parts[2]))return false;
return true;
}
function checkdate(str)
{
eval('mon='+str+'m;');
var i = mon.selectedIndex;
eval('zday='+str+'d;');
eval('zyear='+str+'y;');
var j = zyear.selectedIndex;
var ok=true;
if(mon.options[i].value == "02") {
    zday.options[31] = null;
    zday.options[30] = null;
    var j = zyear.selectedIndex;
    var year = eval(zyear.options[j].value);
    if ( ((year%400)==0) || (((year%100)!=0) && ((year%4)==0)) ) {
      if (zday.options[29] == null) {
        zday.options[29] = new Option("29");
        zday.options[29].value = "29";
      }
    } else {
      zday.options[29] = null;
    }
   }
if(mon.options[i].value == "01" ||
     mon.options[i].value == "03" ||
     mon.options[i].value == "05" ||
     mon.options[i].value == "07" ||
     mon.options[i].value == "08" ||
     mon.options[i].value == "10" ||
     mon.options[i].value == "12")
  {
    if (zday.options[29] == null) {
      zday.options[29] = new Option("29");
      zday.options[29].value = "29";
    }
    if (zday.options[30] == null) {
      zday.options[30] = new Option("30");
      zday.options[30].value = "30";
    }
    if (zday.options[31] == null) {
      zday.options[31] = new Option("31");
      zday.options[31].value = "31";
    }
  }
  if(mon.options[i].value == "04" ||
     mon.options[i].value == "06" ||
     mon.options[i].value == "09" ||
     mon.options[i].value == "11")
  {
    if (zday.options[29] == null) {
      zday.options[29] = new Option("29");
      zday.options[29].value = "29";
    }
    if (zday.options[30] == null) {
      zday.options[30] = new Option("30");
      zday.options[30].value = "30";
    }
    zday.options[31] = null;
  }
  if (zday.selectedIndex == -1)
   { zday.selectedIndex = 0;}
   if((j*i*zday.selectedIndex)==0)
{
        return false;
}
  return isDate(zday.options[zday.selectedIndex].value,mon.options[mon.selectedIndex].value,zyear.options[zyear.selectedIndex].value);
}
function set2today(str)
{
eval('mon='+str+'m;');
eval('zday='+str+'d;');
eval('zyear='+str+'y;');
var mydate = new Date();
mon.selectedIndex = mydate.getMonth()+1;
zday.selectedIndex = mydate.getDate();
zyear.selectedIndex = 1;
checkdate(str);
}
function set2date(str,d,m,y)
{
eval('mon='+str+'m;');
eval('zday='+str+'d;');
eval('zyear='+str+'y;');
mon.selectedIndex = d+1;
zday.selectedIndex = m+1;
zyear.selectedIndex = y+1;
checkdate(str);
}
function resetdate(str)
{
eval('mon='+str+'m;');
eval('zday='+str+'d;');
eval('zyear='+str+'y;');
mon.selectedIndex = 0;
zday.selectedIndex = 0;
zyear.selectedIndex = 0;
checkdate(str);
}
// these funx are for multi line text field size check and counter, NOT USED AT THE MOMENT
/*function name2obj(name)
{
str='obj=document.forms[0].'+name;// not netscape friendly yet
eval(str);
return obj;
}
function stop(name)
{
str='clearTimeout('+name+'Count);';
eval(str);
}
function startCount(name,len)
{
mess=name2obj(name);
tot=name2obj(name+'Tot');
if (mess.value.length>Math.abs(len)) mess.value=mess.value.substring(0,Math.abs(len));
if (len>0) {tot.value=mess.value.length;} else {tot.value=Math.abs(len) - mess.value.length;}
str=name+"Count=setTimeout(\"startCount('"+name+"',"+len+")\",1000)";
eval(str);
}*/
////////////////////////////////////////////////////////////////////////////////////////
