var intWindowWidth = 0;
var intWindowHeight = 0;
var intPageWidth = 0;
var intPageHeight = 0;
var objBasket = $('ShopBasket');
var objPageContainer = $('PageContainer');
var strProductContainer_Zoom = 'Shop_ProductContainer_Zoom';
var strProductContainer_Zoom_Back = 'Shop_ProductContainer_Zoom_Back';
var	intProductContainerMaxWidth = 700;
var	intProductContainerMaxHeight = 450;
var intOpacity = 0;


// Hent sidebredde

function FnGetPageSize () {

	intPageWidth = objPageContainer.offsetWidth;
	intPageHeight = objPageContainer.offsetHeight;
	
	if (navigator.userAgent.indexOf('MSIE') > 0) {
		intWindowWidth = document.documentElement.offsetWidth;
		intWindowHeight = document.documentElement.offsetHeight;
	} else {
		intWindowWidth = window.innerWidth;
		intWindowHeight = window.innerHeight;
	}
}


// Hent hvor langt der er scrollet ned på siden

function FnScrollTop (intNumber) {

	var scrollTop = document.body.scrollTop;
	
	if (scrollTop == 0) {	
		if (window.pageYOffset) {		
			scrollTop = window.pageYOffset;			
		} else {		
			scrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;			
		}
	}
	
	return scrollTop += intNumber

}


// Centrer layer midt på siden

function FnCenterInPage (objElement) {

	FnGetPageSize();
	
	objElement.style.left = ((intPageWidth - objElement.offsetWidth) / 2) + 'px';
	objElement.style.top = ((intWindowHeight - objElement.offsetHeight) / 2) + FnScrollTop(0) + 'px';

}


// Vis produkt i layer

function FnShowProduct (intProductID) {

	if ($(strProductContainer_Zoom) == null) {
	
		FnGetPageSize();

		intOpacity = 0;
	
		var objAjax = new Ajax.Request('shop/scripts/productdata.asp?ProductID=' + intProductID, {
	
			method: 'get',
			
			onSuccess: function(objResponse) {
			
				objDivBack = document.createElement('div');
				objDivBack.id = strProductContainer_Zoom_Back;
				objDivBack.style.width = intPageWidth + 'px';
				objDivBack.style.height = intPageHeight + 'px';
				objDiv = document.createElement('div');
				objDiv.id = strProductContainer_Zoom;
				objDiv.className = 'Shop_Border2';
				objDiv.innerHTML = '<div id="Shop_ProductContainer_Zoom_Inner" style="width:' + intProductContainerMaxWidth + 'px;">' + objResponse.responseText + '</div>';
			
				objPageContainer.appendChild(objDivBack);
				objPageContainer.appendChild(objDiv);
				
				FnZoomProduct('up');
		
			}
		
		});
		
	}

}


// Effekt til når et produkt åbnes/lukkes i layer

function FnZoomProduct (strDirection) {

	objElement = $(strProductContainer_Zoom);
	
	if (strDirection == 'up') {

		if (objElement.offsetWidth < intProductContainerMaxWidth) {
		
			objElement.style.width = (objElement.offsetWidth + 10) + 'px';
			
			FnCenterInPage(objElement);
			
			setTimeout('FnZoomProduct("' + strDirection + '")', 10);
			
		} else if (objElement.offsetHeight < intProductContainerMaxHeight) {
		
			objElement.style.height = (objElement.offsetHeight + 10) + 'px';
			
			FnCenterInPage(objElement);
			
			setTimeout('FnZoomProduct("' + strDirection + '")', 10);
			
		} else if (intOpacity < 100) {
	
			intOpacity += 10;
	
			$('Shop_ProductContainer_Zoom_Inner').style.filter = "alpha(opacity=" + intOpacity + ")";
			$('Shop_ProductContainer_Zoom_Inner').style.MozOpacity = intOpacity / 100;
			$('Shop_ProductContainer_Zoom_Inner').style.opacity = intOpacity / 100;
			
			setTimeout('FnZoomProduct("' + strDirection + '")', 50);
			
		}
		
	} else {
	
		if (intOpacity > 0) {
	
			intOpacity -= 10;
	
			objElement.style.filter = "alpha(opacity=" + intOpacity + ")";
			objElement.style.MozOpacity = intOpacity / 100;
			objElement.style.opacity = intOpacity / 100;
			
			setTimeout('FnZoomProduct("' + strDirection + '")', 30);
			
		} else {
			
			objPageContainer.removeChild(objElement);
			objPageContainer.removeChild($(strProductContainer_Zoom_Back));

		}
	
	}

}


