﻿// VAR INITIALISATION //

// language specific vars
var langIndex = 0;

// var to hold default text in search field
var searchtext;

// var to hold default text in newsletter field
var newslettertext;

// vars to hold info about product variants
var productVariants = [];
var thisVariant = null;

// var to ensure that vouchers are always checked
var voucherChecked = false;

// var to hold original css class in hover - is used in hout
var lastelmclass;

// var to tell if an illegal voucher code has been entered
var killVoucher = false;

// LANGUAGES //

// language assistant class
var LanguageAssistant = function()
{
	this.currentLanguage = null;
	this.setCurrentLanguage = function(lan)
	{
		this.currentLanguage = eval('this.' + lan);
	}	
}

// language class
var Language = function(langIndex)
{
	// English defaults
	this.langIndex = langIndex;
	this.mailToAFriendPageId = 74;
	this.productImagesPageId = 73;
	this.searchText = 'Search';
	this.newsletterText = 'E-mail';
	this.voucherNotAcceptedAlert = 'Voucher not accepted!';
	this.voucherNotAcceptedText = 'Not accepted';
	this.voucherWrongCurrencyAlert = 'Voucher not accepted - it seems to be in the wrong currency';
	this.fieldsMustBeFilled = 'All fields marked with * must be filled in';
	this.invalidEmail = 'The e-mail address is not valid';
}	


// create instances
var la = new LanguageAssistant();

// German
la.DE = new Language(0);
la.DE.mailToAFriendPageId = 59;
la.DE.productImagesPageId = 58;
la.DE.searchText = 'Suche';
la.DE.newsletterText = 'Bitte E-mail eingeben';
la.DE.voucherNotAcceptedAlert = 'Gutschein nicht akzeptiert!';
la.DE.voucherNotAcceptedText = 'Nicht akzeptiert';
la.DE.voucherWrongCurrencyAlert = 'Gutschein nicht akzeptiert (ist nicht EUR)';
la.DE.fieldsMustBeFilled = 'Die mit einem * markierten Felden müssen ausgefüllt werden';
la.DE.invalidEmail = 'Die E-mail Adresse ist nicht gültig';

// English - uses defaults
la.GB = new Language(1);

// Spanish
la.E = new Language(2);
la.E.mailToAFriendPageId = 58;
la.E.productImagesPageId = 59;
la.E.searchText = 'Buscar';
la.E.newsletterText = 'E-mail';
la.E.voucherNotAcceptedAlert = 'Translate to E: Voucher not accepted';
la.E.voucherNotAcceptedText = 'Translate to E: Not accepted';
la.E.voucherWrongCurrencyAlert = 'Translate to E: Voucher not accepted - it seems to be in the wrong currency';
la.E.fieldsMustBeFilled = 'Translate to E: All fields marked with * must be filled in';
la.E.invalidEmail = 'Translate to E: The e-mail address is not valid';

// Danish
la.DK = new Language(3);
la.DK.mailToAFriendPageId = 58;
la.DK.productImagesPageId = 59;
la.DK.searchText = 'Søg';
la.DK.newsletterText = 'E-mail';
la.DK.voucherNotAcceptedAlert = 'Rabatkode ikke accepteret';
la.DK.voucherNotAcceptedText = 'Ikke accepteret';
la.DK.voucherWrongCurrencyAlert = 'Rabatkode ikke accepteret - det er den forkerte valuta';
la.DK.fieldsMustBeFilled = 'Alle felter markeret med * skal udfyldes';
la.DK.invalidEmail = 'E-mail adressen er ugyldig';


// NAVIGATION //

// general mouseover function - used in navigation
function hover(elm, level)
{
	lastelmclass = elm.className;
	elm.className = (level == 1) ? 'navhover' : 'nav2hover';
}

// general mouseout function - used in navigation
function hout(elm, level)
{
	if (lastelmclass) elm.className = lastelmclass;
}

// format the active page (if any) in the submenu
function setCurrentPage()
{
	if (!thispage) return;
	var elm = document.getElementById(thispage);
	if (elm) elm.className = 'nav2active';
}


// SEARCH AND NEWSLETTER //

// set default texts in search and newsletter fields
function setDefaultTexts()
{
	if (!thislanguage) return;
	la.setCurrentLanguage(thislanguage);
	var fld = document.getElementById('id' + thispageid + 'search');
	if (fld)
	{
		if (fld.value != '') searchtext = fld.value;
	}
	if (!searchtext) searchtext = la.currentLanguage.searchText;
	newslettertext = la.currentLanguage.newsletterText;
	langIndex = la.currentLanguage.langIndex;
	var searchfld = document.getElementById('searchfield');
	var newsletterfld = document.getElementById('newsletterfield');
	if (searchfld)
	{
		searchfld = searchfld.getElementsByTagName('input')[0];
		searchfld.value = searchtext;
		if (window.addEventListener)
		{
			searchfld.addEventListener('focus', enterSearchField, false);
			searchfld.addEventListener('blur', leaveSearchField, false);
		}
		else if (window.attachEvent)
		{
			searchfld.attachEvent('onfocus', enterSearchField);
			searchfld.attachEvent('onblur', leaveSearchField);
		}
	}
	if (newsletterfld)
	{
		newsletterfld = newsletterfld.getElementsByTagName('input')[0];
		newsletterfld.value = newslettertext;
		if (window.addEventListener)
		{
			newsletterfld.addEventListener('focus', enterNewsField, false);
			newsletterfld.addEventListener('blur', leaveNewsField, false);
		}
		else if (window.attachEvent)
		{
			newsletterfld.attachEvent('onfocus', enterNewsField);
			newsletterfld.attachEvent('onblur', leaveNewsField);
		}
	}
}

