function _getYear() {
	datum = new Date();
	year = datum.getFullYear();
	return year;
}
function mergeO( first ) {
	if ( mergeO.arguments.length >= 2 ) {
		opt = {};
		for ( i = 0; i < mergeO.arguments.length; i++ ) {
			jQuery.each(mergeO.arguments[i], function(k, v) { 
				opt[k] = v;
			});
		}
		return opt;
	}
	return first;
}
jQuery.fn.extend({
	setdots: function(val){
		var newString = "";
		val = val.toString();
		while(true) {
			if (val.length > 3) {
				var subS = val.substr(val.length - 3, 3);
				val = val.substring(0, val.length - 3);
				newString = subS + "." + newString;
			} else {
				newString = val + "." + newString;
				break;
			}
		}
		return newString.substring(0,newString.length-1);
	},
	jSlider: {
		hashfilter: [
			'art',
			'section',
			'b2b',
			'kategorie',
			'hersteller',
			'besitzer',
			'typ',
			'liegeplatz',
			'q'
		],
		used: false,
		config: function(sName) {
			sArt = jQuery('input[name="art"]','#searchform').val();
			sType = jQuery('input[name="section"]','#searchform').val();
			switch (sName) {
				case 'preisA':
					switch(sType) {
						case 'boote':
							switch(sArt) {
								case 'schlauch':
								case 'klein':
								case 'jet':
									v = [0,500,1000,1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,7000,8000,9000,10000,15000,20000,25000,30000];
									break;
								case 'motor':
								case 'segel':
								default:
									v = [0,1000,2000,3000,4000,5000,10000,20000,30000,40000,50000,65000,80000,95000,110000,150000,200000,300000,400000,500000,1000000];
									break;
							}
							break;
						case 'charterboote':
							switch(sArt) {
								case 'schlauch':
								case 'klein':
								case 'jet':
								case 'motor':
								case 'segel':
								default:
									v = [0,500,1000,1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,7500,8000,8500,9000,9500,10000];
									break;
							}
							break;
						default:
							v = [0,1000,2000,3000,4000,5000,10000,20000,30000,40000,50000,65000,80000,95000,110000,150000,200000,300000,400000,500000,1000000];
							break;
					}
					range = 'min'
					break;
				case 'preisB':
					switch(sType) {
						case 'boote':
							switch(sArt) {
								case 'schlauch':
								case 'klein':
								case 'jet':
									v = [5000,15000,25000,35000,45000,55000,70000,80000,90000,100000,150000,200000,250000,300000,400000,500000,600000,700000,800000,900000,1000000];
									break;
								case 'motor':
								case 'segel':
								default:
									v = [10000,25000,40000,55000,70000,85000,100000,250000,400000,550000,700000,850000,1000000,2500000,4000000,5500000,7000000,8500000,9000000,1000000,50000000];
									break;
							}
							break;
						case 'charterboote':
							switch(sArt) {
								case 'schlauch':
								case 'klein':
								case 'jet':
								case 'motor':
								case 'segel':
								default:
									v = [500,1000,1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,7500,8000,8500,9000,9500,10000, 15000];
									break;
							}
							break;
						default:
							v = [10000,25000,40000,55000,70000,85000,100000,250000,400000,550000,700000,850000,1000000,2500000,4000000,5500000,7000000,8500000,9000000,1000000,50000000];
							break;
					}
					range = 'max';
					break;
				case 'laengeA':
					switch(sArt) {
						case 'schlauch':
						case 'klein':
						case 'jet':
							v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
							break;
						case 'motor':
						case 'segel':
						default:
							v = [];
							for ( i = 0; i <= 50; i++ ) {
								v[i] = i;  
							}
							break;
					}
					range = 'min';
					break;
				case 'laengeB':
					switch(sArt) {
						case 'schlauch':
						case 'klein':
						case 'jet':
							v = [5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
							break;
						case 'motor':
						case 'segel':
						default:
							v = [];
							for ( i = 5; i <= 60; i++ ) {
								v[i] = i;  
							}
							break;
					}
					range = 'max';
					break;
				case 'laenge':
					switch(sArt) {
						case 'schlauch':
						case 'klein':
						case 'jet':
							v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
							break;
						case 'motor':
						case 'segel':
						default:
							v = [];
							for ( i = 0; i <= 60; i++ ) {
								v[i] = i;  
							}
							break;
					}
					range = true;
					break;
				case 'baujahrA':
					v = [];
					for ( i = 0; i <= 101; i++ ) {
						v[i] = (_getYear() - 100 + i);  
					}
					range = 'min';
					break;
				case 'baujahrB':
					v = [];
					for ( i = 0; i <= 71; i++ ) {
						v[i] = (_getYear() - 70 + i);  
					}
					range = 'max';
					break;
				case 'baujahr':
					v = [];
					for ( i = 0; i <= 100; i++ ) {
						v[i] = (_getYear() - 99 + i);  
					}
					range = true;
					break;
				case 'schlaf':
					range = 'min';
					v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
					break;
				default:
					range = 'min';
					v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
					break;
			}
			opt = {
				range: range,
				values: v
			}			
			return opt;
		},
		init: function() {
			jQuery('select','#searchform').change(function(){
				hash = jQuery().jSlider.getHash(true);
				jQuery().jSlider.used = true;
				jQuery.historyLoad(hash);
			});
			jQuery('input:checkbox','#searchform').change(function(){
				hash = jQuery().jSlider.getHash(true);
				jQuery().jSlider.used = true;
				jQuery.historyLoad(hash);
			});
			jQuery('#sliderReset').click(function(){
				jQuery().jSlider.handler.reset();
			});
			jQuery('#sliderSave').click(function(){
				jQuery(this).bookmark();
			});
			jQuery('span[title]', '#slider').each(function() {
				opt = jQuery().jSlider.config(this.title);
				if ( opt.range === true ) {
					jQuery(this).slider({
						range: opt.range,
						min: 0,
						max: opt.values.length-1,
						values: [0, opt.values.length],
						slide: function(e, ui) {
							jQuery().jSlider.handler.slide(jQuery(this).slider('values'), this.title);
						},
						stop: function (e, ui) {
							jQuery().jSlider.handler.stop(jQuery(this).slider('values'), this.title);
						}
					});
				} else {
					if ( opt.range == 'max' ) {
						v = opt.values.length;
					} else {
						v = 0;
					}
					jQuery(this).slider({
						range: opt.range,
						min: 0,
						max: opt.values.length-1,
						value: v,
						slide: function(e, ui) {
							jQuery().jSlider.handler.slide(ui.value, this.title);
						},
						stop: function (e, ui) {
							jQuery().jSlider.handler.stop(ui.value, this.title);
						}
					});					
				}
			});
			
			jQuery.historyInit(jQuery().jSlider.getList);
			if ( hash = window.location.href.split('?')[1] ) {
				if ( h = hash.split('#')[1] ) {
					hash = h;
				}
				jQuery().jSlider.setSlider(hash);
				return true;
			}
			if ( hash = window.location.href.split('#')[1] ) {
				jQuery().jSlider.setSlider(hash);
				return true;
			}
			jQuery().jSlider.setSlider('');
		},
		handler: {	
			slide: function(v, e) {
				opt = jQuery().jSlider.config(e);
				value = [];
				if ( typeof v == 'object') {
					value[0] = opt.values[v[0]];
					value[1] = opt.values[v[1]];
				} else {
					value[0] = opt.values[v]; 
				}
					
				jQuery().jSlider.handler.setData(e, value);
			},
			stop: function(v, e) {
				jQuery().jSlider.handler.slide(v, e);
				hash = jQuery().jSlider.getHash(true);
				jQuery().jSlider.used = true;
				jQuery.historyLoad(hash);
			},
			setData: function(e, v) {
				var conf = jQuery().jSlider.config(e);
				if ( e.indexOf('preis') >= 0 ) {
					v[0] = jQuery().setdots(v[0]);
				}
				jQuery('span','#'+e).html(v.join(" - "));
				for(i = 0; i < v.length; i++) {
					v[i] = v[i].toString().replace(/\./g, '');
				}
				if ( v[0] <= conf.values[0] && ( conf.range == 'min' || conf.range == true )) {
					v[0] = '';
				}
				if ( v[1] >= conf.values[conf.values.length - 1] && conf.range == true) {
					v[1] = '';
				}
				if ( v[0] >= conf.values[conf.values.length - 1] && conf.range == 'max' ) {
					v[0] = '';
				}
				if ( conf.range === true ) {
					jQuery('input[name="'+e+'A"]','#searchform').val(v[0]);
					jQuery('input[name="'+e+'B"]','#searchform').val(v[1]);	
				} else {
					jQuery('input[name="'+e+'"]','#searchform').val(v[0]);
				}
			},
			reset: function() {
				jQuery('span[title]', '#slider').each(function() {
					var e = this.title;
					var v = [];
					var opt = jQuery().jSlider.config(e);
					if ( opt.range === true ) {
						v[0] = 0;
						v[1] = opt.values.length -1;
					} else {
						if ( opt.range == 'max' ) {
							v[0] = opt.values.length -1;
						} else {
							v[0] = 0;
						}
					}
					
					if ( opt.range === true ) {
						jQuery(this).slider('values', 0, v[0]);
						jQuery(this).slider('values', 1, v[1]);
						v[0] = opt.values[v[0]];
						v[1] = opt.values[v[1]];
						jQuery().jSlider.handler.setData(e, v);
					} else {
						jQuery(this).slider('value',v[0]);	
						v[0] = opt.values[v[0]];
						jQuery().jSlider.handler.setData(e, v);		
					}
				});
				window.location.hash = '';
				window.location.search = '';
			}
		},
		getHash: function(filter) {
			cacheArray = jQuery('#searchform').serializeArray();
			hashArray = [];
			y = 0;
			jQuery.each(cacheArray, function(k, i) {
				if ( i.value != '' && i.value != 0) {
					i.value = encodeURIComponent(i.value);
					if ( filter === true ) {
						if ( jQuery.inArray(i.name, jQuery().jSlider.hashfilter) < 0 ) {
							hashArray[y] = i.name+"="+i.value;
							++y;
						} 
					} else if ( filter === 'onlyFilter' ) {
						if ( jQuery.inArray(i.name, jQuery().jSlider.hashfilter) >= 0 ) {
							hashArray[y] = i.name+"="+i.value;
							++y;
						} 
					} else {
						hashArray[y] = i.name+"="+i.value;
						++y;
					}
				}
			});
			if ( hashArray.length <= 0 ) {
				return 'empty=request';
			}
			return hashArray.join("&");
		},
		getList: function(h) {
			if ( h != '' ) {
				jQuery(document).ready(function() {
					hash = jQuery().jSlider.getHash('onlyFilter')+ (h != '' ? "&"+h : '');
					var matches = [];
					if ( ( matches = window.location.pathname.match(/^\/iframe(_charter|_anzeigen)?/)) ) {

						if ( typeof matches[1] == 'string' ) {
							hash = hash.replace('section=iframe', 'section=iframe'+matches[1]);
						}
						hash += window.location.search.replace(/\?/, '&');
					} else {
						url = window.location.pathname.match(/^[\/][a-z]{2}[\/]([a-zA-Z0-9\/\_ %]+)[\.html|\-0-9\.html]+$/);
						if ( url.length > 1 ) { 
							hash += "&url="+url[1];
						}
					} 
					jQuery().jSlider.setSlider(h);
					if (jQuery('#loading-indicator').length < 1) {
						jQuery('#loadList').empty();
						jQuery('<center id="loading-indicator" style="margin-top:220px;">' 
						+'	<img src="/design/images/loading.gif" />'
						+'</center>').appendTo('#loadList');
					}
					jQuery('#loadList').load('/'+GLOBAL.language+'/ajax/getList.php', hash, function() {
						jQuery(".picPopup").picPopup();
					});
				});
			} 
		},
		setSlider: function(hash) {
			jQuery('span[title]', '#slider').each(function() {
				var e = this.title;
				var v = [];
				var opt = jQuery().jSlider.config(e);
				if ( opt.range === true ) {
					v[0] = 0;
					v[1] = opt.values.length -1;
				} else {
					if ( opt.range == 'max' ) {
						v[0] = opt.values.length -1;
					} else {
						v[0] = 0;
					}
				}
				
				if ( hash != '' && hash != undefined ) {
					get = hash.split("&");
					jQuery.each(get, function(k, i){
						var info = i.split("=");
						if ( info[0].indexOf(e) >= 0 ) {
							if ( opt.range === true ) {
								c = ( (info[0].indexOf('A') > 0 ) ? 0 : 1 );
								v[c] = jQuery.inArray(parseInt(info[1]), opt.values);
							} else {
								v[0] = jQuery.inArray(parseInt(info[1]), opt.values);
							}
						} 
					});
				}
				if ( opt.range === true ) {
					jQuery(this).slider('values', 0, v[0]);
					jQuery(this).slider('values', 1, v[1]);
					v[0] = opt.values[v[0]];
					v[1] = opt.values[v[1]];
					jQuery().jSlider.handler.setData(e, v);
				} else {
					jQuery(this).slider('value',v[0]);	
					v[0] = opt.values[v[0]];
					jQuery().jSlider.handler.setData(e, v);		
				}
			});
		}
	}
});