// Tilføj et produkt til indkøbskurven

function FnAddProductToBasket (intProductID) {

	var objForms = document.getElementsByTagName('form');

	for (i=0;i<objForms.length;i++) {

		if (objForms[i].name == 'Product' + intProductID + 'Form') {

			document.forms[i].submit();
			
			break;
	
		}
	
	}

}


// Validering af bestillingsformular

function FnCheckOrderForm () {

	objForm = document.OrderForm;	
	blnEmptyFields = false;
	blnDeliveryFilled = false;
	blnDeliveryEmptyField = false;
	blnDeliveryEmailValid = true;
	
	for (i = 0; i < objForm.elements.length; i ++) {

		if (objForm.elements[i].type == 'text') {
			objForm.elements[i].className = 'FormElement';
	
			if (objForm.elements[i].name.indexOf('Delivery') > 0) {
				if (objForm.elements[i].value != '') { blnDeliveryFilled = true; }
				if (objForm.elements[i].value == '') { blnDeliveryEmptyField = true; }
			}

		}

	}
	
	objForm.OrderConditionConfirm.className = '';
	
	if (objForm.OrderRoadUse) { objForm.OrderRoadUse.className = ''; }
	
	if (blnDeliveryFilled && blnDeliveryEmptyField) {
		strRequiredFields = 'OrderBuyerName,OrderBuyerAddress,OrderBuyerPostalCode,OrderBuyerCity,OrderBuyerPhone,OrderBuyerEmail,OrderBuyerEmail_Check,OrderDeliveryName,OrderDeliveryAddress,OrderDeliveryPostalCode,OrderDeliveryCity,kortnr,kontrol';
	} else {
		strRequiredFields = 'OrderBuyerName,OrderBuyerAddress,OrderBuyerPostalCode,OrderBuyerCity,OrderBuyerPhone,OrderBuyerEmail,OrderBuyerEmail_Check,kortnr,kontrol';
	}
	
	arrRequiredFields = strRequiredFields.split(',');
	
	for (i = 0; i < arrRequiredFields.length; i ++) {
	
		if (objForm.elements[arrRequiredFields[i]].value == '') {		
			blnEmptyFields = true;			
			objForm.elements[arrRequiredFields[i]].className = 'Shop_FormElementMissing';		
		}
	
	}

	blnBuyerEmailValid = FnCheckEmail(objForm.OrderBuyerEmail);

//	if (blnDeliveryFilled) { blnDeliveryEmailValid = FnCheckEmail(objForm.OrderDeliveryEmail); }

	if (blnEmptyFields) {
	
		$('Shop_ErrorMessage').innerHTML = 'Et eller flere obligatoriske felter er tomme.';

	} else if (objForm.OrderBuyerEmail_Check.value != objForm.OrderBuyerEmail.value) {
		$('Shop_ErrorMessage').innerHTML = 'E-mail adresserne er ikke ens.';
		objForm.OrderBuyerEmail.className = 'Shop_FormElementMissing';
		objForm.OrderBuyerEmail_Check.className = 'Shop_FormElementMissing';
		
	} else if (blnBuyerEmailValid == false) {
	
		objForm.OrderBuyerEmail.className = 'Shop_FormElementMissing';
		$('Shop_ErrorMessage').innerHTML = 'Der skal indtastes en gyldig e-mail adresse.';
		
	} else if (blnDeliveryEmailValid == false) {
	
		objForm.OrderDeliveryEmail.className = 'Shop_FormElementMissing';
		$('Shop_ErrorMessage').innerHTML = 'Der skal indtastes en gyldig e-mail adresse.';

	} else if (objForm.OrderConditionConfirm.checked == false) {
	
		objForm.OrderConditionConfirm.className = 'Shop_FormElementMissing';
		$('Shop_ErrorMessage').innerHTML = 'Du skal læse og acceptere vores forretningsbetingelser.';
	
	} else {
	
		$('Shop_ErrorMessage').innerHTML = '';

		objForm.submit();

		FnDisableFormButtons(objForm, true);
		
	}

}


// Åbn nyt vindue til betaling via Netbank

function FnOpenBankTransfer () {

	objForm = document.BankTransferForm;	
	blnChecked = false;

	for (i = 0; i < objForm.elements.length; i ++) {

		if (objForm.elements[i].type == 'radio' && objForm.elements[i].checked == true) {

			blnChecked = true;

			FnOpenWindow(objForm.elements[i].value, 'BankTransferWindow', 'scrollbars=auto,resizeable=no', '940', '600', 'true');

		}

	}
	
	if (blnChecked == false) {
		$('Shop_ErrorMessage').innerHTML = 'Der skal vælges en Netbank.';
	}

}