// clear default text in search field when entered
function enterSearchField()
{
	var searchfld = document.getElementById('searchfield').getElementsByTagName('input')[0];
	if (searchfld.value == searchtext) searchfld.value = '';	
}

// reset default text in search field when entered
function leaveSearchField()
{
	var searchfld = document.getElementById('searchfield').getElementsByTagName('input')[0];
	if (searchfld.value == '') searchfld.value = searchtext;	
}

// clear default text in newsletter field when entered
function enterNewsField()
{
	var newsfld = document.getElementById('newsletterfield').getElementsByTagName('input')[0];
	if (newsfld.value == newslettertext) newsfld.value = '';	
}

// reset default text in newsletter field when entered
function leaveNewsField()
{
	var newsfld = document.getElementById('newsletterfield').getElementsByTagName('input')[0];
	if (newsfld.value == '') newsfld.value = newslettertext;	
}


// PRODUCTS //

// create select dropdowns with colours and sizes
function createProductDropdowns()
{
	if (productVariants.length == 0) return;
	else
	{
		var colours = document.getElementById('colourSelect');
		var sizes = document.getElementById('sizeSelect');
		if (!colours || !sizes) return;
		var carr = [];
		var carropt = 0;
		var sarr = [];
		var sarropt = 0;
		for (var i=0; i<productVariants.length; i++)
		{
			var arr = productVariants[i];
			if (!isInArray(arr[0], carr))
			{
				var opt = new Option(arr[0], arr[0]);
				colours.options[carropt] = opt;
				if (thisVariant[0][la.currentLanguage.langIndex] == arr[0]) colours.selectedIndex = carropt;
				carr[carr.length] = arr[0];
				carropt++;
				insertColourImage(arr[3], arr[2]);
			}
			if (!isInArray(arr[1], sarr))
			{
				var opt = new Option(arr[1], arr[1]);
				sizes.options[sarropt] = opt;
				if (thisVariant[1] == arr[1]) sizes.selectedIndex = sarropt;
				sarr[sarr.length] = arr[1];
				sarropt++;
			}
		}
	}
}

// show actual product variant when a different colour or size is selected in dropdowns
function setProductId(sel)
{
	var colours = document.getElementById('colourSelect');
	var sizes = document.getElementById('sizeSelect');
	var c = colours[colours.selectedIndex].value;
	var s = sizes[sizes.selectedIndex].value;
	var pid = thisRecordId;
	for (var i=0; i<productVariants.length; i++)
	{
		var arr = productVariants[i];
		if (arr[0] == c && arr[1] == s) pid = arr[2];
	}
	document.getElementById('putinbasket').getElementsByTagName('a')[0].href = 'javascript:void(0)';
	var url = '?recordid' + thispageid + '=' + pid;
	location.href = url;
}

// insert images representing each available colour variant
function insertColourImage(img, recid)
{
	var brd = (recid == thisRecordId) ? 'solid 1px #657699' : 'solid 1px #FFFFF5';
	var html = '<a href="?recordid' + thispageid + '=' + recid + '"><img src="/media/' + img + '" border="0" style="margin:10px 10px 0px 0px; border:' + brd + '"/></a>';
	var ct = document.getElementById('colourImages');
	if (ct) ct.innerHTML += html;
}

// update href on the 'add to basket' link to reflect the number entered in the 'number of items' field
function setNumOfProducts(num)
{
	document.getElementById('putinbasket').getElementsByTagName('a')[0].href = 'javascript:AddToBasket(' + thisRecordId + ',' + num + ')';
}

// general function to check if a value, val, exists in an array, arr
function isInArray(val, arr)
{
	for (var i=0; i<arr.length; i++)
	{
		if (arr[i] == val) return true;
	}
	return false;
}

// open new window with product images
function showProductImage(pid, url)
{
	var t = (screen.availHeight - 845) / 2;
	var l = (screen.availWidth - 615) / 2;
	if (t < 0) t = 0;
	if (l < 0) l = 0;
	var pg = la.currentLanguage.productImagesPageId;
	var w = window.open('page' + pg + '.aspx?recordid' + pg + '=' + pid + '&img=' + escape(url), 'prodimg','width=615,height=710, top=' + t + ', left=' + l);
	if (w) w.focus();
}

