/*
  Display the sponsor, partner, and supporter logos on the right side of the page
  and flipping the images.
*/

var ImageLinkRoller = Class.create({
	
	
	rollimages: function(){
		this.arrayOfImageLinks[this.imgLinkIndex].hide();
		this.imgLinkIndex++;
		if(this.imgLinkIndex == this.arrayOfImageLinks.length) this.imgLinkIndex = 0;
		Effect.Appear(this.arrayOfImageLinks[this.imgLinkIndex], {duration:'1'});
	},
	
	initialize: function(title, arrayOfImageLinks, targetObj){
		this.arrayOfImageLinks = arrayOfImageLinks;
		this.imgLinkIndex = 0;
		
		// create the needed DOM elements for presenting a title
		var lang = '';
		switch(title) {
			case 'Hauptsponsor':
				var uid = 357;
			break;
			case 'Sponsor principal':
				var uid = 357;
				lang = '&L=2';
			break;			
			case 'Sponsoren NATUR':
				var uid = 357;
			break;
			case 'Sponsors NATURE':
				var uid = 357;
				lang = '&L=2';
			break;			
			case 'Trägerschaft NATUR':
				var uid = 359;
			break;
			case 'Patronat NATURE':
				var uid = 359;
				lang = '&L=2';
			break;
		}
		
		var title_h1 = new Element('a', {'class' : 'csc-firstHeader', 'href' : 'index.php?id='+uid+lang});
		

		
		
		title_h1.update(title);
		title_h1.wrap(new Element('div', {'class': 'csc-header csc-header-n1'}));
		
		// creating the DOM element for the ImageLinkRoller
		var imgLinkRoller = new Element('div');
		imgLinkRoller.setStyle({
			height: '100px',
			width: '180px',
			backgroundColor: 'white',
			margin: '10px'
			//border: '1px solid black'			
		});
		targetObj.insert({ top: imgLinkRoller});
		// insert the Title Element at the top of the target
		targetObj.insert({ top: title_h1});
		
		// insert ImageLinks, and prepare images
		var img = ''; //init
		var padding_top = 0; //init
		var padding_left = 0; //init
		this.arrayOfImageLinks.each(function(e){
			imgLinkRoller.insert(e);
			img = e.firstDescendant();
			if (img) {
				padding_top = (100 - img.getHeight())/2;
				padding_left = (180 - img.getWidth())/2;
				//alert(margin_left);
				img.setStyle({
					position: 'relative',
					paddingTop: padding_top+'px',
					paddingLeft: padding_left+'px'
				});
				// hide all ImageLinks
				e.hide();
			}else{
				// remove links which do not contain an image
				e.remove();
			};
			
		});
		// exclude empty image links
		this.arrayOfImageLinks = this.arrayOfImageLinks.without('');
	}
	
});



var WorkshopReorganizer = Class.create({
	initialize: function(mapFunction, workshopContainers){
		this.workshops = new Array();
		/* is applied on every workshop*/
		this.mapFunction = mapFunction;

		for (var i = workshopContainers.length - 1; i >= 0; i--){
			this.workshops[this.workshops.length] = this.mapFunction(workshopContainers[i]);
		};
	},

	query: function(cmd){
		var ops = cmd.split(",");
		var workshops = new Array();		
		var add_rec = function(array, newArray, ops){
			if(ops.length > 0){
				var op = ops.splice(0,1);				
				if(op == "*"){	// take all entries
					for(var i in array){
						if(array.hasOwnProperty(i)){
							add_rec(array[i], newArray, ops.clone());
						}
					}
				}else{
					add_rec(array[op], newArray, ops.clone());
				}
			}else{
				newArray[newArray.length] = array;
			}
		};
		add_rec(this.workshops, workshops, ops);
		return workshops.flatten();
	},

	showAllFromQuery: function(q, fun){
		this.query(q).each(fun);		
	},
	hideAllFromQuery: function(q, fun){
		this.query(q).each(fun);
	}
	
});

