/**
 * Status der Felder (ausgefüllt?) -> anfangs nicht/false
*/
widgetStep = 1;
widgetFields = new Array();
widgetFields['title'] = false;
widgetFields['surename'] = false;
widgetFields['street'] = false;
widgetFields['house_number'] = false;
widgetFields['zipcode'] = false;
widgetFields['city'] = false;
widgetFields['email'] = false;
widgetFields['phone'] = false;
widgetFields['privacy_policy'] = false;
validationFailed = false;

if(typeof widget_version == 'undefined')
	widget_version = -1;

if(widget_version != 6)
{
	$(document).ready(function()
	{
		/**
		 * formular absenden mit enter verhinden
		 */
		$('div#widget form input, div#widget form select').keypress(function(event)
		{
			if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode: event.keyCode)) {
			    event.which = event.charCode || event.keyCode;
			}
			
			if(event.which == 13)
			{
				event.keyCode = 9;
				return false;
			}
		});
		
		/**
		 * Klick des Weiter Buttons
		 */
		$('div#widget a.forward').click(function()
		{
			if($(this).hasClass('disabled'))
				return;
			
			forward();
			
			return false;
		});
		
		/**
		 * Klick des Absende-Button
		 */
		$('div#widget form button').click(function()
		{
			return validate();
		});
		
		/**
		 * Klick des Zurück Button
		 */
		$('div#widget a.backward').click(function()
		{
			
			if($(this).hasClass('disabled'))
				return;
			
			if(widgetStep > 1)
			{
				widgetStep--;
				$('div#widget div#widget-step-' + (widgetStep + 1)).hide();
				$('div#widget div#widget-step-' + widgetStep).show();
				$('div#widget a.forward').removeClass('disabled');
				$('div#widget ol.steps li').removeClass('active');
				$('div#widget ol.steps li.step' + widgetStep).addClass('active');
			}
			
			if(widgetStep < lastStep)
			{
				$('div#widget div.control button').hide();
				$('div#widget a.forward').show();
			}
			
			if(widgetStep <= 1)
				$('div#widget a.backward').addClass('disabled');
			
			return false;
		});
		
		
		$('div#widget form input[name="heating_type"]').click(function(){
			showMoreFields();
		});
		
		$('div#widget form input:radio, div#widget form input:checkbox').click(function(){
			formEvent($(this));
		});
		$('div#widget form select').change(function(){
			formEvent($(this));
		});
		$('div#widget form input').blur(function(){
			formEvent($(this));
		});
		
		$('div#widget img.widget-info, form#lead-form img.info').hover(function()
		{
			var id = $(this).attr('alt');
			$('div#widget-info div#widget-info-content').html($('span#' + id).html());
			
			var fieldId = id.replace(/^info\-/, '');
			var field = $('select#' + fieldId + ', input#' + fieldId + ', textarea#' + fieldId);
			field = $(this);
			
			if(typeof field.position() != 'undefined')
			{
				$('div#widget-info').css({
					left: field.position().left + field.width() + 10,
					top: field.position().top - 18
				}).show();
			}
		}, function()
		{
			$('div#widget-info').hide();
		});
	});
	
	/**
	 * Weiter zum nächsten Schritt
	 */
	function forward()
	{
		if(!validate(widgetStep))
			return false;
		
		if(widgetStep < lastStep)
		{
			if(typeof(window.showMoreFields) == "function") {
				showMoreFields();
			}
			
			widgetStep++;
			$('div#widget div#widget-step-' + (widgetStep - 1)).hide();
			$('div#widget div#widget-step-' + widgetStep).show();
			$('div#widget a.backward').removeClass('disabled');
			$('div#widget ol.steps li').removeClass('active');
			$('div#widget ol.steps li.step' + widgetStep).addClass('active');
		}
		
		if(widgetStep >= lastStep)
		{
			$('div#widget a.forward').hide();
			$('div#widget div.control button').css({
				display: 'block'
			});
			$('div#widget a.forward').addClass('disabled');
		}
	}
	
	/**
	 * Fortschrittsbalken erhöhen
	 * @param percent
	 */
	function increaseStatus(percent)
	{
		current = parseInt($('div#widget div.control div.status-active').css('width'));
		
		if(current + percent < 100)
		{
			newPercent = current + percent;
		}
		else
		{
			newPercent = 100;
		}
		
		$('div#widget div.control div.status-active').animate({
			width: newPercent + '%'
		}, 250, function()
		{
			$('div#widget div.control div.current-status').html(newPercent + '%');
		});
	}
	
	function validatePersonalData()
	{
		title = $('div#widget form select#widget-title option:selected').val();
		if(title == '')
		{
			$('div#widget form label[for="widget-title"]').addClass('error');
			$('div#widget form select#widget-title').addClass('error');
			error = true;
		}
		
		surename = $('div#widget form input#widget-surename').val();
		if(surename == '')
		{
			$('div#widget form label[for="widget-surename"]').addClass('error');
			$('div#widget form input#widget-surename').addClass('error');
			error = true;
		}
		
		street = $('div#widget form input#widget-street').val();
		if(street == '')
		{
			$('div#widget form label[for="widget-street"]').addClass('error');
			$('div#widget form input#widget-street').addClass('error');
			error = true;
		}
		
		houseNumber = $('div#widget form input#widget-house-number').val();
		if(houseNumber == '')
		{
			$('div#widget form label[for="widget-house-number"]').addClass('error');
			$('div#widget form input#widget-house-number').addClass('error');
			error = true;
		}
		
		zipcode = $('div#widget form input#widget-zipcode').val();
		if(zipcode == '' || zipcode.length < 5)
		{
			$('div#widget form label[for="widget-zipcode"]').addClass('error');
			$('div#widget form input#widget-zipcode').addClass('error');
			error = true;
		}
		
		city = $('div#widget form input#widget-city').val();
		if(city == '')
		{
			$('div#widget form label[for="widget-city"]').addClass('error');
			$('div#widget form input#widget-city').addClass('error');
			error = true;
		}
		
		email = $('div#widget form input#widget-email').val();
		emailRegEx = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
		if(email == '' || !emailRegEx.test(email))
		{
			$('div#widget form label[for="widget-email"]').addClass('error');
			$('div#widget form input#widget-email').addClass('error');
			error = true;
		}
		
		phone = $('div#widget form input#widget-phone').val();
		//phoneRegEx = /^[+0-9/\s()]+$/;
		
		queersumme = 0;
		phone2 = phone.split('');
		for(i = 0; i < phone.length; i++)
			queersumme += phone2[i]-0;
		
		//if(phone == '' || !phoneRegEx.test(phone) || queersumme <= 0 || phone.substr(0, 6) == '123456')
		if(phone == '' || (queersumme != "NaN" && queersumme <= 0) || phone.length < 8 || (phone.substr(0,1) != '0' && phone.substr(0,1) != '+') || phone.substr(0, 6) == '123456' || phone.substr(0, 7) == '0123456')
		{
			$('div#widget form label[for="widget-phone"]').addClass('error');
			$('div#widget form input#widget-phone').addClass('error');
			error = true;
		}
		
		if(typeof widget_version == 'undefined' || (widget_version != 2 && widget_version != 3 && widget_version != 4))
		{
			privacyPolicy = $('div#widget form input#widget-privacy-policy:checked').val();
			if(typeof privacyPolicy == 'undefined')
			{
				$('div#widget p.privacy_policy').addClass('error');
				error = true;
			}
		}
		
		return error;
	}
	
	function resetPersonalDataErrors()
	{
		$('div#widget form label[for="widget-title"]').removeClass('error');
		$('div#widget form select#widget-title').removeClass('error');
		$('div#widget form label[for="widget-surename"]').removeClass('error');
		$('div#widget form input#widget-surename').removeClass('error');
		$('div#widget form label[for="widget-street"]').removeClass('error');
		$('div#widget form input#widget-street').removeClass('error');
		$('div#widget form label[for="widget-house-number"]').removeClass('error');
		$('div#widget form input#widget-house-number').removeClass('error');
		$('div#widget form label[for="widget-zipcode"]').removeClass('error');
		$('div#widget form input#widget-zipcode').removeClass('error');
		$('div#widget form label[for="widget-city"]').removeClass('error');
		$('div#widget form input#widget-city').removeClass('error');
		$('div#widget form label[for="widget-email"]').removeClass('error');
		$('div#widget form input#widget-email').removeClass('error');
		$('div#widget form label[for="widget-phone"]').removeClass('error');
		$('div#widget form input#widget-phone').removeClass('error');
		$('div#widget p.privacy_policy').removeClass('error');
	}
}



