/*****************************************************************************
 ***                                                                       ***
 *** JavaScript standardfunktioner.                                        ***
 ***                                                                       ***
 *****************************************************************************/


var enterAsSubmit = false;
var stdymdformat = "yyyy-mm-dd";
var stdymformat  = "yyyy-mm";
var stddatesep  = "-";
var stderrmsg1 = "Ogiltigt datum.";
var stderrmsg2 = "Ogiltigt datum.\nAnge datum på formen ÅÅÅÅ-MM-DD.";
var stderrmsg3 = "Ogiltigt årtal.";
var stderrmsg4 = "Ogiltigt klockslag.";
var stderrmsg5 = "Ogiltigt klockslag.\nAnge tid på formen HH:MM.";
var stderrmsg6 = "Ogiltigt heltal.";
var stderrmsg7 = "Ogiltigt positivt heltal.";
var stderrmsg8 = "Ogiltigt tal.";
var stderrmsg9 = "Ogiltig period.";
var stderrmsgA = "Ogiltig period.\nAnge period på formen ÅÅÅÅ-MM.";

function i18nStandard(ymd,
                      msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8) {
var ym;

   if(ymd="dmy") { stddatesep="." } /* Norwegian */

   stdymdformat = ymd.substr(0,1) + "-" + ymd.substr(1,1) + "-" + ymd.substr(2,1);
   stdymdformat = stdymdformat.replace("y","yyyy").replace("m","mm").replace("d","dd");

   ym = ymd.replace("d","");
   stdymformat = ym.substr(0,1) + "-" + ym.substr(1,1);
   stdymformat = stdymformat.replace("y","yyyy").replace("m","mm");

   stderrmsg1 = msg1;
   stderrmsg2 = msg2;
   stderrmsg3 = msg3;
   stderrmsg4 = msg4;
   stderrmsg5 = msg5;
   stderrmsg6 = msg6;
   stderrmsg7 = msg7;
   stderrmsg8 = msg8;
}

function handleEnterAsSubmit(val)
{
    enterAsSubmit=val;
}



/*
**
** Aktivera objektet sObj.
**
** IN: sObj - objekt i formulär, format "form.object".
** UT: 
**
*/
function doFocus(sObj) {
    eval("document."+sObj+".focus()");
}



/*
**
** Sätt URL i nuvarande fönster till sNewLoc.
**
** IN: sNewloc - URL från rooten.
** UT: 
**
*/
function setLocation(sNewloc) {
    window.location=sNewloc;
}



/*
**
** Öppna hjälpfönster
**
** IN: sHelppage
** UT: 
**
*/
function openHelp(sHelppage) {
var oWin;

    oWin=window.open(sHelppage,"WeblordHjälp","width=600,height=600,directories=no,location=no,menubar=no,"+
                                              "status=no,toolbar=no,resizable=yes,scrollbars=yes");
    if(oWin&&oWin.focus) oWin.focus();
}



/*
**
** Öppna datahjälpfönster
**
** IN: sDatahelppage
** UT: 
**
*/
function openDatahelp(sDatahelpPage) {
var oWin;

    oWin=window.open(sDatahelpPage,"WeblordAlternativ","width=500,height=400,directories=no,location=no,menubar=no,"+
                                                       "status=no,toolbar=no,resizable=yes,scrollbars=yes");
    if(oWin&&oWin.focus) oWin.focus();
}



/*
**
** Öppna rapportfönster
**
** IN: sReportPage
** UT: 
**
*/
function openReport(sReportPage) {
var oWin;

    oWin=window.open(sReportPage,"WeblordRapport","width=600,height=600,directories=no,location=no,menubar=no,"+
                                                  "status=no,toolbar=no,resizable=yes,scrollbars=yes");
    if(oWin&&oWin.focus) oWin.focus();
}



