// Formular Fehlerbehandlung 	
$(document).ready(function()
{
	$('.captcha_neu span,.captcha_neu img').click(function(){
		$('.captcha_neu img').attr('src', '/typo3conf/ext/goin_shop/captcha/CaptchaSecurityImages.php?id='+new Date().getTime());
	});
	//PLZ Auswahl
	$(".postal_code").each(function() {
		var obj=$(this);
		
		obj.autocomplete(
			"/index.php?eID=postal_code&plain=1", {
			width: 206,
			minChars: 2,
			/*max: 14,*/
			autoFill: false,
			selectFirst: true,
			multiple: true,
			mustMatch: false, 
			matchCase: false,
			matchContains: false,
			matchSubset: true,
			maxItemsToShow: -1,
			multipleSeparator: ' ',
			cacheLength: 1,
			scroll: true,
			scrollHeight: 300,
			extraParams: {
				cLand: function () { 
					return $("#Ecom_"+obj.attr('c_form')+"_Postal_StateProv").val();
				}
			}
		}).result(function(event, data, formatted) {
			var options = String(data).split(',');
			$("#Ecom_"+obj.attr('c_form')+"_Postal_PostalCode").val(options[1]);
			$("#Ecom_"+obj.attr('c_form')+"_Postal_City").val(options[2]);
		});
	});
	
	//Anmeldung
	$("#cart_login").submit(function(){
		$('DIV.message.error.standard').hide();
		var valid = false;
		if($("#Ecom_Customer_0").is(':checked')==true) {
			valid = true;
		} else {
			
			var kunde=$(this).find("#Ecom_Customer_kundennr").val();
			var email=$(this).find("#Ecom_Customer_Email").val();
			var pass=$(this).find("#Ecom_Customer_Password").val();
			var session=$(this).find("#Ecom_kundenid").val();
			if ((pass!="") & ((kunde!="") | (email!=""))) {
				var ajax = GoInLocalServer + "/index.php?eID=login&typ=login&user=" + kunde + "&pass=" + $.md5(encodeURIComponent(pass)) + "&cEmail=" + email+ "&ckundenid=" + session;
				$.ajax({
				  url: ajax,
				  async: false,
				  success: function(data) {
						if (data=="1") {
							valid = true;
						}
				  }
				});
			}
		}
		if (valid == false) {
			$('DIV.message.error.standard').show();
		}else{
			$("input#cl_code").val(2);
		}
		return valid;
	});

	$("#cart_login .radio_check").focus(function(){
		$("#Ecom_Customer_1").attr('checked', true);
	});
	
	//Bestellung
	$('.ordertyp').change(function() {
		var val=$(this).val();
		$(this).parents("div").find("h3.ordertyp_"+val).show();
		val=1 - val;
		$(this).parents("div").find("h3.ordertyp_"+val).hide();
	});
	//merken eines Flags welches Formularfeld required ist
	$('#shop_delivery').find('INPUT.required,SELECT.required').each(function() {
		$(this).addClass('pre_required');
	});
	$("Input[id=Ecom_BillTo_Switch1]").change(function() {
		//Formularfelder nicht required schalten wenn Adresse gleich ist
		if($(this).is(':checked')==true) {
			$('#shop_delivery').css('display','none')
			$('#shop_delivery').find('INPUT.pre_required,SELECT.pre_required').each(function() {
				$(this).removeClass('required');
			});
		}
	}).change();
	$("Input[id=Ecom_BillTo_Switch2]").change(function() {
		//Formularfelder required schalten wenn Adresse nicht gleich ist
		if($(this).is(':checked')==true) {
			$('#shop_delivery').css('display','block')
			$('#shop_delivery').find('INPUT.pre_required,SELECT.pre_required').each(function() {
				$(this).addClass('required');
			});
		}
	}).change();
	
	//Bestellformular
	$('FORM.order').submit(function() 
	{

		$('DIV.message.error.standard').hide();
		var valid = true;
	 	var code = $('#captcha_code').val();
		if (code != undefined ) {
			$.ajax({
				url: '/typo3conf/ext/goin_shop/captcha/check.php',
				data: 'code=' + code,
				dataType: 'html',
				success: function(data, status){
					if (data == 0) {
						$('#captcha_code').parent().parent().addClass('error');
						valid=false;
					}
				}
			})
		}
		$(this).find('INPUT.required,SELECT.required').each(function() {
			$(this).parent().parent().removeClass('error');
		});
		$(this).find('INPUT.required,SELECT.required').each(function() {
			if ( $(this).val() == "" ) {
				$(this).parent().parent().addClass('error');
				valid = false;
			}
			if ( $(this).hasClass('email') == true ) {
				var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/
				if (!filter.test($(this).val())) {
					$(this).parent().parent().addClass('error');
					valid = false;
				}
			}
		});
		if (valid == false) {
			$('DIV.message.error.standard').show();
		}else{
 		  document.cart_order.cl_code.value="3";
		}
		return valid;
	});
	
	/* Zahlungsformular
	 *
	 */	
	//merken eines Flags welches Formularfeld required ist
	$('#CreditCardTable').find('INPUT.required,SELECT.required').each(function() {
		$(this).addClass('pre_required');
	});
	$("Input[id=edit-payment-0],Input[id=edit-payment-1],Input[id=edit-payment-2]").change(function() {
		if($("Input[id=edit-payment-1]").is(':checked')==true) {
			$('#CreditCardTable').css('display','block')
			$('#CreditCardTable').find('INPUT.pre_required,SELECT.pre_required').each(function() {
				$(this).addClass('required');
			});
		} else {
			$('#CreditCardTable').css('display','none')
			$('#CreditCardTable').find('INPUT.pre_required,SELECT.pre_required').each(function() {
				$(this).removeClass('required');
			});
		}
	}).change();
	
	//Zahlungsformular
	$('FORM.payment').submit(function() 
	{
		$('DIV.message.error.standard').hide();
		var valid = true;
		$(this).find('INPUT.required,SELECT.required').each(function()
		{
			$(this).parent().parent().removeClass('error');
		});

		if($(this).find('#edit-payment-1:checked').length == 1) 
		{
			$(this).find('INPUT.required').each(function()
			{
				field_valid=true;
				if ( $(this).val() == "" ) 
				{
					field_valid = false;
				}
				if (field_valid) {
					if ( $(this).hasClass('cvc') == true ) {
						if ($(this).val().length != 3) {
							field_valid = false;
						}
					}
				}
				if (field_valid == false) {
					$(this).parent().parent().addClass('error');
					valid=false;
				}
			});
			$(this).find('SELECT.required').each(function()
			{
				field_valid=true;
				if ( $(this).val() == 0 ) 
				{
					field_valid = false;
				}
				if (field_valid == true) {
				  if ($(this).attr('id') == 'Ecom_Payment_Card_ExpDate_Year') {
				  	field_valid = check_expiration($(this).parent().find('#Ecom_Payment_Card_ExpDate_Month').val(),$(this).val());
				  }
				}
				if (field_valid == false) {
					$(this).parent().parent().addClass('error');
					valid=false;
				}
			});
			if (valid) {
				var ccNum=$(this).find('#Ecom_Payment_Card_Number').val();
				var ccType=$(this).find('#Ecom_Payment_Card_Type').val();
				var ccCVC=$(this).find('#Ecom_Payment_Card_Verification').val();
				if (ccCVC === undefined ) {
					valid = OfflineCheck(ccNum,ccType);
				}else{
					valid = OnlineCheck(ccNum,ccType,ccCVC);
				}
				
				if(!valid) {
					$(this).find('#Ecom_Payment_Card_Type').parent().parent().addClass('error');
					$(this).find('#Ecom_Payment_Card_Number').parent().parent().addClass('error');
					$(this).find('#Ecom_Payment_Card_Verification').parent().parent().addClass('error');
				}
			}
		}
		if (valid == false) {
			$('DIV.message.error.standard').show();
		}else{
 		  document.cart_payment.cl_code.value="4";
		}
		return valid;
	});

	$("Select[id=Ecom_Shipping_Switch]").change(function() {
		var auswahl=$(this).val();
		if ( (auswahl == "") || (auswahl == "schnell") ) {
			$('.date-pick').attr("disabled", true); 
		}else{
			$('.date-pick').removeAttr("disabled"); 
		}
	}).change();
	$("Input[id=Ecom_Shipping_Date]").change(function() {
		var datum=$(this).val();
		var datum_opt=$("Input[id=Ecom_Shipping_Date_Opt]").val();
		if ( Date.fromString(datum) < Date.fromString(datum_opt) ) {
			$('DIV[id=Terminwarnung]').show();
		}else{
			$('DIV[id=Terminwarnung]').hide();
		}
	}).change();
	
});

