﻿var Prj;
if ( !Prj ) Prj = {};
Prj.FlyAway = Class.create();
Prj.FlyAway.prototype =
{
	initialize: function( id, x, y ) 
	{
		this.clone = $(id).myDeepClone();
		
		new Effect.Parallel( [
				new Effect.Move( this.clone, { x: x, y: y, sync: true, mode: 'absolute' } ),
				new Effect.Opacity( this.clone, { sync: true, from: 1.0, to: 0.0 } )
			],
			{
				duration: 1.0,
				afterFinish: this._afterFinish.bind( this )
			} );
	},
	
	_afterFinish: function ()
	{
		this.clone.remove();
	}
}

function addToShopBasket( productkey, quantity, boxIdToFlyAway )
{
	new Ajax.Request( myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/items/" + productkey + "/" + quantity, { method: "put", onComplete: addToShopBasketOnComplete } );
	if( boxIdToFlyAway != null )
	{
		flyAway( boxIdToFlyAway );
	}
}

var addToShopBasketOnCompleteOldRequest = null;
function addToShopBasketOnComplete ( originalRequest )
{
	if ( addToShopBasketOnCompleteOldRequest != null )
	{
		var response1 = addToShopBasketOnCompleteOldRequest.responseText.evalJSON();
		var response2 = originalRequest.responseText.evalJSON();
		
		if ( response2.timeStamp < response1.timeStamp )
		{
			originalRequest = null;
		}
	}
	
	if ( originalRequest != null )
	{
		addToShopBasketOnCompleteOldRequest = originalRequest;
		
		var response = originalRequest.responseText.evalJSON();
		if ( response.messages.size() > 0 )
		{
			alert( response.messages );
		}
		$('basket').update( response.html );
		
	}
}

function flyAway ( id )
{
	if ( !Object.isUndefined( $(id) ) )
	{
		var position = $('basket').cumulativeOffset();
		new Prj.FlyAway( id, position.left, position.top );
	}
	return false;
}