/*
**
** Öppna generellt fönster
**
** IN: sURL, sTitel, iW, iH
** UT: 
**
*/
function openWin(sURL,sTitel,iW,iH) {
var oWin;

    oWin=window.open(sURL,sTitel,"width="+iW+",height="+iH+",directories=no,location=no,menubar=no,"+
                                 "status=no,toolbar=no,resizable=yes,scrollbars=yes");
    if(oWin&&oWin.focus) oWin.focus();
}



/*
**
** Öppna katalog (explorer)-fönster
**
** IN: sURL, sTitel, iW, iH
** UT: 
**
*/
function openDir(sURL,sTitel,iW,iH) {
var oWin;

    oWin=window.open(sURL,sTitel,"width="+iW+",height="+iH+",directories=yes,location=yes,menubar=yes,"+
                                 "status=yes,toolbar=yes,resizable=yes,scrollbars=yes");
}



/*
**
** Se till att sidan ligger i _TOP
**
** IN: sURL - URL från rooten.
** UT: 
**
*/
function topLoad(sUrl) {
    if(window!=window.top && window.name!="WeblordMain") {
        parent.location.href = sUrl;
    }
    if(window.opener && window.name!="WeblordMain") {
        window.opener.location.href = sUrl;
        window.close();
    }
}



/*
**
** Funktion för att lägga till alla avstängda (DISABLED) fält i URL-raden
** för att även de ska skickas till mottagarsidan.
**
** IN: sForm - Namn på formuläret.
** UT: 
**
*/
function addReadonlyFields(formName)
{
var a,b,obj,parts,objType,disabList;

    disabList="";
    for(a=0;document.forms(formName).elements(a);a++) {
        obj=document.forms(formName).elements(a); objType=obj.type;
        if(obj.disabled) {
            if(objType!="submit" && objType!="reset" && objType!="button" &&          /* Ta inte med tryckknappar */
               (objType!="checkbox" || (objType=="checkbox" && obj.checked==true))) { /* Ta endast med ibockade checkboxar */
                if(objType=="select-multiple") {
                    for(b=0;b<obj.length;b++) {
                        if(obj.options[b].value && obj.options[b].selected) {
                            if(disabList!="") disabList+="&";
                            disabList+=obj.name+"="+escape(obj.options[b].value);
                        }
                    }
                } else {
                    if(obj.value) {
                        if(disabList!="") disabList+="&";
                        disabList+=obj.name+"="+escape(obj.value);
                    }
                }
            }
        }
    }

    if(disabList!="") {
        parts=document.forms(formName).action.split("?");       /* Se till att rensa bort ev. gamla parametrar,          */
        document.forms(formName).action=parts[0]+"?"+disabList; /* annars blir det dubbelt om formuläret skickats innan. */
    }
}



/*
**
** Funktion för att hämta ett fromulärs fältvärden
**
** IN: formName - Namn på formuläret.
** UT: 
**
*/
function getState(formName)
{
var a,b,obj,parts,objType,stateList;

    stateList="";
    for(a=0;document.forms(formName).elements(a);a++) {
        obj=document.forms(formName).elements(a); objType=obj.type;
        if(!obj.disabled) {
            if(objType!="submit" && objType!="reset" && objType!="button" &&          /* Ta inte med tryckknappar */
               (objType!="checkbox" || (objType=="checkbox" && obj.checked==true))) { /* Ta endast med ibockade checkboxar */
                if(objType=="select-multiple") {
                    for(b=0;b<obj.length;b++) {
                        if(obj.options[b].value && obj.options[b].selected) {
                            if(stateList!="") stateList+="&";
                            stateList+=obj.name+"="+escape(obj.options[b].value);
                        }
                    }
                } else {
                    if(obj.value) {
                        if(stateList!="") stateList+=";";
                        stateList+=obj.name+",,,,,,"+escape(obj.value);
                    }
                }
            }
        }
    }

    return(stateList);
}



