var dynContent = null;

var OnStart = Class.create({
	initialize: function(){
		var thisClass = this;
		document.observe("dom:loaded", function(){
/*			if($('sportsFacilities')){
				var addMap = new AddMap($$(".addr_city")[0], $$(".addr_street")[0]);
				if (addMap.canCreate) {
					addMap.createHTML('map24', '<div class="mapBlock"><h2>Der Weg zu uns.</h2><p><label><span>Geben Sie Ihren Startpunkt an (<abbr title="zum Beispiel">z.B.</abbr> Musterstrasse 123, Musterstadt) </span><input type="text" value=""></label><button name="submit" type="submit" class="submit">Route berechnen</button></p><div class="includeMap"></div></div>', $('sportsFacilities'), '.includeMap')
				}
			}
*/			if($('dates')){
				var dates = new Dates($('dates'));
			}
			if(Prototype.Browser.IE){
				function addEvent(elem){
					elem.observe("focus", function(event){
						elem.addClassName('focus');
					});
					elem.observe("blur", function(event){
						elem.removeClassName('focus');
					})
				}
				$$('input[type="text"]').each(addEvent);	
				$$('input[type="password"]').each(addEvent);	
				$$('textarea').each(addEvent);	
			};
			if($$('.raCheckBoxesWithSubpoint').length > 0){
				$$('.raCheckBoxesWithSubpoint').each(function(element){
					var raCheckBoxesWithSubpoint = new RaCheckBoxesWithSubpoint(element);
				})
			};
			if($('pid31825')){
				var div = new Element('div', {'id': 'dynContentWrapper'});
				dynContent = new IncludeDynPage($$(".iContent p:last")[0].wrap(div), "http://tsvbremervoerde.old.schult.info/fahrtenbuch.php");
				//console.debug(dynContent);	
			}
		})
	}
});
var onStart = new OnStart();

/**
 * Add a Map
 * @param {Object} cityContainer
 * @param {Object} streetContainer
 * @return {Object} HTML-Div with Map 
 */
var AddMap = Class.create({
	canCreate: true,
	initialize: function(cityContainer, streetContainer){
		this.cont = {
			city : (cityContainer) ? cityContainer : null,
			street: (streetContainer) ? streetContainer : null
		};
		if(!this.cont.city){
			this.canCreate = false;
			return;
		} 
		this.address = (this.cont.street && this.cont.city) ? this.cont.street.firstChild.nodeValue + "," + this.cont.city.firstChild.nodeValue : (this.cont.street) ? this.cont.street.firstChild.nodeValue : this.cont.city.firstChild.nodeValue;
		return true;
	},
	createHTML: function(whichMap, HtmlStr, parentElem, mapSelector){
		var html = parentElem.insert(HtmlStr);
		var mapContainer = parentElem.select(mapSelector)[0];
		this.mapContainerId = mapContainer.identify();
		mapContainer.setStyle({width: '520px', height: '240px'});
		//console.debug(parentElem);
		this.inputTextId = parentElem.select('input')[0].identify();
		parentElem.select('button')[0].observe("click", function(b){
			//alert('button');
		});
		var htmlDescendants = html.descendants()[0].siblings();
		switch(whichMap){
			case 'map24': this._addMap24(); break;
			case 'googleMaps': this._addGoogleMaps(); break;
			default: htmlDescendants[htmlDescendants.length-1].remove();
		}
	},
	_addMap24: function(){
		//alert('map24');
	},
	_addGoogleMaps: function(){
		//alert('GoogleMaps');
	}
})

/**
 * Hide and Show Dates
 * @param {Object} container
 */
var Dates = Class.create({
	initialize: function(container){
		var thisClass = this;
		var dates = container;
		this.dates_details = dates.select('.details div');
		this._chosen($$(location.hash)[0]);
		var i = 0;
		dates.select('table a').each(function(elem){
			var detail = thisClass.dates_details[i];
			elem.observe("click", function(a){
				thisClass._chosen(detail);
			})
			i++;
		});
		dates.select('.toOverView').each(function(elem){
			elem.observe("click", function(a){
				thisClass._chosen();
			})
		});
	},
	_chosen: function(elem){
		this.dates_details.each(function(detail){
			if(elem && detail == elem){
				detail.removeClassName('inv');
			}else{
				detail.addClassName('inv');
			}
		})
	}
})

var RaCheckBoxesWithSubpoint = Class.create({
	initialize: function(element){
		var thisClass = this;
		var requiredField = $$('.requiredField')[0];
		this.subPoint = element.select('.subpoint')[0];
		//return requiredField.inspect();
		//this.subPoint.select('span')[0].insert('<sup class="requiredField" title="Pflichtfeld">*<span class="inv"> Pflichtfeld</span></sup>');
		
		this.raCheckBoxes = element.select('.raCheckBoxes')[0];
		this.raCheckBoxesInput = element.select('input')[0];
		this.raCheckBoxes.select('span')[0].observe("click", function(element){
			thisClass._chosen(thisClass);
		});
		this.raCheckBoxesInput.observe("change", function(element){
			thisClass._change(thisClass);
		});
		if(thisClass.raCheckBoxesInput.checked){
			thisClass.subPoint.removeClassName('inv');
		} else {
			thisClass.subPoint.addClassName('inv');
		}
	},
	toString: function(){
		return "[object RaCheckBoxesWithSubpoint]"
	},
	_chosen: function(thisClass){
		if(this.raCheckBoxesInput.checked){
			this.subPoint.addClassName('inv');
			//console.debug(thisClass.subPoint.select('span')[0].insert('<sup class="requiredField" title="Pflichtfeld">*<span class="inv"> Pflichtfeld</span></sup>'));
		} else {
			this.subPoint.removeClassName('inv');
		}
	},
	_change: function(thisClass){
		if(this.raCheckBoxesInput.checked){
			this.subPoint.removeClassName('inv');
			//console.debug(thisClass.subPoint.select('span')[0].insert('<sup class="requiredField" title="Pflichtfeld">*<span class="inv"> Pflichtfeld</span></sup>'));
		} else {
			this.subPoint.addClassName('inv');
		}
	}
})

/**
 * Include DynPage
 * @param {Object} cityContainer
 * @param {Object} streetContainer
 * @return {Object} HTML-Div with Map 
 */
var IncludeDynPage = Class.create({
	initialize: function(dynWrapper, src){
		this.src = src;
		this.dynWrapper = dynWrapper;
		this.updateScript(this.src);
	},
	update: function(updateString){
		this.dynWrapper.update(updateString);
		var thisClass = this;
		var buttonsSubmit = this.dynWrapper.select('input[type="submit"]', 'button[type="submit"]');
		buttonsSubmit.each(function(button){
			button.setAttribute("type", "button");
			button.observe('click', function(){
				var src = this.up("form").action +"?"+ this.up("form").serialize();
				thisClass.updateScript(src);
			})
		})
	},
	updateScript: function(src){
		var script = new Element('script', {'type':'text/javascript', 'src':src, 'id':'dynContentScript'});
		this.update(script);
	}
})