// Application JS

/**
 * Ermittelt Preise
 */
var PreiseKlasse = {
		
	preise : null,
		
	pakete : ['Small', 'Big', 'Full', 'Ultimate', 'Diamond'],
		
	orderSiteURL : '/order/package/',
		
	// Holt aktuelle Preise für die Pakete
	init : function (site) {
		
		$.post('/elements/getprice/', function(data){
				
			PreiseKlasse.preise = data;
			
			if (site == 'order') {
				PreiseKlasse.changeOrderPrice();
			} else {
				PreiseKlasse.changePrice();
			}
		});
	},
		
	// Ändert Preisangaben
	changePrice : function () {
			
		var neues_land = $('#land').val();
		var neue_laufzeit = $('#laufzeit').val();
			
		for (var paket_name in PreiseKlasse.pakete) {
				
			var neues_preis = PreiseKlasse.preise[PreiseKlasse.pakete[paket_name]][neues_land][neue_laufzeit];
			var element_bez = PreiseKlasse.pakete[paket_name].toLowerCase();
			var preis_elem_id = '#paket-preis-' + element_bez;
				
			// Neuen Preis anzeigen
			$(preis_elem_id).text(neues_preis + ' \u20ac');
				
			// Link für den "Buchen"-Button anpassen
			var buchen_data = base64_encode('land='+neues_land+'&laufzeit='+neue_laufzeit);
			var new_url = PreiseKlasse.orderSiteURL+element_bez+'/'+buchen_data
			$('.buchen-'+element_bez).attr('href',new_url);
		}
	},
	
	changeOrderPrice : function () {
			
		var neues_land = $('#land').val();
		var neue_laufzeit = $('#laufzeit').val();
		var paket_name = $('input[name="paket_name"]').val();
		var preis = this.preise[paket_name][neues_land][neue_laufzeit];
		$('#month_price').text(preis+',00');
		
		// Fallse ein verstecktes Feld für den Preis existiert
		if ($('input[name="paket_preis"]').length > 0) {
			$('input[name="paket_preis"]').val(preis);
		}
	}
};

/**
 * Zeigt Formular-Fehlermeldung an.
 */
var showErrorDiv = function(formular, params) {
	
	// Falls Parameter(Fehlermeldungen) übergeben
	if (params) {
		// Zuerst die ursprüngliche Fehlermeldung löschen
		formular.find('div.form_errors div').remove();
		for (elem in params) {
			formular.find('div.form_errors').append('<div>'+params[elem]+'</div>');
		}
	}
	
	formular.find('div.form_errors').show('fast');
};


/**
 * Form-Validator.
 */
(function($){
	$.fn.pdValidator = function(rules, addition) {
		
		var that = this;

		var errors = {};
		
		var required = function (elem) {
			// Input-Text und Textarea
			if (elem.attr('type') == 'text' || elem.is('textarea')) {
				elem_valid = (elem.val() != '');
			} else if (elem.attr('type') == 'checkbox') {
				// Input-Checkbox
				elem_valid = elem.is(':checked');
			}
			return elem_valid;
		};
		
		this.bind('submit', function(e){
			
			var is_valid = {
				wert : true
			};
			
			that.find('input, select, textarea').each(function(){
				
				var elem_name = $(this).attr('name');
				
				for (feld in rules) {
					if (elem_name == feld && !required($(this))) {
						is_valid.wert = false;
						break;
					}
				}
			});
			
			// Falls noch eine zusätzliche Prüfung durchgeführt werden soll
			if (is_valid.wert == true && addition) {
				addition(e, is_valid, $(this), errors);
			}
			
			if (is_valid.wert == false) {
				e.preventDefault();
				var error_text = 'Bitte alle Felder mit <span class="sternchen">*</span> ausfüllen.';
				if (errors.company_exists) {
					error_text = errors.company_exists;
				}
				showErrorDiv(that, {
					miss_field : error_text
				});
				errors = {};
			}
		});
	};
})(jQuery);