/*
**
** Funktion för att hantera knapptryckningar på formulär (ESC,F4,F5,...)
** Skickar sedan vidare till lokalt definerad funktion handleKeyEvent() om den finns.
**
** IN: 
** UT: 
**
*/
function dispatchKeyEvent() {
var obj;

    if(event.keyCode==27) { /* ESC */
        if(window.resetForm) {
            event.keyCode=0; event.returnValue=false; event.cancelBubble=true;
            resetForm();
            return false;
        }
    }
    if(event.keyCode==115) { /* F4 */
        event.keyCode=0; event.returnValue=false; event.cancelBubble=true;

        obj=event.srcElement;
        if(obj.tagName=="INPUT" && obj.onsearch) {
            obj.fireEvent("oncontextmenu");
            return false;
        }
    }
    if(event.keyCode==116) { /* F5 */
        if(window.submitForm) {
            event.keyCode=0; event.returnValue=false; event.cancelBubble=true;
            submitForm();
            return false;
        }
    }

    if(enterAsSubmit) { /* ENTER */
        if(window.submitForm) {
            if(event.keyCode==13) {
                if(event.srcElement) {
                    if(event.srcElement.tagName) {
                        if(!(event.srcElement.tagName.toUpperCase()=="TEXTAREA")) {
                            submitForm();
                            return false;
                        } else {
                            /* Don't submit if this is a TEXTAREA-element */
                        }
                    } else {
                        submitForm();
                        return false;
                    }
                } else {
                    submitForm();
                    return false;
                }
            }
        }
    }

    if(window.handleKeyEvent) window.handleKeyEvent()
}



/*
**
** Funktion för att zooma standardsökresultatsrutan i sökformulär.
**
** IN: 
** UT: 
**
*/
function resizeSearchResult()
{
var newHeight;

    newHeight=document.body.clientHeight-document.getElementById("divSearchResult").offsetTop-document.getElementById("divWeblordIcon").offsetHeight-5;
    if(newHeight<100) newHeight=100;
    document.getElementById("divSearchResult").style.height=newHeight+"px";
}



/*
**
** Funktion för att zooma rapportfönstrets storlek till innehållets höjd/bredd.
**
** IN: 
** UT: 
**
*/
function resizeReportToFit()
{
var iWidth,iHeight;

    iWidth=document.getElementById("tableReport").offsetWidth-(document.body.clientWidth)+20;
    iHeight=document.getElementById("tableReport").offsetHeight-(document.body.clientHeight)+20;

    /* Begränsa till max 1000x700 för 1024x768 skärmupplösning. */
    if(document.body.clientWidth+iWidth>1000)  iWidth=1000-document.body.clientWidth;
    if(document.body.clientHeight+iHeight>700) iHeight=700-document.body.clientHeight;

    window.resizeBy(iWidth,iHeight);
}



/*
**
** Funktion för att zooma formuärfönstrets storlek till innehållets höjd/bredd.
**
** IN: 
** UT: 
**
*/
function resizeFormToFit()
{
var iWidth,iHeight;

    iWidth=document.getElementById("tableForm").offsetWidth-(document.body.clientWidth)+20;
    iHeight=document.getElementById("tableForm").offsetHeight-(document.body.clientHeight)+20;

    /* Begränsa till max 1000x700 för 1024x768 skärmupplösning. */
    if(document.body.clientWidth+iWidth>1000)  iWidth=1000-document.body.clientWidth;
    if(document.body.clientHeight+iHeight>700) iHeight=700-document.body.clientHeight;

    window.resizeBy(iWidth,iHeight);
}




/*
**
** Funktion för att zooma datahelpfönstrets storlek till innehållets höjd/bredd.
**
** IN: 
** UT: 
**
*/
function resizeDatahelpToFit()
{
var iWidth,iHeight;

    iWidth=document.getElementById("dlghelpTable").offsetWidth-(document.body.clientWidth)+20;
    iHeight=document.getElementById("dlghelpTable").offsetHeight-(document.body.clientHeight)+20;

    /* Begränsa till max 1000x700 för 1024x768 skärmupplösning. */
    if(document.body.clientWidth+iWidth>1000)  iWidth=1000-document.body.clientWidth;
    if(document.body.clientHeight+iHeight>700) iHeight=700-document.body.clientHeight;

    window.resizeBy(iWidth,iHeight);
}




