
function openLink(s_linkAddress)
{
	top.location.href = s_linkAddress;
}


function submitForm(s_formName)
{
	if ($(s_formName) != null)
	{
		$(s_formName).submit();
	}
}


function postData(s_linkAddress, s_nameArray, s_valueArray) 
{
	var o_newForm = document.createElement('form');
	o_newForm.method = 'post';
	o_newForm.action = s_linkAddress;
	
	for (var i_fieldIndex = 0; i_fieldIndex < s_nameArray.length; ++i_fieldIndex) 
	{
		var o_newInput = document.createElement('input');
		o_newInput.setAttribute('name', s_nameArray[i_fieldIndex]);
		o_newInput.setAttribute('value', s_valueArray[i_fieldIndex]);
		o_newInput.setAttribute('type', 'hidden');
		o_newForm.appendChild(o_newInput);
	}
	
	document.body.appendChild(o_newForm);
	o_newForm.submit();
}


function pageLoaded()
{
	/* initialise login/register */
	
	var o_selectRegister = $('selectRegister');

	if (o_selectRegister != null)
	{
		o_selectRegister.selectedIndex = 0;
	}
	
	var o_inputLogin = $('inputLogin');

	if (o_inputLogin != null)
	{
		o_inputLogin.focus();
	}
	
	/* initialise user update form */
	
	var o_formUpdate = $('formUpdate');

	if (o_formUpdate != null)
	{
		validateUpdateForm();
	}
	
	/* initialise send order form */
	
	var o_selectDeliveryMethod = $('selectDeliveryMethod');

	if (o_selectDeliveryMethod != null)
	{
		o_selectDeliveryMethod.selectedIndex = 0;
	}

	/* submit payment form */
	
	submitForm('formPayment');

	/* initialise order confirmation */
	
	var o_objectConfirmation = $('objectConfirmation');
	
	if (o_objectConfirmation != null) 
	{
		o_objectConfirmation.className = '';
	}
	
	/* initialise matrix */
	
	var o_selectColour = $('selectColour');
	
	if (o_selectColour != null)
	{
		clickedVariantSize();
	}
	
}


function openMenuNode(s_nodeName)
{
	var o_containerMenu = $('containerMenu');
	var o_menuNodeAnchors = (o_containerMenu == null) ? null : o_containerMenu.getElementsByTagName('a');

	var b_notFound = true;
	
	for (var i_nodeIndex = 0; (o_menuNodeAnchors != null && i_nodeIndex < o_menuNodeAnchors.length); ++i_nodeIndex)
	{
		if (b_notFound && (o_menuNodeAnchors[i_nodeIndex].href + '#').indexOf(s_nodeName + '#') > -1)
		{
			b_notFound = false;
			
			/* make all ancestors visible */

			var o_nodeCursor = o_menuNodeAnchors[i_nodeIndex];
			
			while (o_nodeCursor.parentNode != null && o_nodeCursor.parentNode.id != 'containerMenu')
			{
				o_nodeCursor = o_nodeCursor.parentNode.parentNode;
				if (o_nodeCursor != null && o_nodeCursor.style != null)
				{
					o_nodeCursor.style.display = 'block';
				}
			}
			
			/* make adjacent submenu visible */
			
			o_nodeCursor = o_menuNodeAnchors[i_nodeIndex];
			
			do
			{
				o_nodeCursor = o_nodeCursor.nextSibling;
			}
			while (o_nodeCursor != null && o_nodeCursor.nodeType != 1);
			
			if (o_nodeCursor != null && o_nodeCursor.style != null)
			{
				o_nodeCursor.style.display = 'block';
			}
		}
	}
}


