function GetProductIndex( object ){
	
	var numItem	= object.id.replace('_ctl0_ProductList_dtlProductList__ctl', '');
	numItem	= numItem.replace('_ctl0_BasketProductList_dtlProductList__ctl', '');
	numItem	= numItem.replace('_ctl0_ProductDetail_', '');
	numItem = numItem.replace('__ctl0_', '');
	numItem = numItem.replace('imgAdd', '');
	numItem = numItem.replace('imgRemove', '');	
	numItem = numItem.replace('ProductQuantityDisplay_', '');	
	numItem	= numItem.replace('ToBasket', '');	
	
	return numItem;
}

//Encontra o controle txtProductQuantity a ser usado para adicionar, decrementar as quantidades
//de um produto. Usado também para enviar ao basket a quantidade a ser comprada do produto em questão.
function GetQuantityObject( object ){

	var isBasketList = object.id.indexOf( 'BasketProductList' );
	var numItem	= GetProductIndex( object );
	var nomeProductQuantity = '';
	
	if(numItem == '')
	{							 
		nomeProductQuantity ='_ctl0_ProductDetail_ProductQuantityDisplay_txtProductQuantity';	
	}
	else
	{
		if( isBasketList == -1 )
		{
			nomeProductQuantity ='_ctl0_ProductList_dtlProductList__ctl' + numItem + '__ctl0_ProductQuantityDisplay_txtProductQuantity';			
		}
		else
		{
			nomeProductQuantity = '_ctl0_BasketProductList_dtlProductList__ctl' + numItem + '__ctl0_ProductQuantityDisplay_txtProductQuantity';	
		}
	}	
	
	return MM_findObj( nomeProductQuantity );
}

function GetProductData( object ){
	
	var isBasketList = object.id.indexOf( 'BasketProductList' );
	var numItem	= GetProductIndex( object );
	var controlNamePrefix = '';
	var controlIndex	  = '';
	var controlName	      = '';
	var descControlName   = '';
	var m_product = TlanticB2CWine.UI.UserControl.Product.ProductList.GetProductInfo().value;

	if(numItem == '')
	{
		controlNamePrefix = '_ctl0_ProductDetail_';
		controlIndex	  = '';
		descControlName   = 'lblProductDesc';
	}
	else
	{
		controlIndex	  = '__ctl0_';
		descControlName   = 'hlkProductDsc';
		
		if( isBasketList == -1 )
		{
			controlNamePrefix = '_ctl0_ProductList_dtlProductList__ctl';
		}
		else
		{
			controlNamePrefix = '_ctl0_BasketProductList_dtlProductList__ctl';
			descControlName   = 'lblProductDesc';
		}				
	}
	
	//Pega a CatalogName
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtProductCatalog';
	m_product.Catalog = MM_findObj( controlName ).value;
		
	//Pega a CategoryName
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtProductCategory';
	m_product.Category = MM_findObj( controlName ).value;	
	
	//Pega o SKU
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtProductID';
	m_product.ID = MM_findObj( controlName ).value;	
	
	//Pega a descrição do produto	
	controlName	= controlNamePrefix + numItem + controlIndex + descControlName;
	m_product.Description = MM_findObj( controlName ).innerText;
	
	//Pega a WineType
	controlName	= controlNamePrefix + numItem + controlIndex + 'lblProductDtl1';
	m_product.WineType = MM_findObj( controlName ).innerText;
	
	//Pega a Harvest
	controlName	= controlNamePrefix + numItem + controlIndex + 'lblProductDtl2';
	m_product.Harvest = MM_findObj( controlName ).innerText;
	
	//Pega a Region
	controlName	= controlNamePrefix + numItem + controlIndex + 'lblProductDtl3';
	m_product.Region = MM_findObj( controlName ).innerText;
	
	//Pega a unidade de venda (p.e. ( Cx. 3 un.) )
	controlName	= controlNamePrefix + numItem + controlIndex + 'lblProductUnit';
	m_product.PackageQuantity = MM_findObj( controlName ).innerText;
	
	//Pega a quantidade
	controlName	= controlNamePrefix + numItem + controlIndex + 'ProductQuantityDisplay_txtProductQuantity';
	var quantity = MM_findObj( controlName ).value;

	if( quantity == '' )
	{ 
		quantity = 1; 
		MM_findObj( controlName ).value = quantity;
	}
		
	m_product.Quantity = quantity;	
	
	
	//Pega o preço
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtProductPrice';
	var price = MM_findObj( controlName ).value.replace(",", ".");
	m_product.Price = price;	

	//Pega o Limite
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtProductSaleLimit';
	m_product.SaleLimit = MM_findObj( controlName ).value;	

	//Pega o Dish
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtDish';
	m_product.Dish = MM_findObj( controlName ).value;	

	//Pega o DishTitle
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtDishTitle';
	m_product.DishTitle = MM_findObj( controlName ).value;	

	//Pega o TasteNote
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtTasteNote';
	m_product.TasteNote = MM_findObj( controlName ).value;	

	//Pega o TasteNoteTitle
	controlName	= controlNamePrefix + numItem + controlIndex + 'txtTasteNoteTitle';
	m_product.TasteNoteTitle = MM_findObj( controlName ).value;	

	return m_product;	
}