/*
**
** Funktion för att tömma alla fält i ett formulär (utom gömda förinställda).
**
** IN: 
** UT: 
**
*/
function clearFormElements(formName)
{
var a,b,obj,objType;

    for(a=0;document.forms(formName).elements(a);a++) {
        obj=document.forms(formName).elements(a); objType=obj.type;
        if((objType!="hidden" && !obj.disabled) || (obj.id.substr(obj.id.length-4,4)=="namn" || obj.id.substr(obj.id.length-4,4)=="Namn")) {
            if(objType=="file" || objType=="password" || objType=="text" || objType=="textarea") obj.value="";
            if(objType=="select") obj.selectedIndex=0;
            if(objType=="select-multiple") {
                for(b=0;b<obj.length;b++) obj.options[b].selected=false;
            }
            if(objType=="checkbox") obj.checked=false;
        }
    }
}




/*
**
** Funktioner för inkrementell sökning i formulärfält.
**
** IN: 
** UT: 
**
*/
function doIncrSearch(sInput,sSrchURL)
{
var oINPUT = document.all(sInput);
var oDIV   = document.all('divIncrSearch');
var oFRM   = document.frames('frmIncrSearch');
var oObj,iX,iY;

    if(oINPUT && oINPUT.value.length>0) {
        oObj=oINPUT;

        iX=0; iY=oObj.clientHeight;
        while(oObj) {
            iX+=oObj.offsetLeft+oObj.clientLeft; iY+=oObj.offsetTop+oObj.clientTop;
            oObj=oObj.offsetParent;
        }
        iX-=2; iY+=1;

        oDIV.style.left=iX; oDIV.style.top=iY;
        oDIV.style.width=oINPUT.clientWidth+20; oDIV.style.height=55;
        oDIV.style.display="block";

        if(oINPUT && oINPUT.value.length>0) {
            oFRM.location.href=sSrchURL + "&minwidth=" + (oINPUT.clientWidth);
        }
    } else {
        oFRM.location.href='about:blank';
        oDIV.style.display="none";
    }
}

function cancelIncrSearch(ev)
{
var mouseX,mouseY;
var oDIV = document.all('divIncrSearch');
var oFRM = document.frames('frmIncrSearch');

    /* Kolla om muspekaren är inom hjälprutan... göm den då inte! */

    mouseX=ev.clientX+document.body.scrollLeft; mouseY=ev.clientY+document.body.scrollTop;
    if(mouseX>=(oDIV.offsetLeft+oDIV.clientLeft) && mouseX<=(oDIV.offsetLeft+oDIV.clientLeft+oDIV.clientWidth) &&
       mouseY>=(oDIV.offsetTop+oDIV.clientTop)  && mouseY<=(oDIV.offsetTop+oDIV.clientTop+oDIV.clientHeight)) {
        /* Muspekaren är inom rutan, stäng den inte. */
    } else {
        if(oDIV.style.display!="none") {
            oFRM.location.href='about:blank';
            oDIV.style.display="none";
        }
    }
}




/******************************************************************************
 *** Funktioner för att generera data                                       ***
 ******************************************************************************/

/*
**
** Funktion för att generera datum
**
** IN:
** UT: Dagens datum som sträng.
**
*/
function getDate()
{
    function y2k(iNumber) { return ((iNumber<1000) ? iNumber+1900 : iNumber); }
    var today = new Date();
    var year  = y2k(today.getYear());
    var month = today.getMonth()+1;
    var day   = today.getDate();
    var ret   = stdymdformat;

    day   = ((day<10)   ? '0'+day   : day);
    month = ((month<10) ? '0'+month : month);

    ret=ret.replace(/-/g,stddatesep);
    ret=ret.replace("yyyy",year); ret=ret.replace("mm",month); ret=ret.replace("dd",day);
    return (ret);
}



