var site = site || {};
var brx = brx || {};

site.utilityNav = site.utilityNav || {};

site.utilityNav.transParams= {
    transFields: {
        "trans_fields" : ["TRANS_ID", "payments"]
    },
    paymentFields: {
        "payment_fields" : ["address", "PAYMENT_TYPE", "PAYMENT_AMOUNT", "TRANS_PAYMENT_ID"]
    },
    orderFields: {
        "order_fields" : ["items", "samples", "address", "TRANS_ORDER_ID"]
    }
};


site.utilityNav.loadUserData = function(args) {
    generic.jsonrpc.fetch({
        method : 'user.json',
        params: [],
        onSuccess: function(jsonRpcResponse) {
            args.callback(jsonRpcResponse.getValue());
        },
        onFailure: function(jsonRpcResponse) {
            // console.log('User JSON failed to load');
        }
    });

};


site.utilityNav.displayUserData = function(data) {
    // console.log("=======USER========");
    // console.log(data);
    var signinLinkNode = $("#utilnav_signin");
    var signoutLinkNode = $("#utilnav_signout");
    var accountLinkNode = $("#utilnav_account");
    var myAccountLinkNode = $("#unav_myaccount");
    var nameNode = $("#utilnav_name");

    if (data.signed_in === 1) {
        signinLinkNode.hide();
        signoutLinkNode.show();
        accountLinkNode.show();

        if (data.recognized_user === 1) {
            var username = data.first_name + ' ' + data.last_name;
            nameNode.html(username);
            nameNode.show();
        } else { // not recognized
            nameNode.hide();
        }

    } else { // not signed in
        signinLinkNode.show();
        signoutLinkNode.hide();
	myAccountLinkNode.hide();
        accountLinkNode.hide();
        nameNode.hide();
    }
};

site.utilityNav.loadCartData = function(args) {
    var params = {};
    params = $.extend ( params, site.utilityNav.transParams.transFields );
    params = $.extend ( params, site.utilityNav.transParams.paymentFields);
    params = $.extend ( params, site.utilityNav.transParams.orderFields);

    generic.jsonrpc.fetch({
        method : 'trans.get',
        params: [params],
        onSuccess:function(jsonRpcResponse) {
            args.callback(jsonRpcResponse.getValue()); 
        },
        onFailure: function(jsonRpcResponse){
            // console.log('Transaction JSON failed to load');
        }
    });
};

site.utilityNav.displayCartData = function(data) {
    // console.log("=======CART========");
    // console.log(data);
    var countNode = $("#utilnav_cartcount");
    if(data.items_count == 1){
        countNode.html(data.items_count +" ITEM");
    }else{
        countNode.html(data.items_count +" ITEMS");
    }
};


$( function() {
    site.utilityNav.loadUserData({
        callback: function(data) {
            site.utilityNav.displayUserData(data);
        }
    });
    site.utilityNav.loadCartData({
        callback: function(data) {
            site.utilityNav.displayCartData(data);
        }
    });
});


ie8_submit_fix = function() {
	$("#form--signin--field--EMAIL_ADDRESS, #form--signin--field--PASSWORD").keyup(function(){ 
		if((event.keyCode == 13) || (event.keyCode == 15)){
			$(this).closest('form').submit()		   
		}
	});	
}

brx.xmasZipCheck = function(options) {
  var callback, getCallback, onClose;
  options = options || {};
  getCallback = function (callback) {
    return (typeof callback === "function") ? callback : function (err, data) {};
  };

  callback = getCallback(options.callback);
  onClose = getCallback(options.onClose);
  return generic.template.get({
    path: "/includes/content/sat-xmas-zip-check-form.tmpl",
    object: {},
    callback: function (html) {
      var $editDisplayNameForm, $errListNode, $shipAvaialble, $shipUnavailable;
      generic.overlay.launch({
        onClose: onClose,
        content: html,
        includeBackground: true,
        cssStyle: {
          width: "485px",
          background: "transparent"
        }
      });
      $form = $("form#sat-xmas-zip-check-form");
      $shipAvailable = $form.find(".shipping-available");
      $shipUnavailable = $form.find(".shipping-unavailable");
      $errListNode = $form.find("ul.error_messages");
      $form.bind("submit", function (event) {
        event.preventDefault();
        var $form = $(this),
          $zip = $form.find('input[name="zip"]:first');
        $shipAvailable.hide();
        $shipUnavailable.hide();
        paramObj = {};
        paramObj.zip = $.trim($zip.val());
        generic.jsonrpc.fetch({
          method: 'address.SaturdayAMDelivery',
          params: [paramObj],
          onSuccess: function (jsonRpcResponse) {
            var data = jsonRpcResponse.getValue();
            if (data.available == 1) {
              $shipAvailable.show();
            }
            else {
              $shipUnavailable.show();
            }
            callback(null, data);
          },
          onFailure: function (jsonRpcResponse) {
            var errorObjectsArray = jsonRpcResponse.getMessages();
            generic.showErrors(errorObjectsArray, $errListNode, $form);
            callback(errorObjectsArray);
          }
        }); // end jsonRpcWrapper.fetch 
      });
    }
  });
};

$(function() {
  if(location.hash == "#holiday_delivery") {
    brx.xmasZipCheck();
  }
});

$(document).ready(ie8_submit_fix)