/**
 * Status der Felder (ausgefüllt?) -> anfangs nicht/false
*/
widgetFields['service'] = false;
widgetFields['wandflaeche'] = false;
widgetFields['farbwahl'] = false;
widgetFields['comment'] = false;

lastStep = 2;



$(document).ready(function()
{
	
});


/**
 * Formularfeld ausgefüllt -> Fortschrittsbalken erhöhen, evt. nächstes Formular
 * @param field
 */
function formEvent(field)
{
	if(validationFailed)
	{
		validate();
	}
	
	name = field.attr('name');
	if(field.val() != '' && !widgetFields[name] && typeof widgetFields[name] != 'undefined')
	{
		
		if(name == 'service' || name == 'wandflaeche')
			increaseStatus(18);
		else
			increaseStatus(8);
		widgetFields[name] = true;
	}
	
}

/**
 * Validierung des Standard-Widget
 * @return
 */
function validate()
{
	error = false;
	
	// reset every error
	$('div#widget form label[for="widget-service"]').removeClass('error');
	$('div#widget form select#widget-service').removeClass('error');
	$('div#widget form label[for="widget-wall-area"]').removeClass('error');
	$('div#widget form input#widget-wall-area').removeClass('error');
	$('div#widget form label[for="widget-color-choice"]').removeClass('error');
	$('div#widget form input#widget-color-choice').removeClass('error');	
	resetPersonalDataErrors();
	
	switch(widgetStep)
	{
		case 1:
			service = $('div#widget form select#widget-service').val();
			if(service == '')
			{
				$('div#widget form label[for="widget-service"]').addClass('error');
				$('div#widget form select#widget-service').addClass('error');
				error = true;
			}
			
			wallArea = $('div#widget form input#widget-wall-area').val();
			if(wallArea == '')
			{
				$('div#widget form label[for="widget-wall-area"]').addClass('error');
				$('div#widget form input#widget-wall-area').addClass('error');
				error = true;
			}
			
			colorChoice = $('div#widget form input#widget-color-choice').val();
			if(service == 'Malerarbeiten' && colorChoice == '')
			{
				$('div#widget form label[for="widget-color-choice"]').addClass('error');
				$('div#widget form input#widget-color-choice').addClass('error');
				error = true;
			}
			
		break;
		case 2:
			error = validatePersonalData();
		break;
	}
	
	validationFailed = error;
	return !error;
}
