function str_pos(s, substr) {
	return s.indexOf(substr);
}

function getFormObj(formName) {

        if(document.forms.length<1) {

            alert('ATTENZIONE: la form con il nome specificato non esiste nel documento');

        }

        for(var i=0; i<document.forms.length; i++)
        {
    	    if(document.forms[i].name == formName) {

    	         return(document.forms[i]);

    	    }
        }
}

function getObjInForm(formObj, nameObj) {

        if(formObj.elements.length<1) {

            alert('ATTENZIONE: errore getObjInForm(formObj); la form ' + formObj.name + ' non contiene elementi');

        }

        for(var i=0; i<formObj.elements.length; i++) {

             if(formObj.elements[i].name == nameObj) {

                  return (formObj.elements[i]);

             }

	}
}

function getComboText(formObj, comboName) {
	 comboObj = getObjInForm(formObj, comboName);

	 return(comboObj.options[comboObj.selectedIndex].text);
}

function getComboValue(formObj, comboName) {
	 comboObj = getObjInForm(formObj, comboName);

	 return(comboObj.options[comboObj.selectedIndex].value);
}


function popolaCombo(n1,n2,nstep) {
  for(var i=n1; i<=n2; i+=nstep)
    document.write("<option>" + i + "</option>");
}

function midString(s, startPos, numChars) {
        var buf = '';
        var charsKept = 0;

   	if(s.length<1)
   	    return s;
   	for (var i=0; i<s.length; i++) {
            if(charsKept>=numChars)
            	return buf;
            if(i>=(startPos-1)) {
                buf += s.charAt(i);
                charsKept++;
            }
        }
        return buf;
}

function leftUntil(s, delimiter) {
        var buf = '';

   	if(s.length<1)
   	    return s;
   	for (var i=0; i<s.length; i++) {
            if(s.charAt(i)!=delimiter.charAt(0))
                buf += s.charAt(i);
            else
                return buf;
        }
        return buf;
}

function excludeAtRightInclusive(s, s_exclude) {
     var buf, j, idx_exclude;

     buf='';
     idx_exclude = s.indexOf(s_exclude);
     if(idx_exclude>-1) {
         for (j=0; j<idx_exclude; j++) {
              buf += s.charAt(j);
         }
         return buf;
     }
     else { return s; }
     return s;
}

function str_rev(s) {
   var buf = '';
   if(s.length<1)
       return s;
   for(var i=s.length-1;i>-1;i--)
       buf += s.charAt(i);
   return(buf);
}

function isStringOf(checkStr, checkOK) {
     var allValid = true;
     var i, j, ch;

     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;
        }
     }
     if (!allValid)
        return (false);
     return (true);
}

function de_punteggia(s) {
     var aux = '';
     if(s.length<1)
         return s;
     for (var i=0; i<s.length; i++) {
         if((s.charAt(i)!='.')&&(s.charAt(i)!=','))
              aux = aux + s.charAt(i);
     }
     return(aux);
}

function punteggia(s) {
   var aux = '';

   if(s.length<1)
       return s;
   s = str_rev(s);
   for (var i=0; i<s.length; i++) {
       if( (((i+1) % 3) == 0) && (i!=s.length-1) )
           aux = aux + s.charAt(i) + '.';
       else
           aux = aux + s.charAt(i);
   }
   return str_rev(aux);
}

function Dot2Comma(s) {
   var aux = '';

   if(s.length<1)
       return s;

   for (var i=0; i<s.length; i++) {
       if(s.charAt(i)=='.')
       	    aux = aux + ',';
       else
	    aux = aux + s.charAt(i);
   }
   return aux;
}

function Comma2Dot(s) {
   var aux = '';

   if(s.length<1)
       return s;

   for (var i=0; i<s.length; i++) {
       if(s.charAt(i)==',')
       	    aux = aux + '.';
       else
	    aux = aux + s.charAt(i);
   }
   return aux;
}

function formatDecimalNum(number) {
	xNumber = parseInt(number * 100) - parseInt(number) * 100;

        return parseInt(number) + '.' + xNumber;
}


function isNum(str) {
    return(isStringOf(str, '0123456789'));
}

function isNumX(str, extension_chars) {
    return(isStringOf(str, '0123456789' + extension_chars));
}


function isAlnum(str) {
    return(isStringOf(str, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'));
}

function isAlnum(str, extension_chars) {
    return(isStringOf(str, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' + extension_chars));
}


function isAlpha(str) {
    return(isStringOf(str, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'));
}

function isAlphaX(str, extension_chars) {
    return(isStringOf(str, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' + extension_chars));
}

function ChkTxt(contenuto, minlength, maxlength, tipo) {
    if(contenuto.length<minlength)
        return(-1);

    if(contenuto.length>maxlength)
        return(-2);

    if(tipo.toLowerCase()=='any') 
        return(0);
    else if(tipo.toLowerCase()=='alpha') {
        if(!isAlpha(contenuto))
            return(-3);
    }
    else if(tipo.toLowerCase()=='num') {
        if(!isNum(contenuto))
            return(-4);
    }
    else if(tipo.toLowerCase()=='alnum') {
        if(!isAlnum(contenuto))
            return(-5);
    }
    else if(tipo.toLowerCase()=='alnumx') {
        if(!isAlnum(contenuto, ' '))
            return(-6);
    }
    else if(tipo.toLowerCase()=='mail') {
        if(!isEmail(contenuto))
            return(-7);
    }    
    else if(!isStringOf(contenuto, tipo)) {
        return(-999);
    }

    return(0);
}

function isValidDomain(str) {
    if((str.length>2) && (str.length<64) && (isAlphaX(str, '-')))
        return(true);
    return(false);
}

function isEmail(str) {
  var pass = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) pass = 1;
  }
  if (!pass)
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\}\\~]*[a-zA-Z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\}\\~]\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}

function isIEBrowserMin4() {
    var isMinIE4 = (document.all) ? 1 : 0;
    if(isMinIE4>0)
        return(true);
}

function isIEBrowserMin5() {
    var isMinIE5 = (isMinIE4 && navigator.appVersion.indexOf("5.") >= 0) ? 1 : 0;
    if(isMinIE5>0)
        return(true);
}

function isNSBrowserMin4() {
    var isMinNS4 = (navigator.appName.indexOf("Netscape") >= 0 && parseFloat(navigator.appVersion) >= 4) ? 1 : 0;
    if(isMinNS4>0)
        return(true);
}

function isNS() {
    return(isNSBrowserMin4());
}

function isIE() {
    return(isIEBrowserMin4()||isIEBrowserMin5());
}

function strToUpper(s) {
    return(s.toUpperCase());
}

function strToLower(s) {
    return(s.toLowerCase());
}

