var bp15CurrentTrack;
var bp15QueuedTrack;

function bagpak15PlaySample(sample, title, trackID) {
  var player = document.getElementById('playerFlash');

  var titleDiv = document.getElementById('playerTitle');
  
  if (trackID != null) {
    var link = document.createElement('A');

    link.href = 'product_info.php?products_id=' + trackID;
    link.innerHTML = title;
    
    if (titleDiv.childNodes.length > 0) {
      titleDiv.replaceChild(link, titleDiv.firstChild);
    } else {
      titleDiv.appendChild(link);
    }
  } else {
    titleDiv.innerHTML = title;
  }
  
  bp15CurrentTrack = trackID;

  if (typeof player.sendEvent == 'function') {
    var baseURI = window.location.protocol + '//' + window.location.hostname;
    player.sendEvent('LOAD', baseURI + '/samples/' + sample);
    player.sendEvent('PLAY', 'true');
  } else {
    bp15QueuedTrack = {
      sample: sample,
      title: title,
      trackID: trackID
    };
  }

}

function playerReady(playerObj) {
  if (bp15QueuedTrack != null) {
    window.setTimeout(function() {
      bagpak15PlaySample(bp15QueuedTrack.sample,
        bp15QueuedTrack.title,
        bp15QueuedTrack.trackID
      );
    }, 0);
  }
}

function bagpak15BuyCurrentTrack() {
  if (bp15CurrentTrack == null) {
    return;
  }
  
  bagpak15AddToCart(bp15CurrentTrack, true);
}

function bp15CreateXHR() {
  if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    return new ActiveXObject("Msxml2.XMLHTTP");
  }
  
  return null;
}

var bp15XHR = bp15CreateXHR();
var bp15AddToCartInProgress = false;


function bp15AddToCartCallback() {

  if (bp15XHR.readyState != 4) {
    return;
  }

  var span = document.getElementById('cartItemsCount');
  
  var itemsCount = parseInt(bp15XHR.responseText);
  
  if (itemsCount == NaN) {
    itemsCount = 0;
  }
  
  span.innerHTML = '&nbsp;(' + itemsCount + ')';
  
  var wait = document.getElementById('bp15BusyWait');
  
  if (wait) {
    document.body.removeChild(wait);
  }

  var mask = document.getElementById('bp15BusyMask');
  
  if (mask) {
    document.body.removeChild(mask);
  }
  
  bp15AddToCartInProgress = false;
}

function bp15WindowWidth() {
  return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
}

function bp15WindowHeight() {
  return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
}

function bagpak15AddToCart(product, async) {
  if (!async) {
    var form = document.createElement('form');
    
    form.action = 'product_info.php?action=add_product&products_id=' + product;
    form.method = 'post';
    
    var input = document.createElement('input');
    
    input.type = 'hidden';
    input.name = 'products_id';
    input.value = product;
    
    form.appendChild(input);
    
    document.body.appendChild(form);
    form.submit();
    
    return;
  }
  
  if (bp15AddToCartInProgress || bp15XHR == null) {
    return;
  }

  var postData = 'products_id=' + product;

  bp15XHR.open('POST', 'product_info.php?action=add_product_async&products_id=' + product, true);
  bp15XHR.onreadystatechange = bp15AddToCartCallback;
  bp15XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  

  var mask = document.createElement('div');
  mask.id = 'bp15BusyMask';
  
  mask.style.width = document.body.scrollWidth + 'px';
  mask.style.height = document.body.scrollHeight + 'px';
  
  var wait = document.createElement('div');
  wait.id = 'bp15BusyWait';
  
  wait.innerHTML = '<br><br>Adding to Cart';
  
  wait.style.top = (parseInt(document.body.scrollTop) + ((parseInt(bp15WindowHeight()) - 100) / 2)) + 'px';
  wait.style.left = ((parseInt(bp15WindowWidth()) - 200) / 2) + 'px';
  
  document.body.appendChild(mask);
  document.body.appendChild(wait);

  bp15AddToCartInProgress = true;
  
  bp15XHR.send(postData);
}
