//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_VALID_ADR = Number(32);
var BIT_VALID_POSTNR = Number(64);
var BIT_VALID_TLFNR = Number(128);

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 indmeldelsesformularen.";
var ERR_SEP="\n---------------------------------------------------------------------------------------------\n";
var ERR_SEP2="----------------------------------------------------------------------------------------------\n";
var ERR_MSG_END="Ret venligst og klik derefter på knappen ''Indmeld''\n"+"----------------------------------------------------------------------------------------------\n\n"+"OBS!\n"+"Vær sikker på at deres E-MAIL adresse er korrekt indtastet da\n"+"Patientforeningen Mine Rettigheder mailer bekræftelse tilbage til dem.";

function getErrorMessage(label,bits2)
{
    var ret="";
    bits=parseInt(bits2);
    
    if(Number(bits & BIT_NOT_EMPTY)==BIT_NOT_EMPTY)
    {
        ret=ret+", skal indtastes";
    }
    if(Number(bits & BIT_VALID_MAIL)==BIT_VALID_MAIL)
    {
        ret=ret+", der skal indtastes tegn før snabel-a (@)";
    }
    if(Number(bits & BIT_VALID_MAIL2)==BIT_VALID_MAIL2)
    {
        ret=ret+", der skal indtastes tegn før og efter snabel-a (@)";
    }
    if(Number(bits & BIT_VALID_MAIL3)==BIT_VALID_MAIL3)
    {
        ret=ret+", i tegnsætningen efter snabel-a (@) skal der være et punktum";
    }
    if(Number(bits & BIT_VALID_MAIL4)==BIT_VALID_MAIL4)
    {
        ret=ret+", der skal indtastes min. 2 tegn efter det sidste punktum (.)";
    }
    if(Number(bits & BIT_VALID_ADR)==BIT_VALID_ADR)
    {
        ret=ret+", skal indtastes";
    }
    if(Number(bits & BIT_VALID_POSTNR)==BIT_VALID_POSTNR)
    {
        ret=ret+", skal bestå af 4 tal";
    }
    if(Number(bits & BIT_VALID_TLFNR)==BIT_VALID_TLFNR)
    {
        ret=ret+", skal bestå af 8 tal";
    }
    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_VALID_ADR)==BIT_VALID_ADR)
    {
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value!='')
            {
             adrlaengde=field.value.length; 
             if (adrlaengde<4)
             {
              ret=ret | BIT_VALID_ADR;
             }            
            }    
        }
    }

    if(Number(bits & BIT_VALID_POSTNR)==BIT_VALID_POSTNR)
    {
        var localValid=true; 
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value!='')
            {
             kunettal=field.value;
             postnrlaengde=field.value.length; 
             if ((postnrlaengde<4)|(isNaN(kunettal)==true))
             {
              //localValid=false;
              ret=ret | BIT_VALID_POSTNR;  
             }
              //if (localValid==false)
              //{
               //ret=ret | BIT_VALID_POSTNR; 
              //}
            }    
        }
    }

    if(Number(bits & BIT_VALID_TLFNR)==BIT_VALID_TLFNR)
    {
        var localValid=true; 
        field=form.elements[fieldN];
        if(field.type==FLD_TYPE_TEXT)
        {
            if(field.value!='')
            {
             kunettal=field.value; 
             tlfnrlaengde=field.value.length; 
             if ((tlfnrlaengde<8)|(isNaN(kunettal)==true))
             {
              //localValid=false;
              ret=ret | BIT_VALID_TLFNR;
             }
              //if (localValid==false)
              //{
               //ret=ret | BIT_VALID_TLFNR;
              //}             
              
            }    
        }
    }
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;
}
