
/*/////////////////////////////////////////////////////////////////////////////////

                                    JS Kalender
	Beispiel:
		kalender = new Calender(document.getElementById('jscalender'), 'de');
		kalender.callBackFunction = function(tag,monat,jahr){
			document.forms[0].vdd.value = tag;
			document.forms[0].vmm.value = monat;
			document.forms[0].vyy.value = jahr;
			kalender.hide();
		}
	callBackFunction wird aufgerufen wenn auf ein Datum geklickt wird
/////////////////////////////////////////////////////////////////////////////////*/
/**
 * @projectDescription JS Kalender, callBackFunction wird aufgerufen wenn auf ein Item geklickt wird
 * @param {String} obref
 * @param {String} lang
 */
function Calender(obref, lang, now, von_arr, bis_arr, valid_week_days){
	var self = this;
	var locked = false;
	this.obref = obref;
	this.day_names_l = new Array();
	this.month_names_l = new Array();
	this.day_names_l['de'] = new Array('Mo','Di','Mi','Do','Fr','Sa','So');
	this.month_names_l['de'] = new Array('Jänner','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
	this.day_names_l['en'] = new Array('Mo','Tu','We','Th','Fr','Sa','Su');
	this.month_names_l['en'] = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
	this.day_names_l['fr'] = new Array('Lu','Ma','Me','Je','Ve','Sa','Di');
	this.month_names_l['fr'] = new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
	this.day_names_l['it'] = new Array('Lun','Mar','Mer','Gio','Ven','Sab','Dom');
	this.month_names_l['it'] = new Array('gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre');
	this.day_names = this.day_names_l[lang];
	this.month_names = this.month_names_l[lang];
	this.days = new Array();
	this.now = now; /* Wird von PHP gesetzt */
	this.nowtime = 0;
	this.von_arr = von_arr;
	this.bis_arr = bis_arr;
	this.valid_week_days = valid_week_days; 
	// umrechnen von 7 auf 0 für sonntag
	if(this.valid_week_days){
		for(i=0;i<this.valid_week_days.length;i++){
			this.valid_week_days[i] = this.valid_week_days[i] < 7 ? this.valid_week_days[i] : this.valid_week_days[i]-7;
		}
	}
	/**
	 * @projectDescription initialisiert den Kalender und befüllt den Container mit HTML-Code
	 */
	this.init = function(){
		$(document.body).addEvent('click', this.bodyClick.bind(this));
		$(this.obref).addEvent('click', this.selfClick.bind(this));
		html_output = '<div class="jsc_head"><a class="jsc_back" href="javascript:void(0);">&laquo;</a><h2></h2><a class="jsc_next" href="javascript:void(0);">&raquo;</a></div>\n';
		html_output += '<div class="jsc_body">\n';
		for(i=0;i<7;i++){
			html_output += '<span>' + self.day_names[i] + '</span>\n';
		}
		zw=0;
		for(i=0;i<41;i++){
			zw++;
			if(zw==6 || zw==7){
				html_output += '<a href="javascript:void(0);" class="jsc_special"></a>\n';
			}
			else{
				html_output += '<a href="javascript:void(0);"></a>\n';
			}
			if(zw==7){
				zw=0;
			}
		}
		html_output += '<a class="jsc_close" href="javascript:void(0);">x</a>\n';
		html_output += '</div>';
		self.obref.innerHTML = html_output;
		self.obref.getElementsByTagName('a')[self.obref.getElementsByTagName('a').length-1].onclick = function(){
			self.hide();
		};
		self.obref.getElementsByTagName('a')[0].onclick = function(){
			if(self.akt_month>1){
				self.setDate(self.akt_month-1, self.akt_year);
			}
			else{
				self.setDate(12, self.akt_year-1);
			}
		};
		self.obref.getElementsByTagName('a')[1].onclick = function(){
			if(self.akt_month<12){
				self.setDate(self.akt_month+1, self.akt_year);
			}
			else{
				self.setDate(1, self.akt_year+1);
			}
		};
		for(i=2;i<43;i++){
			self.obref.getElementsByTagName('a')[i].onclick = function(){
				self.itemOnClick(this);
			}
		};
		zw = new Date();
	};
	/**
	 * @projectDescription blendet den Kalender ein
	 */
	this.show = function(){
		self.obref.style.display = 'block';
		this.selfClick();
	};
	/**
	 * @projectDescription blendet den Kalender aus
	 */
	this.hide = function(){
		self.obref.style.display = 'none';	
	};
	/**
	 * @projectDescription wird ausgeführt wenn auf das Kalender-Element geklickt wird.
	 */
	this.selfClick = function(){
		this.locked=true;
		(function(){this.locked=false}).delay(20,this);
	};
	/**
	 * @projectDescription wird ausgeführt wenn auf das Body-Element geklickt wird.
	 */
	this.bodyClick = function(){
		if(!this.locked){
			this.hide();
		}
	};
	/**
	 * @projectDescription setzt Monat und Jahr
	 */
	this.setDate = function(month, year){
		self.akt_month = month;
		self.akt_year = year;
		blankdays = new Date(year,month-1,1).getDay();
		blankdays += -1;
		if(blankdays<0){
			blankdays=6;
		}
		for(i=27;month-1==new Date(year,month-1,i).getMonth();i++){
			maxdays = i;
		}
		for(i=0;i<blankdays+1;i++){
			self.days[i] = '';
		}
		for(i=i-1;i<maxdays+blankdays;i++){
			self.days[i] = i-blankdays+1;
		}
		for(;i<41;i++){
			self.days[i] = '';
		}
		self.aktualHTML();
	};
	/**
	 * @projectDescription aktualisiert den HTML-Code des Kalenders
	 */
	this.aktualHTML = function(){
		self.obref.getElementsByTagName('h2')[0].innerHTML = self.month_names[self.akt_month-1] + ' ' + self.akt_year;
		for(i=0;i<self.days.length;i++){
			self.obref.getElementsByTagName('a')[i+2].innerHTML = self.days[i];
			self.obref.getElementsByTagName('a')[i+2].className = self.obref.getElementsByTagName('a')[i+2].className.replace(/jsc_blank/gi, '');
			self.obref.getElementsByTagName('a')[i+2].className = self.obref.getElementsByTagName('a')[i+2].className.replace(/jsc_disabled/gi, '');
			if(self.days[i]==""){
				self.obref.getElementsByTagName('a')[i+2].className += " jsc_blank";
			}
			if(this.now > 0){
				this.nowtime_date = new Date(self.akt_year,self.akt_month-1,self.days[i]);
				this.nowtime = Math.round(this.nowtime_date.getTime() / 1000);
				is_in = 1;
				if(this.von_arr.length > 0){
					is_in = 0;
					for(j=0;j<this.von_arr.length;j++){
						if(this.von_arr[j] <= this.nowtime && this.bis_arr[j] >= this.nowtime){
							is_in = 1;
						}
					}
				}
				if(is_in==1 && this.valid_week_days){
					is_in = 0;
					for(j=0;j<this.valid_week_days.length;j++){
						if(this.valid_week_days[j] == this.nowtime_date.getDay()){
							is_in = 1;
							break;
						} 
					}
				}
				if(this.now >= this.nowtime || !is_in){
					self.obref.getElementsByTagName('a')[i+2].className += " jsc_disabled";
				}
			}
		}
	};
	/**
	 * @projectDescription wird aufgerufen wenn ein Item ausgewält wird
	 * @param {Object} obj
	 */
	this.itemOnClick = function(obj){
		if(obj.innerHTML!=''){
			if( this.now ){
				this.nowtime = Math.round(new Date(self.akt_year,self.akt_month-1,obj.innerHTML*1).getTime() / 1000);
				if(this.von_arr.length > 0){
					is_in = 0;
					for(j=0;j<this.von_arr.length;j++){
						if(this.von_arr[j] <= this.nowtime && this.bis_arr[j] >= this.nowtime){
							is_in = 1;
						}
					}
				}
				if(this.now <= this.nowtime && ( (this.von_arr.length > 0 && is_in) ||  this.von_arr.length == 0) ){
					self.callBackFunction(obj.innerHTML*1,self.akt_month,self.akt_year);
				}
			} else {
				self.callBackFunction(obj.innerHTML*1,self.akt_month,self.akt_year);
			}
		}
	};
	this.hide();
	this.init();
	self.setDate(zw.getMonth()+1,zw.getFullYear());
}






var last_kano = false;
var last_slider = false;
window.addEvent('domready',function(){
	$$('input.answer_radio').each(function(el) {
            if(el.checked) {
                var my_id = el.name.split('\.');
                my_id = my_id[1];
                
                var my_value = el.value.split('\_');
                my_value = my_value[1];
                
                $$('div.depends_'+my_id+'_'+my_value).each(function(el) {
                    el.style.display = 'block';
                });
            }
        });
        
        $$('ul.answers_wrap li').each(function(el){
		if(el.getElement('input')){
			el.addEvent('click', (function(e){
				this.getElement('input').setProperty('checked', this.getElement('input').getProperty('checked') ? false : 'checked');
				this.getElement('input').fireEvent('onSelect');
			}).bindWithEvent(el));
			el.getElement('input').addEvent('click', (function(e){
				this.setProperty('checked', this.getProperty('checked') ? false : 'checked');
			}).bindWithEvent(el.getElement('input')));
		}
	});
	$$('ul.answers_wrap').each(function(el){
            
		if(!el.hasClass('answer_kano') ){
			input_checked = false;
                        
                        
                        
			el.getElements('input').each(function(eli){
				if(eli.getProperty('checked')){
					input_checked = true;
				}
				eli.addEvent('click',function(){
					eli.fireEvent('onSelect');
				});
				eli.addEvent('onSelect',function(){
                                        
                                        /*$$('td.'+kunde_klasse).each(function(el) {
                                            el.style.background = '';
                                         });*/
                                        var my_id = eli.name.split('\.');
                                        my_id = my_id[1];
                                        
                                        var my_value = eli.value.split('\_');
                                        my_value = my_value[1];
                                        
                                        $$('input.hidden_no_answer_'+my_id).each(function(el) {
                                            if(!el.hasClass('depends_'+my_id+'_'+my_value)) {
                                                el.checked = 'checked';
                                            }
                                        });
                                        
                                        $$('div.depends_'+my_id).each(function(el) {
                                            el.style.display = 'none';
                                        });
                                        
                                        $$('input.hidden_no_answer_'+my_id+'_'+my_value).each(function(el) {
                                            el.checked = '';
                                        });
                                        
                                        $$('div.depends_'+my_id+'_'+my_value).each(function(el) {
                                            el.style.display = 'block';
                                        });
                                        
					if(eli.getParent().getParent().my_kano && eli.getParent().getParent().is_next_kano && eli.value!="__" && el.lang>0){
						are_checked = 0;
						eli.getParent().getParent().my_kano.getElements('input').each(function(elu){
							if(elu.checked){
								are_checked++;
							}
						});
						myval = document.getElementById("new_session").value;
						
						if((are_checked<2) || myval ){

						    show_kano_question(eli.getParent().getParent().my_kano, el.kano);
						}
					}
				});
			});
			//if(!input_checked){
			    el.my_kano = getNextKanoQuestion(el);
                            el.is_next_kano = isNextToKanoQuestion(el);
			//}
		}
	});
	$$('ul.answers_wrap').each(function(el){
		if(el.my_kano){
			if(!el.my_kano.my_effects){
				el.my_kano.my_effects = new Fx.Styles(el.my_kano, {duration: 500, transition: Fx.Transitions.Quart.easeInOut});
			}
		}
	});
	$$('div.kano_question').each(function(el){
		el.getElements('ul.answer_kano').each(function(ela){
			ela.getElements('input').each(function(eli){
				eli.addEvent('click',function(){
					eli.fireEvent('onSelect');
				});
				eli.addEvent('onSelect',function(){
					are_checked = 0;
					eli.getParent().getParent().getParent().getElements('input').each(function(elu){
						if(elu.checked){
							are_checked++;
						}
					});
					if(are_checked==2){
						hide_kano_question(eli.getParent().getParent().getParent());
					}
				});
			});
		});
	});
	if($('overlay')){
		$('overlay').my_effects = new Fx.Styles($('overlay'), {duration: 750, transition: Fx.Transitions.Quart.easeInOut});
	}
	$$('textarea.answer_comment').each(function(el){
		el.my_effects = new Fx.Styles(el, {duration: 500, transition: Fx.Transitions.Quart.easeInOut});
		el.addEvent('focus',function(){
			el.my_effects.stop();
			el.my_effects.start({
				'height':300
			});
		});
		el.addEvent('blur',function(){
			el.my_effects.stop();
			el.my_effects.start({
				'height':13
			});
		});
	});
	$E('form').addEvent('submit',(function(e){
		if(typeof question_ids == "undefined"){
			return;
		}
		error = false;
		for(i=0;i<question_ids.length;i++){
			flag = false;
			for(j=0;j<this['answer.'+question_ids[i]].length;j++){
				if(this['answer.'+question_ids[i]][j].checked){
					flag=true;
				}
			}
			if(!flag){
				error=true;
				wrong_quest = question_ids[i];
				break;
			}
		}
		if(error && e){
			e.stop();
			window.scrollTo(0,0);
                        $$('div.questionwrap').each(function(el) {
                            el.removeClass('error_highlight');
                        });
                        
                        $('question_div_'+wrong_quest).addClass('error_highlight');
			$E('div.error').setHTML('<p>'+poll_settings['error_answer_1']+$('question_'+wrong_quest).innerHTML+poll_settings['error_answer_2']+'</p>');
		}
	}).bindWithEvent($E('form')));
});

function getNextKanoQuestion(elementi){
	elementi = elementi.getParent();
	for(i=0;i<50;i++){
		if(!elementi.getPrevious()){
			break;
		}
		elementi = elementi.getPrevious();
		if(elementi.hasClass('kano_question_wrap')){
			break;
		}
	}
	return elementi.getElement('.kano_question');
}
function isNextToKanoQuestion(elementi){
	elementi = elementi.getParent();
	for(i=0;i<50;i++){
		if(!elementi.getPrevious()){
			break;
		}
		elementi = elementi.getPrevious();
		if(elementi.hasClass('kano_question_wrap')){
			return true;
		}
		if(elementi.hasClass('answers_wrap')){
			return false;
		}
	}
}

function show_kano_question(kano_question, kano_count){
    if(are_checked<2) {
        if(kano_count != 'undefined' ) {
            kano_question.className = "kano_question kano_question_"+kano_count;
        }
        
        kano_question.setStyles({'display':'block','opacity':0});
	$(document.body).addClass('kano_opened');
	$('overlay').setStyles({
		'display':'block',
		'opacity':0
	});
	$('overlay').setStyles({
		width: window.getSize().size.x-1,
		height: $(document.body).getSize().size.y,
		left: $('overlay').getStyle('left').toInt()-$('overlay').getLeft()-2,
		top: $('overlay').getStyle('top').toInt()-$('overlay').getTop()
	});
	$('overlay').my_effects.start({
		'opacity': 0.5
	});
	kano_question.my_effects.start({
		'opacity': [0,1]
	});
    }
}

function hide_kano_question(kano_question){
	$('overlay').my_effects.stop();
	$('overlay').my_effects.start({
		'opacity': 0
	});
	kano_question.my_effects.start({
		'opacity': 0
	});
	kano_question.setStyle.delay(500,kano_question,['display','']);
	$(document.body).removeClass.delay(500,$(document.body),'kano_opened');
}

function close_kano_question(close_obj){
	hide_kano_question($(close_obj).getParent());
}
