//fieldValidattion objektet understøtter følgende bits til at validere, 
//BIT_NOT_EMTPY = undersoeger om der er data i feltet
//BIT_VALID_MAIL = undersøger om email er korrekt indtastet
//BIT_VALID_POSTNR = postnr og aar kan og skal kun bestaa af 4 tal
//BIT_VALID_TLFNR = tlfnr kan og skal kun bestaa af 8 tal

var BIT_NOT_EMPTY = Number(1);
var BIT_VALID_MAIL = Number(2);
var BIT_VALID_MAIL2 = Number(4);
var BIT_VALID_MAIL3 = Number(8);
var BIT_VALID_MAIL4 = Number(16);
var BIT_SPM_NOT_EMPTY = Number(32)
var BIT_BESKED_VED_SVAR = Number(64);

var FLD_TYPE_TEXT="text";
var FLD_TYPE_TEXT_AREA="textarea";
var FLD_TYPE_SELECT="select-one";
var FLD_TYPE_SELECT_MULTIPLE="select-multiple";
var FLD_TYPE_RADIO="radio";
var FLD_TYPE_CHECKBOX="checkbox";
var FLD_TYPE_PASSWORD="password";

var ERR_MSG_START="Der er fejl/mangler i Brevkasseformularen.";
var ERR_SEP="\n---------------------------------------------------------------------------------------------\n";
var ERR_SEP2="----------------------------------------------------------------------------------------------\n";
var ERR_MSG_END="Ret venligst og klik derefter på knappen ''Indsend spørgsmål''\n"+"----------------------------------------------------------------------------------------------\n\n"+"OBS!\n"+"Vær sikker på at deres E-MAIL adresse er korrekt indtastet hvis\n"+"de har valgt at modtage besked ved svar på deres spørgsmål.";

function getErrorMessage(label,bits2)
{
    var ret="";
    bits=parseInt(bits2);
    
    if(Number(bits & BIT_NOT_EMPTY)==BIT_NOT_EMPTY)
    {
        ret=ret+", skal indtastes\n";
    }
    if(Number(bits & BIT_VALID_MAIL)==BIT_VALID_MAIL)
    {
        ret=ret+", der skal indtastes tegn før snabel-a (@)\n";
    }
    if(Number(bits & BIT_VALID_MAIL2)==BIT_VALID_MAIL2)
    {
        ret=ret+", der skal indtastes tegn før og efter snabel-a (@)\n";
    }
    if(Number(bits & BIT_VALID_MAIL3)==BIT_VALID_MAIL3)
    {
        ret=ret+", i tegnsætningen efter snabel-a (@) skal der være et punktum\n";
    }
    if(Number(bits & BIT_VALID_MAIL4)==BIT_VALID_MAIL4)
    {
        ret=ret+", der skal indtastes min. 2 tegn efter det sidste punktum (.)\n";
    }
    if(Number(bits & BIT_SPM_NOT_EMPTY)==BIT_SPM_NOT_EMPTY)
    {
        ret=ret+", skal indtastes";
    }
    if(Number(bits & BIT_BESKED_VED_SVAR)==BIT_BESKED_VED_SVAR)
    {
        ret=ret+", de skal indtaste deres e-mail for at kunne"+"\n"+"modtage besked pr. mail ved besvarelse af deres spørgsmål\n";
    }
    ret=ret.substr(1);
    ret=label+" : "+ret;

 return ret;
}
//-------------------------------------------------------------------
function validateField(form,fieldN,bits2)
{
    var ret=0;
    var field;
    bits=parseInt(bits2,10);

    if(Number(bits & BIT_NOT_EMPTY)==BIT_NOT_EMPTY)
    {
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value=='')
            {
                ret=ret | BIT_NOT_EMPTY;
            }    
        }
    }

    if(Number(bits & BIT_VALID_MAIL)==BIT_VALID_MAIL)
    {
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value!='')
            {
             snabelapos=field.value.indexOf("@"); 
             dotpos=field.value.lastIndexOf(".");
             lastpos=field.value.length-1;
             if (snabelapos<1)
             {
              ret=ret | BIT_VALID_MAIL;
             }
            }    
        }
    }	

    if(Number(bits & BIT_VALID_MAIL2)==BIT_VALID_MAIL2)
    {
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value!='')
            {
             snabelapos=field.value.indexOf("@"); 
             dotpos=field.value.lastIndexOf(".");
             lastpos=field.value.length-1;
             if (dotpos-snabelapos<2)
             {
              ret=ret | BIT_VALID_MAIL2;
             }
            }    
        }
    }

    if(Number(bits & BIT_VALID_MAIL3)==BIT_VALID_MAIL3)
    {
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value!='')
            {
             snabelapos=field.value.indexOf("@"); 
             dotpos=field.value.lastIndexOf(".");
             lastpos=field.value.length-1;
             if (lastpos-dotpos>3)
             {
              ret=ret | BIT_VALID_MAIL3;
             }            
            }    
        }
    }

    if(Number(bits & BIT_VALID_MAIL4)==BIT_VALID_MAIL4)
    {
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value!='')
            {
             snabelapos=field.value.indexOf("@"); 
             dotpos=field.value.lastIndexOf(".");
             lastpos=field.value.length-1;
             if (lastpos-dotpos<2)
             {
              ret=ret | BIT_VALID_MAIL4;
             }            
            }    
        }
    }

    if(Number(bits & BIT_SPM_NOT_EMPTY)==BIT_SPM_NOT_EMPTY)
    {
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT_AREA)
        {
            if(field.value=='')
            {
             //adrlaengde=field.value.length; 
             //if (adrlaengde<4)
             //{
              ret=ret | BIT_SPM_NOT_EMPTY;
             //}            
            }    
        }
    }

    if(Number(bits & BIT_BESKED_VED_SVAR)==BIT_BESKED_VED_SVAR)
    {
        var localValid=true; 
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_CHECKBOX)
        {
            var besked=field.checked; 
            if(besked==true)
            {
             var mailadr=document.brevkasseForm.mailadr.value;;
             if (mailadr=='')
             {
              ret=ret | BIT_BESKED_VED_SVAR;  
             }
            }    
        }
    }
return ret;
}
//---------------------------------------------------------------
function fieldValidation(field1,label1,bits1)
{
    this.field=field1;
    this.label=label1;
    this.bits=bits1;
    return this;
}

function validateForm(form,fields)
{
var ret=false;
var errMsg=ERR_MSG_START+ERR_SEP;
var err=false;
var valid=0;

    for(xy=0;xy<fields.length;xy++)
    {
        
        valid=validateField(form,fields[xy].field,fields[xy].bits);
        
        if(valid!=0)
        {
            err=true;
            for(x=0;x<form.elements.length;x++)
            {
                if(form.elements[x].name==fields[xy].field)
                {
                    //form.elements[x].style.backgroundColor='#ff0000';
                }
            }
            //form.elements[fields[xy].field].style.backgroundColor='#ff0000';
            errMsg=errMsg+getErrorMessage(fields[xy].label,valid)+"\n";
        }
        else
        {
            for(x=0;x<form.elements.length;x++)
            {
                if(form.elements[x].name==fields[xy].field)
                {
                    //form.elements[x].style.backgroundColor='#ffffff';
                }
            }
            //form.elements[fields[xy].field].style.backgroundColor=
        }  
    }
errMsg=errMsg+ERR_SEP2+ERR_MSG_END;
if(err==true)
{
 alert(errMsg);
 return false;
}
//return ret;
return true;
}
