/*
* Core Class with clone & create method
*
* @author		Frédéric Trudeau <ftrudeau@prospek.ca>
* @copyright	Copyright (c) 2009 Prospek Inc. All rights reserved.
* @version		1.0
*/



/*global Config */
/*global _C */
/*global _L */
/*global Language */

///////////////////////////////////////////////////////////////////////////////
// SET DEFAULT OPTIONS ///////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//Default language
Config.set('lang', 'fr_CA');

// Default debug mode
Config.set('debug', false);

// Check for debug mode in URL
if (window.location.href.match(/debug/i) !== null) {
    Config.set('debug', true);
}

////////////////////////////////////////////
//INTERNATIONALIZATION AND LOCALIZATION //
//////////////////////////////////////////
// French Canadian
_L.fr_CA = {
    window: {
        close_text: 'Fermer',
        close_title: 'Fermez cette fenêtre'
    },
    error: {
        generic: 'Oupelaye...<br /><em>Les internets</em> semblent être brisés. Nous travaillons à régler la situation.',
        generic_email: 'Adresse courriel invalide',
        generic_empty_name: 'Veuillez inscrire votre nom',
        generic_wait: 'Un petit moment s’il vous plaît.'
    },
    sharewidget: {
        title: 'Envoyez à un(e) ami(e)',
        permalink: 'Permalien',
        shareon: 'Partagez cette page sur',
        friend_name_label: 'Nom de votre ami(e)',
        friend_name_value: 'Nom de votre ami(e)',
        friend_email_label: 'Courriel de votre ami(e)',
        friend_email_value: 'Courriel de votre ami(e)',
        your_name_label: 'Votre prénom',
        your_name_value: 'Votre prénom',
        your_email_label: 'Votre courriel',
        your_email_value: 'Votre courriel',
        confirmation_text1: 'Votre message a correctement été envoyé.',
        confirmation_text2: 'Merci de votre intérêt !',
        error_empty: 'Oupelaye... N’avez-vous pas au moins un(e) ami(e) avec qui partager cette page ?',
        twitter_status_prefix: 'Consulte',
        btn_share: 'Partagez'
    },
    newsletter: {
        newsletter_thanks: 'Merci pour votre intérêt.',
        newsletter_next: 'Vous recevrez notre prochaine infolettre.'
    }
};

// English Canadian
_L.en_CA = {
    window: {
        close_text: 'Close',
        close_title: 'Close this window'
    },
    error: {
        generic: 'Oops<br /><em>the interwebs</em> seem to be broken. We are working on fixing the situation.',
        generic_email: 'Invalid email address',
        generic_empty_name: 'Please enter your name',
        generic_wait: 'One moment please.'
    },
    sharewidget: {

        title: 'Send to a friend',
        permalink: 'Permalink',
        shareon: 'Share this page on',
        friend_name_label: 'Friend\'s name',
        friend_name_value: 'Your friend\'s name',
        friend_email_label: 'Friend\'s email',
        friend_email_value: 'Your friend\'s email',
        your_name_label: 'Your name',
        your_name_value: 'Your name',
        your_email_label: 'Your email',
        your_email_value: 'Your email',
        confirmation_text1: 'Your message has been sent.',
        confirmation_text2: 'Thank you for your interest.',
        error_empty: 'Oops... Don’t you have at least one friend to share this with?',
        twitter_status_prefix: 'Is reading',
        btn_share: 'Share'
    },
    newsletter: {
        newsletter_thanks: 'Thank you for your interest.',
        newsletter_next: 'You will receive our next newsletter.'
    }
};

/////////////////////
// LANGUAGE CLASS //
///////////////////
Language = _O.clone().create({
    set: function (l) {
        if (typeof _L === "undefined") {
            alert("I18N object is undefined.");
            return false;
        }
        if (typeof _L[l] === "undefined") {
            alert("Requested language is unavailable.");
            return false;
        }
        for (var s in _L[l]) {
            if (_L[l].hasOwnProperty(s)) {
                if (typeof _L[l][s] === "object") {
                    for (var k in _L[l][s]) {
                        if (_L[l][s].hasOwnProperty(k)) {
                            this[s + '_' + k] = _L[l][s][k];
                        }
                    }
                }
            }
        }
        Config.set('lang', l);
    },
    get: function (k) {
        if (typeof this[k] !== 'undefined') {
            return this[k];
        }
        return '_%' + k + '_%';
    }
});
