var wf=new Object()
if (document.all)
    wf.all=true
else
    {
    wf.all=false
    if (document.getElementsByTagName("*").length>0)
        document.all = document.getElementsByTagName("*")
    }
if (navigator.userAgent.indexOf("Mac") >=0)
    wf.mac=true
else
    wf.mac=false
wf.version=0
if (navigator.appVersion.indexOf("MSIE") >= 0)  
    {    
    wf.IE=true
    wf.version=parseFloat(navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE")+5,navigator.appVersion.indexOf("MSIE")+10))
    }
else
    wf.IE=false
if (!wf.IE && (navigator.appVersion.indexOf("Mozilla") >= 0 || navigator.userAgent.indexOf("Firefox") >= 0 ))  
//if (navigator.appVersion.indexOf("Mozilla") >= 0)  
    {    
    wf.NS=true
    wf.version=parseFloat(navigator.appVersion.substring(navigator.appVersion.indexOf("Mozilla")+8,navigator.appVersion.indexOf("MSIE")+13))
    }
else
    wf.NS=false

function getElementByNameDOM(o,s)
{
var i

for (i=0;i<o.length;i++)
    if (o(i).name==s)
        return o(i)
}

function Clear(sFormName)
{
var f
var s

f = document.forms(sFormName);
for (i=0;i<f.elements.length;i++)
    {
    var el = f.elements(i);
    if (el.name.substring(0,6)=="QUERY_")
        {
        if (!s)
            s=el
        if (el.type=="checkbox")    
            el.checked=false
        else
            el.value=""        
        }
    if (el.name.substring(0,6)=="HCLEAR")
        el.value="ON"
    
    }
s.focus()
}

function Validate(sFormName)
{
var f;
var vCfr;
var lbl
var i,j
var o,o1
var prefix ="FIELD_"
var el2
var el3
var el
var s
var bVuoto,aC

if (sFormName=="SELEZIONE")
    prefix="QUERY_"
var f
var msg=""
f=document.forms(sFormName)
    
window.status="Validazione pagina in corso........"    
    
// DOM
if (wf.IE) 
    {
    o=new Array
    j=0
    for (i=0;i<f.length;i++)
        {
        if (f(i).tagName=="INPUT" || f(i).tagName=="SELECT" || f(i).tagName=="TEXTAREA")
            {
            o[j]=f(i)
            j=j+1
            }
        }
    // ??? test se PARENT (sFormName) è OK
    // ATTENZIONE: Tutta la storia si basa sulla presenza di campi HIDDEN
    // successivi a quello da controllare 
    for (i=0;i<o.length;i++)
        {
        el = o[i];
        if (el.name.substring(0,prefix.length)==prefix)
            {
            // viene salvato l'elemento da controllare
            el2=el
            if (el2.value=="*ERR*")
                el2.value=""
            }
        else
        /* ??? manca test nel caso di LISTMODIFY se DELETE_n é attivo (<>"") nel
            qual caso non si devono effettuare controlli */
            // elemento hidden si attiva il controllo
            {
            // required sempre
            // alert(el.name)
            if (el.name.substring(0,3)=="X6_")
                lbl=el.value
            else if (el.name.substring(0,9)=="REQUIRED_")
                {
                if (el2.tagName=="SELECT")
                    {
                    if (el2!=null)
                        {
                        if (el2.value == "null")
                            {
                            msg="Il campo di selezione " + lbl + " non può essere vuoto!"
                            break
                            }
                        }

                    }
                else            
                    {
                    if (trim(el2.value) == "")
                        {
                        msg="Il campo " + lbl + " non può essere vuoto!"
                        break       
                        }
                    }
                }
// altri casi se passa il required
            else if (el.name.substring(0,5)=="DATE_")
                {
                if (el2!=null)
                    {
                    s = formatdate(el2.value)
                    if ( !testdate(s))
                        {
                        msg="Il campo " + lbl + " non contiene una data accettabile!"
                        break
                        }
                    else
                        el2.value=s
                    }
                }

            else if (el.name.substring(0,9)=="DATETIME_")
                {
                if (el2!=null)
                    {
                    s=el2.value
                    if (s=='')
                        continue
                    aC=s.split(' ') 
                    if (aC.length>2)
                        {
                        msg="Il campo " + lbl + " non contiene una data/orario accettabile Controllare i separatori della data!"
                        break
                        }
                    else
                        {
                        s = formatdate(aC[0])
                        if (!testdate(s))
                            {
                            msg="Il campo " + lbl + " non contiene una data accettabile!"
                            break
                            }
                        else
                            {
                            el2.value=s
                            if (aC.length=2)
                                {
                                s = formattime(aC[1])
                                if (!testtime(s))
                                    {
                                    msg="Il campo " + lbl + " non contiene un orario accettabile!"
                                    break
                                    }
                                el2.value = el2.value + ' ' + s
                                }
                            }
                        }
                    }
                }
            else if (el.name.substring(0,4)=="SEX_")
                {
                s = el2.value.toUpperCase();
                if ( s != "M" && s != "F" && s!="")
                    {
                    msg="Il campo " + lbl + " deve contenere M o F!"
                    break
                    }
                }
            else if (el.name.substring(0,3)=="XN_")
                {
                if (el2.value!="")
                    {
                    el2.value=el2.value.replace(/[\,]/,".")
                    if (isNaN(el2.value))
                        {
                        msg="Il campo " + lbl + " non è numerico!"
                        break
                        }
                    }
                }
            else if (el.name.substring(0,6)=="EMAIL_")
                {
                if (el2.value!="")
                    {
                    if (! validateMail(el2.value))
                        msg="Il campo " + lbl + " non contiene un indirizzo EMAIL accettabile!"
                        break;
                    }
                }

            else if (el.name.substring(0,9)=="SIGLARAC_")
                {
                //el2=f(prefix + el.name.substring(9,100))
                s = el2.value.toUpperCase();
                if (s != "")
                    // ??? ci vorrebbe un trim
                    if (s.substring(0,1)<"A" || s.substring(0,1)>"Z")
                        {
                        msg="Il campo " + lbl + " non contiene una sigla volontario!"
                        break
                        }

                }
            }
        }



    }
window.status=""
if (msg!="")
    {
    window.status="Errore!"
    alert(msg);
    if (el2.type!="hidden")
        el2.focus();
    window.status=""
    return false;
    }
else
    return true;
}

function isNumeric(str)
{
  for (var i=0; i < str.length; i++)
        {
    var ch = str.substring(i, i+1)
    if( ch < "0" || ch>"9" || str.length == null)
                {
      return false
    }
  }
  return true
}   


function formatdate(v)
{
var g
var m
var aC

    if (v=='' || v.length==0)
        return ("");
    aC=v.split("/")
    if (aC.length!=3)
        aC=v.split("-")
    if (aC.length!=3)
        aC=v.split(".")
    if (aC.length!=3)
        aC=v.split(" ")
    if (aC.length!=3)
        return ("??/??/????");
    g="00"+aC[0]
    m="00"+aC[1]
    if (aC[2].length==2)
        if (aC[2]>"50")
            aC[2]="19"+aC[2] 
        else
            aC[2]="20"+aC[2] 
    if (aC[2].length==1)
        aC[2]="200" + aC[2]
    return g.substr(g.length-2,2)+"/"+m.substr(m.length-2,2)+"/"+aC[2]
}

function testdate(v)
{
var g
var m
var a
var maxg
var aC

    if (v=="")
        return true
    aC=v.split("/")
    if (aC.length!=3)
        return false
    if (aC[2].length==3)
        return false
    if (!isNum(aC[0],0) || !isNum(aC[1],0) || !isNum(aC[2],0))
        return false
    g=parseInt(aC[0],10)
    m=parseInt(aC[1],10)
    a=parseInt(aC[2],10)
    if (isNaN(g) || isNaN(m) || isNaN(a))
        return false
    if (m<1 || m>12)
        return false
    maxg = 31
    if (m==4 || m==6 || m==9 || m==11)
        maxg=30
    if (m==2)
        {   
        if ((a % 4 == 0 && a % 100 != 0) || a % 1000 == 0)
            maxg = 29
        else
            maxg = 28
        }    
    if (g<1 || g>maxg)
        return false
    if (a<1 || (a>99 && a<1900) || a>2100)
        return false
    return true;
}

function showDlg(sText,nType)
{
// nType=0 msgbox
// nType=1 OK CANCEL Ritorna True se OK false altrimenti
var a = new Array(sText);
if (window.showModalDialog("../msgbox.asp",a,"dialogHeight:10")==1)
    return true
else
    return false
}

function makeValue(s,f,v,type)
{
    if (v!="")
        {               
        if (s!="")
            s = s + ","
        s = s + f + "="
        if (type=="N")
            s = s + v
        else
            s = s + "'" + TestApici(v) + "'"
        }
    return s
}

function TestApici(v)
{
var s
var i=0
    
    s=v
    while (true)
        {
        i=s.indexOf("'",i)
        if (i<0)
            break
        s=s.substr(0,i+1)+s.substr(i)
        i=i+2
        }
    return s
    
}


function GetCookie (name) {  
var arg = name + "=";  
var alen = arg.length;  
var clen = document.cookie.length;  
var i = 0;  

while (i < clen) {    
var j = i + alen;    
if (document.cookie.substring(i, j) == arg)      
return getCookieVal (j);    
i = document.cookie.indexOf(" ", i) + 1;    
if (i == 0) break;   
}  
return null;
}

function DeleteCookie (name) {  
var exp = new Date();  
exp.setTime (exp.getTime() - 1);  
var cval = GetCookie (name);  
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

function getCookieVal(offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

function setDate(sName,nType)
{
var aC
var s
if (document.all(sName).value=="")
    return ("")
if (nType==0)
    {   
    document.all(sName).value=formatdate(document.all(sName).value)
    }
else
    {
    s = document.all(sName).value=formatdate(document.all(sName).value)
    document.all(sName).value=s.substr(2,2)+"/"+s.substr(0,2)+"/"+s.substr(5,4)
    }
}

function setBool(sName,nType)
{
var v

if (nType==0)
    document.all(sName).outerHTML="<input type=checkbox name=" + sName + (document.all(sName).value!=0?" checked":"")+">"
else
    {
    if (document.all(sName).type=="checkbox")
        v=document.all(sName).checked
    else
        v=(document.all(sName).value!=0)
    document.all(sName).outerHTML="<input type=text value=" + (v?"1":"0") + "name=" + sName + ">"
    }
}

function sostSpaces(s)
{
var i
var s1=""

for (i=0;i<s.length;i++)
    if (s.charAt(i)==" ")
        s1 = s1 + "%20"
    else
        {
        if (s.charAt(i)=="&")
            s1 = s1 + "%26"
        else
            {
            if (s.charAt(i)=="%")
                s1 = s1 + "%25"
            else
                {
                if (s.charAt(i)=="<")
                    s1 = s1 + "%3C"
                else
                    {
                    if (s.charAt(i)==">")
                        s1 = s1 + "%3E"
                    else
                        s1 = s1 + s.charAt(i)
                    }
                }   
            }
        }

return (s1)
}

function round(n, d) 
{
  d = d || 2  // default to 2 decimal places
  return Math.round(n * Math.pow(10,d)) / Math.pow(10,d)
}
 
 
function formatCurrency(num,nDec,sepDigit,decDigit,symbol) 
{

symbol = "L."
sepDigit = "."
decDigit=","
nDec=0


    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num)) 
        num = "0";
    cents = Math.floor((num*100+0.5)%100); 
    num = Math.floor(num).toString();
    if(cents < 10) 
        cents = "0" + cents; 
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
        num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3)); 
    return ('$' + num + '.' + cents); 
}