/* Workshop Reorganizer - START */
function loadListOfDetail(dict){
	reg = new WorkshopReorganizer(function(cat){
		
		var workshops = new Array();
		var h2_s = cat.select("h2");

		for (var i = h2_s.length - 1; i >= 0; i--){
			var h2 = h2_s[i];
			var title = h2.lastChild.data;
			//var div = h2.nextElementSibling;
			siblings = h2.nextSiblings();
			var div = siblings[0];
			if(title != undefined){
				// extract Workshop Type (e.g. morning and afternoon)
				var type = title.substr(title.indexOf("-") + 1, 1);	
				if(workshops[type] == undefined){
					workshops[type] = new Array();
				}
				// extract Workshop Language
				var language = title.substr(0,1);
				if(workshops[type][language] == undefined){
					workshops[type][language] = new Array();
				}
				var workshopsInLanguage = workshops[type][language];
				workshopsInLanguage[workshopsInLanguage.length] = new Object();
				var obj = workshopsInLanguage[workshopsInLanguage.length -1];
				obj.h2 = h2;
				
				
				
				obj.div = div;
				/* hide div per default */
				if(obj.div){
					obj.div.hide();
				}
				/* put observer on h2, for "click-show-hide" the content */
				obj.h2.observe("click", function(e){
					var div = this.next("div.workshop_description");
					if(div.visible()){
						div.hide();
					}else{
						div.show();
					}
				});
				
			}
		};
	
		return workshops;

	}, $$("div.tx-x4eevent-pi1"));

	reg.showAllFromQuery("*,V,*,*", function(o){o.h2.show();}); // show all morning workshops
	reg.hideAllFromQuery("*,N,*,*", function(o){o.h2.hide(); o.div.hide()}); // hide all afternoon workshops
	
	/* Place a workshop language selector */
	
	var morningOrAfternoon = "V"; // per default Morning workshopds
	var german_link = new Element("a", {'id':'german_link'}).update(dict.german);
	german_link.setStyle({marginLeft:'300px'});
	german_link.observe("click", function(e){
		reg.hideAllFromQuery("*,"+morningOrAfternoon+",*,*", function(o){o.h2.hide(); o.div.hide()});
		reg.showAllFromQuery("*,"+morningOrAfternoon+",D,*", function(o){o.h2.show();});
		this.setStyle({fontWeight:'bold'});
		$('french_link').setStyle({fontWeight:'normal'});
		$('bilingual_link').setStyle({fontWeight:'normal'});
	});
	var french_link = new Element("a", {'id':'french_link'}).update(" | "+dict.french);
	french_link.observe("click", function(e){
		reg.hideAllFromQuery("*,"+morningOrAfternoon+",*,*", function(o){o.h2.hide(); o.div.hide()});
		reg.showAllFromQuery("*,"+morningOrAfternoon+",F,*", function(o){o.h2.show();});
		this.setStyle({fontWeight:'bold'});
		$('german_link').setStyle({fontWeight:'normal'});
		$('bilingual_link').setStyle({fontWeight:'normal'});
	});
	var bilingual_link = new Element("a", {'id':'bilingual_link'}).update(" | "+dict.bilingual);
	bilingual_link.observe("click", function(e){
		reg.hideAllFromQuery("*,"+morningOrAfternoon+",*,*", function(o){o.h2.hide(); o.div.hide()});
		reg.showAllFromQuery("*,"+morningOrAfternoon+",B,*", function(o){o.h2.show();});
		this.setStyle({fontWeight:'bold'});
		$('french_link').setStyle({fontWeight:'normal'});
		$('german_link').setStyle({fontWeight:'normal'});
	}); 
	var morning_link = new Element("a", {'id':'morning_link'}).update(dict.morning+" | ");
	morning_link.setStyle({fontWeight:'bold',marginLeft:'10px'});
	morning_link.observe("click", function(e){
		morningOrAfternoon = "V";
		reg.hideAllFromQuery("*,N,*,*", function(o){o.h2.hide(); o.div.hide()});
		reg.showAllFromQuery("*,V,*,*", function(o){o.h2.show();});
		this.setStyle({fontWeight:'bold'});
		$('afternoon_link').setStyle({fontWeight:'normal'});
		$('german_link').setStyle({fontWeight:'normal'});
		$('french_link').setStyle({fontWeight:'normal'});
		$('bilingual_link').setStyle({fontWeight:'normal'});
	});
	
	var afternoon_link = new Element("a", {'id':'afternoon_link'}).update(dict.afternoon+" ");
	afternoon_link.observe("click", function(e){
		morningOrAfternoon = "N";
		reg.hideAllFromQuery("*,V,*,*", function(o){o.h2.hide(); o.div.hide()});
		reg.showAllFromQuery("*,N,*,*", function(o){o.h2.show();});
		this.setStyle({fontWeight:'bold'});
		$('morning_link').setStyle({fontWeight:'normal'});
		$('german_link').setStyle({fontWeight:'normal'});
		$('french_link').setStyle({fontWeight:'normal'});
		$('bilingual_link').setStyle({fontWeight:'normal'});
	});

	var lang_selector = new Element("div");
	lang_selector.insert(morning_link);
	lang_selector.insert(afternoon_link);
	lang_selector.insert(german_link);
	lang_selector.insert(french_link);
	lang_selector.insert(bilingual_link);	
	$$("div.tx-x4eevent-pi1")[0].up().insert({'before' : lang_selector});
	
	
}
	
