/*
    XXX: REQUIREMENTS
        -- OOP.js
        -- facebook/connect/base.js
        -- facebook/connect/wallposters.js
        -- facebook/connect/birthdays.js
*/


function makeAttachmentClass(attachmentInfo, attachmentClasses) {
    var base = new OOP.Class(BaseAttachment);
    var child = base;

    if (!attachmentClasses) {
        attachmentClasses = [];
    }

    for (var i=0; i<attachmentClasses.length; i++) {
        child = base.extend(attachmentClasses[i]);
        base = child; // used next time during loop
    }

    return new child(attachmentInfo);
}


var AGI_FB = {

    ALLSITES: {
        
    },

    JL: {
        EcardPoster: function(prodnum, ahost, site, attachmentInfo) {
            var baseInterface = new OOP.Class(CommonInterface);
            var basePoster = baseInterface.extend(BasePoster);
            var poster = basePoster.extend(JLEcardPoster);

            var attachment = makeAttachmentClass(attachmentInfo,
                    [EcardAttachment, JLEcardAttachment])

            return new poster(prodnum, ahost, site, attachment);
        }
    },

    AG: {
        BirthdayReminders: function(numFriendsToShow, birthdayPage) {
            var baseInterface = new OOP.Class(CommonInterface);
            var birthdays = baseInterface.extend(BaseBirthdayReminders);

            return new birthdays(numFriendsToShow, birthdayPage);
        },

        EcardPoster: function(ahost, site, attachmentInfo) {
            var baseInterface = new OOP.Class(CommonInterface);
            var poster = baseInterface.extend(BasePoster);

            var attachment = makeAttachmentClass(attachmentInfo,
                    [EcardAttachment])

            return new poster(ahost, site, attachment);
        },

        CNPPoster: function (ahost, site, attachmentInfo, successCallBack) {
            var baseInterface = new OOP.Class(CommonInterface);
            var basePoster = baseInterface.extend(BasePoster);
            var poster = basePoster.extend(CNPPoster);

            attachmentInfo.site = site;
            var attachmentClass = new OOP.Class(CNPcardAttachment);
            var attachment = new attachmentClass(attachmentInfo);

            return new poster(ahost, site, attachment, successCallBack);
        }
    },

    BMA: {
        BirthdayReminders: function(numFriendsToShow, birthdayPage) {
            var baseInterface = new OOP.Class(CommonInterface);
            var baseBirthdays = baseInterface.extend(BaseBirthdayReminders);
            var birthdays = baseBirthdays.extend(BMABirthdayReminders);

            return new birthdays(numFriendsToShow, birthdayPage);
        },

        EcardPoster: function(ahost, site, attachmentInfo) {
            var baseInterface = new OOP.Class(CommonInterface);
            var basePoster = baseInterface.extend(BasePoster);
            var poster = basePoster.extend(BMAEcardPoster);

            var attachment = makeAttachmentClass(attachmentInfo,
                    [EcardAttachment])

            return new poster(ahost, site, attachment);
        },

        PetContestPoster: function(ahost, site, attachmentInfo) {
            var baseInterface = new OOP.Class(CommonInterface);
            var basePoster = baseInterface.extend(BasePoster);
            var poster = basePoster.extend(PetContestPoster);

            var attachment = makeAttachmentClass(attachmentInfo)

            return new poster(ahost, site, attachment);
        }

    }
};
