
//Init WBT
var wbt_init = function(){
	//Deactivate all Links
	var deactivates = $$('li.deactivate a');
	var fade_in = false;
	var fade_uls = $$('ul.fade_in');
	if (deactivates.length>0){
		deactivates.each(function(el){
			el.onclick = function(e){
					Event.stop(e);return;
			}.bindAsEventListener();
		});
		if(fade_uls.length>0 && deactivates[0].up('li').previous('li').hasClassName('active')){
			(function(){
				deactivates[0].onclick='';
				deactivates[0].up('li').removeClassName('deactivate');
				new Effect.Highlight(deactivates[0]);
			}).delay(13);
			fade_in = true;
		}
	}
	
	//Hide Next Button, Assign Form Listener oder activate Next Button
	var nextbutton = $('wbt_next');
	var wbtform = $('wbt_form');
		
	if (nextbutton){
		if (fade_in){
			nextbutton.update('Bitte warten');
			nextbutton.addClassName('wait');
			(function(){
				nextbutton.update('Weiter');
				nextbutton.removeClassName('wait');
				if (wbtform){
					nextbutton.onclick = Prototype.emptyFunction;
					nextbutton.href = "javascript:WBTSubmit()";
				}else{
					nextbutton.onclick = Prototype.emptyFunction;
				}
				//new Effect.Appear(nextbutton);
			}).delay(13);
		}else{
			if (wbtform){
				nextbutton.onclick = Prototype.emptyFunction;//wbtform.submit();
				nextbutton.href = "javascript:WBTSubmit()";
			}else{
				nextbutton.onclick = Prototype.emptyFunction;
			}
		}
	}
	
	var pbar = $('progressbar');
	if (wbtform && pbar){
		
		pbar.select('a').each(function(el){
			el.rel = el.href;
			el.setStyle({cursor:'auto'});
			el.href = 'javascript:void(0)';
			el.onclick = function(e){
				alert("Dieser Vorgang ist leider nicht möglich. Um zur nächsten Frage zu gelangen, beantworten Sie bitte die aktuelle Frage und klicken Sie anschließend auf 'Weiter'.");
				return false;
				if (wbtform.getInputs('checkbox').invoke('getValue').join('') == ''){
					window.location = el.rel;
				}else if (confirm("Nicht gespeicherte Ergebnisse gehen verloren.\nSie speichern Ihren Fortschritt durch 'Weiter'.\nMöchten Sie zu einer anderen Folie springen?")){
					window.location = el.rel;
				}
			}.bindAsEventListener();
		});

	}
	if (pbar){
		if (parseInt(pbar.down('li.active').offsetLeft)>354){
			$('progressnavigation').scrollLeft = parseInt($('progressbar').down('li.active').offsetLeft) - 354 + (parseInt($('progressbar').down('li.active').offsetWidth)/2);
		}
	}
	
	//Fade UL-LI Lists
	if (fade_uls.length>0 && fade_in){
		var fade_lis = fade_uls[0].select('li');
		var fade_delay = 1;
		var fade_step = 10 / fade_lis.length;
		fade_uls[0].wrap('div',{'style':'height:'+fade_uls[0].getHeight()+'px;'});
		//fade_lis.invoke('hide');
		fade_lis.invoke('setStyle',{visibility:'hidden'});
		fade_uls.invoke('removeClassName','fade_in');
		fade_lis.each(function(el){
			(function(){
				//new Effect.Appear(el);
				el.setStyle({visibility:'visible'});
			}).delay(fade_delay);
			
			if (el.innerHTML.length>250){
				fade_delay = fade_delay + fade_step*3;
			}else if (el.innerHTML.length>150){
				fade_delay = fade_delay + fade_step*2;
			}else if (el.innerHTML.length<30){
				fade_delay = fade_delay + fade_step/2;
			}else{
				fade_delay = fade_delay + fade_step;
			}
		});
	}else{
		fade_uls.invoke('removeClassName','fade_in');
	}
};

Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);

    this._readyCallbacks.each(function(f){ if (typeof f == 'function') f(); });
    this._readyCallbacks = 'done';
},
  onDOMReady : function(f) {
    if (Event._readyCallbacks == 'done' &&  typeof f == 'function'){
    	f();
    	return;
		}

    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);

      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);

        /*@cc_on @*/
        /*@if (@_win32)
        		var dummy = location.protocol == "https:" ?  "https://javascript:void(0)" : "javascript:void(0)";
            document.write("<script id=__ie_onload defer src='" + dummy + "'><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") domReady();
            };
        /*@end @*/

        if (/WebKit/i.test(navigator.userAgent)) {
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady();
          }, 10);
        }

        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});
Event.onDOMReady(wbt_init); // Call DomReady at least once

//Fire Script as soon as Window Loads
//Event.observe(window,'load',wbt_init);

var promcalc = Class.create({
	initialize:function(weights){
		this.weights = weights;
		$('promcalc').select('a.promup').each(function(el){
			el.onclick = this.inc.bindAsEventListener(this);
		}.bind(this));
		$('promcalc').select('a.promdown').each(function(el){
			el.onclick = this.dec.bindAsEventListener(this);
		}.bind(this));
	},
	inc:function(e){
		Event.element(e).next('input').value++;
		this.updateResult();
	},
	dec:function(e){
		if (Event.element(e).previous('input').value>0)
			Event.element(e).previous('input').value--;
		this.updateResult();
	},
	updateResult:function(){
		var fields = $('promcalc').select('input');
		var result = 0;
		fields.each(function(f){
			result += f.value * this.weights[f.name];
		}.bind(this));
		$('promcalc_result').innerHTML = result.toFixed(1).replace(/\./,',');
	}
});

var WBTSubmit = function(){
	var form_valid = true;
	//Check if the correct answers have been checked
	var c = $('wbt_form').select('input.ca');
	if (c.length>0){
		c.each(function(el){
			if (!el.checked){
				el.up('div.question').addClassName('correct-answer');
				form_valid = false;
			}else{
				el.up('div.question').removeClassName('correct-answer');
			}
		});
	}
	//Check if the wrong answers have been checked
	var c = $('wbt_form').select('input.fa');
	if (c.length>0){
		c.each(function(el){
			if (el.checked){
				el.up('div.question').addClassName('wrong-answer');
				form_valid = false;
			}else{
				el.up('div.question').removeClassName('wrong-answer');
			}
		});
	}
	
	if (form_valid){
		$('wbt_form').submit();
	}else{
		var solution = $('wbt_solution');
		if (solution){
			new Effect.Appear(solution);
		}else{
			alert("Die Antworten sind leider nicht korrekt!");
		}
	}
}
