karw.formNewcard = 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', 'prefix', 'surname', 'email', 'barcode', 'zipcode'].each(function(i,index){
			if (this.prevFormElement.getElement('input#'+i)) {
				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));
		
		var country = null;
		this.prevFormElement.getElements('option[class=country]').each(function(item,index){
			if(item.selected === true){
				country = item.value;
			}
		}.bind(this));
		this.formElement.getElements('option[class=country]').each(function(item,index){
			if(item.value == country){
				item.selected = 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');
		this.enableSubmit();
		
	},
	
	
	enableSubmit: function(){
		this.submitButton = this.formElement.getElement('.btn-verzenden');
		this.submitButton.addEvent('click',this.submitAction.bind(this));
	},
	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 hashObject = {"barcode":barcode,'birthdate':birthdate,"city":city,"country":country,"id":'1',"number":number,"numberSuffix":numbers,"street":street,"zipcode":zipcode,"email":email,"id":'1',"initials": initial, "optIn":true, "phone":phone,"prefix":prefix,"sex":sex,"surname":surname};
		
		var request = new Request({
			method: 'post',
			data: hashObject,
			emulation: false,
			headers: {"Accept":"application/json, text/javascript, */*"},
			url: karw.context+ '/IGKarweiServices/resources/client/card?source=KHweb-' + gTemplateName,
			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){
		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")){
			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 mainElement = setFault(field);
					
					var errorArea = mainElement.getElement('.sub-area');
					if(errorArea){
						if(error[1] == 'zipcode'){
							forms_showZipcodeErrorNew(errorArea, this.formElement);
						}
						else if(error[1] == 'email'){
							showErrorMessage(errorArea, '.email_valid');
						}
						else if(error[1] == 'number'){
							showErrorMessage(errorArea, '.error_nonumber');
						}
					}
				}
				if(error[0] == "EMAIL_EXISTS" ){
					var field = this.formElement.getElement('input.email');
					if(field === null){
						var field = this.formElement.getElement('input#email');
					}
					var mainElement = setFault(field);
					
					var errorArea = mainElement.getElement('.sub-area');
					showErrorMessage(errorArea, '.error_email_exists');
				}
				if(error[0] == 'PARAMETER_OUTSIDE_RANGE'){
					var field = this.formElement.getElement('input.number');
					if(field === null){
						var field = this.formElement.getElement('input#number');
					}
					var mainElement = setFault(field);
					
					var errorArea = mainElement.getElement('.sub-area');
					if(errorArea){
						showErrorMessage(errorArea, '.error_number_tolarge');
					}
				}
				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');
	}
});
