// External Links
function ExternalLinks() {
	$('a[rel="out"]').attr({  
		target: "_blank"
	});
}

// OrderSwitch
function switchTab(id) {
    var count = $('#orderForm').find('fieldset').length;
	for(var i = 1; i <= count; i++) {
		if (i == id) {
			$('#tab'+i).addClass('active');
			$('#cont'+i).show();
		} else {
			$('#tab'+i).removeClass('active');
			$('#cont'+i).hide();
		}
	}
	$('.prevlink').show();
	$('.nextlink').show();
}

// Activate Tab from substring
function checkFormTab() {
	var count = $('#orderForm').find('fieldset').length;
	for(var i = 1; i <= count; i++) {
		$('#tab'+i).removeClass('active');
		$('#cont'+i).hide();
	}
	if (self.document.location.hash.substring(1)) {
		$('#tab'+self.document.location.hash.substring(1)).addClass('active');
		$('#cont'+self.document.location.hash.substring(1)).show();
	} else {
		$('#tab1').addClass('active');
		$('#cont1').show();
	}
	$('.prevlink').show();
	$('.nextlink').show();
	$('#orderForm legend').hide();
}

function addOrderError(field) {
	if (field != '' || field == 'undefined') {
		$('.error_' + field + '').remove();
		$('#noerror').hide();
		$('contactfield[id=' + field + ']', orderxml).each(function() {
			var title = $(this).find('title').text();
			$('.formerror').append('<li class="error_' + field + '">' + title + '</li>');
		});
		$('#submit').attr('disabled', 'disabled');
	}
}

function removeOrderError(field) {
	$('.error_' + field + '').remove();
	if ($('.formerror li').length == 1) {
		$('.errortab').hide();
		$('#submit').removeAttr('disabled');
	}
}