/*
**
** Funktion för att generera tid
**
** IN:
** UT: Klockslag som sträng.
**
*/
function getTime()
{
    var today = new Date();
    var hour  = today.getHours();
    var min   = today.getMinutes();

    hour = ((hour<10)? '0'+hour : hour);
    min  = ((min<10) ? '0'+min  : min);

    return (hour+':'+min);
}



/******************************************************************************
 *** Funktioner för att validera data                                       ***
 ******************************************************************************/

/*
**
** Funktioner för att validera datum, tid och tal
**
** IN: oObject - objekt
** UT: 
**
*/
function validateDatum(oObject) {
    var sDate;
    var iYear,iYearPos,iMonth,iMonthPos,iDay,iDayPos;
    var iMonthDays = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
    var lFormatOK;
    var i,j;

    sDate=oObject.value
    if(sDate!="") {
        /*
        ** Godkänt format: "nnnn-nn-nn" eller "nnnnnnnn" (n = siffra 0-9)
        */
        lFormatOK=false;
        if(sDate.length==8 || sDate.length==10) {
            if(sDate.length==8) {
                lFormatOK=true;
                for(i=0;i<8;i++) {
                    if(!(sDate.substr(i,1)>='0' && sDate.substr(i,1)<='9')) { lFormatOK=false; break; }
                }
            }
            if(sDate.length==10) {
                lFormatOK=true;
                for(i=0;i<10;i++) {
                    if(stdymdformat.substr(i,1)!='-') {
                        if(!(sDate.substr(i,1)>='0' && sDate.substr(i,1)<='9')) { lFormatOK=false; break; }
                    }
                }
            }
        }
        if(lFormatOK==true) {
            /*
            ** Om datum angivet på formen "ÅÅÅÅMMDD", ändra till "ÅÅÅÅ-MM-DD"
            */
            if(sDate.length==8) {
                oObject.value='';
                for(i=0,j=0;i<10;i++) {
                    oObject.value+=((stdymdformat.substr(i,1)!='-') ? sDate.substr(j++,1) : stddatesep);
                }
                sDate = oObject.value;
            }

            /*
            ** Verifiera datum
            */
            iYearPos=stdymdformat.indexOf('yyyy');
            iMonthPos=stdymdformat.indexOf('mm');
            iDayPos=stdymdformat.indexOf('dd');

            iYear  = parseInt(sDate.substr(iYearPos,4),10);
            iMonth = parseInt(sDate.substr(iMonthPos,2),10);
            iDay   = parseInt(sDate.substr(iDayPos,2),10);
            if((isNaN(iYear) || isNaN(iMonth) || isNaN(iDay)) ||
               (iYear<1 || iMonth<1 || iMonth>12 || iDay<1 || iDay>31) ||
               (iDay > iMonthDays[iMonth-1]) ||
               (!((iYear%4==0 && !(iYear%100==0)) || iYear%400==0) && iMonth==2 && iDay>28)) {
                window.alert(stderrmsg1);
                if(!oObject.disabled) oObject.focus();
                return(false);
            }
        } else {
            window.alert(stderrmsg2);
            if(!oObject.disabled) oObject.focus();
            return(false);
        }
    }

return(true);
}

