﻿///<reference path="../../TESCO.js" />
///<reference path="../../event.js" />
///<reference path="../../eventManager.js" />
///<reference path="../../node.js" />
///<reference path="../dialogue.js" />

/*	example action object, please leave
var _action = { 			
	'name' : 'empty',
	'params' : {
		'param' : [
			{ 
				'name' : 'id',
				'value' : '1'
			},
			{
				'name' : 'name',
				'value' : 'plankton'
			}
		]
	}
} 
*/

/*
	Derived from TESCO.sites.retail.UI.Dialogue.Ajax, launched from a link
*/
TESCO.sites.retail.UI.Dialogue.VisaInfo = (function() {

	function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
	    return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.EmailPreview";
    
    return _constructor;
})();


TESCO.sites.retail.UI.Dialogue.MCInfo = (function() {

	function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
	    return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.MCInfo";
    
    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.SecurityCode = (function() {

	function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
	    return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.MCInfo";
    
    return _constructor;
})();


TESCO.sites.retail.UI.Dialogue.CantFindAddress = (function() {

	function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
	    return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.CantFindAddress";
    
    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.ChangeAddress = (function() {

    function _constructor(key) {
		//	include 'true' allow submit argument
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key), true);
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);

    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.changeAddress";
    
    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.deliveryOptions = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.deliveryOptions";
   
    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.deliveryExceptions = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.deliveryExceptions";

    return _constructor;
})();


TESCO.sites.retail.UI.Dialogue.premiumDeliveryException = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.premiumDeliveryException";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.nextDaydeliveryException = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.nextDaydeliveryException";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.QuantityWarning = (function() {

	function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
	    return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.QuantityWarning";
    
    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.maximumOrderQuantity = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.maximumOrderQuantity";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.symbols = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.symbols";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.tasteGuide = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.tasteGuide";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.awards = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.awards";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.DeliveryStatuses = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.DeliveryStatuses";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.CancelMembership = (function() {

    function _constructor(key, e) {
		var _form = TESCO.system.DOM.node.getAncestor(e.target, "form", null, null, true);
		var _subscriptionId = _form.action.getValueFromQuery("subscriptionId");
        _constructor.base.constructor.call(this, 
			new TESCO.sites.retail.UI.Dialogue.Request(key, null, 
				{
					'param' : [{ 
						'name' : 'subscriptionId',
						'value' : _subscriptionId
					}]
				}
			), true
		);
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.CancelMembership";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.DeliveryStatuses = (function() {

    function _constructor(key) {
        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key));
        return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.DeliveryStatuses";

    return _constructor;
})();

TESCO.sites.retail.UI.Dialogue.CheckoutBasket = (function() {

	var _params = {
		'param' : [{ //	todo: no data!
			'name' : 'test',
			'value' : '1'
		}]
	}

	function _constructor(key) {
        var _self = this;
		this.addEventListener("hide",
			function() {
			   _self.removeEventListener("hide", arguments.callee);
			   //Once the dialogue has been viewed once, we need to alter the Checkout button details.
				var _btn = document.getElementById("CheckoutBasketLink");
				_btn.href = TESCO.locale.basket.checkout.warningHref;
				_btn.warned = true;
				TESCO.system.DOM.node.removeClassName(_btn.getElementsByTagName("IMG")[0], "dialogue");
			}
		);

        _constructor.base.constructor.call(this, new TESCO.sites.retail.UI.Dialogue.Request(key, null, _params));
	    return this;
    }
    _constructor.extend(TESCO.sites.retail.UI.Dialogue.Ajax);
    
    _constructor.prototype.NAME = "TESCO.sites.retail.UI.Dialogue.CheckoutBasket";
    
    return _constructor;
})();






