var busy_nadel = 0;
var kennzahl = 0;
var kzahl = 0;

function moveNadel() {
    if(busy_nadel == 0) {
        busy_nadel = 1;
        var kzahl_old = kzahl;
        kzahl = kennzahl;
        if(kzahl > 400) {
            kzahl = 400;
        }
        if(kzahl_old == kzahl) {
            relaxNadel();
        }
        else {
            new Effect.Move('nadel', { x: kzahl * 1.090, duration: 0.9, mode: 'absolute', transition: Effect.Transitions.SwingFromTo, afterFinish: relaxNadel, afterUpdate: setKennzahl });
        }
    }
}

function relaxNadel(obj) {
    $('kennzahl').innerHTML = kennzahl;
    busy_nadel = 0;
}

function setKennzahl(obj) {
    var theLeft = parseInt(Element.getStyle(obj.element, 'left'));
    theLeft /= 1.090;
    $('kennzahl').innerHTML = Math.round(theLeft);
}

function formatNumber(aValue, aDigits) {
    if(aDigits == 0) {
        aValue = Math.round(aValue);
    }
    else {
        theFactor = Math.pow(10, aDigits);
        aValue = Math.floor(aValue * theFactor + 0.5) / theFactor;
    }
    var theValue = '';
    var theCount = 0;
    var theParts = String(aValue).split('.');
    for(var i = theParts[0].length - 1; i >= 0; i--) {
       theValue = theParts[0].charAt(i) + theValue;
       theCount++;
       if(theCount == 3 && i > 0) {
           theValue = '.' + theValue;
           theCount = 0;
       }
    } 
    if(aDigits != 0) {
       theValue += ',' + (isNaN(theParts[1]) ? '0' : theParts[1]);
    }
    return theValue;
}

function finishedPerform(aObj) {
    var theId = "t" + aObj.element.id.substring(1);
    if(!Element.visible(aObj.element)) {
        Element.removeClassName(theId, "trigger_up");
        Element.addClassName(theId, "trigger_down");
    }
    else {
        Element.removeClassName(theId, "trigger_down");
        Element.addClassName(theId, "trigger_up");
    }
}

function perform(aSlider) {
    new Effect.toggle(aSlider, 'blind', {duration: 0.5, afterFinish: finishedPerform});
}

Form.Element = {

    setValue: function(element, newValue) {
        element_id = element;
        element = $(element);
        if (!element){element = document.getElementsByName(element_id)[0];}
        if (!element){return false;}
        var method = element.tagName.toLowerCase();
        var parameter = Form.Element.SetSerializers[method](element, newValue);
    }
    
}

Form.Element.SetSerializers = {

    input: function(element, newValue) {
        switch (element.type.toLowerCase()) {
            case 'submit':
            case 'hidden':
            case 'password':
            case 'text':
                return Form.Element.SetSerializers.textarea(element, newValue);
            case 'checkbox':
            case 'radio':
                return Form.Element.SetSerializers.inputSelector(element, newValue);
        }
        return false;
    },

    inputSelector: function(element, newValue) {
        fields = document.getElementsByName(element.name);
        for (var i=0;i<fields.length;i++){
            if (fields[i].value == newValue){
                fields[i].checked = true;
            }
        }
    },

    textarea: function(element, newValue) {
        element.value = newValue;
    },

    select: function(element, newValue) {
        var value = '', opt, index = element.selectedIndex;
        for (var i=0;i< element.options.length;i++){
            if (element.options[i].value == newValue) {
                element.selectedIndex = i;
                return true;
            }        
        }
    }
    
}

function unpackToForm(data) {

    for (i in data){
        Form.Element.setValue(i,data[i].toString());
    }
    
}

