/*
==================================================
Executing JavaScript on page load 060528 (Simon Willison)
==================================================
-> http://simonwillison.net/2004/May/26/addLoadEvent/

Hiermit können beliebig viele Funktionen beim "window.onload" aufgerufen werden
ohne dass ein vorher definiertes window.onload überschrieben wird.

- addLoadEvent einfach als erste Funktion einbinden
- Funktionen per addLoadEvent(Funktionsname) dem "window.onload" hinzufügen
  anstatt direkt per window.onload=Funktionsname;
*/

function addLoadEvent(func)
{
	var oldOnload = window.onload;
	if (typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function() {
			if (oldOnload) {
				oldOnload();
			}
			func();
		};
	}
}



/*
==================================================
Element-Klasse hinzufügen/entfernen 100924  (Wolfgang)
==================================================

Elementen soll eine Klasse hinzugefügt werden können,
ohne bestehende Klassen zu überschreiben oder den Klassennamen zu wiederholen.
*/

function addClass(elem, str)
{
	var regExS = new RegExp("\\" + str + "\\b"); // -> /\str\b/ -> Sucht str als einzelnes Wort
	if ( !elem.className || elem.className === "" || elem.className === " ")
	{
		elem.className = str;
	}
	else if (!regExS.test(elem.className))
	{
		elem.className += " " + str;
	}
}

function removeClass(elem, str)
{
	var regExS = new RegExp("\\" + str + "\\b","g");
	elem.className = elem.className.replace(regExS, "");
}



/*
==================================================
@ Zurückübersetzen 100924 (Wolfgang)
==================================================

Wenn zwecks Spamschutz im Html ein alternativer String für @ eingesetzt wird,
kann dieses Script den String wieder zurückübersetzen - so bleiben Bots ohne
js weiterhin ausgesperrt, 95% der Besucher sehen aber die echte E-Mail-Adresse

- der Ersatzstring sollte in einem del mit Klasse "schutz" liegen.
Das ist semantisch ziemlich korrekt und das Script muss nicht lange suchen
- das del sollte per css "text-decoration:none;" bekommen, sonst wird es durchgestrichen dargestellt
- Alle del.schutz werden durch @ (kodiert) überschrieben, sie sollten also für nichts anderes verwendet werden

Benötigt:
- "Executing JavaScript on page load" (addLoadEvent)
*/

function ersetzeAt()
{
	var dels = document.getElementsByTagName("del"), i, len;
	for (i=0, len=dels.length; i<len; i++)
	{
		if (dels[i].className === "schutz")
		{
			dels[i].innerHTML = "&#64;";
		}
	}
}

addLoadEvent(ersetzeAt);



/*
==================================================
Auf Attributunterstützung testen 100924  (Wolfgang)
==================================================

Testet, ob der aktuelle Browser das Attribut "attr" für das Element "elem" unterstützt.
Sinnvoll, um z.B. das originale Browserverhalten für placeholder nicht zu überschreiben.

- gibt true zurück, wenn das Attribut unterstützt wird, sonst false
*/

function elemSupportsAttribute(elem, attr)
{
	return attr in document.createElement(elem);
}



/*
==================================================
Eingabefelder leeren 100924  (Wolfgang)
==================================================

Löscht auf focus den Standardinhalt von (normalen) Eingabefeldern
und setzt ihn wieder ein, wenn das Feld nach Verlassen leer ist.

- der Standardwert wird aus dem placeholder-Attribut ausgelesen
  und es wird nur gelöscht, wenn dieses gesetzt ist
- value sollte nicht vorbelegt werden, nur placeholder
- Passwortfelder werden ausgenommen - hier könnte man nur onfocus immer löschen
  (value von Passwortfeldern ist nicht prüfbar)
- .getAttribute("placeholder") ist notwendig, da das Attribut den betroffenen Browsern nicht bekannt ist
- wenn der Browser placeholder unterstützt und das Verhalten daher von selbst bietet (z.B. Safari), wird das js nicht ausgeführt

Benötigt:
- "Executing JavaScript on page load" (addLoadEvent)
- "Auf Attributunterstützung testen" (elemSupportsAttribute)
*/

function clearInput(inputElement)
{
	if (inputElement.value === inputElement.getAttribute("placeholder"))
  {
    inputElement.value = "";
  }
}

function fillInput(inputElement)
{
	if (inputElement.value === "")
  {
    inputElement.value = inputElement.getAttribute("placeholder");
  }
}