/* Workshop Reorganizer - END */
var morningOrAfternoon = "V"; // per default Morning workshopds
function loadRegisterView(dict){
	reg = new WorkshopReorganizer(function(cat){
		var workshops = new Array();
		
		
		//console.log(cat);
		
		var tr_s = cat.select("tr");

		for (var i = tr_s.length - 1; i >= 0; i--){
			var tr = tr_s[i];
			var td_s = tr.select("td");				
			var td = td_s[2]; // select last column
			
			if(td != undefined){
				/*
				var radio_first = td_s[0].firstChild;
				var radio_second = td_s[1].firstChild;
				*/
				
				/**
				 * solution sugested by Andre
				 */
				var radio_first = td_s[0].childElements()[0];
				var radio_second = td_s[1].childElements()[0];
				
				
				var title = td.select('a')[0].innerHTML;			
				// extract Workshop Type (e.g. morning and afternoon)
				var type = title.substr(title.indexOf("-") + 1, 1);
				// change the attributes of the radio buttons, in order to enable the distinction between morning and afternoon
				/*
				if(type == "V"){
					//var name_attr_first = radio_first.readAttribute("name");
					var name_attr_first = radio_first.name;
					//radio_first.writeAttribute("name", value = name_attr_first.substr(0,name_attr_first.lastIndexOf(']')).concat("_morning]"));
					radio_first.name = name_attr_first.substr(0,name_attr_first.lastIndexOf(']')).concat("_morning]");
					//var name_attr_second = radio_second.readAttribute("name");
					var name_attr_second = radio_second.name;
					//radio_second.writeAttribute("name", value = name_attr_second.substr(0,name_attr_second.lastIndexOf(']')).concat("_morning]"));
					radio_second.name = name_attr_second.substr(0,name_attr_second.lastIndexOf(']')).concat("_morning]");
					//var r = new Element('input', {'type':'checkbox','name':name_attr_second.substr(0,name_attr_second.lastIndexOf(']')).concat("_morning]");,'value':radio_second.value, 'class':'submitButton' });
					
				}else if(type == "N"){
					//var name_attr_first = radio_first.readAttribute("name");
					var name_attr_first = radio_first.name;
					//radio_first.writeAttribute("name", value = name_attr_first.substr(0,name_attr_first.lastIndexOf(']')).concat("_afternoon]"));
					radio_first.name = name_attr_first.substr(0,name_attr_first.lastIndexOf(']')).concat("_afternoon]");
					//var name_attr_second = radio_second.readAttribute("name");
					var name_attr_second = radio_second.name;
					//radio_second.writeAttribute("name", value = name_attr_second.substr(0,name_attr_second.lastIndexOf(']')).concat("_afternoon]"));
					radio_second.name = name_attr_second.substr(0,name_attr_second.lastIndexOf(']')).concat("_afternoon]");					
				}
				*/
				
				/**
				 * Andi's debug output
				 */
				//$("climate").update(radio_first.checked);
				
				// since all radio's had the same name attribute the browser did not render the checked-status of the afternoon radio's
				// therefore we have to check them manually
				if(radio_first.checked == "checked"){
				//if(radio_first.readAttribute("checked") == "checked"){
					radio_first.checked = true;
				}
				if(radio_second.checked == "checked"){
				//if(radio_second.readAttribute("checked") == "checked"){
					radio_second.checked = true;
				}
				
				// extract Workshop Language
				var language = title.substr(0,1);

				if(workshops[type] == undefined){
					workshops[type] = new Array();
				}
				if(workshops[type][language] == undefined){
					workshops[type][language] = new Array();
				}
				var workshopsInLanguage = workshops[type][language];
				workshopsInLanguage[workshopsInLanguage.length] = tr;			
			}
		};
		return workshops;

	}, $$("fieldset table"));
	
	/* We need to get control over the normal form submit 
	   behavior, for this reason we store the submit
	   buttons in a specific array and rewrite their 
	   default submit property. In this way the the form 
	   must be send by javascript. 
	*/
	var back_buttons = new Array();
	var forward_buttons = new Array();
	
	var submit_buttons = $$("input.submitButton");
	
	for (var i = submit_buttons.length - 1; i >= 0; i--){
		var b = new Element('input', {'type':'button','name':submit_buttons[i].name,'value':submit_buttons[i].value, 'class':'submitButton' });
		submit_buttons[i].insert({
			after: b
		});
		if(submit_buttons[i].readAttribute("value") == "Weiter" || submit_buttons[i].readAttribute("value") == "Suivant"){
			forward_buttons.push(b);
		}else{
			back_buttons.push(b);
		}
		// reset button , no more the default submit action
		submit_buttons[i].remove();
	};
	
	
	/*
	$$("input.submitButton").each(function(b){
		if(b.readAttribute("value") == "Weiter" || b.readAttribute("value") == "Suivant"){
			forward_buttons.push(b);
		}else{
			back_buttons.push(b);
		}
		// reset button , no more the default submit action
		b.writeAttribute("type", value = "button");
	});
	*/
	
	
	
	
	
	forward_buttons.each(function(b){
		b.observe("click", function(e){
			if(morningOrAfternoon == "V"){
				/* set legend to afternoon workshop */
				$$("fieldset legend")[0].update("Workshops "+languagePack.afternoon);				
				/* hide morning workshops */
				reg.hideAllFromQuery("*,V,*,*", function(tr){tr.hide()});
				/* show afternoon workshops */
				reg.showAllFromQuery("*,N,*,*", function(tr){tr.show()});
				/* set morningOrAfternoon to N, we are in afternoon-mode */
				morningOrAfternoon = "N";	
			}else{
				/* change to default submit action */
				var inp = new Element('input', {'type':'hidden','name':this.name,'value':this.value});
				this.insert({
					after: inp
				});
				
				//this.writeAttribute("type", value = "hidden"); /*is used to dispatch request*/
				this.remove();
				
				//$$("form")[0].writeAttribute("name", value = "workshop_registration");
				//document.workshop_registration.submit();
				
				/*
				var workshop_form = $("signupForm");
				workshop_form.submit();
				*/
				document.forms["signupForm"].submit();
				/*
				setTimeout(function() {
			   		document.forms["signupForm"].submit();
			   	}, 100);
				*/
			}
			$('french_link').setStyle({fontWeight:'normal'});
			$('german_link').setStyle({fontWeight:'normal'});
			$('bilingual_link').setStyle({fontWeight:'normal'});
		});	
	});
	
	back_buttons.each(function(b){
		b.observe("click", function(e){
			if(morningOrAfternoon == "N"){
				/* set legend to morning workshop */
				$$("fieldset legend")[0].update("Workshops "+languagePack.morning);
				/* hide afternoon workshops */
				reg.hideAllFromQuery("*,N,*,*", function(tr){tr.hide()});
				/* show morning workshops */
				reg.showAllFromQuery("*,V,*,*", function(tr){tr.show()});
				/* set morningOrAfternoon to V, we are in morning-mode */
				morningOrAfternoon = "V";
			}else{
				/* change to default submit action */

				var inp = new Element('input', {'type':'hidden','name':this.name,'value':this.value});
				this.insert({
					after: inp
				});
				this.remove();
				
				//this.writeAttribute("type", value = "hidden"); /*is used to dispatch request*/
				
				$$("form")[0].writeAttribute("name", value = "workshop_registration");
				document.workshop_registration.submit();
			}
			$('french_link').setStyle({fontWeight:'normal'});
			$('german_link').setStyle({fontWeight:'normal'});
			$('bilingual_link').setStyle({fontWeight:'normal'});
		});
	});
	
	/*init fieldset legend */
	$$("fieldset legend")[0].update("Workshops "+languagePack.morning);
	// show all morning workshops
	reg.showAllFromQuery("*,V,*,*", function(tr){tr.show()});
	// hide all afternoon workshops 
	reg.hideAllFromQuery("*,N,*,*", function(tr){tr.hide()}); 
	
	/* Place a workshop language selector */
	var german_link = new Element("a", {'id':'german_link'}).update(dict.german);
	german_link.observe("click", function(e){
		reg.hideAllFromQuery("*,"+morningOrAfternoon+",*,*", function(tr){tr.hide()});
		reg.showAllFromQuery("*,"+morningOrAfternoon+",D,*", function(tr){tr.show()});
		this.setStyle({fontWeight:'bold'});
		$('bilingual_link').setStyle({fontWeight:'normal'});
		$('french_link').setStyle({fontWeight:'normal'});
	});
	var french_link = new Element("a", {'id':'french_link'}).update(" | "+dict.french);
	french_link.observe("click", function(e){
		reg.hideAllFromQuery("*,"+morningOrAfternoon+",*,*", function(tr){tr.hide()});
		reg.showAllFromQuery("*,"+morningOrAfternoon+",F,*", function(tr){tr.show()});
		this.setStyle({fontWeight:'bold'});
		$('bilingual_link').setStyle({fontWeight:'normal'});
		$('german_link').setStyle({fontWeight:'normal'});
	});
	var bilingual_link = new Element("a", {'id':'bilingual_link'}).update(" | "+dict.bilingual);
	bilingual_link.observe("click", function(e){
		reg.hideAllFromQuery("*,"+morningOrAfternoon+",*,*", function(tr){tr.hide()});
		reg.showAllFromQuery("*,"+morningOrAfternoon+",B,*", function(tr){tr.show()});
		this.setStyle({fontWeight:'bold'});
		$('french_link').setStyle({fontWeight:'normal'});
		$('german_link').setStyle({fontWeight:'normal'});
	}); 

	var lang_selector = new Element("div");
	lang_selector.insert(german_link);
	lang_selector.insert(french_link);
	lang_selector.insert(bilingual_link);	
	$$("fieldset legend")[0].insert({'after' : lang_selector});
	
}



