var errorcounter = 0;
var errorcounterRadios = 0;
var errorcounterCombos = 0;
var errorcounterModels= 0;
var errorcounterCaseno = 0;
var errorcounterMovmentno = 0;
var errorcounterEmail = 0;

//var lang = "de";
function validate(){
	isDataValid = true;
	errorcounter = errorcounter + 1;
	errorcounterCombos = errorcounterCombos +1;
	errorcounterModels = errorcounterModels +1;
	errorcounterCaseno = errorcounterCaseno +1;
	errorcounterMovmentno = errorcounterMovmentno +1;
	errorcounterEmail  = errorcounterEmail  + 1;
	
		watchData.getForm().items.each(function(f) {
	       //alert(f.getId() + ": " + f.getValue());
	    });
	
	Ext.getCmp('models1').validationEvent= false;
	Ext.getCmp('caseno').validationEvent= false;
	Ext.getCmp('movmentno').validationEvent= false;
	deaktivateContactFieldsValidation();
	//removeValidationText('x-form-invalid-msg');
	  
	var country = Ext.getCmp('countryAdressData').getValue();
	var firstname = Ext.get('firstname').getValue();
	var lastname = Ext.get('lastname').getValue();
	var plz = Ext.get('plz').getValue();
	var city = Ext.get('city').getValue();
	var email = Ext.get('email').getValue();
	var telefon = Ext.get('telefon').getValue();
	var model1 = Ext.get('models1').getValue();
	var caseno = Ext.get('caseno').getValue();
	var movmentno = Ext.get('movmentno').getValue();
	var state = Ext.getCmp('state').getValue();
	var disclaimer = Ext.getCmp('disclaimer').getValue();
	
	
	var stateField = Ext.get('state');
	var adress1Field = Ext.get('adress1');
	var adress2Field = Ext.get('adress2');
	
	var provinceField = Ext.get('province');
	var prefectureField = Ext.get('prefecture');
	var streetField = Ext.get('street');
	var housenumberField = Ext.get('housenumber');
	
	
	var state = '@IODUMMY@';
	var street = "@IODUMMY@";
	var housenumber = "@IODUMMY@";
	var adress1 = "@IODUMMY@";
	var adress2 = "@IODUMMY@";
	var province = "@IODUMMY@";
	var prefecture = "@IODUMMY@";
	
	
	if(prefectureField != null){
		var prefecture = Ext.getCmp('prefecture').getValue();
		errorHandlingCombobox('prefecture', prefecture);
	}
	
	if(provinceField != null){
		var province = Ext.getCmp('province').getValue();
		errorHandlingCombobox('province', province);
	}
	
	if(stateField != null){
		var state = Ext.getCmp('state').getValue();
		errorHandlingCombobox('state', state);
	}
	
	if(streetField != null){
		street = Ext.get('street').getValue();
		errorHandling('street', street);
	}
	if(housenumberField != null){
		housenumber = Ext.get('housenumber').getValue();
		errorHandling('housenumber', housenumber);
	}
	
	if(adress1Field != null){
		adress1 = Ext.get('adress1').getValue();
		errorHandling('adress1', adress1);
	}
	if(adress2Field != null){
		adress2 = Ext.get('adress2').getValue();
		errorHandling('adress2', adress2);
	}
	
	errorHandlingCombobox('models1', model1);
	errorHandlingCaseno('caseno', caseno);
	//errorHandling('movmentno', movmentno);
	errorHandling('firstname', firstname);
	errorHandling('lastname', lastname);
	errorHandling('plz', plz);
	errorHandling('city', city);
	errorHandlingCheckboxDisclaimer('disclaimer',disclaimer);
	
	// Validierung f?r die neue Uhr-Felder
	var newWatchdataError = 0;
	for(var i = 2; i < panelCounter+1; i++){
		// die modellCombos
		idModel = 'models' + i.toString();
		newModell = Ext.get(idModel).getValue();
		if(newModell == "" || newModell == null || newModell == getLabelText(lang, 'waehlen')){	
			createErrorNodeForFormHead();
			isDataValid = false;
			newWatchdataError = newWatchdataError + 1;
		}
		else if(Ext.get('errorIndication') != null){
			Ext.get('errorIndication').remove();
		}
		errorHandlingCombobox(idModel, newModell);
		// die Geh?usernummer
		
		idCaseno = 'caseno' + i.toString();
		newCaseno = Ext.get(idCaseno).getValue();
		if(newCaseno == "" || newCaseno == null || newCaseno.length != 6 ){	
			createErrorNodeForFormHead();
			isDataValid = false;
			newWatchdataError = newWatchdataError + 1;
		}
		else if(Ext.get('errorIndication') != null){
			Ext.get('errorIndication').remove();
		}
		
		errorHandlingCaseno(idCaseno, newCaseno);
		// die Uhrwerknummer
		/*
		idMovmentno = 'movmentno' + i.toString();
		newMovmentno = Ext.get(idMovmentno).getValue();
		if(newMovmentno == "" || newMovmentno == null || newMovmentno.length != 5){	
			createErrorNodeForFormHead();
			isDataValid = false;
			newWatchdataError = newWatchdataError + 1;
		}
		else if(Ext.get('errorIndication') != null){
			Ext.get('errorIndication').remove();
		}
		
		errorHandling(idMovmentno, newMovmentno);
		*/
		Ext.getCmp(idModel).validationEvent= false;
		Ext.getCmp(idCaseno).validationEvent= false;
		//Ext.getCmp(idMovmentno).validationEvent= false;
		deaktivateContactFieldsValidation();
		removeValidationText('x-form-invalid-msg');
	}
	
	if(contactm == "telefon"){
		
		//resetField('erroremail', 'email');
		errorHandling('telefon', telefon);
		
		if(email != "" && Ext.getCmp('email').validate() == false){
			validateEmailCrSrWr('email', email);
		}
		else{
			resetField('erroremail', 'email');
			
		}
		
	}
	
	if(contactm == "email"){
		//Ext.getCmp("email").validationEvent= false;
		resetField('errortelefon', 'telefon');
		
		if(email != "" && Ext.getCmp('email').validate() == false){
			validateEmailCrSrWr('email', email);
		}
		 validateEmail('email', email);
	}
	
	
	if(contactm == "post"){	
		resetField('errortelefon', 'telefon');	
		
		if(email != "" && Ext.getCmp('email').validate() == false){
			validateEmailCrSrWr('email', email);
		}
		else{
			resetField('erroremail', 'email');
			
		}
	}
	if(contactm == "email"){
		if((errorcounter >= 1) && ((country == "" || country == null)|| (firstname == "" || firstname == null) 
		|| (lastname == "" || lastname == null)|| (street == "" && streetField == null)
		||(housenumber == "" && housenumberField == null)|| (plz == "" || plz == null)
		|| (adress1Field != null && adress1 == "") ||(adress2Field != null && adress2 == "")
		||(stateField != null && state == "") 
		||(provinceField != null && province == "")
		||(prefectureField != null && prefecture == "")
		||(email != "" && Ext.getCmp('email').validate() == false)
		||(city == "" || city == null)|| (email == "" || email == null)|| (model1 == "" || model1 == null || model1 == getLabelText(lang, 'waehlen'))
		||(caseno == "" || caseno.length != 6)
		//|| (movmentno == "" || movmentno == null || movmentno.length != 5)
		||(disclaimer == false)|| newWatchdataError != 0)){
			
			isDataValid = false;
			createErrorNodeForFormHead();
		}
		else if(Ext.get('errorIndication') != null){
			Ext.get('errorIndication').remove();
		}	
		
	}
	if(contactm == "telefon"){
		if((errorcounter >= 1) && ((country == "" || country == null)|| (firstname == "" || firstname == null) 
		|| (lastname == "" || lastname == null)|| (street == "" && streetField == null)
		||(housenumber == "" && housenumberField == null)|| (plz == "" || plz == null)
		|| (adress1Field != null && adress1 == "") ||(adress2Field != null && adress2 == "")
		||(stateField != null && state == "") 
		||(provinceField != null && province == "")
		||(prefectureField != null && prefecture == "")
		||(email != "" && Ext.getCmp('email').validate() == false)
		||(city == "" || city == null)||(telefon == "" || telefon == null)||(model1 == "" || model1 == null || model1 == getLabelText(lang, 'waehlen'))
		||(caseno == "" || caseno.length != 6)
		//|| (movmentno == "" || movmentno == null || movmentno.length != 5)
		||(disclaimer == false)||newWatchdataError != 0)){
			
			isDataValid = false;
			createErrorNodeForFormHead();
		}
		else if(Ext.get('errorIndication') != null){
			Ext.get('errorIndication').remove();
		}	
		
		
	
	}
	if(contactm == "post"){
		if((errorcounter >= 1) && ((country == "" || country == null)|| (firstname == "" || firstname == null) 
		|| (lastname == "" || lastname == null)|| (street == "" && streetField == null)
		||(housenumber == "" && housenumberField == null)|| (plz == "" || plz == null)
		|| (adress1Field != null && adress1 == "") ||(adress2Field != null && adress2 == "")
		||(city == "" || city == null)||(model1 == "" || model1 == null || model1 == getLabelText(lang, 'waehlen'))
		||(stateField != null && state == "") 
		||(provinceField != null && province == "")
		||(email != "" && Ext.getCmp('email').validate() == false)
		||(prefectureField != null && prefecture == "")
		||(caseno == "" || caseno.length != 6)
		//|| (movmentno == "" || movmentno == null || movmentno.length != 5)
		)
		||(disclaimer == false)|| newWatchdataError != 0){
			
			isDataValid = false;
			createErrorNodeForFormHead();
		}
		else if(Ext.get('errorIndication') != null){
			Ext.get('errorIndication').remove();
		}	
		
	}
	
		
	if(state == '@IODUMMY@'){
		state = "";
	}
	if(housenumber == '@IODUMMY@'){
		housenumber = "";
	}
	if(street == '@IODUMMY@'){
		street = "";
	}
	if(adress2 == '@IODUMMY@'){
		adress2 = "";
	}
	if(adress1 == '@IODUMMY@'){
		adress1 = "";
	}
	if(province == '@IODUMMY@'){
		province = "";
	}
	if(prefecture == '@IODUMMY@'){
		prefecture = "";
	}
	var date=(Ext.get('purchasedatemonth').getValue()>0&&Ext.get('purchasedateday').getValue()>0&&Ext.get('purchasedateyear').getValue()?new Date(Ext.get('purchasedatemonth').getValue()+'/'+Ext.get('purchasedateday').getValue()+'/'+Ext.get('purchasedateyear').getValue()):null)
	if(date){
		var timeZone = -date.getTimezoneOffset()/60-1;
		date.setHours(timeZone>=0?timeZone:24-timeZone);
	}
	if(isDataValid){
		var countryKey =  getCountryKey(country,lang);
		var state = null;
		if(countryKey == 'US'){
			state =	Ext.getCmp('state').getValue();
			
		}else if(countryKey == 'JP'){
			state =	Ext.getCmp('prefecture').getValue();
	 	}else if(countryKey == 'IT'){
			state =	Ext.getCmp('province').getValue();
	 	}
	 	
	 
	 		 	
		
		var watchRegistration = {
			
			watches:[{
					model: Ext.getCmp('models1').getValue(),
					caseNo: Ext.get('caseno').getValue(),
					movementNo: movmentno,
					purchaseDate: date
					//(Ext.get('purchasedatemonth').getValue()>0&&Ext.get('purchasedateday').getValue()>0&&Ext.get('purchasedateyear').getValue()?new Date(Ext.get('purchasedatemonth').getValue()+'/'+Ext.get('purchasedateday').getValue()+'/'+Ext.get('purchasedateyear').getValue()):null)
					/*
					----rest properties in Watch -----
					    private String dealer;
					    private String dealerCity;
					    private Date purchaseDate;
					*/
				
				
				}],
				saveLanguage:lang,
				country: country,
				state: state,
				//salutation: getExtRadioGroupValue('salutation'),
				//salutation: getExtRadioGroupValue('salutation'),
				salutation:Ext.getCmp('salutation').getValue(),
				title: Ext.get('title').getValue(),
				firstname: firstname,
				lastname: lastname,
				lastname2: Ext.getCmp('lastname2').getValue(),
				street: street,
				streetNo: housenumber,
				additionalAddress: Ext.getCmp('additionalAdressData').getValue(),
				zip: plz,
				address1: Ext.getCmp('adress1').getValue(),
				address2: Ext.getCmp('adress2').getValue(),
				address3: Ext.getCmp('adress3').getValue(),
				city: city,
				email: email,
				phone1: telefon,
				prefContact: contactm,
				
				watchInterest: getCheckBoxGroupValue('watch_registration_checkbox'),
				hobby: getCheckBoxGroupValue('hobbies'),
				otherBrand:getCheckBoxGroupValue('otherBrands'),
				dayOfBirth: isNaN(Ext.getCmp('calendar_birthday'+'day').getValue())?0:Ext.getCmp('calendar_birthday'+'day').getValue(), 
	     		monthOfBirth: isNaN(Ext.getCmp('calendar_birthday'+'month').getValue())?0:Ext.getCmp('calendar_birthday'+'month').getValue(), 
	     		yearOfBirth: isNaN(Ext.getCmp('calendar_birthday'+'year').getValue())?0:Ext.getCmp('calendar_birthday'+'year').getValue(), 
				//wantupdates: getExtRadioGroupValue('newsletter_text'),
				wantupdates: Ext.getCmp('newsletter_text').getValue(),
				retailerCountry: Ext.getCmp('country2').getValue(),
				retailerName: Ext.getCmp('dealer').getValue(),
				mediaCode: getMediacode('mediacode_watch_registration'),
				privacy: Ext.getCmp('disclaimer').getValue()
				
				
				/*
				----rest properties in Contact------------
				  private String company;
				  private Date birthDay;
				  private String phone2;
				  private String phone3;
				  private String source;
				  private String remarks;
				  private String memberCount;
				  private String blocked;
				  private boolean emailReminder;
				  private String langId;
				  private String retailerNo;
			     */
			
		};
		
		for(var i=2; i<panelCounter+1;i++){
			var purchaseDate =
			(Ext.getCmp('purchasedate'+i+'month').getValue()>0&&Ext.getCmp('purchasedate'+i+'day').getValue()>0&&Ext.getCmp('purchasedate'+i+'year').getValue()?new Date(Ext.getCmp('purchasedate'+i+'month').getValue()+'/'+Ext.getCmp('purchasedate'+i+'day').getValue()+'/'+Ext.getCmp('purchasedate'+i+'year').getValue()):null);
			if(purchaseDate!=null){
				var timeZone = -purchaseDate.getTimezoneOffset()/60-1;
				purchaseDate.setHours(timeZone>=0?timeZone:24-timeZone);
			}
			
			watchRegistration.watches[i-1] = {
				model: Ext.getCmp('models'+i).getValue(),
				caseNo: Ext.get('caseno'+i).getValue(),
				movementNo: Ext.getCmp('movmentno'+i).getValue(),
				purchaseDate: purchaseDate
				
			};
		
		}
		
		formService.createWatchRegistration(watchRegistration,function(data){
			var ur = data;
			if(data!=null){
				window.location.href = "confirm-watch_registration.html?lang="+paramLanguage;
				//window.location = "confirm-watch_registration.html";
				window.scrollTo(0,0);
				parent.scrollTo(0, 0);
			}
			else{
				window.location.href = "errorpage.html?lang="+paramLanguage;
				//window.location = "errorpage.html";
				window.scrollTo(0,0);
				parent.scrollTo(0, 0);
			}
		});
		
		
		
	}
	initIframe();
}
