var validationDisabled = false;

function personnummer(nr){
    if (validationDisabled) return false;
    
	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 valid(n){
    
    
    var e = $(n);
    e.siblings('span').hide();    
    if (validationDisabled) return false;

    var validators = {
      'user[firstname]': /^[A-Za-z0-9ÅÄÖåäö\- ]{2,100}$/ ,
      'user[lastname]': /^[A-Za-z0-9ÅÄÖåäö\- ]{2,100}$/ ,
      'user[email]': /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i ,
      'user[username]': /^[A-Za-z0-9-_]{3,100}$/ ,
      'user[mobile]': /^[A-Za-z0-9]{10,15}$/,
      'user[phone]': /^[A-Za-z0-9]{8,15}$/,
      'user[address]': /^[A-Za-zÅÄÖåäö0-9 ]{2,100}$/,
      'user[zipcode]': /^[0-9]{5,5}$/,
      'user[city]': /^[A-Za-z0-9ÅÄÖåäö ]{2,100}$/
    };
    if(validators[e.attr('name')] && !e.val().match(validators[e.attr('name')])){
        e.siblings('span.incorrect').css("display", "block");        
        e.removeClass('correct');
    } else {
        e.addClass('correct');
        e.siblings('span.correct').css("display", "block");
    }
	

    
}

$(document).ready(function(){
        
 $('#signup p span').hide();
 $('#signup p.cb input').hide();
 $('#signup p.cb a.checkbox').css("display", "block");
 $('#signup p.cb a.checkbox').bind('click', function(){
     $(this).toggleClass('unchecked');
     var e = $('#user_accept_rules');
     if(e.attr('checked')) e.removeAttr('checked'); 
     else e.attr('checked','checked');
     
     return false;
 }); 
 
 // Snygga effekter och allmän magi
 $('#signup p input').bind('focus', function(){
    var e = $(this);
    e.siblings('span').hide();
    e.siblings('span.info').css("display", "block");
 });
 $('#signup p input').bind('blur', function(){
    valid(this);
 });
 
 // Automatiskt username
 $('#signup p #user_username').bind('focus', function(){
    var e = $(this);
    var e2 = $('#signup p #user_email').val();
    if(this.value.length == 0 && e2.length > 0) this.value = e2.substring(0, e2.indexOf('@')); 
 });
 
 // Automagisk ort
 $('#signup p #user_zipcode').bind('blur', function(){
    var e2 = $('#signup p #user_city');
    if(e2.val()!="") return;
    
    if(this.value.length > 0) $.get("/users/get_city/"+this.value, function(data){ e2.val(data); });
 });
 

 $('#signup p #user_socialnumber').bind('blur', function(){
    $(this).siblings('span').hide();
    if (validationDisabled) return false;
    if(!(new personnummer(this.value).valid)){
        $(this).siblings('span.incorrect').css("display", "block");  
        $(this).removeClass('correct');
    } else {
        $(this).siblings('span.correct').css("display", "block");  
        $(this).addClass('correct');
    }
 });


 $('#signup p #user_country').bind('change', function(){
     var e = $(this);
     if(e.val() != "Sverige") {
         validationDisabled = true;
         $('#signup p span.correct , #signup p span.incorrect').hide();
         $('#signup p input.correct').removeClass('correct');
         
     } else {
         validationDisabled = false;
     }
     return false;
 }) ;
 
 
 $('#user_firstname').focus();
});