
//-------------------------------------------------------------------------
//  AJAX stuff
//-------------------------------------------------------------------------
var AFD_http = '';
var iNum

function AFD_select_address(i) {
  if (!AFD_http) { AFD_http = AFD_getHTTP(); }
  iNum = i;
// new code uses postcodefind as the field entered and postcode as the address field
// coded to handle either way.
//     var pc = document.getElementById("postcode"+iNum).value;
  pcE = document.getElementById("postcodefind"+iNum);
  if (pcE != null)
    { var pc = document.getElementById("postcodefind"+iNum).value; }
  else
    { var pc = document.getElementById("postcode"+iNum).value; }

  if (trim(pc) == '' || pc.match(/postcode/i)) { return false; }
  var el = document.getElementById("house"+iNum);
  var hs = ( el ? el.value : '');
  if (hs == 'House no/Name') { hs = ''; }
  hs = trim(hs);
  var iURL = thisUrl+"AFDajax.asp?postcode="+pc+"&house="+hs+"&num="+iNum
  var fixer = new Date();
  var iURL = iURL+"&when="+fixer.getTime();
//alert(iURL);
  AFD_http.open("GET", iURL, true);
  AFD_pauseComp(200);
  AFD_http.onreadystatechange = function(){ AFD_show_selector(); };
  AFD_http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
  AFD_http.send(null);
}

var AFD_alertX_id = null;
var AFD_use_alertX = true;

function AFD_show_selector() {
  showRes = false;
  if (AFD_http.readyState == 1) {
    res = '<tr><td>Looking up addresses...</td></tr>';
    showRes = true;
  }

  if (AFD_http.readyState == 4) {
//alert(AFD_http.responseText);
    res = AFD_http.responseText;
    showRes = true;
  }
  
  if (showRes) {

    if (AFD_use_alertX) {
      closeAlertX(AFD_alertX_id,'');

      s1 = '<table class="AFDAjaxTable" id="AFDAjaxTable" >';
      s2 = '</table>';

      AFD_alertX_id = alertX(s1+res+s2,'',0,'','Address Selector',{});
    } else {

      var pos = getBounds('postcodefind'+iNum);

      el = document.getElementById('AFD_div');
      if (!el) {
         el = document.createElement('div');
         el.setAttribute('id', 'AFD_div');
         el.className = 'AFDClass';
         el.style.position = "absolute";
         document.body.appendChild(el);
      }

      hideSelects();

      s1  = '<table class="AFDAjaxTable" id="AFDAjaxTable" >';
      s1 += '<tr>';
      s1 += '<th><div class="left">&nbsp;Address Selector&nbsp;&nbsp;</div>';
      s1 += '<div class="right"><a class="close" href="#" onclick="AFD_CloseDiv(); return false;"><img id="AFD_CloseBtn" src="assets/images/closebtn1.jpg"  alt="close" title="close" /></a></div>';
      s1 += '</th>';
      s1 += '</tr>';
  //       s1 += '<tr>';
  //       s1 += '<td class="main">';
  //       s1 += '<div id="addrList'+iNum+'" style="z-index:100;">';
      s2 = '';
  //       s2 += '</div>';
  //       s2 += '</td>';
  //       s2 += '</tr>';
      s2 += '</table>';

      el.style.visibility = 'visible';
      el.style.display = 'block';
      el.innerHTML = s1+res+s2;

      w = el.offsetWidth;
      h = el.offsetHeight;
      x = xOnPage(pos.x,w,true);
      y = yOnPage(pos.y,h);

      el.style.left = x + 'px';
      el.style.top =  y + 'px';
      if (document.getElementById('AFD_address')) { document.getElementById('AFD_address').focus(); }
      showShadowBox('AFD_div');
    }
  }
}

function AFD_getHTTP() {
  var xhttp;
   try {   // The following "try" blocks get the XMLHTTP object for various browsers…
      xhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
 // This block handles Mozilla/Firefox browsers...
     try {
       xhttp = new XMLHttpRequest();
     } catch (e3) {
       xhttp = false;
     }
      }
    }
  return xhttp; // Return the XMLHTTP object
}

function AFD_getAddressKey(event,iNum) {
  if (event) {
    if (event.keyCode == 13) { AFD_showAddress(iNum); }
    if (event.keyCode == 27) { AFD_CloseDiv(); }
  }
}

function AFD_showAddress(iNum) {
   if (iNum=='undefined') iNum='';
   var a = document.getElementById("AFD_address").value;
   if (a != '')
   {
     var x = /\t/;
     a = a.replace(x,'');
     a = trim(a);
     a = a.replace(/, /g,',');
     var b = a.split(",");
     if (b.length > 2) { var c = b[b.length-2]; } else { var c = ''; }
     if (b.length > 1) { var d = b[b.length-1]; } else { var d = ''; }
     var i = c.indexOf('Not Found');
     if (i>0) c = '';
     b.length = b.length-2;
     a = b.join('\n');
     if (document.getElementById("address"+iNum) != null) {document.getElementById("address"+iNum).value=a; }
     if (document.getElementById("street"+iNum) != null) {document.getElementById("street"+iNum).value=a; }
     if (document.getElementById("city"+iNum) != null) { document.getElementById("city"+iNum).value=c; }
     if (document.getElementById("town"+iNum) != null) { document.getElementById("town"+iNum).value=c; }
     if (document.getElementById("postcode"+iNum) != null) { document.getElementById("postcode"+iNum).value=d; }
   }
   AFD_CloseDiv();
}

