var ExtendedSearch = Class.create();
ExtendedSearch.prototype = {
	initialize: function(form, labelfieldsidobject, standardtext, nocreteriamessage, nocreteriapressmessage, presseurl, productmode){
	    var searchform = $(form);
		
		if ($('searchfield_name')) {
			$('searchfield_name').observe('blur', function(){
				setDefault('searchfield_name', false, standardtext);
			});
			$('searchfield_name').observe('focus', function(){
				setDefault('searchfield_name', true, standardtext);
			});
			$('searchfield_name').observe('keyup', function(){
				var value = $('searchfield_name').value;
				$('tx-indexedsearch-sword').value = value;
			});
		}
		if ($('medientyp')) {
			/*Medientypen abfangen*/
			$('medientyp').observe('change', function(){
				var value = $('medientyp').getValue();
				//        console.log(value + '(Medientyp)' );
				if (value == 1) {
					console.log('set show all');
					$('productsearch-showall').value = 1;
					$('productsearch-limit').value = 24;
				}
				else {
//					console.log('remove show all');
					$('productsearch-showall').value = 0;
					$('productsearch-limit').value = 4;
				}
				if (value == 2) {
					$('productsearch-showall').value = 0;
					$('productsearch-limit').value = 4;
				}				
			});
		}
	
	    $('priceselect').observe('change', function(){
	        var value = $('priceselect').getValue();
	        if(value != 0){
	            var parts = value.split('-');
	            var from = parts[0].strip();
	            var to = parts[1].strip();
	            $('pricefrom').value = from;
	            $('priceto').value = to;
	        }
	        else{
	            $('pricefrom').value = '';
	            $('priceto').value = '';
	        }
	    });
	    
		
		//Form Validation
	    searchform.observe('submit', function(e){
	        Event.stop(e);
			var error = false;
			if ($('medientyp') && $('medientyp').getValue() == 2){
				if($('searchfield_name').value === standardtext){
					error = true;
                    alert(nocreteriapressmessage);
				}
				else{
					window.location.href = presseurl + '?search=1&tx_ttnews[swords]=' + $('searchfield_name').value;
                    return false;
				}
			}			
			if(productmode){
				if ($('langselect').value === '' &&
                $('priceselect').value === '' &&
                $('ageselect').value === '' &&
				$('brandselect').value === '' &&
                $('mediaselect').value === '') {
                    error = true;
                    alert(nocreteriamessage);
                }
			}
			else{
				if ($('langselect').value === '' &&
				$('priceselect').value === '' &&
				$('ageselect').value === '' &&
				$('mediaselect').value === '' &&
				$('brandselect').value === '' &&
				$('searchfield_name').value === standardtext) {
					error = true;
					alert(nocreteriamessage);
				}
			}
			if (!error) {
//				console.log(standardtext); 
				if ($('searchfield_name') && $('searchfield_name').value == standardtext) {
					$('searchfield_name').value = '';
					$('tx-indexedsearch-sword').value = '';	
					var fields = Object.keys(labelfieldsidobject);
//			        console.log(fields);
			        var selctedcount = 0;
					for (var i = 0; i < fields.length; i++) {
                        var field = $(labelfieldsidobject[fields[i]]);
                        if (field && field.value != '') {
                            selctedcount++;
                        }
                    }
					for(var i = 0; i < fields.length; i++){
//						console.log(fields[i] + ':' + labelfieldsidobject[fields[i]]); 
                        var field = $(labelfieldsidobject[fields[i]]);
                        if(field && field.value != '') {                            
                            $('tx-indexedsearch-sword').value += fields[i]+ ': ' + field.getSelectedOptionHTML();
							if(i < selctedcount - 1){
								$('tx-indexedsearch-sword').value += ', ';
							}
                        }
					}			
				}
				if(productmode){
					$('tx-indexedsearch-sword').value = '';
					var fields = Object.keys(labelfieldsidobject);
//                  console.log(fields);
                    var selctedcount = 0;
					for (var i = 0; i < fields.length; i++) {
						var field = $(labelfieldsidobject[fields[i]]);
                        if (field && field.value != '') {
							selctedcount++;
						}
					}
                    for(var i = 0; i < fields.length; i++){
//                      console.log(fields[i] + ':' + labelfieldsidobject[fields[i]]); 
                        var field = $(labelfieldsidobject[fields[i]]);
                        if(field && field.value != '') {                                             
                            $('tx-indexedsearch-sword').value += fields[i]+ ': ' + field.getSelectedOptionHTML();
                            if(i < selctedcount - 1){
                                $('tx-indexedsearch-sword').value += ', ';
                            }
                        }
                    }    
				}
				searchform.submit();
			}				        
	    });
    }
}; 