function validateContactForm()
{
	var o_formContact = $('formContact');
	var o_buttonContact = $('buttonContact');
	
	var s_input = new Array
	(
		o_formContact.inputForm1,
		o_formContact.inputForm2,
		o_formContact.inputForm3,
		o_formContact.inputForm4,
		o_formContact.inputForm5,
		o_formContact.inputForm6,
		o_formContact.inputForm7,
		o_formContact.inputForm8,
		o_formContact.inputForm9,
		o_formContact.inputForm10
	);
	
	/* check if the conditional fields should shown */
	
	var b_isFullyVisible = o_formContact.inputForm0.value.charAt(0) == '#';
	o_formContact.className = (b_isFullyVisible) ? 'userForm fullyVisible' : 'userForm partiallyVisible';
	
	/* check if the submit button should be enabled or disabled */
	
	var b_isValid = true;

	for (var i_count = 0; i_count < s_input.length; ++i_count)
	{
		if (s_input[i_count].className.indexOf('inputMandatory') > -1)
		{
			if ((s_input[i_count].className.indexOf('conditionallyVisible') == -1) || ((s_input[i_count].className.indexOf('conditionallyVisible') > -1) && (b_isFullyVisible)))
			{
				b_isValid = (b_isValid && s_input[i_count].value.length > 0);
			}
		}
	}
	o_buttonContact.disabled = !b_isValid;
	o_buttonContact.className = (b_isValid) ? 'inputButton' : 'inputButtonDisabled';
}


function validateField(s_validateField)
{
	var o_validateField =  $(s_validateField);
	return (o_validateField == null || o_validateField.className.indexOf('inputMandatory') == -1 || o_validateField.value.length > 0);
}


function validateLoginForm()
{
	/* set state of forgot button */

	var b_validateForgot = validateField('inputLogin');

	var o_buttonForgot = $('buttonForgot');

	if (o_buttonForgot != null)
	{
		o_buttonForgot.disabled = !b_validateForgot;
		o_buttonForgot.className = b_validateForgot ? "inputButton" : "inputButtonDisabled"; 
	}

	/* set state of login buttons */

	var b_validateLogin = validateField('inputPassword') && validateField('inputLogin');

	var o_buttonLogin = $('buttonLogin');

	if (o_buttonLogin != null)
	{
		o_buttonLogin.disabled = !b_validateLogin;
		o_buttonLogin.className = b_validateLogin ? 'inputButton' : 'inputButtonDisabled'; 
	}
}


function validateUpdateForm()
{
	validateUserForm('buttonUpdate');
}


function validateRegisterForm()
{
	validateUserForm('buttonRegister');
}


function validateUserForm(s_buttonName)
{
	/* set state of order button */

	var b_validateForm = true;

	b_validateForm = b_validateForm && validateField('inputName');
	b_validateForm = b_validateForm && validateField('inputAddress');
	b_validateForm = b_validateForm && validateField('inputPostCode');
	b_validateForm = b_validateForm && validateField('inputCity');
	b_validateForm = b_validateForm && validateField('inputMobile');
	b_validateForm = b_validateForm && validateField('inputEmail');
	b_validateForm = b_validateForm && validateField('inputPassword1');
	b_validateForm = b_validateForm && validateField('inputPassword2');

	b_validateForm = b_validateForm && ($('inputPassword1').value == $('inputPassword2').value);
	
	var o_buttonSubmit = $(s_buttonName);

	if (o_buttonSubmit != null)
	{
		o_buttonSubmit.disabled = !b_validateForm;
		o_buttonSubmit.className = b_validateForm ? 'inputButton' : 'inputButtonDisabled'; 
	}
}


function submitBuy()
{
	/* obtain reference to quantity input field */
	
	var o_inputQuantity = $('inputQuantity');

	/* validate quantity */
	
	var i_inputQuantity = parseInt(o_inputQuantity.value);
	var b_result = (i_inputQuantity + '' == o_inputQuantity.value) && (i_inputQuantity > 0);
	o_inputQuantity.value = b_result ? o_inputQuantity.value : 1;

	if (b_result)
	{
		/* check for variant and size */
		
		var o_selectColour = $('selectColour');
		var o_selectSize = $('selectSize');
		
		if (o_selectColour != null && o_selectSize != null)
		{
			/* specify variant and size in submitted field */
			
			o_inputQuantity.name += o_selectColour.options[o_selectColour.selectedIndex].value;
			o_inputQuantity.name += o_selectSize.options[o_selectSize.selectedIndex].value;
		}
	}

	/* return boolean flag specifying if form submission should occur or not */
	
	return b_result;
}


