﻿var g_page_loaded   = new gtEventHandler();      
var g_shopping_cart = new gtShoppingCart("g_shopping_cart");
var g_page_and_cart = new gtWaitForAll(handleCartAndPageHasLoaded, "page", "cart");

g_shopping_cart.m_evt_add       .addHandler(handleShoppingCartAdd);
g_shopping_cart.m_evt_del       .addHandler(handleShoppingCartDel);
g_shopping_cart.m_evt_change_qty.addHandler(handleShoppingCartChangeQuantity);
g_shopping_cart.m_evt_loaded    .addHandler(handleShoppingCartLoaded);



function setLanguage(language)
{
  var cookie = new gtCookie(document);
  cookie.setNumDaysValid(1000);
  cookie.setCrumb("language", language);
  window.location = window.location;
} // end language()



function imgSrc(img)
{
  return g_global_root + "/images/icons/" + img;
} // end imgSrc()



function onLoad()
{
//        var cookie = new gtCookie(document);
//        alert("onLoad(): cookie.m_map is:\n" + gtListProperties(cookie.m_map));
  var scroller = gtGetElementByName("divScroller");
  gtBeScroller(scroller, "News");
  addScrollerItems(scroller); // Generated on the server using globalized resources!
  scroller.render();
  
  var contents  = gtGetElementByName("divContents");
  var height    = gtGetHeight(contents);
  var available = gtGetWindowHeight() - gtGetTop(contents) - 40;
//  if (height < available)
//    gtSetHeight(contents, available);
  g_page_loaded.raise();
  gtAddEventListener(document.body, "keypress", gtTraceOnKeyPress);
//  showTraceWindow(true, "../gtx/");
  g_page_and_cart.signal("page");
} // end onload()



function dropShadowBegin(shadow, attribs)
{
  if (shadow)
    document.write('<div class="wrap1"><div class="wrap2"><div class="wrap3">');
  document.write('<div ' + attribs + '>');
} // end dropShadowBegin()



function dropShadowEnd(shadow)
{
  if (shadow)
    document.write('</div></div></div>');
  document.write('</div>');
} // end dropShadowEnd()



// --------------------------------------------------------------------
// Shopping cart
// --------------------------------------------------------------------

function addCell(row, text, tooltip)
{
  var cell = row.insertCell(-1);
  cell.innerHTML = text;
  cell.style.overflow = "hidden";
  cell.noWrap = true;
  if (tooltip)
    cell.title = tooltip;
  return cell;
} // end addCell()



function addItem(table, item)
{
  var words = item.m_name.split(":");
  name = words[1].substr(1);
  var row  = table.insertRow(-1);
  var cell = addCell(row, name, item.getTooltip());
  cell.className = "gtShoppingCartItemName";
} // end addItem()



function handleShoppingCartAdd(item)
{
  var table = gtGetElementByName("tblShoppingCart");
  addItem(table, item);
  showShoppingCartSum();
} // end handleShoppingCartAdd()



function fillShoppingCart()
{
  var items = g_shopping_cart.m_items;
  var table = gtGetElementByName("tblShoppingCart");
  for (var i = 0; i < items.length; i++)
    addItem(table, items[i]);
  showShoppingCartSum();
} // end fillShoppingCart()



function showShoppingCartSum()
{
  g_shopping_cart.computeTotals();
  var divSum = gtGetElementByName("divShoppingSum");

  divSum.innerHTML = "Sum: " + MonetarySymbol + moneyFormat(g_shopping_cart.m_total_cost + g_shopping_cart.m_total_shipping_cost);
} // end showShoppingCartSum()



function handleShoppingCartLoaded()
{
  g_page_and_cart.signal("cart");
} // end handleShoppingCartLoaded()



// Don't try to display the shopping cart before both the shopping cart and the page have loaded!
function handleCartAndPageHasLoaded()
{
  // Fill the small shopping cart in the left column
  fillShoppingCart();
} // end handleCartAndPageHasLoaded()



function handleShoppingCartDel(index)
{
  var table = gtGetElementByName("tblShoppingCart");
  table.deleteRow(index);
  showShoppingCartSum();
} // end handleShoppingCartDel()



function handleShoppingCartChangeQuantity(item)
{
  var table = gtGetElementByName("tblShoppingCart");
  var items = g_shopping_cart.m_items;
  for (var i = 0; i < items.length; i++)
  {
    if (item == items[i])
    {
      var cell = table.rows[i].cells[0];
      cell.title = item.getTooltip();
      break;
    }
  }

  showShoppingCartSum();
} // end handleShoppingCartChangeQuantity()

