/* Warenkorb-Funktionen
 *
 */
	ip.cart = {
		put : function(obj,id,e,type,search_string) {
			if(!e) e = window.event;
			if(typeof type == 'undefined') type = 'web';
			
			var bodyEl = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? window.document.documentElement : window.document.body || null;
			var y = e.pageY ? e.pageY : e.clientY + bodyEl.scrollTop;
			var x = e.pageX ? e.pageX : e.clientX + bodyEl.scrollLeft;
			
			var rpc = new DataRequestor();
			rpc.getURL('/rpc/addToCart.php?picID='+id+'&type='+type+'&search='+search_string);
			rpc.x = x;
			rpc.y = y;
			rpc.onLoad = function(data,obj) {
				if(parseInt(data) > 0) { // data beinhaltet Anzahl Bilder im Warenkorb
					ip.get('txtTabCartCount').innerHTML = data;
					ip.messages.show(ip.messages.getByCode(4),this.x,this.y);
				} else {
					ip.messages.show(ip.messages.getByCode(Math.abs(parseInt(data))),this.x,this.y);
				}
			}
		},
		
		update : function(id,type) {
			var rpc = new DataRequestor();
			rpc.getURL('/rpc/updateCart.php?picID='+id+'&type='+type);
			rpc.onLoad = function(data,obj) {
				if(parseInt(data) == 0) {
					alert('Es ist ein Fehler aufgetreten.');
				}
			}
		},
		
		remove : function(id) {
			var f = document.forms.frmCartStep1;
			f.step.value = 1;
			f.delID.value = id;
			f.submit();
		},
		
		setItemPrice : function(id,price,mwst) {
			// item
			ip.get('txtCartItemPrice'+id).innerHTML = this.formatPrice(price);
			// total
			var arrSpans = ip.get('divCartItems').getElementsByTagName('span');
			var total = 0;
			for(var i=0;i<arrSpans.length;i++) {
				if(arrSpans[i].id.indexOf('txtCartItemPrice') > -1) {
					total += parseInt(arrSpans[i].innerHTML);
				}
			}
			ip.get('txtTotalWithout').innerHTML = this.formatPrice(total);
			if (mwst>0) {
				ip.get('txtTotalWith').innerHTML = this.formatPrice(Math.round(total*mwst*20)/20);
			} else {
				ip.get('txtTotalWith').innerHTML = this.formatPrice(total);
			}
		},
		
		formatPrice : function(p) {
			var a = p.toString().split('.');
			if(Math.abs(p) == p && a.length == 1) {
				p += '.00';
			} else if(a.length > 1 && a[1].length < 2) {
				p += '0';
			}
			return p;
		},
		
		editAddress : function() {
			ip.get('divCartPaymentInfoTextContainer').style.display = 'none';
			ip.get('divCartPaymentInfoForm').style.display = '';
			
			// Default Land speichern
			var f = document.forms.frmCartStep2;
			f.txtCountry.defaultSelectedIndex = f.txtCountry.selectedIndex;
		},
		
		cancelEditAddress : function() {
			ip.get('divCartPaymentInfoTextContainer').style.display = '';
			ip.get('divCartPaymentInfoForm').style.display = 'none';
		},
		
		saveAddress : function() {
			var f = document.forms.frmCartStep2;
			var rpc = new DataRequestor();
			rpc.argArray[_POST] = new Array();
			
			rpc.argArray[_POST]['txtCompany'] = f.txtCompany.value;
			rpc.argArray[_POST]['txtFirstname'] = f.txtFirstname.value;
			rpc.argArray[_POST]['txtName'] = f.txtName.value;
			rpc.argArray[_POST]['txtStreet'] = f.txtStreet.value;
			rpc.argArray[_POST]['txtZIP'] = f.txtZIP.value;
			rpc.argArray[_POST]['txtCity'] = f.txtCity.value;
			rpc.argArray[_POST]['txtCountry'] = f.txtCountry.value;
			
			rpc.getURL('/rpc/cartSaveAddress.php',_RETURN_AS_JSON);
			rpc.onLoad = function(data,obj) {
				var f = document.forms.frmCartStep2;
				// Alle Felder auf ok stellen
				f.txtFirstname.className = '';
				f.txtName.className = '';
				f.txtStreet.className = '';
				f.txtZIP.className = '';
				f.txtCity.className = '';
				f.txtCountry.className = 'select';
				
				if(data.ok) {
					f.txtCompany.defaultValue = f.txtCompany.value;
					f.txtFirstname.defaultValue = f.txtFirstname.value;
					f.txtName.defaultValue = f.txtName.value;
					f.txtStreet.defaultValue = f.txtStreet.value;
					f.txtZIP.defaultValue = f.txtZIP.value;
					f.txtCity.defaultValue = f.txtCity.value;
					f.txtCountry.defaultSelectedIndex = f.txtCountry.selectedIndex;
					
					ip.get('divCartPaymentInfoText').innerHTML = data.address;
					ip.get('divCartPaymentInfoTextContainer').style.display = '';
					ip.get('divCartPaymentInfoForm').style.display = 'none';
				} else {
					for(i in data.fields) {
						f[data.fields[i]].className += ' error';
					}
				}
			}
		},
		
		showInfoText : function(paymentType) {
			document.getElementById("paymentInfoBox").style.display = "block";
			var f = document.forms.frmCartStep2;
			
			document.getElementById("paymentInfo_savedCC").style.display = "none";
			document.getElementById("paymentInfo_newCC").style.display = "none";
			document.getElementById("paymentInfo_prePay").style.display = "none";
			document.getElementById("paymentInfo_invoice").style.display = "none";
			
			//alert(paymentType);
			
			document.getElementById("paymentInfo_"+paymentType).style.display = "block";
		},
		
		checkPaymentMethod : function(paymentType) {
			var f = document.forms.frmCartStep2;
			//f.radPaymentType[paymentType-1].checked = true;
			for(var i=0;i<f.radPaymentType.length;i++) {
				if(f.radPaymentType[i].value == paymentType) {
					f.radPaymentType[i].checked = true;
					break;
				}
			}
			ip.cart.showInfoText(paymentType);
		},
		
		gotoStep3 : function() {
			var f = document.forms.frmCartStep2;
			if(!f.chkAcceptConditionsTop.checked) {
				//alert('Sie müssen die Vertragsbedingungen akzeptieren.');
			} else {
				f.submit();
			}
		},
		
		showError : function(t) {
			var div = ip.get('divAlert');
			div.innerHTML = t;
			self.scrollTo(0,0);
			div.style.display = '';
		},
		
		checkForm : function() {
			var f = document.getElementsByName("frmCartStep2")[0];
			var formOk = true;
			var isCCPayment = false;
			var isNewCC = false;
			
			f.action = "/cart.php";
			f.target = '';
			
			for(var i=0;i<f.radPaymentType.length;i++) {
				
				if(f.radPaymentType[i].value == 'newCC') {					
					if(f.radPaymentType[i].checked == true) {
						isCCPayment = true;
						isNewCC = true;
						if(f.selCardType.options[0].selected == true) {
							this.showError('Bitte wählen Sie einen Kreditkartentyp aus.');
							formOk = false;
						} else {	
							for(var l=0; l<f.selCardType.options.length; l++) {
								if(f.selCardType.options[l].selected == true) {
									var vCCType = f.selCardType.options[l].value;
								}
							}		
							
							if(f.txtKartennummer.value == '' || !ip.cart.ValidateCreditCardNumber(f.txtKartennummer.value, vCCType)) {
								this.showError('Bitte geben Sie eine korrekte Kreditkartennummer ein.');
								f.txtKartennummer.focus();
								formOk = false;
							} else {
								if(f.txtMonth.value == '' || f.txtYear.value == '' || f.txtMonth.value == 'MM' || f.txtYear.value == 'YY') {
									this.showError('Bitte geben Sie das Gültigkeitsdatum Ihrer Kreditkarte ein.');
									formOk = false;
								} else {
									if(f.txtNameInhaber.value == '') {
										this.showError('Bitte geben Sie den Namen des Karteninhabers ein.');
										f.txtNameInhaber.focus();
										formOk = false;
									} else {
										if(f.txtCVV.value == '') {
											this.showError('Bitte geben Sie eine CVV-Nummer ein.');
											f.txtCVV.focus();
											formOk = false;
										}
									}
								}
							}
						}						
					}
				}
				if(f.radPaymentType[i].value.indexOf('savedCC') != -1) {
					if(f.radPaymentType[i].checked == true) {
						isCCPayment = true;
						var vSavedCardId = f.radPaymentType[i].value;
						vSavedCardId = vSavedCardId.split("savedCC_")[1];
					}					
				}
			}
			
			// Sind Vertragsbedindungen akzeptiert?	
			if(formOk) {
				if(!f.chkAcceptConditionsTop.checked) {
					this.showError('Sie müssen die Vertragsbedingungen akzeptieren.');
					formOk = false;
				} 
			}
			
			// Falls alle Daten ok
			if(formOk) {
				
				if(isCCPayment) {
					f.target = 'ifrmDatatrans';
					f.action = "https://payment.datatrans.biz/upp/jsp/upStartIso.jsp";
					if(isNewCC) {
						f.paymentmethod.value = vCCType;
						f.cardno.value = f.txtKartennummer.value;
						f.aliasCC.value = '';
						f.expm.value = f.txtMonth.value;
						f.expy.value = f.txtYear.value;
						f.cvv.value = f.txtCVV.value;
						f.txtKartennummer.value = '';
					} else {
						f.paymentmethod.value = arrSavedCardsData[vSavedCardId]['paymentmethod'];
						f.cardno.value = '';
						f.aliasCC.value = arrSavedCardsData[vSavedCardId]['aliasCC'];
						f.expm.value = arrSavedCardsData[vSavedCardId]['expm'];
						f.expy.value = arrSavedCardsData[vSavedCardId]['expy'];
						f.cvv.value = '';
					}
				}
				f.submit();
				if(isCCPayment) {
					ip.get('divCartStep2Progress').style.display = '';
					ip.get('imgCartStep2Progress').src = ip.get('imgCartStep2Progress').src;
					f.style.display = 'none';
				}
			}
		},
		
		ValidateCreditCardNumber : function(cardNumber, cardType) {
			var isValid = false;
			var ccCheckRegExp = /[^\d ]/;
			isValid = !ccCheckRegExp.test(cardNumber);
		
			if (isValid) {
				var cardNumbersOnly = cardNumber.replace(/ /g,"");
				var cardNumberLength = cardNumbersOnly.length;
				var lengthIsValid = false;
				var prefixIsValid = false;
				var prefixRegExp;
			
				switch(cardType) {
					case "ECA":
						lengthIsValid = (cardNumberLength == 16);
						prefixRegExp = /^5[1-5]/;
						break;
					
					case "VIS":
						lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
						prefixRegExp = /^4/;
						break;
					
					case "AMX":
						lengthIsValid = (cardNumberLength == 15);
						prefixRegExp = /^3(4|7)/;
						break;
					
					default:
						prefixRegExp = /^$/;
						this.showError("Card type not found");
				}
				
				prefixIsValid = prefixRegExp.test(cardNumbersOnly);
				isValid = prefixIsValid && lengthIsValid;
			}
			
			if (isValid) {
				var numberProduct;
				var numberProductDigitIndex;
				var checkSumTotal = 0;
				
				for (digitCounter = cardNumberLength - 1;digitCounter >= 0;digitCounter--) {
					checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
					digitCounter--;
					numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
					for (var productDigitCounter = 0;productDigitCounter < numberProduct.length;productDigitCounter++) {
						checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
					}
				}
			
				isValid = (checkSumTotal % 10 == 0);
			}
			
			return isValid;
		},
		
		resetProfileAddress : function() {
			var f = document.forms.frmCartStep2;
			f.txtCompany.value = arrProfileData['company'];
			f.txtFirstname.value = arrProfileData['firstname'];
			f.txtName.value = arrProfileData['lastname'];
			f.txtStreet.value = arrProfileData['street'];
			f.txtZIP.value = arrProfileData['zip'];
			f.txtCity.value = arrProfileData['city'];
			for(var i=0;i<f.txtCountry.options.length;i++) {
				if(f.txtCountry.options[i].value == arrProfileData['country']) {
					f.txtCountry.selectedIndex = i;
					break;
				}
			}
		}
	}