// Initialisierung:
// die richtigen input-Elemente werden bestimmt
// und onfocus- und onblur-Funktionen werden zugewiesen
function prepareInputs()
{
	if (elemSupportsAttribute("input", "placeholder"))
	{
		return;
	}
	var inputs = document.getElementsByTagName("input"), i, len, inputElement;
	for (i=0, len=inputs.length; i<len ;i++)
  {
		inputElement = inputs[i];
		if (inputElement.type != "password" && inputElement.getAttribute("placeholder") && inputElement.getAttribute("placeholder").length > 0)
		{
			inputElement.onfocus = function() {clearInput(this);};
			inputElement.onblur = function() {fillInput(this);};
			fillInput(inputElement);
		}
		/*else if (inputElement.type === "password")
		{
			inputElement.onfocus = function() {this.value="";};
			//inputElement.onblur = function() {fillInput(this);};
			//fillInput(inputElement);
		}*/
	}
}

addLoadEvent(prepareInputs);





// JavaScript Document

function isiPhone(){
    return (
        (navigator.platform.indexOf("iPhone") != -1) ||
        (navigator.platform.indexOf("iPod") != -1)
    );
}

function startImageWechsel() {


	jQuery(".slideshow").cycle({

		fx:			  'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
		timeout:	   8000,  // milliseconds between slide transitions (0 to disable auto advance)
		speed:		   2000,  // speed of the transition (any valid fx speed value)
		random:		   1	  // true for random, false for sequence (not applicable to shuffle fx)

		});	


	jQuery("#sidebar").cycle({

		fx:			  'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
		timeout:	   4000,  // milliseconds between slide transitions (0 to disable auto advance)
		speed:		   2000,  // speed of the transition (any valid fx speed value)
		random:		   1	  // true for random, false for sequence (not applicable to shuffle fx)

		});

	
}

function bgimage() {

	var newWidth = $(window).width();
	var newHeight = $(window).height();
	
	$('body').css('width', newWidth+'px');
	$('img.bg').css('width', newWidth+'px').css('height', '');
	var curImageHeight = $('img.bg').height();
	if(curImageHeight < newHeight) {
		$('img.bg').css('width', '').css('height', newHeight);
		var difWidth = $('img.bg').width()-newWidth;
		var left = difWidth/2;
		$('.slideshow').css('left', '-'+left+'px');
	}
	else {
		$('.slideshow').css('left', '0');
	}
	if(isiPhone()){
		$('img.bg').css('width', '').css('height', newHeight);
		$('.slideshow').css('left', '-100px');
		$('#content .tx-powermail-pi1 .tx_powermail_pi1_fieldwrap_html span').css('top','4px');
		$('#content .tx-powermail-pi1 input').css('position','absolute').css('left','480px').css('top','10px');
	}
}

