/*
Im Formular werden nur Events (checkboxen) angezeigt, deren datum zu input.anreise und input.abreise passt!
Bei teilweiser überlappung wird ein Hinweis ausgegeben.

Element des Formulars übergeben. Events müssen in fieldset.events liegen!
var eventManager = new EventManager(elementFormularMitEvents, fieldsetClass);

Wird beim CL gemeinsam mit datepicker in datepicker_cf.js aufgerufen
*/

var EventManager = new Class({

initialize: function(element, fieldsetC){
	this.eventFormElement = element;
	this.fieldsetClass = fieldsetC;
},
	
manage: function (){
	
	if (this.eventFormElement.getElement('fieldset.' + this.fieldsetClass) == null) return;
	
	//Zeitraum auswählern
	if (this.eventFormElement.getElement('input.anreise[style*=inline]') == null)
		var startdateStr = this.eventFormElement.getElement('input.anreise').get('value');
	else
		var startdateStr = this.eventFormElement.getElement('input.anreise[style*=inline]').get('value');
	
	if (this.eventFormElement.getElement('input.abreise[style*=inline]') == null)
		var enddateStr = this.eventFormElement.getElement('input.abreise').get('value');
	else
		var enddateStr = this.eventFormElement.getElement('input.abreise[style*=inline]').get('value');
		
	var anreise = this.stringToDate(startdateStr);
	var abreise = this.stringToDate(enddateStr);
	//alert('Anreise: ' + anreise + ' Abreise: ' + abreise);
	
	//events ein und ausblenden
	var eventsElAr = this.eventFormElement.getElement('fieldset.' + this.fieldsetClass).getElements('span');
	var lang = document.getElement('html').get('lang');
	
	if (lang == 'de'){
		if (this.fieldsetClass == 'events'){
			var alertEl = new Element('p', {'class':'alertmsg', 'text': 'Ihr Reisedatum überschneidet sich nur teilweise mit dem Event! Passen Sie es bitte ggf. an.'});
			var noShowEl = new Element('p', {'class':'noShow', 'text': 'Leider finden während des von Ihnen angegebenen Zeitraums keine Events statt.'});
		}
		
		if (this.fieldsetClass == 'angebote'){
			var alertEl = new Element('p', {'class':'alertmsg', 'text': 'Ihr Reisedatum überschneidet sich nur teilweise mit dem Angebot! Passen Sie es bitte ggf. an.'});
			var noShowEl = new Element('p', {'class':'noShow', 'text': 'Leider gibt es für den von Ihnen angegebenen Zeitraum keine Angebote'});
		}
	}
	else{ //default english
		if (this.fieldsetClass == 'events'){
			var alertEl = new Element('p', {'class':'alertmsg', 'text': 'Your date of travel partially overlaps with the event! Please adapt it to suit where necessary'});
			var noShowEl = new Element('p', {'class':'noShow', 'text': 'Unfortunately we cannot find any events during the time frame you suggested.'});
		}
		
		if (this.fieldsetClass == 'angebote'){
			var alertEl = new Element('p', {'class':'alertmsg', 'text': 'Your date of travel partially overlaps with the offer! Please adapt it to suit where necessary'});
			var noShowEl = new Element('p', {'class':'noShow', 'text': 'Unfortunately we cannot find any offers during the time frame you suggested.'});
		}
	}
	
	var showCount = 0;
	
	for (var i = 0;i < eventsElAr.length;i++){
		var label = eventsElAr[i].getElement('label').get('text');
		var evtime = this.getDateAr(label);
		//Bei überlappung einblenden
		if (evtime[1] < anreise || evtime[0] > abreise)
			eventsElAr[i].setStyle('display', 'none');
		else{
			eventsElAr[i].setStyle('display', 'block');
			showCount++;
			//Warnen wenn  nur teilweise Überlappung
			if (evtime[0] < anreise || evtime[1] > abreise){
				eventsElAr[i].set('class', 'alert');
				if (eventsElAr[i].getElement('p.alertmsg') == null) alertEl.inject(eventsElAr[i]);
			}
			else if (eventsElAr[i].getElement('p.alertmsg') != null) {
				eventsElAr[i].getElement('p.alertmsg').dispose();
				eventsElAr[i].erase('class');
			}
		}
	}
	
	//hinweis, wenns keine Events gibt ein und ausblenden
	if (showCount > 0 && this.eventFormElement.getElement('fieldset.' + this.fieldsetClass).getElement('p.noShow')) 
		this.eventFormElement.getElement('fieldset.' + this.fieldsetClass).getElement('p.noShow').dispose();
	if (showCount == 0 && this.eventFormElement.getElement('fieldset.' + this.fieldsetClass).getElement('p.noShow') == null) 
		noShowEl.inject(this.eventFormElement.getElement('fieldset.' + this.fieldsetClass), 'top');
	
},
	
reload: function(){
	this.manage();
},
	
getDateAr: function(label){
	var end = label.length;
	var anfang = new Date(
		parseInt(label.substring(end-17,end-13), 10), //parseInt('08') würde null ergeben da es als oktalzahl interpretiert wird :P
		parseInt(label.substring(end-20,end-18), 10)-1,
		parseInt(label.substring(end-23,end-21), 10)
	);
	var ende = new Date(
		parseInt(label.substring(end-4,end), 10),
		parseInt(label.substring(end-7,end-5), 10)-1,
		parseInt(label.substring(end-10,end-8), 10)
	);
	var dateAr = new Array(anfang, ende);
	return dateAr;
},
	
stringToDate: function(datestring){
	var date = new Date(
		parseInt(datestring.substring(6,10), 10),
		parseInt(datestring.substring(3,5), 10)-1,
		parseInt(datestring.substring(0,2), 10)
	);
	return date;
}
});
