/**
 * Establish a Dd247 namespace.
 * Borrowed this method from
 * @link http://snook.ca/archives/javascript/javascript_name/
 * @link http://snook.ca/js/snookv9.js?1
 */

var Dd247 = {};


/**
 * Setup some default variables for jQuery UI effects
 */

Dd247.hideEffect = 'blind';
Dd247.hideOptions = {};
Dd247.hideSpeed = 0;

Dd247.showEffect = 'blind';
Dd247.showOptions = {};
Dd247.showSpeed = 0;

Dd247.toggleEffect = 'blind';
Dd247.toggleOptions = {};
Dd247.toggleSpeed = 0;


/**
 * Create jQuery UI buttons from a dew specific classes
 */
Dd247.buttonize = function()
{
    $('.button').each(function() {

        var buttonAttributes;

        // "Nickname" a few icons for handines
        // Any others can just have the class applied directly
        if($(this).hasClass('new')) {
            buttonAttributes = { icons: { primary: "ui-icon-plusthick" } };
        } else if($(this).hasClass('edit')) {
            buttonAttributes = { icons: { primary: "ui-icon-pencil" } };
        } else if($(this).hasClass('link')) {
            buttonAttributes = { icons: { primary: "ui-icon-link" } };
        } else if($(this).hasClass('copy')) {
            buttonAttributes = { icons: { primary: "ui-icon-copy" } };
        } else if($(this).hasClass('cancel')) {
            buttonAttributes = { icons: { primary: "ui-icon-cancel" } };
        } else {
            // See if we have any other classes on this element and if so
            // assume it defines a ui icon and add it
            var classList = '';
            var classList =$(this).attr('class').split(/\s+/);
            $.each(classList, function(index, item){
                if (item != 'button') {
                   // Assume we have an icon for this class
                   buttonAttributes = { icons: { primary: item } };
                   // We can't add more so break out of loop
                   return false;
                }
            });
        }
		$(this).button(buttonAttributes);
	});
};


/**
 * Form Helpers
 * New autocompleters automatically attach themselves where necessary
 */
Dd247.forms = {};

/**
 * Copy address info from person1 to billing
 */
Dd247.forms.copyPerson1AddressToBilling = function()
{
    $('[name=cardholderName]').val($('[name=firstName_1]').val() + ' ' + $('[name=lastName_1]').val());
    $('[name=billingAddress]').val($('[name=addressLine1_1]').val());
    $('[name=billingLocality]').val($('[name=locality_1]').val());
    $('[name=billingRegionCode]').val($('[name=regionCode_1]').val());
    $('[name=billingPostalCode]').val($('[name=postalCode_1]').val());
    $('[name=number]').focus();
}


/**
 * Copy address info from person1 to person2
 */
Dd247.forms.copyPerson1AddressToPerson2 = function()
{
    $('[name=addressLine1_2]').val($('[name=addressLine1_1]').val());
    $('[name=addressLine2_2]').val($('[name=addressLine2_1]').val());
    $('[name=locality_2]').val($('[name=locality_1]').val());
    $('[name=regionCode_2]').val($('[name=regionCode_1]').val());
    $('[name=postalCode_2]').val($('[name=postalCode_1]').val());
    $('[name=phoneHome_2]').val($('[name=phoneHome_1]').val());
    $('[name=phoneMobile_2]').focus();
}


/**
 * Copy address info from person1 to person3
 */
Dd247.forms.copyPerson1AddressToPerson3 = function()
{
    $('[name=addressLine1_3]').val($('[name=addressLine1_1]').val());
    $('[name=addressLine2_3]').val($('[name=addressLine2_1]').val());
    $('[name=locality_3]').val($('[name=locality_1]').val());
    $('[name=regionCode_3]').val($('[name=regionCode_1]').val());
    $('[name=postalCode_3]').val($('[name=postalCode_1]').val());
    $('[name=phoneHome_3]').val($('[name=phoneHome_1]').val());
    $('[name=phoneMobile_3]').focus();
}


/**
 * Copy address info from person1 to person4
 */
Dd247.forms.copyPerson1AddressToPerson4 = function()
{
    $('[name=addressLine1_4]').val($('[name=addressLine1_1]').val());
    $('[name=addressLine2_4]').val($('[name=addressLine2_1]').val());
    $('[name=locality_4]').val($('[name=locality_1]').val());
    $('[name=regionCode_4]').val($('[name=regionCode_1]').val());
    $('[name=postalCode_4]').val($('[name=postalCode_1]').val());
    $('[name=phoneHome_4]').val($('[name=phoneHome_1]').val());
    $('[name=phoneMobile_4]').focus();
}


/**
 * Get the GET parameters
 *
 * @link http://stackoverflow.com/a/439578/99071
 */
Dd247.getQueryParams = function(qs)
{
    qs = qs.split("+").join(" ");
    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
    }

    return params;
}


/**
 * This stuff executes when the document is ready
 */
$(function() {
    Dd247.buttonize();

});

