/**
 * Some functions for the webshop
**/

var wsDelay = 0;
var bref = document.location.href.split ( 'index.html' )[0] ;

function AddToCart ( pid, qty )
{
	var j = new bajax ();
	j.openUrl ( bref + '?action=addtocart&pid='+pid+'&qty='+qty, 'post', true );
	j.onload = function ()
	{
		var n = document.createElement ( 'div' );
		n.innerHTML = this.getResponseText ();
		ge('ShoppingCart').parentNode.replaceChild ( n, ge('ShoppingCart') );
	}
	j.send ();
}

function RemoveFromCart ( pid )
{
	if ( ge('ShoppingCart') )
		AlterQuantity ( pid, '0' );
	else
	{
		var pelement = ge('ShoppingCartDetailed');
		var eles = pelement.getElementsByTagName ( 'input' );
		for ( var a = 0; a < eles.length; a++ )
		{
			if ( eles[a].getAttribute ( 'rel' ) == pid )
				eles[a].value = 0;
		}
		UpdateAllQuantities ();
	}
}

function EmptyCart ()
{
	if ( confirm ( i18n ( 'Are you sure?' ) ) )
	{
		var j = new bajax ();
		j.openUrl ( bref+'?action=emptycart', 'post', true );
		j.onload = function ()
		{
			var n = document.createElement ( 'div' );
			n.innerHTML = this.getResponseText ();
			ge('ShoppingCart').parentNode.replaceChild ( n, ge('ShoppingCart') );
		}
		j.send ();
	}
}

function AlterQuantity ( pid, qty, callback )
{
	if ( !callback ) callback = false;
	var j = new bajax ();
	j.openUrl ( bref + '?action=alterquantity&pid='+pid+'&qty='+qty, 'post', true );
	j.callback = callback;
	j.onload = function ()
	{
		if ( this.callback )
		{
			this.callback();
		}
		else
		{
			var n = document.createElement ( 'div' );
			n.innerHTML = this.getResponseText ();
			ge('ShoppingCart').parentNode.replaceChild ( n, ge('ShoppingCart') );
		}
	}
	j.send ();
}

function CheckUpdateAllQtys( e ) 
{
	if ( e.which == 13 )
		UpdateAllQuantities ();
}

function UpdateAllQuantities ( )
{
	var sc, eles;
	if ( !( sc = ge('ShoppingCart') ) )
		sc = ge('ShoppingCartDetailed');
	if ( eles = sc.getElementsByTagName ( 'input' ) )
	{
		wsDelay = eles.length;
		for ( var a = 0; a < eles.length; a++ )
		{
			var info = eles[a].getAttribute ( 'rel' );
			AlterQuantity ( 
				info, 
				eles[a].value, 
				function ()
				{ 
					if ( --wsDelay == 0 ) 
					{
						document.location.reload();
					}
				} 
			);
		}
	}
}

function Checkout ( base )
{
	var b = bref.split ( '?' )[0];
	if ( b.indexOf ( '.html' ) >= 0 )
	{
		b = b.split ( '/' );
		b.pop ();
		b = b.join ( '/' );
	}
	if ( b.substr ( b.length - 1, 1 ) != '/' )
		b += '/';
	if ( base ) b = base;
	document.location = b + 'checkout.html';
}

// Restore form values
function RecallCheckoutForm ()
{
	var s = ge('CheckoutForm');
	if ( s )
	{ 
		var inputs = s.getElementsByTagName ( 'input' );
		for ( var a = 0; a < inputs.length; a++ )
		{
			if ( inputs[a].type == 'hidden' ) continue;
			var val = getCookie ( 'order_' + inputs[a].name );
			if ( val.length > 0 )
			{
				inputs[a].value = val;
			}
		}
		inputs = s.getElementsByTagName ( 'textarea' );
		for ( var a = 0; a < inputs.length; a++ )
		{
			var val = getCookie ( 'order_' + inputs[a].name );
			if ( val.length > 0 )
			{
				inputs[a].value = val;
			}
		}
		var sels = s.getElementsByTagName ( 'select' );
		for ( var a = 0; a < sels.length; a++ )
		{
			var val = getCookie ( 'order_' + sels[a].name );
			if ( val.length > 0 )
			{
				var opts = sels[a].getElementsByTagName ( 'option' );
				for ( var b = 0; b < opts.length; b++ )
				{
					if ( opts[b].value == val )
						opts[b].selected = "selected";
					else opts[b].selected = "";
				}
			}
		}
	}
}

function RememberCheckoutForm ()
{
	var inputs = ge ( 'CheckoutForm' ).getElementsByTagName ( 'input' );
	for ( var a = 0; a < inputs.length; a++ )
	{
		if ( inputs[a].type == 'hidden' ) continue;
		setCookie ( 'order_' + inputs[a].name, inputs[a].value.split(';')[0] );
	}
	var sels = ge ( 'CheckoutForm' ).getElementsByTagName ( 'select' );
	for ( var a = 0; a < sels.length; a++ )
	{
		setCookie ( 'order_' + sels[a].name, sels[a].value );
	}
	sels = ge ( 'CheckoutForm' ).getElementsByTagName ( 'textarea' );
	for ( var a = 0; a < sels.length; a++ )
	{
		setCookie ( 'order_' + sels[a].name, sels[a].value );
	}
}