function validateMail(emailad) {

var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
var check=/@[\w\-]+\./;
var checkend=/\.[a-zA-Z]{2,3}$/;

    if(((emailad.search(exclude) != -1)||(emailad.search(check)) == -1)||(emailad.search(checkend) == -1))
        {
        //alert("Indirizzo email errato!");
        return false
        }
    return true
}

function right(s,c,l)
{
var i
for (i=0;i<l;i++)
    s = c + s
return s.substr(s.length-l)
}

function isNum(v,opz)
{
var i
var c
for (i=0;i<v.length;i++)
    {
    c = v.charAt(i)
    if (c!=" " && (c<"0" || c>"9"))
        return false
    }
return true    
}

function testInput(evt,sType)
{
var c

if (wf.all)  // MS
    c=evt.keyCode
else
    c=evt.which
//window.status = sType+ " Press " + c + ", character=" + String.fromCharCode(c)
c=String.fromCharCode(c)
if (sType=="DATE")
        if ("0123456789/- ".indexOf(c)<0)
            {
            evt.keyCode=0
            return false
            }
if (sType=="NUMBER")
        if ("0123456789-".indexOf(c)<0)
            {
            evt.keyCode=0
            return false
            }

if (sType=="MONEY")
    {        
        if (c==",")
            {
            // si accetta solo il . 
            evt.keyCode=46
            return true
            }
        if ("0123456789.,-".indexOf(c)<0)
            {
            evt.keyCode=0
            return false
            }    
    }
if (sType=="VOID")
//??? non si intercettano BS e CANC
        {
        evt.keyCode=0
        return false
        }
return true
}

