﻿$('document').ready(function () {

  var content = $('#master-content');
  var sideMenu = $('#sideMenu');
  var subIE = 0;
  if (getInternetExplorerVersion() < 8.0)
    subIE = 80;
  if (content.height() > sideMenu.height()) {
    var newHeight = content.height() - 10 - subIE;
  };
  newHeight = Math.max(newHeight, 750);
  sideMenu.height(newHeight);

  $('#sideMenu div.treeview').gradient({ from: '013820', to: 'ffffff', direction: 'horizontal' })

  $('#catMenu').accordion({
    active: false,
    header: '.head',
    navigation: true,
    navigationFilter: function () { var pageRef = location.href.toLowerCase(); return pageRef.indexOf(this.href.toLowerCase()) != -1 },
    event: 'mouseover',
    animated: 'easeslide',
    autoHeight: false
  });

});

function getInternetExplorerVersion()
// Returns the version of Windows Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer') {
    var ua = navigator.userAgent;
    var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat(RegExp.$1);
  }
  return rv;
}

function setClassAndBG(obj, cssClassName, bgPath) {
  obj.className = cssClassName;
  obj.style.backgroundImage = bgPath;
}

var unavailableDates = [];

function setUpDeliveryDatePicker(DeliveryDateID) {
  var deliveryType = $('div.CheckoutPage input:hidden[id*=hfDeliveryType]').val();
  var minDateAdd = deliveryType==2 ? +1 : +2;
  var currentTime = new Date()
  if (currentTime.getHours() > 15)
    minDateAdd++;

  var startDate = currentTime.add("d", minDateAdd);



  $(document).ready(function () {
    $("#jqcalendar").datepicker({
      minDate: minDateAdd,
      onSelect: function (dateText, inst) { $("div.CheckoutPage input:text[id*=txtPreferredDeliveryDate], div.CheckoutPage input:hidden[id*=hfDeliveryDate]").val(dateText); },
      dateFormat: 'dd/mm/yy',
      beforeShowDay: unavailable,
      onChangeMonthYear: getUnavailableDays
    }).hide().datepicker("setDate", startDate.add('mo', 1)).datepicker("setDate", startDate.add('mo', -1)).show();

  });

};

Date.prototype.add = function (sInterval, iNum) {
  var dTemp = this;
  if (!sInterval || iNum == 0) return dTemp;
  switch (sInterval.toLowerCase()) {
    case "ms":
      dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
      break;
    case "s":
      dTemp.setSeconds(dTemp.getSeconds() + iNum);
      break;
    case "mi":
      dTemp.setMinutes(dTemp.getMinutes() + iNum);
      break;
    case "h":
      dTemp.setHours(dTemp.getHours() + iNum);
      break;
    case "d":
      dTemp.setDate(dTemp.getDate() + iNum);
      break;
    case "mo":
      dTemp.setMonth(dTemp.getMonth() + iNum);
      break;
    case "y":
      dTemp.setFullYear(dTemp.getFullYear() + iNum);
      break;
  }
  return dTemp;
}

String.prototype.padLeft = function (n, pad) {
  t = '';
  if (n > this.length) {
    for (i = 0; i < n - this.length; i++) {
      t += pad;
    }
  }
  return t + this;
}

function getUnavailableDays(year, month, inst) {
  var deliveryType = $('div.CheckoutPage input:hidden[id*=hfDeliveryType]');
  var postcode = $('div.CheckoutPage input:hidden[id*=hfPostcode]');
  $.ajax({
    type: 'POST',
    async: false,
    url: 'Modules/OrderServices.asmx/GetBlockedOrderDates',
    data: "{'deliveryoption':'" + deliveryType.val() + "', 'postcode':'" + postcode.val() + "', 'year':'" + year + "', 'month':'" + month + "'}",
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: loadDates,
    error: ajaxFailed
  });

};

function ajaxFailed(xmlRequest) {
  alert(xmlRequest.status + ' \n\r ' +
              xmlRequest.statusText + '\n\r' +
              xmlRequest.responseText);
};

function loadDates(arr) {
  unavailableDates=[];
  for (var i = 0; i < arr.d.length; i++) {
    unavailableDates.push(arr.d[i]);
  }
};

function unavailable(date) {
  if (unavailableDates.length > 0) {
    dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
    if ($.inArray(dmy, unavailableDates) == -1) {
      return [true, ""];
    } else {
      return [false, "", "Unavailable"];
    }
  }
  else
    return [true, ""];

}