//Incrementa a quantidade de um produto no textbox
function AddQuantity( object ){ 	

  var txtProductQuantity  = GetQuantityObject( object );  
  var quantity = parseInt(txtProductQuantity.value) + 1;
  
  if( isNaN( quantity ) ) { quantity =  1;}
  if( quantity <= 0 ){ quantity =  1;}
  if( quantity > 99 ){ quantity = 99;}
  
  txtProductQuantity.value = quantity; 
}

//Decrementa a quantidade de um produto no textbox
function ReduceQuantity( object ){ 

  var txtProductQuantity  = GetQuantityObject( object );
  var quantity			  = parseInt(txtProductQuantity.value) - 1;
 
  if( isNaN( quantity ) ){ quantity =  0;}    
  if( quantity <= 0     ){ quantity =  0; }  
  if( quantity > 99     ){ quantity = 99;}
  
   txtProductQuantity.value = quantity;   	
}

function AddToBasket( object ){

 var m_product = GetProductData( object );
  
  //alert( 'Catalog : ' + m_product.Catalog + ' Category: ' + m_product.Category + ' SKU: ' + m_product.ID + ' Price: ' + m_product.Price + ' Quantity: ' + m_product.Quantity );
  var res = TlanticB2CWine.UI.UserControl.Product.ProductList.SaveInBasket( m_product, BasketCallBack );   
}

function RemoveFromBasket( object ){
   
	var m_product = GetProductData( object );
	var res = TlanticB2CWine.UI.UserControl.Product.ProductList.RemoveFromBasket( m_product.ID, BasketCallBack );
}

function BasketCallBack( retorno ){

//	alert( 'retorno.value = ' + retorno.value );
	
	if( retorno.value.indexOf('Error') != -1 )
	{
		if( retorno.value.indexOf('autenticado' ) != -1)
		{				
			document.location = 'UserNotLogged.aspx';
		}
		else
		{
			alert( 'Erro tentando salvar o produto no Basket! \n' + res.value.replace( 'Error', '' ).replace( 'Commerce Server', 'Clube de Vinhos' ) );
		}
	}
	else
	{	
		var value   = retorno.value.split( '|' );	
		var valTotal = value[0];
		var numItems = value[1];
		var numSaleLimit = value[2];
		var numQuantity = value[3];
		if ( ( (numSaleLimit != '') && (numSaleLimit != '0') ) && (parseInt(numQuantity) >= parseInt(numSaleLimit) ) )
		{
			alert('Este produto esta limitado a '+numSaleLimit+' unidade(s).');
			//numItems = numSaleLimit;
		}
		//alert( 'valTotal= ' + valTotal + ' numItems= ' + numItems );
		
		var ctlNumItems = MM_findObj( 'Basket_BasketLogged_lblNumItems' );
		ctlNumItems.innerText = numItems;	
		
		var ctlTotal	= MM_findObj( 'Basket_BasketLogged_lblTotalBasket' );	
		ctlTotal.innerText = valTotal
		
		var ctlComprar  = MM_findObj( 'Basket_BasketLogged_imbBuy' );
		var ctlLimpBas  = MM_findObj( 'Basket_BasketLogged_lnbClearBasket' );	
		if( numItems != 0 )
		{
			ctlComprar.style.height  = 43;
			ctlComprar.style.width   = 54;	
			ctlLimpBas.innerText     = 'Limpar Carrinho';
		}
		else
		{
			ctlComprar.style.height  = 0;
			ctlComprar.style.width   = 0;	
			ctlLimpBas.innerText     = '';
		}
		
		//alert( 'Numero de itens: ' + numItems + ' \n TOTAL: € ' + valTotal );
	}
}