// Gem i database hvilket kreditkort der er valgt

function FnStoreCreditCard (intCreditCardID) {

	var objAjax = new Ajax.Request('shop/scripts/storecreditcard.asp?CreditCardID=' + intCreditCardID, {

		method: 'get',
		
		onSuccess: function(objResponse) {
			$('Shop_PaymentFrame_Container').style.display = 'block';
			$('Shop_PaymentPageBackButton').style.display = 'none';
	
		}
	
	});
	
}


// Deaktiver formular-buttons ved gem etc.

function FnDisableFormButtons (objForm, blnDisable) {

	for (i = 0;i < objForm.elements.length;i ++) {
	
		if (objForm.elements[i].className == 'Shop_FormButton') {		
			objForm.elements[i].disabled = blnDisable;		
		}
	
	}

}


// Tjek om gyldig e-mail er indtastet

function FnCheckEmail (objEmail) {

	blnEmailValid = true;

	if (objEmail.value.indexOf('@') < 2) {
		blnEmailValid = false;
	}
	
	if (objEmail.value.indexOf('.') < 1) {
		blnEmailValid = false;
	}
	
	return blnEmailValid;

}


// Hent bynavn på baggrund af postnummer

function FnTogglePostalCodeCity(objElement, objTargetElement) {

	var objAjax = new Ajax.Request('shop/scripts/postalcodecity.asp?PostalCode=' + objElement.value, {

		method: 'get',

		onSuccess: function (objResponse) {

			if (objResponse.responseText == '') {
				alert('Der skal indtastes et dansk postnummer');
				objElement.value = '';
				objElement.focus();
			} else {
				objTargetElement.value = objResponse.responseText;
				objTargetElement.select();
			}

		}

	});
	
}


// Formatér telefon og fax til formatet 01 23 45 67

function FnFormatPhoneFax (objElement) {

	strValue = objElement.value.replace(/ /g, '');

	if (strValue.length == 8) {
		objElement.value = strValue.substring(0, 2) + ' ' + strValue.substring(2, 4) + ' ' + strValue.substring(4, 6) + ' ' + strValue.substring(6, 8);;	
	}

}


// Formatér valuta

function FnFormatCurrency (intValue) {
	
	intValue = intValue.toString().replace(/,/, '.')

	if(isNaN(intValue))
	intValue = '0';
	
	sign = (intValue == (intValue = Math.abs(intValue)));
	intValue = Math.floor(intValue * 100 + 0.50000000001);
	
	cents = intValue % 100;
	intValue = Math.floor(intValue / 100).toString();
	
	if (cents < 10)
	cents = '0' + cents;
	
	for (var i = 0; i < Math.floor((intValue.length - (1 + i)) / 3); i++)
	intValue = intValue.substring(0, intValue.length - (4 * i + 3)) + '.' + intValue.substring(intValue.length - (4 * i + 3));
	
	return (((sign) ? '' : '-') + intValue + ',' + cents);
	
}


// Tilføj 0 hvis tal under 10. Bruges eks. ved datoer

function FnAddZero (intNumber) {

	if (intNumber < 10) { intNumber = '0' + intNumber }
	
	return intNumber;

}


// Refresh cookie

function FnCookieRefresh() {
	
	$('Shop_CookieFrame').src = 'shop/cookierefresh.asp'
	
	setTimeout('FnCookieRefresh()', 30000);

}


// Check sæsonkort data