function formattime(v)
{
var h
var m
var aC

    if (v=="" || v==undefined)
        return ("");
    aC=v.split(":")
    if (aC.length!=2)
        aC=v.split(".")
    if (aC.length!=2)
        return ("??:??");
    h="00"+aC[0]
    m="00"+aC[1]
    return h.substr(h.length-2,2)+":"+m.substr(m.length-2,2)
}

function testtime(v)
{
var h
var m
var aC

    if (v=="")
        return true
    aC=v.split(":")
    if (aC.length!=2)
        return false
    if (!isNum(aC[0],0) || !isNum(aC[1],0) )
        return false
    h=parseInt(aC[0],10)
    m=parseInt(aC[1],10)
    if (isNaN(h) || isNaN(m))
        return false
    if (m<0 || m>59)
        return false
    if (h<0 || h>23)
        return false
    return true;
}

function trim(s)
{
while(''+s.charAt(s.length-1)==' ')
    s=s.substring(0,s.length-1);
while(''+s.charAt(1)==' ')
    s=s.substring(1,s.length-1);
return s
}

var oldCols
var arrMenuImg=new Array()
arrMenuImg[0]=new Image()
arrMenuImg[0].src="/include/images/allargafinestra.gif"
arrMenuImg[1]=new Image()
arrMenuImg[1].src="/include/images/restringifinestra.gif"

function frmCompatta(frmName,evt)
{
var i
var s
var w

//alert(parent.document.all["USERS"].cols)
if (wf.all)
    evt=event.srcElement
if (parent[frmName])
    w=parent[frmName]
else
    w=parent.document.all[frmName]
var aC=w.cols.split(",")
if (!oldCols)
    oldCols=w.cols
if (aC[0]>25)
    {
    aC[0]=25
    evt.src=arrMenuImg[0].src
    }
else
    {
    w.cols=oldCols
    evt.src=arrMenuImg[1].src
    return
    }
s=""
for (i=0;i<aC.length;i++)
    {
    if (s!="")
        s=s+","
    s=s+aC[i]
    }   
w.cols=s
}

