﻿function init (id) {
	if (id == undefined)
		id = 'menutable';
	alternateRows(id);
}

function alternateRows(obj){
	if(document.getElementsByTagName){  
		var table = document.getElementById(obj);
		if (table) {
			var rows = table.getElementsByTagName('tr');
			var strClass = 'odd';
			for(var i = 0; i < rows.length; i++){ 
				if (rows[i].className != 'subtitle'){
					strClass = (strClass == 'even') ? 'odd' : 'even';     
					rows[i].className = strClass
				}else{
					strClass = 'odd'
				}    
			}
		}
	}	
}

function startFlash(id){
	//var strURL = '' + document.location;
	//var arrURL = strURL.split('/');
	//var strSite = 'http://' + arrURL[2];
	var so = new SWFObject('flash/header.swf', 'header', '800', '280', '8', '#000000');
	so.addParam('allowScriptAccess', 'sameDomain');
	so.addVariable('pageID', id);
	//so.addVariable('url', strSite);
	/*
	// extra params for behaviour
	so.addVariable('imgDuration', '8000');
	so.addVariable('infoBoxSpeed', '20');
	so.addVariable('imgSwapSpeed', '50');
	so.addVariable('textSwapSpeed', '20');
	*/
	so.write('images');
}

function calculatePrice () {
	// ------------------------
	// Calculate tapas price
	// ------------------------
	var intPrice = 0;
	switch (MENU_TYPE)
	{
		case 'egenTapas':
		// *** Defined tapas menu. ***
			for (var i = 0; i < MENU_PRICES.length; i++)
				intPrice = calculateItems ('tapas', MENU_PRICES);
			break;
		default:
		// *** Ordinary tapas menu. ***
			// Retrieve number of persons.
			var nPersons = Number (objForm.numberpersons.value);
			// Is number (not) valid?
			if (isNaN(nPersons))
			{
				// Display warning.
				sPrice = '<h1>Pris</h1>';
				sPrice += '<table width="100%" border="0" cellpadding="0" cellspacing="0">';
				sPrice += '<tr><td width="100%">Pris kan ikke beregnes før antall personer er fyllt ut.</td></tr>';
				sPrice += '</table>';
				outputPrice (sPrice);
				// Abort further calculations.
				return;
			} else
			{
				// calculate price.
				intPrice = nPersons * MENU_PRICE;
			}
	}
	// Remove VAT.
	intPrice /= 1.14;
	var intPriceRounded = Math.round (intPrice);

	// ------------------------
	// Calculate extras price
	// ------------------------
	var intExtras = calculateItems (EXTRAS_CODE, EXTRAS_PRICES) / 1.14;
	var intExtrasRounded = Math.round (intExtras);

	// ------------------------
	// Calculate drinks price
	// ------------------------
	var intDrinks = calculateItems (DRINKS_CODE, DRINKS_PRICES) / 1.14;
	var intDrinksRounded = Math.round (intDrinks);

	// ------------------------
	// Calculate cakes price
	// ------------------------
	var intCakes = calculateItems (CAKES_CODE, CAKES_PRICES) / 1.14;
	var intCakesRounded = Math.round (intCakes);
	
	// ------------------------
	// Calculate shushi price
	// ------------------------
	var intSushi = calculateItems (SUSHI_CODE, SUSHI_PRICES) / 1.14;
	var intSushiRounded = Math.round (intSushi);

	// ------------------------
	// Calculate VAT
	// ------------------------
	var intMoms = (intPrice+intExtras+intDrinks+intCakes+intSushi) * 0.14;
	var intMomsRounded = Math.round (intMoms);
		
	// ------------------------
	// Calculate total price
	// ------------------------
	var intTotal = (intPrice+intExtras+intDrinks+intCakes+intMoms+intSushi);
	intTotalRounded = Math.round (intTotal);

	sPrice = '<h1>Pris</h1>';
	sPrice += '<table width="100%" border="0" cellpadding="0" cellspacing="0">';
	sPrice += '<tr><td width="100%">Meny:</td><td align="right">' + intPriceRounded + ',-</td></tr>';
	sPrice += '<tr><td>Tilbehør:</td><td align="right">' + intExtrasRounded + ',-</td></tr>';
	sPrice += '<tr><td>Drikke:</td><td align="right">' + intDrinksRounded + ',-</td></tr>';
	sPrice += '<tr><td>Kaker:</td><td align="right">' + intCakesRounded + ',-</td></tr>';
	sPrice += '<tr><td>Sushi:</td><td align="right">' + intSushiRounded + ',-</td></tr>';
	sPrice += '<tr><td>Moms:</td><td align="right">' + intMomsRounded + ',-</td></tr>';
	sPrice += '<tr><td class="total">Totalt:</td><td class="total" align="right">' + intTotalRounded + ',-</td></tr>';
	sPrice += '<tr><td>Utkjøringstillegg:<br />ukedager 170,-<br />lør- og søndag 270,-<br />(innenfor Stor-Bergen)</td></tr>';
	sPrice += '</table>';

	outputPrice (sPrice);
}