function ValidateSeasonCards() {

	var errorContainer = document.getElementById('Shop_ErrorMessage');
	var renewForm = document.RenewForm;
	var rows = renewForm.RowIDs.value.split(',');
	var inputs = renewForm.getElementsByTagName('input');
	var errorText = '';

	errorContainer.innerHTML = '';

	for (i = 0; i < inputs.length; i++) {
		if (inputs[i].className == 'Shop_FormElementMissing') inputs[i].className = 'FormElement';
	}

//	for (i = 0; i < rows.length - 1; i++) {
//		if (document.getElementById('CardHolderNameConfirm_' + rows[i])) document.getElementById('CardHolderNameConfirm' + rows[i]).innerHTML = '';
//	}

	for (i = 0; i < inputs.length; i++) {
		if ((inputs[i].name.substring(0, 14) == 'CardHolderName' || inputs[i].name.substring(0, 17) == 'CardHolderAddress' || inputs[i].name.substring(0, 20) == 'CardHolderPostalCode' || inputs[i].name.substring(0, 14) == 'CardHolderCity') && inputs[i].type == 'text' && inputs[i].value == '') {
			inputs[i].className = 'Shop_FormElementMissing'
			errorText = 'De markerede felter er obligatoriske.';
		}
	}

//	if (errorText == '') {
//		for (i = 0; i < inputs.length; i++) {
//			if (inputs[i].name.substring(0, 10) == 'CardNumber' && inputs[i].type == 'text' && inputs[i].value != '') {
//				if (inputs[i].value.length != 11 || Math.round(inputs[i].value.substring(3, 11).toString()) == 'NaN') {
//					inputs[i].className = 'Shop_FormElementMissing'
//					errorText = 'Der blev ikke indtastet et gyldigt kortnummer.';
//				}
//			}
//		}
//	}

	if (errorText == '') {
		renewForm.submit();
		inputs['BackButton'].disabled = true;
		inputs['NextButton'].disabled = true;
	} else {
		errorContainer.innerHTML = errorText;
	}

}

function GetSeasonCardUser(rowId) {

	var renewForm = document.RenewForm;
	var cardBarcode = renewForm.elements['CardBarcode_' + rowId].value;
	var selDay = renewForm.elements['Day_' + rowId].options[renewForm.elements['Day_' + rowId].selectedIndex].value;
	var selMonth = renewForm.elements['Month_' + rowId].options[renewForm.elements['Month_' + rowId].selectedIndex].value;
	var selYear = renewForm.elements['Year_' + rowId].options[renewForm.elements['Year_' + rowId].selectedIndex].value;
	
	CreateAjaxObject();

	if (ajax) {
		ajax.onreadystatechange = function () {
			if (ajax.readyState == 4 && ajax.status == 200) {
				returnText = ajax.responseText.split('*');
				PasteSeasonCardUser(returnText, rowId);
			} else {
				//alert(ajax.responseText);
			}
		}
		ajax.open('Get', 'shop/scripts/validateseasoncards.asp?CardBarcode=' + cardBarcode + '&Day=' + selDay + '&Month=' + selMonth + '&Year=' + selYear, true);
		ajax.send(null);
	}

}

function PasteSeasonCardUser(returnText, rowId) {

	if (returnText.indexOf('*') > 0) { // Kald kommer fra kortsøgningen
		returnText = returnText.split('*');
		renewForm = opener.document.RenewForm;
	} else {
		renewForm = document.RenewForm;
	}

	if (returnText.length == 1) {
		renewForm.elements['CardHolderName_' + rowId].value = '';
		renewForm.elements['CardHolderAddress_' + rowId].value = '';
		renewForm.elements['CardHolderAddress_' + rowId].readOnly = true;
		renewForm.elements['CardHolderPostalCode_' + rowId].value = '';
		renewForm.elements['CardHolderPostalCode_' + rowId].readOnly = true;
		renewForm.elements['CardHolderCity_' + rowId].value = '';
		renewForm.elements['CardHolderCity_' + rowId].readOnly = true;
		renewForm.elements['CardBarcode_' + rowId].value = '';
		renewForm.elements['Day_' + rowId].selectedIndex = 0;
		renewForm.elements['Month_' + rowId].selectedIndex = 0;
		renewForm.elements['Year_' + rowId].selectedIndex = 0;
		alert('Fejl: Kortholderen blev ikke fundet!');
	} else {
		renewForm.elements['CardHolderName_' + rowId].value = returnText[0];
		renewForm.elements['CardHolderAddress_' + rowId].value = returnText[1];
		renewForm.elements['CardHolderAddress_' + rowId].readOnly = false;
		renewForm.elements['CardHolderPostalCode_' + rowId].value = returnText[2];
		renewForm.elements['CardHolderPostalCode_' + rowId].readOnly = false;
		renewForm.elements['CardHolderCity_' + rowId].value = returnText[3];
		renewForm.elements['CardHolderCity_' + rowId].readOnly = false;
		renewForm.elements['CardBarcode_' + rowId].value = returnText[4];
		renewForm.elements['Day_' + rowId].value = returnText[5];
		renewForm.elements['Month_' + rowId].value = returnText[6];
		renewForm.elements['Year_' + rowId].value = returnText[7];
	}

}