// Check form and send order
function FinalizeCheckout ()
{
	var checkout = ge('CheckoutForm');
	var frm = new Object ();
	var inputs = checkout.getElementsByTagName ( 'input' );
	for ( var a = 0; a < inputs.length; a++ )
		frm[inputs[a].name] = inputs[a];
	
	// Control form
	var important = [ 'Name', 'Telephone', 'Email', 'Address', 'Zip', 'City', 'Country' ];
	var sizes = [ 2, 8, 5, 3, 4, 2, 2 ];
	var names = [ 'navnet ditt', 'telefon nummer', 'e-post adresse', 'adresse',
					'postnummer', 'poststed', 'land' ];
	for ( var a = 0; a < important.length; a++ )
	{
		if ( !frm[important[a]] ) 
		{
			continue;
		}
		if ( frm[important[a]].value.length < sizes[a] )
		{
			alert ( 'Du er nødt å fylle inn ' + names[a] + '.' );
			frm[important[a]].focus ();
			return false;
		}
	}
	var emailmistake = false;
	var eml = frm.Email.value.split ( '@' );
	if ( !eml[1] ) emailmistake = true;
	else 
	{
		eml[1] = eml[1].split ( '.' );
		if ( !eml[1][1] ) emailmistake = true;
	}
	if ( emailmistake )
	{
		alert ( 'Du må skrive inn e-post adressen rett.' );
		frm.Email.focus ();
		return false;
	}
	else if ( ge ( 'termsofsales' ).type.toLowerCase() != 'hidden' && !ge ( 'termsofsales' ).checked )
	{
		alert ( 'Du må krysse av på at du har lest våre salgsbetingelser.' );
		ge ( 'termsofsales' ).focus ();
		return false;
	}
	
	// Remember the order form values
	RememberCheckoutForm ();
	
	// Send vars to server
	var j = new bajax ();
	var bbref = bref.split ( '?' )[0];
	j.openUrl ( bbref + '?action=sendorder', 'post', true );
	var inputs = checkout.getElementsByTagName ( 'input' );
	for ( var a = 0; a < inputs.length; a++ )
	{
		var value = '';
		if ( inputs[a].checkbox )
		{
			value = inputs[a].checked ? '1' : '0';
		}
		else 
		{
			value = inputs[a].value;
		}
		j.addVar ( inputs[a].name, value );
	}
	var txt = checkout.getElementsByTagName ( 'textarea' );
	for ( var a = 0; a < txt.length; a++ )
		j.addVar ( txt[a].name, txt[a].value );
	var sel = checkout.getElementsByTagName ( 'select' );
	for ( var a = 0; a < sel.length; a++ )
		j.addVar ( sel[a].name, sel[a].value );
	j.onload = function ()
	{
		document.body.style.cursor = 'default';
		var response = this.getResponseText ().split ( '<!--SEPARATE-->' );
		if ( response[0] == 'ok' )
		{
			document.location = response[1];
		}
		else alert ( 'Noe gikk galt med bestillingen:' + this.getResponseText() );
	}
	j.send ();
	document.body.style.cursor = 'wait';
}

function showSalesTerms ()
{
	var b = bref.split ( '?' )[0];
	var w = window.open ( b + '?mode=showsalesterms', 'Salgsvedtekster', 'width=640,height=480,topbar=no,status=no,scrollbars=auto,resize=auto' );
}

function showSubscriptionInfo ()
{
	var b = bref.split ( '?' )[0];
	var w = window.open ( b + '?mode=showsubscribtioninfo', 'Abonnement', 'width=640,height=480,topbar=no,status=no,scrollbars=auto,resize=auto' );
}

function setSubscriptionMode ( enbl )
{
	var b = new bajax ();
	b.openUrl ( bref.split('?')[0]+'?mode=subscriptionmode&data=' + ( enbl ? '1' : '0' ), 'post', true );
	b.onload = function ()
	{
		UpdateAllQuantities ();
	}
	b.send ();
}

var _formInited;
function rememberFormTrigger ( e )
{ 
	if ( !e ) e = window.event;
	var k = e.which ? e.which : e.keyCode;
	if ( k == 13 || k == 9 )
	{
		RememberCheckoutForm ();
	}
	if ( !_formInited )
	{
		_formInited = 1;
		var inputs = ge('CheckoutForm').getElementsByTagName ( 'input' );
		for ( var a = 0; a < inputs.length; a++ )
			inputs[a].onblur = RememberCheckoutForm;
		var sels = ge('CheckoutForm').getElementsByTagName ( 'select' );
		for ( var a = 0; a < sels.length; a++ )
			sels[a].onblur = RememberCheckoutForm;
		sels = ge('CheckoutForm').getElementsByTagName ( 'textarea' );
		for ( var a = 0; a < sels.length; a++ )
			sels[a].onblur = RememberCheckoutForm;
	}
}

if ( window.addEventListener )
{
	window.addEventListener ( 'keyup', rememberFormTrigger );
	window.addEventListener ( 'load', RecallCheckoutForm );
}
else if ( window.attachEvent )
{
	window.attachEvent ( 'keyup', rememberFormTrigger );
	window.attachEvent ( 'load', RecallCheckoutForm );
}