function validateTicketAmount() {

	// Aktuell verfügbare Karten
	var frAdult = $('#fr_adult').val();
	var saAdult = $('#sa_adult').val();
	var suAdult = $('#so_adult').val();
	
	var saYouth = $('#sa_youth').val();
	var suYouth = $('#so_youth').val();
	
	
	// Tickets für Freitag
	// -------------------------------------------------
	var curFrAdult    = parseInt($('#uid4').val());
	var curFrKombi    = parseInt($('#uid5').val());
	
	var curFrSpecial  = parseInt($('#uid8').val());
	
	var curFrPossible =  curFrAdult + curFrKombi;
	
	if(curFrSpecial > curFrPossible) {
		//alert('Nur '+curFrPossible+' Tickets möglich.');
		//$('#ticket-error').html('Sie haben nur '+curFrPossible+' Tickets für diesen Tag.<br />Bitte überprüfen Sie Ihre Eingabe.<br /><br />X schließen').fadeIn('slow');
		$('#ticket-error').html('Sie benötigen für die/das Dressurticket weitere reguläre Eintrittskarten.<br />Bitte wählen Sie diese aus.<br /><br />X schließen').fadeIn('slow');
		$('#uid8').addClass('invalid');
	} else {
		$('#uid8').removeClass('invalid');
	}
	// -------------------------------------------------
	
	
	// Tickets für Samstag
	// -------------------------------------------------
	var curSaTeen     = parseInt($('#uid10').val());
	var curSaAdult    = parseInt($('#uid11').val());
	var curSaKombi	  = parseInt($('#uid13').val());
	var curSaFamily	  = parseInt($('#uid12').val());
	
	// Eingetragene Dressur-Tickets
	var curSaTeenSpecial    = parseInt($('#uid15').val());
	var curSaAdultSpecial   = parseInt($('#uid16').val());
	
	// Mögliche Kombi-Tickets
	var curSaKombiPossible  = curFrKombi + curSaKombi;
	
	// Ticketverteilung Samstag
	var curSaTeenPossible   =  curSaTeen + (curSaFamily*2);
	var curSaAdultPossible  =  curSaAdult + (curSaFamily*2);
	
	// Kombitickets für Teens
	var SaTeenKombiPossible = curSaAdultPossible - curSaAdultSpecial + curSaKombiPossible;
	if(SaTeenKombiPossible > curSaKombiPossible) SaTeenKombiPossible = curSaKombiPossible;
	
	// Kombitickets für Erwachsene
	var SaAdultKombiPossible = curSaTeenPossible - curSaTeenSpecial + curSaKombiPossible;
	if(SaAdultKombiPossible > curSaKombiPossible) SaAdultKombiPossible = curSaKombiPossible;	
	
	var curSaPossible = curSaTeenPossible + curSaAdultPossible + curSaKombiPossible;
	
	// zu viele Teen-Tickets
	if(curSaTeenSpecial > (SaTeenKombiPossible + curSaTeenPossible)) {
		//alert('Nur '+(SaTeenKombiPossible + curSaTeenPossible)+' Tickets möglich.');
		$('#ticket-error').html('Sie benötigen für die/das Dressurticket weitere reguläre Eintrittskarten.<br />Bitte wählen Sie diese aus.<br /><br />X schließen').fadeIn('slow');
		$('#uid15').addClass('invalid');
	} else {
		$('#uid15').removeClass('invalid');
	}
	
	// zu viele Erwachsenen-Tickets
	if(curSaAdultSpecial > (SaAdultKombiPossible + curSaAdultPossible)) {
		//alert('Nur '+(SaAdultKombiPossible + curSaAdultPossible)+' Tickets möglich.');
		$('#ticket-error').html('Sie benötigen für die/das Dressurticket weitere reguläre Eintrittskarten.<br />Bitte wählen Sie diese aus.<br /><br />X schließen').fadeIn('slow');
		$('#uid16').addClass('invalid');
	} else {
		$('#uid16').removeClass('invalid');
	}
	

	// -------------------------------------------------
	
	
	
	// Tickets für Sonntag
	// -------------------------------------------------
	var curSuA    = parseInt($('#uid18').val());
	var curSuB    = parseInt($('#uid19').val());
	var curSuS	  = parseInt($('#uid20').val());

	var curSuTeenSpecial    = parseInt($('#uid22').val());
	var curSuAdultSpecial   = parseInt($('#uid23').val());	
	
	var curSuPossible = curSuA + curSuB + curSuS + curSaKombiPossible;
	
	// zu viele Tickets
	if((curSuTeenSpecial+curSuAdultSpecial) > curSuPossible) {
		$('#ticket-error').html('Sie benötigen für die/das Dressurticket weitere reguläre Eintrittskarten.<br />Bitte wählen Sie diese aus.<br /><br />X schließen').fadeIn('slow');
		$('#uid22').addClass('invalid');
		$('#uid23').addClass('invalid');
	} else {
		$('#uid22').removeClass('invalid');
		$('#uid23').removeClass('invalid');
	}
	
	
	// -------------------------------------------------
	
}