function clickedLogin(b_isCartPage)
{
	var s_inputLogin = $('inputLogin').value;
	var s_inputPassword = $('inputPassword').value;
	var s_nextPage = b_isCartPage ? '10' : '12';
	
	var s_formNames = new Array ('page', 'errorpage', 'action', 'bolag', 'comp', 'user', 'pass', 'cart');
	var s_formValues = new Array (s_nextPage, '11', 'login', '300', '', s_inputLogin, s_inputPassword, b_isCartPage);
	
	if (($('buttonLogin') != null) && (!$('buttonLogin').disabled))
	{
		postData('Servlet', s_formNames, s_formValues);
	}
}


function submitEnter(o_scriptEvent, s_functionName)
{
	var b_result = false;

	if ((window.event != null) && (window.event.keyCode == 13))
	{
		b_result = true;
	}
	else if ((o_scriptEvent != null) && (o_scriptEvent.which == 13))
	{
		b_result = true;
	}

	if (b_result)
	{
		eval(s_functionName);
	}
	
	return !b_result;
}


function clickedSelectRegister()
{
	var b_isRegister = $('selectRegister').selectedIndex == 0;
	$('fieldsetRegister').className = b_isRegister + 'Register';
	$('buttonRegister').className = b_isRegister ? $('buttonRegister').className : 'itemHidden';
	$('buttonContinue').className = b_isRegister ? 'itemHidden' : 'inputButton';

	if (b_isRegister)
	{
		$('inputName').focus();
	}
}


function clickedSelectDeliveryMethod()
{
	var o_selectDeliveryMethod = $('selectDeliveryMethod');

	var b_isUniqueAddress = (o_selectDeliveryMethod.selectedIndex == o_selectDeliveryMethod.options.length - 1);
	var b_isCustomerAddress = (!b_isUniqueAddress) && (o_selectDeliveryMethod.selectedIndex != 0);

	var o_fieldsetAddressUnique = $('fieldsetAddressUnique');
	var o_fieldsetAddressCustomer = $('fieldsetAddressCustomer');
	
	o_fieldsetAddressUnique.className = b_isUniqueAddress ? '' : 'itemHidden';

	if (o_fieldsetAddressCustomer != null)
	{
		o_fieldsetAddressCustomer.className = b_isCustomerAddress ? '' : 'itemHidden';
	}
}


function cartUpdateRow(s_inputName)
{
	var s_inputValue = $(s_inputName).value;

	var s_formNames = new Array ('action', 'page', s_inputName);
	var s_formValues = new Array ('cart.update', '10', s_inputValue);

	postData('Servlet', s_formNames, s_formValues);
}


function cartDeleteRow(s_inputName)
{
	var s_formNames = new Array ('action', 'page', s_inputName);
	var s_formValues = new Array ('cart.update', '10', '0');

	postData('Servlet', s_formNames, s_formValues);
}


function clickedForgot()
{
	var s_inputLogin = $('inputLogin').value;
	
	var s_formNames = new Array ('page', 'inputLogin');
	var s_formValues = new Array ('11', s_inputLogin);
	
	if (($('buttonForgot') != null) && (!$('buttonForgot').disabled))
	{
		postData('ForgotServlet', s_formNames, s_formValues);
	}
}


function clickedUpdate()
{
	submitForm('formUpdate');
}


function clickedRegister()
{
	submitForm('formLoginRegister');
}


function clickedCheckboxPassword()
{
	var b_isPassword = $('checkboxPassword').checked;

	$('inputPassword1').disabled = !b_isPassword;
	$('inputPassword2').disabled = !b_isPassword;

	$('inputPassword1').className = b_isPassword ? 'inputText inputMandatory' : 'inputTextDisabled';
	$('inputPassword2').className = b_isPassword ? 'inputText inputMandatory' : 'inputTextDisabled';
	
	$('labelPassword1').innerHTML = b_isPassword ? '*' + $('labelPassword1').innerHTML : $('labelPassword1').innerHTML.replace('\*', '');
	$('labelPassword2').innerHTML = b_isPassword ? '*' + $('labelPassword2').innerHTML : $('labelPassword2').innerHTML.replace('\*', '');
}