function startRotation(){
	sponsor_txt = $$("#sponsors h1")[0].innerHTML;
	supporter_txt = $$("#supporters h1")[0].innerHTML;
	mainsponsors_txt = $$("#main-sponsors h1")[0].innerHTML;
	/* partner_txt = "Partner der NATUR 2011"
	if(supporter_txt == "Patronat"){
		partner_txt = "Partenaires";
	} */
	
	
	//partner_txt = $$("#media-climate-box h1")[0].innerHTML;
	
	
	//partnerArr = $$("#media-climate-box a");
	supArr = $$("#supporters a");

	support = new ImageLinkRoller(supporter_txt, $$("#supporters a"),$('sidebar'));
	setInterval("support.rollimages()", 3000);
	
	//partner = new ImageLinkRoller(partner_txt, $$("#media-climate-box a"),$('sidebar'));
	//setInterval("partner.rollimages()", 3000);
	
	
	
	
	
	sponsor = new ImageLinkRoller(sponsor_txt, $$("#sponsors a"),$('sidebar'));
	mainsponsor = new ImageLinkRoller(mainsponsors_txt, $$("#main-sponsors a"),$('sidebar'));
	setInterval("sponsor.rollimages()", 3000);
	setTimeout("mainsponsor.rollimages()", 3000);

	//cleaning up
	$$('#footer .footer-logos').each(function(e){e.hide()});
}