// Check Order Form for mismatch fields
function checkOrderForm() {
	var field = '';
	$('input[class$=isNotEmpty]').each(function () {
		field = $(this).attr('id');
		if ($(this).val() == '') {
			$(this).addClass('required');
			$('.errortab').show();
			addOrderError(field);
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
	$('input[class$=isNotEmpty]').blur(function () {
		field = $(this).attr('id');
		if ($(this).val() == '') {
			$(this).addClass('required');
			$('.errortab').show();
			addOrderError(field);
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
	
	$('input[class$=isEmail]').each(function () {
		var reg =  /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
		field = $(this).attr('id');
		if (!$(this).val().match(reg)) {
			$(this).addClass('required');
			$('.errortab').show();
			addOrderError(field);
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });	
	$('input[class$=isEmail]').blur(function () {
		var reg =  /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
		var field = '';
		field = $(this).attr('id');
		if (!$(this).val().match(reg)) {
			$('.errortab').show();
			addOrderError(field);
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
	
	$('input[class$=isNumeric]').each(function () {
		var reg = /[0-9]+$/i;
		field = $(this).attr('id');
		if (!$(this).val().match(reg)) {
			$(this).addClass('required');
			$('.errortab').show();
			addOrderError(field);
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
	$('input[class$=isNumeric]').blur(function () {
		var reg = /[0-9]+$/i;
		field = $(this).attr('id');
		if (!$(this).val().match(reg)) {
			$(this).addClass('required');
			$('.errortab').show();
			addOrderError(field);
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
	
	$('input[class$=isNumericOrEmpty]').each(function () {
		if ($(this).val() != '') {
			var reg = /[0-9]$/i;
			if (!$(this).val().match(reg)) {
				$(this).addClass('required');
				$('.errortab').show();
				addOrderError(field);
			} else {
				$(this).removeClass('required');
			}
		} else {
			$(this).removeClass('required');
		}
    });
	$('input[class$=isNumericOrEmpty]').blur(function () {
		if ($(this).val() != '') {
			var reg = /[0-9]$/i;
			if (!$(this).val().match(reg)) {
				$(this).addClass('required');
				$('.errortab').show();
				addOrderError(field);
			} else {
				$(this).removeClass('required');
			}
		} else {
			$(this).removeClass('required');
		}
    });
}

function getFormData() {
	$('input[id^=orderTest]').each(function () {
		var pricebrutto = 0;
		var pricetotalbrutto = 0;
		var shippingprice = 0;
		var pricetotal = 0;
		var articlecount = 0;
		var values = 0;
		$('article[id^=orderTest]', orderxml).each(function() {
			var id = $(this).attr('id');
			var title = $(this).find('title').text();
			var price = $(this).find('price').text();
			var currency = $(this).find('price').attr('currency');
			var vat = $(this).find('vat').text();
			$('input[id^='+ id +']').each(function () {
				if ($(this).val() == '') {
					values = 0;
				} else {
					values = $(this).val();
				}
				articlecount = articlecount + parseInt(values);
				if (articlecount == 1) {
					shippingprice = 6.00;
				} else if (articlecount < 7) {
					shippingprice = 10.00;
				} else if (articlecount >= 7) {
					shippingprice = 0;
				}
				pricebrutto = price * $(this).val();
				pricetotalbrutto = pricetotalbrutto + pricebrutto;
				pricetotal = pricetotalbrutto + shippingprice;
				$('#currency').val(currency);
				$('#priceshipping').val(shippingprice.toFixed(2));
				$('#pricetotalbrutto').val(pricetotalbrutto.toFixed(2));
				$('#pricetotal').val(pricetotal.toFixed(2));
			});
		});
	});
	if ($('#pricetotalbrutto').val() != 0 && $('#pricetotalbrutto').val() != 'NaN') {
		$('.noprice').hide();
		$('.price').show();
		$('.price_price em').text($('#pricetotalbrutto').val() + ' ' + $('#currency').val());
		$('.price_shipping em').text($('#priceshipping').val() + ' ' + $('#currency').val());
		$('.price_sum em').text($('#pricetotal').val() + ' ' + $('#currency').val());
	} else {
		$('.noprice').show();
		$('.price').hide();
	}
	
	$('input[id^=orderTest]').blur(function () {
		var pricebrutto = 0;
		var pricetotalbrutto = 0;
		var shippingprice = 0;
		var pricetotal = 0;
		var articlecount = 0;
		var values = 0;
		$('article[id^=orderTest]', orderxml).each(function() {
			var id = $(this).attr('id');
			var title = $(this).find('title').text();
			var price = $(this).find('price').text();
			var currency = $(this).find('price').attr('currency');
			var vat = $(this).find('vat').text();
			$('input[id^='+ id +']').each(function () {
				if ($(this).val() == '') {
					values = 0;
				} else {
					values = $(this).val();
				}
				articlecount = articlecount + parseInt(values);
				if (articlecount == 1) {
					shippingprice = 6.00;
				} else if (articlecount < 7) {
					shippingprice = 10.00;
				} else if (articlecount >= 7) {
					shippingprice = 0;
				}
				pricebrutto = price * $(this).val();
				pricetotalbrutto = pricetotalbrutto + pricebrutto;
				pricetotal = pricetotalbrutto + shippingprice;
				$('#currency').val(currency);
				$('#priceshipping').val(shippingprice.toFixed(2));
				$('#pricetotalbrutto').val(pricetotalbrutto.toFixed(2));
				$('#pricetotal').val(pricetotal.toFixed(2));
			});
		});
		if ($('#pricetotalbrutto').val() != 0 && $('#pricetotalbrutto').val() != 'NaN') {
			$('.noprice').hide();
			$('.price').show();
			$('.price_price em').text($('#pricetotalbrutto').val() + ' ' + $('#currency').val());
			$('.price_shipping em').text($('#priceshipping').val() + ' ' + $('#currency').val());
			$('.price_sum em').text($('#pricetotal').val() + ' ' + $('#currency').val());
		} else {
			$('.noprice').show();
			$('.price').hide();
		}
	});

}

$(document).ready( function(){
	$('.mailtome').yasp();
	ExternalLinks();
	$.ajax({
	  type: "GET",
	  async: false,
	  url: "data/xml/order.xml",
	  success: function(data){
		orderxml = data;
	  }
	});
	getFormData();
	checkFormTab(); 
	checkOrderForm();
});