function ticketForm() {
	$('#ticket-error').css("position",'fixed');
	$('#ticket-error').click(function(){
		$(this).fadeOut('slow');
	});
	
	$('.tx-powermail-pi1 input').click(function() {
		validateTicketAmount();
	});
	
	$('.tx-powermail-pi1 input').change(function() {
		ticketTotal();
	});	
	
	$('input.powermail_ticket-formular').click(function(){
		var name    = $('#uid38');
		var prename = $('#uid39');
		var street  = $('#uid40');
		var zip     = $('#uid41');
		var city    = $('#uid42');
		var phone   = $('#uid43');
		var email1  = $('#uid44');
		var email2  = $('#uid45');
		var error   = 0;
		
		if(name.val() == '') {
			name.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { name.css('background','#F8F8F8').css('color','#999'); }
		if(prename.val() == '') {
			prename.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { prename.css('background','#F8F8F8').css('color','#999'); }
		if(street.val() == '') {
			street.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { street.css('background','#F8F8F8').css('color','#999'); }
		if(zip.val() == '') {
			zip.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { zip.css('background','#F8F8F8').css('color','#999'); }
		if(city.val() == '') {
			city.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { city.css('background','#F8F8F8').css('color','#999'); }
		if(phone.val() == '') {
			phone.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { phone.css('background','#F8F8F8').css('color','#999'); }
		if(email1.val() == '') {
			email1.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { email1.css('background','#F8F8F8').css('color','#999'); }
		if(email2.val() == '' || email2.val() != email1.val()) {
			email2.css('background','#B10000').css('color','#fff');
			error = 1;
		} else { email2.css('background','#F8F8F8').css('color','#999'); }

		if(error == 1) return false;
	});
	
}

function ticketTotal() {
	// Preis Berechnen
	//var test = x.replace(',- Euro', '');
	
	var total1 = parseInt($('#uid4').val())*5;
	var total2 = parseInt($('#uid5').val())*32;
	var total3 = parseInt($('#uid8').val())*5;
	var total4 = parseInt($('#uid10').val())*5;
	var total5 = parseInt($('#uid11').val())*10;
	var total6	= parseInt($('#uid12').val())*15;
	
	var total7 = parseInt($('#uid13').val())*30;
	var total8 = parseInt($('#uid15').val())*4;
	var total9 = parseInt($('#uid16').val())*8;
	
	var total10 = parseInt($('#uid18').val())*24;
	var total11 = parseInt($('#uid19').val())*19;
	var total12 = parseInt($('#uid20').val())*10;
	var total13 = parseInt($('#uid22').val())*4;
	var total14 = parseInt($('#uid23').val())*8;
	
	var total15 = parseInt($('#uid25').val())*15;
	var total16 = parseInt($('#uid26').val())*30;
	var total17 = parseInt($('#uid27').val())*70;
	var total18 = parseInt($('#uid28').val())*105;
	var total19 = parseInt($('#uid29').val())*420;
	
	var total20 = parseInt($('#uid31').val())*1500;
	var total21 = parseInt($('#uid32').val())*600;
	var total22 = parseInt($('#uid33').val())*85;
	
	var total = total1 + total2 + total3 + total4 + total5 + total6 + total7 + total8 + total9 + total10 + total11 + total12 + total13 + total14 + 2 + total15 + total16 + total17 + total18 + total19 + total20 + total21 + total22;
	$('.price-total span').html(total);
	$('#uid51').attr('value',total);
	
	
}

function accContent() {
	$('.accordionButton').click(function() {
		$('.accordionButton').removeClass('on');
	 	$('.accordionContent').slideUp('normal');
		if($(this).next().is(':hidden') == true) {
			$(this).addClass('on');
			$(this).next().slideDown('normal');
		 } 
	 });
	$('.accordionContent').hide();
}

function animSubnav() {
	
	$('ul.sf-menu li.act').css('z-index','90');
	
	$('ul.sf-menu li').hover(
		function () {
			
			$(this).addClass('act');
			$(this).find('ul').delay(300).slideDown('fast',function() {
			});
		},
		function () {
			$(this).find('ul').hide();
			$(this).removeClass('act');
		}
	);


}

jQuery(document).ready(function() {
	ticketForm();
	bgimage();
	isiPhone();
	accContent();
	startImageWechsel();
	if(drawmap==1){initialize_map();}
	$(window).resize(function(){
		bgimage();
	});

	

	if ($.browser.msie && $.browser.version <= 7) 
	{
		
	} else {
		$("ul.sf-menu").superfish({ 
					animation: {height:'show'},
					delay:     500
		}); 	
	}

	if ( $('#sidebar').children().size() == 0 ) {
		 $('#sidebar').hide();
	} else {
		$('#left').append('<div class="clipmyhorse-start"><a href="http://www.clipmyhorse.tv" target="_blank"><img src="uploads/RTEmagicC_clipmyhorse_home.png.png" alt="Clipmyhorse.tv" width="238" height="104" /></a></div>');
	}
	
	if($('p.vorverkauf').length != 0) {
		var vorverkauf = $('p.vorverkauf').html();
		var curh1 = $('#begin-content').html();
		$('#begin-content').html(curh1+'<span style="color:#0228A7"> '+vorverkauf+'</span>')
	}
	
	

	
	
});

	