$(function(){
	
	// "Und Mehr"
	$('.s_icons').bind('mouseover mouseleave', function(event){
		var event_type = event.type;
		var id = $(this).attr('id').split('_')[2];
		var zusatz = '';
		if (event_type === 'mouseover') {
			zusatz = '_over';
		}
		var img = '/images/icons/services/'+id+zusatz+'.png';
			
		$(this).css({
			'background':'url('+img+')'
		});
	});
	$('.undmehr').bind('click', function(){
		$('.s_icons').each(function(elem){
			var current_id = $(this).attr('id').split('_')[2];
			var new_id = (services_group == 2) ? parseInt(current_id) - 5 : parseInt(current_id) + 5;
			$(this).attr('id', 's_icon_'+new_id);
			$(this).css({
				'background' : 'url(/images/icons/services/'+new_id+'.png)'
			});
			$(this).find('a').attr('href', '/service/info/'+new_id+'/'+leistungen[new_id]['url']);
		});
		if (services_group == 1) {
			services_group = 2;
		} else {
			services_group = 1;
		}
	});
	
	/**
	 * Validiert Formular "Beratung anfordern"
	 */
	$('form#anfordern_form').pdValidator({
		a_unternehmen : 'required',
		a_name : 'required',
		a_email : 'required',
		a_telefon : 'required',
		a_kommentar : 'required'
	});
	/**
	 * Validiert Formular "Angebot anfordern"
	 */
	$('form#angebot_form').pdValidator({
		unternehmen : 'required',
		name : 'required',
		email : 'required',
		telefon : 'required',
		anschrift : 'required',
		ort : 'required',
		plz : 'required'
	});
	
	// "Beratung anfordern" anzeigen
	$('.beratung_anfordern').bind('click', function(){
		$('#overlay').show();
		$('.o_form').show('fast');
		$('.o_form input:first').focus();
	});
	
	// "Beratung anfordern" verstecken
	$('.o_form_header img').bind('click', function(){
		// Form verstecken
		$('.o_form').hide('fast');
		// Layer ausblenden
		$('#overlay').hide('fast');
	});
	
	// Falls IE 7 - "Beratung-Anfordern" anpassen
	if (jQuery.browser.msie == true && jQuery.browser.version == '7.0') {
		$('.o_form').css({
			'margin-left':'-710px'
		});
	}
	
	// Beim Klicken auf "Pressemitteilung..."
	$('.pm_button, .pm-buchen-link').bind('click', function(){
		$('#overlay').show();
		$('.pms').show('fast');
	});
	
	// Beim Schließen von "Pressemitteilungen ..." (Erstellen, Optimieren, Verbreiten)
	$('.pms-kreuz').bind('click',function(){
		$('#overlay').fadeOut('fast');
		$('.pms').hide();
	});
});


/**
 * Reichweite - Kästchen.
 */
function setReichweitePosition () {
	// V-Position des Footers
	var ul_position = getPosition($('#footer_top'));
						
	$('.footer-reichweite').css({
		'top': ul_position.top - 237 + 'px'
		})
}
					
var getPosition = function (elem) {

	var xpos=elem.position();
	var xtop=xpos.top;
	var xleft=xpos.left;
	var currentTag = elem.offsetParent();

	while(currentTag[0].tagName!='BODY') {
		var p = currentTag.position();
		xtop+=p.top;
		xleft+=p.left;
		currentTag = currentTag.offsetParent();
	}
					
	return {
		top : xtop, 
		left : xleft
	};
};
					
$(function(){
	
//	if ($.getUrlVar('env') == 'dev') {
	if (!$.getUrlVar('beispiel')) {
		
		// Ticker starten
		$("#webticker").webTicker({
			travelocity: 0.02, 
			direction: 1
		});

		// Ticker anzeigen
		$('#webticker').show(setReichweitePosition);

		// Reichweite - initiale Position (Höhe)
		setReichweitePosition();

		// Tooltip anzeigen
		var showReichweite = function(curr_li){
			// Position und Breite vom <li>-Element ermitteln
			var li_position = curr_li.offset();
			var li_breite = curr_li.outerWidth();
			var li_center = li_position.left + (li_breite / 2);
			var tooltip_breite = $('.footer-reichweite').outerWidth();
			var tooltip_left = li_center - (tooltip_breite / 2);

			// Tooltip mit den richtigen Text, Zahl und Logo versehen
			var id = curr_li.attr('id').split('-')[1];

			for (var elem in mj) {
				if (elem == id) {
					// Logo
					$('.footer-reichweite-logo').css('background-image','url(/images/logos/medien/big-'+id+'.png)');
					// Reichweite - Zahl
					$('.footer-reichweite-range').text(mj[elem]['reichweite']);
					// Text
					$('.footer-reichweite-text').text(mj[elem]['text']);
				}
			}

			$('.footer-reichweite').css({
				'left' : tooltip_left + 'px'
				});
			$('.footer-reichweite').fadeIn(400);
		};

		// Tooltip verstecken
		var hideReichweite = function(){
			$('.footer-reichweite').hide();
		};

		// Tooltip anzeigen-verstecken
		$('#webticker li:not(.webticker-elem-empty)').hover(function(e){
			showReichweite($(this));
		},
		function(e){
			hideReichweite();
		});
	}
							
});
