var registrationSearch = Class.create({
	
	errorField: "",
	
    initialize: function(form,fylke,sted,postnr,fritekst,complete,insertLocation,message,complete2) {
    	
        if($(fylke)){
        	Event.observe($(fylke),'change', this.updateSted.bindAsEventListener(this,{self:this,sted:sted,form:form}), false);	
        }
        if($(sted)){
       		Event.observe($(sted),'change', this.searchSted.bindAsEventListener(this,{self:this,sted:sted,form:form,insertLocation:insertLocation,message:message,field:'Sted'}), false);
        }
        if($(postnr)){
        	Event.observe($(postnr),'click', this.searchPostnr.bindAsEventListener(this,{self:this,form:form,insertLocation:insertLocation,message:message,field:'Postnrsok'}), false);	
        }
        if($(fritekst)){
        	Event.observe($(fritekst),'click', this.searchFritekst.bindAsEventListener(this,{self:this,form:form,insertLocation:insertLocation,message:message,field:'Fritekst'}), false);	
        }
    	if($(complete)){
    		Event.observe($(complete),'click', this.complete.bindAsEventListener(this,{self:this,form:form,insertLocation:insertLocation,message:message}), false);
    	}
    	if($(complete2)){
    		Event.observe($(complete2),'click', this.completeKunde.bindAsEventListener(this,{self:this,form:form,insertLocation:insertLocation,message:message}), false);
    	}
    	
    },
    
    updateSted: function(event,arg){
        $('action').value = "getSteder";
        
        new Ajax.Request('/index.php', {
            method:'post',
            parameters: $(arg.form).serialize(),
            onSuccess: function(transport){
                
                var json = transport.responseText.evalJSON(true);

                $(arg.sted).update("");
                
                var firstOption = new Element('option',{value: 'none'}).update('Velg et sted');
                new Insertion.Bottom($(arg.sted),$(firstOption));
                
                json.each(function(e,i){
                	var options = new Element('option',{value: json[i]}).update(json[i]);
                	new Insertion.Bottom($(arg.sted),$(options));

                });
                
                $(arg.sted).disabled = false;
            }
        });
    },
    
    searchSted: function(event,arg){
       $('action').value = "searchSteder";
       arg.self.ajaxRequest(arg.form,arg.insertLocation,arg.message,arg.field,arg.self);
    },
    
    searchPostnr: function(event,arg){
    	Event.stop(event);
    	$('action').value = "searchPostnr";
    	arg.self.ajaxRequest(arg.form,arg.insertLocation,arg.message,arg.field,arg.self);
    },
    
    searchFritekst: function(event,arg){
    	Event.stop(event);
    	$('action').value = "searchFritekst";
        arg.self.ajaxRequest(arg.form,arg.insertLocation,arg.message,arg.field,arg.self);
    },
    
    complete: function(event,arg){
    	Event.stop(event);
    	$('action').value = "complete";
    	
        new Ajax.Request('/index.php', {
            method:'post',
            parameters: $(arg.form).serialize(),
            onSuccess: function(transport){

            	var json = transport.responseText.evalJSON(true);
			
				if(arg.self.validate(json[1],arg.message,'',arg.self,4)){
					
					$('content').innerHTML = json[0];
					
				}
				
						
            }
        });
    },
    
    completeKunde: function(event,arg){
    	Event.stop(event);
    	
    	$('action').value = "complete";
    	
        new Ajax.Request('/index.php', {
            method:'post',
            parameters: $(arg.form).serialize(),
            onSuccess: function(transport){

            	var json = transport.responseText.evalJSON(true);
			
				if(arg.self.validate(json[1],arg.message,'',arg.self,3)){
					
					window.location = "/medlemforhandler/brukergodkjenning/?details="+json[0];
					
				}
					
            }
        });
    },
    
    
    ajaxRequest: function(form,insertLocation,message,field,self){

    	new Ajax.Request('/index.php', {
            method:'post',
            parameters: $(form).serialize(),
            onSuccess: function(transport){
            	$(insertLocation).update("");

            	var json = transport.responseText.evalJSON(true);
				
				self.validate(json[1],message,field,self,4);				
				
                var ul = new Element('ul',{className: 'searchResponseUl'});
                new Insertion.Bottom($(insertLocation),$(ul));
                
                json[0].each(function(e,i){
                	
                	var li = new Element('li',{className: 'searchResponseHeader'}).update(e[0]);
                	new Insertion.Bottom($(ul),$(li));
            		
                	var ul2 = new Element('ul');
                	new Insertion.Bottom($(li),$(ul2));
                	
                	e[1].each(function(e2){
                		var li2 = new Element('li');
                		new Insertion.Bottom($(ul2),$(li2));

                		var link = new Element('a',{href: '/',title:e2[1],rel:e2[0] }).update(e2[1]);
                    	new Insertion.Bottom($(li2),$(link));
                    	
                    	Event.observe($(link),'click', self.links.bindAsEventListener(self,{self:self,value:$(link).rel,name:$(link).title,message:message}), false);

                	});
                });
            }
        });
    },
    
    links: function(event,arg){
    	Event.stop(event);
    	$('Forhandler').value = arg.value;
    	$(arg.message).update("Du har valgt: "+arg.name);
    	$('registrerBtn').show();
    },
    
    validate: function(error,message,field,self,box){
    	
    	if(self.errorField != ""){
    		$(self.errorField).removeClassName('notValid')
    	}
    	
    	if(error != ""){
    		self.errorField = field;
    		$(message+"Box"+box).show();
    		$(message+"Content"+box).update(error);
    		if(self.errorField != ""){
    			$(self.errorField).addClassName('notValid');
    		};
    		return false;
    	}else{
    		$$('.'+message).invoke('hide');
    		return true;
    	}
    }
    
});

Event.observe(window, 'load', function() {
    
    if($("registrationForm")){
        var newRegistrationSearchClass = new registrationSearch("registrationForm","Fylke","Sted","PostnrBtn","FritekstBtn","registrerNow","searchResponse","message","registrerNow2");
    }
  
});