// page initialisation - called on load
function initPage()
{
	setCurrentPage();
	setDefaultTexts();
	createProductDropdowns();
	if (killVoucher == true)
	{
		alert(la.currentLanguage.voucherNotAcceptedAlert);
		history.back();
	}
	var bs = document.getElementById('basket');
	if (bs)
	{
		var wrapper = bs.parentNode;
		var pushbx= document.getElementById('pushbox');
		if (pushbx)
		{
			Tangora.DOM.MoveElement(pushbx, wrapper);
			pushbx.style.display = 'block';
			pushbx.style.marginTop = '12px';
		}
	}
}

// submit the 'send to a friend'-form
function submitMailForm()
{
	var nm = document.sendto.name;
	var ml = document.sendto.email;
	if (nm.value.replace(/\s/g, '') == '' || ml.value.replace(/\s/g,'') == '')
	{
		alert(la.currentLanguage.fieldsMustBeFilled); //'Die mit einem * markierten Felden müssen ausgefüllt werden');
		return;
	}
	var re = /^\w+[\w|\-|\.]*@[\w|\-|\.]+\.\w{2,}$/;
	if (!re.test(ml.value))
	{
		alert(la.currentLanguage.invalidEmail); // 'Die E-mail Adresse ist nicht gültig');
		return;
	}
	document.sendto.submit();
}

function sendToAFriend()
{
	if (!thisProductNames) return;
	var pg = thisProductNames[langIndex];
	var lnk = escape(location.href);
	var t = (screen.availHeight - 545) / 2;
	var l = (screen.availWidth - 255) / 2;
	if (t < 0) t = 0;
	if (l < 0) l = 0;
	var pid = la.currentLanguage.mailToAFriendPageId;
	var w = window.open('page' + pid + '.aspx?page=' + pg + '&link=' + lnk, 'sendto','width=375,height=365, top=' + t + ', left=' + l);
	if (w) w.focus();
}

function setDeliveryAddress()
{
	document.rediger.radiodeliv[0].checked = true;
}


function toggleDeliveryAddress(isSame)
{
	var elm = document.getElementById('deliveryAddress');
	if (!elm) return;
	var ta = elm.getElementsByTagName('textarea')[0];
	if (isSame)
	{
		elm.style.display = 'none';
		ta.innerHTML = '';
	}
	else
	{
		ta.style.height = '57px';
		elm.style.display = 'block';
	}
}

function getVoucherRebate(value, curr, code)
{
	var output;
	if (code != '' && value == '') // not accepted
	{
		output = la.currentLanguage.voucherNotAcceptedText; // 'Nicht akzeptiert';
	}
	else
	{
		output = '- ' + value + ',00 ' + curr;
	}
	voucherChecked = true;
	var totalfld = document.getElementById('subtotal');
	if (totalfld)
	{
		if (totalfld.innerHTML.indexOf(curr) == -1)
		{
			alert(la.currentLanguage.voucherWrongCurrencyAlert);
			history.back();
		}
	}
	return output;
}

function ensureVoucherCheck(isConfirmation)
{
	if (voucherChecked) return;
	var txtElm = document.getElementById('voucherRebate');
	var codeElm= document.getElementById('voucherCode');
	if (txtElm && codeElm)
	{
		if (codeElm.innerHTML != '' && txtElm.innerHTML == '') 
		{
			txtElm. innerHTML = la.currentLanguage.voucherNotAcceptedText; //'Nicht akzeptiert';
			if (!isConfirmation) alert(la.currentLanguage.voucherNotAcceptedAlert); //'Gutschein nicht akzeptiert');
		}
		else
		{
			var pElm = txtElm.parentNode;
			if (pElm.tagName.toLowerCase() != 'tr') pElm = pElm.parentNode;
			pElm.style.display = 'none';
		}
	}
}


// RESET BASKET ON LANGUAGE CHANGE //

function getRandomNumber (from, to) 
{
	return (Math.floor ((to - from + 1) * Math.random() + from));
}

function getRandomName (nameLength) 
{
	var validChars="abcdefghijklmnopqrstuvwxyz";
	var s = '';
	for (i=0; i<nameLength; i++) 
	{
		var j = getRandomNumber(0,25);
		s += validChars.substring(j, j+1);
	}
	return s;
}

function resetBasket(pgid, lstid)
{
	var url = '/page' + pgid + '.aspx?isbasket=1&pageid=' + pgid + '&listid=' + lstid + '&action=emptybasket&rnd=' + getRandomName(10);
	tsAjax.innerHTML(url);
}

function showCA(lang, pgid, lid)
{
	resetBasket(pgid, '-30000' + lid);
	location.href = './' + lang;
}

function imageFrameClick(frm)
{
if (!frm) return;
var lnkcoll = frm.parentNode.getElementsByTagName('a');
if (!lnkcoll || lnkcoll.length == 0) return;
var h = lnkcoll[0].href;
location.href = h;
}