
// slider stuff...
// heads up: array boSliderValue must have as many items as there are sliders on a page

            // global is eval I know ...
			var boSliderValueInit      = 168;
			var maxPercentValue        = 333;
			var scaleFactor            = 166.5;
			var IncreaseDistance       = 30;
			var xPos;
			var yPos;
			var DecreaseDistance       = IncreaseDistance * -1;
			var boSliderValue          = new Array(boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit, boSliderValueInit);   // in percent
			var boSliderValueAbs       = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
			var possibleNewSliderValue = boSliderValueInit;
			var currObjectIdNo         = 1;
			var currFocusedElement     = 0;
			var clickMousePosition     = 0;     // stores current mouse position (absolute) on slider click
			var myBasicSliderPos       = 0;     // stores slider position (absolute) on slider click
			var sliderIsInMotion       = false; // on mouse down => true; ..up => false
			var currSliderName         = 'Distance_boSlider';  // id   !number will be added!
			var currSliderName2        = 'Distance2_boSlider'; // id   !number will be added!
			var sliderOutputId         = "myspan";             // id   !number will be added!
			var docEl                  = (
			  typeof document.compatMode != "undefined" &&
			  document.compatMode        != "BackCompat"
			  )? "documentElement" : "body";

			function init_mousemove() {
			  if(document.layers) document.captureEvents(Event.MOUSEMOVE);
			  document.onmousemove = bo_mouse_pos;

			  initSliders();
			  }

			function movesliderClick(objectIdNo) {
			  clickMousePosition = xPos;
			  myBasicSliderPos   = parseInt(document.getElementById(currSliderName+''+objectIdNo).style.width);
			  if (isNaN(myBasicSliderPos)) {myBasicSliderPos = 0;}
			  currObjectIdNo     = objectIdNo;
			  sliderIsInMotion   = true;

			  possibleNewSliderValue = boSliderValue[objectIdNo-1];
			  }

			function movesliderRelease(objectIdNo) {
                sliderIsInMotion          = false;
                document.getElementById(currSliderName+''+objectIdNo).style.width  = possibleNewSliderValue+'px';
                document.getElementById(currSliderName2+''+objectIdNo).style.width = parseInt(maxPercentValue-possibleNewSliderValue)+'px';
                boSliderValue[objectIdNo-1] = possibleNewSliderValue;
                }

			function movesliderReleaseOutside() {if (sliderIsInMotion == true) {movesliderRelease(currObjectIdNo);} }

            function setInputColors(objectIdNo) {
                var newAbsoluteValue = document.getElementById('Slider '+objectIdNo+' original absolut').value;

                // a bit color to the input fields...
                if (parseInt(document.getElementById('Slider '+objectIdNo+' original absolut compare').value) > parseInt(newAbsoluteValue) ) {
                    document.getElementById('slider'+objectIdNo+'_output').style.backgroundColor = '#87B21A';
                    document.getElementById('slider'+objectIdNo+'_output').style.color = '#FFFFFF';
                    }
                else if (parseInt(document.getElementById('Slider '+objectIdNo+' original absolut compare').value) < parseInt(newAbsoluteValue) ) {
                    document.getElementById('slider'+objectIdNo+'_output').style.backgroundColor = '#E30919';
                    document.getElementById('slider'+objectIdNo+'_output').style.color = '#FFFFFF';
                    }
                else {
                    document.getElementById('slider'+objectIdNo+'_output').style.backgroundColor = '#FFFFFF';
                    document.getElementById('slider'+objectIdNo+'_output').style.color = '#000000';
                    }
                }


            function boHandleSlider(diff, indecrease, objectIdNo) {
                if ( (sliderIsInMotion == true) || (indecrease == true) ) {
                    possibleValue = boSliderValue[objectIdNo-1] + diff;
                    if (possibleValue > maxPercentValue) {possibleNewSliderValue        = maxPercentValue;} else if (possibleValue < 0) {possibleNewSliderValue = 0;} else {possibleNewSliderValue = possibleValue;}
                    document.getElementById(currSliderName+''+objectIdNo).style.width  = possibleNewSliderValue+'px';
                    document.getElementById(currSliderName2+''+objectIdNo).style.width = parseInt(maxPercentValue-possibleNewSliderValue)+'px';
                    var boslideroutput                                                 = Math.round( possibleNewSliderValue / scaleFactor * 100 );
                    //document.getElementById(sliderOutputId+''+objectIdNo).innerHTML    = boslideroutput+'%';
                    if (indecrease == true) {boSliderValue[objectIdNo-1] = possibleNewSliderValue;}


                    // hh2 ...
                    if (objectIdNo > 12) {
                        // set survey fields
                        document.getElementById('slideroutput'+objectIdNo).value = boslideroutput;
                        }

                    if (objectIdNo < 13) {
                        // synch hidden relative value
                        document.getElementById('fieldname_Slider '+objectIdNo+' relativ').value = boslideroutput;
                        document.getElementById('Slider '+objectIdNo+' original relativ').value = boslideroutput;

                        // calc new absolut value
                        var newAbsoluteValue = Math.round( document.getElementById('Slider '+objectIdNo+' original absolut compare').value / 100 * boslideroutput );
                        // synch output value also
                        document.getElementById('slider'+objectIdNo+'_output').value = setNumberFormat(newAbsoluteValue);
                        // synch hidden absolute value
                        document.getElementById('fieldname_Slider '+objectIdNo+' absolut').value = newAbsoluteValue;
                        boSliderValueAbs[objectIdNo-1] = newAbsoluteValue;

                        // a bit color to the input fields...
                        if (parseInt(document.getElementById('Slider '+objectIdNo+' original absolut compare').value) > parseInt(newAbsoluteValue) ) {
                            document.getElementById('slider'+objectIdNo+'_output').style.backgroundColor = '#87B21A';
                            document.getElementById('slider'+objectIdNo+'_output').style.color = '#FFFFFF';
                            }
                        else if (parseInt(document.getElementById('Slider '+objectIdNo+' original absolut compare').value) < parseInt(newAbsoluteValue) ) {
                            document.getElementById('slider'+objectIdNo+'_output').style.backgroundColor = '#E30919';
                            document.getElementById('slider'+objectIdNo+'_output').style.color = '#FFFFFF';
                            }
                        else {
                            document.getElementById('slider'+objectIdNo+'_output').style.backgroundColor = '#FFFFFF';
                            document.getElementById('slider'+objectIdNo+'_output').style.color = '#000000';
                            }

                        // set height to make begruendung visible
                        if (parseInt(document.getElementById('single_asset_'+objectIdNo).style.height) == 142) {
                            document.getElementById('single_asset_'+objectIdNo).style.height = '306px';
                            document.getElementById('single_asset_'+objectIdNo).style.backgroundImage = 'url(site/pictures/project/bg_planer_asset_open_red.png)';
                            document.getElementById('div_begruendung_'+objectIdNo).style.display = 'block';
                            }

                        setBudgetValuesInHeader();
                        } // <13

                    } // slider in motion
                }



            function setBudgetValuesInHeader() {
                        // make some calculations...
                        var personalbudget = 0;
                        for (i=0; i<12; i++) {
                            personalbudget = parseInt(personalbudget) + parseInt(boSliderValueAbs[i]);
                            }

                        var diff = parseInt(document.getElementById('surveyitem_Gesamtsumme').value) - parseInt(personalbudget);
                        if (diff > 0) {
                            document.getElementById('projection-differenz-tendenz').innerHTML = 'Ihre Einsparungen';
                            }
                        else if (diff < 0) {
                            document.getElementById('projection-differenz-tendenz').innerHTML = 'Ihre Mehrausgaben';
                            diff = diff * -1;
                            }
                        else {
                            document.getElementById('projection-differenz-tendenz').innerHTML = 'Ihre Veränderung';
                            }

                        document.getElementById('budget-personal').innerHTML = setNumberFormat(personalbudget);
                        document.getElementById('projection-differenz').innerHTML = setNumberFormat(diff);
                }


            function setNumberFormat(nStr) {
                nStr += '';
                x = nStr.split('.');
                x1 = x[0];
                x2 = x.length > 1 ? '.' + x[1] : '';
                var rgx = /(\d+)(\d{3})/;
                while (rgx.test(x1)) {
                	x1 = x1.replace(rgx, '$1' + '.' + '$2');
                    }
                return x1 + x2;
                }





            function setSliderTo(percent, objectIdNo) {
                sliderValue                                                        = Math.round( (percent * scaleFactor) / 100 );
                document.getElementById(currSliderName+''+objectIdNo).style.width  = sliderValue + 'px';
                document.getElementById(currSliderName2+''+objectIdNo).style.width = parseInt(maxPercentValue - sliderValue) + 'px';
                boSliderValue[objectIdNo-1]                                        = sliderValue;

                setInputColors(objectIdNo);
                }


            function initSliders() {
                // for planner's 1st page
                for (i=0; i<12; i++) {
                    boSliderValueAbs[i] = document.getElementById('fieldname_Slider '+parseInt(i+1)+' absolut').value;
                    }
                currValue = document.getElementById('Slider 1 original relativ').value;
                setSliderTo(currValue, '1');
                currValue = document.getElementById('Slider 2 original relativ').value;
                setSliderTo(currValue, '2');
                currValue = document.getElementById('Slider 3 original relativ').value;
                setSliderTo(currValue, '3');
                currValue = document.getElementById('Slider 4 original relativ').value;
                setSliderTo(currValue, '4');
                currValue = document.getElementById('Slider 5 original relativ').value;
                setSliderTo(currValue, '5');
                currValue = document.getElementById('Slider 6 original relativ').value;
                setSliderTo(currValue, '6');
                currValue = document.getElementById('Slider 7 original relativ').value;
                setSliderTo(currValue, '7');
                currValue = document.getElementById('Slider 8 original relativ').value;
                setSliderTo(currValue, '8');
                currValue = document.getElementById('Slider 9 original relativ').value;
                setSliderTo(currValue, '9');
                currValue = document.getElementById('Slider 10 original relativ').value;
                setSliderTo(currValue, '10');
                currValue = document.getElementById('Slider 11 original relativ').value;
                setSliderTo(currValue, '11');
                currValue = document.getElementById('Slider 12 original relativ').value;
                setSliderTo(currValue, '12');
                }

			function bo_mouse_pos(e) {
			  xPos    =  e? e.pageX : window.event.x;
			  yPos    =  e? e.pageY : window.event.y;
			  if (document.all && !document.captureEvents) {
					xPos    += document[docEl].scrollLeft;
					yPos    += document[docEl].scrollTop;
					}
				boHandleSlider(xPos-clickMousePosition, false, currObjectIdNo); //* main move routine


		      // should prevent marking in any browser...
              if(window.getSelection && sliderIsInMotion == true) {
                 var sel = window.getSelection();
                 sel.removeAllRanges();
              }
			  if (document.layers) routeEvent(e); //
//			  e.returnValue = false; //*
			  return false; //*
			  }


        function numeralsOnly(evt) {
            evt = (evt) ? evt : event;
            var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
                ((evt.which) ? evt.which : 0));

            if (charCode == 13) {
                    document.getElementById('slider'+currFocusedElement+'_output').blur();
                    return false;
                }


            if ( (charCode > 31 && (charCode < 48 || charCode > 57)) ) {
                if ( (charCode == 46) || (charCode == 37) || (charCode == 39) ) {
                    return true;
                    }
                else {
                    alert("Bei der Eingabe sind nur Zahlen und Punkte erlaubt.");
                    return false;
                    }

                return true;
                }
            return true;
            }


        function removeDotsFromNumber(myNum) {
            var a;
            var myNewNum = '';
            var i;
            myNumList = myNum.split('.');
            for (i=0; i<myNumList.length; i++) {myNewNum = myNewNum + myNumList[i];}
            return myNewNum;
            }

        function numberEntered(sliderNo) {
            // is called after entering a number
                var tmpValue = document.getElementById('slider'+sliderNo+'_output').value;
                tmpValue = removeDotsFromNumber(tmpValue);
            // check for more than 100%
                if (tmpValue >= (parseInt(document.getElementById('Slider '+sliderNo+' original absolut compare').value) * 2) ) {
                    tmpValue = (parseInt(document.getElementById('Slider '+sliderNo+' original absolut compare').value) * 2);
                    }
            // absolut-Wert
                document.getElementById('fieldname_Slider '+sliderNo+' absolut').value = tmpValue;
                boSliderValueAbs[sliderNo-1] = tmpValue;

            // relativ Wert
                var einProzent = document.getElementById('Slider '+sliderNo+' original absolut').value / document.getElementById('Slider '+sliderNo+' original relativ').value;
                var neuRelativ = Math.round(tmpValue / einProzent);
                document.getElementById('fieldname_Slider '+sliderNo+' relativ').value = neuRelativ;
            // Slider
                setSliderTo(neuRelativ, sliderNo);
            // output
                document.getElementById('slider'+sliderNo+'_output').value = setNumberFormat(tmpValue);
            // Colors
                var newAbsoluteValue = document.getElementById('fieldname_Slider '+sliderNo+' absolut').value;
                // a bit color to the input fields...
                if (parseInt(document.getElementById('Slider '+sliderNo+' original absolut compare').value) > parseInt(newAbsoluteValue) ) {
                    document.getElementById('slider'+sliderNo+'_output').style.backgroundColor = '#87B21A';
                    document.getElementById('slider'+sliderNo+'_output').style.color = '#FFFFFF';
                    }
                else if (parseInt(document.getElementById('Slider '+sliderNo+' original absolut compare').value) < parseInt(newAbsoluteValue) ) {
                    document.getElementById('slider'+sliderNo+'_output').style.backgroundColor = '#E30919';
                    document.getElementById('slider'+sliderNo+'_output').style.color = '#FFFFFF';
                    }
                else {
                    document.getElementById('slider'+sliderNo+'_output').style.backgroundColor = '#FFFFFF';
                    document.getElementById('slider'+sliderNo+'_output').style.color = '#000000';
                    }
            // set height to make begruendung visible
                if (parseInt(document.getElementById('single_asset_'+sliderNo).style.height) == 142) {
                    document.getElementById('single_asset_'+sliderNo).style.height = '306px';
                    document.getElementById('single_asset_'+sliderNo).style.backgroundImage = 'url(site/pictures/project/bg_planer_asset_open_red.png)';
                    document.getElementById('div_begruendung_'+sliderNo).style.display = 'block';
                    }

            }


        function deexponentialize(number) {
            var string = number.toString(10);
            string = string.replace(/\(e\+(\d+)\)/,
                function(m,n,i) {
                    var zeros = [];
                    while(n--) {
                        zeros.push('0');
                        }
                    return zeros.join("");
                    });
            return string;
            }

        function checkform() {
            var myNumber;
            for (i=1; i<13; i++) {
                myNumber = document.getElementById('fieldname_Slider '+i+' absolut').value;
                myNumber = deexponentialize(myNumber);
                document.getElementById('fieldname_Slider '+i+' absolut').value = myNumber;
                }
            myNumber = document.getElementById('surveyitem_Gesamtsumme').value;
            myNumber = deexponentialize(myNumber);
            document.getElementById('surveyitem_Gesamtsumme').value = myNumber;
            }