function OnlineCheck(ccNum,ccType,ccCVC) {
	if (!OfflineCheck(ccNum,ccType)) {
		return _Error('OfflineCheck vor Onlinecheck');
	}
/*
 	$.goin.debug(ccNum);
	$.goin.debug(ccType);
	$.goin.debug(ccCVC);
*/
	return false;
}

function _Error(Text) {
	$.goin.debug(Text);
	return false;
}

function OfflineCheck(ccNum,ccType) {
	//Testnummern
	//http://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm
	//
	var ccIndex="";
	var vInt = "0123456789";
	var w = "";
	// Nur Numern zulassen
	ccNum=ccNum.replace(/[^0-9]/g,"");
	if(isNaN(ccNum)) return _Error('Keine Nummern')

	// Geänderten Wert zurückschreiben
	$('#Ecom_Payment_Card_Number').val(ccNum);

	// Einfache Ueberpruefung  ohne Online Check
	ccLength=ccNum.length;
	switch(ccType) {
		case 'visa': 
			if(ccLength != 16 && ccLength != 13)
				return _Error('visa length');
		  if(ccNum.substr(0,1) != "4")
				return _Error('visa start');
		  break;
		case 'master': 
			if(ccLength != 16 ) 
				return _Error('master length');
		  ccIndex=ccNum.substr(0,2);
		  if(ccIndex != "51" && ccIndex != "52" && ccIndex  != "53" && ccIndex != "54" && ccIndex != "55") 
				return _Error('master start');
		  break;
    case 'amex': 
    	if(ccLength != 16 ) 	
				return _Error('amex length');
		  ccIndex=ccNum.substr(0,2);
		  if(ccIndex != "34" && ccIndex != "37") 
				return _Error('amex start');
		  break;
    case 'diners': 
    	if(ccLength != 16 ) 	
				return _Error('diners length');
		  ccIndex=ccNum.substr(0,2);
		  if(ccIndex != "34" && ccIndex != "37") 
				return _Error('diners start');
		  break;
	}
	// Pruefung auf numerische Werte
	for(i=0; i < ccNum.length; i++) {
		x = ccNum.charAt(i);
		if (vInt.indexOf(x,0) != -1)
			w += x;
	}
	// validate number
	j = w.length / 2;
	if (j < 6.5 || j > 8 || j == 7)
		return _Error('allgemeine l�nge');
	k = Math.floor(j);
	m = Math.ceil(j) - k;
	c = 0;
	for(i=0; i<k; i++) {
		a = w.charAt(i*2+m) * 2;
		c += a > 9 ? Math.floor(a/10 + a%10) : a;
	}
	for(i=0; i<k+m; i++)
		c += w.charAt(i*2+1-m) * 1;
	return (c%10 == 0);
}