function outputPrice (sPrice)
{
	try {
		objPrice = $('price');
		objPrice.setHTML (sPrice);
	} catch(err) {
	}
}

function calculateItems (sName, aPrices)
{
	var retVal = 0;
	for(var i = 0; i < aPrices.length; i++){
		var tmpObj = document.getElementById (sName + i);
		if (!isNaN (tmpObj.value))
			retVal += tmpObj.value * aPrices[i];
	}
	return retVal;	
}

function initForm ()
{
	// Initialize the form.
	qFormObj = new qForm('orderform');
	// Configure form validation.
	qFormAPI.errorColor = '#ffc900';
	qFormObj.required ('date, name, street, zip, city, email');
	qFormObj.date.requiredMessage = 'Leveringsdato må være utfylt.';
	qFormObj.name.requiredMessage = 'Navn må være utfylt.';
	qFormObj.street.requiredMessage = 'Leveringsadresse må være utfylt.';
	qFormObj.zip.requiredMessage = 'Postnummer må være utfylt.';
	qFormObj.city.requiredMessage = 'Sted må være utfylt.';
	qFormObj.email.requiredMessage = 'E-post må være utfylt.';
	qFormObj.email.validateEmail ('Vennligst skriv en gyldig epost-adresse.');
	qFormObj.phone.validateAtLeastOne ('mobile, phone', 'Mobil eller telefon må være fylt ut.');
	
	// Let's not validate the form automatically until the onSubmit function has been called.
	qFormObj._skipValidation = true;
	
	objForm = document.orderform;
	$('orderform').addEvent('submit', onSubmit);
}

// Initializes tapas input fields.
function initMenus ()
{
	switch (MENU_TYPE)
	{
		case 'egenTapas':
			initFields ('tapas', MENU_PRICES, MENU_TEXTS)
			for (var i = 0; i < MENU_TEXTS.length; i++)
			{
				var tmpObj = eval('qFormObj.tapas'+i);
				tmpObj.validateRange (4, 99, MENU_TEXTS[i] + ' må være for minst 4 personer.');
			}
			break;

		default:
			qFormObj.required ('numberpersons');
			qFormObj.numberpersons.requiredMessage = 'Antall personer må være utfylt.';
			document.getElementById ('numberpersons').onkeypress = isNumberKey;
			objForm.numberpersons.onkeyup = calculatePrice;
	}

	// Init the input fields.
	initFields (EXTRAS_CODE, EXTRAS_PRICES, EXTRAS_TEXTS);
	initFields (DRINKS_CODE, DRINKS_PRICES, DRINKS_TEXTS);
	initFields (CAKES_CODE,  CAKES_PRICES,  CAKES_TEXTS );
	initFields (SUSHI_CODE,  SUSHI_PRICES,  SUSHI_TEXTS );
	
	// Show the price overview.
	calculatePrice ();
}

// Initializes (a range of) number fields.
function initFields (sName, aPrices, aTitles)
{
	for (var i = 0; i < aPrices.length; i++){
		var tmpObj = $(sName + i);
		tmpObj.onkeypress = isNumberKey;
		tmpObj.onkeyup = calculatePrice;
		tmpObj = eval('qFormObj.'+sName+i);
		tmpObj.validateInteger ('Antall for ' + aTitles[i] + ' må være et tall.');
	}
}

// Event handler when a number for a menu item is entered.
// If the number is valid the price is calculated.
function onKeyUp (evt)
{
	//calculatePrice ();
}

// Validates the inputed number.
function isNumberKey (evt)
{
	if (window.event) // IE
	{
		var charCode = window.event.keyCode;
	}
	else if (evt.which) // Netscape/Firefox/Opera
	{
		var charCode = evt.which;
	}
	if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;
	// Everything else
	return true;
}

function onSubmit (event)
{
	qFormObj._skipValidation = false;
	
	if (!qFormObj.validate())
	{
		qFormObj._skipValidation = true;
		event.preventDefault();
		return false;
	}
	
	if (!$('confirmDelivery').checked)
	{
		alert ('Du må bekrefte at Escalón Catering ikke kan ta hensyn til\nendringer på bestilling kort tid før levering.');
		event.preventDefault();
		return false;
	}
	
	//Send the form.
	$('orderform').submit ();
	
	return true;
}