function validateSendForm()
{
	/* check delivery method */
	
	var o_selectDeliveryMethod = $('selectDeliveryMethod');
	var s_selectDeliveryMethod = o_selectDeliveryMethod.options[o_selectDeliveryMethod.selectedIndex].id;

	/* check context */
	
	var b_isLoggedIn = s_selectDeliveryMethod.indexOf('Customer') > -1;
	var b_isDeliveryUnique = s_selectDeliveryMethod.indexOf('Unique') > -1;

	/* validate form */
	
	var b_validateForm = $('checkboxAccept').checked;

	b_validateForm = b_validateForm && (b_isLoggedIn || validateField('inputContactName'));
	b_validateForm = b_validateForm && (b_isLoggedIn || validateField('inputContactMobile'));
	b_validateForm = b_validateForm && (b_isLoggedIn || validateField('inputContactEmail'));

	b_validateForm = b_validateForm && (!b_isDeliveryUnique || validateField('inputUniqueName'));
	b_validateForm = b_validateForm && (!b_isDeliveryUnique || validateField('inputUniqueAddress'));
	b_validateForm = b_validateForm && (!b_isDeliveryUnique || validateField('inputUniquePostCode'));
	b_validateForm = b_validateForm && (!b_isDeliveryUnique || validateField('inputUniqueCity'));

	/* set state of submit button */
	
	var o_buttonFinish = $('buttonFinish');
	o_buttonFinish.className = b_validateForm ? 'inputButton' : 'inputButtonDisabled';
	o_buttonFinish.disabled = !b_validateForm;	
}


function clickedOrder()
{
	/* check delivery method */
	
	var o_selectDeliveryMethod = $('selectDeliveryMethod');
	var s_selectDeliveryMethod = o_selectDeliveryMethod.options[o_selectDeliveryMethod.selectedIndex].id;
	var s_valueDeliveryMethod = o_selectDeliveryMethod.options[o_selectDeliveryMethod.selectedIndex].value;

	/* set boolean flags */

	var b_isLoggedIn = s_selectDeliveryMethod.indexOf('Customer') > -1;
	var b_isDeliveryUnique = s_selectDeliveryMethod.indexOf('Unique') > -1;

	/* obtain payment method */
	
	var o_selectPaymentMethod = $('selectPaymentMethod');
	var s_selectPaymentMethod = o_selectPaymentMethod.options[o_selectPaymentMethod.selectedIndex].value;

	/* obtain contact details */
	
	var s_notificationEmail = b_isLoggedIn ? $('inputCustomerEmail').value : $('inputContactEmail').value; 
	var s_deliveryEmail = b_isLoggedIn ? '' : $('inputContactEmail').value; 

	var s_deliveryName = b_isLoggedIn ? $('inputUniqueName').value : $('inputContactName').value;
	var s_deliveryMobile = b_isLoggedIn ? '' : $('inputContactMobile').value;
	
	/* obtain unique address */

	var s_deliveryAddress = $('inputUniqueAddress').value;
	var s_deliveryPostCodeCity = $('inputUniquePostCode').value.replace(' ', '') + ' ' + $('inputUniqueCity').value;

	/* obtain country */
	
	var o_selectUniqueCountry = $('selectUniqueCountry');
	var s_selectUniqueCountry = o_selectUniqueCountry.options[o_selectUniqueCountry.selectedIndex].value;
	
	/* obtain message */
	
	var s_inputMessage = $('inputMessage').value;
	
	/* add dummy address for anonymous collection order */ 
	
	if (!b_isLoggedIn && !b_isDeliveryUnique)
	{
		s_deliveryAddress = '-';
		s_deliveryPostCodeCity = '-';
	}
	
	/* build parameter arrays */

	var s_formNames1 = ['action', 'deliveryoption', 'garp.payment.type', 'reply_mail', 'reply_mail_do', 'newtext', 'ordertextfield', 'set_OGF_TX1', 'set_OGF_TX2', 'set_OGA_LSE'];
	var s_formValues1 = ['order.confirm', 'insist', s_selectPaymentMethod, s_notificationEmail, 'on', s_inputMessage, s_inputMessage, s_deliveryMobile, s_deliveryEmail, s_valueDeliveryMethod];

	var s_formNames2 = ['set_OGL_NAM', 'set_OGL_AD1', 'set_OGL_ORT', 'set_OGL_LND'];
	var s_formValues2 = [s_deliveryName, s_deliveryAddress, s_deliveryPostCodeCity, s_selectUniqueCountry];

	/* add address fields */
	
	s_formNames1 = (b_isDeliveryUnique || !b_isLoggedIn) ? s_formNames1.concat(s_formNames2) : s_formNames1; 
	s_formValues1 = (b_isDeliveryUnique || !b_isLoggedIn) ? s_formValues1.concat(s_formValues2) : s_formValues1;

	/* post form data */
	
	postData('Servlet', s_formNames1, s_formValues1);
}