function AFD_pauseComp(millis) {
   var date = new Date();
   var curDate = null;
   do { curDate = new Date(); }
   while(curDate-date < millis);
}

function AFD_CloseDiv()	{
  if (AFD_use_alertX) {
    closeAlertX(AFD_alertX_id,'');
  } else {
   if (document.getElementById("addrList"+iNum) != null) { document.getElementById("addrList"+iNum).style.display='none'; }
   if (document.getElementById("addrSel"+iNum) != null) { document.getElementById("addrSel"+iNum).style.display='none'; }
   el = document.getElementById('AFD_div');
   if (el) { el.style.display='none'; }
   hideShadowBox();
   showSelects();
  }
}

function AFD_findStore(event) {
  if (!AFD_http) { AFD_http = AFD_getHTTP(); }
  var pc = document.getElementById("postcode").value;

  var fixer = new Date();
  var iURL = thisUrl+"AFDajax.asp?action=nearest&from="+pc+"&ajax=y&when="+fixer.getTime();
//alert(iURL);
  AFD_http.open("GET", iURL, true);
  AFD_pauseComp(200);
  AFD_http.onreadystatechange = function(){ AFD_show_store(); };
  AFD_http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
  AFD_http.send(null);
}

function AFD_show_store() {
  showRes = false;
//alert(AFD_http.readyState);
  if (AFD_http.readyState == 1) {
    res = '<tr><td>Waiting for response................</td></tr>';
    showRes = true;
  }

  if (AFD_http.readyState == 4) {
//alert(AFD_http.responseText);
    res = AFD_http.responseText;
    showRes = true;
  }
  
  if (showRes) {
    var el = document.getElementById("storeFinderMid");
    if (el) { el.innerHTML = res; }
    alert(res);
  }
}
//-------------------------------------------------------------------------

function AFD_findStock(event) {
  if (!AFD_http) { AFD_http = AFD_getHTTP(); }
  var part = trim(document.getElementById("part").value);
  if ( (part == '') || (mx_stock[part] != undefined)) { return false; }

  var fixer = new Date();
  // sitecodes should be provided by asp and in store_finder.tmp as a js var
  part = part.replace("'",'');
  var iURL = thisUrl+"showPart_ajax.asp?part="+part+"&sitecodes="+sitecodes+"&template_suffix=_stock&when="+fixer.getTime();
//alert(iURL);
  AFD_http.open("GET", iURL, true);
  AFD_pauseComp(200);
  AFD_http.onreadystatechange = function(){ AFD_show_stock(); };
  AFD_http.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
  AFD_http.send(null);
}

function AFD_show_stock() {
  showRes = false;

  if (AFD_http.readyState == 1) {
    var el = document.getElementById("stockScan");
    if (el) { el.style.display = 'block'; }
  }

  if (AFD_http.readyState == 4) {
    res = AFD_http.responseText;
    showRes = true;
    var el = document.getElementById("stockScan");
    if (el) { el.style.display = 'none'; }
  }

  if (showRes) {
    var el = document.getElementById("stockFinderStock");
    if (el) {
//alert(res);
      res = res.split('#####');

      if (res[0].indexOf('Error:') == 0) {
        alertX(res[1],'',300,'Please Note');
        return;
      }

      // stock/matrix vars and functions are in ecom.js
      var elt = document.getElementById("partBox"+stockBoxCount);
      stockBoxCount++;
      var div = document.createElement('div');
      div.setAttribute('id', 'partBox'+stockBoxCount);
      el.insertBefore(div,elt);

      div.innerHTML = res[0];
      if (res.length > 1) {
        var idx = trim(res[1]);
        eval(res[2]);
//alertX_BR(res[2]);  // to show data returned - stock array is generated by showpart_ajax.asp
        var matrix = (mx_data[idx] && mx_data[idx].feat && (mx_data[idx].feat.length > 0));

        if (matrix) {
          matrix_tip_override = 'click to show stock for this item'

          var func = null;
          switch(mx_data[idx].template)
          {
            case 'MTX_LARGE' : func = createMatrixTable; break;
            case 'DDL_LARGE' : func = createMatrixTable; break;
            case 'LIST' : func = createMatrixTable; break;
            case 'MTX_LARGE_TABLE' : func = createMatrixTable; break;
            case 'MTX_LARGE_ALPHA' : func = createMatrixAlphabet; break;
            case 'MTX_LARGE_BRA' : func = createMatrixBra; break;
          }
          func(idx,'matrixHead','matrixBody', '', 'Click a colour / size combination to see our available stock','STOCK');
//          createMatrixNormal(idx,'matrixHead','matrixBody','', 'Click a colour / size combination to see our available stock','STOCK');
        }

        createShopList(stockBoxCount, idx, matrix);
      }
    }
  }
}
