function handleChange(params) {
	
	// reset groups
	if (params.reset != null) {
		for (var i = 0; i < params.reset.length; i++) {
			resetGroup('select-' + params.reset[i]);
		}	
	}

	// load groups
	if (params.load != null) {	
		switch (params.load) {
			case 'intergroups':
				loadInterGroups();
			break;
			
			case 'articlegroups':
				loadArticleGroups();
			break;
		}
	}
	
	// get articlecount
	if (params.search != null) {
		if (params.search.length >= 1) {
			requestCount();
		}
	}

}

function resetForm() {
	window.location = 'index.php?id=132&L=' + Ext.get('language').getValue();
}

function resetGroup(id) {
	Ext.get(id).dom.innerHTML = '<option>---</option>';
}


function loadInterGroups() {
	
	var id = Ext.get('select-maingroup').dom.options[Ext.get('select-maingroup').dom.selectedIndex].value;
	
	// params
	var params = {container: 'wrapper-intergroups',
				  type: 'intergroups',
				  id: id};
	
	// ajax request
	requestGroups(params);

}

function loadArticleGroups() {

	var id = Ext.get('select-intergroups').dom.options[Ext.get('select-intergroups').dom.selectedIndex].value;
		
	// params
	var params = {container: 'wrapper-articlegroups',
				  type: 'articlegroups',
				  id: id,
				  parentId: Ext.get('select-maingroup').dom.options[Ext.get('select-maingroup').dom.selectedIndex].value};
		
	// ajax request
	requestGroups(params);
}


function requestGroups(params) {
		
	Ext.Ajax.request({
	   url: 'index.php?id=132&request=ajax&groupId='+params.id+'&type='+params.type+'&parentId='+params.parentId+'&L=' + Ext.get('language').getValue(),
	   method: 'GET',
	   success: function(response, opts) {
			Ext.get(params.container).update(response.responseText);
	   },
		 
	   failure: function(response, opts) {
		 	alert('Request failed!');
	   }
		 
	});			
}


function requestCount() {
	
	Ext.get('search-results').update('');
	
	var params = {container: 'wrapper-articlecount',
			  	  articleText: Ext.get('articleText').getValue(),
			  	  articleNumber: Ext.get('articleNumber').getValue(),
			  	  maingroup: Ext.get('select-maingroup').getValue(),
			  	  intergroup: Ext.get('select-intergroups').getValue(),
			  	  articlegroup: Ext.get('select-articlegroups').getValue()}	
		
	jsonParams = Ext.util.JSON.encode(params);
			
	Ext.Ajax.request({
	   url: 'index.php?id=132&request=ajax&requestType=count&L=' + Ext.get('language').getValue(),
	   method: 'GET',
	   params: {params: jsonParams},
	   success: function(response, opts) {
			Ext.get('wrapper-articlecount').update(response.responseText).show();
	   },
		 
	   failure: function(response, opts) {
		 	alert('Request failed!');
	   }
	});
}


function requestArticles() {
	
	if (validateForm()) {
	
		requestCount();

		var params = {container: 'search-results',
				  	  articleText: Ext.get('articleText').getValue(),
				  	  articleNumber: Ext.get('articleNumber').getValue(),
				  	  maingroup: Ext.get('select-maingroup').getValue(),
				  	  intergroup: Ext.get('select-intergroups').getValue(),
				  	  articlegroup: Ext.get('select-articlegroups').getValue()}	
	
		jsonParams = Ext.util.JSON.encode(params);
		
		//Ext.Ajax.on('beforerequest', showLoader, this);
		//Ext.Ajax.on('requestexception', hideLoader, this);
		//Ext.Ajax.on('requestcomplete', hideLoader, this);		
		
		Ext.get('loader').update('<img src="fileadmin/img/loader.gif" width="16" height="16" alt="loading..." />');
				
		Ext.Ajax.request({
		   url: 'index.php?id=132&request=ajax&requestType=result&L=' + Ext.get('language').getValue(),
		   method: 'GET',
		   params: {params: jsonParams},
		   success: function(response, opts) {
		   		Ext.get('loader').update('');
				Ext.get(params.container).update(response.responseText);
		   },
			 
		   failure: function(response, opts) {
			 	alert('Request failed!');
		   }
		   
		});
	} 
}

function showLoader() {
	Ext.get('loader').update('<img src="fileadmin/img/loader.gif" width="16" height="16" alt="loading..." />');
}

function hideLoader() {
	Ext.get('loader').update('');
}

function validateForm() {
	
	var input  = Ext.select('.required input');
	var select = Ext.select('.required select');
	var valid  = false;
		
	for (var i = 0; i < input.elements.length; i++) {
		if (Ext.get(input.elements[i]).getValue() != '') {
			valid = true
		}
	}
	
	for (var i = 0; i < select.elements.length; i++) {
		if (Ext.get(select.elements[i]).getValue() != '' &&
			Ext.get(select.elements[i]).getValue() != '---') {
			valid = true
		}
	}	
	
	if (!valid) {
		alert('Bitte Suche eingrenzen!\nVeuillez preciser votre recherche!');
		return false;
	}
	
	return valid;
}
