var cl = cl || {};
var brx = brx || {};

var address = location.href.split('?'); 
var uri = address[0].parseUri();
var URL_DOMAIN = uri.protocol + "://" + uri.host;

var SpinnerHtml = '<span class="spinnerText"><img src="/images/global/ajax-loading.gif" width="14" height="14"> Loading ...</span>';

var BehaviorRollover = 'def_rollover';

NO_USER_NOTIFY = 0;

/* old ELC front-end interface compatibility */
var el = $;
Element.addMethods({
    addBehavior: function(e,b){
        $(e).className = b;
    }
});

function CheckBooleanVar(val) {
	if ( val ) return true;
	return false;	
}

flashHandlerCallbacks = {};

function flashHandlerNamer ( flash_id, event_name ) {
    return flash_id.toLowerCase() + ':' + event_name.toLowerCase();
}

function addFlashHandlerCallback ( id, evt, func ) {
    flashHandlerCallbacks[ flashHandlerNamer ( id, evt  ) ] = func ( id, evt );
}

flashToJavascript = function ( flash_id, event_name ) {
    var idEvt = flashHandlerNamer ( flash_id, event_name );
    var handler = flashHandlerCallbacks[ idEvt ];
    if ( typeof handler == 'function' ) {
        handler( flash_id, event_name );
        return true;
    } else { return false; }
};

/* FLASH TEST FUNCTIONS

    addFlashHandlerCallback ( 'test', 'test', 
        function ( id, evt ) {
            alert ( flashHandlerNamer ( id, evt ) + ' is found.' ) });
    flashToJavascript ('test', 'test');

END TEST FUNCTIONS */

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);

  new Ajax.Request("/includes/content/sat-xmas-zip-check-form.tmpl", {
    method: 'get',
    onSuccess: function (transport) {
      var $editDisplayNameForm, $errListNode, $shipAvaialble, $shipUnavailable;
      generic.overlay.launch({
        onClose: onClose,
        content: transport.responseText,
        includeBackground: true,
        cssStyle: {
          width: "485px",
          background: "#fff"
        }
      });
      $form = $$("form#sat-xmas-zip-check-form").first();
      $shipAvailable = $$("form#sat-xmas-zip-check-form .shipping-available").first()
;
      $shipUnavailable = $$("form#sat-xmas-zip-check-form .shipping-unavailable").first();
      $errListNode = $$("form#sat-xmas-zip-check-form ul.error_messages").first();
      Element.observe($form, "submit", function(event) {
        event.stop();
        var $zip = $$('form#sat-xmas-zip-check-form input[name="zip"]').first();
        $shipAvailable.hide();
        $shipUnavailable.hide();
        paramObj = {};
        paramObj.zip = $F($zip).strip();
        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 
      });
    }
  });
};

document.observe("dom:loaded", function() {
  if(location.hash == "#holiday_delivery") {
    brx.xmasZipCheck();
  }
});

