// Javascript/Ajax functions
// Written by David Ian Bennett
// Voyager Web Design UK
// http://www.voyagerweb.co.uk

var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject() {
  var xmlHttp;
  if (window.ActiveXObject) {
    try {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e) {
      xmlHttp = false;
    }
  } else {
    try {
      xmlHttp = new XMLHttpRequest();
    }
    catch(e) {
      var xmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0',
                                      'MSXML2.XMLHTTP.5.0',
                                      'MSXML2.XMLHTTP.4.0',
                                      'MSXML2.XMLHTTP.3.0',
                                      'MSXML2.XMLHTTP',
                                      'Microsoft.XMLHTTP');
      for (var i=0; i<xmlHttpVersions.length && !xmlHttp; i++) {
        try {
          xmlHttp = new ActiveXObject(xmlHttpVersions[i]);
        }
        catch (e) {}
      }                                
      xmlHttp = false;
    }
  }

  if (!xmlHttp) {
    alert('Error Creating XMLHttpRequest Object');
  } else {
    return xmlHttp;
  }
}

function removeFromBasket(id) {
  var confirmSub = confirm('Remove Clip from Basket..\n\nAre you sure?');
  if (confirmSub) { 
    if (xmlHttp.readyState==4 || xmlHttp.readyState==0) {
      try {
        xmlHttp.open("GET","index.php?p=remove-cart-item&clip="+id,true);
        xmlHttp.setRequestHeader('Content-Type', 
                                 'application/x-www-form-urlencoded; charset=UTF-8');
        xmlHttp.onreadystatechange = handleServerResponse;
        document.getElementById('shoppingBasket').innerHTML = '<img src="templates/images/loading.gif" alt="" title="" /> ';
        xmlHttp.send(null);
      }
      catch (e) {
        alert("Can`t connect to server:"+e.toString());
      }
    } else {
      setTimeout('addToBasket(id,div)',1000);
    }
  } else {
    return false;
  }
}

function addToBasket(id,div) {
  if (xmlHttp.readyState==4 || xmlHttp.readyState==0) {
    try {
      xmlHttp.open("GET","index.php?p=add-to-basket&clip="+id+"&div="+div,true);
      xmlHttp.setRequestHeader('Content-Type', 
                               'application/x-www-form-urlencoded; charset=UTF-8');
      xmlHttp.onreadystatechange = handleServerResponse;
      document.getElementById(div).innerHTML = '<img src="templates/images/loading.gif" alt="" title="" /> ';
      xmlHttp.send(null);
    }
    catch (e) {
      alert("Can`t connect to server:"+e.toString());
    }
  } else {
    setTimeout('addToBasket(id,div)',1000);
  }
}

function xmlResponseHeaders(msg,xml) {
  switch(msg) {
    case 'addedtobasket':
    div                                     = xml.getElementsByTagName('cartdiv')[0].firstChild.data;
    url                                     = xml.getElementsByTagName('redirect')[0].firstChild.data;
    reloadbasket                            = xml.getElementsByTagName('basket')[0].firstChild.data;
    cartitems                               = xml.getElementsByTagName('items')[0].firstChild.data;
    cartcost                                = xml.getElementsByTagName('cost')[0].firstChild.data;
    document.getElementById(div).innerHTML  = '<img src="templates/images/in-basket.gif" alt="Item in Basket" title="Item in Basket" />';
    $.prompt('<span class="text1"><span class="added">DVD Added to Basket</span>You have '+cartitems+' DVD'+(cartitems==1 ? '' : 's')+' in your basket. Total: &#036;'+cartcost+'</span><span class="text2">Would you like to check out now?</span>', { 
      buttons: { Checkout: true, 'Continue Shopping': false },
      callback: function(v,m,f) { if (v) { window.location = url; } },
      top: '30%'
    });
    document.getElementById('shoppingBasket').innerHTML  = reloadbasket;
    break;
    case 'removefrombasket':
    clipid        = xml.getElementsByTagName('clip')[0].firstChild.data;
    reloadbasket  = xml.getElementsByTagName('basket')[0].firstChild.data;
    var div       = 'cartItem'+clipid;
    document.getElementById('shoppingBasket').innerHTML  = reloadbasket;
    if (document.getElementById(div)!=null) {
      document.getElementById(div).innerHTML  = '<img src="templates/images/add-to-basket.gif" alt="Add to Basket" title="Add to Basket" style="cursor:pointer" onclick="addToBasket(\''+clipid+'\',\'cartItem'+clipid+'\')" />';
    }
    break;
  }
  return false;
}

function handleServerResponse() {
  if (xmlHttp.readyState==4) {
    if (xmlHttp.status==200) {
      try {
        var xmlResponse  = xmlHttp.responseXML;
        var rootNodeName = xmlResponse.documentElement.nodeName;
        if (!xmlResponse || !xmlResponse.documentElement) {
          throw("Invalid XML Structure:\n"+xmlHttp.responseText);
        } else if (rootNodeName=='parsererror') {
          throw("Invalid XML Structure:\n"+xmlHttp.responseText);
        } else {
          xmlDoc      = xmlResponse.documentElement;
          msg         = xmlDoc.getElementsByTagName('message')[0].firstChild.data;
          xmlResponseHeaders(msg,xmlDoc);
        }
      }
      catch(e) {
        alert('Error reading response: '+e.toString());
      }
    } else {
      alert('There was a problem accessing the server:'+xmlHttp.statusText);
    }
  }
}