function readCookieValues1() {      
	var theValues = readCookie('eaao1');
	if(theValues) {  
        var thePairs = theValues.split('&');
		document.forms['form1'].elements['assistent.plz'].value = thePairs[0].split('=')[1];
		document.forms['form1'].elements['assistent.baujahr'].value = thePairs[1].split('=')[1];
		document.forms['form1'].elements['assistent.wohnungszahl'].value = thePairs[2].split('=')[1];
	    document.forms['form1'].elements['assistent.wohnflaeche'].value = thePairs[3].split('=')[1];
	    document.forms['form1'].elements['assistent.verbrauch'].value = thePairs[4].split('=')[1];
	    document.forms['form1'].elements['assistent.sanierung'][0].checked = thePairs[5].split('=')[1] == 'true' ? true: false;
	    document.forms['form1'].elements['assistent.sanierung'][1].checked = thePairs[6].split('=')[1] == 'true' ? true: false;
	    document.forms['form1'].elements['assistent.energieart'].options[0].selected = thePairs[7].split('=')[1] == 'true' ? true: false; 
	    document.forms['form1'].elements['assistent.energieart'].options[1].selected = thePairs[8].split('=')[1] == 'true' ? true: false; 
	    document.forms['form1'].elements['assistent.energieart'].options[2].selected = thePairs[9].split('=')[1] == 'true' ? true: false; 
	    document.forms['form1'].elements['assistent.energieart'].options[3].selected = thePairs[10].split('=')[1] == 'true' ? true: false; 
	    document.forms['form1'].elements['assistent.energieart'].options[4].selected = thePairs[11].split('=')[1] == 'true' ? true: false; 
	}
}

function writeCookieValues1() {           
	var theValues = '';
	var thePlz = document.forms['form1'].elements['assistent.plz'].value;
	theValues += 'assistent.plz=' + thePlz + '&';
	var theJahr = document.forms['form1'].elements['assistent.baujahr'].value;
	theValues += 'assistent.baujahr=' + theJahr + '&';
	var theZahl = document.forms['form1'].elements['assistent.wohnungszahl'].value;
	theValues += 'assistent.wohnungszahl=' + theZahl + '&';
    var theFlaeche = document.forms['form1'].elements['assistent.wohnflaeche'].value;
	theValues += 'assistent.wohnflaeche=' + theFlaeche + '&';  
    var theVerbrauch = document.forms['form1'].elements['assistent.verbrauch'].value;
	theValues += 'assistent.verbrauch=' + theVerbrauch + '&';            
    var theSanierung1 = document.forms['form1'].elements['assistent.sanierung'][0].checked;
	theValues += 'assistent.sanierung1=' + theSanierung1 + '&';            
    var theSanierung2 = document.forms['form1'].elements['assistent.sanierung'][1].checked;
	theValues += 'assistent.sanierung2=' + theSanierung2 + '&';      
    var theArt1 = document.forms['form1'].elements['assistent.energieart'].options[0].selected;
	theValues += document.forms['form1'].elements['assistent.energieart'].options[0].value + '=' + theArt1 + '&'; 
    var theArt2 = document.forms['form1'].elements['assistent.energieart'].options[1].selected;
	theValues += document.forms['form1'].elements['assistent.energieart'].options[1].value + '=' + theArt2 + '&'; 
    var theArt3 = document.forms['form1'].elements['assistent.energieart'].options[2].selected;
	theValues += document.forms['form1'].elements['assistent.energieart'].options[2].value + '=' + theArt3 + '&'; 
    var theArt4 = document.forms['form1'].elements['assistent.energieart'].options[3].selected;
	theValues += document.forms['form1'].elements['assistent.energieart'].options[3].value + '=' + theArt4 + '&'; 
    var theArt5 = document.forms['form1'].elements['assistent.energieart'].options[4].selected;
	theValues += document.forms['form1'].elements['assistent.energieart'].options[4].value + '=' + theArt5; 
	createCookie('eaao1', theValues, 30);      
}

function readCookieValues2() {      
	var theValues = readCookie('eaao2');
	if(theValues) {  
        var thePairs = theValues.split('&');
	    document.forms['form1'].elements['assistent.massnahme[0]'].checked = thePairs[0].split('=')[1] == 'true' ? true: false;
	    document.forms['form1'].elements['assistent.massnahme[1]'].checked = thePairs[1].split('=')[1] == 'true' ? true: false;
	    document.forms['form1'].elements['assistent.massnahme[2]'].checked = thePairs[2].split('=')[1] == 'true' ? true: false;
	    document.forms['form1'].elements['assistent.massnahme[3]'].checked = thePairs[3].split('=')[1] == 'true' ? true: false;
	    document.forms['form1'].elements['assistent.massnahme[4]'].checked = thePairs[4].split('=')[1] == 'true' ? true: false;
	}
}