function validatePeriod(oObject) {
    var sPeriod;
    var iYear,iYearPos,iMonth,iMonthPos;
    var lFormatOK;
    var i,j;

    sPeriod=oObject.value
    if(sPeriod!="") {
        /*
        ** Godkänt format: "nnnn-nn" eller "nnnnnn" (n = siffra 0-9)
        */
        lFormatOK=false;
        if(sPeriod.length==6 || sPeriod.length==7) {
            if(sPeriod.length==6) {
                lFormatOK=true;
                for(i=0;i<6;i++) {
                    if(!(sPeriod.substr(i,1)>='0' && sPeriod.substr(i,1)<='9')) { lFormatOK=false; break; }
                }
            }
            if(sPeriod.length==7) {
                lFormatOK=true;
                for(i=0;i<7;i++) {
                    if(stdymformat.substr(i,1)!='-') {
                        if(!(sPeriod.substr(i,1)>='0' && sPeriod.substr(i,1)<='9')) { lFormatOK=false; break; }
                    }
                }
            }
        }
        if(lFormatOK==true) {
            /*
            ** Om period angiven på formen "ÅÅÅÅMM", ändra till "ÅÅÅÅ-MM"
            */
            if(sPeriod.length==6) {
                oObject.value='';
                for(i=0,j=0;i<10;i++) {
                    oObject.value+=((stdymformat.substr(i,1)!='-') ? sPeriod.substr(j++,1) : stddatesep);
                }
                sPeriod = oObject.value;
            }

            /*
            ** Verifiera period
            */
            iYearPos=stdymformat.indexOf('yyyy');
            iMonthPos=stdymformat.indexOf('mm');

            iYear  = parseInt(sPeriod.substr(iYearPos,4),10);
            iMonth = parseInt(sPeriod.substr(iMonthPos,2),10);
            if(isNaN(iYear) || isNaN(iMonth) ||
              (iYear<1 || iMonth<1 || iMonth>12)) {
                window.alert(stderrmsg9);
                if(!oObject.disabled) oObject.focus();
                return(false);
            }
        } else {
            window.alert(stderrmsgA);
            if(!oObject.disabled) oObject.focus();
            return(false);
        }
    }

return(true);
}

function validateYear(oObject) {
    var sInt = oObject.value;
    var iInt = parseInt(sInt,10);

    if(sInt!="") {
        if((sInt!="") &&
           (isNaN(iInt) || iInt<0)) {
              window.alert(stderrmsg3);
              if(!oObject.disabled) oObject.focus();
              return(false);
        } else {
              oObject.value=iInt.toString();
        }
    }

return(true);
}

