/* Copyright (c) 2006 Mathias Bank (http://www.mathias-bank.de)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Thanks to Hinnerk Ruemenapf - http://hinnerk.ruemenapf.de/ for bug reporting and fixing.
 */
jQuery.extend({
/**
* Returns get parameters.
*
* If the desired param does not exist, null will be returned
*
* @example value = $.getURLParam("paramName");
*/
 getURLParam: function(strParamName){
	  var strReturn = "";
	  var strHref = window.location.href;
	  var bFound=false;

	  var cmpstring = strParamName + "=";
	  var cmplen = cmpstring.length;

	  if ( strHref.indexOf("?") > -1 ){
	    var strQueryString = strHref.substr(strHref.indexOf("?")+1);
	    var aQueryString = strQueryString.split("&");
	    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
	      if (aQueryString[iParam].substr(0,cmplen)==cmpstring){
	        var aParam = aQueryString[iParam].split("=");
	        strReturn = aParam[1];
	        bFound=true;
	        break;
	      }

	    }
	  }
	  if (bFound==false) return null;
	  return strReturn;
	}
});

noAjax = 0;
YAHOO.widget.Slider.sliderWidth = 200;

function round(wert, ds){
	var wert=(wert.toFixed)?wert.toFixed(ds):
	Math.floor(wert)+"."+(Math.pow(10,ds)+Math.round((wert-Math.floor(wert))*Math.pow(10,ds))+"").substr(1,ds);
	return wert;
}

function sliderHandle(theValue){
		var classType = $('input[name="sb_manageorders[class]"]').val();
		var name = $(this).attr('name');
		var realVal = this.getRealValue();
		// since the original fields doesn't contain numeric values, we copied them to
		// <fieldname>_num
		var fieldName = name + '_num';
		var elementName = 'sb_manageorders[slider][' + fieldName + ']';

		// add a hidden field for the slider value, to be able to pass it to server via form submit
		if($(':input[name="'+elementName+'"]').val()){
			// field already exists -> only change the value
			$(':input[name="'+elementName+'"]').val(realVal);
		}else{
			var newElement = '<input type="hidden" name="' + elementName + '" value="'+ realVal + '" />';
			$('form').append(newElement);
		}
		if(!this.dontMove){
			selectPlants();
		}else{
			// if page is reloaded sliders are set to position via setValue(), but WITHOUT triggering
			// the get-query, therefore it's set to dontMove
			// but after first function call we have to make it movable again
			if($('#sliderValues span[field="'+name+'"]').html() == '0') this.dontMove = false;
		}
	return false;
}
// We only need this function because we subscribe it on slider.change() event
function displayCurrentValueDummy(){
	this.displayCurrentValue();
}

YAHOO.widget.Slider.prototype.getRealValue = function(){
	var name = $(this).attr('name');
	var convFact = getConversionFactor(name);
	var sliderWidth = YAHOO.widget.Slider.sliderWidth;
	var realVal = (this.getValue() * convFact / sliderWidth) + getBaseValue(name);
	return realVal;
}

YAHOO.widget.Slider.prototype.displayCurrentValue = function(){
	var name = $(this).attr('name');
	var realVal = this.getRealValue();
	var unit = $('span[name="' + name + '"]').attr('unit');
	$('span[name="' + name + '"]').html('(' + round(realVal,0) + ' ' + unit +')');
	$('span[name="' + name + '"]').show();
	return true;
}

function selectPlants(){
	if (noAjax)
		return false;

	var basics = encodeURI('&sb_manageorders[action]=processJQuery');

	if ((srchFldId) && (srchDefault)) {
		if ($(srchFldId).val() == srchDefault) {
			$(srchFldId).val('');
		}
	}
	
	var form = $('form#plantfilter :input').serialize(); // serialize the form values
	var all = form + '&' + basics;
	var temp = $('#filterbox h3#filter_head span#filter_title').html();
	$('h2#filter_head span#loadergif').html('<img id="loading" src="typo3conf/ext/sb_manageorders/res/img/ajax-loader.gif" />');
	$.get('/index.php',
		all,
		function (data){ // fill the returned data (=the plant list) in the main div
			//window.setTimeout("$('#maincontent').html("+data+")",1);
			//$('#maincontent').html(data);
			$(data).ready(function(){
				$('h2#filter_head span#loadergif').html('');
				$('#maincontent').html('');
				$(data).appendTo('#maincontent');
				// in 'data' ist ein hidden div mit id "hiddenpager", den wir in unser pager div verschieben
				//$('#browseAndSearch #pager').html('');
				$('#pager').html('');
				var pager = $('#hiddenpager').html();
				//$(pager).appendTo('#browseAndSearch #pager');
				$(pager).appendTo('#pager');
				
				if($(srchFldId).val() == '') 
					$(srchFldId).val(srchDefault);
			});
	});
	return false;
}

