function personnummer(nr){
	this.valid=false;
	if (!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/))
    { 
        return false;
    }
	this.now=new Date(); 
	this.nowFullYear=this.now.getFullYear()+""; 
	this.nowCentury=this.nowFullYear.substring(0,2); 
	this.nowShortYear=this.nowFullYear.substring(2,4);
	this.year=RegExp.$1; 
	this.month=RegExp.$2; 
	this.day=RegExp.$3; 
	this.controldigits=RegExp.$4;
	this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
	
	var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0)
	{ 
	    months[1]=29; 
	}
	
	if(this.month*1<1||this.month*1>12||this.day*1<1||this.day*1>months[this.month*1-1])
	{ 
	    return false; 
	}
	
	this.alldigits=this.year+this.month+this.day+this.controldigits;
	var nn="";
	for(var n=0;n<this.alldigits.length;n++)
	{ 
	    nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); 
	}
	this.checksum=0;
	for(var n=0;n<nn.length;n++)
	{
	    this.checksum+=nn.substring(n,n+1)*1;
	}
	this.valid=(this.checksum%10==0)?true:false;
	this.sex=parseInt(this.controldigits.substring(2,3))%2;
}

function organisationsnummer(nr){
	this.valid=false;
	if(!nr.match(/^(\d{1})(\d{5})\-(\d{4})$/))
	{ 
	    return false; 
	}
	this.group=RegExp.$1;
	this.controldigits=RegExp.$3;
	this.alldigits=this.group+RegExp.$2+this.controldigits;
	
	if(this.alldigits.substring(2,3)<2)
	{ 
	    return false;
	}
	var nn="";
	for(var n=0;n<this.alldigits.length;n++)
	{ 
	    nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); 
	}
	this.checksum=0;
	for(var n=0;n<nn.length;n++)
	{
	    this.checksum+=nn.substring(n,n+1)*1; 
	}
	this.valid=(this.checksum%10==0)?true:false;
}

function setDomainInput(isChange)
{
    var d = document.getElementById('do');
    if (d)
        if (d.checked)
        {
            document.getElementById('suffix').style.display = "none";
            document.getElementById('search').style.display = "none";
            document.getElementById('searchfor').style.display = "none";
            document.getElementById('domainname').style.display = "";
            var dt = document.getElementById('domains');
            if (dt)
                dt.style.display = "none";
            if (isChange && document.getElementById('searchfor').value.length)
                document.getElementById('domainname').value = document.getElementById('searchfor').value + '.' + document.getElementById('suffix')[document.getElementById('suffix').selectedIndex].value;
        }
        else
        {
            document.getElementById('suffix').style.display = "";
            document.getElementById('search').style.display = "";
            document.getElementById('searchfor').style.display = "";
            var dn = document.getElementById('domainname');
            dn.style.display = "none";

            if (isChange)
            {
                document.getElementById('searchfor').value = dn.value.substring(0, dn.value.indexOf('.'));
            
                if (document.getElementById('searchfor').value.length)
                    dn.form.submit();
            }
        }
}

function validateDomainChoice()
{
    var d = document.getElementById('do');
    if (d)
        if (d.checked)
        {
            var domainname = document.getElementById('domainname');
            if (!domainname.value.length || domainname.value.indexOf('.') == -1) {
                alert('Skriv in det domännamn du vill flytta innan du fortsätter!');
                domainname.focus();
                return false;
            }
            else
            {
                return true;
            }
        }
    
    var ds = document.getElementsByName('sdomainname');
    for (var i = 0; i < ds.length; i++)
    {
        if (ds[i].checked) {
            return true;
        }
    }
    
    alert('Välj en domän som du vill registrera innan du fortsätter!');
    return false;
}