function clickedSearch()
{
	var s_inputSearch = $('inputSearch').value;
	
	if (s_inputSearch.length > 0)
	{
		var s_formNames = new Array ('page', 'search');
		var s_formValues = new Array ('8', s_inputSearch);

		postData('Servlet', s_formNames, s_formValues);
	}
}


function clickedVariantSize()
{
	/* obtain reference to drop-downs */
	
	var o_selectColour = $('selectColour');
	var o_selectSize = $('selectSize');

	/* obtain active size code */

	var s_sizeCode = o_selectSize.options[o_selectSize.selectedIndex].value;

	/* set status of variants */
	
	for (var i_colourIndex = 0; i_colourIndex < o_selectColour.options.length; ++i_colourIndex)
	{
		var b_isDisabled = $('inputStock' + o_selectColour.options[i_colourIndex].value + s_sizeCode) == null;
		o_selectColour.options[i_colourIndex].disabled = b_isDisabled;
		o_selectColour.options[i_colourIndex].className = b_isDisabled ? 'optionDisabled' : '';
	}
	
	/* select fist available colour if necessary */
	
	if (o_selectColour.options[o_selectColour.selectedIndex].disabled)
	{
		for (var i_firstColour = 0; o_selectColour.options[i_firstColour].disabled; ++i_firstColour);

		o_selectColour.selectedIndex = i_firstColour;
	}

	/* obtain active variant code */
	
	var s_variantCode = o_selectColour.options[o_selectColour.selectedIndex].value;

	/* lookup price and stock status for active sku */
	
	var s_stockStatus = $('inputStock' + s_variantCode + s_sizeCode).value;
	var s_itemPrice = $('inputPrice' + s_variantCode + s_sizeCode).value;
	
	/* print out active price and stock status */
	
	$('spanStock').innerHTML = s_stockStatus;
	$('spanPrice').innerHTML = s_itemPrice;
}


function clickedTerms(s_classTerms, s_classHeader, s_classLeft, s_classRight, s_classFooter)
{
	var o_divTermsOuter = $('divTermsOuter');
	var o_divWrapperHeader = $('divWrapperHeader');
	var o_divWrapperLeft = $('divWrapperLeft');
	var o_divWrapperRight = $('divWrapperRight');
	var o_divWrapperFooter = $('divWrapperFooter');
	
	o_divTermsOuter.className = s_classTerms;
	o_divWrapperHeader.className = s_classHeader;
	o_divWrapperLeft.className = s_classLeft;
	o_divWrapperRight.className = s_classRight;
	o_divWrapperFooter.className = s_classFooter;
}


function swapVariantImage()
{
	/* determine active variant */
	
	var o_selectColour = $('selectColour');
	var s_activeColour = o_selectColour.options[o_selectColour.selectedIndex].value;

	/* obtain image path for active variant */
	
	var o_inputImage = $('inputImage' + s_activeColour );
	var s_imagePath = o_inputImage.value; 
	
	/* apply path to article image */
	
	if (s_imagePath.indexOf('noimage') == -1)
	{
		var o_imageArticle = $('imageArticle');
		o_imageArticle.src = s_imagePath;
	}
}