function RepeatCardHolderAddress(checkbox) {

	if (checkbox.checked) {

		var inputs = document.RenewForm.getElementsByTagName('input');
		var address = '';
		var postalCode = '';
		var city = '';

		for (i = 0; i < inputs.length; i++) {
			if (address == '') {
				if (inputs[i].name.substring(0, 17) == 'CardHolderAddress' && inputs[i].type == 'text') address = inputs[i].value;
			} else {
				if (inputs[i].name.substring(0, 17) == 'CardHolderAddress' && inputs[i].type == 'text') inputs[i].value = address;
			}
			if (postalCode == '') {
				if (inputs[i].name.substring(0, 20) == 'CardHolderPostalCode' && inputs[i].type == 'text') postalCode = inputs[i].value;
			} else {
				if (inputs[i].name.substring(0, 20) == 'CardHolderPostalCode' && inputs[i].type == 'text') inputs[i].value = postalCode;
			}
			if (city == '') {
				if (inputs[i].name.substring(0, 14) == 'CardHolderCity' && inputs[i].type == 'text') city = inputs[i].value;
			} else {
				if (inputs[i].name.substring(0, 14) == 'CardHolderCity' && inputs[i].type == 'text') inputs[i].value = city;
			}
		}

		var address = '';
		var postalCode = '';
		var city = '';

	}

}


function FnCheckAmount(intVariationCount) {

    if (intVariationCount.length != '') {
        if (isNaN(intVariationCount)) {
            alert("Du skal indtaste et tal");
        }

        if (intVariationCount > 50) {
            alert("Du kan ikke ligge så mange i kurven");
        }
    }
}

function FnGetVariationData(ProductID) {

    new Ajax.Request('shop/scripts/productvariationdata.asp?ProductID=' + ProductID, {

		method: 'get',
		
		onSuccess: function(objResponse) {

			arrData = objResponse.responseText.split('|');

			document.getElementById('ProductID').value = arrData[0];
			document.getElementById('ProductNumber').value = arrData[1];
			document.getElementById('ProductName').value = arrData[2];
			document.getElementById('ProductPrice').value = arrData[3]; 
            
		}
	
	});

}

function FnGetCustomerData() {

	var OrderBuyerName = document.getElementById('OrderBuyerName').value;
	var OrderBuyerAddress = document.getElementById('OrderBuyerAddress').value;
	var OrderBuyerPostalCode = document.getElementById('OrderBuyerPostalCode').value;
	var OrderBuyerCity = document.getElementById('OrderBuyerCity').value;
	var OrderBuyerCountryID = document.getElementById('OrderBuyerCountryID').value;
	var OrderBuyerPhone = document.getElementById('OrderBuyerPhone').value;
	var OrderBuyerEmail = document.getElementById('OrderBuyerEmail').value;
	var OrderBuyerEmail_Check = document.getElementById('OrderBuyerEmail_Check').value;
	var OrderDeliveryName = document.getElementById('OrderDeliveryName').value;
	var OrderDeliveryAddress = document.getElementById('OrderDeliveryAddress').value;
	var OrderDeliveryPostalCode = document.getElementById('OrderDeliveryPostalCode').value;
	var OrderDeliveryCity = document.getElementById('OrderDeliveryCity').value;
	var OrderDeliveryCountryID = document.getElementById('OrderDeliveryCountryID').value;
	var OrderNewsMail = document.getElementById('OrderNewsMail').checked;

	new Ajax.Request('shop/scripts/customerdata.asp?OrderBuyerName=' + OrderBuyerName + '&OrderBuyerAddress=' + OrderBuyerAddress + '&OrderBuyerPostalCode=' + OrderBuyerPostalCode + '&OrderBuyerCity=' + OrderBuyerCity + '&OrderBuyerCountryID=' + OrderBuyerCountryID + '&OrderBuyerPhone=' + OrderBuyerPhone + '&OrderBuyerEmail=' + OrderBuyerEmail + '&OrderDeliveryName=' + OrderDeliveryName + '&OrderDeliveryAddress=' + OrderDeliveryAddress + '&OrderDeliveryPostalCode=' + OrderDeliveryPostalCode + '&OrderDeliveryCity=' + OrderDeliveryCity + '&OrderDeliveryCountryID=' + OrderDeliveryCountryID +'&OrderNewsMail=' + OrderNewsMail, {
		method: 'get',

		onSuccess: function (objResponse) {

			document.getElementById('navn').value = OrderBuyerName;
			document.getElementById('adresse').value = OrderBuyerAddress;
			document.getElementById('postnr').value = OrderBuyerPostalCode;
			document.getElementById('by').value = OrderBuyerCity;
			document.getElementById('tlf').value = OrderBuyerPhone;
			document.getElementById('email').value = OrderBuyerEmail;

		}

	});

}
   
document.onload = FnCookieRefresh();
