/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Originally from:
  http://www.arantius.com/article/lightweight+javascript+slider+control

Copyright (c) 2006 Anthony Lieuallen, http://www.arantius.com/

Permission is hereby granted, free of charge, to any person obtaining a copy of 
this software and associated documentation files (the "Software"), to deal in 
the Software without restriction, including without limitation the rights to 
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 
the Software, and to permit persons to whom the Software is furnished to do so, 
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all 
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
function setBoxValues(val, box) {
	var b=document.getElementById('output'+box);
	var c=document.getElementById('slider_hidden_value'+box);
	val=Math.round(val);
	b.value = val + '%';
	c.value = val;
}

//add event function from http://www.dynarch.com/projects/calendar/
function addAnEvent(el, evname, func) {
    if (el.attachEvent) { // IE
        el.attachEvent("on" + evname, func);
    } else if (el.addEventListener) { // Gecko / W3C
        el.addEventListener(evname, func, true);
    } else {
        el["on" + evname] = func;
    }
}

function confirmCheck(object){
	Check = confirm(unescape("Achtung%2C das Hinzuf%FCgen weiterer Zutaten setzt das Mischverh%E4ltis wieder auf Standard zur%FCck%21"));
	if(Check == false){
		return false;
	}
	else{
		return true;
	}
}

function lockSlider(id){
	var lock = document.getElementById('slider_lock0'+id);
	var slider = document.getElementById('slider'+id);
	var outputoutside = document.getElementById('outputoutside'+id);
	var output = document.getElementById('output'+id);
	var bobble = document.getElementById('slider_bobble'+id);
	//alert(slider.className);
	if(lock.className=='slider_lock_act'){
		lock.className='slider_lock_no';
		lock.title='Regler freigeben.';
		lock.alt='Regler freigeben.';
	}
	else{
		lock.className='slider_lock_act';
		lock.title='Regler festsetzen.';
		lock.alt='Regler festsetzen.';
	}
	
	if(slider.className=='slider_act'){
		slider.className='slider_no';
	}
	else{
		slider.className='slider_act';
	}
	
	if(outputoutside.className=='slider_value_outside_act'){
		outputoutside.className='slider_value_outside_no';
	}
	else{
		outputoutside.className='slider_value_outside_act';
	}
	
	if(output.className=='slider_value_act'){
		output.className='slider_value_no';
	}
	else{
		output.className='slider_value_act';
	}
	
	if(bobble.className=='slider_bobble_act'){
		bobble.className='slider_bobble_no';
	}
	else{
		bobble.className='slider_bobble_act';
	}
}

