
Ext.formmanager= Ext.extend(Ext.Component, {
	formvariable: [],
	
	getLabelText: function(r){
		var labeltext="";
		var label = Ext.get(r.dom.id + '_label');
		 if ((typeof label =='object') && (label !=null) ){
		 	labeltext=label.dom.innerHTML;
		 	label.remove();
		 }
		 else {
			 label = Ext.select('label[for='+r.dom.id + ']');
		 	if ((typeof label.elements[0] =='object') && (label.elements[0] !=null) ){
		 	return label.elements[0].innerHTML;
		 	}
		 }
		 return labeltext
	},
	transformInputFields: function(){
	// selektieren der Inputfelder
	var Fields = Ext.select('.order input');

	Fields.each(function(r){
		var x=0;
		var classes = null;
		var currentclass = null;
		var type = "";
		
		if (typeof r.dom.attributes['class'] != 'undefined'){
				classes = r.dom.attributes['class'].value.split(" ");
				for (x=0;x<classes.length;x++){
					currentclass = classes[x].split('_');
					if (currentclass[0] == 'fmgr'){
						if (currentclass[1] == 'date')
							type = 'date';
						
					}
				}
		}
					
  		var labelText = this.getLabelText(r);	  	 		
  		 var config = {
		 applyTo:r.dom.id,
		 id:r.dom.id,
		 name:r.dom.name,
		 msgTarget:'qtip',
		 allowBlank:1,
		 value:r.dom.value,
		 boxLabel: labelText,
		 checked: r.dom.checked
	 	};
  		 
  		 if (type == 'date')
  			tempfield = new Ext.form.DateField(config);  			 
  		 else if (r.dom.type == 'radio')
  			tempfield = new Ext.form.Radio(config);
  		 else if (r.dom.type == 'checkbox')
  			tempfield = new Ext.form.Checkbox(config);
  		 else
	  		tempfield = new Ext.form.TextField(config);
	 	
  		 
  		 r.on('blur',function(e,r,i){
  			var maxLength = Number.MAX_VALUE;
  			var minLength = 0;
  			var allowBlank = 1;
  			r = Ext.getCmp(r.id);
  			if (typeof r.el.dom.attributes['class'] != 'undefined'){
  				classes = r.el.dom.attributes['class'].value.split(" ");
  				for (x=0;x<classes.length;x++){
  					currentclass = classes[x].split('_');
  					if (currentclass[0] == 'fmgr'){
  						if (currentclass[1] == 'maxlen')
  							maxLength = currentclass[2];
  						if (currentclass[1] == 'minlen')
  							minLength = currentclass[2];
  						if (currentclass[1] == 'req'){
  							allowBlank = 0;
  						}  						
  					}
  				}
  			}
  			r.allowBlank = allowBlank;
  			r.minLength = minLength;
  			r.maxLength = maxLength;
  			r.validate();
  		 },this);
  		 
		},this);	
		
	},
	
	transformButtons:function(){
		// vereinfachung damit es fertig wird... 
		var shown=Ext.select('.order .fmgr_show');
		var hided=Ext.select('.order .fmgr_hide');		
		shown.removeClass('fmgr_show').addClass('fmgr_hide');
		hided.removeClass('fmgr_hide').addClass('fmgr_show');
		
		
			
		/*	... aber das w�r cooler
		Fields = Ext.select('.order .fmgr_convert');
		Fields.each(function(r){				 
		     var labelText = this.getLabelText(r);
	   		 var config = {
			 defaultType: r.dom.type,
			 typeAhead: true,
		     triggerAction: 'all',
		     forceSelection:true,
		     applyTo:r.dom.id,
			 id:r.dom.id,
			 name:r.dom.name,
			 value:r.dom.value
		 	}
	   		new Ext.Button(config);			
			
		},this); */
		
		// submit buttons
		var Fields = Ext.select('.order .fmgr_submit');
		Fields.each(function(r){
			r.on("click", function(e){
				
					if(Ext.getCmp('showform_0').getValue())
						bShort = 1;
					else
						bShort = 0;
					
				
					var error = 0;
					var errortext="";
					
					Ext.select('.fmgr_email').each(function(r){
						 var pattern=/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.(([a-z]{2,3})|(aero|coop|info|museum|name))$/;
						    if(!pattern.test(r.dom.value)){
						    	errortext="Bitte geben sie eine valide E-Mail-Adresse an! <br/>";
						    	error = 1;
						    }
					});
					
					Ext.select('.fmgr_req').each(function(r){
						if (r.dom.value == '')
							error = 1;
					});	
					
					Ext.select('.fmgr_req_1').each(function(r){
						if (!r.dom.checked){
							error = 1;
							errortext="Bitte stimmen sie den AGB und Datenschutzbestimmungen zu! <br/>";
						}
					});		
					
					// Radio's überprüfen
					if(!bShort) {
						bChk = 0;
						Ext.select('.fmgr_req_2').each(function(r){
							if (r.dom.checked) {
								bChk = 1;
							}
						});		
						if(!bChk) {
							error = 1;
						}
					}
					
					if(!bShort) {
						bChk = 0;
						Ext.select('.opt_17_85').each(function(r){
							if (r.dom.checked) {
								bChk = 1;
							}
						});		
						if(!bChk) {
							error = 1;
						}
					}
					
					if (!bShort) {
						for(i=88; i<=92; i++) {
							bChk = 0;
							Ext.select('.opt_15_'+i).each(function(r){
								if (r.dom.checked) {
									bChk = 1;
								}
							});		
							if(!bChk) {
								error = 1;
							}
						}
					}
									
										
					if (!error){
						Ext.MessageBox.wait("Speichern...");
						var conn = new Ext.data.Connection();					
						conn.request({
						    url: Ext.select('.order').elements[0].attributes['action'].value,
						    method: 'POST',
						    form:'question',
						    success: function(responseObject) {
								Ext.MessageBox.alert('Status', Ext.get('fmgr_result_msg').dom.innerHTML,function(){ self.location.href="/"; });
						    },
						     failure: function() {
						    	Ext.MessageBox.alert('Status', 'Fehler beim Aufruf der Seite, bitte probieren sie es sp&auml;ter nochmal!');
					     }
						});
					}
					else 
						Ext.MessageBox.alert('Fehler', 'Bitte alle Felder mit * ausfuellen! <br/>'+ errortext)
				})
		});		
		

		var Fields = Ext.select('.order .fmgr_reset');
		Fields.each(function(r){
			r.on("click", function(e){
				self.location.href="/"; 
				})
		});	

	},
	
	transformSelectFields: function(){
		var Fields = Ext.select('.order select');

		Fields.each(function(r){
			 var labelText = this.getLabelText(r);
	   		 var config = {
			 defaultType: r.dom.type,
			 typeAhead: true,
		     triggerAction: 'all',
		     forceSelection:true,
			 transform:r.dom.id,
			 id:r.dom.id,
			 name:r.dom.name,
			 value:r.dom.value,
			 boxLabel: labelText,
			 checked: r.dom.checked
		 	}
	  		 new Ext.form.ComboBox(config);	 	
		},this);
		
	},

	transformCheckboxHide: function(){
		Ext.get('showform_1').parent().on("click", function(e){
			Ext.select('.questionary').setDisplayed('');
			Ext.getCmp('country_btorder1').setDisabled(true);
			Ext.getCmp('priv_country_btorder1').setDisabled(true);
		});
		Ext.get('showform_0').parent().on("click", function(e){
			Ext.select('.questionary').setDisplayed('none');
			Ext.getCmp('country_btorder1').setDisabled(false);
			Ext.getCmp('priv_country_btorder1').setDisabled(false);
		});
		
		Ext.get('priv_addr').parent().on("click", function(e){
			if (Ext.select('.private_address').elements[0].style.display == 'none')
				Ext.select('.private_address').setDisplayed('');
			else
				Ext.select('.private_address').setDisplayed('none');
		});		
		
	},
	
	
	initComponent: function(){
		this.transformInputFields();		
		this.transformSelectFields();
		this.transformButtons();
		this.transformCheckboxHide();	
		
		Ext.QuickTips.init();				
		Ext.formmanager.superclass.initComponent.call(this);
	}, 

	start: function(){
 	}
});

Ext.onReady(function(){
Ext.fvwformmanager=new Ext.formmanager();
Ext.fvwformmanager.start();
Ext.getCmp('country_btorder1').setDisabled(true);
Ext.getCmp('priv_country_btorder1').setDisabled(true);
})
