// OrderSwitch
function switchTab(id) {
    var count = $('#orderForm').find('div').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('div').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') {
		$('#' + field + '').addClass('required'); 
		$('#noerror').hide();
		$('contactfield[id=' + field + '], article[id=' + field + ']', orderxml).each(function() {
			var language = $('#language').val();
			var title = $(this).find('title[lang=' + language + ']').text();
			$('.error_' + field + '').remove();
			$('.formerror').append('<li class="error_' + field + '">' + title + '</li>');
		});
		$('#submit').attr('disabled', 'disabled');
	}
}

function removeOrderError(field) {
	if (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);
		}
    });
	
	$('select[class*=isNotEmptySelect]').each(function () {
		field = $(this).attr('id');
		if ($(this).val() == 'false') {
			$('#' + field + '').addClass('required');
			$('.errortab').show();
			addOrderError(field);
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
	
	$('select[class*=isNotEmptySelect]').change(function () {
		field = $(this).attr('id');
		if ($(this).val() == 'false') {
			$('#' + field + '').addClass('required');
			$('.errortab').show();
			addOrderError(field);
		} else {
			$('#' + field + '').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*=al4Nums]').each(function () {
		var reg = /[0-9]{4,5}$/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*=al4Nums]').blur(function () {
		var reg = /[0-9]{4,5}$/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]').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 () {
		field = $(this).attr('id');
		if ($(this).val() != '') {
			var reg = /[0-9]+$/i;
			if (!$(this).val().match(reg)) {
				$(this).addClass('required');
				$('.errortab').show();
				addOrderError(field);
			} else {
				$(this).removeClass('required');
				removeOrderError(field);
			}
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
	$('input[class*=isNumericOrEmpty]').blur(function () {
		field = $(this).attr('id');
		if ($(this).val() != '') {
			var reg = /[0-9]+$/i;
			if (!$(this).val().match(reg)) {
				$(this).addClass('required');
				$('.errortab').show();
				addOrderError(field);
			} else {
				$(this).removeClass('required');
				removeOrderError(field);
			}
		} else {
			$(this).removeClass('required');
			removeOrderError(field);
		}
    });
}

function getFormData() {

	$('select[id=orderCountry]').blur(function () {
		$('article', orderxml).each(function() {
			var id = $(this).attr('id');
			if ($('#orderCountry').val() == 'DE') {
				currency = 'EUR';
			} else {
				currency = 'CHF';
			}
			$('currency[id=' + currency + ']', $(this)).each(function() {
				price = $(this).find('price').text();
			});
			$('currency[id=' + currency + ']', $(this)).each(function() {
				shipping = $(this).find('shipping').text();
			});
			$('#price_' +  id +'').text(price + ' ' + currency);
			$('#shipping_' +  id +'').text(shipping + ' ' + currency);
		});
	});
				
	$('input[id^=order], select[id=orderCountry]').blur(function () {
		var pricenetto = 0;
		var pricetotalnetto = 0;
		var vat = 0;
		var pricevat = 0;
		var pricevattotal = 0;
		var shipping = 0;
		var priceshippingtotal = 0;
		var articlecount = 0;
		var pricetotal = 0;
		var currency = 'CHF';
		var shippingvat = 0;
		var price = 0;
		var shippingvattotal = 0;
		var test_priceshippingtotal = 0;
		var other_priceshippingtotal = 0;
		var test_shippingvat = 0;
		var other_shippingvat = 0;
		$('#pricetotalnetto').val(0);
		$('article[disable=true]', orderxml).each(function() {
			var id = $(this).attr('id');
			
			// maximum free exemplars
			if ($('#' + id + '').val() > 10 && id != 'orderInfo_20' && id != 'orderInfo_21') {
				$('#' + id + '').attr('value', '10');
			}
			
			// free exemplars only for swiss
			if ($('#orderCountry').val() != 'CH') {
				$('#' + id + '').attr('value', '');
				$('#' + id + '').attr('disabled', 'disabled');
			} else {
				$('#' + id + '').removeAttr('disabled');
			}
		});
		$('input[value!=""][id^=order]').each(function() {
			var id = $(this).attr('id');
			var value = $(this).attr('value');
			$('article[id='+ id +']', orderxml).each(function() {
				var title = $(this).find('title').text();
				if ($('#orderCountry').val() == 'DE') {
					currency = 'EUR';
				}
				$('currency[id=' + currency + ']', $(this)).each(function() {
					price = $(this).find('price').text();
				});
				$('currency[id=' + currency + ']', $(this)).each(function() {
					vat = $(this).find('vat').text();
				});
				$('currency[id=' + currency + ']', $(this)).each(function() {
					shipping = $(this).find('shipping').text();
				});
				$('currency[id=' + currency + ']', $(this)).each(function() {
					vat = $(this).find('vat').text();
				});
				$('currency[id=' + currency + ']', $(this)).each(function() {
					shippingvat = $(this).find('shippingvat').text();
				});
				if (value > 0) {
					articlecount = parseFloat(articlecount) + parseFloat(value);
					// price staggering
					
					if (id == 'orderInfo_6') {
						if (value < 300) {
							if (currency == 'EUR') {
								pricenetto = 10.71 * value;
							} else {
								pricenetto = 15 * value;
							}
						} else if (value < 500) {
							if (currency == 'EUR') {
								pricenetto = 9.29 * value;
							} else {
								pricenetto = 13 * value;
							}
						} else if (value < 1000) {
							if (currency == 'EUR') {
								pricenetto = 8.71 * value;
							} else {
								pricenetto = 12 * value;
							}
						} else if (value < 5000) {
							if (currency == 'EUR') {
								pricenetto = 7.86 * value;
							} else {
								pricenetto = 11 * value;
							}
						} else if (value > 5000) {
							if (currency == 'EUR') {
								pricenetto = 5 * value;
							} else {
								pricenetto = 7 * value;
							}
						}
					} else {
						pricenetto = parseFloat(price) * parseFloat(value);
					}
					if (isNaN(pricenetto)) {
						pricenetto = 0;
					}
					pricetotalnetto = parseFloat(pricetotalnetto) + parseFloat(pricenetto);
					if (vat != '') {
						pricevat = parseFloat(pricenetto) * parseFloat(vat);
					}
					if (shipping == '') {
						shipping = 0;
					}
					if (shippingvat == '') {
						shippingvat = 0;
					}
					var reg = /^orderTest/;
					if (id.match(reg)) {
						if (shipping > test_priceshippingtotal) {
							test_priceshippingtotal = parseFloat(shipping);
							test_shippingvat = parseFloat(shipping) * parseFloat(shippingvat);
						}
					} else {
						if (shipping > other_priceshippingtotal) {
							other_priceshippingtotal = parseFloat(shipping);
							other_shippingvat = parseFloat(shipping) * parseFloat(shippingvat);
						}
					}
					pricevattotal = parseFloat(pricevat) + parseFloat(pricevattotal);
				}
			});
		});
		shippingvattotal = parseFloat(test_shippingvat) +	parseFloat(other_shippingvat);
		priceshippingtotal = parseFloat(test_priceshippingtotal) + parseFloat(other_priceshippingtotal);
		
		// Exceptions
		if (currency == 'CHF' && pricetotalnetto >= 150) {
			shippingvattotal = 0;
			priceshippingtotal = 0;
		}
		if (currency == 'EUR' && pricetotalnetto >= 100) {
			shippingvattotal = 0;
			priceshippingtotal = 0;
		}
		
		if ($('#orderCountry').val() != 'CH' && $('#orderCountry').val() != 'DE') {
			$('.foreigncountries').show();
		} else {
			$('.foreigncountries').hide();
		}
		
		if ($('#orderCountry').val() == 'DE') {
			$('#austausch').empty().append($('#txt_austausch_de').val());
			$('#kleinmengen').empty().append($('#txt_kleinmengen_de').val());
			$('#lieferbedingungen').empty().append($('#txt_lieferbedingungen_de').val());
			$('#lieferung').empty().append($('#txt_lieferung_de').val());
		} else if ($('#orderCountry').val() == 'CH') {
			$('#lieferung').empty();
		} else {
			$('#austausch').empty().append($('#txt_austausch_other').val());
			$('#kleinmengen').empty().append($('#txt_kleinmengen_other').val());
			$('#lieferbedingungen').empty().append($('#txt_lieferbedingungen_other').val());
			$('#lieferung').empty().append($('#txt_lieferung_other').val());
		}
		
		// change submit button for stamps
		var submit_stamp = true;
		if (currency == 'CHF' && pricetotalnetto < 30) {
			$('.input_submit').attr('value', $('#submit_stamps').val());
			submit_stamp = false;
		}
		if (currency == 'EUR' && pricetotalnetto < 21.50) {
			$('.input_submit').attr('value', $('#submit_stamps').val());
			submit_stamp = false;
		}

		if (submit_stamp == true) {
			$('.input_submit').attr('value', $('#submit_usual').val());
		}
		pricevattotal = parseFloat(shippingvattotal) + parseFloat(pricevattotal);
		pricetotalnetto = pricetotalnetto.toFixed(2);
		priceshippingtotal = priceshippingtotal.toFixed(2);
		pricevattotal = (Math.ceil(pricevattotal * 20) / 20);
		pricevattotal = pricevattotal.toFixed(2);
		pricetotal = parseFloat(pricetotalnetto) + parseFloat(pricevattotal) + parseFloat(priceshippingtotal);
		$('#currency').val(currency);
		$('#pricetotalnetto').val(pricetotalnetto);
		$('#priceshippingtotal').val(priceshippingtotal);
		$('#pricevattotal').val(pricevattotal);
		$('#pricetotal').val(pricetotal.toFixed(2));
		if ($('#pricetotalnetto').val() > 0 && $('#pricetotalnetto').val() != 'NaN') {
			$('.noprice').hide();
			$('.price').show();
			$('.price_price em').text($('#pricetotalnetto').val() + ' ' + $('#currency').val());
			$('.price_shipping em').text($('#priceshippingtotal').val() + ' ' + $('#currency').val());
			$('.price_vat em').text($('#pricevattotal').val() + ' ' + $('#currency').val());
			$('.price_sum em').text($('#pricetotal').val() + ' ' + $('#currency').val());
		} else {
			$('.noprice').show();
			$('.price').hide();
		}
	});

}

$(document).ready( function(){
	$.ajax({
		type: "GET",
		async: false,
		url: "data/xml/order.xml",
		success: function(data){
		orderxml = data;
	  }
	});
	if ($('#orderForm')) {
		getFormData();
		checkFormTab(); 
		checkorderForm();
		$('.price').hide();
	}
});