/* Primary Javascript library for Internos functionality */
// Javascript Date() extensions
Date.prototype.addDatePart = function (datePart) {
    var factor = 24 * 60 * 60 * 1000; // Default - days
    switch (datePart.timetype.toLowerCase()) {
        case 'years':
            factor = 365 * factor;
            break;
        case 'months':
            factor = 30 * factor;
            break;
        case 'weeks':
            factor = 7 * factor;
            break;
        case 'hours':
            factor = 60 * 60 * 1000;
            break;
        case 'minutes':
            factor = 60 * 1000;
            break;
        case 'seconds':
            factor = 1000;
            break;
    }
    this.setTime(this.getTime() + (datePart.timespan * factor));
    return this;
}

Internos = {
    Cookies: {
        Language: {
            name: 'ir_currentLanguage'
        },
        Committee: {
            name: 'ir_currentCommittee'
        },
        Navigation: {
            name: 'f2bumblibNavigation'
        }
    },
    setCookie: function (name, value, expiry) {
        var exdate = new Date();
        if (expiry != null) {
            exdate = exdate.addDatePart(expiry);
        }
        var cookieValue = escape(value) + ((expiry == null) ? "" : "; expires=" + exdate.toUTCString());
        cookieValue += "; path=/";
        document.cookie = name + "=" + cookieValue;
    },
    getCookie: function (name) {
        var i, x, y, aCookies = document.cookie.split(";");
        for (i = 0; i < aCookies.length; i++) {
            x = aCookies[i].substr(0, aCookies[i].indexOf('='));
            y = aCookies[i].substr(aCookies[i].indexOf('=') + 1);
            x = x.replace(/^\s+|\s+$/g, '');
            if (x == name) {
                return unescape(y);
            }
        }
    },
    switchLanguage: function (link) {
        // Find the new language
        var culture = $(link).attr('rel');
        Internos.setCookie(Internos.Cookies.Language.name, culture, { timetype: 'days', timespan: 365 });
        // Reload the page
        var href = document.location;
        document.location = href;
    },
    clickMailTo: function (mailto) {
        var elements = $(mailto).attr('rel').split(',');
        var href = 'mailto:' + elements[0] + '@' + elements[1] + '?subject=' + elements[2];
        document.location.href = href;
    },
    writeMailTo: function (mailto) {
        var elements = $(mailto).attr('rel').split(',');
        $(mailto).html(eval(elements[3]));
    },
    setNavigation: function (key, value) {
        var navValue = Internos.getCookie(Internos.Cookies.Navigation.name);

        var re = new RegExp('^' + key + ':');
        var elements = [];
        if (navValue) elements = navValue.split(',');
        for (var i = 0; i < elements.length; i++) {
            if (elements[i].search(re) == 0) {
                elements.splice(i, 1);
                break;
            }
        }
        elements.push(key + ':' + value);
        navValue = elements.toString();
        Internos.setCookie(Internos.Cookies.Navigation.name, navValue, { timetype: 'hours', timespan: 2 });
    },
    getNavigation: function (key) {
        var navValue = Internos.getCookie(Internos.Cookies.Navigation.name);

        var re = new RegExp('^' + key + ':');
        var elements = [];
        if (navValue) elements = navValue.split(',');
        for (var i = 0; i < elements.length; i++) {
            if (elements[i].search(re) == 0) {
                return elements[i].split(':')[1];
            }
        }
        return '';
    }
}