function validateCustomer(form)
{
    if (!form.org.value.length && !form.customertype.selectedIndex)
    {
        alert('Fyll i företagets/organisationens namn');
        form.org.focus();
        return false;
    }

    if (form.customertype.selectedIndex)
    {
        var n = new personnummer(form.orgno.value);
        if (!n.valid)
        {
            alert('Fyll i ett giltigt personnummer i formen ååmmdd-wxyz');
            form.orgno.focus();
            return false;
        }
    }
    else
    {
        var p = new personnummer(form.orgno.value);
        var n = new organisationsnummer(form.orgno.value);
        if (!n.valid && !p.valid)
        {
            alert('Fyll i ett giltigt organisationsnummer i formen xyzxyz-wxyz');
            form.orgno.focus();
            return false;
        }
    }
    
    if (!form.firstname.value.length)
    {
        alert('Fyll i förnamn (kan även vara en avdelning/person)');
        form.firstname.focus();
        return false;
    }
    
    if (!form.familyname.value.length)
    {
        alert('Fyll i efternamn (kan även vara en avdelning/person)');
        form.familyname.focus();
        return false;
    }
    
    if (!form.street1.value.length)
    {
        alert('Fyll i gatuadress');
        form.street1.focus();
        return false;
    }

    if (!form.postalcode.value.length)
    {
        alert('Fyll i postnr');
        form.postalcode.focus();
        return false;
    }

    if (!form.city.value.length)
    {
        alert('Fyll i ort');
        form.city.focus();
        return false;
    }

    if (!form.phone.value.length)
    {
        alert('Fyll i telefonnr');
        form.phone.focus();
        return false;
    }

    if (!isEmail(form.email.value))
    {
        alert('Fyll i en korrekt e-postadress');
        form.email.focus();
        return false;
    }
    
    if (form.invoiceaddress.checked)
    {
        if (!form.iorg.value.length && !form.icustomertype.selectedIndex)
        {
            alert('Fyll i företagets/organisationens namn');
            form.iorg.focus();
            return false;
        }

        if (!form.iorgno.value.length)
        {
            alert('Fyll i organisationsnr/personnr');
            form.iorgno.focus();
            return false;
        }

        if (!form.ifirstname.value.length)
        {
            alert('Fyll i förnamn (kan även vara en avdelning/person)');
            form.ifirstname.focus();
            return false;
        }
        
        if (!form.ifamilyname.value.length)
        {
            alert('Fyll i efternamn (kan även vara en avdelning/person)');
            form.ifamilyname.focus();
            return false;
        }
        
        if (!form.istreet1.value.length)
        {
            alert('Fyll i gatuadress');
            form.istreet1.focus();
            return false;
        }

        if (!form.ipostalcode.value.length)
        {
            alert('Fyll i postnr');
            form.ipostalcode.focus();
            return false;
        }

        if (!form.icity.value.length)
        {
            alert('Fyll i ort');
            form.icity.focus();
            return false;
        }

        if (!form.iphone.value.length)
        {
            alert('Fyll i telefonnr');
            form.iphone.focus();
            return false;
        }

        if (!isEmail(form.iemail.value))
        {
            alert('Fyll i en korrekt e-postadress');
            form.iemail.focus();
            return false;
        }
    
    }

    return true;
}

function customerTypeSet(prefix)
{
    var ct = document.getElementById(prefix+'customertype');
    if (ct)
        document.getElementById(prefix+'orgrow').style.display=ct.selectedIndex?'none':'';
}

function validateConfirm()
{
    var confirm = document.getElementById('confirm');
    if (confirm)
        if (!confirm.checked)
        {
            alert('Du måste godkänna de allmänna villkoren!');
            return false;
        }
        
    var confirmtld = document.getElementById('confirmtld');

    if (confirmtld)
        if (!confirmtld.checked)
        {
            alert('Du måste godkänna de allmänna villkoren för registrering av ett domännamn i den valda toppdomänen!');
            return false;
        }

    var confirmagreement = document.getElementById('confirmagreement');

    if (confirmagreement)
        if (!confirmagreement.checked)
        {
            alert('Du måste godkänna att Vildmarksdata blir registrar för domänen och .SE\'s registreringsvillkor!');
            return false;
        }

}

function isEmail(val) {
    var re = new RegExp(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
    return re.test(val);
}