function drawSliderByVal(slider) {
	var knob=slider.getElementsByTagName('img')[0];
	var p=(slider.val-slider.min)/(slider.max-slider.min);
	var x=(slider.scrollWidth-10)*p;
	knob.style.left=x+"px";
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
function setSliderByClientX(slider, clientX) {
	var p=(clientX-slider.offsetLeft-5)/(slider.scrollWidth-10);
	var elOldVal = slider.val;
	
	slider.val=(slider.max-slider.min)*p + slider.min;
	
	if (slider.val>slider.max) slider.val=slider.max;
	if (slider.val<slider.min) slider.val=slider.min;

	
	var divs=document.getElementsByTagName('div');
	var divNum;
	var boxCount = 1;
	var elCount = 0;
	var percentChange;
	var actPercent = 0;
	
	//Wert der Aenderung
	percentChange = elOldVal-slider.val;
	
	//Anzahl der Sliderelemente
	for(var i=0; i<divs.length; i++) {
		if (divNum=divs[i].id.match(/\bslider(\d+)\b/)) {
			elCount++;
		}
	}
	
	for(var i=0; i<divs.length; i++) {
		//Abfrage, ob Sliderelement
		if (divNum=divs[i].id.match(/\bslider(\d+)\b/) && divs[i] != slider) {
  		if(divs[i].className != 'slider_no'){
				//aendere Sliderwerte, wenn alles ok
	      if(divs[i].val >= divs[i].min && divs[i].val <= divs[i].max){
	        divs[i].val = divs[i].val+(percentChange/(elCount-1));
	      }
			
				//Minimumcheck
				if(divs[i].val < divs[i].min){
	        divs[i].val = divs[i].min;
	      }
      
				//Maximumcheck
	      if(divs[i].val > divs[i].max){
	        divs[i].val = divs[i].max;
	      }
				
				//aendere passiven Slider
				//divs[i].val = Math.round(divs[i].val);
				drawSliderByVal(divs[i]);
	     	setBoxValues(divs[i].val, boxCount);
			}
			actPercent = actPercent+divs[i].val;
			boxCount++;
		}
		if(divs[i] == slider && slider){
			boxCount++;
		}
	}
	
	//aendere aktiven Slider - Ursprungsfunktion
	slider.val = 100-actPercent;
	drawSliderByVal(slider);
	slider.onchange(slider.val, slider.num);

}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
function sliderClick(e) {
	var el=sliderFromEvent(e);
	if (!el || el.className == 'slider_no') return;
	setSliderByClientX(el, e.clientX);
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
function sliderMouseMove(e) {
	var el=sliderFromEvent(e);
	
	if (!el || el.className == 'slider_no') return;
	if (activeSlider<0) return;
	
	setSliderByClientX(el, e.clientX);
	stopEvent(e);
	
	
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
function sliderFromEvent(e) {
	if (!e && window.event) e=window.event;
	if (!e) return false;

	var el;
	if (e.target) el=e.target;
	if (e.srcElement) el=e.srcElement;

	if (!el.id || !el.id.match(/slider\d+/)) el=el.parentNode;
	if (!el) return false;
	if (!el.id || !el.id.match(/slider\d+/)) return false;

	return el;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
function attachSliderEvents() {
	var divs=document.getElementsByTagName('div');
	var divNum;
	for(var i=0; i<divs.length; i++) {
		if (divNum=divs[i].id.match(/\bslider(\d+)\b/)) {
			// set initial properties
			divNum=parseInt(divNum[1]);
			divs[i].min=slider[divNum].min;
			divs[i].max=slider[divNum].max;
			divs[i].val=slider[divNum].val;
			divs[i].onchange=slider[divNum].onchange;
			divs[i].num=divNum;
			// and make sure the display matches
			drawSliderByVal(divs[i]);
			divs[i].onchange(divs[i].val, divNum);
			
			addAnEvent(divs[i], 'mousedown', function(e){
				sliderClick(e);
				var el=sliderFromEvent(e);
				if (!el) return;
				activeSlider=el.num;
				stopEvent(e);
			});
			addAnEvent(divs[i], 'mouseup', function(e){
				activeSlider=-1;
				stopEvent(e);
			});
			addAnEvent(divs[i], 'blur', function(e){
				/*activeSlider=-1;*/
				stopEvent(e);
			});
		}
	}
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
//borrowed from prototype: http://prototype.conio.net/
function stopEvent(event) {
	if (event.preventDefault) {
		event.preventDefault();
		event.stopPropagation();
	} else {
		event.returnValue=false;
		event.cancelBubble=true;
	}
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
addAnEvent(window, 'load', attachSliderEvents);
addAnEvent(document, 'mousemove', sliderMouseMove);
var activeSlider=-1;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

function sizeupInfo(counter){
	var dom1 = document.getElementById("infoinside"+counter);
	var dom2 = document.getElementById('articlecontent'+counter);
	var dom3 = document.getElementById('moreinfoicon'+counter);
	var dom4 = document.getElementById('moreinfolabel'+counter);
	
	if(dom1.style.display=='none'){
		dom1.style.display='block';
		dom1.style.opacity = '0';
    dom1.style.filter = 'alpha(opacity = 0)';
		fade("infoinside"+counter);
		dom2.style.marginBottom = '5px';
		dom3.src = 'fileadmin/template/images/icons/less.gif';
		dom4.firstChild.nodeValue = 'ohne Infos';
	}
	else{
		fade("infoinside"+counter);
		dom1.style.display='none';
		dom2.style.marginBottom = '18px';
		dom3.src = 'fileadmin/template/images/icons/more.gif';
		dom4.firstChild.nodeValue = 'mehr Infos';
	}
}

var TimeToFade = 1000.0;

function fade(eid)
{
  var element = document.getElementById(eid);
  if(element == null)
    return;
   
  if(element.FadeState == null)
  {
    if(element.style.opacity == null
        || element.style.opacity == ''
        || element.style.opacity == '1')
    {
      element.FadeState = 2;
    }
    else
    {
      element.FadeState = -2;
    }
  }
   
  if(element.FadeState == 1 || element.FadeState == -1)
  {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
		
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  }
  else
  {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }  
}

function animateFade(lastTick, eid)
{  
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
 
  var element = document.getElementById(eid);
 
  if(element.FadeTimeLeft <= elapsedTicks)
  {
    element.style.opacity = element.FadeState == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = '
        + (element.FadeState == 1 ? '100' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
  }
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;

  element.style.opacity = newOpVal;
  element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
 
  setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

function setReceiver(){
	var icon = document.getElementById('receivericon');
	var description = document.getElementById('receiverdescription');
	var receiver = document.getElementById('receiver');
	
	if (receiver.style.display == 'none') {
		icon.src = 'fileadmin/template/images/icons/less.gif';
		description.firstChild.nodeValue = unescape('schließen');
		receiver.style.display = 'block';
  }
	else{
		icon.src = 'fileadmin/template/images/icons/more.gif';
		description.firstChild.nodeValue = unescape('öffnen');
		receiver.style.display = 'none';
	}
	
}