$(document).ready(function(){
	$('div#filterbox input[type="checkbox"]').click(function(){
		/*
		var temp = '';
		$('form#plantfilter input').each(function(){
			temp = temp + "<br>" + $(this).attr('name') + ': ' + $(this).val();
			return temp;
		});
		alert(temp);
		*/
		selectPlants(this);
	});
	$('#pulldown').change(function(){
		$('form#plantfilter').submit();
		//selectPlants(this);
	});

	var sliderWidth = YAHOO.widget.Slider.sliderWidth;

	var one = YAHOO.widget.Slider.getHorizSlider("slider1", "sliderthumb1", 0, sliderWidth);
	one.name = 'rated_power_value';
	one.subscribe("slideEnd",sliderHandle);
	one.subscribe('change',displayCurrentValueDummy);

	var initVal1 = $('#sliderValues span[field="rated_power_value"]').html() * sliderWidth / getConversionFactor('rated_power_value')-(getBaseValue('rated_power_value') * sliderWidth / getConversionFactor('rated_power_value'));
	if(initVal1 > 0){
		one.dontMove = true;
		one.setValue(initVal1);
		$('#sliderValues span[field="rated_power_value"]').html('0');
	}

	var two = YAHOO.widget.Slider.getHorizSlider("slider2", "sliderthumb2", 0, sliderWidth);
	two.name = 'rotor_diameter';
	two.subscribe("slideEnd",sliderHandle);
	two.subscribe('change',displayCurrentValueDummy);
	var initVal2 = $('#sliderValues span[field="rotor_diameter"]').html() * sliderWidth / getConversionFactor('rotor_diameter')-(getBaseValue('rotor_diameter') * sliderWidth / getConversionFactor('rotor_diameter'));
	if(initVal2 > 0){
		two.dontMove = true;
		two.setValue(initVal2);
		$('#sliderValues span[field="rotor_diameter"]').html('0');
	}

	var three = YAHOO.widget.Slider.getHorizSlider("slider3", "sliderthumb3", 0, sliderWidth);
	three.name = 'tower_hub_height';
	three.subscribe("slideEnd",sliderHandle);
	three.subscribe('change',displayCurrentValueDummy);
	var initVal3 = $('#sliderValues span[field="tower_hub_height"]').html() * sliderWidth / getConversionFactor('tower_hub_height') - (getBaseValue('tower_hub_height') * sliderWidth / getConversionFactor('tower_hub_height'));
	if(initVal3 > 0){
		three.dontMove = true;
		three.setValue(initVal3);
		$('#sliderValues span[field="tower_hub_height"]').html('0');
	}

	var tick = 1;

	// solange ein Plus-/Minus-Button gedrückt wird, ändern wir nur die Anzeige
	// des aktuellen Werts. Da der slider aber immer bei setValue() ein slideEnd event
	// feuert, würde jedesmal unsere jquery getriggert werden, wir wollen aber, dass sie erst
	// beim Loslassen des Buttons losgeht. Also setzen wir dontMove auf true und dann später
	// in mouseup wieder auf false! Toll, was?

	$('#plusone').mousehold(function(){
		one.dontMove = true;
		one.displayCurrentValue();
		one.setValue(one.getValue() + tick);
	});

	$('#minusone').mousehold(function(){
		one.dontMove = true;
		one.displayCurrentValue();
		one.setValue(one.getValue() - tick);
	});
	$('#plustwo').mousehold(function(){
		two.dontMove = true;
		two.displayCurrentValue();
		two.setValue(two.getValue() + tick);
	});

	$('#minustwo').mousehold(function(){
		two.dontMove = true;
		two.displayCurrentValue();
		two.setValue(two.getValue() - tick);
	});

	$('#plusthree').mousehold(function(){
		three.dontMove = true;
		three.displayCurrentValue();
		three.setValue(three.getValue() + tick);
	});

	$('#minusthree').mousehold(function(){
		three.dontMove = true;
		three.displayCurrentValue();
		three.setValue(three.getValue() - tick);
	});

	$('#plusone').mouseup(function(){
		one.dontMove = false;
		one.setValue(one.getValue());
	});
	$('#minusone').mouseup(function(){
		one.dontMove = false;
		one.setValue(one.getValue());
	});
	$('#plustwo').mouseup(function(){
		two.dontMove = false;
		two.setValue(two.getValue());
	});
	$('#minustwo').mouseup(function(){
		two.dontMove = false;
		two.setValue(two.getValue());
	});
	$('#plusthree').mouseup(function(){
		three.dontMove = false;
		three.setValue(three.getValue());
	});
	$('#minusthree').mouseup(function(){
		three.dontMove = false;
		three.setValue(three.getValue());
	});
	
	if ((typeof(srchFldId) != 'undefined') && (typeof(srchDefault) != 'undefined')) {
		// Suche Feld vorbelegen //
		if($(srchFldId).val() == '') 
			$(srchFldId).val(srchDefault);
	
		$(srchFldId).click(function(){
			if($(srchFldId).val() == srchDefault) 
				$(this).val('');
		});
	
		$(srchFldId).blur(function(){
			if($(this).val() == '') 
				$(this).val(srchDefault);
		});
		
		$("#plantfilter").submit(function(){
			if ($(srchFldId).val() == srchDefault) {
				$(srchFldId).val('');
			}
			return true;
		});
	}
});