window.onload = function() {
	
	setTimeout(startRotation, 50);
	
	if(typeof(isListOfDetail) != "undefined"){
		loadListOfDetail(languagePack);
	}else{
		if(typeof(isRegisterView) != "undefined"){
			loadRegisterView(languagePack);
		}
	}

}

/*
document.observe("dom:loaded", function() {
  
  sponsor_txt = $$("#sponsors h1")[0].innerHTML;
	supporter_txt = $$("#supporters h1")[0].innerHTML;
	partner_txt = "Partner der NATUR"
	if(supporter_txt == "Patronat"){
		partner_txt = "Partenaires";
	}
	
	
	partnerArr = $$("#media-climate-box a");
	supArr = $$("#supporters a");

	
	partner = new ImageLinkRoller(partner_txt, $$("#media-climate-box a"),$('sidebar'));
	setInterval("partner.rollimages()", 3000);
	
	
	supporters = new ImageLinkRoller(supporter_txt, $$("#supporters a"),$('sidebar'));
	setInterval("supporters.rollimages()", 3000);
	
	
	
	if(typeof(isListOfDetail) != "undefined"){
		loadListOfDetail(languagePack);
	}else{
		if(typeof(isRegisterView) != "undefined"){
			loadRegisterView(languagePack);
		}
	}
  
  
});
*/