function writeCookieValues2() {           
	var theValues = '';
    var theMassnahme1 = document.forms['form1'].elements['assistent.massnahme[0]'].checked;
	theValues += 'assistent.massnahme1=' + theMassnahme1 + '&';            
    var theMassnahme2 = document.forms['form1'].elements['assistent.massnahme[1]'].checked;
	theValues += 'assistent.massnahme2=' + theMassnahme2 + '&';            
    var theMassnahme3 = document.forms['form1'].elements['assistent.massnahme[2]'].checked;
	theValues += 'assistent.massnahme3=' + theMassnahme3 + '&';            
    var theMassnahme4 = document.forms['form1'].elements['assistent.massnahme[3]'].checked;
	theValues += 'assistent.massnahme4=' + theMassnahme4 + '&';            
    var theMassnahme5 = document.forms['form1'].elements['assistent.massnahme[4]'].checked;
	theValues += 'assistent.massnahme5=' + theMassnahme5;            
	createCookie('eaao2', theValues, 30);      
}
                                  
function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function isShowing(aElement) {
    return Element.getStyle(aElement, 'display') != 'none';
}

function toggleMainHelp() {
    if(isShowing('help')) {
        hideMainHelp();
    }
    else {
        showMainHelp(0);
    }
}

function showMainHelp(aDelay) {
    var theHeight = $('help').getHeight();
    new Effect.Move('help', { x: 865, y: -theHeight - 10, mode: 'absolute', duration: 0.0 }); 
    new Effect.Move('help', { x: 865, y: 282, mode: 'absolute', delay: aDelay + 0.1, duration: 1.2, transition: Effect.Transitions.Bounce, beforeStart: function() { Element.show('help'); } }); 
}

function hideMainHelp() {
    var theDelay = 0;
    if(!isShowing('s0')) {
        perform('s0');
        theDelay = 0.5;
    }
    if(isShowing('s1')) {
        perform('s1');
        theDelay = 0.5;
    }
    if(isShowing('s2')) {
        perform('s2');
        theDelay = 0.5;
    }
    if(isShowing('s3')) {
        perform('s3');
        theDelay = 0.5;
    }
    if(isShowing('s4')) {
        perform('s4');
        theDelay = 0.5;
    }
    var theHeight = $('help').getHeight();
    new Effect.Move('help', { x: 865, y: -theHeight - 10, mode: 'absolute', delay: theDelay, duration: 0.8, transition: Effect.Transitions.SwingFrom, afterFinish: function() { Element.hide('help'); } });
}

Effect.Transitions.Elastic = function(pos) {
    return -1*Math.pow(4,-8*pos) * Math.sin((pos*6-1)*(2*Math.PI)/2) + 1;
};

Effect.Transitions.SwingFromTo = function(pos) {
    var s = 1.70158;
    if ((pos/=0.5) < 1) return 0.5*(pos*pos*(((s*=(1.525))+1)*pos - s));
    return 0.5*((pos-=2)*pos*(((s*=(1.525))+1)*pos + s) + 2);
};

Effect.Transitions.SwingFrom = function(pos) {
    var s = 1.70158;
    return pos*pos*((s+1)*pos - s);
};

Effect.Transitions.SwingTo = function(pos) {
    var s = 1.70158;
    return (pos-=1)*pos*((s+1)*pos + s) + 1;
};

Effect.Transitions.Bounce = function(pos) {
    if (pos < (1/2.75)) {
        return (7.5625*pos*pos);
    } else if (pos < (2/2.75)) {
        return (7.5625*(pos-=(1.5/2.75))*pos + .75);
    } else if (pos < (2.5/2.75)) {
        return (7.5625*(pos-=(2.25/2.75))*pos + .9375);
    } else {
        return (7.5625*(pos-=(2.625/2.75))*pos + .984375);
    }
};

Effect.Transitions.BouncePast = function(pos) {
    if (pos < (1/2.75)) {
        return (7.5625*pos*pos);
    } else if (pos < (2/2.75)) {
        return 2 - (7.5625*(pos-=(1.5/2.75))*pos + .75);
    } else if (pos < (2.5/2.75)) {
        return 2 - (7.5625*(pos-=(2.25/2.75))*pos + .9375);
    } else {
        return 2 - (7.5625*(pos-=(2.625/2.75))*pos + .984375);
    }
};

Effect.Transitions.EaseFromTo = function(pos) {
    if ((pos/=0.5) < 1) return 0.5*Math.pow(pos,4);
    return -0.5 * ((pos-=2)*Math.pow(pos,3) - 2);    
};

Effect.Transitions.EaseFrom = function(pos) {
    return Math.pow(pos,4);
};

Effect.Transitions.EaseTo = function(pos) {
    return Math.pow(pos,0.25);
};

