/**
 * Wetterwette
 */
var Wetterwette = {};

/**
 * init
 */
Wetterwette.init = function()
{
	Wetterwette.error = new Object();
	Wetterwette.errors = 0;
};

/**
 * check
 */
Wetterwette.check = function()
{
	if(!Validator.genderRadios('wetterwette_gender1', 'm', 'wetterwette_gender2', 'w')) {
		Wetterwette.error['wetterwette_gender'] = 'Bitte geben Sie eine Anrede an';
		Wetterwette.errors++;
	}	
	
	if(!Validator.email($('#wetterwette_email').val())) {
		Wetterwette.error['wetterwette_email'] = 'Bitte geben Sie Ihre E-Mail Adresse an';
		Wetterwette.errors++;
	}
	
	if(!Validator.require($('#wetterwette_firstname').val())) {
		Wetterwette.error['wetterwette_firstname'] = 'Bitte geben Sie Ihren Vornamen an';
		Wetterwette.errors++;
	}
	
	if(!Validator.require($('#wetterwette_lastname').val())) {
		Wetterwette.error['wetterwette_lastname'] = 'Bitte geben Sie Ihren Nachnamen an';
		Wetterwette.errors++;
	}
	
	if(!Validator.checked('wetterwette_c_terms', 1)) {
		Wetterwette.error['wetterwette_c_terms'] = 'Bitte stimmen Sie den Datenschutzbestimmungen zu';
		Wetterwette.errors++;
	}
	
	if(!Validator.require($('#wetterwette_captcha').val())) {
		Wetterwette.error['wetterwette_captcha'] = 'Bitte geben Sie einen gültigen Code an';
		Wetterwette.errors++;
	}	
	
	var temperatures = Array('wetterwette_hamburg1', 'wetterwette_berlin1', 'wetterwette_koeln1', 'wetterwette_frankfurt1', 'wetterwette_muenchen1');
	for(var i = 0; i < temperatures.length; i++) 
	{
		var temperature = Validator.getInt($('#'+temperatures[i]).val());
		var city = Wetterwette.getCityName(temperatures[i]);
		if(temperature === false) {
			Wetterwette.error[temperatures[i]] = '<strong>'+city+'</strong>: Bitte geben Sie eine gültige Temperatur ein';
			Wetterwette.errors++;
		}

		if(temperature !== false && !Validator.checkMaxInt(temperature,100)) {
			Wetterwette.error[temperatures[i]] = '<strong>'+city+'</strong>: Ab 100 Grad kocht schon das Meer';
			Wetterwette.errors++;
		}
		
		if(temperature !== false && !Validator.checkMinInt(temperature,-273)) {
			Wetterwette.error[temperatures[i]] = '<strong>'+city+'</strong>: Dies ist der absolute Temperatur-Nullpunkt';
			Wetterwette.errors++;
		}
	}
	
	var temperatures = Array('wetterwette_hamburg2', 'wetterwette_berlin2', 'wetterwette_koeln2', 'wetterwette_frankfurt2', 'wetterwette_muenchen2');
	for(var i = 0; i < temperatures.length; i++) 
	{
		var temperature = Validator.getInt($('#'+temperatures[i]).val());
		var city = Wetterwette.getCityName(temperatures[i]);
		if(temperature === false) {
			Wetterwette.error[temperatures[i]] = '<strong>'+city+'</strong>: Bitte geben Sie einen gültigen Wert hinterm Komma an';
			Wetterwette.errors++;
		}		
	}
};

/**
 * checkErrors
 */
 Wetterwette.checkErrors = function()
{
	if(Wetterwette.errors == 0) 
	{
		Wetterwette.hideErrors
		return true;
	} 
	else 
	{
		var ids = Array('wetterwette_gender', 'wetterwette_firstname', 'wetterwette_lastname', 'wetterwette_email', 'wetterwette_captcha', 'wetterwette_hamburg1', 'wetterwette_hamburg2', 'wetterwette_berlin1', 'wetterwette_berlin2', 'wetterwette_koeln1', 'wetterwette_koeln2', 'wetterwette_frankfurt1', 'wetterwette_frankfurt2', 'wetterwette_muenchen1', 'wetterwette_muenchen2');
		for(var i = 0; i < ids.length; i++) {
			Wetterwette.markInputField(ids[i]);
		}
		Wetterwette.showErrors();	
		return false;
	}
};

/**
 * input felder markieren
 */
Wetterwette.markInputField = function(id)
{
	if(typeof(Wetterwette.error[id]) == 'undefined') {
		$('#'+id).css('border','1px solid #666666');
	} else {
		$('#'+id).css('border','1px solid #F91D1F');
	}
};

/**
 * informationen ausdrucken
 */
Wetterwette.showErrors = function()
{
	var html = '';
	for(property in Wetterwette.error) {
		html += Wetterwette.error[property]+'<br/>';
	}
	$('#wetterwette_errors').show();
	$('#wetterwette_errors_info').html(html);
};

/**
 * fehlermeldungen verstecken
 */
Wetterwette.hideErrors = function() {
	$('#wetterwette_errors').hide('');
};

/**
 * string ersetzen
 */
Wetterwette.str_replace = function(search, replace, subject) {
	return subject.split(search).join(replace);	
};

/**
 * erster buchstabe in grossschreibung
 */
Wetterwette.ucfirst = function(string)
{
	var value = string;
	var value = value.substr(0,1).toUpperCase()+value.substr(1,value.length);
	return value;	
};

/**
 * liefert den zusammgebauten citynamen einer id des temperatur feldes
 */
Wetterwette.getCityName = function(id)
{
	var city = Wetterwette.str_replace('wetterwette_', '', id);
	var city = Wetterwette.str_replace('ue', 'ü', city);
	var city = Wetterwette.str_replace('oe', 'ö', city);
	var city = city.substr(0, city.length-1);
	var city = Wetterwette.ucfirst(city);
	
	return city;
};

/**
 * wenn DOM bereit, funktionen ausfuehren
 */
$(document).ready(function() 
{	
	$('#form_wetterwette').submit(function(){
		$('#wetterwette_result').hide();
		Wetterwette.init();
		Wetterwette.check();
		return Wetterwette.checkErrors();
	});
});
