karw.formLogin = new Class({
	
	Implements: [Events,Options],
	
	hashCode: null,

	formId: 'loginform',
	formElement: null,
	barcodeValue: null,
	zipValue: null,
	surnameValue: null,
	emailValue: null,	
	countryValue: null,
	loader: null,
	
	initialize: function(){
		this.formElement = $(this.formId);
		this.enableSubmit();
		this.loader = new karw.Loader();
		this.loader.hide();
//		if($chk($$('#barcode_help'))){
//			$$('#barcode_help').addEvent('mouseover', function(){
//				this.formElement.getElement('div.infoToolTip').setStyles({'visibility':'visible'})
//			}.bind(this));
//			$$('#barcode_help').addEvent('mouseout', function(){
//				this.formElement.getElement('div.infoToolTip').setStyles({'visibility':'hidden'})
//			}.bind(this));
//		}
	},
	
	retreiveFields: function(){
		
		this.barcodeValue = this.formElement.getElement('input.barcode').value;
		this.zipValue = this.formElement.getElement('input.zipcode').value;
		this.surnameValue = this.formElement.getElement('input.surname').value;
		this.emailValue = this.formElement.getElement('input.email').value;
		this.formElement.getElements('option[class=country]').each(function(item,index){
			if(item.selected === true){
				this.countryValue = item.value;
			}
		}.bind(this));
	},
	
	enableSubmit: function(){
		this.submitButton = this.formElement.getElement('.btn-verzenden');
		this.submitButton.addEvent('click',this.submitAction.bind(this));
		
		
	},
	submitAction: function(){
		this.loader.show();
		this.retreiveFields();
		
		var request = new Request({
			url: karw.context+ '/IGKarweiServices/resources/client/hash',
			method:'get',
			onSuccess: this.doSubmitAction.bind(this),
			onFailure: this.failMessage.bind(this)
		}).send('barcode='+this.barcodeValue+'&zipcode='+this.zipValue+'&country='+this.countryValue+'&surname='+this.surnameValue+'&email='+this.emailValue+'&random='+Math.random());	
		
	},
	doSubmitAction: function(response){
		this.loader.hide();
		this.formElement.setStyle('display','none');
		var change = new karw.formChange(response, this.formElement);
		
	},
	
	failMessage: function(xhr){
		s.sendFormEvent('e', s.pageName, this.formId, xhr.responseText);
		this.loader.hide();
		this.formElement.getElements('.form-row').each(function(item,index){
			item.removeClass('fault');
		});
		this.formElement.getElements('.sub-area').each(function(item,index){
			item.setStyles({'opacity':'0'});
		});
		if(xhr.status == "422" || xhr.status == "409"){
			if(xhr.responseText == 'INVALID_CREDENTIALS'){
				var errorArea2 = this.formElement.getElement('div.error_barcode');
				errorArea2.setStyles({'opacity':'0','border-color':'#ff0000'});
				
				var errorArea = this.formElement.getElement('div.error_credentials');
				errorArea.setStyles({'opacity':'1','border-color':'#ff0000'});
			}
			if(xhr.responseText == 'NEW_CARD'){
				this.formElement.setStyle('display','none');
				var newcard = new karw.formNewcard('loginform');				
			}
		}
		if(xhr.status == "409"){
			var responseTextArray = xhr.responseText.split(", ");
			//alert(xhr.responseText.split(", "));
			
			for(i=0;i<responseTextArray.length;i++){
				var error = responseTextArray[i].split(" ");
				if(error[0] == "PARAMETER_MISSING" || error[0] == "PARAMETER_INVALID"){
					var field = this.formElement.getElement('input.'+error[1]);
					if(field === null){
						var field = this.formElement.getElement('input#'+error[1]);
					}
					var mainRow = false;
					while(mainRow === false){
						
						var field = field.getParent();
						if(field.hasClass('form-row')){
							var mainElement = field;
							mainRow = true;
						}
					}					
					
					mainElement.addClass('fault');
					var errorArea = mainElement.getElement('.sub-area');
					if(errorArea){
						if(error[1] == 'zipcode'){
							forms_showZipcodeError(errorArea, this.formElement, '1');
						}
						errorArea.setStyles({'opacity':'1','border-color':'#ff0000'});						
					}
					
				}
				if(error[0] == "NO_OPTIN" ){
					var field = this.formElement.getElement('span#optin_text');
					field.setStyle('color','#ff0000');
					var errorArea = this.formElement.getElement('.error_optin');
					errorArea.setStyles({'opacity':'1','border-color':'#ff0000'});
				}
			}
		};
	}
});
