var DOM = YAHOO.util.Dom;
var EVT = YAHOO.util.Event;


var JCart = {
  getCookie: function (c_name) {
  if (document.cookie.length>0)
    {
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1)
      { 
      c_start=c_start + c_name.length+1; 
      c_end=document.cookie.indexOf(";",c_start);
      if (c_end==-1) c_end=document.cookie.length;
      return unescape(document.cookie.substring(c_start,c_end));
      } 
    }
  return "";
  },
  setCookie: function (c_name,value,expiredays) {
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  document.cookie=c_name+ "=" +escape(value)+
  ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
  },
  items: new Array(),
  prices: new Array(),
  overlay: null,
  actionClick: function(e, obj) {
    var id = obj.item.getAttribute('itemid');
    var found = false;
    for(var i=0;i<JCart.items.length;i++) {
      if (JCart.items[i] == id) {
        found = true;
      }
    }
    if (!found) { 
      JCart.items[JCart.items.length] = id; 
      JCart.prices[JCart.prices.length] = obj.price.innerHTML;

      var oldCookie = JCart.getCookie('cart');
      JCart.setCookie('cart', oldCookie + '@' + JCart.items[JCart.items.length - 1] + ':' + JCart.prices[JCart.prices.length - 1], 7);
    }

    JCart.renderOverlay();
    EVT.preventDefault(e);
    return false;
  },
  addItem: function(id) {
    var found = false;
    for(var i=0;i<JCart.items.length;i++) {
      if (JCart.items[i] == id) {
        found = true;
      }
    }
    if (!found) { JCart.items[JCart.items.length] = id; }
  },
  renderOverlay: function () {
    var el = DOM.get('cartovul');
    var elP = el.parentNode;
    while (el.childNodes.length > 0) {
      el.removeChild(el.childNodes[0]);
    }

    var cookieVal = JCart.getCookie('cart');
    var cookieItems = cookieVal.split(/\@/);
    if (cookieItems.length > 7) {
        elP.style.height = '120px';
        elP.style.overflowY = 'scroll';
        elP.style.padding = '10px 0';
    } else {
        elP.style.height = 'auto';
        elP.style.overflowY = 'hidden';
    }
    for(var i=cookieItems.length - 1;i>= 0;i--) {
      if (cookieItems[i].length > 0) {
        var itemParts = cookieItems[i].split(/:/);;
        var newel = document.createElement('LI');
        newel.innerHTML = itemParts[0] + ' ' + itemParts[1];
        el.appendChild(newel);
        JCart.addItem(itemParts[0]);
      }
    }
    if (el.childNodes.length > 0 && el.nextSibling == null) {
    }
    if (el.childNodes.length > 0) {
      // Add form for posting variables
      var ft = document.getElementById('cartform');
      while(ft.childNodes.length > 0) { ft.removeChild(ft.childNodes[0]); }

      var newEl = document.createElement('A');
      newEl.href='#'; 
      EVT.addListener(newEl, 'click', function(e) { 
        JCart.setCookie('cart', '', 7); 
        while(el.childNodes.length > 0) { el.removeChild(el.childNodes[0]); } 
        JCart.items = new Array();
        JCart.renderOverlay();
        EVT.preventDefault(e); 
      });
      newEl.innerHTML = 'Clear Cart';
      var newTxt = document.createTextNode('Edit quantity or delete item at Checkout');
      ft.appendChild(newTxt);
      ft.appendChild(newEl);

      var frm = document.createElement('FORM');
      //frm.action = 'http://www.wojoyo.com/foobar.html';
      //frm.action = 'http://www.wojoyo.com/joel/hueyform.php';
      frm.action = 'https://www.joelscoins.com/secure/form.html';
      frm.method = 'POST';
      for(var i=0;i<cookieItems.length;i++) {
        if (cookieItems[i].length > 0) {
          var newel = document.createElement('INPUT');
          newel.setAttribute('type', 'hidden');
          newel.setAttribute('name', 'items[]');
          newel.setAttribute('value', cookieItems[i]);
          frm.appendChild(newel);
        }
      }
      var submit = document.createElement('INPUT');
      submit.setAttribute('type', 'submit');
      submit.setAttribute('value', 'Checkout');
      frm.appendChild(submit);
      ft.appendChild(frm);
      JCart.overlay.cfg.setProperty('visible', true);
    } else {
      JCart.overlay.cfg.setProperty('visible', false);
    }
  },
  initSets: function () {
    var catindexTable = document.getElementById('coinsetstbl');
    var ct = 0;
    var itemIdx = null;
    if (catindexTable) {
      var trs = DOM.getElementsBy(
        function (el) {
          return 1; //(ct++ < 2);
        },
        'TR',
        catindexTable,
        function (el) {
          if (itemIdx == null) {
            var tds = DOM.getElementsBy(function() { return true;}, 'TD', el);
            for(i=0;i<tds.length;i++) {
              if (tds[i].innerHTML.match(/Item\sCode/im)) {
                itemIdx = i;
              } else if (tds[i].innerHTML.match(/Price/)) {
                priceIdx = i;
              }
            }
          } else {
            var tds = DOM.getElementsBy(function() { return true;}, 'TD', el);
            var td = tds[itemIdx];
            var price = tds[priceIdx];
            if (!price.innerHTML.match(/out/)) {
              var newAnc = document.createElement('A');
              newAnc.innerHTML = td.innerHTML;
              newAnc.setAttribute('itemid', td.innerHTML);
              newAnc.href = "#";
              EVT.addListener(newAnc, 'click', JCart.actionClick, {item: newAnc, price: price} );
  
	          var newBtn = document.createElement('INPUT');
	          newBtn.setAttribute('type', 'button');
	          newBtn.setAttribute('value', 'Add to Cart');
	          EVT.addListener(newBtn, 'click', JCart.actionClick, {item: newAnc, price: price});
              while (DOM.getFirstChild(td)) {
                td.removeChild(DOM.getFirstChild(td));
              }
              td.innerHTML = "";
              td.appendChild(newAnc);
              td.appendChild(newBtn);
            }
          }
        }
      );
    }
    if (!JCart.overlay) {
      JCart.overlay = new YAHOO.widget.Overlay("cartov");
      JCart.overlay.cfg.setProperty('x', DOM.getViewportWidth() - 250);
      //JCart.overlay.cfg.setProperty('y', 10);
      JCart.overlay.cfg.setProperty('constraintoviewport', true);
      JCart.overlay.render();
      JCart.renderOverlay();
    }
  },
  initTable: function (tableId) {
    var catindexTable = document.getElementById(tableId);
    var ct = 0;
    var itemIdx = 0;
    if (catindexTable) {
      var trs = DOM.getElementsBy(
        function (el) {
          return 1; //(ct++ < 2);
        },
        'TR',
        catindexTable,
        function (el) {
          if (itemIdx == 0) {
            var tds = DOM.getElementsBy(function() { return true;}, 'TH', el);
            for(i=0;i<tds.length;i++) {
              if (tds[i].innerHTML.match(/Item\s\#/)) {
                itemIdx = i;
              }
            }
          } else {
            var tds = DOM.getElementsBy(function() { return true;}, 'TD', el);
            var td = tds[itemIdx];
            var price = tds[itemIdx + 1];
            if (!price.innerHTML.match(/out/)) {
	            var newAnc = document.createElement('A');
	            newAnc.innerHTML = td.innerHTML;
	            newAnc.setAttribute('itemid', td.innerHTML);
	            newAnc.href = "#";
	            EVT.addListener(newAnc, 'click', JCart.actionClick, {item: newAnc, price: price} );
	
		      var newBtn = document.createElement('INPUT');
		      newBtn.setAttribute('type', 'button');
		      newBtn.setAttribute('value', 'Add to Cart');
		      EVT.addListener(newBtn, 'click', JCart.actionClick, {item: newAnc, price: price});
	//alert(td.nodeValue + ' ' + price.innerHTML);
	            while (DOM.getFirstChild(td)) {
	              td.removeChild(DOM.getFirstChild(td));
	            }
	            td.innerHTML = "";
	            td.appendChild(newAnc);
	            td.appendChild(newBtn);
            }
          }
        }
      );
    }
    if (!JCart.overlay) {
      JCart.overlay = new YAHOO.widget.Overlay("cartov");
      JCart.overlay.cfg.setProperty('x', DOM.getViewportWidth() - 250);
      //JCart.overlay.cfg.setProperty('y', 10);
      JCart.overlay.cfg.setProperty('constraintoviewport', true);
      JCart.overlay.render();
      JCart.renderOverlay();
    }
  },
  initPages: function () {
    var trs = DOM.getElementsByClassName('itemprice', 'div');
    for(var i=0;i<trs.length;i++) {
      var spans = DOM.getElementsBy( function (el) {
        return 1;
        },
        'SPAN',
        trs[i]
      );
      var itmDetail = spans[0].innerHTML.split(/Item\s/);
      var priceDetail = spans[2];
      var newEl = document.createElement('A');
      if (!priceDetail.innerHTML.match(/out/)) {
        newEl.setAttribute('itemid', itmDetail[itmDetail.length - 1]);
        newEl.innerHTML = itmDetail[itmDetail.length - 1];
        newEl.href='#';
        EVT.addListener(newEl, 'click', JCart.actionClick, {item: newEl, price: priceDetail});
        var txtEl = document.createTextNode('Item ');
        var newBtn = document.createElement('INPUT');
        newBtn.setAttribute('type', 'button');
        newBtn.setAttribute('value', 'Add to Cart');
        EVT.addListener(newBtn, 'click', JCart.actionClick, {item: newEl, price: priceDetail});
        while (spans[0].childNodes.length > 0) { spans[0].removeChild(spans[0].childNodes[0]); }
        spans[0].appendChild(txtEl);
        spans[0].appendChild(newEl);
        spans[0].appendChild(newBtn);
      }
    }
  },
  initCatalog: function () {
    JCart.initTable('catindextbl');
    JCart.initPages();
    JCart.initSets();
    JCart.initTable('whitman_blue');
    if (YAHOO.env.ua.ie > 0) {
      // Animate the overlay to top 
      JCart.anim = setInterval( function () {
        var rg = DOM.getClientRegion();
        JCart.overlay.cfg.setProperty('y', rg.top + 10);
      }, 300);
    }
  }
}

EVT.onDOMReady(JCart.initCatalog);