function validateTid(oObject) {
    var sTime,iHour,iMinute;
    var lFormatOK;

    sTime=oObject.value;
    if(sTime!="") {
        /*
        ** Godkänt format: "nn:nn", "n:nn", "nnnn", "nnn", "nn" eller "n" (n = siffra 0-9)
        */
        lFormatOK=false;
        if(sTime.length>=1 && sTime.length<=5) {
            if(sTime.length==1) {
                if((sTime.substr(0,1)>='0' && sTime.substr(0,1)<='9')) {
                    lFormatOK=true;
                }
            }
            if(sTime.length==2) {
                if((sTime.substr(0,1)>='0' && sTime.substr(0,1)<='9') &&
                   (sTime.substr(1,1)>='0' && sTime.substr(1,1)<='9')) {
                    lFormatOK=true;
                }
            }
            if(sTime.length==3) {
                if((sTime.substr(0,1)>='0' && sTime.substr(0,1)<='9') &&
                   (sTime.substr(1,1)>='0' && sTime.substr(1,1)<='9') &&
                   (sTime.substr(2,1)>='0' && sTime.substr(2,1)<='9')) {
                    lFormatOK=true;
                }
            }
            if(sTime.length==4) {
                if((sTime.substr(0,1)>='0' && sTime.substr(0,1)<='9') &&
                   (sTime.substr(1,1)==':') &&
                   (sTime.substr(2,1)>='0' && sTime.substr(2,1)<='9') &&
                   (sTime.substr(3,1)>='0' && sTime.substr(3,1)<='9')) {
                    lFormatOK=true;
                }
                if((sTime.substr(0,1)>='0' && sTime.substr(0,1)<='9') &&
                   (sTime.substr(1,1)>='0' && sTime.substr(1,1)<='9') &&
                   (sTime.substr(2,1)>='0' && sTime.substr(2,1)<='9') &&
                   (sTime.substr(3,1)>='0' && sTime.substr(3,1)<='9')) {
                    lFormatOK=true;
                }
            }
            if(sTime.length==5) {
                if((sTime.substr(0,1)>='0' && sTime.substr(0,1)<='9') &&
                   (sTime.substr(1,1)>='0' && sTime.substr(1,1)<='9') &&
                   (sTime.substr(2,1)==':') &&
                   (sTime.substr(3,1)>='0' && sTime.substr(3,1)<='9') &&
                   (sTime.substr(4,1)>='0' && sTime.substr(4,1)<='9')) {
                    lFormatOK=true;
                }
            }
        }
        if(lFormatOK==true) {
            /*
            ** Om klockslag angivet på formen "H",    ändra till "0H:00"
            ** Om klockslag angivet på formen "HH",   ändra till "HH:00"
            ** Om klockslag angivet på formen "HMM",  ändra till "0H:MM"
            ** Om klockslag angivet på formen "H:MM", ändra till "0H:MM",
            ** om klockslag angivet på formen "HHMM", ändra till "HH:MM"
            */
            if (sTime.length==1) {
                oObject.value = '0'+oObject.value+':00';
                sTime = oObject.value;
            }
            if (sTime.length==2) {
                oObject.value = oObject.value+':00';
                sTime = oObject.value;
            }
            if (sTime.length==3) {
                oObject.value = oObject.value.substr(0,1)+':'+oObject.value.substr(1,2);
                sTime = oObject.value;
            }
            if (sTime.length==4) {
                if (sTime.substr(1,1)==':') {
                    oObject.value = '0'+oObject.value;
                    sTime = oObject.value;
                } else {
                    oObject.value = oObject.value.substr(0,2)+':'+oObject.value.substr(2,2);
                    sTime = oObject.value;
                }
            }

            /*
            ** Verifiera klockslag
            */
            iHour   = parseInt(sTime.substr(0,2),10);
            iMinute = parseInt(sTime.substr(3,2),10);
            if ((isNaN(iHour) || isNaN(iMinute)) ||
                 (iHour<0 || iHour>23 || iMinute<0 || iMinute>59)) {
                window.alert(stderrmsg4);
                if(!oObject.disabled) oObject.focus();
                return(false);
            }
        } else {
            window.alert(stderrmsg5);
            if(!oObject.disabled) oObject.focus();
            return(false);
        }
    }

return(true);
}

function validateInteger(oObject) {
    var sInt = oObject.value;
    var iInt = parseInt(sInt,10);

    if(sInt!="") {
        if((sInt!="") &&
           (isNaN(iInt))) {
              window.alert(stderrmsg6);
              if(!oObject.disabled) oObject.focus();
              return(false);
        } else {
              oObject.value=iInt.toString();
        }
    }

return(true);
}

function validatePositiveInteger(oObject) {
    var sInt = oObject.value;
    var iInt = parseInt(sInt,10);

    if(sInt!="") {
        if((sInt!="") &&
           (isNaN(iInt) || iInt<0)) {
              window.alert(stderrmsg7);
              if(!oObject.disabled) oObject.focus();
              return(false);
        } else {
              oObject.value=iInt.toString();
        }
    }

return(true);
}

function validateDecimal(oObject) {
    var sDecimal = oObject.value;
    var i;

    if(sDecimal!="") {
        sDecimal=sDecimal.replace(/,/g,".");
        dDecimal=parseFloat(sDecimal);

        if((sDecimal!="") &&
           (isNaN(dDecimal))) {
              window.alert(stderrmsg8);
              if(!oObject.disabled) oObject.focus();
              return(false);
        } else {
              oObject.value=dDecimal.toString();
        }
    }

return(true);
}

