karw.formNoCustomer = new Class({
	
	Implements: [Events,Options],
	
	hashCode: null,
	putObject: null,
	formId: 'newform',
	prevFormId: 'register',
	submitButton: null,
	resetButton: null,
	formElement: null,
	prevFormElement: null,
	UID: null,
	
	loader: null,
	
	initialize: function(previousFormId) {
		this.formElement = $(this.formId);
		this.prevFormElement = $($chk(previousFormId) ? previousFormId : this.prevFormId);
		this.loader = new karw.Loader();
		this.fillCustomerData();
	},
	
	fillCustomerData: function() {
		
		['initials', 'surname', 'email', 'barcode', 'zipcode'].each(function(i,index){
			if (this.prevFormElement.getElement('input#'+i)) {
				console.log(i + " :" +this.prevFormElement.getElement('input#'+i).value);
				this.formElement.getElement('input.'+i).value = this.prevFormElement.getElement('input#'+i).value;
			}
		}.bind(this));
		
		var sex;
		
		this.prevFormElement.getElements('input[class=sex]').each(function(item,index){
			if(item.checked === true){
				sex = item.value;
			}
			
		}.bind(this));
		
		this.formElement.getElements('input[class=sex]').each(function(item,index){

			if(item.value == sex){
				item.checked = true;
			}
		}.bind(this));
		
		$$('input.DatePicker').DatePicker({
			dayChars:'3',
			dayNames:['Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag'],
			format:'dd-mm-yyyy',
			monthNames:['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'],
			yearOrder: 'desc',
			yearRange:90
		});	
		
		this.formElement.setStyle('display','block');
		
		var barcode = this.formElement.getElement('input.barcode').value;
		var surname = this.formElement.getElement('input.surname').value;
		var email = this.formElement.getElement('input.email').value;
		var zipcode = this.formElement.getElement('input.zipcode').value;
		
		var request = new Request({
			url: karw.context+ '/IGKarweiServices/resources/client/hash',
			method:'get',
			onSuccess: this.enableSubmit.bind(this),
			onFailure: this.failMessageCustomer.bind(this)
		}).send('barcode='+barcode+'&zipcode='+zipcode+'&surname='+surname+'&email='+email+'&random='+Math.random());	
	
		
	},
	
	
	enableSubmit: function(hash){
		console.log(hash);
		this.submitButton = this.formElement.getElement('.btn-verzenden');
		this.submitButton.addEvent('click',this.submitAction.bind(this));
		
		this.resetButton = this.formElement.getElement('.btn-reset');
		this.resetButton.addEvent('click',karw.resetFields.bind(this,[this.formElement]));
	},
	submitAction: function(){
		this.loader.setMessage("Uw gegevens worden opgeslagen");
		this.loader.show();
		var barcode = this.formElement.getElement('input.barcode').value;
		var initial = this.formElement.getElement('input.initials').value;
		var prefix = this.formElement.getElement('input.prefix').value;
		var surname = this.formElement.getElement('input.surname').value;
		var city = this.formElement.getElement('input.city').value;
		var street = this.formElement.getElement('input.street').value;
		var phone = this.formElement.getElement('input.phone').value;
		var country = null;
		this.formElement.getElements('option[class=country]').each(function(item,index){
			if(item.selected === true){
				country = item.value;
			}
		}.bind(this));
		var number = this.formElement.getElement('input.number').value;
		var birthdateArr = this.formElement.getElement('input.birthdate').value.split('-');
		if(birthdateArr.length > 1){
			var convDate = birthdateArr[1]+'/'+birthdateArr[0]+'/'+birthdateArr[2];
			//var convDate = birthdateArr[2]+'-'+birthdateArr[1]+'-'+birthdateArr[0];
			var birthdate = convDate;
		}else{
			var birthdate = "";
		}
		var zipcode = this.formElement.getElement('input.zipcode').value;
		var numbers = this.formElement.getElement('input.numbersuffix').value;
		var email = this.formElement.getElement('input.email').value;
		var sex = null;
		this.formElement.getElements('input[class=sex]').each(function(item,index){
			if(item.checked === true){
				sex = item.value;
			}
		}.bind(this));
		
		
		var cityObject = {"city":city,"country":country,"id":barcode,"number":number,"numberSuffix":numbers,"street":street,"zipcode":zipcode}
		var hashObject = {"address":cityObject,"birthdate":birthdate,"email":email,"id":this.UID,"initials": initial, "optIn":true,"phone":phone,"prefix":prefix,"sex":sex,"surname":surname}

		var request = new Request({
			url: karw.context+ '/IGKarweiServices/resources/client/customer/'+this.hashCode+'?random='+Math.random(),
			emulation:false,
			data: JSON.encode(hashObject),
			onSuccess: this.doSubmitAction.bind(this),
			onFailure: this.failMessageCustomer.bind(this)
		});
		request.setHeader("Content-Type","application/json; charset=utf-8");
		request.put();
		
		//var request = new Request({
		//	method: 'post',
		//	data: hashObject,
		//	emulation: false,
		//	headers: {"Content-Type":"application/json","Accept":"application/json, text/javascript, */*"},
		//	url: karw.context+ '/IGKarweiServices/resources/client/card',
		//	onSuccess: this.doSubmitAction.bind(this),
		//	onFailure: this.failMessageCustomer.bind(this)
		//});
		//request.setHeader("Content-Type","application/json; charset=utf-8");
		//request.send();
		
	},
	
	
	doSubmitAction: function(response){
		this.loader.hide();
		this.formElement.setStyle('display','none');
		$('success').setStyle('display','block');
		
	},
	failMessageCustomer: function(xhr){
		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 == "409"){
			var responseTextArray = 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){
						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'});
				}
			}
		}
	},
	
	failMessage: function(){
		this.loader.hide();
		$('failure').setStyle('display','block');
	}
});